olympus-ai 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +691 -0
- package/dist/__tests__/example.test.d.ts +2 -0
- package/dist/__tests__/example.test.d.ts.map +1 -0
- package/dist/__tests__/example.test.js +20 -0
- package/dist/__tests__/example.test.js.map +1 -0
- package/dist/__tests__/hooks.test.d.ts +2 -0
- package/dist/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/__tests__/hooks.test.js +644 -0
- package/dist/__tests__/hooks.test.js.map +1 -0
- package/dist/__tests__/installer.test.d.ts +2 -0
- package/dist/__tests__/installer.test.d.ts.map +1 -0
- package/dist/__tests__/installer.test.js +369 -0
- package/dist/__tests__/installer.test.js.map +1 -0
- package/dist/__tests__/model-routing.test.d.ts +2 -0
- package/dist/__tests__/model-routing.test.d.ts.map +1 -0
- package/dist/__tests__/model-routing.test.js +814 -0
- package/dist/__tests__/model-routing.test.js.map +1 -0
- package/dist/__tests__/skills.test.d.ts +2 -0
- package/dist/__tests__/skills.test.d.ts.map +1 -0
- package/dist/__tests__/skills.test.js +126 -0
- package/dist/__tests__/skills.test.js.map +1 -0
- package/dist/__tests__/types.test.d.ts +2 -0
- package/dist/__tests__/types.test.d.ts.map +1 -0
- package/dist/__tests__/types.test.js +77 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/agents/definitions.d.ts +105 -0
- package/dist/agents/definitions.d.ts.map +1 -0
- package/dist/agents/definitions.js +1379 -0
- package/dist/agents/definitions.js.map +1 -0
- package/dist/agents/document-writer.d.ts +11 -0
- package/dist/agents/document-writer.d.ts.map +1 -0
- package/dist/agents/document-writer.js +209 -0
- package/dist/agents/document-writer.js.map +1 -0
- package/dist/agents/explore.d.ts +12 -0
- package/dist/agents/explore.d.ts.map +1 -0
- package/dist/agents/explore.js +103 -0
- package/dist/agents/explore.js.map +1 -0
- package/dist/agents/frontend-engineer.d.ts +11 -0
- package/dist/agents/frontend-engineer.d.ts.map +1 -0
- package/dist/agents/frontend-engineer.js +115 -0
- package/dist/agents/frontend-engineer.js.map +1 -0
- package/dist/agents/index.d.ts +21 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +27 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/librarian.d.ts +12 -0
- package/dist/agents/librarian.d.ts.map +1 -0
- package/dist/agents/librarian.js +103 -0
- package/dist/agents/librarian.js.map +1 -0
- package/dist/agents/metis.d.ts +12 -0
- package/dist/agents/metis.d.ts.map +1 -0
- package/dist/agents/metis.js +117 -0
- package/dist/agents/metis.js.map +1 -0
- package/dist/agents/momus.d.ts +12 -0
- package/dist/agents/momus.d.ts.map +1 -0
- package/dist/agents/momus.js +128 -0
- package/dist/agents/momus.js.map +1 -0
- package/dist/agents/multimodal-looker.d.ts +11 -0
- package/dist/agents/multimodal-looker.d.ts.map +1 -0
- package/dist/agents/multimodal-looker.js +70 -0
- package/dist/agents/multimodal-looker.js.map +1 -0
- package/dist/agents/olympian.d.ts +12 -0
- package/dist/agents/olympian.d.ts.map +1 -0
- package/dist/agents/olympian.js +93 -0
- package/dist/agents/olympian.js.map +1 -0
- package/dist/agents/oracle.d.ts +13 -0
- package/dist/agents/oracle.d.ts.map +1 -0
- package/dist/agents/oracle.js +191 -0
- package/dist/agents/oracle.js.map +1 -0
- package/dist/agents/orchestrator-olympus.d.ts +11 -0
- package/dist/agents/orchestrator-olympus.d.ts.map +1 -0
- package/dist/agents/orchestrator-olympus.js +115 -0
- package/dist/agents/orchestrator-olympus.js.map +1 -0
- package/dist/agents/orchestrator-sisyphus.d.ts +11 -0
- package/dist/agents/orchestrator-sisyphus.d.ts.map +1 -0
- package/dist/agents/orchestrator-sisyphus.js +115 -0
- package/dist/agents/orchestrator-sisyphus.js.map +1 -0
- package/dist/agents/prometheus.d.ts +12 -0
- package/dist/agents/prometheus.d.ts.map +1 -0
- package/dist/agents/prometheus.js +156 -0
- package/dist/agents/prometheus.js.map +1 -0
- package/dist/agents/qa-tester.d.ts +16 -0
- package/dist/agents/qa-tester.d.ts.map +1 -0
- package/dist/agents/qa-tester.js +367 -0
- package/dist/agents/qa-tester.js.map +1 -0
- package/dist/agents/sisyphus-junior.d.ts +12 -0
- package/dist/agents/sisyphus-junior.d.ts.map +1 -0
- package/dist/agents/sisyphus-junior.js +93 -0
- package/dist/agents/sisyphus-junior.js.map +1 -0
- package/dist/agents/types.d.ts +120 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +38 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/agents/utils.d.ts +49 -0
- package/dist/agents/utils.d.ts.map +1 -0
- package/dist/agents/utils.js +164 -0
- package/dist/agents/utils.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +496 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/index.d.ts +78 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +148 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +49 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +380 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/features/auto-update.d.ts +187 -0
- package/dist/features/auto-update.d.ts.map +1 -0
- package/dist/features/auto-update.js +539 -0
- package/dist/features/auto-update.js.map +1 -0
- package/dist/features/background-agent/concurrency.d.ts +53 -0
- package/dist/features/background-agent/concurrency.d.ts.map +1 -0
- package/dist/features/background-agent/concurrency.js +121 -0
- package/dist/features/background-agent/concurrency.js.map +1 -0
- package/dist/features/background-agent/index.d.ts +12 -0
- package/dist/features/background-agent/index.d.ts.map +1 -0
- package/dist/features/background-agent/index.js +12 -0
- package/dist/features/background-agent/index.js.map +1 -0
- package/dist/features/background-agent/manager.d.ts +134 -0
- package/dist/features/background-agent/manager.d.ts.map +1 -0
- package/dist/features/background-agent/manager.js +412 -0
- package/dist/features/background-agent/manager.js.map +1 -0
- package/dist/features/background-agent/types.d.ts +99 -0
- package/dist/features/background-agent/types.d.ts.map +1 -0
- package/dist/features/background-agent/types.js +9 -0
- package/dist/features/background-agent/types.js.map +1 -0
- package/dist/features/background-tasks.d.ts +99 -0
- package/dist/features/background-tasks.d.ts.map +1 -0
- package/dist/features/background-tasks.js +265 -0
- package/dist/features/background-tasks.js.map +1 -0
- package/dist/features/boulder-state/constants.d.ts +20 -0
- package/dist/features/boulder-state/constants.d.ts.map +1 -0
- package/dist/features/boulder-state/constants.js +20 -0
- package/dist/features/boulder-state/constants.js.map +1 -0
- package/dist/features/boulder-state/index.d.ts +12 -0
- package/dist/features/boulder-state/index.d.ts.map +1 -0
- package/dist/features/boulder-state/index.js +13 -0
- package/dist/features/boulder-state/index.js.map +1 -0
- package/dist/features/boulder-state/storage.d.ts +58 -0
- package/dist/features/boulder-state/storage.d.ts.map +1 -0
- package/dist/features/boulder-state/storage.js +174 -0
- package/dist/features/boulder-state/storage.js.map +1 -0
- package/dist/features/boulder-state/types.d.ts +48 -0
- package/dist/features/boulder-state/types.d.ts.map +1 -0
- package/dist/features/boulder-state/types.js +10 -0
- package/dist/features/boulder-state/types.js.map +1 -0
- package/dist/features/builtin-skills/index.d.ts +10 -0
- package/dist/features/builtin-skills/index.d.ts.map +1 -0
- package/dist/features/builtin-skills/index.js +10 -0
- package/dist/features/builtin-skills/index.js.map +1 -0
- package/dist/features/builtin-skills/skills.d.ts +21 -0
- package/dist/features/builtin-skills/skills.d.ts.map +1 -0
- package/dist/features/builtin-skills/skills.js +1082 -0
- package/dist/features/builtin-skills/skills.js.map +1 -0
- package/dist/features/builtin-skills/types.d.ts +60 -0
- package/dist/features/builtin-skills/types.d.ts.map +1 -0
- package/dist/features/builtin-skills/types.js +9 -0
- package/dist/features/builtin-skills/types.js.map +1 -0
- package/dist/features/context-injector/collector.d.ts +56 -0
- package/dist/features/context-injector/collector.d.ts.map +1 -0
- package/dist/features/context-injector/collector.js +122 -0
- package/dist/features/context-injector/collector.js.map +1 -0
- package/dist/features/context-injector/index.d.ts +12 -0
- package/dist/features/context-injector/index.d.ts.map +1 -0
- package/dist/features/context-injector/index.js +13 -0
- package/dist/features/context-injector/index.js.map +1 -0
- package/dist/features/context-injector/injector.d.ts +47 -0
- package/dist/features/context-injector/injector.d.ts.map +1 -0
- package/dist/features/context-injector/injector.js +103 -0
- package/dist/features/context-injector/injector.js.map +1 -0
- package/dist/features/context-injector/types.d.ts +103 -0
- package/dist/features/context-injector/types.d.ts.map +1 -0
- package/dist/features/context-injector/types.js +11 -0
- package/dist/features/context-injector/types.js.map +1 -0
- package/dist/features/continuation-enforcement.d.ts +36 -0
- package/dist/features/continuation-enforcement.d.ts.map +1 -0
- package/dist/features/continuation-enforcement.js +175 -0
- package/dist/features/continuation-enforcement.js.map +1 -0
- package/dist/features/index.d.ts +12 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +49 -0
- package/dist/features/index.js.map +1 -0
- package/dist/features/magic-keywords.d.ts +28 -0
- package/dist/features/magic-keywords.d.ts.map +1 -0
- package/dist/features/magic-keywords.js +421 -0
- package/dist/features/magic-keywords.js.map +1 -0
- package/dist/features/model-routing/index.d.ts +34 -0
- package/dist/features/model-routing/index.d.ts.map +1 -0
- package/dist/features/model-routing/index.js +48 -0
- package/dist/features/model-routing/index.js.map +1 -0
- package/dist/features/model-routing/prompts/haiku.d.ts +54 -0
- package/dist/features/model-routing/prompts/haiku.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/haiku.js +141 -0
- package/dist/features/model-routing/prompts/haiku.js.map +1 -0
- package/dist/features/model-routing/prompts/index.d.ts +45 -0
- package/dist/features/model-routing/prompts/index.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/index.js +116 -0
- package/dist/features/model-routing/prompts/index.js.map +1 -0
- package/dist/features/model-routing/prompts/opus.d.ts +34 -0
- package/dist/features/model-routing/prompts/opus.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/opus.js +153 -0
- package/dist/features/model-routing/prompts/opus.js.map +1 -0
- package/dist/features/model-routing/prompts/sonnet.d.ts +38 -0
- package/dist/features/model-routing/prompts/sonnet.d.ts.map +1 -0
- package/dist/features/model-routing/prompts/sonnet.js +149 -0
- package/dist/features/model-routing/prompts/sonnet.js.map +1 -0
- package/dist/features/model-routing/router.d.ts +92 -0
- package/dist/features/model-routing/router.d.ts.map +1 -0
- package/dist/features/model-routing/router.js +267 -0
- package/dist/features/model-routing/router.js.map +1 -0
- package/dist/features/model-routing/rules.d.ts +32 -0
- package/dist/features/model-routing/rules.d.ts.map +1 -0
- package/dist/features/model-routing/rules.js +224 -0
- package/dist/features/model-routing/rules.js.map +1 -0
- package/dist/features/model-routing/scorer.d.ts +35 -0
- package/dist/features/model-routing/scorer.d.ts.map +1 -0
- package/dist/features/model-routing/scorer.js +241 -0
- package/dist/features/model-routing/scorer.js.map +1 -0
- package/dist/features/model-routing/signals.d.ts +26 -0
- package/dist/features/model-routing/signals.d.ts.map +1 -0
- package/dist/features/model-routing/signals.js +283 -0
- package/dist/features/model-routing/signals.js.map +1 -0
- package/dist/features/model-routing/types.d.ts +195 -0
- package/dist/features/model-routing/types.d.ts.map +1 -0
- package/dist/features/model-routing/types.js +86 -0
- package/dist/features/model-routing/types.js.map +1 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts +17 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts.map +1 -0
- package/dist/hooks/agent-usage-reminder/constants.js +58 -0
- package/dist/hooks/agent-usage-reminder/constants.js.map +1 -0
- package/dist/hooks/agent-usage-reminder/index.d.ts +36 -0
- package/dist/hooks/agent-usage-reminder/index.d.ts.map +1 -0
- package/dist/hooks/agent-usage-reminder/index.js +89 -0
- package/dist/hooks/agent-usage-reminder/index.js.map +1 -0
- package/dist/hooks/agent-usage-reminder/storage.d.ts +12 -0
- package/dist/hooks/agent-usage-reminder/storage.d.ts.map +1 -0
- package/dist/hooks/agent-usage-reminder/storage.js +39 -0
- package/dist/hooks/agent-usage-reminder/storage.js.map +1 -0
- package/dist/hooks/agent-usage-reminder/types.d.ts +14 -0
- package/dist/hooks/agent-usage-reminder/types.d.ts.map +1 -0
- package/dist/hooks/agent-usage-reminder/types.js +9 -0
- package/dist/hooks/agent-usage-reminder/types.js.map +1 -0
- package/dist/hooks/ascent-verifier/index.d.ts +72 -0
- package/dist/hooks/ascent-verifier/index.d.ts.map +1 -0
- package/dist/hooks/ascent-verifier/index.js +223 -0
- package/dist/hooks/ascent-verifier/index.js.map +1 -0
- package/dist/hooks/auto-slash-command/constants.d.ts +19 -0
- package/dist/hooks/auto-slash-command/constants.d.ts.map +1 -0
- package/dist/hooks/auto-slash-command/constants.js +28 -0
- package/dist/hooks/auto-slash-command/constants.js.map +1 -0
- package/dist/hooks/auto-slash-command/detector.d.ts +33 -0
- package/dist/hooks/auto-slash-command/detector.d.ts.map +1 -0
- package/dist/hooks/auto-slash-command/detector.js +73 -0
- package/dist/hooks/auto-slash-command/detector.js.map +1 -0
- package/dist/hooks/auto-slash-command/executor.d.ts +29 -0
- package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -0
- package/dist/hooks/auto-slash-command/executor.js +214 -0
- package/dist/hooks/auto-slash-command/executor.js.map +1 -0
- package/dist/hooks/auto-slash-command/index.d.ts +53 -0
- package/dist/hooks/auto-slash-command/index.d.ts.map +1 -0
- package/dist/hooks/auto-slash-command/index.js +105 -0
- package/dist/hooks/auto-slash-command/index.js.map +1 -0
- package/dist/hooks/auto-slash-command/types.d.ts +77 -0
- package/dist/hooks/auto-slash-command/types.d.ts.map +1 -0
- package/dist/hooks/auto-slash-command/types.js +9 -0
- package/dist/hooks/auto-slash-command/types.js.map +1 -0
- package/dist/hooks/background-notification/index.d.ts +60 -0
- package/dist/hooks/background-notification/index.d.ts.map +1 -0
- package/dist/hooks/background-notification/index.js +180 -0
- package/dist/hooks/background-notification/index.js.map +1 -0
- package/dist/hooks/background-notification/types.d.ts +64 -0
- package/dist/hooks/background-notification/types.d.ts.map +1 -0
- package/dist/hooks/background-notification/types.js +8 -0
- package/dist/hooks/background-notification/types.js.map +1 -0
- package/dist/hooks/bridge.d.ts +68 -0
- package/dist/hooks/bridge.d.ts.map +1 -0
- package/dist/hooks/bridge.js +321 -0
- package/dist/hooks/bridge.js.map +1 -0
- package/dist/hooks/comment-checker/constants.d.ts +28 -0
- package/dist/hooks/comment-checker/constants.d.ts.map +1 -0
- package/dist/hooks/comment-checker/constants.js +189 -0
- package/dist/hooks/comment-checker/constants.js.map +1 -0
- package/dist/hooks/comment-checker/filters.d.ts +39 -0
- package/dist/hooks/comment-checker/filters.d.ts.map +1 -0
- package/dist/hooks/comment-checker/filters.js +126 -0
- package/dist/hooks/comment-checker/filters.js.map +1 -0
- package/dist/hooks/comment-checker/index.d.ts +58 -0
- package/dist/hooks/comment-checker/index.d.ts.map +1 -0
- package/dist/hooks/comment-checker/index.js +298 -0
- package/dist/hooks/comment-checker/index.js.map +1 -0
- package/dist/hooks/comment-checker/types.d.ts +88 -0
- package/dist/hooks/comment-checker/types.d.ts.map +1 -0
- package/dist/hooks/comment-checker/types.js +9 -0
- package/dist/hooks/comment-checker/types.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +28 -0
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/constants.js +85 -0
- package/dist/hooks/context-window-limit-recovery/constants.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/index.d.ts +62 -0
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/index.js +201 -0
- package/dist/hooks/context-window-limit-recovery/index.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +31 -0
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/parser.js +241 -0
- package/dist/hooks/context-window-limit-recovery/parser.js.map +1 -0
- package/dist/hooks/context-window-limit-recovery/types.d.ts +84 -0
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +1 -0
- package/dist/hooks/context-window-limit-recovery/types.js +34 -0
- package/dist/hooks/context-window-limit-recovery/types.js.map +1 -0
- package/dist/hooks/directory-readme-injector/constants.d.ts +15 -0
- package/dist/hooks/directory-readme-injector/constants.d.ts.map +1 -0
- package/dist/hooks/directory-readme-injector/constants.js +17 -0
- package/dist/hooks/directory-readme-injector/constants.js.map +1 -0
- package/dist/hooks/directory-readme-injector/index.d.ts +41 -0
- package/dist/hooks/directory-readme-injector/index.d.ts.map +1 -0
- package/dist/hooks/directory-readme-injector/index.js +162 -0
- package/dist/hooks/directory-readme-injector/index.js.map +1 -0
- package/dist/hooks/directory-readme-injector/storage.d.ts +20 -0
- package/dist/hooks/directory-readme-injector/storage.d.ts.map +1 -0
- package/dist/hooks/directory-readme-injector/storage.js +56 -0
- package/dist/hooks/directory-readme-injector/storage.js.map +1 -0
- package/dist/hooks/directory-readme-injector/types.d.ts +20 -0
- package/dist/hooks/directory-readme-injector/types.d.ts.map +1 -0
- package/dist/hooks/directory-readme-injector/types.js +9 -0
- package/dist/hooks/directory-readme-injector/types.js.map +1 -0
- package/dist/hooks/edit-error-recovery/index.d.ts +62 -0
- package/dist/hooks/edit-error-recovery/index.d.ts.map +1 -0
- package/dist/hooks/edit-error-recovery/index.js +89 -0
- package/dist/hooks/edit-error-recovery/index.js.map +1 -0
- package/dist/hooks/empty-message-sanitizer/constants.d.ts +33 -0
- package/dist/hooks/empty-message-sanitizer/constants.d.ts.map +1 -0
- package/dist/hooks/empty-message-sanitizer/constants.js +37 -0
- package/dist/hooks/empty-message-sanitizer/constants.js.map +1 -0
- package/dist/hooks/empty-message-sanitizer/index.d.ts +59 -0
- package/dist/hooks/empty-message-sanitizer/index.d.ts.map +1 -0
- package/dist/hooks/empty-message-sanitizer/index.js +171 -0
- package/dist/hooks/empty-message-sanitizer/index.js.map +1 -0
- package/dist/hooks/empty-message-sanitizer/types.d.ts +79 -0
- package/dist/hooks/empty-message-sanitizer/types.d.ts.map +1 -0
- package/dist/hooks/empty-message-sanitizer/types.js +10 -0
- package/dist/hooks/empty-message-sanitizer/types.js.map +1 -0
- package/dist/hooks/index.d.ts +35 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +81 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/keyword-detector/index.d.ts +40 -0
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -0
- package/dist/hooks/keyword-detector/index.js +88 -0
- package/dist/hooks/keyword-detector/index.js.map +1 -0
- package/dist/hooks/non-interactive-env/constants.d.ts +35 -0
- package/dist/hooks/non-interactive-env/constants.d.ts.map +1 -0
- package/dist/hooks/non-interactive-env/constants.js +69 -0
- package/dist/hooks/non-interactive-env/constants.js.map +1 -0
- package/dist/hooks/non-interactive-env/detector.d.ts +2 -0
- package/dist/hooks/non-interactive-env/detector.d.ts.map +1 -0
- package/dist/hooks/non-interactive-env/detector.js +16 -0
- package/dist/hooks/non-interactive-env/detector.js.map +1 -0
- package/dist/hooks/non-interactive-env/index.d.ts +14 -0
- package/dist/hooks/non-interactive-env/index.d.ts.map +1 -0
- package/dist/hooks/non-interactive-env/index.js +72 -0
- package/dist/hooks/non-interactive-env/index.js.map +1 -0
- package/dist/hooks/non-interactive-env/types.d.ts +14 -0
- package/dist/hooks/non-interactive-env/types.d.ts.map +1 -0
- package/dist/hooks/non-interactive-env/types.js +2 -0
- package/dist/hooks/non-interactive-env/types.js.map +1 -0
- package/dist/hooks/olympus-orchestrator/constants.d.ts +23 -0
- package/dist/hooks/olympus-orchestrator/constants.d.ts.map +1 -0
- package/dist/hooks/olympus-orchestrator/constants.js +142 -0
- package/dist/hooks/olympus-orchestrator/constants.js.map +1 -0
- package/dist/hooks/olympus-orchestrator/index.d.ts +113 -0
- package/dist/hooks/olympus-orchestrator/index.d.ts.map +1 -0
- package/dist/hooks/olympus-orchestrator/index.js +283 -0
- package/dist/hooks/olympus-orchestrator/index.js.map +1 -0
- package/dist/hooks/persistent-mode/index.d.ts +40 -0
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -0
- package/dist/hooks/persistent-mode/index.js +322 -0
- package/dist/hooks/persistent-mode/index.js.map +1 -0
- package/dist/hooks/plugin-patterns/index.d.ts +107 -0
- package/dist/hooks/plugin-patterns/index.d.ts.map +1 -0
- package/dist/hooks/plugin-patterns/index.js +289 -0
- package/dist/hooks/plugin-patterns/index.js.map +1 -0
- package/dist/hooks/preemptive-compaction/constants.d.ts +48 -0
- package/dist/hooks/preemptive-compaction/constants.d.ts.map +1 -0
- package/dist/hooks/preemptive-compaction/constants.js +90 -0
- package/dist/hooks/preemptive-compaction/constants.js.map +1 -0
- package/dist/hooks/preemptive-compaction/index.d.ts +55 -0
- package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -0
- package/dist/hooks/preemptive-compaction/index.js +227 -0
- package/dist/hooks/preemptive-compaction/index.js.map +1 -0
- package/dist/hooks/preemptive-compaction/types.d.ts +76 -0
- package/dist/hooks/preemptive-compaction/types.d.ts.map +1 -0
- package/dist/hooks/preemptive-compaction/types.js +9 -0
- package/dist/hooks/preemptive-compaction/types.js.map +1 -0
- package/dist/hooks/ralph-loop/index.d.ts +60 -0
- package/dist/hooks/ralph-loop/index.d.ts.map +1 -0
- package/dist/hooks/ralph-loop/index.js +155 -0
- package/dist/hooks/ralph-loop/index.js.map +1 -0
- package/dist/hooks/ralph-verifier/index.d.ts +72 -0
- package/dist/hooks/ralph-verifier/index.d.ts.map +1 -0
- package/dist/hooks/ralph-verifier/index.js +223 -0
- package/dist/hooks/ralph-verifier/index.js.map +1 -0
- package/dist/hooks/rules-injector/constants.d.ts +25 -0
- package/dist/hooks/rules-injector/constants.d.ts.map +1 -0
- package/dist/hooks/rules-injector/constants.js +40 -0
- package/dist/hooks/rules-injector/constants.js.map +1 -0
- package/dist/hooks/rules-injector/finder.d.ts +24 -0
- package/dist/hooks/rules-injector/finder.d.ts.map +1 -0
- package/dist/hooks/rules-injector/finder.js +215 -0
- package/dist/hooks/rules-injector/finder.js.map +1 -0
- package/dist/hooks/rules-injector/index.d.ts +45 -0
- package/dist/hooks/rules-injector/index.d.ts.map +1 -0
- package/dist/hooks/rules-injector/index.js +187 -0
- package/dist/hooks/rules-injector/index.js.map +1 -0
- package/dist/hooks/rules-injector/matcher.d.ts +25 -0
- package/dist/hooks/rules-injector/matcher.d.ts.map +1 -0
- package/dist/hooks/rules-injector/matcher.js +70 -0
- package/dist/hooks/rules-injector/matcher.js.map +1 -0
- package/dist/hooks/rules-injector/parser.d.ts +20 -0
- package/dist/hooks/rules-injector/parser.d.ts.map +1 -0
- package/dist/hooks/rules-injector/parser.js +179 -0
- package/dist/hooks/rules-injector/parser.js.map +1 -0
- package/dist/hooks/rules-injector/storage.d.ts +26 -0
- package/dist/hooks/rules-injector/storage.d.ts.map +1 -0
- package/dist/hooks/rules-injector/storage.js +61 -0
- package/dist/hooks/rules-injector/storage.js.map +1 -0
- package/dist/hooks/rules-injector/types.d.ts +101 -0
- package/dist/hooks/rules-injector/types.d.ts.map +1 -0
- package/dist/hooks/rules-injector/types.js +10 -0
- package/dist/hooks/rules-injector/types.js.map +1 -0
- package/dist/hooks/session-recovery/constants.d.ts +56 -0
- package/dist/hooks/session-recovery/constants.d.ts.map +1 -0
- package/dist/hooks/session-recovery/constants.js +78 -0
- package/dist/hooks/session-recovery/constants.js.map +1 -0
- package/dist/hooks/session-recovery/index.d.ts +53 -0
- package/dist/hooks/session-recovery/index.d.ts.map +1 -0
- package/dist/hooks/session-recovery/index.js +321 -0
- package/dist/hooks/session-recovery/index.js.map +1 -0
- package/dist/hooks/session-recovery/storage.d.ts +76 -0
- package/dist/hooks/session-recovery/storage.d.ts.map +1 -0
- package/dist/hooks/session-recovery/storage.js +383 -0
- package/dist/hooks/session-recovery/storage.js.map +1 -0
- package/dist/hooks/session-recovery/types.d.ts +145 -0
- package/dist/hooks/session-recovery/types.d.ts.map +1 -0
- package/dist/hooks/session-recovery/types.js +8 -0
- package/dist/hooks/session-recovery/types.js.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +23 -0
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/constants.js +142 -0
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +113 -0
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +1 -0
- package/dist/hooks/sisyphus-orchestrator/index.js +283 -0
- package/dist/hooks/sisyphus-orchestrator/index.js.map +1 -0
- package/dist/hooks/the-ascent/index.d.ts +60 -0
- package/dist/hooks/the-ascent/index.d.ts.map +1 -0
- package/dist/hooks/the-ascent/index.js +155 -0
- package/dist/hooks/the-ascent/index.js.map +1 -0
- package/dist/hooks/think-mode/detector.d.ts +28 -0
- package/dist/hooks/think-mode/detector.d.ts.map +1 -0
- package/dist/hooks/think-mode/detector.js +105 -0
- package/dist/hooks/think-mode/detector.js.map +1 -0
- package/dist/hooks/think-mode/index.d.ts +70 -0
- package/dist/hooks/think-mode/index.d.ts.map +1 -0
- package/dist/hooks/think-mode/index.js +144 -0
- package/dist/hooks/think-mode/index.js.map +1 -0
- package/dist/hooks/think-mode/switcher.d.ts +39 -0
- package/dist/hooks/think-mode/switcher.d.ts.map +1 -0
- package/dist/hooks/think-mode/switcher.js +180 -0
- package/dist/hooks/think-mode/switcher.js.map +1 -0
- package/dist/hooks/think-mode/types.d.ts +60 -0
- package/dist/hooks/think-mode/types.d.ts.map +1 -0
- package/dist/hooks/think-mode/types.js +9 -0
- package/dist/hooks/think-mode/types.js.map +1 -0
- package/dist/hooks/thinking-block-validator/constants.d.ts +37 -0
- package/dist/hooks/thinking-block-validator/constants.d.ts.map +1 -0
- package/dist/hooks/thinking-block-validator/constants.js +50 -0
- package/dist/hooks/thinking-block-validator/constants.js.map +1 -0
- package/dist/hooks/thinking-block-validator/index.d.ts +35 -0
- package/dist/hooks/thinking-block-validator/index.d.ts.map +1 -0
- package/dist/hooks/thinking-block-validator/index.js +156 -0
- package/dist/hooks/thinking-block-validator/index.js.map +1 -0
- package/dist/hooks/thinking-block-validator/types.d.ts +67 -0
- package/dist/hooks/thinking-block-validator/types.d.ts.map +1 -0
- package/dist/hooks/thinking-block-validator/types.js +9 -0
- package/dist/hooks/thinking-block-validator/types.js.map +1 -0
- package/dist/hooks/todo-continuation/index.d.ts +39 -0
- package/dist/hooks/todo-continuation/index.d.ts.map +1 -0
- package/dist/hooks/todo-continuation/index.js +140 -0
- package/dist/hooks/todo-continuation/index.js.map +1 -0
- package/dist/hooks/ultrawork-state/index.d.ts +60 -0
- package/dist/hooks/ultrawork-state/index.d.ts.map +1 -0
- package/dist/hooks/ultrawork-state/index.js +207 -0
- package/dist/hooks/ultrawork-state/index.js.map +1 -0
- package/dist/index.d.ts +117 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +175 -0
- package/dist/index.js.map +1 -0
- package/dist/installer/hooks.d.ts +196 -0
- package/dist/installer/hooks.d.ts.map +1 -0
- package/dist/installer/hooks.js +1385 -0
- package/dist/installer/hooks.js.map +1 -0
- package/dist/installer/index.d.ts +92 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +2249 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/servers.d.ts +77 -0
- package/dist/mcp/servers.d.ts.map +1 -0
- package/dist/mcp/servers.js +122 -0
- package/dist/mcp/servers.js.map +1 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +5 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/types.d.ts +159 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +5 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/tools/ast-tools.d.ts +63 -0
- package/dist/tools/ast-tools.d.ts.map +1 -0
- package/dist/tools/ast-tools.js +450 -0
- package/dist/tools/ast-tools.js.map +1 -0
- package/dist/tools/index.d.ts +52 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +120 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/lsp/client.d.ts +201 -0
- package/dist/tools/lsp/client.d.ts.map +1 -0
- package/dist/tools/lsp/client.js +454 -0
- package/dist/tools/lsp/client.js.map +1 -0
- package/dist/tools/lsp/index.d.ts +9 -0
- package/dist/tools/lsp/index.d.ts.map +1 -0
- package/dist/tools/lsp/index.js +7 -0
- package/dist/tools/lsp/index.js.map +1 -0
- package/dist/tools/lsp/servers.d.ts +37 -0
- package/dist/tools/lsp/servers.d.ts.map +1 -0
- package/dist/tools/lsp/servers.js +149 -0
- package/dist/tools/lsp/servers.js.map +1 -0
- package/dist/tools/lsp/utils.d.ts +58 -0
- package/dist/tools/lsp/utils.d.ts.map +1 -0
- package/dist/tools/lsp/utils.js +236 -0
- package/dist/tools/lsp/utils.js.map +1 -0
- package/dist/tools/lsp-tools.d.ts +151 -0
- package/dist/tools/lsp-tools.d.ts.map +1 -0
- package/dist/tools/lsp-tools.js +358 -0
- package/dist/tools/lsp-tools.js.map +1 -0
- package/package.json +85 -0
- package/scripts/claude-sisyphus.sh +9 -0
- package/scripts/install.sh +1774 -0
- package/scripts/keyword-detector.mjs +209 -0
- package/scripts/keyword-detector.sh +71 -0
- package/scripts/persistent-mode.mjs +241 -0
- package/scripts/persistent-mode.sh +300 -0
- package/scripts/post-tool-verifier.mjs +217 -0
- package/scripts/post-tool-verifier.sh +196 -0
- package/scripts/pre-tool-enforcer.mjs +99 -0
- package/scripts/pre-tool-enforcer.sh +76 -0
- package/scripts/sisyphus-aliases.sh +18 -0
- package/scripts/stop-continuation.sh +31 -0
- package/scripts/test-pr25.sh +525 -0
- package/scripts/uninstall.sh +171 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complexity Signal Extraction
|
|
3
|
+
*
|
|
4
|
+
* Extracts complexity signals from task prompts to inform routing decisions.
|
|
5
|
+
* Signals are categorized into lexical, structural, and context types.
|
|
6
|
+
*/
|
|
7
|
+
import { COMPLEXITY_KEYWORDS } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Extract lexical signals from task prompt
|
|
10
|
+
* These are fast, regex-based extractions that don't require model calls
|
|
11
|
+
*/
|
|
12
|
+
export function extractLexicalSignals(prompt) {
|
|
13
|
+
const lowerPrompt = prompt.toLowerCase();
|
|
14
|
+
const words = prompt.split(/\s+/).filter(w => w.length > 0);
|
|
15
|
+
return {
|
|
16
|
+
wordCount: words.length,
|
|
17
|
+
filePathCount: countFilePaths(prompt),
|
|
18
|
+
codeBlockCount: countCodeBlocks(prompt),
|
|
19
|
+
hasArchitectureKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.architecture),
|
|
20
|
+
hasDebuggingKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.debugging),
|
|
21
|
+
hasSimpleKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.simple),
|
|
22
|
+
hasRiskKeywords: hasKeywords(lowerPrompt, COMPLEXITY_KEYWORDS.risk),
|
|
23
|
+
questionDepth: detectQuestionDepth(lowerPrompt),
|
|
24
|
+
hasImplicitRequirements: detectImplicitRequirements(lowerPrompt),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Extract structural signals from task prompt
|
|
29
|
+
* These require more sophisticated parsing
|
|
30
|
+
*/
|
|
31
|
+
export function extractStructuralSignals(prompt) {
|
|
32
|
+
const lowerPrompt = prompt.toLowerCase();
|
|
33
|
+
return {
|
|
34
|
+
estimatedSubtasks: estimateSubtasks(prompt),
|
|
35
|
+
crossFileDependencies: detectCrossFileDependencies(prompt),
|
|
36
|
+
hasTestRequirements: detectTestRequirements(lowerPrompt),
|
|
37
|
+
domainSpecificity: detectDomain(lowerPrompt),
|
|
38
|
+
requiresExternalKnowledge: detectExternalKnowledge(lowerPrompt),
|
|
39
|
+
reversibility: assessReversibility(lowerPrompt),
|
|
40
|
+
impactScope: assessImpactScope(prompt),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Extract context signals from routing context
|
|
45
|
+
*/
|
|
46
|
+
export function extractContextSignals(context) {
|
|
47
|
+
return {
|
|
48
|
+
previousFailures: context.previousFailures ?? 0,
|
|
49
|
+
conversationTurns: context.conversationTurns ?? 0,
|
|
50
|
+
planComplexity: context.planTasks ?? 0,
|
|
51
|
+
remainingTasks: context.remainingTasks ?? 0,
|
|
52
|
+
agentChainDepth: context.agentChainDepth ?? 0,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Extract all complexity signals
|
|
57
|
+
*/
|
|
58
|
+
export function extractAllSignals(prompt, context) {
|
|
59
|
+
return {
|
|
60
|
+
lexical: extractLexicalSignals(prompt),
|
|
61
|
+
structural: extractStructuralSignals(prompt),
|
|
62
|
+
context: extractContextSignals(context),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
// ============ Helper Functions ============
|
|
66
|
+
/**
|
|
67
|
+
* Count file paths in prompt
|
|
68
|
+
*/
|
|
69
|
+
function countFilePaths(prompt) {
|
|
70
|
+
// Match common file path patterns
|
|
71
|
+
const patterns = [
|
|
72
|
+
/(?:^|\s)[.\/~]?(?:[\w-]+\/)+[\w.-]+\.\w+/gm, // Unix-style paths
|
|
73
|
+
/`[^`]+\.\w+`/g, // Backtick-quoted files
|
|
74
|
+
/['"][^'"]+\.\w+['"]/g, // Quoted files
|
|
75
|
+
];
|
|
76
|
+
let count = 0;
|
|
77
|
+
for (const pattern of patterns) {
|
|
78
|
+
const matches = prompt.match(pattern);
|
|
79
|
+
if (matches)
|
|
80
|
+
count += matches.length;
|
|
81
|
+
}
|
|
82
|
+
return Math.min(count, 20); // Cap at reasonable max
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Count code blocks in prompt
|
|
86
|
+
*/
|
|
87
|
+
function countCodeBlocks(prompt) {
|
|
88
|
+
const fencedBlocks = (prompt.match(/```[\s\S]*?```/g) || []).length;
|
|
89
|
+
const indentedBlocks = (prompt.match(/(?:^|\n)(?:\s{4}|\t)[^\n]+(?:\n(?:\s{4}|\t)[^\n]+)*/g) || []).length;
|
|
90
|
+
return fencedBlocks + Math.floor(indentedBlocks / 2);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if prompt contains any of the keywords
|
|
94
|
+
*/
|
|
95
|
+
function hasKeywords(prompt, keywords) {
|
|
96
|
+
return keywords.some(kw => prompt.includes(kw));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Detect question depth
|
|
100
|
+
* 'why' questions require deeper reasoning than 'what' or 'where'
|
|
101
|
+
*/
|
|
102
|
+
function detectQuestionDepth(prompt) {
|
|
103
|
+
if (/\bwhy\b.*\?|\bwhy\s+(is|are|does|do|did|would|should|can)/i.test(prompt)) {
|
|
104
|
+
return 'why';
|
|
105
|
+
}
|
|
106
|
+
if (/\bhow\b.*\?|\bhow\s+(do|does|can|should|would|to)/i.test(prompt)) {
|
|
107
|
+
return 'how';
|
|
108
|
+
}
|
|
109
|
+
if (/\bwhat\b.*\?|\bwhat\s+(is|are|does|do)/i.test(prompt)) {
|
|
110
|
+
return 'what';
|
|
111
|
+
}
|
|
112
|
+
if (/\bwhere\b.*\?|\bwhere\s+(is|are|does|do|can)/i.test(prompt)) {
|
|
113
|
+
return 'where';
|
|
114
|
+
}
|
|
115
|
+
return 'none';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Detect implicit requirements (vague statements without clear deliverables)
|
|
119
|
+
*/
|
|
120
|
+
function detectImplicitRequirements(prompt) {
|
|
121
|
+
const vaguePatterns = [
|
|
122
|
+
/\bmake it better\b/,
|
|
123
|
+
/\bimprove\b(?!.*(?:by|to|so that))/,
|
|
124
|
+
/\bfix\b(?!.*(?:the|this|that|in|at))/,
|
|
125
|
+
/\boptimize\b(?!.*(?:by|for|to))/,
|
|
126
|
+
/\bclean up\b/,
|
|
127
|
+
/\brefactor\b(?!.*(?:to|by|into))/,
|
|
128
|
+
];
|
|
129
|
+
return vaguePatterns.some(p => p.test(prompt));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Estimate number of subtasks
|
|
133
|
+
*/
|
|
134
|
+
function estimateSubtasks(prompt) {
|
|
135
|
+
let count = 1;
|
|
136
|
+
// Count explicit list items
|
|
137
|
+
const bulletPoints = (prompt.match(/^[\s]*[-*•]\s/gm) || []).length;
|
|
138
|
+
const numberedItems = (prompt.match(/^[\s]*\d+[.)]\s/gm) || []).length;
|
|
139
|
+
count += bulletPoints + numberedItems;
|
|
140
|
+
// Count 'and' conjunctions that might indicate multiple tasks
|
|
141
|
+
const andCount = (prompt.match(/\band\b/gi) || []).length;
|
|
142
|
+
count += Math.floor(andCount / 2);
|
|
143
|
+
// Count 'then' indicators
|
|
144
|
+
const thenCount = (prompt.match(/\bthen\b/gi) || []).length;
|
|
145
|
+
count += thenCount;
|
|
146
|
+
return Math.min(count, 10);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Detect if task involves changes across multiple files
|
|
150
|
+
*/
|
|
151
|
+
function detectCrossFileDependencies(prompt) {
|
|
152
|
+
const fileCount = countFilePaths(prompt);
|
|
153
|
+
if (fileCount >= 2)
|
|
154
|
+
return true;
|
|
155
|
+
const crossFileIndicators = [
|
|
156
|
+
/multiple files/i,
|
|
157
|
+
/across.*files/i,
|
|
158
|
+
/several.*files/i,
|
|
159
|
+
/all.*files/i,
|
|
160
|
+
/throughout.*codebase/i,
|
|
161
|
+
/entire.*project/i,
|
|
162
|
+
/whole.*system/i,
|
|
163
|
+
];
|
|
164
|
+
return crossFileIndicators.some(p => p.test(prompt));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Detect test requirements
|
|
168
|
+
*/
|
|
169
|
+
function detectTestRequirements(prompt) {
|
|
170
|
+
const testIndicators = [
|
|
171
|
+
/\btest/i,
|
|
172
|
+
/\bspec\b/i,
|
|
173
|
+
/make sure.*work/i,
|
|
174
|
+
/verify/i,
|
|
175
|
+
/ensure.*pass/i,
|
|
176
|
+
/\bTDD\b/,
|
|
177
|
+
/unit test/i,
|
|
178
|
+
/integration test/i,
|
|
179
|
+
];
|
|
180
|
+
return testIndicators.some(p => p.test(prompt));
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Detect domain specificity
|
|
184
|
+
*/
|
|
185
|
+
function detectDomain(prompt) {
|
|
186
|
+
const domains = {
|
|
187
|
+
frontend: [
|
|
188
|
+
/\b(react|vue|angular|svelte|css|html|jsx|tsx|component|ui|ux|styling|tailwind|sass|scss)\b/i,
|
|
189
|
+
/\b(button|modal|form|input|layout|responsive|animation)\b/i,
|
|
190
|
+
],
|
|
191
|
+
backend: [
|
|
192
|
+
/\b(api|endpoint|database|query|sql|graphql|rest|server|auth|middleware)\b/i,
|
|
193
|
+
/\b(node|express|fastify|nest|django|flask|rails)\b/i,
|
|
194
|
+
],
|
|
195
|
+
infrastructure: [
|
|
196
|
+
/\b(docker|kubernetes|k8s|terraform|aws|gcp|azure|ci|cd|deploy|container)\b/i,
|
|
197
|
+
/\b(nginx|load.?balancer|scaling|monitoring|logging)\b/i,
|
|
198
|
+
],
|
|
199
|
+
security: [
|
|
200
|
+
/\b(security|auth|oauth|jwt|encryption|vulnerability|xss|csrf|injection)\b/i,
|
|
201
|
+
/\b(password|credential|secret|token|permission)\b/i,
|
|
202
|
+
],
|
|
203
|
+
};
|
|
204
|
+
for (const [domain, patterns] of Object.entries(domains)) {
|
|
205
|
+
if (patterns.some(p => p.test(prompt))) {
|
|
206
|
+
return domain;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return 'generic';
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Detect if external knowledge is required
|
|
213
|
+
*/
|
|
214
|
+
function detectExternalKnowledge(prompt) {
|
|
215
|
+
const externalIndicators = [
|
|
216
|
+
/\bdocs?\b/i,
|
|
217
|
+
/\bdocumentation\b/i,
|
|
218
|
+
/\bofficial\b/i,
|
|
219
|
+
/\blibrary\b/i,
|
|
220
|
+
/\bpackage\b/i,
|
|
221
|
+
/\bframework\b/i,
|
|
222
|
+
/\bhow does.*work\b/i,
|
|
223
|
+
/\bbest practice/i,
|
|
224
|
+
];
|
|
225
|
+
return externalIndicators.some(p => p.test(prompt));
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Assess reversibility of changes
|
|
229
|
+
*/
|
|
230
|
+
function assessReversibility(prompt) {
|
|
231
|
+
const difficultIndicators = [
|
|
232
|
+
/\bmigrat/i,
|
|
233
|
+
/\bproduction\b/i,
|
|
234
|
+
/\bdata.*loss/i,
|
|
235
|
+
/\bdelete.*all/i,
|
|
236
|
+
/\bdrop.*table/i,
|
|
237
|
+
/\birreversible/i,
|
|
238
|
+
/\bpermanent/i,
|
|
239
|
+
];
|
|
240
|
+
const moderateIndicators = [
|
|
241
|
+
/\brefactor/i,
|
|
242
|
+
/\brestructure/i,
|
|
243
|
+
/\brename.*across/i,
|
|
244
|
+
/\bmove.*files/i,
|
|
245
|
+
/\bchange.*schema/i,
|
|
246
|
+
];
|
|
247
|
+
if (difficultIndicators.some(p => p.test(prompt)))
|
|
248
|
+
return 'difficult';
|
|
249
|
+
if (moderateIndicators.some(p => p.test(prompt)))
|
|
250
|
+
return 'moderate';
|
|
251
|
+
return 'easy';
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Assess impact scope of changes
|
|
255
|
+
*/
|
|
256
|
+
function assessImpactScope(prompt) {
|
|
257
|
+
const systemWideIndicators = [
|
|
258
|
+
/\bentire\b/i,
|
|
259
|
+
/\ball\s+(?:files|components|modules)/i,
|
|
260
|
+
/\bwhole\s+(?:project|codebase|system)/i,
|
|
261
|
+
/\bsystem.?wide/i,
|
|
262
|
+
/\bglobal/i,
|
|
263
|
+
/\beverywhere/i,
|
|
264
|
+
/\bthroughout/i,
|
|
265
|
+
];
|
|
266
|
+
const moduleIndicators = [
|
|
267
|
+
/\bmodule/i,
|
|
268
|
+
/\bpackage/i,
|
|
269
|
+
/\bservice/i,
|
|
270
|
+
/\bfeature/i,
|
|
271
|
+
/\bcomponent/i,
|
|
272
|
+
/\blayer/i,
|
|
273
|
+
];
|
|
274
|
+
if (systemWideIndicators.some(p => p.test(prompt)))
|
|
275
|
+
return 'system-wide';
|
|
276
|
+
// Check for multiple files (indicates module-level at least)
|
|
277
|
+
if (countFilePaths(prompt) >= 3)
|
|
278
|
+
return 'module';
|
|
279
|
+
if (moduleIndicators.some(p => p.test(prompt)))
|
|
280
|
+
return 'module';
|
|
281
|
+
return 'local';
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../src/features/model-routing/signals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Routing Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the intelligent model routing system that routes
|
|
5
|
+
* sub-agent tasks to appropriate models (Opus/Sonnet/Haiku) based on
|
|
6
|
+
* task complexity.
|
|
7
|
+
*/
|
|
8
|
+
import type { ModelType } from '../../shared/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Complexity tier for task routing
|
|
11
|
+
*/
|
|
12
|
+
export type ComplexityTier = 'LOW' | 'MEDIUM' | 'HIGH';
|
|
13
|
+
/**
|
|
14
|
+
* Model tier mapping to actual Claude models
|
|
15
|
+
*/
|
|
16
|
+
export declare const TIER_MODELS: Record<ComplexityTier, string>;
|
|
17
|
+
/**
|
|
18
|
+
* Model tier to simple model type mapping
|
|
19
|
+
*/
|
|
20
|
+
export declare const TIER_TO_MODEL_TYPE: Record<ComplexityTier, ModelType>;
|
|
21
|
+
/**
|
|
22
|
+
* Lexical/syntactic signals that can be extracted without model calls
|
|
23
|
+
*/
|
|
24
|
+
export interface LexicalSignals {
|
|
25
|
+
/** Word count of the task prompt */
|
|
26
|
+
wordCount: number;
|
|
27
|
+
/** Number of file paths mentioned */
|
|
28
|
+
filePathCount: number;
|
|
29
|
+
/** Number of code blocks in the prompt */
|
|
30
|
+
codeBlockCount: number;
|
|
31
|
+
/** Contains architecture-related keywords */
|
|
32
|
+
hasArchitectureKeywords: boolean;
|
|
33
|
+
/** Contains debugging-related keywords */
|
|
34
|
+
hasDebuggingKeywords: boolean;
|
|
35
|
+
/** Contains simple search keywords */
|
|
36
|
+
hasSimpleKeywords: boolean;
|
|
37
|
+
/** Contains risk/critical keywords */
|
|
38
|
+
hasRiskKeywords: boolean;
|
|
39
|
+
/** Question depth: 'why' > 'how' > 'what' > 'where' */
|
|
40
|
+
questionDepth: 'why' | 'how' | 'what' | 'where' | 'none';
|
|
41
|
+
/** Has implicit requirements (statements without clear deliverables) */
|
|
42
|
+
hasImplicitRequirements: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Structural signals that require parsing
|
|
46
|
+
*/
|
|
47
|
+
export interface StructuralSignals {
|
|
48
|
+
/** Estimated number of subtasks */
|
|
49
|
+
estimatedSubtasks: number;
|
|
50
|
+
/** Whether changes span multiple files */
|
|
51
|
+
crossFileDependencies: boolean;
|
|
52
|
+
/** Whether tests are required */
|
|
53
|
+
hasTestRequirements: boolean;
|
|
54
|
+
/** Domain specificity of the task */
|
|
55
|
+
domainSpecificity: 'generic' | 'frontend' | 'backend' | 'infrastructure' | 'security';
|
|
56
|
+
/** Whether external knowledge is needed */
|
|
57
|
+
requiresExternalKnowledge: boolean;
|
|
58
|
+
/** How reversible the changes are */
|
|
59
|
+
reversibility: 'easy' | 'moderate' | 'difficult';
|
|
60
|
+
/** Scope of impact */
|
|
61
|
+
impactScope: 'local' | 'module' | 'system-wide';
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Context signals from session state
|
|
65
|
+
*/
|
|
66
|
+
export interface ContextSignals {
|
|
67
|
+
/** Number of previous failures on this task */
|
|
68
|
+
previousFailures: number;
|
|
69
|
+
/** Number of conversation turns */
|
|
70
|
+
conversationTurns: number;
|
|
71
|
+
/** Complexity of the active plan (number of tasks) */
|
|
72
|
+
planComplexity: number;
|
|
73
|
+
/** Number of remaining tasks in plan */
|
|
74
|
+
remainingTasks: number;
|
|
75
|
+
/** Depth of agent delegation chain */
|
|
76
|
+
agentChainDepth: number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Combined complexity signals
|
|
80
|
+
*/
|
|
81
|
+
export interface ComplexitySignals {
|
|
82
|
+
lexical: LexicalSignals;
|
|
83
|
+
structural: StructuralSignals;
|
|
84
|
+
context: ContextSignals;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Routing decision result
|
|
88
|
+
*/
|
|
89
|
+
export interface RoutingDecision {
|
|
90
|
+
/** Selected model ID */
|
|
91
|
+
model: string;
|
|
92
|
+
/** Selected model type */
|
|
93
|
+
modelType: ModelType;
|
|
94
|
+
/** Complexity tier */
|
|
95
|
+
tier: ComplexityTier;
|
|
96
|
+
/** Confidence score (0-1) */
|
|
97
|
+
confidence: number;
|
|
98
|
+
/** Reasons for the decision */
|
|
99
|
+
reasons: string[];
|
|
100
|
+
/** Adapted prompt for the tier (optional) */
|
|
101
|
+
adaptedPrompt?: string;
|
|
102
|
+
/** Whether escalation was triggered */
|
|
103
|
+
escalated: boolean;
|
|
104
|
+
/** Original tier before escalation (if escalated) */
|
|
105
|
+
originalTier?: ComplexityTier;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Context for making routing decisions
|
|
109
|
+
*/
|
|
110
|
+
export interface RoutingContext {
|
|
111
|
+
/** The task prompt to route */
|
|
112
|
+
taskPrompt: string;
|
|
113
|
+
/** Target agent type (if specified) */
|
|
114
|
+
agentType?: string;
|
|
115
|
+
/** Parent session ID for context */
|
|
116
|
+
parentSession?: string;
|
|
117
|
+
/** Number of previous failures */
|
|
118
|
+
previousFailures?: number;
|
|
119
|
+
/** Current conversation turn count */
|
|
120
|
+
conversationTurns?: number;
|
|
121
|
+
/** Active plan tasks count */
|
|
122
|
+
planTasks?: number;
|
|
123
|
+
/** Remaining plan tasks */
|
|
124
|
+
remainingTasks?: number;
|
|
125
|
+
/** Current agent chain depth */
|
|
126
|
+
agentChainDepth?: number;
|
|
127
|
+
/** Explicit model override (bypasses routing) */
|
|
128
|
+
explicitModel?: ModelType;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Routing rule definition
|
|
132
|
+
*/
|
|
133
|
+
export interface RoutingRule {
|
|
134
|
+
/** Rule name for logging/debugging */
|
|
135
|
+
name: string;
|
|
136
|
+
/** Condition function to check if rule applies */
|
|
137
|
+
condition: (context: RoutingContext, signals: ComplexitySignals) => boolean;
|
|
138
|
+
/** Action to take if condition is true */
|
|
139
|
+
action: {
|
|
140
|
+
tier: ComplexityTier | 'EXPLICIT';
|
|
141
|
+
reason: string;
|
|
142
|
+
};
|
|
143
|
+
/** Priority (higher = evaluated first) */
|
|
144
|
+
priority: number;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Routing configuration
|
|
148
|
+
*/
|
|
149
|
+
export interface RoutingConfig {
|
|
150
|
+
/** Whether routing is enabled */
|
|
151
|
+
enabled: boolean;
|
|
152
|
+
/** Default tier when no rules match */
|
|
153
|
+
defaultTier: ComplexityTier;
|
|
154
|
+
/** Whether automatic escalation is enabled */
|
|
155
|
+
escalationEnabled: boolean;
|
|
156
|
+
/** Maximum escalation attempts */
|
|
157
|
+
maxEscalations: number;
|
|
158
|
+
/** Model mapping per tier */
|
|
159
|
+
tierModels: Record<ComplexityTier, string>;
|
|
160
|
+
/** Agent-specific overrides */
|
|
161
|
+
agentOverrides?: Record<string, {
|
|
162
|
+
tier: ComplexityTier;
|
|
163
|
+
reason: string;
|
|
164
|
+
}>;
|
|
165
|
+
/** Keywords that force escalation */
|
|
166
|
+
escalationKeywords?: string[];
|
|
167
|
+
/** Keywords that suggest lower tier */
|
|
168
|
+
simplificationKeywords?: string[];
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Default routing configuration
|
|
172
|
+
*
|
|
173
|
+
* ALL agents are adaptive except orchestrators.
|
|
174
|
+
* Agent overrides are only for orchestrator-olympus (fixed to Opus).
|
|
175
|
+
*/
|
|
176
|
+
export declare const DEFAULT_ROUTING_CONFIG: RoutingConfig;
|
|
177
|
+
/**
|
|
178
|
+
* Agent categories and their default complexity tiers
|
|
179
|
+
*/
|
|
180
|
+
export declare const AGENT_CATEGORY_TIERS: Record<string, ComplexityTier>;
|
|
181
|
+
/**
|
|
182
|
+
* Keywords for complexity detection
|
|
183
|
+
*/
|
|
184
|
+
export declare const COMPLEXITY_KEYWORDS: {
|
|
185
|
+
architecture: string[];
|
|
186
|
+
debugging: string[];
|
|
187
|
+
simple: string[];
|
|
188
|
+
risk: string[];
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Prompt adaptation strategies per tier
|
|
192
|
+
*/
|
|
193
|
+
export type PromptAdaptationStrategy = 'full' | 'balanced' | 'concise';
|
|
194
|
+
export declare const TIER_PROMPT_STRATEGIES: Record<ComplexityTier, PromptAdaptationStrategy>;
|
|
195
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/model-routing/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Routing Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the intelligent model routing system that routes
|
|
5
|
+
* sub-agent tasks to appropriate models (Opus/Sonnet/Haiku) based on
|
|
6
|
+
* task complexity.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Model tier mapping to actual Claude models
|
|
10
|
+
*/
|
|
11
|
+
export const TIER_MODELS = {
|
|
12
|
+
LOW: 'claude-haiku-4-5-20251001',
|
|
13
|
+
MEDIUM: 'claude-sonnet-4-5-20250929',
|
|
14
|
+
HIGH: 'claude-opus-4-5-20251101',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Model tier to simple model type mapping
|
|
18
|
+
*/
|
|
19
|
+
export const TIER_TO_MODEL_TYPE = {
|
|
20
|
+
LOW: 'haiku',
|
|
21
|
+
MEDIUM: 'sonnet',
|
|
22
|
+
HIGH: 'opus',
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Default routing configuration
|
|
26
|
+
*
|
|
27
|
+
* ALL agents are adaptive except orchestrators.
|
|
28
|
+
* Agent overrides are only for orchestrator-olympus (fixed to Opus).
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_ROUTING_CONFIG = {
|
|
31
|
+
enabled: true,
|
|
32
|
+
defaultTier: 'MEDIUM',
|
|
33
|
+
escalationEnabled: false, // Deprecated: orchestrator routes proactively
|
|
34
|
+
maxEscalations: 0,
|
|
35
|
+
tierModels: TIER_MODELS,
|
|
36
|
+
agentOverrides: {
|
|
37
|
+
// Only orchestrators are fixed - they need Opus to analyze and delegate
|
|
38
|
+
'orchestrator-olympus': { tier: 'HIGH', reason: 'Orchestrator requires Opus to analyze and delegate' },
|
|
39
|
+
},
|
|
40
|
+
escalationKeywords: [
|
|
41
|
+
'critical', 'production', 'urgent', 'security', 'breaking',
|
|
42
|
+
'architecture', 'refactor', 'redesign', 'root cause',
|
|
43
|
+
],
|
|
44
|
+
simplificationKeywords: [
|
|
45
|
+
'find', 'list', 'show', 'where', 'search', 'locate', 'grep',
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Agent categories and their default complexity tiers
|
|
50
|
+
*/
|
|
51
|
+
export const AGENT_CATEGORY_TIERS = {
|
|
52
|
+
exploration: 'LOW',
|
|
53
|
+
utility: 'LOW',
|
|
54
|
+
specialist: 'MEDIUM',
|
|
55
|
+
orchestration: 'MEDIUM',
|
|
56
|
+
advisor: 'HIGH',
|
|
57
|
+
planner: 'HIGH',
|
|
58
|
+
reviewer: 'HIGH',
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Keywords for complexity detection
|
|
62
|
+
*/
|
|
63
|
+
export const COMPLEXITY_KEYWORDS = {
|
|
64
|
+
architecture: [
|
|
65
|
+
'architecture', 'refactor', 'redesign', 'restructure', 'reorganize',
|
|
66
|
+
'decouple', 'modularize', 'abstract', 'pattern', 'design',
|
|
67
|
+
],
|
|
68
|
+
debugging: [
|
|
69
|
+
'debug', 'diagnose', 'root cause', 'investigate', 'trace', 'analyze',
|
|
70
|
+
'why is', 'figure out', 'understand why', 'not working',
|
|
71
|
+
],
|
|
72
|
+
simple: [
|
|
73
|
+
'find', 'search', 'locate', 'list', 'show', 'where is', 'what is',
|
|
74
|
+
'get', 'fetch', 'display', 'print',
|
|
75
|
+
],
|
|
76
|
+
risk: [
|
|
77
|
+
'critical', 'production', 'urgent', 'security', 'breaking', 'dangerous',
|
|
78
|
+
'irreversible', 'data loss', 'migration', 'deploy',
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
export const TIER_PROMPT_STRATEGIES = {
|
|
82
|
+
HIGH: 'full',
|
|
83
|
+
MEDIUM: 'balanced',
|
|
84
|
+
LOW: 'concise',
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/model-routing/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmC;IACzD,GAAG,EAAE,2BAA2B;IAChC,MAAM,EAAE,4BAA4B;IACpC,IAAI,EAAE,0BAA0B;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC;IACnE,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACb,CAAC;AA+JF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACnD,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,QAAQ;IACrB,iBAAiB,EAAE,KAAK,EAAG,8CAA8C;IACzE,cAAc,EAAE,CAAC;IACjB,UAAU,EAAE,WAAW;IACvB,cAAc,EAAE;QACd,wEAAwE;QACxE,sBAAsB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oDAAoD,EAAE;KACvG;IACD,kBAAkB,EAAE;QAClB,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;QAC1D,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY;KACrD;IACD,sBAAsB,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM;KAC5D;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAmC;IAClE,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,QAAQ;IACpB,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE;QACZ,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY;QACnE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ;KAC1D;IACD,SAAS,EAAE;QACT,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS;QACpE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa;KACxD;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;QACjE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;KACnC;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;QACvE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ;KACnD;CACF,CAAC;AAOF,MAAM,CAAC,MAAM,sBAAsB,GAAqD;IACtF,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,SAAS;CACf,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Usage Reminder Constants
|
|
3
|
+
*
|
|
4
|
+
* Constants for tracking tool usage and encouraging agent delegation.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's agent-usage-reminder hook.
|
|
7
|
+
*/
|
|
8
|
+
/** Storage directory for agent usage reminder state */
|
|
9
|
+
export declare const OLYMPUS_STORAGE_DIR: string;
|
|
10
|
+
export declare const AGENT_USAGE_REMINDER_STORAGE: string;
|
|
11
|
+
/** All tool names normalized to lowercase for case-insensitive matching */
|
|
12
|
+
export declare const TARGET_TOOLS: Set<string>;
|
|
13
|
+
/** Agent tools that indicate agent usage */
|
|
14
|
+
export declare const AGENT_TOOLS: Set<string>;
|
|
15
|
+
/** Reminder message shown to users */
|
|
16
|
+
export declare const REMINDER_MESSAGE = "\n[Agent Usage Reminder]\n\nYou called a search/fetch tool directly without leveraging specialized agents.\n\nRECOMMENDED: Use Task tool with explore/librarian agents for better results:\n\n```\n// Parallel exploration - fire multiple agents simultaneously\nTask(agent=\"explore\", prompt=\"Find all files matching pattern X\")\nTask(agent=\"explore\", prompt=\"Search for implementation of Y\")\nTask(agent=\"librarian\", prompt=\"Lookup documentation for Z\")\n\n// Then continue your work while they run in background\n// System will notify you when each completes\n```\n\nWHY:\n- Agents can perform deeper, more thorough searches\n- Background tasks run in parallel, saving time\n- Specialized agents have domain expertise\n- Reduces context window usage in main session\n\nALWAYS prefer: Multiple parallel Task calls > Direct tool calls\n";
|
|
17
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/agent-usage-reminder/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAA8B,CAAC;AAC/D,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,YAAY,aAWvB,CAAC;AAEH,4CAA4C;AAC5C,eAAO,MAAM,WAAW,aAItB,CAAC;AAEH,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,g1BAwB5B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Usage Reminder Constants
|
|
3
|
+
*
|
|
4
|
+
* Constants for tracking tool usage and encouraging agent delegation.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's agent-usage-reminder hook.
|
|
7
|
+
*/
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
import { homedir } from 'os';
|
|
10
|
+
/** Storage directory for agent usage reminder state */
|
|
11
|
+
export const OLYMPUS_STORAGE_DIR = join(homedir(), '.olympus');
|
|
12
|
+
export const AGENT_USAGE_REMINDER_STORAGE = join(OLYMPUS_STORAGE_DIR, 'agent-usage-reminder');
|
|
13
|
+
/** All tool names normalized to lowercase for case-insensitive matching */
|
|
14
|
+
export const TARGET_TOOLS = new Set([
|
|
15
|
+
'grep',
|
|
16
|
+
'safe_grep',
|
|
17
|
+
'glob',
|
|
18
|
+
'safe_glob',
|
|
19
|
+
'webfetch',
|
|
20
|
+
'context7_resolve-library-id',
|
|
21
|
+
'context7_query-docs',
|
|
22
|
+
'websearch_web_search_exa',
|
|
23
|
+
'context7_get-library-docs',
|
|
24
|
+
'grep_app_searchgithub',
|
|
25
|
+
]);
|
|
26
|
+
/** Agent tools that indicate agent usage */
|
|
27
|
+
export const AGENT_TOOLS = new Set([
|
|
28
|
+
'task',
|
|
29
|
+
'call_omo_agent',
|
|
30
|
+
'olympus_task',
|
|
31
|
+
]);
|
|
32
|
+
/** Reminder message shown to users */
|
|
33
|
+
export const REMINDER_MESSAGE = `
|
|
34
|
+
[Agent Usage Reminder]
|
|
35
|
+
|
|
36
|
+
You called a search/fetch tool directly without leveraging specialized agents.
|
|
37
|
+
|
|
38
|
+
RECOMMENDED: Use Task tool with explore/librarian agents for better results:
|
|
39
|
+
|
|
40
|
+
\`\`\`
|
|
41
|
+
// Parallel exploration - fire multiple agents simultaneously
|
|
42
|
+
Task(agent="explore", prompt="Find all files matching pattern X")
|
|
43
|
+
Task(agent="explore", prompt="Search for implementation of Y")
|
|
44
|
+
Task(agent="librarian", prompt="Lookup documentation for Z")
|
|
45
|
+
|
|
46
|
+
// Then continue your work while they run in background
|
|
47
|
+
// System will notify you when each completes
|
|
48
|
+
\`\`\`
|
|
49
|
+
|
|
50
|
+
WHY:
|
|
51
|
+
- Agents can perform deeper, more thorough searches
|
|
52
|
+
- Background tasks run in parallel, saving time
|
|
53
|
+
- Specialized agents have domain expertise
|
|
54
|
+
- Reduces context window usage in main session
|
|
55
|
+
|
|
56
|
+
ALWAYS prefer: Multiple parallel Task calls > Direct tool calls
|
|
57
|
+
`;
|
|
58
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/agent-usage-reminder/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAC9C,mBAAmB,EACnB,sBAAsB,CACvB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM;IACN,WAAW;IACX,MAAM;IACN,WAAW;IACX,UAAU;IACV,6BAA6B;IAC7B,qBAAqB;IACrB,0BAA0B;IAC1B,2BAA2B;IAC3B,uBAAuB;CACxB,CAAC,CAAC;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IACjC,MAAM;IACN,gBAAgB;IAChB,cAAc;CACf,CAAC,CAAC;AAEH,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB/B,CAAC"}
|