@osolmaz/pi-workflows 0.12.1 → 0.13.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 (233) hide show
  1. package/README.md +59 -33
  2. package/dist/builtins/autodoc.workflow.d.ts +194 -7
  3. package/dist/builtins/autodoc.workflow.js +156 -30
  4. package/dist/builtins/autodoc.workflow.js.map +1 -1
  5. package/dist/builtins/autoimplement-command-batches.d.ts +1 -0
  6. package/dist/builtins/autoimplement-command-batches.js +29 -31
  7. package/dist/builtins/autoimplement-command-batches.js.map +1 -1
  8. package/dist/builtins/autoimplement.workflow.d.ts +1619 -97
  9. package/dist/builtins/autoimplement.workflow.js +416 -153
  10. package/dist/builtins/autoimplement.workflow.js.map +1 -1
  11. package/dist/builtins/autoplan.workflow.d.ts +126 -13
  12. package/dist/builtins/autoplan.workflow.js +200 -29
  13. package/dist/builtins/autoplan.workflow.js.map +1 -1
  14. package/dist/builtins/catalog.js +7 -5
  15. package/dist/builtins/catalog.js.map +1 -1
  16. package/dist/builtins/change-verification.workflow.d.ts +110 -0
  17. package/dist/builtins/change-verification.workflow.js +860 -0
  18. package/dist/builtins/change-verification.workflow.js.map +1 -0
  19. package/dist/builtins/index.d.ts +2 -1
  20. package/dist/builtins/index.js +1 -0
  21. package/dist/builtins/index.js.map +1 -1
  22. package/dist/builtins/monitor.workflow.d.ts +56 -21
  23. package/dist/builtins/monitor.workflow.js +499 -217
  24. package/dist/builtins/monitor.workflow.js.map +1 -1
  25. package/dist/builtins/plain-summary.workflow.d.ts +32 -0
  26. package/dist/builtins/plain-summary.workflow.js +134 -0
  27. package/dist/builtins/plain-summary.workflow.js.map +1 -0
  28. package/dist/builtins/plan-change.workflow.d.ts +527 -26
  29. package/dist/builtins/plan-change.workflow.js +26 -0
  30. package/dist/builtins/plan-change.workflow.js.map +1 -1
  31. package/dist/builtins/sanity-check.workflow.d.ts +45 -3
  32. package/dist/builtins/sanity-check.workflow.js +45 -7
  33. package/dist/builtins/sanity-check.workflow.js.map +1 -1
  34. package/dist/builtins/workspace-preparation.workflow.d.ts +75 -0
  35. package/dist/builtins/workspace-preparation.workflow.js +498 -0
  36. package/dist/builtins/workspace-preparation.workflow.js.map +1 -0
  37. package/dist/controllers/effects.d.ts +3 -2
  38. package/dist/controllers/effects.js +8 -1
  39. package/dist/controllers/effects.js.map +1 -1
  40. package/dist/controllers/index.d.ts +1 -1
  41. package/dist/controllers/index.js +1 -1
  42. package/dist/controllers/index.js.map +1 -1
  43. package/dist/controllers/manager.d.ts +1 -0
  44. package/dist/controllers/manager.js +41 -17
  45. package/dist/controllers/manager.js.map +1 -1
  46. package/dist/controllers/sqlite.d.ts +107 -85
  47. package/dist/controllers/sqlite.js +1611 -1486
  48. package/dist/controllers/sqlite.js.map +1 -1
  49. package/dist/controllers/store.d.ts +9 -8
  50. package/dist/controllers/store.js +1 -31
  51. package/dist/controllers/store.js.map +1 -1
  52. package/dist/controllers/types.d.ts +3 -0
  53. package/dist/controllers/workflow-engine-scheduler.d.ts +1 -1
  54. package/dist/controllers/workflow-engine-scheduler.js +3 -5
  55. package/dist/controllers/workflow-engine-scheduler.js.map +1 -1
  56. package/dist/controllers/workflows.d.ts +2 -2
  57. package/dist/controllers/workflows.js +11 -10
  58. package/dist/controllers/workflows.js.map +1 -1
  59. package/dist/extension/controller-host.js +2 -2
  60. package/dist/extension/controller-host.js.map +1 -1
  61. package/dist/extension/decision-channels.d.ts +2 -0
  62. package/dist/extension/decision-channels.js +311 -118
  63. package/dist/extension/decision-channels.js.map +1 -1
  64. package/dist/extension/executor.d.ts +9 -2
  65. package/dist/extension/executor.js +90 -6
  66. package/dist/extension/executor.js.map +1 -1
  67. package/dist/extension/herdr-viewer.d.ts +0 -1
  68. package/dist/extension/herdr-viewer.js +0 -4
  69. package/dist/extension/herdr-viewer.js.map +1 -1
  70. package/dist/extension/index.js +156 -117
  71. package/dist/extension/index.js.map +1 -1
  72. package/dist/extension/recorder.d.ts +3 -10
  73. package/dist/extension/recorder.js +13 -22
  74. package/dist/extension/recorder.js.map +1 -1
  75. package/dist/extension/step-message.d.ts +7 -2
  76. package/dist/extension/step-message.js +94 -2
  77. package/dist/extension/step-message.js.map +1 -1
  78. package/dist/extension/widget.js +6 -0
  79. package/dist/extension/widget.js.map +1 -1
  80. package/dist/host/rpc-executor.d.ts +3 -0
  81. package/dist/host/rpc-executor.js +2 -0
  82. package/dist/host/rpc-executor.js.map +1 -1
  83. package/dist/host/runner.d.ts +3 -6
  84. package/dist/host/runner.js +83 -32
  85. package/dist/host/runner.js.map +1 -1
  86. package/dist/render/graph-render.js +14 -8
  87. package/dist/render/graph-render.js.map +1 -1
  88. package/dist/state/database.d.ts +35 -0
  89. package/dist/state/database.js +287 -0
  90. package/dist/state/database.js.map +1 -0
  91. package/dist/state/index.d.ts +4 -0
  92. package/dist/state/index.js +5 -0
  93. package/dist/state/index.js.map +1 -0
  94. package/dist/state/json.d.ts +6 -0
  95. package/dist/state/json.js +38 -0
  96. package/dist/state/json.js.map +1 -0
  97. package/dist/state/mutation.d.ts +57 -0
  98. package/dist/state/mutation.js +255 -0
  99. package/dist/state/mutation.js.map +1 -0
  100. package/dist/state/schema.d.ts +6 -0
  101. package/dist/state/schema.js +473 -0
  102. package/dist/state/schema.js.map +1 -0
  103. package/dist/viewer/cli.d.ts +2 -2
  104. package/dist/viewer/cli.js +142 -122
  105. package/dist/viewer/cli.js.map +1 -1
  106. package/dist/viewer/render.d.ts +4 -4
  107. package/dist/viewer/render.js +2 -17
  108. package/dist/viewer/render.js.map +1 -1
  109. package/dist/viewer/session-reducer.d.ts +1 -1
  110. package/dist/viewer/session-reducer.js +1 -1
  111. package/dist/viewer/tui.d.ts +3 -3
  112. package/dist/viewer/tui.js +15 -13
  113. package/dist/viewer/tui.js.map +1 -1
  114. package/dist/viewer/watch.d.ts +2 -5
  115. package/dist/viewer/watch.js +13 -13
  116. package/dist/viewer/watch.js.map +1 -1
  117. package/dist/workflows/composition.js +12 -2
  118. package/dist/workflows/composition.js.map +1 -1
  119. package/dist/workflows/definition.d.ts +6 -2
  120. package/dist/workflows/definition.js +17 -0
  121. package/dist/workflows/definition.js.map +1 -1
  122. package/dist/workflows/engine.d.ts +6 -6
  123. package/dist/workflows/engine.js +183 -103
  124. package/dist/workflows/engine.js.map +1 -1
  125. package/dist/workflows/errors.d.ts +3 -3
  126. package/dist/workflows/errors.js +3 -3
  127. package/dist/workflows/human-decision.d.ts +29 -4
  128. package/dist/workflows/human-decision.js +547 -283
  129. package/dist/workflows/human-decision.js.map +1 -1
  130. package/dist/workflows/index.d.ts +4 -5
  131. package/dist/workflows/index.js +3 -4
  132. package/dist/workflows/index.js.map +1 -1
  133. package/dist/workflows/schema.js +17 -1
  134. package/dist/workflows/schema.js.map +1 -1
  135. package/dist/workflows/store.d.ts +83 -103
  136. package/dist/workflows/store.js +902 -951
  137. package/dist/workflows/store.js.map +1 -1
  138. package/dist/workflows/types.d.ts +55 -81
  139. package/docs/CONTROLLERS.md +10 -8
  140. package/docs/DEFERRED_TURNS.md +2 -2
  141. package/docs/DESIGN_PHILOSOPHY.md +4 -2
  142. package/docs/HUMAN_DECISIONS.md +13 -14
  143. package/docs/MONITOR.md +179 -231
  144. package/docs/SQLITE_STATE.md +219 -0
  145. package/docs/WORKFLOW_COMPOSITION.md +27 -19
  146. package/docs/WORKFLOW_STEP_MESSAGES.md +20 -18
  147. package/docs/WORKFLOW_UPDATES.md +10 -9
  148. package/docs/development.md +9 -9
  149. package/docs/live-replay-protocol.md +28 -37
  150. package/docs/plans/2026-08-16-workflow-updates-plan.md +1 -1
  151. package/docs/plans/2026-08-19-human-decision-gates-plan.md +1 -1
  152. package/docs/plans/2026-08-21-autoimplement-timeout-fallback-plan.md +1 -1
  153. package/docs/plans/2026-08-21-plan-change-approval-policy-plan.md +1 -1
  154. package/docs/plans/2026-08-21-sanity-check-plan.md +30 -16
  155. package/docs/plans/2026-08-22-goal-finishing-monitor-plan.md +200 -0
  156. package/docs/plans/2026-08-23-assistant-agent-completion-plan.md +701 -0
  157. package/docs/plans/2026-08-23-sqlite-state-plan.md +970 -0
  158. package/docs/plans/2026-08-24-change-scoped-verification-plan.md +419 -0
  159. package/docs/plans/replayable-run-bundles-implementation-plan.md +2 -2
  160. package/docs/plans/session-event-replay-implementation-plan.md +1 -1
  161. package/docs/plans/tui-viewer-implementation-plan.md +1 -1
  162. package/docs/session-event-journal.md +63 -434
  163. package/docs/tui-viewer.md +13 -15
  164. package/docs/workflows.md +111 -62
  165. package/examples/workflows/plain-summary.workflow.ts +1 -0
  166. package/herdr-plugin.toml +1 -1
  167. package/package.json +1 -1
  168. package/plugins/herdr/viewer.mjs +1 -11
  169. package/skills/autodoc/SKILL.md +7 -0
  170. package/skills/autoimplement/SKILL.md +4 -0
  171. package/skills/autoplan/SKILL.md +5 -4
  172. package/skills/monitor/SKILL.md +91 -163
  173. package/skills/pi-workflows/SKILL.md +7 -7
  174. package/skills/sanity-check/SKILL.md +1 -1
  175. package/src/builtins/autodoc.workflow.ts +184 -33
  176. package/src/builtins/autoimplement-command-batches.ts +39 -33
  177. package/src/builtins/autoimplement.workflow.ts +483 -175
  178. package/src/builtins/autoplan.workflow.ts +290 -40
  179. package/src/builtins/catalog.ts +7 -5
  180. package/src/builtins/change-verification.workflow.ts +1143 -0
  181. package/src/builtins/index.ts +7 -1
  182. package/src/builtins/monitor.workflow.ts +667 -250
  183. package/src/builtins/plain-summary.workflow.ts +185 -0
  184. package/src/builtins/plan-change.workflow.ts +35 -0
  185. package/src/builtins/sanity-check.workflow.ts +62 -7
  186. package/src/builtins/workspace-preparation.workflow.ts +668 -0
  187. package/src/controllers/effects.ts +7 -0
  188. package/src/controllers/index.ts +0 -6
  189. package/src/controllers/manager.ts +72 -32
  190. package/src/controllers/sqlite.ts +2420 -1948
  191. package/src/controllers/store.ts +17 -38
  192. package/src/controllers/types.ts +3 -0
  193. package/src/controllers/workflow-engine-scheduler.ts +4 -8
  194. package/src/controllers/workflows.ts +45 -21
  195. package/src/extension/controller-host.ts +1 -2
  196. package/src/extension/decision-channels.ts +427 -144
  197. package/src/extension/executor.ts +106 -6
  198. package/src/extension/herdr-viewer.ts +0 -5
  199. package/src/extension/index.ts +180 -132
  200. package/src/extension/recorder.ts +13 -22
  201. package/src/extension/step-message.ts +106 -4
  202. package/src/extension/widget.ts +8 -0
  203. package/src/host/rpc-executor.ts +4 -0
  204. package/src/host/runner.ts +93 -41
  205. package/src/render/graph-render.ts +11 -4
  206. package/src/state/database.ts +375 -0
  207. package/src/state/index.ts +29 -0
  208. package/src/state/json.ts +42 -0
  209. package/src/state/mutation.ts +435 -0
  210. package/src/state/schema.ts +475 -0
  211. package/src/viewer/cli.ts +151 -144
  212. package/src/viewer/render.ts +12 -24
  213. package/src/viewer/session-reducer.ts +1 -1
  214. package/src/viewer/tui.ts +18 -17
  215. package/src/viewer/watch.ts +13 -17
  216. package/src/workflows/composition.ts +12 -3
  217. package/src/workflows/definition.ts +36 -3
  218. package/src/workflows/engine.ts +212 -116
  219. package/src/workflows/errors.ts +3 -3
  220. package/src/workflows/human-decision.ts +795 -340
  221. package/src/workflows/index.ts +15 -19
  222. package/src/workflows/schema.ts +19 -1
  223. package/src/workflows/store.ts +1295 -1163
  224. package/src/workflows/types.ts +61 -81
  225. package/dist/workflows/artifacts.d.ts +0 -40
  226. package/dist/workflows/artifacts.js +0 -155
  227. package/dist/workflows/artifacts.js.map +0 -1
  228. package/dist/workflows/migrate-sources.d.ts +0 -42
  229. package/dist/workflows/migrate-sources.js +0 -133
  230. package/dist/workflows/migrate-sources.js.map +0 -1
  231. package/docs/run-bundles.md +0 -481
  232. package/src/workflows/artifacts.ts +0 -188
  233. package/src/workflows/migrate-sources.ts +0 -178
