@vite-hub/workflow 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +56 -6
  2. package/dist/{cloudflare-env-BVUMOgFK.d.ts → cloudflare-env-CIjdFTv6.d.ts} +2 -1
  3. package/dist/{cloudflare-env-g0Rf3ClH.js → cloudflare-env-mFp2Uj6Z.js} +7 -3
  4. package/dist/{cloudflare-vite-DcM5YVTP.js → cloudflare-vite-B0zel2Do.js} +4 -5
  5. package/dist/{config-DkgsQuXz.js → config-BDqB6I4E.js} +43 -5
  6. package/dist/index.d.ts +43 -18
  7. package/dist/index.js +99 -111
  8. package/dist/provider-operation-CWIV4k42.js +62 -0
  9. package/dist/runtime/cloudflare-runner.d.ts +2 -2
  10. package/dist/runtime/cloudflare-runner.js +15 -14
  11. package/dist/runtime/cloudflare-shared.d.ts +2 -2
  12. package/dist/runtime/cloudflare-shared.js +2 -2
  13. package/dist/runtime/cloudflare-vite.d.ts +3 -3
  14. package/dist/runtime/cloudflare-vite.js +1 -1
  15. package/dist/runtime/execute.d.ts +1 -1
  16. package/dist/runtime/openworkflow-worker.d.ts +4 -2
  17. package/dist/runtime/openworkflow-worker.js +63 -6
  18. package/dist/runtime/openworkflow.d.ts +22 -1
  19. package/dist/runtime/openworkflow.js +110 -37
  20. package/dist/runtime/state.d.ts +1 -1
  21. package/dist/runtime/vercel-vite.d.ts +58 -3
  22. package/dist/runtime/vercel-vite.js +3 -2
  23. package/dist/{types-ThDitg7Z.d.ts → types-BUlYBZwH.d.ts} +48 -6
  24. package/dist/vercel-D2_J5D_Y.js +217 -0
  25. package/dist/vite.d.ts +2 -5
  26. package/dist/vite.js +1753 -143
  27. package/package.json +45 -48
  28. package/dist/module-UYEnVfxy.js +0 -1546
  29. package/dist/nitro.d.ts +0 -19
  30. package/dist/nitro.js +0 -2
  31. package/dist/openworkflow-amN7IkGO.d.ts +0 -24
  32. package/dist/runtime/nitro-plugin.d.ts +0 -6
  33. package/dist/runtime/nitro-plugin.js +0 -14
  34. /package/dist/{_app-BVWpnNHo.d.ts → _app-DgwN4ulW.d.ts} +0 -0
  35. /package/dist/{app-BE3EYOWn.js → app-BZpq2cwC.js} +0 -0
  36. /package/dist/{cloudflare-CeHVSHoN.js → cloudflare-Cds1VIWa.js} +0 -0
  37. /package/dist/{cloudflare-shared-BIeY2kak.d.ts → cloudflare-shared-BVVgDSdq.d.ts} +0 -0
package/README.md CHANGED
@@ -9,6 +9,8 @@
9
9
 
10
10
  `@vite-hub/workflow` defines long-running work once and starts it through one `runWorkflow()` API.
11
11
 
12
+ Vercel definitions can register a native entry for durable execution. Definitions without one remain source-compatible, but execute inline and do not survive a function restart.
13
+
12
14
  ## Install
13
15
 
14
16
  ```sh
@@ -16,6 +18,7 @@ pnpm add @vite-hub/workflow
16
18
  ```
17
19
 
18
20
  Add the provider dependency for the workflow provider you configure.
21
+ OpenWorkflow worker lifecycle helpers live at `@vite-hub/workflow/runtime/openworkflow-worker`, so importing the provider-agnostic package root does not require OpenWorkflow's types.
19
22
 
20
23
  ## Minimal API
21
24
 
@@ -32,6 +35,30 @@ export default defineWorkflow<{ email: string }>(async ({ id, payload, step }) =
32
35
  })
