| metadata | {"priority":9,"docs":["https://vercel.com/docs/workflow","https://useworkflow.dev"],"sitemap":"https://vercel.com/sitemap/docs.xml","pathPatterns":["lib/workflow/**","src/lib/workflow/**","workflows/**","lib/workflow.*","src/lib/workflow.*","workflow.*","*workflow*","*workflow*/**","**/chain-engine*","**/chain_engine*","**/chainEngine*","**/pipeline-engine*","**/pipeline_engine*","**/pipelineEngine*","**/state-machine*","**/state_machine*","**/stateMachine*","**/orchestrat*","**/escalation*"],"importPatterns":["@vercel/workflow","workflow","@workflow/*","*workflow*"],"bashPatterns":["\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel/workflow\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel/workflow\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel/workflow\\b","\\byarn\\s+add\\s+[^\\n]*@vercel/workflow\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*\\bworkflow\\b","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*\\bworkflow\\b","\\bbun\\s+(install|i|add)\\s+[^\\n]*\\bworkflow\\b","\\byarn\\s+add\\s+[^\\n]*\\bworkflow\\b","\\bnpm\\s+(install|i|add)\\s+[^\\n]*@workflow/","\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@workflow/","\\bbun\\s+(install|i|add)\\s+[^\\n]*@workflow/","\\byarn\\s+add\\s+[^\\n]*@workflow/","\\bnpx\\s+workflow(?:@latest)?\\b","\\bbunx\\s+workflow(?:@latest)?\\b"],"promptSignals":{"phrases":["vercel workflow","workflow devkit","durable workflow","durable execution","durable function","durable pipeline","durable process","durable agent","durable chat","step function","step functions","use workflow","use step","multi-step pipeline","multi step pipeline","multi-step process","multi step process","multi-step creation","multi-step generation","processing pipeline","creation pipeline","generation pipeline","content pipeline","production pipeline","approval pipeline","ingestion pipeline","streams progress","stream progress","streams each phase","streams each step","streams each","stream each","[Truncated]"],"allOf":["[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]","[Truncated]"],"anyOf":["long-running","long running","multi-step","multi step","pipeline","orchestration","step-by-step","step by step","each piece","each step","each phase","each stage","phase","phases","stage","stages","durable","reliable","fault-tolerant","retry","reconnect","survive","persist","approval","chain","sequential","trigger","webhook","escalation","state machine","orchestrate","orchestration"],"noneOf":["github actions",".github/workflows","ci workflow","aws step functions"],"minScore":4}} |
| validate | [{"pattern":"experimental_createWorkflow","message":"experimental_createWorkflow is now stable — use createWorkflow from @vercel/workflow. Run npx @ai-sdk/codemod v6 for automated migration.","severity":"error","upgradeToSkill":"workflow","upgradeWhy":"Guides migration from experimental_createWorkflow to the stable createWorkflow API and then to the \"use workflow\" directive."},{"pattern":"from\\s+['\"]@vercel/workflow['\"]","message":"Workflow DevKit requires AI Gateway OIDC setup — ensure vercel link + vercel env pull for VERCEL_OIDC_TOKEN","severity":"recommended"},{"pattern":"setTimeout|setInterval","message":"setTimeout/setInterval are not available in workflow sandbox scope — use sleep() from \"workflow\" for delays","severity":"error","skipIfFileContains":"use step"},{"pattern":"context\\.run\\s*\\(","message":"context.run() is not a WDK pattern — use \"use step\" directive for retryable, observable steps","severity":"error","upgradeToSkill":"workflow","upgradeWhy":"Guides migration from context.run() to the \"use step\" directive for durable, retryable workflow steps."},{"pattern":"\\brequire\\s*\\(","message":"require() is not available in workflow sandbox scope — use ESM imports and move Node.js logic into \"use step\" functions","severity":"error","skipIfFileContains":"use step"},{"pattern":"getWritable\\(\\)","message":"getWritable() must only be called inside \"use step\" functions — workflow sandbox scope does not support it","severity":"recommended","skipIfFileContains":"use step"},{"pattern":"createWorkflow\\s*\\(","message":"createWorkflow() is the legacy API — use the \"use workflow\" directive on an async function instead","severity":"error","upgradeToSkill":"workflow","upgradeWhy":"Guides migration from createWorkflow() function API to the \"use workflow\" directive pattern.","skipIfFileContains":"experimental_createWorkflow"},{"pattern":"streamObject\\s*\\(","message":"streamObject() was removed in AI SDK v6 — use streamText() with output: Output.object() instead","severity":"error","upgradeToSkill":"ai-sdk","upgradeWhy":"Guides migration from streamObject to streamText + Output.object() with correct v6 streaming patterns."},{"pattern":"await\\s+\\w+Workflow\\s*\\(","message":"Do not call workflow functions directly — use start() from \"workflow/api\" to register the run and get a runId","severity":"recommended","skipIfFileContains":"use workflow"},{"pattern":"\\bfetch\\s*\\(","message":"Native fetch() is not available in workflow sandbox scope — import fetch from \"workflow\" or move the call into a \"use step\" function","severity":"recommended","skipIfFileContains":"use step"},{"pattern":"\"use step\"","message":"Workflow steps should include console.log or structured logging for observability — add logging at step entry/exit to debug hangs","severity":"warn","skipIfFileContains":"console\\.(log|warn|error|info)"},{"pattern":"\"use workflow\"","message":"Workflow files should import and use logging — add console.log or a logger at key execution points for debugging","severity":"warn","skipIfFileContains":"console\\.(log|warn|error|info)"}] |