chore: prepare v0.5.0 release

This commit is contained in:
banteg
2026-01-02 17:12:32 +04:00
parent 7c30674e53
commit 03658f3187
13 changed files with 52 additions and 43 deletions
+14 -14
View File
@@ -1,4 +1,4 @@
Below is a concrete implementation spec for adding **Anthropic Claude Code (“claude” CLI / Agent SDK runtime)** as a first-class engine in Takopi (v0.2.0).
Below is a concrete implementation spec for the **Anthropic Claude Code (“claude” CLI / Agent SDK runtime)** runner shipped in Takopi (v0.3.0).
---
@@ -6,7 +6,7 @@ Below is a concrete implementation spec for adding **Anthropic Claude Code (“c
### Goal
Add a new engine backend **`claude`** so Takopi can:
Provide the **`claude`** engine backend so Takopi can:
* Run Claude Code non-interactively via the **Agent SDK CLI** (`claude -p`). ([Claude Code][1])
* Stream progress in Telegram by parsing **`--output-format stream-json --verbose`** (newline-delimited JSON). Note: `--output-format` only works with `-p/--print`. ([Claude Code][1])
@@ -24,11 +24,11 @@ Add a new engine backend **`claude`** so Takopi can:
### Engine selection
* Existing: `takopi codex`
* New: `takopi claude`
* Default: `takopi` (auto-router uses `default_engine` from config)
* Override: `takopi claude`
Takopi requires an explicit engine subcommand; `takopi` alone prints the engine
selection panel and exits.
Takopi runs in auto-router mode by default; `takopi claude` or `/claude` selects
Claude for new threads.
### Resume UX (canonical line)
@@ -74,11 +74,11 @@ Recommended v1 schema:
```toml
# .takopi/takopi.toml
engine = "claude"
default_engine = "claude"
[claude]
model = "claude-sonnet-4-5-20250929" # optional (Claude Code supports model override in settings too)
allowed_tools = "Bash,Read,Edit" # optional but strongly recommended for automation
allowed_tools = ["Bash", "Read", "Edit"] # optional but strongly recommended for automation
dangerously_skip_permissions = false # optional (high risk; prefer sandbox use only)
use_api_billing = false # optional (keep ANTHROPIC_API_KEY for API billing)
```
@@ -365,13 +365,13 @@ Mirror the existing `CodexRunner` tests patterns.
---
## Implementation checklist
## Implementation checklist (v0.3.0)
* [ ] Export `BACKEND = EngineBackend(...)` from `src/takopi/runners/claude.py`.
* [ ] Add `src/takopi/runners/claude.py` implementing the `Runner` protocol.
* [ ] Add tests + stub executable fixtures.
* [ ] Update README and developing docs.
* [ ] Run full test suite.
* [x] Export `BACKEND = EngineBackend(...)` from `src/takopi/runners/claude.py`.
* [x] Add `src/takopi/runners/claude.py` implementing the `Runner` protocol.
* [x] Add tests + stub executable fixtures.
* [x] Update README and developing docs.
* [ ] Run full test suite before release.
---
+10 -10
View File
@@ -1,8 +1,8 @@
# Claude Code -> Takopi event mapping (spec)
This document specifies how to add a Claude Code runner to Takopi by translating
Claude CLI `--output-format stream-json` JSONL events into Takopi events. It is
based on the reverse-engineered schema in `humanlayer/claudecode-go`:
This document specifies how the Claude Code runner (implemented in Takopi v0.3.0)
translates Claude CLI `--output-format stream-json` JSONL events into Takopi events.
It is based on the reverse-engineered schema in `humanlayer/claudecode-go`:
- `claudecode-go/types.go` (StreamEvent, Message, Content, Result)
- `claudecode-go/client.go` (CLI flags, stream parsing)
@@ -196,18 +196,18 @@ without transformation. Optionally include `modelUsage` inside `usage` or
---
## 7. Implementation checklist (handoff)
## 7. Implementation checklist (v0.3.0)
Add a Claude runner without changing the Takopi domain model:
Claude runner implementation summary (no Takopi domain model changes):
1. Create `takopi/runners/claude.py` implementing `Runner` and (custom)
1. [x] Create `takopi/runners/claude.py` implementing `Runner` and (custom)
resume parsing.
2. Define `BACKEND` in `takopi/runners/claude.py`:
2. [x] Define `BACKEND` in `takopi/runners/claude.py`:
- `install_cmd`: install command for the `claude` binary
- `build_runner`: read `[claude]` config + construct runner
3. Add new docs (this file + `claude-stream-json-cheatsheet.md`).
4. Add fixtures in `tests/fixtures/` (see below).
5. Add unit tests mirroring `tests/test_codex_*` but for Claude translation
3. [x] Add new docs (this file + `claude-stream-json-cheatsheet.md`).
4. [x] Add fixtures in `tests/fixtures/` (see below).
5. [x] Add unit tests mirroring `tests/test_codex_*` but for Claude translation
and resume parsing (recommended, not required for initial handoff).
---