- 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
30 lines
786 B
TypeScript
30 lines
786 B
TypeScript
/**
|
|
* Provider RPC handlers — scanning + model fetching.
|
|
*/
|
|
|
|
import { scanAllProviders } from '../provider-scanner.ts';
|
|
import { fetchModelsForProvider } from '../model-fetcher.ts';
|
|
|
|
export function createProviderHandlers() {
|
|
return {
|
|
'provider.scan': async () => {
|
|
try {
|
|
const providers = await scanAllProviders();
|
|
return { providers };
|
|
} catch (err) {
|
|
console.error('[provider.scan]', err);
|
|
return { providers: [] };
|
|
}
|
|
},
|
|
|
|
'provider.models': async ({ provider }: { provider: string }) => {
|
|
try {
|
|
const models = await fetchModelsForProvider(provider);
|
|
return { models };
|
|
} catch (err) {
|
|
console.error('[provider.models]', err);
|
|
return { models: [] };
|
|
}
|
|
},
|
|
};
|
|
}
|