chore(release): v0.11.0 - #319
Conversation
707791f to
b4679e7
Compare
b4679e7 to
0b60b0b
Compare
0b60b0b to
6cb1197
Compare
6cb1197 to
8494f1c
Compare
8494f1c to
fbb0c85
Compare
fbb0c85 to
ae46920
Compare
ae46920 to
9972a34
Compare
9972a34 to
ff73df1
Compare
ff73df1 to
17c83d0
Compare
17c83d0 to
d473b98
Compare
d473b98 to
5bc6bd4
Compare
5bc6bd4 to
2d42fd6
Compare
2d42fd6 to
462f21e
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
bb21a8e to
0b4335b
Compare
PR reviewVerdict✅ PASS Findings
Categories
|
0b4335b to
d7c8e58
Compare
|
|
||
| - Changed Ky and Undici from bundled dependencies to peer dependencies. | ||
|
|
||
| **`output-api`** — Upgraded Temporal (`temporalio/*`) libs from v1.17.0 to v.1.20.3 |
There was a problem hiding this comment.
Nice-to-have / Documentation — v.1.20.3 typo (stray dot) carried in from the changeset. Same string in api/CHANGELOG.md and docs/guides/data/releases.json; the @outputai/core entry two lines down spells it v1.20.3.
PR reviewVerdict✅ PASS Findings
Categories
|
d7c8e58 to
30afd5d
Compare
|
|
||
| <Update label="v0.11.0" description="2026-08-05 · minor release"> | ||
|
|
||
| See the [v0.10.0 → v0.11.0 migration guide](/migrations/v0.10.0-to-v0.11.0). |
There was a problem hiding this comment.
Nice-to-have / Compatibility — the linked guide covers most of this release, but not the new worker fail-fast validations or the output:worker install change.
| worker: | ||
| condition: service_healthy | ||
| image: outputai/api:${OUTPUT_API_VERSION:-0.10.0} | ||
| image: outputai/api:${OUTPUT_API_VERSION:-0.11.0} |
There was a problem hiding this comment.
Nice-to-have / Documentation — docs/guides/packages/cli.mdx:644 still documents this default as 1.9.
PR reviewVerdict✅ PASS Findings
Both are documented in the CHANGELOGs and generated changelog, so the migration bar is substantially met; adding two short subsections would close the gap. Note the guide itself is not part of this diff. Categories
|
30afd5d to
44179a4
Compare
|
|
||
| ## Workflow Code Validation | ||
|
|
||
| - Added fail-fast validation for default exports and `export *` declarations in steps/evaluators files. Steps and evaluators already needed to be exposed through named exports for workflow rewriting. The worker now reports these unsupported forms directly during startup. |
There was a problem hiding this comment.
Must-fix (Compatibility): these new fail-fast worker-startup validations have no section or checklist item in docs/guides/migrations/v0.10.0-to-v0.11.0.mdx — the changelog is the only place in the docs that mentions them.
PR reviewVerdict⛔ FAIL Findings
This release ships (changeset
A throw in that loader is a webpack build error, which fails worker startup. Concrete case: a folder-based layout (explicitly supported — see the
The rest of the migration bar is met well (indexed at Suggested fix: add a "Steps and evaluators file shape" subsection under "Workflow runtime changes" listing the four rejected forms with their valid replacements (the changeset text already has usable examples), and add matching checklist items. Categories
|
44179a4 to
60a6bed
Compare
|
|
||
| **`@outputai/cli`** — Restore the terminal on abnormal `output dev` exit. Uncaught exceptions and unhandled rejections now leave the alternate-screen buffer and unmount the TUI before exiting, so scrollback and the error stack stay readable. | ||
|
|
||
| **`@outputai/core`** — ## Workflow Activity Invocation |
There was a problem hiding this comment.
Nice-to-have (Documentation): the changeset summary starts with ## Workflow Activity Invocation, and renderChangelogBody concatenates it onto the **pkg** — line, so the ## renders as literal text. The later headings in the same summary (## Child Workflow Activity Options, ## Shared Activity Namespaces, …) do start at line-begin and become real page-level h2s inside the <Update>, leaking into Mintlify's TOC. Same shape at lines 96, 100, 131, 140, 143, 168.
Root cause is docs/guides/scripts/lib/renderer.mjs:29 (untouched here) — pre-existing, but v0.11.0 is the largest instance so far.
PR reviewVerdict✅ PASS Findings
Categories
|
60a6bed to
3239e19
Compare
|
|
||
| **`@outputai/cli`** — Restore the terminal on abnormal `output dev` exit. Uncaught exceptions and unhandled rejections now leave the alternate-screen buffer and unmount the TUI before exiting, so scrollback and the error stack stay readable. | ||
|
|
||
| **`@outputai/core`** — ## Workflow Activity Invocation |
There was a problem hiding this comment.
Nice-to-have (Documentation): the generator inlines multi-line changeset summaries after **pkg** — , so the first ## … lands mid-line and renders as literal ##, while the following ## Child Workflow Activity Options / ## Shared Activity Namespaces / ## Workflow Code Validation start a line and become real <h2>s inside the <Update> block — polluting the page TOC. Same for ## HTTP clients (L100) and ## Global proxy (L131).
Pre-existing behavior of docs/guides/scripts/lib/renderer.mjs (also at L252/L504/L882/L956 from earlier releases), not introduced here — flagging because this release adds three more instances. Fix would be in renderChangeBlock (demote/strip headings, or put the summary on its own line).
PR reviewVerdict✅ PASS Findings
Categories
|
3239e19 to
985b63f
Compare
PR reviewVerdict✅ PASS Findings
Categories
|
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@outputai/cli@0.11.0
Minor Changes
46d9d66: - Added support for legacy and V2 workflow results from the API, including structured errors;
64a9df7: Add workflow monitor command, update workflow history API to be resumable
c717e35: Renamed the workflow eval CLI command to
output workflow test(wasoutput workflow test_eval). The shorttestname is now the only command id; thetest_evalname is removed.2cbd0a2: Add TUI attaching and re-attaching and
dev downteardown commandoutput devnow detects an existing stack withdocker compose psinstead of anunconditional host-port probe, so a re-run attaches to a running project stack
rather than aborting on a collision with its own containers. Attached sessions
leave the stack up on quit;
output dev downstops it.A stack whose containers are all stopped counts as a fresh start, not an attach —
output devrestarts it in the foreground and still tears it down on quit.output dev -dgained the pre-flight port probe the foreground path has. Thismatters on Docker Desktop, where a non-container process holding a published port
does not fail
compose up -d: the container starts and the port keeps answeringthe other process, with no error from Docker.
Note:
-dnow pipes Docker's output rather than inheriting the terminal, soDocker drops its redrawing progress bars for plain scrolling lines.
Patch Changes
process.loadEnvFileinstead of thedotenvpackage.output devexit. Uncaught exceptions and unhandled rejections now leave the alternate-screen buffer and unmount the TUI before exiting, so scrollback and the error stack stay readable.--jsonoutput on theworkflow startandworkflow runcommands.workflow startdid not support--jsonat all and errored on the flag; it now emits the workflow result as JSON.workflow run --jsoncorrupted its JSON output when given a scenario argument, because the "Using scenario:" notice was written to stdout. That notice now goes to stderr, and is suppressed entirely under--jsonso that on success both commands write exactly one JSON object to stdout and nothing else.output dev): nodemon no longer runsnpm installon every reload, andpackage.jsonis no longer watched. After dependency changes, runnpm install, bring the stack down (output dev downif it is still running), and startoutput devagain.npm run output:workeralso no longer installs first — runnpm run output:worker:install(or rely onoutput dev, which still installs on worker start) before build/start.npx output fixrewritesoutput:workerin existing projects when you apply it.output devmemory leak in TUI where workflow run details grew unbounded@outputai/core@0.11.0
Minor Changes
46d9d66: - Removed workflow and activity wrappers, so both return their original output;
memo, in a new format:{ "trace": { "local": "...", "remote": "..." } }aggregationsfrom activity lifecycle and error hook payloads.TransparentFatalError, a non-retryable wrapper that surfaces its cause as the original error in logs, traces, hooks and workflow results.ContinueAsNew, throw;FatalError/ValidationError, create anApplicationFailureand serialize the original error in.details[0].error;TemporalFailure, throw;CompleteAsyncError, throw;TemporalFailure, throw;ApplicationFailure, serialize the original error in.details[0].error, and determine whether it is non-retryable from the error class name andactivityInfo.retryPolicy.nonRetryableErrorTypes;name,message,cause, and additional diagnostic properties;Errorinstances;ValidationErrornow extends fromFatalError.FatalErroris now always handled as non retryable, user configurableactivityOptions.retry.nonRetryableErrorTypeswill not overwrite it anymore.OUTPUT_TEMPORAL_LOG_LEVELto configure verbosity;ContinueAsNew, log a successful workflow end instead of an error;stackor Temporal's internal.failure;FatalError/ValidationError, log the serialized original error withoutstack;TemporalFailure, log the serialized Temporal error chain withoutstackor.failure;CompleteAsyncError, do not log an error and close the trace node as an asynchronous handoff;TemporalFailure, log the serialized error withoutstack;stackbefore converting it to anApplicationFailure.eaf62a3: ## Workflow Activity Invocation
Refactored workflow activity invocation so steps, evaluators, and shared activities use the same runtime dispatcher
instead of
this-based handler dispatch.Workflow handlers no longer need to be rewritten from arrow functions into regular functions for activity dispatch,
reducing AST rewrite complexity during worker startup and making bundling more predictable.
Step and evaluator calls can now be placed in helper functions and imported helper modules used by a workflow.
Helpers no longer need to pass a workflow-bound
thisvalue through their call chain.Child Workflow Activity Options
A child workflow's definition-level
options.activityOptionsnow override activity options inherited from its parent. Invocation-levelactivityOptionsstill override both, and a step or evaluator's ownoptions.activityOptionsremain the most specific.If a parent must override a child's retry or timeout configuration, pass
activityOptionsexplicitly when invoking the child workflow.Shared Activity Namespaces
Removed the previous
"$shared"activity namespace by registering shared activities into each workflow namespace. This means workflows can call local and shared activities through the same activity resolution path.Shared activity types now use
"<workflow-name>#<activity-name>"instead of"$shared#<activity-name>".Added validation that prevents workflow-scoped activities from using the same activity name as a shared activity. If a workflow defines an activity with the same name as a shared activity, worker startup now fails validation instead of allowing ambiguous activity resolution.
Workflow Code Validation
Added fail-fast validation for default exports and
export *declarations in steps/evaluators files. Steps and evaluators already needed to be exposed through named exports for workflow rewriting. The worker now reports these unsupported forms directly during startup.Added fail-fast validation for unsupported steps/evaluators import shapes. Imports from steps/evaluators files already needed to use named imports or destructured requires for workflow rewriting.
The worker now fails fast with a validation error for unsupported import shapes like default imports, namespace imports, or non-destructured requires.
Added validation that activity calls must happen inside functions.
Calling a step or evaluator at module top level now fails validation.
af37678: ## Global proxy
setGlobalDispatcher()when proxy environment variables are detected.@outputai/httpand@outputai/llmcontinue configuring their own proxy-aware dispatchers.cbef793: -
workflow(),step(), andevaluator()now pass the value returned by the ZodinputSchemaparser to their handler. Workflows and steps also return the value produced by theiroutputSchemaparser. Zod transforms, coercions, defaults, and object-key stripping therefore affect the values handled and returned by these components instead of only validating them.d815a8e: - Added
emit()to/hooksentrypoint to emit custom events. Emitted events can be listened usingon()and will have their payload wrapped in an envelope:Events emitted outside an activity context omit
outputActivityKind,workflowDetails, andactivityInfo.on():http:request,cost:llm:request,cost:http:request;onActivityStart,onActivityEnd,onActivityError;onError()no longer receives errors from the internal$catalogworkflow.Patch Changes
hasErrorType()workflow tool. It allows detecting if an error has a given Error class in its error chain, either in.name,.typeorinstanceof. It can be used to test typed errors thrown from activities.temporalio/*) libs from v1.17.0 to v1.20.3undicifrom v.8.5.0 to v8.9.0@outputai/http@0.11.0
Minor Changes
af37678: ## HTTP clients
Replaced
fetchwithoutputFetch, the explicitly named Fetch-compatible API for traced HTTP requests.Requestinputs and request options containing either realm'sHeadersorFormDataobjects.undici.install().Requestcombined with UndiciFormData.RequestInfoandRequestInittype exports.Replaced
httpClientwithcreateKyClient, which returns a standard Ky client configured to useoutputFetch.prefixoption, state-object hook arguments, empty-response JSON parsing,searchParamsmerging, and pre-parsedHTTPError.data.HTTPError,TimeoutError,HttpClientOptionsexports.ky.Changed Ky and Undici from bundled dependencies to peer dependencies.
Patch Changes
@outputai/llm@0.11.0
Minor Changes
AI_APICallError) instead of a wrappingFatalErrorwhose message started withAI-SDK fatal error.NoObjectGeneratedErrormessages are no longer rewritten to appendFirst issue is "…" at path […]. The AI SDK error (and its Zod cause chain) is returned unchanged.Patch Changes
liquidJSfrom v10.25.7 to v10.27.2 (.promptfiles template parser).@outputai/credentials@0.11.0
Patch Changes
@outputai/evals@0.11.0
Patch Changes
@outputai/output@0.11.0
Patch Changes
output-api@0.11.0
Minor Changes
memo;{ "v": "2", "workflowId": "xxx", "runId": "xxx", "status": "failed", "input": null, "output": null, "trace": { "local": "...", "remote": "..." }, "error": { "name": "TypeError", "message": "fetch failed", "cause": { "name": "Error", "message": "getaddrinfo ENOTFOUND coolbeans.sofax", "errno": -3008, "code": "ENOTFOUND", "syscall": "getaddrinfo", "hostname": "coolbeans.sofax" } } }statustostatusCode.Patch Changes
temporalio/*) libs from v1.17.0 to v.1.20.3