@workflow/world-postgres 4.0.1-beta.3 → 4.1.0-beta.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/drizzle/schema.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,iBAAiB,iMAG7B,CAAC;AAEF,eAAO,MAAM,UAAU,2KAGtB,CAAC;AAYF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC;AAEtC,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBhB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAclB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBjB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBjB,CAAC;AAQF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYnB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/drizzle/schema.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,iBAAiB,iMAG7B,CAAC;AAEF,eAAO,MAAM,UAAU,2KAGtB,CAAC;AAYF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC;AAEtC,eAAO,MAAM,MAAM,oDAAuB,CAAC;AAE3C,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBhB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAclB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBjB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBjB,CAAC;AAQF,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYnB,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { StepStatusSchema, WorkflowRunStatusSchema, } from '@workflow/world';
2
- import { boolean, customType, index, integer, jsonb, pgEnum, pgTable, primaryKey, text, timestamp, varchar, } from 'drizzle-orm/pg-core';
2
+ import { boolean, customType, index, integer, jsonb, pgEnum, pgSchema, primaryKey, text, timestamp, varchar, } from 'drizzle-orm/pg-core';
3
3
  function mustBeMoreThanOne(t) {
4
4
  return t;
5
5
  }
6
6
  export const workflowRunStatus = pgEnum('status', mustBeMoreThanOne(WorkflowRunStatusSchema.options));
7
7
  export const stepStatus = pgEnum('step_status', mustBeMoreThanOne(StepStatusSchema.options));
