Skip to content

0.10.0

Choose a tag to compare

@anilguleroglu anilguleroglu released this 02 Sep 03:59
· 74 commits to main since this release

Added

  • Plugin/hook layer. 13 hooks (sessionStart, userPromptSubmit, preModelCall, postModelCall, preToolUse, postToolUse, preCompact, postCompact, preFinalAnswer, subagentStart, subagentStop, notification, sessionEnd), 25 built-in plugins (cognipeerGuardrail, portkeyGuardrail, piiRedaction, promptInjectionGuard, toolPolicy, budgetGuard, rateLimit, responseCache, auditLog, langfuseTracing, otel, and more), and pluginCapabilities() to introspect what's actually wired. Multimodal input (image/audio/video) is carried through every hook. See the plugin guide.
  • Handoff targets (asHandoff) now carry their own system prompt and name instead of running under the persona of the agent that handed off.

Fixed

  • createSmartAgent silently dropped the handoffs option — the tool never reached the model.
  • A handoff swapped the tool menu but not the system prompt.
  • type: "image" content had no branch in the provider adapter and was never seen by the model.
  • Streaming emitted the final answer twice.
  • A cancelled run left a dangling tool_call, failing the next send with a 400.
  • postToolUse never ran on a tool error, and __finalStructuredOutput was extracted before it — both leaked unredacted output.
  • snapshot() threw DataCloneError after any handoff, silently breaking checkpointing for exactly the runs that needed it.
  • Tools injected at runtime (open_skill via __runtimeToolsDelta) were dropped by the next tool-set sync.
  • An approval resume could strand its own approved tool call behind a synthetic preopenedSkills exchange, failing with "a model provider error or exhausted iteration budget" when neither had happened.

Full changelog: v0.9.7...v0.10.0