@osolmaz/pi-workflows 0.9.1 → 0.11.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 (147) hide show
  1. package/README.md +64 -19
  2. package/dist/builtins/autodoc.workflow.d.ts +58 -0
  3. package/dist/builtins/autodoc.workflow.js +266 -0
  4. package/dist/builtins/autodoc.workflow.js.map +1 -0
  5. package/dist/builtins/autoimplement.workflow.d.ts +353 -0
  6. package/dist/builtins/autoimplement.workflow.js +961 -0
  7. package/dist/builtins/autoimplement.workflow.js.map +1 -0
  8. package/dist/builtins/autoplan.workflow.d.ts +58 -0
  9. package/dist/builtins/autoplan.workflow.js +190 -0
  10. package/dist/builtins/autoplan.workflow.js.map +1 -0
  11. package/dist/builtins/catalog.js +9 -1
  12. package/dist/builtins/catalog.js.map +1 -1
  13. package/dist/builtins/index.d.ts +6 -0
  14. package/dist/builtins/index.js +7 -0
  15. package/dist/builtins/index.js.map +1 -0
  16. package/dist/builtins/monitor.workflow.d.ts +29 -3
  17. package/dist/builtins/monitor.workflow.js +325 -13
  18. package/dist/builtins/monitor.workflow.js.map +1 -1
  19. package/dist/builtins/plan-approval.workflow.d.ts +83 -0
  20. package/dist/builtins/plan-approval.workflow.js +148 -0
  21. package/dist/builtins/plan-approval.workflow.js.map +1 -0
  22. package/dist/builtins/plan-presentation.d.ts +7 -0
  23. package/dist/builtins/plan-presentation.js +44 -0
  24. package/dist/builtins/plan-presentation.js.map +1 -0
  25. package/dist/extension/decision-channels.d.ts +132 -0
  26. package/dist/extension/decision-channels.js +1082 -0
  27. package/dist/extension/decision-channels.js.map +1 -0
  28. package/dist/extension/index.d.ts +1 -0
  29. package/dist/extension/index.js +426 -11
  30. package/dist/extension/index.js.map +1 -1
  31. package/dist/extension/widget.js +26 -2
  32. package/dist/extension/widget.js.map +1 -1
  33. package/dist/extension/workflow-tool.d.ts +1 -37
  34. package/dist/extension/workflow-tool.js +1 -42
  35. package/dist/extension/workflow-tool.js.map +1 -1
  36. package/dist/host/rpc-bridge.js +4 -21
  37. package/dist/host/rpc-bridge.js.map +1 -1
  38. package/dist/render/graph-render.js +46 -10
  39. package/dist/render/graph-render.js.map +1 -1
  40. package/dist/viewer/render.js +36 -2
  41. package/dist/viewer/render.js.map +1 -1
  42. package/dist/workflows/catalog.d.ts +1 -0
  43. package/dist/workflows/catalog.js +6 -0
  44. package/dist/workflows/catalog.js.map +1 -1
  45. package/dist/workflows/composition.d.ts +45 -0
  46. package/dist/workflows/composition.js +485 -0
  47. package/dist/workflows/composition.js.map +1 -0
  48. package/dist/workflows/decision-presentation.d.ts +18 -0
  49. package/dist/workflows/decision-presentation.js +417 -0
  50. package/dist/workflows/decision-presentation.js.map +1 -0
  51. package/dist/workflows/decision.d.ts +11 -5
  52. package/dist/workflows/decision.js.map +1 -1
  53. package/dist/workflows/definition.d.ts +22 -3
  54. package/dist/workflows/definition.js +46 -3
  55. package/dist/workflows/definition.js.map +1 -1
  56. package/dist/workflows/engine.d.ts +2 -1
  57. package/dist/workflows/engine.js +199 -18
  58. package/dist/workflows/engine.js.map +1 -1
  59. package/dist/workflows/graph.js +8 -6
  60. package/dist/workflows/graph.js.map +1 -1
  61. package/dist/workflows/human-decision.d.ts +87 -0
  62. package/dist/workflows/human-decision.js +583 -0
  63. package/dist/workflows/human-decision.js.map +1 -0
  64. package/dist/workflows/index.d.ts +5 -2
  65. package/dist/workflows/index.js +4 -1
  66. package/dist/workflows/index.js.map +1 -1
  67. package/dist/workflows/loader.d.ts +5 -4
  68. package/dist/workflows/loader.js +118 -18
  69. package/dist/workflows/loader.js.map +1 -1
  70. package/dist/workflows/schema.d.ts +3 -1
  71. package/dist/workflows/schema.js +64 -2
  72. package/dist/workflows/schema.js.map +1 -1
  73. package/dist/workflows/store.js +39 -2
  74. package/dist/workflows/store.js.map +1 -1
  75. package/dist/workflows/tool-input.d.ts +72 -0
  76. package/dist/workflows/tool-input.js +141 -0
  77. package/dist/workflows/tool-input.js.map +1 -0
  78. package/dist/workflows/types.d.ts +300 -2
  79. package/docs/CONTROLLERS.md +1 -1
  80. package/docs/DESIGN_PHILOSOPHY.md +1 -1
  81. package/docs/HUMAN_DECISIONS.md +371 -0
  82. package/docs/HUMAN_DECISION_PRESENTATIONS.md +323 -0
  83. package/docs/MONITOR.md +46 -18
  84. package/docs/WORKFLOW_COMPOSITION.md +333 -0
  85. package/docs/plans/2026-08-19-human-decision-gates-plan.md +296 -0
  86. package/docs/plans/2026-08-19-human-decision-presentations-plan.md +172 -0
  87. package/docs/plans/2026-08-19-provider-compatible-workflow-tool-schema-plan.md +45 -0
  88. package/docs/plans/2026-08-19-workflow-composition-plan.md +308 -0
  89. package/docs/run-bundles.md +45 -10
  90. package/docs/workflows.md +106 -15
  91. package/examples/workflows/approved-plan.workflow.ts +58 -0
  92. package/examples/workflows/autoimplement.workflow.ts +1 -92
  93. package/examples/workflows/autoplan.workflow.ts +1 -0
  94. package/examples/workflows/human-decision.workflow.ts +62 -0
  95. package/herdr-plugin.toml +1 -1
  96. package/package.json +6 -1
  97. package/schemas/decision-presentation-v1.schema.json +83 -0
  98. package/schemas/human-decision-accepted-v1.schema.json +44 -0
  99. package/schemas/human-decision-accepted-v2.schema.json +50 -0
  100. package/schemas/human-decision-answer-attempt-v1.schema.json +37 -0
  101. package/schemas/human-decision-cancellation-v1.schema.json +15 -0
  102. package/schemas/human-decision-continuation-v1.schema.json +16 -0
  103. package/schemas/human-decision-delivery-v1.schema.json +28 -0
  104. package/schemas/human-decision-delivery-v2.schema.json +36 -0
  105. package/schemas/human-decision-receipt-v1.schema.json +33 -0
  106. package/schemas/human-decision-receipt-v2.schema.json +39 -0
  107. package/schemas/human-decision-request-v1.schema.json +59 -0
  108. package/schemas/human-decision-request-v2.schema.json +69 -0
  109. package/schemas/human-decision-resolution-v1.schema.json +27 -0
  110. package/schemas/human-decision-resolution-v2.schema.json +27 -0
  111. package/schemas/human-decision-settlement-v1.schema.json +28 -0
  112. package/skills/autodoc/SKILL.md +43 -0
  113. package/skills/autoimplement/SKILL.md +58 -0
  114. package/skills/autoimplement/agents/openai.yaml +4 -0
  115. package/skills/autoplan/SKILL.md +25 -0
  116. package/skills/monitor/SKILL.md +8 -1
  117. package/skills/pi-workflows/SKILL.md +5 -3
  118. package/src/builtins/autodoc.workflow.ts +325 -0
  119. package/src/builtins/autoimplement.workflow.ts +1123 -0
  120. package/src/builtins/autoplan.workflow.ts +231 -0
  121. package/src/builtins/catalog.ts +9 -1
  122. package/src/builtins/index.ts +32 -0
  123. package/src/builtins/monitor.workflow.ts +396 -15
  124. package/src/builtins/plan-approval.workflow.ts +190 -0
  125. package/src/builtins/plan-presentation.ts +57 -0
  126. package/src/extension/decision-channels.ts +1533 -0
  127. package/src/extension/index.ts +499 -9
  128. package/src/extension/widget.ts +39 -2
  129. package/src/extension/workflow-tool.ts +5 -81
  130. package/src/host/rpc-bridge.ts +7 -30
  131. package/src/render/graph-render.ts +54 -5
  132. package/src/viewer/render.ts +56 -3
  133. package/src/workflows/catalog.ts +7 -0
  134. package/src/workflows/composition.ts +642 -0
  135. package/src/workflows/decision-presentation.ts +501 -0
  136. package/src/workflows/decision.ts +12 -5
  137. package/src/workflows/definition.ts +118 -8
  138. package/src/workflows/engine.ts +257 -20
  139. package/src/workflows/graph.ts +8 -6
  140. package/src/workflows/human-decision.ts +819 -0
  141. package/src/workflows/index.ts +89 -0
  142. package/src/workflows/loader.ts +186 -18
  143. package/src/workflows/schema.ts +79 -2
  144. package/src/workflows/store.ts +45 -2
  145. package/src/workflows/tool-input.ts +202 -0
  146. package/src/workflows/types.ts +374 -2
  147. package/examples/workflows/elegant-solution.workflow.ts +0 -95
