@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
@@ -1,7 +1,8 @@
1
1
  import type { WorkflowNodeContext } from "../workflows/types.js";
2
2
  import { type AutodocInput } from "./autodoc.workflow.js";
3
- import { type AutoplanInput } from "./autoplan.workflow.js";
4
- import { type PlanApprovalInput } from "./plan-approval.workflow.js";
3
+ import { type AutoimplementConcurrency } from "./autoimplement-command-batches.js";
4
+ import { type PlanApprovalPolicy } from "./plan-approval.workflow.js";
5
+ import { type NormalizedPlanChangeInput } from "./plan-change.workflow.js";
5
6
  export type AutoimplementInput = {
6
7
  task: string;
7
8
  plan?: unknown;
@@ -16,10 +17,8 @@ export type AutoimplementInput = {
16
17
  planDigest: string;
17
18
  documents: string[];
18
19
  };
19
- approval?: {
20
- audience: string;
21
- maxReplans: number;
22
- };
20
+ approval?: PlanApprovalPolicy;
21
+ concurrency?: Partial<AutoimplementConcurrency>;
23
22
  };
24
23
  export type ExistingPlanDiscovery = {
25
24
  route: "found" | "blocked";
@@ -34,6 +33,19 @@ type ReviewFinding = {
34
33
  kind: "design" | "implementation";
35
34
  summary: string;
36
35
  };
36
+ type RepositoryReviewAssessment = {
37
+ id: string;
38
+ repository: string;
39
+ baseBranch: string;
40
+ headRevision: string;
41
+ dependencyFingerprint?: string;
42
+ invocationSucceeded: boolean;
43
+ p0: ReviewFinding[];
44
+ p1: ReviewFinding[];
45
+ p2: ReviewFinding[];
46
+ lower: ReviewFinding[];
47
+ reason: string;
48
+ };
37
49
  type ReviewAssessment = {
38
50
  route: "critical" | "p2" | "clean" | "command_error";
39
51
  invocationSucceeded: boolean;
@@ -42,6 +54,7 @@ type ReviewAssessment = {
42
54
  p2: ReviewFinding[];
43
55
  lower: ReviewFinding[];
44
56
  reason: string;
57
+ repositories?: RepositoryReviewAssessment[];
45
58
  };
46
59
  export type AutoimplementCompleted = {
47
60
  status: "completed";
@@ -100,83 +113,17 @@ export declare const autoimplementWorkflow: import("../workflows/types.js").Work
100
113
  };
101
114
  };
102
115
  }>;
