oh-my-claude-sisyphus 3.6.0 → 3.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/omc-setup.md +3 -3
- package/commands/release.md +1 -1
- package/dist/__tests__/analytics/transcript-scanner.test.js +69 -27
- package/dist/__tests__/analytics/transcript-scanner.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +2 -1
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/analytics/session-manager.d.ts +24 -0
- package/dist/analytics/session-manager.d.ts.map +1 -1
- package/dist/analytics/session-manager.js +98 -9
- package/dist/analytics/session-manager.js.map +1 -1
- package/dist/analytics/transcript-scanner.d.ts +9 -8
- package/dist/analytics/transcript-scanner.d.ts.map +1 -1
- package/dist/analytics/transcript-scanner.js +146 -16
- package/dist/analytics/transcript-scanner.js.map +1 -1
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/index.js +0 -0
- package/dist/hooks/empty-message-sanitizer/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/empty-message-sanitizer/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/empty-message-sanitizer/__tests__/index.test.js +416 -0
- package/dist/hooks/empty-message-sanitizer/__tests__/index.test.js.map +1 -0
- package/dist/hooks/keyword-detector/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/keyword-detector/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/keyword-detector/__tests__/index.test.js +427 -0
- package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -0
- package/dist/hooks/think-mode/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/think-mode/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/think-mode/__tests__/index.test.js +556 -0
- package/dist/hooks/think-mode/__tests__/index.test.js.map +1 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +8 -0
- package/dist/installer/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/omc-setup/SKILL.md +27 -3
- package/skills/release/SKILL.md +1 -1
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
- package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
- package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
- package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/config.test.js +0 -37
- package/dist/__tests__/learned-skills/config.test.js.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.js +0 -99
- package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.js +0 -59
- package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.js +0 -69
- package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.js +0 -81
- package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.js +0 -85
- package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
- package/dist/agents/codex-agents.d.ts +0 -20
- package/dist/agents/codex-agents.d.ts.map +0 -1
- package/dist/agents/codex-agents.js +0 -36
- package/dist/agents/codex-agents.js.map +0 -1
- package/dist/agents/document-writer.d.ts +0 -11
- package/dist/agents/document-writer.d.ts.map +0 -1
- package/dist/agents/document-writer.js +0 -209
- package/dist/agents/document-writer.js.map +0 -1
- package/dist/agents/frontend-engineer.d.ts +0 -11
- package/dist/agents/frontend-engineer.d.ts.map +0 -1
- package/dist/agents/frontend-engineer.js +0 -115
- package/dist/agents/frontend-engineer.js.map +0 -1
- package/dist/agents/librarian.d.ts +0 -12
- package/dist/agents/librarian.d.ts.map +0 -1
- package/dist/agents/librarian.js +0 -103
- package/dist/agents/librarian.js.map +0 -1
- package/dist/agents/metis.d.ts +0 -12
- package/dist/agents/metis.d.ts.map +0 -1
- package/dist/agents/metis.js +0 -117
- package/dist/agents/metis.js.map +0 -1
- package/dist/agents/momus.d.ts +0 -12
- package/dist/agents/momus.d.ts.map +0 -1
- package/dist/agents/momus.js +0 -128
- package/dist/agents/momus.js.map +0 -1
- package/dist/agents/multimodal-looker.d.ts +0 -11
- package/dist/agents/multimodal-looker.d.ts.map +0 -1
- package/dist/agents/multimodal-looker.js +0 -70
- package/dist/agents/multimodal-looker.js.map +0 -1
- package/dist/agents/oracle.d.ts +0 -13
- package/dist/agents/oracle.d.ts.map +0 -1
- package/dist/agents/oracle.js +0 -191
- package/dist/agents/oracle.js.map +0 -1
- package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
- package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
- package/dist/agents/orchestrator-sisyphus.js +0 -115
- package/dist/agents/orchestrator-sisyphus.js.map +0 -1
- package/dist/agents/prometheus.d.ts +0 -12
- package/dist/agents/prometheus.d.ts.map +0 -1
- package/dist/agents/prometheus.js +0 -195
- package/dist/agents/prometheus.js.map +0 -1
- package/dist/agents/sisyphus-junior.d.ts +0 -12
- package/dist/agents/sisyphus-junior.d.ts.map +0 -1
- package/dist/agents/sisyphus-junior.js +0 -93
- package/dist/agents/sisyphus-junior.js.map +0 -1
- package/dist/cli/components/CostDashboard.d.ts +0 -15
- package/dist/cli/components/CostDashboard.d.ts.map +0 -1
- package/dist/cli/components/CostDashboard.js +0 -15
- package/dist/cli/components/CostDashboard.js.map +0 -1
- package/dist/cli/components/LiveStats.d.ts +0 -16
- package/dist/cli/components/LiveStats.d.ts.map +0 -1
- package/dist/cli/components/LiveStats.js +0 -16
- package/dist/cli/components/LiveStats.js.map +0 -1
- package/dist/cli/components/SessionBrowser.d.ts +0 -14
- package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
- package/dist/cli/components/SessionBrowser.js +0 -14
- package/dist/cli/components/SessionBrowser.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -21
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -21
- package/dist/cli/tui.js.map +0 -1
- package/dist/hooks/autopilot/signals.d.ts +0 -20
- package/dist/hooks/autopilot/signals.d.ts.map +0 -1
- package/dist/hooks/autopilot/signals.js +0 -75
- package/dist/hooks/autopilot/signals.js.map +0 -1
- package/dist/hooks/autopilot/summary.d.ts +0 -27
- package/dist/hooks/autopilot/summary.d.ts.map +0 -1
- package/dist/hooks/autopilot/summary.js +0 -160
- package/dist/hooks/autopilot/summary.js.map +0 -1
- package/dist/hooks/autopilot/transition.d.ts +0 -39
- package/dist/hooks/autopilot/transition.d.ts.map +0 -1
- package/dist/hooks/autopilot/transition.js +0 -216
- package/dist/hooks/autopilot/transition.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
- package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.js +0 -201
- package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
- package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.js +0 -34
- package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
- package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
- package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
- package/dist/hooks/edit-error-recovery/index.js +0 -89
- package/dist/hooks/edit-error-recovery/index.js.map +0 -1
- package/dist/hooks/learned-skills/config.d.ts +0 -53
- package/dist/hooks/learned-skills/config.d.ts.map +0 -1
- package/dist/hooks/learned-skills/config.js +0 -103
- package/dist/hooks/learned-skills/config.js.map +0 -1
- package/dist/hooks/learned-skills/constants.d.ts +0 -24
- package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
- package/dist/hooks/learned-skills/constants.js +0 -26
- package/dist/hooks/learned-skills/constants.js.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.js +0 -83
- package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
- package/dist/hooks/learned-skills/detector.d.ts +0 -30
- package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detector.js +0 -150
- package/dist/hooks/learned-skills/detector.js.map +0 -1
- package/dist/hooks/learned-skills/finder.d.ts +0 -21
- package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
- package/dist/hooks/learned-skills/finder.js +0 -117
- package/dist/hooks/learned-skills/finder.js.map +0 -1
- package/dist/hooks/learned-skills/index.d.ts +0 -62
- package/dist/hooks/learned-skills/index.d.ts.map +0 -1
- package/dist/hooks/learned-skills/index.js +0 -137
- package/dist/hooks/learned-skills/index.js.map +0 -1
- package/dist/hooks/learned-skills/loader.d.ts +0 -20
- package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
- package/dist/hooks/learned-skills/loader.js +0 -107
- package/dist/hooks/learned-skills/loader.js.map +0 -1
- package/dist/hooks/learned-skills/parser.d.ts +0 -21
- package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
- package/dist/hooks/learned-skills/parser.js +0 -190
- package/dist/hooks/learned-skills/parser.js.map +0 -1
- package/dist/hooks/learned-skills/promotion.d.ts +0 -29
- package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
- package/dist/hooks/learned-skills/promotion.js +0 -87
- package/dist/hooks/learned-skills/promotion.js.map +0 -1
- package/dist/hooks/learned-skills/types.d.ts +0 -109
- package/dist/hooks/learned-skills/types.d.ts.map +0 -1
- package/dist/hooks/learned-skills/types.js +0 -8
- package/dist/hooks/learned-skills/types.js.map +0 -1
- package/dist/hooks/learned-skills/validator.d.ts +0 -15
- package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
- package/dist/hooks/learned-skills/validator.js +0 -87
- package/dist/hooks/learned-skills/validator.js.map +0 -1
- package/dist/hooks/learned-skills/writer.d.ts +0 -27
- package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
- package/dist/hooks/learned-skills/writer.js +0 -126
- package/dist/hooks/learned-skills/writer.js.map +0 -1
- package/dist/hooks/mnemosyne/config.d.ts +0 -53
- package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/config.js +0 -103
- package/dist/hooks/mnemosyne/config.js.map +0 -1
- package/dist/hooks/mnemosyne/constants.d.ts +0 -24
- package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/constants.js +0 -26
- package/dist/hooks/mnemosyne/constants.js.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.js +0 -83
- package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
- package/dist/hooks/mnemosyne/detector.d.ts +0 -30
- package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detector.js +0 -150
- package/dist/hooks/mnemosyne/detector.js.map +0 -1
- package/dist/hooks/mnemosyne/finder.d.ts +0 -21
- package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/finder.js +0 -117
- package/dist/hooks/mnemosyne/finder.js.map +0 -1
- package/dist/hooks/mnemosyne/index.d.ts +0 -62
- package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/index.js +0 -137
- package/dist/hooks/mnemosyne/index.js.map +0 -1
- package/dist/hooks/mnemosyne/loader.d.ts +0 -20
- package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/loader.js +0 -113
- package/dist/hooks/mnemosyne/loader.js.map +0 -1
- package/dist/hooks/mnemosyne/parser.d.ts +0 -21
- package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/parser.js +0 -190
- package/dist/hooks/mnemosyne/parser.js.map +0 -1
- package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
- package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/promotion.js +0 -87
- package/dist/hooks/mnemosyne/promotion.js.map +0 -1
- package/dist/hooks/mnemosyne/types.d.ts +0 -109
- package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/types.js +0 -8
- package/dist/hooks/mnemosyne/types.js.map +0 -1
- package/dist/hooks/mnemosyne/validator.d.ts +0 -15
- package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/validator.js +0 -87
- package/dist/hooks/mnemosyne/validator.js.map +0 -1
- package/dist/hooks/mnemosyne/writer.d.ts +0 -27
- package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/writer.js +0 -126
- package/dist/hooks/mnemosyne/writer.js.map +0 -1
- package/dist/hooks/ralph-loop/index.d.ts +0 -116
- package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
- package/dist/hooks/ralph-loop/index.js +0 -322
- package/dist/hooks/ralph-loop/index.js.map +0 -1
- package/dist/hooks/ralph-prd/index.d.ts +0 -130
- package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
- package/dist/hooks/ralph-prd/index.js +0 -310
- package/dist/hooks/ralph-prd/index.js.map +0 -1
- package/dist/hooks/ralph-progress/index.d.ts +0 -102
- package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
- package/dist/hooks/ralph-progress/index.js +0 -408
- package/dist/hooks/ralph-progress/index.js.map +0 -1
- package/dist/hooks/ralph-verifier/index.d.ts +0 -72
- package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
- package/dist/hooks/ralph-verifier/index.js +0 -223
- package/dist/hooks/ralph-verifier/index.js.map +0 -1
- package/dist/hooks/session-recovery/constants.d.ts +0 -56
- package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/session-recovery/constants.js +0 -78
- package/dist/hooks/session-recovery/constants.js.map +0 -1
- package/dist/hooks/session-recovery/index.d.ts +0 -53
- package/dist/hooks/session-recovery/index.d.ts.map +0 -1
- package/dist/hooks/session-recovery/index.js +0 -321
- package/dist/hooks/session-recovery/index.js.map +0 -1
- package/dist/hooks/session-recovery/storage.d.ts +0 -76
- package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
- package/dist/hooks/session-recovery/storage.js +0 -383
- package/dist/hooks/session-recovery/storage.js.map +0 -1
- package/dist/hooks/session-recovery/types.d.ts +0 -145
- package/dist/hooks/session-recovery/types.d.ts.map +0 -1
- package/dist/hooks/session-recovery/types.js +0 -8
- package/dist/hooks/session-recovery/types.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
- package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
- package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
- package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
- package/dist/hooks/ultraqa-loop/index.js +0 -216
- package/dist/hooks/ultraqa-loop/index.js.map +0 -1
- package/dist/hooks/ultrawork-state/index.d.ts +0 -62
- package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
- package/dist/hooks/ultrawork-state/index.js +0 -208
- package/dist/hooks/ultrawork-state/index.js.map +0 -1
- package/dist/hud/sisyphus-state.d.ts +0 -31
- package/dist/hud/sisyphus-state.d.ts.map +0 -1
- package/dist/hud/sisyphus-state.js +0 -163
- package/dist/hud/sisyphus-state.js.map +0 -1
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UltraQA Loop Hook
|
|
3
|
-
*
|
|
4
|
-
* QA cycling workflow that runs test → architect verify → fix → repeat
|
|
5
|
-
* until the QA goal is met or max cycles reached.
|
|
6
|
-
*/
|
|
7
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
import { readRalphState } from '../ralph-loop/index.js';
|
|
10
|
-
const DEFAULT_MAX_CYCLES = 5;
|
|
11
|
-
const SAME_FAILURE_THRESHOLD = 3;
|
|
12
|
-
/**
|
|
13
|
-
* Get the state file path for UltraQA
|
|
14
|
-
*/
|
|
15
|
-
function getStateFilePath(directory) {
|
|
16
|
-
const omcDir = join(directory, '.omc');
|
|
17
|
-
return join(omcDir, 'ultraqa-state.json');
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Ensure the .omc directory exists
|
|
21
|
-
*/
|
|
22
|
-
function ensureStateDir(directory) {
|
|
23
|
-
const omcDir = join(directory, '.omc');
|
|
24
|
-
if (!existsSync(omcDir)) {
|
|
25
|
-
mkdirSync(omcDir, { recursive: true });
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Read UltraQA state from disk
|
|
30
|
-
*/
|
|
31
|
-
export function readUltraQAState(directory) {
|
|
32
|
-
const stateFile = getStateFilePath(directory);
|
|
33
|
-
if (!existsSync(stateFile)) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
try {
|
|
37
|
-
const content = readFileSync(stateFile, 'utf-8');
|
|
38
|
-
return JSON.parse(content);
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Write UltraQA state to disk
|
|
46
|
-
*/
|
|
47
|
-
export function writeUltraQAState(directory, state) {
|
|
48
|
-
try {
|
|
49
|
-
ensureStateDir(directory);
|
|
50
|
-
const stateFile = getStateFilePath(directory);
|
|
51
|
-
writeFileSync(stateFile, JSON.stringify(state, null, 2));
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Clear UltraQA state
|
|
60
|
-
*/
|
|
61
|
-
export function clearUltraQAState(directory) {
|
|
62
|
-
const stateFile = getStateFilePath(directory);
|
|
63
|
-
if (!existsSync(stateFile)) {
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
try {
|
|
67
|
-
unlinkSync(stateFile);
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Check if Ralph Loop is active (mutual exclusion check)
|
|
76
|
-
*/
|
|
77
|
-
export function isRalphLoopActive(directory) {
|
|
78
|
-
const ralphState = readRalphState(directory);
|
|
79
|
-
return ralphState !== null && ralphState.active === true;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Start a new UltraQA cycle
|
|
83
|
-
* Returns false if Ralph Loop is already active (mutual exclusion)
|
|
84
|
-
*/
|
|
85
|
-
export function startUltraQA(directory, goalType, sessionId, options) {
|
|
86
|
-
// Mutual exclusion check: cannot start UltraQA if Ralph Loop is active
|
|
87
|
-
if (isRalphLoopActive(directory)) {
|
|
88
|
-
return {
|
|
89
|
-
success: false,
|
|
90
|
-
error: 'Cannot start UltraQA while Ralph Loop is active. Cancel Ralph Loop first with /oh-my-claudecode:cancel-ralph.'
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
const state = {
|
|
94
|
-
active: true,
|
|
95
|
-
goal_type: goalType,
|
|
96
|
-
goal_pattern: options?.customPattern ?? null,
|
|
97
|
-
cycle: 1,
|
|
98
|
-
max_cycles: options?.maxCycles ?? DEFAULT_MAX_CYCLES,
|
|
99
|
-
failures: [],
|
|
100
|
-
started_at: new Date().toISOString(),
|
|
101
|
-
session_id: sessionId
|
|
102
|
-
};
|
|
103
|
-
const written = writeUltraQAState(directory, state);
|
|
104
|
-
return { success: written };
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Record a failure and increment cycle
|
|
108
|
-
*/
|
|
109
|
-
export function recordFailure(directory, failureDescription) {
|
|
110
|
-
const state = readUltraQAState(directory);
|
|
111
|
-
if (!state || !state.active) {
|
|
112
|
-
return { state: null, shouldExit: true, reason: 'not_active' };
|
|
113
|
-
}
|
|
114
|
-
// Add failure to array
|
|
115
|
-
state.failures.push(failureDescription);
|
|
116
|
-
// Check for repeated same failure
|
|
117
|
-
const recentFailures = state.failures.slice(-SAME_FAILURE_THRESHOLD);
|
|
118
|
-
if (recentFailures.length >= SAME_FAILURE_THRESHOLD) {
|
|
119
|
-
const allSame = recentFailures.every(f => normalizeFailure(f) === normalizeFailure(recentFailures[0]));
|
|
120
|
-
if (allSame) {
|
|
121
|
-
return {
|
|
122
|
-
state,
|
|
123
|
-
shouldExit: true,
|
|
124
|
-
reason: `Same failure detected ${SAME_FAILURE_THRESHOLD} times: ${recentFailures[0]}`
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
// Increment cycle
|
|
129
|
-
state.cycle += 1;
|
|
130
|
-
// Check max cycles
|
|
131
|
-
if (state.cycle > state.max_cycles) {
|
|
132
|
-
return {
|
|
133
|
-
state,
|
|
134
|
-
shouldExit: true,
|
|
135
|
-
reason: `Max cycles (${state.max_cycles}) reached`
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
writeUltraQAState(directory, state);
|
|
139
|
-
return { state, shouldExit: false };
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Mark UltraQA as successful
|
|
143
|
-
*/
|
|
144
|
-
export function completeUltraQA(directory) {
|
|
145
|
-
const state = readUltraQAState(directory);
|
|
146
|
-
if (!state) {
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
const result = {
|
|
150
|
-
success: true,
|
|
151
|
-
cycles: state.cycle,
|
|
152
|
-
reason: 'goal_met'
|
|
153
|
-
};
|
|
154
|
-
clearUltraQAState(directory);
|
|
155
|
-
return result;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Stop UltraQA with failure
|
|
159
|
-
*/
|
|
160
|
-
export function stopUltraQA(directory, reason, diagnosis) {
|
|
161
|
-
const state = readUltraQAState(directory);
|
|
162
|
-
if (!state) {
|
|
163
|
-
return null;
|
|
164
|
-
}
|
|
165
|
-
const result = {
|
|
166
|
-
success: false,
|
|
167
|
-
cycles: state.cycle,
|
|
168
|
-
reason,
|
|
169
|
-
diagnosis
|
|
170
|
-
};
|
|
171
|
-
clearUltraQAState(directory);
|
|
172
|
-
return result;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Cancel UltraQA
|
|
176
|
-
*/
|
|
177
|
-
export function cancelUltraQA(directory) {
|
|
178
|
-
return clearUltraQAState(directory);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Normalize failure description for comparison
|
|
182
|
-
*/
|
|
183
|
-
function normalizeFailure(failure) {
|
|
184
|
-
// Remove timestamps, line numbers, and other variable parts
|
|
185
|
-
return failure
|
|
186
|
-
.replace(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/g, '') // ISO timestamps
|
|
187
|
-
.replace(/:\d+:\d+/g, '') // line:col numbers
|
|
188
|
-
.replace(/\d+ms/g, '') // timing
|
|
189
|
-
.replace(/\s+/g, ' ')
|
|
190
|
-
.trim()
|
|
191
|
-
.toLowerCase();
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Get goal command based on goal type
|
|
195
|
-
*/
|
|
196
|
-
export function getGoalCommand(goalType) {
|
|
197
|
-
switch (goalType) {
|
|
198
|
-
case 'tests':
|
|
199
|
-
return 'npm test';
|
|
200
|
-
case 'build':
|
|
201
|
-
return 'npm run build';
|
|
202
|
-
case 'lint':
|
|
203
|
-
return 'npm run lint';
|
|
204
|
-
case 'typecheck':
|
|
205
|
-
return 'npm run typecheck || tsc --noEmit';
|
|
206
|
-
case 'custom':
|
|
207
|
-
return '# Custom command based on goal pattern';
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Format progress message
|
|
212
|
-
*/
|
|
213
|
-
export function formatProgressMessage(cycle, maxCycles, status) {
|
|
214
|
-
return `[ULTRAQA Cycle ${cycle}/${maxCycles}] ${status}`;
|
|
215
|
-
}
|
|
216
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/ultraqa-loop/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAyCxD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAAiB;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAiB;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAmB;IACtE,IAAI,CAAC;QACH,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,SAAiB,EACjB,QAAyB,EACzB,SAAiB,EACjB,OAAwB;IAExB,uEAAuE;IACvE,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,+GAA+G;SACvH,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAiB;QAC1B,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI;QAC5C,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,kBAAkB;QACpD,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,UAAU,EAAE,SAAS;KACtB,CAAC;IAEF,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,kBAA0B;IAE1B,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjE,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAExC,kCAAkC;IAClC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC;IACrE,IAAI,cAAc,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;gBACL,KAAK;gBACL,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,yBAAyB,sBAAsB,WAAW,cAAc,CAAC,CAAC,CAAC,EAAE;aACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAEjB,mBAAmB;IACnB,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACnC,OAAO;YACL,KAAK;YACL,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,eAAe,KAAK,CAAC,UAAU,WAAW;SACnD,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAkB;QAC5B,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,KAAK,CAAC,KAAK;QACnB,MAAM,EAAE,UAAU;KACnB,CAAC;IAEF,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,SAAiB,EACjB,MAAmD,EACnD,SAAiB;IAEjB,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAkB;QAC5B,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK,CAAC,KAAK;QACnB,MAAM;QACN,SAAS;KACV,CAAC;IAEF,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,4DAA4D;IAC5D,OAAO,OAAO;SACX,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC,iBAAiB;SACrE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,mBAAmB;SAC5C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS;SAC/B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAyB;IACtD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,UAAU,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,eAAe,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,cAAc,CAAC;QACxB,KAAK,WAAW;YACd,OAAO,mCAAmC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,wCAAwC,CAAC;IACpD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,SAAiB,EACjB,MAAc;IAEd,OAAO,kBAAkB,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ultrawork State Management
|
|
3
|
-
*
|
|
4
|
-
* Manages persistent ultrawork mode state across sessions.
|
|
5
|
-
* When ultrawork is activated and todos remain incomplete,
|
|
6
|
-
* this module ensures the mode persists until all work is done.
|
|
7
|
-
*/
|
|
8
|
-
export interface UltraworkState {
|
|
9
|
-
/** Whether ultrawork mode is currently active */
|
|
10
|
-
active: boolean;
|
|
11
|
-
/** When ultrawork was activated */
|
|
12
|
-
started_at: string;
|
|
13
|
-
/** The original prompt that triggered ultrawork */
|
|
14
|
-
original_prompt: string;
|
|
15
|
-
/** Session ID the mode is bound to */
|
|
16
|
-
session_id?: string;
|
|
17
|
-
/** Number of times the mode has been reinforced (for metrics) */
|
|
18
|
-
reinforcement_count: number;
|
|
19
|
-
/** Last time the mode was checked/reinforced */
|
|
20
|
-
last_checked_at: string;
|
|
21
|
-
/** Whether this ultrawork session is linked to a ralph-loop session */
|
|
22
|
-
linked_to_ralph?: boolean;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Read Ultrawork state from disk (checks both local and global)
|
|
26
|
-
*/
|
|
27
|
-
export declare function readUltraworkState(directory?: string): UltraworkState | null;
|
|
28
|
-
/**
|
|
29
|
-
* Write Ultrawork state to disk (both local and global for redundancy)
|
|
30
|
-
*/
|
|
31
|
-
export declare function writeUltraworkState(state: UltraworkState, directory?: string): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Activate ultrawork mode
|
|
34
|
-
*/
|
|
35
|
-
export declare function activateUltrawork(prompt: string, sessionId?: string, directory?: string, linkedToRalph?: boolean): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Deactivate ultrawork mode
|
|
38
|
-
*/
|
|
39
|
-
export declare function deactivateUltrawork(directory?: string): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Increment reinforcement count (called when mode is reinforced on stop)
|
|
42
|
-
*/
|
|
43
|
-
export declare function incrementReinforcement(directory?: string): UltraworkState | null;
|
|
44
|
-
/**
|
|
45
|
-
* Check if ultrawork should be reinforced (active with pending todos)
|
|
46
|
-
*/
|
|
47
|
-
export declare function shouldReinforceUltrawork(sessionId?: string, directory?: string): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Get ultrawork persistence message for injection
|
|
50
|
-
*/
|
|
51
|
-
export declare function getUltraworkPersistenceMessage(state: UltraworkState): string;
|
|
52
|
-
/**
|
|
53
|
-
* Create an Ultrawork State hook instance
|
|
54
|
-
*/
|
|
55
|
-
export declare function createUltraworkStateHook(directory: string): {
|
|
56
|
-
activate: (prompt: string, sessionId?: string) => boolean;
|
|
57
|
-
deactivate: () => boolean;
|
|
58
|
-
getState: () => UltraworkState | null;
|
|
59
|
-
shouldReinforce: (sessionId?: string) => boolean;
|
|
60
|
-
incrementReinforcement: () => UltraworkState | null;
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/ultrawork-state/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA+CD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAwB5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAuB/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAehF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAuB5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM;uBAEnC,MAAM,cAAc,MAAM;;;kCAIf,MAAM;;EAIvC"}
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ultrawork State Management
|
|
3
|
-
*
|
|
4
|
-
* Manages persistent ultrawork mode state across sessions.
|
|
5
|
-
* When ultrawork is activated and todos remain incomplete,
|
|
6
|
-
* this module ensures the mode persists until all work is done.
|
|
7
|
-
*/
|
|
8
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from 'fs';
|
|
9
|
-
import { join } from 'path';
|
|
10
|
-
import { homedir } from 'os';
|
|
11
|
-
const _DEFAULT_STATE = {
|
|
12
|
-
active: false,
|
|
13
|
-
started_at: '',
|
|
14
|
-
original_prompt: '',
|
|
15
|
-
reinforcement_count: 0,
|
|
16
|
-
last_checked_at: ''
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Get the state file path for Ultrawork
|
|
20
|
-
*/
|
|
21
|
-
function getStateFilePath(directory) {
|
|
22
|
-
const baseDir = directory || process.cwd();
|
|
23
|
-
const omcDir = join(baseDir, '.omc');
|
|
24
|
-
return join(omcDir, 'ultrawork-state.json');
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get global state file path (for cross-session persistence)
|
|
28
|
-
*/
|
|
29
|
-
function getGlobalStateFilePath() {
|
|
30
|
-
return join(homedir(), '.claude', 'ultrawork-state.json');
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Ensure the .omc directory exists
|
|
34
|
-
*/
|
|
35
|
-
function ensureStateDir(directory) {
|
|
36
|
-
const baseDir = directory || process.cwd();
|
|
37
|
-
const omcDir = join(baseDir, '.omc');
|
|
38
|
-
if (!existsSync(omcDir)) {
|
|
39
|
-
mkdirSync(omcDir, { recursive: true });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Ensure the ~/.claude directory exists
|
|
44
|
-
*/
|
|
45
|
-
function ensureGlobalStateDir() {
|
|
46
|
-
const claudeDir = join(homedir(), '.claude');
|
|
47
|
-
if (!existsSync(claudeDir)) {
|
|
48
|
-
mkdirSync(claudeDir, { recursive: true });
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Read Ultrawork state from disk (checks both local and global)
|
|
53
|
-
*/
|
|
54
|
-
export function readUltraworkState(directory) {
|
|
55
|
-
// Check local state first
|
|
56
|
-
const localStateFile = getStateFilePath(directory);
|
|
57
|
-
if (existsSync(localStateFile)) {
|
|
58
|
-
try {
|
|
59
|
-
const content = readFileSync(localStateFile, 'utf-8');
|
|
60
|
-
return JSON.parse(content);
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
// Fall through to global check
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// Check global state
|
|
67
|
-
const globalStateFile = getGlobalStateFilePath();
|
|
68
|
-
if (existsSync(globalStateFile)) {
|
|
69
|
-
try {
|
|
70
|
-
const content = readFileSync(globalStateFile, 'utf-8');
|
|
71
|
-
return JSON.parse(content);
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Write Ultrawork state to disk (both local and global for redundancy)
|
|
81
|
-
*/
|
|
82
|
-
export function writeUltraworkState(state, directory) {
|
|
83
|
-
try {
|
|
84
|
-
// Write to local .omc
|
|
85
|
-
ensureStateDir(directory);
|
|
86
|
-
const localStateFile = getStateFilePath(directory);
|
|
87
|
-
writeFileSync(localStateFile, JSON.stringify(state, null, 2));
|
|
88
|
-
// Write to global ~/.claude for cross-session persistence
|
|
89
|
-
ensureGlobalStateDir();
|
|
90
|
-
const globalStateFile = getGlobalStateFilePath();
|
|
91
|
-
writeFileSync(globalStateFile, JSON.stringify(state, null, 2));
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Activate ultrawork mode
|
|
100
|
-
*/
|
|
101
|
-
export function activateUltrawork(prompt, sessionId, directory, linkedToRalph) {
|
|
102
|
-
const state = {
|
|
103
|
-
active: true,
|
|
104
|
-
started_at: new Date().toISOString(),
|
|
105
|
-
original_prompt: prompt,
|
|
106
|
-
session_id: sessionId,
|
|
107
|
-
reinforcement_count: 0,
|
|
108
|
-
last_checked_at: new Date().toISOString(),
|
|
109
|
-
linked_to_ralph: linkedToRalph
|
|
110
|
-
};
|
|
111
|
-
return writeUltraworkState(state, directory);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Deactivate ultrawork mode
|
|
115
|
-
*/
|
|
116
|
-
export function deactivateUltrawork(directory) {
|
|
117
|
-
// Remove local state
|
|
118
|
-
const localStateFile = getStateFilePath(directory);
|
|
119
|
-
if (existsSync(localStateFile)) {
|
|
120
|
-
try {
|
|
121
|
-
unlinkSync(localStateFile);
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
// Continue to global cleanup
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// Remove global state
|
|
128
|
-
const globalStateFile = getGlobalStateFilePath();
|
|
129
|
-
if (existsSync(globalStateFile)) {
|
|
130
|
-
try {
|
|
131
|
-
unlinkSync(globalStateFile);
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Increment reinforcement count (called when mode is reinforced on stop)
|
|
142
|
-
*/
|
|
143
|
-
export function incrementReinforcement(directory) {
|
|
144
|
-
const state = readUltraworkState(directory);
|
|
145
|
-
if (!state || !state.active) {
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
148
|
-
state.reinforcement_count += 1;
|
|
149
|
-
state.last_checked_at = new Date().toISOString();
|
|
150
|
-
if (writeUltraworkState(state, directory)) {
|
|
151
|
-
return state;
|
|
152
|
-
}
|
|
153
|
-
return null;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Check if ultrawork should be reinforced (active with pending todos)
|
|
157
|
-
*/
|
|
158
|
-
export function shouldReinforceUltrawork(sessionId, directory) {
|
|
159
|
-
const state = readUltraworkState(directory);
|
|
160
|
-
if (!state || !state.active) {
|
|
161
|
-
return false;
|
|
162
|
-
}
|
|
163
|
-
// If bound to a session, only reinforce for that session
|
|
164
|
-
if (state.session_id && sessionId && state.session_id !== sessionId) {
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Get ultrawork persistence message for injection
|
|
171
|
-
*/
|
|
172
|
-
export function getUltraworkPersistenceMessage(state) {
|
|
173
|
-
return `<ultrawork-persistence>
|
|
174
|
-
|
|
175
|
-
[ULTRAWORK MODE STILL ACTIVE - Reinforcement #${state.reinforcement_count + 1}]
|
|
176
|
-
|
|
177
|
-
Your ultrawork session is NOT complete. Incomplete todos remain.
|
|
178
|
-
|
|
179
|
-
REMEMBER THE ULTRAWORK RULES:
|
|
180
|
-
- **PARALLEL**: Fire independent calls simultaneously - NEVER wait sequentially
|
|
181
|
-
- **BACKGROUND FIRST**: Use Task(run_in_background=true) for exploration (10+ concurrent)
|
|
182
|
-
- **TODO**: Track EVERY step. Mark complete IMMEDIATELY after each
|
|
183
|
-
- **VERIFY**: Check ALL requirements met before done
|
|
184
|
-
- **NO Premature Stopping**: ALL TODOs must be complete
|
|
185
|
-
|
|
186
|
-
Continue working on the next pending task. DO NOT STOP until all tasks are marked complete.
|
|
187
|
-
|
|
188
|
-
Original task: ${state.original_prompt}
|
|
189
|
-
|
|
190
|
-
</ultrawork-persistence>
|
|
191
|
-
|
|
192
|
-
---
|
|
193
|
-
|
|
194
|
-
`;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Create an Ultrawork State hook instance
|
|
198
|
-
*/
|
|
199
|
-
export function createUltraworkStateHook(directory) {
|
|
200
|
-
return {
|
|
201
|
-
activate: (prompt, sessionId) => activateUltrawork(prompt, sessionId, directory),
|
|
202
|
-
deactivate: () => deactivateUltrawork(directory),
|
|
203
|
-
getState: () => readUltraworkState(directory),
|
|
204
|
-
shouldReinforce: (sessionId) => shouldReinforceUltrawork(sessionId, directory),
|
|
205
|
-
incrementReinforcement: () => incrementReinforcement(directory)
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/ultrawork-state/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sisyphus HUD - State Readers
|
|
3
|
-
*
|
|
4
|
-
* Read ralph, ultrawork, and PRD state from existing Sisyphus files.
|
|
5
|
-
* These are read-only functions that don't modify the state files.
|
|
6
|
-
*/
|
|
7
|
-
import type { RalphStateForHud, UltraworkStateForHud, PrdStateForHud } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Read Ralph Loop state for HUD display.
|
|
10
|
-
* Returns null if no state file exists or on error.
|
|
11
|
-
*/
|
|
12
|
-
export declare function readRalphStateForHud(directory: string): RalphStateForHud | null;
|
|
13
|
-
/**
|
|
14
|
-
* Read Ultrawork state for HUD display.
|
|
15
|
-
* Checks both local .sisyphus and global ~/.claude locations.
|
|
16
|
-
*/
|
|
17
|
-
export declare function readUltraworkStateForHud(directory: string): UltraworkStateForHud | null;
|
|
18
|
-
/**
|
|
19
|
-
* Read PRD state for HUD display.
|
|
20
|
-
* Checks both root prd.json and .sisyphus/prd.json.
|
|
21
|
-
*/
|
|
22
|
-
export declare function readPrdStateForHud(directory: string): PrdStateForHud | null;
|
|
23
|
-
/**
|
|
24
|
-
* Check if any Sisyphus mode is currently active
|
|
25
|
-
*/
|
|
26
|
-
export declare function isAnyModeActive(directory: string): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Get active skill names for display
|
|
29
|
-
*/
|
|
30
|
-
export declare function getActiveSkills(directory: string): string[];
|
|
31
|
-
//# sourceMappingURL=sisyphus-state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sisyphus-state.d.ts","sourceRoot":"","sources":["../../src/hud/sisyphus-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAiCpB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA8B/E;AAWD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAChB,oBAAoB,GAAG,IAAI,CAwC7B;AAgBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAsC3E;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D"}
|