@osolmaz/pi-workflows 0.11.2 → 0.12.1

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 (177) hide show
  1. package/README.md +15 -10
  2. package/dist/builtins/autoimplement-command-batches.d.ts +52 -0
  3. package/dist/builtins/autoimplement-command-batches.js +258 -0
  4. package/dist/builtins/autoimplement-command-batches.js.map +1 -0
  5. package/dist/builtins/autoimplement.workflow.d.ts +509 -124
  6. package/dist/builtins/autoimplement.workflow.js +884 -327
  7. package/dist/builtins/autoimplement.workflow.js.map +1 -1
  8. package/dist/builtins/catalog.js +5 -3
  9. package/dist/builtins/catalog.js.map +1 -1
  10. package/dist/builtins/index.d.ts +4 -1
  11. package/dist/builtins/index.js +3 -1
  12. package/dist/builtins/index.js.map +1 -1
  13. package/dist/builtins/monitor.workflow.d.ts +2 -4
  14. package/dist/builtins/monitor.workflow.js +26 -128
  15. package/dist/builtins/monitor.workflow.js.map +1 -1
  16. package/dist/builtins/pi-agent-group.d.ts +72 -0
  17. package/dist/builtins/pi-agent-group.js +1087 -0
  18. package/dist/builtins/pi-agent-group.js.map +1 -0
  19. package/dist/builtins/plan-approval.workflow.d.ts +39 -5
  20. package/dist/builtins/plan-approval.workflow.js +92 -14
  21. package/dist/builtins/plan-approval.workflow.js.map +1 -1
  22. package/dist/builtins/plan-change.workflow.d.ts +301 -0
  23. package/dist/builtins/plan-change.workflow.js +256 -0
  24. package/dist/builtins/plan-change.workflow.js.map +1 -0
  25. package/dist/builtins/plan-presentation.js +2 -2
  26. package/dist/builtins/plan-presentation.js.map +1 -1
  27. package/dist/builtins/sanity-check.workflow.d.ts +85 -0
  28. package/dist/builtins/sanity-check.workflow.js +482 -0
  29. package/dist/builtins/sanity-check.workflow.js.map +1 -0
  30. package/dist/controllers/sqlite.d.ts +90 -2
  31. package/dist/controllers/sqlite.js +380 -5
  32. package/dist/controllers/sqlite.js.map +1 -1
  33. package/dist/extension/decision-channels.d.ts +2 -2
  34. package/dist/extension/decision-channels.js +29 -35
  35. package/dist/extension/decision-channels.js.map +1 -1
  36. package/dist/extension/deferred-turn-coordinator.d.ts +32 -0
  37. package/dist/extension/deferred-turn-coordinator.js +143 -0
  38. package/dist/extension/deferred-turn-coordinator.js.map +1 -0
  39. package/dist/extension/deferred-turn.d.ts +44 -0
  40. package/dist/extension/deferred-turn.js +110 -0
  41. package/dist/extension/deferred-turn.js.map +1 -0
  42. package/dist/extension/index.js +348 -80
  43. package/dist/extension/index.js.map +1 -1
  44. package/dist/extension/session-events.d.ts +2 -2
  45. package/dist/extension/step-message.d.ts +1 -0
  46. package/dist/extension/step-message.js.map +1 -1
  47. package/dist/extension/widget.js +23 -3
  48. package/dist/extension/widget.js.map +1 -1
  49. package/dist/herdr/setup.js +4 -4
  50. package/dist/render/graph-render.js +1 -2
  51. package/dist/render/graph-render.js.map +1 -1
  52. package/dist/viewer/render.js +7 -6
  53. package/dist/viewer/render.js.map +1 -1
  54. package/dist/workflows/catalog.js +7 -2
  55. package/dist/workflows/catalog.js.map +1 -1
  56. package/dist/workflows/command-batch.d.ts +38 -0
  57. package/dist/workflows/command-batch.js +176 -0
  58. package/dist/workflows/command-batch.js.map +1 -0
  59. package/dist/workflows/composition.js +8 -0
  60. package/dist/workflows/composition.js.map +1 -1
  61. package/dist/workflows/decision-presentation.d.ts +1 -1
  62. package/dist/workflows/decision-presentation.js +51 -38
  63. package/dist/workflows/decision-presentation.js.map +1 -1
  64. package/dist/workflows/engine.d.ts +2 -2
  65. package/dist/workflows/engine.js +22 -17
  66. package/dist/workflows/engine.js.map +1 -1
  67. package/dist/workflows/errors.d.ts +13 -0
  68. package/dist/workflows/errors.js +15 -0
  69. package/dist/workflows/errors.js.map +1 -1
  70. package/dist/workflows/human-decision.d.ts +16 -4
  71. package/dist/workflows/human-decision.js +175 -72
  72. package/dist/workflows/human-decision.js.map +1 -1
  73. package/dist/workflows/index.d.ts +3 -2
  74. package/dist/workflows/index.js +2 -1
  75. package/dist/workflows/index.js.map +1 -1
  76. package/dist/workflows/progress.d.ts +1 -0
  77. package/dist/workflows/progress.js +15 -3
  78. package/dist/workflows/progress.js.map +1 -1
  79. package/dist/workflows/schema.js +12 -1
  80. package/dist/workflows/schema.js.map +1 -1
  81. package/dist/workflows/shell.d.ts +4 -0
  82. package/dist/workflows/shell.js +6 -0
  83. package/dist/workflows/shell.js.map +1 -1
  84. package/dist/workflows/store.js +8 -1
  85. package/dist/workflows/store.js.map +1 -1
  86. package/dist/workflows/types.d.ts +37 -48
  87. package/docs/2026-08-18-herdr-piw-plan.md +1 -1
  88. package/docs/2026-08-20-durable-workflow-launch-plan.md +19 -23
  89. package/docs/CONTROLLERS.md +2 -2
  90. package/docs/DEFERRED_TURNS.md +298 -0
  91. package/docs/DESIGN_PHILOSOPHY.md +1 -1
  92. package/docs/HUMAN_DECISIONS.md +30 -40
  93. package/docs/HUMAN_DECISION_PRESENTATIONS.md +17 -27
  94. package/docs/MONITOR.md +7 -13
  95. package/docs/WORKFLOW_COMPOSITION.md +10 -9
  96. package/docs/WORKFLOW_STEP_MESSAGES.md +5 -5
  97. package/docs/WORKFLOW_UPDATES.md +28 -5
  98. package/docs/plans/2026-08-04-controller-runtime-plan.md +1 -1
  99. package/docs/plans/2026-08-05-always-on-workflows-plan.md +1 -1
  100. package/docs/plans/2026-08-10-agent-managed-monitor-workflows-plan.md +9 -9
  101. package/docs/plans/2026-08-13-built-in-workflow-catalog-plan.md +1 -1
  102. package/docs/plans/2026-08-13-session-addressed-workflow-notifications-plan.md +1 -1
  103. package/docs/plans/2026-08-16-workflow-updates-plan.md +3 -3
  104. package/docs/plans/2026-08-17-bundled-skills-plan.md +6 -6
  105. package/docs/plans/2026-08-19-human-decision-gates-plan.md +5 -5
  106. package/docs/plans/2026-08-19-human-decision-presentations-plan.md +1 -1
  107. package/docs/plans/2026-08-19-provider-compatible-workflow-tool-schema-plan.md +1 -1
  108. package/docs/plans/2026-08-19-workflow-composition-plan.md +6 -6
  109. package/docs/plans/2026-08-20-autoimplement-blocker-challenge-plan.md +3 -3
  110. package/docs/plans/2026-08-20-bounded-command-batches-plan.md +206 -0
  111. package/docs/plans/2026-08-20-herdr-plugin-sync-plan.md +9 -9
  112. package/docs/plans/2026-08-21-autoimplement-timeout-fallback-plan.md +242 -0
  113. package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +324 -0
  114. package/docs/plans/2026-08-21-plan-change-approval-policy-plan.md +322 -0
  115. package/docs/plans/2026-08-21-sanity-check-plan.md +283 -0
  116. package/docs/run-bundles.md +8 -6
  117. package/docs/workflows.md +85 -22
  118. package/examples/workflows/approved-plan.workflow.ts +19 -46
  119. package/examples/workflows/command-batch.workflow.ts +50 -0
  120. package/examples/workflows/sanity-check.workflow.ts +1 -0
  121. package/herdr-plugin.toml +3 -3
  122. package/package.json +7 -7
  123. package/schemas/decision-presentation-v1.schema.json +1 -1
  124. package/schemas/human-decision-accepted-v1.schema.json +16 -4
  125. package/schemas/human-decision-answer-attempt-v1.schema.json +1 -1
  126. package/schemas/human-decision-cancellation-v1.schema.json +1 -1
  127. package/schemas/human-decision-continuation-v1.schema.json +11 -2
  128. package/schemas/human-decision-delivery-v1.schema.json +9 -1
  129. package/schemas/human-decision-receipt-v1.schema.json +9 -1
  130. package/schemas/human-decision-request-v1.schema.json +25 -5
  131. package/schemas/human-decision-resolution-v1.schema.json +1 -1
  132. package/schemas/human-decision-settlement-v1.schema.json +1 -1
  133. package/skills/autodoc/SKILL.md +33 -2
  134. package/skills/autoimplement/SKILL.md +93 -12
  135. package/skills/autoplan/SKILL.md +26 -2
  136. package/skills/monitor/SKILL.md +66 -24
  137. package/skills/pi-workflows/SKILL.md +21 -6
  138. package/skills/sanity-check/SKILL.md +44 -0
  139. package/src/builtins/autoimplement-command-batches.ts +364 -0
  140. package/src/builtins/autoimplement.workflow.ts +1075 -370
  141. package/src/builtins/catalog.ts +5 -3
  142. package/src/builtins/index.ts +24 -0
  143. package/src/builtins/monitor.workflow.ts +27 -150
  144. package/src/builtins/pi-agent-group.ts +1407 -0
  145. package/src/builtins/plan-approval.workflow.ts +157 -24
  146. package/src/builtins/plan-change.workflow.ts +321 -0
  147. package/src/builtins/plan-presentation.ts +2 -2
  148. package/src/builtins/sanity-check.workflow.ts +769 -0
  149. package/src/controllers/sqlite.ts +580 -7
  150. package/src/extension/decision-channels.ts +36 -66
  151. package/src/extension/deferred-turn-coordinator.ts +171 -0
  152. package/src/extension/deferred-turn.ts +166 -0
  153. package/src/extension/index.ts +438 -90
  154. package/src/extension/session-events.ts +2 -2
  155. package/src/extension/step-message.ts +1 -0
  156. package/src/extension/widget.ts +24 -5
  157. package/src/herdr/setup.ts +4 -4
  158. package/src/render/graph-render.ts +1 -2
  159. package/src/viewer/render.ts +7 -6
  160. package/src/workflows/catalog.ts +7 -2
  161. package/src/workflows/command-batch.ts +254 -0
  162. package/src/workflows/composition.ts +9 -0
  163. package/src/workflows/decision-presentation.ts +56 -43
  164. package/src/workflows/engine.ts +25 -20
  165. package/src/workflows/errors.ts +24 -0
  166. package/src/workflows/human-decision.ts +218 -101
  167. package/src/workflows/index.ts +20 -11
  168. package/src/workflows/progress.ts +18 -3
  169. package/src/workflows/schema.ts +19 -1
  170. package/src/workflows/shell.ts +10 -0
  171. package/src/workflows/store.ts +8 -1
  172. package/src/workflows/types.ts +43 -59
  173. package/schemas/human-decision-accepted-v2.schema.json +0 -50
  174. package/schemas/human-decision-delivery-v2.schema.json +0 -36
  175. package/schemas/human-decision-receipt-v2.schema.json +0 -39
  176. package/schemas/human-decision-request-v2.schema.json +0 -69
  177. package/schemas/human-decision-resolution-v2.schema.json +0 -27
