@osolmaz/pi-workflows 0.5.2 → 0.6.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.
Files changed (81) hide show
  1. package/README.md +13 -3
  2. package/dist/builtins/catalog.js +1 -1
  3. package/dist/builtins/monitor.workflow.d.ts +25 -69
  4. package/dist/builtins/monitor.workflow.js +194 -123
  5. package/dist/builtins/monitor.workflow.js.map +1 -1
  6. package/dist/extension/executor.d.ts +7 -2
  7. package/dist/extension/executor.js +20 -14
  8. package/dist/extension/executor.js.map +1 -1
  9. package/dist/extension/index.js +56 -15
  10. package/dist/extension/index.js.map +1 -1
  11. package/dist/extension/step-message.d.ts +24 -0
  12. package/dist/extension/step-message.js +106 -0
  13. package/dist/extension/step-message.js.map +1 -0
  14. package/dist/extension/widget.d.ts +4 -2
  15. package/dist/extension/widget.js +111 -17
  16. package/dist/extension/widget.js.map +1 -1
  17. package/dist/extension/workflow-tool.d.ts +9 -0
  18. package/dist/extension/workflow-tool.js +10 -0
  19. package/dist/extension/workflow-tool.js.map +1 -1
  20. package/dist/host/rpc-bridge.js +25 -11
  21. package/dist/host/rpc-bridge.js.map +1 -1
  22. package/dist/host/rpc-executor.d.ts +2 -2
  23. package/dist/host/rpc-executor.js +23 -12
  24. package/dist/host/rpc-executor.js.map +1 -1
  25. package/dist/viewer/cli.js +1 -1
  26. package/dist/viewer/cli.js.map +1 -1
  27. package/dist/viewer/render.js +14 -0
  28. package/dist/viewer/render.js.map +1 -1
  29. package/dist/viewer/tui.js +1 -1
  30. package/dist/viewer/tui.js.map +1 -1
  31. package/dist/workflows/engine.d.ts +6 -1
  32. package/dist/workflows/engine.js +88 -6
  33. package/dist/workflows/engine.js.map +1 -1
  34. package/dist/workflows/index.d.ts +4 -2
  35. package/dist/workflows/index.js +2 -0
  36. package/dist/workflows/index.js.map +1 -1
  37. package/dist/workflows/progress.d.ts +34 -0
  38. package/dist/workflows/progress.js +268 -0
  39. package/dist/workflows/progress.js.map +1 -0
  40. package/dist/workflows/schema.js +21 -1
  41. package/dist/workflows/schema.js.map +1 -1
  42. package/dist/workflows/shell.d.ts +2 -2
  43. package/dist/workflows/shell.js +103 -25
  44. package/dist/workflows/shell.js.map +1 -1
  45. package/dist/workflows/store.d.ts +15 -2
  46. package/dist/workflows/store.js +44 -2
  47. package/dist/workflows/store.js.map +1 -1
  48. package/dist/workflows/types.d.ts +52 -1
  49. package/dist/workflows/updates.d.ts +15 -0
  50. package/dist/workflows/updates.js +188 -0
  51. package/dist/workflows/updates.js.map +1 -0
  52. package/docs/DESIGN_PHILOSOPHY.md +51 -0
  53. package/docs/MONITOR.md +282 -0
  54. package/docs/WORKFLOW_STEP_MESSAGES.md +141 -0
  55. package/docs/WORKFLOW_UPDATES.md +416 -0
  56. package/docs/development.md +7 -3
  57. package/docs/plans/2026-08-13-responsive-workflow-widget-plan.md +11 -3
  58. package/docs/plans/2026-08-16-workflow-updates-plan.md +494 -0
  59. package/docs/run-bundles.md +10 -2
  60. package/docs/workflows.md +57 -17
  61. package/package.json +1 -1
  62. package/src/builtins/catalog.ts +1 -1
  63. package/src/builtins/monitor.workflow.ts +217 -148
  64. package/src/extension/executor.ts +36 -14
  65. package/src/extension/index.ts +89 -23
  66. package/src/extension/step-message.ts +145 -0
  67. package/src/extension/widget.ts +158 -14
  68. package/src/extension/workflow-tool.ts +22 -0
  69. package/src/host/rpc-bridge.ts +37 -14
  70. package/src/host/rpc-executor.ts +35 -14
  71. package/src/viewer/cli.ts +1 -1
  72. package/src/viewer/render.ts +27 -0
  73. package/src/viewer/tui.ts +1 -1
  74. package/src/workflows/engine.ts +117 -4
  75. package/src/workflows/index.ts +32 -0
  76. package/src/workflows/progress.ts +326 -0
  77. package/src/workflows/schema.ts +23 -1
  78. package/src/workflows/shell.ts +109 -26
  79. package/src/workflows/store.ts +67 -2
  80. package/src/workflows/types.ts +78 -1
  81. package/src/workflows/updates.ts +208 -0
