63537572b8
feat(mcp,orchestrator,frontend): tool idea_restart_self, redemarrage autonome d'un agent — #288 (tool core self-only via requester MCP handshake, retour immediat {restartId, status: scheduled} puis orchestration detachee: snapshot reprise, stop PTY/structured, liberation Busy/mailbox, relance LaunchAgent meme conversation_id fresh_start=false, injection interne invisible; events domain/wire agentRestartRequested/PhaseChanged/Completed/Failed phases stopping/releasingInput/launching/resuming; CLI custom: separateurs exacts redemarrage de l'agent + etat termine/echoue, deduplication (restartId, event), verrouillage composer; TUI native: overlay AgentRestartOverlay sans injection xterm, progress/annonces projetes jusqu'a idle; QA verte: mcp_server restart_self 1/1, restart-self 3/3, backend self_restart_contract + events wire 2/2, frontend 3 suites 92/92, npm build, cargo check --workspace, fmt --check, diff --check; reserves hors perimetre: web-server 103/110 fixture PTY preexistante, 34 echecs npm test globaux listProjectSettings/web hors #288 ; scripts/ hors perimetre)
2026-09-08 22:04:18 +02:00
e499a0fd34
feat(plugins,host): pluginRoot officiel transmis au contexte activate(ctx) des plugins — #285 (domain ports + infrastructure plugin: racine du package installé résolue depuis la même source de vérité que la substitution manifest ${pluginRoot}; application runtime_catalog + slash_command; backend dto + app-tauri dto_plugins; frontend domain + plugins runtime loader transmettent pluginRoot au contexte activé; bump pointeur IdeaSDK e3a0f46 via feature/285-plugin-root-runtime-api; QA verte: cargo check domain/application/infrastructure/backend/app-tauri, runtime_catalog 5/5, plugin_install_load 5/5, dto_plugins 2/2, frontend typecheck + 33 tests/3 fichiers, cargo fmt --check, git diff --check; réserves: rebuild AppImage + validation live ctx.pluginRoot dans le binaire actif restants)
2026-09-08 18:35:34 +02:00
8bfcb3a534
fix(orchestrator,plugins): contact cross-project corrélé + découvrabilité assignation plugin par agent — #284 (backend: registre des demandes actives clé projet/agent appelant + correlationId, refus corrélation vide/dupliquée, cancel routé après correspondance exacte sans redirection vers une autre cible, appelant projeté Waiting→Done dans le live-state de son propre projet avec correlationId exposé par idea_workstate_read, gardes RAII réconcilient l'abandon du futur, tools ask/cancel WriteAction deny-by-default dont le refus indique où activer la permission; frontend: action Attribuer aux agents depuis Settings projet > Plugins ouvrant le panneau Agents flottant/ancré/détaché, section Capabilities de plugins — {agent} explicitant attribution skills et tools MCP des plugins activés; QA verte: orchestrator_service 79/79, mcp_server 40/40, domain live_state 15/15, correlated_update_is_preserved_in_the_lean_projection 1/1, frontend ProjectPluginSettings 3 tests, npm run build frontend, cargo fmt --check, git diff --check; AppImage IdeA_0.3.0_amd64.AppImage rebuildée workflow build-appimage, validation live cross-project restant après remplacement/relance manuels; réserves: registre corrélation en mémoire non persisté, surface web unsupported, catalogue dynamique tools MCP = réserve #282 )
2026-09-08 17:35:04 +02:00
86ed0aa00b
feat(plugins): paramètres projet plugins + attribution skills/tools aux agents — #282 (manifeste accepte contributes.skills IdeA-native multi-harness; store .ideai/project-plugins.json v1: enable plugin par projet + assignments skills/tools par agent; refs + use cases settings/assign/unassign; resolver skills pour idea_skill_read et injection catalogue lancement agent; permissions MCP dynamiques projetées par harness Claude Code/Codex/OpenCode; tombstones uninstall, hot reload recalcule catalogue et marque assignments cassés; frontend: Settings projet Plugins, détail capabilities, attribution agent, catalogue permissions; bump pointeur IdeaSDK 6eb8db3; QA verte: cargo test -p application, project_plugin_settings 3/3, dto_plugins 2/2, structured_launch_d3 26/26, catalogue mcp 7/7, frontend 5 tests ProjectPluginSettings/plugin, npm build frontend)
2026-09-08 15:48:57 +02:00
44dc67722c
feat(plugins): soft refresh UI des contributions plugins après install/reload — frontend #279 (PluginRuntimeProvider refreshRuntime sur événements pluginInstalled/pluginReloaded, dispose de l'ancien registry, catalogue listRuntimeContributions, gateway mock; QA verte ré-exécutée: 35/35 tests features/plugins dont nouveau PluginRuntimeProvider.test, typecheck OK)
2026-09-08 13:08:54 +02:00
bf9ec9b358
fix(layout): retirer les affichages Busy et Cancel de la cellule agent au lancement sur une tâche — #277 (retrait badge Busy, bouton Cancel/interruptCurrentTurn et layer z turnActions; états inbox/tâches de fond et composer busy préservés; QA verte ré-exécutée: 25/25 tests LayoutGrid cellControlsLayering/chat)
2026-09-08 12:14:30 +02:00
fc3d124574
feat(cli): historique de messages navigable haut/bas dans la CLI custom + contrôles de cellule visibles pendant busy — persistance localStorage du transcript custom (CustomAgentChatView), layering des contrôles sous l'overlay busy (LayoutGrid), bump pointeur IdeaSDK (docs plugin minimal + hot reload) (QA verte: 65 tests CustomAgentChatView, 25 tests LayoutGrid chat/layering, npm build frontend OK)
2026-09-08 09:39:35 +02:00
cb5196fd69
feat(agents): role orchestrateur du contexte global expose et configurable par agent — isOrchestrator distinct des permissions MCP, DTO update_project_orchestrator (terminologie wire legacy conservee), refus idea_context_update explicite avec writer effectif + orientation idea_context_propose, surface AgentsPanel + adaptateurs frontend — #276 (QA verte: cargo fmt/check, tests cibles application/app-tauri/infrastructure/backend, npm typecheck, 69/69 tests frontend agents/adapters)
2026-09-07 22:49:12 +02:00
f6101a8249
fix(permissions): tools MCP inter-projets exposés (idea_project_*) + contactable agent/template persisté — update_agent_contactable (application/web-server/app-tauri), defaultContactable TemplateEditor save/reopen, groupes MCP 'IdeA inter-projets' avec fallback, permissions agent Contactable — #267 (QA verte)
2026-09-07 18:13:27 +02:00
8496507c09
feat(cross-project): surface UI des permissions contactables — PermissionsPanel et TemplateEditor exposent contactable/default_contactable, alignement httpInvoker — #260 (typecheck + 48 tests verts, QA en attente)
2026-09-07 16:31:22 +02:00
4d34adeab5
fix(templates): les permissions des templates survivent à la sauvegarde/réouverture — create/update_template envoient defaultSystemPermissions (alias DTO backend) et les réponses list/create/update sont normalisées (defaultSystemPermissions/defaultMcpToolPermissions → clés frontend) via templateNormalization — #259 (QA verte)
2026-09-03 14:31:57 +02:00
1aabc3d702
fix(custom-cli): le bouton Stop annule le tour courant sans fermer la session et cascade l'annulation aux agents délégués — stop_agent suit l'arbre des dépendances actives (cancel_current_turn + préemption runtime + enfants d'exécution), TurnCancel tue le process du tour en cours, autorisation requester/sous-arbre sur idea_stop_agent, fixtures DTO runtime_state/node_id alignées — #257 (QA verte)
2026-08-28 22:57:32 +02:00
69129a95ad
fix(templates): mcpToolPermissions persisté via create/update_template — désérialisation par alias préférés (mcpToolPermissions > defaultMcpToolPermissions > defaultMcpToolPolicy) sur les DTO Create/UpdateTemplateRequestDto — #244 (QA verte)
2026-08-24 11:46:14 +02:00
4db264ea8c
fix(custom-cli): cartes progress/tools visibles dès la 2e sollicitation malgré la réutilisation du progressId — la clé d'upsert borne le progressId au scope du tour au lieu d'un dédup global sur l'historique — #157 (QA verte)
2026-08-24 09:43:20 +02:00
23c47eac96
test(custom-cli): tests à deux callbacks couvrant le streaming progress/outils sur la seconde requête au même agent — #252 (QA verte)
2026-08-24 08:04:49 +02:00
7b7ab5b95a
fix(custom-cli): affichage conversation stable au second tour — dédup du prompt et scope de progression par tour, sans reliquats du tour précédent — #251 (QA verte)
2026-08-23 17:51:50 +02:00
55dc7c9dad
fix(custom-cli): masquage des contrôles d'overlay persistants sur la custom CLI pendant un tour occupé — #249 (QA verte)
2026-08-23 17:01:02 +02:00
fc923b7860
fix(custom-cli): retrait de l'overlay busy plein panneau — blocage du chat seul — #247 (QA verte)
...
Les cellules custom CLI ne rendent plus le TargetAnnouncementsOverlay quand
l'agent est busy : le badge busy canonique et le lock du composer (comportement
du chat après envoi d'un message) suffisent, la vue terminal/chat reste visible.
Les cellules TUI natives conservent le voile plein panneau.
2026-08-23 16:35:29 +02:00
a3b1c845ed
feat(workstate): panneau Work state encore plus compact — intention tronquée + badge indicateur, ligne summary repliée supprimée — #235 (QA verte)
2026-08-23 15:38:41 +02:00
f1d85dfc5a
fix(custom-cli): busy/progress/tools/chatbox bloqués après le premier appel — #245 (QA verte)
...
Backend : StructuredHumanTurnGuard pour partager la comptabilité busy/FIFO entre chat direct humain (agent_send, web chat.send) et asks inter-agents structurés, avec liveness mark_alive et retrait idempotent du tour. Web-server : tap d'événements sur chat.send pour le scrollback temps réel. Frontend : scoping des clés de progression par tour pour éviter la déduplication/ghosting des progress et outils entre appels.
2026-08-23 13:34:56 +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
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
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
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
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
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
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
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
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
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
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
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
9a3ca51f6b
fix(web): démarre le serveur MCP custom CLI via idea-serve au lieu de node — #224
2026-08-20 12:49:00 +02:00
c547b71d0c
feat(web): passage en custom CLI sur version téléphone avec UI mobile adaptée — #224
2026-08-17 17:56:47 +02:00
6a4787e814
fix(cli): normalise les timestamps chat secondes/ms pour l'heure des messages — #221
2026-08-15 22:21:00 +02:00
581063cf96
fix(cli): restaure la conversation au retour de layout via cache conversationId+sessionId — #217
2026-08-15 19:32:56 +02:00
3582b252bb
fix(cli): affiche les progress reçus après Final sans rouvrir le tour — #216
2026-08-15 18:58:08 +02:00
86f6c7ebf8
fix(web): route la famille layout dans /api/invoke + fallback UX restauration — #212
...
Le web-server ne routait pas load_layout (UNKNOWN_COMMAND a l'ouverture
d'un projet web PC). Alignement de l'adapter web sur les contrats Tauri:
load_layout, mutate_layout, list_layouts, create_layout, rename_layout,
delete_layout, set_active_layout. useLayout ne propage plus l'erreur
brute: message utilisateur + fallback singleLeafTree.
2026-08-15 11:40:00 +02:00
79fc3d184d
feat(web): panneau Fichiers — navigation projet + téléchargements fichier/dossier ZIP — #211
2026-08-15 10:38:53 +02:00
7f671dff01
feat(web): heure de réception des messages custom CLI — #210
2026-08-15 09:49:46 +02:00
7cdb97ae89
feat(web): parité layout AppImage desktop + switch TUI naïf/CLI custom — #208
2026-08-15 09:08:42 +02:00
a907586f41
feat(web): add mobile task flow shell — #206
2026-08-15 01:31:49 +02:00
3b8ce66e33
feat(web): persist workspace presentation across browser hosts — #205
2026-08-15 01:24:23 +02:00
0d543fb298
feat(web): open project surfaces in browser targets — #204
2026-08-15 01:16:23 +02:00
93dab2d961
test(web): align agent contract expectations — #203
2026-08-15 01:08:30 +02:00
ee2ee037f9
feat(web): add desktop parity shell — #203
2026-08-15 01:03:29 +02:00
2bbe7f63b0
feat(ui): colonne tags de versions à gauche du graph Git — #193
2026-08-14 09:33:05 +02:00
2b2da223d5
feat(chat): resize vertical du composer avec poignée haut-droit (modèle carnet ticket) — #193
2026-08-14 09:33:05 +02:00
4f38e1c506
feat(cli): références d'attachments [file n]/[image n] dans le transcript + zone chat redimensionnable — #188 (QA verte)
...
- Attachments: projection canonique ChatPromptAttachmentDto (référence [file n]/[image n] par compteur de type, ordre d'import) insérée dans le prompt modèle et transportée par ReplyChunk::UserPrompt (attachmentRefs) ; rendu compact côté CustomAgentChatView.
- Resize: la zone chat (LeafView/LayoutGrid) est redimensionnable, taille actuelle conservée par défaut, préférence locale persistée.
- Tests: commands (projection des refs), dto_chat, chat_bridge, CustomAgentChatView, LayoutGrid.chat.
2026-08-13 13:01:03 +02:00
a3ee2814d6
fix(cli): progress agent_message émis en live + anti-doublon running/done par progressId — #187 (QA verte)
...
- Codex: les items agent_message sont désormais tapés en live comme progress (Message/Delta) dès item.completed, au lieu d'être bufferisés dans pending_final jusqu'à l'événement tool/MCP suivant.
- Corrélation stable progressId (codex:item:<id>) ajoutée sur ReplyProgress, propagée jusqu'au DTO (ReplyProgressDto.progressId) et au frontend ; le ProgressSettler et la vue procèdent par upsert running -> done au lieu d'empiler des lignes dupliquées.
- Tests: chat_bridge (settler par progressId), dto_chat, session codex, CustomAgentChatView (upsert par progressId).
2026-08-13 12:45:32 +02:00