infinity-harness 2.8.9 → 2.8.11

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 (192) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/extensions/infinity-harness/index.js +3614 -0
  3. package/dist/extensions/infinity-harness/index.js.map +1 -0
  4. package/dist/src/approval.js +154 -0
  5. package/dist/src/approval.js.map +1 -0
  6. package/dist/src/core/brief.js +309 -0
  7. package/dist/src/core/brief.js.map +1 -0
  8. package/dist/src/core/config.js +539 -0
  9. package/dist/src/core/config.js.map +1 -0
  10. package/dist/src/core/exec.js +106 -0
  11. package/dist/src/core/exec.js.map +1 -0
  12. package/dist/src/core/featureList.js +365 -0
  13. package/dist/src/core/featureList.js.map +1 -0
  14. package/dist/src/core/fsx.js +123 -0
  15. package/dist/src/core/fsx.js.map +1 -0
  16. package/dist/src/core/gates.js +490 -0
  17. package/dist/src/core/gates.js.map +1 -0
  18. package/dist/src/core/init.js +480 -0
  19. package/dist/src/core/init.js.map +1 -0
  20. package/dist/src/core/lock.js +183 -0
  21. package/dist/src/core/lock.js.map +1 -0
  22. package/dist/src/core/modelRouter.js +185 -0
  23. package/dist/src/core/modelRouter.js.map +1 -0
  24. package/dist/src/core/paths.js +129 -0
  25. package/dist/src/core/paths.js.map +1 -0
  26. package/dist/src/core/phases.js +254 -0
  27. package/dist/src/core/phases.js.map +1 -0
  28. package/dist/src/core/plan.js +15 -0
  29. package/dist/src/core/plan.js.map +1 -0
  30. package/dist/src/core/runState.js +126 -0
  31. package/dist/src/core/runState.js.map +1 -0
  32. package/dist/src/core/settings.js +877 -0
  33. package/dist/src/core/settings.js.map +1 -0
  34. package/dist/src/core/skills.js +319 -0
  35. package/dist/src/core/skills.js.map +1 -0
  36. package/dist/src/core/skillsAudit.js +194 -0
  37. package/dist/src/core/skillsAudit.js.map +1 -0
  38. package/dist/src/core/types.js +77 -0
  39. package/dist/src/core/types.js.map +1 -0
  40. package/dist/src/daemon/budget.js +85 -0
  41. package/dist/src/daemon/budget.js.map +1 -0
  42. package/dist/src/daemon/guard.js +122 -0
  43. package/dist/src/daemon/guard.js.map +1 -0
  44. package/dist/src/daemon/index.js +461 -0
  45. package/dist/src/daemon/index.js.map +1 -0
  46. package/dist/src/daemon/isolation.js +84 -0
  47. package/dist/src/daemon/isolation.js.map +1 -0
  48. package/dist/src/daemon/preflight.js +131 -0
  49. package/dist/src/daemon/preflight.js.map +1 -0
  50. package/dist/src/daemon/server.js +174 -0
  51. package/dist/src/daemon/server.js.map +1 -0
  52. package/dist/src/daemon/supervisorState.js +42 -0
  53. package/dist/src/daemon/supervisorState.js.map +1 -0
  54. package/dist/src/daemon/worker.js +239 -0
  55. package/dist/src/daemon/worker.js.map +1 -0
  56. package/dist/src/daemon/worktree.js +102 -0
  57. package/dist/src/daemon/worktree.js.map +1 -0
  58. package/dist/src/escalate.js +312 -0
  59. package/dist/src/escalate.js.map +1 -0
  60. package/dist/src/exec/piWorker.js +630 -0
  61. package/dist/src/exec/piWorker.js.map +1 -0
  62. package/dist/src/goal.js +317 -0
  63. package/dist/src/goal.js.map +1 -0
  64. package/dist/src/goalLoop.js +374 -0
  65. package/dist/src/goalLoop.js.map +1 -0
  66. package/dist/src/goalSpec.js +397 -0
  67. package/dist/src/goalSpec.js.map +1 -0
  68. package/dist/src/goalState.js +255 -0
  69. package/dist/src/goalState.js.map +1 -0
  70. package/dist/src/handoff.js +205 -0
  71. package/dist/src/handoff.js.map +1 -0
  72. package/dist/src/intake.js +203 -0
  73. package/dist/src/intake.js.map +1 -0
  74. package/dist/src/loop.js +592 -0
  75. package/dist/src/loop.js.map +1 -0
  76. package/dist/src/modelRouter.js +216 -0
  77. package/dist/src/modelRouter.js.map +1 -0
  78. package/dist/src/remote.js +246 -0
  79. package/dist/src/remote.js.map +1 -0
  80. package/dist/src/replan.js +262 -0
  81. package/dist/src/replan.js.map +1 -0
  82. package/dist/src/review.js +54 -0
  83. package/dist/src/review.js.map +1 -0
  84. package/dist/src/rework.js +241 -0
  85. package/dist/src/rework.js.map +1 -0
  86. package/dist/src/runState.js +4 -0
  87. package/dist/src/runState.js.map +1 -0
  88. package/dist/src/scheduler.js +270 -0
  89. package/dist/src/scheduler.js.map +1 -0
  90. package/dist/src/supervisor.js +787 -0
  91. package/dist/src/supervisor.js.map +1 -0
  92. package/dist/src/taskList.js +430 -0
  93. package/dist/src/taskList.js.map +1 -0
  94. package/dist/src/ui/config.js +268 -0
  95. package/dist/src/ui/config.js.map +1 -0
  96. package/dist/src/ui/dashboard.js +1288 -0
  97. package/dist/src/ui/dashboard.js.map +1 -0
  98. package/dist/src/ui/display.js +229 -0
  99. package/dist/src/ui/display.js.map +1 -0
  100. package/dist/src/ui/planTree.js +219 -0
  101. package/dist/src/ui/planTree.js.map +1 -0
  102. package/dist/src/ui/theme.js +298 -0
  103. package/dist/src/ui/theme.js.map +1 -0
  104. package/dist/src/ui/viewState.js +65 -0
  105. package/dist/src/ui/viewState.js.map +1 -0
  106. package/dist/src/ui/widget.js +721 -0
  107. package/dist/src/ui/widget.js.map +1 -0
  108. package/dist/src/ui/wizard.js +540 -0
  109. package/dist/src/ui/wizard.js.map +1 -0
  110. package/dist/src/unstuck.js +210 -0
  111. package/dist/src/unstuck.js.map +1 -0
  112. package/dist/src/worker.js +267 -0
  113. package/dist/src/worker.js.map +1 -0
  114. package/dist/src/workflow.js +250 -0
  115. package/dist/src/workflow.js.map +1 -0
  116. package/dist/tests/approval.test.js +144 -0
  117. package/dist/tests/approval.test.js.map +1 -0
  118. package/dist/tests/brief.test.js +271 -0
  119. package/dist/tests/brief.test.js.map +1 -0
  120. package/dist/tests/config.test.js +320 -0
  121. package/dist/tests/config.test.js.map +1 -0
  122. package/dist/tests/dashboard.test.js +277 -0
  123. package/dist/tests/dashboard.test.js.map +1 -0
  124. package/dist/tests/display.test.js +229 -0
  125. package/dist/tests/display.test.js.map +1 -0
  126. package/dist/tests/escalate.test.js +272 -0
  127. package/dist/tests/escalate.test.js.map +1 -0
  128. package/dist/tests/featureList.test.js +429 -0
  129. package/dist/tests/featureList.test.js.map +1 -0
  130. package/dist/tests/gates.test.js +333 -0
  131. package/dist/tests/gates.test.js.map +1 -0
  132. package/dist/tests/goal.test.js +229 -0
  133. package/dist/tests/goal.test.js.map +1 -0
  134. package/dist/tests/goalLoop.test.js +170 -0
  135. package/dist/tests/goalLoop.test.js.map +1 -0
  136. package/dist/tests/goalSpec.test.js +146 -0
  137. package/dist/tests/goalSpec.test.js.map +1 -0
  138. package/dist/tests/goalState.test.js +202 -0
  139. package/dist/tests/goalState.test.js.map +1 -0
  140. package/dist/tests/handoff.test.js +127 -0
  141. package/dist/tests/handoff.test.js.map +1 -0
  142. package/dist/tests/init.test.js +264 -0
  143. package/dist/tests/init.test.js.map +1 -0
  144. package/dist/tests/intake.test.js +288 -0
  145. package/dist/tests/intake.test.js.map +1 -0
  146. package/dist/tests/loop.test.js +453 -0
  147. package/dist/tests/loop.test.js.map +1 -0
  148. package/dist/tests/modelRouter.test.js +131 -0
  149. package/dist/tests/modelRouter.test.js.map +1 -0
  150. package/dist/tests/phases.test.js +244 -0
  151. package/dist/tests/phases.test.js.map +1 -0
  152. package/dist/tests/planTree.test.js +190 -0
  153. package/dist/tests/planTree.test.js.map +1 -0
  154. package/dist/tests/remote.test.js +380 -0
  155. package/dist/tests/remote.test.js.map +1 -0
  156. package/dist/tests/replan.test.js +113 -0
  157. package/dist/tests/replan.test.js.map +1 -0
  158. package/dist/tests/review.test.js +77 -0
  159. package/dist/tests/review.test.js.map +1 -0
  160. package/dist/tests/rework.test.js +109 -0
  161. package/dist/tests/rework.test.js.map +1 -0
  162. package/dist/tests/routing-live.test.js +121 -0
  163. package/dist/tests/routing-live.test.js.map +1 -0
  164. package/dist/tests/runState.test.js +73 -0
  165. package/dist/tests/runState.test.js.map +1 -0
  166. package/dist/tests/settings.test.js +311 -0
  167. package/dist/tests/settings.test.js.map +1 -0
  168. package/dist/tests/skills.test.js +387 -0
  169. package/dist/tests/skills.test.js.map +1 -0
  170. package/dist/tests/supervisor.test.js +437 -0
  171. package/dist/tests/supervisor.test.js.map +1 -0
  172. package/dist/tests/surface.test.js +203 -0
  173. package/dist/tests/surface.test.js.map +1 -0
  174. package/dist/tests/taskList.test.js +376 -0
  175. package/dist/tests/taskList.test.js.map +1 -0
  176. package/dist/tests/theme.test.js +149 -0
  177. package/dist/tests/theme.test.js.map +1 -0
  178. package/dist/tests/unstuck.test.js +268 -0
  179. package/dist/tests/unstuck.test.js.map +1 -0
  180. package/dist/tests/widget.test.js +424 -0
  181. package/dist/tests/widget.test.js.map +1 -0
  182. package/dist/tests/worker.test.js +306 -0
  183. package/dist/tests/worker.test.js.map +1 -0
  184. package/dist/tests/workflow.test.js +187 -0
  185. package/dist/tests/workflow.test.js.map +1 -0
  186. package/extensions/infinity-harness/index.ts +39 -12
  187. package/package.json +5 -2
  188. package/src/core/modelRouter.ts +23 -1
  189. package/src/daemon/index.ts +3 -3
  190. package/src/daemon/worker.ts +28 -5
  191. package/src/ui/config.ts +25 -1
  192. package/src/ui/wizard.ts +10 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/ui/widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,540 @@
