Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
4.9 KiB
4.9 KiB
L6 — Agents & contextes
Binôme : dev-agents / test-agents
Zones : application/agent, infrastructure/store, frontend/features/agents
Dépendances amont : L0, L1, L2, L3, L5.
Objectif
Agents de projet : contextes .md dans .ideai/, manifeste, et lancement d'un agent (injection contexte + spawn CLI dans une cellule terminal).
Périmètre (DEV)
- Adapter
IdeaiContextStore(composeFileSystem) : lecture/écriture.md+agents.json. - Use cases :
CreateAgentFromScratch,LaunchAgent(résout profil+contexte, injecte, ouvre cellule PTY au boncwd, spawn CLI), CRUD agents. - Front : panneau agents (créer, éditer le
.md, activer → terminal).
Périmètre (TEST)
IdeaiContextStore: round-trip.md+ manifeste (intégration tmpdir + mock FS pour les use cases).LaunchAgent: ordre des appels (prepare_invocation → injection → pty.spawn) aveccwdcorrect.- Front : feature agents avec gateway mock.
Definition of Done
cargo test(agent/store) +vitestverts ; activer un agent ouvre un terminal avec la CLI lancée (dev manuel).
Spike
- Injection
conventionFile: symlink vs copie ; conflits siCLAUDE.mdexiste ; symlinks Windows.
Avancement
✅ Backend (vert)
- Domaine :
ManifestEntryréconcilié avec le schéma documentéagents.json(ARCHITECTURE §9.1) — porte désormaisname+profile_id; helpersfrom_agent/to_agent(le manifeste est la forme persistée d'unAgent). Tests domaine maj, verts. - Infra :
IdeaiContextStore(infrastructure/store/context.rs) implémenteAgentContextStoreen composantFileSystem; écrit.ideai/agents.json+.ideai/agents/*.md, location-neutre (réutilisable local/SSH/WSL). Test d'intégration tmpdir (5 tests). - Application (
application/agent/lifecycle.rs) :CreateAgentFromScratch,ListAgents,ReadAgentContext,UpdateAgentContext,DeleteAgent, etLaunchAgent(résout profil+contexte →prepare_invocation→ injection →pty.spawnau boncwd→ eventAgentLaunched). 9 tests use cases (ordre d'appel vérifié via trace partagée). - Spike
conventionFiletranché pour L6 : copie du.mdvers le fichier conventionnel (ex.CLAUDE.md), écrasement si présent — choix portable (symlinks Windows = privilèges, sémantique SFTP/WSL divergente). StratégieEnv→ chemin absolu du.md;Stdin→ contenu piped après spawn.
✅ Front (vert)
- Port
AgentGatewayétendu (list/create/read/update/delete/launch) + typeAgentdansdomain; mock statefulMockAgentGateway; adapter TauriTauriAgentGateway(src/adapters/agent.ts, commandes*_agent— câblage backend à venir). - Feature
frontend/features/agents: hookuseAgents(projectId)+AgentsPanel(liste, création nom+profil, éditeur de contexte.md, Launch/Delete), bâti sur le design system (LD) et intégré dans l'onglet projet actif. - Tests : 13 nouveaux (RTL + mock) ; suite front 116 verts,
tscclean. Garde-fou « no direct invoke » respecté.
✅ IPC app-tauri (vert)
- Composition root (
state.rs) :IdeaiContextStoreconstruit ; 6 use cases agents instanciés en réutilisant les ports existants ;LaunchAgentpartage le mêmepty_port+terminal_sessionsque les terminaux (indispensable auPtyBridge) ; handleproject_storeajouté pour résoudre leProjectdepuis unprojectId. - Commands (
commands.rs) :create_agent,list_agents,read_agent_context,update_agent_context,delete_agent,launch_agent.launch_agentimiteopen_terminal(Channel +PtyBridge+ thread de pompe). Enregistrées danslib.rs. - DTOs (
dto.rs) :AgentDto/AgentListDto(transparent, camelCase), request DTOs,parse_agent_id,From<LaunchAgentOutput> for TerminalSessionDto. - Tests :
tests/dto_agents.rs(10) ;cargo test -p app-tauri44 verts ;cargo test --workspace256 verts, 0 régression ; clippy clean.
✅ Terminal d'agent (front, vert) — L6 clos
AgentGateway.launchAgent(projectId, agentId, options, onData)renvoie désormais unTerminalHandle(signature calquée suropenTerminal) ; adapter Tauri =Channel<number[]>+invoke("launch_agent", …)+ write/resize/close via les commandes terminal (clésessionId) ; mock = greeting + echo.TerminalViewgénéralisé avec une propopen?optionnelle (par défaut = gateway terminal) → réutilisé tel quel pour le terminal d'agent (xterm/fit/resize/cleanup partagés).AgentsPanel: bouton Launch monte unTerminalView(conteneur sombreh-96) branché sur la session d'agent ; bouton Stop le démonte (cleanupclose()).- Tests front : 120 verts (
tscclean), garde-fou « no direct invoke » respecté. Backend/IPC : 256 verts.
⏳ Hors périmètre L6 (à reprendre plus tard)
- Affiner la stratégie
Env(support adapter de premier ordre).