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,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Popular Plugin Patterns
|
|
3
|
+
*
|
|
4
|
+
* Common hook patterns from the Claude Code community:
|
|
5
|
+
* - Auto-format on file save
|
|
6
|
+
* - Lint validation before commit
|
|
7
|
+
* - Commit message validation
|
|
8
|
+
* - Test runner before commit
|
|
9
|
+
* - Type checking enforcement
|
|
10
|
+
*/
|
|
11
|
+
export interface FormatConfig {
|
|
12
|
+
/** File extensions to format */
|
|
13
|
+
extensions: string[];
|
|
14
|
+
/** Formatter command (e.g., 'prettier --write', 'black') */
|
|
15
|
+
command: string;
|
|
16
|
+
/** Whether to run on file save */
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get formatter command for a file extension
|
|
21
|
+
*/
|
|
22
|
+
export declare function getFormatter(ext: string): string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a formatter is available
|
|
25
|
+
*/
|
|
26
|
+
export declare function isFormatterAvailable(command: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Format a file using the appropriate formatter
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatFile(filePath: string): {
|
|
31
|
+
success: boolean;
|
|
32
|
+
message: string;
|
|
33
|
+
};
|
|
34
|
+
export interface LintConfig {
|
|
35
|
+
/** Lint command to run */
|
|
36
|
+
command: string;
|
|
37
|
+
/** File patterns to lint */
|
|
38
|
+
patterns: string[];
|
|
39
|
+
/** Whether to block on lint errors */
|
|
40
|
+
blocking: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get linter command for a file extension
|
|
44
|
+
*/
|
|
45
|
+
export declare function getLinter(ext: string): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Run linter on a file
|
|
48
|
+
*/
|
|
49
|
+
export declare function lintFile(filePath: string): {
|
|
50
|
+
success: boolean;
|
|
51
|
+
message: string;
|
|
52
|
+
};
|
|
53
|
+
export interface CommitConfig {
|
|
54
|
+
/** Conventional commit types allowed */
|
|
55
|
+
types: string[];
|
|
56
|
+
/** Maximum subject length */
|
|
57
|
+
maxSubjectLength: number;
|
|
58
|
+
/** Require scope */
|
|
59
|
+
requireScope: boolean;
|
|
60
|
+
/** Require body */
|
|
61
|
+
requireBody: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate a commit message against conventional commit format
|
|
65
|
+
*/
|
|
66
|
+
export declare function validateCommitMessage(message: string, config?: Partial<CommitConfig>): {
|
|
67
|
+
valid: boolean;
|
|
68
|
+
errors: string[];
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Run TypeScript type checking
|
|
72
|
+
*/
|
|
73
|
+
export declare function runTypeCheck(directory: string): {
|
|
74
|
+
success: boolean;
|
|
75
|
+
message: string;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Detect and run tests for a project
|
|
79
|
+
*/
|
|
80
|
+
export declare function runTests(directory: string): {
|
|
81
|
+
success: boolean;
|
|
82
|
+
message: string;
|
|
83
|
+
};
|
|
84
|
+
export interface PreCommitResult {
|
|
85
|
+
canCommit: boolean;
|
|
86
|
+
checks: Array<{
|
|
87
|
+
name: string;
|
|
88
|
+
passed: boolean;
|
|
89
|
+
message: string;
|
|
90
|
+
}>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Run all pre-commit checks
|
|
94
|
+
*/
|
|
95
|
+
export declare function runPreCommitChecks(directory: string, commitMessage?: string): PreCommitResult;
|
|
96
|
+
/**
|
|
97
|
+
* Generate pre-commit check reminder message
|
|
98
|
+
*/
|
|
99
|
+
export declare function getPreCommitReminderMessage(result: PreCommitResult): string;
|
|
100
|
+
/**
|
|
101
|
+
* Generate auto-format reminder message
|
|
102
|
+
*/
|
|
103
|
+
export declare function getAutoFormatMessage(filePath: string, result: {
|
|
104
|
+
success: boolean;
|
|
105
|
+
message: string;
|
|
106
|
+
}): string;
|
|
107
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/plugin-patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAgBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAS7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAkBlF;AAMD,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAYD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsBhF;AAMD,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAkBD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7B;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyCtC;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoBrF;AAMD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BjF;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,CAyBjB;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAqB3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAmB5G"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Popular Plugin Patterns
|
|
3
|
+
*
|
|
4
|
+
* Common hook patterns from the Claude Code community:
|
|
5
|
+
* - Auto-format on file save
|
|
6
|
+
* - Lint validation before commit
|
|
7
|
+
* - Commit message validation
|
|
8
|
+
* - Test runner before commit
|
|
9
|
+
* - Type checking enforcement
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from 'fs';
|
|
12
|
+
import { join, extname } from 'path';
|
|
13
|
+
import { execSync } from 'child_process';
|
|
14
|
+
const DEFAULT_FORMATTERS = {
|
|
15
|
+
'.ts': 'prettier --write',
|
|
16
|
+
'.tsx': 'prettier --write',
|
|
17
|
+
'.js': 'prettier --write',
|
|
18
|
+
'.jsx': 'prettier --write',
|
|
19
|
+
'.json': 'prettier --write',
|
|
20
|
+
'.css': 'prettier --write',
|
|
21
|
+
'.scss': 'prettier --write',
|
|
22
|
+
'.md': 'prettier --write',
|
|
23
|
+
'.py': 'black',
|
|
24
|
+
'.go': 'gofmt -w',
|
|
25
|
+
'.rs': 'rustfmt'
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Get formatter command for a file extension
|
|
29
|
+
*/
|
|
30
|
+
export function getFormatter(ext) {
|
|
31
|
+
return DEFAULT_FORMATTERS[ext] || null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if a formatter is available
|
|
35
|
+
*/
|
|
36
|
+
export function isFormatterAvailable(command) {
|
|
37
|
+
try {
|
|
38
|
+
const binary = command.split(' ')[0];
|
|
39
|
+
const checkCommand = process.platform === 'win32' ? 'where' : 'which';
|
|
40
|
+
execSync(`${checkCommand} ${binary}`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Format a file using the appropriate formatter
|
|
49
|
+
*/
|
|
50
|
+
export function formatFile(filePath) {
|
|
51
|
+
const ext = extname(filePath);
|
|
52
|
+
const formatter = getFormatter(ext);
|
|
53
|
+
if (!formatter) {
|
|
54
|
+
return { success: true, message: `No formatter configured for ${ext}` };
|
|
55
|
+
}
|
|
56
|
+
if (!isFormatterAvailable(formatter)) {
|
|
57
|
+
return { success: true, message: `Formatter ${formatter} not available` };
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
execSync(`${formatter} "${filePath}"`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
61
|
+
return { success: true, message: `Formatted ${filePath}` };
|
|
62
|
+
}
|
|
63
|
+
catch (_error) {
|
|
64
|
+
return { success: false, message: `Format failed: ${_error}` };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const DEFAULT_LINTERS = {
|
|
68
|
+
'.ts': 'eslint --fix',
|
|
69
|
+
'.tsx': 'eslint --fix',
|
|
70
|
+
'.js': 'eslint --fix',
|
|
71
|
+
'.jsx': 'eslint --fix',
|
|
72
|
+
'.py': 'ruff check --fix',
|
|
73
|
+
'.go': 'golangci-lint run',
|
|
74
|
+
'.rs': 'cargo clippy'
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Get linter command for a file extension
|
|
78
|
+
*/
|
|
79
|
+
export function getLinter(ext) {
|
|
80
|
+
return DEFAULT_LINTERS[ext] || null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Run linter on a file
|
|
84
|
+
*/
|
|
85
|
+
export function lintFile(filePath) {
|
|
86
|
+
const ext = extname(filePath);
|
|
87
|
+
const linter = getLinter(ext);
|
|
88
|
+
if (!linter) {
|
|
89
|
+
return { success: true, message: `No linter configured for ${ext}` };
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
const binary = linter.split(' ')[0];
|
|
93
|
+
const checkCommand = process.platform === 'win32' ? 'where' : 'which';
|
|
94
|
+
execSync(`${checkCommand} ${binary}`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return { success: true, message: `Linter ${linter} not available` };
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
execSync(`${linter} "${filePath}"`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
101
|
+
return { success: true, message: `Lint passed for ${filePath}` };
|
|
102
|
+
}
|
|
103
|
+
catch (_error) {
|
|
104
|
+
return { success: false, message: `Lint errors in ${filePath}` };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const DEFAULT_COMMIT_TYPES = [
|
|
108
|
+
'feat', // New feature
|
|
109
|
+
'fix', // Bug fix
|
|
110
|
+
'docs', // Documentation
|
|
111
|
+
'style', // Formatting, no code change
|
|
112
|
+
'refactor', // Refactoring
|
|
113
|
+
'perf', // Performance improvement
|
|
114
|
+
'test', // Adding tests
|
|
115
|
+
'build', // Build system changes
|
|
116
|
+
'ci', // CI configuration
|
|
117
|
+
'chore', // Maintenance
|
|
118
|
+
'revert' // Revert previous commit
|
|
119
|
+
];
|
|
120
|
+
const CONVENTIONAL_COMMIT_REGEX = /^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\([a-z0-9-]+\))?(!)?:\s.+$/;
|
|
121
|
+
/**
|
|
122
|
+
* Validate a commit message against conventional commit format
|
|
123
|
+
*/
|
|
124
|
+
export function validateCommitMessage(message, config) {
|
|
125
|
+
const errors = [];
|
|
126
|
+
const lines = message.trim().split('\n');
|
|
127
|
+
const subject = lines[0];
|
|
128
|
+
// Check subject line
|
|
129
|
+
if (!subject) {
|
|
130
|
+
errors.push('Commit message cannot be empty');
|
|
131
|
+
return { valid: false, errors };
|
|
132
|
+
}
|
|
133
|
+
// Check conventional commit format
|
|
134
|
+
if (!CONVENTIONAL_COMMIT_REGEX.test(subject)) {
|
|
135
|
+
errors.push('Subject must follow conventional commit format: type(scope?): description');
|
|
136
|
+
errors.push(`Allowed types: ${DEFAULT_COMMIT_TYPES.join(', ')}`);
|
|
137
|
+
}
|
|
138
|
+
// Check subject length
|
|
139
|
+
const maxLength = config?.maxSubjectLength || 72;
|
|
140
|
+
if (subject.length > maxLength) {
|
|
141
|
+
errors.push(`Subject line exceeds ${maxLength} characters`);
|
|
142
|
+
}
|
|
143
|
+
// Check for scope if required
|
|
144
|
+
if (config?.requireScope) {
|
|
145
|
+
const hasScope = /\([a-z0-9-]+\)/.test(subject);
|
|
146
|
+
if (!hasScope) {
|
|
147
|
+
errors.push('Scope is required in commit message');
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Check for body if required
|
|
151
|
+
if (config?.requireBody) {
|
|
152
|
+
if (lines.length < 3 || !lines[2]) {
|
|
153
|
+
errors.push('Commit body is required');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return { valid: errors.length === 0, errors };
|
|
157
|
+
}
|
|
158
|
+
// =============================================================================
|
|
159
|
+
// TYPE CHECKING PATTERN
|
|
160
|
+
// =============================================================================
|
|
161
|
+
/**
|
|
162
|
+
* Run TypeScript type checking
|
|
163
|
+
*/
|
|
164
|
+
export function runTypeCheck(directory) {
|
|
165
|
+
const tsconfigPath = join(directory, 'tsconfig.json');
|
|
166
|
+
if (!existsSync(tsconfigPath)) {
|
|
167
|
+
return { success: true, message: 'No tsconfig.json found' };
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const checkCommand = process.platform === 'win32' ? 'where' : 'which';
|
|
171
|
+
execSync(`${checkCommand} tsc`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return { success: true, message: 'TypeScript not installed' };
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
execSync('tsc --noEmit', { cwd: directory, encoding: 'utf-8', stdio: 'pipe' });
|
|
178
|
+
return { success: true, message: 'Type check passed' };
|
|
179
|
+
}
|
|
180
|
+
catch (_error) {
|
|
181
|
+
return { success: false, message: 'Type errors found' };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// =============================================================================
|
|
185
|
+
// TEST RUNNER PATTERN
|
|
186
|
+
// =============================================================================
|
|
187
|
+
/**
|
|
188
|
+
* Detect and run tests for a project
|
|
189
|
+
*/
|
|
190
|
+
export function runTests(directory) {
|
|
191
|
+
const packageJsonPath = join(directory, 'package.json');
|
|
192
|
+
if (existsSync(packageJsonPath)) {
|
|
193
|
+
try {
|
|
194
|
+
const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
195
|
+
if (pkg.scripts?.test) {
|
|
196
|
+
execSync('npm test', { cwd: directory, encoding: 'utf-8', stdio: 'pipe' });
|
|
197
|
+
return { success: true, message: 'Tests passed' };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (_error) {
|
|
201
|
+
return { success: false, message: 'Tests failed' };
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Check for pytest
|
|
205
|
+
if (existsSync(join(directory, 'pytest.ini')) || existsSync(join(directory, 'pyproject.toml'))) {
|
|
206
|
+
try {
|
|
207
|
+
execSync('pytest', { cwd: directory, encoding: 'utf-8', stdio: 'pipe' });
|
|
208
|
+
return { success: true, message: 'Tests passed' };
|
|
209
|
+
}
|
|
210
|
+
catch (_error) {
|
|
211
|
+
return { success: false, message: 'Tests failed' };
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return { success: true, message: 'No test runner found' };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Run all pre-commit checks
|
|
218
|
+
*/
|
|
219
|
+
export function runPreCommitChecks(directory, commitMessage) {
|
|
220
|
+
const checks = [];
|
|
221
|
+
// Type checking
|
|
222
|
+
const typeCheck = runTypeCheck(directory);
|
|
223
|
+
checks.push({
|
|
224
|
+
name: 'Type Check',
|
|
225
|
+
passed: typeCheck.success,
|
|
226
|
+
message: typeCheck.message
|
|
227
|
+
});
|
|
228
|
+
// Commit message validation
|
|
229
|
+
if (commitMessage) {
|
|
230
|
+
const commitCheck = validateCommitMessage(commitMessage);
|
|
231
|
+
checks.push({
|
|
232
|
+
name: 'Commit Message',
|
|
233
|
+
passed: commitCheck.valid,
|
|
234
|
+
message: commitCheck.valid ? 'Valid format' : commitCheck.errors.join('; ')
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
// All checks must pass
|
|
238
|
+
const canCommit = checks.every(c => c.passed);
|
|
239
|
+
return { canCommit, checks };
|
|
240
|
+
}
|
|
241
|
+
// =============================================================================
|
|
242
|
+
// HOOK MESSAGE GENERATORS
|
|
243
|
+
// =============================================================================
|
|
244
|
+
/**
|
|
245
|
+
* Generate pre-commit check reminder message
|
|
246
|
+
*/
|
|
247
|
+
export function getPreCommitReminderMessage(result) {
|
|
248
|
+
if (result.canCommit) {
|
|
249
|
+
return '';
|
|
250
|
+
}
|
|
251
|
+
const failedChecks = result.checks.filter(c => !c.passed);
|
|
252
|
+
return `<pre-commit-validation>
|
|
253
|
+
|
|
254
|
+
[PRE-COMMIT CHECKS FAILED]
|
|
255
|
+
|
|
256
|
+
The following checks did not pass:
|
|
257
|
+
${failedChecks.map(c => `- ${c.name}: ${c.message}`).join('\n')}
|
|
258
|
+
|
|
259
|
+
Please fix these issues before committing.
|
|
260
|
+
|
|
261
|
+
</pre-commit-validation>
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
`;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Generate auto-format reminder message
|
|
269
|
+
*/
|
|
270
|
+
export function getAutoFormatMessage(filePath, result) {
|
|
271
|
+
if (result.success) {
|
|
272
|
+
return '';
|
|
273
|
+
}
|
|
274
|
+
return `<auto-format>
|
|
275
|
+
|
|
276
|
+
[FORMAT WARNING]
|
|
277
|
+
|
|
278
|
+
File ${filePath} could not be auto-formatted:
|
|
279
|
+
${result.message}
|
|
280
|
+
|
|
281
|
+
Please check the file manually.
|
|
282
|
+
|
|
283
|
+
</auto-format>
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
`;
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/plugin-patterns/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preemptive Compaction Constants
|
|
3
|
+
*
|
|
4
|
+
* Thresholds and messages for context usage monitoring.
|
|
5
|
+
*
|
|
6
|
+
* Adapted from oh-my-opencode's preemptive-compaction hook.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Default threshold ratio to trigger warning (85%)
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_THRESHOLD = 0.85;
|
|
12
|
+
/**
|
|
13
|
+
* Critical threshold ratio (95%)
|
|
14
|
+
*/
|
|
15
|
+
export declare const CRITICAL_THRESHOLD = 0.95;
|
|
16
|
+
/**
|
|
17
|
+
* Minimum tokens before considering compaction
|
|
18
|
+
*/
|
|
19
|
+
export declare const MIN_TOKENS_FOR_COMPACTION = 50000;
|
|
20
|
+
/**
|
|
21
|
+
* Cooldown period between compaction warnings (1 minute)
|
|
22
|
+
*/
|
|
23
|
+
export declare const COMPACTION_COOLDOWN_MS = 60000;
|
|
24
|
+
/**
|
|
25
|
+
* Maximum warnings per session before stopping
|
|
26
|
+
*/
|
|
27
|
+
export declare const MAX_WARNINGS = 3;
|
|
28
|
+
/**
|
|
29
|
+
* Default context limits for Claude models
|
|
30
|
+
*/
|
|
31
|
+
export declare const CLAUDE_DEFAULT_CONTEXT_LIMIT: number;
|
|
32
|
+
/**
|
|
33
|
+
* Average characters per token estimate
|
|
34
|
+
*/
|
|
35
|
+
export declare const CHARS_PER_TOKEN = 4;
|
|
36
|
+
/**
|
|
37
|
+
* Warning message when context usage is high
|
|
38
|
+
*/
|
|
39
|
+
export declare const CONTEXT_WARNING_MESSAGE = "CONTEXT WINDOW WARNING - APPROACHING LIMIT\n\nYour context usage is getting high. Consider these actions to prevent hitting the limit:\n\n1. USE COMPACT COMMAND\n - Run /compact to summarize the conversation\n - This frees up context space while preserving important information\n\n2. BE MORE CONCISE\n - Show only relevant code portions\n - Use file paths instead of full code blocks\n - Summarize instead of repeating information\n\n3. FOCUS YOUR REQUESTS\n - Work on one task at a time\n - Complete current tasks before starting new ones\n - Avoid unnecessary back-and-forth\n\nCurrent Status: Context usage is high but recoverable.\nAction recommended: Use /compact when convenient.\n";
|
|
40
|
+
/**
|
|
41
|
+
* Critical warning message when context is almost full
|
|
42
|
+
*/
|
|
43
|
+
export declare const CONTEXT_CRITICAL_MESSAGE = "CRITICAL: CONTEXT WINDOW ALMOST FULL\n\nYour context usage is critically high. Immediate action required:\n\n1. COMPACT NOW\n - Run /compact immediately to summarize the conversation\n - Without compaction, the next few messages may fail\n\n2. AVOID LARGE OUTPUTS\n - Do not show full files\n - Use summaries instead of detailed outputs\n - Be as concise as possible\n\n3. PREPARE FOR SESSION HANDOFF\n - If compaction doesn't help enough, prepare to continue in a new session\n - Note your current progress and next steps\n\nWARNING: Further messages may fail if context is not reduced.\nAction required: Run /compact now.\n";
|
|
44
|
+
/**
|
|
45
|
+
* Message when compaction was successful
|
|
46
|
+
*/
|
|
47
|
+
export declare const COMPACTION_SUCCESS_MESSAGE = "Context compacted successfully. Session can continue normally.";
|
|
48
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/preemptive-compaction/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAI5B,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,uBAAuB,qsBAoBnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,ooBAmBpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,mEAAmE,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preemptive Compaction Constants
|
|
3
|
+
*
|
|
4
|
+
* Thresholds and messages for context usage monitoring.
|
|
5
|
+
*
|
|
6
|
+
* Adapted from oh-my-opencode's preemptive-compaction hook.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Default threshold ratio to trigger warning (85%)
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_THRESHOLD = 0.85;
|
|
12
|
+
/**
|
|
13
|
+
* Critical threshold ratio (95%)
|
|
14
|
+
*/
|
|
15
|
+
export const CRITICAL_THRESHOLD = 0.95;
|
|
16
|
+
/**
|
|
17
|
+
* Minimum tokens before considering compaction
|
|
18
|
+
*/
|
|
19
|
+
export const MIN_TOKENS_FOR_COMPACTION = 50_000;
|
|
20
|
+
/**
|
|
21
|
+
* Cooldown period between compaction warnings (1 minute)
|
|
22
|
+
*/
|
|
23
|
+
export const COMPACTION_COOLDOWN_MS = 60_000;
|
|
24
|
+
/**
|
|
25
|
+
* Maximum warnings per session before stopping
|
|
26
|
+
*/
|
|
27
|
+
export const MAX_WARNINGS = 3;
|
|
28
|
+
/**
|
|
29
|
+
* Default context limits for Claude models
|
|
30
|
+
*/
|
|
31
|
+
export const CLAUDE_DEFAULT_CONTEXT_LIMIT = process.env.ANTHROPIC_1M_CONTEXT === 'true' ||
|
|
32
|
+
process.env.VERTEX_ANTHROPIC_1M_CONTEXT === 'true'
|
|
33
|
+
? 1_000_000
|
|
34
|
+
: 200_000;
|
|
35
|
+
/**
|
|
36
|
+
* Average characters per token estimate
|
|
37
|
+
*/
|
|
38
|
+
export const CHARS_PER_TOKEN = 4;
|
|
39
|
+
/**
|
|
40
|
+
* Warning message when context usage is high
|
|
41
|
+
*/
|
|
42
|
+
export const CONTEXT_WARNING_MESSAGE = `CONTEXT WINDOW WARNING - APPROACHING LIMIT
|
|
43
|
+
|
|
44
|
+
Your context usage is getting high. Consider these actions to prevent hitting the limit:
|
|
45
|
+
|
|
46
|
+
1. USE COMPACT COMMAND
|
|
47
|
+
- Run /compact to summarize the conversation
|
|
48
|
+
- This frees up context space while preserving important information
|
|
49
|
+
|
|
50
|
+
2. BE MORE CONCISE
|
|
51
|
+
- Show only relevant code portions
|
|
52
|
+
- Use file paths instead of full code blocks
|
|
53
|
+
- Summarize instead of repeating information
|
|
54
|
+
|
|
55
|
+
3. FOCUS YOUR REQUESTS
|
|
56
|
+
- Work on one task at a time
|
|
57
|
+
- Complete current tasks before starting new ones
|
|
58
|
+
- Avoid unnecessary back-and-forth
|
|
59
|
+
|
|
60
|
+
Current Status: Context usage is high but recoverable.
|
|
61
|
+
Action recommended: Use /compact when convenient.
|
|
62
|
+
`;
|
|
63
|
+
/**
|
|
64
|
+
* Critical warning message when context is almost full
|
|
65
|
+
*/
|
|
66
|
+
export const CONTEXT_CRITICAL_MESSAGE = `CRITICAL: CONTEXT WINDOW ALMOST FULL
|
|
67
|
+
|
|
68
|
+
Your context usage is critically high. Immediate action required:
|
|
69
|
+
|
|
70
|
+
1. COMPACT NOW
|
|
71
|
+
- Run /compact immediately to summarize the conversation
|
|
72
|
+
- Without compaction, the next few messages may fail
|
|
73
|
+
|
|
74
|
+
2. AVOID LARGE OUTPUTS
|
|
75
|
+
- Do not show full files
|
|
76
|
+
- Use summaries instead of detailed outputs
|
|
77
|
+
- Be as concise as possible
|
|
78
|
+
|
|
79
|
+
3. PREPARE FOR SESSION HANDOFF
|
|
80
|
+
- If compaction doesn't help enough, prepare to continue in a new session
|
|
81
|
+
- Note your current progress and next steps
|
|
82
|
+
|
|
83
|
+
WARNING: Further messages may fail if context is not reduced.
|
|
84
|
+
Action required: Run /compact now.
|
|
85
|
+
`;
|
|
86
|
+
/**
|
|
87
|
+
* Message when compaction was successful
|
|
88
|
+
*/
|
|
89
|
+
export const COMPACTION_SUCCESS_MESSAGE = `Context compacted successfully. Session can continue normally.`;
|
|
90
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/preemptive-compaction/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAE9B;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GACvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM;IAC3C,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,MAAM;IAChD,CAAC,CAAC,SAAS;IACX,CAAC,CAAC,OAAO,CAAC;AAEd;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;CAoBtC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;CAmBvC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,gEAAgE,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preemptive Compaction Hook
|
|
3
|
+
*
|
|
4
|
+
* Monitors context usage and warns before hitting the context limit.
|
|
5
|
+
* Encourages proactive compaction to prevent context overflow.
|
|
6
|
+
*
|
|
7
|
+
* Adapted from oh-my-opencode's preemptive-compaction hook.
|
|
8
|
+
*
|
|
9
|
+
* Note: This is a simplified version for Claude Code's shell hook system.
|
|
10
|
+
* The original uses OpenCode's plugin event system for automatic summarization.
|
|
11
|
+
* This version injects warning messages to prompt manual compaction.
|
|
12
|
+
*/
|
|
13
|
+
import type { ContextUsageResult, PreemptiveCompactionConfig } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Estimate tokens from text content
|
|
16
|
+
*/
|
|
17
|
+
export declare function estimateTokens(text: string): number;
|
|
18
|
+
/**
|
|
19
|
+
* Analyze context usage based on conversation content
|
|
20
|
+
*/
|
|
21
|
+
export declare function analyzeContextUsage(content: string, config?: PreemptiveCompactionConfig): ContextUsageResult;
|
|
22
|
+
/**
|
|
23
|
+
* Create preemptive compaction hook
|
|
24
|
+
*
|
|
25
|
+
* This hook monitors context usage and injects warning messages
|
|
26
|
+
* when approaching the context limit.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createPreemptiveCompactionHook(config?: PreemptiveCompactionConfig): {
|
|
29
|
+
/**
|
|
30
|
+
* PostToolUse - Check context usage after large tool outputs
|
|
31
|
+
*/
|
|
32
|
+
postToolUse: (input: {
|
|
33
|
+
tool_name: string;
|
|
34
|
+
session_id: string;
|
|
35
|
+
tool_input: Record<string, unknown>;
|
|
36
|
+
tool_response?: string;
|
|
37
|
+
}) => string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Stop event - Check context before stopping
|
|
40
|
+
*/
|
|
41
|
+
stop: (input: {
|
|
42
|
+
session_id: string;
|
|
43
|
+
}) => string | null;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Get estimated token usage for a session
|
|
47
|
+
*/
|
|
48
|
+
export declare function getSessionTokenEstimate(sessionId: string): number;
|
|
49
|
+
/**
|
|
50
|
+
* Reset token estimate for a session (e.g., after compaction)
|
|
51
|
+
*/
|
|
52
|
+
export declare function resetSessionTokenEstimate(sessionId: string): void;
|
|
53
|
+
export type { ContextUsageResult, PreemptiveCompactionConfig, } from './types.js';
|
|
54
|
+
export { DEFAULT_THRESHOLD, CRITICAL_THRESHOLD, COMPACTION_COOLDOWN_MS, MAX_WARNINGS, CLAUDE_DEFAULT_CONTEXT_LIMIT, CHARS_PER_TOKEN, CONTEXT_WARNING_MESSAGE, CONTEXT_CRITICAL_MESSAGE, } from './constants.js';
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/preemptive-compaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AA6CpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,0BAA0B,GAClC,kBAAkB,CAyBpB;AA+DD;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,0BAA0B;IAiBjC;;OAEG;yBACkB;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,KAAG,MAAM,GAAG,IAAI;IAwDjB;;OAEG;kBACW;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,KAAG,MAAM,GAAG,IAAI;EAevD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAOjE;AAGD,YAAY,EACV,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,4BAA4B,EAC5B,eAAe,EACf,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC"}
|