Files
IdeA/.ideai/tickets/296/carnet.md

8.8 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#296 4
kind agent_id
agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d
1788976624245

QA - 2026-09-09 - Validation unified agent capabilities

Branche vérifiée : feature/296-unified-agent-capabilities.

Périmètre relu :

  • Backend/application : catalogue MCP natif structuré, mutation atomique SetAgentMcpToolAllowed, validation metadata plugin mcpServers[].tools.
  • Backend DTO/Tauri/web-server : DTO additive catalogue.tools, request set_agent_mcp_tool_allowed, wiring commande Tauri et invoke web-server.
  • SDK sdk/IdeaSDK : type exporté IdeAPluginMcpToolMetadata, validation manifest, script test:manifest, doc docs/manifest.md.
  • Frontend : AgentPluginCapabilities devient la surface unifiée Skills/Tools MCP natifs et plugins ; AgentsPanel retire l'ancienne assignation skills séparée ; ProjectPluginsPanel recentré sur enable/disable ; adapters Tauri/HTTP/mock pour la mutation native.

Diff vérifié : les 6 fichiers web en échec dans la suite complète ne sont pas modifiés par ce ticket (git diff --name-only | rg '^(frontend/src/features/web/|frontend/src/features/projects/ProjectsView|frontend/src/features/web/tickets/)' ne retourne rien).

Commandes vertes exécutées :

git diff --check
cargo fmt --all --check

Sortie : aucune.

cargo test -p application mcp_tool_permissions --lib
cargo test -p application plugin::tests:: --lib

Sortie essentielle :

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 170 filtered out
test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 138 filtered out
cargo test -p backend mcp_tool_permissions --lib
cargo test -p backend backend_core_exposes_structured_native_mcp_catalogue_with_descriptions --lib
cargo test -p backend dto::tests::project_mcp_tool_permissions_dto_uses_stable_camel_case_contract --lib
cargo check -p backend
cargo check -p application
cargo check -p domain

Sortie essentielle :

test dto::tests::project_mcp_tool_permissions_dto_uses_stable_camel_case_contract ... ok
test backend_core_build_tests::backend_core_exposes_structured_native_mcp_catalogue_with_descriptions ... ok
Finished `dev` profile [unoptimized + debuginfo]
cargo check -p app-tauri
cargo test -p app-tauri --test dto --test dto_plugins --test dto_agents

Sortie essentielle :

Finished `dev` profile [unoptimized + debuginfo]
test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
cargo test -p web-server set_agent_mcp_tool_allowed --lib
cargo check -p web-server

Sortie essentielle :

running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 112 filtered out
Finished `dev` profile [unoptimized + debuginfo]

Note : aucun test web-server ne cible directement le nom set_agent_mcp_tool_allowed; la commande n'est donc pas probante en test, mais le routage apparaît dans la suite web_invoke_routes_permission_commands de la lib complète, qui passe en exécution série avant les échecs PTY hors périmètre listés plus bas.

npm --prefix sdk/IdeaSDK run check

Sortie essentielle :

> @idea/plugin-sdk@0.1.0 check
> npm run test:manifest && npm run typecheck:examples && npm run package:hello-plugin

> @idea/plugin-sdk@0.1.0 test:manifest
> npm run build && node scripts/check-manifest-tools.mjs

created /home/anthony/Documents/Projects/IdeA/sdk/IdeaSDK/examples/hello-plugin/build/hello-plugin-0.1.0.zip
npm test -- ProjectPluginSettings.test.tsx skills.test.tsx permission.test.ts httpInvoker.test.ts
npm test -- agents.test.tsx plugins.test.tsx plugin.test.ts McpToolPermissionsPanel.test.tsx

Sortie essentielle :

Test Files  4 passed (4)
Tests  35 passed (35)

Test Files  4 passed (4)
Tests  65 passed (65)
npm run build
npm run build:web

Sortie essentielle :

✓ 515 modules transformed.
✓ built in 2.75s

✓ 515 modules transformed.
✓ built in 2.56s

Notes : warnings Vite de configuration esbuild/oxc, warning HTMLCanvasElement.getContext() jsdom dans des tests, et warning chunk > 500 kB au build ; non bloquants pour #296.

Suites rouges exécutées et classification :

cargo test -p web-server --lib

Sortie essentielle parallèle :

