oh-my-claude-sisyphus 3.0.11 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/README.md +26 -2
  2. package/agents/build-fixer-low.md +83 -0
  3. package/agents/build-fixer.md +160 -0
  4. package/agents/code-reviewer-low.md +82 -0
  5. package/agents/code-reviewer.md +115 -0
  6. package/agents/planner.md +83 -0
  7. package/agents/security-reviewer-low.md +83 -0
  8. package/agents/security-reviewer.md +186 -0
  9. package/agents/tdd-guide-low.md +81 -0
  10. package/agents/tdd-guide.md +165 -0
  11. package/commands/autopilot.md +131 -0
  12. package/commands/build-fix.md +55 -0
  13. package/commands/cancel-autopilot.md +35 -0
  14. package/commands/code-review.md +47 -0
  15. package/commands/ralph.md +9 -0
  16. package/commands/security-review.md +47 -0
  17. package/commands/tdd.md +54 -0
  18. package/dist/__tests__/hud-agents.test.js +13 -10
  19. package/dist/__tests__/hud-agents.test.js.map +1 -1
  20. package/dist/__tests__/installer.test.js +1 -1
  21. package/dist/__tests__/skills.test.js +8 -4
  22. package/dist/__tests__/skills.test.js.map +1 -1
  23. package/dist/agents/definitions.d.ts +32 -0
  24. package/dist/agents/definitions.d.ts.map +1 -1
  25. package/dist/agents/definitions.js +93 -1
  26. package/dist/agents/definitions.js.map +1 -1
  27. package/dist/agents/delegation-validator.d.ts +31 -0
  28. package/dist/agents/delegation-validator.d.ts.map +1 -0
  29. package/dist/agents/delegation-validator.js +75 -0
  30. package/dist/agents/delegation-validator.js.map +1 -0
  31. package/dist/agents/prompt-generator.d.ts +95 -0
  32. package/dist/agents/prompt-generator.d.ts.map +1 -0
  33. package/dist/agents/prompt-generator.js +140 -0
  34. package/dist/agents/prompt-generator.js.map +1 -0
  35. package/dist/agents/prompt-sections/index.d.ts +44 -0
  36. package/dist/agents/prompt-sections/index.d.ts.map +1 -0
  37. package/dist/agents/prompt-sections/index.js +194 -0
  38. package/dist/agents/prompt-sections/index.js.map +1 -0
  39. package/dist/agents/types.d.ts +2 -0
  40. package/dist/agents/types.d.ts.map +1 -1
  41. package/dist/agents/types.js.map +1 -1
  42. package/dist/features/background-agent/manager.d.ts +10 -1
  43. package/dist/features/background-agent/manager.d.ts.map +1 -1
  44. package/dist/features/background-agent/manager.js +79 -11
  45. package/dist/features/background-agent/manager.js.map +1 -1
  46. package/dist/features/background-agent/types.d.ts +30 -1
  47. package/dist/features/background-agent/types.d.ts.map +1 -1
  48. package/dist/features/delegation-categories/index.d.ts +116 -0
  49. package/dist/features/delegation-categories/index.d.ts.map +1 -0
  50. package/dist/features/delegation-categories/index.js +287 -0
  51. package/dist/features/delegation-categories/index.js.map +1 -0
  52. package/dist/features/delegation-categories/test-categories.d.ts +7 -0
  53. package/dist/features/delegation-categories/test-categories.d.ts.map +1 -0
  54. package/dist/features/delegation-categories/test-categories.js +88 -0
  55. package/dist/features/delegation-categories/test-categories.js.map +1 -0
  56. package/dist/features/delegation-categories/types.d.ts +51 -0
  57. package/dist/features/delegation-categories/types.d.ts.map +1 -0
  58. package/dist/features/delegation-categories/types.js +8 -0
  59. package/dist/features/delegation-categories/types.js.map +1 -0
  60. package/dist/features/index.d.ts +2 -0
  61. package/dist/features/index.d.ts.map +1 -1
  62. package/dist/features/index.js +10 -0
  63. package/dist/features/index.js.map +1 -1
  64. package/dist/features/model-routing/prompts/index.d.ts +2 -0
  65. package/dist/features/model-routing/prompts/index.d.ts.map +1 -1
  66. package/dist/features/model-routing/prompts/index.js +6 -0
  67. package/dist/features/model-routing/prompts/index.js.map +1 -1
  68. package/dist/features/notepad-wisdom/extractor.d.ts +30 -0
  69. package/dist/features/notepad-wisdom/extractor.d.ts.map +1 -0
  70. package/dist/features/notepad-wisdom/extractor.js +68 -0
  71. package/dist/features/notepad-wisdom/extractor.js.map +1 -0
  72. package/dist/features/notepad-wisdom/index.d.ts +39 -0
  73. package/dist/features/notepad-wisdom/index.d.ts.map +1 -0
  74. package/dist/features/notepad-wisdom/index.js +169 -0
  75. package/dist/features/notepad-wisdom/index.js.map +1 -0
  76. package/dist/features/notepad-wisdom/types.d.ts +18 -0
  77. package/dist/features/notepad-wisdom/types.d.ts.map +1 -0
  78. package/dist/features/notepad-wisdom/types.js +7 -0
  79. package/dist/features/notepad-wisdom/types.js.map +1 -0
  80. package/dist/hooks/autopilot/__tests__/cancel.test.d.ts +2 -0
  81. package/dist/hooks/autopilot/__tests__/cancel.test.d.ts.map +1 -0
  82. package/dist/hooks/autopilot/__tests__/cancel.test.js +397 -0
  83. package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -0
  84. package/dist/hooks/autopilot/__tests__/prompts.test.d.ts +2 -0
  85. package/dist/hooks/autopilot/__tests__/prompts.test.d.ts.map +1 -0
  86. package/dist/hooks/autopilot/__tests__/prompts.test.js +74 -0
  87. package/dist/hooks/autopilot/__tests__/prompts.test.js.map +1 -0
  88. package/dist/hooks/autopilot/__tests__/state.test.d.ts +2 -0
  89. package/dist/hooks/autopilot/__tests__/state.test.d.ts.map +1 -0
  90. package/dist/hooks/autopilot/__tests__/state.test.js +75 -0
  91. package/dist/hooks/autopilot/__tests__/state.test.js.map +1 -0
  92. package/dist/hooks/autopilot/__tests__/summary.test.d.ts +2 -0
  93. package/dist/hooks/autopilot/__tests__/summary.test.d.ts.map +1 -0
  94. package/dist/hooks/autopilot/__tests__/summary.test.js +289 -0
  95. package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -0
  96. package/dist/hooks/autopilot/__tests__/transition.test.d.ts +2 -0
  97. package/dist/hooks/autopilot/__tests__/transition.test.d.ts.map +1 -0
  98. package/dist/hooks/autopilot/__tests__/transition.test.js +59 -0
  99. package/dist/hooks/autopilot/__tests__/transition.test.js.map +1 -0
  100. package/dist/hooks/autopilot/__tests__/validation.test.d.ts +2 -0
  101. package/dist/hooks/autopilot/__tests__/validation.test.d.ts.map +1 -0
  102. package/dist/hooks/autopilot/__tests__/validation.test.js +450 -0
  103. package/dist/hooks/autopilot/__tests__/validation.test.js.map +1 -0
  104. package/dist/hooks/autopilot/cancel.d.ts +42 -0
  105. package/dist/hooks/autopilot/cancel.d.ts.map +1 -0
  106. package/dist/hooks/autopilot/cancel.js +156 -0
  107. package/dist/hooks/autopilot/cancel.js.map +1 -0
  108. package/dist/hooks/autopilot/index.d.ts +15 -0
  109. package/dist/hooks/autopilot/index.d.ts.map +1 -0
  110. package/dist/hooks/autopilot/index.js +20 -0
  111. package/dist/hooks/autopilot/index.js.map +1 -0
  112. package/dist/hooks/autopilot/prompts.d.ts +37 -0
  113. package/dist/hooks/autopilot/prompts.d.ts.map +1 -0
  114. package/dist/hooks/autopilot/prompts.js +353 -0
  115. package/dist/hooks/autopilot/prompts.js.map +1 -0
  116. package/dist/hooks/autopilot/state.d.ts +67 -0
  117. package/dist/hooks/autopilot/state.d.ts.map +1 -0
  118. package/dist/hooks/autopilot/state.js +244 -0
  119. package/dist/hooks/autopilot/state.js.map +1 -0
  120. package/dist/hooks/autopilot/summary.d.ts +27 -0
  121. package/dist/hooks/autopilot/summary.d.ts.map +1 -0
  122. package/dist/hooks/autopilot/summary.js +160 -0
  123. package/dist/hooks/autopilot/summary.js.map +1 -0
  124. package/dist/hooks/autopilot/transition.d.ts +39 -0
  125. package/dist/hooks/autopilot/transition.d.ts.map +1 -0
  126. package/dist/hooks/autopilot/transition.js +216 -0
  127. package/dist/hooks/autopilot/transition.js.map +1 -0
  128. package/dist/hooks/autopilot/types.d.ts +211 -0
  129. package/dist/hooks/autopilot/types.d.ts.map +1 -0
  130. package/dist/hooks/autopilot/types.js +30 -0
  131. package/dist/hooks/autopilot/types.js.map +1 -0
  132. package/dist/hooks/autopilot/validation.d.ts +43 -0
  133. package/dist/hooks/autopilot/validation.d.ts.map +1 -0
  134. package/dist/hooks/autopilot/validation.js +191 -0
  135. package/dist/hooks/autopilot/validation.js.map +1 -0
  136. package/dist/hooks/bridge.d.ts +1 -1
  137. package/dist/hooks/bridge.d.ts.map +1 -1
  138. package/dist/hooks/bridge.js +79 -6
  139. package/dist/hooks/bridge.js.map +1 -1
  140. package/dist/hooks/index.d.ts +1 -0
  141. package/dist/hooks/index.d.ts.map +1 -1
  142. package/dist/hooks/index.js +2 -0
  143. package/dist/hooks/index.js.map +1 -1
  144. package/dist/hooks/keyword-detector/index.d.ts +1 -1
  145. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  146. package/dist/hooks/keyword-detector/index.js +39 -2
  147. package/dist/hooks/keyword-detector/index.js.map +1 -1
  148. package/dist/hooks/persistent-mode/index.d.ts +2 -1
  149. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  150. package/dist/hooks/persistent-mode/index.js +13 -3
  151. package/dist/hooks/persistent-mode/index.js.map +1 -1
  152. package/dist/hooks/ralph-loop/index.d.ts +0 -20
  153. package/dist/hooks/ralph-loop/index.d.ts.map +1 -1
  154. package/dist/hooks/ralph-loop/index.js +6 -40
  155. package/dist/hooks/ralph-loop/index.js.map +1 -1
  156. package/dist/hooks/todo-continuation/index.d.ts +31 -1
  157. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  158. package/dist/hooks/todo-continuation/index.js +38 -1
  159. package/dist/hooks/todo-continuation/index.js.map +1 -1
  160. package/dist/hooks/ultrawork-state/index.d.ts +3 -1
  161. package/dist/hooks/ultrawork-state/index.d.ts.map +1 -1
  162. package/dist/hooks/ultrawork-state/index.js +3 -2
  163. package/dist/hooks/ultrawork-state/index.js.map +1 -1
  164. package/dist/hud/elements/autopilot.d.ts +29 -0
  165. package/dist/hud/elements/autopilot.d.ts.map +1 -0
  166. package/dist/hud/elements/autopilot.js +97 -0
  167. package/dist/hud/elements/autopilot.js.map +1 -0
  168. package/dist/hud/elements/index.d.ts +1 -0
  169. package/dist/hud/elements/index.d.ts.map +1 -1
  170. package/dist/hud/elements/index.js +1 -0
  171. package/dist/hud/elements/index.js.map +1 -1
  172. package/dist/hud/elements/limits.d.ts +1 -1
  173. package/dist/hud/elements/limits.d.ts.map +1 -1
  174. package/dist/hud/elements/limits.js +35 -2
  175. package/dist/hud/elements/limits.js.map +1 -1
  176. package/dist/hud/elements/todos.d.ts +1 -1
  177. package/dist/hud/elements/todos.js +3 -3
  178. package/dist/hud/elements/todos.js.map +1 -1
  179. package/dist/hud/render.js +6 -6
  180. package/dist/hud/render.js.map +1 -1
  181. package/dist/hud/types.d.ts +4 -0
  182. package/dist/hud/types.d.ts.map +1 -1
  183. package/dist/hud/types.js.map +1 -1
  184. package/dist/hud/usage-api.d.ts.map +1 -1
  185. package/dist/hud/usage-api.js +32 -6
  186. package/dist/hud/usage-api.js.map +1 -1
  187. package/dist/installer/hooks.d.ts +5 -0
  188. package/dist/installer/hooks.d.ts.map +1 -1
  189. package/dist/installer/hooks.js +20 -0
  190. package/dist/installer/hooks.js.map +1 -1
  191. package/dist/installer/index.d.ts +1 -1
  192. package/dist/installer/index.js +2 -2
  193. package/dist/installer/index.js.map +1 -1
  194. package/dist/tools/diagnostics/index.d.ts +29 -0
  195. package/dist/tools/diagnostics/index.d.ts.map +1 -0
  196. package/dist/tools/diagnostics/index.js +118 -0
  197. package/dist/tools/diagnostics/index.js.map +1 -0
  198. package/dist/tools/diagnostics/lsp-aggregator.d.ts +26 -0
  199. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -0
  200. package/dist/tools/diagnostics/lsp-aggregator.js +99 -0
  201. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -0
  202. package/dist/tools/diagnostics/tsc-runner.d.ts +26 -0
  203. package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -0
  204. package/dist/tools/diagnostics/tsc-runner.js +70 -0
  205. package/dist/tools/diagnostics/tsc-runner.js.map +1 -0
  206. package/dist/tools/lsp-tools.d.ts +10 -0
  207. package/dist/tools/lsp-tools.d.ts.map +1 -1
  208. package/dist/tools/lsp-tools.js +43 -1
  209. package/dist/tools/lsp-tools.js.map +1 -1
  210. package/dist/tools/resume-session.d.ts +63 -0
  211. package/dist/tools/resume-session.d.ts.map +1 -0
  212. package/dist/tools/resume-session.js +106 -0
  213. package/dist/tools/resume-session.js.map +1 -0
  214. package/dist/utils/__tests__/paths.test.d.ts +2 -0
  215. package/dist/utils/__tests__/paths.test.d.ts.map +1 -0
  216. package/dist/utils/__tests__/paths.test.js +88 -0
  217. package/dist/utils/__tests__/paths.test.js.map +1 -0
  218. package/dist/utils/paths.d.ts +32 -0
  219. package/dist/utils/paths.d.ts.map +1 -0
  220. package/dist/utils/paths.js +55 -0
  221. package/dist/utils/paths.js.map +1 -0
  222. package/docs/ARCHITECTURE.md +80 -1
  223. package/docs/CLAUDE.md +97 -3
  224. package/docs/FEATURES.md +2167 -0
  225. package/docs/FULL-README.md +69 -1
  226. package/package.json +1 -1
  227. package/skills/autopilot/SKILL.md +168 -0
  228. package/skills/cancel-autopilot/SKILL.md +53 -0
  229. package/skills/omc-setup/SKILL.md +95 -0
  230. package/skills/ralph/SKILL.md +9 -0
  231. package/skills/ultrawork/SKILL.md +9 -5
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Autopilot State Management
3
+ *
4
+ * Persistent state for the autopilot workflow across phases.
5
+ */
6
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from 'fs';
7
+ import { join } from 'path';
8
+ import { DEFAULT_CONFIG } from './types.js';
9
+ const STATE_FILE = 'autopilot-state.json';
10
+ const SPEC_DIR = 'autopilot';
11
+ /**
12
+ * Get the state file path
13
+ */
14
+ function getStateFilePath(directory) {
15
+ const omcDir = join(directory, '.omc');
16
+ return join(omcDir, STATE_FILE);
17
+ }
18
+ /**
19
+ * Ensure the .omc directory exists
20
+ */
21
+ function ensureOmcDir(directory) {
22
+ const omcDir = join(directory, '.omc');
23
+ if (!existsSync(omcDir)) {
24
+ mkdirSync(omcDir, { recursive: true });
25
+ }
26
+ }
27
+ /**
28
+ * Ensure the autopilot directory exists
29
+ */
30
+ export function ensureAutopilotDir(directory) {
31
+ ensureOmcDir(directory);
32
+ const autopilotDir = join(directory, '.omc', SPEC_DIR);
33
+ if (!existsSync(autopilotDir)) {
34
+ mkdirSync(autopilotDir, { recursive: true });
35
+ }
36
+ return autopilotDir;
37
+ }
38
+ /**
39
+ * Read autopilot state from disk
40
+ */
41
+ export function readAutopilotState(directory) {
42
+ const stateFile = getStateFilePath(directory);
43
+ if (!existsSync(stateFile)) {
44
+ return null;
45
+ }
46
+ try {
47
+ const content = readFileSync(stateFile, 'utf-8');
48
+ return JSON.parse(content);
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ /**
55
+ * Write autopilot state to disk
56
+ */
57
+ export function writeAutopilotState(directory, state) {
58
+ try {
59
+ ensureOmcDir(directory);
60
+ const stateFile = getStateFilePath(directory);
61
+ writeFileSync(stateFile, JSON.stringify(state, null, 2));
62
+ return true;
63
+ }
64
+ catch {
65
+ return false;
66
+ }
67
+ }
68
+ /**
69
+ * Clear autopilot state
70
+ */
71
+ export function clearAutopilotState(directory) {
72
+ const stateFile = getStateFilePath(directory);
73
+ if (!existsSync(stateFile)) {
74
+ return true;
75
+ }
76
+ try {
77
+ unlinkSync(stateFile);
78
+ return true;
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ }
84
+ /**
85
+ * Check if autopilot is active
86
+ */
87
+ export function isAutopilotActive(directory) {
88
+ const state = readAutopilotState(directory);
89
+ return state !== null && state.active === true;
90
+ }
91
+ /**
92
+ * Initialize a new autopilot session
93
+ */
94
+ export function initAutopilot(directory, idea, sessionId, config) {
95
+ const mergedConfig = { ...DEFAULT_CONFIG, ...config };
96
+ const now = new Date().toISOString();
97
+ const state = {
98
+ active: true,
99
+ phase: 'expansion',
100
+ iteration: 1,
101
+ max_iterations: mergedConfig.maxIterations ?? 10,
102
+ originalIdea: idea,
103
+ expansion: {
104
+ analyst_complete: false,
105
+ architect_complete: false,
106
+ spec_path: null,
107
+ requirements_summary: '',
108
+ tech_stack: []
109
+ },
110
+ planning: {
111
+ plan_path: null,
112
+ architect_iterations: 0,
113
+ approved: false
114
+ },
115
+ execution: {
116
+ ralph_iterations: 0,
117
+ ultrawork_active: false,
118
+ tasks_completed: 0,
119
+ tasks_total: 0,
120
+ files_created: [],
121
+ files_modified: []
122
+ },
123
+ qa: {
124
+ ultraqa_cycles: 0,
125
+ build_status: 'pending',
126
+ lint_status: 'pending',
127
+ test_status: 'pending'
128
+ },
129
+ validation: {
130
+ architects_spawned: 0,
131
+ verdicts: [],
132
+ all_approved: false,
133
+ validation_rounds: 0
134
+ },
135
+ started_at: now,
136
+ completed_at: null,
137
+ phase_durations: {},
138
+ total_agents_spawned: 0,
139
+ wisdom_entries: 0,
140
+ session_id: sessionId
141
+ };
142
+ ensureAutopilotDir(directory);
143
+ writeAutopilotState(directory, state);
144
+ return state;
145
+ }
146
+ /**
147
+ * Transition to a new phase
148
+ */
149
+ export function transitionPhase(directory, newPhase) {
150
+ const state = readAutopilotState(directory);
151
+ if (!state || !state.active) {
152
+ return null;
153
+ }
154
+ const now = new Date().toISOString();
155
+ const oldPhase = state.phase;
156
+ // Record duration for old phase (if we have a start time recorded)
157
+ const phaseStartKey = `${oldPhase}_start_ms`;
158
+ if (state.phase_durations[phaseStartKey] !== undefined) {
159
+ const duration = Date.now() - state.phase_durations[phaseStartKey];
160
+ state.phase_durations[oldPhase] = duration;
161
+ }
162
+ // Transition to new phase and record start time
163
+ state.phase = newPhase;
164
+ state.phase_durations[`${newPhase}_start_ms`] = Date.now();
165
+ if (newPhase === 'complete' || newPhase === 'failed') {
166
+ state.completed_at = now;
167
+ state.active = false;
168
+ }
169
+ writeAutopilotState(directory, state);
170
+ return state;
171
+ }
172
+ /**
173
+ * Increment the agent spawn counter
174
+ */
175
+ export function incrementAgentCount(directory, count = 1) {
176
+ const state = readAutopilotState(directory);
177
+ if (!state)
178
+ return false;
179
+ state.total_agents_spawned += count;
180
+ return writeAutopilotState(directory, state);
181
+ }
182
+ /**
183
+ * Update expansion phase data
184
+ */
185
+ export function updateExpansion(directory, updates) {
186
+ const state = readAutopilotState(directory);
187
+ if (!state)
188
+ return false;
189
+ state.expansion = { ...state.expansion, ...updates };
190
+ return writeAutopilotState(directory, state);
191
+ }
192
+ /**
193
+ * Update planning phase data
194
+ */
195
+ export function updatePlanning(directory, updates) {
196
+ const state = readAutopilotState(directory);
197
+ if (!state)
198
+ return false;
199
+ state.planning = { ...state.planning, ...updates };
200
+ return writeAutopilotState(directory, state);
201
+ }
202
+ /**
203
+ * Update execution phase data
204
+ */
205
+ export function updateExecution(directory, updates) {
206
+ const state = readAutopilotState(directory);
207
+ if (!state)
208
+ return false;
209
+ state.execution = { ...state.execution, ...updates };
210
+ return writeAutopilotState(directory, state);
211
+ }
212
+ /**
213
+ * Update QA phase data
214
+ */
215
+ export function updateQA(directory, updates) {
216
+ const state = readAutopilotState(directory);
217
+ if (!state)
218
+ return false;
219
+ state.qa = { ...state.qa, ...updates };
220
+ return writeAutopilotState(directory, state);
221
+ }
222
+ /**
223
+ * Update validation phase data
224
+ */
225
+ export function updateValidation(directory, updates) {
226
+ const state = readAutopilotState(directory);
227
+ if (!state)
228
+ return false;
229
+ state.validation = { ...state.validation, ...updates };
230
+ return writeAutopilotState(directory, state);
231
+ }
232
+ /**
233
+ * Get the spec file path
234
+ */
235
+ export function getSpecPath(directory) {
236
+ return join(directory, '.omc', SPEC_DIR, 'spec.md');
237
+ }
238
+ /**
239
+ * Get the plan file path
240
+ */
241
+ export function getPlanPath(directory) {
242
+ return join(directory, '.omc', 'plans', 'autopilot-impl.md');
243
+ }
244
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/hooks/autopilot/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Autopilot Summary Generator
3
+ *
4
+ * Generates human-readable summaries when autopilot completes.
5
+ */
6
+ import type { AutopilotState, AutopilotSummary } from './types.js';
7
+ /**
8
+ * Generate a summary of the autopilot run
9
+ */
10
+ export declare function generateSummary(directory: string): AutopilotSummary | null;
11
+ /**
12
+ * Generate formatted summary output
13
+ */
14
+ export declare function formatSummary(summary: AutopilotSummary): string;
15
+ /**
16
+ * Generate a compact summary for HUD display
17
+ */
18
+ export declare function formatCompactSummary(state: AutopilotState): string;
19
+ /**
20
+ * Generate failure summary
21
+ */
22
+ export declare function formatFailureSummary(state: AutopilotState, error?: string): string;
23
+ /**
24
+ * List files for detailed summary
25
+ */
26
+ export declare function formatFileList(files: string[], title: string, maxFiles?: number): string;
27
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/hooks/autopilot/summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAkB,MAAM,YAAY,CAAC;AAEnF;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAsC1E;AAuBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAiC/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAelE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBlF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,CAiB5F"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Autopilot Summary Generator
3
+ *
4
+ * Generates human-readable summaries when autopilot completes.
5
+ */
6
+ import { readAutopilotState } from './state.js';
7
+ /**
8
+ * Generate a summary of the autopilot run
9
+ */
10
+ export function generateSummary(directory) {
11
+ const state = readAutopilotState(directory);
12
+ if (!state) {
13
+ return null;
14
+ }
15
+ const startTime = new Date(state.started_at).getTime();
16
+ const endTime = state.completed_at
17
+ ? new Date(state.completed_at).getTime()
18
+ : Date.now();
19
+ const duration = endTime - startTime;
20
+ const phasesCompleted = [];
21
+ if (state.expansion.spec_path)
22
+ phasesCompleted.push('expansion');
23
+ if (state.planning.approved)
24
+ phasesCompleted.push('planning');
25
+ if (state.execution.ralph_completed_at)
26
+ phasesCompleted.push('execution');
27
+ if (state.qa.qa_completed_at)
28
+ phasesCompleted.push('qa');
29
+ if (state.validation.all_approved)
30
+ phasesCompleted.push('validation');
31
+ if (state.phase === 'complete')
32
+ phasesCompleted.push('complete');
33
+ let testsStatus = 'Not run';
34
+ if (state.qa.test_status === 'passing') {
35
+ testsStatus = 'Passing';
36
+ }
37
+ else if (state.qa.test_status === 'failing') {
38
+ testsStatus = 'Failing';
39
+ }
40
+ else if (state.qa.test_status === 'skipped') {
41
+ testsStatus = 'Skipped';
42
+ }
43
+ return {
44
+ originalIdea: state.originalIdea,
45
+ filesCreated: state.execution.files_created,
46
+ filesModified: state.execution.files_modified,
47
+ testsStatus,
48
+ duration,
49
+ agentsSpawned: state.total_agents_spawned,
50
+ phasesCompleted
51
+ };
52
+ }
53
+ /**
54
+ * Format duration in human-readable format
55
+ */
56
+ function formatDuration(ms) {
57
+ const seconds = Math.floor(ms / 1000);
58
+ const minutes = Math.floor(seconds / 60);
59
+ const hours = Math.floor(minutes / 60);
60
+ if (hours > 0) {
61
+ const remainingMinutes = minutes % 60;
62
+ return `${hours}h ${remainingMinutes}m`;
63
+ }
64
+ if (minutes > 0) {
65
+ const remainingSeconds = seconds % 60;
66
+ return `${minutes}m ${remainingSeconds}s`;
67
+ }
68
+ return `${seconds}s`;
69
+ }
70
+ /**
71
+ * Generate formatted summary output
72
+ */
73
+ export function formatSummary(summary) {
74
+ const lines = [
75
+ '',
76
+ '╭──────────────────────────────────────────────────────╮',
77
+ '│ AUTOPILOT COMPLETE │',
78
+ '├──────────────────────────────────────────────────────┤'
79
+ ];
80
+ // Original idea (truncate if too long)
81
+ const ideaDisplay = summary.originalIdea.length > 50
82
+ ? summary.originalIdea.substring(0, 47) + '...'
83
+ : summary.originalIdea;
84
+ lines.push(`│ Original Idea: ${ideaDisplay.padEnd(36)} │`);
85
+ lines.push('│ │');
86
+ // Delivered section
87
+ lines.push('│ Delivered: │');
88
+ lines.push(`│ • ${summary.filesCreated.length} files created${' '.repeat(36 - String(summary.filesCreated.length).length)}│`);
89
+ lines.push(`│ • ${summary.filesModified.length} files modified${' '.repeat(35 - String(summary.filesModified.length).length)}│`);
90
+ lines.push(`│ • Tests: ${summary.testsStatus}${' '.repeat(36 - summary.testsStatus.length)}│`);
91
+ lines.push('│ │');
92
+ // Metrics
93
+ lines.push('│ Metrics: │');
94
+ const durationStr = formatDuration(summary.duration);
95
+ lines.push(`│ • Duration: ${durationStr}${' '.repeat(35 - durationStr.length)}│`);
96
+ lines.push(`│ • Agents spawned: ${summary.agentsSpawned}${' '.repeat(30 - String(summary.agentsSpawned).length)}│`);
97
+ lines.push(`│ • Phases completed: ${summary.phasesCompleted.length}/5${' '.repeat(27)}│`);
98
+ lines.push('╰──────────────────────────────────────────────────────╯');
99
+ lines.push('');
100
+ return lines.join('\n');
101
+ }
102
+ /**
103
+ * Generate a compact summary for HUD display
104
+ */
105
+ export function formatCompactSummary(state) {
106
+ const phase = state.phase.toUpperCase();
107
+ const files = state.execution.files_created.length + state.execution.files_modified.length;
108
+ const agents = state.total_agents_spawned;
109
+ if (state.phase === 'complete') {
110
+ return `[AUTOPILOT ✓] Complete | ${files} files | ${agents} agents`;
111
+ }
112
+ if (state.phase === 'failed') {
113
+ return `[AUTOPILOT ✗] Failed at ${state.phase}`;
114
+ }
115
+ const phaseIndex = ['expansion', 'planning', 'execution', 'qa', 'validation'].indexOf(state.phase);
116
+ return `[AUTOPILOT] Phase ${phaseIndex + 1}/5: ${phase} | ${files} files`;
117
+ }
118
+ /**
119
+ * Generate failure summary
120
+ */
121
+ export function formatFailureSummary(state, error) {
122
+ const lines = [
123
+ '',
124
+ '╭──────────────────────────────────────────────────────╮',
125
+ '│ AUTOPILOT FAILED │',
126
+ '├──────────────────────────────────────────────────────┤',
127
+ `│ Failed at phase: ${state.phase.toUpperCase().padEnd(33)} │`
128
+ ];
129
+ if (error) {
130
+ const errorLines = error.match(/.{1,48}/g) || [error];
131
+ lines.push('│ │');
132
+ lines.push('│ Error: │');
133
+ for (const line of errorLines.slice(0, 3)) {
134
+ lines.push(`│ ${line.padEnd(50)} │`);
135
+ }
136
+ }
137
+ lines.push('│ │');
138
+ lines.push('│ Progress preserved. Run /autopilot to resume. │');
139
+ lines.push('╰──────────────────────────────────────────────────────╯');
140
+ lines.push('');
141
+ return lines.join('\n');
142
+ }
143
+ /**
144
+ * List files for detailed summary
145
+ */
146
+ export function formatFileList(files, title, maxFiles = 10) {
147
+ if (files.length === 0) {
148
+ return '';
149
+ }
150
+ const lines = [`\n### ${title} (${files.length})`];
151
+ const displayFiles = files.slice(0, maxFiles);
152
+ for (const file of displayFiles) {
153
+ lines.push(`- ${file}`);
154
+ }
155
+ if (files.length > maxFiles) {
156
+ lines.push(`- ... and ${files.length - maxFiles} more`);
157
+ }
158
+ return lines.join('\n');
159
+ }
160
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/hooks/autopilot/summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Autopilot Phase Transitions
3
+ *
4
+ * Handles transitions between phases, especially the critical Ralph → UltraQA
5
+ * and UltraQA → Validation transitions that must respect mutual exclusion.
6
+ */
7
+ import type { AutopilotState } from './types.js';
8
+ export interface TransitionResult {
9
+ success: boolean;
10
+ error?: string;
11
+ state?: AutopilotState;
12
+ }
13
+ /**
14
+ * Transition from Ralph (Phase 2: Execution) to UltraQA (Phase 3: QA)
15
+ *
16
+ * This handles the mutual exclusion by:
17
+ * 1. Saving Ralph's progress to autopilot state
18
+ * 2. Cleanly terminating Ralph mode (and linked Ultrawork)
19
+ * 3. Starting UltraQA mode
20
+ * 4. Preserving context for potential rollback
21
+ */
22
+ export declare function transitionRalphToUltraQA(directory: string, sessionId: string): TransitionResult;
23
+ /**
24
+ * Transition from UltraQA (Phase 3: QA) to Validation (Phase 4)
25
+ */
26
+ export declare function transitionUltraQAToValidation(directory: string): TransitionResult;
27
+ /**
28
+ * Transition from Validation (Phase 4) to Complete
29
+ */
30
+ export declare function transitionToComplete(directory: string): TransitionResult;
31
+ /**
32
+ * Transition to failed state
33
+ */
34
+ export declare function transitionToFailed(directory: string, error: string): TransitionResult;
35
+ /**
36
+ * Get a prompt for Claude to execute the transition
37
+ */
38
+ export declare function getTransitionPrompt(fromPhase: string, toPhase: string): string;
39
+ //# sourceMappingURL=transition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../../src/hooks/autopilot/transition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,gBAAgB,CAkElB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,GAChB,gBAAgB,CAyClB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAWxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAWlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,CA6ER"}