f4d5727a69
feat(agent): commandes Tauri + ChatBridge streaming (D4) — §17
...
Expose l'exécution structurée à l'UI (jumeau du chemin PTY) :
- ChatBridge (chat.rs) : pompe ReplyStream -> Channel<ReplyChunk>,
generation-tracked (anti-double-pompe) ; scrollback de conversation
côté transport (le port AgentSession est sans mémoire), purgé à la
fermeture, préservé à la ré-attache.
- Commandes agent_send / reattach_agent_chat / close_agent_session.
- DTO : ReplyChunk (textDelta/toolActivity/final, camelCase tagué kind),
ReattachChatDto, CellKind {pty,chat} + champ cellKind dérivé sur
TerminalSessionDto (chat ssi LaunchAgentOutput.structured = Some).
- Wiring composition root : StructuredSessions + ChatBridge dans AppState,
via la factory déjà injectée (aucun new d'adapter — règle D §17.8).
- From<AgentSessionError> for AppError (mappe sur PROCESS).
Tests (QA) : 35 unitaires verts — generation supersede validé par mutation
test, séquence deltas*+Final, reattach sans re-spawn, teardown shutdown+
unregister, DTO cellKind + round-trip ReplyChunk, non-régression PTY.
cargo test --workspace : 803 passed, 0 failed.
Reste D5 : AgentChatView (frontend) + routage cellKind dans LayoutGrid.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 23:15:08 +02:00
2433e173a1
feat(agent): backend hot-swap profil (A0+A1) + inventaire reprise session (B1) — L15
...
Cadrage Architecture §15 (figé) : « agent = entité à session persistante ».
- A0 (domaine) : Agent::with_profile, LayoutTree::leaf, event AgentProfileChanged
(+ DTO miroir DomainEventDto camelCase).
- A1 (application) : use case ChangeAgentProfile — no-op si profil identique,
mutation manifeste, nettoyage conversation_id/agent_was_running sur layouts
persistés, swap à chaud (kill PTY + relance même cellule via composition de
LaunchAgent), event AgentProfileChanged. Décision : repartir à neuf (on garde
.md + mémoire, on jette l'historique de conversation).
- B1 (application) : use case ListResumableAgents (lecture seule) — inventaire des
cellules was_running||conversation_id, resume_supported selon profil, best-effort.
Aucun nouveau port/adapter (composition de l'existant). Hexagonal strict.
Tests : domaine 11 + app-tauri dto + ChangeAgentProfile 9 + ListResumableAgents 8,
suite application complète verte (0 régression).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 09:55:44 +02:00
62bd5130fb
chore(agents): contextes DevBackend, DevFrontend et QA pour le chantier « agent = entité »
...
Personas durables alignés sur la méthode (cycle dev↔QA), l'architecture
hexagonale réelle (crates/dossiers/commandes) et la roadmap A+B+C.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 09:55:29 +02:00
d11eaaa8c0
feat(orchestrator): create_skill action + wire per-project watchers (§14.3)
...
- domain: OrchestratorCommand::CreateSkill with optional scope field
(defaults to Project, case-insensitive, UnknownScope on bad value)
- application: dispatch CreateSkill through the CreateSkill use case
- app-tauri: build OrchestratorService and start/stop per-project request
watchers on open/create/close_project (ensure/stop_orchestrator_watch)
- tests: domain validation, service dispatch, infra watcher e2e,
app-tauri wiring lifecycle (idempotent, isolated, stop)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-07 13:06:41 +02:00
9b92259429
fix: fix git branches
2026-06-07 11:19:57 +02:00
3be55795a6
fix: fix some displays and features
2026-06-06 17:06:45 +02:00
2332b7f815
fix: fix some ui displays and features miss implemented
2026-06-06 16:15:19 +02:00