Skip to content

v0.2.0 — streaming, web chat, resilience; agent_sdk cut

Choose a tag to compare

@danielstpaul danielstpaul released this 24 Jul 23:08
3adcf7f

The "you can actually use it" release. Chaos-gated: 235 kill/deploy cycles across worker/supervisor/SIGTERM/parked on SQLite and Postgres — 100% completion, byte-identical replay, zero duplicate side effects.

  • Token streaming, end to end — the engine streams; silas:chat prints tokens as they arrive; the inbox trace renders them live over Turbo (~10Hz coalescing). Deltas are decoration over the durable rows: never persisted, never re-emitted on replay.
  • Web chat in the inbox — start a session or reply from the browser; same durable loop, write-gated like approvals.
  • Audit trail — every tool call's arguments and result/error, who approved, who declined and why; cancel button on active turns; the awaiting-approval badge filters to what needs you.
  • Model-call resilience — transient provider errors (429/529/timeouts) retry with backoff and resume from the last completed step; exhaustion and permanent rejections fail the turn loudly with approvals expired; the rescuer sweeps stranded turns. A turn can never sit in running forever.
  • approval :once is now (tool, arguments)-scoped — approving a £5 refund no longer auto-approves a £5,000 one.
  • Removed the :agent_sdk engine — its subscription-auth rationale was structurally unreachable. config.engine = :agent_sdk raises clearly; agent_sdk_*/auth options are warning no-ops for this release. The in-process MCP server survives as the seam for a future "mount your tools as MCP" feature.
  • Onboarding — generated bin/ci can actually fail; complete initializer template (Sonnet default); provider-key and async-adapter guards raise at boot in production; idempotent, environment-aware rescuer recurring entry.

Upgrade: bin/rails silas:install:migrations db:migrate (drops two unused agent_sdk columns). Full details in CHANGELOG.md.