@osolmaz/pi-workflows 0.16.2 → 0.16.4
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/README.md +41 -41
- package/dist/builtins/monitor.workflow.d.ts +1 -1
- package/dist/builtins/monitor.workflow.js +8 -8
- package/dist/builtins/pi-agent-group.js +3 -3
- package/dist/builtins/pi-agent-group.js.map +1 -1
- package/dist/channels/adapter-entry.js +14 -14
- package/dist/channels/adapter-entry.js.map +1 -1
- package/dist/client/client.d.ts +6 -6
- package/dist/client/client.js +27 -27
- package/dist/client/client.js.map +1 -1
- package/dist/client/protocol.d.ts +4 -1
- package/dist/client/protocol.js +17 -11
- package/dist/client/protocol.js.map +1 -1
- package/dist/client/resolver.d.ts +4 -4
- package/dist/client/view.d.ts +1 -1
- package/dist/extension/index.d.ts +1 -1
- package/dist/extension/index.js +32 -32
- package/dist/extension/index.js.map +1 -1
- package/dist/extension/recorder.d.ts +1 -1
- package/dist/extension/recorder.js +1 -1
- package/dist/extension/recorder.js.map +1 -1
- package/dist/extension/remote-recorder-store.d.ts +1 -1
- package/dist/extension/remote-recorder-store.js +2 -2
- package/dist/extension/remote-recorder-store.js.map +1 -1
- package/dist/extension/{controller-command.d.ts → resource-manager-command.d.ts} +6 -6
- package/dist/extension/{controller-command.js → resource-manager-command.js} +7 -7
- package/dist/extension/resource-manager-command.js.map +1 -0
- package/dist/extension/session-delivery.d.ts +1 -1
- package/dist/extension/session-delivery.js +2 -2
- package/dist/extension/session-delivery.js.map +1 -1
- package/dist/extension/session-view.d.ts +1 -1
- package/dist/extension/session-view.js +1 -1
- package/dist/extension/session-view.js.map +1 -1
- package/dist/extension/workflow-message-coordinator.d.ts +1 -1
- package/dist/extension/workflow-message-coordinator.js +6 -6
- package/dist/extension/workflow-message-coordinator.js.map +1 -1
- package/dist/resource-managers/conditions.d.ts +6 -0
- package/dist/{controllers → resource-managers}/conditions.js +3 -3
- package/dist/resource-managers/conditions.js.map +1 -0
- package/dist/resource-managers/definition.d.ts +6 -0
- package/dist/resource-managers/definition.js +45 -0
- package/dist/resource-managers/definition.js.map +1 -0
- package/dist/resource-managers/effects.d.ts +15 -0
- package/dist/{controllers → resource-managers}/effects.js +2 -2
- package/dist/resource-managers/effects.js.map +1 -0
- package/dist/resource-managers/errors.d.ts +12 -0
- package/dist/resource-managers/errors.js +25 -0
- package/dist/resource-managers/errors.js.map +1 -0
- package/dist/resource-managers/index.d.ts +12 -0
- package/dist/resource-managers/index.js +12 -0
- package/dist/resource-managers/index.js.map +1 -0
- package/dist/resource-managers/json.js.map +1 -0
- package/dist/resource-managers/loader.d.ts +23 -0
- package/dist/resource-managers/loader.js +75 -0
- package/dist/resource-managers/loader.js.map +1 -0
- package/dist/resource-managers/results.d.ts +5 -0
- package/dist/resource-managers/results.js.map +1 -0
- package/dist/resource-managers/runtime.d.ts +59 -0
- package/dist/{controllers/manager.js → resource-managers/runtime.js} +57 -57
- package/dist/resource-managers/runtime.js.map +1 -0
- package/dist/{controllers → resource-managers}/sqlite.d.ts +44 -44
- package/dist/{controllers → resource-managers}/sqlite.js +139 -130
- package/dist/resource-managers/sqlite.js.map +1 -0
- package/dist/{controllers → resource-managers}/store.d.ts +33 -33
- package/dist/{controllers → resource-managers}/store.js.map +1 -1
- package/dist/{controllers → resource-managers}/types.d.ts +41 -41
- package/dist/{controllers → resource-managers}/types.js.map +1 -1
- package/dist/resource-managers/workflows.d.ts +34 -0
- package/dist/{controllers → resource-managers}/workflows.js +15 -15
- package/dist/resource-managers/workflows.js.map +1 -0
- package/dist/server/channel-effects.js.map +1 -0
- package/dist/{host → server}/channel-supervisor.d.ts +6 -6
- package/dist/{host → server}/channel-supervisor.js +3 -3
- package/dist/server/channel-supervisor.js.map +1 -0
- package/dist/{host/child-worker-supervisor.d.ts → server/child-runner-supervisor.d.ts} +15 -13
- package/dist/{host/child-worker-supervisor.js → server/child-runner-supervisor.js} +6 -5
- package/dist/server/child-runner-supervisor.js.map +1 -0
- package/dist/{host → server}/processes.d.ts +3 -3
- package/dist/{host → server}/processes.js +3 -3
- package/dist/server/processes.js.map +1 -0
- package/dist/{host → server}/resolver-entry.d.ts +6 -6
- package/dist/{host → server}/resolver-entry.js +14 -14
- package/dist/server/resolver-entry.js.map +1 -0
- package/dist/server/resource-runner-entry.d.ts +2 -0
- package/dist/{host/controller-worker-entry.js → server/resource-runner-entry.js} +33 -33
- package/dist/server/resource-runner-entry.js.map +1 -0
- package/dist/server/resource-runner-protocol.d.ts +36 -0
- package/dist/server/resource-runner-protocol.js +49 -0
- package/dist/server/resource-runner-protocol.js.map +1 -0
- package/dist/server/resource-runner-supervisor.d.ts +21 -0
- package/dist/{host/worker-supervisor.js → server/resource-runner-supervisor.js} +17 -17
- package/dist/server/resource-runner-supervisor.js.map +1 -0
- package/dist/{host → server}/rpc-bridge.d.ts +3 -3
- package/dist/{host → server}/rpc-bridge.js +3 -3
- package/dist/server/rpc-bridge.js.map +1 -0
- package/dist/{host → server}/rpc-executor.d.ts +1 -1
- package/dist/{host → server}/rpc-executor.js +3 -3
- package/dist/server/rpc-executor.js.map +1 -0
- package/dist/{host/host-entry.js → server/server-entry.js} +6 -6
- package/dist/server/server-entry.js.map +1 -0
- package/dist/{host/runner.d.ts → server/server.d.ts} +39 -38
- package/dist/{host/runner.js → server/server.js} +408 -374
- package/dist/server/server.js.map +1 -0
- package/dist/{host → server}/state.d.ts +25 -25
- package/dist/{host → server}/state.js +49 -49
- package/dist/server/state.js.map +1 -0
- package/dist/{host → server}/view.d.ts +7 -7
- package/dist/{host → server}/view.js +13 -13
- package/dist/server/view.js.map +1 -0
- package/dist/server/workflow-runner-content.d.ts +6 -0
- package/dist/server/workflow-runner-content.js +96 -0
- package/dist/server/workflow-runner-content.js.map +1 -0
- package/dist/{host/worker-entry.d.ts → server/workflow-runner-entry.d.ts} +3 -3
- package/dist/{host/worker-entry.js → server/workflow-runner-entry.js} +68 -35
- package/dist/server/workflow-runner-entry.js.map +1 -0
- package/dist/server/workflow-runner-protocol.d.ts +69 -0
- package/dist/server/workflow-runner-protocol.js +176 -0
- package/dist/server/workflow-runner-protocol.js.map +1 -0
- package/dist/{host/worker-store.d.ts → server/workflow-runner-store.d.ts} +11 -11
- package/dist/{host/worker-store.js → server/workflow-runner-store.js} +8 -8
- package/dist/server/workflow-runner-store.js.map +1 -0
- package/dist/server/workflow-runner-supervisor.d.ts +22 -0
- package/dist/server/workflow-runner-supervisor.js +56 -0
- package/dist/server/workflow-runner-supervisor.js.map +1 -0
- package/dist/state/prune.d.ts +1 -1
- package/dist/state/prune.js +17 -10
- package/dist/state/prune.js.map +1 -1
- package/dist/state/schema.js +2 -2
- package/dist/state/workflow-messages.d.ts +1 -1
- package/dist/state/workflow-messages.js +1 -1
- package/dist/state/workflow-messages.js.map +1 -1
- package/dist/viewer/backup.js +1 -1
- package/dist/viewer/backup.js.map +1 -1
- package/dist/viewer/cli.d.ts +2 -2
- package/dist/viewer/cli.js +46 -32
- package/dist/viewer/cli.js.map +1 -1
- package/dist/viewer/tui.d.ts +1 -1
- package/dist/viewer/tui.js +1 -1
- package/dist/viewer/tui.js.map +1 -1
- package/dist/workflows/command-batch.js +2 -2
- package/dist/workflows/engine.js +14 -15
- package/dist/workflows/engine.js.map +1 -1
- package/dist/workflows/store.d.ts +12 -11
- package/dist/workflows/store.js +24 -18
- package/dist/workflows/store.js.map +1 -1
- package/dist/workflows/types.d.ts +2 -2
- package/docs/2026-08-20-durable-workflow-launch-plan.md +12 -12
- package/docs/2026-08-25-workflow-follow-ups.md +7 -7
- package/docs/2026-08-25-workflow-settings.md +3 -3
- package/docs/2026-08-30-out-of-process-workflow-host-plan.md +3 -3
- package/docs/2026-09-01-restore-session-delivery-controls-plan.md +5 -5
- package/docs/2026-09-01-unified-workflow-client-plan.md +6 -6
- package/docs/2026-09-02-installed-live-e2e-plan.md +3 -3
- package/docs/2026-09-02-unify-workflow-messages-plan.md +8 -8
- package/docs/2026-09-04-workflow-run-state-plan.md +6 -6
- package/docs/DEFERRED_TURNS.md +7 -7
- package/docs/DESIGN_PHILOSOPHY.md +1 -1
- package/docs/HUMAN_DECISIONS.md +11 -11
- package/docs/HUMAN_DECISION_PRESENTATIONS.md +4 -4
- package/docs/MONITOR.md +1 -1
- package/docs/RESOURCE_MANAGERS.md +221 -0
- package/docs/SQLITE_STATE.md +35 -33
- package/docs/WORKFLOW_COMPOSITION.md +1 -1
- package/docs/{WORKFLOW_HOST.md → WORKFLOW_SERVER.md} +125 -119
- package/docs/WORKFLOW_STEP_MESSAGES.md +18 -18
- package/docs/WORKFLOW_UPDATES.md +16 -16
- package/docs/development.md +15 -14
- package/docs/live-replay-protocol.md +20 -20
- package/docs/plans/2026-08-04-controller-runtime-plan.md +25 -25
- package/docs/plans/2026-08-05-always-on-workflows-plan.md +8 -8
- package/docs/plans/2026-08-10-agent-managed-monitor-workflows-plan.md +2 -2
- package/docs/plans/2026-08-13-session-addressed-workflow-notifications-plan.md +1 -1
- package/docs/plans/2026-08-16-workflow-updates-plan.md +5 -5
- package/docs/plans/2026-08-19-human-decision-gates-plan.md +1 -1
- package/docs/plans/2026-08-20-bounded-command-batches-plan.md +1 -1
- package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +3 -3
- package/docs/plans/2026-08-21-sanity-check-plan.md +2 -2
- package/docs/plans/2026-08-23-assistant-agent-completion-plan.md +5 -5
- package/docs/plans/2026-08-23-sqlite-state-plan.md +25 -25
- package/docs/plans/2026-08-25-live-workflow-settings-plan.md +4 -4
- package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +3 -3
- package/docs/plans/2026-09-04-workflow-runner-resume-state-plan.md +318 -0
- package/docs/plans/piw-viewer-experience-implementation-plan.md +1 -1
- package/docs/tui-viewer.md +9 -9
- package/docs/workflows.md +72 -66
- package/examples/{controllers/pull-request.controller.ts → resource-managers/pull-request.resource-manager.ts} +12 -12
- package/herdr-plugin.toml +1 -1
- package/package.json +12 -11
- package/protocol/client.v1.schema.json +7 -7
- package/protocol/fixtures/client-v1.json +1 -1
- package/src/builtins/monitor.workflow.ts +9 -9
- package/src/builtins/pi-agent-group.ts +3 -3
- package/src/channels/adapter-entry.ts +14 -14
- package/src/client/client.ts +33 -32
- package/src/client/protocol.ts +16 -11
- package/src/client/resolver.ts +4 -4
- package/src/client/view.ts +1 -1
- package/src/extension/index.ts +44 -34
- package/src/extension/recorder.ts +1 -1
- package/src/extension/remote-recorder-store.ts +2 -2
- package/src/extension/resource-manager-command.ts +45 -0
- package/src/extension/session-delivery.ts +2 -2
- package/src/extension/session-view.ts +1 -1
- package/src/extension/workflow-message-coordinator.ts +6 -6
- package/src/{controllers → resource-managers}/conditions.ts +23 -23
- package/src/resource-managers/definition.ts +71 -0
- package/src/{controllers → resource-managers}/effects.ts +9 -9
- package/src/resource-managers/errors.ts +27 -0
- package/src/resource-managers/index.ts +88 -0
- package/src/resource-managers/loader.ts +111 -0
- package/src/{controllers → resource-managers}/results.ts +4 -4
- package/src/{controllers/manager.ts → resource-managers/runtime.ts} +95 -92
- package/src/{controllers → resource-managers}/sqlite.ts +198 -186
- package/src/{controllers → resource-managers}/store.ts +46 -38
- package/src/{controllers → resource-managers}/types.ts +50 -41
- package/src/{controllers → resource-managers}/workflows.ts +43 -41
- package/src/{host → server}/channel-supervisor.ts +8 -8
- package/src/{host/child-worker-supervisor.ts → server/child-runner-supervisor.ts} +22 -18
- package/src/{host → server}/processes.ts +3 -3
- package/src/{host → server}/resolver-entry.ts +28 -25
- package/src/{host/controller-worker-entry.ts → server/resource-runner-entry.ts} +67 -65
- package/src/server/resource-runner-protocol.ts +103 -0
- package/src/server/resource-runner-supervisor.ts +76 -0
- package/src/{host → server}/rpc-bridge.ts +3 -3
- package/src/{host → server}/rpc-executor.ts +4 -4
- package/src/{host/host-entry.ts → server/server-entry.ts} +5 -5
- package/src/{host/runner.ts → server/server.ts} +526 -461
- package/src/{host → server}/state.ts +78 -67
- package/src/{host → server}/view.ts +15 -15
- package/src/server/workflow-runner-content.ts +119 -0
- package/src/{host/worker-entry.ts → server/workflow-runner-entry.ts} +98 -57
- package/src/server/workflow-runner-protocol.ts +241 -0
- package/src/{host/worker-store.ts → server/workflow-runner-store.ts} +18 -20
- package/src/server/workflow-runner-supervisor.ts +79 -0
- package/src/state/prune.ts +27 -9
- package/src/state/schema.ts +2 -2
- package/src/state/workflow-messages.ts +1 -1
- package/src/viewer/backup.ts +1 -1
- package/src/viewer/cli.ts +50 -36
- package/src/viewer/tui.ts +1 -1
- package/src/workflows/command-batch.ts +2 -2
- package/src/workflows/engine.ts +14 -15
- package/src/workflows/store.ts +31 -28
- package/src/workflows/types.ts +2 -2
- package/dist/controllers/conditions.d.ts +0 -6
- package/dist/controllers/conditions.js.map +0 -1
- package/dist/controllers/definition.d.ts +0 -6
- package/dist/controllers/definition.js +0 -45
- package/dist/controllers/definition.js.map +0 -1
- package/dist/controllers/effects.d.ts +0 -15
- package/dist/controllers/effects.js.map +0 -1
- package/dist/controllers/errors.d.ts +0 -12
- package/dist/controllers/errors.js +0 -25
- package/dist/controllers/errors.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -12
- package/dist/controllers/index.js +0 -12
- package/dist/controllers/index.js.map +0 -1
- package/dist/controllers/json.js.map +0 -1
- package/dist/controllers/loader.d.ts +0 -23
- package/dist/controllers/loader.js +0 -74
- package/dist/controllers/loader.js.map +0 -1
- package/dist/controllers/manager.d.ts +0 -59
- package/dist/controllers/manager.js.map +0 -1
- package/dist/controllers/results.d.ts +0 -5
- package/dist/controllers/results.js.map +0 -1
- package/dist/controllers/sqlite.js.map +0 -1
- package/dist/controllers/workflows.d.ts +0 -34
- package/dist/controllers/workflows.js.map +0 -1
- package/dist/extension/controller-command.js.map +0 -1
- package/dist/host/channel-effects.js.map +0 -1
- package/dist/host/channel-supervisor.js.map +0 -1
- package/dist/host/child-worker-supervisor.js.map +0 -1
- package/dist/host/controller-worker-entry.d.ts +0 -2
- package/dist/host/controller-worker-entry.js.map +0 -1
- package/dist/host/controller-worker-protocol.d.ts +0 -36
- package/dist/host/controller-worker-protocol.js +0 -49
- package/dist/host/controller-worker-protocol.js.map +0 -1
- package/dist/host/controller-worker-supervisor.d.ts +0 -21
- package/dist/host/controller-worker-supervisor.js +0 -54
- package/dist/host/controller-worker-supervisor.js.map +0 -1
- package/dist/host/host-entry.js.map +0 -1
- package/dist/host/processes.js.map +0 -1
- package/dist/host/resolver-entry.js.map +0 -1
- package/dist/host/rpc-bridge.js.map +0 -1
- package/dist/host/rpc-executor.js.map +0 -1
- package/dist/host/runner.js.map +0 -1
- package/dist/host/state.js.map +0 -1
- package/dist/host/view.js.map +0 -1
- package/dist/host/worker-entry.js.map +0 -1
- package/dist/host/worker-protocol.d.ts +0 -46
- package/dist/host/worker-protocol.js +0 -122
- package/dist/host/worker-protocol.js.map +0 -1
- package/dist/host/worker-store.js.map +0 -1
- package/dist/host/worker-supervisor.d.ts +0 -22
- package/dist/host/worker-supervisor.js.map +0 -1
- package/docs/CONTROLLERS.md +0 -217
- package/src/controllers/definition.ts +0 -65
- package/src/controllers/errors.ts +0 -27
- package/src/controllers/index.ts +0 -88
- package/src/controllers/loader.ts +0 -104
- package/src/extension/controller-command.ts +0 -45
- package/src/host/controller-worker-protocol.ts +0 -104
- package/src/host/controller-worker-supervisor.ts +0 -79
- package/src/host/worker-protocol.ts +0 -176
- package/src/host/worker-supervisor.ts +0 -74
- /package/dist/{controllers → resource-managers}/json.d.ts +0 -0
- /package/dist/{controllers → resource-managers}/json.js +0 -0
- /package/dist/{controllers → resource-managers}/results.js +0 -0
- /package/dist/{controllers → resource-managers}/store.js +0 -0
- /package/dist/{controllers → resource-managers}/types.js +0 -0
- /package/dist/{host → server}/channel-effects.d.ts +0 -0
- /package/dist/{host → server}/channel-effects.js +0 -0
- /package/dist/{host/host-entry.d.ts → server/server-entry.d.ts} +0 -0
- /package/src/{controllers → resource-managers}/json.ts +0 -0
- /package/src/{host → server}/channel-effects.ts +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { canonicalJson, parseJson } from "../state/json.js";
|
|
3
|
+
import { WORKFLOW_RUNNER_CONTENT_CHUNK_BYTES, WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA, WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA, encodeRunnerLine, } from "./workflow-runner-protocol.js";
|
|
4
|
+
const CONTENT_MEDIA_TYPE = "application/json";
|
|
5
|
+
export function boundRunnerResponse(state, allowedDigests, response) {
|
|
6
|
+
try {
|
|
7
|
+
encodeRunnerLine(response);
|
|
8
|
+
return response;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
if (response.result === undefined)
|
|
12
|
+
return responseTooLarge(response.messageId);
|
|
13
|
+
try {
|
|
14
|
+
const content = Buffer.from(canonicalJson(response.result), "utf8");
|
|
15
|
+
const sha256 = state.putBlob(content, CONTENT_MEDIA_TYPE).toString("hex");
|
|
16
|
+
allowedDigests.add(sha256);
|
|
17
|
+
const referenced = {
|
|
18
|
+
...response,
|
|
19
|
+
result: {
|
|
20
|
+
schema: WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA,
|
|
21
|
+
sha256,
|
|
22
|
+
mediaType: CONTENT_MEDIA_TYPE,
|
|
23
|
+
bytes: content.byteLength,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
encodeRunnerLine(referenced);
|
|
27
|
+
return referenced;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return responseTooLarge(response.messageId);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function readRunnerContentChunk(state, allowedDigests, sha256, offset) {
|
|
35
|
+
if (!/^[0-9a-f]{64}$/u.test(sha256) || !allowedDigests.has(sha256)) {
|
|
36
|
+
throw new Error("Workflow runner content is unavailable");
|
|
37
|
+
}
|
|
38
|
+
if (!Number.isSafeInteger(offset) || offset < 0) {
|
|
39
|
+
throw new Error("Workflow runner content offset is invalid");
|
|
40
|
+
}
|
|
41
|
+
const stored = state.readBlob(Buffer.from(sha256, "hex"));
|
|
42
|
+
if (stored === undefined || stored.mediaType !== CONTENT_MEDIA_TYPE) {
|
|
43
|
+
throw new Error("Workflow runner content is unavailable");
|
|
44
|
+
}
|
|
45
|
+
if (offset > stored.byteLength)
|
|
46
|
+
throw new Error("Workflow runner content offset is invalid");
|
|
47
|
+
const nextOffset = Math.min(offset + WORKFLOW_RUNNER_CONTENT_CHUNK_BYTES, stored.byteLength);
|
|
48
|
+
return {
|
|
49
|
+
schema: WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA,
|
|
50
|
+
sha256,
|
|
51
|
+
mediaType: CONTENT_MEDIA_TYPE,
|
|
52
|
+
bytes: stored.byteLength,
|
|
53
|
+
offset,
|
|
54
|
+
nextOffset,
|
|
55
|
+
complete: nextOffset === stored.byteLength,
|
|
56
|
+
data: stored.content.subarray(offset, nextOffset).toString("base64url"),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export async function materializeRunnerContent(reference, readChunk) {
|
|
60
|
+
const parts = [];
|
|
61
|
+
let offset = 0;
|
|
62
|
+
for (;;) {
|
|
63
|
+
const chunk = await readChunk(offset);
|
|
64
|
+
const bytes = Buffer.from(chunk.data, "base64url");
|
|
65
|
+
if (chunk.sha256 !== reference.sha256 ||
|
|
66
|
+
chunk.mediaType !== reference.mediaType ||
|
|
67
|
+
chunk.bytes !== reference.bytes ||
|
|
68
|
+
chunk.offset !== offset ||
|
|
69
|
+
chunk.nextOffset !== offset + bytes.byteLength ||
|
|
70
|
+
chunk.nextOffset > reference.bytes ||
|
|
71
|
+
chunk.complete !== (chunk.nextOffset === reference.bytes)) {
|
|
72
|
+
throw new Error("Workflow runner content chunk is invalid");
|
|
73
|
+
}
|
|
74
|
+
parts.push(bytes);
|
|
75
|
+
offset = chunk.nextOffset;
|
|
76
|
+
if (chunk.complete)
|
|
77
|
+
break;
|
|
78
|
+
if (bytes.byteLength === 0)
|
|
79
|
+
throw new Error("Workflow runner content read made no progress");
|
|
80
|
+
}
|
|
81
|
+
const content = Buffer.concat(parts);
|
|
82
|
+
if (content.byteLength !== reference.bytes ||
|
|
83
|
+
createHash("sha256").update(content).digest("hex") !== reference.sha256) {
|
|
84
|
+
throw new Error("Workflow runner content does not match its reference");
|
|
85
|
+
}
|
|
86
|
+
return parseJson(content.toString("utf8"));
|
|
87
|
+
}
|
|
88
|
+
function responseTooLarge(messageId) {
|
|
89
|
+
return {
|
|
90
|
+
schema: "pi-workflows.worker-response.v1",
|
|
91
|
+
messageId,
|
|
92
|
+
outcome: "rejected",
|
|
93
|
+
error: "Workflow runner response could not be transferred within the protocol limit",
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=workflow-runner-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-runner-content.js","sourceRoot":"","sources":["../../src/server/workflow-runner-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { WorkflowEngine } from "../workflows/engine.js";
|
|
3
3
|
import type { AgentStepContract, AgentStepSubmission, WorkflowDefinition, WorkflowSource } from "../workflows/types.js";
|
|
4
|
-
import { type
|
|
4
|
+
import { type WorkflowRunnerCommand } from "./workflow-runner-protocol.js";
|
|
5
5
|
export declare function validateAcceptedAssistantSubmission(submission: AgentStepSubmission, contract: AgentStepContract): {
|
|
6
6
|
ok: true;
|
|
7
7
|
value: AgentStepSubmission;
|
|
@@ -9,5 +9,5 @@ export declare function validateAcceptedAssistantSubmission(submission: AgentSte
|
|
|
9
9
|
ok: false;
|
|
10
10
|
error: string;
|
|
11
11
|
};
|
|
12
|
-
export declare function
|
|
13
|
-
export declare function
|
|
12
|
+
export declare function executeRunnerRunCommand(engine: Pick<WorkflowEngine, "run" | "resumeRun" | "continueRun">, workflow: WorkflowDefinition, runId: string, workflowSource: WorkflowSource, command: WorkflowRunnerCommand): Promise<import("../workflows/types.js").WorkflowRunResult>;
|
|
13
|
+
export declare function runWorkflowRunner(): Promise<number>;
|
|
@@ -9,11 +9,12 @@ import { WorkflowEngine } from "../workflows/engine.js";
|
|
|
9
9
|
import { ClaimLostError, RunParkedError, WorkflowSourceChangedError, errorMessage, } from "../workflows/errors.js";
|
|
10
10
|
import { hashWorkflowSource, resolveWorkflowSource } from "../workflows/loader.js";
|
|
11
11
|
import { RpcStepExecutor } from "./rpc-executor.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
12
|
+
import { materializeRunnerContent } from "./workflow-runner-content.js";
|
|
13
|
+
import { MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES, encodeRunnerLine, isRunnerContentChunk, isRunnerContentReference, parseRunnerResponse, } from "./workflow-runner-protocol.js";
|
|
14
|
+
import { ServerBackedWorkflowStore, } from "./workflow-runner-store.js";
|
|
15
|
+
const STARTUP_ENV = "PI_WORKFLOWS_WORKFLOW_RUNNER_LAUNCH";
|
|
15
16
|
const PRESENTATION_TIMEOUT_MS = 30_000;
|
|
16
|
-
class
|
|
17
|
+
class StdioRunnerTransport {
|
|
17
18
|
launch;
|
|
18
19
|
pending = new Map();
|
|
19
20
|
buffered = Buffer.alloc(0);
|
|
@@ -32,17 +33,17 @@ class StdioWorkerTransport {
|
|
|
32
33
|
operation: options.operation,
|
|
33
34
|
runId: this.launch.runId,
|
|
34
35
|
generation: this.launch.generation,
|
|
35
|
-
|
|
36
|
+
runnerEpoch: this.launch.runnerEpoch,
|
|
36
37
|
expectedRevision: options.expectedRevision,
|
|
37
38
|
...(options.attemptId === undefined ? {} : { attemptId: options.attemptId }),
|
|
38
39
|
payload: options.payload,
|
|
39
40
|
};
|
|
40
|
-
const response = await this.
|
|
41
|
+
const response = await this.sendResolved(message);
|
|
41
42
|
if (response.outcome === "claimLost") {
|
|
42
43
|
throw new ClaimLostError(this.launch.runId, "ownerChanged");
|
|
43
44
|
}
|
|
44
45
|
if (response.outcome === "rejected") {
|
|
45
|
-
throw new Error(response.error ?? "Workflow
|
|
46
|
+
throw new Error(response.error ?? "Workflow runner message was rejected");
|
|
46
47
|
}
|
|
47
48
|
return {
|
|
48
49
|
...(response.result === undefined ? {} : { result: response.result }),
|
|
@@ -50,7 +51,7 @@ class StdioWorkerTransport {
|
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
async control(operation, payload) {
|
|
53
|
-
return await this.
|
|
54
|
+
return await this.sendResolved({
|
|
54
55
|
schema: "pi-workflows.worker-message.v1",
|
|
55
56
|
launchSchema: this.launch.schema,
|
|
56
57
|
messageId: randomUUID(),
|
|
@@ -58,7 +59,7 @@ class StdioWorkerTransport {
|
|
|
58
59
|
operation,
|
|
59
60
|
runId: this.launch.runId,
|
|
60
61
|
generation: this.launch.generation,
|
|
61
|
-
|
|
62
|
+
runnerEpoch: this.launch.runnerEpoch,
|
|
62
63
|
expectedRevision: 0,
|
|
63
64
|
payload,
|
|
64
65
|
});
|
|
@@ -67,20 +68,52 @@ class StdioWorkerTransport {
|
|
|
67
68
|
process.stdin.pause();
|
|
68
69
|
process.stdin.removeAllListeners("data");
|
|
69
70
|
process.stdin.removeAllListeners("error");
|
|
70
|
-
this.failAll(new Error("Workflow
|
|
71
|
+
this.failAll(new Error("Workflow runner transport closed"));
|
|
72
|
+
}
|
|
73
|
+
async sendResolved(message) {
|
|
74
|
+
const response = await this.send(message);
|
|
75
|
+
if (!isRunnerContentReference(response.result))
|
|
76
|
+
return response;
|
|
77
|
+
const reference = response.result;
|
|
78
|
+
const expectedRevision = response.revision ?? message.expectedRevision;
|
|
79
|
+
return {
|
|
80
|
+
...response,
|
|
81
|
+
result: await materializeRunnerContent(reference, async (offset) => {
|
|
82
|
+
const chunkResponse = await this.send({
|
|
83
|
+
schema: "pi-workflows.worker-message.v1",
|
|
84
|
+
launchSchema: this.launch.schema,
|
|
85
|
+
messageId: randomUUID(),
|
|
86
|
+
kind: "runner.progress",
|
|
87
|
+
operation: "content.read",
|
|
88
|
+
runId: this.launch.runId,
|
|
89
|
+
generation: this.launch.generation,
|
|
90
|
+
runnerEpoch: this.launch.runnerEpoch,
|
|
91
|
+
expectedRevision,
|
|
92
|
+
payload: { sha256: reference.sha256, offset },
|
|
93
|
+
});
|
|
94
|
+
if (chunkResponse.outcome === "claimLost") {
|
|
95
|
+
throw new ClaimLostError(this.launch.runId, "ownerChanged");
|
|
96
|
+
}
|
|
97
|
+
if (chunkResponse.outcome !== "accepted" || !isRunnerContentChunk(chunkResponse.result)) {
|
|
98
|
+
throw new Error(chunkResponse.error ?? "Workflow runner content read was rejected");
|
|
99
|
+
}
|
|
100
|
+
return chunkResponse.result;
|
|
101
|
+
}),
|
|
102
|
+
};
|
|
71
103
|
}
|
|
72
104
|
async send(message) {
|
|
73
105
|
const response = new Promise((resolve, reject) => {
|
|
74
106
|
this.pending.set(message.messageId, { resolve, reject });
|
|
75
107
|
});
|
|
76
|
-
if (!process.stdout.write(
|
|
108
|
+
if (!process.stdout.write(encodeRunnerLine(message)))
|
|
77
109
|
await once(process.stdout, "drain");
|
|
78
110
|
return await response;
|
|
79
111
|
}
|
|
80
112
|
onData(chunk) {
|
|
81
113
|
this.buffered = Buffer.concat([this.buffered, chunk]);
|
|
82
|
-
if (this.buffered.byteLength >
|
|
83
|
-
this.
|
|
114
|
+
if (this.buffered.byteLength > MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES &&
|
|
115
|
+
!this.buffered.includes(0x0a)) {
|
|
116
|
+
this.failAll(new Error("Runner response exceeds 1 MiB"));
|
|
84
117
|
return;
|
|
85
118
|
}
|
|
86
119
|
for (;;) {
|
|
@@ -92,10 +125,10 @@ class StdioWorkerTransport {
|
|
|
92
125
|
if (frame.byteLength === 0)
|
|
93
126
|
continue;
|
|
94
127
|
try {
|
|
95
|
-
const response =
|
|
128
|
+
const response = parseRunnerResponse(frame);
|
|
96
129
|
const pending = this.pending.get(response.messageId);
|
|
97
130
|
if (pending === undefined)
|
|
98
|
-
throw new Error("
|
|
131
|
+
throw new Error("Runner response has no pending request");
|
|
99
132
|
this.pending.delete(response.messageId);
|
|
100
133
|
pending.resolve(response);
|
|
101
134
|
}
|
|
@@ -213,7 +246,7 @@ export function validateAcceptedAssistantSubmission(submission, contract) {
|
|
|
213
246
|
},
|
|
214
247
|
};
|
|
215
248
|
}
|
|
216
|
-
export async function
|
|
249
|
+
export async function executeRunnerRunCommand(engine, workflow, runId, workflowSource, command) {
|
|
217
250
|
switch (command.kind) {
|
|
218
251
|
case "start":
|
|
219
252
|
case "restart":
|
|
@@ -235,31 +268,31 @@ export async function executeWorkerRunCommand(engine, workflow, runId, workflowS
|
|
|
235
268
|
});
|
|
236
269
|
}
|
|
237
270
|
}
|
|
238
|
-
export async function
|
|
271
|
+
export async function runWorkflowRunner() {
|
|
239
272
|
const launch = readLaunchEnvelope();
|
|
240
|
-
const transport = new
|
|
273
|
+
const transport = new StdioRunnerTransport(launch);
|
|
241
274
|
try {
|
|
242
|
-
const ready = await transport.control("
|
|
275
|
+
const ready = await transport.control("runner.ready", {});
|
|
243
276
|
if (ready.outcome !== "accepted" || ready.result === undefined) {
|
|
244
|
-
throw new Error(ready.error ?? "Workflow
|
|
277
|
+
throw new Error(ready.error ?? "Workflow server rejected runner startup");
|
|
245
278
|
}
|
|
246
279
|
const bootstrap = ready.result;
|
|
247
|
-
const workflowSource =
|
|
280
|
+
const workflowSource = parseRunnerWorkflowSources(launch.workflowSource);
|
|
248
281
|
let workflow;
|
|
249
282
|
try {
|
|
250
283
|
workflow = await resolveVerifiedWorkflow(launch.runId, workflowSource);
|
|
251
284
|
}
|
|
252
285
|
catch (error) {
|
|
253
|
-
const response = await transport.control("
|
|
286
|
+
const response = await transport.control("runner.exiting", {
|
|
254
287
|
status: "workflowLoadFailed",
|
|
255
288
|
error: errorMessage(error),
|
|
256
289
|
});
|
|
257
290
|
if (response.outcome !== "accepted") {
|
|
258
|
-
throw new Error(response.error ?? "Workflow
|
|
291
|
+
throw new Error(response.error ?? "Workflow server rejected the load-failure report");
|
|
259
292
|
}
|
|
260
293
|
return 1;
|
|
261
294
|
}
|
|
262
|
-
const store = new
|
|
295
|
+
const store = new ServerBackedWorkflowStore(launch.runId, transport, ready.revision ?? 0);
|
|
263
296
|
let executor;
|
|
264
297
|
let closeExecutor;
|
|
265
298
|
if (bootstrap.originSessionId !== null) {
|
|
@@ -275,7 +308,7 @@ export async function runWorkflowWorker() {
|
|
|
275
308
|
await transport.request({
|
|
276
309
|
messageId: randomUUID(),
|
|
277
310
|
operation: "process.register",
|
|
278
|
-
kind: "
|
|
311
|
+
kind: "runner.progress",
|
|
279
312
|
expectedRevision: 0,
|
|
280
313
|
payload: { pid },
|
|
281
314
|
});
|
|
@@ -284,7 +317,7 @@ export async function runWorkflowWorker() {
|
|
|
284
317
|
await transport.request({
|
|
285
318
|
messageId: randomUUID(),
|
|
286
319
|
operation: "process.unregister",
|
|
287
|
-
kind: "
|
|
320
|
+
kind: "runner.progress",
|
|
288
321
|
expectedRevision: 0,
|
|
289
322
|
payload: { pid },
|
|
290
323
|
});
|
|
@@ -321,8 +354,8 @@ export async function runWorkflowWorker() {
|
|
|
321
354
|
},
|
|
322
355
|
});
|
|
323
356
|
try {
|
|
324
|
-
const result = await
|
|
325
|
-
await transport.control("
|
|
357
|
+
const result = await executeRunnerRunCommand(engine, workflow, launch.runId, workflowSource.root, bootstrap.command);
|
|
358
|
+
await transport.control("runner.exiting", {
|
|
326
359
|
status: result.state.status,
|
|
327
360
|
traceSeq: result.state.traceSeq,
|
|
328
361
|
});
|
|
@@ -369,13 +402,13 @@ async function resolvePresentationInstructions(workflow, state) {
|
|
|
369
402
|
clearTimeout(timer);
|
|
370
403
|
}
|
|
371
404
|
}
|
|
372
|
-
function
|
|
405
|
+
function parseRunnerWorkflowSources(value) {
|
|
373
406
|
if (!isRecord(value) || !isWorkflowSource(value.root) || !Array.isArray(value.mounted)) {
|
|
374
|
-
throw new Error("Workflow
|
|
407
|
+
throw new Error("Workflow runner source identity is invalid");
|
|
375
408
|
}
|
|
376
409
|
const mounted = value.mounted;
|
|
377
410
|
if (!mounted.every(isMountedWorkflowSource)) {
|
|
378
|
-
throw new Error("Workflow
|
|
411
|
+
throw new Error("Workflow runner mounted source identity is invalid");
|
|
379
412
|
}
|
|
380
413
|
return { root: value.root, mounted };
|
|
381
414
|
}
|
|
@@ -421,19 +454,19 @@ function isRecord(value) {
|
|
|
421
454
|
function readLaunchEnvelope() {
|
|
422
455
|
const encoded = process.env[STARTUP_ENV];
|
|
423
456
|
if (encoded === undefined)
|
|
424
|
-
throw new Error("Workflow
|
|
457
|
+
throw new Error("Workflow runner launch envelope is missing");
|
|
425
458
|
const value = parseJson(Buffer.from(encoded, "base64url").toString("utf8"));
|
|
426
459
|
if (typeof value !== "object" ||
|
|
427
460
|
value === null ||
|
|
428
461
|
Array.isArray(value) ||
|
|
429
462
|
value.schema !== "pi-workflows.worker-launch.v1") {
|
|
430
|
-
throw new Error("Workflow
|
|
463
|
+
throw new Error("Workflow runner launch envelope is invalid");
|
|
431
464
|
}
|
|
432
465
|
return value;
|
|
433
466
|
}
|
|
434
467
|
async function main() {
|
|
435
468
|
try {
|
|
436
|
-
process.exitCode = await
|
|
469
|
+
process.exitCode = await runWorkflowRunner();
|
|
437
470
|
}
|
|
438
471
|
catch (error) {
|
|
439
472
|
process.stderr.write(`${errorMessage(error)}\n`);
|
|
@@ -442,4 +475,4 @@ async function main() {
|
|
|
442
475
|
}
|
|
443
476
|
if (process.argv[1] === fileURLToPath(import.meta.url))
|
|
444
477
|
void main();
|
|
445
|
-
//# sourceMappingURL=
|
|
478
|
+
//# sourceMappingURL=workflow-runner-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-runner-entry.js","sourceRoot":"","sources":["../../src/server/workflow-runner-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type JsonValue } from "../state/json.js";
|
|
2
|
+
export declare const MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES: number;
|
|
3
|
+
export declare const WORKFLOW_RUNNER_CONTENT_CHUNK_BYTES: number;
|
|
4
|
+
export declare const WORKFLOW_RUNNER_MESSAGE_SCHEMA: "pi-workflows.worker-message.v1";
|
|
5
|
+
export declare const WORKFLOW_RUNNER_RESPONSE_SCHEMA: "pi-workflows.worker-response.v1";
|
|
6
|
+
export declare const WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA: "pi-workflows.worker-content-reference.v1";
|
|
7
|
+
export declare const WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA: "pi-workflows.worker-content-chunk.v1";
|
|
8
|
+
export type WorkflowRunnerCommand = {
|
|
9
|
+
kind: "start";
|
|
10
|
+
input: JsonValue;
|
|
11
|
+
} | {
|
|
12
|
+
kind: "resume";
|
|
13
|
+
resumeInteractionAttemptId?: string;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "continue";
|
|
16
|
+
parentRunId: string;
|
|
17
|
+
input: JsonValue;
|
|
18
|
+
humanDecision?: JsonValue;
|
|
19
|
+
} | {
|
|
20
|
+
kind: "restart";
|
|
21
|
+
input: JsonValue;
|
|
22
|
+
};
|
|
23
|
+
export declare const WORKFLOW_RUNNER_MESSAGE_KINDS: readonly ["runner.ready", "node.started", "node.update", "node.finished", "node.failed", "run.parked", "run.finished", "interaction.requested", "interaction.accepted", "interaction.rejected", "notification.requested", "presentation.requested", "effect.reserve", "effect.settle", "runner.progress", "runner.exiting"];
|
|
24
|
+
export type WorkflowRunnerMessageKind = (typeof WORKFLOW_RUNNER_MESSAGE_KINDS)[number];
|
|
25
|
+
export declare const WORKFLOW_RUNNER_STORE_OPERATIONS: readonly ["store.initializeRun", "store.prepareRunResume", "store.readRunState", "store.writeSnapshot", "store.publishUpdate", "store.findSettingsScope", "store.ensureSettingsScope", "store.getSettingsScopeAtChange", "store.createHumanDecisionRequest", "store.readResolvedHumanDecision", "store.reserveEffect", "store.settleEffect", "content.read", "process.register", "process.unregister", "interaction.request", "interaction.accept", "interaction.reject", "notification.request", "presentation.request"];
|
|
26
|
+
export type WorkflowRunnerStoreOperation = (typeof WORKFLOW_RUNNER_STORE_OPERATIONS)[number];
|
|
27
|
+
export type WorkflowRunnerMessage = {
|
|
28
|
+
schema: typeof WORKFLOW_RUNNER_MESSAGE_SCHEMA;
|
|
29
|
+
launchSchema: "pi-workflows.worker-launch.v1";
|
|
30
|
+
messageId: string;
|
|
31
|
+
kind: WorkflowRunnerMessageKind;
|
|
32
|
+
operation: WorkflowRunnerStoreOperation | "runner.ready" | "runner.exiting";
|
|
33
|
+
runId: string;
|
|
34
|
+
generation: number;
|
|
35
|
+
runnerEpoch: string;
|
|
36
|
+
expectedRevision: number;
|
|
37
|
+
attemptId?: string;
|
|
38
|
+
payload: JsonValue;
|
|
39
|
+
};
|
|
40
|
+
export type WorkflowRunnerResponse = {
|
|
41
|
+
schema: typeof WORKFLOW_RUNNER_RESPONSE_SCHEMA;
|
|
42
|
+
messageId: string;
|
|
43
|
+
outcome: "accepted" | "adopted" | "rejected" | "claimLost";
|
|
44
|
+
revision?: number;
|
|
45
|
+
result?: JsonValue;
|
|
46
|
+
error?: string;
|
|
47
|
+
};
|
|
48
|
+
export type WorkflowRunnerContentReference = {
|
|
49
|
+
schema: typeof WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA;
|
|
50
|
+
sha256: string;
|
|
51
|
+
mediaType: "application/json";
|
|
52
|
+
bytes: number;
|
|
53
|
+
};
|
|
54
|
+
export type WorkflowRunnerContentChunk = {
|
|
55
|
+
schema: typeof WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA;
|
|
56
|
+
sha256: string;
|
|
57
|
+
mediaType: "application/json";
|
|
58
|
+
bytes: number;
|
|
59
|
+
offset: number;
|
|
60
|
+
nextOffset: number;
|
|
61
|
+
complete: boolean;
|
|
62
|
+
data: string;
|
|
63
|
+
};
|
|
64
|
+
export declare function isRunnerContentReference(value: unknown): value is WorkflowRunnerContentReference;
|
|
65
|
+
export declare function isRunnerContentChunk(value: unknown): value is WorkflowRunnerContentChunk;
|
|
66
|
+
export declare function runnerKindForOperation(operation: WorkflowRunnerStoreOperation, payload: Record<string, unknown>): WorkflowRunnerMessageKind;
|
|
67
|
+
export declare function encodeRunnerLine(message: WorkflowRunnerMessage | WorkflowRunnerResponse): Buffer;
|
|
68
|
+
export declare function parseRunnerMessage(line: Buffer | string): WorkflowRunnerMessage;
|
|
69
|
+
export declare function parseRunnerResponse(line: Buffer | string): WorkflowRunnerResponse;
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { canonicalJson, parseJson } from "../state/json.js";
|
|
2
|
+
export const MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES = 1024 * 1024;
|
|
3
|
+
export const WORKFLOW_RUNNER_CONTENT_CHUNK_BYTES = 512 * 1024;
|
|
4
|
+
export const WORKFLOW_RUNNER_MESSAGE_SCHEMA = "pi-workflows.worker-message.v1";
|
|
5
|
+
export const WORKFLOW_RUNNER_RESPONSE_SCHEMA = "pi-workflows.worker-response.v1";
|
|
6
|
+
export const WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA = "pi-workflows.worker-content-reference.v1";
|
|
7
|
+
export const WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA = "pi-workflows.worker-content-chunk.v1";
|
|
8
|
+
export const WORKFLOW_RUNNER_MESSAGE_KINDS = [
|
|
9
|
+
"runner.ready",
|
|
10
|
+
"node.started",
|
|
11
|
+
"node.update",
|
|
12
|
+
"node.finished",
|
|
13
|
+
"node.failed",
|
|
14
|
+
"run.parked",
|
|
15
|
+
"run.finished",
|
|
16
|
+
"interaction.requested",
|
|
17
|
+
"interaction.accepted",
|
|
18
|
+
"interaction.rejected",
|
|
19
|
+
"notification.requested",
|
|
20
|
+
"presentation.requested",
|
|
21
|
+
"effect.reserve",
|
|
22
|
+
"effect.settle",
|
|
23
|
+
"runner.progress",
|
|
24
|
+
"runner.exiting",
|
|
25
|
+
];
|
|
26
|
+
export const WORKFLOW_RUNNER_STORE_OPERATIONS = [
|
|
27
|
+
"store.initializeRun",
|
|
28
|
+
"store.prepareRunResume",
|
|
29
|
+
"store.readRunState",
|
|
30
|
+
"store.writeSnapshot",
|
|
31
|
+
"store.publishUpdate",
|
|
32
|
+
"store.findSettingsScope",
|
|
33
|
+
"store.ensureSettingsScope",
|
|
34
|
+
"store.getSettingsScopeAtChange",
|
|
35
|
+
"store.createHumanDecisionRequest",
|
|
36
|
+
"store.readResolvedHumanDecision",
|
|
37
|
+
"store.reserveEffect",
|
|
38
|
+
"store.settleEffect",
|
|
39
|
+
"content.read",
|
|
40
|
+
"process.register",
|
|
41
|
+
"process.unregister",
|
|
42
|
+
"interaction.request",
|
|
43
|
+
"interaction.accept",
|
|
44
|
+
"interaction.reject",
|
|
45
|
+
"notification.request",
|
|
46
|
+
"presentation.request",
|
|
47
|
+
];
|
|
48
|
+
const WORKFLOW_RUNNER_CONTROL_OPERATIONS = ["runner.ready", "runner.exiting"];
|
|
49
|
+
export function isRunnerContentReference(value) {
|
|
50
|
+
return (isRecord(value) &&
|
|
51
|
+
value.schema === WORKFLOW_RUNNER_CONTENT_REFERENCE_SCHEMA &&
|
|
52
|
+
typeof value.sha256 === "string" &&
|
|
53
|
+
/^[0-9a-f]{64}$/u.test(value.sha256) &&
|
|
54
|
+
value.mediaType === "application/json" &&
|
|
55
|
+
Number.isSafeInteger(value.bytes) &&
|
|
56
|
+
value.bytes >= 0);
|
|
57
|
+
}
|
|
58
|
+
export function isRunnerContentChunk(value) {
|
|
59
|
+
return (isRecord(value) &&
|
|
60
|
+
value.schema === WORKFLOW_RUNNER_CONTENT_CHUNK_SCHEMA &&
|
|
61
|
+
typeof value.sha256 === "string" &&
|
|
62
|
+
/^[0-9a-f]{64}$/u.test(value.sha256) &&
|
|
63
|
+
value.mediaType === "application/json" &&
|
|
64
|
+
Number.isSafeInteger(value.bytes) &&
|
|
65
|
+
value.bytes >= 0 &&
|
|
66
|
+
Number.isSafeInteger(value.offset) &&
|
|
67
|
+
value.offset >= 0 &&
|
|
68
|
+
Number.isSafeInteger(value.nextOffset) &&
|
|
69
|
+
value.nextOffset >= value.offset &&
|
|
70
|
+
typeof value.complete === "boolean" &&
|
|
71
|
+
typeof value.data === "string");
|
|
72
|
+
}
|
|
73
|
+
export function runnerKindForOperation(operation, payload) {
|
|
74
|
+
if (operation === "store.publishUpdate")
|
|
75
|
+
return "node.update";
|
|
76
|
+
if (operation === "store.reserveEffect")
|
|
77
|
+
return "effect.reserve";
|
|
78
|
+
if (operation === "store.settleEffect")
|
|
79
|
+
return "effect.settle";
|
|
80
|
+
if (operation === "store.createHumanDecisionRequest" || operation === "interaction.request") {
|
|
81
|
+
return "interaction.requested";
|
|
82
|
+
}
|
|
83
|
+
if (operation === "interaction.accept")
|
|
84
|
+
return "interaction.accepted";
|
|
85
|
+
if (operation === "interaction.reject")
|
|
86
|
+
return "interaction.rejected";
|
|
87
|
+
if (operation === "notification.request")
|
|
88
|
+
return "notification.requested";
|
|
89
|
+
if (operation === "presentation.request")
|
|
90
|
+
return "presentation.requested";
|
|
91
|
+
if (operation === "store.writeSnapshot") {
|
|
92
|
+
const event = payload.event;
|
|
93
|
+
const eventType = isRecord(event) && typeof event.type === "string" ? event.type : "";
|
|
94
|
+
if (eventType === "node_started")
|
|
95
|
+
return "node.started";
|
|
96
|
+
if (eventType === "node_finished")
|
|
97
|
+
return "node.finished";
|
|
98
|
+
if (eventType === "node_failed" || eventType === "node_timed_out")
|
|
99
|
+
return "node.failed";
|
|
100
|
+
if (eventType === "run_waiting" || eventType.includes("park"))
|
|
101
|
+
return "run.parked";
|
|
102
|
+
if (eventType.startsWith("run_") && eventType !== "run_started")
|
|
103
|
+
return "run.finished";
|
|
104
|
+
}
|
|
105
|
+
return "runner.progress";
|
|
106
|
+
}
|
|
107
|
+
export function encodeRunnerLine(message) {
|
|
108
|
+
const encoded = Buffer.from(`${canonicalJson(message)}\n`, "utf8");
|
|
109
|
+
if (encoded.byteLength > MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES) {
|
|
110
|
+
throw new Error("Runner protocol message exceeds 1 MiB");
|
|
111
|
+
}
|
|
112
|
+
return encoded;
|
|
113
|
+
}
|
|
114
|
+
export function parseRunnerMessage(line) {
|
|
115
|
+
const value = parseRunnerValue(line);
|
|
116
|
+
if (value.schema !== WORKFLOW_RUNNER_MESSAGE_SCHEMA ||
|
|
117
|
+
value.launchSchema !== "pi-workflows.worker-launch.v1") {
|
|
118
|
+
throw new Error("Invalid workflow runner message schema");
|
|
119
|
+
}
|
|
120
|
+
requireText(value.messageId, "messageId");
|
|
121
|
+
requireText(value.runId, "runId");
|
|
122
|
+
requireText(value.runnerEpoch, "runnerEpoch");
|
|
123
|
+
if (!WORKFLOW_RUNNER_MESSAGE_KINDS.includes(value.kind)) {
|
|
124
|
+
throw new Error("Invalid workflow runner message kind");
|
|
125
|
+
}
|
|
126
|
+
if (!Number.isSafeInteger(value.generation) || value.generation <= 0) {
|
|
127
|
+
throw new Error("Runner generation must be positive");
|
|
128
|
+
}
|
|
129
|
+
if (!Number.isSafeInteger(value.expectedRevision) || value.expectedRevision < 0) {
|
|
130
|
+
throw new Error("Runner expectedRevision must be non-negative");
|
|
131
|
+
}
|
|
132
|
+
requireText(value.operation, "operation");
|
|
133
|
+
if (!WORKFLOW_RUNNER_STORE_OPERATIONS.includes(value.operation) &&
|
|
134
|
+
!WORKFLOW_RUNNER_CONTROL_OPERATIONS.includes(value.operation)) {
|
|
135
|
+
throw new Error("Invalid workflow runner operation");
|
|
136
|
+
}
|
|
137
|
+
if (value.attemptId !== undefined)
|
|
138
|
+
requireText(value.attemptId, "attemptId");
|
|
139
|
+
if (!Object.hasOwn(value, "payload"))
|
|
140
|
+
throw new Error("Runner payload is required");
|
|
141
|
+
return value;
|
|
142
|
+
}
|
|
143
|
+
export function parseRunnerResponse(line) {
|
|
144
|
+
const value = parseRunnerValue(line);
|
|
145
|
+
if (value.schema !== WORKFLOW_RUNNER_RESPONSE_SCHEMA)
|
|
146
|
+
throw new Error("Invalid workflow runner response schema");
|
|
147
|
+
requireText(value.messageId, "messageId");
|
|
148
|
+
if (!["accepted", "adopted", "rejected", "claimLost"].includes(value.outcome)) {
|
|
149
|
+
throw new Error("Invalid workflow runner response outcome");
|
|
150
|
+
}
|
|
151
|
+
if (value.error !== undefined && typeof value.error !== "string") {
|
|
152
|
+
throw new Error("Runner response error must be text");
|
|
153
|
+
}
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
156
|
+
function parseRunnerValue(line) {
|
|
157
|
+
const buffer = Buffer.isBuffer(line) ? line : Buffer.from(line, "utf8");
|
|
158
|
+
if (buffer.byteLength + 1 > MAX_WORKFLOW_RUNNER_PROTOCOL_MESSAGE_BYTES) {
|
|
159
|
+
throw new Error("Runner protocol message exceeds 1 MiB");
|
|
160
|
+
}
|
|
161
|
+
const text = buffer.toString("utf8");
|
|
162
|
+
const value = parseJson(text);
|
|
163
|
+
if (!isRecord(value) || canonicalJson(value) !== text) {
|
|
164
|
+
throw new Error("Runner protocol message must be a canonical JSON object");
|
|
165
|
+
}
|
|
166
|
+
return value;
|
|
167
|
+
}
|
|
168
|
+
function requireText(value, field) {
|
|
169
|
+
if (typeof value !== "string" || value.length === 0 || value.length > 256) {
|
|
170
|
+
throw new Error(`Runner ${field} must be nonempty bounded text`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function isRecord(value) {
|
|
174
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=workflow-runner-protocol.js.map
|