@@ -0,0 +1,417 @@
1
+ import { createHash } from "node:crypto";
2
+ export const MAX_PRESENTATION_CODE_UNITS = 64_000;
3
+ export const MAX_PRESENTATION_BLOCKS = 256;
4
+ export const MAX_PRESENTATION_ITEMS = 256;
5
+ export const MAX_PRESENTATION_STRING_CODE_UNITS = 16_000;
6
+ export const MAX_PRESENTATION_TRANSPORT_PARTS = 20;
7
+ export function normalizeDecisionPresentation(value) {
8
+ const presentation = requireRecord(value, "Decision presentation");
9
+ requireExactKeys(presentation, ["schema", "summary", "blocks"], "Decision presentation");
10
+ if (presentation.schema !== "pi-workflows.decision-presentation.v1") {
11
+ throw new Error("Decision presentation schema must be pi-workflows.decision-presentation.v1");
12
+ }
13
+ const summary = normalizeDisplayString(presentation.summary, "Decision presentation summary");
14
+ if (!Array.isArray(presentation.blocks)) {
15
+ throw new Error("Decision presentation blocks must be an array");
16
+ }
17
+ if (presentation.blocks.length > MAX_PRESENTATION_BLOCKS) {
18
+ throw new Error(`Decision presentation has ${presentation.blocks.length} blocks; limit is ${MAX_PRESENTATION_BLOCKS}`);
19
+ }
20
+ const blocks = presentation.blocks.map((block, index) => normalizeBlock(block, `Decision presentation block ${index + 1}`));
21
+ const normalized = {
22
+ schema: "pi-workflows.decision-presentation.v1",
23
+ summary,
24
+ blocks,
25
+ };
26
+ const codeUnits = presentationCodeUnits(normalized);
27
+ if (codeUnits > MAX_PRESENTATION_CODE_UNITS) {
28
+ throw new Error(`Decision presentation has ${codeUnits} UTF-16 code units; limit is ${MAX_PRESENTATION_CODE_UNITS}`);
29
+ }
30
+ return normalized;
31
+ }
32
+ export function decisionPresentationDigest(presentation) {
33
+ return digestCanonical(normalizeDecisionPresentation(presentation));
34
+ }
35
+ export function validateHumanDecisionRequestIntegrity(request) {
36
+ if (request.schema === "pi-workflows.human-decision-request.v1")
37
+ return request;
38
+ const presentation = normalizeDecisionPresentation(request.presentation);
39
+ const subjectDigest = digestCanonical(request.subject);
40
+ const presentationDigest = digestCanonical(presentation);
41
+ const requestDigest = digestCanonical({
42
+ schema: request.schema,
43
+ runId: request.runId,
44
+ workflowName: request.workflowName,
45
+ nodeId: request.nodeId,
46
+ attemptId: request.attemptId,
47
+ audience: request.audience,
48
+ title: request.title,
49
+ choices: request.choices,
50
+ ...(request.expiresAt !== undefined ? { expiresAt: request.expiresAt } : {}),
51
+ subject: request.subject,
52
+ presentation,
53
+ revision: request.revision,
54
+ });
55
+ if (subjectDigest !== request.subjectDigest) {
56
+ throw new Error("Human decision subject digest does not match its durable request");
57
+ }
58
+ if (presentationDigest !== request.presentationDigest) {
59
+ throw new Error("Human decision presentation digest does not match its durable request");
60
+ }
61
+ if (requestDigest !== request.requestDigest) {
62
+ throw new Error("Human decision request digest does not match its durable request");
63
+ }
64
+ return request;
65
+ }
66
+ export function humanDecisionChannelRequest(request) {
67
+ validateHumanDecisionRequestIntegrity(request);
68
+ const presentation = request.schema === "pi-workflows.human-decision-request.v2"
69
+ ? normalizeDecisionPresentation(request.presentation)
70
+ : legacyDecisionPresentation(request.body);
71
+ const presentationDigest = decisionPresentationDigest(presentation);
72
+ return {
73
+ schema: "pi-workflows.human-decision-channel-request.v1",
74
+ sourceSchema: request.schema,
75
+ decisionId: request.decisionId,
76
+ requestDigest: request.requestDigest,
77
+ runId: request.runId,
78
+ workflowName: request.workflowName,
79
+ nodeId: request.nodeId,
80
+ attemptId: request.attemptId,
81
+ audience: request.audience,
82
+ title: request.title,
83
+ presentation,
84
+ presentationDigest,
85
+ revision: request.schema === "pi-workflows.human-decision-request.v2" ? request.revision : 1,
86
+ choices: request.choices,
87
+ createdAt: request.createdAt,
88
+ ...(request.expiresAt !== undefined ? { expiresAt: request.expiresAt } : {}),
89
+ };
90
+ }
91
+ export function legacyDecisionPresentation(body) {
92
+ const blocks = [];
93
+ if (typeof body === "string") {
94
+ appendLegacyText(blocks, body, "Decision details");
95
+ }
96
+ else {
97
+ appendLegacyValue(blocks, body, undefined);
98
+ }
99
+ const summary = typeof body === "string"
100
+ ? "Review the decision message below."
101
+ : "Review the decision details below.";
102
+ return normalizeDecisionPresentation(boundLegacyPresentation(summary, blocks, body));
103
+ }
104
+ export function decisionDocumentSegments(request) {
105
+ const segments = [
106
+ { kind: "title", text: request.title },
107
+ { kind: "summary", text: request.presentation.summary },
108
+ ];
109
+ for (const block of request.presentation.blocks) {
110
+ if (block.kind === "paragraph")
111
+ segments.push({ kind: block.kind, text: block.text });
112
+ else if (block.kind === "section")
113
+ segments.push({ kind: block.kind, text: block.title });
114
+ else if (block.kind === "bullets") {
115
+ segments.push({ kind: block.kind, text: block.items.map((item) => `• ${item}`).join("\n") });
116
+ }
117
+ else if (block.kind === "fields") {
118
+ segments.push({
119
+ kind: block.kind,
120
+ text: block.items.map(({ label, value }) => `${label}: ${value}`).join("\n"),
121
+ });
122
+ }
123
+ else {
124
+ segments.push({ kind: block.kind, text: block.text });
125
+ }
126
+ }
127
+ const choices = Object.values(request.choices).map((choice) => choice.input === undefined
128
+ ? `• ${choice.label}`
129
+ : `• ${choice.label}\n ${choice.input.prompt}`);
130
+ segments.push({ kind: "choices", text: `Choices\n${choices.join("\n")}` });
131
+ return segments;
132
+ }
133
+ export function decisionPresentationFingerprint(request) {
134
+ return request.presentationDigest.slice("sha256:".length, "sha256:".length + 12);
135
+ }
136
+ export function digestCanonical(value) {
137
+ return `sha256:${createHash("sha256")
138
+ .update(`${canonicalJson(value)}\n`)
139
+ .digest("hex")}`;
140
+ }
141
+ function normalizeBlock(value, label) {
142
+ const block = requireRecord(value, label);
143
+ if (block.kind === "paragraph") {
144
+ requireExactKeys(block, ["kind", "text"], label);
145
+ return { kind: "paragraph", text: normalizeMultilineString(block.text, `${label} text`) };
146
+ }
147
+ if (block.kind === "section") {
148
+ requireExactKeys(block, ["kind", "title"], label);
149
+ return { kind: "section", title: normalizeDisplayString(block.title, `${label} title`) };
150
+ }
151
+ if (block.kind === "bullets") {
152
+ requireExactKeys(block, ["kind", "items"], label);
153
+ return {
154
+ kind: "bullets",
155
+ items: normalizeItems(block.items, `${label} items`, (item, itemLabel) => normalizeDisplayString(item, itemLabel)),
156
+ };
157
+ }
158
+ if (block.kind === "fields") {
159
+ requireExactKeys(block, ["kind", "items"], label);
160
+ return {
161
+ kind: "fields",
162
+ items: normalizeItems(block.items, `${label} items`, (item, itemLabel) => {
163
+ const field = requireRecord(item, itemLabel);
164
+ requireExactKeys(field, ["label", "value"], itemLabel);
165
+ return {
166
+ label: normalizeDisplayString(field.label, `${itemLabel} label`),
167
+ value: normalizeDisplayString(field.value, `${itemLabel} value`),
168
+ };
169
+ }),
170
+ };
171
+ }
172
+ if (block.kind === "preformatted") {
173
+ requireExactKeys(block, ["kind", "text"], label);
174
+ return { kind: "preformatted", text: normalizeMultilineString(block.text, `${label} text`) };
175
+ }
176
+ throw new Error(`${label} kind is not supported`);
177
+ }
178
+ function normalizeItems(value, label, normalize) {
179
+ if (!Array.isArray(value) || value.length === 0) {
180
+ throw new Error(`${label} must be a non-empty array`);
181
+ }
182
+ if (value.length > MAX_PRESENTATION_ITEMS) {
183
+ throw new Error(`${label} has ${value.length} items; limit is ${MAX_PRESENTATION_ITEMS}`);
184
+ }
185
+ return value.map((item, index) => normalize(item, `${label} item ${index + 1}`));
186
+ }
187
+ function normalizeDisplayString(value, label) {
188
+ const text = normalizeString(value, label);
189
+ if (hasControlCharacter(text, false)) {
190
+ throw new Error(`${label} contains a control character`);
191
+ }
192
+ return text;
193
+ }
194
+ function normalizeMultilineString(value, label) {
195
+ const text = normalizeString(value, label);
196
+ if (hasControlCharacter(text, true)) {
197
+ throw new Error(`${label} contains a terminal control character`);
198
+ }
199
+ return text;
200
+ }
201
+ function normalizeString(value, label) {
202
+ if (typeof value !== "string")
203
+ throw new Error(`${label} must be a string`);
204
+ const text = value.replaceAll("\r\n", "\n").replaceAll("\r", "\n").normalize("NFC");
205
+ if (text.trim().length === 0)
206
+ throw new Error(`${label} must not be empty`);
207
+ if (text.length > MAX_PRESENTATION_STRING_CODE_UNITS) {
208
+ throw new Error(`${label} has ${text.length} UTF-16 code units; limit is ${MAX_PRESENTATION_STRING_CODE_UNITS}`);
209
+ }
210
+ return text;
211
+ }
212
+ function boundLegacyPresentation(summary, blocks, body) {
213
+ const candidate = {
214
+ schema: "pi-workflows.decision-presentation.v1",
215
+ summary,
216
+ blocks,
217
+ };
218
+ if (blocks.length <= MAX_PRESENTATION_BLOCKS &&
219
+ blocks.every(legacyBlockFitsSchema) &&
220
+ presentationCodeUnits(candidate) <= MAX_PRESENTATION_CODE_UNITS) {
221
+ return candidate;
222
+ }
223
+ const originalCodeUnits = canonicalJson(body).length;
224
+ const omission = `Some legacy decision content is not shown because it exceeds the readable presentation limit. Inspect the durable v1 request before answering. Body digest: ${digestCanonical(body)}. Original body: ${originalCodeUnits} UTF-16 code units. Generated blocks: ${blocks.length}.`;
225
+ const budget = MAX_PRESENTATION_CODE_UNITS - summary.length - omission.length;
226
+ const kept = [];
227
+ let used = 0;
228
+ let omitted = false;
229
+ for (const block of blocks) {
230
+ const units = presentationBlockCodeUnits(block);
231
+ if (kept.length >= MAX_PRESENTATION_BLOCKS ||
232
+ !legacyBlockFitsSchema(block) ||
233
+ used + units > budget) {
234
+ omitted = true;
235
+ continue;
236
+ }
237
+ kept.push(block);
238
+ used += units;
239
+ }
240
+ if (omitted) {
241
+ if (kept.length >= MAX_PRESENTATION_BLOCKS)
242
+ kept.pop();
243
+ kept.push({ kind: "paragraph", text: omission });
244
+ }
245
+ return {
246
+ schema: "pi-workflows.decision-presentation.v1",
247
+ summary,
248
+ blocks: kept,
249
+ };
250
+ }
251
+ function legacyBlockFitsSchema(block) {
252
+ if (block.kind === "paragraph" || block.kind === "preformatted") {
253
+ return block.text.length <= MAX_PRESENTATION_STRING_CODE_UNITS;
254
+ }
255
+ if (block.kind === "section") {
256
+ return block.title.length <= MAX_PRESENTATION_STRING_CODE_UNITS;
257
+ }
258
+ if (block.kind === "bullets") {
259
+ return block.items.every((item) => item.length <= MAX_PRESENTATION_STRING_CODE_UNITS);
260
+ }
261
+ return block.items.every((item) => item.label.length <= MAX_PRESENTATION_STRING_CODE_UNITS &&
262
+ item.value.length <= MAX_PRESENTATION_STRING_CODE_UNITS);
263
+ }
264
+ function presentationBlockCodeUnits(block) {
265
+ if (block.kind === "paragraph" || block.kind === "preformatted")
266
+ return block.text.length;
267
+ if (block.kind === "section")
268
+ return block.title.length;
269
+ if (block.kind === "bullets") {
270
+ return block.items.reduce((sum, item) => sum + item.length, 0);
271
+ }
272
+ return block.items.reduce((sum, item) => sum + item.label.length + item.value.length, 0);
273
+ }
274
+ function presentationCodeUnits(presentation) {
275
+ let total = presentation.summary.length;
276
+ for (const block of presentation.blocks) {
277
+ total += presentationBlockCodeUnits(block);
278
+ }
279
+ return total;
280
+ }
281
+ function appendLegacyValue(blocks, value, label) {
282
+ if (isScalar(value)) {
283
+ const scalar = legacyScalar(value);
284
+ if (label === undefined || scalar.length > MAX_PRESENTATION_STRING_CODE_UNITS) {
285
+ appendLegacyText(blocks, scalar, label === undefined ? "Decision details" : legacyLabel(label));
286
+ }
287
+ else {
288
+ blocks.push({ kind: "fields", items: [{ label: legacyLabel(label), value: scalar }] });
289
+ }
290
+ return;
291
+ }
292
+ if (Array.isArray(value)) {
293
+ if (label !== undefined)
294
+ blocks.push({ kind: "section", title: legacyLabel(label) });
295
+ if (value.length === 0) {
296
+ blocks.push({ kind: "paragraph", text: "None" });
297
+ return;
298
+ }
299
+ if (value.every(isScalar) &&
300
+ value.every((item) => legacyScalar(item).length <= MAX_PRESENTATION_STRING_CODE_UNITS)) {
301
+ const items = value.map(legacyScalar);
302
+ for (let index = 0; index < items.length; index += MAX_PRESENTATION_ITEMS) {
303
+ blocks.push({ kind: "bullets", items: items.slice(index, index + MAX_PRESENTATION_ITEMS) });
304
+ }
305
+ return;
306
+ }
307
+ value.forEach((item, index) => appendLegacyValue(blocks, item, `Item ${index + 1}`));
308
+ return;
309
+ }
310
+ const entries = Object.entries(value).sort(([left], [right]) => compareKeys(left, right));
311
+ if (label !== undefined)
312
+ blocks.push({ kind: "section", title: legacyLabel(label) });
313
+ if (entries.length === 0) {
314
+ blocks.push({ kind: "paragraph", text: "None" });
315
+ return;
316
+ }
317
+ const fields = entries
318
+ .filter(([, child]) => isScalar(child) && legacyScalar(child).length <= MAX_PRESENTATION_STRING_CODE_UNITS)
319
+ .map(([key, child]) => ({ label: legacyLabel(key), value: legacyScalar(child) }));
320
+ for (let index = 0; index < fields.length; index += MAX_PRESENTATION_ITEMS) {
321
+ blocks.push({ kind: "fields", items: fields.slice(index, index + MAX_PRESENTATION_ITEMS) });
322
+ }
323
+ for (const [key, child] of entries.filter(([, child]) => !isScalar(child) || legacyScalar(child).length > MAX_PRESENTATION_STRING_CODE_UNITS)) {
324
+ appendLegacyValue(blocks, child, key);
325
+ }
326
+ }
327
+ function appendLegacyText(blocks, value, section) {
328
+ const text = sanitizeLegacyText(value);
329
+ blocks.push({ kind: "section", title: section });
330
+ for (const part of splitByCodeUnits(text, MAX_PRESENTATION_STRING_CODE_UNITS)) {
331
+ blocks.push({ kind: "paragraph", text: part.trim().length === 0 ? "None" : part });
332
+ }
333
+ }
334
+ function legacyLabel(value) {
335
+ const sanitized = sanitizeLegacyText(value)
336
+ .replaceAll(/[_-]+/gu, " ")
337
+ .replaceAll(/([a-z0-9])([A-Z])/gu, "$1 $2")
338
+ .replaceAll(/\s+/gu, " ")
339
+ .trim();
340
+ if (sanitized.length === 0)
341
+ return "Value";
342
+ return `${sanitized[0].toUpperCase()}${sanitized.slice(1)}`;
343
+ }
344
+ function legacyScalar(value) {
345
+ if (value === null)
346
+ return "None";
347
+ if (typeof value === "boolean")
348
+ return value ? "Yes" : "No";
349
+ return sanitizeLegacyText(String(value));
350
+ }
351
+ function sanitizeLegacyText(value) {
352
+ return value
353
+ .replaceAll("\r\n", "\n")
354
+ .replaceAll("\r", "\n")
355
+ .normalize("NFC")
356
+ .split("")
357
+ .map((character) => (isControlCode(character.charCodeAt(0), true) ? "�" : character))
358
+ .join("");
359
+ }
360
+ function hasControlCharacter(value, allowLineAndTab) {
361
+ return [...value].some((character) => isControlCode(character.codePointAt(0) ?? 0, allowLineAndTab));
362
+ }
363
+ function isControlCode(code, allowLineAndTab) {
364
+ if (allowLineAndTab && (code === 9 || code === 10))
365
+ return false;
366
+ return code <= 31 || code === 127;
367
+ }
368
+ function splitByCodeUnits(value, limit) {
369
+ if (value.length <= limit)
370
+ return [value];
371
+ const parts = [];
372
+ let remaining = value;
373
+ while (remaining.length > 0) {
374
+ let end = Math.min(limit, remaining.length);
375
+ const last = remaining.charCodeAt(end - 1);
376
+ if (last >= 0xd800 && last <= 0xdbff && end < remaining.length)
377
+ end -= 1;
378
+ parts.push(remaining.slice(0, end));
379
+ remaining = remaining.slice(end);
380
+ }
381
+ return parts;
382
+ }
383
+ function isScalar(value) {
384
+ return value === null || ["string", "number", "boolean"].includes(typeof value);
385
+ }
386
+ function requireRecord(value, label) {
387
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
388
+ throw new Error(`${label} must be an object`);
389
+ }
390
+ return value;
391
+ }
392
+ function requireExactKeys(value, allowed, label) {
393
+ const keys = Object.keys(value);
394
+ const extras = keys.filter((key) => !allowed.includes(key));
395
+ const missing = allowed.filter((key) => !Object.hasOwn(value, key));
396
+ if (missing.length > 0)
397
+ throw new Error(`${label} is missing ${missing.join(", ")}`);
398
+ if (extras.length > 0)
399
+ throw new Error(`${label} has unknown field ${extras.join(", ")}`);
400
+ }
401
+ function canonicalJson(value) {
402
+ return JSON.stringify(sortJson(value));
403
+ }
404
+ function compareKeys(left, right) {
405
+ return left < right ? -1 : left > right ? 1 : 0;
406
+ }
407
+ function sortJson(value) {
408
+ if (Array.isArray(value))
409
+ return value.map(sortJson);
410
+ if (value !== null && typeof value === "object") {
411
+ return Object.fromEntries(Object.entries(value)
412
+ .sort(([left], [right]) => compareKeys(left, right))
413
+ .map(([key, child]) => [key, sortJson(child)]));
414
+ }
415
+ return value;
416
+ }
417
+ //# sourceMappingURL=decision-presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-presentation.js","sourceRoot":"","sources":["../../src/workflows/decision-presentation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AgentNodeDefinition, WorkflowEdge, WorkflowNodeContext } from "./types.js";
1
+ import type { AgentNodeDefinition, WorkflowNodeContext } from "./types.js";
2
2
  type DecisionAgentOptions = Omit<AgentNodeDefinition, "nodeType" | "prompt" | "expectedOutput" | "validate">;
