Commit Graph

946 Commits

Author SHA1 Message Date
f78f0093e8 merge(agents,plugins): surface unifiée Capacités de l'agent — skills et tools MCP natifs + plugins #296 (QA verte reconfirmée par Git: application mcp_tool_permissions 5/5 + plugin::tests 37/37, backend ciblés + checks, app-tauri dto 33+30+2, npm test 35/35 + 65/65, npm run build, SDK npm run check; branche feature/296-unified-agent-capabilities commits e283f4a + fda1b2d + 2c3234e, SDK d93e302 mergé 436ed59 + bump pointeur; restants: rebuild AppImage + validation live attribution depuis la fiche agent, clôture statique outils dynamiques réservée #282 — saisie manuelle conservée pour serveurs sans metadata; réserves non bloquantes: suites web/frontend complètes rouges classées par QA — 7 PTY web-server série passant individuellement + too many open files parallèle, 32 échecs frontend sur 6 fichiers web non modifiés; scripts/ hors périmètre; aucun push) 2026-09-09 19:52:50 +02:00
2c3234e84f chore(tickets): sync store local — #296 passage qa après QA verte (carnet complet surface unifiée Capacités agent + classification suites rouges non bloquantes; index/counter) + #295 mise à jour carnet/statut par Main; scripts/ hors périmètre; aucun push 2026-09-09 19:52:45 +02:00
fda1b2dcbc chore(sdk): pointe le submodule sur develop (post-merge feature/296-unified-agent-capabilities) — metadata statiques mcpServers[].tools #296 (QA verte: npm run check; aucun push) 2026-09-09 19:52:45 +02:00
e283f4a9e4 feat(agents,plugins): surface unifiée Capacités de l'agent — skills et tools MCP natifs + plugins #296 (domain: PluginMcpToolMetadata dans PluginMcpServerContribution, validation hôte alignée SDK — name requis non vide, description optionnelle non vide, doublons rejetés; application: McpToolPermissionCatalogue.vue structurée additive tools {name, description, access read|writeAction} enrichie des descriptions canoniques infrastructure orchestrator mcp tools, use case SetAgentMcpToolAllowed — toggle atomique idempotente d'un tool natif dans l'allowlist explicite d'un agent, refus unknown tool sans mutation, overrides vides retirés; backend DTO: catalogue.tools additive + SetAgentMcpToolAllowedRequestDto, wire camelCase; app-tauri + web-server: commande set_agent_mcp_tool_allowed; frontend: AgentPluginCapabilities devient la surface unifiée — skills natifs assign/unassign, tools natifs via setAgentMcpToolAllowed (catalogue structuré avec fallback legacy), skills/tools plugins avec metadata statiques mcpServers[].tools et saisie manuelle fallback pour serveurs sans catalogue, tombstones indisponibles, bannière redémarrage requis si agent actif; AgentsPanel retire l'ancienne section Skills séparée au profit de la surface unifiée; ProjectPluginsPanel recentré enable/disable avec renvoi Capacités des agents; adapters Tauri/HTTP/mock + permission.test.ts; QA verte reconfirmée par Git: application mcp_tool_permissions 5/5 + plugin::tests 37/37, backend ciblés 3/3 + checks domain/application/backend, app-tauri dto 33/33 + dto_agents 30/30 + dto_plugins 2/2, check web-server, npm test 35/35 + 65/65, npm run build; suites complètes rouges classées non bloquantes par QA: web-server parallèle too many open files + 7 PTY série passant individuellement, frontend 32 échecs sur 6 fichiers web non modifiés reproduits isolément) 2026-09-09 19:52:38 +02:00
6e4d9eb47e merge(chat): le transcript s'affiche à nouveau après redémarrage automatique d'un agent — #295 (QA verte reconfirmée par Git: diff --check, fmt --all --check, app-tauri chat_bridge 34/34 + dto_chat 24/24, backend 91+7 ignored, web-server websocket_chat_attach 3/3, npm test 77/77, npm run build; branche fix/295-custom-chat-transcript-after-restart commits 1b1476d + 8482fc5; restant: rebuild AppImage + validation live post-restart depuis l'app installée; réserves non bloquantes: 7 tests backend ignored permissions socket, warnings Vite connus; scripts/ hors périmètre; aucun push) 2026-09-09 18:44:15 +02:00
8482fc5bd2 chore(tickets): sync store local — #295 passage qa après QA verte (carnet complet cause/fix/validations post-restart transcript, capture utilisateur UnitySoundTool attachée; index/counter) + rattrapage store #293/#294 clos (carnets docs SDK contrat MCP plugins et lancement serveurs Node; bumps pointeur IdeaSDK déjà mergés sur develop via 1935e98/b1c173f); scripts/ hors périmètre; aucun push 2026-09-09 18:44:08 +02:00
1b1476de52 fix(chat): le transcript s'affiche à nouveau après redémarrage automatique d'un agent — #295 (app-tauri ChatBridge: cartes successors/owners, rebind_session déplace sink+scrolloback du logical chat vers la session de remplacement et canonical_session résout les écritures avec l'ancien id sur toutes les opérations register/scrollback/detach/send_output; backend stream: ReplayOutputBridge::rekey prépare le scrollback source devant le destination et invalide les générations pré-rekey des deux pumps; commands: agent_send binde l'owner stable (projectId,agentId) au tour humain et rebind avant le flux de continuation au handoff restart; reattach_agent_chat résout le successeur du bridge puis fallback identité stable projectId/agentId explicite ou owner bindé, renvoie sessionId effectif + conversationId, NOT_FOUND sinon; web-server chat.attach même fallback stale→live par project/agent; DTO ReattachChatDto/ReattachResultDto documentent l'id effectif post-restart; frontend: ReattachAgentChatOptions, conversationId dans ChatAttachedPayload, CustomAgentChatView réattache sur agentRestartCompleted (dédupe par restartId, scrollback appliqué, tours restart préservés), retry identité stable sur NOT_FOUND dans openOrAttach avant fallback launch frais, publication sessionId effectif + conversationId, état vide «Conversation liée» quand une conversation/run/workstate lié existe; QA verte reconfirmée par Git: git diff --check, cargo fmt --all --check, app-tauri chat_bridge 34/34 dont 3 nouveaux restart_rebind + dto_chat 24/24, cargo check -p app-tauri, backend 91+7 ignored permissions socket, web-server websocket_chat_attach 3/3, npm test 77/77 CustomAgentChatView+agentGateway, npm run build; réserves non bloquantes: warnings Vite esbuild/oxc et chunk >500kB connus) 2026-09-09 18:44:01 +02:00
b1c173f7d0 chore(sdk): pointe le submodule sur develop (post-merge feature/294-node-mcp-launch-docs) — doc lancement serveurs MCP JS packagés #294 (pas de ${node}, command relatif résolu sous pluginRoot donc command:"node" invalide sans node packagé, allowAbsoluteCommand pour dépendance hôte absolue explicite; QA verte reconfirmée par Git: npm run check; vérifié contre hôte application/plugin/mod.rs; aucun push) 2026-09-09 16:24:27 +02:00
1935e98e09 chore(sdk): pointe le submodule sur develop (post-merge feature/293-mcp-tools-exposure-docs) — doc contrat tools MCP plugins #293 (contributes.mcpServers seul canal, pas de registerMcpTool dans activate; QA verte reconfirmée par Git: npm run check; aucun push) 2026-09-09 16:02:23 +02:00
707f470088 merge(frontend): les agents Git TUI Native ne bouclent plus au reattach — #292 (le replay scrollback xterm ne capture plus les réponses synthétiques ESC[1;1R/modes dans pending, donc adopt ne les réinjecte plus au PTY; CPU 100% UnitySoundTool/UnityPlugin; QA verte reconfirmée par Git: git diff --check, TerminalView.scrollback 2/2; QA fournie: 3 fichiers/27 tests, npm run build, AppImage 0.3.0 rebuild sha256 4165521e4248ec9f71af4ceb1c89d3aa54e8119a1ccf0f70d15268bdc67eaf94; branche fix/292-tui-native-git-agents-loop commits 00a3222 + 9fb87a6; restant: validation live UI sur les trois projets depuis l'AppImage installée; scripts/ hors périmètre; aucun push) 2026-09-09 14:30:54 +02:00
9fb87a6b74 chore(tickets): sync store local — #292 passage qa après QA verte (carnet complet cause/fix/validations, index/counter; scripts/ hors périmètre; aucun push) 2026-09-09 14:30:45 +02:00
00a32220d1 fix(terminals): le reattach xterm ne réinjecte plus les réponses synthétiques du replay scrollback — #292 (term.onData n'est actif qu'après le callback final du term.write(scrollback): les réponses aux requêtes historiques ESC[1;1R/modes ne peuplent plus pending ni ne sont réécrites dans le PTY par adopt, ce qui bouclait CPU 100% sur les agents Git TUI Native d'UnitySoundTool/UnityPlugin; activation de l'input aussi sur les chemins fallback reattach-échoué et terminal neuf; test de régression: zéro write PTY pendant le replay synthétique puis exactement un write pour Hello\r; QA verte: 3 fichiers/27 tests TerminalView, npm run build frontend, AppImage 0.3.0 rebuild sha256 4165521e...; réserve: repro live UI trois projets non validée depuis sandbox) 2026-09-09 14:30:39 +02:00
c3e8e5f4d2 chore(tickets): sync store local — carnet #291 v7 trace rebuild AppImage (npm frontend build + tauri build --bundles appimage OK; artefact IdeA_0.3.0_amd64.AppImage 114M sha256 8629ffef8939a08ff2b1008be515e778004cc34413a988cbf37ad71c2e3083dc; remplacement AppImage installee + relance restants manuels; scripts/ hors perimetre; aucun push) 2026-09-09 10:02:40 +02:00
2ec1845b43 chore(tickets): sync store local — #291 clos par Main (statut qa->closed dans issue/index, carnet v6; livraison mergee via b8fbe3e; scripts/ hors perimetre; aucun push) 2026-09-09 09:56:27 +02:00
b8fbe3efc3 merge(frontend): la conversation survit au redemarrage agent et a l'aller-retour projet — #291 (QA verte reconfirmee par Git: ProjectsView.ls7 scenario "rehydrates the same conversation", ConversationViewer + useConversationThread 19/19, npm run build, git diff --check; branche fix/291-keep-conversation-after-restart-project-roundtrip commit 2c72205 + chore(tickets) 503f6e5; restants: rebuild AppImage + validation live restart puis aller-retour projet; reserves hors perimetre preexistantes: 3 echecs historiques ProjectsView.ls7 + 1 WebDesktopWorkspace (libelle Project context); scripts/ hors perimetre; aucun push) 2026-09-09 09:55:26 +02:00
503f6e5095 chore(tickets): sync store local — #291 carnet complet (cadrage UX/Architect, livraison DevFrontend, validation QA verte, section Git) + entree index/counter; #290 carnet complete sections Git + build AppImage du merge 162de27; scripts/ hors perimetre; aucun push 2026-09-09 09:55:20 +02:00
2c72205937 fix(frontend): la conversation survit au redemarrage agent et a l'aller-retour projet — #291 (ProjectsView/WebWorkspace conservent le pointeur viewerConversation mais ne rendent le viewer que si sa conversation appartient au projet actif: le projet intermediaire affiche sa propre surface sans fuite, le retour au projet source remonte la vue avec la meme cle project/conversation et relit le transcript persiste; useConversationThread ne vide plus le buffer au changement de conversation cible, un contenu deja visible reste affiche pendant relecture ou echec; l'erreur de lecture devient "Impossible de recharger la conversation." avec bouton Reessayer branchant refreshTail sans retirer les tours visibles; QA verte reconfirmee par Git: ProjectsView.ls7 scenario "rehydrates the same conversation" (restart agent, switch alpha->beta->alpha, deux readPage identiques sur {projectId, conversationId}), ConversationViewer + useConversationThread 19/19, npm run build, git diff --check; reserves hors perimetre preexistantes: 3 echecs historiques ProjectsView.ls7 (helper panneau Work/open conversation) + 1 echec WebDesktopWorkspace (libelle anglais Project context); validation runtime AppImage/live restante; aucun push) 2026-09-09 09:54:52 +02:00
162de27b1b merge(backend,orchestrator,chat): l'objectif suspendu survit au self-restart — #290 regression partielle (QA verte reconfirmee par Git avant commit: backend self_restart_contract_tests 3/3, orchestrator_service restart 10/10, workstate_actions 9/9, app-tauri chat_bridge 31/31, web-server websocket_chat_send 3/3, cargo check --workspace, fmt --check, diff --check; branche fix/290-self-restart-resume-objective commit 18c1b01; restants: rebuild AppImage + validation live reprise de l'objectif apres restart depuis le chat; réserves hors périmètre préexistantes: 7 échecs fixture PTY web-server + 2 échecs plugin application; scripts/ hors périmètre; aucun push) 2026-09-09 09:17:43 +02:00
18c1b01afb fix(backend,orchestrator,chat): l'objectif suspendu guide le premier tour post-restart — #290 regression partielle (register_suspended_turn capture la demande utilisateur exacte au point d'entrée chat agent_send/chat.send avec source diagnostique, RestartRendezvousCoordinator conserve tour/objectif/restart_attempt_id, take_continuation consommable exactement une fois et seulement par la tentative courante: suspended_restart_continuation_prompt place l'objectif utilisateur avant toute consigne generique et StructuredHumanTurnTransition::Resume porte le prompt host-provided injecte au runtime de remplacement; nettoyage du tour suspendu sur succes, echec, annulation et abandon/expiration; diagnostics projet/agent/turn_id/restart_attempt_id/source; rendez-vous inter-agents #289 inchanges; QA verte reconfirmee par Git: cargo check --workspace, backend self_restart_contract_tests 3/3, orchestrator_service restart 10/10, workstate_actions 9/9, app-tauri chat_bridge 31/31, web-server websocket_chat_send 3/3, fmt --check, diff --check; restants: rebuild AppImage + validation live reprise objectif apres restart; carnet #290 iteration regression + passage store qa inclus; scripts/ hors périmètre; aucun push) 2026-09-09 09:17:36 +02:00
93a1c23a29 chore(tickets): sync store local — reopen #290 régression partielle reprise sans objectif suspendu (fix d03300a valable sur Final prématuré/chat, handoff de reprise à cadrer et implémenter; scripts/ hors périmètre; aucun push) 2026-09-09 08:58:02 +02:00
546c7b7a21 merge(backend,orchestrator,chat): tour humain agent_send survit au self-restart — #290 (QA verte: backend self_restart_contract_tests 3/3, orchestrator_service restart 8/8, workstate_actions 9/9, app-tauri chat_bridge 31/31, web-server websocket_chat_send 3/3, cargo check --workspace, fmt --check, diff --check; branche fix/290-restart-agent-send-premature-final commit d03300a; restants: rebuild AppImage + validation live restart depuis chat humain; réserves hors périmètre: 7 échecs fixture PTY web-server + 2 échecs plugin application préexistants; scripts/ hors périmètre; aucun push) 2026-09-09 08:38:39 +02:00
d03300a20f fix(backend,orchestrator,chat): tour humain agent_send survit au self-restart — #290 (le tour humain direct agent_send/ws chat.send s'enregistre au RestartRendezvousCoordinator via StructuredHumanTurnGuard: Final/Error de l'ancien provider devient transition de contrôle et non le Final logique; transition_after_provider_terminal_async attend Ready puis accept_ready acquitte le handoff et libère le scheduler, Resume => drain de la session de remplacement avec SELF_RESTART_CONTINUATION_PROMPT, seul le terminal du remplacement est transmis au chat; Failed/Cancelled surfacés explicitement avec libération Busy/FIFO; send_with_tap en erreur pendant restart actif traité comme teardown attendu (stream vide puis attente du remplacement, plus de Final prématuré ni chat bloqué); StopLiveAgent câblé with_restart_rendezvous: stop utilisateur annule le rendez-vous restart; RestartRendezvousRegistration rendu public (state/changed/accept_ready); QA verte: backend self_restart_contract_tests 3/3 dont 2 nouveaux (old terminal ignoré + handoff accepté, failure explicite + busy libéré), application orchestrator_service restart 8/8 dont registration directe du rendez-vous, workstate_actions 9/9, app-tauri chat_bridge 31/31, web-server websocket_chat_send 3/3, cargo check --workspace, fmt --check, diff --check — reconfirmés par Git avant commit; réserves hors périmètre préexistantes: 7 échecs fixture PTY web-server + 2 échecs plugin application; carnet #290 + clôture store #289 inclus; scripts/ hors périmètre; aucun push) 2026-09-09 08:38:29 +02:00
321ebdaab9 merge(orchestrator,agent): ask_agent survit au restart de la cible same-project et cross-project — #289 (QA verte: orchestrator_service 87/87 dont 6 tests restart, application lib 171/171, backend 89+7 ignored, cargo check -p backend, fmt --check; branche fix/289-ask-agent-during-target-restart commit d6d9891; restants: rebuild AppImage + validation live ask_agent sur cible restartée same-project et cross-project; scripts/ hors périmètre; aucun push) 2026-09-08 22:53:58 +02:00
d6d989187b fix(orchestrator,agent): ask_agent survit au restart de la cible same-project et cross-project — #289 (RestartRendezvousCoordinator stable par RuntimeAgentKey (projectId, agentId) partagé entre le rendez-vous ask_structured et le scheduler AppAgentSelfRestarter: l'ask actif garde verrou de tour, ticket logique et conversation_id, abandonne le drain de l'ancienne session sans no-reply puis capture le Final de continuation de la session relancée (SELF_RESTART_CONTINUATION_PROMPT partagé, un seul tour de continuation); branche delegated du scheduler: pas de preempt/cancel_head/mark_idle locaux, ready + wait_for_handoff, échecs restart propagés explicitement et cancel en cascade sans relance de continuation; watchdog d'inactivité réarmé par l'activité de contrôle restart; corrélation cross-project (requesterProjectId, requesterAgentId, correlationId) conservée jusqu'au résultat post-restart puis supprimée; stop_agent d'une cible en restart annule le rendez-vous au lieu d'un NotFound; le scheduler standalone conserve son comportement historique sans ask actif; QA verte: orchestrator_service 87/87 dont 6 tests restart (final post-restart, nettoyage busy/workstate/registre, corrélation cross-project, failure explicite, cancel cross-project + stop same-project pendant restart), application lib 171/171 dont watchdog réarmé, backend 89+7 ignored, cargo check -p backend, fmt --check; réserves: pas d'E2E AppImage/vrai provider, 7 tests backend ignorés bind socket local; scripts/ hors périmètre; aucun push) 2026-09-08 22:53:52 +02:00
db91b00699 chore(tickets): sync store local — #288 clos (frontmatter carnet agent_id QA corrige en UUID par Main; section Git/AppImage ajoutee: commit 6353757 + merge local c646371 consignes, AppImage reconstruite, remplacement/relance manuels restants; aucun push) 2026-09-08 22:10:23 +02:00
c646371d83 merge(mcp,orchestrator,frontend): tool MCP idea_restart_self, redemarrage autonome d'un agent — #288 (QA verte: infrastructure mcp_server restart_self 1/1 + restart-self 3/3, backend self_restart_contract 1/1 + events wire 1/1, frontend 3 suites 92/92 + npm build, cargo check --workspace, fmt --check, diff --check; branche feature/288-agent-self-restart-mcp commit 6353757; reserves hors perimetre confirmees: web-server 7 echecs fixture PTY preexistante + 34 echecs npm test globaux chantier listProjectSettings/web; restants: rebuild AppImage + validation live idea_restart_self depuis un agent reel; scripts/ hors perimetre; aucun push) 2026-09-08 22:04:27 +02:00
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
ee259dc93a chore(tickets): sync store local — #287 clos (fix rendezvous cross-project, merge 5d62515) + création #288 (tool MCP idea_restart_self, redémarrage autonome agent; branchage feature/288-agent-self-restart-mcp; exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 21:18:56 +02:00
5d62515d4e merge(orchestrator,agent): rendezvous cross-project réarmé par jeton d'activité live — #287 (QA verte: orchestrator_service 81/81, rendezvous 5/5, mcp_server 40/40, backend 87+7 ignored, cargo fmt --check; branche fix/287-cross-project-rendezvous-timeout; restants: rebuild AppImage + validation live cross-project) 2026-09-08 20:29:57 +02:00
77169101cb fix(orchestrator,agent): rendezvous cross-project réarmé par jeton d'activité live model-agnostique — #287 (le watchdog d'inactivité du rendez-vous expirait à 600s sur un tour structured actif car seul le transcript Claude servait de signe de vie; nouveau drain_with_readiness_announcements_and_activity_outcome exposant un jeton monotone AtomicU64 incrémenté par chaque ReplyEvent non terminal du tap send_with_tap, passé au watchdog via AskWatchdogActivity pour réarmer la fenêtre quelle que soit l'adapter; la sonde transcript devient fallback externe; QA verte: orchestrator_service 81/81, rendezvous 5/5, mcp_server 40/40, backend 87+7 ignored, cargo fmt --check; scripts/ hors périmètre) 2026-09-08 20:29:48 +02:00
4484a02b16 chore(tickets): sync store local — création #286 + #287 (timeout rendezvous cross-project malgré activité cible, critique; fix planifié sur fix/287-cross-project-rendezvous-timeout; exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 20:13:09 +02:00
251256573f chore(tickets): carnet #285 — rebuild AppImage post-merge consigné (merges locaux parent b681433 / SDK e3a0f46, artefact IdeA_0.3.0_amd64.AppImage produit par Main depuis develop; restants manuels: remplacement AppImage + relance + validation live ctx.pluginRoot et contact cross-project #284 — condition de clôture #284/#285; aucun push) 2026-09-08 18:40:31 +02:00
270c740afc chore(tickets): sync store local — #285 rouvert puis implémenté: pluginRoot officiel activate(ctx) (branches feature/285-plugin-root-runtime-api parent+SDK, merges develop b681433/e3a0f46, QA verte multi-suites; rebuild AppImage + validation live ctx.pluginRoot restants à exécuter) + note memory #284 cross-project rattrapée (exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 18:35:39 +02:00
b681433cdd merge(plugins,host): pluginRoot officiel dans activate(ctx) — #285 (QA verte: cargo 5 crates check, runtime_catalog 5/5, plugin_install_load 5/5, dto_plugins 2/2, frontend typecheck + 33 tests, SDK npm run check; branche feature/285-plugin-root-runtime-api parent+submodule) 2026-09-08 18:35:34 +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
46a1d1a31b chore(tickets): sync store local — #284 contact cross-project + assignation plugin par agent (branche fix/284-cross-project-contact-plugin-assignment, merge develop d7d7f67, ticket en qa — à clore après validation live AppImage par l'utilisateur, remplacement/relance manuels restants; QA verte: orchestrator_service 79/79, mcp_server 40/40, domain live_state 15/15, frontend 3 tests, npm build frontend) + #285 docs SDK pluginRoot fermé (bump pointeur IdeaSDK 68019de sur develop via feature/285-plugin-root-scope-docs; exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 17:35:20 +02:00
d7d7f67f7f merge(orchestrator,plugins): contact cross-project corrélé + assignation plugin par agent découvrable — #284 (QA verte: orchestrator_service 79/79, mcp_server 40/40, domain live_state 15/15, frontend ProjectPluginSettings 3 tests, npm run build frontend, cargo fmt; AppImage IdeA_0.3.0_amd64.AppImage rebuildée, validation live après remplacement/relance manuels; branche fix/284-cross-project-contact-plugin-assignment) 2026-09-08 17:35:12 +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
df5728a50a chore(tickets): sync store local — #283 docs SDK assignation skills plugin aux agents (bump pointeur IdeaSDK 7db819c sur develop via feature/283-plugin-skill-assignment-docs, QA verte: npm run build + liens docs; note memory #282 project-plugin-skills-multi-harness-contract rattrapée; exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 16:34:33 +02:00
bcbf6053de chore(tickets): sync store local — cycle #282 paramètres projet plugins + attribution skills/tools agents (branche feature/282-project-plugin-settings-multi-harness, merge develop 6592fad, ticket fermé; QA verte: application, project_plugin_settings 3/3, dto_plugins 2/2, structured_launch_d3 26/26, catalogue mcp 7/7, frontend 5 tests, npm build frontend; AppImage IdeA_0.3.0_amd64.AppImage rebuildée post-merge 2026-09-08 15:53, 114M — correctif actif après remplacement AppImage installée + relance, étape manuelle; exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 15:54:23 +02:00
6592fad83a merge(plugins): paramètres projet plugins + attribution skills/tools agents multi-harness — #282 (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, npm build frontend; branche feature/282-project-plugin-settings-multi-harness) 2026-09-08 15:49:11 +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
bdc20a134a chore(tickets): sync store local — #280 docs SDK clarifiées (bump pointeur IdeaSDK 1239104, ticket, consigne main.md doc SDK systématique sur évolution SDK, note memory #279 plugin-soft-refresh-and-agent-install-tools rattrapée) + #281 fix live-state cross-project (ticket fermé, note memory cross-project-ask-drop-cleans-live-state, merge 566e3c3) + #282 ouvert (Paramètres projet plugins/skills/tools agents); exclusion scripts/restart-idea-over-ssh.sh hors périmètre 2026-09-08 14:54:29 +02:00
4745b65a12 merge(orchestrator): fix live-state cross-project ask après timeout — #281 (QA verte: cargo test -p application --test orchestrator_service 78/78, fmt, build frontend, AppImage rebuildée; branche fix/281-cross-project-ask-live-state) 2026-09-08 14:54:09 +02:00
566e3c3732 fix(orchestrator): LiveStateTurnGuard ramène la LED live-state à Done au drop du futur ask cross-project — #281 (RAII armé après publication Working, désarmé sur sorties explicites mark_target_done_best_effort, Drop spawn best-effort UpdateLiveState Done avec last_delegation=ticket; test régression dropped_ask_future_marks_live_state_done; QA verte: cargo fmt, orchestrator_service 78/78, npm build frontend, AppImage rebuildée 2026-09-08 13:52; réserve documentée: échec préexistant launch_conventionfile_injects_assigned_skills_in_order hors périmètre) 2026-09-08 14:54:09 +02:00
3ff62082eb chore(tickets): sync store local — cycles #278 rebuild AppImage post-#277 et #279 plugins sans restart install_from_directory/soft refresh UI (branches fix/277-agent-cell-busy-cancel→feature/279-plugin-soft-refresh, merges develop e12b8f6/0b709b9, QA verte, tickets fermés; exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 13:13:17 +02:00
0b709b9839 merge(plugins): install_from_directory agent-facing + soft refresh UI des contributions après install/reload — #279 (QA verte ré-exécutée: application 2/2, mcp_server 39/39, plugin_install_load 5/5, frontend 35/35, typecheck; ticket #279 non fermé: rebuild AppImage restant; branche feature/279-plugin-soft-refresh) 2026-09-08 13:09:03 +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
979965aef3 feat(plugins): tool MCP agent-facing idea_plugin_install_from_directory + reload couvrant le refresh UI — backend #279 (use case InstallPluginFromDirectory avec expectedPluginId, confinement répertoire sous project root: rejet absolu hors root/fichier/symlink escaping, soft refresh + événements plugin_installed/plugin_reloaded relayés, wiring app-tauri; QA verte ré-exécutée: application 2/2 directory_install, infrastructure mcp_server 39/39 dont routing plugin_install/plugin_reload, plugin_install_load 5/5) 2026-09-08 13:08:48 +02:00
391bff82ee chore(tickets): sync store local — cycle #277 retrait affichages Busy/Cancel cellule agent (branche fix/277-agent-cell-busy-cancel, merge develop e12b8f6, QA verte 25/25, ticket fermé; exclusion scripts/restart-idea-over-ssh.sh hors périmètre) 2026-09-08 12:15:20 +02:00