33
36
  ```
34
37
 
38
+ For a durable Vercel run, keep the same context-shaped interface and register a native entry containing the Workflow DevKit directive:
39
+
40
+ ```ts
41
+ import { defineWorkflow, type WorkflowExecutionContext } from "@vite-hub/workflow"
42
+
43
+ interface WelcomePayload {
44
+ email: string
45
+ }
46
+
47
+ async function durableWelcome({ payload }: WorkflowExecutionContext<WelcomePayload>) {
48
+ "use workflow"
49
+
50
+ return { sentTo: payload.email }
51
+ }
52
+
53
+ async function inlineWelcome({ payload }: WorkflowExecutionContext<WelcomePayload>) {
54
+ return { sentTo: payload.email }
55
+ }
56
+
57
+ export default defineWorkflow(inlineWelcome, { native: durableWelcome })
58
+ ```
59
+
60
+ ViteHub transforms the native entry with Workflow DevKit when it generates Vercel provider output.
61
+
35
62
  ```ts
36
63
  // server/api/welcome.post.ts
37
64
  import { getWorkflowRun, runWorkflow } from "@vite-hub/workflow"
@@ -43,19 +70,42 @@ export default defineEventHandler(async (event) => {
43
70
  })
44
71
  ```
45
72
 
73
+ `getWorkflowRun()` normalizes provider run and step state, including timestamps, attempts, and failures. `cancelWorkflow()` cancels a durable run, and `resumeWorkflowSignal()` forwards an opaque signal token created inside the native workflow. Providers that cannot perform an operation fail explicitly instead of simulating it.
74
+
75
+ Throw `ViteHubError` when app callers need a stable, inspectable Workflow failure instead of parsing log output or provider-specific messages. ViteHub-owned failures use the package's fixed `WorkflowErrorCode` vocabulary.
76
+
77
+ ```ts
78
+ import { ViteHubError } from "@vite-hub/runtime"
79
+
80
+ async function transcribe(recordingId: string) {
81
+ try {
82
+ return await transcribeRecording(recordingId)
83
+ }
84
+ catch (cause) {
85
+ throw new ViteHubError("TRANSCRIPTION_FAILED", "Transcription failed.", {
86
+ cause,
87
+ details: { recordingId },
88
+ })
89
+ }
90
+ }
91
+ ```
92
+
93
+ `code` and `message` remain available through `error.toJSON()`. Keep `details` JSON-safe and free of secrets; `toJSON()` omits `cause`, which remains available only on the in-memory error. ViteHub's built-in codes are typed as `WorkflowErrorCode` and use code-derived messages and code-specific details. Workflow Step retry behavior belongs in the Step's retry options rather than the error.
94
+
46
95
  ```ts
47
- // nitro.config.ts
48
- import { defineNitroConfig } from "nitro/config"
96
+ // vite.config.ts
97
+ import { hubWorkflow } from "@vite-hub/workflow/vite"
98
+ import { defineConfig } from "vite"
49
99
 
