{/* AUTO-GENERATED from docs/guides/data/releases.json. Run `./ops/regenerate_docs.sh` to update. */}

<Update label="v0.5.1" description="2026-05-22 · patch release">

**`@outputai/core`** — Fix worker activity Temporal client to use the configured namespace when signaling workflows. This resolves unauthorized signal errors in Temporal Cloud production namespaces.

**`@outputai/core`** — Improve reliability of workflow usage and cost metadata collection. Transient Temporal signal failures while recording activity attributes are now handled gracefully, reducing the chance of worker interruptions during workflow runs.

</Update>

<Update label="v0.5.0" description="2026-05-20 · minor release">

**`@outputai/core`, `@outputai/http`, `@outputai/llm`, `output-api`** — Workflow runs now return durable usage and cost metadata alongside the workflow output. Each completed or failed run can include raw `attributes` plus convenient `aggregations` for total cost, token usage, and HTTP request counts.

For example, API and CLI JSON results can now include:

```json
{
  "attributes": [
    { "type": "llm:usage", "modelId": "gpt-4o", "total": 0.00122, "tokensUsed": 226 },
    { "type": "http:request:cost", "url": "https://api.vendor.com/search", "total": 0.42 }
  ],
  "aggregations": {
    "cost": { "total": 0.42122 },
    "tokens": { "total": 226 },
    "httpRequests": { "total": 1 }
  }
}
```

Cost events now emit the same attribute-shaped payloads used in workflow results, making hook handlers and saved run metadata easier to reconcile. This also updates `@outputai/http` request cost tracking and `@outputai/llm` response cost data to use the new attribute format.

