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)
This commit is contained in:
@ -90,3 +90,5 @@
|
||||
- [project-plugin-skills-multi-harness-contract](project-plugin-skills-multi-harness-contract.md) — memory note project-plugin-skills-multi-harness-contract
|
||||
- [ticket284-cross-project-contact-plugin-assignment](ticket284-cross-project-contact-plugin-assignment.md) — memory note ticket284-cross-project-contact-plugin-assignment
|
||||
- [ticket285-sdk-plugin-root-runtime-api](ticket285-sdk-plugin-root-runtime-api.md) — memory note ticket285-sdk-plugin-root-runtime-api
|
||||
- [ticket287-cross-project-rendezvous-live-activity-fix](ticket287-cross-project-rendezvous-live-activity-fix.md) — memory note ticket287-cross-project-rendezvous-live-activity-fix
|
||||
- [ticket288-agent-self-restart-architecture](ticket288-agent-self-restart-architecture.md) — memory note ticket288-agent-self-restart-architecture
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
---
|
||||
name: ticket287-cross-project-rendezvous-live-activity-fix
|
||||
description: memory note ticket287-cross-project-rendezvous-live-activity-fix
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
---
|
||||
name: ticket287-cross-project-rendezvous-live-activity-fix
|
||||
description: Fix livré du timeout cross-project headlessRendezvous à 600s vers des cibles Codex — le watchdog structured est réarmé par les événements live send_with_tap, avec transcript Claude en fallback.
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# Ticket #287 — Cross-project headlessRendezvous réarmé par activité live
|
||||
|
||||
## Symptôme
|
||||
Un appel cross-project `UnitySoundTool -> UnityPlugin/Main` a expiré après 10 minutes avec le workstate cible `Failed / headlessRendezvous / 4c3d6b38` et le message `Timeout: rendezvous inactivity window expired for target Main`.
|
||||
|
||||
## Cause
|
||||
Le chemin concerné est le rendez-vous structured/headless (`ask_project_agent_for_mcp -> ask_resolved_agent -> ask_structured`), pas l'ancien rendez-vous MCP `idea_reply`.
|
||||
|
||||
Le watchdog réarmable existait déjà, mais la sonde production externe observait surtout les transcripts Claude. UnityPlugin/Main étant un agent Codex, un tour structured actif pouvait ne produire aucun progrès visible pour cette sonde et expirer à la première fenêtre de 600s.
|
||||
|
||||
## Contrat livré
|
||||
Depuis le fix #287, `ask_structured` alimente un jeton monotone local via `AgentSession::send_with_tap`. Chaque `ReplyEvent` live non terminal réarme l'activité du rendez-vous, indépendamment du provider. La sonde transcript reste un fallback externe, notamment pour les adapters qui ne produisent pas d'événements intermédiaires.
|
||||
|
||||
Le `Final` reste la seule réponse normale. Absence réelle de tout signe de vie pendant une fenêtre complète => timeout d'inactivité. Activité continue jusqu'au plafond absolu => ceiling active.
|
||||
|
||||
## Fichiers et commits
|
||||
Fichiers touchés:
|
||||
- `crates/application/src/agent/mod.rs`
|
||||
- `crates/application/src/agent/structured.rs`
|
||||
- `crates/application/src/orchestrator/service.rs`
|
||||
- `crates/application/tests/orchestrator_service.rs`
|
||||
- `crates/backend/src/lib.rs`
|
||||
|
||||
Commit fix: `7716910`.
|
||||
Merge local develop: `5d62515`.
|
||||
|
||||
## Validation
|
||||
QA verte:
|
||||
- `cargo fmt --check`
|
||||
- `cargo test -p application --test orchestrator_service` => 81 passed
|
||||
- `cargo test -p application orchestrator::rendezvous` => 5 passed
|
||||
- `cargo test -p infrastructure --test mcp_server` => 40 passed
|
||||
- `cargo test -p backend` => 87 passed, 7 ignored
|
||||
|
||||
AppImage rebuildée le 2026-09-08:
|
||||
`/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` (114M).
|
||||
|
||||
## Activation
|
||||
Le binaire actif reste l'AppImage installée. Pour activer le fix en live, remplacer l'AppImage installée puis relancer IdeA. Cette relance tue l'orchestrateur courant, donc elle reste manuelle.
|
||||
15
.ideai/memory/ticket288-agent-self-restart-architecture.md
Normal file
15
.ideai/memory/ticket288-agent-self-restart-architecture.md
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
name: ticket288-agent-self-restart-architecture
|
||||
description: memory note ticket288-agent-self-restart-architecture
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# Ticket #288 — Agent Self-Restart MCP Architecture
|
||||
|
||||
Le tool core `idea_restart_self` doit être self-only et requester-scopé via le handshake MCP. Il ne prend pas de target fourni par le modèle. Il retourne seulement un accusé `scheduled`, car le process appelant est ensuite arrêté.
|
||||
|
||||
Le restart est un use case applicatif atomique au-dessus des briques existantes: snapshot de reprise, stop runtime, relance via `LaunchAgent` avec `fresh_start=false` et le même `conversation_id`. `LaunchAgent` reste l’unique endroit qui régénère contexte, mémoire, live-state, handoff, capabilities et skills/tools MCP de plugins.
|
||||
|
||||
Les événements normatifs sont `AgentRestartRequested`, `AgentRestartPhaseChanged`, `AgentRestartCompleted`, `AgentRestartFailed`. Les séparateurs exacts du CLI custom et l’overlay TUI native sont des projections UI, jamais du contenu conversationnel ni du prompt interne de reprise.
|
||||
|
||||
Invariant critique: le restart doit libérer l’état Busy/mailbox même si la connexion MCP disparaît quand l’agent est tué.
|
||||
Reference in New Issue
Block a user