{"query":"workflow-sdk.dev","mode":"domain","best":{"domain":"workflow-sdk.dev","status":"valid","tier":"listed","authority":46,"verified":false,"title":"Workflow SDK documentation","summary":"Workflow SDK is a durable functions framework for JavaScript and TypeScript that makes long-running application logic resilient across stateless compute.","country":"US","country_source":"ip","publisher_country":null,"publisher_country_source":null,"hosting_country":"US","llms_txt":"https://workflow-sdk.dev/llms.txt","llms_full_txt":null,"last_checked":"2026-10-26T10:58:20.587Z","agent_terms":null,"categories":["developer-tools","productivity","apis-sdks"],"capabilities":[],"inferred_tags":["durable functions","javascript sdk","typescript workflows","long-running jobs","ai agents"],"audience":"developers","agent_uses":["read_docs"],"language":"en","platform_generated":false,"agent_summary":"Workflow SDK docs: durable functions framework for JavaScript and TypeScript that makes long-running logic resilient, with guides on worlds, observability and A","llms_txt_cached":"https://agentwebmap.com/v1/domain/workflow-sdk.dev/llms.txt","agentic":"documentation","section_keys":["1-clone-example-app","1-define-the-hook","1-define-the-tool","1-define-your-data-part-type","1-install-dependencies","1-return-the-run-id-from-your-api","1-wire-format-used-by-world-vercel","1-workflow-world-storage-interface-addition","1-world-implementations","2-add-a-stream-reconnection-endpoint","2-configure-model-access","2-create-a-workflow-function","2-emit-updates-from-your-tool","2-implement-the-tool","2-observability-surfaces","2-show-the-tool-status-in-the-ui","2026","3-create-the-api-route","3-get-familiar-with-the-code","3-handle-data-parts-in-the-client","3-update-the-api-route","3-use-workflowchattransport-in-the-client","3-workflow-core-sdk-surface","4-convert-tools-to-steps","4-create-the-approval-component","5-show-the-tool-status-in-the-ui","a-redesigned-trace-viewer","a-run-cancelled-before-its-first-delivery-still-runs-the-first-step-body","accepted-residual-risks","accessing-message-context-in-tools","adding-a-sleep-tool","ai-agents","ai-agents-and-streaming","ai-gateway","all","all-results","also-new-in-5-0","alternatives-considered-and-rejected","api-route","application-code","applicationmanagedshutdown","astro","at-a-glance","atomicity-of-run-entity-creation","attribute","attributes-seeded-at-start-survive-the-skipped-event-load","authtoken-a","backend-b","background-steps-parallel-execution","base64-and-hex-encoding","baseurl","batched-event-writes-events-createbatch","behavior-change-resumes-against-an-ended-run","binary-data","breaking-changes","buffered-stream-flush-with-waiter-promises","build-your-own","bulk-cancel","bundle-size-and-cold-start","bypassbodyparser","changelog","choosing-a-pattern","chunk-trip-time-ctt","client","client-polling","code-vs-json","cold-start-race-on-vercel","community-worlds-and-the-world-streams-api","compatibility","complete-example","compression-and-tracing","concurrent-stepstarted-and-attempt-counter","concurrent-writes-read-modify-write-not-per-key-atomic","concurrent-writes-to-the-same-key","configuration","configuration-areas","confirm-y","connectionstring","considered-running-ahead-of-durable-writes-not-implemented","convergence-after-parallel-steps","cookbook","crash-recovery-is-unchanged","creating-a-booking-approval-tool","cursor","custom-hook-token-retention","datadir","debug","decisions","decrypt","deep-dives","deploying-to-vercel","design","design-notes-and-tradeoffs","detection","deterministic-apis","development-diagnostics","dirs","discovery","distdir","docs","documentation","durable-hook-resume","dynamic-workflows","eager-processing-of-steps-and-incremental-event-replay","enabling-dynamic-workflows","encryption-and-portability","encryption-key-resolution","endpoint-lives-under-v2-not-a-fresh-namespace","env-e","environment-variables","error","exactly-one-owner-is-preserved-the-race-moved","exclude","executestep","explore-worlds","external-service","fan-out","fan-out-ttfs-ttls-join","faster-and-cheaper-runs","follow-up","generated-file-layout","getting-started","health-checks","highlights","hook-getconflict-awaiter","hookid","how-it-works","how-the-code-is-stored","how-the-design-is-protected-by-tests","how-to-fix","how-workflow-body-dispatch-works","human-in-the-loop","if-you-maintain-a-world","implementation-notes-decisions-made-during-the-mvp-build-out","implementation-plan","implementing-stream-resumption","incremental-event-loading","inflight-cancellation","inline-execution","inline-step-execution-with-pending-stream-operations","inline-step-message-ownership","inline-up-to-n-steps-in-parallel","inngest-features-without-a-direct-workflow-sdk-equivalent","inspect-filtering","integrating-workflow-sdk","interactions-with-inline-execution","interactive-i","jobprefix","json-j","known-concerns","lastupdated-2026-10-21","latest-results","lazy-inline-step-start","lazy-world-loading","limit","limit-cancel","limit-inspect","limitations","limits","local-development","local-world","localui","lock-release-polling-interval","manifests","materialize-before-failing-unregistered-steps","maxpoolsize","methodology","mid-part-resumes","migrating-from-inngest","migrating-from-step-functions","migrating-from-temporal","migrating-from-trigger-dev","migration-to-native-v4","mixed-suspensions","module-scope-duplication-in-re-bundled-output","moduletype","motivation","moving-from-cloudflare-workflows","multi-region-support","multi-turn-workflows","multiplayer-chat-sessions","multiple-users","mvp-attributes-do-not-survive-materialization-rebuild","namespace","native-v4-follow-up","nestjs","new-architecture","next-js","next-steps","nitro-and-nuxt","no-event-log-history","nobrowser","not-available","observability","observability-paths","open-questions","optimistic-inline-start-opt-in-off-by-default","optional-world-method-feature-detect-warn-once","optional-world-support","outdir","output-and-filtering","parallel-inline-steps-plus-optimistic-start","parent-child-polling-holds-worker-slots","persist-and-display-the-full-session","pollinterval","pool","port","port-p","postgres-world","pre-emption-by-attributes-hook-conflicts","previous-architecture","project","projectconfig-environment","projectconfig-projectid","projectconfig-teamid","provider-package","queue-message-changes","queue-messages-inline-steps-don-t-pay-a-round-trip","queue-namespace","queue-transport-changes","queueconcurrency","queueing-messages-during-and-between-turns","rate-limiting","reconnect-to-the-stream","recoveractiveruns","related","related-documentation","replay-and-queue-delivery","replay-correctness-and-the-inline-delta-fast-path","reserved-namespace","resilient-resumehook","resilient-start","resumable-streams","resuming-a-workflow","resuming-from-the-end-of-the-stream","richer-serialization","rollout-and-compatibility","rollup","rules-for-the-source","run-attributes","run-returnvalue-polling","run-row-reconstruction-had-to-thread-attributes-through","runid-r","safety-and-the-idempotency-tradeoff","same-deployment-only","sdk-surface-stability","security","selecting-a-world","self-hosting-other-providers","since-until","single-inline-executor-per-step","single-turn-workflows","skipbuild","sleep-suspense-and-scheduling","snapshot","sort","source-map-values","source-maps","sourcemap","stale-reads-and-why-nothing-has-to-be-rejected","start-and-resume-the-session","start-changes","status","step-functions-features-without-a-direct-workflow-sdk-equivalent","step-level-vs-workflow-level-tools","step-retries","step-to-step-overhead-stso","stepid-s","steps-and-long-runs","streamflushintervalms","streaming-updates-from-tools","streams","streams-and-waits","summary-browse-all-available-functions-and-primitives-organized-by-package","suspension-handler","sveltekit","system-event","tag","target-backend","team","temporal-features-without-a-direct-workflow-sdk-equivalent","test-coverage","testing","the-biggest-difference-what-you-operate","the-bug-being-fixed","the-core-difference-checkpoint-restore-vs-replay","the-core-distinction-durability","the-core-problem-is-liveness-and-why-we-did-not-build-a-liveness-mechanism","the-dispatch-decision-table","the-preparestep-callback","the-runtime-integration-suspension-fan-out-fold","the-single-handler-guarantee","the-world-spec-addition","time-to-first-step-ttfs","time-to-resume-ttr","timeout-handling","token","tools","topology-co-located-vs-invoked-over-http","trade-offs-and-known-limitations","transport","trigger-dev-features-without-a-direct-workflow-sdk-equivalent","turbo-exits-on-the-first-hook-or-wait","turbo-mode","type-overview","unconsumed-event-check-two-phase-drain","url","usage-patterns","use-cases","using-a-third-party-world","using-webhooks-directly","v4-cookbook","v4-docs","v4-worlds","validation-rules-are-shared-between-sdk-and-world","verbose-logging-and-updates","verbose-v","vercel-world","vercelqueuemaxdelayseconds","vercelworkflowserverurl","versioning","versioning-pinned-vs-live-code","vm-sandboxing","vs-aws-bedrock-agentcore","vs-aws-step-functions","vs-cloudflare-workflows","vs-inngest","vs-temporal","vs-trigger-dev","watch","web-platform-apis","web-ui","web-w","webport","what-makes-the-workflow-sdk-different","what-mvp-does-not-support-deferred-to-5-0-0","what-mvp-supports","what-the-dev-watcher-tracks","what-the-source-can-use","what-this-change-does","what-turbo-mode-does","what-we-measure","when-to-use-this","when-to-use-workflow-sdk","where-agentcore-leads","where-cloudflare-leads","why-a-fixed-constant-and-why-860-seconds","why-durable-agents","why-in-process-single-flight-is-a-required-layer","why-ownership-lives-in-the-event-log","why-ownership-requires-a-lease","why-the-identity-is-the-queue-messageid","why-the-mvp-defers-an-attrset-event-type","why-the-non-owner-action-is-a-delayed-backstop-wake-not-a-skip-and-not-a-step-message","why-this-happens","why-this-is-safe-and-where-it-stops","wire-format-compatibility-and-rollout","withdata-d","workflow","workflow-ai","workflow-api","workflow-astro","workflow-attributes-mvp","workflow-dirs","workflow-errors","workflow-globals","workflow-ids","workflow-nest","workflow-next","workflow-nitro","workflow-nuxt","workflow-observability","workflow-runtime","workflow-serde","workflow-sourcemap","workflow-sveltekit","workflow-typescriptplugin","workflow-vite","workflow-vitest","workflow-vm-engine","workflowattributes-usage-fact-schema-not-introduced","workflowbatchtransitions","workflowcompressioncodec","workflowdeferredcheckdelayms","workflowdeploymentmismatchmaxretries","workflowdevhmrlogs","workflowdevwatchignoredpaths","workflowdisableanalyticsreads","workflowdisablecompression","workflowdiscovernodemodules","workflowemitsourcemapsfordebugging","workflowentrypoint-changes","workfloweventstransport","workfloweventstransportwsoverrideworkflows","workflowexperimentaldynamicworkflows","workflowframedstreammaxreconnects","workflowframedstreammaxtotalreconnects","workflowh2multiplex","workflowinlineownership","workflowinlineownershipleaseseconds","workflowlocalbodytimeoutms","workflowlocalheaderstimeoutms","workflowlocalhookretentionlimitdays","workflowlocalqueueconcurrency","workflowlocalqueuemaxvisibility","workflowlockpollintervalms","workflowlogorderdraws","workflowmanifestpath","workflowmaxchunksperrequest","workflowmaxevents","workflowmaxeventsoverride","workflowmaxinlinesteps","workflowmaxqueuedeliveries","workflowname-n","workflownearelapsedwaitthresholdseconds","workflownodehttp","workflownoupdatecheck","workflowobservabilitycwd","workflowopenwaitclockskewms","workflowoptimisticinlinestart","workflowpostgreshookretentionlimitdays","workflowpreconditionmaxinprocessrestarts","workflowpreconditionmaxreinvocations","workflowpreconditionreinvokedelayseconds","workflowpublicmanifest","workflowqueuenamespace","workflowquickjsbaselinesnapshot","workflowreplaydivergencemaxretries","workflowreplaytimeoutmaxretries","workflowreplaytimeoutms","workflowrequesttimeoutms","workflowretainedvm","workflowreturnvaluelongpoll","workflowreturnvaluemaxlongpolls","workflowreturnvaluepollintervalms","workflowreturnvaluewaitms","workflows-local-port","workflows-sourcemap","workflowsealedlog","workflowsequentialreplays","workflowslotgapcheck","workflowsnapshotallowunencrypted","workflowsnapshotthreshold","workflowsourcemap","workflowstartedat-reflects-the-first-delivery-s-clock","workflowstepstreamdraintimeoutms","workflowstreamflushintervalms","workflowstreammaxbufferedbytes","workflowstreammaxbytesperbatch","workflowstreammaxchunksperbatch","workflowstreammaxinflightchunks","workflowstreamstransport","workflowtargetworld","workflowtracemode","workflowturbo","workflowv2timeoutms","workflowvercelbackendurl","workflowvercelprojectname","workflowvercelqueueconnections","workflowvercelqueuetimeoutms","workflowvitestversioncheck","workflowvm","workflowwaitcontinuationmaxdelayseconds","workflowwsmaxmessagebytes","workingdir","world-contract","world-contract-changes","world-local","world-postgres","world-support","world-vercel","write-ordering-is-preserved","writing-to-streams"],"section_partial":true,"section_indexed_at":"2026-10-26T10:58:27.685Z","why":["authority 46 (listed)","checked 176 minutes ago"]},"read":{"llms_txt":"https://workflow-sdk.dev/llms.txt","llms_full_txt":null,"nested_llms_txt":[]},"terms":null,"health":{"ok":true,"status":"valid","tier":"listed","authority":46,"last_checked":"2026-10-26T10:58:20.587Z","checked_minutes_ago":175,"stale":false,"max_age_seconds":86400,"live_checked":false,"http_status":200,"last_valid":"2026-10-26T10:58:20.587Z","content_hash":"10c0669ef42b1b787e088d855ae5e1cb","documentation_indexed_at":"2026-10-26T10:58:14.361Z"},"sources":[],"match":{"strength":"domain","reason":"Exact domain or its registered publisher."},"provenance":{"selection":"directory","reranked":false,"verification":"domain_ownership","terms":"unknown","excerpts":"publisher_link_metadata","health":"stored_crawl"},"alternatives":[]}