@osolmaz/pi-workflows 0.16.1 → 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 +7 -1
- package/dist/client/view.js +1 -0
- package/dist/client/view.js.map +1 -1
- package/dist/extension/index.d.ts +1 -1
- package/dist/extension/index.js +66 -47
- 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 +4 -3
- package/dist/extension/workflow-message-coordinator.js +81 -29
- 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 +51 -43
- package/dist/{controllers → resource-managers}/sqlite.js +187 -125
- 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} +47 -39
- package/dist/{host/runner.js → server/server.js} +624 -535
- 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 +19 -15
- 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/server/workflow-runner-entry.d.ts +13 -0
- package/dist/{host/worker-entry.js → server/workflow-runner-entry.js} +89 -57
- 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 +3 -1
- package/dist/state/workflow-messages.js +32 -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/composition.js +0 -4
- package/dist/workflows/composition.js.map +1 -1
- package/dist/workflows/definition.js +0 -8
- package/dist/workflows/definition.js.map +1 -1
- package/dist/workflows/engine.js +18 -20
- package/dist/workflows/engine.js.map +1 -1
- package/dist/workflows/schema.js +0 -4
- package/dist/workflows/schema.js.map +1 -1
- package/dist/workflows/store.d.ts +27 -11
- package/dist/workflows/store.js +66 -18
- package/dist/workflows/store.js.map +1 -1
- package/dist/workflows/types.d.ts +3 -5
- 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 +363 -0
- 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 +40 -34
- package/docs/WORKFLOW_COMPOSITION.md +1 -1
- package/docs/{WORKFLOW_HOST.md → WORKFLOW_SERVER.md} +131 -116
- 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 +78 -63
- 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 +9 -1
- package/src/extension/index.ts +81 -53
- 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 +94 -30
- 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 +275 -181
- 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} +786 -672
- package/src/{host → server}/state.ts +78 -67
- package/src/{host → server}/view.ts +21 -17
- package/src/server/workflow-runner-content.ts +119 -0
- package/src/{host/worker-entry.ts → server/workflow-runner-entry.ts} +131 -82
- 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 +52 -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/composition.ts +0 -5
- package/src/workflows/definition.ts +0 -8
- package/src/workflows/engine.ts +18 -21
- package/src/workflows/schema.ts +0 -6
- package/src/workflows/store.ts +95 -28
- package/src/workflows/types.ts +3 -5
- 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.d.ts +0 -10
- package/dist/host/worker-entry.js.map +0 -1
- package/dist/host/worker-protocol.d.ts +0 -31
- 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 -165
- 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
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);
|
|
@@ -1262,12 +1262,60 @@ export class WorkflowRunStore {
|
|
|
1262
1262
|
lastEventSeq: segment?.eventCount ?? 0,
|
|
1263
1263
|
};
|
|
1264
1264
|
}
|
|
1265
|
+
readRunInput(runId) {
|
|
1266
|
+
const row = this.readRunRow(runId);
|
|
1267
|
+
return row === undefined ? null : this.state.readJson(row.inputHash);
|
|
1268
|
+
}
|
|
1269
|
+
readRunFinalOutput(runId) {
|
|
1270
|
+
const row = this.readRunRow(runId);
|
|
1271
|
+
return row?.finalOutputHash == null ? null : this.state.readJson(row.finalOutputHash);
|
|
1272
|
+
}
|
|
1273
|
+
readRunError(runId) {
|
|
1274
|
+
const row = this.readRunRow(runId);
|
|
1275
|
+
return row?.errorHash == null ? null : this.readText(row.errorHash);
|
|
1276
|
+
}
|
|
1277
|
+
readPresentationInstructions(runId) {
|
|
1278
|
+
const row = this.state.connection
|
|
1279
|
+
.prepare("SELECT presentation_prompt_hash AS hash FROM runs WHERE run_id = ?")
|
|
1280
|
+
.get(runId);
|
|
1281
|
+
if (row?.hash == null) {
|
|
1282
|
+
return "Explain the final workflow result to the user in a normal response.";
|
|
1283
|
+
}
|
|
1284
|
+
return this.readText(row.hash);
|
|
1285
|
+
}
|
|
1286
|
+
readTerminalData(runId) {
|
|
1287
|
+
const row = this.state.connection
|
|
1288
|
+
.prepare(`SELECT status, status_detail AS statusDetail, restart_number AS restartNumber
|
|
1289
|
+
FROM runs WHERE run_id = ?`)
|
|
1290
|
+
.get(runId);
|
|
1291
|
+
if (row === undefined ||
|
|
1292
|
+
!["completed", "failed", "timed_out", "cancelled"].includes(String(row.status)) ||
|
|
1293
|
+
typeof row.restartNumber !== "number") {
|
|
1294
|
+
return null;
|
|
1295
|
+
}
|
|
1296
|
+
return {
|
|
1297
|
+
runId,
|
|
1298
|
+
status: row.status,
|
|
1299
|
+
statusDetail: typeof row.statusDetail === "string" ? row.statusDetail : null,
|
|
1300
|
+
input: this.readRunInput(runId),
|
|
1301
|
+
finalOutput: this.readRunFinalOutput(runId),
|
|
1302
|
+
error: this.readRunError(runId),
|
|
1303
|
+
presentationInstructions: this.readPresentationInstructions(runId),
|
|
1304
|
+
restartNumber: row.restartNumber,
|
|
1305
|
+
};
|
|
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
|
+
}
|
|
1265
1313
|
readRun(runId, options = {}) {
|
|
1266
1314
|
const row = this.readRunRow(runId);
|
|
1267
1315
|
if (row === undefined)
|
|
1268
1316
|
return null;
|
|
1269
1317
|
const snapshot = this.readDefinition(row.definitionHash);
|
|
1270
|
-
const state = this.
|
|
1318
|
+
const state = this.materializeRunState(row, snapshot);
|
|
1271
1319
|
const segments = this.segmentRows(runId).map((segment) => this.loadSegment(segment, state));
|
|
1272
1320
|
const flat = segments.find((segment) => segment.attemptId === "") ?? emptySegment();
|
|
1273
1321
|
return {
|
|
@@ -1506,7 +1554,7 @@ export class WorkflowRunStore {
|
|
|
1506
1554
|
}
|
|
1507
1555
|
assertSessionWriteAuthority(runId) {
|
|
1508
1556
|
const run = this.requireRunRow(runId);
|
|
1509
|
-
if (this.
|
|
1557
|
+
if (this.allowServerSessionRecording)
|
|
1510
1558
|
return;
|
|
1511
1559
|
this.assertWriteAuthority(run, this.contextFor(runId).revision);
|
|
1512
1560
|
}
|
|
@@ -2222,7 +2270,7 @@ export class WorkflowRunStore {
|
|
|
2222
2270
|
throw new Error(`Workflow run is missing: ${runId}`);
|
|
2223
2271
|
return row;
|
|
2224
2272
|
}
|
|
2225
|
-
|
|
2273
|
+
materializeRunState(row, snapshot) {
|
|
2226
2274
|
const steps = this.readSteps(row.runId);
|
|
2227
2275
|
return this.buildRunState(row, snapshot, steps, steps, this.readUpdates(row.runId).updates ?? []);
|
|
2228
2276
|
}
|