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.
- package/README.md +26 -2
- package/agents/build-fixer-low.md +83 -0
- package/agents/build-fixer.md +160 -0
- package/agents/code-reviewer-low.md +82 -0
- package/agents/code-reviewer.md +115 -0
- package/agents/planner.md +83 -0
- package/agents/security-reviewer-low.md +83 -0
- package/agents/security-reviewer.md +186 -0
- package/agents/tdd-guide-low.md +81 -0
- package/agents/tdd-guide.md +165 -0
- package/commands/autopilot.md +131 -0
- package/commands/build-fix.md +55 -0
- package/commands/cancel-autopilot.md +35 -0
- package/commands/code-review.md +47 -0
- package/commands/ralph.md +9 -0
- package/commands/security-review.md +47 -0
- package/commands/tdd.md +54 -0
- package/dist/__tests__/hud-agents.test.js +13 -10
- package/dist/__tests__/hud-agents.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +1 -1
- package/dist/__tests__/skills.test.js +8 -4
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/agents/definitions.d.ts +32 -0
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +93 -1
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/delegation-validator.d.ts +31 -0
- package/dist/agents/delegation-validator.d.ts.map +1 -0
- package/dist/agents/delegation-validator.js +75 -0
- package/dist/agents/delegation-validator.js.map +1 -0
- package/dist/agents/prompt-generator.d.ts +95 -0
- package/dist/agents/prompt-generator.d.ts.map +1 -0
- package/dist/agents/prompt-generator.js +140 -0
- package/dist/agents/prompt-generator.js.map +1 -0
- package/dist/agents/prompt-sections/index.d.ts +44 -0
- package/dist/agents/prompt-sections/index.d.ts.map +1 -0
- package/dist/agents/prompt-sections/index.js +194 -0
- package/dist/agents/prompt-sections/index.js.map +1 -0
- package/dist/agents/types.d.ts +2 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js.map +1 -1
- package/dist/features/background-agent/manager.d.ts +10 -1
- package/dist/features/background-agent/manager.d.ts.map +1 -1
- package/dist/features/background-agent/manager.js +79 -11
- package/dist/features/background-agent/manager.js.map +1 -1
- package/dist/features/background-agent/types.d.ts +30 -1
- package/dist/features/background-agent/types.d.ts.map +1 -1
- package/dist/features/delegation-categories/index.d.ts +116 -0
- package/dist/features/delegation-categories/index.d.ts.map +1 -0
- package/dist/features/delegation-categories/index.js +287 -0
- package/dist/features/delegation-categories/index.js.map +1 -0
- package/dist/features/delegation-categories/test-categories.d.ts +7 -0
- package/dist/features/delegation-categories/test-categories.d.ts.map +1 -0
- package/dist/features/delegation-categories/test-categories.js +88 -0
- package/dist/features/delegation-categories/test-categories.js.map +1 -0
- package/dist/features/delegation-categories/types.d.ts +51 -0
- package/dist/features/delegation-categories/types.d.ts.map +1 -0
- package/dist/features/delegation-categories/types.js +8 -0
- package/dist/features/delegation-categories/types.js.map +1 -0
- package/dist/features/index.d.ts +2 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +10 -0
- package/dist/features/index.js.map +1 -1
- package/dist/features/model-routing/prompts/index.d.ts +2 -0
- package/dist/features/model-routing/prompts/index.d.ts.map +1 -1
- package/dist/features/model-routing/prompts/index.js +6 -0
- package/dist/features/model-routing/prompts/index.js.map +1 -1
- package/dist/features/notepad-wisdom/extractor.d.ts +30 -0
- package/dist/features/notepad-wisdom/extractor.d.ts.map +1 -0
- package/dist/features/notepad-wisdom/extractor.js +68 -0
- package/dist/features/notepad-wisdom/extractor.js.map +1 -0
- package/dist/features/notepad-wisdom/index.d.ts +39 -0
- package/dist/features/notepad-wisdom/index.d.ts.map +1 -0
- package/dist/features/notepad-wisdom/index.js +169 -0
- package/dist/features/notepad-wisdom/index.js.map +1 -0
- package/dist/features/notepad-wisdom/types.d.ts +18 -0
- package/dist/features/notepad-wisdom/types.d.ts.map +1 -0
- package/dist/features/notepad-wisdom/types.js +7 -0
- package/dist/features/notepad-wisdom/types.js.map +1 -0
- package/dist/hooks/autopilot/__tests__/cancel.test.d.ts +2 -0
- package/dist/hooks/autopilot/__tests__/cancel.test.d.ts.map +1 -0
- package/dist/hooks/autopilot/__tests__/cancel.test.js +397 -0
- package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -0
- package/dist/hooks/autopilot/__tests__/prompts.test.d.ts +2 -0
- package/dist/hooks/autopilot/__tests__/prompts.test.d.ts.map +1 -0
- package/dist/hooks/autopilot/__tests__/prompts.test.js +74 -0
- package/dist/hooks/autopilot/__tests__/prompts.test.js.map +1 -0
- package/dist/hooks/autopilot/__tests__/state.test.d.ts +2 -0
- package/dist/hooks/autopilot/__tests__/state.test.d.ts.map +1 -0
- package/dist/hooks/autopilot/__tests__/state.test.js +75 -0
- package/dist/hooks/autopilot/__tests__/state.test.js.map +1 -0
- package/dist/hooks/autopilot/__tests__/summary.test.d.ts +2 -0
- package/dist/hooks/autopilot/__tests__/summary.test.d.ts.map +1 -0
- package/dist/hooks/autopilot/__tests__/summary.test.js +289 -0
- package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -0
- package/dist/hooks/autopilot/__tests__/transition.test.d.ts +2 -0
- package/dist/hooks/autopilot/__tests__/transition.test.d.ts.map +1 -0
- package/dist/hooks/autopilot/__tests__/transition.test.js +59 -0
- package/dist/hooks/autopilot/__tests__/transition.test.js.map +1 -0
- package/dist/hooks/autopilot/__tests__/validation.test.d.ts +2 -0
- package/dist/hooks/autopilot/__tests__/validation.test.d.ts.map +1 -0
- package/dist/hooks/autopilot/__tests__/validation.test.js +450 -0
- package/dist/hooks/autopilot/__tests__/validation.test.js.map +1 -0
- package/dist/hooks/autopilot/cancel.d.ts +42 -0
- package/dist/hooks/autopilot/cancel.d.ts.map +1 -0
- package/dist/hooks/autopilot/cancel.js +156 -0
- package/dist/hooks/autopilot/cancel.js.map +1 -0
- package/dist/hooks/autopilot/index.d.ts +15 -0
- package/dist/hooks/autopilot/index.d.ts.map +1 -0
- package/dist/hooks/autopilot/index.js +20 -0
- package/dist/hooks/autopilot/index.js.map +1 -0
- package/dist/hooks/autopilot/prompts.d.ts +37 -0
- package/dist/hooks/autopilot/prompts.d.ts.map +1 -0
- package/dist/hooks/autopilot/prompts.js +353 -0
- package/dist/hooks/autopilot/prompts.js.map +1 -0
- package/dist/hooks/autopilot/state.d.ts +67 -0
- package/dist/hooks/autopilot/state.d.ts.map +1 -0
- package/dist/hooks/autopilot/state.js +244 -0
- package/dist/hooks/autopilot/state.js.map +1 -0
- package/dist/hooks/autopilot/summary.d.ts +27 -0
- package/dist/hooks/autopilot/summary.d.ts.map +1 -0
- package/dist/hooks/autopilot/summary.js +160 -0
- package/dist/hooks/autopilot/summary.js.map +1 -0
- package/dist/hooks/autopilot/transition.d.ts +39 -0
- package/dist/hooks/autopilot/transition.d.ts.map +1 -0
- package/dist/hooks/autopilot/transition.js +216 -0
- package/dist/hooks/autopilot/transition.js.map +1 -0
- package/dist/hooks/autopilot/types.d.ts +211 -0
- package/dist/hooks/autopilot/types.d.ts.map +1 -0
- package/dist/hooks/autopilot/types.js +30 -0
- package/dist/hooks/autopilot/types.js.map +1 -0
- package/dist/hooks/autopilot/validation.d.ts +43 -0
- package/dist/hooks/autopilot/validation.d.ts.map +1 -0
- package/dist/hooks/autopilot/validation.js +191 -0
- package/dist/hooks/autopilot/validation.js.map +1 -0
- package/dist/hooks/bridge.d.ts +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +79 -6
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/keyword-detector/index.d.ts +1 -1
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
- package/dist/hooks/keyword-detector/index.js +39 -2
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts +2 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +13 -3
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/ralph-loop/index.d.ts +0 -20
- package/dist/hooks/ralph-loop/index.d.ts.map +1 -1
- package/dist/hooks/ralph-loop/index.js +6 -40
- package/dist/hooks/ralph-loop/index.js.map +1 -1
- package/dist/hooks/todo-continuation/index.d.ts +31 -1
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
- package/dist/hooks/todo-continuation/index.js +38 -1
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/hooks/ultrawork-state/index.d.ts +3 -1
- package/dist/hooks/ultrawork-state/index.d.ts.map +1 -1
- package/dist/hooks/ultrawork-state/index.js +3 -2
- package/dist/hooks/ultrawork-state/index.js.map +1 -1
- package/dist/hud/elements/autopilot.d.ts +29 -0
- package/dist/hud/elements/autopilot.d.ts.map +1 -0
- package/dist/hud/elements/autopilot.js +97 -0
- package/dist/hud/elements/autopilot.js.map +1 -0
- package/dist/hud/elements/index.d.ts +1 -0
- package/dist/hud/elements/index.d.ts.map +1 -1
- package/dist/hud/elements/index.js +1 -0
- package/dist/hud/elements/index.js.map +1 -1
- package/dist/hud/elements/limits.d.ts +1 -1
- package/dist/hud/elements/limits.d.ts.map +1 -1
- package/dist/hud/elements/limits.js +35 -2
- package/dist/hud/elements/limits.js.map +1 -1
- package/dist/hud/elements/todos.d.ts +1 -1
- package/dist/hud/elements/todos.js +3 -3
- package/dist/hud/elements/todos.js.map +1 -1
- package/dist/hud/render.js +6 -6
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/types.d.ts +4 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +32 -6
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/installer/hooks.d.ts +5 -0
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +20 -0
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.js +2 -2
- package/dist/installer/index.js.map +1 -1
- package/dist/tools/diagnostics/index.d.ts +29 -0
- package/dist/tools/diagnostics/index.d.ts.map +1 -0
- package/dist/tools/diagnostics/index.js +118 -0
- package/dist/tools/diagnostics/index.js.map +1 -0
- package/dist/tools/diagnostics/lsp-aggregator.d.ts +26 -0
- package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -0
- package/dist/tools/diagnostics/lsp-aggregator.js +99 -0
- package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -0
- package/dist/tools/diagnostics/tsc-runner.d.ts +26 -0
- package/dist/tools/diagnostics/tsc-runner.d.ts.map +1 -0
- package/dist/tools/diagnostics/tsc-runner.js +70 -0
- package/dist/tools/diagnostics/tsc-runner.js.map +1 -0
- package/dist/tools/lsp-tools.d.ts +10 -0
- package/dist/tools/lsp-tools.d.ts.map +1 -1
- package/dist/tools/lsp-tools.js +43 -1
- package/dist/tools/lsp-tools.js.map +1 -1
- package/dist/tools/resume-session.d.ts +63 -0
- package/dist/tools/resume-session.d.ts.map +1 -0
- package/dist/tools/resume-session.js +106 -0
- package/dist/tools/resume-session.js.map +1 -0
- package/dist/utils/__tests__/paths.test.d.ts +2 -0
- package/dist/utils/__tests__/paths.test.d.ts.map +1 -0
- package/dist/utils/__tests__/paths.test.js +88 -0
- package/dist/utils/__tests__/paths.test.js.map +1 -0
- package/dist/utils/paths.d.ts +32 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +55 -0
- package/dist/utils/paths.js.map +1 -0
- package/docs/ARCHITECTURE.md +80 -1
- package/docs/CLAUDE.md +97 -3
- package/docs/FEATURES.md +2167 -0
- package/docs/FULL-README.md +69 -1
- package/package.json +1 -1
- package/skills/autopilot/SKILL.md +168 -0
- package/skills/cancel-autopilot/SKILL.md +53 -0
- package/skills/omc-setup/SKILL.md +95 -0
- package/skills/ralph/SKILL.md +9 -0
- 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"}
|