Commit Graph

1025 Commits

Author SHA1 Message Date
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
e12b8f6b0e merge(layout): retrait des affichages Busy et Cancel de la cellule agent — #277 (QA verte: 25/25 tests LayoutGrid ciblés ré-exécutés avant merge; branche fix/277-agent-cell-busy-cancel) 2026-09-08 12:14:36 +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
154728b828 merge(agents): writer unique du contexte projet global configurable par agent — #276 (QA verte: cargo fmt --check, tests cibles application/app-tauri/infrastructure/backend, cargo check backend/app-tauri, npm typecheck, 69/69 tests frontend agents/adapters; arbitrage versionnage: .ideai/CONTEXT.md ignore, mcp-tool-permissions.json de-track) 2026-09-07 22:49:34 +02:00
68b96e7b55 chore(tickets): sync store local — cycle #276 writer du contexte global (branche feature/276-orchestrator-context-writer, QA verte) + reliquats lots #269-#275, note memory plugin hot reload, permissions systeme agent Main 2026-09-07 22:49:29 +02:00
ee6f6531ea chore(gitignore): ignore le contexte global .ideai/CONTEXT.md (runtime last-writer-wins, writer unique #276 — le durable partage vit dans CLAUDE.md/memory versionnes) et de-track mcp-tool-permissions.json deja ignore mais encore suivi 2026-09-07 22:49:23 +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
ad2c6b4354 merge(plugins): hot reload des plugins sans relancer IdeA — use case ReloadPlugin + tools MCP d'administration plugin agent-facing + evenement wire plugin_reloaded — #269/#271 (QA verte #273: 96 tests cibles verts, app-tauri compile; #272 sans code V1 — surface agent-facing uniquement, UX close) 2026-09-07 19:29:29 +02:00
805b1b4d0d feat(plugins): hot reload des plugins sans relancer IdeA — use case ReloadPlugin (invalidation registry/catalogue, resultat hashes+changed), tools MCP d'administration plugin agent-facing (mcp/plugins.rs + PluginToolProvider), evenement domaine plugin_reloaded relaye sur le wire (dto/events), exposition openai_tools rafraichie, wiring app-tauri — #271/#269 (QA verte #273: application 32, mcp_server 38, openai_tools 10, plugin_install_load 5, plugin 10, wire 1 — 96 tests ciblés; app-tauri compile sans desktop runtime) 2026-09-07 19:29:25 +02:00
8d2be75f8f chore(gitignore): ignore les backups AppImage .old-* à la racine (suite remplacement 0.3.0 #267) 2026-09-07 18:46:54 +02:00
664a051dca merge(cross-project): permissions MCP inter-projets + contactable agents/templates — exposition idea_project_*, update_agent_contactable, defaultContactable persistant, fallback groupes MCP — #267 (QA verte; AppImage 0.3.0 reconstruite, racine remplacée, ancienne sauvegardée hors git; #268 clôturé doublon) 2026-09-07 18:13:49 +02:00
ab30db122a chore(tickets): synchro store local — cycle #267 QA verte (carnet complet: implémentation, tests, build AppImage 0.3.0 + remplacement racine) ; clôture #268 en doublon de #267 ; index/counter 2026-09-07 18:13:42 +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
9266d121cd merge(tickets): synchro store post-livraison cross-project — clôtures #260/#265, diagnostic #266 2026-09-07 17:07:56 +02:00
5f73220219 chore(tickets): clôture du cycle cross-project — #260/#265 passent closed après QA verte et AppImage, création+clôture du diagnostic #266 (Codex 5.6 headless/custom CLI vs TUI, sans code prod), index/counter 2026-09-07 17:07:56 +02:00
e11774ff71 merge(cross-project): agents inter-projets — discovery MCP idea_project_*, permissions contactables agents/templates, ask/cancel par agentId résolu (#260–#264, QA verte; build AppImage #265 à suivre) 2026-09-07 16:55:46 +02:00
5d7ab903fe chore(tickets): synchro du store local — cycle cross-project #260–#265 (cadrage/architecture/backend/UI/QA), carnets #117/#155/#185/#196/#243/#259, contextes agents, index/counter 2026-09-07 16:55:37 +02:00
3513e90101 fix(templates): default_contactable toujours sérialisé (idea_template_update retourne false au lieu de Null) + fixture app-tauri adaptée — #264 (QA verte) 2026-09-07 16:55:37 +02:00
032fbaeeef fix(cross-project): ask/cancel inter-projets routent par agentId résolu, plus par nom — agents homonymes désambiguïsés par projectId+agentId, tests ask/cancel names_collide — #260/#263 (QA verte) 2026-09-07 16:55:37 +02:00
b0f8fe4495 merge(cross-project): intègre le frontend #260 — surface UI permissions contactables (pré-QA) 2026-09-07 16:31:30 +02:00
530ce0193f merge(cross-project): intègre le backend #260 — tools MCP inter-projets + permissions contactables dans les templates (pré-QA) 2026-09-07 16:31:30 +02:00