Commit Graph

878 Commits

Author SHA1 Message Date
0a7d7f844e fix(templates): open_project ne rétro-synchronise plus les permissions agents vers les templates — #244 (QA verte)
Suppression du backfill agent→template au open_project (cause racine de la non-persistance des permissions MCP/system des templates) et couverture de régression : create/read/update des default permissions + test dédié open_project sans backfill.
2026-08-23 13:03:07 +02:00
4b206402d7 chore(tickets): clôture #243 (rebuild AppImage) — synchro index 2026-08-23 11:41:01 +02:00
7bbca91ce4 chore(git): ignorer les artefacts de build locaux (.appimage-build, .cargo-home, lien target) 2026-08-23 11:10:26 +02:00
f932845cdb chore(tickets): synchro du store local — carnets #117/#236-#242, index/counter 2026-08-23 11:10:17 +02:00
24c237b12a chore(tickets): clôture #242 après QA verte et merge local 5316d48
Limite résiduelle documentée au carnet: le backfill live des templates
existants n'a pas été exécuté en écriture directe (hors sandbox session);
il s'appliquera automatiquement au prochain open_project du projet.
2026-08-23 11:00:28 +02:00
5316d48f7e merge(templates): nom d'agent par défaut, permissions système/MCP et correctif modèle par défaut — #242 (QA verte) 2026-08-23 11:00:20 +02:00
f952807882 feat(ui): édition templates — nom d'agent par défaut, permissions système et MCP outils — #242
TemplateEditor/TemplatesPanel étendus aux nouveaux champs, projection
useTemplates/adapters/ports, panneau Agents aligné, templatePresentation.ts
extrait. Tests frontend étendus (templates, agents, routage chat WS).
2026-08-23 11:00:04 +02:00
d6c80be56d feat(templates): nom d'agent par défaut + permissions système et MCP outils sur AgentTemplate — #242
AgentTemplate étendu (defaultAgentName, systemPermissions, mcpToolPermissions),
CreateTemplate/UpdateTemplate/CreateAgentFromTemplate projetés vers l'agent créé,
DTO/MCP tools et persistance store complétés. Correctif modèle par défaut:
UpdateTemplate ne persistait pas defaultProfileId (profil stale à la création
d'agent). Backfill best-effort des templates existants depuis les agents du
projet au open_project, overrides explicites uniquement.
2026-08-23 10:59:55 +02:00
ed5c5f73d6 chore(tickets): clôture #241 après QA verte et merge local ef9b5ca 2026-08-23 10:24:41 +02:00
ef9b5caeb8 merge(web): progress custom CLI invisibles après plusieurs demandes — #241 (QA verte) 2026-08-23 10:24:35 +02:00
738e15a09b fix(web): le client WS réattache les sessions chat structurées après reconnexion — #241
needsReconnect() couvre désormais les chatSinks et le cycle de reconnexion
renvoie un chat.attach par session active, un échec isolé n'empêchant pas
les autres abonnements de reprendre. Tests ciblés ajoutés.
2026-08-23 10:24:29 +02:00
6fe7f99844 chore(tickets): clôture #240 après QA verte et merge local 81b3bf8 2026-08-22 17:27:21 +02:00
81b3bf88e8 merge(session): finalisation Codex — réponse non finalisée sur session Codex — #240 (QA verte) 2026-08-22 17:27:21 +02:00
41a850f2e9 fix(chat): bulles d'erreur étiquetées par type de session structurée — #240
L'erreur « La réponse du modèle n'a pas pu être finalisée. » indique désormais
l'adapter en cause (Session Codex / Claude / OpenCode / HTTP) pour lever
l'ambiguïté constatée sur GameTime entre session Codex et Claude.
2026-08-22 17:27:16 +02:00
1962408eda fix(session): un item.completed tardif n'efface plus le final agent_message Codex — #240
event_supersedes_pending_final ne fait plus annuler le final en attente par
tout événement autre que Heartbeat/RateLimited/turn-progress: seuls un progress
non-turn Started/Delta, un ToolActivity ou un Error annulent. Le buffering
agent_message survive ainsi jusqu'au flush a turn.completed (regréssion
codex_agent_message_survives_late_completed_item_as_final).
2026-08-22 17:27:13 +02:00
af90c66e48 chore(tickets): clôture #239 après QA verte et merge local aa16576 2026-08-22 16:39:06 +02:00
aa165763f6 merge(chat): réponse du modèle non finalisée sur long message — #239 (QA verte) 2026-08-22 16:39:00 +02:00
cbfdfeb356 fix(chat): le contenu partiel streamé n'est plus masqué par l'erreur terminale de finalisation — #239
assistantFailureText conserve le texte déjà streamé puis classe l'échec
(sans contenu, tronqué, fin non reçue, transitoire) avec conseil de reprise
adapté, au lieu d'écraser la bulle par « Échec — … finalisée. ».
2026-08-22 16:38:55 +02:00
ade1908c76 fix(session): final de secours fabriqué depuis les deltas quand Claude ferme sans ligne result — #239
append_text_fallback_final accumule les TextDelta et produit un Final uniqne
en fin de flux si aucun Final/Error/RateLimited n'a été émis et que le texte
est non vide. Un long message utilisateur sur un autre projet (GameTime) ne
conclut plus a tort « La réponse du modèle n'a pas pu être finalisée. ».
Le test qui pinnait l'absence de Final devient la régression #239.
2026-08-22 16:38:47 +02:00
ce03471caf chore(tickets): clôture #238 après QA verte et merge local 91380cd 2026-08-22 11:30:52 +02:00
91380cd0c2 merge(workstate): conversation vide alors que Work state busy — #238 (QA verte) 2026-08-22 11:30:44 +02:00
da911d5a9b fix(chat): états vides explicites et reroutage vers le fil actif quand Work state signale un agent busy — #238
ConversationViewer remplace « Aucun tour pour le moment » par un diagnostic
differentié (agent actif sans tour affichable, transcript non synchronisé,
activité sur un autre fil) avec action « Ouvrir le fil actif ». Le panneau
Work state affiche le résumé du fil du ticket actif et ProjectsView/WebWorkspace
câblent onOpenConversation.
2026-08-22 11:30:38 +02:00
5449526157 fix(orchestrator): le lancement d'une cible structurée froide lie la session au fil A-B résolu par ask_agent — #238
ensure_structured_session reçoit désormais le conversation_id déjà résolu et le
transmet au plan de spawn au lieu de retomber sur le fallback User-B. WorkState
et la session lancée pointent ainsi sur le même fil. Test de régression
ask_cold_structured_agent_requester_launches_on_resolved_pair_thread.
2026-08-22 11:30:35 +02:00
963b51a277 merge(cli): annonces inter-agent et messages MCP préservés après changement de projet — #236 (QA verte) 2026-08-22 10:02:52 +02:00
1e172c6e81 chore(tickets): clôture #200 après QA verte et merge local 85f659c 2026-08-22 10:02:41 +02:00
8deaa1fd6c fix(cli): store annonces inter-agent borné par projectId avec reset et réhydratation busy au changement de projet — #236 2026-08-22 10:02:41 +02:00
85f659c788 merge(infra): temp IdeA géré visible par l'agent avant le spawn — #200 (QA verte) 2026-08-22 09:50:06 +02:00
f8cf86c6f5 fix(infra): temp IdeA géré alloué avant le convention file, exposé via IDEA_MANAGED_TMP et instruction explicite privilégiant le temp géré à /tmp — #200 2026-08-22 09:50:00 +02:00
3344361fc2 merge(chat): fins de tour « Le modèle n'a renvoyé aucune réponse. » — #231 (QA verte) 2026-08-21 20:45:55 +02:00
3f3eb5938a fix(chat): capture du final et cause réelle des fins de tour « Le modèle n'a renvoyé aucune réponse. » — #231 2026-08-21 20:45:50 +02:00
c1d7f6dd27 merge(cli): annonces MCP/inter-agent préservées pendant agent busy — #232 (QA verte) 2026-08-21 19:40:19 +02:00
aa85d4dfc8 fix(cli): les annonces MCP/inter-agent restent affichées pendant qu'un agent est busy — #232 2026-08-21 19:40:13 +02:00
a51813fc44 merge(workstate): panneau Work state simplifié — #235 (QA verte) 2026-08-21 17:52:44 +02:00
8760ade168 feat(workstate): panneau Work state simplifié — état + intitulé simples, détails et background tasks repliés par défaut — #235 2026-08-21 17:52:44 +02:00
2c8c71c02f merge(cli): les messages progress/MCP ne disparaissent plus après un certain temps — #236 (QA verte) 2026-08-21 17:47:05 +02:00
aaf628f1ff fix(cli): préserve l'affichage des progress legacy sans progressId via clés d'occurrence dédiées — #236 2026-08-21 17:47:05 +02:00
fe45b93633 merge(web): déplier/replier les messages progress et usages MCP en custom CLI — #233 (QA verte) 2026-08-21 16:09:30 +02:00
e20182fa5e feat(web): messages progress et usages MCP dépliables/repliables, repliés par défaut — #233 2026-08-21 16:09:25 +02:00
a1d25d7d9e merge(web): unknown websocket frame kind chat.send en custom CLI web — #231 (QA verte)
QA verte périmètre ticket: fmt/check/websocket_chat/websocket single-thread.
cargo test -p web-server complet reste rouge sur bruit historique PTY/fd
(Too many open files puis 7 échecs PTY mono-thread), non attribué au ticket.
2026-08-20 15:48:46 +02:00
3db23321a7 fix(web): gère les frames chat.attach/chat.send/chat.detach du structured chat — #231 2026-08-20 15:48:38 +02:00
1f58b96f7e merge(web): CLI custom indisponible via l'interface web — #229 (QA verte) 2026-08-20 15:10:59 +02:00
0a2a577d25 chore(idea): bookkeeping #229 QA verte et clôture (+ ticket #228 retardataire) 2026-08-20 15:10:49 +02:00
023d483ba2 fix(web): émet chat.attached pour les sessions agents structurées au lieu de UNSUPPORTED — #229 2026-08-20 15:10:41 +02:00
1b8534fbf9 merge(agents): démarrage custom CLI web téléphone — sandbox OS non relayé aux providers structurés — #227 (QA verte) 2026-08-20 14:07:51 +02:00
3397e50a46 chore(idea): bookkeeping #227 QA verte et clôture 2026-08-20 14:07:51 +02:00
e2d423f986 fix(agents): ne relaye plus le plan de sandbox OS aux providers structurés — #227
Les grants Landlock RO/RW empêchaient la custom CLI de démarrer côté web
téléphone avant d'atteindre le project root. Les providers structurés/headless
gèrent leur propre sandbox compatible CLI.
2026-08-20 14:07:07 +02:00
93d89e0446 chore(idea): bookkeeping tickets #226/#227 (+ clôture carnet #225) 2026-08-20 13:59:36 +02:00
1b7b878ce7 merge(web): invalid node id custom CLI web mobile — #225 (QA verte) 2026-08-20 13:22:37 +02:00
f528b4d900 chore(idea): bookkeeping #225 QA verte (+ tickets #219/#224 retardataires) 2026-08-20 13:22:29 +02:00
5fff70d156 fix(web): passe le nodeId réel à la custom CLI au lieu d'un id fabriqué — #225 2026-08-20 13:22:23 +02:00