Files
IdeaSDK/.ideai/tickets/65/issue.md
Blomios e1b1c1e103 restore .ideai/tickets/ store versionnέ + corrige .gitignore
- Restaure .ideai/tickets/ depuis 851f1f8^ (167 tickets + index.json + counter.json)
- Enlève les ignore rules .ideai/tickets/ dans .gitignore (ligne 51 et 75)
- Permet le suivi durable du store tickets futur
- Ne touche pas sdk/ (reste untracked)
2026-07-28 20:18:00 +02:00

2.4 KiB

id, number, title, status, priority, sprint, links, agentRefs, createdBy, updatedBy, createdAt, updatedAt, version
id number title status priority sprint links agentRefs createdBy updatedBy createdAt updatedAt version
f9f7067b-92b7-4737-ad99-4487ad8c8b13 65 Serveur headless : extraire idea-serve du binaire Tauri (cœur partagé) closed high 028179b1-eaf4-41e9-9c1f-7c37125117e6
target kind
#13 dependsOn
kind agent_id
agent a6ced819-b893-4213-b003-9e9dc79b9641
kind agent_id
agent a6ced819-b893-4213-b003-9e9dc79b9641
1784187583229 1784210420516 7

Objectif : produire un binaire serveur headless (idea-serve) SANS dépendance Tauri/WebKit, bâti sur le même cœur backend que le desktop (pas de fork). Prérequis de l'image Docker serveur/client. Cadré par Architect (suite #13).

Point pivot : server.rs vit aujourd'hui dans crates/app-tauri et réutilise indirectement la présentation Tauri via crate::state::AppState, crate::dto::*, crate::events::DomainEventDto, crate::pty::PtyChunk, crate::mcp_endpoint::*, ResumeContext. Le protocole HTTP/WS lui est déjà autonome.

Plan de lots (Architect) :

  • L1 — Extraire les DTO transport-neutres dans un module/crate partagé (ex. crates/presentation-dto ou backend-api) : ErrorDto, Health*Dto, ProjectDto/ProjectListDto, ProjectWorkStateDto, BackgroundTaskDto, TerminalSessionDto, LaunchAgentRequestDto, OpenTerminalRequestDto, parseurs d'IDs, DomainEventDto. Adapter app-tauri::commands ET server.rs pour les consommer. JSON INCHANGÉ.
  • L2 — Extraire le serveur HTTP/WS dans crates/web-server (lib) sans dépendance Tauri : déplacer server.rs, remplacer AppState par BackendCore, garder strictement routes + allowlist + sécurité B8 (POST /api/pair|invoke|logout, /api/ws, static same-origin). Aucune modif frontend.
  • L3 — Créer le bin idea-serve (crate bin) : parse CLI/env → config → web_server::run(config). Flags identiques à idea --serve (--listen/--app-data-dir/--web-root/--allow-remote/--public-origin/--trust-reverse-proxy). Défaut local = même app-data-dir que desktop (identifier app.idea.ide). Validation : le build/ldd ne tire PAS WebKitGTK. Garder éventuellement app-tauri --serve en compat dev, mais qui appelle web-server.

Invariants : desktop AppImage ne perd RIEN, aucun import Tauri dans le bin headless, même cœur/use cases/stores, contrat HTTP/WS inchangé. Non-régression desktop validée avant tout merge.

Dépend de #13.