oh-my-claude-sisyphus 3.1.0 → 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 +3 -1
- package/commands/autopilot.md +131 -0
- package/commands/cancel-autopilot.md +35 -0
- package/dist/__tests__/installer.test.js +1 -1
- package/dist/__tests__/learned-skills/config.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/config.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/config.test.js +37 -0
- package/dist/__tests__/learned-skills/config.test.js.map +1 -0
- package/dist/__tests__/learned-skills/detector.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/detector.test.js +99 -0
- package/dist/__tests__/learned-skills/detector.test.js.map +1 -0
- package/dist/__tests__/learned-skills/finder.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/finder.test.js +59 -0
- package/dist/__tests__/learned-skills/finder.test.js.map +1 -0
- package/dist/__tests__/learned-skills/loader.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/loader.test.js +69 -0
- package/dist/__tests__/learned-skills/loader.test.js.map +1 -0
- package/dist/__tests__/learned-skills/parser.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/parser.test.js +81 -0
- package/dist/__tests__/learned-skills/parser.test.js.map +1 -0
- package/dist/__tests__/learned-skills/validator.test.d.ts +2 -0
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +1 -0
- package/dist/__tests__/learned-skills/validator.test.js +85 -0
- package/dist/__tests__/learned-skills/validator.test.js.map +1 -0
- 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/document-writer.d.ts +11 -0
- package/dist/agents/document-writer.d.ts.map +1 -0
- package/dist/agents/document-writer.js +209 -0
- package/dist/agents/document-writer.js.map +1 -0
- package/dist/agents/frontend-engineer.d.ts +11 -0
- package/dist/agents/frontend-engineer.d.ts.map +1 -0
- package/dist/agents/frontend-engineer.js +115 -0
- package/dist/agents/frontend-engineer.js.map +1 -0
- package/dist/agents/librarian.d.ts +12 -0
- package/dist/agents/librarian.d.ts.map +1 -0
- package/dist/agents/librarian.js +103 -0
- package/dist/agents/librarian.js.map +1 -0
- package/dist/agents/metis.d.ts +12 -0
- package/dist/agents/metis.d.ts.map +1 -0
- package/dist/agents/metis.js +117 -0
- package/dist/agents/metis.js.map +1 -0
- package/dist/agents/momus.d.ts +12 -0
- package/dist/agents/momus.d.ts.map +1 -0
- package/dist/agents/momus.js +128 -0
- package/dist/agents/momus.js.map +1 -0
- package/dist/agents/multimodal-looker.d.ts +11 -0
- package/dist/agents/multimodal-looker.d.ts.map +1 -0
- package/dist/agents/multimodal-looker.js +70 -0
- package/dist/agents/multimodal-looker.js.map +1 -0
- package/dist/agents/oracle.d.ts +13 -0
- package/dist/agents/oracle.d.ts.map +1 -0
- package/dist/agents/oracle.js +191 -0
- package/dist/agents/oracle.js.map +1 -0
- package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
- package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
- package/dist/agents/orchestrator-sisyphus.js +115 -0
- package/dist/agents/orchestrator-sisyphus.js.map +1 -0
- package/dist/agents/prometheus.d.ts +12 -0
- package/dist/agents/prometheus.d.ts.map +1 -0
- package/dist/agents/prometheus.js +195 -0
- package/dist/agents/prometheus.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/sisyphus-junior.d.ts +12 -0
- package/dist/agents/sisyphus-junior.d.ts.map +1 -0
- package/dist/agents/sisyphus-junior.js +93 -0
- package/dist/agents/sisyphus-junior.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/cli/index.js +0 -0
- 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 +64 -3
- 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 +38 -2
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/learned-skills/config.d.ts +53 -0
- package/dist/hooks/learned-skills/config.d.ts.map +1 -0
- package/dist/hooks/learned-skills/config.js +103 -0
- package/dist/hooks/learned-skills/config.js.map +1 -0
- package/dist/hooks/learned-skills/constants.d.ts +24 -0
- package/dist/hooks/learned-skills/constants.d.ts.map +1 -0
- package/dist/hooks/learned-skills/constants.js +26 -0
- package/dist/hooks/learned-skills/constants.js.map +1 -0
- package/dist/hooks/learned-skills/detection-hook.d.ts +39 -0
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +1 -0
- package/dist/hooks/learned-skills/detection-hook.js +83 -0
- package/dist/hooks/learned-skills/detection-hook.js.map +1 -0
- package/dist/hooks/learned-skills/detector.d.ts +30 -0
- package/dist/hooks/learned-skills/detector.d.ts.map +1 -0
- package/dist/hooks/learned-skills/detector.js +150 -0
- package/dist/hooks/learned-skills/detector.js.map +1 -0
- package/dist/hooks/learned-skills/finder.d.ts +21 -0
- package/dist/hooks/learned-skills/finder.d.ts.map +1 -0
- package/dist/hooks/learned-skills/finder.js +117 -0
- package/dist/hooks/learned-skills/finder.js.map +1 -0
- package/dist/hooks/learned-skills/index.d.ts +62 -0
- package/dist/hooks/learned-skills/index.d.ts.map +1 -0
- package/dist/hooks/learned-skills/index.js +137 -0
- package/dist/hooks/learned-skills/index.js.map +1 -0
- package/dist/hooks/learned-skills/loader.d.ts +20 -0
- package/dist/hooks/learned-skills/loader.d.ts.map +1 -0
- package/dist/hooks/learned-skills/loader.js +107 -0
- package/dist/hooks/learned-skills/loader.js.map +1 -0
- package/dist/hooks/learned-skills/parser.d.ts +21 -0
- package/dist/hooks/learned-skills/parser.d.ts.map +1 -0
- package/dist/hooks/learned-skills/parser.js +190 -0
- package/dist/hooks/learned-skills/parser.js.map +1 -0
- package/dist/hooks/learned-skills/promotion.d.ts +29 -0
- package/dist/hooks/learned-skills/promotion.d.ts.map +1 -0
- package/dist/hooks/learned-skills/promotion.js +87 -0
- package/dist/hooks/learned-skills/promotion.js.map +1 -0
- package/dist/hooks/learned-skills/types.d.ts +109 -0
- package/dist/hooks/learned-skills/types.d.ts.map +1 -0
- package/dist/hooks/learned-skills/types.js +8 -0
- package/dist/hooks/learned-skills/types.js.map +1 -0
- package/dist/hooks/learned-skills/validator.d.ts +15 -0
- package/dist/hooks/learned-skills/validator.d.ts.map +1 -0
- package/dist/hooks/learned-skills/validator.js +87 -0
- package/dist/hooks/learned-skills/validator.js.map +1 -0
- package/dist/hooks/learned-skills/writer.d.ts +27 -0
- package/dist/hooks/learned-skills/writer.d.ts.map +1 -0
- package/dist/hooks/learned-skills/writer.js +126 -0
- package/dist/hooks/learned-skills/writer.js.map +1 -0
- package/dist/hooks/mnemosyne/config.d.ts +53 -0
- package/dist/hooks/mnemosyne/config.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/config.js +103 -0
- package/dist/hooks/mnemosyne/config.js.map +1 -0
- package/dist/hooks/mnemosyne/constants.d.ts +24 -0
- package/dist/hooks/mnemosyne/constants.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/constants.js +26 -0
- package/dist/hooks/mnemosyne/constants.js.map +1 -0
- package/dist/hooks/mnemosyne/detection-hook.d.ts +39 -0
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/detection-hook.js +83 -0
- package/dist/hooks/mnemosyne/detection-hook.js.map +1 -0
- package/dist/hooks/mnemosyne/detector.d.ts +30 -0
- package/dist/hooks/mnemosyne/detector.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/detector.js +150 -0
- package/dist/hooks/mnemosyne/detector.js.map +1 -0
- package/dist/hooks/mnemosyne/finder.d.ts +21 -0
- package/dist/hooks/mnemosyne/finder.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/finder.js +117 -0
- package/dist/hooks/mnemosyne/finder.js.map +1 -0
- package/dist/hooks/mnemosyne/index.d.ts +62 -0
- package/dist/hooks/mnemosyne/index.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/index.js +137 -0
- package/dist/hooks/mnemosyne/index.js.map +1 -0
- package/dist/hooks/mnemosyne/loader.d.ts +20 -0
- package/dist/hooks/mnemosyne/loader.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/loader.js +113 -0
- package/dist/hooks/mnemosyne/loader.js.map +1 -0
- package/dist/hooks/mnemosyne/parser.d.ts +21 -0
- package/dist/hooks/mnemosyne/parser.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/parser.js +190 -0
- package/dist/hooks/mnemosyne/parser.js.map +1 -0
- package/dist/hooks/mnemosyne/promotion.d.ts +29 -0
- package/dist/hooks/mnemosyne/promotion.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/promotion.js +87 -0
- package/dist/hooks/mnemosyne/promotion.js.map +1 -0
- package/dist/hooks/mnemosyne/types.d.ts +109 -0
- package/dist/hooks/mnemosyne/types.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/types.js +8 -0
- package/dist/hooks/mnemosyne/types.js.map +1 -0
- package/dist/hooks/mnemosyne/validator.d.ts +15 -0
- package/dist/hooks/mnemosyne/validator.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/validator.js +87 -0
- package/dist/hooks/mnemosyne/validator.js.map +1 -0
- package/dist/hooks/mnemosyne/writer.d.ts +27 -0
- package/dist/hooks/mnemosyne/writer.d.ts.map +1 -0
- package/dist/hooks/mnemosyne/writer.js +126 -0
- package/dist/hooks/mnemosyne/writer.js.map +1 -0
- 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/sisyphus-orchestrator/constants.d.ts +23 -0
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/index.js +309 -0
- package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
- 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/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/sisyphus-state.d.ts +31 -0
- package/dist/hud/sisyphus-state.d.ts.map +1 -0
- package/dist/hud/sisyphus-state.js +163 -0
- package/dist/hud/sisyphus-state.js.map +1 -0
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.js +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 +85 -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
|
@@ -9,6 +9,34 @@
|
|
|
9
9
|
import { existsSync, readFileSync, readdirSync } from 'fs';
|
|
10
10
|
import { join } from 'path';
|
|
11
11
|
import { homedir } from 'os';
|
|
12
|
+
/**
|
|
13
|
+
* Detect if stop was due to user abort (not natural completion)
|
|
14
|
+
*
|
|
15
|
+
* NOTE: These patterns are ASSUMED. Verify against actual Claude Code
|
|
16
|
+
* API responses and update as needed.
|
|
17
|
+
*/
|
|
18
|
+
export function isUserAbort(context) {
|
|
19
|
+
if (!context)
|
|
20
|
+
return false;
|
|
21
|
+
// User explicitly requested stop (supports both camelCase and snake_case)
|
|
22
|
+
if (context.user_requested || context.userRequested)
|
|
23
|
+
return true;
|
|
24
|
+
// Check stop_reason patterns indicating user abort
|
|
25
|
+
// Unified patterns: includes both specific (user_cancel) and generic (cancel)
|
|
26
|
+
const abortPatterns = [
|
|
27
|
+
'user_cancel',
|
|
28
|
+
'user_interrupt',
|
|
29
|
+
'ctrl_c',
|
|
30
|
+
'manual_stop',
|
|
31
|
+
'aborted',
|
|
32
|
+
'abort', // generic patterns from shell/Node.js templates
|
|
33
|
+
'cancel',
|
|
34
|
+
'interrupt',
|
|
35
|
+
];
|
|
36
|
+
// Support both snake_case and camelCase field names
|
|
37
|
+
const reason = (context.stop_reason ?? context.stopReason ?? '').toLowerCase();
|
|
38
|
+
return abortPatterns.some(pattern => reason.includes(pattern));
|
|
39
|
+
}
|
|
12
40
|
/**
|
|
13
41
|
* Get possible todo file locations
|
|
14
42
|
*/
|
|
@@ -79,7 +107,16 @@ function isIncomplete(todo) {
|
|
|
79
107
|
/**
|
|
80
108
|
* Check for incomplete todos across all possible locations
|
|
81
109
|
*/
|
|
82
|
-
export async function checkIncompleteTodos(sessionId, directory
|
|
110
|
+
export async function checkIncompleteTodos(sessionId, directory, stopContext // NEW parameter
|
|
111
|
+
) {
|
|
112
|
+
// If user aborted, don't force continuation (return count: 0)
|
|
113
|
+
if (isUserAbort(stopContext)) {
|
|
114
|
+
return {
|
|
115
|
+
count: 0,
|
|
116
|
+
todos: [],
|
|
117
|
+
total: 0
|
|
118
|
+
};
|
|
119
|
+
}
|
|
83
120
|
const paths = getTodoFilePaths(sessionId, directory);
|
|
84
121
|
const seenContents = new Set();
|
|
85
122
|
const allTodos = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/todo-continuation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/todo-continuation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OMC HUD - Autopilot Element
|
|
3
|
+
*
|
|
4
|
+
* Renders autopilot phase and progress display.
|
|
5
|
+
*/
|
|
6
|
+
import type { HudThresholds } from '../types.js';
|
|
7
|
+
export interface AutopilotStateForHud {
|
|
8
|
+
active: boolean;
|
|
9
|
+
phase: string;
|
|
10
|
+
iteration: number;
|
|
11
|
+
maxIterations: number;
|
|
12
|
+
tasksCompleted?: number;
|
|
13
|
+
tasksTotal?: number;
|
|
14
|
+
filesCreated?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Render autopilot state.
|
|
18
|
+
* Returns null if autopilot is not active.
|
|
19
|
+
*
|
|
20
|
+
* Format: [AUTOPILOT] Phase 2/5: Plan | Tasks: 5/12
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderAutopilot(state: AutopilotStateForHud | null, _thresholds?: HudThresholds): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Render compact autopilot status for minimal displays.
|
|
25
|
+
*
|
|
26
|
+
* Format: AP:3/5 or AP:Done
|
|
27
|
+
*/
|
|
28
|
+
export declare function renderAutopilotCompact(state: AutopilotStateForHud | null): string | null;
|
|
29
|
+
//# sourceMappingURL=autopilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autopilot.d.ts","sourceRoot":"","sources":["../../../src/hud/elements/autopilot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAUjD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAsBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,oBAAoB,GAAG,IAAI,EAClC,WAAW,CAAC,EAAE,aAAa,GAC1B,MAAM,GAAG,IAAI,CA+Cf;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,GAAG,IAAI,GACjC,MAAM,GAAG,IAAI,CAiBf"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OMC HUD - Autopilot Element
|
|
3
|
+
*
|
|
4
|
+
* Renders autopilot phase and progress display.
|
|
5
|
+
*/
|
|
6
|
+
import { RESET } from '../colors.js';
|
|
7
|
+
// ANSI color codes
|
|
8
|
+
const CYAN = '\x1b[36m';
|
|
9
|
+
const GREEN = '\x1b[32m';
|
|
10
|
+
const YELLOW = '\x1b[33m';
|
|
11
|
+
const RED = '\x1b[31m';
|
|
12
|
+
const MAGENTA = '\x1b[35m';
|
|
13
|
+
const PHASE_NAMES = {
|
|
14
|
+
expansion: 'Expand',
|
|
15
|
+
planning: 'Plan',
|
|
16
|
+
execution: 'Build',
|
|
17
|
+
qa: 'QA',
|
|
18
|
+
validation: 'Verify',
|
|
19
|
+
complete: 'Done',
|
|
20
|
+
failed: 'Failed'
|
|
21
|
+
};
|
|
22
|
+
const PHASE_INDEX = {
|
|
23
|
+
expansion: 1,
|
|
24
|
+
planning: 2,
|
|
25
|
+
execution: 3,
|
|
26
|
+
qa: 4,
|
|
27
|
+
validation: 5,
|
|
28
|
+
complete: 5,
|
|
29
|
+
failed: 0
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Render autopilot state.
|
|
33
|
+
* Returns null if autopilot is not active.
|
|
34
|
+
*
|
|
35
|
+
* Format: [AUTOPILOT] Phase 2/5: Plan | Tasks: 5/12
|
|
36
|
+
*/
|
|
37
|
+
export function renderAutopilot(state, _thresholds) {
|
|
38
|
+
if (!state?.active) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const { phase, iteration, maxIterations, tasksCompleted, tasksTotal, filesCreated } = state;
|
|
42
|
+
const phaseNum = PHASE_INDEX[phase] || 0;
|
|
43
|
+
const phaseName = PHASE_NAMES[phase] || phase;
|
|
44
|
+
// Color based on phase
|
|
45
|
+
let phaseColor;
|
|
46
|
+
switch (phase) {
|
|
47
|
+
case 'complete':
|
|
48
|
+
phaseColor = GREEN;
|
|
49
|
+
break;
|
|
50
|
+
case 'failed':
|
|
51
|
+
phaseColor = RED;
|
|
52
|
+
break;
|
|
53
|
+
case 'validation':
|
|
54
|
+
phaseColor = MAGENTA;
|
|
55
|
+
break;
|
|
56
|
+
case 'qa':
|
|
57
|
+
phaseColor = YELLOW;
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
phaseColor = CYAN;
|
|
61
|
+
}
|
|
62
|
+
let output = `${CYAN}[AUTOPILOT]${RESET} Phase ${phaseColor}${phaseNum}/5${RESET}: ${phaseName}`;
|
|
63
|
+
// Add iteration count if not first iteration
|
|
64
|
+
if (iteration > 1) {
|
|
65
|
+
output += ` (iter ${iteration}/${maxIterations})`;
|
|
66
|
+
}
|
|
67
|
+
// Add task progress if in execution phase
|
|
68
|
+
if (phase === 'execution' && tasksTotal && tasksTotal > 0) {
|
|
69
|
+
const taskColor = tasksCompleted === tasksTotal ? GREEN : YELLOW;
|
|
70
|
+
output += ` | Tasks: ${taskColor}${tasksCompleted || 0}/${tasksTotal}${RESET}`;
|
|
71
|
+
}
|
|
72
|
+
// Add file count if available
|
|
73
|
+
if (filesCreated && filesCreated > 0) {
|
|
74
|
+
output += ` | ${filesCreated} files`;
|
|
75
|
+
}
|
|
76
|
+
return output;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Render compact autopilot status for minimal displays.
|
|
80
|
+
*
|
|
81
|
+
* Format: AP:3/5 or AP:Done
|
|
82
|
+
*/
|
|
83
|
+
export function renderAutopilotCompact(state) {
|
|
84
|
+
if (!state?.active) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
const { phase } = state;
|
|
88
|
+
const phaseNum = PHASE_INDEX[phase] || 0;
|
|
89
|
+
if (phase === 'complete') {
|
|
90
|
+
return `${GREEN}AP:Done${RESET}`;
|
|
91
|
+
}
|
|
92
|
+
if (phase === 'failed') {
|
|
93
|
+
return `${RED}AP:Fail${RESET}`;
|
|
94
|
+
}
|
|
95
|
+
return `${CYAN}AP:${phaseNum}/5${RESET}`;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=autopilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autopilot.js","sourceRoot":"","sources":["../../../src/hud/elements/autopilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,4 +14,5 @@ export { renderRateLimits, renderRateLimitsCompact } from './limits.js';
|
|
|
14
14
|
export { renderPermission } from './permission.js';
|
|
15
15
|
export { renderThinking } from './thinking.js';
|
|
16
16
|
export { renderSession } from './session.js';
|
|
17
|
+
export { renderAutopilot, renderAutopilotCompact, type AutopilotStateForHud } from './autopilot.js';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hud/elements/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hud/elements/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -14,4 +14,5 @@ export { renderRateLimits, renderRateLimitsCompact } from './limits.js';
|
|
|
14
14
|
export { renderPermission } from './permission.js';
|
|
15
15
|
export { renderThinking } from './thinking.js';
|
|
16
16
|
export { renderSession } from './session.js';
|
|
17
|
+
export { renderAutopilot, renderAutopilotCompact } from './autopilot.js';
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hud/elements/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hud/elements/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAA6B,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
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 { existsSync, readFileSync, statSync } from 'fs';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
/**
|
|
10
|
+
* Maximum age for state files to be considered "active".
|
|
11
|
+
* Files older than this are treated as stale/abandoned.
|
|
12
|
+
*/
|
|
13
|
+
const MAX_STATE_AGE_MS = 2 * 60 * 60 * 1000; // 2 hours
|
|
14
|
+
/**
|
|
15
|
+
* Check if a state file is stale based on file modification time.
|
|
16
|
+
*/
|
|
17
|
+
function isStateFileStale(filePath) {
|
|
18
|
+
try {
|
|
19
|
+
const stat = statSync(filePath);
|
|
20
|
+
const age = Date.now() - stat.mtimeMs;
|
|
21
|
+
return age > MAX_STATE_AGE_MS;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return true; // Treat errors as stale
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Read Ralph Loop state for HUD display.
|
|
29
|
+
* Returns null if no state file exists or on error.
|
|
30
|
+
*/
|
|
31
|
+
export function readRalphStateForHud(directory) {
|
|
32
|
+
const stateFile = join(directory, '.sisyphus', 'ralph-state.json');
|
|
33
|
+
if (!existsSync(stateFile)) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
// Check for stale state file (abandoned session)
|
|
37
|
+
if (isStateFileStale(stateFile)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const content = readFileSync(stateFile, 'utf-8');
|
|
42
|
+
const state = JSON.parse(content);
|
|
43
|
+
if (!state.active) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
active: state.active,
|
|
48
|
+
iteration: state.iteration,
|
|
49
|
+
maxIterations: state.max_iterations,
|
|
50
|
+
prdMode: state.prd_mode,
|
|
51
|
+
currentStoryId: state.current_story_id,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read Ultrawork state for HUD display.
|
|
60
|
+
* Checks both local .sisyphus and global ~/.claude locations.
|
|
61
|
+
*/
|
|
62
|
+
export function readUltraworkStateForHud(directory) {
|
|
63
|
+
// Check local state first
|
|
64
|
+
const localFile = join(directory, '.sisyphus', 'ultrawork-state.json');
|
|
65
|
+
let state = null;
|
|
66
|
+
let stateFile = null;
|
|
67
|
+
if (existsSync(localFile) && !isStateFileStale(localFile)) {
|
|
68
|
+
try {
|
|
69
|
+
const content = readFileSync(localFile, 'utf-8');
|
|
70
|
+
state = JSON.parse(content);
|
|
71
|
+
stateFile = localFile;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Try global
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Check global state if local not found or stale
|
|
78
|
+
if (!state) {
|
|
79
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
80
|
+
const globalFile = join(homeDir, '.claude', 'ultrawork-state.json');
|
|
81
|
+
if (existsSync(globalFile) && !isStateFileStale(globalFile)) {
|
|
82
|
+
try {
|
|
83
|
+
const content = readFileSync(globalFile, 'utf-8');
|
|
84
|
+
state = JSON.parse(content);
|
|
85
|
+
stateFile = globalFile;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (!state || !state.active) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
active: state.active,
|
|
97
|
+
reinforcementCount: state.reinforcement_count,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Read PRD state for HUD display.
|
|
102
|
+
* Checks both root prd.json and .sisyphus/prd.json.
|
|
103
|
+
*/
|
|
104
|
+
export function readPrdStateForHud(directory) {
|
|
105
|
+
// Check root first
|
|
106
|
+
let prdPath = join(directory, 'prd.json');
|
|
107
|
+
if (!existsSync(prdPath)) {
|
|
108
|
+
// Check .sisyphus
|
|
109
|
+
prdPath = join(directory, '.sisyphus', 'prd.json');
|
|
110
|
+
if (!existsSync(prdPath)) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const content = readFileSync(prdPath, 'utf-8');
|
|
116
|
+
const prd = JSON.parse(content);
|
|
117
|
+
if (!prd.userStories || !Array.isArray(prd.userStories)) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const stories = prd.userStories;
|
|
121
|
+
const completed = stories.filter((s) => s.passes).length;
|
|
122
|
+
const total = stories.length;
|
|
123
|
+
// Find current story (first incomplete, sorted by priority)
|
|
124
|
+
const incomplete = stories
|
|
125
|
+
.filter((s) => !s.passes)
|
|
126
|
+
.sort((a, b) => a.priority - b.priority);
|
|
127
|
+
return {
|
|
128
|
+
currentStoryId: incomplete[0]?.id || null,
|
|
129
|
+
completed,
|
|
130
|
+
total,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// Combined State Check
|
|
139
|
+
// ============================================================================
|
|
140
|
+
/**
|
|
141
|
+
* Check if any Sisyphus mode is currently active
|
|
142
|
+
*/
|
|
143
|
+
export function isAnyModeActive(directory) {
|
|
144
|
+
const ralph = readRalphStateForHud(directory);
|
|
145
|
+
const ultrawork = readUltraworkStateForHud(directory);
|
|
146
|
+
return (ralph?.active ?? false) || (ultrawork?.active ?? false);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get active skill names for display
|
|
150
|
+
*/
|
|
151
|
+
export function getActiveSkills(directory) {
|
|
152
|
+
const skills = [];
|
|
153
|
+
const ralph = readRalphStateForHud(directory);
|
|
154
|
+
if (ralph?.active) {
|
|
155
|
+
skills.push('ralph');
|
|
156
|
+
}
|
|
157
|
+
const ultrawork = readUltraworkStateForHud(directory);
|
|
158
|
+
if (ultrawork?.active) {
|
|
159
|
+
skills.push('ultrawork');
|
|
160
|
+
}
|
|
161
|
+
return skills;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=sisyphus-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sisyphus-state.js","sourceRoot":"","sources":["../../src/hud/sisyphus-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ export declare const VERSION_FILE: string;
|
|
|
31
31
|
*/
|
|
32
32
|
export declare const CORE_COMMANDS: string[];
|
|
33
33
|
/** Current version */
|
|
34
|
-
export declare const VERSION = "3.
|
|
34
|
+
export declare const VERSION = "3.2.0";
|
|
35
35
|
/** Installation result */
|
|
36
36
|
export interface InstallResult {
|
|
37
37
|
success: boolean;
|
package/dist/installer/index.js
CHANGED
|
@@ -37,7 +37,7 @@ export const VERSION_FILE = join(CLAUDE_CONFIG_DIR, '.omc-version.json');
|
|
|
37
37
|
*/
|
|
38
38
|
export const CORE_COMMANDS = [];
|
|
39
39
|
/** Current version */
|
|
40
|
-
export const VERSION = '3.
|
|
40
|
+
export const VERSION = '3.2.0';
|
|
41
41
|
/**
|
|
42
42
|
* Check if the current Node.js version meets the minimum requirement
|
|
43
43
|
*/
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory Diagnostics - Project-level QA enforcement
|
|
3
|
+
*
|
|
4
|
+
* Provides dual strategy for checking TypeScript/JavaScript projects:
|
|
5
|
+
* 1. Primary: tsc --noEmit (fast, comprehensive)
|
|
6
|
+
* 2. Fallback: LSP iteration (when tsc not available)
|
|
7
|
+
*/
|
|
8
|
+
export declare const LSP_DIAGNOSTICS_WAIT_MS = 300;
|
|
9
|
+
export type DiagnosticsStrategy = 'tsc' | 'lsp' | 'auto';
|
|
10
|
+
export interface DirectoryDiagnosticResult {
|
|
11
|
+
strategy: 'tsc' | 'lsp';
|
|
12
|
+
success: boolean;
|
|
13
|
+
errorCount: number;
|
|
14
|
+
warningCount: number;
|
|
15
|
+
diagnostics: string;
|
|
16
|
+
summary: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Run directory-level diagnostics using the best available strategy
|
|
20
|
+
* @param directory - Project directory to check
|
|
21
|
+
* @param strategy - Strategy to use ('tsc', 'lsp', or 'auto')
|
|
22
|
+
* @returns Diagnostic results
|
|
23
|
+
*/
|
|
24
|
+
export declare function runDirectoryDiagnostics(directory: string, strategy?: DiagnosticsStrategy): Promise<DirectoryDiagnosticResult>;
|
|
25
|
+
export type { TscDiagnostic, TscResult } from './tsc-runner.js';
|
|
26
|
+
export type { LspDiagnosticWithFile, LspAggregationResult } from './lsp-aggregator.js';
|
|
27
|
+
export { runTscDiagnostics } from './tsc-runner.js';
|
|
28
|
+
export { runLspAggregatedDiagnostics } from './lsp-aggregator.js';
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/diagnostics/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,mBAA4B,GACrC,OAAO,CAAC,yBAAyB,CAAC,CAkBpC;AAwFD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory Diagnostics - Project-level QA enforcement
|
|
3
|
+
*
|
|
4
|
+
* Provides dual strategy for checking TypeScript/JavaScript projects:
|
|
5
|
+
* 1. Primary: tsc --noEmit (fast, comprehensive)
|
|
6
|
+
* 2. Fallback: LSP iteration (when tsc not available)
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { runTscDiagnostics } from './tsc-runner.js';
|
|
11
|
+
import { runLspAggregatedDiagnostics } from './lsp-aggregator.js';
|
|
12
|
+
import { formatDiagnostics } from '../lsp/utils.js';
|
|
13
|
+
export const LSP_DIAGNOSTICS_WAIT_MS = 300;
|
|
14
|
+
/**
|
|
15
|
+
* Run directory-level diagnostics using the best available strategy
|
|
16
|
+
* @param directory - Project directory to check
|
|
17
|
+
* @param strategy - Strategy to use ('tsc', 'lsp', or 'auto')
|
|
18
|
+
* @returns Diagnostic results
|
|
19
|
+
*/
|
|
20
|
+
export async function runDirectoryDiagnostics(directory, strategy = 'auto') {
|
|
21
|
+
const tsconfigPath = join(directory, 'tsconfig.json');
|
|
22
|
+
const hasTsconfig = existsSync(tsconfigPath);
|
|
23
|
+
// Determine which strategy to use
|
|
24
|
+
let useStrategy;
|
|
25
|
+
if (strategy === 'auto') {
|
|
26
|
+
useStrategy = hasTsconfig ? 'tsc' : 'lsp';
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
useStrategy = strategy;
|
|
30
|
+
}
|
|
31
|
+
// Run diagnostics based on strategy
|
|
32
|
+
if (useStrategy === 'tsc' && hasTsconfig) {
|
|
33
|
+
return formatTscResult(runTscDiagnostics(directory));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return formatLspResult(await runLspAggregatedDiagnostics(directory));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Format tsc results into standard format
|
|
41
|
+
*/
|
|
42
|
+
function formatTscResult(result) {
|
|
43
|
+
let diagnostics = '';
|
|
44
|
+
let summary = '';
|
|
45
|
+
if (result.diagnostics.length === 0) {
|
|
46
|
+
diagnostics = 'No diagnostics found. All files are clean!';
|
|
47
|
+
summary = 'TypeScript check passed: 0 errors, 0 warnings';
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Group diagnostics by file
|
|
51
|
+
const byFile = new Map();
|
|
52
|
+
for (const diag of result.diagnostics) {
|
|
53
|
+
if (!byFile.has(diag.file)) {
|
|
54
|
+
byFile.set(diag.file, []);
|
|
55
|
+
}
|
|
56
|
+
byFile.get(diag.file).push(diag);
|
|
57
|
+
}
|
|
58
|
+
// Format each file's diagnostics
|
|
59
|
+
const fileOutputs = [];
|
|
60
|
+
for (const [file, diags] of byFile) {
|
|
61
|
+
let fileOutput = `${file}:\n`;
|
|
62
|
+
for (const diag of diags) {
|
|
63
|
+
fileOutput += ` ${diag.line}:${diag.column} - ${diag.severity} ${diag.code}: ${diag.message}\n`;
|
|
64
|
+
}
|
|
65
|
+
fileOutputs.push(fileOutput);
|
|
66
|
+
}
|
|
67
|
+
diagnostics = fileOutputs.join('\n');
|
|
68
|
+
summary = `TypeScript check ${result.success ? 'passed' : 'failed'}: ${result.errorCount} errors, ${result.warningCount} warnings`;
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
strategy: 'tsc',
|
|
72
|
+
success: result.success,
|
|
73
|
+
errorCount: result.errorCount,
|
|
74
|
+
warningCount: result.warningCount,
|
|
75
|
+
diagnostics,
|
|
76
|
+
summary
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Format LSP aggregation results into standard format
|
|
81
|
+
*/
|
|
82
|
+
function formatLspResult(result) {
|
|
83
|
+
let diagnostics = '';
|
|
84
|
+
let summary = '';
|
|
85
|
+
if (result.diagnostics.length === 0) {
|
|
86
|
+
diagnostics = `Checked ${result.filesChecked} files. No diagnostics found!`;
|
|
87
|
+
summary = `LSP check passed: 0 errors, 0 warnings (${result.filesChecked} files)`;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Group diagnostics by file
|
|
91
|
+
const byFile = new Map();
|
|
92
|
+
for (const item of result.diagnostics) {
|
|
93
|
+
if (!byFile.has(item.file)) {
|
|
94
|
+
byFile.set(item.file, []);
|
|
95
|
+
}
|
|
96
|
+
byFile.get(item.file).push(item);
|
|
97
|
+
}
|
|
98
|
+
// Format each file's diagnostics
|
|
99
|
+
const fileOutputs = [];
|
|
100
|
+
for (const [file, items] of byFile) {
|
|
101
|
+
const diags = items.map(i => i.diagnostic);
|
|
102
|
+
fileOutputs.push(`${file}:\n${formatDiagnostics(diags, file)}`);
|
|
103
|
+
}
|
|
104
|
+
diagnostics = fileOutputs.join('\n\n');
|
|
105
|
+
summary = `LSP check ${result.success ? 'passed' : 'failed'}: ${result.errorCount} errors, ${result.warningCount} warnings (${result.filesChecked} files)`;
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
strategy: 'lsp',
|
|
109
|
+
success: result.success,
|
|
110
|
+
errorCount: result.errorCount,
|
|
111
|
+
warningCount: result.warningCount,
|
|
112
|
+
diagnostics,
|
|
113
|
+
summary
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export { runTscDiagnostics } from './tsc-runner.js';
|
|
117
|
+
export { runLspAggregatedDiagnostics } from './lsp-aggregator.js';
|
|
118
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/diagnostics/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LSP Aggregator - Fallback strategy for directory diagnostics
|
|
3
|
+
*
|
|
4
|
+
* When tsc is not available or not suitable, iterate through files
|
|
5
|
+
* and collect LSP diagnostics for each.
|
|
6
|
+
*/
|
|
7
|
+
import type { Diagnostic } from '../lsp/index.js';
|
|
8
|
+
export interface LspDiagnosticWithFile {
|
|
9
|
+
file: string;
|
|
10
|
+
diagnostic: Diagnostic;
|
|
11
|
+
}
|
|
12
|
+
export interface LspAggregationResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
diagnostics: LspDiagnosticWithFile[];
|
|
15
|
+
errorCount: number;
|
|
16
|
+
warningCount: number;
|
|
17
|
+
filesChecked: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Run LSP diagnostics on all TypeScript/JavaScript files in a directory
|
|
21
|
+
* @param directory - Project directory to scan
|
|
22
|
+
* @param extensions - File extensions to check (default: ['.ts', '.tsx', '.js', '.jsx'])
|
|
23
|
+
* @returns Aggregated diagnostics from all files
|
|
24
|
+
*/
|
|
25
|
+
export declare function runLspAggregatedDiagnostics(directory: string, extensions?: string[]): Promise<LspAggregationResult>;
|
|
26
|
+
//# sourceMappingURL=lsp-aggregator.d.ts.map
|