8
- export const runs = pgTable('workflow_runs', {
8
+ export const schema = pgSchema('workflow');
9
+ export const runs = schema.table('workflow_runs', {
9
10
  runId: varchar('id').primaryKey(),
10
11
  output: jsonb('output').$type(),
11
12
  deploymentId: varchar('deployment_id').notNull(),
@@ -14,7 +15,6 @@ export const runs = pgTable('workflow_runs', {
14
15
  executionContext: jsonb('execution_context').$type(),
15
16
  input: jsonb('input').$type().notNull(),
16
17
  error: text('error'),
17
- errorCode: varchar('error_code'),
18
18
  createdAt: timestamp('created_at').defaultNow().notNull(),
19
19
  updatedAt: timestamp('updated_at')
20
20
  .defaultNow()
@@ -26,7 +26,7 @@ export const runs = pgTable('workflow_runs', {
26
26
  workflowNameIdx: index().on(tb.workflowName),
27
27
  statusIdx: index().on(tb.status),
28
28
  }));
29
- export const events = pgTable('workflow_events', {
29
+ export const events = schema.table('workflow_events', {
30
30
  eventId: varchar('id').primaryKey(),
31
31
  eventType: varchar('type').$type().notNull(),
32
32
  correlationId: varchar('correlation_id'),
@@ -37,7 +37,7 @@ export const events = pgTable('workflow_events', {
37
37
  runFk: index().on(tb.runId),
38
38
  correlationIdFk: index().on(tb.correlationId),
39
39
  }));
40
- export const steps = pgTable('workflow_steps', {
40
+ export const steps = schema.table('workflow_steps', {
41
41
  runId: varchar('run_id').notNull(),
42
42
  stepId: varchar('step_id').primaryKey(),
43
43
  stepName: varchar('step_name').notNull(),
@@ -45,7 +45,6 @@ export const steps = pgTable('workflow_steps', {
45
45
  input: jsonb('input').$type().notNull(),
46
46
  output: jsonb('output').$type(),
47
47
  error: text('error'),
48
- errorCode: varchar('error_code'),
49
48
  attempt: integer('attempt').notNull(),
50
49
  startedAt: timestamp('started_at'),
51
50
  completedAt: timestamp('completed_at'),
@@ -54,11 +53,12 @@ export const steps = pgTable('workflow_steps', {
54
53
  .defaultNow()
55
54
  .$onUpdateFn(() => new Date())
56
55
  .notNull(),
56
+ retryAfter: timestamp('retry_after'),
57
57
  }, (tb) => ({
58
58
  runFk: index().on(tb.runId),
59
59
  statusIdx: index().on(tb.status),
60
60
  }));
61
- export const hooks = pgTable('workflow_hooks', {
61
+ export const hooks = schema.table('workflow_hooks', {
62
62
  runId: varchar('run_id').notNull(),
63
63
  hookId: varchar('hook_id').primaryKey(),
64
64
  token: varchar('token').notNull(),
@@ -76,7 +76,7 @@ const bytea = customType({
76
76
  return 'bytea';
77
77
  },
78
78
  });
79
- export const streams = pgTable('workflow_stream_chunks', {
79
+ export const streams = schema.table('workflow_stream_chunks', {
80
80
  chunkId: varchar('id').$type().notNull(),
81
81
  streamId: varchar('stream_id').notNull(),
82
82
  chunkData: bytea('data').notNull(),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/drizzle/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/drizzle/schema.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,6 @@ import type { PostgresWorldConfig } from './config.js';
3
3
  export declare function createWorld(config?: PostgresWorldConfig): World & {
4
4
  start(): Promise<void>;
5
5
  };
6
+ export type { PostgresWorldConfig } from './config.js';
7
+ export * from './drizzle/schema.js';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoBvD,wBAAgB,WAAW,CACzB,MAAM,GAAE,mBAQP,GACA,KAAK,GAAG;IAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAkBpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAoBvD,wBAAgB,WAAW,CACzB,MAAM,GAAE,mBAQP,GACA,KAAK,GAAG;IAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAkBpC;AAGD,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -36,4 +36,5 @@ export function createWorld(config = {
36
36
  },
37
37
  };
38
38
  }
39
+ export * from './drizzle/schema.js';
39
40
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,cAAc,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;QACpC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;QAClC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,SAA8B;IAC5B,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,6CAA6C;IAC/C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B;IACnD,gBAAgB,EACd,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtE,EAAE;CACL;IAED,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO;QACL,GAAG,OAAO;QACV,GAAG,QAAQ;QACX,GAAG,KAAK;QACR,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,cAAc,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAChC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC;QACpC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;QAClC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,SAA8B;IAC5B,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,6CAA6C;IAC/C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B;IACnD,gBAAgB,EACd,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtE,EAAE;CACL;IAED,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO;QACL,GAAG,OAAO;QACV,GAAG,QAAQ;QACX,GAAG,KAAK;QACR,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAID,cAAc,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,OAAO,EACR,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,oBAAoB,CAAC;AAI1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAgJnE;AAMD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmFvE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAkFrE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA2GrE"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAQV,OAAO,EAIR,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,oBAAoB,CAAC;AA4H1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAoMnE;AAMD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8FvE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA+FrE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAuHrE"}
package/dist/storage.js CHANGED
@@ -1,8 +1,119 @@
1
1
  import { WorkflowAPIError } from '@workflow/errors';
2
+ import { EventSchema, HookSchema, StepSchema, WorkflowRunSchema, } from '@workflow/world';
2
3
  import { and, desc, eq, gt, lt, sql } from 'drizzle-orm';
3
4
  import { monotonicFactory } from 'ulid';
4
5
  import { Schema } from './drizzle/index.js';
5
6
  import { compact } from './util.js';
7
+ /**
8
+ * Serialize a StructuredError object into a JSON string
9
+ */
10
+ function serializeRunError(data) {
11
+ if (!data.error) {
12
+ return data;
13
+ }
14
+ const { error, ...rest } = data;
15
+ return {
16
+ ...rest,
17
+ error: JSON.stringify({
18
+ message: error.message,
19
+ stack: error.stack,
20
+ code: error.code,
21
+ }),
22
+ };
23
+ }
24
+ /**
25
+ * Deserialize error JSON string (or legacy flat fields) into a StructuredError object
26
+ * Handles backwards compatibility:
27
+ * - If error is a JSON string with {message, stack, code} → parse into StructuredError
28
+ * - If error is a plain string → treat as error message
29
+ * - If errorStack/errorCode exist (legacy) → combine into StructuredError
30
+ */
31
+ function deserializeRunError(run) {
32
+ const { error, errorStack, errorCode, ...rest } = run;
33
+ if (!error && !errorStack && !errorCode) {
34
+ return run;
35
+ }
36
+ // Try to parse as structured error JSON
37
+ if (error) {
38
+ try {
39
+ const parsed = JSON.parse(error);
40
+ if (typeof parsed === 'object' && parsed.message !== undefined) {
41
+ return {
42
+ ...rest,
43
+ error: {
44
+ message: parsed.message,
45
+ stack: parsed.stack,
46
+ code: parsed.code,
47
+ },
48
+ };
49
+ }
50
+ }
51
+ catch {
52
+ // Not JSON, treat as plain string
53
+ }
54
+ }
55
+ // Backwards compatibility: handle legacy separate fields or plain string error
56
+ return {
57
+ ...rest,
58
+ error: {
59
+ message: error || '',
60
+ stack: errorStack,
61
+ code: errorCode,
62
+ },
63
+ };
64
+ }
65
+ /**
66
+ * Serialize a StructuredError object into a JSON string for steps
67
+ */
68
+ function serializeStepError(data) {
69
+ if (!data.error) {
70
+ return data;
71
+ }
72
+ const { error, ...rest } = data;
73
+ return {
74
+ ...rest,
75
+ error: JSON.stringify({
76
+ message: error.message,
77
+ stack: error.stack,
78
+ code: error.code,
79
+ }),
80
+ };
81
+ }
82
+ /**
83
+ * Deserialize error JSON string (or legacy flat fields) into a StructuredError object for steps
84
+ */
85
+ function deserializeStepError(step) {
86
+ const { error, ...rest } = step;
87
+ if (!error) {
88
+ return step;
89
+ }
90
+ // Try to parse as structured error JSON
91
+ if (error) {
92
+ try {
93
+ const parsed = JSON.parse(error);
94
+ if (typeof parsed === 'object' && parsed.message !== undefined) {
95
+ return {
96
+ ...rest,
97
+ error: {
98
+ message: parsed.message,
99
+ stack: parsed.stack,
100
+ code: parsed.code,
101
+ },
102
+ };
103
+ }
104
+ }
105
+ catch {
106
+ // Not JSON, treat as plain string
107
+ }
108
+ }
109
+ // Backwards compatibility: handle legacy separate fields or plain string error
110
+ return {
111
+ ...rest,
112
+ error: {
113
+ message: error || '',
114
+ },
115
+ };
116
+ }
6
117
  export function createRunsStorage(drizzle) {
7
118
  const ulid = monotonicFactory();
8
119
  const { runs } = Schema;
@@ -13,14 +124,17 @@ export function createRunsStorage(drizzle) {
13
124
  .limit(1)
14
125
  .prepare('workflow_runs_get');
15
126
  return {
16
- async get(id) {
127
+ async get(id, params) {
17
128
  const [value] = await get.execute({ id });
18
129
  if (!value) {
19
130
  throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
20
131
  }
21
- return compact(value);
132
+ const deserialized = deserializeRunError(compact(value));
133
+ const parsed = WorkflowRunSchema.parse(deserialized);
134
+ const resolveData = params?.resolveData ?? 'all';
135
+ return filterRunData(parsed, resolveData);
22
136
  },
23
- async cancel(id) {
137
+ async cancel(id, params) {
24
138
  // TODO: we might want to guard this for only specific statuses
25
139
  const [value] = await drizzle
26
140
  .update(Schema.runs)
@@ -30,9 +144,14 @@ export function createRunsStorage(drizzle) {
30
144
  if (!value) {
31
145
  throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
32
146
  }
33
- return compact(value);
147
+ // Clean up all hooks for this run when cancelling
148
+ await drizzle.delete(Schema.hooks).where(eq(Schema.hooks.runId, id));
149
+ const deserialized = deserializeRunError(compact(value));
150
+ const parsed = WorkflowRunSchema.parse(deserialized);
151
+ const resolveData = params?.resolveData ?? 'all';
152
+ return filterRunData(parsed, resolveData);
34
153
  },
35
- async pause(id) {
154
+ async pause(id, params) {
36
155
  // TODO: we might want to guard this for only specific statuses
37
156
  const [value] = await drizzle
38
157
  .update(Schema.runs)
@@ -42,12 +161,31 @@ export function createRunsStorage(drizzle) {
42
161
  if (!value) {
43
162
  throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
44
163
  }
45
- return compact(value);
164
+ const deserialized = deserializeRunError(compact(value));
165
+ const parsed = WorkflowRunSchema.parse(deserialized);
166
+ const resolveData = params?.resolveData ?? 'all';
167
+ return filterRunData(parsed, resolveData);
46
168
  },
47
- async resume(id) {
169
+ async resume(id, params) {
170
+ // Fetch current run to check if startedAt is already set
171
+ const [currentRun] = await drizzle
172
+ .select()
173
+ .from(runs)
174
+ .where(eq(runs.runId, id))
175
+ .limit(1);
176
+ if (!currentRun) {
177
+ throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
178
+ }
179
+ const updates = {
180
+ status: 'running',
181
+ };
182
+ // Only set startedAt the first time the run transitions to 'running'
183
+ if (!currentRun.startedAt) {
184
+ updates.startedAt = new Date();
185
+ }
48
186
  const [value] = await drizzle
49
187
  .update(Schema.runs)
50
- .set({ status: 'running' })
188
+ .set(updates)
51
189
  .where(and(eq(runs.runId, id), eq(runs.status, 'paused')))
52
190
  .returning();
53
191
  if (!value) {
@@ -55,7 +193,10 @@ export function createRunsStorage(drizzle) {
55
193
  status: 404,
56
194
  });
57
195
  }
58
- return compact(value);
196
+ const deserialized = deserializeRunError(compact(value));
197
+ const parsed = WorkflowRunSchema.parse(deserialized);
198
+ const resolveData = params?.resolveData ?? 'all';
199
+ return filterRunData(parsed, resolveData);
59
200
  },
60
201
  async list(params) {
61
202
  const limit = params?.pagination?.limit ?? 20;
@@ -68,8 +209,13 @@ export function createRunsStorage(drizzle) {
68
209
  .limit(limit + 1);
69
210
  const values = all.slice(0, limit);
70
211
  const hasMore = all.length > limit;
212
+ const resolveData = params?.resolveData ?? 'all';
71
213
  return {
72
- data: values.map(compact),
214
+ data: values.map((v) => {
215
+ const deserialized = deserializeRunError(compact(v));
216
+ const parsed = WorkflowRunSchema.parse(deserialized);
217
+ return filterRunData(parsed, resolveData);
218
+ }),
73
219
  hasMore,
74
220
  cursor: values.at(-1)?.runId ?? null,
75
221
  };
@@ -93,7 +239,7 @@ export function createRunsStorage(drizzle) {
93
239
  status: 409,
94
240
  });
95
241
  }
96
- return compact(value);
242
+ return deserializeRunError(compact(value));
97
243
  },
98
244
  async update(id, data) {
99
245
  // Fetch current run to check if startedAt is already set
@@ -105,17 +251,20 @@ export function createRunsStorage(drizzle) {
105
251
  if (!currentRun) {
106
252
  throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
107
253
  }
254
+ // Serialize the error field if present
255
+ const serialized = serializeRunError(data);
108
256
  const updates = {
109
- ...data,
257
+ ...serialized,
110
258
  output: data.output,
111
259
  };
112
260
  // Only set startedAt the first time transitioning to 'running'
113
261
  if (data.status === 'running' && !currentRun.startedAt) {
114
262
  updates.startedAt = new Date();
115
263
  }
116
- if (data.status === 'completed' ||
264
+ const isBecomingTerminal = data.status === 'completed' ||
117
265
  data.status === 'failed' ||
118
- data.status === 'cancelled') {
266
+ data.status === 'cancelled';
267
+ if (isBecomingTerminal) {
119
268
  updates.completedAt = new Date();
120
269
  }
121
270
  const [value] = await drizzle
@@ -126,7 +275,11 @@ export function createRunsStorage(drizzle) {
126
275
  if (!value) {
127
276
  throw new WorkflowAPIError(`Run not found: ${id}`, { status: 404 });
128
277
  }
129
- return compact(value);
278
+ // If transitioning to a terminal status, clean up all hooks for this run
279
+ if (isBecomingTerminal) {
280
+ await drizzle.delete(Schema.hooks).where(eq(Schema.hooks.runId, id));
281
+ }
282
+ return deserializeRunError(compact(value));
130
283
  },
131
284
  };
132
285
  }
@@ -137,7 +290,7 @@ export function createEventsStorage(drizzle) {
137
290
  const ulid = monotonicFactory();
138
291
  const { events } = Schema;
139
292
  return {
140
- async create(runId, data) {
293
+ async create(runId, data, params) {
141
294
  const eventId = `wevt_${ulid()}`;
142
295
  const [value] = await drizzle
143
296
  .insert(events)
@@ -154,7 +307,10 @@ export function createEventsStorage(drizzle) {
154
307
  status: 409,
155
308
  });
156
309
  }
157
- return { ...data, ...value, runId, eventId };
310
+ const result = { ...data, ...value, runId, eventId };
311
+ const parsed = EventSchema.parse(result);
312
+ const resolveData = params?.resolveData ?? 'all';
313
+ return filterEventData(parsed, resolveData);
158
314
  },
159
315
  async list(params) {
160
316
  const limit = params?.pagination?.limit ?? 100;
@@ -169,8 +325,12 @@ export function createEventsStorage(drizzle) {
169
325
  .orderBy(order.by)
170
326
  .limit(limit + 1);
171
327
  const values = all.slice(0, limit);
328
+ const resolveData = params?.resolveData ?? 'all';
172
329
  return {
173
- data: values.map(compact),
330
+ data: values.map((v) => {
331
+ const parsed = EventSchema.parse(compact(v));
332
+ return filterEventData(parsed, resolveData);
333
+ }),
174
334
  cursor: values.at(-1)?.eventId ?? null,
175
335
  hasMore: all.length > limit,
176
336
  };
@@ -188,8 +348,12 @@ export function createEventsStorage(drizzle) {
188
348
  .orderBy(order.by)
189
349
  .limit(limit + 1);
190
350
  const values = all.slice(0, limit);
351
+ const resolveData = params?.resolveData ?? 'all';
191
352
  return {
192
- data: values.map(compact),
353
+ data: values.map((v) => {
354
+ const parsed = EventSchema.parse(compact(v));
355
+ return filterEventData(parsed, resolveData);
356
+ }),
193
357
  cursor: values.at(-1)?.eventId ?? null,
194
358
  hasMore: all.length > limit,
195
359
  };
@@ -205,15 +369,17 @@ export function createHooksStorage(drizzle) {
205
369
  .limit(1)
206
370
  .prepare('workflow_hooks_get_by_token');
207
371
  return {
208
- async get(hookId) {
372
+ async get(hookId, params) {
209
373
  const [value] = await drizzle
210
374
  .select()
211
375
  .from(hooks)
212
376
  .where(eq(hooks.hookId, hookId))
213
377
  .limit(1);
214
- return compact(value);
378
+ const parsed = HookSchema.parse(compact(value));
379
+ const resolveData = params?.resolveData ?? 'all';
380
+ return filterHookData(parsed, resolveData);
215
381
  },
216
- async create(runId, data) {
382
+ async create(runId, data, params) {
217
383
  const [value] = await drizzle
218
384
  .insert(hooks)
219
385
  .values({
@@ -231,16 +397,20 @@ export function createHooksStorage(drizzle) {
231
397
  status: 409,
232
398
  });
233
399
  }
234
- return compact(value);
400
+ const parsed = HookSchema.parse(compact(value));
401
+ const resolveData = params?.resolveData ?? 'all';
402
+ return filterHookData(parsed, resolveData);
235
403
  },
236
- async getByToken(token) {
404
+ async getByToken(token, params) {
237
405
  const [value] = await getByToken.execute({ token });
238
406
  if (!value) {
239
407
  throw new WorkflowAPIError(`Hook not found for token: ${token}`, {
240
408
  status: 404,
241
409
  });
242
410
  }
243
- return compact(value);
411
+ const parsed = HookSchema.parse(compact(value));
412
+ const resolveData = params?.resolveData ?? 'all';
413
+ return filterHookData(parsed, resolveData);
244
414
  },
245
415
  async list(params) {
246
416
  const limit = params?.pagination?.limit ?? 100;
@@ -253,13 +423,17 @@ export function createHooksStorage(drizzle) {
253
423
  .limit(limit + 1);
254
424
  const values = all.slice(0, limit);
255
425
  const hasMore = all.length > limit;
426
+ const resolveData = params?.resolveData ?? 'all';
256
427
  return {
257
- data: values.map(compact),
428
+ data: values.map((v) => {
429
+ const parsed = HookSchema.parse(compact(v));
430
+ return filterHookData(parsed, resolveData);
431
+ }),
258
432
  cursor: values.at(-1)?.hookId ?? null,
259
433
  hasMore,
260
434
  };
261
435
  },
262
- async dispose(hookId) {
436
+ async dispose(hookId, params) {
263
437
  const [value] = await drizzle
264
438
  .delete(hooks)
265
439
  .where(eq(hooks.hookId, hookId))
@@ -269,18 +443,14 @@ export function createHooksStorage(drizzle) {
269
443
  status: 404,
270
444
  });
271
445
  }
272
- return compact(value);
446
+ const parsed = HookSchema.parse(compact(value));
447
+ const resolveData = params?.resolveData ?? 'all';
448
+ return filterHookData(parsed, resolveData);
273
449
  },
274
450
  };
275
451
  }
276
452
  export function createStepsStorage(drizzle) {
277
453
  const { steps } = Schema;
278
- const get = drizzle
279
- .select()
280
- .from(steps)
281
- .where(and(eq(steps.stepId, sql.placeholder('stepId')), eq(steps.runId, sql.placeholder('runId'))))
282
- .limit(1)
283
- .prepare('workflow_steps_get');
284
454
  return {
285
455
  async create(runId, data) {
286
456
  const [value] = await drizzle
@@ -300,16 +470,27 @@ export function createStepsStorage(drizzle) {
300
470
  status: 409,
301
471
  });
302
472
  }
303
- return compact(value);
473
+ return deserializeStepError(compact(value));
304
474
  },
305
- async get(runId, stepId) {
306
- const [value] = await get.execute({ stepId, runId });
475
+ async get(runId, stepId, params) {
476
+ // If runId is not provided, query only by stepId
477
+ const whereClause = runId
478
+ ? and(eq(steps.stepId, stepId), eq(steps.runId, runId))
479
+ : eq(steps.stepId, stepId);
480
+ const [value] = await drizzle
481
+ .select()
482
+ .from(steps)
483
+ .where(whereClause)
484
+ .limit(1);
307
485
  if (!value) {
308
486
  throw new WorkflowAPIError(`Step not found: ${stepId}`, {
309
487
  status: 404,
310
488
  });
311
489
  }
312
- return compact(value);
490
+ const deserialized = deserializeStepError(compact(value));
491
+ const parsed = StepSchema.parse(deserialized);
492
+ const resolveData = params?.resolveData ?? 'all';
493
+ return filterStepData(parsed, resolveData);
313
494
  },
314
495
  async update(runId, stepId, data) {
315
496
  // Fetch current step to check if startedAt is already set
@@ -323,8 +504,10 @@ export function createStepsStorage(drizzle) {
323
504
  status: 404,
324
505
  });
325
506
  }
507
+ // Serialize the error field if present
508
+ const serialized = serializeStepError(data);
326
509
  const updates = {
327
- ...data,
510
+ ...serialized,
328
511
  output: data.output,
329
512
  };
330
513
  const now = new Date();
@@ -345,7 +528,7 @@ export function createStepsStorage(drizzle) {
345
528
  status: 404,
346
529
  });
347
530
  }
348
- return compact(value);
531
+ return deserializeStepError(compact(value));
349
532
  },
350
533
  async list(params) {
351
534
  const limit = params?.pagination?.limit ?? 20;
@@ -358,12 +541,45 @@ export function createStepsStorage(drizzle) {
358
541
  .limit(limit + 1);
359
542
  const values = all.slice(0, limit);
360
543
  const hasMore = all.length > limit;
544
+ const resolveData = params?.resolveData ?? 'all';
361
545
  return {
362
- data: values.map(compact),
546
+ data: values.map((v) => {
547
+ const deserialized = deserializeStepError(compact(v));
548
+ const parsed = StepSchema.parse(deserialized);
549
+ return filterStepData(parsed, resolveData);
550
+ }),
363
551
  hasMore,
364
552
  cursor: values.at(-1)?.stepId ?? null,
365
553
  };
366
554
  },
367
555
  };
368
556
  }
557
+ function filterStepData(step, resolveData) {
558
+ if (resolveData === 'none') {
559
+ const { input: _, output: __, ...rest } = step;
560
+ return { input: [], output: undefined, ...rest };
561
+ }
562
+ return step;
563
+ }
564
+ function filterRunData(run, resolveData) {
565
+ if (resolveData === 'none') {
566
+ const { input: _, output: __, ...rest } = run;
567
+ return { input: [], output: undefined, ...rest };
568
+ }
569
+ return run;
570
+ }
571
+ function filterHookData(hook, resolveData) {
572
+ if (resolveData === 'none' && 'metadata' in hook) {
573
+ const { metadata: _, ...rest } = hook;
574
+ return { metadata: undefined, ...rest };
575
+ }
576
+ return hook;
577
+ }
578
+ function filterEventData(event, resolveData) {
579
+ if (resolveData === 'none' && 'eventData' in event) {
580
+ const { eventData: _, ...rest } = event;
581
+ return rest;
582
+ }
583
+ return event;
584
+ }
369
585
  //# sourceMappingURL=storage.js.map