@pasko70/pibo 3.3.0 → 3.4.1

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 (237) hide show
  1. package/dist/agent-runtime/capabilities.js +5 -0
  2. package/dist/agent-runtime/contract.js +2 -0
  3. package/dist/agent-runtime/routed-session.js +70 -11
  4. package/dist/agent-runtimes/codex-native/adapter.js +3 -0
  5. package/dist/agent-runtimes/codex-native/thread.js +26 -4
  6. package/dist/agent-runtimes/omp/adapter.js +1 -0
  7. package/dist/agent-runtimes/pi/adapter.js +4 -0
  8. package/dist/agent-runtimes/pi/routed-session.js +53 -5
  9. package/dist/apps/chat/chat-api-routes.js +11 -37
  10. package/dist/apps/chat/chat-request-normalizers.js +8 -48
  11. package/dist/apps/chat/data/legacy-project-migration.js +492 -0
  12. package/dist/apps/chat/data/room-service.js +2 -2
  13. package/dist/apps/chat/data/workflow-session-model.js +1 -0
  14. package/dist/apps/chat/data/workflow-session-service.js +352 -0
  15. package/dist/apps/chat/rooms.js +1 -1
  16. package/dist/apps/chat/types/rooms.js +30 -0
  17. package/dist/apps/chat/web-app.js +264 -647
  18. package/dist/apps/chat/workflow-catalog.js +18 -18
  19. package/dist/apps/chat/{project-workflow-human-actions.js → workflow-human-actions.js} +14 -14
  20. package/dist/apps/chat/workflow-manual-trigger-runtime.js +5 -1
  21. package/dist/apps/chat/workflow-persistence.js +20 -28
  22. package/dist/apps/chat/{project-workflow-sessions.js → workflow-sessions.js} +18 -17
  23. package/dist/apps/chat-ui/assets/{dist-Kc3zbvQi.js → dist-Abz605MV.js} +1 -1
  24. package/dist/apps/chat-ui/assets/{dist-C9a0_446.js → dist-D0md0xIR.js} +1 -1
  25. package/dist/apps/chat-ui/assets/{dist-CcAkJ8iv.js → dist-DHnaUMlq.js} +1 -1
  26. package/dist/apps/chat-ui/assets/{dist-Bd9gWCbk.js → dist-DnZL1rRp.js} +1 -1
  27. package/dist/apps/chat-ui/assets/{dist-BbCjOLiw.js → dist-ERKABhp3.js} +1 -1
  28. package/dist/apps/chat-ui/assets/index-BWVPNFjU.js +228 -0
  29. package/dist/apps/chat-ui/assets/index-CywOD6EF.css +1 -0
  30. package/dist/apps/chat-ui/index.html +2 -2
  31. package/dist/apps/chat-vscode-web/assets/index-CZmxeSn3.js +43 -0
  32. package/dist/apps/chat-vscode-web/index.html +1 -1
  33. package/dist/compute/pool/cli.js +1 -1
  34. package/dist/compute/pool/seeds.js +2 -3
  35. package/dist/config/config.js +1 -1
  36. package/dist/core/session-router.js +13 -4
  37. package/dist/previews/cli.js +154 -79
  38. package/dist/previews/compute-worker.js +37 -0
  39. package/dist/previews/config.js +2 -1
  40. package/dist/previews/migrations/session-ownership.js +7 -0
  41. package/dist/previews/proxy.js +4 -2
  42. package/dist/previews/public-setup.js +108 -0
  43. package/dist/previews/store.js +20 -13
  44. package/dist/previews/web-app.js +97 -2
  45. package/dist/sessions/workflow-session-kind.js +0 -3
  46. package/npm-shrinkwrap.json +7 -6
  47. package/package.json +6 -2
  48. package/packages/workflows/README.md +21 -0
  49. package/packages/workflows/dist/api/index.d.ts +48 -0
  50. package/packages/workflows/dist/api/index.d.ts.map +1 -0
  51. package/packages/workflows/dist/api/index.js +96 -0
  52. package/packages/workflows/dist/api/index.js.map +1 -0
  53. package/packages/workflows/dist/definition-hash.d.ts +4 -0
  54. package/packages/workflows/dist/definition-hash.d.ts.map +1 -0
  55. package/packages/workflows/dist/definition-hash.js +27 -0
  56. package/packages/workflows/dist/definition-hash.js.map +1 -0
  57. package/packages/workflows/dist/fixtures/index.d.ts +39 -0
  58. package/packages/workflows/dist/fixtures/index.d.ts.map +1 -0
  59. package/packages/workflows/dist/fixtures/index.js +608 -0
  60. package/packages/workflows/dist/fixtures/index.js.map +1 -0
  61. package/packages/workflows/dist/index.d.ts +16 -0
  62. package/packages/workflows/dist/index.d.ts.map +1 -0
  63. package/packages/workflows/dist/index.js +10 -0
  64. package/packages/workflows/dist/index.js.map +1 -0
  65. package/packages/workflows/dist/inspection/index.d.ts +47 -0
  66. package/packages/workflows/dist/inspection/index.d.ts.map +1 -0
  67. package/packages/workflows/dist/inspection/index.js +131 -0
  68. package/packages/workflows/dist/inspection/index.js.map +1 -0
  69. package/packages/workflows/dist/registry/index.d.ts +30 -0
  70. package/packages/workflows/dist/registry/index.d.ts.map +1 -0
  71. package/packages/workflows/dist/registry/index.js +161 -0
  72. package/packages/workflows/dist/registry/index.js.map +1 -0
  73. package/packages/workflows/dist/runtime/adapter-node.d.ts +28 -0
  74. package/packages/workflows/dist/runtime/adapter-node.d.ts.map +1 -0
  75. package/packages/workflows/dist/runtime/adapter-node.js +172 -0
  76. package/packages/workflows/dist/runtime/adapter-node.js.map +1 -0
  77. package/packages/workflows/dist/runtime/agent-node.d.ts +32 -0
  78. package/packages/workflows/dist/runtime/agent-node.d.ts.map +1 -0
  79. package/packages/workflows/dist/runtime/agent-node.js +231 -0
  80. package/packages/workflows/dist/runtime/agent-node.js.map +1 -0
  81. package/packages/workflows/dist/runtime/agent-runtime.d.ts +25 -0
  82. package/packages/workflows/dist/runtime/agent-runtime.d.ts.map +1 -0
  83. package/packages/workflows/dist/runtime/agent-runtime.js +111 -0
  84. package/packages/workflows/dist/runtime/agent-runtime.js.map +1 -0
  85. package/packages/workflows/dist/runtime/code-node.d.ts +31 -0
  86. package/packages/workflows/dist/runtime/code-node.d.ts.map +1 -0
  87. package/packages/workflows/dist/runtime/code-node.js +223 -0
  88. package/packages/workflows/dist/runtime/code-node.js.map +1 -0
  89. package/packages/workflows/dist/runtime/dispatch-failures.d.ts +36 -0
  90. package/packages/workflows/dist/runtime/dispatch-failures.d.ts.map +1 -0
  91. package/packages/workflows/dist/runtime/dispatch-failures.js +80 -0
  92. package/packages/workflows/dist/runtime/dispatch-failures.js.map +1 -0
  93. package/packages/workflows/dist/runtime/edge-payloads.d.ts +3 -0
  94. package/packages/workflows/dist/runtime/edge-payloads.d.ts.map +1 -0
  95. package/packages/workflows/dist/runtime/edge-payloads.js +11 -0
  96. package/packages/workflows/dist/runtime/edge-payloads.js.map +1 -0
  97. package/packages/workflows/dist/runtime/edge-transfer.d.ts +39 -0
  98. package/packages/workflows/dist/runtime/edge-transfer.d.ts.map +1 -0
  99. package/packages/workflows/dist/runtime/edge-transfer.js +356 -0
  100. package/packages/workflows/dist/runtime/edge-transfer.js.map +1 -0
  101. package/packages/workflows/dist/runtime/human-action.d.ts +43 -0
  102. package/packages/workflows/dist/runtime/human-action.d.ts.map +1 -0
  103. package/packages/workflows/dist/runtime/human-action.js +231 -0
  104. package/packages/workflows/dist/runtime/human-action.js.map +1 -0
  105. package/packages/workflows/dist/runtime/human-node.d.ts +27 -0
  106. package/packages/workflows/dist/runtime/human-node.d.ts.map +1 -0
  107. package/packages/workflows/dist/runtime/human-node.js +126 -0
  108. package/packages/workflows/dist/runtime/human-node.js.map +1 -0
  109. package/packages/workflows/dist/runtime/ids.d.ts +2 -0
  110. package/packages/workflows/dist/runtime/ids.d.ts.map +1 -0
  111. package/packages/workflows/dist/runtime/ids.js +4 -0
  112. package/packages/workflows/dist/runtime/ids.js.map +1 -0
  113. package/packages/workflows/dist/runtime/index.d.ts +23 -0
  114. package/packages/workflows/dist/runtime/index.d.ts.map +1 -0
  115. package/packages/workflows/dist/runtime/index.js +12 -0
  116. package/packages/workflows/dist/runtime/index.js.map +1 -0
  117. package/packages/workflows/dist/runtime/manual-trigger.d.ts +51 -0
  118. package/packages/workflows/dist/runtime/manual-trigger.d.ts.map +1 -0
  119. package/packages/workflows/dist/runtime/manual-trigger.js +403 -0
  120. package/packages/workflows/dist/runtime/manual-trigger.js.map +1 -0
  121. package/packages/workflows/dist/runtime/nested-workflow-node.d.ts +48 -0
  122. package/packages/workflows/dist/runtime/nested-workflow-node.d.ts.map +1 -0
  123. package/packages/workflows/dist/runtime/nested-workflow-node.js +246 -0
  124. package/packages/workflows/dist/runtime/nested-workflow-node.js.map +1 -0
  125. package/packages/workflows/dist/runtime/one-node-agent.d.ts +34 -0
  126. package/packages/workflows/dist/runtime/one-node-agent.d.ts.map +1 -0
  127. package/packages/workflows/dist/runtime/one-node-agent.js +334 -0
  128. package/packages/workflows/dist/runtime/one-node-agent.js.map +1 -0
  129. package/packages/workflows/dist/runtime/persistence.d.ts +9 -0
  130. package/packages/workflows/dist/runtime/persistence.d.ts.map +1 -0
  131. package/packages/workflows/dist/runtime/persistence.js +67 -0
  132. package/packages/workflows/dist/runtime/persistence.js.map +1 -0
  133. package/packages/workflows/dist/runtime/pibo-routing.d.ts +126 -0
  134. package/packages/workflows/dist/runtime/pibo-routing.d.ts.map +1 -0
  135. package/packages/workflows/dist/runtime/pibo-routing.js +96 -0
  136. package/packages/workflows/dist/runtime/pibo-routing.js.map +1 -0
  137. package/packages/workflows/dist/runtime/prompts.d.ts +20 -0
  138. package/packages/workflows/dist/runtime/prompts.d.ts.map +1 -0
  139. package/packages/workflows/dist/runtime/prompts.js +235 -0
  140. package/packages/workflows/dist/runtime/prompts.js.map +1 -0
  141. package/packages/workflows/dist/runtime/retry.d.ts +35 -0
  142. package/packages/workflows/dist/runtime/retry.d.ts.map +1 -0
  143. package/packages/workflows/dist/runtime/retry.js +80 -0
  144. package/packages/workflows/dist/runtime/retry.js.map +1 -0
  145. package/packages/workflows/dist/runtime/state.d.ts +14 -0
  146. package/packages/workflows/dist/runtime/state.d.ts.map +1 -0
  147. package/packages/workflows/dist/runtime/state.js +139 -0
  148. package/packages/workflows/dist/runtime/state.js.map +1 -0
  149. package/packages/workflows/dist/runtime/time.d.ts +6 -0
  150. package/packages/workflows/dist/runtime/time.d.ts.map +1 -0
  151. package/packages/workflows/dist/runtime/time.js +42 -0
  152. package/packages/workflows/dist/runtime/time.js.map +1 -0
  153. package/packages/workflows/dist/store/catalog-records.d.ts +18 -0
  154. package/packages/workflows/dist/store/catalog-records.d.ts.map +1 -0
  155. package/packages/workflows/dist/store/catalog-records.js +59 -0
  156. package/packages/workflows/dist/store/catalog-records.js.map +1 -0
  157. package/packages/workflows/dist/store/contracts.d.ts +149 -0
  158. package/packages/workflows/dist/store/contracts.d.ts.map +1 -0
  159. package/packages/workflows/dist/store/contracts.js +2 -0
  160. package/packages/workflows/dist/store/contracts.js.map +1 -0
  161. package/packages/workflows/dist/store/draft-writes.d.ts +7 -0
  162. package/packages/workflows/dist/store/draft-writes.d.ts.map +1 -0
  163. package/packages/workflows/dist/store/draft-writes.js +18 -0
  164. package/packages/workflows/dist/store/draft-writes.js.map +1 -0
  165. package/packages/workflows/dist/store/index.d.ts +55 -0
  166. package/packages/workflows/dist/store/index.d.ts.map +1 -0
  167. package/packages/workflows/dist/store/index.js +650 -0
  168. package/packages/workflows/dist/store/index.js.map +1 -0
  169. package/packages/workflows/dist/store/list-query.d.ts +13 -0
  170. package/packages/workflows/dist/store/list-query.d.ts.map +1 -0
  171. package/packages/workflows/dist/store/list-query.js +20 -0
  172. package/packages/workflows/dist/store/list-query.js.map +1 -0
  173. package/packages/workflows/dist/store/row-mappers.d.ts +206 -0
  174. package/packages/workflows/dist/store/row-mappers.d.ts.map +1 -0
  175. package/packages/workflows/dist/store/row-mappers.js +262 -0
  176. package/packages/workflows/dist/store/row-mappers.js.map +1 -0
  177. package/packages/workflows/dist/store/schema.d.ts +13 -0
  178. package/packages/workflows/dist/store/schema.d.ts.map +1 -0
  179. package/packages/workflows/dist/store/schema.js +458 -0
  180. package/packages/workflows/dist/store/schema.js.map +1 -0
  181. package/packages/workflows/dist/store/write-values.d.ts +18 -0
  182. package/packages/workflows/dist/store/write-values.d.ts.map +1 -0
  183. package/packages/workflows/dist/store/write-values.js +227 -0
  184. package/packages/workflows/dist/store/write-values.js.map +1 -0
  185. package/packages/workflows/dist/types/index.d.ts +1202 -0
  186. package/packages/workflows/dist/types/index.d.ts.map +1 -0
  187. package/packages/workflows/dist/types/index.js +8 -0
  188. package/packages/workflows/dist/types/index.js.map +1 -0
  189. package/packages/workflows/dist/validation/diagnostics.d.ts +27 -0
  190. package/packages/workflows/dist/validation/diagnostics.d.ts.map +1 -0
  191. package/packages/workflows/dist/validation/diagnostics.js +104 -0
  192. package/packages/workflows/dist/validation/diagnostics.js.map +1 -0
  193. package/packages/workflows/dist/validation/graph-cycles.d.ts +4 -0
  194. package/packages/workflows/dist/validation/graph-cycles.d.ts.map +1 -0
  195. package/packages/workflows/dist/validation/graph-cycles.js +130 -0
  196. package/packages/workflows/dist/validation/graph-cycles.js.map +1 -0
  197. package/packages/workflows/dist/validation/graph-edges.d.ts +5 -0
  198. package/packages/workflows/dist/validation/graph-edges.d.ts.map +1 -0
  199. package/packages/workflows/dist/validation/graph-edges.js +48 -0
  200. package/packages/workflows/dist/validation/graph-edges.js.map +1 -0
  201. package/packages/workflows/dist/validation/graph-ports.d.ts +5 -0
  202. package/packages/workflows/dist/validation/graph-ports.d.ts.map +1 -0
  203. package/packages/workflows/dist/validation/graph-ports.js +55 -0
  204. package/packages/workflows/dist/validation/graph-ports.js.map +1 -0
  205. package/packages/workflows/dist/validation/index.d.ts +18 -0
  206. package/packages/workflows/dist/validation/index.d.ts.map +1 -0
  207. package/packages/workflows/dist/validation/index.js +175 -0
  208. package/packages/workflows/dist/validation/index.js.map +1 -0
  209. package/packages/workflows/dist/validation/json-schema.d.ts +12 -0
  210. package/packages/workflows/dist/validation/json-schema.d.ts.map +1 -0
  211. package/packages/workflows/dist/validation/json-schema.js +556 -0
  212. package/packages/workflows/dist/validation/json-schema.js.map +1 -0
  213. package/packages/workflows/dist/validation/registry-refs.d.ts +21 -0
  214. package/packages/workflows/dist/validation/registry-refs.d.ts.map +1 -0
  215. package/packages/workflows/dist/validation/registry-refs.js +283 -0
  216. package/packages/workflows/dist/validation/registry-refs.js.map +1 -0
  217. package/packages/workflows/dist/validation/retry-policy.d.ts +3 -0
  218. package/packages/workflows/dist/validation/retry-policy.d.ts.map +1 -0
  219. package/packages/workflows/dist/validation/retry-policy.js +114 -0
  220. package/packages/workflows/dist/validation/retry-policy.js.map +1 -0
  221. package/packages/workflows/dist/validation/schema-declarations.d.ts +5 -0
  222. package/packages/workflows/dist/validation/schema-declarations.d.ts.map +1 -0
  223. package/packages/workflows/dist/validation/schema-declarations.js +36 -0
  224. package/packages/workflows/dist/validation/schema-declarations.js.map +1 -0
  225. package/packages/workflows/dist/validation/state-access.d.ts +4 -0
  226. package/packages/workflows/dist/validation/state-access.d.ts.map +1 -0
  227. package/packages/workflows/dist/validation/state-access.js +121 -0
  228. package/packages/workflows/dist/validation/state-access.js.map +1 -0
  229. package/packages/workflows/dist/xstate/index.d.ts +73 -0
  230. package/packages/workflows/dist/xstate/index.d.ts.map +1 -0
  231. package/packages/workflows/dist/xstate/index.js +728 -0
  232. package/packages/workflows/dist/xstate/index.js.map +1 -0
  233. package/packages/workflows/package.json +23 -0
  234. package/dist/apps/chat/data/project-service.js +0 -1029
  235. package/dist/apps/chat-ui/assets/index-DWJnUye8.css +0 -1
  236. package/dist/apps/chat-ui/assets/index-exohEOUE.js +0 -228
  237. package/dist/apps/chat-vscode-web/assets/index-D1bpAUkR.js +0 -43