@@ -1,5 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
- import { agent, compute, defineWorkflow } from "../workflows/definition.js";
2
+ import { agent, compute, defineWorkflow, includeWorkflow } from "../workflows/definition.js";
3
+ import plainSummaryWorkflow, {} from "./plain-summary.workflow.js";
3
4
  function requireRecord(value, label) {
4
5
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
5
6
  throw new Error(`${label} must be an object`);
@@ -12,6 +13,18 @@ function requireString(value, label) {
12
13
  }
13
14
  return value.trim();
14
15
  }
16
+ function requireBoundedString(value, label, maxChars) {
17
+ const text = requireString(value, label);
18
+ if (text.length > maxChars)
19
+ throw new Error(`${label} exceeds ${maxChars} characters`);
20
+ return text;
21
+ }
22
+ function requireStringArray(value, label, maxItems = 32, maxChars = 2_000) {
23
+ if (!Array.isArray(value) || value.length > maxItems) {
24
+ throw new Error(`${label} must be an array with at most ${maxItems} strings`);
25
+ }
26
+ return value.map((item, index) => requireBoundedString(item, `${label}[${index}]`, maxChars));
27
+ }
15
28
  function parseInput(value) {
16
29
  const input = requireRecord(value, "autoplan input");
17
30
  const constraints = input.constraints;
@@ -27,33 +40,181 @@ function parseInput(value) {
27
40
  ...(input.newEvidence !== undefined ? { newEvidence: input.newEvidence } : {}),
28
41
  };
29
42
  }