103
- readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<PlanApprovalInput, {
104
- readonly continue: {
105
- readonly from: "continued";
106
- readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
107
- };
108
- readonly stop: {
109
- readonly from: "stopped";
110
- readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
111
- };
112
- readonly replan: {
113
- readonly from: "replan";
114
- readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
115
- };
116
- }, import("../workflows/types.js").WorkflowIncludeMap> & {
117
- nodes: {
118
- readonly approve: import("../workflows/types.js").WorkflowNodeCommon & {
119
- nodeType: "checkpoint";
120
- summary?: string;
121
- run?: (context: WorkflowNodeContext) => import("../workflows/types.js").MaybePromise<unknown>;
122
- humanDecision?: import("../workflows/types.js").HumanDecisionNodeContract;
123
- } & {
124
- readonly __humanChoices?: {
125
- readonly continue: {
126
- readonly label: "Yes, continue";
127
- };
128
- readonly stop: {
129
- readonly label: "No, stop";
130
- };
131
- readonly replan: {
132
- readonly label: "Replan";
133
- readonly input: import("../workflows/types.js").HumanDecisionTextInput & {
134
- name: "instructions";
135
- };
136
- };
137
- };
138
- };
139
- readonly continued: import("../workflows/types.js").ComputeNodeDefinition;
140
- readonly stopped: import("../workflows/types.js").ComputeNodeDefinition;
141
- readonly replan: import("../workflows/types.js").ComputeNodeDefinition;
142
- };
143
- includes?: import("../workflows/types.js").WorkflowIncludeMap;
144
- exits?: {
145
- readonly continue: {
146
- readonly from: "continued";
147
- readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
148
- };
149
- readonly stop: {
150
- readonly from: "stopped";
151
- readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
152
- };
153
- readonly replan: {
154
- readonly from: "replan";
155
- readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
156
- };
157
- };
158
- }>;
159
- readonly redesign: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutoplanInput, {
116
+ readonly redesign: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<NormalizedPlanChangeInput, {
160
117
  readonly ready: {
161
118
  readonly from: "finalize";
162
- readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
119
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeReady;
163
120
  };
164
121
  readonly blocked: {
165
122
  readonly from: "blocked";
166
- readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
123
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeBlocked;
167
124
  };
168
- }, import("../workflows/types.js").WorkflowIncludeMap> & {
169
- nodes: {
170
- readonly frame: import("../workflows/types.js").AgentNodeDefinition;
171
- readonly propose: import("../workflows/types.js").AgentNodeDefinition;
172
- readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
173
- readonly choose: import("../workflows/types.js").AgentNodeDefinition;
174
- readonly plan: import("../workflows/types.js").AgentNodeDefinition;
175
- readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
176
- readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
177
- };
178
- includes?: import("../workflows/types.js").WorkflowIncludeMap;
179
- exits?: {
125
+ }, {
126
+ readonly design: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./autoplan.workflow.js").AutoplanInput, {
180
127
  readonly ready: {
181
128
  readonly from: "finalize";
182
129
  readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
@@ -185,43 +132,28 @@ export declare const autoimplementWorkflow: import("../workflows/types.js").Work
185
132
  readonly from: "blocked";
186
133
  readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
187
134
  };
188
- };
189
- }>;
190
- }> & {
191
- nodes: {
192
- readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
193
- readonly findPlan: import("../workflows/types.js").AgentNodeDefinition;
194
- readonly routeFoundPlan: import("../workflows/types.js").ComputeNodeDefinition;
195
- readonly adoptPlan: import("../workflows/types.js").ComputeNodeDefinition;
196
- readonly maybeApproval: import("../workflows/types.js").ComputeNodeDefinition;
197
- readonly replanGuard: import("../workflows/types.js").ComputeNodeDefinition;
198
- readonly implement: import("../workflows/types.js").AgentNodeDefinition;
199
- readonly classifyImplementation: import("../workflows/types.js").AgentNodeDefinition;
200
- readonly challengeBlockerGuard: import("../workflows/types.js").ComputeNodeDefinition;
201
- readonly challengeBlocker: import("../workflows/types.js").AgentNodeDefinition;
202
- readonly verify: import("../workflows/types.js").AgentNodeDefinition;
203
- readonly classifyVerification: import("../workflows/types.js").AgentNodeDefinition;
204
- readonly fix: import("../workflows/types.js").AgentNodeDefinition;
205
- readonly publish: import("../workflows/types.js").AgentNodeDefinition;
206
- readonly authorReviewCommand: import("../workflows/types.js").AgentNodeDefinition;
207
- readonly runReview: import("../workflows/types.js").ShellActionNodeDefinition;
208
- readonly repairReviewCommand: import("../workflows/types.js").AgentNodeDefinition;
209
- readonly assessReview: import("../workflows/types.js").AgentNodeDefinition;
210
- readonly triageReview: import("../workflows/types.js").ComputeNodeDefinition;
211
- readonly addressP2: import("../workflows/types.js").AgentNodeDefinition;
212
- readonly verifyP2: import("../workflows/types.js").AgentNodeDefinition;
213
- readonly inspectComments: import("../workflows/types.js").AgentNodeDefinition;
214
- readonly inspectCi: import("../workflows/types.js").AgentNodeDefinition;
215
- readonly trackCi: import("../workflows/types.js").ShellActionNodeDefinition;
216
- readonly repairCiCommand: import("../workflows/types.js").AgentNodeDefinition;
217
- readonly assessTrackedCi: import("../workflows/types.js").AgentNodeDefinition;
218
- readonly opportunisticTest: import("../workflows/types.js").AgentNodeDefinition;
219
- readonly classifyCi: import("../workflows/types.js").AgentNodeDefinition;
220
- readonly finalizeDelivery: import("../workflows/types.js").AgentNodeDefinition;
221
- readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
222
- readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
223
- };
224
- includes?: {
135
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
136
+ nodes: {
137
+ readonly frame: import("../workflows/types.js").AgentNodeDefinition;
138
+ readonly propose: import("../workflows/types.js").AgentNodeDefinition;
139
+ readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
140
+ readonly choose: import("../workflows/types.js").AgentNodeDefinition;
141
+ readonly plan: import("../workflows/types.js").AgentNodeDefinition;
142
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
143
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
144
+ };
145
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
146
+ exits?: {
147
+ readonly ready: {
148
+ readonly from: "finalize";
149
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
150
+ };
151
+ readonly blocked: {
152
+ readonly from: "blocked";
153
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
154
+ };
155
+ };
156
+ }>;
225
157
  readonly documentation: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutodocInput, {
226
158
  readonly ready: {
227
159
  readonly from: "finalize";
@@ -253,7 +185,7 @@ export declare const autoimplementWorkflow: import("../workflows/types.js").Work
253
185
  };
254
186
  };
255
187
  }>;