@@ -0,0 +1,80 @@
1
+ import { createWorkflowRuntimeId } from "./ids.js";
2
+ export function resolveWorkflowRetryPolicy(workflow, node) {
3
+ return node.retry ?? workflow.retry;
4
+ }
5
+ export function decideWorkflowNodeRetry(options) {
6
+ const policy = resolveWorkflowRetryPolicy(options.workflow, options.node);
7
+ if (!policy) {
8
+ return { kind: "none", reason: "no_policy" };
9
+ }
10
+ if (options.error.retryable === false) {
11
+ return { kind: "none", reason: "not_retryable" };
12
+ }
13
+ if (policy.retryOn && !policy.retryOn.includes(options.error.code)) {
14
+ return { kind: "none", reason: "retry_on_mismatch" };
15
+ }
16
+ const currentAttempt = options.nodeAttempt.attempt;
17
+ if (currentAttempt >= policy.maxAttempts) {
18
+ return {
19
+ kind: "exhausted",
20
+ policy,
21
+ currentAttempt,
22
+ maxAttempts: policy.maxAttempts,
23
+ error: {
24
+ code: "WorkflowRetryExhaustedError.maxAttemptsExceeded",
25
+ message: `Workflow node retry policy exhausted after ${currentAttempt} attempt${currentAttempt === 1 ? "" : "s"} (maxAttempts: ${policy.maxAttempts}).`,
26
+ retryable: false,
27
+ details: { originalCode: options.error.code, maxAttempts: policy.maxAttempts },
28
+ },
29
+ };
30
+ }
31
+ const nextAttempt = currentAttempt + 1;
32
+ const delayMs = calculateRetryDelayMs(policy.backoff, nextAttempt);
33
+ const now = options.now?.() ?? new Date();
34
+ const nowMs = typeof now === "string" ? new Date(now).getTime() : now.getTime();
35
+ const availableAt = new Date(nowMs + delayMs).toISOString();
36
+ return {
37
+ kind: "retry",
38
+ policy,
39
+ currentAttempt,
40
+ nextAttempt,
41
+ maxAttempts: policy.maxAttempts,
42
+ availableAt,
43
+ delayMs,
44
+ };
45
+ }
46
+ export function createRetryScheduledNodeAttempt(previousAttempt, decision, options = {}) {
47
+ return {
48
+ ...previousAttempt,
49
+ id: options.id ?? createWorkflowRuntimeId("wna"),
50
+ attempt: decision.nextAttempt,
51
+ status: "retry_scheduled",
52
+ error: options.error ?? previousAttempt.error,
53
+ availableAt: decision.availableAt,
54
+ startedAt: undefined,
55
+ heartbeatAt: undefined,
56
+ completedAt: undefined,
57
+ failedAt: undefined,
58
+ lease: undefined,
59
+ };
60
+ }
61
+ function calculateRetryDelayMs(backoff, nextAttempt) {
62
+ if (!backoff || backoff.kind === "none") {
63
+ return 0;
64
+ }
65
+ if (backoff.kind === "fixed") {
66
+ return backoff.delayMs;
67
+ }
68
+ if (backoff.kind === "linear") {
69
+ return capRetryDelay(backoff.initialMs + Math.max(0, nextAttempt - 2) * backoff.stepMs, backoff.maxMs);
70
+ }
71
+ const factor = backoff.factor ?? 2;
72
+ return capRetryDelay(backoff.initialMs * factor ** Math.max(0, nextAttempt - 2), backoff.maxMs);
73
+ }
74
+ function capRetryDelay(delayMs, maxMs) {
75
+ if (maxMs === undefined) {
76
+ return delayMs;
77
+ }
78
+ return Math.min(delayMs, maxMs);
79
+ }
80
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/runtime/retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { CodeNodeResult, JsonValue, NodeAttempt, NodeId, NodeLocalStateReader, StatePatch, TypeScriptCodeNodeDefinition, WorkflowDefinition, WorkflowDiagnostic, WorkflowGlobalStateReader, WorkflowRun } from "../types/index.js";
2
+ export declare class WorkflowStateAccessViolation extends Error {
3
+ readonly diagnostic: WorkflowDiagnostic;
4
+ constructor(diagnostic: WorkflowDiagnostic);
5
+ }
6
+ export declare function createInitialWorkflowRunState(global: Record<string, JsonValue>, local?: Record<NodeId, Record<string, JsonValue>>): WorkflowRun["state"];
7
+ export declare function localStateSnapshotForNode(run: WorkflowRun, nodeId: string): Pick<NodeAttempt, "localState">;
8
+ export declare function createNodeScopedWorkflowRun(run: WorkflowRun, nodeId: string): WorkflowRun;
9
+ export declare function createWorkflowRunWithoutLocalState(run: WorkflowRun): WorkflowRun;
10
+ export declare function createCurrentNodeStateView(state: WorkflowRun["state"], nodeId: string): WorkflowRun["state"];
11
+ export declare function createStateReader(scope: "global" | "local", values: Record<string, JsonValue>, node: TypeScriptCodeNodeDefinition, nodeId: string): WorkflowGlobalStateReader | NodeLocalStateReader;
12
+ export declare function validateCodeNodePatches(definition: WorkflowDefinition, node: TypeScriptCodeNodeDefinition, nodeId: string, result: CodeNodeResult): WorkflowDiagnostic[];
13
+ export declare function applyCodeNodePatches(run: WorkflowRun, nodeId: string, globalPatch: StatePatch | undefined, localPatch: StatePatch | undefined): void;
14
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/runtime/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,MAAM,EACN,oBAAoB,EAEpB,UAAU,EACV,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,4BAA6B,SAAQ,KAAK;IACzC,QAAQ,CAAC,UAAU,EAAE,kBAAkB;gBAA9B,UAAU,EAAE,kBAAkB;CAGpD;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAChD,WAAW,CAAC,OAAO,CAAC,CAGtB;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAG3G;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAKzF;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAKhF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAK5G;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,GAAG,OAAO,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,IAAI,EAAE,4BAA4B,EAClC,MAAM,EAAE,MAAM,GACb,yBAAyB,GAAG,oBAAoB,CAOlD;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,kBAAkB,EAC9B,IAAI,EAAE,4BAA4B,EAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,kBAAkB,EAAE,CAMtB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,UAAU,GAAG,SAAS,EACnC,UAAU,EAAE,UAAU,GAAG,SAAS,GACjC,IAAI,CAUN"}
@@ -0,0 +1,139 @@
1
+ import { validateJsonValueAgainstSchema } from "../validation/index.js";
2
+ export class WorkflowStateAccessViolation extends Error {
3
+ diagnostic;
4
+ constructor(diagnostic) {
5
+ super(diagnostic.message);
6
+ this.diagnostic = diagnostic;
7
+ }
8
+ }
9
+ export function createInitialWorkflowRunState(global, local) {
10
+ const localState = cloneLocalStateMap(local);
11
+ return localState ? { global: { ...global }, local: localState } : { global: { ...global } };
12
+ }
13
+ export function localStateSnapshotForNode(run, nodeId) {
14
+ const localState = cloneLocalStateForNode(run, nodeId);
15
+ return localState ? { localState } : {};
16
+ }
17
+ export function createNodeScopedWorkflowRun(run, nodeId) {
18
+ return {
19
+ ...run,
20
+ state: createNodeScopedWorkflowRunState(run, nodeId),
21
+ };
22
+ }
23
+ export function createWorkflowRunWithoutLocalState(run) {
24
+ return {
25
+ ...run,
26
+ state: { global: run.state.global },
27
+ };
28
+ }
29
+ export function createCurrentNodeStateView(state, nodeId) {
30
+ const localState = state.local?.[nodeId];
31
+ return localState
32
+ ? { global: state.global, local: { [nodeId]: structuredClone(localState) } }
33
+ : { global: state.global };
34
+ }
35
+ export function createStateReader(scope, values, node, nodeId) {
36
+ return {
37
+ get(path) {
38
+ assertDeclaredStateRead(scope, path, node, nodeId);
39
+ return values[path];
40
+ },
41
+ };
42
+ }
43
+ export function validateCodeNodePatches(definition, node, nodeId, result) {
44
+ const diagnostics = [];
45
+ validateStatePatchWrites("global", result.globalPatch, node, nodeId, diagnostics);
46
+ validateStatePatchWrites("local", result.localPatch, node, nodeId, diagnostics);
47
+ validateGlobalStatePatchValues(definition, nodeId, result.globalPatch, diagnostics);
48
+ return diagnostics;
49
+ }
50
+ export function applyCodeNodePatches(run, nodeId, globalPatch, localPatch) {
51
+ if (globalPatch) {
52
+ applyStatePatch(run.state.global, globalPatch);
53
+ }
54
+ if (localPatch) {
55
+ run.state.local ??= {};
56
+ run.state.local[nodeId] ??= {};
57
+ applyStatePatch(run.state.local[nodeId], localPatch);
58
+ }
59
+ }
60
+ function cloneLocalStateForNode(run, nodeId) {
61
+ const localState = run.state.local?.[nodeId];
62
+ return localState === undefined ? undefined : structuredClone(localState);
63
+ }
64
+ function cloneLocalStateMap(local) {
65
+ if (!local) {
66
+ return undefined;
67
+ }
68
+ const entries = Object.entries(local);
69
+ if (entries.length === 0) {
70
+ return undefined;
71
+ }
72
+ return Object.fromEntries(entries.map(([nodeId, nodeState]) => [nodeId, structuredClone(nodeState)]));
73
+ }
74
+ function createNodeScopedWorkflowRunState(run, nodeId) {
75
+ const localState = cloneLocalStateForNode(run, nodeId);
76
+ return localState ? { global: run.state.global, local: { [nodeId]: localState } } : { global: run.state.global };
77
+ }
78
+ function assertDeclaredStateRead(scope, path, node, nodeId) {
79
+ const scopedPath = `${scope}.${path}`;
80
+ if ((node.state?.reads ?? []).includes(scopedPath)) {
81
+ return;
82
+ }
83
+ throw new WorkflowStateAccessViolation({
84
+ code: "WorkflowStateError.undeclaredStateRead",
85
+ message: `Code node handler '${node.handler}' attempted to read undeclared ${scope} state path '${path}'.`,
86
+ severity: "error",
87
+ nodeId,
88
+ path: `$.nodes.${nodeId}.state.reads`,
89
+ hint: `Declare '${scopedPath}' in the code node state.reads list before reading it from handler context.`,
90
+ });
91
+ }
92
+ function validateStatePatchWrites(scope, patch, node, nodeId, diagnostics) {
93
+ if (!patch) {
94
+ return;
95
+ }
96
+ const declaredWrites = new Set(node.state?.writes ?? []);
97
+ for (const path of Object.keys(patch)) {
98
+ const scopedPath = `${scope}.${path}`;
99
+ if (declaredWrites.has(scopedPath)) {
100
+ continue;
101
+ }
102
+ diagnostics.push({
103
+ code: "WorkflowStateError.undeclaredStateWrite",
104
+ message: `Workflow code node '${nodeId}' attempted to write undeclared ${scope} state path '${path}'.`,
105
+ severity: "error",
106
+ nodeId,
107
+ path: `$.nodes.${nodeId}.state.writes`,
108
+ hint: `Declare '${scopedPath}' in the code node state.writes list before returning it in a state patch.`,
109
+ });
110
+ }
111
+ }
112
+ function validateGlobalStatePatchValues(definition, nodeId, patch, diagnostics) {
113
+ if (!patch || !definition.state?.global) {
114
+ return;
115
+ }
116
+ for (const [path, value] of Object.entries(patch)) {
117
+ if (value === undefined) {
118
+ continue;
119
+ }
120
+ const field = definition.state.global[path];
121
+ if (!field) {
122
+ continue;
123
+ }
124
+ diagnostics.push(...validateJsonValueAgainstSchema(field.schema, value, {
125
+ path: `$.nodes.${nodeId}.globalPatch.${path}`,
126
+ }).map((diagnostic) => ({ ...diagnostic, nodeId })));
127
+ }
128
+ }
129
+ function applyStatePatch(target, patch) {
130
+ for (const [path, value] of Object.entries(patch)) {
131
+ if (value === undefined) {
132
+ delete target[path];
133
+ }
134
+ else {
135
+ target[path] = value;
136
+ }
137
+ }
138
+ }
139
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/runtime/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DurationSpec, WorkflowWaitToken } from "../types/index.js";
2
+ export type WorkflowRuntimeNow = () => Date | string;
3
+ export declare function createTimestampFactory(now?: WorkflowRuntimeNow): () => string;
4
+ export declare function resolveWaitTokenExpiry(timeout: DurationSpec | undefined, createdAt: string): Pick<WorkflowWaitToken, "expiresAt">;
5
+ export declare function timestampToMillis(value: Date | string): number;
6
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/runtime/time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,MAAM,kBAAkB,GAAG,MAAM,IAAI,GAAG,MAAM,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,GAAG,CAAC,EAAE,kBAAkB,GAAG,MAAM,MAAM,CAK7E;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,GAChB,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAWtC;AA2BD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAE9D"}
@@ -0,0 +1,42 @@
1
+ export function createTimestampFactory(now) {
2
+ return () => {
3
+ const value = now?.() ?? new Date();
4
+ return typeof value === "string" ? value : value.toISOString();
5
+ };
6
+ }
7
+ export function resolveWaitTokenExpiry(timeout, createdAt) {
8
+ if (!timeout) {
9
+ return {};
10
+ }
11
+ const durationMs = durationSpecToMilliseconds(timeout);
12
+ if (durationMs === undefined) {
13
+ return {};
14
+ }
15
+ return { expiresAt: new Date(new Date(createdAt).getTime() + durationMs).toISOString() };
16
+ }
17
+ function durationSpecToMilliseconds(duration) {
18
+ switch (duration.kind) {
19
+ case "milliseconds":
20
+ return duration.value;
21
+ case "seconds":
22
+ return duration.value * 1000;
23
+ case "minutes":
24
+ return duration.value * 60_000;
25
+ case "iso8601":
26
+ return parseIso8601DurationMilliseconds(duration.value);
27
+ }
28
+ }
29
+ function parseIso8601DurationMilliseconds(value) {
30
+ const match = /^PT(?:(\d+(?:\.\d+)?)H)?(?:(\d+(?:\.\d+)?)M)?(?:(\d+(?:\.\d+)?)S)?$/.exec(value);
31
+ if (!match) {
32
+ return undefined;
33
+ }
34
+ const hours = Number(match[1] ?? 0);
35
+ const minutes = Number(match[2] ?? 0);
36
+ const seconds = Number(match[3] ?? 0);
37
+ return ((hours * 60 + minutes) * 60 + seconds) * 1000;
38
+ }
39
+ export function timestampToMillis(value) {
40
+ return typeof value === "string" ? new Date(value).getTime() : value.getTime();
41
+ }
42
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/runtime/time.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,sBAAsB,CAAC,GAAwB;IAC7D,OAAO,GAAG,EAAE;QACV,MAAM,KAAK,GAAG,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;QACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAiC,EACjC,SAAiB;IAEjB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAsB;IACxD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;QACjC,KAAK,SAAS;YACZ,OAAO,gCAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CAAC,KAAa;IACrD,MAAM,KAAK,GAAG,qEAAqE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACjF,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { WorkflowPublishedVersionRecord, WorkflowRecordSource, WorkflowRecordStatus } from "../types/index.js";
2
+ export type CreateWorkflowPublishedVersionRecordInput = Omit<WorkflowPublishedVersionRecord, "source" | "status" | "definitionHash"> & {
3
+ source?: "ui";
4
+ status?: "published";
5
+ definitionHash?: string;
6
+ };
7
+ export declare const WORKFLOW_RECORD_SOURCES: readonly ["code", "ui"];
8
+ export declare const WORKFLOW_RECORD_STATUSES: readonly ["draft", "published", "archived"];
9
+ export declare function isWorkflowRecordSource(value: unknown): value is WorkflowRecordSource;
10
+ export declare function isWorkflowRecordStatus(value: unknown): value is WorkflowRecordStatus;
11
+ export declare function assertWorkflowRecordSource(value: unknown): asserts value is WorkflowRecordSource;
12
+ export declare function assertWorkflowRecordStatus(value: unknown): asserts value is WorkflowRecordStatus;
13
+ export declare function assertWorkflowUiRecordSource(value: unknown, entity: string): asserts value is "ui";
14
+ export declare function assertWorkflowRecordStatusValue(value: unknown, expected: WorkflowRecordStatus, entity: string): void;
15
+ export declare function createWorkflowPublishedVersionRecord(input: CreateWorkflowPublishedVersionRecordInput): WorkflowPublishedVersionRecord;
16
+ export declare function assertPublishedWorkflowVersionRecord(record: WorkflowPublishedVersionRecord): void;
17
+ export declare function assertPublishedWorkflowVersionIsSame(existing: WorkflowPublishedVersionRecord, next: WorkflowPublishedVersionRecord): void;
18
+ //# sourceMappingURL=catalog-records.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-records.d.ts","sourceRoot":"","sources":["../../src/store/catalog-records.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,yCAAyC,GAAG,IAAI,CAAC,8BAA8B,EAAE,QAAQ,GAAG,QAAQ,GAAG,gBAAgB,CAAC,GAAG;IACrI,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,uBAAuB,yBAAoE,CAAC;AACzG,eAAO,MAAM,wBAAwB,6CAAwF,CAAC;AAE9H,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAEpF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAIhG;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAIhG;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAKlG;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKpH;AAED,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,yCAAyC,GAC/C,8BAA8B,CAShC;AAED,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,8BAA8B,GAAG,IAAI,CAUjG;AAED,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,8BAA8B,EACxC,IAAI,EAAE,8BAA8B,GACnC,IAAI,CAON"}
@@ -0,0 +1,59 @@
1
+ import { canonicalWorkflowDefinitionJson, hashWorkflowDefinition } from "../definition-hash.js";
2
+ export const WORKFLOW_RECORD_SOURCES = ["code", "ui"];
3
+ export const WORKFLOW_RECORD_STATUSES = ["draft", "published", "archived"];
4
+ export function isWorkflowRecordSource(value) {
5
+ return typeof value === "string" && WORKFLOW_RECORD_SOURCES.includes(value);
6
+ }
7
+ export function isWorkflowRecordStatus(value) {
8
+ return typeof value === "string" && WORKFLOW_RECORD_STATUSES.includes(value);
9
+ }
10
+ export function assertWorkflowRecordSource(value) {
11
+ if (!isWorkflowRecordSource(value)) {
12
+ throw new Error(`Workflow record source must be one of: ${WORKFLOW_RECORD_SOURCES.join(", ")}.`);
13
+ }
14
+ }
15
+ export function assertWorkflowRecordStatus(value) {
16
+ if (!isWorkflowRecordStatus(value)) {
17
+ throw new Error(`Workflow record status must be one of: ${WORKFLOW_RECORD_STATUSES.join(", ")}.`);
18
+ }
19
+ }
20
+ export function assertWorkflowUiRecordSource(value, entity) {
21
+ assertWorkflowRecordSource(value);
22
+ if (value !== "ui") {
23
+ throw new Error(`${entity} records must use source 'ui'. Code workflows are catalog projections and are not persisted UI records.`);
24
+ }
25
+ }
26
+ export function assertWorkflowRecordStatusValue(value, expected, entity) {
27
+ assertWorkflowRecordStatus(value);
28
+ if (value !== expected) {
29
+ throw new Error(`${entity} records must use status '${expected}'.`);
30
+ }
31
+ }
32
+ export function createWorkflowPublishedVersionRecord(input) {
33
+ const record = {
34
+ ...input,
35
+ source: input.source ?? "ui",
36
+ status: input.status ?? "published",
37
+ definitionHash: input.definitionHash ?? hashWorkflowDefinition(input.definition),
38
+ };
39
+ assertPublishedWorkflowVersionRecord(record);
40
+ return record;
41
+ }
42
+ export function assertPublishedWorkflowVersionRecord(record) {
43
+ assertWorkflowUiRecordSource(record.source, "Workflow published version");
44
+ assertWorkflowRecordStatusValue(record.status, "published", "Workflow published version");
45
+ if (record.definition.id !== record.workflowId || record.definition.version !== record.version) {
46
+ throw new Error(`Workflow '${record.workflowId}@${record.version}' published record does not match its definition id/version.`);
47
+ }
48
+ const computedHash = hashWorkflowDefinition(record.definition);
49
+ if (record.definitionHash !== computedHash) {
50
+ throw new Error(`Workflow '${record.workflowId}@${record.version}' published record has an invalid definition hash.`);
51
+ }
52
+ }
53
+ export function assertPublishedWorkflowVersionIsSame(existing, next) {
54
+ if (existing.definitionHash !== next.definitionHash ||
55
+ canonicalWorkflowDefinitionJson(existing.definition) !== canonicalWorkflowDefinitionJson(next.definition)) {
56
+ throw new Error(`Published workflow '${next.workflowId}@${next.version}' is immutable and cannot be replaced.`);
57
+ }
58
+ }
59
+ //# sourceMappingURL=catalog-records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-records.js","sourceRoot":"","sources":["../../src/store/catalog-records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ import type { EdgeTransfer, EdgeTransferId, NodeAttempt, NodeAttemptId, NodeAttemptStatus, WorkflowArchiveStateRecord, WorkflowCheckpoint, WorkflowCheckpointId, WorkflowDefinitionSnapshot, WorkflowDefinitionSnapshotId, WorkflowDeleteTombstoneRecord, WorkflowDraftRecord, WorkflowDraftValidationState, WorkflowEventId, WorkflowEventRecord, WorkflowHumanActionId, WorkflowHumanActionKind, WorkflowHumanActionRecord, WorkflowIdentityRecord, WorkflowPublishedVersionRecord, WorkflowRun, WorkflowRunId, WorkflowRunStatus, WorkflowWakeup, WorkflowWakeupId, WorkflowWaitToken, WorkflowWaitTokenId, WorkflowWaitTokenStatus } from "../types/index.js";
2
+ export type WorkflowRunStore = {
3
+ saveRun(run: WorkflowRun): void | Promise<void>;
4
+ getRun(id: WorkflowRunId): WorkflowRun | undefined | Promise<WorkflowRun | undefined>;
5
+ };
6
+ export type WorkflowDefinitionSnapshotStore = {
7
+ saveDefinitionSnapshot(snapshot: WorkflowDefinitionSnapshot): void | Promise<void>;
8
+ getDefinitionSnapshot(id: WorkflowDefinitionSnapshotId): WorkflowDefinitionSnapshot | undefined | Promise<WorkflowDefinitionSnapshot | undefined>;
9
+ listDefinitionSnapshots(filter?: WorkflowDefinitionSnapshotListFilter): WorkflowDefinitionSnapshot[] | Promise<WorkflowDefinitionSnapshot[]>;
10
+ };
11
+ export type WorkflowIdentityStore = {
12
+ saveWorkflowIdentity(record: WorkflowIdentityRecord): void | Promise<void>;
13
+ getWorkflowIdentity(workflowId: string): WorkflowIdentityRecord | undefined | Promise<WorkflowIdentityRecord | undefined>;
14
+ listWorkflowIdentities(filter?: WorkflowIdentityListFilter): WorkflowIdentityRecord[] | Promise<WorkflowIdentityRecord[]>;
15
+ };
16
+ export type WorkflowDraftStore = {
17
+ saveWorkflowDraft(record: WorkflowDraftRecord): void | Promise<void>;
18
+ getWorkflowDraft(draftId: string): WorkflowDraftRecord | undefined | Promise<WorkflowDraftRecord | undefined>;
19
+ listWorkflowDrafts(filter?: WorkflowDraftListFilter): WorkflowDraftRecord[] | Promise<WorkflowDraftRecord[]>;
20
+ };
21
+ export type WorkflowArchiveStateStore = {
22
+ saveWorkflowArchiveState(record: WorkflowArchiveStateRecord): void | Promise<void>;
23
+ getWorkflowArchiveState(workflowId: string): WorkflowArchiveStateRecord | undefined | Promise<WorkflowArchiveStateRecord | undefined>;
24
+ listWorkflowArchiveStates(filter?: WorkflowArchiveStateListFilter): WorkflowArchiveStateRecord[] | Promise<WorkflowArchiveStateRecord[]>;
25
+ };
26
+ export type WorkflowDeleteTombstoneStore = {
27
+ saveWorkflowDeleteTombstone(record: WorkflowDeleteTombstoneRecord): void | Promise<void>;
28
+ getWorkflowDeleteTombstone(workflowId: string): WorkflowDeleteTombstoneRecord | undefined | Promise<WorkflowDeleteTombstoneRecord | undefined>;
29
+ listWorkflowDeleteTombstones(filter?: WorkflowDeleteTombstoneListFilter): WorkflowDeleteTombstoneRecord[] | Promise<WorkflowDeleteTombstoneRecord[]>;
30
+ };
31
+ export type WorkflowPublishedVersionStore = {
32
+ savePublishedWorkflowVersion(record: WorkflowPublishedVersionRecord): void | Promise<void>;
33
+ getPublishedWorkflowVersion(workflowId: string, version: string): WorkflowPublishedVersionRecord | undefined | Promise<WorkflowPublishedVersionRecord | undefined>;
34
+ listPublishedWorkflowVersions(filter?: WorkflowPublishedVersionListFilter): WorkflowPublishedVersionRecord[] | Promise<WorkflowPublishedVersionRecord[]>;
35
+ };
36
+ export type WorkflowEventStore = {
37
+ saveEvent(event: WorkflowEventRecord): void | Promise<void>;
38
+ getEvent(id: WorkflowEventId): WorkflowEventRecord | undefined | Promise<WorkflowEventRecord | undefined>;
39
+ listEvents(filter?: WorkflowEventListFilter): WorkflowEventRecord[] | Promise<WorkflowEventRecord[]>;
40
+ };
41
+ export type WorkflowWaitTokenStore = {
42
+ saveWaitToken(token: WorkflowWaitToken): void | Promise<void>;
43
+ getWaitToken(id: WorkflowWaitTokenId): WorkflowWaitToken | undefined | Promise<WorkflowWaitToken | undefined>;
44
+ listWaitTokens(filter?: WorkflowWaitTokenListFilter): WorkflowWaitToken[] | Promise<WorkflowWaitToken[]>;
45
+ };
46
+ export type WorkflowNodeAttemptStore = {
47
+ saveNodeAttempt(nodeAttempt: NodeAttempt): void | Promise<void>;
48
+ getNodeAttempt(id: NodeAttemptId): NodeAttempt | undefined | Promise<NodeAttempt | undefined>;
49
+ listNodeAttempts(filter?: WorkflowNodeAttemptListFilter): NodeAttempt[] | Promise<NodeAttempt[]>;
50
+ };
51
+ export type WorkflowEdgeTransferStore = {
52
+ saveEdgeTransfer(transfer: EdgeTransfer): void | Promise<void>;
53
+ getEdgeTransfer(id: EdgeTransferId): EdgeTransfer | undefined | Promise<EdgeTransfer | undefined>;
54
+ listEdgeTransfers(filter?: WorkflowEdgeTransferListFilter): EdgeTransfer[] | Promise<EdgeTransfer[]>;
55
+ };
56
+ export type WorkflowCheckpointStore = {
57
+ saveCheckpoint(checkpoint: WorkflowCheckpoint): void | Promise<void>;
58
+ getCheckpoint(id: WorkflowCheckpointId): WorkflowCheckpoint | undefined | Promise<WorkflowCheckpoint | undefined>;
59
+ listCheckpoints(filter?: WorkflowCheckpointListFilter): WorkflowCheckpoint[] | Promise<WorkflowCheckpoint[]>;
60
+ };
61
+ export type WorkflowWakeupStore = {
62
+ saveWakeup(wakeup: WorkflowWakeup): void | Promise<void>;
63
+ getWakeup(id: WorkflowWakeupId): WorkflowWakeup | undefined | Promise<WorkflowWakeup | undefined>;
64
+ listWakeups(filter?: WorkflowWakeupListFilter): WorkflowWakeup[] | Promise<WorkflowWakeup[]>;
65
+ };
66
+ export type WorkflowHumanActionStore = {
67
+ saveHumanAction(action: WorkflowHumanActionRecord): void | Promise<void>;
68
+ getHumanAction(id: WorkflowHumanActionId): WorkflowHumanActionRecord | undefined | Promise<WorkflowHumanActionRecord | undefined>;
69
+ listHumanActions(filter?: WorkflowHumanActionListFilter): WorkflowHumanActionRecord[] | Promise<WorkflowHumanActionRecord[]>;
70
+ };
71
+ export type WorkflowRunListFilter = {
72
+ workflowId?: string;
73
+ piboSessionId?: string;
74
+ status?: WorkflowRunStatus;
75
+ limit?: number;
76
+ };
77
+ export type WorkflowDefinitionSnapshotListFilter = {
78
+ workflowId?: string;
79
+ workflowVersion?: string;
80
+ hash?: string;
81
+ limit?: number;
82
+ };
83
+ export type WorkflowIdentityListFilter = {
84
+ workflowId?: string;
85
+ limit?: number;
86
+ };
87
+ export type WorkflowDraftListFilter = {
88
+ workflowId?: string;
89
+ validationState?: WorkflowDraftValidationState;
90
+ limit?: number;
91
+ };
92
+ export type WorkflowArchiveStateListFilter = {
93
+ archived?: boolean;
94
+ limit?: number;
95
+ };
96
+ export type WorkflowDeleteTombstoneListFilter = {
97
+ limit?: number;
98
+ };
99
+ export type WorkflowPublishedVersionListFilter = {
100
+ workflowId?: string;
101
+ limit?: number;
102
+ };
103
+ export type WorkflowEventListFilter = {
104
+ workflowRunId?: WorkflowRunId;
105
+ type?: string;
106
+ nodeId?: string;
107
+ edgeId?: string;
108
+ attemptId?: NodeAttemptId;
109
+ limit?: number;
110
+ };
111
+ export type WorkflowWaitTokenListFilter = {
112
+ workflowRunId?: WorkflowRunId;
113
+ status?: WorkflowWaitTokenStatus;
114
+ humanNodeId?: string;
115
+ limit?: number;
116
+ };
117
+ export type WorkflowNodeAttemptListFilter = {
118
+ workflowRunId?: WorkflowRunId;
119
+ nodeId?: string;
120
+ kind?: NodeAttempt["kind"];
121
+ status?: NodeAttemptStatus;
122
+ limit?: number;
123
+ };
124
+ export type WorkflowEdgeTransferListFilter = {
125
+ workflowRunId?: WorkflowRunId;
126
+ edgeId?: string;
127
+ targetNodeId?: string;
128
+ status?: EdgeTransfer["status"];
129
+ limit?: number;
130
+ };
131
+ export type WorkflowCheckpointListFilter = {
132
+ workflowRunId?: WorkflowRunId;
133
+ namespace?: string;
134
+ limit?: number;
135
+ };
136
+ export type WorkflowWakeupListFilter = {
137
+ workflowRunId?: WorkflowRunId;
138
+ nodeAttemptId?: NodeAttemptId;
139
+ kind?: WorkflowWakeup["kind"];
140
+ correlationId?: string;
141
+ limit?: number;
142
+ };
143
+ export type WorkflowHumanActionListFilter = {
144
+ workflowRunId?: WorkflowRunId;
145
+ waitTokenId?: WorkflowWaitTokenId;
146
+ kind?: WorkflowHumanActionKind;
147
+ limit?: number;
148
+ };
149
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/store/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/store/contracts.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { DatabaseSync } from "node:sqlite";
2
+ import type { WorkflowDraftRecord } from "../types/index.js";
3
+ type WorkflowDraftWriteIdentityFields = Pick<WorkflowDraftRecord, "draftId" | "workflowId" | "updatedAt" | "updatedBy">;
4
+ export declare function assertNoActiveWorkflowDraftConflict(db: DatabaseSync, record: Pick<WorkflowDraftRecord, "draftId" | "workflowId">): void;
5
+ export declare function updateWorkflowIdentityCurrentDraft(db: DatabaseSync, record: WorkflowDraftWriteIdentityFields): void;
6
+ export {};
7
+ //# sourceMappingURL=draft-writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-writes.d.ts","sourceRoot":"","sources":["../../src/store/draft-writes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,KAAK,gCAAgC,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC;AAMxH,wBAAgB,mCAAmC,CACjD,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,YAAY,CAAC,GAC1D,IAAI,CAON;AAED,wBAAgB,kCAAkC,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,gCAAgC,GAAG,IAAI,CAQnH"}
@@ -0,0 +1,18 @@
1
+ export function assertNoActiveWorkflowDraftConflict(db, record) {
2
+ const conflict = db
3
+ .prepare("SELECT draft_id FROM workflow_drafts WHERE workflow_id = ? AND status = 'draft' AND draft_id <> ? LIMIT 1")
4
+ .get(record.workflowId, record.draftId);
5
+ if (conflict) {
6
+ throw new Error(`Workflow '${record.workflowId}' already has an active draft '${conflict.draft_id}'.`);
7
+ }
8
+ }
9
+ export function updateWorkflowIdentityCurrentDraft(db, record) {
10
+ db.prepare(`
11
+ UPDATE workflow_identities
12
+ SET current_draft_id = ?,
13
+ updated_by = COALESCE(?, updated_by),
14
+ updated_at = ?
15
+ WHERE workflow_id = ?
16
+ `).run(record.draftId, record.updatedBy ?? null, record.updatedAt, record.workflowId);
17
+ }
18
+ //# sourceMappingURL=draft-writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-writes.js","sourceRoot":"","sources":["../../src/store/draft-writes.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,mCAAmC,CACjD,EAAgB,EAChB,MAA2D;IAE3D,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,2GAA2G,CAAC;SACpH,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAA+C,CAAC;IACxF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,aAAa,MAAM,CAAC,UAAU,kCAAkC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;IACzG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,EAAgB,EAAE,MAAwC;IAC3G,EAAE,CAAC,OAAO,CAAC;;;;;;GAMV,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACxF,CAAC"}