@@ -0,0 +1,301 @@
1
+ import type { WorkflowNodeContext } from "../workflows/types.js";
2
+ import { type AutodocInput, type DocumentedPlan } from "./autodoc.workflow.js";
3
+ import { type AutoplanInput, type AutoplanReady } from "./autoplan.workflow.js";
4
+ import { type PlanApprovalContinue, type NormalizedPlanApprovalInput, type PlanApprovalPolicy, type PlanApprovalResolution, type ResolvedPlanApprovalPolicy } from "./plan-approval.workflow.js";
5
+ export type PlanChangeInput = {
6
+ task: string;
7
+ scope?: string;
8
+ constraints?: string[];
9
+ repository?: string;
10
+ documents?: string[];
11
+ previousPlan?: unknown;
12
+ newEvidence?: unknown;
13
+ approval?: PlanApprovalPolicy;
14
+ };
15
+ export type NormalizedPlanChangeInput = Omit<PlanChangeInput, "approval"> & {
16
+ approval: ResolvedPlanApprovalPolicy;
17
+ };
18
+ export type PlanChangeReady = {
19
+ status: "ready";
20
+ plan: unknown;
21
+ planDigest: string;
22
+ documents: string[];
23
+ revision: number;
24
+ approval: PlanApprovalResolution;
25
+ documentation: DocumentedPlan["documentation"];
26
+ };
27
+ export type PlanChangeBlocked = {
28
+ status: "blocked";
29
+ reason: string;
30
+ evidence: unknown;
31
+ };
32
+ export declare const planChangeWorkflow: import("../workflows/types.js").WorkflowDefinition<NormalizedPlanChangeInput, {
33
+ readonly ready: {
34
+ readonly from: "finalize";
35
+ readonly validate: (value: unknown) => PlanChangeReady;
36
+ };
37
+ readonly blocked: {
38
+ readonly from: "blocked";
39
+ readonly validate: (value: unknown) => PlanChangeBlocked;
40
+ };
41
+ }, {
42
+ readonly design: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutoplanInput, {
43
+ readonly ready: {
44
+ readonly from: "finalize";
45
+ readonly validate: (value: unknown) => AutoplanReady;
46
+ };
47
+ readonly blocked: {
48
+ readonly from: "blocked";
49
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
50
+ };
51
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
52
+ nodes: {
53
+ readonly frame: import("../workflows/types.js").AgentNodeDefinition;
54
+ readonly propose: import("../workflows/types.js").AgentNodeDefinition;
55
+ readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
56
+ readonly choose: import("../workflows/types.js").AgentNodeDefinition;
57
+ readonly plan: import("../workflows/types.js").AgentNodeDefinition;
58
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
59
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
60
+ };
61
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
62
+ exits?: {
63
+ readonly ready: {
64
+ readonly from: "finalize";
65
+ readonly validate: (value: unknown) => AutoplanReady;
66
+ };
67
+ readonly blocked: {
68
+ readonly from: "blocked";
69
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
70
+ };
71
+ };
72
+ }>;
73
+ readonly documentation: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutodocInput, {
74
+ readonly ready: {
75
+ readonly from: "finalize";
76
+ readonly validate: (value: unknown) => DocumentedPlan;
77
+ };
78
+ readonly blocked: {
79
+ readonly from: "blocked";
80
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
81
+ };
82
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
83
+ nodes: {
84
+ readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
85
+ readonly locatePlan: import("../workflows/types.js").AgentNodeDefinition;
86
+ readonly inspectDocumentation: import("../workflows/types.js").AgentNodeDefinition;
87
+ readonly updateDocumentation: import("../workflows/types.js").AgentNodeDefinition;
88
+ readonly verifyDocumentation: import("../workflows/types.js").AgentNodeDefinition;
89
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
90
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
91
+ };
92
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
93
+ exits?: {
94
+ readonly ready: {
95
+ readonly from: "finalize";
96
+ readonly validate: (value: unknown) => DocumentedPlan;
97
+ };
98
+ readonly blocked: {
99
+ readonly from: "blocked";
100
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
101
+ };
102
+ };
103
+ }>;
104
+ readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<NormalizedPlanApprovalInput, {
105
+ readonly continue: {
106
+ readonly from: "continued";
107
+ readonly validate: (value: unknown) => PlanApprovalContinue;
108
+ };
109
+ readonly stop: {
110
+ readonly from: "stopped";
111
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
112
+ };
113
+ readonly replan: {
114
+ readonly from: "replan";
115
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
116
+ };
117
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
118
+ nodes: {
119
+ readonly routePolicy: import("../workflows/types.js").ComputeNodeDefinition;
120
+ readonly approve: import("../workflows/types.js").WorkflowNodeCommon & {
121
+ nodeType: "checkpoint";
122
+ summary?: string;
123
+ run?: (context: WorkflowNodeContext) => import("../workflows/types.js").MaybePromise<unknown>;
124
+ humanDecision?: import("../workflows/types.js").HumanDecisionNodeContract;
125
+ } & {
126
+ readonly __humanChoices?: {
127
+ readonly continue: {
128
+ readonly label: "Yes, continue";
129
+ };
130
+ readonly stop: {
131
+ readonly label: "No, stop";
132
+ };
133
+ readonly replan: {
134
+ readonly label: "Replan";
135
+ readonly input: import("../workflows/types.js").HumanDecisionTextInput & {
136
+ name: "instructions";
137
+ };
138
+ };
139
+ };
140
+ };
141
+ readonly continued: import("../workflows/types.js").ComputeNodeDefinition;
142
+ readonly stopped: import("../workflows/types.js").ComputeNodeDefinition;
143
+ readonly replan: import("../workflows/types.js").ComputeNodeDefinition;
144
+ };
145
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
146
+ exits?: {
147
+ readonly continue: {
148
+ readonly from: "continued";
149
+ readonly validate: (value: unknown) => PlanApprovalContinue;
150
+ };
151
+ readonly stop: {
152
+ readonly from: "stopped";
153
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
154
+ };
155
+ readonly replan: {
156
+ readonly from: "replan";
157
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
158
+ };
159
+ };
160
+ }>;
161
+ }> & {
162
+ nodes: {
163
+ readonly start: import("../workflows/types.js").ComputeNodeDefinition;
164
+ readonly assessPlan: import("../workflows/types.js").ComputeNodeDefinition;
165
+ readonly replanGuard: import("../workflows/types.js").ComputeNodeDefinition;
166
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
167
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
168
+ };
169
+ includes?: {
170
+ readonly design: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutoplanInput, {
171
+ readonly ready: {
172
+ readonly from: "finalize";
173
+ readonly validate: (value: unknown) => AutoplanReady;
174
+ };
175
+ readonly blocked: {
176
+ readonly from: "blocked";
177
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
178
+ };
179
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
180
+ nodes: {
181
+ readonly frame: import("../workflows/types.js").AgentNodeDefinition;
182
+ readonly propose: import("../workflows/types.js").AgentNodeDefinition;
183
+ readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
184
+ readonly choose: import("../workflows/types.js").AgentNodeDefinition;
185
+ readonly plan: import("../workflows/types.js").AgentNodeDefinition;
186
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
187
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
188
+ };
189
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
190
+ exits?: {
191
+ readonly ready: {
192
+ readonly from: "finalize";
193
+ readonly validate: (value: unknown) => AutoplanReady;
194
+ };
195
+ readonly blocked: {
196
+ readonly from: "blocked";
197
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
198
+ };
199
+ };
200
+ }>;
201
+ readonly documentation: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutodocInput, {
202
+ readonly ready: {
203
+ readonly from: "finalize";
204
+ readonly validate: (value: unknown) => DocumentedPlan;
205
+ };
206
+ readonly blocked: {
207
+ readonly from: "blocked";
208
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
209
+ };
210
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
211
+ nodes: {
212
+ readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
213
+ readonly locatePlan: import("../workflows/types.js").AgentNodeDefinition;
214
+ readonly inspectDocumentation: import("../workflows/types.js").AgentNodeDefinition;
215
+ readonly updateDocumentation: import("../workflows/types.js").AgentNodeDefinition;
216
+ readonly verifyDocumentation: import("../workflows/types.js").AgentNodeDefinition;
217
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
218
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
219
+ };
220
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
221
+ exits?: {
222
+ readonly ready: {
223
+ readonly from: "finalize";
224
+ readonly validate: (value: unknown) => DocumentedPlan;
225
+ };
226
+ readonly blocked: {
227
+ readonly from: "blocked";
228
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
229
+ };
230
+ };
231
+ }>;
232
+ readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<NormalizedPlanApprovalInput, {
233
+ readonly continue: {
234
+ readonly from: "continued";
235
+ readonly validate: (value: unknown) => PlanApprovalContinue;
236
+ };
237
+ readonly stop: {
238
+ readonly from: "stopped";
239
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
240
+ };
241
+ readonly replan: {
242
+ readonly from: "replan";
243
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
244
+ };
245
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
246
+ nodes: {
247
+ readonly routePolicy: import("../workflows/types.js").ComputeNodeDefinition;
248
+ readonly approve: import("../workflows/types.js").WorkflowNodeCommon & {
249
+ nodeType: "checkpoint";
250
+ summary?: string;
251
+ run?: (context: WorkflowNodeContext) => import("../workflows/types.js").MaybePromise<unknown>;
252
+ humanDecision?: import("../workflows/types.js").HumanDecisionNodeContract;
253
+ } & {
254
+ readonly __humanChoices?: {
255
+ readonly continue: {
256
+ readonly label: "Yes, continue";
257
+ };
258
+ readonly stop: {
259
+ readonly label: "No, stop";
260
+ };
261
+ readonly replan: {
262
+ readonly label: "Replan";
263
+ readonly input: import("../workflows/types.js").HumanDecisionTextInput & {
264
+ name: "instructions";
265
+ };
266
+ };
267
+ };
268
+ };
269
+ readonly continued: import("../workflows/types.js").ComputeNodeDefinition;
270
+ readonly stopped: import("../workflows/types.js").ComputeNodeDefinition;
271
+ readonly replan: import("../workflows/types.js").ComputeNodeDefinition;
272
+ };
273
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
274
+ exits?: {
275
+ readonly continue: {
276
+ readonly from: "continued";
277
+ readonly validate: (value: unknown) => PlanApprovalContinue;
278
+ };
279
+ readonly stop: {
280
+ readonly from: "stopped";
281
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
282
+ };
283
+ readonly replan: {
284
+ readonly from: "replan";
285
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
286
+ };
287
+ };
288
+ }>;
289
+ };
290
+ exits?: {
291
+ readonly ready: {
292
+ readonly from: "finalize";
293
+ readonly validate: (value: unknown) => PlanChangeReady;
294
+ };
295
+ readonly blocked: {
296
+ readonly from: "blocked";
297
+ readonly validate: (value: unknown) => PlanChangeBlocked;
298
+ };
299
+ };
300
+ };
301
+ export default planChangeWorkflow;
@@ -0,0 +1,256 @@
1
+ import { compute, defineWorkflow, includeWorkflow, includedResult, } from "../workflows/definition.js";
2
+ import autodocWorkflow, {} from "./autodoc.workflow.js";
3
+ import autoplanWorkflow, {} from "./autoplan.workflow.js";
4
+ import planApprovalWorkflow, { parsePlanApprovalPolicy, } from "./plan-approval.workflow.js";
5
+ function requireRecord(value, label) {
6
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
7
+ throw new Error(`${label} must be an object`);
8
+ }
9
+ return value;
10
+ }
11
+ function requireString(value, label) {
12
+ if (typeof value !== "string" || value.trim().length === 0) {
13
+ throw new Error(`${label} must be a non-empty string`);
14
+ }
15
+ return value.trim();
16
+ }
17
+ function requireExactKeys(value, allowed, label) {
18
+ const unexpected = Object.keys(value).filter((key) => !allowed.includes(key));
19
+ if (unexpected.length > 0)
20
+ throw new Error(`${label} has unknown field ${unexpected[0]}`);
21
+ }
22
+ function parseStringArray(value, label) {
23
+ if (value === undefined)
24
+ return undefined;
25
+ if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
26
+ throw new Error(`${label} must be an array of strings`);
27
+ }
28
+ return [...value];
29
+ }
30
+ function parseInput(value) {
31
+ const input = requireRecord(value, "plan change input");
32
+ requireExactKeys(input, [
33
+ "task",
34
+ "scope",
35
+ "constraints",
36
+ "repository",
37
+ "documents",
38
+ "previousPlan",
39
+ "newEvidence",
40
+ "approval",
41
+ ], "plan change input");
42
+ const constraints = parseStringArray(input.constraints, "plan change constraints");
43
+ const documents = parseStringArray(input.documents, "plan change documents");
44
+ return {
45
+ task: requireString(input.task, "plan change task"),
46
+ ...(input.scope !== undefined
47
+ ? { scope: requireString(input.scope, "plan change scope") }
48
+ : {}),
49
+ ...(constraints !== undefined ? { constraints } : {}),
50
+ ...(input.repository !== undefined
51
+ ? { repository: requireString(input.repository, "plan change repository") }
52
+ : {}),
53
+ ...(documents !== undefined ? { documents } : {}),
54
+ ...(input.previousPlan !== undefined ? { previousPlan: input.previousPlan } : {}),
55
+ ...(input.newEvidence !== undefined ? { newEvidence: input.newEvidence } : {}),
56
+ approval: parsePlanApprovalPolicy(input.approval),
57
+ };
58
+ }
59
+ function currentDesign(context) {
60
+ const result = includedResult(autoplanWorkflow, context.outputs.design);
61
+ if (result.exit !== "ready")
62
+ throw new Error("plan change design did not return a ready plan");
63
+ return result.output;
64
+ }
65
+ function currentDocumentation(context) {
66
+ const result = includedResult(autodocWorkflow, context.outputs.documentation);
67
+ if (result.exit !== "ready") {
68
+ throw new Error("plan change documentation did not return a ready plan");
69
+ }
70
+ return result.output;
71
+ }
72
+ function currentApproval(context) {
73
+ const result = includedResult(planApprovalWorkflow, context.outputs.approval);
74
+ if (result.exit !== "continue") {
75
+ throw new Error("plan change approval did not return continue");
76
+ }
77
+ return result.output;
78
+ }
79
+ function latestReplanInstructions(outputs) {
80
+ if (outputs.approval === undefined)
81
+ return undefined;
82
+ const result = includedResult(planApprovalWorkflow, outputs.approval);
83
+ return result.exit === "replan" ? result.output.instructions : undefined;
84
+ }
85
+ function blockedResult(context) {
86
+ if (context.outputs.approval !== undefined) {
87
+ const approval = includedResult(planApprovalWorkflow, context.outputs.approval);
88
+ if (approval.exit === "stop") {
89
+ return {
90
+ status: "blocked",
91
+ reason: "The operator stopped the proposed plan change.",
92
+ evidence: approval.output,
93
+ };
94
+ }
95
+ }
96
+ const candidates = ["replanGuard", "assessPlan", "approval", "documentation", "design"];
97
+ for (let index = context.state.steps.length - 1; index >= 0; index -= 1) {
98
+ const step = context.state.steps[index];
99
+ if (step === undefined || !candidates.some((candidate) => step.nodeId.startsWith(candidate))) {
100
+ continue;
101
+ }
102
+ const output = step.output;
103
+ if (output !== null && typeof output === "object") {
104
+ const reason = output.reason;
105
+ if (typeof reason === "string" && reason.length > 0) {
106
+ return { status: "blocked", reason, evidence: step.output };
107
+ }
108
+ }
109
+ }
110
+ return {
111
+ status: "blocked",
112
+ reason: "The plan change could not continue within its configured policy.",
113
+ evidence: null,
114
+ };
115
+ }
116
+ export const planChangeWorkflow = defineWorkflow({
117
+ source: import.meta.url,
118
+ name: "plan-change",
119
+ input: parseInput,
120
+ startAt: "start",
121
+ maxSteps: 400,
122
+ includes: {
123
+ design: includeWorkflow(autoplanWorkflow, {
124
+ input: ({ input, outputs }) => {
125
+ const request = input;
126
+ const prior = outputs.design === undefined
127
+ ? request.previousPlan
128
+ : (() => {
129
+ const result = includedResult(autoplanWorkflow, outputs.design);
130
+ return result.exit === "ready" ? result.output.plan : request.previousPlan;
131
+ })();
132
+ const instructions = latestReplanInstructions(outputs);
133
+ return {
134
+ problem: request.task,
135
+ ...(request.scope !== undefined ? { scope: request.scope } : {}),
136
+ ...(request.constraints !== undefined ? { constraints: request.constraints } : {}),
137
+ ...(prior !== undefined ? { previousPlan: prior } : {}),
138
+ ...(instructions === undefined
139
+ ? request.newEvidence !== undefined
140
+ ? { newEvidence: request.newEvidence }
141
+ : {}
142
+ : {
143
+ newEvidence: {
144
+ priorEvidence: request.newEvidence,
145
+ operatorInstructions: instructions,
146
+ },
147
+ }),
148
+ };
149
+ },
150
+ }),
151
+ documentation: includeWorkflow(autodocWorkflow, {
152
+ input: (context) => {
153
+ const request = context.input;
154
+ const design = currentDesign(context);
155
+ return {
156
+ task: request.task,
157
+ plan: design.plan,
158
+ ...(request.repository !== undefined ? { repository: request.repository } : {}),
159
+ ...(request.documents !== undefined ? { documents: request.documents } : {}),
160
+ evidence: request.newEvidence,
161
+ };
162
+ },
163
+ }),
164
+ approval: includeWorkflow(planApprovalWorkflow, {
165
+ input: (context) => {
166
+ const request = context.input;
167
+ const documented = currentDocumentation(context);
168
+ const revision = context.state.steps.filter((step) => step.nodeId === "approval/routePolicy").length + 1;
169
+ return {
170
+ task: request.task,
171
+ plan: documented.plan,
172
+ planDigest: documented.planDigest,
173
+ approval: request.approval,
174
+ revision,
175
+ };
176
+ },
177
+ }),
178
+ },
179
+ exits: {
180
+ ready: {
181
+ from: "finalize",
182
+ validate: (value) => value,
183
+ },
184
+ blocked: {
185
+ from: "blocked",
186
+ validate: (value) => value,
187
+ },
188
+ },
189
+ nodes: {
190
+ start: compute({ run: () => ({ route: "design" }) }),
191
+ assessPlan: compute({
192
+ run: (context) => {
193
+ const request = context.input;
194
+ const design = currentDesign(context);
195
+ return request.previousPlan !== undefined && design.changed !== true
196
+ ? {
197
+ route: "blocked",
198
+ reason: "Planning returned the same plan for the unresolved evidence.",
199
+ evidence: design,
200
+ }
201
+ : { route: "document", planDigest: design.planDigest };
202
+ },
203
+ }),
204
+ replanGuard: compute({
205
+ run: (context) => {
206
+ const request = context.input;
207
+ const replans = context.state.steps.filter((step) => step.nodeId === "approval/replan").length;
208
+ return replans > request.approval.maxReplans
209
+ ? {
210
+ route: "blocked",
211
+ reason: `Plan approval reached the ${request.approval.maxReplans}-replan safety limit.`,
212
+ replans,
213
+ limit: request.approval.maxReplans,
214
+ }
215
+ : { route: "design", replans, limit: request.approval.maxReplans };
216
+ },
217
+ }),
218
+ finalize: compute({
219
+ run: (context) => {
220
+ const documented = currentDocumentation(context);
221
+ const approval = currentApproval(context);
222
+ const revision = context.state.steps.filter((step) => step.nodeId === "approval/routePolicy").length;
223
+ return {
224
+ status: "ready",
225
+ plan: documented.plan,
226
+ planDigest: documented.planDigest,
227
+ documents: documented.documentation.files,
228
+ revision,
229
+ approval: approval.resolution,
230
+ documentation: documented.documentation,
231
+ };
232
+ },
233
+ }),
234
+ blocked: compute({ run: blockedResult }),
235
+ },
236
+ edges: [
237
+ { from: "start", to: "design" },
238
+ { from: "design.ready", to: "assessPlan" },
239
+ { from: "design.blocked", to: "blocked" },
240
+ {
241
+ from: "assessPlan",
242
+ switch: { on: "$.route", cases: { document: "documentation", blocked: "blocked" } },
243
+ },
244
+ { from: "documentation.ready", to: "approval" },
245
+ { from: "documentation.blocked", to: "blocked" },
246
+ { from: "approval.continue", to: "finalize" },
247
+ { from: "approval.stop", to: "blocked" },
248
+ { from: "approval.replan", to: "replanGuard" },
249
+ {
250
+ from: "replanGuard",
251
+ switch: { on: "$.route", cases: { design: "design", blocked: "blocked" } },
252
+ },
253
+ ],
254
+ });
255
+ export default planChangeWorkflow;
256
+ //# sourceMappingURL=plan-change.workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-change.workflow.js","sourceRoot":"","sources":["../../src/builtins/plan-change.workflow.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { legacyDecisionPresentation, normalizeDecisionPresentation, } from "../workflows/decision-presentation.js";
1
+ import { normalizeDecisionPresentation, valueDecisionPresentation, } from "../workflows/decision-presentation.js";
2
2
  export function presentPlan(input) {
3
- const plan = legacyDecisionPresentation(input.plan);
3
+ const plan = valueDecisionPresentation(input.plan);
4
4
  const summary = readableSummary(planSummary(input.plan)) ??
5
5
  readableSummary(`Review the implementation plan for ${input.task}.`);
6
6
  return normalizeDecisionPresentation({
@@ -1 +1 @@
1
- {"version":3,"file":"plan-presentation.js","sourceRoot":"","sources":["../../src/builtins/plan-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,uCAAuC,CAAC;AAG/C,MAAM,UAAU,WAAW,CAAC,KAK3B;IACC,MAAM,IAAI,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,OAAO,GACX,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,eAAe,CAAC,sCAAsC,KAAK,CAAC,IAAI,GAAG,CAAE,CAAC;IACxE,OAAO,6BAA6B,CAAC;QACnC,MAAM,EAAE,uCAAuC;QAC/C,OAAO;QACP,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,CACnF;YACD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;YAC3C;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;oBACpD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE;iBAC7C;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC;SACR,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IACV,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACvF,MAAM,OAAO,GAAI,IAAgC,CAAC,OAAO,CAAC;IAC1D,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC"}
1
+ {"version":3,"file":"plan-presentation.js","sourceRoot":"","sources":["../../src/builtins/plan-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,uCAAuC,CAAC;AAG/C,MAAM,UAAU,WAAW,CAAC,KAK3B;IACC,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,OAAO,GACX,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,eAAe,CAAC,sCAAsC,KAAK,CAAC,IAAI,GAAG,CAAE,CAAC;IACxE,OAAO,6BAA6B,CAAC;QACnC,MAAM,EAAE,uCAAuC;QAC/C,OAAO;QACP,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;YACvC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;YAClC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACf,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB,CAAC,CACnF;YACD,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;YAC3C;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;oBACpD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE;iBAC7C;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC;SACR,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IACV,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACvF,MAAM,OAAO,GAAI,IAAgC,CAAC,OAAO,CAAC;IAC1D,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACxF,CAAC"}