Commit Graph
36 Commits
Author SHA1 Message Date
hh 7d1e0b365d chore(lock): scope the unconnected-MCP warning to configured servers 2026-07-28 03:27:28 +02:00
hh 6c1780583c feat(claude): warm up sessions for agents that expose MCPs
`ClaudeCodeOptions.warmup_turn` defaults to `None`, which decides per
agent: on when the agent exposes any MCP, off otherwise. An agent whose
tools are the point shouldn't answer its first message without them, and
an agent with no MCPs shouldn't pay for a warm-up it gains nothing from.

The underlying reason lives in claude-code-api: the CLI connects MCP
servers when a turn starts and doesn't await them, so turn one runs with
built-in tools only.
2026-07-28 03:22:39 +02:00
hh 7f633a11a2 chore(lock): pick up claude-code-api stream-transport shutdown fixes 2026-07-28 03:12:11 +02:00
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