oh-my-claude-sisyphus 3.8.8 → 3.8.10
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/agents/architect.md +78 -0
- package/agents/explore.md +15 -0
- package/agents/qa-tester.md +159 -1
- package/agents/writer.md +20 -0
- package/commands/help.md +1 -1
- package/commands/omc-setup.md +1 -1
- package/dist/__tests__/agent-registry.test.d.ts +2 -0
- package/dist/__tests__/agent-registry.test.d.ts.map +1 -0
- package/dist/__tests__/agent-registry.test.js +39 -0
- package/dist/__tests__/agent-registry.test.js.map +1 -0
- package/dist/__tests__/hooks.test.js +6 -6
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/load-agent-prompt.test.d.ts +2 -0
- package/dist/__tests__/load-agent-prompt.test.d.ts.map +1 -0
- package/dist/__tests__/load-agent-prompt.test.js +68 -0
- package/dist/__tests__/load-agent-prompt.test.js.map +1 -0
- package/dist/__tests__/model-routing.test.js +5 -34
- package/dist/__tests__/model-routing.test.js.map +1 -1
- package/dist/agents/analyst.d.ts.map +1 -1
- package/dist/agents/analyst.js +2 -77
- package/dist/agents/analyst.js.map +1 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +3 -148
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/coordinator-deprecated.d.ts +18 -0
- package/dist/agents/coordinator-deprecated.d.ts.map +1 -0
- package/dist/agents/coordinator-deprecated.js +34 -0
- package/dist/agents/coordinator-deprecated.js.map +1 -0
- package/dist/agents/critic.d.ts.map +1 -1
- package/dist/agents/critic.js +2 -90
- package/dist/agents/critic.js.map +1 -1
- package/dist/agents/definitions.d.ts +2 -0
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +3 -32
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/designer.d.ts.map +1 -1
- package/dist/agents/designer.js +2 -73
- package/dist/agents/designer.js.map +1 -1
- package/dist/agents/executor.d.ts +1 -0
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +3 -56
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/explore.d.ts.map +1 -1
- package/dist/agents/explore.js +2 -64
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/index.d.ts +4 -3
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +6 -3
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +2 -157
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/qa-tester.d.ts.map +1 -1
- package/dist/agents/qa-tester.js +2 -324
- package/dist/agents/qa-tester.js.map +1 -1
- package/dist/agents/researcher.d.ts.map +1 -1
- package/dist/agents/researcher.js +2 -65
- package/dist/agents/researcher.js.map +1 -1
- package/dist/agents/scientist.d.ts.map +1 -1
- package/dist/agents/scientist.js +2 -293
- package/dist/agents/scientist.js.map +1 -1
- package/dist/agents/utils.d.ts +7 -0
- package/dist/agents/utils.d.ts.map +1 -1
- package/dist/agents/utils.js +50 -0
- package/dist/agents/utils.js.map +1 -1
- package/dist/agents/vision.d.ts.map +1 -1
- package/dist/agents/vision.js +2 -32
- package/dist/agents/vision.js.map +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +2 -171
- package/dist/agents/writer.js.map +1 -1
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/index.js +0 -0
- package/dist/features/model-routing/index.d.ts +1 -1
- package/dist/features/model-routing/index.d.ts.map +1 -1
- package/dist/features/model-routing/index.js +1 -1
- package/dist/features/model-routing/index.js.map +1 -1
- package/dist/features/model-routing/router.d.ts +1 -15
- package/dist/features/model-routing/router.d.ts.map +1 -1
- package/dist/features/model-routing/router.js +2 -33
- package/dist/features/model-routing/router.js.map +1 -1
- package/dist/features/model-routing/rules.d.ts.map +1 -1
- package/dist/features/model-routing/rules.js +0 -8
- package/dist/features/model-routing/rules.js.map +1 -1
- package/dist/features/model-routing/types.d.ts +1 -2
- package/dist/features/model-routing/types.d.ts.map +1 -1
- package/dist/features/model-routing/types.js +2 -6
- package/dist/features/model-routing/types.js.map +1 -1
- package/dist/features/task-decomposer/index.d.ts +1 -1
- package/dist/features/task-decomposer/index.d.ts.map +1 -1
- package/dist/features/task-decomposer/index.js +5 -8
- package/dist/features/task-decomposer/index.js.map +1 -1
- package/dist/features/task-decomposer/types.d.ts +4 -4
- package/dist/features/task-decomposer/types.d.ts.map +1 -1
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +10 -2
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +14 -12
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/todo-continuation/index.d.ts +9 -0
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
- package/dist/hooks/todo-continuation/index.js +19 -0
- package/dist/hooks/todo-continuation/index.js.map +1 -1
- package/dist/hooks/ultrapilot/decomposer.d.ts +1 -1
- package/dist/hooks/ultrapilot/decomposer.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/docs/CLAUDE.md +44 -4
- package/docs/FEATURES.md +1 -1
- package/docs/MIGRATION.md +5 -5
- package/docs/REFERENCE.md +6 -2
- package/package.json +1 -1
- package/scripts/persistent-mode.mjs +27 -12
- package/skills/help/SKILL.md +1 -1
- package/skills/omc-setup/SKILL.md +1 -1
- package/templates/hooks/persistent-mode.mjs +26 -12
- package/templates/hooks/stop-continuation.mjs +30 -0
- 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/coordinator.d.ts +0 -11
- package/dist/agents/coordinator.d.ts.map +0 -1
- package/dist/agents/coordinator.js +0 -115
- package/dist/agents/coordinator.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/github-auto-responder/classifier.d.ts +0 -43
- package/dist/hooks/github-auto-responder/classifier.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/classifier.js +0 -150
- package/dist/hooks/github-auto-responder/classifier.js.map +0 -1
- package/dist/hooks/github-auto-responder/config.d.ts +0 -109
- package/dist/hooks/github-auto-responder/config.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/config.js +0 -69
- package/dist/hooks/github-auto-responder/config.js.map +0 -1
- package/dist/hooks/github-auto-responder/constants.d.ts +0 -45
- package/dist/hooks/github-auto-responder/constants.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/constants.js +0 -60
- package/dist/hooks/github-auto-responder/constants.js.map +0 -1
- package/dist/hooks/github-auto-responder/filters.d.ts +0 -95
- package/dist/hooks/github-auto-responder/filters.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/filters.js +0 -174
- package/dist/hooks/github-auto-responder/filters.js.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.d.ts +0 -65
- package/dist/hooks/github-auto-responder/github-client.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.js +0 -128
- package/dist/hooks/github-auto-responder/github-client.js.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.d.ts +0 -68
- package/dist/hooks/github-auto-responder/idempotency.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.js +0 -147
- package/dist/hooks/github-auto-responder/idempotency.js.map +0 -1
- package/dist/hooks/github-auto-responder/index.d.ts +0 -140
- package/dist/hooks/github-auto-responder/index.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/index.js +0 -145
- package/dist/hooks/github-auto-responder/index.js.map +0 -1
- package/dist/hooks/github-auto-responder/persona.d.ts +0 -40
- package/dist/hooks/github-auto-responder/persona.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/persona.js +0 -99
- package/dist/hooks/github-auto-responder/persona.js.map +0 -1
- package/dist/hooks/github-auto-responder/responder.d.ts +0 -122
- package/dist/hooks/github-auto-responder/responder.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/responder.js +0 -264
- package/dist/hooks/github-auto-responder/responder.js.map +0 -1
- package/dist/hooks/github-auto-responder/server.d.ts +0 -140
- package/dist/hooks/github-auto-responder/server.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/server.js +0 -301
- package/dist/hooks/github-auto-responder/server.js.map +0 -1
- package/dist/hooks/github-auto-responder/signature.d.ts +0 -34
- package/dist/hooks/github-auto-responder/signature.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/signature.js +0 -79
- package/dist/hooks/github-auto-responder/signature.js.map +0 -1
- package/dist/hooks/github-auto-responder/templates.d.ts +0 -16
- package/dist/hooks/github-auto-responder/templates.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/templates.js +0 -93
- package/dist/hooks/github-auto-responder/templates.js.map +0 -1
- package/dist/hooks/github-auto-responder/types.d.ts +0 -246
- package/dist/hooks/github-auto-responder/types.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/types.js +0 -7
- package/dist/hooks/github-auto-responder/types.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
- package/dist/mcp/standalone-server.cjs +0 -19135
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extractable Moment Detector
|
|
3
|
-
*
|
|
4
|
-
* Detects patterns in conversation that indicate a skill could be extracted.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Patterns that indicate a skill might be extractable.
|
|
8
|
-
*/
|
|
9
|
-
const DETECTION_PATTERNS = [
|
|
10
|
-
// Problem-Solution patterns
|
|
11
|
-
{
|
|
12
|
-
type: 'problem-solution',
|
|
13
|
-
patterns: [
|
|
14
|
-
/the (?:issue|problem|bug|error) was (?:caused by|due to|because)/i,
|
|
15
|
-
/(?:fixed|resolved|solved) (?:the|this) (?:by|with|using)/i,
|
|
16
|
-
/the (?:solution|fix|answer) (?:is|was) to/i,
|
|
17
|
-
/(?:here's|here is) (?:how|what) (?:to|you need to)/i,
|
|
18
|
-
],
|
|
19
|
-
confidence: 80,
|
|
20
|
-
},
|
|
21
|
-
// Technique patterns
|
|
22
|
-
{
|
|
23
|
-
type: 'technique',
|
|
24
|
-
patterns: [
|
|
25
|
-
/(?:a|the) (?:better|good|proper|correct) (?:way|approach|method) (?:is|to)/i,
|
|
26
|
-
/(?:you should|we should|it's better to) (?:always|never|usually)/i,
|
|
27
|
-
/(?:the trick|the key|the secret) (?:is|here is)/i,
|
|
28
|
-
],
|
|
29
|
-
confidence: 70,
|
|
30
|
-
},
|
|
31
|
-
// Workaround patterns
|
|
32
|
-
{
|
|
33
|
-
type: 'workaround',
|
|
34
|
-
patterns: [
|
|
35
|
-
/(?:as a|for a) workaround/i,
|
|
36
|
-
/(?:temporarily|for now|until).*(?:you can|we can)/i,
|
|
37
|
-
/(?:hack|trick) (?:to|for|that)/i,
|
|
38
|
-
],
|
|
39
|
-
confidence: 60,
|
|
40
|
-
},
|
|
41
|
-
// Optimization patterns
|
|
42
|
-
{
|
|
43
|
-
type: 'optimization',
|
|
44
|
-
patterns: [
|
|
45
|
-
/(?:to|for) (?:better|improved|faster) performance/i,
|
|
46
|
-
/(?:optimize|optimizing|optimization) (?:by|with|using)/i,
|
|
47
|
-
/(?:more efficient|efficiently) (?:by|to|if)/i,
|
|
48
|
-
],
|
|
49
|
-
confidence: 65,
|
|
50
|
-
},
|
|
51
|
-
// Best practice patterns
|
|
52
|
-
{
|
|
53
|
-
type: 'best-practice',
|
|
54
|
-
patterns: [
|
|
55
|
-
/(?:best practice|best practices) (?:is|are|include)/i,
|
|
56
|
-
/(?:recommended|standard|common) (?:approach|pattern|practice)/i,
|
|
57
|
-
/(?:you should always|always make sure to)/i,
|
|
58
|
-
],
|
|
59
|
-
confidence: 75,
|
|
60
|
-
},
|
|
61
|
-
];
|
|
62
|
-
/**
|
|
63
|
-
* Keywords that often appear in extractable content.
|
|
64
|
-
*/
|
|
65
|
-
const TRIGGER_KEYWORDS = [
|
|
66
|
-
// Technical domains
|
|
67
|
-
'react', 'typescript', 'javascript', 'python', 'rust', 'go', 'node',
|
|
68
|
-
'api', 'database', 'sql', 'graphql', 'rest', 'authentication', 'authorization',
|
|
69
|
-
'testing', 'debugging', 'deployment', 'docker', 'kubernetes', 'ci/cd',
|
|
70
|
-
'git', 'webpack', 'vite', 'eslint', 'prettier',
|
|
71
|
-
// Actions
|
|
72
|
-
'error handling', 'state management', 'performance', 'optimization',
|
|
73
|
-
'refactoring', 'migration', 'integration', 'configuration',
|
|
74
|
-
// Patterns
|
|
75
|
-
'pattern', 'architecture', 'design', 'structure', 'convention',
|
|
76
|
-
];
|
|
77
|
-
/**
|
|
78
|
-
* Detect if a message contains an extractable skill moment.
|
|
79
|
-
*/
|
|
80
|
-
export function detectExtractableMoment(assistantMessage, userMessage) {
|
|
81
|
-
const combined = `${userMessage || ''} ${assistantMessage}`.toLowerCase();
|
|
82
|
-
let bestMatch = null;
|
|
83
|
-
// Check against detection patterns
|
|
84
|
-
for (const patternGroup of DETECTION_PATTERNS) {
|
|
85
|
-
for (const pattern of patternGroup.patterns) {
|
|
86
|
-
if (pattern.test(assistantMessage)) {
|
|
87
|
-
if (!bestMatch || patternGroup.confidence > bestMatch.confidence) {
|
|
88
|
-
bestMatch = {
|
|
89
|
-
type: patternGroup.type,
|
|
90
|
-
confidence: patternGroup.confidence,
|
|
91
|
-
reason: `Detected ${patternGroup.type} pattern`,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (!bestMatch) {
|
|
98
|
-
return {
|
|
99
|
-
detected: false,
|
|
100
|
-
confidence: 0,
|
|
101
|
-
patternType: 'problem-solution',
|
|
102
|
-
suggestedTriggers: [],
|
|
103
|
-
reason: 'No extractable pattern detected',
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
// Extract potential trigger keywords
|
|
107
|
-
const suggestedTriggers = [];
|
|
108
|
-
for (const keyword of TRIGGER_KEYWORDS) {
|
|
109
|
-
if (combined.includes(keyword.toLowerCase())) {
|
|
110
|
-
suggestedTriggers.push(keyword);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// Boost confidence if multiple triggers found
|
|
114
|
-
const triggerBoost = Math.min(suggestedTriggers.length * 5, 15);
|
|
115
|
-
const finalConfidence = Math.min(bestMatch.confidence + triggerBoost, 100);
|
|
116
|
-
return {
|
|
117
|
-
detected: true,
|
|
118
|
-
confidence: finalConfidence,
|
|
119
|
-
patternType: bestMatch.type,
|
|
120
|
-
suggestedTriggers: suggestedTriggers.slice(0, 5), // Max 5 triggers
|
|
121
|
-
reason: bestMatch.reason,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Check if detection confidence meets threshold for prompting.
|
|
126
|
-
*/
|
|
127
|
-
export function shouldPromptExtraction(detection, threshold = 60) {
|
|
128
|
-
return detection.detected && detection.confidence >= threshold;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Generate a prompt for skill extraction confirmation.
|
|
132
|
-
*/
|
|
133
|
-
export function generateExtractionPrompt(detection) {
|
|
134
|
-
const typeDescriptions = {
|
|
135
|
-
'problem-solution': 'a problem and its solution',
|
|
136
|
-
'technique': 'a useful technique',
|
|
137
|
-
'workaround': 'a workaround for a limitation',
|
|
138
|
-
'optimization': 'an optimization approach',
|
|
139
|
-
'best-practice': 'a best practice',
|
|
140
|
-
};
|
|
141
|
-
return `
|
|
142
|
-
I noticed this conversation contains ${typeDescriptions[detection.patternType]} that might be worth saving as a reusable skill.
|
|
143
|
-
|
|
144
|
-
**Confidence:** ${detection.confidence}%
|
|
145
|
-
**Suggested triggers:** ${detection.suggestedTriggers.join(', ') || 'None detected'}
|
|
146
|
-
|
|
147
|
-
Would you like me to extract this as a learned skill? Type \`/claudeception\` to save it, or continue with your current task.
|
|
148
|
-
`.trim();
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACzB,4BAA4B;IAC5B;QACE,IAAI,EAAE,kBAA2B;QACjC,QAAQ,EAAE;YACR,mEAAmE;YACnE,2DAA2D;YAC3D,4CAA4C;YAC5C,qDAAqD;SACtD;QACD,UAAU,EAAE,EAAE;KACf;IACD,qBAAqB;IACrB;QACE,IAAI,EAAE,WAAoB;QAC1B,QAAQ,EAAE;YACR,6EAA6E;YAC7E,mEAAmE;YACnE,kDAAkD;SACnD;QACD,UAAU,EAAE,EAAE;KACf;IACD,sBAAsB;IACtB;QACE,IAAI,EAAE,YAAqB;QAC3B,QAAQ,EAAE;YACR,4BAA4B;YAC5B,oDAAoD;YACpD,iCAAiC;SAClC;QACD,UAAU,EAAE,EAAE;KACf;IACD,wBAAwB;IACxB;QACE,IAAI,EAAE,cAAuB;QAC7B,QAAQ,EAAE;YACR,oDAAoD;YACpD,yDAAyD;YACzD,8CAA8C;SAC/C;QACD,UAAU,EAAE,EAAE;KACf;IACD,yBAAyB;IACzB;QACE,IAAI,EAAE,eAAwB;QAC9B,QAAQ,EAAE;YACR,sDAAsD;YACtD,gEAAgE;YAChE,4CAA4C;SAC7C;QACD,UAAU,EAAE,EAAE;KACf;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAG;IACvB,oBAAoB;IACpB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IACnE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe;IAC9E,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO;IACrE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAC9C,UAAU;IACV,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc;IACnE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe;IAC1D,WAAW;IACX,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY;CAC/D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,gBAAwB,EACxB,WAAoB;IAEpB,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC,WAAW,EAAE,CAAC;IAE1E,IAAI,SAAS,GAAwF,IAAI,CAAC;IAE1G,mCAAmC;IACnC,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE,CAAC;QAC9C,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;oBACjE,SAAS,GAAG;wBACV,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,UAAU,EAAE,YAAY,CAAC,UAAU;wBACnC,MAAM,EAAE,YAAY,YAAY,CAAC,IAAI,UAAU;qBAChD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,kBAAkB;YAC/B,iBAAiB,EAAE,EAAE;YACrB,MAAM,EAAE,iCAAiC;SAC1C,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC7C,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC;IAE3E,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,eAAe;QAC3B,WAAW,EAAE,SAAS,CAAC,IAAI;QAC3B,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB;QACnE,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAA0B,EAC1B,YAAoB,EAAE;IAEtB,OAAO,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,SAA0B;IACjE,MAAM,gBAAgB,GAAmD;QACvE,kBAAkB,EAAE,4BAA4B;QAChD,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,+BAA+B;QAC7C,cAAc,EAAE,0BAA0B;QAC1C,eAAe,EAAE,iBAAiB;KACnC,CAAC;IAEF,OAAO;uCAC8B,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC;;kBAE5D,SAAS,CAAC,UAAU;0BACZ,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe;;;CAGlF,CAAC,IAAI,EAAE,CAAC;AACT,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Finder
|
|
3
|
-
*
|
|
4
|
-
* Discovers skill files using hybrid search (user + project).
|
|
5
|
-
* Project skills override user skills with same ID.
|
|
6
|
-
*/
|
|
7
|
-
import type { SkillFileCandidate } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Find all skill files for a given project.
|
|
10
|
-
* Returns project skills first (higher priority), then user skills.
|
|
11
|
-
*/
|
|
12
|
-
export declare function findSkillFiles(projectRoot: string | null): SkillFileCandidate[];
|
|
13
|
-
/**
|
|
14
|
-
* Get skills directory path for a scope.
|
|
15
|
-
*/
|
|
16
|
-
export declare function getSkillsDir(scope: 'user' | 'project', projectRoot?: string): string;
|
|
17
|
-
/**
|
|
18
|
-
* Ensure skills directory exists.
|
|
19
|
-
*/
|
|
20
|
-
export declare function ensureSkillsDir(scope: 'user' | 'project', projectRoot?: string): boolean;
|
|
21
|
-
//# sourceMappingURL=finder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"finder.d.ts","sourceRoot":"","sources":["../../../src/hooks/learned-skills/finder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAsCrD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,EAAE,CAwC/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAQpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBxF"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Finder
|
|
3
|
-
*
|
|
4
|
-
* Discovers skill files using hybrid search (user + project).
|
|
5
|
-
* Project skills override user skills with same ID.
|
|
6
|
-
*/
|
|
7
|
-
import { existsSync, readdirSync, realpathSync, mkdirSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
import { USER_SKILLS_DIR, PROJECT_SKILLS_SUBDIR, SKILL_EXTENSION, DEBUG_ENABLED } from './constants.js';
|
|
10
|
-
/**
|
|
11
|
-
* Recursively find all skill files in a directory.
|
|
12
|
-
*/
|
|
13
|
-
function findSkillFilesRecursive(dir, results) {
|
|
14
|
-
if (!existsSync(dir))
|
|
15
|
-
return;
|
|
16
|
-
try {
|
|
17
|
-
const entries = readdirSync(dir, { withFileTypes: true });
|
|
18
|
-
for (const entry of entries) {
|
|
19
|
-
const fullPath = join(dir, entry.name);
|
|
20
|
-
if (entry.isDirectory()) {
|
|
21
|
-
findSkillFilesRecursive(fullPath, results);
|
|
22
|
-
}
|
|
23
|
-
else if (entry.isFile() && entry.name.endsWith(SKILL_EXTENSION)) {
|
|
24
|
-
results.push(fullPath);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
// Permission denied or other errors - silently skip
|
|
30
|
-
if (DEBUG_ENABLED) {
|
|
31
|
-
console.error('[learned-skills] Error scanning directory:', error);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Resolve symlinks safely with fallback.
|
|
37
|
-
*/
|
|
38
|
-
function safeRealpathSync(filePath) {
|
|
39
|
-
try {
|
|
40
|
-
return realpathSync(filePath);
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return filePath;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Find all skill files for a given project.
|
|
48
|
-
* Returns project skills first (higher priority), then user skills.
|
|
49
|
-
*/
|
|
50
|
-
export function findSkillFiles(projectRoot) {
|
|
51
|
-
const candidates = [];
|
|
52
|
-
const seenRealPaths = new Set();
|
|
53
|
-
// 1. Search project-level skills (higher priority)
|
|
54
|
-
if (projectRoot) {
|
|
55
|
-
const projectSkillsDir = join(projectRoot, PROJECT_SKILLS_SUBDIR);
|
|
56
|
-
const projectFiles = [];
|
|
57
|
-
findSkillFilesRecursive(projectSkillsDir, projectFiles);
|
|
58
|
-
for (const filePath of projectFiles) {
|
|
59
|
-
const realPath = safeRealpathSync(filePath);
|
|
60
|
-
if (seenRealPaths.has(realPath))
|
|
61
|
-
continue;
|
|
62
|
-
seenRealPaths.add(realPath);
|
|
63
|
-
candidates.push({
|
|
64
|
-
path: filePath,
|
|
65
|
-
realPath,
|
|
66
|
-
scope: 'project',
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
// 2. Search user-level skills (lower priority)
|
|
71
|
-
const userFiles = [];
|
|
72
|
-
findSkillFilesRecursive(USER_SKILLS_DIR, userFiles);
|
|
73
|
-
for (const filePath of userFiles) {
|
|
74
|
-
const realPath = safeRealpathSync(filePath);
|
|
75
|
-
if (seenRealPaths.has(realPath))
|
|
76
|
-
continue;
|
|
77
|
-
seenRealPaths.add(realPath);
|
|
78
|
-
candidates.push({
|
|
79
|
-
path: filePath,
|
|
80
|
-
realPath,
|
|
81
|
-
scope: 'user',
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
return candidates;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get skills directory path for a scope.
|
|
88
|
-
*/
|
|
89
|
-
export function getSkillsDir(scope, projectRoot) {
|
|
90
|
-
if (scope === 'user') {
|
|
91
|
-
return USER_SKILLS_DIR;
|
|
92
|
-
}
|
|
93
|
-
if (!projectRoot) {
|
|
94
|
-
throw new Error('Project root required for project scope');
|
|
95
|
-
}
|
|
96
|
-
return join(projectRoot, PROJECT_SKILLS_SUBDIR);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Ensure skills directory exists.
|
|
100
|
-
*/
|
|
101
|
-
export function ensureSkillsDir(scope, projectRoot) {
|
|
102
|
-
const dir = getSkillsDir(scope, projectRoot);
|
|
103
|
-
if (existsSync(dir)) {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
mkdirSync(dir, { recursive: true });
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
if (DEBUG_ENABLED) {
|
|
112
|
-
console.error('[learned-skills] Error creating skills directory:', error);
|
|
113
|
-
}
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=finder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"finder.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/finder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Learned Skills Hook
|
|
3
|
-
*
|
|
4
|
-
* Automatically injects relevant learned skills into context
|
|
5
|
-
* based on message content triggers.
|
|
6
|
-
*/
|
|
7
|
-
import type { LearnedSkill } from './types.js';
|
|
8
|
-
export * from './types.js';
|
|
9
|
-
export * from './constants.js';
|
|
10
|
-
export * from './finder.js';
|
|
11
|
-
export * from './parser.js';
|
|
12
|
-
export * from './loader.js';
|
|
13
|
-
export * from './validator.js';
|
|
14
|
-
export * from './writer.js';
|
|
15
|
-
export * from './detector.js';
|
|
16
|
-
export * from './detection-hook.js';
|
|
17
|
-
export * from './promotion.js';
|
|
18
|
-
export * from './config.js';
|
|
19
|
-
/**
|
|
20
|
-
* Check if feature is enabled.
|
|
21
|
-
*/
|
|
22
|
-
export declare function isClaudeceptionEnabled(): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Process a user message and inject matching skills.
|
|
25
|
-
*/
|
|
26
|
-
export declare function processMessageForSkills(message: string, sessionId: string, projectRoot: string | null): {
|
|
27
|
-
injected: number;
|
|
28
|
-
skills: LearnedSkill[];
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Clear session cache.
|
|
32
|
-
*/
|
|
33
|
-
export declare function clearSkillSession(sessionId: string): void;
|
|
34
|
-
/**
|
|
35
|
-
* Get all loaded skills (for debugging/display).
|
|
36
|
-
*/
|
|
37
|
-
export declare function getAllSkills(projectRoot: string | null): LearnedSkill[];
|
|
38
|
-
/**
|
|
39
|
-
* Create the learned skills hook for Claude Code.
|
|
40
|
-
*/
|
|
41
|
-
export declare function createLearnedSkillsHook(projectRoot: string | null): {
|
|
42
|
-
/**
|
|
43
|
-
* Process user message for skill injection.
|
|
44
|
-
*/
|
|
45
|
-
processMessage: (message: string, sessionId: string) => {
|
|
46
|
-
injected: number;
|
|
47
|
-
skills: LearnedSkill[];
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Clear session when done.
|
|
51
|
-
*/
|
|
52
|
-
clearSession: (sessionId: string) => void;
|
|
53
|
-
/**
|
|
54
|
-
* Get all skills for display.
|
|
55
|
-
*/
|
|
56
|
-
getAllSkills: () => LearnedSkill[];
|
|
57
|
-
/**
|
|
58
|
-
* Check if feature enabled.
|
|
59
|
-
*/
|
|
60
|
-
isEnabled: typeof isClaudeceptionEnabled;
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/learned-skills/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAO5B;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAkCD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,EAAE,CAAA;CAAE,CAsC9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAE9D;;OAEG;8BACuB,MAAM,aAAa,MAAM;kBA9DxC,MAAM;gBAAU,YAAY,EAAE;;IAkEzC;;OAEG;8BACuB,MAAM;IAIhC;;OAEG;;IAGH;;OAEG;;EAGN"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Learned Skills Hook
|
|
3
|
-
*
|
|
4
|
-
* Automatically injects relevant learned skills into context
|
|
5
|
-
* based on message content triggers.
|
|
6
|
-
*/
|
|
7
|
-
import { contextCollector } from '../../features/context-injector/index.js';
|
|
8
|
-
import { loadAllSkills, findMatchingSkills } from './loader.js';
|
|
9
|
-
import { MAX_SKILLS_PER_SESSION } from './constants.js';
|
|
10
|
-
import { loadConfig } from './config.js';
|
|
11
|
-
// Re-export submodules
|
|
12
|
-
export * from './types.js';
|
|
13
|
-
export * from './constants.js';
|
|
14
|
-
export * from './finder.js';
|
|
15
|
-
export * from './parser.js';
|
|
16
|
-
export * from './loader.js';
|
|
17
|
-
export * from './validator.js';
|
|
18
|
-
export * from './writer.js';
|
|
19
|
-
export * from './detector.js';
|
|
20
|
-
export * from './detection-hook.js';
|
|
21
|
-
export * from './promotion.js';
|
|
22
|
-
export * from './config.js';
|
|
23
|
-
/**
|
|
24
|
-
* Session cache for tracking injected skills.
|
|
25
|
-
*/
|
|
26
|
-
const sessionCaches = new Map();
|
|
27
|
-
/**
|
|
28
|
-
* Check if feature is enabled.
|
|
29
|
-
*/
|
|
30
|
-
export function isClaudeceptionEnabled() {
|
|
31
|
-
return loadConfig().enabled;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Format skills for context injection.
|
|
35
|
-
*/
|
|
36
|
-
function formatSkillsForContext(skills) {
|
|
37
|
-
if (skills.length === 0)
|
|
38
|
-
return '';
|
|
39
|
-
const lines = [
|
|
40
|
-
'<learned-skills>',
|
|
41
|
-
'',
|
|
42
|
-
'## Relevant Learned Skills',
|
|
43
|
-
'',
|
|
44
|
-
'The following skills have been learned from previous sessions and may be helpful:',
|
|
45
|
-
'',
|
|
46
|
-
];
|
|
47
|
-
for (const skill of skills) {
|
|
48
|
-
lines.push(`### ${skill.metadata.name}`);
|
|
49
|
-
lines.push(`**Triggers:** ${skill.metadata.triggers.join(', ')}`);
|
|
50
|
-
if (skill.metadata.tags && skill.metadata.tags.length > 0) {
|
|
51
|
-
lines.push(`**Tags:** ${skill.metadata.tags.join(', ')}`);
|
|
52
|
-
}
|
|
53
|
-
lines.push('');
|
|
54
|
-
lines.push(skill.content);
|
|
55
|
-
lines.push('');
|
|
56
|
-
lines.push('---');
|
|
57
|
-
lines.push('');
|
|
58
|
-
}
|
|
59
|
-
lines.push('</learned-skills>');
|
|
60
|
-
return lines.join('\n');
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Process a user message and inject matching skills.
|
|
64
|
-
*/
|
|
65
|
-
export function processMessageForSkills(message, sessionId, projectRoot) {
|
|
66
|
-
if (!isClaudeceptionEnabled()) {
|
|
67
|
-
return { injected: 0, skills: [] };
|
|
68
|
-
}
|
|
69
|
-
// Get or create session cache
|
|
70
|
-
if (!sessionCaches.has(sessionId)) {
|
|
71
|
-
sessionCaches.set(sessionId, new Set());
|
|
72
|
-
}
|
|
73
|
-
const injectedHashes = sessionCaches.get(sessionId);
|
|
74
|
-
// Find matching skills not already injected
|
|
75
|
-
const matchingSkills = findMatchingSkills(message, projectRoot, MAX_SKILLS_PER_SESSION);
|
|
76
|
-
const newSkills = matchingSkills.filter(s => !injectedHashes.has(s.contentHash));
|
|
77
|
-
if (newSkills.length === 0) {
|
|
78
|
-
return { injected: 0, skills: [] };
|
|
79
|
-
}
|
|
80
|
-
// Mark as injected
|
|
81
|
-
for (const skill of newSkills) {
|
|
82
|
-
injectedHashes.add(skill.contentHash);
|
|
83
|
-
}
|
|
84
|
-
// Register with context collector
|
|
85
|
-
const content = formatSkillsForContext(newSkills);
|
|
86
|
-
contextCollector.register(sessionId, {
|
|
87
|
-
id: 'learned-skills',
|
|
88
|
-
source: 'learned-skills',
|
|
89
|
-
content,
|
|
90
|
-
priority: 'normal',
|
|
91
|
-
metadata: {
|
|
92
|
-
skillCount: newSkills.length,
|
|
93
|
-
skillIds: newSkills.map(s => s.metadata.id),
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
return { injected: newSkills.length, skills: newSkills };
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Clear session cache.
|
|
100
|
-
*/
|
|
101
|
-
export function clearSkillSession(sessionId) {
|
|
102
|
-
sessionCaches.delete(sessionId);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Get all loaded skills (for debugging/display).
|
|
106
|
-
*/
|
|
107
|
-
export function getAllSkills(projectRoot) {
|
|
108
|
-
return loadAllSkills(projectRoot);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Create the learned skills hook for Claude Code.
|
|
112
|
-
*/
|
|
113
|
-
export function createLearnedSkillsHook(projectRoot) {
|
|
114
|
-
return {
|
|
115
|
-
/**
|
|
116
|
-
* Process user message for skill injection.
|
|
117
|
-
*/
|
|
118
|
-
processMessage: (message, sessionId) => {
|
|
119
|
-
return processMessageForSkills(message, sessionId, projectRoot);
|
|
120
|
-
},
|
|
121
|
-
/**
|
|
122
|
-
* Clear session when done.
|
|
123
|
-
*/
|
|
124
|
-
clearSession: (sessionId) => {
|
|
125
|
-
clearSkillSession(sessionId);
|
|
126
|
-
},
|
|
127
|
-
/**
|
|
128
|
-
* Get all skills for display.
|
|
129
|
-
*/
|
|
130
|
-
getAllSkills: () => getAllSkills(projectRoot),
|
|
131
|
-
/**
|
|
132
|
-
* Check if feature enabled.
|
|
133
|
-
*/
|
|
134
|
-
isEnabled: isClaudeceptionEnabled,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Loader
|
|
3
|
-
*
|
|
4
|
-
* Loads and caches skills from disk.
|
|
5
|
-
*/
|
|
6
|
-
import type { LearnedSkill } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Load all skills for a project.
|
|
9
|
-
* Project skills override user skills with same ID.
|
|
10
|
-
*/
|
|
11
|
-
export declare function loadAllSkills(projectRoot: string | null): LearnedSkill[];
|
|
12
|
-
/**
|
|
13
|
-
* Load a specific skill by ID.
|
|
14
|
-
*/
|
|
15
|
-
export declare function loadSkillById(skillId: string, projectRoot: string | null): LearnedSkill | null;
|
|
16
|
-
/**
|
|
17
|
-
* Find skills matching keywords in user message.
|
|
18
|
-
*/
|
|
19
|
-
export declare function findMatchingSkills(message: string, projectRoot: string | null, limit?: number): LearnedSkill[];
|
|
20
|
-
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/hooks/learned-skills/loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,YAAY,CAAC;AAS9D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,EAAE,CA4CxE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAG9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,KAAK,GAAE,MAAU,GAChB,YAAY,EAAE,CAyChB"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Skill Loader
|
|
3
|
-
*
|
|
4
|
-
* Loads and caches skills from disk.
|
|
5
|
-
*/
|
|
6
|
-
import { readFileSync } from 'fs';
|
|
7
|
-
import { createHash } from 'crypto';
|
|
8
|
-
import { relative } from 'path';
|
|
9
|
-
import { findSkillFiles, getSkillsDir } from './finder.js';
|
|
10
|
-
import { parseSkillFile } from './parser.js';
|
|
11
|
-
import { DEBUG_ENABLED } from './constants.js';
|
|
12
|
-
/**
|
|
13
|
-
* Create SHA-256 hash of content.
|
|
14
|
-
*/
|
|
15
|
-
function createContentHash(content) {
|
|
16
|
-
return createHash('sha256').update(content).digest('hex').slice(0, 16);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Load all skills for a project.
|
|
20
|
-
* Project skills override user skills with same ID.
|
|
21
|
-
*/
|
|
22
|
-
export function loadAllSkills(projectRoot) {
|
|
23
|
-
const candidates = findSkillFiles(projectRoot);
|
|
24
|
-
const seenIds = new Map();
|
|
25
|
-
for (const candidate of candidates) {
|
|
26
|
-
try {
|
|
27
|
-
const rawContent = readFileSync(candidate.path, 'utf-8');
|
|
28
|
-
const { metadata, content, valid, errors } = parseSkillFile(rawContent);
|
|
29
|
-
if (!valid) {
|
|
30
|
-
if (DEBUG_ENABLED) {
|
|
31
|
-
console.warn(`Invalid skill file ${candidate.path}: ${errors.join(', ')}`);
|
|
32
|
-
}
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
const skillId = metadata.id;
|
|
36
|
-
const skillsDir = getSkillsDir(candidate.scope, projectRoot || undefined);
|
|
37
|
-
const relativePath = relative(skillsDir, candidate.path);
|
|
38
|
-
const skill = {
|
|
39
|
-
path: candidate.path,
|
|
40
|
-
relativePath,
|
|
41
|
-
scope: candidate.scope,
|
|
42
|
-
metadata: metadata,
|
|
43
|
-
content,
|
|
44
|
-
contentHash: createContentHash(content),
|
|
45
|
-
priority: candidate.scope === 'project' ? 1 : 0,
|
|
46
|
-
};
|
|
47
|
-
// Project skills override user skills with same ID
|
|
48
|
-
const existing = seenIds.get(skillId);
|
|
49
|
-
if (!existing || skill.priority > existing.priority) {
|
|
50
|
-
seenIds.set(skillId, skill);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
catch (e) {
|
|
54
|
-
if (DEBUG_ENABLED) {
|
|
55
|
-
console.warn(`Error loading skill ${candidate.path}:`, e);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// Return skills sorted by priority (project first)
|
|
60
|
-
return Array.from(seenIds.values()).sort((a, b) => b.priority - a.priority);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Load a specific skill by ID.
|
|
64
|
-
*/
|
|
65
|
-
export function loadSkillById(skillId, projectRoot) {
|
|
66
|
-
const skills = loadAllSkills(projectRoot);
|
|
67
|
-
return skills.find(s => s.metadata.id === skillId) || null;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Find skills matching keywords in user message.
|
|
71
|
-
*/
|
|
72
|
-
export function findMatchingSkills(message, projectRoot, limit = 5) {
|
|
73
|
-
const skills = loadAllSkills(projectRoot);
|
|
74
|
-
const messageLower = message.toLowerCase();
|
|
75
|
-
const scored = skills.map(skill => {
|
|
76
|
-
let score = 0;
|
|
77
|
-
// Check trigger matches
|
|
78
|
-
for (const trigger of skill.metadata.triggers) {
|
|
79
|
-
if (messageLower.includes(trigger.toLowerCase())) {
|
|
80
|
-
score += 10;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
// Check tag matches
|
|
84
|
-
if (skill.metadata.tags) {
|
|
85
|
-
for (const tag of skill.metadata.tags) {
|
|
86
|
-
if (messageLower.includes(tag.toLowerCase())) {
|
|
87
|
-
score += 5;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// Boost by quality score
|
|
92
|
-
if (skill.metadata.quality) {
|
|
93
|
-
score += skill.metadata.quality / 20;
|
|
94
|
-
}
|
|
95
|
-
// Boost by usage count
|
|
96
|
-
if (skill.metadata.usageCount) {
|
|
97
|
-
score += Math.min(skill.metadata.usageCount, 10);
|
|
98
|
-
}
|
|
99
|
-
return { skill, score };
|
|
100
|
-
});
|
|
101
|
-
return scored
|
|
102
|
-
.filter(s => s.score > 0)
|
|
103
|
-
.sort((a, b) => b.score - a.score)
|
|
104
|
-
.slice(0, limit)
|
|
105
|
-
.map(s => s.skill);
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/hooks/learned-skills/loader.ts"],"names":[],"mappings":"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"}
|