feat(electrobun): project wizard phases 1-5 (WIP)

- sanitize.ts: input sanitization (trim, control chars, path traversal)
- provider-scanner.ts: detect Claude/Codex/Ollama/Gemini availability
- model-fetcher.ts: live model lists from 4 provider APIs
- ModelConfigPanel.svelte: per-provider config (thinking, effort, sandbox, temperature)
- WizardStep1-3.svelte: split wizard into composable steps
- CustomDropdown/Checkbox/Radio: themed UI components
- provider-handlers.ts: provider.scan + provider.models RPC
- Wire providers into wizard step 3 (live detection + model lists)
- Replace native selects in 5 settings panels with CustomDropdown
This commit is contained in:
Hibryda 2026-03-23 13:05:07 +01:00
parent b7fc3a0f9b
commit d4014a193d
25 changed files with 2112 additions and 759 deletions

View file

@ -236,6 +236,11 @@ export type PtyRPCRequests = {
params: { url: string; target: string; branch?: string };
response: { ok: boolean; error?: string };
};
/** Probe a git remote URL (ls-remote). Returns branches on success. */
"git.probe": {
params: { url: string };
response: { ok: boolean; branches: string[]; defaultBranch: string; error?: string };
};
// ── Project templates RPC ───────────────────────────────────────────────────
@ -251,6 +256,39 @@ export type PtyRPCRequests = {
}>;
};
};
/** Create a project from a template with real scaffold files. */
"project.createFromTemplate": {
params: { templateId: string; targetDir: string; projectName: string };
response: { ok: boolean; path: string; error?: string };
};
// ── Provider RPC ──────────────────────────────────────────────────────────
/** Scan for available AI providers on this machine. */
"provider.scan": {
params: Record<string, never>;
response: {
providers: Array<{
id: string;
available: boolean;
hasApiKey: boolean;
hasCli: boolean;
cliPath: string | null;
version: string | null;
}>;
};
};
/** Fetch model list for a specific provider. */
"provider.models": {
params: { provider: string };
response: {
models: Array<{
id: string;
name: string;
provider: string;
}>;
};
};
// ── Window control RPC ─────────────────────────────────────────────────────