@pasko70/pibo 3.3.0 → 3.4.0
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.
- package/dist/agent-runtime/capabilities.js +5 -0
- package/dist/agent-runtime/contract.js +2 -0
- package/dist/agent-runtime/routed-session.js +68 -11
- package/dist/agent-runtimes/codex-native/adapter.js +3 -0
- package/dist/agent-runtimes/codex-native/thread.js +26 -4
- package/dist/agent-runtimes/omp/adapter.js +1 -0
- package/dist/agent-runtimes/pi/adapter.js +4 -0
- package/dist/agent-runtimes/pi/routed-session.js +53 -5
- package/dist/apps/chat/chat-api-routes.js +11 -37
- package/dist/apps/chat/chat-request-normalizers.js +8 -48
- package/dist/apps/chat/data/legacy-project-migration.js +492 -0
- package/dist/apps/chat/data/room-service.js +2 -2
- package/dist/apps/chat/data/workflow-session-model.js +1 -0
- package/dist/apps/chat/data/workflow-session-service.js +352 -0
- package/dist/apps/chat/rooms.js +1 -1
- package/dist/apps/chat/types/rooms.js +30 -0
- package/dist/apps/chat/web-app.js +264 -647
- package/dist/apps/chat/workflow-catalog.js +18 -18
- package/dist/apps/chat/{project-workflow-human-actions.js → workflow-human-actions.js} +14 -14
- package/dist/apps/chat/workflow-manual-trigger-runtime.js +5 -1
- package/dist/apps/chat/workflow-persistence.js +20 -28
- package/dist/apps/chat/{project-workflow-sessions.js → workflow-sessions.js} +18 -17
- package/dist/apps/chat-ui/assets/{dist-Kc3zbvQi.js → dist-AhtdAETR.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-CcAkJ8iv.js → dist-Bk_L1qbJ.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-BbCjOLiw.js → dist-Dyp6sLQn.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-Bd9gWCbk.js → dist-jVaiGXFD.js} +1 -1
- package/dist/apps/chat-ui/assets/{dist-C9a0_446.js → dist-t25moyJS.js} +1 -1
- package/dist/apps/chat-ui/assets/index-CZjNw-aK.js +228 -0
- package/dist/apps/chat-ui/assets/index-CcEjFITM.css +1 -0
- package/dist/apps/chat-ui/index.html +2 -2
- package/dist/apps/chat-vscode-web/assets/index-Spj6M0tn.js +43 -0
- package/dist/apps/chat-vscode-web/index.html +1 -1
- package/dist/compute/pool/cli.js +1 -1
- package/dist/compute/pool/seeds.js +2 -3
- package/dist/config/config.js +1 -1
- package/dist/core/session-router.js +7 -4
- package/dist/previews/cli.js +154 -79
- package/dist/previews/compute-worker.js +37 -0
- package/dist/previews/config.js +2 -1
- package/dist/previews/migrations/session-ownership.js +7 -0
- package/dist/previews/proxy.js +4 -2
- package/dist/previews/public-setup.js +108 -0
- package/dist/previews/store.js +20 -13
- package/dist/previews/web-app.js +12 -2
- package/dist/sessions/workflow-session-kind.js +0 -3
- package/npm-shrinkwrap.json +7 -6
- package/package.json +6 -2
- package/packages/workflows/README.md +21 -0
- package/packages/workflows/dist/api/index.d.ts +48 -0
- package/packages/workflows/dist/api/index.d.ts.map +1 -0
- package/packages/workflows/dist/api/index.js +96 -0
- package/packages/workflows/dist/api/index.js.map +1 -0
- package/packages/workflows/dist/definition-hash.d.ts +4 -0
- package/packages/workflows/dist/definition-hash.d.ts.map +1 -0
- package/packages/workflows/dist/definition-hash.js +27 -0
- package/packages/workflows/dist/definition-hash.js.map +1 -0
- package/packages/workflows/dist/fixtures/index.d.ts +39 -0
- package/packages/workflows/dist/fixtures/index.d.ts.map +1 -0
- package/packages/workflows/dist/fixtures/index.js +608 -0
- package/packages/workflows/dist/fixtures/index.js.map +1 -0
- package/packages/workflows/dist/index.d.ts +16 -0
- package/packages/workflows/dist/index.d.ts.map +1 -0
- package/packages/workflows/dist/index.js +10 -0
- package/packages/workflows/dist/index.js.map +1 -0
- package/packages/workflows/dist/inspection/index.d.ts +47 -0
- package/packages/workflows/dist/inspection/index.d.ts.map +1 -0
- package/packages/workflows/dist/inspection/index.js +131 -0
- package/packages/workflows/dist/inspection/index.js.map +1 -0
- package/packages/workflows/dist/registry/index.d.ts +30 -0
- package/packages/workflows/dist/registry/index.d.ts.map +1 -0
- package/packages/workflows/dist/registry/index.js +161 -0
- package/packages/workflows/dist/registry/index.js.map +1 -0
- package/packages/workflows/dist/runtime/adapter-node.d.ts +28 -0
- package/packages/workflows/dist/runtime/adapter-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/adapter-node.js +172 -0
- package/packages/workflows/dist/runtime/adapter-node.js.map +1 -0
- package/packages/workflows/dist/runtime/agent-node.d.ts +32 -0
- package/packages/workflows/dist/runtime/agent-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/agent-node.js +231 -0
- package/packages/workflows/dist/runtime/agent-node.js.map +1 -0
- package/packages/workflows/dist/runtime/agent-runtime.d.ts +25 -0
- package/packages/workflows/dist/runtime/agent-runtime.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/agent-runtime.js +111 -0
- package/packages/workflows/dist/runtime/agent-runtime.js.map +1 -0
- package/packages/workflows/dist/runtime/code-node.d.ts +31 -0
- package/packages/workflows/dist/runtime/code-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/code-node.js +223 -0
- package/packages/workflows/dist/runtime/code-node.js.map +1 -0
- package/packages/workflows/dist/runtime/dispatch-failures.d.ts +36 -0
- package/packages/workflows/dist/runtime/dispatch-failures.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/dispatch-failures.js +80 -0
- package/packages/workflows/dist/runtime/dispatch-failures.js.map +1 -0
- package/packages/workflows/dist/runtime/edge-payloads.d.ts +3 -0
- package/packages/workflows/dist/runtime/edge-payloads.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/edge-payloads.js +11 -0
- package/packages/workflows/dist/runtime/edge-payloads.js.map +1 -0
- package/packages/workflows/dist/runtime/edge-transfer.d.ts +39 -0
- package/packages/workflows/dist/runtime/edge-transfer.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/edge-transfer.js +356 -0
- package/packages/workflows/dist/runtime/edge-transfer.js.map +1 -0
- package/packages/workflows/dist/runtime/human-action.d.ts +43 -0
- package/packages/workflows/dist/runtime/human-action.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/human-action.js +231 -0
- package/packages/workflows/dist/runtime/human-action.js.map +1 -0
- package/packages/workflows/dist/runtime/human-node.d.ts +27 -0
- package/packages/workflows/dist/runtime/human-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/human-node.js +126 -0
- package/packages/workflows/dist/runtime/human-node.js.map +1 -0
- package/packages/workflows/dist/runtime/ids.d.ts +2 -0
- package/packages/workflows/dist/runtime/ids.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/ids.js +4 -0
- package/packages/workflows/dist/runtime/ids.js.map +1 -0
- package/packages/workflows/dist/runtime/index.d.ts +23 -0
- package/packages/workflows/dist/runtime/index.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/index.js +12 -0
- package/packages/workflows/dist/runtime/index.js.map +1 -0
- package/packages/workflows/dist/runtime/manual-trigger.d.ts +51 -0
- package/packages/workflows/dist/runtime/manual-trigger.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/manual-trigger.js +403 -0
- package/packages/workflows/dist/runtime/manual-trigger.js.map +1 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.d.ts +48 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.js +246 -0
- package/packages/workflows/dist/runtime/nested-workflow-node.js.map +1 -0
- package/packages/workflows/dist/runtime/one-node-agent.d.ts +34 -0
- package/packages/workflows/dist/runtime/one-node-agent.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/one-node-agent.js +334 -0
- package/packages/workflows/dist/runtime/one-node-agent.js.map +1 -0
- package/packages/workflows/dist/runtime/persistence.d.ts +9 -0
- package/packages/workflows/dist/runtime/persistence.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/persistence.js +67 -0
- package/packages/workflows/dist/runtime/persistence.js.map +1 -0
- package/packages/workflows/dist/runtime/pibo-routing.d.ts +126 -0
- package/packages/workflows/dist/runtime/pibo-routing.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/pibo-routing.js +96 -0
- package/packages/workflows/dist/runtime/pibo-routing.js.map +1 -0
- package/packages/workflows/dist/runtime/prompts.d.ts +20 -0
- package/packages/workflows/dist/runtime/prompts.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/prompts.js +235 -0
- package/packages/workflows/dist/runtime/prompts.js.map +1 -0
- package/packages/workflows/dist/runtime/retry.d.ts +35 -0
- package/packages/workflows/dist/runtime/retry.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/retry.js +80 -0
- package/packages/workflows/dist/runtime/retry.js.map +1 -0
- package/packages/workflows/dist/runtime/state.d.ts +14 -0
- package/packages/workflows/dist/runtime/state.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/state.js +139 -0
- package/packages/workflows/dist/runtime/state.js.map +1 -0
- package/packages/workflows/dist/runtime/time.d.ts +6 -0
- package/packages/workflows/dist/runtime/time.d.ts.map +1 -0
- package/packages/workflows/dist/runtime/time.js +42 -0
- package/packages/workflows/dist/runtime/time.js.map +1 -0
- package/packages/workflows/dist/store/catalog-records.d.ts +18 -0
- package/packages/workflows/dist/store/catalog-records.d.ts.map +1 -0
- package/packages/workflows/dist/store/catalog-records.js +59 -0
- package/packages/workflows/dist/store/catalog-records.js.map +1 -0
- package/packages/workflows/dist/store/contracts.d.ts +149 -0
- package/packages/workflows/dist/store/contracts.d.ts.map +1 -0
- package/packages/workflows/dist/store/contracts.js +2 -0
- package/packages/workflows/dist/store/contracts.js.map +1 -0
- package/packages/workflows/dist/store/draft-writes.d.ts +7 -0
- package/packages/workflows/dist/store/draft-writes.d.ts.map +1 -0
- package/packages/workflows/dist/store/draft-writes.js +18 -0
- package/packages/workflows/dist/store/draft-writes.js.map +1 -0
- package/packages/workflows/dist/store/index.d.ts +55 -0
- package/packages/workflows/dist/store/index.d.ts.map +1 -0
- package/packages/workflows/dist/store/index.js +650 -0
- package/packages/workflows/dist/store/index.js.map +1 -0
- package/packages/workflows/dist/store/list-query.d.ts +13 -0
- package/packages/workflows/dist/store/list-query.d.ts.map +1 -0
- package/packages/workflows/dist/store/list-query.js +20 -0
- package/packages/workflows/dist/store/list-query.js.map +1 -0
- package/packages/workflows/dist/store/row-mappers.d.ts +206 -0
- package/packages/workflows/dist/store/row-mappers.d.ts.map +1 -0
- package/packages/workflows/dist/store/row-mappers.js +262 -0
- package/packages/workflows/dist/store/row-mappers.js.map +1 -0
- package/packages/workflows/dist/store/schema.d.ts +13 -0
- package/packages/workflows/dist/store/schema.d.ts.map +1 -0
- package/packages/workflows/dist/store/schema.js +458 -0
- package/packages/workflows/dist/store/schema.js.map +1 -0
- package/packages/workflows/dist/store/write-values.d.ts +18 -0
- package/packages/workflows/dist/store/write-values.d.ts.map +1 -0
- package/packages/workflows/dist/store/write-values.js +227 -0
- package/packages/workflows/dist/store/write-values.js.map +1 -0
- package/packages/workflows/dist/types/index.d.ts +1202 -0
- package/packages/workflows/dist/types/index.d.ts.map +1 -0
- package/packages/workflows/dist/types/index.js +8 -0
- package/packages/workflows/dist/types/index.js.map +1 -0
- package/packages/workflows/dist/validation/diagnostics.d.ts +27 -0
- package/packages/workflows/dist/validation/diagnostics.d.ts.map +1 -0
- package/packages/workflows/dist/validation/diagnostics.js +104 -0
- package/packages/workflows/dist/validation/diagnostics.js.map +1 -0
- package/packages/workflows/dist/validation/graph-cycles.d.ts +4 -0
- package/packages/workflows/dist/validation/graph-cycles.d.ts.map +1 -0
- package/packages/workflows/dist/validation/graph-cycles.js +130 -0
- package/packages/workflows/dist/validation/graph-cycles.js.map +1 -0
- package/packages/workflows/dist/validation/graph-edges.d.ts +5 -0
- package/packages/workflows/dist/validation/graph-edges.d.ts.map +1 -0
- package/packages/workflows/dist/validation/graph-edges.js +48 -0
- package/packages/workflows/dist/validation/graph-edges.js.map +1 -0
- package/packages/workflows/dist/validation/graph-ports.d.ts +5 -0
- package/packages/workflows/dist/validation/graph-ports.d.ts.map +1 -0
- package/packages/workflows/dist/validation/graph-ports.js +55 -0
- package/packages/workflows/dist/validation/graph-ports.js.map +1 -0
- package/packages/workflows/dist/validation/index.d.ts +18 -0
- package/packages/workflows/dist/validation/index.d.ts.map +1 -0
- package/packages/workflows/dist/validation/index.js +175 -0
- package/packages/workflows/dist/validation/index.js.map +1 -0
- package/packages/workflows/dist/validation/json-schema.d.ts +12 -0
- package/packages/workflows/dist/validation/json-schema.d.ts.map +1 -0
- package/packages/workflows/dist/validation/json-schema.js +556 -0
- package/packages/workflows/dist/validation/json-schema.js.map +1 -0
- package/packages/workflows/dist/validation/registry-refs.d.ts +21 -0
- package/packages/workflows/dist/validation/registry-refs.d.ts.map +1 -0
- package/packages/workflows/dist/validation/registry-refs.js +283 -0
- package/packages/workflows/dist/validation/registry-refs.js.map +1 -0
- package/packages/workflows/dist/validation/retry-policy.d.ts +3 -0
- package/packages/workflows/dist/validation/retry-policy.d.ts.map +1 -0
- package/packages/workflows/dist/validation/retry-policy.js +114 -0
- package/packages/workflows/dist/validation/retry-policy.js.map +1 -0
- package/packages/workflows/dist/validation/schema-declarations.d.ts +5 -0
- package/packages/workflows/dist/validation/schema-declarations.d.ts.map +1 -0
- package/packages/workflows/dist/validation/schema-declarations.js +36 -0
- package/packages/workflows/dist/validation/schema-declarations.js.map +1 -0
- package/packages/workflows/dist/validation/state-access.d.ts +4 -0
- package/packages/workflows/dist/validation/state-access.d.ts.map +1 -0
- package/packages/workflows/dist/validation/state-access.js +121 -0
- package/packages/workflows/dist/validation/state-access.js.map +1 -0
- package/packages/workflows/dist/xstate/index.d.ts +73 -0
- package/packages/workflows/dist/xstate/index.d.ts.map +1 -0
- package/packages/workflows/dist/xstate/index.js +728 -0
- package/packages/workflows/dist/xstate/index.js.map +1 -0
- package/packages/workflows/package.json +23 -0
- package/dist/apps/chat/data/project-service.js +0 -1029
- package/dist/apps/chat-ui/assets/index-DWJnUye8.css +0 -1
- package/dist/apps/chat-ui/assets/index-exohEOUE.js +0 -228
- 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 @@
|
|
|
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"}
|