@osolmaz/pi-workflows 0.16.2 → 0.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +5 -5
- 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
|
@@ -37,7 +37,7 @@ export type WorkflowRunTerminalData = {
|
|
|
37
37
|
};
|
|
38
38
|
export type WorkflowRunStoreOptions = {
|
|
39
39
|
authorityProvider?: (runId: string) => RunWriteAuthority | undefined;
|
|
40
|
-
/**
|
|
40
|
+
/** Server-owned projection updates that must commit with each run snapshot. */
|
|
41
41
|
snapshotLifecycle?: (context: {
|
|
42
42
|
runId: string;
|
|
43
43
|
state: WorkflowRunState;
|
|
@@ -45,17 +45,17 @@ export type WorkflowRunStoreOptions = {
|
|
|
45
45
|
database: StateDatabase;
|
|
46
46
|
now: number;
|
|
47
47
|
}) => void;
|
|
48
|
-
/** The global
|
|
49
|
-
|
|
48
|
+
/** The global server may record an attested Pi session after the runner lease ends. */
|
|
49
|
+
allowServerSessionRecording?: boolean;
|
|
50
50
|
state?: StateDatabase;
|
|
51
51
|
readOnly?: boolean;
|
|
52
52
|
};
|
|
53
|
-
/** The state boundary used by workflow code, including out-of-process
|
|
53
|
+
/** The state boundary used by workflow code, including out-of-process runners. */
|
|
54
54
|
export interface WorkflowExecutionStore {
|
|
55
55
|
readonly databasePath: string;
|
|
56
56
|
initializeRun(workflow: WorkflowDefinition, state: WorkflowRunState, options?: InitializeWorkflowRunOptions): Promise<string>;
|
|
57
|
-
prepareRunResume(runId: string): Promise<
|
|
58
|
-
|
|
57
|
+
prepareRunResume(runId: string): Promise<WorkflowRunState>;
|
|
58
|
+
readRunState(runId: string): WorkflowRunState | null | Promise<WorkflowRunState | null>;
|
|
59
59
|
writeSnapshot(runId: string, state: WorkflowRunState, event: WorkflowTraceEventDraft): Promise<WorkflowTraceEvent>;
|
|
60
60
|
publishUpdate(runId: string, state: WorkflowRunState, nodeId: string, attemptId: string, update: WorkflowUpdateInput, options?: {
|
|
61
61
|
signal?: AbortSignal;
|
|
@@ -165,14 +165,14 @@ export declare class WorkflowRunStore {
|
|
|
165
165
|
readonly state: StateDatabase;
|
|
166
166
|
private readonly authorityProvider;
|
|
167
167
|
private readonly snapshotLifecycle;
|
|
168
|
-
private readonly
|
|
168
|
+
private readonly allowServerSessionRecording;
|
|
169
169
|
private readonly contexts;
|
|
170
170
|
private readonly ownsState;
|
|
171
171
|
private readonly mutations;
|
|
172
172
|
private readonly workflowMessages;
|
|
173
173
|
constructor(databasePath?: string, options?: WorkflowRunStoreOptions);
|
|
174
174
|
close(): void;
|
|
175
|
-
/**
|
|
175
|
+
/** Server-only synchronization after a queue lifecycle mutation on the run resource. */
|
|
176
176
|
synchronizeRevision(runId: string): number;
|
|
177
177
|
createHumanDecisionRequest(request: HumanDecisionRequest): Promise<"created" | "adopted">;
|
|
178
178
|
readResolvedHumanDecision(decisionId: string): Promise<ResolvedHumanDecision | null>;
|
|
@@ -218,7 +218,7 @@ export declare class WorkflowRunStore {
|
|
|
218
218
|
originSessionId(runId: string): string | undefined;
|
|
219
219
|
readFollowUpQueue(runId: string): WorkflowFollowUpQueueRecord | undefined;
|
|
220
220
|
private readFollowUpQueueRange;
|
|
221
|
-
prepareRunResume(runId: string): Promise<
|
|
221
|
+
prepareRunResume(runId: string): Promise<WorkflowRunState>;
|
|
222
222
|
markRunInterrupted(runId: string, reason?: string): Promise<LoadedWorkflowRun | null>;
|
|
223
223
|
publishUpdate(runId: string, state: WorkflowRunState, nodeId: string, attemptId: string, update: WorkflowUpdateInput, options?: {
|
|
224
224
|
signal?: AbortSignal;
|
|
@@ -226,7 +226,7 @@ export declare class WorkflowRunStore {
|
|
|
226
226
|
event: WorkflowTraceEvent;
|
|
227
227
|
record: WorkflowUpdateRecord;
|
|
228
228
|
}>;
|
|
229
|
-
/**
|
|
229
|
+
/** Server-only synchronous form for an already serialized command transaction. */
|
|
230
230
|
publishUpdateSynchronous(runId: string, state: WorkflowRunState, nodeId: string, attemptId: string, update: WorkflowUpdateInput, options?: {
|
|
231
231
|
signal?: AbortSignal;
|
|
232
232
|
}): {
|
|
@@ -253,6 +253,7 @@ export declare class WorkflowRunStore {
|
|
|
253
253
|
readRunError(runId: string): string | null;
|
|
254
254
|
readPresentationInstructions(runId: string): string;
|
|
255
255
|
readTerminalData(runId: string): WorkflowRunTerminalData | null;
|
|
256
|
+
readRunState(runId: string): WorkflowRunState | null;
|
|
256
257
|
readRun(runId: string, options?: ReadWorkflowRunOptions): LoadedWorkflowRun | null;
|
|
257
258
|
readRunViewCounts(runId: string): WorkflowRunViewCounts | null;
|
|
258
259
|
readRunView(runId: string, options: WorkflowRunViewReadOptions): WorkflowRunViewRead | null;
|
|
@@ -307,7 +308,7 @@ export declare class WorkflowRunStore {
|
|
|
307
308
|
private syncContinuationIdentity;
|
|
308
309
|
private readRunRow;
|
|
309
310
|
private requireRunRow;
|
|
310
|
-
private
|
|
311
|
+
private materializeRunState;
|
|
311
312
|
private buildRunState;
|
|
312
313
|
private readSteps;
|
|
313
314
|
private readStepRange;
|
package/dist/workflows/store.js
CHANGED
|
@@ -68,7 +68,7 @@ export class WorkflowRunStore {
|
|
|
68
68
|
state;
|
|
69
69
|
authorityProvider;
|
|
70
70
|
snapshotLifecycle;
|
|
71
|
-
|
|
71
|
+
allowServerSessionRecording;
|
|
72
72
|
contexts = new Map();
|
|
73
73
|
ownsState;
|
|
74
74
|
mutations;
|
|
@@ -76,7 +76,7 @@ export class WorkflowRunStore {
|
|
|
76
76
|
constructor(databasePath = workflowStatePath(), options = {}) {
|
|
77
77
|
this.authorityProvider = options.authorityProvider;
|
|
78
78
|
this.snapshotLifecycle = options.snapshotLifecycle;
|
|
79
|
-
this.
|
|
79
|
+
this.allowServerSessionRecording = options.allowServerSessionRecording === true;
|
|
80
80
|
this.ownsState = options.state === undefined;
|
|
81
81
|
this.state =
|
|
82
82
|
options.state ??
|
|
@@ -93,7 +93,7 @@ export class WorkflowRunStore {
|
|
|
93
93
|
if (this.ownsState)
|
|
94
94
|
this.state.close();
|
|
95
95
|
}
|
|
96
|
-
/**
|
|
96
|
+
/** Server-only synchronization after a queue lifecycle mutation on the run resource. */
|
|
97
97
|
synchronizeRevision(runId) {
|
|
98
98
|
const revision = this.resourceRevision(runId);
|
|
99
99
|
const context = this.contexts.get(runId);
|
|
@@ -712,11 +712,11 @@ export class WorkflowRunStore {
|
|
|
712
712
|
return { runId, originSessionId, followUps };
|
|
713
713
|
}
|
|
714
714
|
async prepareRunResume(runId) {
|
|
715
|
-
const
|
|
716
|
-
if (
|
|
715
|
+
const state = this.readRunState(runId);
|
|
716
|
+
if (state === null)
|
|
717
717
|
throw new Error(`Cannot resume unreadable workflow run: ${runId}`);
|
|
718
|
-
if (
|
|
719
|
-
throw new Error(`Cannot resume workflow run ${runId} with status ${
|
|
718
|
+
if (state.status !== "running") {
|
|
719
|
+
throw new Error(`Cannot resume workflow run ${runId} with status ${state.status}`);
|
|
720
720
|
}
|
|
721
721
|
this.verifySettingsProjections(runId);
|
|
722
722
|
const revision = this.resourceRevision(runId);
|
|
@@ -742,18 +742,18 @@ export class WorkflowRunStore {
|
|
|
742
742
|
payload: {},
|
|
743
743
|
};
|
|
744
744
|
insertRunEvent(this.state, row.resourceId, nextRevision, at, traceEvent);
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
this.persistRunState(row,
|
|
748
|
-
recordViewerDeltas(this.state, runId, runViewerTargets(
|
|
745
|
+
state.traceSeq = nextRevision;
|
|
746
|
+
state.updatedAt = at;
|
|
747
|
+
this.persistRunState(row, state, nextRevision, now);
|
|
748
|
+
recordViewerDeltas(this.state, runId, runViewerTargets(state, traceEvent), now);
|
|
749
749
|
context.revision = nextRevision;
|
|
750
750
|
});
|
|
751
|
-
const prepared = this.
|
|
751
|
+
const prepared = this.readRunState(runId);
|
|
752
752
|
if (prepared === null)
|
|
753
753
|
throw new Error(`Workflow run became unreadable: ${runId}`);
|
|
754
754
|
return prepared;
|
|
755
755
|
}
|
|
756
|
-
async markRunInterrupted(runId, reason = "Workflow
|
|
756
|
+
async markRunInterrupted(runId, reason = "Workflow server stopped before the run finished") {
|
|
757
757
|
const loaded = this.readRun(runId);
|
|
758
758
|
if (loaded === null || loaded.state.status !== "running")
|
|
759
759
|
return loaded;
|
|
@@ -780,7 +780,7 @@ export class WorkflowRunStore {
|
|
|
780
780
|
async publishUpdate(runId, state, nodeId, attemptId, update, options = {}) {
|
|
781
781
|
return await this.withRunLock(runId, async () => this.publishUpdateSynchronous(runId, state, nodeId, attemptId, update, options));
|
|
782
782
|
}
|
|
783
|
-
/**
|
|
783
|
+
/** Server-only synchronous form for an already serialized command transaction. */
|
|
784
784
|
publishUpdateSynchronous(runId, state, nodeId, attemptId, update, options = {}) {
|
|
785
785
|
if (options.signal?.aborted === true) {
|
|
786
786
|
throw options.signal.reason ?? new Error("workflow update attempt is no longer active");
|
|
@@ -941,7 +941,7 @@ export class WorkflowRunStore {
|
|
|
941
941
|
},
|
|
942
942
|
};
|
|
943
943
|
insertRunEvent(this.state, run.resourceId, revision, at, traceEvent);
|
|
944
|
-
const current = this.
|
|
944
|
+
const current = this.materializeRunState(run, this.readDefinition(run.definitionHash));
|
|
945
945
|
current.traceSeq = revision;
|
|
946
946
|
current.updatedAt = at;
|
|
947
947
|
this.persistRunState(run, current, revision, now);
|
|
@@ -1304,12 +1304,18 @@ export class WorkflowRunStore {
|
|
|
1304
1304
|
restartNumber: row.restartNumber,
|
|
1305
1305
|
};
|
|
1306
1306
|
}
|
|
1307
|
+
readRunState(runId) {
|
|
1308
|
+
const row = this.readRunRow(runId);
|
|
1309
|
+
if (row === undefined)
|
|
1310
|
+
return null;
|
|
1311
|
+
return this.materializeRunState(row, this.readDefinition(row.definitionHash));
|
|
1312
|
+
}
|
|
1307
1313
|
readRun(runId, options = {}) {
|
|
1308
1314
|
const row = this.readRunRow(runId);
|
|
1309
1315
|
if (row === undefined)
|
|
1310
1316
|
return null;
|
|
1311
1317
|
const snapshot = this.readDefinition(row.definitionHash);
|
|
1312
|
-
const state = this.
|
|
1318
|
+
const state = this.materializeRunState(row, snapshot);
|
|
1313
1319
|
const segments = this.segmentRows(runId).map((segment) => this.loadSegment(segment, state));
|
|
1314
1320
|
const flat = segments.find((segment) => segment.attemptId === "") ?? emptySegment();
|
|
1315
1321
|
return {
|
|
@@ -1548,7 +1554,7 @@ export class WorkflowRunStore {
|
|
|
1548
1554
|
}
|
|
1549
1555
|
assertSessionWriteAuthority(runId) {
|
|
1550
1556
|
const run = this.requireRunRow(runId);
|
|
1551
|
-
if (this.
|
|
1557
|
+
if (this.allowServerSessionRecording)
|
|
1552
1558
|
return;
|
|
1553
1559
|
this.assertWriteAuthority(run, this.contextFor(runId).revision);
|
|
1554
1560
|
}
|
|
@@ -2264,7 +2270,7 @@ export class WorkflowRunStore {
|
|
|
2264
2270
|
throw new Error(`Workflow run is missing: ${runId}`);
|
|
2265
2271
|
return row;
|
|
2266
2272
|
}
|
|
2267
|
-
|
|
2273
|
+
materializeRunState(row, snapshot) {
|
|
2268
2274
|
const steps = this.readSteps(row.runId);
|
|
2269
2275
|
return this.buildRunState(row, snapshot, steps, steps, this.readUpdates(row.runId).updates ?? []);
|
|
2270
2276
|
}
|