oh-my-claude-sisyphus 3.7.0 → 3.7.3
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 +24 -1
- package/commands/hud.md +37 -5
- package/commands/omc-setup.md +105 -0
- package/dist/__tests__/compatibility-security.test.d.ts +13 -0
- package/dist/__tests__/compatibility-security.test.d.ts.map +1 -0
- package/dist/__tests__/compatibility-security.test.js +403 -0
- package/dist/__tests__/compatibility-security.test.js.map +1 -0
- package/dist/__tests__/compatibility.test.d.ts +7 -0
- package/dist/__tests__/compatibility.test.d.ts.map +1 -0
- package/dist/__tests__/compatibility.test.js +484 -0
- package/dist/__tests__/compatibility.test.js.map +1 -0
- package/dist/__tests__/hud/analytics-display.test.js +141 -1
- package/dist/__tests__/hud/analytics-display.test.js.map +1 -1
- package/dist/__tests__/hud-windows.test.d.ts +2 -0
- package/dist/__tests__/hud-windows.test.d.ts.map +1 -0
- package/dist/__tests__/hud-windows.test.js +91 -0
- package/dist/__tests__/hud-windows.test.js.map +1 -0
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/index.js +0 -0
- package/dist/compatibility/discovery.d.ts +58 -0
- package/dist/compatibility/discovery.d.ts.map +1 -0
- package/dist/compatibility/discovery.js +619 -0
- package/dist/compatibility/discovery.js.map +1 -0
- package/dist/compatibility/index.d.ts +51 -0
- package/dist/compatibility/index.d.ts.map +1 -0
- package/dist/compatibility/index.js +72 -0
- package/dist/compatibility/index.js.map +1 -0
- package/dist/compatibility/mcp-bridge.d.ts +138 -0
- package/dist/compatibility/mcp-bridge.d.ts.map +1 -0
- package/dist/compatibility/mcp-bridge.js +524 -0
- package/dist/compatibility/mcp-bridge.js.map +1 -0
- package/dist/compatibility/permission-adapter.d.ts +79 -0
- package/dist/compatibility/permission-adapter.d.ts.map +1 -0
- package/dist/compatibility/permission-adapter.js +369 -0
- package/dist/compatibility/permission-adapter.js.map +1 -0
- package/dist/compatibility/registry.d.ts +161 -0
- package/dist/compatibility/registry.d.ts.map +1 -0
- package/dist/compatibility/registry.js +389 -0
- package/dist/compatibility/registry.js.map +1 -0
- package/dist/compatibility/types.d.ts +249 -0
- package/dist/compatibility/types.d.ts.map +1 -0
- package/dist/compatibility/types.js +8 -0
- package/dist/compatibility/types.js.map +1 -0
- package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
- package/dist/features/rate-limit-wait/daemon.js +44 -1
- package/dist/features/rate-limit-wait/daemon.js.map +1 -1
- package/dist/features/state-manager/index.d.ts.map +1 -1
- package/dist/features/state-manager/index.js +4 -1
- package/dist/features/state-manager/index.js.map +1 -1
- package/dist/hooks/permission-handler/__tests__/index.test.js +47 -0
- package/dist/hooks/permission-handler/__tests__/index.test.js.map +1 -1
- package/dist/hooks/permission-handler/index.d.ts +1 -1
- package/dist/hooks/permission-handler/index.d.ts.map +1 -1
- package/dist/hooks/permission-handler/index.js +11 -15
- package/dist/hooks/permission-handler/index.js.map +1 -1
- package/dist/hooks/plugin-patterns/index.d.ts +5 -0
- package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
- package/dist/hooks/plugin-patterns/index.js +26 -1
- package/dist/hooks/plugin-patterns/index.js.map +1 -1
- package/dist/hooks/session-end/index.d.ts +0 -8
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +5 -12
- package/dist/hooks/session-end/index.js.map +1 -1
- package/dist/hooks/subagent-tracker/index.d.ts.map +1 -1
- package/dist/hooks/subagent-tracker/index.js +32 -17
- package/dist/hooks/subagent-tracker/index.js.map +1 -1
- package/dist/hud/analytics-display.d.ts +17 -1
- package/dist/hud/analytics-display.d.ts.map +1 -1
- package/dist/hud/analytics-display.js +55 -12
- package/dist/hud/analytics-display.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +49 -18
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/types.d.ts +2 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +14 -0
- package/dist/hud/types.js.map +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +3 -2
- package/dist/installer/index.js.map +1 -1
- package/docs/COMPATIBILITY.md +1051 -0
- package/hooks/keyword-detector.sh +4 -4
- package/hooks/persistent-mode.sh +10 -10
- package/hooks/session-start.sh +4 -4
- package/package.json +3 -1
- package/scripts/keyword-detector.mjs +4 -4
- package/scripts/persistent-mode.mjs +6 -6
- package/scripts/persistent-mode.sh +10 -10
- package/scripts/session-start.mjs +4 -4
- package/skills/hud/SKILL.md +37 -5
- package/skills/omc-setup/SKILL.md +162 -4
- package/skills/writer-memory/SKILL.md +443 -0
- package/skills/writer-memory/lib/character-tracker.ts +338 -0
- package/skills/writer-memory/lib/memory-manager.ts +804 -0
- package/skills/writer-memory/lib/relationship-graph.ts +400 -0
- package/skills/writer-memory/lib/scene-organizer.ts +544 -0
- package/skills/writer-memory/lib/synopsis-builder.ts +339 -0
- package/skills/writer-memory/templates/synopsis-template.md +46 -0
- package/templates/hooks/keyword-detector.sh +4 -4
- package/templates/hooks/persistent-mode.sh +10 -10
- package/templates/hooks/session-start.sh +4 -4
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
- package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
- package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
- package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/config.test.js +0 -37
- package/dist/__tests__/learned-skills/config.test.js.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.js +0 -99
- package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.js +0 -59
- package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.js +0 -69
- package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.js +0 -81
- package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.js +0 -85
- package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
- package/dist/agents/codex-agents.d.ts +0 -20
- package/dist/agents/codex-agents.d.ts.map +0 -1
- package/dist/agents/codex-agents.js +0 -36
- package/dist/agents/codex-agents.js.map +0 -1
- package/dist/agents/document-writer.d.ts +0 -11
- package/dist/agents/document-writer.d.ts.map +0 -1
- package/dist/agents/document-writer.js +0 -209
- package/dist/agents/document-writer.js.map +0 -1
- package/dist/agents/frontend-engineer.d.ts +0 -11
- package/dist/agents/frontend-engineer.d.ts.map +0 -1
- package/dist/agents/frontend-engineer.js +0 -115
- package/dist/agents/frontend-engineer.js.map +0 -1
- package/dist/agents/librarian.d.ts +0 -12
- package/dist/agents/librarian.d.ts.map +0 -1
- package/dist/agents/librarian.js +0 -103
- package/dist/agents/librarian.js.map +0 -1
- package/dist/agents/metis.d.ts +0 -12
- package/dist/agents/metis.d.ts.map +0 -1
- package/dist/agents/metis.js +0 -117
- package/dist/agents/metis.js.map +0 -1
- package/dist/agents/momus.d.ts +0 -12
- package/dist/agents/momus.d.ts.map +0 -1
- package/dist/agents/momus.js +0 -128
- package/dist/agents/momus.js.map +0 -1
- package/dist/agents/multimodal-looker.d.ts +0 -11
- package/dist/agents/multimodal-looker.d.ts.map +0 -1
- package/dist/agents/multimodal-looker.js +0 -70
- package/dist/agents/multimodal-looker.js.map +0 -1
- package/dist/agents/oracle.d.ts +0 -13
- package/dist/agents/oracle.d.ts.map +0 -1
- package/dist/agents/oracle.js +0 -191
- package/dist/agents/oracle.js.map +0 -1
- package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
- package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
- package/dist/agents/orchestrator-sisyphus.js +0 -115
- package/dist/agents/orchestrator-sisyphus.js.map +0 -1
- package/dist/agents/prometheus.d.ts +0 -12
- package/dist/agents/prometheus.d.ts.map +0 -1
- package/dist/agents/prometheus.js +0 -195
- package/dist/agents/prometheus.js.map +0 -1
- package/dist/agents/sisyphus-junior.d.ts +0 -12
- package/dist/agents/sisyphus-junior.d.ts.map +0 -1
- package/dist/agents/sisyphus-junior.js +0 -93
- package/dist/agents/sisyphus-junior.js.map +0 -1
- package/dist/cli/components/CostDashboard.d.ts +0 -15
- package/dist/cli/components/CostDashboard.d.ts.map +0 -1
- package/dist/cli/components/CostDashboard.js +0 -15
- package/dist/cli/components/CostDashboard.js.map +0 -1
- package/dist/cli/components/LiveStats.d.ts +0 -16
- package/dist/cli/components/LiveStats.d.ts.map +0 -1
- package/dist/cli/components/LiveStats.js +0 -16
- package/dist/cli/components/LiveStats.js.map +0 -1
- package/dist/cli/components/SessionBrowser.d.ts +0 -14
- package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
- package/dist/cli/components/SessionBrowser.js +0 -14
- package/dist/cli/components/SessionBrowser.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -21
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -21
- package/dist/cli/tui.js.map +0 -1
- package/dist/hooks/autopilot/signals.d.ts +0 -20
- package/dist/hooks/autopilot/signals.d.ts.map +0 -1
- package/dist/hooks/autopilot/signals.js +0 -75
- package/dist/hooks/autopilot/signals.js.map +0 -1
- package/dist/hooks/autopilot/summary.d.ts +0 -27
- package/dist/hooks/autopilot/summary.d.ts.map +0 -1
- package/dist/hooks/autopilot/summary.js +0 -160
- package/dist/hooks/autopilot/summary.js.map +0 -1
- package/dist/hooks/autopilot/transition.d.ts +0 -39
- package/dist/hooks/autopilot/transition.d.ts.map +0 -1
- package/dist/hooks/autopilot/transition.js +0 -216
- package/dist/hooks/autopilot/transition.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
- package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.js +0 -201
- package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
- package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.js +0 -34
- package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
- package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
- package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
- package/dist/hooks/edit-error-recovery/index.js +0 -89
- package/dist/hooks/edit-error-recovery/index.js.map +0 -1
- package/dist/hooks/learned-skills/config.d.ts +0 -53
- package/dist/hooks/learned-skills/config.d.ts.map +0 -1
- package/dist/hooks/learned-skills/config.js +0 -103
- package/dist/hooks/learned-skills/config.js.map +0 -1
- package/dist/hooks/learned-skills/constants.d.ts +0 -24
- package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
- package/dist/hooks/learned-skills/constants.js +0 -26
- package/dist/hooks/learned-skills/constants.js.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.js +0 -83
- package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
- package/dist/hooks/learned-skills/detector.d.ts +0 -30
- package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detector.js +0 -150
- package/dist/hooks/learned-skills/detector.js.map +0 -1
- package/dist/hooks/learned-skills/finder.d.ts +0 -21
- package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
- package/dist/hooks/learned-skills/finder.js +0 -117
- package/dist/hooks/learned-skills/finder.js.map +0 -1
- package/dist/hooks/learned-skills/index.d.ts +0 -62
- package/dist/hooks/learned-skills/index.d.ts.map +0 -1
- package/dist/hooks/learned-skills/index.js +0 -137
- package/dist/hooks/learned-skills/index.js.map +0 -1
- package/dist/hooks/learned-skills/loader.d.ts +0 -20
- package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
- package/dist/hooks/learned-skills/loader.js +0 -107
- package/dist/hooks/learned-skills/loader.js.map +0 -1
- package/dist/hooks/learned-skills/parser.d.ts +0 -21
- package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
- package/dist/hooks/learned-skills/parser.js +0 -190
- package/dist/hooks/learned-skills/parser.js.map +0 -1
- package/dist/hooks/learned-skills/promotion.d.ts +0 -29
- package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
- package/dist/hooks/learned-skills/promotion.js +0 -87
- package/dist/hooks/learned-skills/promotion.js.map +0 -1
- package/dist/hooks/learned-skills/types.d.ts +0 -109
- package/dist/hooks/learned-skills/types.d.ts.map +0 -1
- package/dist/hooks/learned-skills/types.js +0 -8
- package/dist/hooks/learned-skills/types.js.map +0 -1
- package/dist/hooks/learned-skills/validator.d.ts +0 -15
- package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
- package/dist/hooks/learned-skills/validator.js +0 -87
- package/dist/hooks/learned-skills/validator.js.map +0 -1
- package/dist/hooks/learned-skills/writer.d.ts +0 -27
- package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
- package/dist/hooks/learned-skills/writer.js +0 -126
- package/dist/hooks/learned-skills/writer.js.map +0 -1
- package/dist/hooks/mnemosyne/config.d.ts +0 -53
- package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/config.js +0 -103
- package/dist/hooks/mnemosyne/config.js.map +0 -1
- package/dist/hooks/mnemosyne/constants.d.ts +0 -24
- package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/constants.js +0 -26
- package/dist/hooks/mnemosyne/constants.js.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.js +0 -83
- package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
- package/dist/hooks/mnemosyne/detector.d.ts +0 -30
- package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detector.js +0 -150
- package/dist/hooks/mnemosyne/detector.js.map +0 -1
- package/dist/hooks/mnemosyne/finder.d.ts +0 -21
- package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/finder.js +0 -117
- package/dist/hooks/mnemosyne/finder.js.map +0 -1
- package/dist/hooks/mnemosyne/index.d.ts +0 -62
- package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/index.js +0 -137
- package/dist/hooks/mnemosyne/index.js.map +0 -1
- package/dist/hooks/mnemosyne/loader.d.ts +0 -20
- package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/loader.js +0 -113
- package/dist/hooks/mnemosyne/loader.js.map +0 -1
- package/dist/hooks/mnemosyne/parser.d.ts +0 -21
- package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/parser.js +0 -190
- package/dist/hooks/mnemosyne/parser.js.map +0 -1
- package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
- package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/promotion.js +0 -87
- package/dist/hooks/mnemosyne/promotion.js.map +0 -1
- package/dist/hooks/mnemosyne/types.d.ts +0 -109
- package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/types.js +0 -8
- package/dist/hooks/mnemosyne/types.js.map +0 -1
- package/dist/hooks/mnemosyne/validator.d.ts +0 -15
- package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/validator.js +0 -87
- package/dist/hooks/mnemosyne/validator.js.map +0 -1
- package/dist/hooks/mnemosyne/writer.d.ts +0 -27
- package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/writer.js +0 -126
- package/dist/hooks/mnemosyne/writer.js.map +0 -1
- package/dist/hooks/ralph-loop/index.d.ts +0 -116
- package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
- package/dist/hooks/ralph-loop/index.js +0 -322
- package/dist/hooks/ralph-loop/index.js.map +0 -1
- package/dist/hooks/ralph-prd/index.d.ts +0 -130
- package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
- package/dist/hooks/ralph-prd/index.js +0 -310
- package/dist/hooks/ralph-prd/index.js.map +0 -1
- package/dist/hooks/ralph-progress/index.d.ts +0 -102
- package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
- package/dist/hooks/ralph-progress/index.js +0 -408
- package/dist/hooks/ralph-progress/index.js.map +0 -1
- package/dist/hooks/ralph-verifier/index.d.ts +0 -72
- package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
- package/dist/hooks/ralph-verifier/index.js +0 -223
- package/dist/hooks/ralph-verifier/index.js.map +0 -1
- package/dist/hooks/session-recovery/constants.d.ts +0 -56
- package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/session-recovery/constants.js +0 -78
- package/dist/hooks/session-recovery/constants.js.map +0 -1
- package/dist/hooks/session-recovery/index.d.ts +0 -53
- package/dist/hooks/session-recovery/index.d.ts.map +0 -1
- package/dist/hooks/session-recovery/index.js +0 -321
- package/dist/hooks/session-recovery/index.js.map +0 -1
- package/dist/hooks/session-recovery/storage.d.ts +0 -76
- package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
- package/dist/hooks/session-recovery/storage.js +0 -383
- package/dist/hooks/session-recovery/storage.js.map +0 -1
- package/dist/hooks/session-recovery/types.d.ts +0 -145
- package/dist/hooks/session-recovery/types.d.ts.map +0 -1
- package/dist/hooks/session-recovery/types.js +0 -8
- package/dist/hooks/session-recovery/types.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
- package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
- package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
- package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
- package/dist/hooks/ultraqa-loop/index.js +0 -216
- package/dist/hooks/ultraqa-loop/index.js.map +0 -1
- package/dist/hooks/ultrawork-state/index.d.ts +0 -62
- package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
- package/dist/hooks/ultrawork-state/index.js +0 -208
- package/dist/hooks/ultrawork-state/index.js.map +0 -1
- package/dist/hud/sisyphus-state.d.ts +0 -31
- package/dist/hud/sisyphus-state.d.ts.map +0 -1
- package/dist/hud/sisyphus-state.js +0 -163
- package/dist/hud/sisyphus-state.js.map +0 -1
|
@@ -48,8 +48,8 @@ PROMPT_LOWER=$(echo "$PROMPT_NO_CODE" | tr '[:upper:]' '[:lower:]')
|
|
|
48
48
|
# Check for ultrawork keywords (highest priority)
|
|
49
49
|
if echo "$PROMPT_LOWER" | grep -qE '\b(ultrawork|ulw|uw)\b'; then
|
|
50
50
|
# Create persistent ultrawork state
|
|
51
|
-
mkdir -p "$DIRECTORY/.
|
|
52
|
-
mkdir -p "$HOME/.
|
|
51
|
+
mkdir -p "$DIRECTORY/.omc/state" 2>/dev/null
|
|
52
|
+
mkdir -p "$HOME/.omc/state" 2>/dev/null
|
|
53
53
|
|
|
54
54
|
# Escape prompt for JSON
|
|
55
55
|
PROMPT_ESCAPED=$(echo "$PROMPT" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | tr '\n' ' ')
|
|
@@ -63,8 +63,8 @@ if echo "$PROMPT_LOWER" | grep -qE '\b(ultrawork|ulw|uw)\b'; then
|
|
|
63
63
|
}"
|
|
64
64
|
|
|
65
65
|
# Write state to both local and global locations
|
|
66
|
-
echo "$STATE_JSON" > "$DIRECTORY/.omc/ultrawork-state.json" 2>/dev/null
|
|
67
|
-
echo "$STATE_JSON" > "$HOME/.
|
|
66
|
+
echo "$STATE_JSON" > "$DIRECTORY/.omc/state/ultrawork-state.json" 2>/dev/null
|
|
67
|
+
echo "$STATE_JSON" > "$HOME/.omc/state/ultrawork-state.json" 2>/dev/null
|
|
68
68
|
|
|
69
69
|
# Return ultrawork mode injection
|
|
70
70
|
cat << 'EOF'
|
package/hooks/persistent-mode.sh
CHANGED
|
@@ -21,22 +21,22 @@ fi
|
|
|
21
21
|
|
|
22
22
|
# Check for active ultrawork state
|
|
23
23
|
ULTRAWORK_STATE=""
|
|
24
|
-
if [ -f "$DIRECTORY/.omc/ultrawork-state.json" ]; then
|
|
25
|
-
ULTRAWORK_STATE=$(cat "$DIRECTORY/.omc/ultrawork-state.json" 2>/dev/null)
|
|
26
|
-
elif [ -f "$HOME/.
|
|
27
|
-
ULTRAWORK_STATE=$(cat "$HOME/.
|
|
24
|
+
if [ -f "$DIRECTORY/.omc/state/ultrawork-state.json" ]; then
|
|
25
|
+
ULTRAWORK_STATE=$(cat "$DIRECTORY/.omc/state/ultrawork-state.json" 2>/dev/null)
|
|
26
|
+
elif [ -f "$HOME/.omc/state/ultrawork-state.json" ]; then
|
|
27
|
+
ULTRAWORK_STATE=$(cat "$HOME/.omc/state/ultrawork-state.json" 2>/dev/null)
|
|
28
28
|
fi
|
|
29
29
|
|
|
30
30
|
# Check for active ralph loop
|
|
31
31
|
RALPH_STATE=""
|
|
32
|
-
if [ -f "$DIRECTORY/.omc/ralph-state.json" ]; then
|
|
33
|
-
RALPH_STATE=$(cat "$DIRECTORY/.omc/ralph-state.json" 2>/dev/null)
|
|
32
|
+
if [ -f "$DIRECTORY/.omc/state/ralph-state.json" ]; then
|
|
33
|
+
RALPH_STATE=$(cat "$DIRECTORY/.omc/state/ralph-state.json" 2>/dev/null)
|
|
34
34
|
fi
|
|
35
35
|
|
|
36
36
|
# Check for verification state (oracle verification)
|
|
37
37
|
VERIFICATION_STATE=""
|
|
38
|
-
if [ -f "$DIRECTORY/.omc/ralph-verification.json" ]; then
|
|
39
|
-
VERIFICATION_STATE=$(cat "$DIRECTORY/.omc/ralph-verification.json" 2>/dev/null)
|
|
38
|
+
if [ -f "$DIRECTORY/.omc/state/ralph-verification.json" ]; then
|
|
39
|
+
VERIFICATION_STATE=$(cat "$DIRECTORY/.omc/state/ralph-verification.json" 2>/dev/null)
|
|
40
40
|
fi
|
|
41
41
|
|
|
42
42
|
# Check for incomplete todos
|
|
@@ -106,7 +106,7 @@ EOF
|
|
|
106
106
|
if [ "$ITERATION" -lt "$MAX_ITER" ]; then
|
|
107
107
|
# Increment iteration
|
|
108
108
|
NEW_ITER=$((ITERATION + 1))
|
|
109
|
-
echo "$RALPH_STATE" | jq ".iteration = $NEW_ITER" > "$DIRECTORY/.omc/ralph-state.json" 2>/dev/null
|
|
109
|
+
echo "$RALPH_STATE" | jq ".iteration = $NEW_ITER" > "$DIRECTORY/.omc/state/ralph-state.json" 2>/dev/null
|
|
110
110
|
|
|
111
111
|
cat << EOF
|
|
112
112
|
{"continue": false, "reason": "<ralph-loop-continuation>\n\n[RALPH LOOP - ITERATION $NEW_ITER/$MAX_ITER]\n\nYour previous attempt did not output the completion promise. The work is NOT done yet.\n\nCRITICAL INSTRUCTIONS:\n1. Review your progress and the original task\n2. Check your todo list - are ALL items marked complete?\n3. Continue from where you left off\n4. When FULLY complete, output: <promise>$PROMISE</promise>\n5. Do NOT stop until the task is truly done\n\nOriginal task: $PROMPT\n\n</ralph-loop-continuation>\n\n---\n"}
|
|
@@ -149,7 +149,7 @@ if [ -n "$ULTRAWORK_STATE" ] && [ "$INCOMPLETE_COUNT" -gt 0 ]; then
|
|
|
149
149
|
|
|
150
150
|
# Update state file (best effort)
|
|
151
151
|
if command -v jq &> /dev/null; then
|
|
152
|
-
echo "$ULTRAWORK_STATE" | jq ".reinforcement_count = $NEW_COUNT | .last_checked_at = \"$(date -Iseconds)\"" > "$DIRECTORY/.omc/ultrawork-state.json" 2>/dev/null
|
|
152
|
+
echo "$ULTRAWORK_STATE" | jq ".reinforcement_count = $NEW_COUNT | .last_checked_at = \"$(date -Iseconds)\"" > "$DIRECTORY/.omc/state/ultrawork-state.json" 2>/dev/null
|
|
153
153
|
fi
|
|
154
154
|
|
|
155
155
|
cat << EOF
|
package/hooks/session-start.sh
CHANGED
|
@@ -18,11 +18,11 @@ fi
|
|
|
18
18
|
MESSAGES=""
|
|
19
19
|
|
|
20
20
|
# Check for active ultrawork state
|
|
21
|
-
if [ -f "$DIRECTORY/.omc/ultrawork-state.json" ] || [ -f "$HOME/.
|
|
22
|
-
if [ -f "$DIRECTORY/.omc/ultrawork-state.json" ]; then
|
|
23
|
-
ULTRAWORK_STATE=$(cat "$DIRECTORY/.omc/ultrawork-state.json" 2>/dev/null)
|
|
21
|
+
if [ -f "$DIRECTORY/.omc/state/ultrawork-state.json" ] || [ -f "$HOME/.omc/state/ultrawork-state.json" ]; then
|
|
22
|
+
if [ -f "$DIRECTORY/.omc/state/ultrawork-state.json" ]; then
|
|
23
|
+
ULTRAWORK_STATE=$(cat "$DIRECTORY/.omc/state/ultrawork-state.json" 2>/dev/null)
|
|
24
24
|
else
|
|
25
|
-
ULTRAWORK_STATE=$(cat "$HOME/.
|
|
25
|
+
ULTRAWORK_STATE=$(cat "$HOME/.omc/state/ultrawork-state.json" 2>/dev/null)
|
|
26
26
|
fi
|
|
27
27
|
|
|
28
28
|
IS_ACTIVE=$(echo "$ULTRAWORK_STATE" | jq -r '.active // false' 2>/dev/null)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-claude-sisyphus",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.3",
|
|
4
4
|
"description": "Multi-agent orchestration system for Claude Code - Inspired by oh-my-opencode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -53,10 +53,12 @@
|
|
|
53
53
|
"@ast-grep/napi": "^0.31.0",
|
|
54
54
|
"@tokscale/core": "^1.0.25",
|
|
55
55
|
"@types/better-sqlite3": "^7.6.13",
|
|
56
|
+
"ajv": "^8.17.1",
|
|
56
57
|
"better-sqlite3": "^12.6.2",
|
|
57
58
|
"chalk": "^5.3.0",
|
|
58
59
|
"commander": "^12.1.0",
|
|
59
60
|
"jsonc-parser": "^3.3.1",
|
|
61
|
+
"safe-regex": "^2.1.1",
|
|
60
62
|
"vscode-languageserver-protocol": "^3.17.5",
|
|
61
63
|
"zod": "^3.23.8"
|
|
62
64
|
},
|
|
@@ -137,15 +137,15 @@ function activateUltraworkState(directory, prompt) {
|
|
|
137
137
|
last_checked_at: new Date().toISOString()
|
|
138
138
|
};
|
|
139
139
|
|
|
140
|
-
// Write to local .
|
|
141
|
-
const localDir = join(directory, '.omc');
|
|
140
|
+
// Write to local .omc/state directory
|
|
141
|
+
const localDir = join(directory, '.omc', 'state');
|
|
142
142
|
if (!existsSync(localDir)) {
|
|
143
143
|
try { mkdirSync(localDir, { recursive: true }); } catch {}
|
|
144
144
|
}
|
|
145
145
|
try { writeFileSync(join(localDir, 'ultrawork-state.json'), JSON.stringify(state, null, 2)); } catch {}
|
|
146
146
|
|
|
147
|
-
// Write to global .
|
|
148
|
-
const globalDir = join(homedir(), '.
|
|
147
|
+
// Write to global .omc/state directory
|
|
148
|
+
const globalDir = join(homedir(), '.omc', 'state');
|
|
149
149
|
if (!existsSync(globalDir)) {
|
|
150
150
|
try { mkdirSync(globalDir, { recursive: true }); } catch {}
|
|
151
151
|
}
|
|
@@ -166,14 +166,14 @@ async function main() {
|
|
|
166
166
|
const todosDir = join(homedir(), '.claude', 'todos');
|
|
167
167
|
|
|
168
168
|
// Check for ultrawork state
|
|
169
|
-
let ultraworkState = readJsonFile(join(directory, '.omc', 'ultrawork-state.json'))
|
|
170
|
-
|| readJsonFile(join(homedir(), '.
|
|
169
|
+
let ultraworkState = readJsonFile(join(directory, '.omc', 'state', 'ultrawork-state.json'))
|
|
170
|
+
|| readJsonFile(join(homedir(), '.omc', 'state', 'ultrawork-state.json'));
|
|
171
171
|
|
|
172
172
|
// Check for ralph loop state
|
|
173
|
-
const ralphState = readJsonFile(join(directory, '.omc', 'ralph-state.json'));
|
|
173
|
+
const ralphState = readJsonFile(join(directory, '.omc', 'state', 'ralph-state.json'));
|
|
174
174
|
|
|
175
175
|
// Check for verification state
|
|
176
|
-
const verificationState = readJsonFile(join(directory, '.omc', 'ralph-verification.json'));
|
|
176
|
+
const verificationState = readJsonFile(join(directory, '.omc', 'state', 'ralph-verification.json'));
|
|
177
177
|
|
|
178
178
|
// Count incomplete todos
|
|
179
179
|
const incompleteCount = countIncompleteTodos(todosDir, directory);
|
|
@@ -256,7 +256,7 @@ ${verificationState.oracle_feedback}
|
|
|
256
256
|
if (iteration < maxIter) {
|
|
257
257
|
const newIter = iteration + 1;
|
|
258
258
|
ralphState.iteration = newIter;
|
|
259
|
-
writeJsonFile(join(directory, '.omc', 'ralph-state.json'), ralphState);
|
|
259
|
+
writeJsonFile(join(directory, '.omc', 'state', 'ralph-state.json'), ralphState);
|
|
260
260
|
|
|
261
261
|
// Build continuation message with PRD context if available
|
|
262
262
|
let prdContext = '';
|
|
@@ -349,7 +349,7 @@ ${ralphState.prompt ? `Original task: ${ralphState.prompt}` : ''}
|
|
|
349
349
|
ultraworkState.reinforcement_count = newCount;
|
|
350
350
|
ultraworkState.last_checked_at = new Date().toISOString();
|
|
351
351
|
|
|
352
|
-
writeJsonFile(join(directory, '.omc', 'ultrawork-state.json'), ultraworkState);
|
|
352
|
+
writeJsonFile(join(directory, '.omc', 'state', 'ultrawork-state.json'), ultraworkState);
|
|
353
353
|
|
|
354
354
|
console.log(JSON.stringify({
|
|
355
355
|
continue: false,
|
|
@@ -21,22 +21,22 @@ fi
|
|
|
21
21
|
|
|
22
22
|
# Check for active ultrawork state
|
|
23
23
|
ULTRAWORK_STATE=""
|
|
24
|
-
if [ -f "$DIRECTORY/.omc/ultrawork-state.json" ]; then
|
|
25
|
-
ULTRAWORK_STATE=$(cat "$DIRECTORY/.omc/ultrawork-state.json" 2>/dev/null)
|
|
26
|
-
elif [ -f "$HOME/.
|
|
27
|
-
ULTRAWORK_STATE=$(cat "$HOME/.
|
|
24
|
+
if [ -f "$DIRECTORY/.omc/state/ultrawork-state.json" ]; then
|
|
25
|
+
ULTRAWORK_STATE=$(cat "$DIRECTORY/.omc/state/ultrawork-state.json" 2>/dev/null)
|
|
26
|
+
elif [ -f "$HOME/.omc/state/ultrawork-state.json" ]; then
|
|
27
|
+
ULTRAWORK_STATE=$(cat "$HOME/.omc/state/ultrawork-state.json" 2>/dev/null)
|
|
28
28
|
fi
|
|
29
29
|
|
|
30
30
|
# Check for active ralph loop
|
|
31
31
|
RALPH_STATE=""
|
|
32
|
-
if [ -f "$DIRECTORY/.omc/ralph-state.json" ]; then
|
|
33
|
-
RALPH_STATE=$(cat "$DIRECTORY/.omc/ralph-state.json" 2>/dev/null)
|
|
32
|
+
if [ -f "$DIRECTORY/.omc/state/ralph-state.json" ]; then
|
|
33
|
+
RALPH_STATE=$(cat "$DIRECTORY/.omc/state/ralph-state.json" 2>/dev/null)
|
|
34
34
|
fi
|
|
35
35
|
|
|
36
36
|
# Check for verification state (oracle verification)
|
|
37
37
|
VERIFICATION_STATE=""
|
|
38
|
-
if [ -f "$DIRECTORY/.omc/ralph-verification.json" ]; then
|
|
39
|
-
VERIFICATION_STATE=$(cat "$DIRECTORY/.omc/ralph-verification.json" 2>/dev/null)
|
|
38
|
+
if [ -f "$DIRECTORY/.omc/state/ralph-verification.json" ]; then
|
|
39
|
+
VERIFICATION_STATE=$(cat "$DIRECTORY/.omc/state/ralph-verification.json" 2>/dev/null)
|
|
40
40
|
fi
|
|
41
41
|
|
|
42
42
|
# Check for incomplete todos
|
|
@@ -106,7 +106,7 @@ EOF
|
|
|
106
106
|
if [ "$ITERATION" -lt "$MAX_ITER" ]; then
|
|
107
107
|
# Increment iteration
|
|
108
108
|
NEW_ITER=$((ITERATION + 1))
|
|
109
|
-
echo "$RALPH_STATE" | jq ".iteration = $NEW_ITER" > "$DIRECTORY/.omc/ralph-state.json" 2>/dev/null
|
|
109
|
+
echo "$RALPH_STATE" | jq ".iteration = $NEW_ITER" > "$DIRECTORY/.omc/state/ralph-state.json" 2>/dev/null
|
|
110
110
|
|
|
111
111
|
# Check if ultrawork is linked (auto-activated with ralph)
|
|
112
112
|
LINKED_ULTRAWORK=$(echo "$RALPH_STATE" | jq -r '.linked_ultrawork // false' 2>/dev/null)
|
|
@@ -288,7 +288,7 @@ if [ -n "$ULTRAWORK_STATE" ] && [ "$INCOMPLETE_COUNT" -gt 0 ]; then
|
|
|
288
288
|
|
|
289
289
|
# Update state file (best effort)
|
|
290
290
|
if command -v jq &> /dev/null; then
|
|
291
|
-
echo "$ULTRAWORK_STATE" | jq ".reinforcement_count = $NEW_COUNT | .last_checked_at = \"$(date -Iseconds)\"" > "$DIRECTORY/.omc/ultrawork-state.json" 2>/dev/null
|
|
291
|
+
echo "$ULTRAWORK_STATE" | jq ".reinforcement_count = $NEW_COUNT | .last_checked_at = \"$(date -Iseconds)\"" > "$DIRECTORY/.omc/state/ultrawork-state.json" 2>/dev/null
|
|
292
292
|
fi
|
|
293
293
|
|
|
294
294
|
cat << EOF
|
|
@@ -48,7 +48,7 @@ function countIncompleteTodos(todosDir) {
|
|
|
48
48
|
|
|
49
49
|
// Check if HUD is properly installed
|
|
50
50
|
function checkHudInstallation() {
|
|
51
|
-
const hudScript = join(homedir(), '.claude', 'hud', '
|
|
51
|
+
const hudScript = join(homedir(), '.claude', 'hud', 'omc-hud.mjs');
|
|
52
52
|
const settingsFile = join(homedir(), '.claude', 'settings.json');
|
|
53
53
|
|
|
54
54
|
// Check if HUD script exists
|
|
@@ -92,8 +92,8 @@ async function main() {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
// Check for ultrawork state
|
|
95
|
-
const ultraworkState = readJsonFile(join(directory, '.omc', 'ultrawork-state.json'))
|
|
96
|
-
|| readJsonFile(join(homedir(), '.
|
|
95
|
+
const ultraworkState = readJsonFile(join(directory, '.omc', 'state', 'ultrawork-state.json'))
|
|
96
|
+
|| readJsonFile(join(homedir(), '.omc', 'state', 'ultrawork-state.json'));
|
|
97
97
|
|
|
98
98
|
if (ultraworkState?.active) {
|
|
99
99
|
messages.push(`<session-restore>
|
|
@@ -112,7 +112,7 @@ Continue working in ultrawork mode until all tasks are complete.
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
// Check for ralph loop state
|
|
115
|
-
const ralphState = readJsonFile(join(directory, '.omc', 'ralph-state.json'));
|
|
115
|
+
const ralphState = readJsonFile(join(directory, '.omc', 'state', 'ralph-state.json'));
|
|
116
116
|
if (ralphState?.active) {
|
|
117
117
|
messages.push(`<session-restore>
|
|
118
118
|
|
package/skills/hud/SKILL.md
CHANGED
|
@@ -81,6 +81,19 @@ Then, use the Write tool to create `~/.claude/hud/omc-hud.mjs` with this exact c
|
|
|
81
81
|
import { existsSync, readdirSync } from "node:fs";
|
|
82
82
|
import { homedir } from "node:os";
|
|
83
83
|
import { join } from "node:path";
|
|
84
|
+
import { pathToFileURL } from "node:url";
|
|
85
|
+
|
|
86
|
+
// Semantic version comparison: returns negative if a < b, positive if a > b, 0 if equal
|
|
87
|
+
function semverCompare(a, b) {
|
|
88
|
+
const pa = a.replace(/^v/, "").split(".").map(Number);
|
|
89
|
+
const pb = b.replace(/^v/, "").split(".").map(Number);
|
|
90
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
91
|
+
const na = pa[i] || 0;
|
|
92
|
+
const nb = pb[i] || 0;
|
|
93
|
+
if (na !== nb) return na - nb;
|
|
94
|
+
}
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
84
97
|
|
|
85
98
|
async function main() {
|
|
86
99
|
const home = homedir();
|
|
@@ -92,11 +105,11 @@ async function main() {
|
|
|
92
105
|
try {
|
|
93
106
|
const versions = readdirSync(pluginCacheBase);
|
|
94
107
|
if (versions.length > 0) {
|
|
95
|
-
const latestVersion = versions.sort().reverse()[0];
|
|
108
|
+
const latestVersion = versions.sort(semverCompare).reverse()[0];
|
|
96
109
|
pluginCacheDir = join(pluginCacheBase, latestVersion);
|
|
97
110
|
const pluginPath = join(pluginCacheDir, "dist/hud/index.js");
|
|
98
111
|
if (existsSync(pluginPath)) {
|
|
99
|
-
await import(pluginPath);
|
|
112
|
+
await import(pathToFileURL(pluginPath).href);
|
|
100
113
|
return;
|
|
101
114
|
}
|
|
102
115
|
}
|
|
@@ -114,7 +127,7 @@ async function main() {
|
|
|
114
127
|
for (const devPath of devPaths) {
|
|
115
128
|
if (existsSync(devPath)) {
|
|
116
129
|
try {
|
|
117
|
-
await import(devPath);
|
|
130
|
+
await import(pathToFileURL(devPath).href);
|
|
118
131
|
return;
|
|
119
132
|
} catch { /* continue */ }
|
|
120
133
|
}
|
|
@@ -138,12 +151,31 @@ chmod +x ~/.claude/hud/omc-hud.mjs
|
|
|
138
151
|
|
|
139
152
|
**Step 4:** Update settings.json to use the HUD:
|
|
140
153
|
|
|
141
|
-
Read `~/.claude/settings.json`, then update/add the `statusLine` field
|
|
154
|
+
Read `~/.claude/settings.json`, then update/add the `statusLine` field.
|
|
155
|
+
|
|
156
|
+
**IMPORTANT:** The command must use an absolute path, not `~`, because Windows does not expand `~` in shell commands.
|
|
157
|
+
|
|
158
|
+
First, determine the correct path:
|
|
159
|
+
```bash
|
|
160
|
+
node -e "const p=require('path').join(require('os').homedir(),'.claude','hud','omc-hud.mjs');console.log(JSON.stringify(p))"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Then set the `statusLine` field using the resolved path. On Unix it will look like:
|
|
164
|
+
```json
|
|
165
|
+
{
|
|
166
|
+
"statusLine": {
|
|
167
|
+
"type": "command",
|
|
168
|
+
"command": "node /home/username/.claude/hud/omc-hud.mjs"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
On Windows it will look like:
|
|
142
174
|
```json
|
|
143
175
|
{
|
|
144
176
|
"statusLine": {
|
|
145
177
|
"type": "command",
|
|
146
|
-
"command": "node
|
|
178
|
+
"command": "node C:\\Users\\username\\.claude\\hud\\omc-hud.mjs"
|
|
147
179
|
}
|
|
148
180
|
}
|
|
149
181
|
```
|
|
@@ -7,6 +7,104 @@ description: Setup and configure oh-my-claudecode (the ONLY command you need to
|
|
|
7
7
|
|
|
8
8
|
This is the **only command you need to learn**. After running this, everything else is automatic.
|
|
9
9
|
|
|
10
|
+
## Graceful Interrupt Handling
|
|
11
|
+
|
|
12
|
+
**IMPORTANT**: This setup process saves progress after each step. If interrupted (Ctrl+C or connection loss), the setup can resume from where it left off.
|
|
13
|
+
|
|
14
|
+
### State File Location
|
|
15
|
+
- `.omc/state/setup-state.json` - Tracks completed steps
|
|
16
|
+
|
|
17
|
+
### Resume Detection (Step 0)
|
|
18
|
+
|
|
19
|
+
Before starting any step, check for existing state:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Check for existing setup state
|
|
23
|
+
STATE_FILE=".omc/state/setup-state.json"
|
|
24
|
+
|
|
25
|
+
# Cross-platform ISO date to epoch conversion
|
|
26
|
+
iso_to_epoch() {
|
|
27
|
+
local iso_date="$1"
|
|
28
|
+
local epoch=""
|
|
29
|
+
# Try GNU date first (Linux)
|
|
30
|
+
epoch=$(date -d "$iso_date" +%s 2>/dev/null)
|
|
31
|
+
if [ $? -eq 0 ] && [ -n "$epoch" ]; then
|
|
32
|
+
echo "$epoch"
|
|
33
|
+
return 0
|
|
34
|
+
fi
|
|
35
|
+
# Try BSD/macOS date
|
|
36
|
+
local clean_date=$(echo "$iso_date" | sed 's/[+-][0-9][0-9]:[0-9][0-9]$//' | sed 's/Z$//' | sed 's/T/ /')
|
|
37
|
+
epoch=$(date -j -f "%Y-%m-%d %H:%M:%S" "$clean_date" +%s 2>/dev/null)
|
|
38
|
+
if [ $? -eq 0 ] && [ -n "$epoch" ]; then
|
|
39
|
+
echo "$epoch"
|
|
40
|
+
return 0
|
|
41
|
+
fi
|
|
42
|
+
echo "0"
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if [ -f "$STATE_FILE" ]; then
|
|
46
|
+
# Check if state is stale (older than 24 hours)
|
|
47
|
+
TIMESTAMP_RAW=$(jq -r '.timestamp // empty' "$STATE_FILE" 2>/dev/null)
|
|
48
|
+
if [ -n "$TIMESTAMP_RAW" ]; then
|
|
49
|
+
TIMESTAMP_EPOCH=$(iso_to_epoch "$TIMESTAMP_RAW")
|
|
50
|
+
NOW_EPOCH=$(date +%s)
|
|
51
|
+
STATE_AGE=$((NOW_EPOCH - TIMESTAMP_EPOCH))
|
|
52
|
+
else
|
|
53
|
+
STATE_AGE=999999 # Force fresh start if no timestamp
|
|
54
|
+
fi
|
|
55
|
+
if [ "$STATE_AGE" -gt 86400 ]; then
|
|
56
|
+
echo "Previous setup state is more than 24 hours old. Starting fresh."
|
|
57
|
+
rm -f "$STATE_FILE"
|
|
58
|
+
else
|
|
59
|
+
LAST_STEP=$(jq -r ".lastCompletedStep // 0" "$STATE_FILE" 2>/dev/null || echo "0")
|
|
60
|
+
TIMESTAMP=$(jq -r .timestamp "$STATE_FILE" 2>/dev/null || echo "unknown")
|
|
61
|
+
echo "Found previous setup session (Step $LAST_STEP completed at $TIMESTAMP)"
|
|
62
|
+
fi
|
|
63
|
+
fi
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
If state exists, use AskUserQuestion to prompt:
|
|
67
|
+
|
|
68
|
+
**Question:** "Found a previous setup session. Would you like to resume or start fresh?"
|
|
69
|
+
|
|
70
|
+
**Options:**
|
|
71
|
+
1. **Resume from step $LAST_STEP** - Continue where you left off
|
|
72
|
+
2. **Start fresh** - Begin from the beginning (clears saved state)
|
|
73
|
+
|
|
74
|
+
If user chooses "Start fresh":
|
|
75
|
+
```bash
|
|
76
|
+
rm -f ".omc/state/setup-state.json"
|
|
77
|
+
echo "Previous state cleared. Starting fresh setup."
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Save Progress Helper
|
|
81
|
+
|
|
82
|
+
After completing each major step, save progress:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Save setup progress (call after each step)
|
|
86
|
+
# Usage: save_setup_progress STEP_NUMBER
|
|
87
|
+
save_setup_progress() {
|
|
88
|
+
mkdir -p .omc/state
|
|
89
|
+
cat > ".omc/state/setup-state.json" << EOF
|
|
90
|
+
{
|
|
91
|
+
"lastCompletedStep": $1,
|
|
92
|
+
"timestamp": "$(date -Iseconds)",
|
|
93
|
+
"configType": "${CONFIG_TYPE:-unknown}"
|
|
94
|
+
}
|
|
95
|
+
EOF
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Clear State on Completion
|
|
100
|
+
|
|
101
|
+
After successful setup completion (Step 7/8), remove the state file:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
rm -f ".omc/state/setup-state.json"
|
|
105
|
+
echo "Setup completed successfully. State cleared."
|
|
106
|
+
```
|
|
107
|
+
|
|
10
108
|
## Usage Modes
|
|
11
109
|
|
|
12
110
|
This skill handles three scenarios:
|
|
@@ -24,6 +122,8 @@ Check for flags in the user's invocation:
|
|
|
24
122
|
|
|
25
123
|
## Step 1: Initial Setup Wizard (Default Behavior)
|
|
26
124
|
|
|
125
|
+
**Note**: If resuming and lastCompletedStep >= 1, skip to the appropriate step based on configType.
|
|
126
|
+
|
|
27
127
|
Use the AskUserQuestion tool to prompt the user:
|
|
28
128
|
|
|
29
129
|
**Question:** "Where should I configure oh-my-claudecode?"
|
|
@@ -90,7 +190,19 @@ grep -q "oh-my-claudecode" ~/.claude/settings.json && echo "Plugin verified" ||
|
|
|
90
190
|
|
|
91
191
|
### Confirm Local Configuration Success
|
|
92
192
|
|
|
93
|
-
After completing local configuration, report:
|
|
193
|
+
After completing local configuration, save progress and report:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# Save progress - Step 2 complete (Local config)
|
|
197
|
+
mkdir -p .omc/state
|
|
198
|
+
cat > ".omc/state/setup-state.json" << EOF
|
|
199
|
+
{
|
|
200
|
+
"lastCompletedStep": 2,
|
|
201
|
+
"timestamp": "$(date -Iseconds)",
|
|
202
|
+
"configType": "local"
|
|
203
|
+
}
|
|
204
|
+
EOF
|
|
205
|
+
```
|
|
94
206
|
|
|
95
207
|
**OMC Project Configuration Complete**
|
|
96
208
|
- CLAUDE.md: Updated with latest configuration from GitHub at ./.claude/CLAUDE.md
|
|
@@ -102,7 +214,11 @@ After completing local configuration, report:
|
|
|
102
214
|
|
|
103
215
|
**Note**: This configuration is project-specific and won't affect other projects or global settings.
|
|
104
216
|
|
|
105
|
-
If `--local` flag was used, **STOP HERE
|
|
217
|
+
If `--local` flag was used, clear state and **STOP HERE**:
|
|
218
|
+
```bash
|
|
219
|
+
rm -f ".omc/state/setup-state.json"
|
|
220
|
+
```
|
|
221
|
+
Do not continue to HUD setup or other steps.
|
|
106
222
|
|
|
107
223
|
## Step 2B: Global Configuration (--global flag or user chose GLOBAL)
|
|
108
224
|
|
|
@@ -164,7 +280,19 @@ grep -q "oh-my-claudecode" ~/.claude/settings.json && echo "Plugin verified" ||
|
|
|
164
280
|
|
|
165
281
|
### Confirm Global Configuration Success
|
|
166
282
|
|
|
167
|
-
After completing global configuration, report:
|
|
283
|
+
After completing global configuration, save progress and report:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
# Save progress - Step 2 complete (Global config)
|
|
287
|
+
mkdir -p .omc/state
|
|
288
|
+
cat > ".omc/state/setup-state.json" << EOF
|
|
289
|
+
{
|
|
290
|
+
"lastCompletedStep": 2,
|
|
291
|
+
"timestamp": "$(date -Iseconds)",
|
|
292
|
+
"configType": "global"
|
|
293
|
+
}
|
|
294
|
+
EOF
|
|
295
|
+
```
|
|
168
296
|
|
|
169
297
|
**OMC Global Configuration Complete**
|
|
170
298
|
- CLAUDE.md: Updated with latest configuration from GitHub at ~/.claude/CLAUDE.md
|
|
@@ -176,10 +304,16 @@ After completing global configuration, report:
|
|
|
176
304
|
|
|
177
305
|
**Note**: Hooks are now managed by the plugin system automatically. No manual hook installation required.
|
|
178
306
|
|
|
179
|
-
If `--global` flag was used, **STOP HERE
|
|
307
|
+
If `--global` flag was used, clear state and **STOP HERE**:
|
|
308
|
+
```bash
|
|
309
|
+
rm -f ".omc/state/setup-state.json"
|
|
310
|
+
```
|
|
311
|
+
Do not continue to HUD setup or other steps.
|
|
180
312
|
|
|
181
313
|
## Step 3: Setup HUD Statusline
|
|
182
314
|
|
|
315
|
+
**Note**: If resuming and lastCompletedStep >= 3, skip to Step 3.5.
|
|
316
|
+
|
|
183
317
|
The HUD shows real-time status in Claude Code's status bar. **Invoke the hud skill** to set up and configure:
|
|
184
318
|
|
|
185
319
|
Use the Skill tool to invoke: `hud` with args: `setup`
|
|
@@ -189,6 +323,20 @@ This will:
|
|
|
189
323
|
2. Configure `statusLine` in `~/.claude/settings.json`
|
|
190
324
|
3. Report status and prompt to restart if needed
|
|
191
325
|
|
|
326
|
+
After HUD setup completes, save progress:
|
|
327
|
+
```bash
|
|
328
|
+
# Save progress - Step 3 complete (HUD setup)
|
|
329
|
+
mkdir -p .omc/state
|
|
330
|
+
CONFIG_TYPE=$(cat ".omc/state/setup-state.json" 2>/dev/null | grep -oE '"configType":\s*"[^"]+"' | cut -d'"' -f4 || echo "unknown")
|
|
331
|
+
cat > ".omc/state/setup-state.json" << EOF
|
|
332
|
+
{
|
|
333
|
+
"lastCompletedStep": 3,
|
|
334
|
+
"timestamp": "$(date -Iseconds)",
|
|
335
|
+
"configType": "$CONFIG_TYPE"
|
|
336
|
+
}
|
|
337
|
+
EOF
|
|
338
|
+
```
|
|
339
|
+
|
|
192
340
|
## Step 3.5: Clear Stale Plugin Cache
|
|
193
341
|
|
|
194
342
|
Clear old cached plugin versions to avoid conflicts:
|
|
@@ -471,6 +619,16 @@ echo " https://github.com/Yeachan-Heo/oh-my-claudecode"
|
|
|
471
619
|
echo ""
|
|
472
620
|
```
|
|
473
621
|
|
|
622
|
+
### Clear Setup State on Completion
|
|
623
|
+
|
|
624
|
+
After Step 8 completes (regardless of star choice), clear the setup state:
|
|
625
|
+
|
|
626
|
+
```bash
|
|
627
|
+
# Setup complete - clear state file
|
|
628
|
+
rm -f ".omc/state/setup-state.json"
|
|
629
|
+
echo "Setup completed successfully!"
|
|
630
|
+
```
|
|
631
|
+
|
|
474
632
|
## Keeping Up to Date
|
|
475
633
|
|
|
476
634
|
After installing oh-my-claudecode updates (via npm or plugin update), run:
|