50
- export default defineNitroConfig({
51
- modules: ["@vite-hub/workflow/nitro"],
100
+ export default defineConfig({
101
+ plugins: [hubWorkflow()],
52
102
  workflow: { provider: "openworkflow" },
53
103
  })
54
104
  ```
55
105
 
56
- ## Vite and Nitro
106
+ ## Vite Integration
57
107
 
58
- Nitro discovers `server/workflows/<name>.ts` and folder workflows such as `server/workflows/welcome/index.ts` with numbered step files. Vite also supports `src/<name>.workflow.ts` through `hubWorkflow()`.
108
+ Use `hubWorkflow()` in Vite to discover `server/workflows/<name>.ts`, folder workflows such as `server/workflows/welcome/index.ts` with numbered step files, and `src/<name>.workflow.ts`.
59
109
 
60
110
  Providers map to [OpenWorkflow](https://openworkflow.dev/docs/overview), [Cloudflare Workflows](https://developers.cloudflare.com/workflows/), or [Vercel Workflow](https://vercel.com/docs/workflow).
61
111
 
@@ -4,6 +4,7 @@ interface CloudflareWorkerExecutionContext {
4
4
  waitUntil?: (promise: Promise<unknown>) => void;
5
5
  }
6
6
  declare function setActiveCloudflareEnv(env: CloudflareWorkerEnv | undefined): void;
7
+ declare function runWithActiveCloudflareEnv<T>(env: CloudflareWorkerEnv | undefined, callback: () => T): T;
7
8
  type WaitUntilFn = (promise: Promise<unknown>) => void;
8
9
  interface CloudflareRuntimeEvent {
9
10
  context: {
@@ -18,4 +19,4 @@ interface CloudflareRuntimeEvent {
18
19
  }
19
20
  declare function createCloudflareRuntimeEvent(env: CloudflareWorkerEnv, context: CloudflareWorkerExecutionContext | undefined): CloudflareRuntimeEvent;
20
21
  //#endregion
21
- export { setActiveCloudflareEnv as i, CloudflareWorkerExecutionContext as n, createCloudflareRuntimeEvent as r, CloudflareWorkerEnv as t };
22
+ export { setActiveCloudflareEnv as a, runWithActiveCloudflareEnv as i, CloudflareWorkerExecutionContext as n, createCloudflareRuntimeEvent as r, CloudflareWorkerEnv as t };
@@ -6,11 +6,15 @@ function setActiveCloudflareEnv(env) {
6
6
  activeEnv = env;
7
7
  globalThis.__env__ = env;
8
8
  try {
9
- activeEnvStorage.enterWith(env);
9
+ activeEnvStorage.enterWith({ env });
10
10
  } catch {}
11
11
  }
12
+ function runWithActiveCloudflareEnv(env, callback) {
13
+ return activeEnvStorage.run({ env }, callback);
14
+ }
12
15
  function getActiveCloudflareEnv() {
13
- return activeEnvStorage.getStore() ?? activeEnv ?? globalThis.__env__;
16
+ const scoped = activeEnvStorage.getStore();
17
+ return scoped ? scoped.env : activeEnv ?? globalThis.__env__;
14
18
  }
15
19
  function getCloudflareEnv(event) {
16
20
  const target = event;
@@ -46,4 +50,4 @@ function createCloudflareRuntimeEvent(env, context) {
46
50
  };
47
51
  }
48
52
  //#endregion
49
- export { setActiveCloudflareEnv as i, getCloudflareEnv as n, resolveWaitUntil as r, createCloudflareRuntimeEvent as t };
53
+ export { setActiveCloudflareEnv as a, runWithActiveCloudflareEnv as i, getCloudflareEnv as n, resolveWaitUntil as r, createCloudflareRuntimeEvent as t };
@@ -1,7 +1,7 @@
1
- import { t as normalizeWorkflowOptions } from "./config-DkgsQuXz.js";
2
- import { i as setActiveCloudflareEnv, t as createCloudflareRuntimeEvent } from "./cloudflare-env-g0Rf3ClH.js";
1
+ import { t as normalizeWorkflowOptions } from "./config-BDqB6I4E.js";
2
+ import { i as runWithActiveCloudflareEnv, t as createCloudflareRuntimeEvent } from "./cloudflare-env-mFp2Uj6Z.js";
3
3
  import { runWithWorkflowRuntimeEvent, setWorkflowRuntimeConfig, setWorkflowRuntimeRegistry } from "./runtime/state.js";
4
- import { t as resolveAppFetch } from "./app-BE3EYOWn.js";
4
+ import { t as resolveAppFetch } from "./app-BZpq2cwC.js";
5
5
  import { H3, toWebHandler } from "h3/cloudflare";
6
6
  //#region ../internal/src/runtime/cloudflare-hosted.ts
7
7
  function createWebRequestHandler(appHandler) {
@@ -30,9 +30,8 @@ function createWorkflowCloudflareWorker(options = {}) {
30
30
  async onRequest({ env, executionContext, handle }) {
31
31
  setWorkflowRuntimeConfig(workflowConfig);
32
32
  setWorkflowRuntimeRegistry(options.registry);
33
- setActiveCloudflareEnv(env);
34
33
  const runtimeEvent = createCloudflareRuntimeEvent(env, executionContext);
35
- return await runWithWorkflowRuntimeEvent(runtimeEvent, () => handle(runtimeEvent.context));
34
+ return await runWithActiveCloudflareEnv(env, () => runWithWorkflowRuntimeEvent(runtimeEvent, () => handle(runtimeEvent.context)));
36
35
  }
37
36
  });
38
37
  }
@@ -1,5 +1,5 @@
1
1
  import { defu } from "defu";
2
- //#region ../internal/src/feature-bridge/hosting.ts
2
+ //#region ../internal/src/hosting.ts
3
3
  function normalizeHosting(hosting) {
4
4
  const normalized = hosting?.trim().toLowerCase().replaceAll("_", "-") || "";
5
5
  if (normalized === "cloudflare") return "cloudflare-module";
@@ -22,11 +22,26 @@ function readString(value, label) {
22
22
  if (typeof value !== "string" || !value.trim()) throw new TypeError(`\`${label}\` must be a non-empty string when provided.`);
23
23
  return value.trim();
24
24
  }
