oh-my-claude-sisyphus 2.6.1 → 3.0.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 +59 -785
- package/agents/analyst.md +85 -0
- package/agents/architect-low.md +88 -0
- package/agents/architect-medium.md +108 -0
- package/agents/architect.md +77 -0
- package/agents/critic.md +97 -0
- package/agents/designer-high.md +113 -0
- package/agents/designer-low.md +89 -0
- package/agents/designer.md +80 -0
- package/agents/executor-high.md +116 -0
- package/agents/executor-low.md +94 -0
- package/agents/executor.md +62 -0
- package/agents/explore-medium.md +113 -0
- package/agents/explore.md +86 -0
- package/agents/planner.md +164 -0
- package/agents/qa-tester.md +109 -0
- package/agents/researcher-low.md +84 -0
- package/agents/researcher.md +70 -0
- package/agents/vision.md +39 -0
- package/agents/writer.md +152 -0
- package/commands/.gitkeep +0 -0
- package/dist/__tests__/hooks.test.js +22 -22
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/hud-agents.test.d.ts +7 -0
- package/dist/__tests__/hud-agents.test.d.ts.map +1 -0
- package/dist/__tests__/hud-agents.test.js +363 -0
- package/dist/__tests__/hud-agents.test.js.map +1 -0
- package/dist/__tests__/installer.test.js +184 -116
- package/dist/__tests__/installer.test.js.map +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__/mnemosyne/config.test.d.ts +2 -0
- package/dist/__tests__/mnemosyne/config.test.d.ts.map +1 -0
- package/dist/__tests__/mnemosyne/config.test.js +37 -0
- package/dist/__tests__/mnemosyne/config.test.js.map +1 -0
- package/dist/__tests__/mnemosyne/detector.test.d.ts +2 -0
- package/dist/__tests__/mnemosyne/detector.test.d.ts.map +1 -0
- package/dist/__tests__/mnemosyne/detector.test.js +99 -0
- package/dist/__tests__/mnemosyne/detector.test.js.map +1 -0
- package/dist/__tests__/mnemosyne/finder.test.d.ts +2 -0
- package/dist/__tests__/mnemosyne/finder.test.d.ts.map +1 -0
- package/dist/__tests__/mnemosyne/finder.test.js +61 -0
- package/dist/__tests__/mnemosyne/finder.test.js.map +1 -0
- package/dist/__tests__/mnemosyne/loader.test.d.ts +2 -0
- package/dist/__tests__/mnemosyne/loader.test.d.ts.map +1 -0
- package/dist/__tests__/mnemosyne/loader.test.js +73 -0
- package/dist/__tests__/mnemosyne/loader.test.js.map +1 -0
- package/dist/__tests__/mnemosyne/parser.test.d.ts +2 -0
- package/dist/__tests__/mnemosyne/parser.test.d.ts.map +1 -0
- package/dist/__tests__/mnemosyne/parser.test.js +81 -0
- package/dist/__tests__/mnemosyne/parser.test.js.map +1 -0
- package/dist/__tests__/mnemosyne/validator.test.d.ts +2 -0
- package/dist/__tests__/mnemosyne/validator.test.d.ts.map +1 -0
- package/dist/__tests__/mnemosyne/validator.test.js +85 -0
- package/dist/__tests__/mnemosyne/validator.test.js.map +1 -0
- package/dist/__tests__/model-routing.test.js +34 -34
- package/dist/__tests__/model-routing.test.js.map +1 -1
- package/dist/__tests__/notepad.test.js +7 -7
- package/dist/__tests__/notepad.test.js.map +1 -1
- package/dist/__tests__/ralph-prd.test.js +12 -12
- package/dist/__tests__/ralph-prd.test.js.map +1 -1
- package/dist/__tests__/ralph-progress.test.js +12 -12
- package/dist/__tests__/ralph-progress.test.js.map +1 -1
- package/dist/__tests__/skills.test.js +50 -17
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/__tests__/types.test.js +5 -5
- package/dist/__tests__/types.test.js.map +1 -1
- package/dist/agents/analyst.d.ts +11 -0
- package/dist/agents/analyst.d.ts.map +1 -0
- package/dist/agents/analyst.js +115 -0
- package/dist/agents/analyst.js.map +1 -0
- package/dist/agents/architect.d.ts +12 -0
- package/dist/agents/architect.d.ts.map +1 -0
- package/dist/agents/architect.js +189 -0
- package/dist/agents/architect.js.map +1 -0
- package/dist/agents/coordinator.d.ts +11 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +115 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/agents/critic.d.ts +11 -0
- package/dist/agents/critic.d.ts.map +1 -0
- package/dist/agents/critic.js +127 -0
- package/dist/agents/critic.js.map +1 -0
- package/dist/agents/definitions.d.ts +33 -70
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +140 -1268
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/designer.d.ts +11 -0
- package/dist/agents/designer.d.ts.map +1 -0
- package/dist/agents/designer.js +115 -0
- package/dist/agents/designer.js.map +1 -0
- package/dist/agents/executor.d.ts +12 -0
- package/dist/agents/executor.d.ts.map +1 -0
- package/dist/agents/executor.js +93 -0
- package/dist/agents/executor.js.map +1 -0
- package/dist/agents/explore.js +4 -4
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/index.d.ts +12 -11
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +15 -16
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/planner.d.ts +11 -0
- package/dist/agents/planner.d.ts.map +1 -0
- package/dist/agents/planner.js +194 -0
- package/dist/agents/planner.js.map +1 -0
- package/dist/agents/qa-tester.js +16 -16
- package/dist/agents/qa-tester.js.map +1 -1
- package/dist/agents/researcher.d.ts +12 -0
- package/dist/agents/researcher.d.ts.map +1 -0
- package/dist/agents/researcher.js +103 -0
- package/dist/agents/researcher.js.map +1 -0
- package/dist/agents/vision.d.ts +11 -0
- package/dist/agents/vision.d.ts.map +1 -0
- package/dist/agents/vision.js +70 -0
- package/dist/agents/vision.js.map +1 -0
- package/dist/agents/writer.d.ts +11 -0
- package/dist/agents/writer.d.ts.map +1 -0
- package/dist/agents/writer.js +209 -0
- package/dist/agents/writer.js.map +1 -0
- package/dist/cli/index.js +32 -32
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/index.d.ts +4 -4
- package/dist/commands/index.js +4 -4
- package/dist/config/loader.js +25 -25
- package/dist/config/loader.js.map +1 -1
- package/dist/features/auto-update.d.ts +5 -5
- package/dist/features/auto-update.d.ts.map +1 -1
- package/dist/features/auto-update.js +17 -17
- package/dist/features/auto-update.js.map +1 -1
- package/dist/features/background-agent/manager.js +1 -1
- package/dist/features/background-agent/manager.js.map +1 -1
- package/dist/features/boulder-state/constants.d.ts +5 -5
- package/dist/features/boulder-state/constants.d.ts.map +1 -1
- package/dist/features/boulder-state/constants.js +3 -3
- package/dist/features/boulder-state/constants.js.map +1 -1
- package/dist/features/boulder-state/index.d.ts +2 -2
- package/dist/features/boulder-state/index.d.ts.map +1 -1
- package/dist/features/boulder-state/index.js +2 -2
- package/dist/features/boulder-state/index.js.map +1 -1
- package/dist/features/boulder-state/storage.d.ts +3 -3
- package/dist/features/boulder-state/storage.d.ts.map +1 -1
- package/dist/features/boulder-state/storage.js +6 -6
- package/dist/features/boulder-state/storage.js.map +1 -1
- package/dist/features/builtin-skills/skills.d.ts +15 -1
- package/dist/features/builtin-skills/skills.d.ts.map +1 -1
- package/dist/features/builtin-skills/skills.js +100 -1110
- package/dist/features/builtin-skills/skills.js.map +1 -1
- package/dist/features/context-injector/types.d.ts +1 -1
- package/dist/features/context-injector/types.d.ts.map +1 -1
- package/dist/features/index.d.ts +1 -1
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +2 -2
- package/dist/features/index.js.map +1 -1
- package/dist/features/magic-keywords.js +14 -14
- package/dist/features/magic-keywords.js.map +1 -1
- package/dist/features/model-routing/prompts/opus.d.ts +1 -1
- package/dist/features/model-routing/prompts/opus.d.ts.map +1 -1
- package/dist/features/model-routing/prompts/opus.js +1 -1
- package/dist/features/model-routing/router.d.ts +1 -1
- package/dist/features/model-routing/router.js +14 -14
- package/dist/features/model-routing/router.js.map +1 -1
- package/dist/features/model-routing/rules.js +31 -31
- package/dist/features/model-routing/rules.js.map +1 -1
- package/dist/features/model-routing/types.js +1 -1
- package/dist/features/model-routing/types.js.map +1 -1
- package/dist/hooks/agent-usage-reminder/constants.d.ts +2 -2
- package/dist/hooks/agent-usage-reminder/constants.d.ts.map +1 -1
- package/dist/hooks/agent-usage-reminder/constants.js +5 -5
- package/dist/hooks/agent-usage-reminder/constants.js.map +1 -1
- package/dist/hooks/auto-slash-command/constants.d.ts +1 -1
- package/dist/hooks/auto-slash-command/constants.d.ts.map +1 -1
- package/dist/hooks/auto-slash-command/constants.js +9 -2
- package/dist/hooks/auto-slash-command/constants.js.map +1 -1
- package/dist/hooks/bridge.d.ts +2 -2
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +50 -18
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/directory-readme-injector/constants.d.ts +1 -1
- package/dist/hooks/directory-readme-injector/constants.d.ts.map +1 -1
- package/dist/hooks/directory-readme-injector/constants.js +2 -2
- package/dist/hooks/directory-readme-injector/constants.js.map +1 -1
- package/dist/hooks/index.d.ts +3 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +9 -4
- package/dist/hooks/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/learner/config.d.ts +53 -0
- package/dist/hooks/learner/config.d.ts.map +1 -0
- package/dist/hooks/learner/config.js +103 -0
- package/dist/hooks/learner/config.js.map +1 -0
- package/dist/hooks/learner/constants.d.ts +24 -0
- package/dist/hooks/learner/constants.d.ts.map +1 -0
- package/dist/hooks/learner/constants.js +26 -0
- package/dist/hooks/learner/constants.js.map +1 -0
- package/dist/hooks/learner/detection-hook.d.ts +39 -0
- package/dist/hooks/learner/detection-hook.d.ts.map +1 -0
- package/dist/hooks/learner/detection-hook.js +83 -0
- package/dist/hooks/learner/detection-hook.js.map +1 -0
- package/dist/hooks/learner/detector.d.ts +30 -0
- package/dist/hooks/learner/detector.d.ts.map +1 -0
- package/dist/hooks/learner/detector.js +150 -0
- package/dist/hooks/learner/detector.js.map +1 -0
- package/dist/hooks/learner/finder.d.ts +21 -0
- package/dist/hooks/learner/finder.d.ts.map +1 -0
- package/dist/hooks/learner/finder.js +117 -0
- package/dist/hooks/learner/finder.js.map +1 -0
- package/dist/hooks/learner/index.d.ts +62 -0
- package/dist/hooks/learner/index.d.ts.map +1 -0
- package/dist/hooks/learner/index.js +137 -0
- package/dist/hooks/learner/index.js.map +1 -0
- package/dist/hooks/learner/loader.d.ts +20 -0
- package/dist/hooks/learner/loader.d.ts.map +1 -0
- package/dist/hooks/learner/loader.js +113 -0
- package/dist/hooks/learner/loader.js.map +1 -0
- package/dist/hooks/learner/parser.d.ts +21 -0
- package/dist/hooks/learner/parser.d.ts.map +1 -0
- package/dist/hooks/learner/parser.js +190 -0
- package/dist/hooks/learner/parser.js.map +1 -0
- package/dist/hooks/learner/promotion.d.ts +29 -0
- package/dist/hooks/learner/promotion.d.ts.map +1 -0
- package/dist/hooks/learner/promotion.js +87 -0
- package/dist/hooks/learner/promotion.js.map +1 -0
- package/dist/hooks/learner/types.d.ts +109 -0
- package/dist/hooks/learner/types.d.ts.map +1 -0
- package/dist/hooks/learner/types.js +8 -0
- package/dist/hooks/learner/types.js.map +1 -0
- package/dist/hooks/learner/validator.d.ts +15 -0
- package/dist/hooks/learner/validator.d.ts.map +1 -0
- package/dist/hooks/learner/validator.js +87 -0
- package/dist/hooks/learner/validator.js.map +1 -0
- package/dist/hooks/learner/writer.d.ts +27 -0
- package/dist/hooks/learner/writer.d.ts.map +1 -0
- package/dist/hooks/learner/writer.js +126 -0
- package/dist/hooks/learner/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/notepad/index.d.ts +2 -2
- package/dist/hooks/notepad/index.js +7 -7
- package/dist/hooks/notepad/index.js.map +1 -1
- package/dist/hooks/omc-orchestrator/constants.d.ts +23 -0
- package/dist/hooks/omc-orchestrator/constants.d.ts.map +1 -0
- package/dist/hooks/omc-orchestrator/constants.js +142 -0
- package/dist/hooks/omc-orchestrator/constants.js.map +1 -0
- package/dist/hooks/omc-orchestrator/index.d.ts +113 -0
- package/dist/hooks/omc-orchestrator/index.d.ts.map +1 -0
- package/dist/hooks/omc-orchestrator/index.js +309 -0
- package/dist/hooks/omc-orchestrator/index.js.map +1 -0
- package/dist/hooks/persistent-mode/index.d.ts +4 -4
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +37 -37
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/ralph-loop/index.d.ts +33 -5
- package/dist/hooks/ralph-loop/index.d.ts.map +1 -1
- package/dist/hooks/ralph-loop/index.js +91 -17
- package/dist/hooks/ralph-loop/index.js.map +1 -1
- package/dist/hooks/ralph-prd/index.d.ts +4 -4
- package/dist/hooks/ralph-prd/index.d.ts.map +1 -1
- package/dist/hooks/ralph-prd/index.js +13 -13
- package/dist/hooks/ralph-prd/index.js.map +1 -1
- package/dist/hooks/ralph-progress/index.d.ts +5 -5
- package/dist/hooks/ralph-progress/index.d.ts.map +1 -1
- package/dist/hooks/ralph-progress/index.js +14 -14
- package/dist/hooks/ralph-progress/index.js.map +1 -1
- package/dist/hooks/ralph-verifier/index.d.ts +23 -23
- package/dist/hooks/ralph-verifier/index.d.ts.map +1 -1
- package/dist/hooks/ralph-verifier/index.js +41 -41
- package/dist/hooks/ralph-verifier/index.js.map +1 -1
- package/dist/hooks/rules-injector/constants.d.ts +1 -1
- package/dist/hooks/rules-injector/constants.d.ts.map +1 -1
- package/dist/hooks/rules-injector/constants.js +2 -2
- package/dist/hooks/rules-injector/constants.js.map +1 -1
- package/dist/hooks/todo-continuation/index.js +1 -1
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/hooks/ultraqa-loop/index.d.ts +1 -1
- package/dist/hooks/ultraqa-loop/index.js +8 -8
- package/dist/hooks/ultraqa-loop/index.js.map +1 -1
- package/dist/hooks/ultrawork-state/index.js +7 -7
- package/dist/hooks/ultrawork-state/index.js.map +1 -1
- package/dist/hud/background-tasks.d.ts +26 -0
- package/dist/hud/background-tasks.d.ts.map +1 -0
- package/dist/hud/background-tasks.js +116 -0
- package/dist/hud/background-tasks.js.map +1 -0
- package/dist/hud/colors.d.ts +54 -0
- package/dist/hud/colors.d.ts.map +1 -0
- package/dist/hud/colors.js +156 -0
- package/dist/hud/colors.js.map +1 -0
- package/dist/hud/elements/agents.d.ts +73 -0
- package/dist/hud/elements/agents.d.ts.map +1 -0
- package/dist/hud/elements/agents.js +405 -0
- package/dist/hud/elements/agents.js.map +1 -0
- package/dist/hud/elements/background.d.ts +20 -0
- package/dist/hud/elements/background.d.ts.map +1 -0
- package/dist/hud/elements/background.js +70 -0
- package/dist/hud/elements/background.js.map +1 -0
- package/dist/hud/elements/context.d.ts +19 -0
- package/dist/hud/elements/context.d.ts.map +1 -0
- package/dist/hud/elements/context.js +58 -0
- package/dist/hud/elements/context.js.map +1 -0
- package/dist/hud/elements/index.d.ts +17 -0
- package/dist/hud/elements/index.d.ts.map +1 -0
- package/dist/hud/elements/index.js +17 -0
- package/dist/hud/elements/index.js.map +1 -0
- package/dist/hud/elements/limits.d.ts +19 -0
- package/dist/hud/elements/limits.d.ts.map +1 -0
- package/dist/hud/elements/limits.js +54 -0
- package/dist/hud/elements/limits.js.map +1 -0
- package/dist/hud/elements/permission.d.ts +13 -0
- package/dist/hud/elements/permission.d.ts.map +1 -0
- package/dist/hud/elements/permission.js +20 -0
- package/dist/hud/elements/permission.js.map +1 -0
- package/dist/hud/elements/prd.d.ts +20 -0
- package/dist/hud/elements/prd.d.ts.map +1 -0
- package/dist/hud/elements/prd.js +52 -0
- package/dist/hud/elements/prd.js.map +1 -0
- package/dist/hud/elements/ralph.d.ts +14 -0
- package/dist/hud/elements/ralph.d.ts.map +1 -0
- package/dist/hud/elements/ralph.js +36 -0
- package/dist/hud/elements/ralph.js.map +1 -0
- package/dist/hud/elements/session.d.ts +13 -0
- package/dist/hud/elements/session.d.ts.map +1 -0
- package/dist/hud/elements/session.js +24 -0
- package/dist/hud/elements/session.js.map +1 -0
- package/dist/hud/elements/skills.d.ts +24 -0
- package/dist/hud/elements/skills.d.ts.map +1 -0
- package/dist/hud/elements/skills.js +81 -0
- package/dist/hud/elements/skills.js.map +1 -0
- package/dist/hud/elements/thinking.d.ts +13 -0
- package/dist/hud/elements/thinking.d.ts.map +1 -0
- package/dist/hud/elements/thinking.js +19 -0
- package/dist/hud/elements/thinking.js.map +1 -0
- package/dist/hud/elements/todos.d.ts +20 -0
- package/dist/hud/elements/todos.d.ts.map +1 -0
- package/dist/hud/elements/todos.js +70 -0
- package/dist/hud/elements/todos.js.map +1 -0
- package/dist/hud/index.d.ts +9 -0
- package/dist/hud/index.d.ts.map +1 -0
- package/dist/hud/index.js +89 -0
- package/dist/hud/index.js.map +1 -0
- package/dist/hud/omc-state.d.ts +31 -0
- package/dist/hud/omc-state.d.ts.map +1 -0
- package/dist/hud/omc-state.js +163 -0
- package/dist/hud/omc-state.js.map +1 -0
- package/dist/hud/render.d.ts +11 -0
- package/dist/hud/render.d.ts.map +1 -0
- package/dist/hud/render.js +121 -0
- package/dist/hud/render.js.map +1 -0
- 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/hud/state.d.ts +43 -0
- package/dist/hud/state.d.ts.map +1 -0
- package/dist/hud/state.js +201 -0
- package/dist/hud/state.js.map +1 -0
- package/dist/hud/stdin.d.ts +22 -0
- package/dist/hud/stdin.d.ts.map +1 -0
- package/dist/hud/stdin.js +65 -0
- package/dist/hud/stdin.js.map +1 -0
- package/dist/hud/transcript.d.ts +32 -0
- package/dist/hud/transcript.d.ts.map +1 -0
- package/dist/hud/transcript.js +364 -0
- package/dist/hud/transcript.js.map +1 -0
- package/dist/hud/types.d.ts +178 -0
- package/dist/hud/types.d.ts.map +1 -0
- package/dist/hud/types.js +119 -0
- package/dist/hud/types.js.map +1 -0
- package/dist/hud/usage-api.d.ts +24 -0
- package/dist/hud/usage-api.d.ts.map +1 -0
- package/dist/hud/usage-api.js +234 -0
- package/dist/hud/usage-api.js.map +1 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -12
- package/dist/index.js.map +1 -1
- package/dist/installer/hooks.d.ts +36 -64
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +91 -1298
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts +23 -22
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +307 -2575
- package/dist/installer/index.js.map +1 -1
- package/dist/shared/types.d.ts +6 -6
- package/dist/shared/types.d.ts.map +1 -1
- package/docs/ARCHITECTURE.md +386 -0
- package/docs/CLAUDE.md +281 -0
- package/docs/FULL-README.md +822 -0
- package/docs/LOCAL_PLUGIN_INSTALL.md +94 -0
- package/docs/MIGRATION-v3.md +186 -0
- package/docs/MIGRATION.md +460 -0
- package/docs/TIERED_AGENTS_V2.md +322 -0
- package/hooks/hooks.json +70 -0
- package/hooks/keyword-detector.sh +102 -0
- package/hooks/persistent-mode.sh +172 -0
- package/hooks/session-start.sh +62 -0
- package/hooks/stop-continuation.sh +40 -0
- package/package.json +14 -8
- package/scripts/install.sh +90 -72
- package/scripts/keyword-detector.mjs +1 -1
- package/scripts/persistent-mode.mjs +9 -9
- package/scripts/persistent-mode.sh +21 -10
- package/scripts/plugin-setup.mjs +109 -0
- package/scripts/pre-tool-enforcer.mjs +1 -1
- package/scripts/pre-tool-enforcer.sh +1 -1
- package/scripts/session-start.mjs +38 -3
- package/scripts/skill-injector.mjs +231 -0
- package/scripts/uninstall.sh +8 -8
- package/skills/analyze/SKILL.md +47 -0
- package/skills/cancel-ralph/SKILL.md +43 -0
- package/skills/cancel-ultraqa/SKILL.md +29 -0
- package/skills/cancel-ultrawork/SKILL.md +42 -0
- package/skills/deepinit/SKILL.md +321 -0
- package/skills/deepsearch/SKILL.md +39 -0
- package/skills/doctor/SKILL.md +192 -0
- package/skills/frontend-ui-ux/SKILL.md +53 -0
- package/skills/git-master/SKILL.md +58 -0
- package/skills/help/SKILL.md +66 -0
- package/skills/hud/SKILL.md +142 -0
- package/skills/learner/SKILL.md +136 -0
- package/skills/note/SKILL.md +63 -0
- package/skills/omc-default/SKILL.md +78 -0
- package/skills/omc-default-global/SKILL.md +75 -0
- package/skills/omc-setup/SKILL.md +144 -0
- package/skills/orchestrate/SKILL.md +409 -0
- package/skills/plan/SKILL.md +37 -0
- package/skills/planner/SKILL.md +43 -0
- package/skills/ralph/SKILL.md +101 -0
- package/skills/ralph-init/SKILL.md +61 -0
- package/skills/ralplan/SKILL.md +219 -0
- package/skills/release/SKILL.md +84 -0
- package/skills/review/SKILL.md +37 -0
- package/skills/ultraqa/SKILL.md +123 -0
- package/skills/ultrawork/SKILL.md +89 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Sisyphus HUD - Main Entry Point
|
|
4
|
+
*
|
|
5
|
+
* Statusline command that visualizes oh-my-claudecode state.
|
|
6
|
+
* Receives stdin JSON from Claude Code and outputs formatted statusline.
|
|
7
|
+
*/
|
|
8
|
+
import { readStdin, getContextPercent, getModelName } from './stdin.js';
|
|
9
|
+
import { parseTranscript } from './transcript.js';
|
|
10
|
+
import { readHudState, readHudConfig, getRunningTasks } from './state.js';
|
|
11
|
+
import { readRalphStateForHud, readUltraworkStateForHud, readPrdStateForHud, } from './omc-state.js';
|
|
12
|
+
import { getUsage } from './usage-api.js';
|
|
13
|
+
import { render } from './render.js';
|
|
14
|
+
/**
|
|
15
|
+
* Calculate session health from session start time and context usage.
|
|
16
|
+
*/
|
|
17
|
+
function calculateSessionHealth(sessionStart, contextPercent) {
|
|
18
|
+
if (!sessionStart)
|
|
19
|
+
return null;
|
|
20
|
+
const durationMs = Date.now() - sessionStart.getTime();
|
|
21
|
+
const durationMinutes = Math.floor(durationMs / 60_000);
|
|
22
|
+
let health = 'healthy';
|
|
23
|
+
if (durationMinutes > 120 || contextPercent > 85) {
|
|
24
|
+
health = 'critical';
|
|
25
|
+
}
|
|
26
|
+
else if (durationMinutes > 60 || contextPercent > 70) {
|
|
27
|
+
health = 'warning';
|
|
28
|
+
}
|
|
29
|
+
return { durationMinutes, messageCount: 0, health };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Main HUD entry point
|
|
33
|
+
*/
|
|
34
|
+
async function main() {
|
|
35
|
+
try {
|
|
36
|
+
// Read stdin from Claude Code
|
|
37
|
+
const stdin = await readStdin();
|
|
38
|
+
if (!stdin) {
|
|
39
|
+
// No stdin - output placeholder
|
|
40
|
+
console.log('[SISYPHUS] waiting...');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const cwd = stdin.cwd || process.cwd();
|
|
44
|
+
// Parse transcript for agents and todos
|
|
45
|
+
const transcriptData = await parseTranscript(stdin.transcript_path);
|
|
46
|
+
// Read Sisyphus state files
|
|
47
|
+
const ralph = readRalphStateForHud(cwd);
|
|
48
|
+
const ultrawork = readUltraworkStateForHud(cwd);
|
|
49
|
+
const prd = readPrdStateForHud(cwd);
|
|
50
|
+
// Read HUD state for background tasks
|
|
51
|
+
const hudState = readHudState(cwd);
|
|
52
|
+
const backgroundTasks = hudState?.backgroundTasks || [];
|
|
53
|
+
// Read configuration
|
|
54
|
+
const config = readHudConfig();
|
|
55
|
+
// Fetch rate limits from OAuth API (if available)
|
|
56
|
+
const rateLimits = config.elements.rateLimits !== false
|
|
57
|
+
? await getUsage()
|
|
58
|
+
: null;
|
|
59
|
+
// Build render context
|
|
60
|
+
const context = {
|
|
61
|
+
contextPercent: getContextPercent(stdin),
|
|
62
|
+
modelName: getModelName(stdin),
|
|
63
|
+
ralph,
|
|
64
|
+
ultrawork,
|
|
65
|
+
prd,
|
|
66
|
+
activeAgents: transcriptData.agents.filter((a) => a.status === 'running'),
|
|
67
|
+
todos: transcriptData.todos,
|
|
68
|
+
backgroundTasks: getRunningTasks(hudState),
|
|
69
|
+
cwd,
|
|
70
|
+
lastSkill: transcriptData.lastActivatedSkill || null,
|
|
71
|
+
rateLimits,
|
|
72
|
+
pendingPermission: transcriptData.pendingPermission || null,
|
|
73
|
+
thinkingState: transcriptData.thinkingState || null,
|
|
74
|
+
sessionHealth: calculateSessionHealth(transcriptData.sessionStart, getContextPercent(stdin))
|
|
75
|
+
};
|
|
76
|
+
// Render and output
|
|
77
|
+
const output = render(context, config);
|
|
78
|
+
// Replace spaces with non-breaking spaces for terminal alignment
|
|
79
|
+
const formattedOutput = output.replace(/ /g, '\u00A0');
|
|
80
|
+
console.log(formattedOutput);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// On any error, show minimal fallback
|
|
84
|
+
console.log('[SISYPHUS] error');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Run main
|
|
88
|
+
main();
|
|
89
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hud/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 .omc 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 .omc/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=omc-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omc-state.d.ts","sourceRoot":"","sources":["../../src/hud/omc-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, '.omc', '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 .omc and global ~/.claude locations.
|
|
61
|
+
*/
|
|
62
|
+
export function readUltraworkStateForHud(directory) {
|
|
63
|
+
// Check local state first
|
|
64
|
+
const localFile = join(directory, '.omc', '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 .omc/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 .omc
|
|
109
|
+
prdPath = join(directory, '.omc', '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=omc-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"omc-state.js","sourceRoot":"","sources":["../../src/hud/omc-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sisyphus HUD - Main Renderer
|
|
3
|
+
*
|
|
4
|
+
* Composes statusline output from render context.
|
|
5
|
+
*/
|
|
6
|
+
import type { HudRenderContext, HudConfig } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Render the complete statusline (single or multi-line)
|
|
9
|
+
*/
|
|
10
|
+
export declare function render(context: HudRenderContext, config: HudConfig): string;
|
|
11
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/hud/render.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAc9D;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CA0G3E"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sisyphus HUD - Main Renderer
|
|
3
|
+
*
|
|
4
|
+
* Composes statusline output from render context.
|
|
5
|
+
*/
|
|
6
|
+
import { bold, dim } from './colors.js';
|
|
7
|
+
import { renderRalph } from './elements/ralph.js';
|
|
8
|
+
import { renderAgentsByFormat, renderAgentsMultiLine } from './elements/agents.js';
|
|
9
|
+
import { renderTodos } from './elements/todos.js';
|
|
10
|
+
import { renderSkills, renderLastSkill } from './elements/skills.js';
|
|
11
|
+
import { renderContext } from './elements/context.js';
|
|
12
|
+
import { renderBackground } from './elements/background.js';
|
|
13
|
+
import { renderPrd } from './elements/prd.js';
|
|
14
|
+
import { renderRateLimits } from './elements/limits.js';
|
|
15
|
+
import { renderPermission } from './elements/permission.js';
|
|
16
|
+
import { renderThinking } from './elements/thinking.js';
|
|
17
|
+
import { renderSession } from './elements/session.js';
|
|
18
|
+
/**
|
|
19
|
+
* Render the complete statusline (single or multi-line)
|
|
20
|
+
*/
|
|
21
|
+
export function render(context, config) {
|
|
22
|
+
const elements = [];
|
|
23
|
+
const detailLines = [];
|
|
24
|
+
const { elements: enabledElements } = config;
|
|
25
|
+
// [OMC] label
|
|
26
|
+
if (enabledElements.omcLabel) {
|
|
27
|
+
elements.push(bold('[OMC]'));
|
|
28
|
+
}
|
|
29
|
+
// Rate limits (5h and weekly)
|
|
30
|
+
if (enabledElements.rateLimits && context.rateLimits) {
|
|
31
|
+
const limits = renderRateLimits(context.rateLimits);
|
|
32
|
+
if (limits)
|
|
33
|
+
elements.push(limits);
|
|
34
|
+
}
|
|
35
|
+
// Permission status indicator (heuristic-based)
|
|
36
|
+
if (enabledElements.permissionStatus && context.pendingPermission) {
|
|
37
|
+
const permission = renderPermission(context.pendingPermission);
|
|
38
|
+
if (permission)
|
|
39
|
+
elements.push(permission);
|
|
40
|
+
}
|
|
41
|
+
// Extended thinking indicator
|
|
42
|
+
if (enabledElements.thinking && context.thinkingState) {
|
|
43
|
+
const thinking = renderThinking(context.thinkingState);
|
|
44
|
+
if (thinking)
|
|
45
|
+
elements.push(thinking);
|
|
46
|
+
}
|
|
47
|
+
// Session health indicator
|
|
48
|
+
if (enabledElements.sessionHealth && context.sessionHealth) {
|
|
49
|
+
const session = renderSession(context.sessionHealth);
|
|
50
|
+
if (session)
|
|
51
|
+
elements.push(session);
|
|
52
|
+
}
|
|
53
|
+
// Ralph loop state
|
|
54
|
+
if (enabledElements.ralph && context.ralph) {
|
|
55
|
+
const ralph = renderRalph(context.ralph, config.thresholds);
|
|
56
|
+
if (ralph)
|
|
57
|
+
elements.push(ralph);
|
|
58
|
+
}
|
|
59
|
+
// PRD story
|
|
60
|
+
if (enabledElements.prdStory && context.prd) {
|
|
61
|
+
const prd = renderPrd(context.prd);
|
|
62
|
+
if (prd)
|
|
63
|
+
elements.push(prd);
|
|
64
|
+
}
|
|
65
|
+
// Active skills (ultrawork, etc.) + last skill
|
|
66
|
+
if (enabledElements.activeSkills) {
|
|
67
|
+
const skills = renderSkills(context.ultrawork, context.ralph, (enabledElements.lastSkill ?? true) ? context.lastSkill : null);
|
|
68
|
+
if (skills)
|
|
69
|
+
elements.push(skills);
|
|
70
|
+
}
|
|
71
|
+
// Standalone last skill element (if activeSkills disabled but lastSkill enabled)
|
|
72
|
+
if ((enabledElements.lastSkill ?? true) && !enabledElements.activeSkills) {
|
|
73
|
+
const lastSkillElement = renderLastSkill(context.lastSkill);
|
|
74
|
+
if (lastSkillElement)
|
|
75
|
+
elements.push(lastSkillElement);
|
|
76
|
+
}
|
|
77
|
+
// Context window
|
|
78
|
+
if (enabledElements.contextBar) {
|
|
79
|
+
const ctx = renderContext(context.contextPercent, config.thresholds);
|
|
80
|
+
if (ctx)
|
|
81
|
+
elements.push(ctx);
|
|
82
|
+
}
|
|
83
|
+
// Active agents - handle multi-line format specially
|
|
84
|
+
if (enabledElements.agents) {
|
|
85
|
+
const format = enabledElements.agentsFormat || 'codes';
|
|
86
|
+
if (format === 'multiline') {
|
|
87
|
+
// Multi-line mode: get header part and detail lines
|
|
88
|
+
const maxLines = enabledElements.agentsMaxLines || 5;
|
|
89
|
+
const result = renderAgentsMultiLine(context.activeAgents, maxLines);
|
|
90
|
+
if (result.headerPart)
|
|
91
|
+
elements.push(result.headerPart);
|
|
92
|
+
detailLines.push(...result.detailLines);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Single-line mode: standard format
|
|
96
|
+
const agents = renderAgentsByFormat(context.activeAgents, format);
|
|
97
|
+
if (agents)
|
|
98
|
+
elements.push(agents);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Background tasks
|
|
102
|
+
if (enabledElements.backgroundTasks) {
|
|
103
|
+
const bg = renderBackground(context.backgroundTasks);
|
|
104
|
+
if (bg)
|
|
105
|
+
elements.push(bg);
|
|
106
|
+
}
|
|
107
|
+
// Todos
|
|
108
|
+
if (enabledElements.todos) {
|
|
109
|
+
const todos = renderTodos(context.todos);
|
|
110
|
+
if (todos)
|
|
111
|
+
elements.push(todos);
|
|
112
|
+
}
|
|
113
|
+
// Compose output
|
|
114
|
+
const headerLine = elements.join(dim(' | '));
|
|
115
|
+
// If we have detail lines, output multi-line
|
|
116
|
+
if (detailLines.length > 0) {
|
|
117
|
+
return [headerLine, ...detailLines].join('\n');
|
|
118
|
+
}
|
|
119
|
+
return headerLine;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/hud/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|