Commit Graph
33 Commits
Author SHA1 Message Date
hh 823337409a feat(claude): expose the headless stream-json transport, with real streaming
`ClaudeCodeOptions.transport="stream_json"` runs the agent on `claude -p`
with stream-json on both pipes instead of driving the TUI through a
pseudo-tty. Opt-in: the default stays `pty`, so nothing moves until a
config asks for it.

The reason to ask for it is that the PTY path pays a multi-second
readiness wait before every spawn and can silently lose a prompt to a
swallowed paste; the headless path writes to a pipe and gets a native
`result` record back. `--remote-control` and friends are dropped by the
transport when set, since they'd take claude out of print mode.

`include_partial_messages` then gives clients genuine token-level SSE.
Blocks are emitted from the `StreamEvent`s rather than forwarded raw:
the payload is already Anthropic-shaped but arrives as a dict, so it
would need validating against the SDK union anyway, and rebuilding it
through our own builders drops an unrecognized block or delta type the
same way `_emit_block` already does instead of raising mid-stream on a
claude release that adds one. When streaming, the whole-block records
are kept for TurnCapture but not re-emitted — that would duplicate every
block on the wire.

Verified end-to-end against a live claude: both paths accumulate to the
identical Message (same blocks, same stop_reason, same usage), the
envelope stays 1:1, and block indices stay collision-free across a turn
that spans several API requests.
2026-07-28 03:00:10 +02:00
hh 99b5c69c1e fix(conversation_store): splice assistant text in place, keeping thinking blocks 2026-07-26 17:57:03 +02:00
hh 1ad8f2a475 fix(agents): raise claude tui startup wait to 60s 2026-07-26 00:49:47 +02:00
hh 90fe92d014 fix(conversation_store,admin,cli): keep session when file lags db, sort pty by recency 2026-07-26 00:25:07 +02:00
hh d2981116d4 feat: live pty monitoring for claude code 2026-06-04 22:36:26 +02:00
hh c7b3eddbf4 feat: add pty monitoring for claude code 2026-05-23 00:37:49 +02:00
hh 9de5647cfa feat: bump claude-code-api 2026-05-23 00:31:42 +02:00
hh b83018b97e feat: bump claude-code-api 2026-05-23 00:12:33 +02:00
hh e53195a948 fix: asynchronous generator is already running 2026-05-23 00:04:25 +02:00
hh 5fb5b6a3fb feat: add heartbeats to prevent long-thinking from closing 2026-05-22 23:59:00 +02:00
hh 33eece331a feat: add more logging 2026-05-22 22:48:12 +02:00
hh b8ac545a51 feat: bump claude-code-api 2026-05-22 01:04:29 +02:00
hh 0c3a09456d feat: bump startup delay (new method) 2026-05-22 00:46:39 +02:00
hh e28b74ee3f feat: bump startup delay (new method) 2026-05-22 00:36:44 +02:00
hh a8c86a4292 feat: bump startup delay (new method) 2026-05-22 00:36:27 +02:00
hh 48d292904b feat: add pastable link for markdown endpoint 2026-05-21 23:38:25 +02:00
hh 64ad92b4c1 feat: allow custom base url 2026-05-21 23:27:57 +02:00
hh e8a4e3aa82 feat: markdown streaming via extension 2026-05-21 21:15:46 +02:00
hh 11f061070f feat: add streaming to markdown, fix raycast mcps exposing 2026-05-21 13:52:48 +02:00
hh 7fc0c9c0b1 fix: claude shouldn't reset creds after rebuild now 2026-05-21 12:39:53 +02:00
hh a83bec709d feat: add stateful conversation storage 2026-05-21 12:27:11 +02:00
hh 4a405faf25 feat: more functionality for obsidian plugin 2026-05-21 10:27:21 +02:00
hh 1482674101 chore: update raycast-api in lock 2026-05-21 00:40:42 +02:00
hh 94bae38012 fix: load env before config 2026-05-21 00:32:00 +02:00
hh 3dc780c74c refactor: add markdown frontend 2026-05-20 21:30:10 +02:00
hh a7827b2fa6 refactor: remove dead session code 2026-05-20 14:23:01 +02:00
hh 0128191ac3 feat: add admin panel 2026-05-20 13:00:08 +02:00
hh 7970d4be9b feat: implement mcp frontend 2026-05-20 09:59:47 +02:00
hh 99a30f256d feat: implement claude code backend 2026-05-19 23:11:07 +02:00
hh 757065f21c feat: implement raycast backend 2026-05-19 21:06:01 +02:00
hh 221e660c5c feat: implement skeleton phase 2026-05-19 14:19:15 +02:00
hh 75a23d231e docs: add slop badge 2026-05-19 11:27:28 +02:00
hh fda6cbe165 feat: init 2026-05-19 11:26:47 +02:00