25
+ function readRuntimeConfigValue(value, label) {
26
+ if (typeof value === "undefined") return;
27
+ if (typeof value === "string") return readString(value, label);
28
+ if (!isRuntimeEnvDeclaration(value)) throw new TypeError(`\`${label}\` must be a string or runtime env declaration.`);
29
+ return value;
30
+ }
25
31
  function readBoolean(value, label) {
26
32
  if (typeof value === "undefined") return;
27
33
  if (typeof value !== "boolean") throw new TypeError(`\`${label}\` must be a boolean when provided.`);
28
34
  return value;
29
35
  }
36
+ function isRuntimeEnvDeclaration(value) {
37
+ return isPlainObject(value) && value.kind === "env-variable" && (!("source" in value) || isRuntimeEnvSource(value.source));
38
+ }
39
+ function isRuntimeEnvSource(value) {
40
+ return isPlainObject(value) && value.kind === "env" && typeof value.name === "string" && (!("names" in value) || Array.isArray(value.names) && value.names.every((name) => typeof name === "string"));
41
+ }
42
+ function readDatabaseName(value) {
43
+ return readString(value, "workflow.database");
44
+ }
30
45
  function readPositiveInteger(value, label) {
31
46
  if (typeof value === "undefined") return;
32
47
  if (!Number.isInteger(value) || value <= 0) throw new TypeError(`\`${label}\` must be a positive integer when provided.`);
@@ -38,7 +53,7 @@ function normalizeOpenWorkflowPostgresOptions(value) {
38
53
  const namespaceId = readString(value.namespaceId, "workflow.postgres.namespaceId");
39
54
  const runMigrations = readBoolean(value.runMigrations, "workflow.postgres.runMigrations");
40
55
  const schema = readString(value.schema, "workflow.postgres.schema");
41
- const url = readString(value.url, "workflow.postgres.url");
56
+ const url = readRuntimeConfigValue(value.url, "workflow.postgres.url");
42
57
  return {
43
58
  ...namespaceId ? { namespaceId } : {},
44
59
  ...typeof runMigrations === "boolean" ? { runMigrations } : {},
@@ -46,22 +61,38 @@ function normalizeOpenWorkflowPostgresOptions(value) {
46
61
  ...url ? { url } : {}
47
62
  };
48
63
  }
64
+ function normalizeOpenWorkflowSqliteOptions(value) {
65
+ if (typeof value === "undefined") return;
66
+ if (!isPlainObject(value)) throw new TypeError("`workflow.sqlite` must be a plain object.");
67
+ const namespaceId = readString(value.namespaceId, "workflow.sqlite.namespaceId");
68
+ const path = readRuntimeConfigValue(value.path, "workflow.sqlite.path");
69
+ const runMigrations = readBoolean(value.runMigrations, "workflow.sqlite.runMigrations");
70
+ return {
71
+ ...namespaceId ? { namespaceId } : {},
72
+ ...path ? { path } : {},
73
+ ...typeof runMigrations === "boolean" ? { runMigrations } : {}
74
+ };
75
+ }
49
76
  function normalizeOpenWorkflowWorkerOptions(value) {
50
77
  if (typeof value === "undefined") return;
51
78
  if (!isPlainObject(value)) throw new TypeError("`workflow.worker` must be a plain object.");
52
79
  const concurrency = readPositiveInteger(value.concurrency, "workflow.worker.concurrency");
53
80
  return typeof concurrency === "number" ? { concurrency } : {};
54
81
  }
55
- function hasOpenWorkflowPostgresConfig(options) {
56
- return isPlainObject(options.postgres) && typeof options.postgres.url === "string" && !!options.postgres.url.trim();
82
+ function hasOpenWorkflowStorageConfig(options) {
83
+ return typeof options.database === "string" && !!options.database.trim() || isPlainObject(options.postgres) && isDefinedRuntimeConfigValue(options.postgres.url) || isPlainObject(options.sqlite) && isDefinedRuntimeConfigValue(options.sqlite.path);
84
+ }
85
+ function isDefinedRuntimeConfigValue(value) {
86
+ return typeof value === "string" && !!value.trim() || isRuntimeEnvDeclaration(value);
57
87
  }
58
88
  function inferProvider(provider, hosting) {
59
89
  if (provider === "cloudflare" || provider === "openworkflow" || provider === "vercel") return provider;
90
+ if (hosting.includes("netlify")) throw new TypeError("`workflow.provider` cannot be inferred for Netlify hosting. Set `workflow.provider` explicitly or disable `workflow`.");
60
91
  if (hosting.includes("cloudflare")) return "cloudflare";
61
92
  return "vercel";
62
93
  }
63
94
  function inferProviderFromOptions(options, hosting) {
64
- if (typeof options.provider === "undefined" && (hosting.includes("node") || hosting.includes("docker")) && hasOpenWorkflowPostgresConfig(options)) return "openworkflow";
95
+ if (typeof options.provider === "undefined" && (hosting.includes("node") || hosting.includes("docker")) && hasOpenWorkflowStorageConfig(options)) return "openworkflow";
65
96
  return inferProvider(options.provider, hosting);
66
97
  }
67
98
  function resolveProvider(options, hosting) {
@@ -74,10 +105,17 @@ function resolveProvider(options, hosting) {
74
105
  const resolved = inferProviderFromOptions(options, hosting);
75
106
  if (resolved === "cloudflare") return defu(shared, { provider: "cloudflare" });
76
107
  if (resolved === "openworkflow") {
108
+ const database = readDatabaseName(options.database);
77
109
  const postgres = normalizeOpenWorkflowPostgresOptions(options.postgres);
110
+ const sqlite = normalizeOpenWorkflowSqliteOptions(options.sqlite);
78
111
  const worker = normalizeOpenWorkflowWorkerOptions(options.worker);
112
+ if (database && postgres?.url) throw new TypeError("`workflow.database` and `workflow.postgres.url` cannot both configure OpenWorkflow storage.");
113
+ if (database && sqlite?.path) throw new TypeError("`workflow.database` and `workflow.sqlite.path` cannot both configure OpenWorkflow storage.");
114
+ if (postgres?.url && sqlite?.path) throw new TypeError("`workflow.postgres.url` and `workflow.sqlite.path` cannot both configure OpenWorkflow storage.");
79
115
  return defu({
116
+ ...database ? { database } : {},
80
117
  ...postgres ? { postgres } : {},
118
+ ...sqlite ? { sqlite } : {},
81
119
  ...worker ? { worker } : {}
82
120
  }, shared, { provider: "openworkflow" });
83
121
  }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { A as WorkflowStepRunner, C as WorkflowProviderStep, D as WorkflowStartOptions, E as WorkflowSharedOptions, O as WorkflowStepFunction, S as WorkflowProviderOptions, T as WorkflowRunStatus, _ as WorkflowHandle, a as InferredWorkflowProviderOptions, b as WorkflowModuleProviderOptions, c as OpenWorkflowWorkerOptions, d as WorkflowCreateOptions, f as WorkflowDeferOptions, g as WorkflowExecutionContext, h as WorkflowDefinitionRegistry, i as DiscoveredWorkflowDefinition, k as WorkflowStepOptions, l as ResolvedWorkflowOptions, m as WorkflowDefinitionOptions, n as CloudflareWorkflowInstance, o as OpenWorkflowPostgresOptions, p as WorkflowDefinition, r as CloudflareWorkflowProviderOptions, s as OpenWorkflowProviderOptions, t as CloudflareWorkflowBinding, u as VercelWorkflowProviderOptions, v as WorkflowHandler, w as WorkflowRun, x as WorkflowProvider, y as WorkflowModuleOptions } from "./types-ThDitg7Z.js";
1
+ import { A as WorkflowStepFunction, C as WorkflowProviderStep, D as WorkflowSharedOptions, E as WorkflowRunStep, M as WorkflowStepRunner, O as WorkflowSignalResult, S as WorkflowProviderOptions, T as WorkflowRunStatus, _ as WorkflowHandle, a as InferredWorkflowProviderOptions, b as WorkflowModuleProviderOptions, c as OpenWorkflowWorkerOptions, d as WorkflowCreateOptions, f as WorkflowDeferOptions, g as WorkflowExecutionContext, h as WorkflowDefinitionRegistry, i as DiscoveredWorkflowDefinition, j as WorkflowStepOptions, k as WorkflowStartOptions, l as ResolvedWorkflowOptions, m as WorkflowDefinitionOptions, n as CloudflareWorkflowInstance, o as OpenWorkflowPostgresOptions, p as WorkflowDefinition, r as CloudflareWorkflowProviderOptions, s as OpenWorkflowProviderOptions, t as CloudflareWorkflowBinding, u as VercelWorkflowProviderOptions, v as WorkflowHandler, w as WorkflowRun, x as WorkflowProvider, y as WorkflowModuleOptions } from "./types-BUlYBZwH.js";
2
2
  import { createWorkflowCloudflareWorker } from "./runtime/cloudflare-vite.js";
3
- import { createOpenWorkflowWorker, startOpenWorkflowWorker } from "./runtime/openworkflow-worker.js";
3
+ import { ViteHubError } from "@vite-hub/runtime";
4
4
 
5
5
  //#region src/config.d.ts
6
6
  interface WorkflowResolutionInput {
@@ -9,23 +9,46 @@ interface WorkflowResolutionInput {
9
9
  declare function normalizeWorkflowOptions(options: WorkflowModuleOptions | undefined, input?: WorkflowResolutionInput): ResolvedWorkflowOptions | undefined;
10
10
  //#endregion
11
11
  //#region src/definition.d.ts
12
- declare function defineWorkflow<TPayload = unknown, TResult = unknown>(handler: WorkflowHandler<TPayload, TResult>, options?: WorkflowDefinitionOptions): WorkflowDefinition<TPayload, TResult>;
12
+ declare function defineWorkflow<TPayload = unknown, TResult = unknown>(handler: WorkflowHandler<TPayload, TResult>, options?: WorkflowDefinitionOptions<TPayload, TResult>): WorkflowDefinition<TPayload, TResult>;
13
13
  //#endregion
14
14
  //#region src/errors.d.ts
15
- interface WorkflowErrorOptions {
16
- cause?: unknown;
17
- code?: string;
18
- details?: Record<string, unknown>;
19
- httpStatus?: number;
20
- provider?: string;
21
- }
22
- declare class WorkflowError extends Error {
23
- readonly code?: string;
24
- readonly details?: Record<string, unknown>;
25
- readonly httpStatus?: number;
26
- readonly provider?: string;
27
- constructor(message: string, options?: WorkflowErrorOptions);
28
- }
15
+ declare const workflowErrorMessages: {
16
+ readonly OPENWORKFLOW_BACKEND_CLOSE_FAILED: "OpenWorkflow backend cleanup failed.";
17
+ readonly OPENWORKFLOW_RUNTIME_RESET: "OpenWorkflow runtime was reset while it was being acquired.";
18
+ readonly OPENWORKFLOW_WORKER_STOP_FAILED: "OpenWorkflow worker stop failed.";
19
+ readonly VERCEL_WORKFLOW_SDK_LOAD_FAILED: "Vercel Workflow DevKit load failed. Install the optional workflow peer dependency.";
20
+ readonly WORKFLOW_DEFINITION_NOT_FOUND: "Workflow definition was not found.";
21
+ readonly WORKFLOW_DISABLED: "Workflow is disabled.";
22
+ readonly WORKFLOW_NATIVE_ENTRY_INVALID: "Workflow has no transformed native Vercel entry.";
23
+ readonly WORKFLOW_NATIVE_ENTRY_REQUIRED: "Workflow has no native durable entry for Vercel.";
24
+ readonly WORKFLOW_OPERATION_UNSUPPORTED: "Workflow provider operation is unsupported.";
25
+ readonly WORKFLOW_PROVIDER_OPERATION_FAILED: "Workflow provider operation failed.";
26
+ readonly WORKFLOW_RUN_ID_UNSUPPORTED: "Native Vercel workflows assign their own run IDs.";
27
+ };
28
+ declare const workflowProviderNames: readonly ["cloudflare", "openworkflow", "vercel"];
29
+ declare const workflowOperationNames: readonly ["cancel", "cancellation", "connect", "create", "get", "get-run", "import", "list-steps", "resume-signal", "run", "signals", "start", "status"];
30
+ type WorkflowErrorCode = keyof typeof workflowErrorMessages;
31
+ type WorkflowOperationName = typeof workflowOperationNames[number];
32
+ type WorkflowProviderName = typeof workflowProviderNames[number];
33
+ type WorkflowNameDetails = {
34
+ name?: string;
35
+ };
36
+ type VercelWorkflowDetails = {
37
+ name?: string;
38
+ provider: "vercel";
39
+ };
40
+ type WorkflowOperationDetails = {
41
+ operation: WorkflowOperationName;
42
+ provider: WorkflowProviderName;
43
+ };
44
+ type WorkflowProviderOperationDetails = WorkflowOperationDetails & {
45
+ status?: number;
46
+ };
47
+ type WorkflowErrorDetails<TCode extends WorkflowErrorCode = WorkflowErrorCode> = TCode extends "OPENWORKFLOW_BACKEND_CLOSE_FAILED" | "OPENWORKFLOW_RUNTIME_RESET" | "OPENWORKFLOW_WORKER_STOP_FAILED" ? {
48
+ provider: "openworkflow";
49
+ } : TCode extends "VERCEL_WORKFLOW_SDK_LOAD_FAILED" ? {
50
+ provider: "vercel";
51
+ } : TCode extends "WORKFLOW_DEFINITION_NOT_FOUND" ? WorkflowNameDetails : TCode extends "WORKFLOW_DISABLED" ? Record<string, never> : TCode extends "WORKFLOW_NATIVE_ENTRY_INVALID" | "WORKFLOW_NATIVE_ENTRY_REQUIRED" | "WORKFLOW_RUN_ID_UNSUPPORTED" ? VercelWorkflowDetails : TCode extends "WORKFLOW_OPERATION_UNSUPPORTED" ? WorkflowOperationDetails : TCode extends "WORKFLOW_PROVIDER_OPERATION_FAILED" ? WorkflowProviderOperationDetails : never;
29
52
  //#endregion
30
53
  //#region src/integrations/cloudflare.d.ts
31
54
  declare function getCloudflareWorkflowBindingName(name: string): string;
@@ -44,6 +67,8 @@ declare function createWorkflow<TPayload = unknown, TResult = unknown>(name: str
44
67
  declare function createWorkflow<TPayload = unknown, TResult = unknown>(name: string, handler: WorkflowHandler<TPayload, TResult>, options?: WorkflowCreateOptions<TPayload, TResult>): WorkflowHandle<TPayload, TResult>;
45
68
  declare function runWorkflow<TPayload = unknown, TResult = unknown>(name: string, payload?: TPayload, options?: WorkflowDeferOptions): Promise<WorkflowRun<TPayload, TResult>>;
46
69
  declare function getWorkflowRun<TPayload = unknown, TResult = unknown>(name: string, id: string): Promise<WorkflowRun<TPayload, TResult>>;
70
+ declare function cancelWorkflow<TPayload = unknown, TResult = unknown>(name: string, id: string): Promise<WorkflowRun<TPayload, TResult>>;
71
+ declare function resumeWorkflowSignal<TPayload = unknown>(token: string, payload: TPayload): Promise<WorkflowSignalResult>;
47
72
  declare function deferWorkflow<TPayload = unknown>(name: string, payload?: TPayload, options?: WorkflowStartOptions): Promise<WorkflowRun<TPayload>>;
48
73
  //#endregion
49
74
  //#region src/runtime/payload.d.ts
@@ -62,4 +87,4 @@ declare function readRequestPayload<T = unknown>(request: Request): Promise<T>;
62
87
  declare function validatePayload<T>(payload: unknown, schema: PayloadValidator<T>): Promise<T>;
63
88
  declare function readValidatedPayload<T>(request: Request, schema: PayloadValidator<T>): Promise<T>;
64
89
  //#endregion
65
- export { type CloudflareWorkflowBinding, type CloudflareWorkflowInstance, type CloudflareWorkflowProviderOptions, type DiscoveredWorkflowDefinition, type InferredWorkflowProviderOptions, type OpenWorkflowPostgresOptions, type OpenWorkflowProviderOptions, type OpenWorkflowWorkerOptions, type ResolvedWorkflowOptions, type VercelWorkflowProviderOptions, type WorkflowCreateOptions, type WorkflowDeferOptions, type WorkflowDefinition, type WorkflowDefinitionOptions, type WorkflowDefinitionRegistry, WorkflowError, type WorkflowExecutionContext, type WorkflowHandle, type WorkflowHandler, type WorkflowModuleOptions, type WorkflowModuleProviderOptions, type WorkflowProvider, type WorkflowProviderOptions, type WorkflowProviderStep, type WorkflowRun, type WorkflowRunStatus, type WorkflowSharedOptions, type WorkflowStartOptions, type WorkflowStepFunction, type WorkflowStepOptions, type WorkflowStepRunner, createOpenWorkflowWorker, createWorkflow, createWorkflowCloudflareWorker, deferWorkflow, defineWorkflow, getCloudflareWorkflowBindingName, getCloudflareWorkflowClassName, getCloudflareWorkflowName, getVercelWorkflowName, getWorkflowRun, normalizeWorkflowOptions, readRequestPayload, readValidatedPayload, runWorkflow, startOpenWorkflowWorker, validatePayload };
90
+ export { type CloudflareWorkflowBinding, type CloudflareWorkflowInstance, type CloudflareWorkflowProviderOptions, type DiscoveredWorkflowDefinition, type InferredWorkflowProviderOptions, type OpenWorkflowPostgresOptions, type OpenWorkflowProviderOptions, type OpenWorkflowWorkerOptions, type ResolvedWorkflowOptions, type VercelWorkflowProviderOptions, type WorkflowCreateOptions, type WorkflowDeferOptions, type WorkflowDefinition, type WorkflowDefinitionOptions, type WorkflowDefinitionRegistry, type WorkflowErrorCode, type WorkflowErrorDetails, type WorkflowExecutionContext, type WorkflowHandle, type WorkflowHandler, type WorkflowModuleOptions, type WorkflowModuleProviderOptions, type WorkflowOperationName, type WorkflowProvider, type WorkflowProviderName, type WorkflowProviderOptions, type WorkflowProviderStep, type WorkflowRun, type WorkflowRunStatus, type WorkflowRunStep, type WorkflowSharedOptions, type WorkflowSignalResult, type WorkflowStartOptions, type WorkflowStepFunction, type WorkflowStepOptions, type WorkflowStepRunner, cancelWorkflow, createWorkflow, createWorkflowCloudflareWorker, deferWorkflow, defineWorkflow, getCloudflareWorkflowBindingName, getCloudflareWorkflowClassName, getCloudflareWorkflowName, getVercelWorkflowName, getWorkflowRun, normalizeWorkflowOptions, readRequestPayload, readValidatedPayload, resumeWorkflowSignal, runWorkflow, validatePayload };