@osolmaz/pi-workflows 0.15.2 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/client/activity.d.ts +2 -0
- package/dist/client/activity.js +6 -0
- package/dist/client/activity.js.map +1 -0
- package/dist/client/client.d.ts +101 -0
- package/dist/client/client.js +733 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/materialize.d.ts +7 -0
- package/dist/client/materialize.js +177 -0
- package/dist/client/materialize.js.map +1 -0
- package/dist/client/protocol.d.ts +60 -0
- package/dist/client/protocol.js +269 -0
- package/dist/client/protocol.js.map +1 -0
- package/dist/client/resolver.d.ts +23 -0
- package/dist/client/resolver.js +2 -0
- package/dist/client/resolver.js.map +1 -0
- package/dist/client/view.d.ts +118 -0
- package/dist/client/view.js +3 -0
- package/dist/client/view.js.map +1 -0
- package/dist/controllers/sqlite.d.ts +64 -0
- package/dist/controllers/sqlite.js +219 -3
- package/dist/controllers/sqlite.js.map +1 -1
- package/dist/extension/index.d.ts +1 -0
- package/dist/extension/index.js +384 -156
- package/dist/extension/index.js.map +1 -1
- package/dist/extension/session-delivery.d.ts +6 -0
- package/dist/extension/session-delivery.js +80 -25
- package/dist/extension/session-delivery.js.map +1 -1
- package/dist/extension/session-view.d.ts +21 -0
- package/dist/extension/session-view.js +127 -0
- package/dist/extension/session-view.js.map +1 -0
- package/dist/extension/widget.d.ts +2 -1
- package/dist/extension/widget.js +15 -7
- package/dist/extension/widget.js.map +1 -1
- package/dist/host/child-worker-supervisor.js +1 -1
- package/dist/host/child-worker-supervisor.js.map +1 -1
- package/dist/host/resolver-entry.d.ts +2 -23
- package/dist/host/resolver-entry.js +1 -1
- package/dist/host/resolver-entry.js.map +1 -1
- package/dist/host/runner.d.ts +12 -0
- package/dist/host/runner.js +565 -43
- package/dist/host/runner.js.map +1 -1
- package/dist/host/state.d.ts +8 -3
- package/dist/host/state.js +59 -27
- package/dist/host/state.js.map +1 -1
- package/dist/host/view.d.ts +73 -0
- package/dist/host/view.js +871 -0
- package/dist/host/view.js.map +1 -0
- package/dist/host/worker-protocol.js +1 -1
- package/dist/host/worker-protocol.js.map +1 -1
- package/dist/state/database.d.ts +1 -0
- package/dist/state/database.js +15 -0
- package/dist/state/database.js.map +1 -1
- package/dist/state/prune.d.ts +3 -1
- package/dist/state/prune.js +6 -8
- package/dist/state/prune.js.map +1 -1
- package/dist/state/schema.js +12 -1
- package/dist/state/schema.js.map +1 -1
- package/dist/viewer/backup.d.ts +2 -0
- package/dist/viewer/backup.js +28 -0
- package/dist/viewer/backup.js.map +1 -0
- package/dist/viewer/cli.d.ts +4 -0
- package/dist/viewer/cli.js +150 -170
- package/dist/viewer/cli.js.map +1 -1
- package/dist/viewer/tui.d.ts +5 -7
- package/dist/viewer/tui.js +188 -108
- package/dist/viewer/tui.js.map +1 -1
- package/dist/workflows/store.d.ts +62 -1
- package/dist/workflows/store.js +350 -44
- package/dist/workflows/store.js.map +1 -1
- package/docs/2026-09-01-restore-session-delivery-controls-plan.md +139 -0
- package/docs/2026-09-01-unified-workflow-client-plan.md +381 -0
- package/docs/2026-09-02-installed-live-e2e-plan.md +225 -0
- package/docs/SQLITE_STATE.md +13 -11
- package/docs/WORKFLOW_HOST.md +81 -64
- package/docs/WORKFLOW_STEP_MESSAGES.md +4 -4
- package/docs/development.md +2 -1
- package/docs/live-replay-protocol.md +70 -132
- package/docs/tui-viewer.md +10 -14
- package/docs/workflows.md +56 -3
- package/herdr-plugin.toml +1 -1
- package/package.json +9 -3
- package/protocol/client.v1.schema.json +137 -0
- package/protocol/fixtures/client-v1.json +23 -0
- package/src/client/activity.ts +6 -0
- package/src/client/client.ts +935 -0
- package/src/client/index.ts +24 -0
- package/src/client/materialize.ts +228 -0
- package/src/client/protocol.ts +327 -0
- package/src/client/resolver.ts +26 -0
- package/src/client/view.ts +138 -0
- package/src/controllers/sqlite.ts +342 -3
- package/src/extension/index.ts +482 -171
- package/src/extension/session-delivery.ts +88 -25
- package/src/extension/session-view.ts +154 -0
- package/src/extension/widget.ts +18 -9
- package/src/host/child-worker-supervisor.ts +1 -1
- package/src/host/resolver-entry.ts +11 -26
- package/src/host/runner.ts +749 -75
- package/src/host/state.ts +82 -44
- package/src/host/view.ts +1084 -0
- package/src/host/worker-protocol.ts +1 -1
- package/src/state/database.ts +13 -0
- package/src/state/prune.ts +11 -11
- package/src/state/schema.ts +12 -1
- package/src/viewer/backup.ts +29 -0
- package/src/viewer/cli.ts +171 -185
- package/src/viewer/tui.ts +196 -124
- package/src/workflows/store.ts +500 -45
- package/dist/host/client.d.ts +0 -48
- package/dist/host/client.js +0 -216
- package/dist/host/client.js.map +0 -1
- package/dist/host/protocol.d.ts +0 -38
- package/dist/host/protocol.js +0 -156
- package/dist/host/protocol.js.map +0 -1
- package/dist/viewer/watch.d.ts +0 -6
- package/dist/viewer/watch.js +0 -46
- package/dist/viewer/watch.js.map +0 -1
- package/src/host/client.ts +0 -293
- package/src/host/protocol.ts +0 -196
- package/src/viewer/watch.ts +0 -51
package/dist/viewer/tui.js
CHANGED
|
@@ -1,142 +1,222 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { watchStateDatabase } from "./watch.js";
|
|
1
|
+
import { materializeRunView } from "../client/materialize.js";
|
|
2
|
+
import { sanitizeText } from "../render/ansi.js";
|
|
4
3
|
const ALT_SCREEN_ON = "\u001b[?1049h\u001b[?25l";
|
|
5
4
|
const ALT_SCREEN_OFF = "\u001b[?25h\u001b[?1049l";
|
|
6
5
|
const CLEAR = "\u001b[2J\u001b[H";
|
|
7
|
-
|
|
8
|
-
return {
|
|
9
|
-
width: process.stdout.columns ?? 80,
|
|
10
|
-
height: process.stdout.rows ?? 24,
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Interactive live viewer. Watches the SQLite database and re-renders after
|
|
15
|
-
* committed run changes. Returns when the user quits.
|
|
16
|
-
*/
|
|
6
|
+
/** Interactive client view. All durable reads stay in the workflow host. */
|
|
17
7
|
export async function runViewer(options) {
|
|
18
|
-
|
|
19
|
-
let
|
|
20
|
-
let
|
|
21
|
-
let
|
|
22
|
-
let
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (!match) {
|
|
30
|
-
throw new Error(`Run not found: ${options.runId}`);
|
|
31
|
-
}
|
|
32
|
-
mode = { view: "detail", runId: match.runId };
|
|
33
|
-
}
|
|
34
|
-
const draw = async () => {
|
|
35
|
-
bundles = store.listRuns();
|
|
36
|
-
selectedIndex = Math.min(selectedIndex, Math.max(0, bundles.length - 1));
|
|
37
|
-
const size = viewportSize();
|
|
38
|
-
const lines = mode.view === "list"
|
|
39
|
-
? renderRunListLines(bundles, selectedIndex, size)
|
|
40
|
-
: await renderDetail(mode.runId, size);
|
|
41
|
-
process.stdout.write(CLEAR + lines.join("\n"));
|
|
8
|
+
let value = options.runId === undefined ? [] : null;
|
|
9
|
+
let selected = 0;
|
|
10
|
+
let scroll = 0;
|
|
11
|
+
let mode = options.runId === undefined ? "runs" : "run";
|
|
12
|
+
let unsubscribe;
|
|
13
|
+
let runMaterializationGeneration = 0;
|
|
14
|
+
const draw = () => {
|
|
15
|
+
const width = process.stdout.columns ?? 100;
|
|
16
|
+
const height = Math.max(1, (process.stdout.rows ?? 24) - 1);
|
|
17
|
+
const lines = renderClientView(value, width, height, mode === "runs" ? selected : undefined, scroll);
|
|
18
|
+
process.stdout.write(`${CLEAR}${lines.join("\n")}`);
|
|
42
19
|
};
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
20
|
+
const watchRuns = async () => {
|
|
21
|
+
runMaterializationGeneration += 1;
|
|
22
|
+
await unsubscribe?.();
|
|
23
|
+
mode = "runs";
|
|
24
|
+
scroll = 0;
|
|
25
|
+
unsubscribe = await options.client.watchRuns((event) => {
|
|
26
|
+
value = event.payload;
|
|
27
|
+
selected = Math.min(selected, Math.max(0, arrayLength(value) - 1));
|
|
28
|
+
draw();
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
const watchRun = async (runId) => {
|
|
32
|
+
runMaterializationGeneration += 1;
|
|
33
|
+
await unsubscribe?.();
|
|
34
|
+
mode = "run";
|
|
35
|
+
scroll = 0;
|
|
36
|
+
unsubscribe = await options.client.watchRun(runId, (event) => {
|
|
37
|
+
const generation = ++runMaterializationGeneration;
|
|
38
|
+
value = event.payload;
|
|
39
|
+
draw();
|
|
40
|
+
void materializeRunView(options.client, event.payload)
|
|
41
|
+
.then((materialized) => {
|
|
42
|
+
if (generation !== runMaterializationGeneration || mode !== "run")
|
|
43
|
+
return;
|
|
44
|
+
value = materialized;
|
|
45
|
+
draw();
|
|
46
|
+
})
|
|
47
|
+
.catch(() => {
|
|
48
|
+
// A newer revision event retries the complete view from its own stable snapshot.
|
|
49
|
+
});
|
|
50
|
+
});
|
|
55
51
|
};
|
|
56
52
|
process.stdout.write(ALT_SCREEN_ON);
|
|
57
|
-
const stopWatching = watchStateDatabase(options.databasePath, () => {
|
|
58
|
-
void draw();
|
|
59
|
-
});
|
|
60
|
-
const ticker = setInterval(() => {
|
|
61
|
-
void draw();
|
|
62
|
-
}, options.tickMs ?? 1_000);
|
|
63
53
|
const rawModeSupported = process.stdin.isTTY === true;
|
|
64
|
-
if (rawModeSupported) {
|
|
65
|
-
process.stdin.setRawMode(true);
|
|
66
|
-
}
|
|
67
|
-
process.stdin.resume();
|
|
68
54
|
try {
|
|
55
|
+
if (options.runId === undefined)
|
|
56
|
+
await watchRuns();
|
|
57
|
+
else
|
|
58
|
+
await watchRun(options.runId);
|
|
59
|
+
draw();
|
|
60
|
+
if (rawModeSupported)
|
|
61
|
+
process.stdin.setRawMode(true);
|
|
62
|
+
process.stdin.resume();
|
|
69
63
|
await new Promise((resolve) => {
|
|
70
64
|
const onKey = (data) => {
|
|
71
65
|
const key = data.toString("utf8");
|
|
72
|
-
if (key === "
|
|
73
|
-
if (mode.view === "detail" && key === "q") {
|
|
74
|
-
mode = { view: "list" };
|
|
75
|
-
void draw();
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
66
|
+
if (key === "\u0003" || key === "\u001b") {
|
|
78
67
|
resolve();
|
|
79
68
|
return;
|
|
80
69
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
70
|
+
if (key === "q") {
|
|
71
|
+
if (mode === "run" && options.runId === undefined)
|
|
72
|
+
void watchRuns();
|
|
73
|
+
else
|
|
74
|
+
resolve();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (mode === "run") {
|
|
78
|
+
const page = Math.max(1, (process.stdout.rows ?? 24) - 2);
|
|
79
|
+
if (key === "\u001b[A" || key === "k") {
|
|
80
|
+
scroll = Math.max(0, scroll - 1);
|
|
81
|
+
draw();
|
|
91
82
|
}
|
|
92
83
|
else if (key === "\u001b[B" || key === "j") {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
void draw();
|
|
84
|
+
scroll += 1;
|
|
85
|
+
draw();
|
|
96
86
|
}
|
|
97
|
-
else if (key === "\u001b[
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
void draw();
|
|
87
|
+
else if (key === "\u001b[5~") {
|
|
88
|
+
scroll = Math.max(0, scroll - page);
|
|
89
|
+
draw();
|
|
101
90
|
}
|
|
102
|
-
else if (key === "\u001b[
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
void draw();
|
|
91
|
+
else if (key === "\u001b[6~") {
|
|
92
|
+
scroll += page;
|
|
93
|
+
draw();
|
|
106
94
|
}
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
if (key === "\u001b[A" || key === "k") {
|
|
110
|
-
selectedIndex = Math.max(0, selectedIndex - 1);
|
|
111
|
-
void draw();
|
|
112
95
|
}
|
|
113
|
-
else if (
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
96
|
+
else if (mode === "runs") {
|
|
97
|
+
if (key === "\u001b[A" || key === "k") {
|
|
98
|
+
selected = Math.max(0, selected - 1);
|
|
99
|
+
draw();
|
|
100
|
+
}
|
|
101
|
+
else if (key === "\u001b[B" || key === "j") {
|
|
102
|
+
selected = Math.min(Math.max(0, arrayLength(value) - 1), selected + 1);
|
|
103
|
+
draw();
|
|
104
|
+
}
|
|
105
|
+
else if (key === "\r" || key === "\n") {
|
|
106
|
+
const runId = selectedRunId(value, selected);
|
|
107
|
+
if (runId !== undefined)
|
|
108
|
+
void watchRun(runId);
|
|
124
109
|
}
|
|
125
110
|
}
|
|
126
111
|
};
|
|
127
112
|
process.stdin.on("data", onKey);
|
|
128
|
-
void draw();
|
|
129
113
|
});
|
|
130
114
|
}
|
|
131
115
|
finally {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (rawModeSupported) {
|
|
116
|
+
runMaterializationGeneration += 1;
|
|
117
|
+
await unsubscribe?.();
|
|
118
|
+
if (rawModeSupported)
|
|
136
119
|
process.stdin.setRawMode(false);
|
|
137
|
-
}
|
|
138
120
|
process.stdin.pause();
|
|
139
121
|
process.stdout.write(ALT_SCREEN_OFF);
|
|
140
122
|
}
|
|
141
123
|
}
|
|
124
|
+
export function renderClientView(value, width, height, selected, scroll) {
|
|
125
|
+
if (Array.isArray(value)) {
|
|
126
|
+
if (value.length === 0)
|
|
127
|
+
return ["No workflow runs found."];
|
|
128
|
+
const selectedIndex = selected ?? 0;
|
|
129
|
+
const start = Math.min(Math.max(0, selectedIndex - height + 1), Math.max(0, value.length - height));
|
|
130
|
+
return value.slice(start, start + height).map((item, offset) => {
|
|
131
|
+
const index = start + offset;
|
|
132
|
+
const prefix = index === selected ? "> " : " ";
|
|
133
|
+
return truncate(`${prefix}${summary(item)}`, width);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
const lines = renderRun(value);
|
|
137
|
+
const start = Math.min(scroll, Math.max(0, lines.length - height));
|
|
138
|
+
return lines.slice(start, start + height).map((line) => truncate(line, width));
|
|
139
|
+
}
|
|
140
|
+
function renderRun(value) {
|
|
141
|
+
if (!isRecord(value) || value.schema !== "pi-workflows.run-view.v1") {
|
|
142
|
+
return JSON.stringify(value, null, 2).split("\n");
|
|
143
|
+
}
|
|
144
|
+
const manifest = isRecord(value.manifest) ? value.manifest : {};
|
|
145
|
+
const state = isRecord(value.state) ? value.state : {};
|
|
146
|
+
const display = isRecord(value.display) ? value.display : {};
|
|
147
|
+
const workflowName = typeof manifest.workflowName === "string"
|
|
148
|
+
? sanitizeText(manifest.workflowName)
|
|
149
|
+
: typeof state.workflowName === "string"
|
|
150
|
+
? sanitizeText(state.workflowName)
|
|
151
|
+
: "unknown";
|
|
152
|
+
const runId = typeof value.runId === "string" ? sanitizeText(value.runId) : "unknown";
|
|
153
|
+
const status = typeof display.status === "string" ? display.status : "unknown";
|
|
154
|
+
const lines = [
|
|
155
|
+
`workflow ${workflowName}`,
|
|
156
|
+
`${statusGlyph(status)} ${sanitizeText(status)} · run ${runId}`,
|
|
157
|
+
];
|
|
158
|
+
if (typeof display.reason === "string")
|
|
159
|
+
lines.push(`reason: ${sanitizeText(display.reason)}`);
|
|
160
|
+
const steps = Array.isArray(state.steps) ? state.steps : [];
|
|
161
|
+
if (steps.length > 0) {
|
|
162
|
+
lines.push("", "steps");
|
|
163
|
+
for (const step of steps) {
|
|
164
|
+
if (!isRecord(step))
|
|
165
|
+
continue;
|
|
166
|
+
const nodeId = typeof step.nodeId === "string" ? sanitizeText(step.nodeId) : "unknown";
|
|
167
|
+
const outcome = typeof step.outcome === "string" ? step.outcome : "unknown";
|
|
168
|
+
lines.push(` ${stepGlyph(outcome)} ${nodeId} · ${sanitizeText(outcome)}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (status === "completed" && Object.hasOwn(state, "finalOutput")) {
|
|
172
|
+
lines.push("", `output ${JSON.stringify(state.finalOutput)}`);
|
|
173
|
+
}
|
|
174
|
+
else if (typeof state.error === "string") {
|
|
175
|
+
lines.push("", `error: ${sanitizeText(state.error)}`);
|
|
176
|
+
}
|
|
177
|
+
return lines;
|
|
178
|
+
}
|
|
179
|
+
function summary(value) {
|
|
180
|
+
if (!isRecord(value))
|
|
181
|
+
return JSON.stringify(value);
|
|
182
|
+
const status = isRecord(value.display) ? value.display.status : undefined;
|
|
183
|
+
const name = typeof value.workflowName === "string" ? value.workflowName : "workflow";
|
|
184
|
+
const runId = typeof value.runId === "string" ? value.runId : "unknown";
|
|
185
|
+
return `${typeof status === "string" ? sanitizeText(status) : "unknown"} ${sanitizeText(name)} ${sanitizeText(runId)}`;
|
|
186
|
+
}
|
|
187
|
+
function statusGlyph(status) {
|
|
188
|
+
if (status === "completed")
|
|
189
|
+
return "✓";
|
|
190
|
+
if (status === "failed" || status === "timed_out" || status === "cancelled")
|
|
191
|
+
return "✗";
|
|
192
|
+
if (status === "paused")
|
|
193
|
+
return "‖";
|
|
194
|
+
if (status === "waiting")
|
|
195
|
+
return "○";
|
|
196
|
+
if (status === "queued")
|
|
197
|
+
return "…";
|
|
198
|
+
if (status === "ambiguous")
|
|
199
|
+
return "!";
|
|
200
|
+
return "●";
|
|
201
|
+
}
|
|
202
|
+
function stepGlyph(outcome) {
|
|
203
|
+
return outcome === "ok" ? "✓" : outcome === "failed" || outcome === "timed_out" ? "✗" : "○";
|
|
204
|
+
}
|
|
205
|
+
function selectedRunId(value, index) {
|
|
206
|
+
if (!Array.isArray(value))
|
|
207
|
+
return undefined;
|
|
208
|
+
const item = value[index];
|
|
209
|
+
return isRecord(item) && typeof item.runId === "string" ? item.runId : undefined;
|
|
210
|
+
}
|
|
211
|
+
function arrayLength(value) {
|
|
212
|
+
return Array.isArray(value) ? value.length : 0;
|
|
213
|
+
}
|
|
214
|
+
function truncate(value, width) {
|
|
215
|
+
if (value.length <= width)
|
|
216
|
+
return value;
|
|
217
|
+
return width <= 1 ? value.slice(0, width) : `${value.slice(0, width - 1)}…`;
|
|
218
|
+
}
|
|
219
|
+
function isRecord(value) {
|
|
220
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
221
|
+
}
|
|
142
222
|
//# sourceMappingURL=tui.js.map
|
package/dist/viewer/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/viewer/tui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/viewer/tui.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { StateDatabase } from "../state/database.js";
|
|
|
2
2
|
import { type JsonValue } from "../state/json.js";
|
|
3
3
|
import { type LeaseClaim, type MutationActor, type OwnerType } from "../state/mutation.js";
|
|
4
4
|
import { type InitialWorkflowSettingsScope, type WorkflowFollowUpQueueRecord, type WorkflowFollowUpRecord, type WorkflowQueueFollowUpRequest, type WorkflowRemoveFollowUpRequest, type WorkflowSettingsChangeRequest, type WorkflowSettingsChangeResult, type WorkflowSettingsDefinition, type WorkflowSettingsScopeRecord } from "./settings.js";
|
|
5
|
-
import type { WorkflowDefinition, WorkflowDefinitionSnapshot, WorkflowEffectRecovery, WorkflowEffectReservation, HumanDecisionRequest, ResolvedHumanDecision, WorkflowRunState, WorkflowSessionBinding, WorkflowSessionCapture, WorkflowSessionEntryRecord, WorkflowSessionEventRecord, WorkflowTraceEvent, WorkflowTraceEventDraft, WorkflowUpdateInput, WorkflowUpdateRecord } from "./types.js";
|
|
5
|
+
import type { WorkflowDefinition, WorkflowDefinitionSnapshot, WorkflowEffectRecovery, WorkflowEffectReservation, HumanDecisionRequest, ResolvedHumanDecision, WorkflowRunState, WorkflowStepRecord, WorkflowSessionBinding, WorkflowSessionCapture, WorkflowSessionEntryRecord, WorkflowSessionEventRecord, WorkflowTraceEvent, WorkflowTraceEventDraft, WorkflowUpdateInput, WorkflowUpdateRecord } from "./types.js";
|
|
6
6
|
export declare const RUN_STATE_SCHEMA: "pi-workflows.run-state.v1";
|
|
7
7
|
export declare const DEFINITION_SNAPSHOT_SCHEMA: "pi-workflows.definition-snapshot.v1";
|
|
8
8
|
export declare const SESSION_BINDING_SCHEMA: "pi-workflows.session-binding.v1";
|
|
@@ -20,6 +20,11 @@ export type RunWriteAuthority = {
|
|
|
20
20
|
/** Duration used when a protected write renews this exact live claim. */
|
|
21
21
|
leaseMs?: number;
|
|
22
22
|
};
|
|
23
|
+
export type WorkflowRunDisplayState = {
|
|
24
|
+
status: WorkflowRunState["status"];
|
|
25
|
+
paused: boolean;
|
|
26
|
+
error: string | null;
|
|
27
|
+
};
|
|
23
28
|
export type WorkflowRunStoreOptions = {
|
|
24
29
|
authorityProvider?: (runId: string) => RunWriteAuthority | undefined;
|
|
25
30
|
/** Host-owned projection updates that must commit with each run snapshot. */
|
|
@@ -99,6 +104,44 @@ export type LoadedWorkflowRun = {
|
|
|
99
104
|
settingsScopes?: WorkflowSettingsScopeRecord[];
|
|
100
105
|
followUpQueue?: WorkflowFollowUpQueueRecord | null;
|
|
101
106
|
};
|
|
107
|
+
export type WorkflowRunViewCounts = {
|
|
108
|
+
steps: number;
|
|
109
|
+
trace: number;
|
|
110
|
+
sessionEntries: number;
|
|
111
|
+
sessionEvents: number;
|
|
112
|
+
settings: number;
|
|
113
|
+
followUps: number;
|
|
114
|
+
updates: number;
|
|
115
|
+
};
|
|
116
|
+
export type WorkflowRunViewRange = {
|
|
117
|
+
start: number;
|
|
118
|
+
limit: number;
|
|
119
|
+
};
|
|
120
|
+
export type WorkflowRunViewRead = {
|
|
121
|
+
runId: string;
|
|
122
|
+
state: WorkflowRunState;
|
|
123
|
+
snapshot: WorkflowDefinitionSnapshot;
|
|
124
|
+
traceEvents: WorkflowTraceEvent[];
|
|
125
|
+
sessionBinding: WorkflowSessionBinding | null;
|
|
126
|
+
sessionEntries: WorkflowSessionEntryRecord[];
|
|
127
|
+
sessionEvents: WorkflowSessionEventRecord[];
|
|
128
|
+
sessionCapture: WorkflowSessionCapture | null;
|
|
129
|
+
sessionIntegrity: SessionCaptureIntegrity;
|
|
130
|
+
settingsScopes: WorkflowSettingsScopeRecord[];
|
|
131
|
+
followUpQueue: WorkflowFollowUpQueueRecord | null;
|
|
132
|
+
graphSteps: WorkflowStepRecord[];
|
|
133
|
+
takenTransitions: string[];
|
|
134
|
+
};
|
|
135
|
+
export type WorkflowRunViewReadOptions = {
|
|
136
|
+
steps: WorkflowRunViewRange;
|
|
137
|
+
trace: WorkflowRunViewRange;
|
|
138
|
+
sessionEntries: WorkflowRunViewRange;
|
|
139
|
+
sessionEvents: WorkflowRunViewRange;
|
|
140
|
+
settings: WorkflowRunViewRange;
|
|
141
|
+
followUps: WorkflowRunViewRange;
|
|
142
|
+
updates: WorkflowRunViewRange;
|
|
143
|
+
graphCursor: number;
|
|
144
|
+
};
|
|
102
145
|
export type ReadWorkflowRunOptions = {
|
|
103
146
|
includeTrace?: boolean;
|
|
104
147
|
};
|
|
@@ -150,6 +193,7 @@ export declare class WorkflowRunStore {
|
|
|
150
193
|
getSettingsScopeAtChange(scopeId: string, changeNumber: number): WorkflowSettingsScopeRecord | undefined;
|
|
151
194
|
listSettingsScopes(runId: string): WorkflowSettingsScopeRecord[];
|
|
152
195
|
private settingsScopesForRunView;
|
|
196
|
+
private readSettingsScopeRange;
|
|
153
197
|
findSettingsScope(runId: string, mountPath: string, invocation: number): WorkflowSettingsScopeRecord | undefined;
|
|
154
198
|
changeSettings<TSettings, TInput = unknown>(definition: WorkflowSettingsDefinition<TSettings, TInput>, request: WorkflowSettingsChangeRequest): Promise<WorkflowSettingsChangeResult>;
|
|
155
199
|
queueFollowUp(request: WorkflowQueueFollowUpRequest): {
|
|
@@ -159,6 +203,7 @@ export declare class WorkflowRunStore {
|
|
|
159
203
|
removeFollowUp(request: WorkflowRemoveFollowUpRequest): WorkflowFollowUpRecord;
|
|
160
204
|
originSessionId(runId: string): string | undefined;
|
|
161
205
|
readFollowUpQueue(runId: string): WorkflowFollowUpQueueRecord | undefined;
|
|
206
|
+
private readFollowUpQueueRange;
|
|
162
207
|
listPendingPresentations(targetSessionId: string): string[];
|
|
163
208
|
settleFollowUpPresentation(options: {
|
|
164
209
|
runId: string;
|
|
@@ -204,6 +249,16 @@ export declare class WorkflowRunStore {
|
|
|
204
249
|
lastEventSeq: number;
|
|
205
250
|
}>;
|
|
206
251
|
readRun(runId: string, options?: ReadWorkflowRunOptions): LoadedWorkflowRun | null;
|
|
252
|
+
readRunViewCounts(runId: string): WorkflowRunViewCounts | null;
|
|
253
|
+
readRunView(runId: string, options: WorkflowRunViewReadOptions): WorkflowRunViewRead | null;
|
|
254
|
+
traceCursorForStep(runId: string, stepCursor: number, traceTotal: number): number;
|
|
255
|
+
persistViewContent(runId: string, content: Buffer, mediaType: string): string;
|
|
256
|
+
readContentBlob(runId: string, digest: string, mediaType: string): {
|
|
257
|
+
mediaType: string;
|
|
258
|
+
content: Buffer;
|
|
259
|
+
} | undefined;
|
|
260
|
+
readDisplayState(runId: string): WorkflowRunDisplayState | null;
|
|
261
|
+
readSessionReplayCheckpoint(runId: string, throughSequence: number): JsonValue | null;
|
|
207
262
|
listRuns(options?: ReadWorkflowRunOptions): LoadedWorkflowRun[];
|
|
208
263
|
readLastTraceEvent(runId: string): WorkflowTraceEvent | null;
|
|
209
264
|
private contextFor;
|
|
@@ -252,12 +307,18 @@ export declare class WorkflowRunStore {
|
|
|
252
307
|
private readRunRow;
|
|
253
308
|
private requireRunRow;
|
|
254
309
|
private readRunState;
|
|
310
|
+
private buildRunState;
|
|
255
311
|
private readSteps;
|
|
312
|
+
private readStepRange;
|
|
313
|
+
private readLatestSteps;
|
|
314
|
+
private readTakenTransitions;
|
|
315
|
+
private mapStepRows;
|
|
256
316
|
private readRunSources;
|
|
257
317
|
private carriedStepCount;
|
|
258
318
|
private readActiveAttempt;
|
|
259
319
|
private readHumanDecisionReceipt;
|
|
260
320
|
private readUpdates;
|
|
321
|
+
private readCurrentUpdates;
|
|
261
322
|
private readJsonAs;
|
|
262
323
|
private readText;
|
|
263
324
|
private readDefinition;
|