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
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ralph-Progress Promotion
|
|
3
|
-
*
|
|
4
|
-
* Promotes learnings from ralph-progress to full skills.
|
|
5
|
-
*/
|
|
6
|
-
import { readProgress } from '../ralph-progress/index.js';
|
|
7
|
-
import { writeSkill } from './writer.js';
|
|
8
|
-
/**
|
|
9
|
-
* Extract trigger keywords from learning text.
|
|
10
|
-
*/
|
|
11
|
-
function extractTriggers(text) {
|
|
12
|
-
const technicalKeywords = [
|
|
13
|
-
'react', 'typescript', 'javascript', 'python', 'api', 'database',
|
|
14
|
-
'testing', 'debugging', 'performance', 'async', 'state', 'component',
|
|
15
|
-
'error', 'validation', 'authentication', 'cache', 'query', 'mutation',
|
|
16
|
-
];
|
|
17
|
-
const textLower = text.toLowerCase();
|
|
18
|
-
return technicalKeywords.filter(kw => textLower.includes(kw));
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get promotion candidates from ralph-progress learnings.
|
|
22
|
-
*/
|
|
23
|
-
export function getPromotionCandidates(directory, limit = 10) {
|
|
24
|
-
const progress = readProgress(directory);
|
|
25
|
-
if (!progress) {
|
|
26
|
-
return [];
|
|
27
|
-
}
|
|
28
|
-
const candidates = [];
|
|
29
|
-
// Get recent entries with learnings
|
|
30
|
-
const recentEntries = progress.entries.slice(-limit);
|
|
31
|
-
for (const entry of recentEntries) {
|
|
32
|
-
for (const learning of entry.learnings) {
|
|
33
|
-
// Skip very short learnings
|
|
34
|
-
if (learning.length < 20)
|
|
35
|
-
continue;
|
|
36
|
-
candidates.push({
|
|
37
|
-
learning,
|
|
38
|
-
storyId: entry.storyId,
|
|
39
|
-
timestamp: entry.timestamp,
|
|
40
|
-
suggestedTriggers: extractTriggers(learning),
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// Sort by number of triggers (more specific = better candidate)
|
|
45
|
-
return candidates.sort((a, b) => b.suggestedTriggers.length - a.suggestedTriggers.length);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Promote a learning to a full skill.
|
|
49
|
-
*/
|
|
50
|
-
export function promoteLearning(candidate, skillName, additionalTriggers, targetScope, projectRoot) {
|
|
51
|
-
const request = {
|
|
52
|
-
problem: `Learning from ${candidate.storyId}: ${candidate.learning.slice(0, 100)}...`,
|
|
53
|
-
solution: candidate.learning,
|
|
54
|
-
triggers: [...new Set([...candidate.suggestedTriggers, ...additionalTriggers])],
|
|
55
|
-
targetScope,
|
|
56
|
-
};
|
|
57
|
-
return writeSkill(request, projectRoot, skillName);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* List learnings that could be promoted.
|
|
61
|
-
*/
|
|
62
|
-
export function listPromotableLearnings(directory) {
|
|
63
|
-
const candidates = getPromotionCandidates(directory);
|
|
64
|
-
if (candidates.length === 0) {
|
|
65
|
-
return 'No promotion candidates found in ralph-progress learnings.';
|
|
66
|
-
}
|
|
67
|
-
const lines = [
|
|
68
|
-
'# Promotion Candidates',
|
|
69
|
-
'',
|
|
70
|
-
'The following learnings from ralph-progress could be promoted to skills:',
|
|
71
|
-
'',
|
|
72
|
-
];
|
|
73
|
-
candidates.forEach((candidate, index) => {
|
|
74
|
-
lines.push(`## ${index + 1}. From ${candidate.storyId} (${candidate.timestamp})`);
|
|
75
|
-
lines.push('');
|
|
76
|
-
lines.push(candidate.learning);
|
|
77
|
-
lines.push('');
|
|
78
|
-
if (candidate.suggestedTriggers.length > 0) {
|
|
79
|
-
lines.push(`**Suggested triggers:** ${candidate.suggestedTriggers.join(', ')}`);
|
|
80
|
-
}
|
|
81
|
-
lines.push('');
|
|
82
|
-
lines.push('---');
|
|
83
|
-
lines.push('');
|
|
84
|
-
});
|
|
85
|
-
return lines.join('\n');
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=promotion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promotion.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/promotion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Learned Skills Types
|
|
3
|
-
*
|
|
4
|
-
* Type definitions for skill files and metadata.
|
|
5
|
-
* Follows patterns from rules-injector/types.ts
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Skill metadata from YAML frontmatter.
|
|
9
|
-
*/
|
|
10
|
-
export interface SkillMetadata {
|
|
11
|
-
/** Unique identifier for the skill */
|
|
12
|
-
id: string;
|
|
13
|
-
/** Human-readable name */
|
|
14
|
-
name: string;
|
|
15
|
-
/** Description of what this skill does */
|
|
16
|
-
description: string;
|
|
17
|
-
/** Keywords that trigger skill injection */
|
|
18
|
-
triggers: string[];
|
|
19
|
-
/** When the skill was created */
|
|
20
|
-
createdAt: string;
|
|
21
|
-
/** Source: 'extracted' | 'promoted' | 'manual' */
|
|
22
|
-
source: 'extracted' | 'promoted' | 'manual';
|
|
23
|
-
/** Original session ID if extracted */
|
|
24
|
-
sessionId?: string;
|
|
25
|
-
/** Quality score (0-100) */
|
|
26
|
-
quality?: number;
|
|
27
|
-
/** Number of times successfully applied */
|
|
28
|
-
usageCount?: number;
|
|
29
|
-
/** Tags for categorization */
|
|
30
|
-
tags?: string[];
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Parsed skill file with content.
|
|
34
|
-
*/
|
|
35
|
-
export interface LearnedSkill {
|
|
36
|
-
/** Absolute path to skill file */
|
|
37
|
-
path: string;
|
|
38
|
-
/** Path relative to skills directory */
|
|
39
|
-
relativePath: string;
|
|
40
|
-
/** Whether from user (~/.claude) or project (.sisyphus) */
|
|
41
|
-
scope: 'user' | 'project';
|
|
42
|
-
/** Parsed frontmatter metadata */
|
|
43
|
-
metadata: SkillMetadata;
|
|
44
|
-
/** Skill content (the actual instructions) */
|
|
45
|
-
content: string;
|
|
46
|
-
/** SHA-256 hash for deduplication */
|
|
47
|
-
contentHash: string;
|
|
48
|
-
/** Priority: project > user */
|
|
49
|
-
priority: number;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Skill file candidate during discovery.
|
|
53
|
-
*/
|
|
54
|
-
export interface SkillFileCandidate {
|
|
55
|
-
/** Path to the skill file */
|
|
56
|
-
path: string;
|
|
57
|
-
/** Real path after symlink resolution */
|
|
58
|
-
realPath: string;
|
|
59
|
-
/** Scope: user or project */
|
|
60
|
-
scope: 'user' | 'project';
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Quality gate validation result.
|
|
64
|
-
*/
|
|
65
|
-
export interface QualityValidation {
|
|
66
|
-
/** Whether skill passes quality gates */
|
|
67
|
-
valid: boolean;
|
|
68
|
-
/** Missing required fields */
|
|
69
|
-
missingFields: string[];
|
|
70
|
-
/** Warnings (non-blocking) */
|
|
71
|
-
warnings: string[];
|
|
72
|
-
/** Quality score (0-100) */
|
|
73
|
-
score: number;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Skill extraction request.
|
|
77
|
-
*/
|
|
78
|
-
export interface SkillExtractionRequest {
|
|
79
|
-
/** The problem being solved */
|
|
80
|
-
problem: string;
|
|
81
|
-
/** The solution/approach */
|
|
82
|
-
solution: string;
|
|
83
|
-
/** Trigger keywords */
|
|
84
|
-
triggers: string[];
|
|
85
|
-
/** Optional tags */
|
|
86
|
-
tags?: string[];
|
|
87
|
-
/** Target scope: user or project */
|
|
88
|
-
targetScope: 'user' | 'project';
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Session storage for tracking injected skills.
|
|
92
|
-
*/
|
|
93
|
-
export interface InjectedSkillsData {
|
|
94
|
-
/** Session ID */
|
|
95
|
-
sessionId: string;
|
|
96
|
-
/** Content hashes of already injected skills */
|
|
97
|
-
injectedHashes: string[];
|
|
98
|
-
/** Timestamp of last update */
|
|
99
|
-
updatedAt: number;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Hook context passed to skill processing.
|
|
103
|
-
*/
|
|
104
|
-
export interface HookContext {
|
|
105
|
-
sessionId: string;
|
|
106
|
-
directory: string;
|
|
107
|
-
prompt?: string;
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/learned-skills/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oCAAoC;IACpC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Quality Validator
|
|
3
|
-
*
|
|
4
|
-
* Validates skill extraction requests against quality gates.
|
|
5
|
-
*/
|
|
6
|
-
import type { SkillExtractionRequest, QualityValidation, SkillMetadata } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Validate a skill extraction request.
|
|
9
|
-
*/
|
|
10
|
-
export declare function validateExtractionRequest(request: SkillExtractionRequest): QualityValidation;
|
|
11
|
-
/**
|
|
12
|
-
* Validate existing skill metadata.
|
|
13
|
-
*/
|
|
14
|
-
export declare function validateSkillMetadata(metadata: Partial<SkillMetadata>): QualityValidation;
|
|
15
|
-
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/hooks/learned-skills/validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3F;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,sBAAsB,GAAG,iBAAiB,CAqD5F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAgCzF"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Quality Validator
|
|
3
|
-
*
|
|
4
|
-
* Validates skill extraction requests against quality gates.
|
|
5
|
-
*/
|
|
6
|
-
import { REQUIRED_METADATA_FIELDS, MIN_QUALITY_SCORE, MAX_SKILL_CONTENT_LENGTH } from './constants.js';
|
|
7
|
-
/**
|
|
8
|
-
* Validate a skill extraction request.
|
|
9
|
-
*/
|
|
10
|
-
export function validateExtractionRequest(request) {
|
|
11
|
-
const missingFields = [];
|
|
12
|
-
const warnings = [];
|
|
13
|
-
let score = 100;
|
|
14
|
-
// Check required fields
|
|
15
|
-
if (!request.problem || request.problem.trim().length < 10) {
|
|
16
|
-
missingFields.push('problem (minimum 10 characters)');
|
|
17
|
-
score -= 30;
|
|
18
|
-
}
|
|
19
|
-
if (!request.solution || request.solution.trim().length < 20) {
|
|
20
|
-
missingFields.push('solution (minimum 20 characters)');
|
|
21
|
-
score -= 30;
|
|
22
|
-
}
|
|
23
|
-
if (!request.triggers || request.triggers.length === 0) {
|
|
24
|
-
missingFields.push('triggers (at least one required)');
|
|
25
|
-
score -= 20;
|
|
26
|
-
}
|
|
27
|
-
// Check content length
|
|
28
|
-
const totalLength = (request.problem?.length || 0) + (request.solution?.length || 0);
|
|
29
|
-
if (totalLength > MAX_SKILL_CONTENT_LENGTH) {
|
|
30
|
-
warnings.push(`Content exceeds ${MAX_SKILL_CONTENT_LENGTH} chars (${totalLength}). Consider condensing.`);
|
|
31
|
-
score -= 10;
|
|
32
|
-
}
|
|
33
|
-
// Check trigger quality
|
|
34
|
-
if (request.triggers) {
|
|
35
|
-
const shortTriggers = request.triggers.filter(t => t.length < 3);
|
|
36
|
-
if (shortTriggers.length > 0) {
|
|
37
|
-
warnings.push(`Short triggers may cause false matches: ${shortTriggers.join(', ')}`);
|
|
38
|
-
score -= 5;
|
|
39
|
-
}
|
|
40
|
-
const genericTriggers = ['the', 'a', 'an', 'this', 'that', 'it', 'is', 'are'];
|
|
41
|
-
const foundGeneric = request.triggers.filter(t => genericTriggers.includes(t.toLowerCase()));
|
|
42
|
-
if (foundGeneric.length > 0) {
|
|
43
|
-
warnings.push(`Generic triggers should be avoided: ${foundGeneric.join(', ')}`);
|
|
44
|
-
score -= 10;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// Ensure score doesn't go negative
|
|
48
|
-
score = Math.max(0, score);
|
|
49
|
-
return {
|
|
50
|
-
valid: missingFields.length === 0 && score >= MIN_QUALITY_SCORE,
|
|
51
|
-
missingFields,
|
|
52
|
-
warnings,
|
|
53
|
-
score,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Validate existing skill metadata.
|
|
58
|
-
*/
|
|
59
|
-
export function validateSkillMetadata(metadata) {
|
|
60
|
-
const missingFields = [];
|
|
61
|
-
const warnings = [];
|
|
62
|
-
let score = 100;
|
|
63
|
-
for (const field of REQUIRED_METADATA_FIELDS) {
|
|
64
|
-
if (!metadata[field]) {
|
|
65
|
-
missingFields.push(field);
|
|
66
|
-
score -= 15;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// Check triggers array
|
|
70
|
-
if (metadata.triggers && metadata.triggers.length === 0) {
|
|
71
|
-
missingFields.push('triggers (empty array)');
|
|
72
|
-
score -= 20;
|
|
73
|
-
}
|
|
74
|
-
// Check source value
|
|
75
|
-
if (metadata.source && !['extracted', 'promoted', 'manual'].includes(metadata.source)) {
|
|
76
|
-
warnings.push(`Invalid source value: ${metadata.source}`);
|
|
77
|
-
score -= 10;
|
|
78
|
-
}
|
|
79
|
-
score = Math.max(0, score);
|
|
80
|
-
return {
|
|
81
|
-
valid: missingFields.length === 0 && score >= MIN_QUALITY_SCORE,
|
|
82
|
-
missingFields,
|
|
83
|
-
warnings,
|
|
84
|
-
score,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Writer
|
|
3
|
-
*
|
|
4
|
-
* Writes skill files to disk with proper formatting.
|
|
5
|
-
*/
|
|
6
|
-
import type { SkillExtractionRequest, QualityValidation } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Result of skill writing operation.
|
|
9
|
-
*/
|
|
10
|
-
export interface WriteSkillResult {
|
|
11
|
-
success: boolean;
|
|
12
|
-
path?: string;
|
|
13
|
-
error?: string;
|
|
14
|
-
validation: QualityValidation;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Write a new skill from extraction request.
|
|
18
|
-
*/
|
|
19
|
-
export declare function writeSkill(request: SkillExtractionRequest, projectRoot: string | null, skillName: string): WriteSkillResult;
|
|
20
|
-
/**
|
|
21
|
-
* Check if a skill with similar triggers already exists.
|
|
22
|
-
*/
|
|
23
|
-
export declare function checkDuplicateTriggers(triggers: string[], projectRoot: string | null): {
|
|
24
|
-
isDuplicate: boolean;
|
|
25
|
-
existingSkillId?: string;
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/hooks/learned-skills/writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAiB,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAsB3F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,EAAE,MAAM,GAChB,gBAAgB,CA8ElB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAoBpD"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Writer
|
|
3
|
-
*
|
|
4
|
-
* Writes skill files to disk with proper formatting.
|
|
5
|
-
*/
|
|
6
|
-
import { writeFileSync, existsSync } from 'fs';
|
|
7
|
-
import { join } from 'path';
|
|
8
|
-
import { ensureSkillsDir, getSkillsDir } from './finder.js';
|
|
9
|
-
import { generateSkillFrontmatter } from './parser.js';
|
|
10
|
-
import { validateExtractionRequest } from './validator.js';
|
|
11
|
-
import { DEBUG_ENABLED } from './constants.js';
|
|
12
|
-
/**
|
|
13
|
-
* Generate a unique skill ID.
|
|
14
|
-
*/
|
|
15
|
-
function generateSkillId() {
|
|
16
|
-
const timestamp = Date.now().toString(36);
|
|
17
|
-
const random = Math.random().toString(36).slice(2, 6);
|
|
18
|
-
return `skill-${timestamp}-${random}`;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Sanitize a string for use as filename.
|
|
22
|
-
*/
|
|
23
|
-
function sanitizeFilename(name) {
|
|
24
|
-
return name
|
|
25
|
-
.toLowerCase()
|
|
26
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
27
|
-
.replace(/^-+|-+$/g, '')
|
|
28
|
-
.slice(0, 50);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Write a new skill from extraction request.
|
|
32
|
-
*/
|
|
33
|
-
export function writeSkill(request, projectRoot, skillName) {
|
|
34
|
-
// Validate first
|
|
35
|
-
const validation = validateExtractionRequest(request);
|
|
36
|
-
if (!validation.valid) {
|
|
37
|
-
return {
|
|
38
|
-
success: false,
|
|
39
|
-
error: `Quality validation failed: ${validation.missingFields.join(', ')}`,
|
|
40
|
-
validation,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
// Ensure directory exists
|
|
44
|
-
if (!ensureSkillsDir(request.targetScope, projectRoot || undefined)) {
|
|
45
|
-
return {
|
|
46
|
-
success: false,
|
|
47
|
-
error: `Failed to create skills directory for scope: ${request.targetScope}`,
|
|
48
|
-
validation,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
// Generate metadata
|
|
52
|
-
const metadata = {
|
|
53
|
-
id: generateSkillId(),
|
|
54
|
-
name: skillName,
|
|
55
|
-
description: request.problem.slice(0, 200),
|
|
56
|
-
source: 'extracted',
|
|
57
|
-
createdAt: new Date().toISOString(),
|
|
58
|
-
triggers: request.triggers,
|
|
59
|
-
tags: request.tags,
|
|
60
|
-
quality: validation.score,
|
|
61
|
-
usageCount: 0,
|
|
62
|
-
};
|
|
63
|
-
// Generate content
|
|
64
|
-
const frontmatter = generateSkillFrontmatter(metadata);
|
|
65
|
-
const content = `${frontmatter}
|
|
66
|
-
|
|
67
|
-
# Problem
|
|
68
|
-
|
|
69
|
-
${request.problem}
|
|
70
|
-
|
|
71
|
-
# Solution
|
|
72
|
-
|
|
73
|
-
${request.solution}
|
|
74
|
-
`;
|
|
75
|
-
// Write to file
|
|
76
|
-
const filename = `${sanitizeFilename(skillName)}.md`;
|
|
77
|
-
const skillsDir = getSkillsDir(request.targetScope, projectRoot || undefined);
|
|
78
|
-
const filePath = join(skillsDir, filename);
|
|
79
|
-
// Check for duplicates
|
|
80
|
-
if (existsSync(filePath)) {
|
|
81
|
-
return {
|
|
82
|
-
success: false,
|
|
83
|
-
error: `Skill file already exists: ${filename}`,
|
|
84
|
-
validation,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
try {
|
|
88
|
-
writeFileSync(filePath, content);
|
|
89
|
-
return {
|
|
90
|
-
success: true,
|
|
91
|
-
path: filePath,
|
|
92
|
-
validation,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
catch (e) {
|
|
96
|
-
if (DEBUG_ENABLED) {
|
|
97
|
-
console.error('[learned-skills] Error writing skill file:', e);
|
|
98
|
-
}
|
|
99
|
-
return {
|
|
100
|
-
success: false,
|
|
101
|
-
error: `Failed to write skill file: ${e}`,
|
|
102
|
-
validation,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Check if a skill with similar triggers already exists.
|
|
108
|
-
*/
|
|
109
|
-
export function checkDuplicateTriggers(triggers, projectRoot) {
|
|
110
|
-
// Import dynamically to avoid circular dependency
|
|
111
|
-
const { loadAllSkills } = require('./loader.js');
|
|
112
|
-
const skills = loadAllSkills(projectRoot);
|
|
113
|
-
const normalizedTriggers = new Set(triggers.map(t => t.toLowerCase()));
|
|
114
|
-
for (const skill of skills) {
|
|
115
|
-
const skillTriggers = skill.metadata.triggers.map((t) => t.toLowerCase());
|
|
116
|
-
const overlap = skillTriggers.filter((t) => normalizedTriggers.has(t));
|
|
117
|
-
if (overlap.length >= triggers.length * 0.5) {
|
|
118
|
-
return {
|
|
119
|
-
isDuplicate: true,
|
|
120
|
-
existingSkillId: skill.metadata.id,
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return { isDuplicate: false };
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=writer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mnemosyne Configuration
|
|
3
|
-
*
|
|
4
|
-
* Handles configuration loading and validation.
|
|
5
|
-
*/
|
|
6
|
-
export interface MnemosyneConfig {
|
|
7
|
-
/** Feature enabled/disabled */
|
|
8
|
-
enabled: boolean;
|
|
9
|
-
/** Detection configuration */
|
|
10
|
-
detection: {
|
|
11
|
-
/** Enable auto-detection */
|
|
12
|
-
enabled: boolean;
|
|
13
|
-
/** Confidence threshold for prompting (0-100) */
|
|
14
|
-
promptThreshold: number;
|
|
15
|
-
/** Cooldown between prompts (messages) */
|
|
16
|
-
promptCooldown: number;
|
|
17
|
-
};
|
|
18
|
-
/** Quality gate configuration */
|
|
19
|
-
quality: {
|
|
20
|
-
/** Minimum score to accept (0-100) */
|
|
21
|
-
minScore: number;
|
|
22
|
-
/** Minimum problem length */
|
|
23
|
-
minProblemLength: number;
|
|
24
|
-
/** Minimum solution length */
|
|
25
|
-
minSolutionLength: number;
|
|
26
|
-
};
|
|
27
|
-
/** Storage configuration */
|
|
28
|
-
storage: {
|
|
29
|
-
/** Maximum skills per scope */
|
|
30
|
-
maxSkillsPerScope: number;
|
|
31
|
-
/** Auto-prune old skills */
|
|
32
|
-
autoPrune: boolean;
|
|
33
|
-
/** Days before auto-prune (if enabled) */
|
|
34
|
-
pruneDays: number;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Load configuration from disk.
|
|
39
|
-
*/
|
|
40
|
-
export declare function loadConfig(): MnemosyneConfig;
|
|
41
|
-
/**
|
|
42
|
-
* Save configuration to disk.
|
|
43
|
-
*/
|
|
44
|
-
export declare function saveConfig(config: Partial<MnemosyneConfig>): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Get a specific config value.
|
|
47
|
-
*/
|
|
48
|
-
export declare function getConfigValue<K extends keyof MnemosyneConfig>(key: K): MnemosyneConfig[K];
|
|
49
|
-
/**
|
|
50
|
-
* Update a specific config value.
|
|
51
|
-
*/
|
|
52
|
-
export declare function setConfigValue<K extends keyof MnemosyneConfig>(key: K, value: MnemosyneConfig[K]): boolean;
|
|
53
|
-
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/hooks/mnemosyne/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,SAAS,EAAE;QACT,4BAA4B;QAC5B,OAAO,EAAE,OAAO,CAAC;QACjB,iDAAiD;QACjD,eAAe,EAAE,MAAM,CAAC;QACxB,0CAA0C;QAC1C,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,iCAAiC;IACjC,OAAO,EAAE;QACP,sCAAsC;QACtC,QAAQ,EAAE,MAAM,CAAC;QACjB,6BAA6B;QAC7B,gBAAgB,EAAE,MAAM,CAAC;QACzB,8BAA8B;QAC9B,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,4BAA4B;IAC5B,OAAO,EAAE;QACP,+BAA+B;QAC/B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,4BAA4B;QAC5B,SAAS,EAAE,OAAO,CAAC;QACnB,0CAA0C;QAC1C,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAuBD;;GAEG;AACH,wBAAgB,UAAU,IAAI,eAAe,CAe5C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAgBpE;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,EAC5D,GAAG,EAAE,CAAC,GACL,eAAe,CAAC,CAAC,CAAC,CAGpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,EAC5D,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACxB,OAAO,CAIT"}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mnemosyne Configuration
|
|
3
|
-
*
|
|
4
|
-
* Handles configuration loading and validation.
|
|
5
|
-
*/
|
|
6
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
7
|
-
import { join } from 'path';
|
|
8
|
-
import { homedir } from 'os';
|
|
9
|
-
import { DEBUG_ENABLED } from './constants.js';
|
|
10
|
-
const DEFAULT_CONFIG = {
|
|
11
|
-
enabled: true,
|
|
12
|
-
detection: {
|
|
13
|
-
enabled: true,
|
|
14
|
-
promptThreshold: 60,
|
|
15
|
-
promptCooldown: 5,
|
|
16
|
-
},
|
|
17
|
-
quality: {
|
|
18
|
-
minScore: 50,
|
|
19
|
-
minProblemLength: 10,
|
|
20
|
-
minSolutionLength: 20,
|
|
21
|
-
},
|
|
22
|
-
storage: {
|
|
23
|
-
maxSkillsPerScope: 100,
|
|
24
|
-
autoPrune: false,
|
|
25
|
-
pruneDays: 90,
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
const CONFIG_PATH = join(homedir(), '.claude', 'sisyphus', 'mnemosyne.json');
|
|
29
|
-
/**
|
|
30
|
-
* Load configuration from disk.
|
|
31
|
-
*/
|
|
32
|
-
export function loadConfig() {
|
|
33
|
-
if (!existsSync(CONFIG_PATH)) {
|
|
34
|
-
return DEFAULT_CONFIG;
|
|
35
|
-
}
|
|
36
|
-
try {
|
|
37
|
-
const content = readFileSync(CONFIG_PATH, 'utf-8');
|
|
38
|
-
const loaded = JSON.parse(content);
|
|
39
|
-
return mergeConfig(DEFAULT_CONFIG, loaded);
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
if (DEBUG_ENABLED) {
|
|
43
|
-
console.error('[mnemosyne] Error loading config:', error);
|
|
44
|
-
}
|
|
45
|
-
return DEFAULT_CONFIG;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Save configuration to disk.
|
|
50
|
-
*/
|
|
51
|
-
export function saveConfig(config) {
|
|
52
|
-
const merged = mergeConfig(DEFAULT_CONFIG, config);
|
|
53
|
-
try {
|
|
54
|
-
const dir = join(homedir(), '.claude', 'sisyphus');
|
|
55
|
-
if (!existsSync(dir)) {
|
|
56
|
-
mkdirSync(dir, { recursive: true });
|
|
57
|
-
}
|
|
58
|
-
writeFileSync(CONFIG_PATH, JSON.stringify(merged, null, 2));
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
if (DEBUG_ENABLED) {
|
|
63
|
-
console.error('[mnemosyne] Error saving config:', error);
|
|
64
|
-
}
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Merge partial config with defaults.
|
|
70
|
-
*/
|
|
71
|
-
function mergeConfig(defaults, partial) {
|
|
72
|
-
return {
|
|
73
|
-
enabled: partial.enabled ?? defaults.enabled,
|
|
74
|
-
detection: {
|
|
75
|
-
...defaults.detection,
|
|
76
|
-
...partial.detection,
|
|
77
|
-
},
|
|
78
|
-
quality: {
|
|
79
|
-
...defaults.quality,
|
|
80
|
-
...partial.quality,
|
|
81
|
-
},
|
|
82
|
-
storage: {
|
|
83
|
-
...defaults.storage,
|
|
84
|
-
...partial.storage,
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Get a specific config value.
|
|
90
|
-
*/
|
|
91
|
-
export function getConfigValue(key) {
|
|
92
|
-
const config = loadConfig();
|
|
93
|
-
return config[key];
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Update a specific config value.
|
|
97
|
-
*/
|
|
98
|
-
export function setConfigValue(key, value) {
|
|
99
|
-
const config = loadConfig();
|
|
100
|
-
config[key] = value;
|
|
101
|
-
return saveConfig(config);
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/hooks/mnemosyne/config.ts"],"names":[],"mappings":"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"}
|