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>
58 lines
3.9 KiB
Markdown
58 lines
3.9 KiB
Markdown
# Roadmap
|
|
|
|
Dettagli dell'MVP in [MVP.md](MVP.md).
|
|
|
|
## Fase 0 — Doc-first
|
|
- [x] Scrivere MVP.md e ROADMAP.md
|
|
- [ ] Chiudere le domande aperte in MVP.md
|
|
|
|
## Fase 1 — MVP
|
|
- [x] `dotnet new console`, `Program.cs` unico
|
|
- [x] Lancio di `claude -p` nella cartella dell'exe, streaming, exit code
|
|
- [ ] Publish single-file win-x64 e verifica dei criteri di accettazione
|
|
|
|
- [x] 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)
|
|
- [x] GUI: scelta di modello (`--model`) ed effort (`--effort`)
|
|
- [ ] CLI: stesse opzioni; inoltre `--allowedTools`, `--output-format`
|
|
|
|
## Fase 3 — Oltre
|
|
- [x] 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. `RunClaude` diventa `RunEngine(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 -p` quando lanciato da sottoprocesso con output rediretto su Windows ([issue #318](https://github.com/google-antigravity/antigravity-cli/issues/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.
|