feat(model-server): frontend modèles locaux — badge de statut & CRUD serveurs (#35) et wizard multi-profils OpenCode (#36)
Sprint « Modeles locaux », couche frontend. #35 : - F35.1 badge de statut de lancement du serveur local (ModelServerLaunchBadge + useAgentsModelServer). - F35.2 feature model-servers : CRUD (ModelServersPanel / useModelServers / gateway modelServer) et ModelServerSelect. #36 : - Liste multi-profils OpenCode dans le wizard de premier lancement, gateway de clonage (clone_opencode_profile_from_seed). Tests verts (exécution réelle) : tsc propre, vitest 608/608. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
31
frontend/src/adapters/modelServer.ts
Normal file
31
frontend/src/adapters/modelServer.ts
Normal file
@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Tauri adapter for {@link ModelServerGateway} (F35). One of the only places that
|
||||
* calls `invoke()`; features reach it exclusively through the port.
|
||||
*
|
||||
* Commands and payload keys are camelCase, matching the backend DTO convention.
|
||||
* The flat `LocalModelServerConfig` wire shape is the DTO frozen by Architect —
|
||||
* no nesting.
|
||||
*/
|
||||
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
|
||||
import type { LocalModelServerConfig } from "@/domain";
|
||||
import type { ModelServerGateway } from "@/ports";
|
||||
|
||||
export class TauriModelServerGateway implements ModelServerGateway {
|
||||
listModelServers(): Promise<LocalModelServerConfig[]> {
|
||||
return invoke<LocalModelServerConfig[]>("list_model_servers");
|
||||
}
|
||||
|
||||
saveModelServer(
|
||||
config: LocalModelServerConfig,
|
||||
): Promise<LocalModelServerConfig> {
|
||||
return invoke<LocalModelServerConfig>("save_model_server", {
|
||||
request: { config },
|
||||
});
|
||||
}
|
||||
|
||||
async deleteModelServer(serverId: string): Promise<void> {
|
||||
await invoke("delete_model_server", { serverId });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user