Aggiunge la Fase 4 alla roadmap (più motori, selezione dalle Impostazioni) e un rimando nel fuori scope di MVP.md. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
Roadmap
Dettagli dell'MVP in MVP.md.
Fase 0 — Doc-first
- Scrivere MVP.md e ROADMAP.md
- Chiudere le domande aperte in MVP.md
Fase 1 — MVP
-
dotnet new console,Program.csunico -
Lancio di
claude -pnella cartella dell'exe, streaming, exit code -
Publish single-file win-x64 e verifica dei criteri di accettazione
-
GUI a chat: conversazione markdown in alto, input in basso, sessione con
--session-id/--resume
Fase 2 — Robustezza
- Input del prompt da stdin e da file
- Timeout e cancellazione (Ctrl+C propagato al figlio)
- GUI: scelta di modello (
--model) ed effort (--effort) - CLI: stesse opzioni; inoltre
--allowedTools,--output-format
Fase 3 — Oltre
- GUI: cronologia chat (salvataggio JSON, barra laterale, riapertura con
--resume, eliminazione) - GUI: streaming della risposta (
--output-format stream-json), stop, rinomina/ricerca chat - Config file accanto all'exe
- Test automatici e CI
Fase 4 — Più motori (Claude Code, Codex, Antigravity)
Obiettivo: oltre a Claude Code, usare OpenAI Codex CLI e Antigravity CLI (agy) dalla stessa chat, scegliendo il motore da una nuova schermata Impostazioni della GUI.
Flag delle tre CLI (da verificare con --help delle versioni installate: derivano da documentazione e ricerche, non da prove su questo PC, dove codex e agy non sono ancora installati):
| Claude Code | Codex CLI | Antigravity CLI | |
|---|---|---|---|
| Comando | claude -p <prompt> |
codex exec <prompt> |
agy -p <prompt> |
| Continuare | --session-id <guid> poi --resume <guid> |
codex exec resume <id> <prompt> |
da verificare |
| Modello | --model |
-m / --model |
da verificare |
| Effort | --effort |
via --config (da verificare) |
non noto |
Architettura
- Un'astrazione "motore" in C#: per ogni motore, eseguibile, argomenti per primo messaggio e per ripresa, elenco modelli, supporto effort, lettura dell'id di sessione.
RunClaudediventaRunEngine(engine, ...); la logica di avvio (cartella dell'exe, stdin chiuso) resta in un solo punto, eliminando la duplicazione CLI/GUI. - Rilevamento dei motori installati (PATH) e messaggio chiaro se mancano; i motori assenti sono disabilitati nelle Impostazioni.
- Il file JSON di ogni chat memorizza il motore; riaprendo una chat si usa il suo motore. Il contesto di sessione non passa da un motore all'altro: cambiare motore apre una nuova chat.
GUI: Impostazioni
- Schermata/pannello Impostazioni (icona nella barra laterale) con selettore del motore attivo.
- Il selettore Modello mostra solo i modelli del motore scelto; Effort compare solo se il motore lo supporta.
- Impostazioni persistite su disco (motore, modello, effort), così si ritrovano alla riapertura. Si lega al "config file" della Fase 3.
- Il motore della chat aperta è indicato nell'interfaccia (etichetta sull'intestazione o sulla voce in elenco).
Rischi e punti da verificare
- Codex: l'id di sessione non lo sceglie l'app (lo genera Codex): va letto dall'output (probabilmente con l'output JSON) per poter riprendere la chat.
- Antigravity: segnalato un blocco di
agy -pquando lanciato da sottoprocesso con output rediretto su Windows (issue #318); provare con un timeout (--print-timeout) e prevedere un messaggio d'errore. I flag vanno messi prima di-p. - Permessi: Codex e Antigravity chiedono conferma per le azioni; in modalità non interattiva serve decidere una politica (sola lettura di default, opzione esplicita per concedere di più) invece di usare flag che saltano ogni controllo.
- Formato dell'output di ciascun motore (testo semplice o JSON) e normalizzazione prima del rendering markdown.
- Autenticazione: ogni CLI deve essere già autenticata; l'app non gestisce login.
- CLI (
LlmRun "prompt"): opzione--engine, coerente con la GUI.