30
- function parseSelection(value) {
43
+ function parseProposal(value, previousPlanSupplied) {
44
+ const proposal = requireRecord(value, "autoplan proposal");
45
+ if (!Array.isArray(proposal.candidates) ||
46
+ proposal.candidates.length < 2 ||
47
+ proposal.candidates.length > 4) {
48
+ throw new Error("autoplan proposal must contain two through four candidates");
49
+ }
50
+ const ids = new Set();
51
+ const candidates = proposal.candidates.map((value, index) => {
52
+ const candidate = requireRecord(value, `autoplan candidate ${index + 1}`);
53
+ const id = requireString(candidate.id, `autoplan candidate ${index + 1} id`);
54
+ if (!/^[a-z][a-z0-9-]{0,63}$/.test(id)) {
55
+ throw new Error(`autoplan candidate id ${JSON.stringify(id)} is invalid`);
56
+ }
57
+ if (id === "ideal" || ids.has(id)) {
58
+ throw new Error(`autoplan candidate id ${JSON.stringify(id)} is reserved or duplicated`);
59
+ }
60
+ ids.add(id);
61
+ return {
62
+ id,
63
+ title: requireBoundedString(candidate.title, `autoplan candidate ${id} title`, 200),
64
+ gist: requireBoundedString(candidate.gist, `autoplan candidate ${id} gist`, 1_000),
65
+ solution: requireBoundedString(candidate.solution, `autoplan candidate ${id} solution`, 20_000),
66
+ rationale: requireBoundedString(candidate.rationale, `autoplan candidate ${id} rationale`, 5_000),
67
+ parts: requireStringArray(candidate.parts, `autoplan candidate ${id} parts`),
68
+ tradeoffs: requireStringArray(candidate.tradeoffs, `autoplan candidate ${id} tradeoffs`),
69
+ };
70
+ });
71
+ let previousPlan;
72
+ if (proposal.previousPlan !== undefined) {
73
+ const account = requireRecord(proposal.previousPlan, "autoplan previousPlan account");
74
+ if (account.status === "candidate") {
75
+ const candidateId = requireString(account.candidateId, "autoplan previousPlan candidateId");
76
+ if (!ids.has(candidateId)) {
77
+ throw new Error("autoplan previousPlan candidateId must name a candidate");
78
+ }
79
+ previousPlan = { status: "candidate", candidateId };
80
+ }
81
+ else if (account.status === "rejected") {
82
+ previousPlan = {
83
+ status: "rejected",
84
+ reason: requireBoundedString(account.reason, "autoplan previousPlan rejection reason", 5_000),
85
+ };
86
+ }
87
+ else {
88
+ throw new Error("autoplan previousPlan status must be candidate or rejected");
89
+ }
90
+ }
91
+ if (previousPlanSupplied && previousPlan === undefined) {
92
+ throw new Error("autoplan proposal must account for the supplied previous plan");
93
+ }
94
+ return { candidates, ...(previousPlan !== undefined ? { previousPlan } : {}) };
95
+ }
96
+ function parseIdeal(value) {
97
+ const ideal = requireRecord(value, "autoplan ideal");
98
+ return {
99
+ ideal: requireBoundedString(ideal.ideal, "autoplan ideal end state", 20_000),
100
+ outsideDependencies: requireStringArray(ideal.outsideDependencies, "autoplan ideal outsideDependencies"),
101
+ additionalValue: requireStringArray(ideal.additionalValue, "autoplan ideal additionalValue"),
102
+ };
103
+ }
104
+ function parseSelection(value, proposal) {
31
105
  const selection = requireRecord(value, "autoplan selection");
32
106
  if (selection.status !== "ready" && selection.status !== "blocked") {
33
107
  throw new Error("autoplan selection status must be ready or blocked");
34
108
  }
35
- requireString(selection.selected, "autoplan selected solution");
36
- requireString(selection.why, "autoplan selection reason");
37
- if (selection.status === "blocked")
38
- requireString(selection.blocker, "autoplan blocker");
39
- return selection;
109
+ const validIds = new Set([...proposal.candidates.map((candidate) => candidate.id), "ideal"]);
110
+ const selectedId = requireString(selection.selectedId, "autoplan selectedId");
111
+ if (!validIds.has(selectedId))
112
+ throw new Error("autoplan selectedId must name a candidate");
113
+ if (!Array.isArray(selection.rejected)) {
114
+ throw new Error("autoplan rejected plans must be an array");
115
+ }
116
+ const rejectedIds = new Set();
117
+ const rejected = selection.rejected.map((value, index) => {
118
+ const rejection = requireRecord(value, `autoplan rejection ${index + 1}`);
119
+ const id = requireString(rejection.id, `autoplan rejection ${index + 1} id`);
120
+ if (!validIds.has(id) || id === selectedId || rejectedIds.has(id)) {
121
+ throw new Error(`autoplan rejected id ${JSON.stringify(id)} is invalid or duplicated`);
122
+ }
123
+ rejectedIds.add(id);
124
+ return {
125
+ id,
126
+ reason: requireBoundedString(rejection.reason, `autoplan rejection ${id} reason`, 5_000),
127
+ };
128
+ });
129
+ const expectedRejected = [...validIds].filter((id) => id !== selectedId).sort();
130
+ if (JSON.stringify([...rejectedIds].sort()) !== JSON.stringify(expectedRejected)) {
131
+ throw new Error("autoplan selection must reject every non-selected candidate exactly once");
132
+ }
133
+ const blocker = selection.status === "blocked"
134
+ ? requireString(selection.blocker, "autoplan blocker")
135
+ : undefined;
136
+ return {
137
+ status: selection.status,
138
+ selectedId,
139
+ why: requireBoundedString(selection.why, "autoplan selection reason", 5_000),
140
+ relationshipToIdeal: requireBoundedString(selection.relationshipToIdeal, "autoplan relationshipToIdeal", 5_000),
141
+ rejected,
142
+ compromises: requireStringArray(selection.compromises, "autoplan compromises"),
143
+ ...(blocker !== undefined ? { blocker } : {}),
144
+ };
40
145
  }
41
146
  function digest(value) {
42
147
  return `sha256:${createHash("sha256").update(JSON.stringify(value)).digest("hex")}`;
43
148
  }
149
+ function plainSummaryResult(value, label) {
150
+ const included = requireRecord(value, label);
151
+ if (included.exit !== "completed")
152
+ throw new Error(`${label} must use the completed exit`);
153
+ const result = requireRecord(included.output, `${label} output`);
154
+ return { text: requireString(result.text, `${label} text`) };
155
+ }
156
+ function candidateSummary(proposal, ideal, id) {
157
+ if (id === "ideal")
158
+ return { id, title: "Ideal end state", gist: ideal.ideal };
159
+ const candidate = proposal.candidates.find((item) => item.id === id);
160
+ if (candidate === undefined)
161
+ throw new Error(`autoplan candidate ${JSON.stringify(id)} is missing`);
162
+ return { id, title: candidate.title, gist: candidate.gist };
163
+ }
164
+ function summaryInput(outputs, blocked, input) {
165
+ const proposal = outputs.propose;
166
+ const selection = outputs.choose;
167
+ const ideal = outputs.ideal;
168
+ const selected = candidateSummary(proposal, ideal, selection.selectedId);
169
+ return {
170
+ source: {
171
+ status: selection.status,
172
+ selected,
173
+ why: selection.why,
174
+ implementationPlan: blocked ? null : outputs.plan,
175
+ rejected: selection.rejected.map((rejection) => ({
176
+ ...candidateSummary(proposal, ideal, rejection.id),
177
+ reason: rejection.reason,
178
+ })),
179
+ relationshipToIdeal: selection.relationshipToIdeal,
180
+ compromises: selection.compromises,
181
+ ...(proposal.previousPlan !== undefined && input.previousPlan !== undefined
182
+ ? { previousPlan: { plan: input.previousPlan, account: proposal.previousPlan } }
183
+ : {}),
184
+ ...(selection.blocker !== undefined ? { blocker: selection.blocker } : {}),
185
+ },
186
+ purpose: blocked
187
+ ? "Explain plainly why planning is blocked and summarize every considered plan."
188
+ : "Explain the recommended plan plainly, summarize its main implementation steps, and give one-line reasons for rejecting every other plan.",
189
+ mustInclude: [
190
+ selected.title,
191
+ ...selection.rejected.map((rejection) => candidateSummary(proposal, ideal, rejection.id).title),
192
+ ...(proposal.previousPlan !== undefined && input.previousPlan !== undefined
193
+ ? ["Previous plan"]
194
+ : []),
195
+ ...(blocked ? [selection.blocker] : ["The plan is selected for approval"]),
196
+ ],
197
+ maxChars: 2_500,
198
+ maxSentences: 12,
199
+ format: "mixed",
200
+ };
201
+ }
44
202
  export const autoplanWorkflow = defineWorkflow({
45
203
  source: import.meta.url,
46
204
  contractId: "pi-workflows.autoplan.v1",
47
205
  name: "autoplan",
48
206
  input: parseInput,
49
207
  title: ({ input }) => `autoplan: ${input.problem.slice(0, 60)}`,
50
- presentationPrompt: [
51
- "Present the selected practical solution and its implementation plan.",
52
- "Briefly state how the ideal informed the choice and what was excluded as outside scope.",
53
- "Do not ask the user to choose between the options.",
54
- ].join("\n"),
55
208
  startAt: "frame",
56
- maxSteps: 10,
209
+ maxSteps: 16,
210
+ includes: {
211
+ readySummary: includeWorkflow(plainSummaryWorkflow, {
212
+ input: ({ outputs, input }) => summaryInput(outputs, false, input),
213
+ }),
214
+ blockedSummary: includeWorkflow(plainSummaryWorkflow, {
215
+ input: ({ outputs, input }) => summaryInput(outputs, true, input),
216
+ }),
217
+ },
57
218
  exits: {
58
219
  ready: {
59
220
  from: "finalize",
@@ -83,47 +244,52 @@ export const autoplanWorkflow = defineWorkflow({
83
244
  validate: (value) => requireRecord(value, "autoplan frame"),
84
245
  }),
85
246
  propose: agent({
86
- statusDetail: "devising a solution",
87
- prompt: ({ outputs }) => [
88
- "Devise the most elegant, long-term production-ready solution within the framed scope.",
247
+ statusDetail: "devising candidate solutions",
248
+ prompt: ({ outputs, input }) => [
249
+ "Devise two through four distinct practical solutions within the framed scope.",
250
+ "Each candidate needs a stable lowercase id, short title, plain gist, full solution, rationale, parts, and trade-offs.",
89
251
  "Prefer a small number of general parts, clear ownership boundaries, and existing public interfaces.",
90
252
  "Avoid one-off mechanisms and unnecessary infrastructure.",
253
+ "When a previous plan exists, mark it as a candidate or reject it with a reason.",
91
254
  "Do not implement anything.",
92
255
  `Problem frame: ${JSON.stringify(outputs.frame)}`,
256
+ `Previous plan: ${JSON.stringify(input.previousPlan ?? null)}`,
93
257
  ].join("\n"),
94
- expectedOutput: `{ "solution": "proposal", "rationale": "why", "parts": ["part"], "tradeoffs": ["trade-off"] }`,
95
- validate: (value) => requireRecord(value, "autoplan proposal"),
258
+ expectedOutput: `{ "candidates": [{ "id": "stable-id", "title": "short title", "gist": "plain gist", "solution": "full proposal", "rationale": "why", "parts": ["part"], "tradeoffs": ["trade-off"] }], "previousPlan": { "status": "candidate", "candidateId": "id" } | { "status": "rejected", "reason": "reason" } }`,
259
+ validate: (value, { input }) => parseProposal(value, input.previousPlan !== undefined),
96
260
  }),
97
261
  ideal: agent({
98
262
  statusDetail: "describing the ideal end state",
99
263
  prompt: ({ outputs, input }) => [
100
- "Set the proposal aside and describe the holy grail for this problem.",
101
- "The holy grail can match the proposal or exceed the current scope.",
264
+ "Set the practical candidates aside and describe the holy grail for this problem.",
265
+ "The holy grail can match a candidate or exceed the current scope.",
102
266
  "Name dependencies outside our authority instead of assuming they can change.",
103
- "Explain the practical value beyond the proposal.",
267
+ "Explain the practical value beyond the candidates.",
104
268
  `Problem frame: ${JSON.stringify(outputs.frame)}`,
105
- `Proposal: ${JSON.stringify(outputs.propose)}`,
269
+ `Candidates: ${JSON.stringify(outputs.propose)}`,
106
270
  `New evidence: ${JSON.stringify(input.newEvidence ?? null)}`,
107
271
  ].join("\n"),
108
272
  expectedOutput: `{ "ideal": "ideal end state", "outsideDependencies": ["dependency"], "additionalValue": ["benefit"] }`,
109
- validate: (value) => requireRecord(value, "autoplan ideal"),
273
+ validate: parseIdeal,
110
274
  }),
111
275
  choose: agent({
112
276
  statusDetail: "choosing the practical solution",
113
277
  prompt: ({ outputs }) => [
114
278
  "Choose the right solution without asking the user to decide.",
115
279
  "Choose the ideal when it is production-ready, proportionate, in scope, and implementable through interfaces we control.",
116
- "Otherwise choose the strongest practical in-scope solution with a clear path toward the ideal.",
280
+ "Otherwise choose the strongest practical in-scope candidate with a clear path toward the ideal.",
117
281
  "Do not block only because the ideal depends on work outside our authority.",
118
282
  "Do not make an upstream change, unrelated repository, new service, or unapproved resource a requirement.",
119
283
  "Prefer the simpler choice when options give materially equivalent results.",
284
+ "Return one rejection reason for every non-selected candidate, including the ideal when it is not selected.",
120
285
  "Return blocked only when no truthful in-scope solution can meet the success criteria.",
121
286
  `Frame: ${JSON.stringify(outputs.frame)}`,
122
- `Proposal: ${JSON.stringify(outputs.propose)}`,
287
+ `Candidates: ${JSON.stringify(outputs.propose)}`,
288
+ `Ideal candidate id: ideal`,
123
289
  `Ideal: ${JSON.stringify(outputs.ideal)}`,
124
290
  ].join("\n"),
125
- expectedOutput: `{ "status": "ready" | "blocked", "selected": "solution", "why": "reason", "relationshipToIdeal": "relationship", "excluded": ["excluded work"], "compromises": ["compromise"], "blocker": "required only when blocked" }`,
126
- validate: parseSelection,
291
+ expectedOutput: `{ "status": "ready" | "blocked", "selectedId": "candidate-id-or-ideal", "why": "reason", "relationshipToIdeal": "relationship", "rejected": [{ "id": "other-id", "reason": "why it lost" }], "compromises": ["compromise"], "blocker": "required only when blocked" }`,
292
+ validate: (value, { outputs }) => parseSelection(value, outputs.propose),
127
293
  }),
128
294
  plan: agent({
129
295
  timeoutMs: 30 * 60_000,
@@ -137,6 +303,7 @@ export const autoplanWorkflow = defineWorkflow({
137
303
  "Do not implement the plan.",
138
304
  `Frame: ${JSON.stringify(outputs.frame)}`,
139
305
  `Selection: ${JSON.stringify(outputs.choose)}`,
306
+ `Candidates: ${JSON.stringify(outputs.propose)}`,
140
307
  `Previous plan: ${JSON.stringify(input.previousPlan ?? null)}`,
141
308
  `New evidence: ${JSON.stringify(input.newEvidence ?? null)}`,
142
309
  ].join("\n"),
@@ -152,6 +319,7 @@ export const autoplanWorkflow = defineWorkflow({
152
319
  proposal: outputs.propose,
153
320
  ideal: outputs.ideal,
154
321
  selection,
322
+ plainSummary: plainSummaryResult(outputs.blockedSummary, "autoplan blocked summary"),
155
323
  reason: requireString(selection.blocker, "autoplan blocker"),
156
324
  };
157
325
  },
@@ -168,6 +336,7 @@ export const autoplanWorkflow = defineWorkflow({
168
336
  ideal: outputs.ideal,
169
337
  selection: outputs.choose,
170
338
  plan: outputs.plan,
339
+ plainSummary: plainSummaryResult(outputs.readySummary, "autoplan ready summary"),
171
340
  planDigest,
172
341
  ...(previousPlanDigest !== undefined ? { previousPlanDigest } : {}),
173
342
  changed: previousPlanDigest === undefined || previousPlanDigest !== planDigest,
@@ -181,9 +350,11 @@ export const autoplanWorkflow = defineWorkflow({
181
350
  { from: "ideal", to: "choose" },
182
351
  {
183
352
  from: "choose",
184
- switch: { on: "$.status", cases: { ready: "plan", blocked: "blocked" } },
353
+ switch: { on: "$.status", cases: { ready: "plan", blocked: "blockedSummary" } },
185
354
  },
186
- { from: "plan", to: "finalize" },
355
+ { from: "plan", to: "readySummary" },
356
+ { from: "readySummary.completed", to: "finalize" },
357
+ { from: "blockedSummary.completed", to: "blocked" },
187
358
  ],
188
359
  });
189
360
  export default autoplanWorkflow;
@@ -1 +1 @@
1
- {"version":3,"file":"autoplan.workflow.js","sourceRoot":"","sources":["../../src/builtins/autoplan.workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autoplan.workflow.js","sourceRoot":"","sources":["../../src/builtins/autoplan.workflow.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,19 @@ import autodocWorkflow from "./autodoc.workflow.js";
3
3
  import autoimplementWorkflow from "./autoimplement.workflow.js";
4
4
  import autoplanWorkflow from "./autoplan.workflow.js";
5
5
  import monitorWorkflow from "./monitor.workflow.js";
6
+ import plainSummaryWorkflow from "./plain-summary.workflow.js";
6
7
  import planApprovalWorkflow from "./plan-approval.workflow.js";
7
8
  import sanityCheckWorkflow from "./sanity-check.workflow.js";
8
9
  export const builtinWorkflowCatalog = new BuiltinWorkflowCatalog([
9
- { id: "autoplan", revision: "1", definition: autoplanWorkflow },
10
- { id: "autodoc", revision: "1", definition: autodocWorkflow },
11
- { id: "autoimplement", revision: "8", definition: autoimplementWorkflow },
10
+ { id: "plain-summary", revision: "1", definition: plainSummaryWorkflow },
11
+ { id: "autoplan", revision: "2", definition: autoplanWorkflow },
12
+ { id: "autodoc", revision: "2", definition: autodocWorkflow },
13
+ { id: "autoimplement", revision: "10", definition: autoimplementWorkflow },
12
14
  { id: "plan-approval", revision: "4", definition: planApprovalWorkflow },
13
- { id: "sanity-check", revision: "3", definition: sanityCheckWorkflow },
15
+ { id: "sanity-check", revision: "4", definition: sanityCheckWorkflow },
14
16
  {
15
17
  id: "monitor",
16
- revision: "9",
18
+ revision: "11",
17
19
  definition: monitorWorkflow,
18
20
  legacySources: [
19
21
  {
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/builtins/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,qBAAqB,MAAM,6BAA6B,CAAC;AAChE,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAC/D,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,CAAC;IAC/D,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE;IAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE;IAC7D,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,qBAAqB,EAAE;IACzE,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACxE,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE;IACtE;QACE,EAAE,EAAE,SAAS;QACb,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE;YACb;gBACE,YAAY,EAAE,kEAAkE;gBAChF,QAAQ,EAAE,GAAG;gBACb,YAAY,EAAE;oBACZ,mCAAmC;oBACnC,oCAAoC;oBACpC,oCAAoC;oBACpC,qCAAqC;iBACtC;aACF;YACD;gBACE,YAAY,EAAE,kEAAkE;gBAChF,QAAQ,EAAE,GAAG;gBACb,YAAY,EAAE,CAAC,oCAAoC,CAAC;aACrD;YACD;gBACE,YAAY,EAAE,kEAAkE;gBAChF,QAAQ,EAAE,GAAG;gBACb,YAAY,EAAE,CAAC,oCAAoC,CAAC;aACrD;SACF;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/builtins/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,qBAAqB,MAAM,6BAA6B,CAAC;AAChE,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,eAAe,MAAM,uBAAuB,CAAC;AACpD,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAC/D,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAC/D,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,CAAC;IAC/D,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACxE,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE;IAC/D,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE;IAC7D,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,qBAAqB,EAAE;IAC1E,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,oBAAoB,EAAE;IACxE,EAAE,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE;IACtE;QACE,EAAE,EAAE,SAAS;QACb,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE;YACb;gBACE,YAAY,EAAE,kEAAkE;gBAChF,QAAQ,EAAE,GAAG;gBACb,YAAY,EAAE;oBACZ,mCAAmC;oBACnC,oCAAoC;oBACpC,oCAAoC;oBACpC,qCAAqC;iBACtC;aACF;YACD;gBACE,YAAY,EAAE,kEAAkE;gBAChF,QAAQ,EAAE,GAAG;gBACb,YAAY,EAAE,CAAC,oCAAoC,CAAC;aACrD;YACD;gBACE,YAAY,EAAE,kEAAkE;gBAChF,QAAQ,EAAE,GAAG;gBACb,YAAY,EAAE,CAAC,oCAAoC,CAAC;aACrD;SACF;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { type CommandBatchItem, type CommandBatchResult } from "../workflows/command-batch.js";
2
+ import { type PreparedWorkspace } from "./workspace-preparation.workflow.js";
3
+ export declare const CHANGE_VERIFICATION_SCHEMA = "pi-workflows.change-verification.v1";
4
+ export type FindingFormat = "text" | "json";
5
+ export type MechanicalFix = {
6
+ command: string;
7
+ args: string[];
8
+ files: string[];
9
+ timeoutMs: number;
10
+ maxOutputChars: number;
11
+ expectedDiff: string;
12
+ };
13
+ export type VerificationCheck = CommandBatchItem & {
14
+ readOnly: boolean;
15
+ baseEligible: boolean;
16
+ changedFileScope: boolean;
17
+ findingFormat: FindingFormat;
18
+ mechanicalFix?: MechanicalFix;
19
+ };
20
+ export type VerificationFinding = {
21
+ checkId: string;
22
+ kind: "related" | "unrelated" | "fixedBaseline" | "unknown" | "untested";
23
+ summary: string;
24
+ fingerprint: string;
25
+ candidateOutputRef?: string;
26
+ baseOutputRef?: string;
27
+ };
28
+ export type RepairAttempt = {
29
+ attempt: number;
30
+ kind: "mechanical" | "semantic" | "judgment";
31
+ fingerprint: string;
32
+ changedFiles: string[];
33
+ result: string;
34
+ };
35
+ export type ChangeVerificationResult = {
36
+ schema: typeof CHANGE_VERIFICATION_SCHEMA;
37
+ route: "ready" | "repairable" | "needsJudgment" | "blocked";
38
+ originatingWorkflow: string;
39
+ qualifiedNode: string;
40
+ workspace: PreparedWorkspace;
41
+ changedFiles: string[];
42
+ candidateCommands: CommandBatchResult | null;
43
+ baseCommands: CommandBatchResult | null;
44
+ relatedFailures: VerificationFinding[];
45
+ unrelatedFailures: VerificationFinding[];
46
+ fixedBaselineFailures: VerificationFinding[];
47
+ unknownFailures: VerificationFinding[];
48
+ untestedChecks: VerificationFinding[];
49
+ repairAttempts: RepairAttempt[];
50
+ failureFingerprint: string;
51
+ outputReferences: string[];
52
+ reason: string;
53
+ evidence: string[];
54
+ };
55
+ export type ChangeVerificationInput = {
56
+ originatingWorkflow: string;
57
+ qualifiedNode: string;
58
+ workspace: PreparedWorkspace;
59
+ checks?: VerificationCheck[];
60
+ changedFiles?: string[];
61
+ untested?: string[];
62
+ plan?: unknown;
63
+ maxConcurrency?: number;
64
+ };
65
+ type ExecutionState = {
66
+ checks: VerificationCheck[];
67
+ candidate: CommandBatchResult;
68
+ base: CommandBatchResult;
69
+ baseEvidence: string[];
70
+ cleanupEvidence: string[];
71
+ repairAttempts: RepairAttempt[];
72
+ };
73
+ export declare function parseChangeVerificationInput(value: unknown): ChangeVerificationInput;
74
+ export declare function classifyVerification(input: ChangeVerificationInput, state: ExecutionState): ChangeVerificationResult;
75
+ export declare const changeVerificationWorkflow: import("../workflows/types.js").WorkflowDefinition<ChangeVerificationInput, {
76
+ readonly ready: {
77
+ readonly from: "ready";
78
+ readonly validate: (value: unknown) => ChangeVerificationResult;
79
+ };
80
+ readonly blocked: {
81
+ readonly from: "blocked";
82
+ readonly validate: (value: unknown) => ChangeVerificationResult;
83
+ };
84
+ }, import("../workflows/types.js").WorkflowIncludeMap> & {
85
+ nodes: {
86
+ readonly selectChecks: import("../workflows/types.js").ComputeNodeDefinition;
87
+ readonly planChecks: import("../workflows/types.js").SubmittedAgentNodeDefinition;
88
+ readonly runCandidate: import("../workflows/types.js").FunctionActionNodeDefinition;
89
+ readonly runBase: import("../workflows/types.js").FunctionActionNodeDefinition;
90
+ readonly classify: import("../workflows/types.js").ComputeNodeDefinition;
91
+ readonly repairGuard: import("../workflows/types.js").ComputeNodeDefinition;
92
+ readonly mechanicalRepair: import("../workflows/types.js").FunctionActionNodeDefinition;
93
+ readonly semanticRepair: import("../workflows/types.js").SubmittedAgentNodeDefinition;
94
+ readonly judge: import("../workflows/types.js").SubmittedAgentNodeDefinition;
95
+ readonly ready: import("../workflows/types.js").ComputeNodeDefinition;
96
+ readonly blocked: import("../workflows/types.js").ComputeNodeDefinition;
97
+ };
98
+ includes?: import("../workflows/types.js").WorkflowIncludeMap;
99
+ exits?: {
100
+ readonly ready: {
101
+ readonly from: "ready";
102
+ readonly validate: (value: unknown) => ChangeVerificationResult;
103
+ };
104
+ readonly blocked: {
105
+ readonly from: "blocked";
106
+ readonly validate: (value: unknown) => ChangeVerificationResult;
107
+ };
108
+ };
109
+ };
110
+ export default changeVerificationWorkflow;