103 KiB
@workflow/world-vercel
5.0.0-beta.45
Patch Changes
-
#4044
f83e836Thanks @VaguelySerious! - HonorWORKFLOW_NODE_HTTPon the queue client's transport, so a deployment whose bundled undici is unusable can still acknowledge queue messages instead of redelivering them until the invocation is killed. -
#4049
2354301Thanks @VaguelySerious! - Give the queue client its own connection pool and a total per-request deadline, so a stalled queue acknowledgement fails fast instead of holding the invocation until the platform kills it. -
#3764
fdeb642Thanks @alangenfeld! - Add the default-off stream WebSocket capability gate. -
#3763
4fdbadcThanks @alangenfeld! - Add the client-sideworkflow-stream-ws/v1stream-write frame contract. -
Updated dependencies [
61fb1f9,4547e1a]:- @workflow/errors@5.0.0-beta.21
- @workflow/world@5.0.0-beta.34
5.0.0-beta.44
Minor Changes
-
#3943
fbfb9feThanks @karthikscale3! - Validateworld.analyticsarguments up front: an invalid id, an out-of-range page limit, an oversized attribute filter, or a half-openstartTime/endTimewindow now throws aWorkflowWorldErrorwithcode: 'INVALID_ARGUMENT'andfieldset to the offending parameter, instead of failing the request. The message names the method, the parameter, and what it received. AddsANALYTICS_RUN_SCOPED_PAGE_LIMIT,ANALYTICS_PAGE_LIMITandANALYTICS_MAX_ATTRIBUTE_FILTERS.Deprecate
analytics.events.listByCorrelationId()in favour ofanalytics.events.list({ runId, correlationId }).Fix
analytics.attributes.list()timestamps being shifted by the local UTC offset.
Patch Changes
-
#3850
fe2fd8cThanks @alangenfeld! - Add a catchableStreamErrorand classify Workflow stream infrastructure failures asSTREAM_ERRORinstead ofUSER_ERROR. -
Updated dependencies [
fbfb9fe,7cc5c88,4a18b01,fe2fd8c,5c4eef0]:- @workflow/world@5.0.0-beta.33
- @workflow/errors@5.0.0-beta.20
5.0.0-beta.43
Patch Changes
-
#3742
1c44cc8Thanks @VaguelySerious! - Fail a run instead of retrying it forever when its event log references a payload the backend can no longer read -
#3844
cc6eb7eThanks @VaguelySerious! - AuthenticatedeploymentId: "latest"with the deployment's own OIDC identity instead of an ambientVERCEL_TOKEN, and scope the request to the configured team, fixing spurious 404s when resolving the latest deployment -
#3548
e9d5c56Thanks @NathanColosimo! - Prepare replay payloads as validated event frames arrive, reuse primitive step results across fresh VMs, and preserve replay startup overlap. -
#3878
ffc5807Thanks @pranaygp! - Stop logging on healthy workflow execution: the breadcrumbs that only described the runtime working correctly now print underDEBUG=workflow:*. Warnings and errors are unchanged. -
#3546
aaeb8e4Thanks @NathanColosimo! - Classify malformed replay responses as typed world failures and resume incomplete streams from their last validated event. -
Updated dependencies [
855e479,2668e33,e9d5c56,ffc5807]:- @workflow/world@5.0.0-beta.32
- @workflow/utils@5.0.0-beta.10
- @workflow/errors@5.0.0-beta.19
5.0.0-beta.42
Patch Changes
- Updated dependencies [
d9e0777]:- @workflow/world@5.0.0-beta.31
- @workflow/errors@5.0.0-beta.18
5.0.0-beta.41
Patch Changes
- Updated dependencies [
d62b444]:- @workflow/world@5.0.0-beta.30
- @workflow/errors@5.0.0-beta.18
5.0.0-beta.40
Minor Changes
-
#3570
9454d51Thanks @pranaygp! - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval. -
#3634
7b79ba3Thanks @pranaygp! - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs. -
#3702
dc68611Thanks @shalabhc! - Default the events transport to WebSockets.WORKFLOW_EVENTS_TRANSPORT=httpopts back out; any other value, including unset, now takes the socket.
Patch Changes
-
#3599
d012bf0Thanks @karthikscale3! - Preserve upstream HTTP status codes when fetching Workflow run encryption keys. -
#3728
f771585Thanks @pranaygp! - Hold process-wide state (the WebSocket transport registry, HTTP connection pools, ULID factories, caches, log-once latches) onglobalThisinstead of at module scope. This de-duplicates state across bundled packages. Fixes WebSocket transport, which was registered in one module state but looked up in another. -
#3702
dc68611Thanks @shalabhc! - AddWORKFLOW_INTERNAL_EVENTS_TRANSPORT_STRICT, an internal flag that fails astep_completedwrite which falls back to HTTP while the WebSocket gate is on, so CI can tell a working socket from a silently demoted one. -
Updated dependencies [
f771585,f771585,9454d51,7b79ba3,f771585,bf9de1c]:- @workflow/utils@5.0.0-beta.9
- @workflow/world@5.0.0-beta.29
- @workflow/errors@5.0.0-beta.18
5.0.0-beta.39
Minor Changes
- #3461
04e060aThanks @VaguelySerious! - AddWORKFLOW_NODE_HTTPto run the Vercel and Local World HTTP layers on Node's built-innode:httpandnode:httpsmodules instead of their usual HTTP client library.
Patch Changes
-
#3025
b0adb50Thanks @pranaygp! - Addworld.events.createBatchWorld API method, which allows writing ordered events in one durable write, returning per-event outcomes. Optional. On by default if implemented by the World. Disable withWORKFLOW_BATCH_TRANSITIONS=0. -
#3568
37e1d9eThanks @pranaygp! - Pre-claim inline steps inside the suspension batch, so a fan-out's inline step bodies start off the batch commit with no per-step claim request -
#3586
52526e1Thanks @NathanColosimo! - Avoid repeatedly copying partial event-frame bodies as network chunks arrive. -
#3493
0b2797bThanks @VaguelySerious! - Update@vercel/queueto0.5.0 -
Updated dependencies [
b0adb50,37e1d9e,1321570,04e060a]:- @workflow/world@5.0.0-beta.28
- @workflow/errors@5.0.0-beta.17
5.0.0-beta.38
Minor Changes
-
#3390
600b096Thanks @alangenfeld! - Add a bounded batch analytics event lookup for enriching canonical event pages. -
#3365
7683130Thanks @TooTallNate! - Resilient step dispatch: newly created steps are published to the queue in parallel with theirstep_createdevent write, with the serialized input carried on the message (stepInput) so the consumer re-ensures the event if the direct write failed transiently — mirroring resilient start (runInput) and resilient hook resume (hookInput). Worlds that enforce the precondition guard keep the sequential create-then-publish dispatch (only sequencing gives the message a happens-after edge over the create's guard verdict); step-dispatch idempotency keys are now step-identity-scoped. Disable viaWORKFLOW_RESILIENT_STEP_DISPATCH=0.
Patch Changes
-
#3519
dc85865Thanks @VaguelySerious! - Remove thepreconditionGuardWorld capability. A stale replay-context write no longer needs to be rejected: a reader holds a prefix of the log, replay is deterministic on a prefix, and the writer's next write reports the events it was pushed past. -
#3536
63cc09eThanks @shalabhc! - Add the Workflow client version, step-to-step overhead, and active latency optimizations to terminal event-write client spans for service and version latency analysis. -
#3542
de2a86cThanks @VaguelySerious! - Breaking: New runs are created at spec version 6, and a World that declares an older spec version is now rejected before the first run rather than failing partway through one. -
#3519
dc85865Thanks @VaguelySerious! - Slot-numbered event ids are a requirement of the World contract, not a capability. TheslotEventIdsflag is gone, and the conformance suite now fails a World whose event ids are not positions. -
#3479
b589460Thanks @VaguelySerious! - Replay-context event writes now always report the log position they replayed from, and theWORKFLOW_PRECONDITION_GUARDflag is removed. -
#3410
c1a5c74Thanks @alangenfeld! - Surface typed terminal errors when stream retention expires. -
#3504
8d8b7b3Thanks @TooTallNate! - Retry 429 (ThrottleError) event writes in-process, honoring the server'sRetry-After, bounded by a 30s cumulative wait budget per write. Previously a throttled event write escaped to the queue handler, whose retry directive can be delayed up to ~5 minutes by queue redelivery scheduling. -
#3452
01991edThanks @shalabhc! - Restore the per-event client span on the WebSocket events transport (WORKFLOW_EVENTS_TRANSPORT=ws), and add aworkflow.events.ws.connectspan for the handshake. Event write spans now carryworkflow.events.transportandworkflow.event.typeon both transports. -
Updated dependencies [
600b096,dc85865,efbc408,a0ccfe0,de2a86c,dc85865,7683130,dc85865,b589460,c1a5c74]:- @workflow/world@5.0.0-beta.27
- @workflow/errors@5.0.0-beta.17
5.0.0-beta.37
Minor Changes
-
#3286
4bb86d3Thanks @NathanColosimo! - Support Hook minimum retention on Vercel. -
#3084
264ddffThanks @shalabhc! - Add an opt-in WebSocket transport for event writes during step execution, enabled withWORKFLOW_EVENTS_TRANSPORT=ws. Defaults to HTTP; no behavior change unless explicitly enabled.
Patch Changes
-
#3385
74dbf81Thanks @NathanColosimo! - Retry replay timeouts through normal queue redelivery instead of exiting the process, and keep Postgres jobs retryable through Core's terminal delivery limit. -
#3382
a8db185Thanks @VaguelySerious! - Fold new events returned byevents.createinto the replay log so a completed wait no longer needs a follow-upevents.listround trip -
#3370
bf4dda6Thanks @VaguelySerious! - Recover from HTTP/2 connections that stop delivering event requests, and makeWORKFLOW_H2_MULTIPLEX=0disable HTTP/2 on the events path entirely -
#3389
6786db9Thanks @VaguelySerious! - Breaking: SpecVersion 6: Event IDs are now a dense per-run slot number, allocated by the world at publish time so a rejected write leaves no gap in the event log. A replay tells the world how many events it had read and gets back the ones it did not see, so an event that arrives from outside the replay and lands ahead of an event the replay wrote no longer fails the run withCORRUPTED_EVENT_LOG: it is held for whichever part of the workflow awaits it. A gap in the numbering fails the run instead of being replayed over. -
#3205
22349e9Thanks @NathanColosimo! - Load replay-event suffixes through one World request. -
#3191
665110bThanks @NathanColosimo! - Load the current replay log from non-Turborun_startedresponses while preserving Turbo's preload opt-out. -
#3124
65139acThanks @NathanColosimo! - Infer required run and step entities, including their start times, fromevents.createrequest types. -
Updated dependencies [
74dbf81,a8db185,439a495,6786db9,22349e9,65139ac]:- @workflow/world@5.0.0-beta.26
- @workflow/errors@5.0.0-beta.16
5.0.0-beta.36
Major Changes
- #3280
de1905fThanks @VaguelySerious! - Breaking:events.listByCorrelationIdandanalytics.events.listByCorrelationIdnow require arunId. A correlation id is unique within its run, not across runs, so an unscoped lookup answered with one event per run that numbered a step or wait the same.
Minor Changes
- #3347
8d47928Thanks @karthikscale3! - Add a bulk run cancellation primitive.@workflow/worlddefines theBulkCancelWorkflowRuns*contract and an optionalruns.cancelMany;@workflow/world-vercelimplements it via a singlePOST /v4/runs/cancel;@workflow/coreadds acancelRunshelper that usescancelManywhen available and falls back to bounded-concurrency single-run cancellation.
Patch Changes
-
#3334
2eddf74Thanks @VaguelySerious! - Send the run id with correlation-id event lookups so the backend can scope them to a single run. -
#2960
79e4c04Thanks @alangenfeld! - Re-route a queue delivery that reaches a deployment other than the one its run is pinned to, retry transient publishing failures through normal queue redelivery, and fail the run with the newDEPLOYMENT_MISMATCHerror code once the recovery budget is spent. -
#3345
9c1b3c8Thanks @karthikscale3! - Initialize lazy hook resume replay from thehook_receivedwrite via the new advisorypreloadEventsparam, skippingrun_startedand the initialevents.list; safe fallback otherwise. -
#3360
72efc90Thanks @elliotdauber! - Derive inline-execution duration limits fromWorld.getRuntimeDeadline()(implemented on Vercel World via@vercel/functions). -
Updated dependencies [
8d47928,de1905f,79e4c04,9c1b3c8,e6f1b6f,72efc90]:- @workflow/world@5.0.0-beta.25
- @workflow/errors@5.0.0-beta.16
5.0.0-beta.35
Minor Changes
-
#3186
4a9d26bThanks @alangenfeld! - Record the compute instance that ran each step attempt:CreateEventParams.computeInstanceIdis stamped onstep_startedwrites, forwarded in the world-vercel v4 frame meta alongsidevercelId, read back onAnalyticsEvent/AnalyticsStep, and surfaced as "Compute Instance ID" in the observability attribute panel. -
#3145
1471f25Thanks @VaguelySerious! - Strengthen the event-creation precondition guard: replay-context writes now also send the number of loaded events, so a snapshot that is missing an event is rejected instead of committing a divergent event log, and a rejection restarts the replay in-process (consuming the events a world may attach to the rejection) rather than re-committing the rejected payload or re-invoking over the queue.@workflow/world-localand@workflow/world-postgresdo not implement the check. -
#3230
31f92dfThanks @karthikscale3! - Lazy hook resumption: on a fast path,resumeHook()writes thehook_receivedevent and dispatches the workflow queue message concurrently instead of sequentially, cutting a round trip off resume latency. A(runId, resumeId)dedup constraint keeps the two writers converging on exactly one event; the runtime falls back to the sequential path when dedup support is unavailable or whenWORKFLOW_DISABLE_LAZY_HOOK_RESUME=1.resumeHook()resolves to aResumedHook(aHookplus an optionalresilientResume: trueflag, set only when the direct write failed transiently and the resume was recovered via the queue consumer's re-ensure) — preserving the contract introduced alongside the resilient-resume work. -
#3244
ee944d2Thanks @pranaygp! - ImplementgetEnvironment(), reporting the environment this client's writes are attributed to from the same resolution that produces thex-vercel-environmentrequest header.
Patch Changes
-
#3212
c93f6f7Thanks @VaguelySerious! - Raise HTTP/2 receive windows on the events client, slightly decreasing read latency -
#3208
4017597Thanks @alangenfeld! - Report replay-divergence counts on event writes that recover or exhaust replay retries. -
Updated dependencies [
4a9d26b,1471f25,31f92df,4017597,438eaa6,ee944d2]:- @workflow/world@5.0.0-beta.24
- @workflow/errors@5.0.0-beta.15
5.0.0-beta.34
Patch Changes
-
#3190
34975f6Thanks @VaguelySerious! - Event-log requests now multiplex over a single HTTP/2 connection instead of opening one connection per in-flight request -
#3142
a09d001Thanks @VaguelySerious! - Revert the static workflow world target injection: the world package is again resolved at runtime fromWORKFLOW_TARGET_WORLDinstead of being aliased into host bundles at build time. -
Updated dependencies []:
- @workflow/errors@5.0.0-beta.14
5.0.0-beta.33
Major Changes
-
#3112
4ada27dThanks @NathanColosimo! - Remove deprecated world-specific factory aliases in favor ofcreateWorld. -
#3061
62d570eThanks @NathanColosimo! - Remove legacy step queue topics and payloads now that queued steps use the workflow topic and combined flow handler.
Minor Changes
-
#3095
b4ba79eThanks @TooTallNate! - Persist and transport the new optionalencryptionPublicKeyfield on workflow runs, carried onrun_created(andrun_startedfor resilient start). -
#3099
a86035fThanks @TooTallNate! - The cross-deployment capability probe now returns the target run's public key, lettingstart()seal workflow arguments without a separate key-lookup request.
Patch Changes
-
#3111
8c12358Thanks @NathanColosimo! - Clarify runtime invariants and compression behavior. -
#3062
313a074Thanks @karthikscale3! - AddWORKFLOW_DISABLE_ANALYTICS_READS=1to opt the world'sanalyticsread namespace off, forcingworkflow inspectlist paths onto strongly consistent primary storage. Intended for tests and tooling that read entities immediately after writing them, where the analytics store's asynchronous ingestion can return stale pages. -
#3144
49276f2Thanks @VaguelySerious! - Explain how to fix a build targeting the Vercel World that runs outside a Vercel deployment, whereVERCEL_DEPLOYMENT_IDis missing. -
Updated dependencies [
8c12358,b4ba79e,a86035f,d24c91c,fc81f45,62d570e,62d570e]:- @workflow/world@5.0.0-beta.23
- @workflow/errors@5.0.0-beta.13
5.0.0-beta.32
Minor Changes
-
#2915
7d29babThanks @joeyhotz! - Addruns.getMany()for retrieving ordered workflow run snapshots in one storage operation. -
#2865
a5e6f11Thanks @NathanColosimo! - Addexperimental_minRetentionfor keeping a Hook token unavailable after its run ends, and require supporting Worlds to advertise thehookRetentioncapability.
Patch Changes
-
#2986
fe12b84Thanks @shalabhc! - Enforce a server-supplied per-run event limit (default 25K) -
#2951
6f032d7Thanks @karthikscale3! - Decode stable-line CBOR structured errors when reading v4 workflow events while preserving current serialized error payloads. -
#2959
457e671Thanks @alangenfeld! - Log the underlying queue handler error before retrying a failed delivery. -
#3013
9078126Thanks @NathanColosimo! - Retry transient connection timeouts so Eve can resume existing workflow runs after brief network failures. -
#3038
59c1369Thanks @karthikscale3! - Retry stream close on retriable 5xx. Close is idempotent on the server (unlike chunk appends, which keep their no-5xx retry policy), and the server may return retriable 503s expecting the writer to close again. -
#2970
bb773e9Thanks @VaguelySerious! - Add an optionalcapabilities?: WorldCapabilitiesfield to the World interface so implementations can declare backend feature support (preconditionGuard,maxConcurrency) instead of the runtime inferring it from environment variables; the Vercel World declares both. -
#2998
4ecbe7eThanks @ruiconti! - Append caller-provided user-agent tokens to the world-vercel user-agent instead of discarding them. -
Updated dependencies [
7d29bab,fe12b84,a5e6f11,eb8fdb9,bb773e9]:- @workflow/world@5.0.0-beta.22
- @workflow/errors@5.0.0-beta.12
5.0.0-beta.31
Minor Changes
-
#2266
a00d169Thanks @VaguelySerious! - Add an opt-in optimistic-concurrency guard for event creation (WORKFLOW_PRECONDITION_GUARD=1): replay-context event creations send astateUpdatedAtsnapshot timestamp, and the runtime reloads the event log and retries (then falls back to a queue re-invocation) when the backend reports a newer out-of-band event with a 412PreconditionFailedError. -
#2929
1933e29Thanks @VaguelySerious! - Report run-started-to-first-step (rsfs) and final-scheduling-replay (finalSchedulingReplay) latency telemetry on step completion events.
Patch Changes
-
#2266
a00d169Thanks @VaguelySerious! -WORKFLOW_SEQUENTIAL_REPLAYSis configured only by its own environment variable. -
Updated dependencies [
a00d169,1933e29,6b8efd5]:- @workflow/world@5.0.0-beta.21
- @workflow/errors@5.0.0-beta.11
5.0.0-beta.30
Patch Changes
- #2901
9242ddbThanks @karthikscale3! - Move client-observed stream telemetry to core:chunk_rtton the flush span,connect_mson the read span, and newworkflow.stream.closeandworkflow.stream.read.completespans. Dedupe@opentelemetry/apito one workspace instance.
5.0.0-beta.29
Minor Changes
-
#2903
f2be954Thanks @karthikscale3! - Addanalytics.attributes.list()for attribute key discovery, and anattributeskey=value filter toanalytics.runs.list(). -
#2193
a4d8de0Thanks @VaguelySerious! - Add opt-inWORKFLOW_SEQUENTIAL_REPLAYSenv var (also enabled by theWORKFLOW_SAFE_MODE=1umbrella flag when not set explicitly). When set to1, flow (orchestrator) routes are limited to one invocation per run at a time via a per-run queue topic andmaxConcurrency: 1on the flow trigger. Step routes are unaffected. -
#1981
9da2d76Thanks @TooTallNate! - ImplementWorld.createRunIdto mint region-tagged ULIDs, preferring an explicitoptions.regionfromstart(), then theVERCEL_REGIONenvironment variable, and finally defaulting toiad1so run IDs are always tagged with a concrete, routable region. The queue now routes each message to the region encoded in the payload's tagged run ID (or to an explicitopts.regionoverride), instead of the previous hard-codediad1.
Patch Changes
-
#2896
c31e30cThanks @TooTallNate! - Show world-specific run fields (e.g. region on Vercel) inworkflow inspectoutput via the new optionalWorld.describeRunhook. -
Updated dependencies [
f2be954,ac41e7d,c31e30c,9da2d76]:- @workflow/world@5.0.0-beta.20
- @workflow/errors@5.0.0-beta.10
5.0.0-beta.28
Patch Changes
- #2891
4a43e39Thanks @karthikscale3! - Emit a client-observedworkflow.stream.flushspan per stream-write batch, with abuffer_dwell_msattribute separating client-side batching cost from network/server time. Log underDEBUG=workflow:*when@opentelemetry/apifails to load in world-vercel.
5.0.0-beta.27
Patch Changes
- Updated dependencies [
7a1ea5a,0b956f6]:- @workflow/world@5.0.0-beta.19
- @workflow/errors@5.0.0-beta.10
5.0.0-beta.26
Minor Changes
- #2850
f28150cThanks @karthikscale3! - Report step progress alongside step-to-step overhead latency telemetry.
Patch Changes
-
#2876
84df8f3Thanks @karthikscale3! - Update@vercel/queuefrom 0.3.1 to 0.4.0 -
#2873
4dce2aeThanks @VaguelySerious! - Cancel the v4 event frame stream when a reader stops early, so the response body's undici connection returns to the pool instead of leaking. -
#2790
145835bThanks @NathanColosimo! - Centralize workflow event type classifiers and event-data payload field helpers. -
#2848
6603628Thanks @VaguelySerious! - Fix duplicate inline step execution when a hook or wait wakes a run while the step is still running (#2780). The lazystep_startednow records the owning queue message ID, and wake replays schedule a delayed backstop for in-flight inline steps instead of immediately re-dispatching them. Disable withWORKFLOW_INLINE_OWNERSHIP=0. -
#2857
2c6ee61Thanks @karthikscale3! - Add stream latency to OTEL spans -
Updated dependencies [
f28150c,145835b,6603628]:- @workflow/world@5.0.0-beta.18
- @workflow/errors@5.0.0-beta.10
5.0.0-beta.25
Minor Changes
- #2833
3f69666Thanks @VaguelySerious! - Report time-to-first-step and step-to-step overhead latency telemetry on step completion events.
Patch Changes
-
#2840
712ed61Thanks @VaguelySerious! - Add an optional reason to run cancellation (run.cancel({ cancelReason })), recorded on the cancellation event and shown in the run detail view. -
Updated dependencies [
3f69666,712ed61]:- @workflow/world@5.0.0-beta.17
- @workflow/errors@5.0.0-beta.10
5.0.0-beta.24
Patch Changes
-
#2752
0f557d5Thanks @ijjk! - Statically inject the configured world package into host bundles instead of selecting worlds dynamically at runtime. -
#2812
fe327e6Thanks @karthikscale3! - SupportstartTime/endTimeonworld.analytics.runs.listto bound the listing window. -
#2468
49a50e8Thanks @NathanColosimo! - Standardize first-party World packages oncreateWorld(), support relative target World modules consistently, and align the Postgres WorldDATABASE_URLfallback with bootstrap. -
#2789
03862edThanks @TooTallNate! - Send thex-vercel-queue-regionheader on proxy-mode queue sends so they route to the region's VQS dataplane host like direct in-function sends do. -
Updated dependencies [
fe327e6]:- @workflow/world@5.0.0-beta.16
- @workflow/errors@5.0.0-beta.10
5.0.0-beta.23
Minor Changes
-
#2234
f76377bThanks @karthikscale3! - Add an optional metadata-onlyworld.analyticsnamespace for observability reads (runs, steps, events, hooks, waits). Implemented by@workflow/world-vercel; payload-bearing fields remain on the canonical runtime storage APIs. -
#2718
cc7f076Thanks @VaguelySerious! - Make runtime tuning constants (timeouts, retry counts, stream buffering/reconnect) configurable viaWORKFLOW_*environment variables, and forwardWORKFLOW_TEST_LIMIT_OVERRIDESto the backend as a request header so a deployment can tighten server-side limits for testing.
Patch Changes
-
#2680
89f4726Thanks @karthikscale3! - Decompress gzip- and zstd-prefixed serialized data returned from Vercel Workflow storage, and route OSS web hydration through the async WASM-capable path for compressed payloads. -
Updated dependencies [
f76377b,cc7f076,2ab7057]:- @workflow/world@5.0.0-beta.15
- @workflow/errors@5.0.0-beta.9
5.0.0-beta.22
Patch Changes
-
897aac9- Retry transient transport failures (e.g.UND_ERR_REQ_RETRY,ECONNRESET, socket timeouts, 5xx) in-process for idempotent-on-retry event POSTs, so a brief network blip after a step completes no longer re-executes the step.step_started,step_retrying, andhook_receivedare excluded as they are not safe to blindly retry. -
603ad97- Treat transient world-vercel transport failures as retryable, surfacing them as aTRANSPORTtypeWorkflowWorldError, to be retried by the queue instead of failing the run. -
1dcdafd- Unify world-vercel HTTP request handling into a shared core and extend OTEL client spans + debug logging to the v4 events, stream, and Vercel-API request paths.
5.0.0-beta.21
Patch Changes
-
a1cbc8b- Enable HTTP/2 for the events API and stream write requests. -
Updated dependencies [
48e6bbf]:- @workflow/world@5.0.0-beta.14
- @workflow/errors@5.0.0-beta.8
5.0.0-beta.20
Patch Changes
-
#2580
25c3df7Thanks @karthikscale3! - Send optional client-side event occurrence timestamps through world event creation. -
#2424
d476d7aThanks @VaguelySerious! - Use v3 endpoint for stream reads, which supports automatic transparent reconnects. -
#2569
d108ba3Thanks @VaguelySerious! - Turbo mode now tells world-vercel to skip the run_started event-log preload it never reads, reducing request time. -
Updated dependencies [
25c3df7,d108ba3]:- @workflow/world@5.0.0-beta.13
- @workflow/errors@5.0.0-beta.8
5.0.0-beta.19
Patch Changes
-
#2534
b563126Thanks @NathanColosimo! - Updateundicito 7.28.0. -
#2475
2074f91Thanks @pranaygp! - Skip the per-step incrementalevents.listround-trip in the inline sequential loop by consuming an event-log delta returned from the step's terminal write (gated to the single-step case with no open hooks or waits).Add the opt-in
CreateEventParams.sinceCursorcontract so a step-terminalevents.createcan return the event-log delta since that cursor (viaEventResult.events/cursor/hasMore).Return the inline delta from a step-terminal write when
sinceCursoris supplied, computed identically toevents.listso the consumed prefix cannot skew from the server log.Forward
sinceCursorover the v4 wire in@workflow/world-vercelso the server can return the delta on a step-terminal response; older servers ignore it and the runtime falls back toevents.list. -
#2478
e7ef9d8Thanks @pranaygp! - Lazy inline step start: the owned-inline runtime path now sends a singlestep_startedcarrying the step input, letting the world create the step on the fly and saving one round-trip per inline step.@workflow/world:step_startedevent data accepts an optionalinput, andEventResultgains astepCreatedownership signal.@workflow/world-local:step_startedwith input atomically creates the step plus a syntheticstep_createdevent; a lazystep_startedfor an already-existing step throwsEntityConflictErrorso concurrent losers skip (exactly-once).@workflow/world-postgres: same lazy-create + exactly-once create-claim for the Postgres backend.@workflow/world-vercel: sends the step input onstep_startedover the v4 wire and threads the server'sstepCreatedsignal intoEventResult. -
#2508
1332da3Thanks @karthikscale3! - Add run IDs on world storage telemetry spans. -
#2514
fb5abbbThanks @VaguelySerious! - Route v4 event requests through the globalfetchso they appear in the Vercel observability log viewer's outgoing-requests view again. -
#2533
90efb96Thanks @karthikscale3! - Inject W3C trace context (traceparent/tracestate/baggage) on v4 event requests, which previously bypassed it viafetchV4— restoring workflow-server span correlation for traffic from the flow route. No-op when no OpenTelemetry SDK is registered. -
Updated dependencies [
2074f91,e7ef9d8,ab2e9b8]:- @workflow/world@5.0.0-beta.12
- @workflow/errors@5.0.0-beta.8
5.0.0-beta.18
Patch Changes
- #2486
26fd184Thanks @VaguelySerious! - Honor the server's explicit pagination flag when listing run events, avoiding one extra empty-page request per event-log load on replay.
5.0.0-beta.17
Minor Changes
- #2394
5f0b845Thanks @pranaygp! - Advertise specVersion 5 so new Vercel runs are eligible for gzip payload compression. The workflow-server declared spec-5 support in vercel/workflow-server#520; payloads remain opaque to the server (compression is client-side). Spec 5 is a superset of spec 4, so initial run attributes still work.
Patch Changes
-
#2415
6aa1ce0Thanks @VaguelySerious! - Skip transferring event payload bytes when listing events withresolveData: 'none'using the v4 API. -
Updated dependencies [
5f0b845]:- @workflow/world@5.0.0-beta.11
- @workflow/errors@5.0.0-beta.8
5.0.0-beta.16
Minor Changes
-
#2363
926a5e7Thanks @karthikscale3! - AddWORKFLOW_TRACE_MODEwith a newlinkeddefault: each workflow/step invocation span is now its own trace root with span links to the delivery and run-origin contexts, instead of one trace spanning the entire run. world-vercel now explicitly injects W3Ctraceparent/tracestate/baggageheaders on outgoing workflow-server requests.Span names are also friendlier: workflow and step spans now use the short function name (e.g.
workflow.execute processOrder,step.execute chargeCard,workflow.start processOrder) instead of the uppercase prefixes and full machine names (WORKFLOW_V2 workflow//./src/jobs/order//processOrder). The full name remains available in theworkflow.name/step.namespan attributes, and newworkflowDisplayName/stepDisplayNamehelpers are exported from@workflow/utils.Behavioral changes to telemetry under the new default (set
WORKFLOW_TRACE_MODE=continuousto restore the previous trace shape exactly; the span-name change applies in both modes):- A run no longer shares one trace ID: the trace of the request that called
start()no longer contains the workflow's execution spans — navigate via span links or theworkflow.run.idattribute instead. - Sampling decisions are made independently per invocation root (previously one parent-based decision covered the whole run), and the number of root spans/traces increases to one per invocation.
workflow.execute/step.executeinvocation spans (formerlyWORKFLOW_V2/STEP) become parentless roots, which changes parent/child-based queries and service-map edges.- Re-enqueued queue messages forward the original run-origin trace carrier unchanged, rather than each invocation's current context.
- Queries or dashboards matching the old
WORKFLOW_V2 .../STEP ...span names must switch to the new names. - The queue-delivered
workflow.executespan kind changed frominternaltoconsumer, matching the queue-deliveredstep.executespan (this applies in both modes).
Existing attributes and baggage keys are unchanged, and everything remains a no-op when no OpenTelemetry SDK is registered.
- A run no longer shares one trace ID: the trace of the request that called
Patch Changes
- Updated dependencies []:
- @workflow/errors@5.0.0-beta.8
5.0.0-beta.15
Minor Changes
- #2055
0178fa5Thanks @VaguelySerious! - New internal API format: separately encode event metadata from user payloads. Eliminates the need for calling separate endpoints for ref resolution, which improves performance especially on longer runs.
Patch Changes
-
#2399
af859c3Thanks @VaguelySerious! - Update @vercel/queues from 0.3.0 to 0.3.1, which adds native retries for 429s and ECONNRESET -
Updated dependencies [
628795a]:- @workflow/world@5.0.0-beta.10
- @workflow/errors@5.0.0-beta.7
5.0.0-beta.14
Minor Changes
- #2226
ae8d6feThanks @pranaygp! - Allow passing initial run attributes throughstart(), and speed up workflow-levelsetAttributecalls by using native events for recording attributes.
Patch Changes
- Updated dependencies [
ae8d6fe]:- @workflow/world@5.0.0-beta.9
- @workflow/errors@5.0.0-beta.7
5.0.0-beta.13
Patch Changes
-
#2338
95d7009Thanks @xujustinj! - Usevitest runinstead of watch mode so localpnpm testexits cleanly. -
Updated dependencies [
4670c4b]:- @workflow/world@5.0.0-beta.8
- @workflow/errors@5.0.0-beta.7
5.0.0-beta.12
Patch Changes
-
#2257
ccd37e9Thanks @pranaygp! - Avoid unhandled run lookups for unused or empty readable streams and include Vercel request correlation headers in world transport errors. -
#2255
81bda49Thanks @ctgowrie! - Update @vercel/queue from 0.2.1 to 0.3.0 -
#2035
c19f38dThanks @TooTallNate! - Validate ref resolve responses (empty, truncated, orContent-Length-mismatched bodies) before use, throwingWorkflowWorldErrorinstead of corrupting the event log.
5.0.0-beta.11
Minor Changes
- #2235
3a16272Thanks @AndrewBarba! - Add adispatcheroption tocreateVercelWorldfor supplying a custom undici dispatcher, used for both HTTP and queue requests. Defaults to the shared undiciRetryAgent.
Patch Changes
-
#2231
b8a337cThanks @VaguelySerious! - Updateundicito 7.26.0. -
#2246
ddc8a79Thanks @ctgowrie! - Update@vercel/queuefrom 0.1.7 to 0.2.1 -
Updated dependencies [
2a3b11b]:- @workflow/errors@5.0.0-beta.7
- @workflow/world@5.0.0-beta.7
5.0.0-beta.10
Patch Changes
-
#2204
7994629Thanks @VaguelySerious! - Retry transient response-body read/decode failures (truncated or terminated streams, gateway non-CBOR bodies) on idempotent requests inside the HTTP client, so a sporadicevents.listparse failure no longer surfaces as a fatal error. -
Updated dependencies [
8f68d35]:- @workflow/world@5.0.0-beta.6
- @workflow/errors@5.0.0-beta.6
5.0.0-beta.9
Patch Changes
- Updated dependencies [
8d0928b]:- @workflow/errors@5.0.0-beta.6
5.0.0-beta.8
Patch Changes
- #2142
ae37315Thanks @pranaygp! - Prevent failed stream writes from surfacing as unhandled rejections and include request correlation details in stream errors.
5.0.0-beta.7
Minor Changes
- #1978
b0d0561Thanks @TooTallNate! - Add@workflow/world-vercel/run-idsub-export withencode/decodehelpers that produce ULID-shaped workflow run IDs carrying a tag bit, a 5-bit version, and a 6-bit Vercel region ID.
Patch Changes
-
#2134
1e6b1fdThanks @VaguelySerious! - Addexperimental_setAttributes()workflow-level helper for attaching string key/value metadata to a workflow run, surfaced asrun.attributes -
#1799
503a929Thanks @TooTallNate! - Use inline sourcemaps for all workspace packages; published packages no longer ship external.js.mapfiles. -
Updated dependencies [
1e6b1fd,62ec537,503a929]:- @workflow/world@5.0.0-beta.5
- @workflow/errors@5.0.0-beta.5
5.0.0-beta.6
Patch Changes
-
#2038
dc0be50Thanks @pranaygp! - Refresh workflow events after completing elapsed waits so concurrent hook events preserve deterministic replay order. -
#2013
2a446afThanks @TooTallNate! - Exclude inline step execution from the workflow replay timeout. Long-running steps no longer hitREPLAY_TIMEOUT(fixes #2009). Adds aWORKFLOW_REPLAY_TIMEOUT_MSenv var override and a new optionalWorld.processExitTriggersQueueRedeliverycapability used to gate the runtime'sprocess.exit(1)failure path. -
#2060
1d3959eThanks @pranaygp! - Record fatal world response contract failures as non-retryable workflow errors. -
Updated dependencies [
dc0be50,ad71b58,b124365,2a446af,1d3959e]:- @workflow/world@5.0.0-beta.4
- @workflow/errors@5.0.0-beta.4
5.0.0-beta.5
Patch Changes
-
#1999
c43e721Thanks @pranaygp! - Release failed VQS workflow handler messages on the configured retry cadence. -
#1987
22b5a12Thanks @karthikscale3! - Update to new queue client version -
Updated dependencies [
9d2a926]:- @workflow/errors@5.0.0-beta.3
- @workflow/world@5.0.0-beta.3
5.0.0-beta.4
Major Changes
- #1851
5f22832Thanks @TooTallNate! - BREAKING CHANGE: Run and step errors are now serialized through the workflow serialization pipeline, preserving original class identity and cause chains onWorkflowRunFailedError.cause. Pre-upgrade failed runs in theworld-postgreslegacyerrortext column surface aserror: undefinedon read; the original payload is still readable directly from theerrorJsoncolumn for manual inspection.
Minor Changes
- #1882
cd50618Thanks @TooTallNate! - Switch the workflow-server Deployment Protection bypass to OIDC Trusted Sources. TheVERCEL_WORKFLOW_SERVER_PROTECTION_BYPASSenv var is no longer used; thex-vercel-trusted-oidc-idp-tokenheader is now sourced fromgetVercelOidcToken().
Patch Changes
-
#1807
5eb0b79Thanks @karthikscale3! - Add a default request timeout to world-vercel HTTP calls so hanging responses can be re-tried sooner and run less risk of continuing until a function timeout -
Updated dependencies [
540a2ef,5374148,1203dae,1203dae,5f22832,8ea1532]:- @workflow/errors@5.0.0-beta.2
- @workflow/world@5.0.0-beta.2
5.0.0-beta.3
Minor Changes
- #1824
354840eThanks @TooTallNate! - AddVERCEL_WORKFLOW_SERVER_PROTECTION_BYPASSandVERCEL_WORKFLOW_SERVER_URLenv vars.
5.0.0-beta.2
Patch Changes
-
#1742
340c085Thanks @VaguelySerious! - Use custom stream close control frame to decide whether to reconnect to stream -
#1769
5a42964Thanks @tomdale! - Embed source content in published sourcemaps. -
Updated dependencies [
5a42964,173756d]:- @workflow/errors@5.0.0-beta.1
5.0.0-beta.1
Major Changes
-
#1293
66d49c0Thanks @VaguelySerious! - BREAKING CHANGE: Restructure stream methods on World interface to useworld.streams.*namespace withrunIdas the first parameter.writeToStream(name, runId, chunk)→streams.write(runId, name, chunk),writeToStreamMulti→streams.writeMulti,closeStream→streams.close,readFromStream→streams.get(runId, name, startIndex?),listStreamsByRunId→streams.list(runId). -
#1293
66d49c0Thanks @VaguelySerious! - RequirerunIdargument forworld.steps.get.
Patch Changes
-
#1658
a5c90ceThanks @VaguelySerious! - Fix community world E2E tests by addingspecVersionto the World interface sostart()uses the safe baseline (v2) for worlds that don't declare their supported version -
#1676
68cf25eThanks @TooTallNate! - Fixstreams.get()to includerunIdin the request URL instead of always omitting it. -
Updated dependencies [
66d49c0,a5c90ce,66d49c0]:- @workflow/world@5.0.0-beta.1
- @workflow/errors@5.0.0-beta.0
5.0.0-beta.0
Major Changes
- #1642
c5cdfc0Thanks @VaguelySerious! - Initial v5 beta release
Patch Changes
- Updated dependencies [
c5cdfc0]:- @workflow/errors@5.0.0-beta.0
- @workflow/world@5.0.0-beta.0
4.1.0-beta.49
Patch Changes
-
#1627
5f138f2Thanks @VaguelySerious! - Bump specVersion to 3 and gate CBOR queue transport on spec version. Old deployments (specVersion < 3) receive JSON queue messages; new deployments receive CBOR. Handler uses dual transport to deserialize both formats. Fixes replay/reenqueue from dashboard to older deployments. -
#1537
c8dce52Thanks @VaguelySerious! - Allow workflow invocation to create run if initial storage call instartdid not succeed. Send run input through queue to enable this. Allow creating run_created and run_started events together in World, and skip first event list call by returning events directly. -
#1626
5b9eb40Thanks @VaguelySerious! - PaginatewriteToStreamMultito stay within the server's 1000 chunks per batch limit -
Updated dependencies [
5f138f2,7e70d18,c8dce52]:- @workflow/world@4.1.0-beta.17
- @workflow/errors@4.1.0-beta.20
4.1.0-beta.48
Patch Changes
-
#1602
760ebf1Thanks @karthikscale3! - Update headers from x-workflow-run-id and x-workflow-step-id to x-vercel-workflow-run-id and x-vercel-workflow-step-id in order to align with header naming convention -
Updated dependencies [
b30b0dc]:- @workflow/world@4.1.0-beta.16
- @workflow/errors@4.1.0-beta.20
4.1.0-beta.47
Patch Changes
- #1588
ef2218aThanks @VaguelySerious! - Fix zod v3/v4 schema mismatch crash (keyValidator._parse is not a function) by using consistentzod/v4imports in queue files that consume v4-native schemas from@workflow/world
4.1.0-beta.46
Patch Changes
- Updated dependencies [
a98f8de,6dc1b78,329cdb3]:- @workflow/world@4.1.0-beta.15
- @workflow/errors@4.1.0-beta.20
4.1.0-beta.45
Patch Changes
-
#1340
84599b7Thanks @pranaygp! - Add error code classification (USER_ERROR,RUNTIME_ERROR) torun_failedevents, improve queue and schema validation error logging -
#1442
fdbe853Thanks @VaguelySerious! - WhenDEBUG=workflow:is enabled, show API timing debug logs -
#1342
aee035fThanks @pranaygp! - Replace HTTP status code checks with semantic error types (EntityConflictError, RunExpiredError, ThrottleError, TooEarlyError). BREAKING CHANGE:WorkflowAPIErrorrenamed toWorkflowWorldError. -
#1429
741661bThanks @VaguelySerious! - Support refs insidehook_receivedeventpayload -
#1470
01bbe66Thanks @VaguelySerious! - AddgetStreamChunks()andgetStreamInfo()to the Streamer interface, andgetTailIndex()to the readable stream returned byrun.getReadable().WorkflowChatTransportnow reads thex-workflow-stream-tail-indexresponse header to resolve negativeinitialStartIndexvalues into absolute positions, fixing reconnection retries after a disconnect. -
Updated dependencies [
73a851a,84599b7,2ef33d2,672d919,beccbc4,78f1b0e,aee035f,01bbe66]:- @workflow/errors@4.1.0-beta.19
- @workflow/world@4.1.0-beta.14
4.1.0-beta.44
Patch Changes
-
#1378
d6e8727Thanks @TooTallNate! - Reorder token resolution infetchRunKeyandresolveLatestDeploymentIdto preferoptions.token/VERCEL_TOKENbefore calling OIDC, skipping the OIDC network call when a token is already available -
#1396
2f0772dThanks @karthikscale3! - Track Vercel request IDs (x-vercel-id) on all workflow events for correlating request logs with workflow executions -
#1335
e902980Thanks @VaguelySerious! - Use undici dispatcher for queue client -
#1364
94c14c7Thanks @karthikscale3! - Strip only ref/payload fields from eventData when resolveData is 'none', preserving all other metadata -
Updated dependencies [
2f0772d,94c14c7]:- @workflow/world@4.1.0-beta.13
- @workflow/errors@4.1.0-beta.18
4.1.0-beta.43
Patch Changes
-
#1317
825417aThanks @TooTallNate! - ImplementresolveLatestDeploymentId()that calls the Vercel API to resolve the latest deployment for the current environment -
#1322
d5bc418Thanks @VaguelySerious! - Encode all user-supplied IDs in URL path segments withencodeURIComponent() -
Updated dependencies [
825417a]:- @workflow/world@4.1.0-beta.12
- @workflow/errors@4.1.0-beta.18
4.1.0-beta.42
Patch Changes
-
#1262
9781afbThanks @TooTallNate! - Use VERCEL=1 to distinguish serverless runtime from external contexts for encryption key resolution -
#1309
d842ce1Thanks @TooTallNate! - Include response body and status text in fetchRunKey error message for better debuggability of rate limit and server errors.
4.1.0-beta.41
Patch Changes
-
#1287
d8daa2aThanks @VaguelySerious! - Addworld.events.get(runId, eventId)to the Storage interface for fetching a single event by ID. -
Updated dependencies [
d8daa2a]:- @workflow/world@4.1.0-beta.11
- @workflow/errors@4.1.0-beta.18
4.1.0-beta.40
Patch Changes
- #1290
8b5a388Thanks @pranaygp! - SupporttimeoutSeconds: 0for immediate re-enqueue without arbitrary delay
4.1.0-beta.39
Patch Changes
-
#1273
11dcb64Thanks @VaguelySerious! - Locally validate run ID to be ULID when passed by user -
Updated dependencies [
11dcb64]:- @workflow/world@4.1.0-beta.10
- @workflow/errors@4.1.0-beta.18
4.1.0-beta.38
Patch Changes
-
#1270
adfe8b6Thanks @pranaygp! - AddHookNotFoundErrorto@workflow/errorsand adopt it across all world backends -
Updated dependencies [
adfe8b6,adfe8b6]:- @workflow/errors@4.1.0-beta.18
- @workflow/world@4.1.0-beta.9
4.1.0-beta.37
Patch Changes
- #1222
2b1c2bdThanks @TooTallNate! - Fixrun_failedevent schema validation failure in lazy ref mode
4.1.0-beta.36
Patch Changes
-
#1211
1cfb8b1Thanks @VaguelySerious! - Use undici v7 Agent for HTTP/2 multiplexing and automatic retry -
#1220
274ea8bThanks @VaguelySerious! - Vary ref resolution concurrency based on header -
#1218
f3b2e08Thanks @ctgowrie! - Update to new queue client version -
#1217
e55c636Thanks @pranaygp! - Upgrade dependencies across all packages -
Updated dependencies [
e55c636]:- @workflow/world@4.1.0-beta.8
- @workflow/errors@4.1.0-beta.17
4.1.0-beta.35
Patch Changes
-
#1189
b224521Thanks @TooTallNate! - Move event ref resolution from server-side to client-side to reduce memory pressure -
49d1b6dThanks @VaguelySerious! - Include total blob and stream storage size of a run in the run response -
#1174
e1a2f47Thanks @TooTallNate! - Handle{ key: null }response from the run-key API endpoint, returningundefinedto signal encryption is disabled for that workflow run -
#1183
c614456Thanks @TooTallNate! - PassteamIdto the run-key API endpoint for team-scoped encryption key retrieval -
Updated dependencies [
b06e491]:- @workflow/world@4.1.0-beta.7
- @workflow/errors@4.1.0-beta.16
4.1.0-beta.34
Patch Changes
-
#956
b65bb07Thanks @TooTallNate! - ImplementgetEncryptionKeyForRunwith HKDF-SHA256 per-run key derivation and cross-deployment key resolution viafetchRunKeyAPI -
Updated dependencies [
b65bb07]:- @workflow/world@4.1.0-beta.6
- @workflow/errors@4.1.0-beta.16
4.1.0-beta.33
Patch Changes
-
#1098
7046610Thanks @pranaygp! - Auto-injectx-workflow-run-idandx-workflow-step-idVQS headers from queue payload inworld-vercel -
#999
ea3254eThanks @TooTallNate! - Separate project ID and project name into distinct env vars (WORKFLOW_VERCEL_PROJECT and WORKFLOW_VERCEL_PROJECT_NAME) -
#1096
29347b7Thanks @ctgowrie! - Use new Vercel queue client with v2 message format, simplified callback handling, etc. -
Updated dependencies [
c2b4fe9,6e72b29,5e06a7c,5487983]:- @workflow/errors@4.1.0-beta.16
- @workflow/world@4.1.0-beta.5
4.1.0-beta.32
Patch Changes
-
#966
56f2221Thanks @VaguelySerious! - Add 429 throttle retry handling and 500 server error retry with exponential backoff to the workflow and step runtimes -
Updated dependencies [
56f2221]:- @workflow/errors@4.1.0-beta.15
- @workflow/world@4.1.0-beta.4
4.1.0-beta.31
Patch Changes
-
#985
aa448c2Thanks @VaguelySerious! - Allow overwriting backend URL via env variable -
Updated dependencies [
d9e9859]:- @workflow/world@4.1.0-beta.3
- @workflow/errors@4.1.0-beta.14
4.1.0-beta.30
Patch Changes
-
#922
0ce46b9Thanks @pranaygp! - Add support for custom headers in queue messages -
#867
c54ba21Thanks @TooTallNate! - Add optionalwriteToStreamMultifunction to the World interface -
#933
79e988fThanks @pranaygp! - Add OTEL tracing for HTTP requests and storage operations using standard OTEL semantic conventions -
#932
088de0aThanks @pranaygp! - Improve world-vercel telemetry and event creation performance- Use parent application's 'workflow' tracer instead of separate service name
- Add
peer.serviceand RPC semantic conventions for Datadog service maps - Include event type in
world.events.createspan names (e.g.,world.events.create step_started) - Use lazy ref resolution for fire-and-forget events to skip S3 ref resolution (~200-460ms savings)
-
Updated dependencies [
0ce46b9,c54ba21]:- @workflow/world@4.1.0-beta.2
- @workflow/errors@4.1.0-beta.14
4.1.0-beta.29
Minor Changes
- #621
4966b72Thanks @pranaygp! - BREAKING: Storage interface is now read-only; all mutations go throughevents.create()- Remove
cancel,pause,resumefromruns - Remove
create,updatefromruns,steps,hooks - Add run lifecycle events:
run_created,run_started,run_completed,run_failed,run_cancelled - Add
step_createdevent type - Remove
fatalfield fromstep_failed(terminal failure is now implicit) - Add
step_retryingevent with error info for retriable failures
- Remove
Patch Changes
-
#799
26a9833Thanks @VaguelySerious! - Update queue implementation to use VQS v3 -
#844
b59559bThanks @TooTallNate! - Submit request bodies with CBOR encoding -
#894
a2b688dThanks @VaguelySerious! - Fix resuming v1 hooks and cancelling/re-running v1 runs from a v2 UI or runtime -
#833
bd8116dThanks @TooTallNate! - RemoveskipProxyandbaseUrlconfig options, simplify proxy logic -
#853
1060f9dThanks @TooTallNate! - BREAKING CHANGE: Change user input/output to be binary data (Uint8Array) at the World interfaceThis is part of specVersion 2 changes where serialization of workflow and step data uses binary format instead of JSON arrays. This allows the workflow client to be fully responsible for the data serialization format and enables future enhancements such as encryption and compression without the World implementation needing to care about the underlying data representation.
-
#621
4966b72Thanks @pranaygp! - AddspecVersionproperty to World interface- All worlds expose
@workflow/worldpackage version for protocol compatibility - Stored in
run_createdevent andWorkflowRunschema - Displayed in observability UI
- All worlds expose
-
#832
b973b8dThanks @TooTallNate! - Add support for CBOR responses -
#621
4966b72Thanks @pranaygp! - Route entity mutations through v2 events APIevents.create()calls v2 endpoint for atomic entity creation- Remove
cancel,pause,resumefrom storage interface
-
Updated dependencies [
4966b72,4966b72,4966b72,1060f9d,4966b72,4966b72]:- @workflow/world@4.1.0-beta.1
- @workflow/errors@4.1.0-beta.14
4.0.1-beta.28
Patch Changes
- #820
f3785f0Thanks @TooTallNate! - Throw an error if no deployment ID was specified
4.0.1-beta.27
Patch Changes
- Updated dependencies [
61fdb41,0aa835f]:- @workflow/world@4.0.1-beta.13
- @workflow/errors@4.0.1-beta.13
4.0.1-beta.26
Patch Changes
-
#751
dd3db13Thanks @VaguelySerious! - Remove the unused paused/resumed run events and states- Remove
run_pausedandrun_resumedevent types - Remove
pausedstatus fromWorkflowRunStatus - Remove
PauseWorkflowRunParamsandResumeWorkflowRunParamstypes - Remove
pauseWorkflowRunandresumeWorkflowRunfunctions from world-vercel
- Remove
-
Updated dependencies [
dd3db13]:- @workflow/world@4.0.1-beta.12
- @workflow/errors@4.0.1-beta.13
4.0.1-beta.25
Patch Changes
- Updated dependencies []:
- @workflow/errors@4.0.1-beta.13
4.0.1-beta.24
Patch Changes
- Updated dependencies [
e3f0390]:- @workflow/world@4.0.1-beta.11
- @workflow/errors@4.0.1-beta.12
4.0.1-beta.23
Patch Changes
- Updated dependencies []:
- @workflow/errors@4.0.1-beta.11
4.0.1-beta.22
Patch Changes
-
#651
75a5060Thanks @TooTallNate! - Handle Vercel Queue 24 hour message TTL by re-enqueueing message -
#647
6cd1a47Thanks @TooTallNate! - Additional error debugging when failing to validate server response
4.0.1-beta.21
Patch Changes
-
#639
ab55ba2Thanks @adriandlam! - Add custom request header to bypass RSC request memoization -
Updated dependencies [
4bdd3e5]:- @workflow/errors@4.0.1-beta.10
4.0.1-beta.20
Patch Changes
-
#627
deaf019Thanks @VaguelySerious! - [world-vercel] Allow skipping vercel backend proxy for e2e tests where CLI runs in runtime env -
Updated dependencies [
b56aae3]:- @workflow/errors@4.0.1-beta.9
4.0.1-beta.19
Patch Changes
- Updated dependencies []:
- @workflow/errors@4.0.1-beta.8
4.0.1-beta.18
Patch Changes
-
#574
c82b467Thanks @VaguelySerious! - Add listByRunId endpoint to Streamer interface -
Updated dependencies [
c82b467]:- @workflow/world@4.0.1-beta.10
- @workflow/errors@4.0.1-beta.7
4.0.1-beta.17
Patch Changes
- Updated dependencies [
57a2c32]- @workflow/world@4.0.1-beta.9
- @workflow/errors@4.0.1-beta.7
4.0.1-beta.16
Patch Changes
c8fa70a: Change Vercel queue max visibility to 11 hours
4.0.1-beta.15
Patch Changes
e9494d5: Update@vercel/queueto use new QueueClient class to simplify custom header/path overwrites
4.0.1-beta.14
Patch Changes
- Updated dependencies [
10c5b91] - Updated dependencies [
bdde1bd]- @workflow/world@4.0.1-beta.8
- @workflow/errors@4.0.1-beta.7
4.0.1-beta.13
Patch Changes
- Updated dependencies [
fb9fd0f]- @workflow/world@4.0.1-beta.7
- @workflow/errors@4.0.1-beta.6
4.0.1-beta.12
Patch Changes
6889dac: Log warning when detecting zod v3
4.0.1-beta.11
Patch Changes
2c438c3: Make queue() call backwardscompatible with zod v3 for codebases that pin zod- @workflow/errors@4.0.1-beta.6
4.0.1-beta.10
Patch Changes
3d99d6d: Update@vercel/oidcand@vercel/queueto fix expired OIDC token edge case
4.0.1-beta.9
Patch Changes
4b70739: Require specifying runId when writing to stream- Updated dependencies [
4b70739]- @workflow/world@4.0.1-beta.6
- @workflow/errors@4.0.1-beta.5
4.0.1-beta.8
Patch Changes
b97b6bf: Lock all dependencies in our packages00b0bb9: Support structured errors for steps and runs- Updated dependencies [
b97b6bf] - Updated dependencies [
00b0bb9] - Updated dependencies [
00b0bb9]- @workflow/errors@4.0.1-beta.5
- @workflow/world@4.0.1-beta.5
4.0.1-beta.7
Patch Changes
2dca0d4: Add custom user agent
4.0.1-beta.6
Patch Changes
- @workflow/errors@4.0.1-beta.4
4.0.1-beta.5
Patch Changes
f973954: Update license to Apache 2.0- Updated dependencies [
f973954]- @workflow/errors@4.0.1-beta.3
- @workflow/world@4.0.1-beta.4
4.0.1-beta.4
Patch Changes
20d51f0: Enforce the Vercel Queue max visibility limit- Updated dependencies [
796fafd] - Updated dependencies [
20d51f0] - Updated dependencies [
70be894]- @workflow/errors@4.0.1-beta.2
- @workflow/world@4.0.1-beta.3
4.0.1-beta.3
Patch Changes
e367046: Allow setting baseUrl and token for queue service
4.0.1-beta.2
Patch Changes
7868434: RemoveAuthProviderinterface fromWorldand associated implementations- Updated dependencies [
d3a4ed3] - Updated dependencies [
d3a4ed3] - Updated dependencies [
7868434]- @workflow/world@4.0.1-beta.2
4.0.1-beta.1
Patch Changes
- 1408293: Add "description" field to
package.jsonfile - e46294f: Add "license" and "repository" fields to
package.jsonfile - Updated dependencies [1408293]
- Updated dependencies [8422a32]
- Updated dependencies [e46294f]
- @workflow/errors@4.0.1-beta.1
- @workflow/world@4.0.1-beta.1
4.0.1-beta.0
Patch Changes
- fcf63d0: Initial publish
- Updated dependencies [fcf63d0]
- @workflow/errors@4.0.1-beta.0
- @workflow/world@4.0.1-beta.0