3
3
  export type DecisionDefinition<TChoice extends string> = DecisionAgentOptions & {
4
4
  question: string | ((context: WorkflowNodeContext) => string | Promise<string>);
@@ -16,10 +16,16 @@ export declare function decision<TChoice extends string>(definition: DecisionDef
16
16
  * Build the matching `switch` edge for a `decision` node. Typing `cases` as
17
17
  * `Record<TChoice, string>` makes a missing case a compile error.
18
18
  */
19
- export declare function decisionEdge<TChoice extends string>(args: {
20
- from: string;
19
+ export declare function decisionEdge<TChoice extends string, const TFrom extends string, const TCases extends Record<TChoice, string>>(args: {
20
+ from: TFrom;
21
21
  choices: readonly TChoice[];
22
22
  field?: string;
23
- cases: Record<TChoice, string>;
24
- }): WorkflowEdge;
23
+ cases: TCases;
24
+ }): {
25
+ from: TFrom;
26
+ switch: {
27
+ on: string;
28
+ cases: TCases;
29
+ };
30
+ };
25
31
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"decision.js","sourceRoot":"","sources":["../../src/workflows/decision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision.js","sourceRoot":"","sources":["../../src/workflows/decision.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,24 @@
1
- import type { AgentNodeDefinition, CheckpointNodeDefinition, ComputeNodeDefinition, FunctionActionNodeDefinition, NotifyNodeDefinition, ShellActionNodeDefinition, WorkflowDefinition } from "./types.js";
2
- export declare function defineWorkflow<TWorkflow extends WorkflowDefinition>(definition: TWorkflow): TWorkflow;
3
- export declare function isWorkflowDefinition(value: unknown): value is WorkflowDefinition;
1
+ import type { AgentNodeDefinition, CheckpointNodeDefinition, ComputeNodeDefinition, FunctionActionNodeDefinition, NotifyNodeDefinition, ShellActionNodeDefinition, WorkflowDefinition, WorkflowExitMap, WorkflowIncludeDefinition, WorkflowIncludedResult, WorkflowIncludeMap, WorkflowInputOf, WorkflowNodeContext, WorkflowNodeDefinition, WorkflowTypedEdge, WorkflowValueParser } from "./types.js";
2
+ type WorkflowDefinitionInput<TInput, TNodes extends Record<string, WorkflowNodeDefinition>, TIncludes extends WorkflowIncludeMap, TExits extends WorkflowExitMap> = Omit<WorkflowDefinition<TInput, TExits, TIncludes>, "input" | "nodes" | "includes" | "exits" | "edges"> & {
3
+ input?: WorkflowValueParser<TInput>;
4
+ nodes: TNodes;
5
+ includes?: TIncludes;
6
+ exits?: TExits;
7
+ edges: WorkflowTypedEdge<TNodes, TIncludes>[];
8
+ };
9
+ export declare function defineWorkflow<TInput = unknown, const TNodes extends Record<string, WorkflowNodeDefinition> = Record<string, WorkflowNodeDefinition>, const TIncludes extends WorkflowIncludeMap = Record<never, never>, const TExits extends WorkflowExitMap = Record<never, never>>(definition: WorkflowDefinitionInput<TInput, TNodes, TIncludes, TExits>): WorkflowDefinition<TInput, TExits, TIncludes> & {
10
+ nodes: TNodes;
11
+ includes?: TIncludes;
12
+ exits?: TExits;
13
+ };
14
+ export declare function includeWorkflow<TWorkflow extends WorkflowDefinition<any, any, any>>(workflow: TWorkflow, options?: {
15
+ input?: (context: WorkflowNodeContext) => Promise<WorkflowInputOf<TWorkflow>> | WorkflowInputOf<TWorkflow>;
16
+ }): WorkflowIncludeDefinition<TWorkflow>;
17
+ export declare function includeWorkflow<TWorkflow extends WorkflowDefinition<any, any, any>>(definition: WorkflowIncludeDefinition<TWorkflow>): WorkflowIncludeDefinition<TWorkflow>;
18
+ export declare function includedResult<TWorkflow extends WorkflowDefinition<any, any, any>>(workflow: TWorkflow, value: unknown): WorkflowIncludedResult<TWorkflow>;
19
+ /** Preserve exact workflow types while checking duplicate registry names. */
20
+ export declare function defineWorkflowRegistry<const TRegistry extends Record<string, WorkflowDefinition<any, any, any>>>(registry: TRegistry): Readonly<TRegistry>;
21
+ export declare function isWorkflowDefinition(value: unknown): value is WorkflowDefinition<any, any, any>;
4
22
  export declare function agent(definition: Omit<AgentNodeDefinition, "nodeType">): AgentNodeDefinition;
5
23
  export declare function compute(definition: Omit<ComputeNodeDefinition, "nodeType">): ComputeNodeDefinition;
6
24
  export declare function notify(definition: Omit<NotifyNodeDefinition, "nodeType">): NotifyNodeDefinition;
@@ -8,3 +26,4 @@ export declare function action(definition: Omit<FunctionActionNodeDefinition, "n
8
26
  export declare function action(definition: Omit<ShellActionNodeDefinition, "nodeType">): ShellActionNodeDefinition;
9
27
  export declare function shell(definition: Omit<ShellActionNodeDefinition, "nodeType">): ShellActionNodeDefinition;
10
28
  export declare function checkpoint(definition?: Omit<CheckpointNodeDefinition, "nodeType">): CheckpointNodeDefinition;
29
+ export {};
@@ -2,17 +2,60 @@ import { assertValidAgentNode, assertValidActionNode, assertValidCheckpointNode,
2
2
  const WORKFLOW_DEFINITION_BRAND = Symbol.for("pi-workflows.definition");
3
3
  export function defineWorkflow(definition) {
4
4
  assertValidWorkflowDefinitionShape(definition);
5
- if (isWorkflowDefinition(definition)) {
6
- return definition;
5
+ const typed = definition;
6
+ if (isWorkflowDefinition(typed)) {
7
+ return typed;
7
8
  }
8
- Object.defineProperty(definition, WORKFLOW_DEFINITION_BRAND, {
9
+ Object.defineProperty(typed, WORKFLOW_DEFINITION_BRAND, {
9
10
  value: true,
10
11
  enumerable: false,
11
12
  configurable: false,
12
13
  writable: false,
13
14
  });
15
+ return typed;
16
+ }
17
+ export function includeWorkflow(workflowOrDefinition, options = {}) {
18
+ const definition = isWorkflowDefinition(workflowOrDefinition)
19
+ ? { workflow: workflowOrDefinition, ...options }
20
+ : workflowOrDefinition;
21
+ if (typeof definition.workflow !== "string" && !isWorkflowDefinition(definition.workflow)) {
22
+ throw new Error("Included workflow must be a defined workflow or a workflow reference");
23
+ }
24
+ if (definition.input !== undefined && typeof definition.input !== "function") {
25
+ throw new Error("Included workflow input must be a function");
26
+ }
27
+ if (definition.contract !== undefined && !isWorkflowDefinition(definition.contract)) {
28
+ throw new Error("Included workflow contract must be defined with defineWorkflow");
29
+ }
14
30
  return definition;
15
31
  }
32
+ export function includedResult(workflow, value) {
33
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
34
+ throw new Error(`Included ${workflow.name} result must be an object`);
35
+ }
36
+ const exit = value.exit;
37
+ if (typeof exit !== "string" || !Object.hasOwn(workflow.exits ?? {}, exit)) {
38
+ throw new Error(`Included ${workflow.name} result has unknown exit ${JSON.stringify(exit)}`);
39
+ }
40
+ if (!Object.hasOwn(value, "output")) {
41
+ throw new Error(`Included ${workflow.name} result requires output`);
42
+ }
43
+ return value;
44
+ }
45
+ /** Preserve exact workflow types while checking duplicate registry names. */
46
+ export function defineWorkflowRegistry(registry) {
47
+ const names = new Set();
48
+ for (const [key, workflow] of Object.entries(registry)) {
49
+ if (!isWorkflowDefinition(workflow)) {
50
+ throw new Error(`Workflow registry entry ${key} is not defined with defineWorkflow`);
51
+ }
52
+ if (names.has(workflow.name)) {
53
+ throw new Error(`Workflow registry has duplicate workflow name: ${workflow.name}`);
54
+ }
55
+ names.add(workflow.name);
56
+ }
57
+ return Object.freeze({ ...registry });
58
+ }
16
59
  export function isWorkflowDefinition(value) {
17
60
  return (value != null &&
18
61
  typeof value === "object" &&
@@ -1 +1 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/workflows/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,aAAa,CAAC;AAYrB,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAExE,MAAM,UAAU,cAAc,CAC5B,UAAqB;IAErB,kCAAkC,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,yBAAyB,EAAE;QAC3D,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,KAAK,IAAI,IAAI;QACb,OAAO,KAAK,KAAK,QAAQ;QACxB,KAAsC,CAAC,yBAAyB,CAAC,KAAK,IAAI,CAC5E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,UAAiD;IACrE,MAAM,IAAI,GAAwB;QAChC,QAAQ,EAAE,OAAO;QACjB,GAAG,UAAU;KACd,CAAC;IACF,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,UAAmD;IAEnD,MAAM,IAAI,GAA0B;QAClC,QAAQ,EAAE,SAAS;QACnB,GAAG,UAAU;KACd,CAAC;IACF,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,UAAkD;IACvE,MAAM,IAAI,GAAyB;QACjC,QAAQ,EAAE,QAAQ;QAClB,GAAG,UAAU;KACd,CAAC;IACF,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,MAAM,UAAU,MAAM,CACpB,UAE+C;IAE/C,MAAM,IAAI,GAAyB;QACjC,QAAQ,EAAE,QAAQ;QAClB,GAAG,UAAU;KACd,CAAC;IACF,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,UAAuD;IAEvD,MAAM,IAAI,GAA8B;QACtC,QAAQ,EAAE,QAAQ;QAClB,GAAG,UAAU;KACd,CAAC;IACF,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,UAAU,GAA+C,EAAE;IAE3D,MAAM,IAAI,GAA6B;QACrC,QAAQ,EAAE,YAAY;QACtB,GAAG,UAAU;KACd,CAAC;IACF,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/workflows/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,aAAa,CAAC;AAqBrB,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAkBxE,MAAM,UAAU,cAAc,CAS5B,UAAsE;IAMtE,kCAAkC,CAAC,UAAgC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,UAIb,CAAC;IACF,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,yBAAyB,EAAE;QACtD,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAaD,MAAM,UAAU,eAAe,CAC7B,oBAAsE,EACtE,OAAO,GAIH,EAAE;IAEN,MAAM,UAAU,GAAG,oBAAoB,CAAC,oBAAoB,CAAC;QAC3D,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAAG,OAAO,EAAE;QAChD,CAAC,CAAC,oBAAoB,CAAC;IACzB,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAmB,EACnB,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,CAAC,IAAI,2BAA2B,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;IAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,CAAC,IAAI,4BAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAA0C,CAAC;AACpD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CAEpC,QAAmB;IACnB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,qCAAqC,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,kDAAkD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,KAAK,IAAI,IAAI;QACb,OAAO,KAAK,KAAK,QAAQ;QACxB,KAAsC,CAAC,yBAAyB,CAAC,KAAK,IAAI,CAC5E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,UAAiD;IACrE,MAAM,IAAI,GAAwB;QAChC,QAAQ,EAAE,OAAO;QACjB,GAAG,UAAU;KACd,CAAC;IACF,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,UAAmD;IAEnD,MAAM,IAAI,GAA0B;QAClC,QAAQ,EAAE,SAAS;QACnB,GAAG,UAAU;KACd,CAAC;IACF,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,UAAkD;IACvE,MAAM,IAAI,GAAyB;QACjC,QAAQ,EAAE,QAAQ;QAClB,GAAG,UAAU;KACd,CAAC;IACF,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,MAAM,UAAU,MAAM,CACpB,UAE+C;IAE/C,MAAM,IAAI,GAAyB;QACjC,QAAQ,EAAE,QAAQ;QAClB,GAAG,UAAU;KACd,CAAC;IACF,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,UAAuD;IAEvD,MAAM,IAAI,GAA8B;QACtC,QAAQ,EAAE,QAAQ;QAClB,GAAG,UAAU;KACd,CAAC;IACF,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,UAAU,GAA+C,EAAE;IAE3D,MAAM,IAAI,GAA6B;QACrC,QAAQ,EAAE,YAAY;QACtB,GAAG,UAAU;KACd,CAAC;IACF,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { WorkflowDefinition, WorkflowEngineOptions, WorkflowRunResult, WorkflowSource, WorkflowUpdateInput, WorkflowUpdateReceipt } from "./types.js";
1
+ import type { AcceptedHumanDecision, WorkflowDefinition, WorkflowEngineOptions, WorkflowRunResult, WorkflowSource, WorkflowUpdateInput, WorkflowUpdateReceipt } from "./types.js";
2
2
  /**
3
3
  * Executes a workflow graph step by step. Agent steps are delegated to the
4
4
  * configured executor; compute/action/checkpoint nodes run inline. Every
@@ -65,6 +65,7 @@ export declare class WorkflowEngine {
65
65
  workflowSource?: WorkflowSource;
66
66
  runId?: string;
67
67
  force?: boolean;
68
+ humanDecision?: AcceptedHumanDecision;
68
69
  }): Promise<WorkflowRunResult>;
69
70
  /**
70
71
  * Find where a resumed run continues. An in-flight node reruns; otherwise