Minor Changes
- f81e032: Add optional
outputSchematodefineAction— validate an action's RETURN
value (warn/strict/fallback). Pass a Standard Schema-compatibleoutputSchema
(Zod, Valibot, ArkType — same surface as the inputschema) and the framework
validates the result AFTERrun()resolves, composing with the existing input
validation (input validated beforerun, output validated after). The
outputErrorStrategy(default"warn") controls the mismatch behavior:
"strict"throws a clear error so a buggy action surfaces loudly,"warn"
console.warns the issues and returns the ORIGINAL result unchanged
(non-breaking), and"fallback"returns the providedoutputFallback. When no
outputSchemais supplied, behavior is byte-for-byte unchanged (no wrapping).
Borrowed from Mastra/Flue structured-output and kept dependency-free on the
action layer. - f81e032: Add an in-loop processor seam (
processOutputStream/processOutputStep+
abort()/TripWire) for real-time guardrails.runAgentLoopnow accepts an
optionalprocessors: Processor[]. Each processor exposes optional hooks —
processOutputStream(per streamed chunk),processOutputStep(once per model
response, around tool execution, with the requested tool calls), and
processOutputResult(once at run end) — and a per-processor mutablestate
that persists across hooks and is isolated between processors. A processor can
callabort(reason, meta?)(throws an exportedTripWire) to halt the run
gracefully; the loop catches it, emits a new{ type: "tripwire"; reason; processor? }agent-chat event, surfaces the reason as a final message, and
stops. This is the structural prerequisite for real-time guardrails and a
proof-of-done / coverage gate. Borrowed from Mastra's output processors and
kept loop-internal configuration (processors only observe/mutate-stream/abort;
they do not define app behavior or replace actions). When no processors are
passed the loop is byte-for-byte unchanged with zero overhead. - f81e032: Add token-efficient web content fetching for agents.
web-requestandprovider-api-docscan now return extracted markdown, plain text, metadata, links, or bounded search matches instead of raw HTML, andrun-codeexposeswebRead()plus pass-through options onwebFetch()for compact web/document reduction.
Patch Changes
- f81e032: Docs: document the agent-runtime features added since the first docs sweep.
New pages: Human-in-the-Loop Approvals (needsApprovalgate +approval_required
/approvedToolCallsflow), Observational Memory (background three-tier
compaction withAGENT_NATIVE_OM_*config), In-Loop Processors (the
processOutput*guardrail seam +TripWire/tripwireevent), and Durable
Resume (tool-call journal — prompt note + tool-layer hard-block against
re-running completed side effects). Folded actionoutputSchema/
outputErrorStrategyand theneedsApprovalgate into the Actions page, and
added an optional OpenTelemetry-spans section to Observability. All wired into
the docs sidebar nav; no runtime behavior changes. - 9909dcc: Avoid bundling native canvas from web content extraction in template SSR builds.
- f81e032: Allow the hosted Plan local-files UI to read the localhost bridge in Chromium by
answering Private Network Access preflights. - f81e032: Include repo-relative paths in direct local Plan preview URLs so local Plan app
routes can reopen and edit MDX folders from the current repository. - f81e032: Improve provider corpus jobs with a read-only status/results action helper and better multi-term snippet windows for durable provider searches.
- f81e032: Add app/template and agent-native-specific app/template properties to Better Auth signup tracking events.
- f81e032: Add VS Code extension open URLs to MCP open-link metadata.