Skip to content

v0.8.0

Choose a tag to compare

@devoidfury devoidfury released this 06 Sep 20:02
· 233 commits to main since this release

Added utils/jsx to hook into bun's jsx support as a react-like jsx view layer for the UI, and then refactored most of the webui to use that. There's also a bunch of little QoL things and bug fixes in this release.

  • llm-client - retries now honor a server Retry-After header (delta-seconds and HTTP-date forms, capped at 60s) instead of the fixed exponential backoff; absent or malformed headers fall back to the existing ladder

  • llm-client - error responses are now read up to the 200K cap but quoted in the LlmError message up to 2K (with a [truncated] marker), so a broken endpoint returning a full HTML page no longer dumps hundreds of KB into the sink, logs, and retry lines

  • agent - run() is now guarded against re-entrancy: a second overlapping run() throws AgentError.AlreadyRunning instead of silently interleaving loop state (iteration count, abort controller, stream replay buffers)

  • tool-executor - "Tool 'x' is not available for this agent" now suggests near-matching tools from the set the model was offered (case/separator differences first, then prefix/substring near-matches), so a misspelled or case-flipped tool name self-corrects in one retry

  • cli - unknown flags are now fatal (exit 1) with a "Did you mean" suggestion when a registered flag is a near-match, instead of a warning that let the run proceed with the flag silently dropped

  • session - a throwing channel event handler is now logged at debug level instead of being swallowed silently; other handlers still run

  • package - minimum bun bumped to 1.3.1 (the --only-failures flag used by the test scripts landed in 1.3.1)

  • internals

    • webui - rewrote in jsx
    • marker mangler - compiled escape/unescape regexes are now built once per name pair instead of rebuilt per protected prefix on every escape() call
    • cleanup session - remove unused SessionManager.deserialize and related unused serialize/deserialize hooks
    • task-manager - drop unsafe last-set bus fallback
    • task-manager - release the finished task's Agent reference from the registry when a task reaches a terminal state (completed/failed/cancelled); previously dead tasks pinned their full agent context for the manager's lifetime, an unbounded leak on long-lived hosts like the webui
    • tool-utils - remove legacy parseToolArgs (its invalid-JSON {input: ...} fallback was a footgun); subagents now use parseToolInput like every other tool
  • CLI colors now honor the NO_COLOR environment convention and TERM=dumb: color output is disabled regardless of config when either is present

Full Changelog: v0.7.3...v0.8.0