test result: FAILED. 72 passed; 40 failed; 0 ignored; 0 measured; 0 filtered out
premier échec: Failed building the Runtime: Os { code: 24, message: "Too many open files" }

Classification : échec environnemental par limite de fichiers ouverts sous forte parallélisation, non bloquant pour #296. Relance série :

cargo test -p web-server --lib -- --test-threads=1

Sortie essentielle :

test result: FAILED. 105 passed; 7 failed; 0 ignored; 0 measured; 0 filtered out

Les 7 échecs série sont tous des scénarios terminal/agent launch attendant terminal.attached et recevant error :

  • websocket_attach_terminal_replays_scrollback_in_attached_ack
  • websocket_close_terminal_emits_exited_status_and_releases_session
  • websocket_launch_agent_different_cell_is_refused_by_singleton_guard
  • websocket_launch_agent_emits_attached_with_assigned_conversation_id
  • websocket_launch_agent_reattach_replays_scrollback_without_respawn
  • websocket_launch_agent_same_cell_is_idempotent_singleton
  • websocket_open_terminal_emits_attached_with_empty_scrollback

Ces 7 tests passent individuellement avec cargo test -p web-server <test_name> --lib. Classification : instabilité/interférence de suite web-server PTY existante, hors périmètre #296. Non bloquant pour #296.

npm test

Sortie essentielle :

Test Files  6 failed | 120 passed (126)
Tests  32 failed | 1223 passed (1255)

Classification précise des 32 échecs frontend complets : hors périmètre #296, car ils sont dans des fichiers web non modifiés par ce ticket et ne concernent pas la surface Capacités de l'agent, les adapters de capabilities, ni le contrat backend/SDK MCP.

  • frontend/src/features/projects/ProjectsView.ls7.test.tsx : 3 échecs LS7 conversation viewer, bouton open conversation conversation-open-me introuvable.
  • frontend/src/features/web/WebAgentCell.test.tsx : 1 échec, le message mobile custom CLI contient invalid node id alors que le test attend son masquage.
  • frontend/src/features/web/WebApp.test.tsx : 3 échecs pairing routing, requête getByText("Projets") ambiguë car plusieurs éléments correspondent.
  • frontend/src/features/web/WebDesktopWorkspace.test.tsx : 1 échec, bouton Project context introuvable.
  • frontend/src/features/web/WebMenus.test.tsx : 8 échecs, attentes d'ancienne navigation/testids (web-desktop-shell, Panneaux : ..., Surface ...) non alignées avec l'UI rendue.
  • frontend/src/features/web/tickets/WebTicketsSprints.test.tsx : 16 échecs, attentes Panneaux : .../navigation tickets-sprints web non alignées avec l'UI rendue.

Relance des 6 fichiers web seuls reproduite avec les mêmes 32 échecs (32 failed | 24 passed), et relance isolée de WebAgentCell.test.tsx, WebMenus.test.tsx, ProjectsView.ls7.test.tsx confirme que ces familles échouent indépendamment de #296. Non bloquant pour #296.

Verdict QA : VERT pour le périmètre #296, avec dette de tests web hors périmètre confirmée.

Git - 2026-09-09 - Intégration locale

Cycle Git terminé, sans push.

Submodule sdk/IdeaSDK :

  • Commit feature : d93e302 (feat(sdk): ...).
  • Merge local develop : 436ed59.

Repo parent :

  • Commit applicatif : e283f4a (feat(agents,plugins): ...).
  • Commit pointeur SDK : fda1b2d.
  • Commit tickets : 2c3234e.
  • Merge local vers develop : f78f009.

Réserves Git : suites complètes rouges classées non bloquantes par QA; rebuild AppImage/validation live restaient à faire au moment du merge; aucun push; scripts/ non suivi hors périmètre.

AppImage - 2026-09-09 - Build local

Workflow build-appimage exécuté après merge pour produire un artefact installable/testable.

Commandes :

npm --prefix frontend run build
cd crates/app-tauri
mkdir -p /tmp/idea-cargo-home
CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage

Résultat :

Finished 1 bundle at:
/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage

Artefact : target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage, 114M, sha256 baddb3e9970c804f4123880fff1567f2344d140cf3dbcfaf85dc7d657851777f.

Remplacement de l'AppImage installée et relance IdeA non automatisés volontairement: cela tuerait la session d'orchestration active. Validation live de l'attribution depuis la fiche agent à faire après installation manuelle de cet artefact.