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 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/features/builtin-skills/skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,YAAY,GAAiB;IACjC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,iDAAiD;IAC9D,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkZX;CACA,CAAC;AAEF;;GAEG;AACH,MAAM,eAAe,GAAiB;IACpC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,sEAAsE;IACnF,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmCD;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAAiB;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,mDAAmD;IAChE,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4FAoEgF;CAC3F,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAiB;IACnC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,2SAA2S;IACxT,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sJA4M0I;CACrJ,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAiB;IACnC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,+CAA+C;IAC5D,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8HX;CACA,CAAC;AAEF;;GAEG;AACH,MAAM,YAAY,GAAiB;IACjC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,iCAAiC;IAC9C,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mFAwCuE;CAClF,CAAC;AAEF;;GAEG;AACH,MAAM,eAAe,GAAiB;IACpC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,0BAA0B;IACvC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAgCgE;CAC3E,CAAC;AAEF;;GAEG;AACH,MAAM,eAAe,GAAiB;IACpC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,4CAA4C;IACzD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAoCiB;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAiB;IAChC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,0BAA0B;IACvC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA8BuB;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,YAAY;QACZ,eAAe;QACf,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,YAAY;QACZ,eAAe;QACf,eAAe;QACf,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtin Skills Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the builtin skills system.
|
|
5
|
+
*
|
|
6
|
+
* Adapted from oh-my-opencode's builtin-skills feature.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Configuration for MCP server integration with a skill
|
|
10
|
+
*/
|
|
11
|
+
export interface SkillMcpConfig {
|
|
12
|
+
[serverName: string]: {
|
|
13
|
+
command: string;
|
|
14
|
+
args?: string[];
|
|
15
|
+
env?: Record<string, string>;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A builtin skill definition
|
|
20
|
+
*/
|
|
21
|
+
export interface BuiltinSkill {
|
|
22
|
+
/** Unique skill name */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Short description of the skill */
|
|
25
|
+
description: string;
|
|
26
|
+
/** Full template content for the skill */
|
|
27
|
+
template: string;
|
|
28
|
+
/** License information (optional) */
|
|
29
|
+
license?: string;
|
|
30
|
+
/** Compatibility notes (optional) */
|
|
31
|
+
compatibility?: string;
|
|
32
|
+
/** Additional metadata (optional) */
|
|
33
|
+
metadata?: Record<string, unknown>;
|
|
34
|
+
/** Allowed tools for this skill (optional) */
|
|
35
|
+
allowedTools?: string[];
|
|
36
|
+
/** Agent to use with this skill (optional) */
|
|
37
|
+
agent?: string;
|
|
38
|
+
/** Model to use with this skill (optional) */
|
|
39
|
+
model?: string;
|
|
40
|
+
/** Whether this is a subtask skill (optional) */
|
|
41
|
+
subtask?: boolean;
|
|
42
|
+
/** Hint for arguments (optional) */
|
|
43
|
+
argumentHint?: string;
|
|
44
|
+
/** MCP server configuration (optional) */
|
|
45
|
+
mcpConfig?: SkillMcpConfig;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Skill registry for runtime access
|
|
49
|
+
*/
|
|
50
|
+
export interface SkillRegistry {
|
|
51
|
+
/** Get all registered skills */
|
|
52
|
+
getAll(): BuiltinSkill[];
|
|
53
|
+
/** Get a skill by name */
|
|
54
|
+
get(name: string): BuiltinSkill | undefined;
|
|
55
|
+
/** Register a new skill */
|
|
56
|
+
register(skill: BuiltinSkill): void;
|
|
57
|
+
/** Check if a skill exists */
|
|
58
|
+
has(name: string): boolean;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/builtin-skills/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,UAAU,EAAE,MAAM,GAAG;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,MAAM,IAAI,YAAY,EAAE,CAAC;IACzB,0BAA0B;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC5C,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,8BAA8B;IAC9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/builtin-skills/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Collector
|
|
3
|
+
*
|
|
4
|
+
* Manages registration and retrieval of context entries
|
|
5
|
+
* from multiple sources for a session.
|
|
6
|
+
*
|
|
7
|
+
* Ported from oh-my-opencode's context-injector.
|
|
8
|
+
*/
|
|
9
|
+
import type { PendingContext, RegisterContextOptions } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Collects and manages context entries for sessions.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ContextCollector {
|
|
14
|
+
private sessions;
|
|
15
|
+
/**
|
|
16
|
+
* Register a context entry for a session.
|
|
17
|
+
* If an entry with the same source:id already exists, it will be replaced.
|
|
18
|
+
*/
|
|
19
|
+
register(sessionId: string, options: RegisterContextOptions): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get pending context for a session without consuming it.
|
|
22
|
+
*/
|
|
23
|
+
getPending(sessionId: string): PendingContext;
|
|
24
|
+
/**
|
|
25
|
+
* Get and consume pending context for a session.
|
|
26
|
+
* After consumption, the session's context is cleared.
|
|
27
|
+
*/
|
|
28
|
+
consume(sessionId: string): PendingContext;
|
|
29
|
+
/**
|
|
30
|
+
* Clear all context for a session.
|
|
31
|
+
*/
|
|
32
|
+
clear(sessionId: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Check if a session has pending context.
|
|
35
|
+
*/
|
|
36
|
+
hasPending(sessionId: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Get count of entries for a session.
|
|
39
|
+
*/
|
|
40
|
+
getEntryCount(sessionId: string): number;
|
|
41
|
+
/**
|
|
42
|
+
* Remove a specific entry from a session.
|
|
43
|
+
*/
|
|
44
|
+
removeEntry(sessionId: string, source: string, id: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get all active session IDs.
|
|
47
|
+
*/
|
|
48
|
+
getActiveSessions(): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Sort entries by priority (higher first) then by timestamp (earlier first).
|
|
51
|
+
*/
|
|
52
|
+
private sortEntries;
|
|
53
|
+
}
|
|
54
|
+
/** Global singleton context collector instance */
|
|
55
|
+
export declare const contextCollector: ContextCollector;
|
|
56
|
+
//# sourceMappingURL=collector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/features/context-injector/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAGV,cAAc,EACd,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAapB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAqD;IAErE;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAoBlE;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAqB7C;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAM1C;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKtC;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAKxC;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAQnE;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,OAAO,CAAC,WAAW;CAOpB;AAED,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Collector
|
|
3
|
+
*
|
|
4
|
+
* Manages registration and retrieval of context entries
|
|
5
|
+
* from multiple sources for a session.
|
|
6
|
+
*
|
|
7
|
+
* Ported from oh-my-opencode's context-injector.
|
|
8
|
+
*/
|
|
9
|
+
/** Priority ordering - lower number = higher priority */
|
|
10
|
+
const PRIORITY_ORDER = {
|
|
11
|
+
critical: 0,
|
|
12
|
+
high: 1,
|
|
13
|
+
normal: 2,
|
|
14
|
+
low: 3,
|
|
15
|
+
};
|
|
16
|
+
/** Separator between merged context entries */
|
|
17
|
+
const CONTEXT_SEPARATOR = '\n\n---\n\n';
|
|
18
|
+
/**
|
|
19
|
+
* Collects and manages context entries for sessions.
|
|
20
|
+
*/
|
|
21
|
+
export class ContextCollector {
|
|
22
|
+
sessions = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Register a context entry for a session.
|
|
25
|
+
* If an entry with the same source:id already exists, it will be replaced.
|
|
26
|
+
*/
|
|
27
|
+
register(sessionId, options) {
|
|
28
|
+
if (!this.sessions.has(sessionId)) {
|
|
29
|
+
this.sessions.set(sessionId, new Map());
|
|
30
|
+
}
|
|
31
|
+
const sessionMap = this.sessions.get(sessionId);
|
|
32
|
+
const key = `${options.source}:${options.id}`;
|
|
33
|
+
const entry = {
|
|
34
|
+
id: options.id,
|
|
35
|
+
source: options.source,
|
|
36
|
+
content: options.content,
|
|
37
|
+
priority: options.priority ?? 'normal',
|
|
38
|
+
timestamp: Date.now(),
|
|
39
|
+
metadata: options.metadata,
|
|
40
|
+
};
|
|
41
|
+
sessionMap.set(key, entry);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get pending context for a session without consuming it.
|
|
45
|
+
*/
|
|
46
|
+
getPending(sessionId) {
|
|
47
|
+
const sessionMap = this.sessions.get(sessionId);
|
|
48
|
+
if (!sessionMap || sessionMap.size === 0) {
|
|
49
|
+
return {
|
|
50
|
+
merged: '',
|
|
51
|
+
entries: [],
|
|
52
|
+
hasContent: false,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const entries = this.sortEntries([...sessionMap.values()]);
|
|
56
|
+
const merged = entries.map((e) => e.content).join(CONTEXT_SEPARATOR);
|
|
57
|
+
return {
|
|
58
|
+
merged,
|
|
59
|
+
entries,
|
|
60
|
+
hasContent: entries.length > 0,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get and consume pending context for a session.
|
|
65
|
+
* After consumption, the session's context is cleared.
|
|
66
|
+
*/
|
|
67
|
+
consume(sessionId) {
|
|
68
|
+
const pending = this.getPending(sessionId);
|
|
69
|
+
this.clear(sessionId);
|
|
70
|
+
return pending;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Clear all context for a session.
|
|
74
|
+
*/
|
|
75
|
+
clear(sessionId) {
|
|
76
|
+
this.sessions.delete(sessionId);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if a session has pending context.
|
|
80
|
+
*/
|
|
81
|
+
hasPending(sessionId) {
|
|
82
|
+
const sessionMap = this.sessions.get(sessionId);
|
|
83
|
+
return sessionMap !== undefined && sessionMap.size > 0;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get count of entries for a session.
|
|
87
|
+
*/
|
|
88
|
+
getEntryCount(sessionId) {
|
|
89
|
+
const sessionMap = this.sessions.get(sessionId);
|
|
90
|
+
return sessionMap?.size ?? 0;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Remove a specific entry from a session.
|
|
94
|
+
*/
|
|
95
|
+
removeEntry(sessionId, source, id) {
|
|
96
|
+
const sessionMap = this.sessions.get(sessionId);
|
|
97
|
+
if (!sessionMap)
|
|
98
|
+
return false;
|
|
99
|
+
const key = `${source}:${id}`;
|
|
100
|
+
return sessionMap.delete(key);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get all active session IDs.
|
|
104
|
+
*/
|
|
105
|
+
getActiveSessions() {
|
|
106
|
+
return [...this.sessions.keys()];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Sort entries by priority (higher first) then by timestamp (earlier first).
|
|
110
|
+
*/
|
|
111
|
+
sortEntries(entries) {
|
|
112
|
+
return entries.sort((a, b) => {
|
|
113
|
+
const priorityDiff = PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority];
|
|
114
|
+
if (priorityDiff !== 0)
|
|
115
|
+
return priorityDiff;
|
|
116
|
+
return a.timestamp - b.timestamp;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** Global singleton context collector instance */
|
|
121
|
+
export const contextCollector = new ContextCollector();
|
|
122
|
+
//# sourceMappingURL=collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/features/context-injector/collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Injector Module
|
|
3
|
+
*
|
|
4
|
+
* System for collecting and injecting context from multiple sources
|
|
5
|
+
* into user prompts. Supports priority ordering and deduplication.
|
|
6
|
+
*
|
|
7
|
+
* Ported from oh-my-opencode's context-injector.
|
|
8
|
+
*/
|
|
9
|
+
export { ContextCollector, contextCollector } from './collector.js';
|
|
10
|
+
export { injectPendingContext, injectContextIntoText, createContextInjectorHook, } from './injector.js';
|
|
11
|
+
export type { ContextSourceType, ContextPriority, ContextEntry, RegisterContextOptions, PendingContext, MessageContext, OutputPart, InjectionStrategy, InjectionResult, } from './types.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/context-injector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAGvB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Injector Module
|
|
3
|
+
*
|
|
4
|
+
* System for collecting and injecting context from multiple sources
|
|
5
|
+
* into user prompts. Supports priority ordering and deduplication.
|
|
6
|
+
*
|
|
7
|
+
* Ported from oh-my-opencode's context-injector.
|
|
8
|
+
*/
|
|
9
|
+
// Collector
|
|
10
|
+
export { ContextCollector, contextCollector } from './collector.js';
|
|
11
|
+
// Injector functions
|
|
12
|
+
export { injectPendingContext, injectContextIntoText, createContextInjectorHook, } from './injector.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/context-injector/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY;AACZ,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,qBAAqB;AACrB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Injector
|
|
3
|
+
*
|
|
4
|
+
* Handles injection of collected context into prompts/messages.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's context-injector.
|
|
7
|
+
*/
|
|
8
|
+
import type { ContextCollector } from './collector.js';
|
|
9
|
+
import type { InjectionResult, InjectionStrategy, OutputPart } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Inject pending context into an array of output parts.
|
|
12
|
+
* Finds the first text part and prepends the context to it.
|
|
13
|
+
*/
|
|
14
|
+
export declare function injectPendingContext(collector: ContextCollector, sessionId: string, parts: OutputPart[], strategy?: InjectionStrategy): InjectionResult;
|
|
15
|
+
/**
|
|
16
|
+
* Inject pending context into a raw text string.
|
|
17
|
+
*/
|
|
18
|
+
export declare function injectContextIntoText(collector: ContextCollector, sessionId: string, text: string, strategy?: InjectionStrategy): {
|
|
19
|
+
result: string;
|
|
20
|
+
injectionResult: InjectionResult;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Create a hook handler for context injection.
|
|
24
|
+
* This is a factory function for creating Claude Code compatible hooks.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createContextInjectorHook(collector: ContextCollector): {
|
|
27
|
+
/**
|
|
28
|
+
* Process a user message and inject any pending context.
|
|
29
|
+
*/
|
|
30
|
+
processUserMessage: (sessionId: string, message: string) => {
|
|
31
|
+
message: string;
|
|
32
|
+
injected: boolean;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Register context for injection into the next message.
|
|
36
|
+
*/
|
|
37
|
+
registerContext: (sessionId: string, options: import("./types.js").RegisterContextOptions) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Check if there's pending context.
|
|
40
|
+
*/
|
|
41
|
+
hasPending: (sessionId: string) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Clear pending context without injecting.
|
|
44
|
+
*/
|
|
45
|
+
clear: (sessionId: string) => void;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=injector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injector.d.ts","sourceRoot":"","sources":["../../../src/features/context-injector/injector.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKjF;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,UAAU,EAAE,EACnB,QAAQ,GAAE,iBAA6B,GACtC,eAAe,CAiCjB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,iBAA6B,GACtC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,CA+BtD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,gBAAgB;IAEjE;;OAEG;oCAEU,MAAM,WACR,MAAM,KACd;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;IASzC;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;EAGN"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Injector
|
|
3
|
+
*
|
|
4
|
+
* Handles injection of collected context into prompts/messages.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's context-injector.
|
|
7
|
+
*/
|
|
8
|
+
/** Default separator between injected context and original content */
|
|
9
|
+
const DEFAULT_SEPARATOR = '\n\n---\n\n';
|
|
10
|
+
/**
|
|
11
|
+
* Inject pending context into an array of output parts.
|
|
12
|
+
* Finds the first text part and prepends the context to it.
|
|
13
|
+
*/
|
|
14
|
+
export function injectPendingContext(collector, sessionId, parts, strategy = 'prepend') {
|
|
15
|
+
if (!collector.hasPending(sessionId)) {
|
|
16
|
+
return { injected: false, contextLength: 0, entryCount: 0 };
|
|
17
|
+
}
|
|
18
|
+
const textPartIndex = parts.findIndex((p) => p.type === 'text' && p.text !== undefined);
|
|
19
|
+
if (textPartIndex === -1) {
|
|
20
|
+
return { injected: false, contextLength: 0, entryCount: 0 };
|
|
21
|
+
}
|
|
22
|
+
const pending = collector.consume(sessionId);
|
|
23
|
+
const originalText = parts[textPartIndex].text ?? '';
|
|
24
|
+
switch (strategy) {
|
|
25
|
+
case 'prepend':
|
|
26
|
+
parts[textPartIndex].text = `${pending.merged}${DEFAULT_SEPARATOR}${originalText}`;
|
|
27
|
+
break;
|
|
28
|
+
case 'append':
|
|
29
|
+
parts[textPartIndex].text = `${originalText}${DEFAULT_SEPARATOR}${pending.merged}`;
|
|
30
|
+
break;
|
|
31
|
+
case 'wrap':
|
|
32
|
+
parts[textPartIndex].text = `<injected-context>\n${pending.merged}\n</injected-context>${DEFAULT_SEPARATOR}${originalText}`;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
injected: true,
|
|
37
|
+
contextLength: pending.merged.length,
|
|
38
|
+
entryCount: pending.entries.length,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Inject pending context into a raw text string.
|
|
43
|
+
*/
|
|
44
|
+
export function injectContextIntoText(collector, sessionId, text, strategy = 'prepend') {
|
|
45
|
+
if (!collector.hasPending(sessionId)) {
|
|
46
|
+
return {
|
|
47
|
+
result: text,
|
|
48
|
+
injectionResult: { injected: false, contextLength: 0, entryCount: 0 },
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const pending = collector.consume(sessionId);
|
|
52
|
+
let result;
|
|
53
|
+
switch (strategy) {
|
|
54
|
+
case 'prepend':
|
|
55
|
+
result = `${pending.merged}${DEFAULT_SEPARATOR}${text}`;
|
|
56
|
+
break;
|
|
57
|
+
case 'append':
|
|
58
|
+
result = `${text}${DEFAULT_SEPARATOR}${pending.merged}`;
|
|
59
|
+
break;
|
|
60
|
+
case 'wrap':
|
|
61
|
+
result = `<injected-context>\n${pending.merged}\n</injected-context>${DEFAULT_SEPARATOR}${text}`;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
result,
|
|
66
|
+
injectionResult: {
|
|
67
|
+
injected: true,
|
|
68
|
+
contextLength: pending.merged.length,
|
|
69
|
+
entryCount: pending.entries.length,
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create a hook handler for context injection.
|
|
75
|
+
* This is a factory function for creating Claude Code compatible hooks.
|
|
76
|
+
*/
|
|
77
|
+
export function createContextInjectorHook(collector) {
|
|
78
|
+
return {
|
|
79
|
+
/**
|
|
80
|
+
* Process a user message and inject any pending context.
|
|
81
|
+
*/
|
|
82
|
+
processUserMessage: (sessionId, message) => {
|
|
83
|
+
if (!collector.hasPending(sessionId)) {
|
|
84
|
+
return { message, injected: false };
|
|
85
|
+
}
|
|
86
|
+
const { result } = injectContextIntoText(collector, sessionId, message, 'prepend');
|
|
87
|
+
return { message: result, injected: true };
|
|
88
|
+
},
|
|
89
|
+
/**
|
|
90
|
+
* Register context for injection into the next message.
|
|
91
|
+
*/
|
|
92
|
+
registerContext: collector.register.bind(collector),
|
|
93
|
+
/**
|
|
94
|
+
* Check if there's pending context.
|
|
95
|
+
*/
|
|
96
|
+
hasPending: collector.hasPending.bind(collector),
|
|
97
|
+
/**
|
|
98
|
+
* Clear pending context without injecting.
|
|
99
|
+
*/
|
|
100
|
+
clear: collector.clear.bind(collector),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../src/features/context-injector/injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Injector Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the context injection system.
|
|
5
|
+
* Allows multiple sources to register context that gets merged
|
|
6
|
+
* and injected into prompts.
|
|
7
|
+
*
|
|
8
|
+
* Ported from oh-my-opencode's context-injector.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Source identifier for context injection.
|
|
12
|
+
* Each source registers context that will be merged and injected together.
|
|
13
|
+
*/
|
|
14
|
+
export type ContextSourceType = 'keyword-detector' | 'rules-injector' | 'directory-agents' | 'directory-readme' | 'boulder-state' | 'session-context' | 'custom';
|
|
15
|
+
/**
|
|
16
|
+
* Priority levels for context ordering.
|
|
17
|
+
* Higher priority contexts appear first in the merged output.
|
|
18
|
+
*/
|
|
19
|
+
export type ContextPriority = 'critical' | 'high' | 'normal' | 'low';
|
|
20
|
+
/**
|
|
21
|
+
* A single context entry registered by a source.
|
|
22
|
+
*/
|
|
23
|
+
export interface ContextEntry {
|
|
24
|
+
/** Unique identifier for this entry within the source */
|
|
25
|
+
id: string;
|
|
26
|
+
/** The source that registered this context */
|
|
27
|
+
source: ContextSourceType;
|
|
28
|
+
/** The actual context content to inject */
|
|
29
|
+
content: string;
|
|
30
|
+
/** Priority for ordering (default: normal) */
|
|
31
|
+
priority: ContextPriority;
|
|
32
|
+
/** Timestamp when registered */
|
|
33
|
+
timestamp: number;
|
|
34
|
+
/** Optional metadata for debugging/logging */
|
|
35
|
+
metadata?: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Options for registering context.
|
|
39
|
+
*/
|
|
40
|
+
export interface RegisterContextOptions {
|
|
41
|
+
/** Unique ID for this context entry (used for deduplication) */
|
|
42
|
+
id: string;
|
|
43
|
+
/** Source identifier */
|
|
44
|
+
source: ContextSourceType;
|
|
45
|
+
/** The content to inject */
|
|
46
|
+
content: string;
|
|
47
|
+
/** Priority for ordering (default: normal) */
|
|
48
|
+
priority?: ContextPriority;
|
|
49
|
+
/** Optional metadata */
|
|
50
|
+
metadata?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Result of getting pending context for a session.
|
|
54
|
+
*/
|
|
55
|
+
export interface PendingContext {
|
|
56
|
+
/** Merged context string, ready for injection */
|
|
57
|
+
merged: string;
|
|
58
|
+
/** Individual entries that were merged */
|
|
59
|
+
entries: ContextEntry[];
|
|
60
|
+
/** Whether there's any content to inject */
|
|
61
|
+
hasContent: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Message context from the original user message.
|
|
65
|
+
* Used when injecting to match the message format.
|
|
66
|
+
*/
|
|
67
|
+
export interface MessageContext {
|
|
68
|
+
sessionId?: string;
|
|
69
|
+
agent?: string;
|
|
70
|
+
model?: {
|
|
71
|
+
providerId?: string;
|
|
72
|
+
modelId?: string;
|
|
73
|
+
};
|
|
74
|
+
path?: {
|
|
75
|
+
cwd?: string;
|
|
76
|
+
root?: string;
|
|
77
|
+
};
|
|
78
|
+
tools?: Record<string, boolean>;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Output parts from hook processing.
|
|
82
|
+
*/
|
|
83
|
+
export interface OutputPart {
|
|
84
|
+
type: string;
|
|
85
|
+
text?: string;
|
|
86
|
+
[key: string]: unknown;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Injection strategy for context.
|
|
90
|
+
*/
|
|
91
|
+
export type InjectionStrategy = 'prepend' | 'append' | 'wrap';
|
|
92
|
+
/**
|
|
93
|
+
* Result of an injection operation.
|
|
94
|
+
*/
|
|
95
|
+
export interface InjectionResult {
|
|
96
|
+
/** Whether injection occurred */
|
|
97
|
+
injected: boolean;
|
|
98
|
+
/** Length of injected context */
|
|
99
|
+
contextLength: number;
|
|
100
|
+
/** Number of entries injected */
|
|
101
|
+
entryCount: number;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/context-injector/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,QAAQ,CAAC;AAEb;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,QAAQ,EAAE,eAAe,CAAC;IAC1B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,4CAA4C;IAC5C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Injector Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the context injection system.
|
|
5
|
+
* Allows multiple sources to register context that gets merged
|
|
6
|
+
* and injected into prompts.
|
|
7
|
+
*
|
|
8
|
+
* Ported from oh-my-opencode's context-injector.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/context-injector/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Continuation Enforcement Feature
|
|
3
|
+
*
|
|
4
|
+
* Ensures agents complete all tasks before stopping:
|
|
5
|
+
* - Monitors todo list for incomplete items
|
|
6
|
+
* - Adds reminders to continue when tasks remain
|
|
7
|
+
* - Prevents premature stopping
|
|
8
|
+
* - Provides background task execution guidance
|
|
9
|
+
*/
|
|
10
|
+
import type { HookDefinition } from '../shared/types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Create a continuation enforcement hook
|
|
13
|
+
*
|
|
14
|
+
* This hook intercepts stop attempts and checks if there are
|
|
15
|
+
* incomplete tasks. If so, it blocks the stop and reminds
|
|
16
|
+
* the agent to continue.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createContinuationHook(): HookDefinition;
|
|
19
|
+
/**
|
|
20
|
+
* System prompt addition for continuation enforcement
|
|
21
|
+
* ENHANCED: Much stronger persistence language from oh-my-opencode patterns
|
|
22
|
+
*/
|
|
23
|
+
export declare const continuationSystemPromptAddition: string;
|
|
24
|
+
/**
|
|
25
|
+
* Check prompt for signals that all work is done
|
|
26
|
+
*/
|
|
27
|
+
export declare function detectCompletionSignals(response: string): {
|
|
28
|
+
claimed: boolean;
|
|
29
|
+
confidence: 'high' | 'medium' | 'low';
|
|
30
|
+
reason: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Generate a verification prompt to ensure work is complete
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateVerificationPrompt(taskSummary: string): string;
|
|
36
|
+
//# sourceMappingURL=continuation-enforcement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"continuation-enforcement.d.ts","sourceRoot":"","sources":["../../src/features/continuation-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,oBAAoB,CAAC;AAsBlF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,cAAc,CA2BvD;AAED;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QA4D5C,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAChB,CAsCA;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAUtE"}
|