1
+ /**
2
+ * infinity-harness — the start-up wizard, as a flow.
3
+ *
4
+ * `src/intake.ts` decides what a set of answers *means*. This asks the
5
+ * questions. Like the settings menu it talks to a `Prompter` rather than to
6
+ * pi, so the whole conversation can be driven by a test — and, in the E2E
7
+ * suite, by a script answering over pi's RPC extension-UI protocol, which is
8
+ * as close to watching a human use it as this gets.
9
+ *
10
+ * The flow is short on purpose. Four questions, three of them one keypress:
11
+ *
12
+ * 1. which workflow? — a built-in, one you saved, or "build one"
13
+ * 2. what are you building?
14
+ * 3. when should it start a fresh session?
15
+ * 4. how much of the plan do you want on screen?
16
+ *
17
+ * Building a workflow is its own small flow: pick the phases, then say for
18
+ * each one whether it stops for you, then optionally give it a name and keep
19
+ * it. A kept workflow is offered first thing on the next project.
20
+ *
21
+ * Cancelling any question cancels the wizard. Nothing is written until the
22
+ * human has seen the summary and said yes, because a wizard that half-commits
23
+ * leaves a project in a state nobody chose.
24
+ *
25
+ * Presentation: every step opens with a coloured progress banner and a brief
26
+ * "where you are" context line so the wizard feels like a guided tour rather
27
+ * than a stream of plain grey prompts. Cancelling still cancels. The underlying
28
+ * intake logic is unchanged — this file only adds chrome around the questions.
29
+ */
30
+ import { BRIEF_QUESTION, DISPLAY_QUESTION, HANDOFF_QUESTION, PHASE_MODE_OPTIONS, PHASE_PURPOSE, SELECTABLE_PHASES, WORKFLOW_QUESTION, customWorkflow, planIntake, } from "../intake.js";
31
+ import { listWorkflows, normalizeModes, normalizePhases, renderWorkflow, saveWorkflow, } from "../workflow.js";
32
+ import { DEFAULT_ENABLED_PHASES } from "../core/types.js";
33
+ import { defaultDisplay, listDisplays, normalizeDisplay, saveDisplay } from "./display.js";
34
+ const CONFIRM = "start with these settings";
35
+ const RESTART = "change something";
36
+ const CANCEL = "cancel";
37
+ const BUILD_ONE = "build one — I choose the phases and which of them stop for me";
38
+ const DONE = "✓ done";
39
+ // -- wizard chrome --------------------------------------------------------
40
+ // ANSI helpers used for the progress banner. They degrade gracefully: pi's
41
+ // TUI strips unknown sequences but plain "—" lines remain readable.
42
+ const ESC = "\u001b";
43
+ const BOLD = `${ESC}[1m`;
44
+ const DIM = `${ESC}[2m`;
45
+ const RESET = `${ESC}[0m`;
46
+ const FG_BRAND = `${ESC}[38;2;124;92;255m`; // #7C5CFF
47
+ const FG_ACCENT = `${ESC}[38;2;0;184;212m`; // #00B8D4
48
+ const FG_MUTED = `${ESC}[38;2;110;116;129m`;
49
+ const FG_SUCCESS = `${ESC}[38;2;46;158;91m`;
50
+ const FG_WARN = `${ESC}[38;2;179;107;212m`;
51
+ const FG_RULE = `${ESC}[38;2;74;80;88m`;
52
+ /** Render a choice as one selectable line: the label, then why you would pick it. */
53
+ function line(label, help) {
54
+ // Keep label at column 0 so /^label/ regexes in tests still match; color the separator and help.
55
+ return `${label} ${FG_RULE}—${RESET} ${FG_MUTED}${help}${RESET}`;
56
+ }
57
+ /** Ordered steps for the progress banner. Emoji makes the wizard feel like a tour. */
58
+ const WIZARD_STEPS = [
59
+ { id: "workflow", emoji: "🔀", label: "Workflow" },
60
+ { id: "goal", emoji: "🎯", label: "Goal" },
61
+ { id: "sessions", emoji: "🔄", label: "Sessions" },
62
+ { id: "research", emoji: "🔍", label: "Research depth" },
63
+ { id: "models", emoji: "🤖", label: "Models" },
64
+ { id: "parallelism", emoji: "⚡", label: "Parallelism" },
65
+ { id: "display", emoji: "👁️", label: "Display" },
66
+ { id: "confirm", emoji: "✅", label: "Confirm" },
67
+ { id: "launch", emoji: "🚀", label: "Launch" },
68
+ ];
69
+ function banner(step, title, subtitle) {
70
+ const total = WIZARD_STEPS.length;
71
+ const dots = WIZARD_STEPS.map((_, i) => {
72
+ if (i < step)
73
+ return `${FG_SUCCESS}●${RESET}`;
74
+ if (i === step)
75
+ return `${FG_BRAND}${BOLD}◉${RESET}`;
76
+ return `${FG_RULE}○${RESET}`;
77
+ }).join(`${FG_RULE}─${RESET}`);
78
+ const stepInfo = WIZARD_STEPS[step];
79
+ const emoji = stepInfo?.emoji ? `${stepInfo.emoji} ` : "";
80
+ const head = `${FG_BRAND}${BOLD}∞ wizard${RESET} ${FG_MUTED}${DIM}${step + 1}/${total}${RESET} ${FG_RULE}·${RESET} ${emoji}${FG_ACCENT}${BOLD}${title}${RESET}`;
81
+ const sub = subtitle ? `\n${FG_MUTED}${DIM}${subtitle}${RESET}` : "";
82
+ return `${dots}\n${head}${sub}`;
83
+ }
84
+ function sectionNotify(prompt, message) {
85
+ try {
86
+ prompt.notify(message, "info");
87
+ }
88
+ catch { }
89
+ }
90
+ const MODEL_STEP_TITLE = "Which models for the difficulty tiers, and the consulting master?";
91
+ const INHERIT = "(use pi's current model)";
92
+ const CUSTOM_MODEL = "type a model id…";
93
+ const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
94
+ const THINK_INHERIT = "(inherit)";
95
+ async function pickModelChoice(prompt, title, models, current) {
96
+ if (models.length === 0) {
97
+ const typed = await prompt.input(title, current || "provider/model-id");
98
+ return typed;
99
+ }
100
+ const rows = models.map((m) => (m.ref === current ? `${m.label} ← current` : m.label));
101
+ const picked = await prompt.select(title, [INHERIT, ...rows, CUSTOM_MODEL]);
102
+ if (picked === undefined)
103
+ return undefined;
104
+ if (picked === INHERIT)
105
+ return "";
106
+ if (picked === CUSTOM_MODEL) {
107
+ const typed = await prompt.input(`${title} — model id`, current || "provider/model-id");
108
+ return typed;
109
+ }
110
+ const model = models[rows.indexOf(picked)];
111
+ return model?.ref;
112
+ }
113
+ async function pickThinkingLevel(prompt, title, supported) {
114
+ const levels = Array.isArray(supported) && supported.length ? supported : THINKING_LEVELS;
115
+ const picked = await prompt.select(title, [THINK_INHERIT, ...levels]);
116
+ if (picked === undefined)
117
+ return undefined;
118
+ if (picked === THINK_INHERIT)
119
+ return "";
120
+ return picked;
121
+ }
122
+ /**
123
+ * What a difficulty tier actually buys, at the level the human just chose.
124
+ *
125
+ * Difficulty is scored per task, but the *model* changes only where the
126
+ * session changes — that is what makes it a model boundary at all. So at
127
+ * feature-level handoff a feature runs on its hardest task's model and the
128
+ * easy tasks inside it get the hard model too. Saying that here, in the
129
+ * question, is the difference between a setting that behaves surprisingly and
130
+ * one the human chose with their eyes open.
131
+ */
132
+ export function tierScopeNote(handoff) {
133
+ switch (handoff) {
134
+ case "off":
135
+ case "goal":
136
+ return "one session for the whole run, so the run takes the hardest tier in the plan";
137
+ case "phase":
138
+ return "one session per phase, so every task in a phase takes that phase's hardest tier";
139
+ case "sprint":
140
+ return "one session per sprint, so every task in a sprint takes that sprint's hardest tier";
141
+ case "feature":
142
+ return "one session per feature, so every task in a feature takes that feature's hardest tier";
143
+ case "subtask":
144
+ return "one session per subtask, so each subtask can take its own tier";
145
+ default:
146
+ return "one session per task, so each task takes its own tier";
147
+ }
148
+ }
149
+ async function pickModelsStep(prompt, modelsFn, handoff = "task") {
150
+ const models = modelsFn ? (await modelsFn()) ?? [] : [];
151
+ // First ask whether routing is even wanted — most runs don't need it, and
152
+ // skipping the 8 follow-up questions keeps the wizard short. Old tests that
153
+ // don't know about this step get routing off by default so they keep passing.
154
+ const ROUTE_ON = "yes — pick models per tier";
155
+ const ROUTE_OFF = "no — use pi's current model for everything";
156
+ const enablePick = await prompt.select(`Route work by difficulty to different models? (${tierScopeNote(handoff)})`, [ROUTE_ON, ROUTE_OFF]);
157
+ if (enablePick === undefined) {
158
+ // No answer scripted (e.g. an older test) → treat as "off" so the
159
+ // wizard doesn't look cancelled to callers that only scripted four steps.
160
+ return { router: { enabled: false, byDifficulty: { easy: "", moderate: "", difficult: "" }, thinkingByDifficulty: { easy: "", moderate: "", difficult: "" }, master: "", thinkingMaster: "", default: "", thinkingDefault: "" } };
161
+ }
162
+ if (enablePick === ROUTE_OFF) {
163
+ return { router: { enabled: false, byDifficulty: { easy: "", moderate: "", difficult: "" }, thinkingByDifficulty: { easy: "", moderate: "", difficult: "" }, master: "", thinkingMaster: "", default: "", thinkingDefault: "" } };
164
+ }
165
+ const tiers = ["easy", "moderate", "difficult"];
166
+ const byDifficulty = {};
167
+ const thinkingByDifficulty = {};
168
+ const supportedFor = (ref) => {
169
+ const m = models.find(x => x.ref === ref);
170
+ return m?.supportedThinkingLevels ?? null;
171
+ };
172
+ for (const tier of tiers) {
173
+ const model = await pickModelChoice(prompt, `${tier.toUpperCase()} tier — model`, models, "");
174
+ if (model === undefined)
175
+ return undefined;
176
+ byDifficulty[tier] = model;
177
+ const thinking = await pickThinkingLevel(prompt, `${tier.toUpperCase()} tier — thinking level`, model ? supportedFor(model) : null);
178
+ if (thinking === undefined)
179
+ return undefined;
180
+ thinkingByDifficulty[tier] = thinking;
181
+ }
182
+ const masterModel = await pickModelChoice(prompt, "Consulting master — model (used only when the ladder is exhausted)", models, "");
183
+ if (masterModel === undefined)
184
+ return undefined;
185
+ const masterThinking = await pickThinkingLevel(prompt, "Consulting master — thinking level", masterModel ? supportedFor(masterModel) : null);
186
+ if (masterThinking === undefined)
187
+ return undefined;
188
+ const defaultModel = await pickModelChoice(prompt, "Default (tier A) — general work + undifficult tasks — idle under task handoff when every task has difficulty (" + tierScopeNote(handoff) + ")", models, "");
189
+ if (defaultModel === undefined)
190
+ return undefined;
191
+ const defaultThinking = await pickThinkingLevel(prompt, "Default — thinking level fallback", defaultModel ? supportedFor(defaultModel) : null);
192
+ if (defaultThinking === undefined)
193
+ return undefined;
194
+ return {
195
+ router: {
196
+ enabled: true,
197
+ byDifficulty,
198
+ thinkingByDifficulty,
199
+ master: masterModel ?? "",
200
+ thinkingMaster: masterThinking ?? "",
201
+ default: defaultModel ?? "",
202
+ thinkingDefault: defaultThinking ?? "",
203
+ },
204
+ };
205
+ }
206
+ export async function runIntakeWizard(options) {
207
+ const { prompt, env } = options;
208
+ for (;;) {
209
+ // -- 1. the workflow ----------------------------------------------------
210
+ sectionNotify(prompt, banner(0, "Workflow", "Pick the pipeline and which phases stop for you"));
211
+ const workflow = await pickWorkflow(prompt, env);
212
+ if (workflow === undefined)
213
+ return { cancelled: true };
214
+ {
215
+ const phases = workflow.phases.join(" → ");
216
+ const stops = Object.entries(workflow.modes).filter(([, m]) => m === "copilot").map(([p]) => p.toUpperCase());
217
+ sectionNotify(prompt, `${FG_SUCCESS}✓ workflow:${RESET} ${FG_ACCENT}${workflow.name}${RESET} ${FG_MUTED}— ${phases}${stops.length ? ` · stops at ${stops.join(", ")}` : ""}${RESET}`);
218
+ }
219
+ // -- 2. what are we building -------------------------------------------
220
+ //
221
+ // Asked whatever the workflow is. This is the question the old flow
222
+ // skipped, and skipping it is why autopilot used to invent a project and
223
+ // start building it.
224
+ sectionNotify(prompt, banner(1, "Goal", "What are you building? One sentence is enough — you can refine it in DEFINE"));
225
+ const brief = (await prompt.input(BRIEF_QUESTION.title, BRIEF_QUESTION.placeholder)) ?? options.brief ?? "";
226
+ if (brief && brief.trim())
227
+ sectionNotify(prompt, `${FG_SUCCESS}✓ goal:${RESET} ${brief.trim().slice(0, 88)}${brief.trim().length > 88 ? "…" : ""}`);
228
+ // -- 3. sessions --------------------------------------------------------
229
+ sectionNotify(prompt, banner(2, "Sessions", "When should the run start a fresh session? Smaller slices isolate context."));
230
+ const handoffOptions = HANDOFF_QUESTION.options ?? [];
231
+ const handoffLabels = handoffOptions.map((o) => line(o.label, o.help));
232
+ const handoffPick = await prompt.select(HANDOFF_QUESTION.title, handoffLabels);
233
+ if (handoffPick === undefined)
234
+ return { cancelled: true };
235
+ // Every level the question offers, not the three this cast used to allow:
236
+ // picking "every feature" and getting the task-level narrowing is how a
237
+ // setting silently becomes a different setting.
238
+ const handoff = (handoffOptions[handoffLabels.indexOf(handoffPick)]?.value ??
239
+ "phase");
240
+ // -- 3b. research depth (only when research is in the pipeline) ----------
241
+ let researchDepth;
242
+ if (workflow.phases.includes("research")) {
243
+ sectionNotify(prompt, banner(3, "Research depth", "How thorough should RESEARCH be? Deeper means more tasks and stronger gates."));
244
+ const RESEARCH_DEPTH_QUESTION = {
245
+ title: "How deep should research go?",
246
+ options: [
247
+ { value: "standard", label: "Deep — 3 tasks, 5+ primary sources + comparison table", help: ">=5 sources with URLs, constraints table, 3 options + falsification (~800 chars gate). Lite mode." },
248
+ { value: "deep", label: "Very Deep — 5 tasks, competitive matrix + cost/risk model", help: ">=7 sources, gap analysis, competitive matrix, risk register (~1800 chars). Recommended." },
249
+ { value: "comprehensive", label: "Literature Review — 10 tasks, 15+ sources annotated", help: ">=15 sources annotated bibliography, benchmarks, synthesis + gap analysis (~5000 chars)." },
250
+ ],
251
+ };
252
+ const depthLabels = RESEARCH_DEPTH_QUESTION.options.map((o) => line(o.label, o.help));
253
+ const depthPick = await prompt.select(RESEARCH_DEPTH_QUESTION.title, depthLabels);
254
+ if (depthPick === undefined)
255
+ return { cancelled: true };
256
+ researchDepth = (RESEARCH_DEPTH_QUESTION.options[depthLabels.indexOf(depthPick)]?.value ?? "deep");
257
+ }
258
+ // -- 4. models ----------------------------------------------------------
259
+ sectionNotify(prompt, banner(4, "Models", `Difficulty routing: ${tierScopeNote(handoff)}`));
260
+ const modelsAnswer = await pickModelsStep(prompt, options.models, handoff);
261
+ if (modelsAnswer === undefined)
262
+ return { cancelled: true };
263
+ sectionNotify(prompt, modelsAnswer.router.enabled ? `${FG_SUCCESS}✓ routing:${RESET} per-tier models enabled` : `${FG_MUTED}routing: using pi's current model${RESET}`);
264
+ // -- 5. execution (parallelism) -----------------------------------------
265
+ sectionNotify(prompt, banner(5, "Parallelism", "When can tasks run side by side? Finer grain = more concurrency."));
266
+ const execOptions = [
267
+ { value: "off", label: "one at a time", help: "No parallel work. Simplest, lowest token use." },
268
+ { value: "task", label: "parallel at task (recommended)", help: "Tasks with no deps run together, up to max workers." },
269
+ { value: "feature", label: "parallel at feature", help: "Features with no deps run together." },
270
+ { value: "sprint", label: "parallel at sprint", help: "Sprints in parallel." },
271
+ { value: "goal", label: "parallel at goal", help: "Goals run as parallel pipelines (phases run together)." },
272
+ { value: "subtask", label: "parallel at subtask", help: "Subtasks of a task run together. Finest grain." },
273
+ ];
274
+ const execLabels = execOptions.map((o) => line(o.label, o.help));
275
+ // Execution parallelism is optional — older E2E/tests scripted 5 answers, not 7. Default to task×3 so they keep passing.
276
+ let parallelAt = "task";
277
+ let maxWorkers = 3;
278
+ const execPick = await prompt.select("When to run things in parallel?", execLabels);
279
+ if (execPick !== undefined) {
280
+ parallelAt = (execOptions[execLabels.indexOf(execPick)]?.value ?? "task");
281
+ const workersRaw = await prompt.input("Max parallel workers? (1-16)", "3");
282
+ maxWorkers = workersRaw === undefined ? 3 : Math.max(1, Math.min(16, Number.parseInt(String(workersRaw).trim(), 10) || 3));
283
+ }
284
+ // -- 6. display ---------------------------------------------------------
285
+ sectionNotify(prompt, banner(6, "Display", "How much of the plan do you want on screen?"));
286
+ const display = await pickDisplay(prompt, env);
287
+ if (display === undefined)
288
+ return { cancelled: true };
289
+ try {
290
+ sectionNotify(prompt, `${FG_MUTED}display: ${display.preset ?? "custom"} · ${Object.entries(display.levels).filter(([, v]) => v === true || v === "all" || v === "active").map(([k]) => k).join(", ")}${RESET}`);
291
+ }
292
+ catch { }
293
+ sectionNotify(prompt, banner(7, "Confirm", "Review and lock in these settings"));
294
+ const answers = { workflow, researchDepth, brief, handoff, display, router: modelsAnswer.router, parallelAt, maxWorkers };
295
+ const plan = planIntake(answers);
296
+ if (options.skipConfirm)
297
+ return { cancelled: false, plan, answers, launchNow: false };
298
+ {
299
+ const head = `${FG_BRAND}${BOLD} Summary${RESET}`;
300
+ const rail = `${FG_RULE}${"─".repeat(46)}${RESET}`;
301
+ const summaryBlock = `${FG_ACCENT}${plan.summary}${RESET}`;
302
+ const warnBlock = plan.warnings.length ? `\n${FG_WARN}⚠ ${plan.warnings.join(`\n${FG_WARN}⚠ `)}${RESET}` : "";
303
+ const body = `${rail}\n${head}\n${rail}\n${summaryBlock}${warnBlock}`;
304
+ prompt.notify(body, plan.warnings.length ? "warning" : "info");
305
+ }
306
+ const confirm = await prompt.select("Ready?", [CONFIRM, RESTART, CANCEL]);
307
+ if (confirm === undefined || confirm === CANCEL)
308
+ return { cancelled: true };
309
+ if (confirm === RESTART)
310
+ continue;
311
+ // Last step: ask whether to arm and start immediately (opt-in).
312
+ // After init the harness is never auto-started — only /infinity:run (or
313
+ // "yes" here) arms it. Older tests/E2E scripts that do not answer this
314
+ // are treated as "later" so they keep passing.
315
+ sectionNotify(prompt, banner(8, "Launch", "Start the run now or wait for /infinity:run?"));
316
+ const LAUNCH_NOW = "yes — start the run now";
317
+ const LAUNCH_LATER = "no — I'll run /infinity:run when ready";
318
+ const launchPick = await prompt.select("Start the run now?", [LAUNCH_NOW, LAUNCH_LATER]);
319
+ // Older test/E2E callers scripted 7 answers, not 8 — undefined means
320
+ // "I'll run /infinity:run when ready" so the wizard still produces a
321
+ // parked harness rather than cancelling. Interactive cancel is caught
322
+ // earlier (confirm === CANCEL) so this default is safe.
323
+ const launchNow = launchPick !== undefined ? launchPick === LAUNCH_NOW : false;
324
+ return { cancelled: false, plan, answers, launchNow };
325
+ }
326
+ }
327
+ // ── choosing a workflow ─────────────────────────────────────────────────────
328
+ /**
329
+ * Pick a workflow, or build one.
330
+ *
331
+ * Built-ins first, then whatever this person has saved, then "build one".
332
+ * Undefined means they cancelled.
333
+ */
334
+ export async function pickWorkflow(prompt, env) {
335
+ const available = listWorkflows(env);
336
+ const rows = available.map((w) => line(w.builtIn ? w.name : `${w.name} (yours)`, w.description));
337
+ const picked = await prompt.select(WORKFLOW_QUESTION.title, [...rows, BUILD_ONE]);
338
+ if (picked === undefined)
339
+ return undefined;
340
+ if (picked === BUILD_ONE)
341
+ return buildWorkflow(prompt, env);
342
+ return available[rows.indexOf(picked)];
343
+ }
344
+ /**
345
+ * The custom flow: phases, then a mode for each, then keep it or don't.
346
+ *
347
+ * Saving is offered rather than required. Someone trying a one-off shape for
348
+ * one project should not have to name it, and someone who has found the shape
349
+ * they always want should not have to rebuild it every time.
350
+ */
351
+ export async function buildWorkflow(prompt, env) {
352
+ // -- which phases run ---------------------------------------------------
353
+ const chosen = new Set(DEFAULT_ENABLED_PHASES);
354
+ for (;;) {
355
+ const rows = SELECTABLE_PHASES.map((p) => `${chosen.has(p) ? "[x]" : "[ ]"} ${p} — ${PHASE_PURPOSE[p]}`);
356
+ const hit = await prompt.select(`Which phases should run? (${chosen.size ? [...SELECTABLE_PHASES].filter((p) => chosen.has(p)).join(" → ") : "none yet"})`, [...rows, DONE]);
357
+ if (hit === undefined)
358
+ return undefined;
359
+ if (hit === DONE)
360
+ break;
361
+ const key = SELECTABLE_PHASES[rows.indexOf(hit)];
362
+ if (!key)
363
+ break;
364
+ if (chosen.has(key))
365
+ chosen.delete(key);
366
+ else
367
+ chosen.add(key);
368
+ }
369
+ const phases = normalizePhases([...chosen]);
370
+ // -- a mode for each ----------------------------------------------------
371
+ //
372
+ // Asked one phase at a time rather than as a checklist, because "does this
373
+ // one stop for me" is a different question for RESEARCH than for SHIP and
374
+ // the help text is the useful part.
375
+ const modes = {};
376
+ const modeLabels = PHASE_MODE_OPTIONS.map((o) => line(o.label, o.help));
377
+ for (const phase of phases) {
378
+ const answer = await prompt.select(`${phase.toUpperCase()} — ${PHASE_PURPOSE[phase]}`, modeLabels);
379
+ if (answer === undefined)
380
+ return undefined;
381
+ modes[phase] = (PHASE_MODE_OPTIONS[modeLabels.indexOf(answer)]?.value ?? "autopilot");
382
+ }
383
+ const draft = customWorkflow(phases, modes);
384
+ prompt.notify(renderWorkflow(draft), "info");
385
+ // -- keep it? -----------------------------------------------------------
386
+ const KEEP = "save it under a name I can reuse";
387
+ const ONCE = "just use it here";
388
+ const keep = await prompt.select("Keep this workflow?", [KEEP, ONCE]);
389
+ if (keep === undefined)
390
+ return undefined;
391
+ if (keep !== KEEP)
392
+ return draft;
393
+ for (;;) {
394
+ const name = await prompt.input("Call it what?", "e.g. spec-heavy, weekend-run, client-work");
395
+ if (name === undefined || !name.trim())
396
+ return draft;
397
+ const saved = saveWorkflow({ name: name.trim(), phases, modes }, env);
398
+ if (saved.ok && saved.workflow) {
399
+ prompt.notify(`Saved "${saved.workflow.name}". It will be offered on every project.`, "info");
400
+ return saved.workflow;
401
+ }
402
+ prompt.notify(saved.error ?? "Could not save that.", "warning");
403
+ }
404
+ }
405
+ // ── choosing a display template ─────────────────────────────────────────────
406
+ const CUSTOMISE = "choose level by level";
407
+ export async function pickDisplay(prompt, env) {
408
+ const available = listDisplays(env);
409
+ const rows = available.map((d) => line(d.builtIn ? d.name : `${d.name} (yours)`, d.description));
410
+ const picked = await prompt.select(DISPLAY_QUESTION.title, [...rows, CUSTOMISE]);
411
+ if (picked === undefined)
412
+ return undefined;
413
+ if (picked !== CUSTOMISE)
414
+ return available[rows.indexOf(picked)]?.policy ?? defaultDisplay();
415
+ return buildDisplay(prompt, defaultDisplay(), env);
416
+ }
417
+ const SUBTASK_CYCLE = ["none", "active", "all"];
418
+ /**
419
+ * The level-by-level editor, shared by the wizard and `/infinity:display`.
420
+ *
421
+ * Every row toggles; subtasks cycle through none → active → all, because
422
+ * "only on the task being worked" is the answer most people want and a plain
423
+ * on/off cannot express it.
424
+ */
425
+ export async function buildDisplay(prompt, starting, env) {
426
+ let policy = normalizeDisplay(starting);
427
+ for (;;) {
428
+ const rows = [
429
+ `${policy.levels.goal ? "[x]" : "[ ]"} goals`,
430
+ `${policy.levels.sprint ? "[x]" : "[ ]"} sprints`,
431
+ `${policy.levels.feature ? "[x]" : "[ ]"} features`,
432
+ `${policy.levels.task ? "[x]" : "[ ]"} tasks`,
433
+ `[${policy.levels.subtask}] subtasks — none · active (only the task being worked) · all`,
434
+ `${policy.counts ? "[x]" : "[ ]"} done/total counts on goals, sprints and features`,
435
+ `${policy.dependencies ? "[x]" : "[ ]"} dependency labels (← #3)`,
436
+ `${policy.criteria ? "[x]" : "[ ]"} acceptance criteria (dashboard only)`,
437
+ `${policy.rail ? "[x]" : "[ ]"} the phase rail`,
438
+ `${policy.progress ? "[x]" : "[ ]"} the progress meter`,
439
+ `${policy.alerts ? "[x]" : "[ ]"} the alert strip (blocked, rework, retries, approvals)`,
440
+ `[${policy.taskWindow}] rows of plan in the terminal before it scrolls`,
441
+ ];
442
+ const SAVE = "save this as a template I can reuse";
443
+ const hit = await prompt.select("What should the widget and the dashboard show?", [
444
+ ...rows,
445
+ SAVE,
446
+ DONE,
447
+ ]);
448
+ if (hit === undefined)
449
+ return undefined;
450
+ if (hit === DONE)
451
+ return { ...policy, preset: "custom" };
452
+ if (hit === SAVE) {
453
+ const name = await prompt.input("Call it what?", "e.g. sprint-view, my-focus");
454
+ if (name && name.trim()) {
455
+ const saved = saveDisplay({ name: name.trim(), policy }, env);
456
+ if (saved.ok && saved.template) {
457
+ prompt.notify(`Saved "${saved.template.name}".`, "info");
458
+ return saved.template.policy;
459
+ }
460
+ prompt.notify(saved.error ?? "Could not save that.", "warning");
461
+ }
462
+ continue;
463
+ }
464
+ const idx = rows.indexOf(hit);
465
+ switch (idx) {
466
+ case 0:
467
+ policy = { ...policy, levels: { ...policy.levels, goal: !policy.levels.goal } };
468
+ break;
469
+ case 1:
470
+ policy = { ...policy, levels: { ...policy.levels, sprint: !policy.levels.sprint } };
471
+ break;
472
+ case 2:
473
+ policy = { ...policy, levels: { ...policy.levels, feature: !policy.levels.feature } };
474
+ break;
475
+ case 3:
476
+ policy = { ...policy, levels: { ...policy.levels, task: !policy.levels.task } };
477
+ break;
478
+ case 4: {
479
+ const next = SUBTASK_CYCLE[(SUBTASK_CYCLE.indexOf(policy.levels.subtask) + 1) % SUBTASK_CYCLE.length];
480
+ policy = { ...policy, levels: { ...policy.levels, subtask: next } };
481
+ break;
482
+ }
483
+ case 5:
484
+ policy = { ...policy, counts: !policy.counts };
485
+ break;
486
+ case 6:
487
+ policy = { ...policy, dependencies: !policy.dependencies };
488
+ break;
489
+ case 7:
490
+ policy = { ...policy, criteria: !policy.criteria };
491
+ break;
492
+ case 8:
493
+ policy = { ...policy, rail: !policy.rail };
494
+ break;
495
+ case 9:
496
+ policy = { ...policy, progress: !policy.progress };
497
+ break;
498
+ case 10:
499
+ policy = { ...policy, alerts: !policy.alerts };
500
+ break;
501
+ case 11: {
502
+ const answer = await prompt.input("How many rows?", String(policy.taskWindow));
503
+ const n = Number(String(answer ?? "").trim());
504
+ if (Number.isFinite(n))
505
+ policy = normalizeDisplay({ ...policy, taskWindow: n });
506
+ break;
507
+ }
508
+ default:
509
+ return { ...policy, preset: "custom" };
510
+ }
511
+ }
512
+ }
513
+ /**
514
+ * The wizard's answers when nobody is there to give any.
515
+ *
516
+ * A headless run must not stall on a prompt, and it must not silently become
517
+ * a workflow the human did not pick. The safe default is autopilot with
518
+ * nothing approved — because an approval gate with no human to answer it would
519
+ * park forever — plus a loud warning that says exactly that.
520
+ */
521
+ export function unattendedIntake(brief, phases) {
522
+ const ordered = normalizePhases(phases ?? [...DEFAULT_ENABLED_PHASES]);
523
+ const workflow = {
524
+ id: "autopilot",
525
+ name: "autopilot",
526
+ description: "You approve nothing.",
527
+ builtIn: true,
528
+ phases: ordered,
529
+ modes: normalizeModes({}, ordered),
530
+ };
531
+ const plan = planIntake({ workflow, brief: brief ?? "", handoff: "phase" });
532
+ return {
533
+ ...plan,
534
+ warnings: [
535
+ "No dialogs are available here, so the wizard was skipped: autopilot, nothing approved by you.",
536
+ ...plan.warnings,
537
+ ],
538
+ };
539
+ }
540
+ //# sourceMappingURL=wizard.js.map