2026-09-13 07:25:02 +00:00
|
|
|
|
# GrokBoy acceptance
|
|
|
|
|
|
|
|
|
|
|
|
## P0 — streaming chat
|
|
|
|
|
|
- [x] Cargo workspace `grokboy-core` + `grokboy`
|
|
|
|
|
|
- [x] Env: `GROKBOY_API_KEY` / `XAI_API_KEY` / `OPENAI_API_KEY`
|
|
|
|
|
|
- [x] Default base `https://api.x.ai/v1`
|
|
|
|
|
|
- [x] `grokboy chat` streams assistant tokens
|
|
|
|
|
|
- [x] `cargo test` passes without API key
|
|
|
|
|
|
|
2026-09-13 07:42:59 +00:00
|
|
|
|
## P1 — tools + ReAct
|
|
|
|
|
|
- [x] `shell`, `list_dir`, `read_file`, `write_file`
|
|
|
|
|
|
- [x] Multi-step tool loop
|
|
|
|
|
|
- [x] Sessions under `~/.grokboy/sessions/`
|
|
|
|
|
|
- [x] `grokboy run` / `grokboy smoke`
|
|
|
|
|
|
- [x] Default model `grok-4.6`
|
2026-09-13 07:25:02 +00:00
|
|
|
|
|
|
|
|
|
|
## P2 — completion contract
|
2026-09-13 07:51:13 +00:00
|
|
|
|
- [x] `report_done` / `report_blocked` stop the loop with a clear verdict
|
|
|
|
|
|
- [x] Loop guard (identical tool rounds ×3 → blocked)
|
|
|
|
|
|
- [x] Context truncation (`GROKBOY_CONTEXT_CHARS`, default ~100k)
|
|
|
|
|
|
- [x] Offline smoke/tests cover P2 without API key
|
2026-09-13 07:25:02 +00:00
|
|
|
|
|
|
|
|
|
|
## P3 — browser
|
2026-09-13 07:57:57 +00:00
|
|
|
|
- [x] Playwright DOM path (no screenshot-first)
|
|
|
|
|
|
- [x] Tools: `browser_navigate`, `browser_snapshot`, `browser_click`, `browser_type`, `browser_eval`
|
|
|
|
|
|
- [x] Thin Node helper under `tools/playwright/` (JSONL / one-shot JSON)
|
|
|
|
|
|
- [x] Fail closed with install hint when Node/Playwright/Chromium missing
|
|
|
|
|
|
- [x] `cargo test` / `grokboy smoke` pass without Playwright browsers installed
|
2026-09-13 08:15:27 +00:00
|
|
|
|
|
|
|
|
|
|
## P4 — human browser handoff
|
|
|
|
|
|
- [x] Spec: `docs/PRODUCT.md` (north star, P0–P3, P4, non-goals)
|
|
|
|
|
|
- [x] Tool `browser_handoff` (`reason` required, optional `timeout_secs`)
|
|
|
|
|
|
- [x] Headed Chromium for handoff (`handoff_prepare`; relaunch if was headless)
|
|
|
|
|
|
- [x] Bilingual (繁中 + EN) terminal instructions; Enter continue / `abort` / timeout → fail-closed
|
|
|
|
|
|
- [x] After resume: DOM snapshot returned as tool result
|
|
|
|
|
|
- [x] Env docs: `GROKBOY_BROWSER_HEADED`, `GROKBOY_HANDOFF_AUTO`
|
|
|
|
|
|
- [x] Wired into tool defs + agent system prompt; fail-closed if no browser
|
|
|
|
|
|
- [x] Offline tests / smoke without API key or interactive stdin (`GROKBOY_HANDOFF_AUTO`)
|
|
|
|
|
|
- [x] README status table updated
|