package/README.md CHANGED
@@ -9,7 +9,14 @@ The workflow model is a port of [openclaw/acpx](https://github.com/openclaw/acpx
9
9
  flows into pi itself. Agent steps run inside your current pi conversation, so
10
10
  the model keeps everything it already knows from the discussion. The model
11
11
  completes each step by calling a JSON `workflow` tool, which gives the engine
12
- structured, validated output to route on.
12
+ structured, validated output to route on. See the
13
+ [design philosophy](docs/DESIGN_PHILOSOPHY.md) for the principles behind the
14
+ engine and its public parts. Running steps can publish durable [workflow
15
+ updates](docs/WORKFLOW_UPDATES.md), including progress counts and ETA data.
16
+ Agent instructions use compact [workflow step
17
+ messages](docs/WORKFLOW_STEP_MESSAGES.md), and the built-in
18
+ [monitor](docs/MONITOR.md) reports every check without starting an extra
19
+ assistant turn.
13
20
 
14
21
  ## Install
15
22
 
@@ -171,7 +178,9 @@ Inside pi, a compact widget above the editor shows one line per workflow node.
171
178
  The first glyph is the node status. The second glyph is the node type: `●`
172
179
  agent, `ƒ` compute, `!` notification, `$` shell action, `*` function action, or
173
180
  `◆` checkpoint. Repeated visits, runtime details, and timing appear on the same
174
- line when they apply. Long workflows are windowed around the active node.
181
+ line when they apply. Pi's current theme highlights the full active-node line,
182
+ while status glyphs keep every state readable without color. Long workflows are
183
+ windowed around the active node.
175
184
  Scroll the list with `shift+↑` / `shift+↓`; it snaps back to following the
176
185
  active node whenever the workflow advances a step. Use `piw` when you need the
177
186
  full boxed graph and its edges.
@@ -247,7 +256,8 @@ example set. Copy any of them into `.pi/workflows/` to use them:
247
256
  - `branch` classifies a task with a `decision` and routes to either a
248
257
  continue lane or a clarification checkpoint.
249
258
  - `shell` runs a runtime-owned shell command and parses its output, with no
250
- agent step at all.
259
+ agent step at all. Shell and function actions can publish durable progress
260
+ while they run.
251
261
  - `two-turn` chains three agent steps that build on each other's outputs in
252
262
  the same conversation.
253
263
  - `elegant-solution` is the mid-conversation trigger described above.
@@ -3,7 +3,7 @@ import monitorWorkflow from "./monitor.workflow.js";
3
3
  export const builtinWorkflowCatalog = new BuiltinWorkflowCatalog([
4
4
  {
5
5
  id: "monitor",
6
- revision: "2",
6
+ revision: "3",
7
7
  definition: monitorWorkflow,
8
8
  legacySources: [
9
9
  {
@@ -1,71 +1,27 @@
1
- declare const _default: {
2
- name: string;
3
- title: ({ input }: {
4
- input: unknown;
5
- workflowName: string;
6
- }) => string;
7
- presentationPrompt: ({ finalOutput }: import("../workflows/types.js").WorkflowPresentationContext) => string | undefined;
8
- startAt: string;
9
- maxSteps: number;
10
- nodes: {
11
- prepare: import("../workflows/types.js").ComputeNodeDefinition;
12
- guard: import("../workflows/types.js").ComputeNodeDefinition;
13
- continue_guard: import("../workflows/types.js").ComputeNodeDefinition;
14
- check: import("../workflows/types.js").AgentNodeDefinition;
15
- report_continue: import("../workflows/types.js").NotifyNodeDefinition;
16
- report_stop: import("../workflows/types.js").NotifyNodeDefinition;
17
- sleep: import("../workflows/types.js").ShellActionNodeDefinition;
18
- finish: import("../workflows/types.js").ComputeNodeDefinition;
1
+ import type { WorkflowDefinition, WorkflowProgressData } from "../workflows/types.js";
2
+ export type MonitorInput = {
3
+ task: string;
4
+ everyMinutes?: number;
5
+ stopWhen?: string;
6
+ maxChecks?: number;
7
+ checkTimeoutMinutes?: number;
8
+ };
9
+ type MonitorConfig = Required<MonitorInput>;
10
+ type MonitorRoute = "continue" | "stop";
11
+ type MonitorTrack = {
12
+ key: string;
13
+ data: WorkflowProgressData;
14
+ };
15
+ type MonitorCheck = {
16
+ route: MonitorRoute;
17
+ observation: string;
18
+ report: string;
19
+ progress?: {
20
+ tracks: MonitorTrack[];
19
21
  };
20
- edges: ({
21
- from: string;
22
- to: string;
23
- switch?: never;
24
- } | {
25
- to?: never;
26
- from: string;
27
- switch: {
28
- on: string;
29
- cases: {
30
- check: string;
31
- stop: string;
32
- continue_quiet?: never;
33
- continue_report?: never;
34
- stop_quiet?: never;
35
- stop_report?: never;
36
- sleep?: never;
37
- };
38
- };
39
- } | {
40
- to?: never;
41
- from: string;
42
- switch: {
43
- on: string;
44
- cases: {
45
- check?: never;
46
- continue_quiet: string;
47
- continue_report: string;
48
- stop_quiet: string;
49
- stop_report: string;
50
- sleep?: never;
51
- stop?: never;
52
- };
53
- };
54
- } | {
55
- to?: never;
56
- from: string;
57
- switch: {
58
- on: string;
59
- cases: {
60
- check?: never;
61
- continue_quiet?: never;
62
- continue_report?: never;
63
- stop_quiet?: never;
64
- stop_report?: never;
65
- sleep: string;
66
- stop: string;
67
- };
68
- };
69
- })[];
22
+ reason: string;
70
23
  };
71
- export default _default;
24
+ export declare function prepareMonitorInput(input: unknown): MonitorConfig;
25
+ export declare function validateMonitorCheck(output: unknown): MonitorCheck;
26
+ declare const monitorWorkflow: WorkflowDefinition;
27
+ export default monitorWorkflow;
@@ -1,22 +1,20 @@
1
- import { agent, compute, defineWorkflow, notify, shell } from "../workflows/definition.js";
1
+ import { action, agent, compute, defineWorkflow, notify, shell } from "../workflows/definition.js";
2
+ import { estimateProgress, formatProgressReport, } from "../workflows/progress.js";
3
+ import { validateProgressData } from "../workflows/updates.js";
2
4
  const MIN_INTERVAL_MINUTES = 1;
3
5
  const MAX_INTERVAL_MINUTES = 24 * 60;
6
+ const DEFAULT_INTERVAL_MINUTES = 30;
4
7
  const MIN_CHECK_TIMEOUT_MINUTES = 5;
5
8
  const MAX_CHECK_TIMEOUT_MINUTES = 24 * 60;
6
9
  const DEFAULT_MIN_CHECK_TIMEOUT_MINUTES = 60;
7
10
  const DEFAULT_MAX_CHECKS = 1_000;
8
11
  const MAX_CHECKS = 1_000;
12
+ const MAX_TRACKS = 256;
9
13
  const MAX_OBSERVATION_CHARS = 8_000;
10
14
  const MAX_REPORT_CHARS = 4_000;
11
15
  const MAX_REASON_CHARS = 2_000;
12
16
  const SLEEP_TIMEOUT_MARGIN_MS = 60_000;
13
17
  const NODE_TIMEOUT_MARGIN_MS = 2 * 60_000;
14
- const MONITOR_ROUTES = new Set([
15
- "continue_quiet",
16
- "continue_report",
17
- "stop_quiet",
18
- "stop_report",
19
- ]);
20
18
  function requireRecord(value, label) {
21
19
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
22
20
  throw new Error(`${label} must be an object`);
@@ -24,32 +22,50 @@ function requireRecord(value, label) {
24
22
  return value;
25
23
  }
26
24
  function requireBoundedString(value, label, maxChars) {
27
- if (typeof value !== "string") {
25
+ if (typeof value !== "string")
28
26
  throw new Error(`${label} must be a string`);
29
- }
30
27
  const trimmed = value.trim();
31
- if (trimmed.length === 0) {
28
+ if (trimmed.length === 0)
32
29
  throw new Error(`${label} must not be empty`);
33
- }
34
- if (trimmed.length > maxChars) {
30
+ if (trimmed.length > maxChars)
35
31
  throw new Error(`${label} must be at most ${maxChars} characters`);
36
- }
37
32
  return trimmed;
38
33
  }
39
- function prepareInput(input) {
34
+ async function waitForUpdateSlot(signal) {
35
+ await new Promise((resolve, reject) => {
36
+ const onAbort = () => {
37
+ clearTimeout(timer);
38
+ reject(signal.reason ?? new Error("monitor progress publication was cancelled"));
39
+ };
40
+ const timer = setTimeout(() => {
41
+ signal.removeEventListener("abort", onAbort);
42
+ resolve();
43
+ }, 55);
44
+ if (signal.aborted)
45
+ onAbort();
46
+ else
47
+ signal.addEventListener("abort", onAbort, { once: true });
48
+ });
49
+ }
50
+ export function prepareMonitorInput(input) {
40
51
  const value = requireRecord(input, "monitor input");
52
+ const allowed = new Set(["task", "everyMinutes", "stopWhen", "maxChecks", "checkTimeoutMinutes"]);
53
+ for (const field of Object.keys(value)) {
54
+ if (!allowed.has(field))
55
+ throw new Error(`monitor input field ${field} is not supported`);
56
+ }
41
57
  const task = requireBoundedString(value.task, "task", 8_000);
42
- if (typeof value.everyMinutes !== "number" ||
43
- !Number.isInteger(value.everyMinutes) ||
44
- value.everyMinutes < MIN_INTERVAL_MINUTES ||
45
- value.everyMinutes > MAX_INTERVAL_MINUTES) {
58
+ const everyMinutes = value.everyMinutes ?? DEFAULT_INTERVAL_MINUTES;
59
+ if (!Number.isInteger(everyMinutes) ||
60
+ everyMinutes < MIN_INTERVAL_MINUTES ||
61
+ everyMinutes > MAX_INTERVAL_MINUTES) {
46
62
  throw new Error(`everyMinutes must be an integer from ${MIN_INTERVAL_MINUTES} through ${MAX_INTERVAL_MINUTES}`);
47
63
  }
48
64
  const maxChecks = value.maxChecks ?? DEFAULT_MAX_CHECKS;
49
65
  if (!Number.isInteger(maxChecks) || maxChecks <= 0 || maxChecks > MAX_CHECKS) {
50
66
  throw new Error(`maxChecks must be an integer from 1 through ${MAX_CHECKS}`);
51
67
  }
52
- const checkTimeoutMinutes = value.checkTimeoutMinutes ?? Math.max(DEFAULT_MIN_CHECK_TIMEOUT_MINUTES, value.everyMinutes);
68
+ const checkTimeoutMinutes = value.checkTimeoutMinutes ?? Math.max(DEFAULT_MIN_CHECK_TIMEOUT_MINUTES, everyMinutes);
53
69
  if (!Number.isInteger(checkTimeoutMinutes) ||
54
70
  checkTimeoutMinutes < MIN_CHECK_TIMEOUT_MINUTES ||
55
71
  checkTimeoutMinutes > MAX_CHECK_TIMEOUT_MINUTES) {
@@ -57,12 +73,9 @@ function prepareInput(input) {
57
73
  }
58
74
  return {
59
75
  task,
60
- everyMinutes: value.everyMinutes,
61
- reportWhen: value.reportWhen === undefined
62
- ? "The observed state changes materially or needs the user's attention."
63
- : requireBoundedString(value.reportWhen, "reportWhen", 4_000),
76
+ everyMinutes,
64
77
  stopWhen: value.stopWhen === undefined
65
- ? "The user cancels the monitor or it reaches its maximum check count."
78
+ ? "Stop only when the user explicitly asks to stop."
66
79
  : requireBoundedString(value.stopWhen, "stopWhen", 4_000),
67
80
  maxChecks,
68
81
  checkTimeoutMinutes,
@@ -71,119 +84,190 @@ function prepareInput(input) {
71
84
  function configFrom(outputs) {
72
85
  return outputs.prepare;
73
86
  }
74
- function agentTimeoutMs({ outputs }) {
75
- return configFrom(outputs).checkTimeoutMinutes * 60_000;
76
- }
77
87
  function completedChecks(context) {
78
88
  return context.state.steps.filter((step) => step.nodeId === "check" && step.outcome === "ok")
79
89
  .length;
80
90
  }
81
- function validateCheck(output) {
91
+ export function validateMonitorCheck(output) {
82
92
  const value = requireRecord(output, "monitor check output");
83
- if (typeof value.route !== "string" || !MONITOR_ROUTES.has(value.route)) {
84
- throw new Error(`route must be one of ${[...MONITOR_ROUTES].join(", ")}`);
85
- }
86
- const route = value.route;
87
- const observation = requireBoundedString(value.observation, "observation", MAX_OBSERVATION_CHARS);
88
- const reason = requireBoundedString(value.reason, "reason", MAX_REASON_CHARS);
89
- const reports = route === "continue_report" || route === "stop_report";
90
- const report = value.report === undefined
91
- ? undefined
92
- : requireBoundedString(value.report, "report", MAX_REPORT_CHARS);
93
- if (reports && report === undefined) {
94
- throw new Error(`route ${route} requires a report`);
93
+ const allowed = new Set(["route", "observation", "report", "progress", "reason"]);
94
+ for (const key of Object.keys(value))
95
+ if (!allowed.has(key))
96
+ throw new Error(`monitor check field ${key} is not supported`);
97
+ if (value.route !== "continue" && value.route !== "stop")
98
+ throw new Error("route must be continue or stop");
99
+ const check = {
100
+ route: value.route,
101
+ observation: requireBoundedString(value.observation, "observation", MAX_OBSERVATION_CHARS),
102
+ report: requireBoundedString(value.report, "report", MAX_REPORT_CHARS),
103
+ reason: requireBoundedString(value.reason, "reason", MAX_REASON_CHARS),
104
+ };
105
+ if (value.progress !== undefined)
106
+ check.progress = validateMonitorProgress(value.progress);
107
+ return check;
108
+ }
109
+ function validateMonitorProgress(input) {
110
+ const value = requireRecord(input, "progress");
111
+ if (Object.keys(value).some((key) => key !== "tracks"))
112
+ throw new Error("progress only supports tracks");
113
+ if (!Array.isArray(value.tracks) || value.tracks.length < 1 || value.tracks.length > MAX_TRACKS) {
114
+ throw new Error(`progress.tracks must contain 1 through ${MAX_TRACKS} entries`);
95
115
  }
116
+ const keys = new Set();
117
+ const tracks = value.tracks.map((raw, index) => {
118
+ const track = requireRecord(raw, `progress.tracks[${index}]`);
119
+ if (Object.keys(track).some((key) => key !== "key" && key !== "data")) {
120
+ throw new Error(`progress.tracks[${index}] has an unsupported field`);
121
+ }
122
+ const key = requireBoundedString(track.key, `progress.tracks[${index}].key`, 128);
123
+ if (!/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/.test(key))
124
+ throw new Error(`progress.tracks[${index}].key is invalid`);
125
+ if (keys.has(key))
126
+ throw new Error(`progress track key ${key} is duplicated`);
127
+ keys.add(key);
128
+ return {
129
+ key,
130
+ data: validateProgressData(requireRecord(track.data, `progress.tracks[${index}].data`)),
131
+ };
132
+ });
133
+ return { tracks };
134
+ }
135
+ function estimateTracks(outputs) {
136
+ const check = outputs.check;
137
+ if (check.progress === undefined)
138
+ return { tracks: [] };
139
+ const previous = outputs.estimate;
140
+ const previousByKey = new Map((previous?.tracks ?? []).map((track) => [track.key, track]));
141
+ const at = new Date().toISOString();
96
142
  return {
97
- route,
98
- observation,
99
- ...(report !== undefined ? { report } : {}),
100
- reason,
143
+ tracks: check.progress.tracks.map((track) => {
144
+ const samples = [
145
+ ...(previousByKey.get(track.key)?.samples ?? []),
146
+ { at, data: track.data },
147
+ ].slice(-9);
148
+ return { key: track.key, samples, estimate: estimateProgress(track.key, samples) };
149
+ }),
101
150
  };
102
151
  }
103
- function reportMessage(outputs) {
104
- const check = outputs.check;
105
- return check.report ?? check.observation;
152
+ function reportMessage(context) {
153
+ const check = context.outputs.check;
154
+ const estimate = context.outputs.estimate;
155
+ const config = configFrom(context.outputs);
156
+ const suffix = [];
157
+ if (estimate.tracks.length > 0) {
158
+ suffix.push(formatProgressReport(estimate.tracks.map((track) => track.estimate), check.route === "continue" ? config.everyMinutes : undefined, new Date(), 2_000));
159
+ }
160
+ if (check.route === "continue" && completedChecks(context) >= config.maxChecks) {
161
+ suffix.push(`Reached the ${config.maxChecks}-check safety limit.`);
162
+ }
163
+ const suffixText = suffix.filter(Boolean).join("\n");
164
+ if (suffixText.length === 0)
165
+ return check.report;
166
+ const reportBudget = Math.max(1, MAX_REPORT_CHARS - suffixText.length - 1);
167
+ const report = check.report.length <= reportBudget
168
+ ? check.report
169
+ : `${check.report.slice(0, Math.max(0, reportBudget - 1))}…`;
170
+ return `${report}\n${suffixText}`;
106
171
  }
107
- export default defineWorkflow({
172
+ const monitorWorkflow = defineWorkflow({
108
173
  name: "monitor",
109
174
  title: ({ input }) => {
110
175
  try {
111
- const task = prepareInput(input).task;
112
- return `monitor: ${task.slice(0, 80)}`;
176
+ return `monitor: ${prepareMonitorInput(input).task.slice(0, 80)}`;
113
177
  }
114
178
  catch {
115
179
  return "monitor";
116
180
  }
117
181
  },
118
- presentationPrompt: ({ finalOutput }) => {
119
- const result = requireRecord(finalOutput, "monitor result");
120
- if (result.reported === true) {
121
- return undefined;
122
- }
123
- return `Tell the user concisely why this monitor stopped: ${String(result.reason ?? "monitor ended")}`;
124
- },
125
182
  startAt: "prepare",
126
- maxSteps: 5_010,
183
+ maxSteps: 9_010,
127
184
  nodes: {
128
- prepare: compute({
129
- run: ({ input }) => prepareInput(input),
130
- }),
131
- guard: compute({
132
- run: (context) => {
133
- const config = configFrom(context.outputs);
134
- const checks = completedChecks(context);
135
- return checks >= config.maxChecks
136
- ? { route: "stop", checks, reason: `Reached the ${config.maxChecks}-check limit.` }
137
- : { route: "check", checks };
138
- },
139
- }),
140
- continue_guard: compute({
141
- run: (context) => {
142
- const config = configFrom(context.outputs);
143
- const checks = completedChecks(context);
144
- return checks >= config.maxChecks
145
- ? { route: "stop", checks, reason: `Reached the ${config.maxChecks}-check limit.` }
146
- : { route: "sleep", checks };
147
- },
148
- }),
185
+ prepare: compute({ run: ({ input }) => prepareMonitorInput(input) }),
149
186
  check: agent({
150
187
  statusDetail: "checking monitored target",
151
- timeoutMs: agentTimeoutMs,
188
+ timeoutMs: ({ outputs }) => configFrom(outputs).checkTimeoutMinutes * 60_000,
152
189
  prompt: (context) => {
153
190
  const config = configFrom(context.outputs);
154
191
  const previous = context.outputs.check;
155
- const checkNumber = completedChecks(context) + 1;
192
+ const priorEstimate = context.outputs.estimate;
156
193
  return [
157
- `Perform monitoring check ${checkNumber} of at most ${config.maxChecks}.`,
194
+ `Perform monitoring check ${completedChecks(context) + 1} of at most ${config.maxChecks}.`,
158
195
  `Task: ${config.task}`,
159
- `Report when: ${config.reportWhen}`,
160
196
  `Stop when: ${config.stopWhen}`,
161
197
  previous === undefined
162
- ? "There is no previous observation. Report the initial state only when the report condition calls for it."
198
+ ? "There is no previous observation."
163
199
  : `Previous accepted observation: ${previous.observation}`,
164
- "Use available tools to inspect the current state. Observe only unless the task explicitly authorizes a mutation.",
165
- "Choose continue_quiet, continue_report, stop_quiet, or stop_report. A report route requires concise report text.",
200
+ priorEstimate?.tracks.length
201
+ ? `Previous progress: ${formatProgressReport(priorEstimate.tracks.map((track) => track.estimate))}`
202
+ : "There is no previous measured progress.",
203
+ "Use available tools to inspect the current source of truth. Observe only unless the task explicitly authorizes a mutation.",
204
+ "Every accepted check must include a concise user-facing report. Add progress tracks only when the target provides measurable facts. Submit observed counts and target-provided finish times; do not invent rates or an ETA.",
205
+ "Choose route continue or stop.",
166
206
  ].join("\n\n");
167
207
  },
168
- expectedOutput: '{ "route": "continue_quiet" | "continue_report" | "stop_quiet" | "stop_report", "observation": "current factual state", "report": "required for report routes", "reason": "short reason" }',
169
- validate: (output) => validateCheck(output),
208
+ expectedOutput: '{ "route": "continue" | "stop", "observation": "current factual state", "report": "concise status update", "progress": { "tracks": [{ "key": "stable-key", "data": { "schema": "pi-workflows.progress.v1", "status": "running", "completed": 1, "total": 2, "unit": "items" } }] } (optional), "reason": "short reason" }',
209
+ validate: (output) => validateMonitorCheck(output),
210
+ }),
211
+ estimate: compute({ run: ({ outputs }) => estimateTracks(outputs) }),
212
+ publish_progress: action({
213
+ statusDetail: "publishing monitor progress",
214
+ run: async ({ outputs, publishUpdate, signal }) => {
215
+ const check = outputs.check;
216
+ if (check.progress === undefined)
217
+ return { published: 0 };
218
+ for (const track of check.progress.tracks) {
219
+ await waitForUpdateSlot(signal);
220
+ await publishUpdate({ type: "progress", key: track.key, data: track.data });
221
+ }
222
+ return { published: check.progress.tracks.length };
223
+ },
170
224
  }),
171
- report_continue: notify({
225
+ report: notify({
172
226
  statusDetail: "queueing monitor update",
173
- message: ({ outputs }) => reportMessage(outputs),
227
+ message: (context) => reportMessage(context),
174
228
  kind: "progress",
175
229
  }),
176
- report_stop: notify({
177
- statusDetail: "queueing final monitor update",
178
- message: ({ outputs }) => reportMessage(outputs),
179
- kind: "final",
230
+ decide: compute({
231
+ run: (context) => {
232
+ const check = context.outputs.check;
233
+ const config = configFrom(context.outputs);
234
+ const checks = completedChecks(context);
235
+ if (check.route === "stop")
236
+ return { route: "stop", reason: check.reason, checks };
237
+ if (checks >= config.maxChecks) {
238
+ return {
239
+ route: "stop",
240
+ reason: `Reached the ${config.maxChecks}-check safety limit.`,
241
+ checks,
242
+ };
243
+ }
244
+ return { route: "continue", reason: check.reason, checks };
245
+ },
246
+ }),
247
+ schedule: action({
248
+ statusDetail: "scheduling next monitor check",
249
+ run: async ({ outputs, publishUpdate }) => {
250
+ const config = configFrom(outputs);
251
+ const lastCheckAt = new Date().toISOString();
252
+ const nextCheckAt = new Date(Date.parse(lastCheckAt) + config.everyMinutes * 60_000).toISOString();
253
+ await publishUpdate({
254
+ type: "monitor.schedule",
255
+ key: "next-check",
256
+ data: {
257
+ schema: "pi-workflows.monitor-schedule.v1",
258
+ lastCheckAt,
259
+ nextCheckAt,
260
+ everyMinutes: config.everyMinutes,
261
+ },
262
+ });
263
+ return { lastCheckAt, nextCheckAt, everyMinutes: config.everyMinutes };
264
+ },
180
265
  }),
181
266
  sleep: shell({
182
267
  statusDetail: "waiting for next monitor check",
183
268
  timeoutMs: MAX_INTERVAL_MINUTES * 60_000 + NODE_TIMEOUT_MARGIN_MS,
184
269
  exec: ({ outputs }) => {
185
- const config = configFrom(outputs);
186
- const sleepMs = config.everyMinutes * 60_000;
270
+ const sleepMs = configFrom(outputs).everyMinutes * 60_000;
187
271
  return {
188
272
  command: process.execPath,
189
273
  args: ["-e", "setTimeout(() => {}, Number(process.argv[1]))", String(sleepMs)],
@@ -196,39 +280,26 @@ export default defineWorkflow({
196
280
  finish: compute({
197
281
  run: ({ outputs }) => {
198
282
  const check = outputs.check;
199
- const guard = outputs.guard;
200
- const continueGuard = outputs.continue_guard;
283
+ const decision = outputs.decide;
201
284
  return {
202
- reason: continueGuard?.reason ?? guard?.reason ?? check?.reason ?? "Monitor finished.",
203
- observation: check?.observation ?? null,
204
- reported: outputs.report_stop !== undefined ||
205
- (check !== undefined && check.route === "stop_report"),
285
+ reason: decision?.reason ?? check.reason,
286
+ observation: check.observation,
287
+ checks: decision?.checks ?? 1,
288
+ reported: true,
206
289
  };
207
290
  },
208
291
  }),
209
292
  },
210
293
  edges: [
211
- { from: "prepare", to: "guard" },
212
- { from: "guard", switch: { on: "$.route", cases: { check: "check", stop: "finish" } } },
213
- {
214
- from: "check",
215
- switch: {
216
- on: "$.route",
217
- cases: {
218
- continue_quiet: "continue_guard",
219
- continue_report: "report_continue",
220
- stop_quiet: "finish",
221
- stop_report: "report_stop",
222
- },
223
- },
224
- },
225
- { from: "report_continue", to: "continue_guard" },
226
- { from: "report_stop", to: "finish" },
227
- {
228
- from: "continue_guard",
229
- switch: { on: "$.route", cases: { sleep: "sleep", stop: "finish" } },
230
- },
231
- { from: "sleep", to: "guard" },
294
+ { from: "prepare", to: "check" },
295
+ { from: "check", to: "estimate" },
296
+ { from: "estimate", to: "publish_progress" },
297
+ { from: "publish_progress", to: "report" },
298
+ { from: "report", to: "decide" },
299
+ { from: "decide", switch: { on: "$.route", cases: { stop: "finish", continue: "schedule" } } },
300
+ { from: "schedule", to: "sleep" },
301
+ { from: "sleep", to: "check" },
232
302
  ],
233
303
  });
304
+ export default monitorWorkflow;
234
305
  //# sourceMappingURL=monitor.workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.workflow.js","sourceRoot":"","sources":["../../src/builtins/monitor.workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor.workflow.js","sourceRoot":"","sources":["../../src/builtins/monitor.workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GAGrB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,CAAC;AAC1C,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAC7C,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,UAAU,GAAG,KAAK,CAAC;AACzB,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAC;AAsB1C,SAAS,aAAa,CAAC,KAAc,EAAE,KAAa;IAClD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc,EAAE,KAAa,EAAE,QAAgB;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,QAAQ,aAAa,CAAC,CAAC;IAClG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAmB;IAClD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;;YACzB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,eAAe,CAA0B,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAClG,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,mBAAmB,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,wBAAwB,CAAC;IACpE,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;QAC/B,YAAY,GAAG,oBAAoB;QACnC,YAAY,GAAG,oBAAoB,EACnC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wCAAwC,oBAAoB,YAAY,oBAAoB,EAAE,CAC/F,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,+CAA+C,UAAU,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,mBAAmB,GACvB,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,GAAG,CAAC,iCAAiC,EAAE,YAAY,CAAC,CAAC;IACzF,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC;QACtC,mBAAmB,GAAG,yBAAyB;QAC/C,mBAAmB,GAAG,yBAAyB,EAC/C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,+CAA+C,yBAAyB,YAAY,yBAAyB,EAAE,CAChH,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,QAAQ,EACN,KAAK,CAAC,QAAQ,KAAK,SAAS;YAC1B,CAAC,CAAC,kDAAkD;YACpD,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;QAC7D,SAAS;QACT,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAgC;IAClD,OAAO,OAAO,CAAC,OAAwB,CAAC;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,OAA4B;IACnD,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;SAC1F,MAAM,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,mBAAmB,CAAC,CAAC;IACxF,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;QACtD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,MAAM,KAAK,GAAiB;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,qBAAqB,CAAC;QAC1F,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC;QACtE,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC;KACvE,CAAC;IACF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;QAChG,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,UAAU,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,mBAAmB,KAAK,GAAG,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,4BAA4B,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,EAAE,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,kBAAkB,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;QAC9E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO;YACL,GAAG;YACH,IAAI,EAAE,oBAAoB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,KAAK,QAAQ,CAAC,CAAC;SACxF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CAAC,OAAgC;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAqB,CAAC;IAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAuC,CAAC;IACjE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAqB;gBAChC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;gBAChD,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;aACzB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACZ,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QACrF,CAAC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAA4B;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAqB,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAA2B,CAAC;IAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CACT,oBAAoB,CAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC9C,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAC5D,IAAI,IAAI,EAAE,EACV,KAAK,CACN,CACF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/E,MAAM,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,SAAS,sBAAsB,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,YAAY;QACjC,CAAC,CAAC,KAAK,CAAC,MAAM;QACd,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACjE,OAAO,GAAG,MAAM,KAAK,UAAU,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,eAAe,GAAuB,cAAc,CAAC;IACzD,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,OAAO,YAAY,mBAAmB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,KAAK,EAAE,KAAK,CAAC;YACX,YAAY,EAAE,2BAA2B;YACzC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,mBAAmB,GAAG,MAAM;YAC5E,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;gBAClB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAiC,CAAC;gBACnE,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,QAAuC,CAAC;gBAC9E,OAAO;oBACL,4BAA4B,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,GAAG;oBAC1F,SAAS,MAAM,CAAC,IAAI,EAAE;oBACtB,cAAc,MAAM,CAAC,QAAQ,EAAE;oBAC/B,QAAQ,KAAK,SAAS;wBACpB,CAAC,CAAC,mCAAmC;wBACrC,CAAC,CAAC,kCAAkC,QAAQ,CAAC,WAAW,EAAE;oBAC5D,aAAa,EAAE,MAAM,CAAC,MAAM;wBAC1B,CAAC,CAAC,sBAAsB,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;wBACnG,CAAC,CAAC,yCAAyC;oBAC7C,4HAA4H;oBAC5H,6NAA6N;oBAC7N,gCAAgC;iBACjC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjB,CAAC;YACD,cAAc,EACZ,2TAA2T;YAC7T,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;SACnD,CAAC;QACF,QAAQ,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,gBAAgB,EAAE,MAAM,CAAC;YACvB,YAAY,EAAE,6BAA6B;YAC3C,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;gBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAqB,CAAC;gBAC5C,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;oBAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAC1D,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAC1C,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBAChC,MAAM,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9E,CAAC;gBACD,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrD,CAAC;SACF,CAAC;QACF,MAAM,EAAE,MAAM,CAAC;YACb,YAAY,EAAE,yBAAyB;YACvC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;YAC5C,IAAI,EAAE,UAAU;SACjB,CAAC;QACF,MAAM,EAAE,OAAO,CAAC;YACd,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;gBACf,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAqB,CAAC;gBACpD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACxC,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;oBAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnF,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC/B,OAAO;wBACL,KAAK,EAAE,MAAM;wBACb,MAAM,EAAE,eAAe,MAAM,CAAC,SAAS,sBAAsB;wBAC7D,MAAM;qBACP,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC7D,CAAC;SACF,CAAC;QACF,QAAQ,EAAE,MAAM,CAAC;YACf,YAAY,EAAE,+BAA+B;YAC7C,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE;gBACxC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,IAAI,IAAI,CAC1B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CACvD,CAAC,WAAW,EAAE,CAAC;gBAChB,MAAM,aAAa,CAAC;oBAClB,IAAI,EAAE,kBAAkB;oBACxB,GAAG,EAAE,YAAY;oBACjB,IAAI,EAAE;wBACJ,MAAM,EAAE,kCAAkC;wBAC1C,WAAW;wBACX,WAAW;wBACX,YAAY,EAAE,MAAM,CAAC,YAAY;qBAClC;iBACF,CAAC,CAAC;gBACH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;YACzE,CAAC;SACF,CAAC;QACF,KAAK,EAAE,KAAK,CAAC;YACX,YAAY,EAAE,gCAAgC;YAC9C,SAAS,EAAE,oBAAoB,GAAG,MAAM,GAAG,sBAAsB;YACjE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBACpB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,GAAG,MAAM,CAAC;gBAC1D,OAAO;oBACL,OAAO,EAAE,OAAO,CAAC,QAAQ;oBACzB,IAAI,EAAE,CAAC,IAAI,EAAE,+CAA+C,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC9E,SAAS,EAAE,OAAO,GAAG,uBAAuB;oBAC5C,cAAc,EAAE,KAAK;iBACtB,CAAC;YACJ,CAAC;YACD,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC;SACvF,CAAC;QACF,MAAM,EAAE,OAAO,CAAC;YACd,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBACnB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAqB,CAAC;gBAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAA0D,CAAC;gBACpF,OAAO;oBACL,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM;oBACxC,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;oBAC7B,QAAQ,EAAE,IAAI;iBACf,CAAC;YACJ,CAAC;SACF,CAAC;KACH;IACD,KAAK,EAAE;QACL,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE;QAChC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE;QACjC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,kBAAkB,EAAE;QAC5C,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,QAAQ,EAAE;QAC1C,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;QAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9F,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE;QACjC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;KAC/B;CACF,CAAC,CAAC;AAEH,eAAe,eAAe,CAAC"}
@@ -6,8 +6,12 @@ export type SubmissionResult = {
6
6
  accepted: false;
7
7
  message: string;
8
8
  };
9
+ export type PromptDeliveryKind = "step" | "reminder" | "resume";
9
10
  export type PromptDelivery = {
10
11
  prompt: string;
12
+ contract: AgentStepRequest["contract"];
13
+ presentation?: AgentStepRequest["presentation"];
14
+ kind: PromptDeliveryKind;
11
15
  /** True when the agent is known to be mid-run, so delivery must be queued. */
12
16
  streaming: boolean;
13
17
  };
@@ -33,8 +37,8 @@ export type ConversationStepExecutorOptions = {
33
37
  };
34
38
  /**
35
39
  * AgentStepExecutor that runs steps inside the current pi conversation. The
36
- * engine hands it a prompt; it delivers the prompt as a user message and
37
- * resolves once the model submits an accepted output through the `workflow`
40
+ * engine hands it a prompt; it delivers the prompt as a model-facing workflow
41
+ * message and resolves once the model submits an accepted output through the `workflow`
38
42
  * tool. If the agent settles without submitting, it nudges the model a
39
43
  * bounded number of times before failing the step.
40
44
  */
@@ -70,5 +74,6 @@ export declare class ConversationStepExecutor implements AgentStepExecutor {
70
74
  * budget is exhausted.
71
75
  */
72
76
  handleAgentSettled(): boolean;
77
+ private delivery;
73
78
  private clearPending;
74
79
  }