256
- readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<PlanApprovalInput, {
188
+ readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./plan-approval.workflow.js").NormalizedPlanApprovalInput, {
257
189
  readonly continue: {
258
190
  readonly from: "continued";
259
191
  readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
@@ -268,6 +200,7 @@ export declare const autoimplementWorkflow: import("../workflows/types.js").Work
268
200
  };
269
201
  }, import("../workflows/types.js").WorkflowIncludeMap> & {
270
202
  nodes: {
203
+ readonly routePolicy: import("../workflows/types.js").ComputeNodeDefinition;
271
204
  readonly approve: import("../workflows/types.js").WorkflowNodeCommon & {
272
205
  nodeType: "checkpoint";
273
206
  summary?: string;
@@ -309,27 +242,231 @@ export declare const autoimplementWorkflow: import("../workflows/types.js").Work
309
242
  };
310
243
  };
311
244
  }>;
312
- readonly redesign: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutoplanInput, {
245
+ }> & {
246
+ nodes: {
247
+ readonly start: import("../workflows/types.js").ComputeNodeDefinition;
248
+ readonly assessPlan: import("../workflows/types.js").ComputeNodeDefinition;
249
+ readonly replanGuard: import("../workflows/types.js").ComputeNodeDefinition;
250
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
251
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
252
+ };
253
+ includes?: {
254
+ readonly design: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./autoplan.workflow.js").AutoplanInput, {
255
+ readonly ready: {
256
+ readonly from: "finalize";
257
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
258
+ };
259
+ readonly blocked: {
260
+ readonly from: "blocked";
261
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
262
+ };
263
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
264
+ nodes: {
265
+ readonly frame: import("../workflows/types.js").AgentNodeDefinition;
266
+ readonly propose: import("../workflows/types.js").AgentNodeDefinition;
267
+ readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
268
+ readonly choose: import("../workflows/types.js").AgentNodeDefinition;
269
+ readonly plan: import("../workflows/types.js").AgentNodeDefinition;
270
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
271
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
272
+ };
273
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
274
+ exits?: {
275
+ readonly ready: {
276
+ readonly from: "finalize";
277
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
278
+ };
279
+ readonly blocked: {
280
+ readonly from: "blocked";
281
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
282
+ };
283
+ };
284
+ }>;
285
+ readonly documentation: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutodocInput, {
286
+ readonly ready: {
287
+ readonly from: "finalize";
288
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
289
+ };
290
+ readonly blocked: {
291
+ readonly from: "blocked";
292
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
293
+ };
294
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
295
+ nodes: {
296
+ readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
297
+ readonly locatePlan: import("../workflows/types.js").AgentNodeDefinition;
298
+ readonly inspectDocumentation: import("../workflows/types.js").AgentNodeDefinition;
299
+ readonly updateDocumentation: import("../workflows/types.js").AgentNodeDefinition;
300
+ readonly verifyDocumentation: import("../workflows/types.js").AgentNodeDefinition;
301
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
302
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
303
+ };
304
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
305
+ exits?: {
306
+ readonly ready: {
307
+ readonly from: "finalize";
308
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
309
+ };
310
+ readonly blocked: {
311
+ readonly from: "blocked";
312
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
313
+ };
314
+ };
315
+ }>;
316
+ readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./plan-approval.workflow.js").NormalizedPlanApprovalInput, {
317
+ readonly continue: {
318
+ readonly from: "continued";
319
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
320
+ };
321
+ readonly stop: {
322
+ readonly from: "stopped";
323
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
324
+ };
325
+ readonly replan: {
326
+ readonly from: "replan";
327
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
328
+ };
329
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
330
+ nodes: {
331
+ readonly routePolicy: import("../workflows/types.js").ComputeNodeDefinition;
332
+ readonly approve: import("../workflows/types.js").WorkflowNodeCommon & {
333
+ nodeType: "checkpoint";
334
+ summary?: string;
335
+ run?: (context: WorkflowNodeContext) => import("../workflows/types.js").MaybePromise<unknown>;
336
+ humanDecision?: import("../workflows/types.js").HumanDecisionNodeContract;
337
+ } & {
338
+ readonly __humanChoices?: {
339
+ readonly continue: {
340
+ readonly label: "Yes, continue";
341
+ };
342
+ readonly stop: {
343
+ readonly label: "No, stop";
344
+ };
345
+ readonly replan: {
346
+ readonly label: "Replan";
347
+ readonly input: import("../workflows/types.js").HumanDecisionTextInput & {
348
+ name: "instructions";
349
+ };
350
+ };
351
+ };
352
+ };
353
+ readonly continued: import("../workflows/types.js").ComputeNodeDefinition;
354
+ readonly stopped: import("../workflows/types.js").ComputeNodeDefinition;
355
+ readonly replan: import("../workflows/types.js").ComputeNodeDefinition;
356
+ };
357
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
358
+ exits?: {
359
+ readonly continue: {
360
+ readonly from: "continued";
361
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
362
+ };
363
+ readonly stop: {
364
+ readonly from: "stopped";
365
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
366
+ };
367
+ readonly replan: {
368
+ readonly from: "replan";
369
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
370
+ };
371
+ };
372
+ }>;
373
+ };
374
+ exits?: {
313
375
  readonly ready: {
314
376
  readonly from: "finalize";
315
- readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
377
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeReady;
316
378
  };
317
379
  readonly blocked: {
318
380
  readonly from: "blocked";
319
- readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
381
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeBlocked;
382
+ };
383
+ };
384
+ }>;
385
+ }> & {
386
+ nodes: {
387
+ readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
388
+ readonly findPlan: import("../workflows/types.js").AgentNodeDefinition;
389
+ readonly routeFoundPlan: import("../workflows/types.js").ComputeNodeDefinition;
390
+ readonly adoptPlan: import("../workflows/types.js").ComputeNodeDefinition;
391
+ readonly timeoutFallbackGuard: import("../workflows/types.js").ComputeNodeDefinition;
392
+ readonly timeoutFallback: import("../workflows/types.js").AgentNodeDefinition;
393
+ readonly routeTimeoutFallback: import("../workflows/types.js").ComputeNodeDefinition;
394
+ readonly propagateSupportedFailure: import("../workflows/types.js").ComputeNodeDefinition;
395
+ readonly routeVerifyP2Result: import("../workflows/types.js").ComputeNodeDefinition;
396
+ readonly routeInspectCommentsResult: import("../workflows/types.js").ComputeNodeDefinition;
397
+ readonly routeInspectCiResult: import("../workflows/types.js").ComputeNodeDefinition;
398
+ readonly routeFinalizeDeliveryResult: import("../workflows/types.js").ComputeNodeDefinition;
399
+ readonly implement: import("../workflows/types.js").AgentNodeDefinition;
400
+ readonly classifyImplementation: import("../workflows/types.js").AgentNodeDefinition;
401
+ readonly challengeBlockerGuard: import("../workflows/types.js").ComputeNodeDefinition;
402
+ readonly challengeBlocker: import("../workflows/types.js").AgentNodeDefinition;
403
+ readonly planVerification: import("../workflows/types.js").AgentNodeDefinition;
404
+ readonly runVerification: import("../workflows/types.js").FunctionActionNodeDefinition;
405
+ readonly verify: import("../workflows/types.js").AgentNodeDefinition;
406
+ readonly classifyVerification: import("../workflows/types.js").AgentNodeDefinition;
407
+ readonly fix: import("../workflows/types.js").AgentNodeDefinition;
408
+ readonly publish: import("../workflows/types.js").AgentNodeDefinition;
409
+ readonly selectReviewCommands: import("../workflows/types.js").ComputeNodeDefinition;
410
+ readonly runReview: import("../workflows/types.js").FunctionActionNodeDefinition;
411
+ readonly repairReviewCommand: import("../workflows/types.js").AgentNodeDefinition;
412
+ readonly assessReview: import("../workflows/types.js").AgentNodeDefinition;
413
+ readonly triageReview: import("../workflows/types.js").ComputeNodeDefinition;
414
+ readonly addressP2: import("../workflows/types.js").AgentNodeDefinition;
415
+ readonly verifyP2: import("../workflows/types.js").AgentNodeDefinition;
416
+ readonly inspectComments: import("../workflows/types.js").AgentNodeDefinition;
417
+ readonly inspectCi: import("../workflows/types.js").AgentNodeDefinition;
418
+ readonly trackCi: import("../workflows/types.js").FunctionActionNodeDefinition;
419
+ readonly repairCiCommand: import("../workflows/types.js").AgentNodeDefinition;
420
+ readonly assessTrackedCi: import("../workflows/types.js").AgentNodeDefinition;
421
+ readonly opportunisticTest: import("../workflows/types.js").AgentNodeDefinition;
422
+ readonly classifyCi: import("../workflows/types.js").AgentNodeDefinition;
423
+ readonly finalizeDelivery: import("../workflows/types.js").AgentNodeDefinition;
424
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
425
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
426
+ };
427
+ includes?: {
428
+ readonly documentation: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutodocInput, {
429
+ readonly ready: {
430
+ readonly from: "finalize";
431
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
432
+ };
433
+ readonly blocked: {
434
+ readonly from: "blocked";
435
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
320
436
  };
321
437
  }, import("../workflows/types.js").WorkflowIncludeMap> & {
322
438
  nodes: {
323
- readonly frame: import("../workflows/types.js").AgentNodeDefinition;
324
- readonly propose: import("../workflows/types.js").AgentNodeDefinition;
325
- readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
326
- readonly choose: import("../workflows/types.js").AgentNodeDefinition;
327
- readonly plan: import("../workflows/types.js").AgentNodeDefinition;
328
- readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
439
+ readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
440
+ readonly locatePlan: import("../workflows/types.js").AgentNodeDefinition;
441
+ readonly inspectDocumentation: import("../workflows/types.js").AgentNodeDefinition;
442
+ readonly updateDocumentation: import("../workflows/types.js").AgentNodeDefinition;
443
+ readonly verifyDocumentation: import("../workflows/types.js").AgentNodeDefinition;
329
444
  readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
445
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
330
446
  };
331
447
  includes?: import("../workflows/types.js").WorkflowIncludeMap;
332
448
  exits?: {
449
+ readonly ready: {
450
+ readonly from: "finalize";
451
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
452
+ };
453
+ readonly blocked: {
454
+ readonly from: "blocked";
455
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
456
+ };
457
+ };
458
+ }>;
459
+ readonly redesign: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<NormalizedPlanChangeInput, {
460
+ readonly ready: {
461
+ readonly from: "finalize";
462
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeReady;
463
+ };
464
+ readonly blocked: {
465
+ readonly from: "blocked";
466
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeBlocked;
467
+ };
468
+ }, {
469
+ readonly design: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./autoplan.workflow.js").AutoplanInput, {
333
470
  readonly ready: {
334
471
  readonly from: "finalize";
335
472
  readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
@@ -338,6 +475,254 @@ export declare const autoimplementWorkflow: import("../workflows/types.js").Work
338
475
  readonly from: "blocked";
339
476
  readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
340
477
  };
478
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
479
+ nodes: {
480
+ readonly frame: import("../workflows/types.js").AgentNodeDefinition;
481
+ readonly propose: import("../workflows/types.js").AgentNodeDefinition;
482
+ readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
483
+ readonly choose: import("../workflows/types.js").AgentNodeDefinition;
484
+ readonly plan: import("../workflows/types.js").AgentNodeDefinition;
485
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
486
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
487
+ };
488
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
489
+ exits?: {
490
+ readonly ready: {
491
+ readonly from: "finalize";
492
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
493
+ };
494
+ readonly blocked: {
495
+ readonly from: "blocked";
496
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
497
+ };
498
+ };
499
+ }>;
500
+ readonly documentation: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutodocInput, {
501
+ readonly ready: {
502
+ readonly from: "finalize";
503
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
504
+ };
505
+ readonly blocked: {
506
+ readonly from: "blocked";
507
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
508
+ };
509
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
510
+ nodes: {
511
+ readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
512
+ readonly locatePlan: import("../workflows/types.js").AgentNodeDefinition;
513
+ readonly inspectDocumentation: import("../workflows/types.js").AgentNodeDefinition;
514
+ readonly updateDocumentation: import("../workflows/types.js").AgentNodeDefinition;
515
+ readonly verifyDocumentation: import("../workflows/types.js").AgentNodeDefinition;
516
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
517
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
518
+ };
519
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
520
+ exits?: {
521
+ readonly ready: {
522
+ readonly from: "finalize";
523
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
524
+ };
525
+ readonly blocked: {
526
+ readonly from: "blocked";
527
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
528
+ };
529
+ };
530
+ }>;
531
+ readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./plan-approval.workflow.js").NormalizedPlanApprovalInput, {
532
+ readonly continue: {
533
+ readonly from: "continued";
534
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
535
+ };
536
+ readonly stop: {
537
+ readonly from: "stopped";
538
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
539
+ };
540
+ readonly replan: {
541
+ readonly from: "replan";
542
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
543
+ };
544
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
545
+ nodes: {
546
+ readonly routePolicy: import("../workflows/types.js").ComputeNodeDefinition;
547
+ readonly approve: import("../workflows/types.js").WorkflowNodeCommon & {
548
+ nodeType: "checkpoint";
549
+ summary?: string;
550
+ run?: (context: WorkflowNodeContext) => import("../workflows/types.js").MaybePromise<unknown>;
551
+ humanDecision?: import("../workflows/types.js").HumanDecisionNodeContract;
552
+ } & {
553
+ readonly __humanChoices?: {
554
+ readonly continue: {
555
+ readonly label: "Yes, continue";
556
+ };
557
+ readonly stop: {
558
+ readonly label: "No, stop";
559
+ };
560
+ readonly replan: {
561
+ readonly label: "Replan";
562
+ readonly input: import("../workflows/types.js").HumanDecisionTextInput & {
563
+ name: "instructions";
564
+ };
565
+ };
566
+ };
567
+ };
568
+ readonly continued: import("../workflows/types.js").ComputeNodeDefinition;
569
+ readonly stopped: import("../workflows/types.js").ComputeNodeDefinition;
570
+ readonly replan: import("../workflows/types.js").ComputeNodeDefinition;
571
+ };
572
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
573
+ exits?: {
574
+ readonly continue: {
575
+ readonly from: "continued";
576
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
577
+ };
578
+ readonly stop: {
579
+ readonly from: "stopped";
580
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
581
+ };
582
+ readonly replan: {
583
+ readonly from: "replan";
584
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
585
+ };
586
+ };
587
+ }>;
588
+ }> & {
589
+ nodes: {
590
+ readonly start: import("../workflows/types.js").ComputeNodeDefinition;
591
+ readonly assessPlan: import("../workflows/types.js").ComputeNodeDefinition;
592
+ readonly replanGuard: import("../workflows/types.js").ComputeNodeDefinition;
593
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
594
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
595
+ };
596
+ includes?: {
597
+ readonly design: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./autoplan.workflow.js").AutoplanInput, {
598
+ readonly ready: {
599
+ readonly from: "finalize";
600
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
601
+ };
602
+ readonly blocked: {
603
+ readonly from: "blocked";
604
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
605
+ };
606
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
607
+ nodes: {
608
+ readonly frame: import("../workflows/types.js").AgentNodeDefinition;
609
+ readonly propose: import("../workflows/types.js").AgentNodeDefinition;
610
+ readonly ideal: import("../workflows/types.js").AgentNodeDefinition;
611
+ readonly choose: import("../workflows/types.js").AgentNodeDefinition;
612
+ readonly plan: import("../workflows/types.js").AgentNodeDefinition;
613
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
614
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
615
+ };
616
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
617
+ exits?: {
618
+ readonly ready: {
619
+ readonly from: "finalize";
620
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanReady;
621
+ };
622
+ readonly blocked: {
623
+ readonly from: "blocked";
624
+ readonly validate: (value: unknown) => import("./autoplan.workflow.js").AutoplanBlocked;
625
+ };
626
+ };
627
+ }>;
628
+ readonly documentation: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<AutodocInput, {
629
+ readonly ready: {
630
+ readonly from: "finalize";
631
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
632
+ };
633
+ readonly blocked: {
634
+ readonly from: "blocked";
635
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
636
+ };
637
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
638
+ nodes: {
639
+ readonly prepare: import("../workflows/types.js").ComputeNodeDefinition;
640
+ readonly locatePlan: import("../workflows/types.js").AgentNodeDefinition;
641
+ readonly inspectDocumentation: import("../workflows/types.js").AgentNodeDefinition;
642
+ readonly updateDocumentation: import("../workflows/types.js").AgentNodeDefinition;
643
+ readonly verifyDocumentation: import("../workflows/types.js").AgentNodeDefinition;
644
+ readonly finalize: import("../workflows/types.js").ComputeNodeDefinition;
645
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
646
+ };
647
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
648
+ exits?: {
649
+ readonly ready: {
650
+ readonly from: "finalize";
651
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").DocumentedPlan;
652
+ };
653
+ readonly blocked: {
654
+ readonly from: "blocked";
655
+ readonly validate: (value: unknown) => import("./autodoc.workflow.js").AutodocBlocked;
656
+ };
657
+ };
658
+ }>;
659
+ readonly approval: import("../workflows/types.js").WorkflowIncludeDefinition<import("../workflows/types.js").WorkflowDefinition<import("./plan-approval.workflow.js").NormalizedPlanApprovalInput, {
660
+ readonly continue: {
661
+ readonly from: "continued";
662
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
663
+ };
664
+ readonly stop: {
665
+ readonly from: "stopped";
666
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
667
+ };
668
+ readonly replan: {
669
+ readonly from: "replan";
670
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
671
+ };
672
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
673
+ nodes: {
674
+ readonly routePolicy: import("../workflows/types.js").ComputeNodeDefinition;
675
+ readonly approve: import("../workflows/types.js").WorkflowNodeCommon & {
676
+ nodeType: "checkpoint";
677
+ summary?: string;
678
+ run?: (context: WorkflowNodeContext) => import("../workflows/types.js").MaybePromise<unknown>;
679
+ humanDecision?: import("../workflows/types.js").HumanDecisionNodeContract;
680
+ } & {
681
+ readonly __humanChoices?: {
682
+ readonly continue: {
683
+ readonly label: "Yes, continue";
684
+ };
685
+ readonly stop: {
686
+ readonly label: "No, stop";
687
+ };
688
+ readonly replan: {
689
+ readonly label: "Replan";
690
+ readonly input: import("../workflows/types.js").HumanDecisionTextInput & {
691
+ name: "instructions";
692
+ };
693
+ };
694
+ };
695
+ };
696
+ readonly continued: import("../workflows/types.js").ComputeNodeDefinition;
697
+ readonly stopped: import("../workflows/types.js").ComputeNodeDefinition;
698
+ readonly replan: import("../workflows/types.js").ComputeNodeDefinition;
699
+ };
700
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
701
+ exits?: {
702
+ readonly continue: {
703
+ readonly from: "continued";
704
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalContinue;
705
+ };
706
+ readonly stop: {
707
+ readonly from: "stopped";
708
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalStop;
709
+ };
710
+ readonly replan: {
711
+ readonly from: "replan";
712
+ readonly validate: (value: unknown) => import("./plan-approval.workflow.js").PlanApprovalReplan;
713
+ };
714
+ };
715
+ }>;
716
+ };
717
+ exits?: {
718
+ readonly ready: {
719
+ readonly from: "finalize";
720
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeReady;
721
+ };
722
+ readonly blocked: {
723
+ readonly from: "blocked";
724
+ readonly validate: (value: unknown) => import("./plan-change.workflow.js").PlanChangeBlocked;
725
+ };
341
726
  };
342
727
  }>;
343
728
  };