Learn more in the [workflow result docs](https://docs.output.ai/api), [CLI result format](https://docs.output.ai/packages/cli#workflow-result-json-format), [cost events guide](https://docs.output.ai/costs/cost-events), and [v0.4.0 to v0.5.0 migration guide](https://docs.output.ai/migrations/v0.4.0-to-v0.5.0).

**`@outputai/cli`** — Improved the dev TUI experience with clearer workflow run views, expanded full-screen modals, and more consistent layout and interaction patterns across screens.

Workflow run details now show result attributes and aggregations alongside input/output data.

For scaffolded projects running `output dev`, the local Docker Compose API service now uses the documented `OUTPUT_AWS_*` variables for remote S3 trace access. If you use remote trace storage locally, set `OUTPUT_AWS_REGION`, `OUTPUT_AWS_ACCESS_KEY_ID`, and `OUTPUT_AWS_SECRET_ACCESS_KEY` in your project environment; the accidental `AWS_*` passthrough is no longer used.

**`@outputai/http`** — Emit a new `http:request` event on every HTTP call made via `@outputai/http`'s `fetch`. The event fires on success, non-2xx responses, and network failures, with payload:

```
{
  requestId: string,
  method: string,
  url: string,
  status: number | undefined,
  durationMs: number,
  outcome: 'success' | 'error' | 'failure'
}
```

Subscribers (`on('http:request', handler)`) also receive `workflowId`, `runId`, and `activityId` auto-attached by `emitEvent`. The existing `cost:http:request` event is unchanged — it continues to fire only when a consumer attaches a cost via `addRequestCost()`. Additive — no existing consumer breaks.

**`@outputai/core`** — Stream trace JSON when writing local files and uploading to S3, avoiding Node.js string length limits for large trace outputs.

**`@outputai/llm`** — Increase built-in LLM provider fetch timeouts for long-running responses.

Default AI SDK `maxRetries` to 0 so workflow retries are handled by Temporal.

**`@outputai/core`** — Added `runId` to the workflow context and the workflow-lifecycle hook payloads. `context.info.runId` exposes the Temporal run id for the current execution attempt; `onWorkflowStart`, `onWorkflowEnd`, and `onWorkflowError` payloads now include `runId` alongside `id` (workflow id). `executionContext` also carries `runId`, so any consumer subscribed via `on(...)` to an `emitEvent`-emitted event (e.g., `cost:llm:request`) receives `runId` automatically. Additive — existing consumers ignoring the field continue to work.

</Update>

<Update label="v0.4.0" description="2026-05-12 · minor release">

**`@outputai/cli`** — Fixed `output credentials edit` modifying the encrypted credentials file on disk even when the user made no changes in their editor. Because AES-GCM uses a fresh nonce per encryption, the unconditional re-write produced new ciphertext bytes and left the file dirty in git on every invocation. The command now skips the write when the post-editor plaintext is identical to the original.

**`@outputai/llm`** — Bump `entities` dependency from v6 to v8. The API surface used (`encodeXML` / `decodeXML`) is unchanged, and v8's ESM-only / Node ≥ 20.19 requirements are already satisfied by this package.

**`@outputai/cli`** — Fixed `output dev` hanging until the health timeout when `docker compose up` exited before creating containers. The CLI now drains and captures recent Compose output, reports early Compose exits immediately, polls status with the same project directory used to start the stack, and only treats running containers as healthy.

**`@outputai/core`** — - Fix TypeScript declaration emit for exported workflows that use Zod schemas.
- Allow TypeScript to generate `.d.ts` files for these workflows without non-portable Zod references.
- Treat Zod as a peer dependency and avoid leaking schema-specific workflow context types through the invocation config.

**`@outputai/cli`** — - Bumped scaffold prompt template default from `claude-haiku-4-5` to `claude-sonnet-4-6` and added a dated `current as of` comment pointing at the new `output-dev-model-selection` skill (workflow scaffold, blog_evaluator example, workflow README example).
- No CLI behavior change beyond the new default model in generated `.prompt` files.

**`@outputai/core`** — Fixed workflows having the status 'failed' when cancelled via the API/UI. Now they are correctly marked as 'cancelled'.

**`@outputai/cli`** — Fix scenario loading in `output dev` for workflows whose name differs from their local folder path. For example, a workflow named `writing_editor` stored in `src/workflows/writing/editor` now shows and runs its scenarios correctly.

**`@outputai/core`** — Add support for discovering and running workflows from installed npm packages.

Rename the Output.ai settings property in `package.json` from `output` to `outputai`.

</Update>

<Update label="v0.3.2" description="2026-05-05 · patch release">

**`@outputai/cli`** — Rebuild `output dev` as a full-featured INK TUI. Tabbed UI for Workflows, Recent Runs, Services, and Help with arrow-key navigation, an in-TUI scenario picker and JSON editor for running workflows, an expanded JSON modal for input/output, and a live `docker compose logs` tail with restart hotkeys.

</Update>

<Update label="v0.3.1" description="2026-05-05 · patch release">

**`@outputai/llm`** — Prevent template variables from injecting message blocks into rendered prompts. Variable content containing tag-shaped substrings (e.g. `</user>` or `<system>...</system>`, common when evaluating webpages or chat transcripts) was being tokenized by `parsePrompt` as real message blocks, producing duplicate `system` messages that providers like Anthropic reject. `loadPrompt` now arms every `{{ ... }}` interpolation with an internal escape filter so variable output stays inert at parse time.

</Update>

<Update label="v0.3.0" description="2026-05-05 · minor release">

**`@outputai/cli`, `output-api`** — Use `catalog` as the public name for the routing/filtering target across the CLI and HTTP API:

- `output workflow runs list` gains `--catalog`/`-c` (with `OUTPUT_CATALOG_ID` env fallback) and `GET /workflow/runs` accepts `?catalog=...`, scoping listed runs to a single worker's catalog/session.
- `output workflow run` and `output workflow start` rename the routing flag to `--catalog`/`-c`. The previous `--task-queue` and `-q` are kept as deprecated aliases (oclif emits a warning when used).
- `POST /workflow/run` and `POST /workflow/start` accept a `catalog` body field; the previous `taskQueue` field is still accepted as a deprecated alias and the API logs a deprecation warning when it is used.

Internally the value is still a Temporal task queue — only the user-facing name changes.

**`@outputai/core`** — Optimizing local trace to use less memory and avoid "RangeError: Invalid string length"

**`@outputai/cli`, `@outputai/llm`, `output-api`, `@outputai/core`, `@outputai/credentials`, `@outputai/evals`, `@outputai/output`, `@outputai/http`** — ## Dependencies updates

### Vulnerabilities fixed:
- uuid: Missing buffer bounds check in v3/v5/v6 when buf: (bump to `>=14.0.0`)
- postcss: PostCSS has XSS via Unescaped </style> in its CSS Stringify Output (bump to `>=8.5.10`)
- @anthropic-ai/sdk: Claude SDK for TypeScript has Insecure Default File Permissions in Local Filesystem Memory Tool (bump to `>=0.91.1`)

### Root package.json updates
- @changesets/cli: `2.30.0` -> `2.31.0`
- eslint: `10.2.0` -> `10.2.1`
- mintlify: `4.2.520` -> `4.2.536`
- typescript-eslint: `8.58.2` -> `8.59.1`
- vitest: `4.1.4` -> `4.1.5`

### pnpm-workspace.yaml (catalog) updates
- @aws-sdk/client-s3: `3.1031.0` -> `3.1038.0`

### sdk/cli/package.json updates
- @inquirer/prompts: `8.4.1` -> `8.4.2`
- @oclif/core: `4.10.5` -> `4.10.6`
- @oclif/plugin-help: `6.2.44` -> `6.2.45`
- undici: `8.0.2` -> `catalog:`
- orval: `8.8.0` -> `8.9.0`

### sdk/llm/package.json updates
- @ai-sdk/amazon-bedrock: `4.0.95` -> `4.0.96`
- liquidjs: `10.25.5` -> `10.25.7`

**`@outputai/http`, `@outputai/llm`** — - HTTP: Added a new event `cost:http:request` that is dispatched after calling `addRequestCost()`: the event's payload is `requestId`, `cost` and `url`;
- LLM: Renamed `llm:call_cost` event to `cost:llm:request`;
- LLM: Updated the format of the `.cost` property on `.generateText()` response and on the cost hook payload: `components` is now an array;
- LLM: Updated `.streamText()` `onFinish()` callback to have the `.cost` property: contains the calculated cost for the stream.

**`@outputai/llm`** — Update perplexity-ai/ai-sdk to v0.1.3

**`@outputai/credentials`, `@outputai/cli`** — Improve encrypted credentials loading: add clearer errors when keys are missing or invalid and ensure the CLI exits gracefully instead of printing stack traces.

**`@outputai/cli`** — - Offer to initialize a git repository when running `output init`. Adds a `--skip-git` flag to opt out in non-interactive / scripted use.
- Fix `--yes` / `--non-interactive` being rejected as "Nonexistent flag" by oclif's per-command parser when passed to any command.

**`@outputai/credentials`, `@outputai/core`** — - Added new hook functions `onWorkflowStart`, `onWorkflowEnd`, `onWorkflowError`:
  - `onWorkflowStart()`: Triggers when a workflow starts, receives the run id and workflow name;
  - `onWorkflowEnd()`: Triggers when a workflow ends (no error), receives the run id, workflow name and duration (elapsed time);
  - `onWorkflowError()`: Triggers when a workflow throws an error, receives the run id, workflow name, duration and error thrown;
  - Important: These three hooks are not triggered by the internal "$catalog" workflow lifecycle;
- Renamed `onBeforeStart()` hook to `onBeforeWorkerStart()`;
- Fixed possible issue where a broken handler attached to `onBeforeStart()` could interrupt the worker process;
- Added `activityId` and `workflowId` to `onError()` hook handler payload when source is `'activity'`;
- Added `workflowId` to `onError()` hook handler payload when source is `'workflow'`.

**`output-api`, `@outputai/core`** — Updating Temporal libraries from `v1.15.0` to `v1.17.0`:
- @temporalio/activity;
- @temporalio/client;
- @temporalio/common;
- @temporalio/proto (dev dependency for tests);
- @temporalio/worker;
- @temporalio/workflow

**`@outputai/cli`** — Add non-interactive mode with `--yes`/`--non-interactive` flags and TTY auto-detection for sandbox environments

**`@outputai/cli`, `output-api`** — Fix the workflow runs pane in the CLI so the detail view reflects the highlighted run instead of always showing the latest run. `GET /workflow/runs` now includes `runId` per row, and the CLI fetches results via the pinned `GET /workflow/{id}/runs/{rid}/result` endpoint.

**`@outputai/cli`** — Enable multiple instance of Output to run locally simultaneously in Docker by enabling dynamic port mapping

**`@outputai/core`, `@outputai/cli`** — Add HTTP and gRPC proxy support for sandbox environments via HTTPS_PROXY and TEMPORAL_GRPC_PROXY env vars

**`@outputai/cli`** — Shadow the worker container's `/app/node_modules` (root pnpm store) with a named Docker volume and run an explicit `output:worker:install` before `output:worker:watch`, so Linux-native packages installed in the container no longer leak into the host's `node_modules/`.

**`@outputai/cli`** — Fix issue where values in .env files were silently ignored

**`@outputai/core`, `@outputai/http`, `@outputai/llm`** — Adding trace event attributes and adding method `addRequestCost` to attach cost related info to an HTTP call made with the http module

**`@outputai/llm`** — re-export ai.jsonSchema for downstream use

**`@outputai/http`** — ## Custom fetch
Added a `fetch` function export to the "http" module:
- Fully compliant with the fetch [spec](https://fetch.spec.whatwg.org/);
- Integrates with Traces, tracking requests, responses, errors and failures;

## Updated http client
Refactored `httpClient` exported by "http" to use the custom _fetch_ internally instead of _ky_ hooks.

**`@outputai/cli`, `output-api`** — Add new workflow history endpoint

</Update>

<Update label="v0.2.0" description="2026-04-22 · minor release">

**`@outputai/cli`** — Fix `workflow generate` success message to show actual workflow ID and scenario name

**`@outputai/cli`** — Add `credentials set` command for programmatic credential updates by dot-notation path. Prompts for confirmation when the write would change a value's shape (primitive → object or object → primitive); pass `--yes` to skip in non-interactive environments.

**`@outputai/cli`** — Add interactive workflow run panel to `output dev` with live status polling, keyboard navigation, and Temporal UI integration

**`@outputai/cli`** — Update plugin command invocations to match renamed `output-plan-workflow`, `output-build-workflow`, and `output-debug-workflow` skills.

**`@outputai/cli`** — Add Docker Compose version check to prevent silent hangs on versions older than v2.24.0

**`output-api`** — - Fixed `/run` endpoint response to have the same format as `/result`;
- Fixed `/status` endpoints `status` field format;

**`@outputai/cli`** — Add `output migrate` command for upgrading projects between versions of the Output framework.

The command reads the project's current `@outputai/*` version, fetches the matching migration guide from `docs.output.ai/migrations`, applies the steps, bumps dependencies, and runs the project's type checker. If the user is jumping multiple boundaries, it chains the guides covering the full range.

Under the hood the CLI invokes `/output-migrate` — a Claude Code skill shipped via the `outputai` plugin marketplace. The skill carries the migration logic but no version-specific content; it fetches every guide at runtime so the docs remain the source of truth.

**`@outputai/evals`** — Switch dataset files to multi-case format where each top-level YAML key is the case name. Allows grouping multiple test cases into a single file instead of one file per case.

The old single-case format (with a top-level `name:` field) is no longer supported — existing files must be migrated to the new format. Treated as minor rather than major because adoption is still early and the migration is mechanical.

**`output-api`** — Add pinned-run routes and deprecate mutation shortcuts.

New routes: `GET /workflow/:id/runs/:rid/{status,result,trace-log}` and `PATCH/POST /workflow/:id/runs/:rid/{stop,terminate,reset}` allow targeting a specific Temporal run by ID.

The following routes are deprecated (sunset 2026-07-16) and should be migrated to their pinned equivalents:
- `PATCH /workflow/:id/stop` → `PATCH /workflow/:id/runs/:rid/stop`
- `POST /workflow/:id/terminate` → `POST /workflow/:id/runs/:rid/terminate`
- `POST /workflow/:id/reset` → `POST /workflow/:id/runs/:rid/reset`

Deprecated routes emit `Deprecation`, `Sunset`, and `Link` response headers on every call.

**Additive response-shape changes (backwards-compatible):**
- `POST /workflow/run` now includes `runId` in the response
- `POST /workflow/start` now includes `runId` in the response
- `PATCH /workflow/:id/stop` now returns `{ workflowId, runId }` (previously no response body)
- `POST /workflow/:id/terminate` response now includes `runId`
- All status, result, and trace-log responses now include `runId`

**`@outputai/cli`** — Upgrading Docker Node image version from 24.13.0-slim to 24.15.0-slim

**`@outputai/cli`** — Update the Claude plugin for Output to improve workflow code generation"

**`@outputai/credentials`, `@outputai/core`, `@outputai/cli`, `@outputai/llm`, `output-api`, `@outputai/evals`, `@outputai/output`, `@outputai/http`** — Updating dependencies:
- @oclif/plugin-help
- dotenv
- json-schema-library
- react
- redis
- undici
- @noble/ciphers
- @ai-sdk/amazon-bedrock
- @ai-sdk/anthropic
- @ai-sdk/azure
- @ai-sdk/google-vertex
- @ai-sdk/openai
- @ai-sdk/perplexity
- ai
- liquidjs

Adding version overrides to fix vulnerabilities:
- vite@>=7.1.0 <=7.3.1: `>=7.3.2`
- hono@<4.12.12: `>=4.12.12`
- hono@>=4.0.0 <=4.12.11: `>=4.12.12`
- @hono/node-server@<1.19.13: `>=1.19.13`
- follow-redirects@<=1.15.11: `>=1.16.0`
- hono@<4.12.14: `>=4.12.14`
- axios@>=1.0.0 <1.15.0: `>=1.15.0`
- protobufjs@<7.5.5: `>=7.5.5`

**`@outputai/cli`** — Auto-forward OUTPUT_CATALOG_ID as default task queue for workflow run/start commands

**`@outputai/core`, `@outputai/cli`, `@outputai/llm`** — Bumping dependency versions

</Update>

<Update label="v0.1.12" description="2026-04-07 · patch release">

**`@outputai/llm`, `@outputai/core`** — Add `agent()` and `skill()` abstractions to `@outputai/llm` for composing reusable LLM agents with structured output and a lazy-loaded skills system. Add `findContentDir()` to `@outputai/core` and fix skill path resolution to be relative to the prompt file rather than the calling module. Add `output-copy-assets` bin to `@outputai/core` to centralise worker asset copying.

**`@outputai/core`, `output-api`** — Add support for workflow alias names.

**`@outputai/cli`** — Add `output fix` command that realigns npm scripts in a host project's `package.json` with the canonical scripts from the CLI. Added `output:worker` and `output:worker:watch` commands to the scaffold. Pinned the dependency versions installed via the CLI-generated `package.json`.

**`@outputai/cli`** — Pin `output` to a specific version in the scaffold `package.json` instead of a version range.

**`@outputai/cli`** — Update CLI cost configuration for calculating cost of Claude Sonnet 4.6. Improve coding-assistant guidance for schema generation.

</Update>

<Update label="v0.1.11" description="2026-04-02 · patch release">

**`@outputai/cli`** — Fix worker health checks and add yarn/pnpm support in the dev container. Dev container worker now supports yarn and pnpm projects via corepack. Health check no longer reports success when containers exit or are unhealthy. Worker health-check detection time dropped from ~36s to ~9s. `start_period` extended from 30s to 60s to reduce false positives on cold start.

**`@outputai/cli`** — Fix the `plan` and `generate` CLI commands. Suppressed Claude file writes and next-step suggestions during plan generation (the CLI owns those responsibilities). Validates plan-file existence before creating a workflow skeleton in `generate`. Rolls back created skeleton files if the workflow build step fails.

**`@outputai/cli`** — Replace log-update / ANSI output in `output dev` with an Ink-based terminal UI, fixing a layout bug where text overlapped after a Docker service recovered from unhealthy.

**`@outputai/cli`** — Ensure credential references are resolved when running CLI commands.

</Update>

<Update label="v0.1.10" description="2026-03-27 · patch release">

**All packages** — Update dependencies to latest and override versions to fix known vulnerabilities.

</Update>

<Update label="v0.1.9" description="2026-03-27 · patch release">

**`@outputai/cli`** — Fix best practices in the `output init` example. Move `blogContentSchema` from `steps.ts` to `types.ts`. Update the README template to use `npx output credentials` flow instead of `.env`.

</Update>

<Update label="v0.1.8" description="2026-03-24 · patch release">

**`@outputai/cli`** — Use encrypted credentials in the `output init` scaffold by default. API keys are now stored in `config/credentials.yml.enc` instead of `.env`, and `<SECRET>` markers are renamed to `<FILL_ME_OUT>`.

**`@outputai/llm`** — Update `@exalabs/ai-sdk` from 1.0.5 to 2.0.1.

</Update>

<Update label="v0.1.7" description="2026-03-24 · patch release">

**All packages** — Dependency bumps (minor and patch).

</Update>

<Update label="v0.1.6" description="2026-03-23 · patch release">

**`@outputai/cli`** — Fix null crash in `workflow cost` when the pricing config is empty or missing.

</Update>

<Update label="v0.1.5" description="2026-03-22 · patch release">

**`@outputai/cli`** — Fix prod publish to include the build step before publishing to npm. Previously, packages were published without compiling TypeScript, resulting in a missing `dist/` directory. Add `@next` dist-tag that auto-publishes from every merge to `main`, enabling `npx @outputai/cli@next` for tracking the latest changes.

</Update>

<Update label="v0.1.4" description="2026-03-20 · patch release">

**All packages** — Patch vulnerable dependencies.

</Update>

<Update label="v0.1.3" description="2026-03-19 · patch release">

**`@outputai/core`, `@outputai/credentials`, `@outputai/cli`** — Add `credential:` env var convention for automatic secret resolution at worker startup.

- `@outputai/core`: add `WORKER_BEFORE_START` lifecycle event and `onBeforeStart` hook.
- `@outputai/credentials`: add `resolveCredentialRefs()` that resolves `credential:<dot.path>` env vars from encrypted credentials, auto-registered via `onBeforeStart` on import.
- `@outputai/cli`: scaffold build script now copies `*.key` files to `dist/` alongside `*.yml.enc`.

</Update>

<Update label="v0.1.2" description="2026-03-19 · patch release">

**`@outputai/cli`** — Update `@anthropic-ai/claude-agent-sdk` from 0.1.71 to 0.2.77.

</Update>

<Update label="v0.1.1" description="2026-03-19 · patch release">

**All packages** — Dependency updates (minor and patch).

</Update>
