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,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Think Mode Switcher
|
|
3
|
+
*
|
|
4
|
+
* Handles model switching to high-reasoning variants when think mode is activated.
|
|
5
|
+
* Supports Claude, GPT, and Gemini model families.
|
|
6
|
+
*
|
|
7
|
+
* Ported from oh-my-opencode's think-mode hook.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Extract provider prefix from model ID.
|
|
11
|
+
* Custom providers may use prefixes like vertex_ai/, openai/.
|
|
12
|
+
*/
|
|
13
|
+
function extractModelPrefix(modelId) {
|
|
14
|
+
const slashIndex = modelId.indexOf('/');
|
|
15
|
+
if (slashIndex === -1) {
|
|
16
|
+
return { prefix: '', base: modelId };
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
prefix: modelId.slice(0, slashIndex + 1),
|
|
20
|
+
base: modelId.slice(slashIndex + 1),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Normalize model ID to use consistent hyphen formatting.
|
|
25
|
+
* Handles version numbers like 4.5 → 4-5.
|
|
26
|
+
*/
|
|
27
|
+
function normalizeModelId(modelId) {
|
|
28
|
+
return modelId.replace(/\.(\d+)/g, '-$1');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Map of model IDs to their high-reasoning variants.
|
|
32
|
+
*/
|
|
33
|
+
const HIGH_VARIANT_MAP = {
|
|
34
|
+
// Claude
|
|
35
|
+
'claude-sonnet-4-5': 'claude-sonnet-4-5-high',
|
|
36
|
+
'claude-opus-4-5': 'claude-opus-4-5-high',
|
|
37
|
+
'claude-3-5-sonnet': 'claude-3-5-sonnet-high',
|
|
38
|
+
'claude-3-opus': 'claude-3-opus-high',
|
|
39
|
+
// GPT-4
|
|
40
|
+
'gpt-4': 'gpt-4-high',
|
|
41
|
+
'gpt-4-turbo': 'gpt-4-turbo-high',
|
|
42
|
+
'gpt-4o': 'gpt-4o-high',
|
|
43
|
+
// GPT-5
|
|
44
|
+
'gpt-5': 'gpt-5-high',
|
|
45
|
+
'gpt-5-mini': 'gpt-5-mini-high',
|
|
46
|
+
// Gemini
|
|
47
|
+
'gemini-2-pro': 'gemini-2-pro-high',
|
|
48
|
+
'gemini-3-pro': 'gemini-3-pro-high',
|
|
49
|
+
'gemini-3-flash': 'gemini-3-flash-high',
|
|
50
|
+
};
|
|
51
|
+
/** Set of models already in high variant */
|
|
52
|
+
const ALREADY_HIGH = new Set(Object.values(HIGH_VARIANT_MAP));
|
|
53
|
+
/**
|
|
54
|
+
* Provider-specific thinking configurations.
|
|
55
|
+
*/
|
|
56
|
+
export const THINKING_CONFIGS = {
|
|
57
|
+
anthropic: {
|
|
58
|
+
thinking: {
|
|
59
|
+
type: 'enabled',
|
|
60
|
+
budgetTokens: 64000,
|
|
61
|
+
},
|
|
62
|
+
maxTokens: 128000,
|
|
63
|
+
},
|
|
64
|
+
'amazon-bedrock': {
|
|
65
|
+
reasoningConfig: {
|
|
66
|
+
type: 'enabled',
|
|
67
|
+
budgetTokens: 32000,
|
|
68
|
+
},
|
|
69
|
+
maxTokens: 64000,
|
|
70
|
+
},
|
|
71
|
+
google: {
|
|
72
|
+
providerOptions: {
|
|
73
|
+
google: {
|
|
74
|
+
thinkingConfig: {
|
|
75
|
+
thinkingLevel: 'HIGH',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
openai: {
|
|
81
|
+
reasoning_effort: 'high',
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Models capable of thinking mode by provider.
|
|
86
|
+
*/
|
|
87
|
+
const THINKING_CAPABLE_MODELS = {
|
|
88
|
+
anthropic: ['claude-sonnet-4', 'claude-opus-4', 'claude-3'],
|
|
89
|
+
'amazon-bedrock': ['claude', 'anthropic'],
|
|
90
|
+
google: ['gemini-2', 'gemini-3'],
|
|
91
|
+
openai: ['gpt-4', 'gpt-5', 'o1', 'o3'],
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Get the high-reasoning variant for a model ID.
|
|
95
|
+
* Returns null if already high or no variant exists.
|
|
96
|
+
*/
|
|
97
|
+
export function getHighVariant(modelId) {
|
|
98
|
+
const normalized = normalizeModelId(modelId);
|
|
99
|
+
const { prefix, base } = extractModelPrefix(normalized);
|
|
100
|
+
// Check if already high variant
|
|
101
|
+
if (ALREADY_HIGH.has(base) || base.endsWith('-high')) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
// Look up high variant
|
|
105
|
+
const highBase = HIGH_VARIANT_MAP[base];
|
|
106
|
+
if (!highBase) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
// Preserve prefix in the high variant
|
|
110
|
+
return prefix + highBase;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if a model is already in high variant mode.
|
|
114
|
+
*/
|
|
115
|
+
export function isAlreadyHighVariant(modelId) {
|
|
116
|
+
const normalized = normalizeModelId(modelId);
|
|
117
|
+
const { base } = extractModelPrefix(normalized);
|
|
118
|
+
return ALREADY_HIGH.has(base) || base.endsWith('-high');
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Resolve proxy providers to their underlying provider.
|
|
122
|
+
*/
|
|
123
|
+
function resolveProvider(providerId, modelId) {
|
|
124
|
+
// GitHub Copilot is a proxy - infer actual provider from model name
|
|
125
|
+
if (providerId === 'github-copilot') {
|
|
126
|
+
const modelLower = modelId.toLowerCase();
|
|
127
|
+
if (modelLower.includes('claude'))
|
|
128
|
+
return 'anthropic';
|
|
129
|
+
if (modelLower.includes('gemini'))
|
|
130
|
+
return 'google';
|
|
131
|
+
if (modelLower.includes('gpt') || modelLower.includes('o1') || modelLower.includes('o3')) {
|
|
132
|
+
return 'openai';
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return providerId;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if provider has thinking configuration.
|
|
139
|
+
*/
|
|
140
|
+
function isThinkingProvider(provider) {
|
|
141
|
+
return provider in THINKING_CONFIGS;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get the thinking configuration for a provider and model.
|
|
145
|
+
* Returns null if not supported or already in high mode.
|
|
146
|
+
*/
|
|
147
|
+
export function getThinkingConfig(providerId, modelId) {
|
|
148
|
+
const normalized = normalizeModelId(modelId);
|
|
149
|
+
const { base } = extractModelPrefix(normalized);
|
|
150
|
+
if (isAlreadyHighVariant(normalized)) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
const resolvedProvider = resolveProvider(providerId, modelId);
|
|
154
|
+
if (!isThinkingProvider(resolvedProvider)) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const config = THINKING_CONFIGS[resolvedProvider];
|
|
158
|
+
const capablePatterns = THINKING_CAPABLE_MODELS[resolvedProvider];
|
|
159
|
+
if (!capablePatterns) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
// Check capability using base model name
|
|
163
|
+
const baseLower = base.toLowerCase();
|
|
164
|
+
const isCapable = capablePatterns.some((pattern) => baseLower.includes(pattern.toLowerCase()));
|
|
165
|
+
return isCapable ? config : null;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get Claude-specific thinking configuration.
|
|
169
|
+
* This is used by Claude Code for extended thinking.
|
|
170
|
+
*/
|
|
171
|
+
export function getClaudeThinkingConfig(budgetTokens = 64000) {
|
|
172
|
+
return {
|
|
173
|
+
thinking: {
|
|
174
|
+
type: 'enabled',
|
|
175
|
+
budgetTokens,
|
|
176
|
+
},
|
|
177
|
+
maxTokens: 128000,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=switcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switcher.js","sourceRoot":"","sources":["../../../src/hooks/think-mode/switcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IACD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;QACxC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,gBAAgB,GAA2B;IAC/C,SAAS;IACT,mBAAmB,EAAE,wBAAwB;IAC7C,iBAAiB,EAAE,sBAAsB;IACzC,mBAAmB,EAAE,wBAAwB;IAC7C,eAAe,EAAE,oBAAoB;IACrC,QAAQ;IACR,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,kBAAkB;IACjC,QAAQ,EAAE,aAAa;IACvB,QAAQ;IACR,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,iBAAiB;IAC/B,SAAS;IACT,cAAc,EAAE,mBAAmB;IACnC,cAAc,EAAE,mBAAmB;IACnC,gBAAgB,EAAE,qBAAqB;CACxC,CAAC;AAEF,4CAA4C;AAC5C,MAAM,YAAY,GAAgB,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAmC;IAC9D,SAAS,EAAE;QACT,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,KAAK;SACpB;QACD,SAAS,EAAE,MAAM;KAClB;IACD,gBAAgB,EAAE;QAChB,eAAe,EAAE;YACf,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,KAAK;SACpB;QACD,SAAS,EAAE,KAAK;KACjB;IACD,MAAM,EAAE;QACN,eAAe,EAAE;YACf,MAAM,EAAE;gBACN,cAAc,EAAE;oBACd,aAAa,EAAE,MAAM;iBACtB;aACF;SACF;KACF;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE,MAAM;KACzB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,uBAAuB,GAAsC;IACjE,SAAS,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,UAAU,CAAC;IAC3D,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACzC,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;CACvC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAExD,gCAAgC;IAChC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uBAAuB;IACvB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sCAAsC;IACtC,OAAO,MAAM,GAAG,QAAQ,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,UAAkB,EAAE,OAAe;IAC1D,oEAAoE;IACpE,IAAI,UAAU,KAAK,gBAAgB,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,WAAW,CAAC;QACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QACnD,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACzF,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,OAAO,QAAQ,IAAI,gBAAgB,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,OAAe;IAEf,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE9D,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;IAElE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yCAAyC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACjD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAC1C,CAAC;IAEF,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,eAAuB,KAAK;IAClE,OAAO;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,SAAkB;YACxB,YAAY;SACb;QACD,SAAS,EAAE,MAAM;KAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Think Mode Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for think mode state and configuration.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's think-mode hook.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* State tracking for think mode in a session
|
|
10
|
+
*/
|
|
11
|
+
export interface ThinkModeState {
|
|
12
|
+
/** Whether think mode was requested via keyword */
|
|
13
|
+
requested: boolean;
|
|
14
|
+
/** Whether model was switched to high variant */
|
|
15
|
+
modelSwitched: boolean;
|
|
16
|
+
/** Whether thinking config was injected */
|
|
17
|
+
thinkingConfigInjected: boolean;
|
|
18
|
+
/** Provider ID if known */
|
|
19
|
+
providerId?: string;
|
|
20
|
+
/** Model ID if known */
|
|
21
|
+
modelId?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Model reference with provider and model ID
|
|
25
|
+
*/
|
|
26
|
+
export interface ModelRef {
|
|
27
|
+
providerId: string;
|
|
28
|
+
modelId: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Message with optional model reference
|
|
32
|
+
*/
|
|
33
|
+
export interface MessageWithModel {
|
|
34
|
+
model?: ModelRef;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Input for think mode hook processing
|
|
38
|
+
*/
|
|
39
|
+
export interface ThinkModeInput {
|
|
40
|
+
parts: Array<{
|
|
41
|
+
type: string;
|
|
42
|
+
text?: string;
|
|
43
|
+
}>;
|
|
44
|
+
message: MessageWithModel;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Thinking configuration for Claude models
|
|
48
|
+
*/
|
|
49
|
+
export interface ClaudeThinkingConfig {
|
|
50
|
+
thinking: {
|
|
51
|
+
type: 'enabled' | 'disabled';
|
|
52
|
+
budgetTokens: number;
|
|
53
|
+
};
|
|
54
|
+
maxTokens?: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Provider-specific thinking configurations
|
|
58
|
+
*/
|
|
59
|
+
export type ThinkingConfig = Record<string, unknown>;
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/think-mode/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,aAAa,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,sBAAsB,EAAE,OAAO,CAAC;IAChC,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE;QACR,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/think-mode/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thinking Block Validator Constants
|
|
3
|
+
*
|
|
4
|
+
* Constants for validation patterns, messages, and model detection.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's thinking-block-validator hook.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Hook name identifier
|
|
10
|
+
*/
|
|
11
|
+
export declare const HOOK_NAME = "thinking-block-validator";
|
|
12
|
+
/**
|
|
13
|
+
* Part types that are considered "content" (non-thinking)
|
|
14
|
+
*/
|
|
15
|
+
export declare const CONTENT_PART_TYPES: readonly ["tool", "tool_use", "text"];
|
|
16
|
+
/**
|
|
17
|
+
* Part types that are considered "thinking"
|
|
18
|
+
*/
|
|
19
|
+
export declare const THINKING_PART_TYPES: readonly ["thinking", "reasoning"];
|
|
20
|
+
/**
|
|
21
|
+
* Model patterns that support extended thinking
|
|
22
|
+
* Aligns with think-mode/switcher.ts patterns
|
|
23
|
+
*/
|
|
24
|
+
export declare const THINKING_MODEL_PATTERNS: readonly ["thinking", "-high", "claude-sonnet-4", "claude-opus-4", "claude-3"];
|
|
25
|
+
/**
|
|
26
|
+
* Default thinking content for synthetic blocks
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_THINKING_CONTENT = "[Continuing from previous reasoning]";
|
|
29
|
+
/**
|
|
30
|
+
* Prefix for synthetic thinking part IDs
|
|
31
|
+
*/
|
|
32
|
+
export declare const SYNTHETIC_THINKING_ID_PREFIX = "prt_0000000000_synthetic_thinking";
|
|
33
|
+
/**
|
|
34
|
+
* Error message that this hook prevents
|
|
35
|
+
*/
|
|
36
|
+
export declare const PREVENTED_ERROR = "Expected thinking/redacted_thinking but found tool_use";
|
|
37
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,6BAA6B,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,kBAAkB,uCAIrB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB,oCAGtB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,uBAAuB,gFAM1B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,wBAAwB,yCAAyC,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,4BAA4B,sCAAsC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,eAAe,2DAA2D,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thinking Block Validator Constants
|
|
3
|
+
*
|
|
4
|
+
* Constants for validation patterns, messages, and model detection.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's thinking-block-validator hook.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Hook name identifier
|
|
10
|
+
*/
|
|
11
|
+
export const HOOK_NAME = "thinking-block-validator";
|
|
12
|
+
/**
|
|
13
|
+
* Part types that are considered "content" (non-thinking)
|
|
14
|
+
*/
|
|
15
|
+
export const CONTENT_PART_TYPES = [
|
|
16
|
+
"tool",
|
|
17
|
+
"tool_use",
|
|
18
|
+
"text"
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Part types that are considered "thinking"
|
|
22
|
+
*/
|
|
23
|
+
export const THINKING_PART_TYPES = [
|
|
24
|
+
"thinking",
|
|
25
|
+
"reasoning"
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Model patterns that support extended thinking
|
|
29
|
+
* Aligns with think-mode/switcher.ts patterns
|
|
30
|
+
*/
|
|
31
|
+
export const THINKING_MODEL_PATTERNS = [
|
|
32
|
+
"thinking",
|
|
33
|
+
"-high",
|
|
34
|
+
"claude-sonnet-4",
|
|
35
|
+
"claude-opus-4",
|
|
36
|
+
"claude-3"
|
|
37
|
+
];
|
|
38
|
+
/**
|
|
39
|
+
* Default thinking content for synthetic blocks
|
|
40
|
+
*/
|
|
41
|
+
export const DEFAULT_THINKING_CONTENT = "[Continuing from previous reasoning]";
|
|
42
|
+
/**
|
|
43
|
+
* Prefix for synthetic thinking part IDs
|
|
44
|
+
*/
|
|
45
|
+
export const SYNTHETIC_THINKING_ID_PREFIX = "prt_0000000000_synthetic_thinking";
|
|
46
|
+
/**
|
|
47
|
+
* Error message that this hook prevents
|
|
48
|
+
*/
|
|
49
|
+
export const PREVENTED_ERROR = "Expected thinking/redacted_thinking but found tool_use";
|
|
50
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,0BAA0B,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,UAAU;IACV,MAAM;CACE,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU;IACV,WAAW;CACH,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,UAAU;IACV,OAAO;IACP,iBAAiB;IACjB,eAAe;IACf,UAAU;CACF,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,sCAAsC,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mCAAmC,CAAC;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,wDAAwD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proactive Thinking Block Validator Hook
|
|
3
|
+
*
|
|
4
|
+
* Prevents "Expected thinking/redacted_thinking but found tool_use" errors
|
|
5
|
+
* by validating and fixing message structure BEFORE sending to Anthropic API.
|
|
6
|
+
*
|
|
7
|
+
* This hook runs on the "experimental.chat.messages.transform" hook point,
|
|
8
|
+
* which is called before messages are converted to ModelMessage format and
|
|
9
|
+
* sent to the API.
|
|
10
|
+
*
|
|
11
|
+
* Key differences from session-recovery hook:
|
|
12
|
+
* - PROACTIVE (prevents error) vs REACTIVE (fixes after error)
|
|
13
|
+
* - Runs BEFORE API call vs AFTER API error
|
|
14
|
+
* - User never sees the error vs User sees error then recovery
|
|
15
|
+
*
|
|
16
|
+
* Ported from oh-my-opencode's thinking-block-validator hook.
|
|
17
|
+
*/
|
|
18
|
+
import type { MessagePart, MessageWithParts, MessagesTransformHook, ValidationResult } from "./types.js";
|
|
19
|
+
export * from "./types.js";
|
|
20
|
+
export * from "./constants.js";
|
|
21
|
+
export declare function isExtendedThinkingModel(modelID: string): boolean;
|
|
22
|
+
export declare function hasContentParts(parts: MessagePart[]): boolean;
|
|
23
|
+
export declare function startsWithThinkingBlock(parts: MessagePart[]): boolean;
|
|
24
|
+
export declare function findPreviousThinkingContent(messages: MessageWithParts[], currentIndex: number): string;
|
|
25
|
+
export declare function prependThinkingBlock(message: MessageWithParts, thinkingContent: string): void;
|
|
26
|
+
export declare function validateMessage(message: MessageWithParts, messages: MessageWithParts[], index: number, modelID: string): ValidationResult;
|
|
27
|
+
export declare function createThinkingBlockValidatorHook(): MessagesTransformHook;
|
|
28
|
+
export declare function validateMessages(messages: MessageWithParts[], modelID: string): ValidationResult[];
|
|
29
|
+
export declare function getValidationStats(results: ValidationResult[]): {
|
|
30
|
+
total: number;
|
|
31
|
+
valid: number;
|
|
32
|
+
fixed: number;
|
|
33
|
+
issues: number;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAUpB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAU/B,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAahE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAI7D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAKrE;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,YAAY,EAAE,MAAM,GACnB,MAAM,CAqBR;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,MAAM,GACtB,IAAI,CAeN;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,gBAAgB,CA2BlB;AAED,wBAAgB,gCAAgC,IAAI,qBAAqB,CA4CxE;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,EAAE,MAAM,GACd,gBAAgB,EAAE,CASpB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAOA"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proactive Thinking Block Validator Hook
|
|
3
|
+
*
|
|
4
|
+
* Prevents "Expected thinking/redacted_thinking but found tool_use" errors
|
|
5
|
+
* by validating and fixing message structure BEFORE sending to Anthropic API.
|
|
6
|
+
*
|
|
7
|
+
* This hook runs on the "experimental.chat.messages.transform" hook point,
|
|
8
|
+
* which is called before messages are converted to ModelMessage format and
|
|
9
|
+
* sent to the API.
|
|
10
|
+
*
|
|
11
|
+
* Key differences from session-recovery hook:
|
|
12
|
+
* - PROACTIVE (prevents error) vs REACTIVE (fixes after error)
|
|
13
|
+
* - Runs BEFORE API call vs AFTER API error
|
|
14
|
+
* - User never sees the error vs User sees error then recovery
|
|
15
|
+
*
|
|
16
|
+
* Ported from oh-my-opencode's thinking-block-validator hook.
|
|
17
|
+
*/
|
|
18
|
+
import { CONTENT_PART_TYPES, THINKING_PART_TYPES, DEFAULT_THINKING_CONTENT, SYNTHETIC_THINKING_ID_PREFIX, HOOK_NAME, } from "./constants.js";
|
|
19
|
+
export * from "./types.js";
|
|
20
|
+
export * from "./constants.js";
|
|
21
|
+
function isContentPartType(type) {
|
|
22
|
+
return CONTENT_PART_TYPES.includes(type);
|
|
23
|
+
}
|
|
24
|
+
function isThinkingPartType(type) {
|
|
25
|
+
return THINKING_PART_TYPES.includes(type);
|
|
26
|
+
}
|
|
27
|
+
export function isExtendedThinkingModel(modelID) {
|
|
28
|
+
if (!modelID)
|
|
29
|
+
return false;
|
|
30
|
+
const lower = modelID.toLowerCase();
|
|
31
|
+
if (lower.includes("thinking") || lower.endsWith("-high")) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return (lower.includes("claude-sonnet-4") ||
|
|
35
|
+
lower.includes("claude-opus-4") ||
|
|
36
|
+
lower.includes("claude-3"));
|
|
37
|
+
}
|
|
38
|
+
export function hasContentParts(parts) {
|
|
39
|
+
if (!parts || parts.length === 0)
|
|
40
|
+
return false;
|
|
41
|
+
return parts.some((part) => isContentPartType(part.type));
|
|
42
|
+
}
|
|
43
|
+
export function startsWithThinkingBlock(parts) {
|
|
44
|
+
if (!parts || parts.length === 0)
|
|
45
|
+
return false;
|
|
46
|
+
const firstPart = parts[0];
|
|
47
|
+
return isThinkingPartType(firstPart.type);
|
|
48
|
+
}
|
|
49
|
+
export function findPreviousThinkingContent(messages, currentIndex) {
|
|
50
|
+
for (let i = currentIndex - 1; i >= 0; i--) {
|
|
51
|
+
const msg = messages[i];
|
|
52
|
+
if (msg.info.role !== "assistant")
|
|
53
|
+
continue;
|
|
54
|
+
if (!msg.parts)
|
|
55
|
+
continue;
|
|
56
|
+
for (const part of msg.parts) {
|
|
57
|
+
if (isThinkingPartType(part.type)) {
|
|
58
|
+
const thinking = part.thinking || part.text;
|
|
59
|
+
if (thinking &&
|
|
60
|
+
typeof thinking === "string" &&
|
|
61
|
+
thinking.trim().length > 0) {
|
|
62
|
+
return thinking;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return "";
|
|
68
|
+
}
|
|
69
|
+
export function prependThinkingBlock(message, thinkingContent) {
|
|
70
|
+
if (!message.parts) {
|
|
71
|
+
message.parts = [];
|
|
72
|
+
}
|
|
73
|
+
const thinkingPart = {
|
|
74
|
+
type: "thinking",
|
|
75
|
+
id: SYNTHETIC_THINKING_ID_PREFIX,
|
|
76
|
+
sessionID: message.info.sessionID || "",
|
|
77
|
+
messageID: message.info.id,
|
|
78
|
+
thinking: thinkingContent,
|
|
79
|
+
synthetic: true,
|
|
80
|
+
};
|
|
81
|
+
message.parts.unshift(thinkingPart);
|
|
82
|
+
}
|
|
83
|
+
export function validateMessage(message, messages, index, modelID) {
|
|
84
|
+
if (message.info.role !== "assistant") {
|
|
85
|
+
return { valid: true, fixed: false };
|
|
86
|
+
}
|
|
87
|
+
if (!isExtendedThinkingModel(modelID)) {
|
|
88
|
+
return { valid: true, fixed: false };
|
|
89
|
+
}
|
|
90
|
+
if (hasContentParts(message.parts) &&
|
|
91
|
+
!startsWithThinkingBlock(message.parts)) {
|
|
92
|
+
const previousThinking = findPreviousThinkingContent(messages, index);
|
|
93
|
+
const thinkingContent = previousThinking || DEFAULT_THINKING_CONTENT;
|
|
94
|
+
prependThinkingBlock(message, thinkingContent);
|
|
95
|
+
return {
|
|
96
|
+
valid: false,
|
|
97
|
+
fixed: true,
|
|
98
|
+
issue: "Assistant message has content but no thinking block",
|
|
99
|
+
action: `Prepended synthetic thinking block: "${thinkingContent.substring(0, 50)}..."`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return { valid: true, fixed: false };
|
|
103
|
+
}
|
|
104
|
+
export function createThinkingBlockValidatorHook() {
|
|
105
|
+
return {
|
|
106
|
+
"experimental.chat.messages.transform": async (_input, output) => {
|
|
107
|
+
const { messages } = output;
|
|
108
|
+
if (!messages || messages.length === 0) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
let lastUserMessage;
|
|
112
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
113
|
+
if (messages[i].info.role === "user") {
|
|
114
|
+
lastUserMessage = messages[i];
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const modelID = lastUserMessage?.info?.modelID || "";
|
|
119
|
+
if (!isExtendedThinkingModel(modelID)) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
let fixedCount = 0;
|
|
123
|
+
for (let i = 0; i < messages.length; i++) {
|
|
124
|
+
const msg = messages[i];
|
|
125
|
+
if (msg.info.role !== "assistant")
|
|
126
|
+
continue;
|
|
127
|
+
if (hasContentParts(msg.parts) && !startsWithThinkingBlock(msg.parts)) {
|
|
128
|
+
const previousThinking = findPreviousThinkingContent(messages, i);
|
|
129
|
+
const thinkingContent = previousThinking || DEFAULT_THINKING_CONTENT;
|
|
130
|
+
prependThinkingBlock(msg, thinkingContent);
|
|
131
|
+
fixedCount++;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (fixedCount > 0 && process.env.DEBUG_THINKING_VALIDATOR) {
|
|
135
|
+
console.log(`[${HOOK_NAME}] Fixed ${fixedCount} message(s) by prepending thinking blocks`);
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export function validateMessages(messages, modelID) {
|
|
141
|
+
const results = [];
|
|
142
|
+
for (let i = 0; i < messages.length; i++) {
|
|
143
|
+
const result = validateMessage(messages[i], messages, i, modelID);
|
|
144
|
+
results.push(result);
|
|
145
|
+
}
|
|
146
|
+
return results;
|
|
147
|
+
}
|
|
148
|
+
export function getValidationStats(results) {
|
|
149
|
+
return {
|
|
150
|
+
total: results.length,
|
|
151
|
+
valid: results.filter((r) => r.valid && !r.fixed).length,
|
|
152
|
+
fixed: results.filter((r) => r.fixed).length,
|
|
153
|
+
issues: results.filter((r) => !r.valid).length,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AASH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAE/B,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAQ,mBAAyC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEpC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACjC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC/B,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAA4B,EAC5B,YAAoB;IAEpB,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAE5C,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,SAAS;QACzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;gBAC5C,IACE,QAAQ;oBACR,OAAO,QAAQ,KAAK,QAAQ;oBAC5B,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAC1B,CAAC;oBACD,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAyB,EACzB,eAAuB;IAEvB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,YAAY,GAAgB;QAChC,IAAI,EAAE,UAAU;QAChB,EAAE,EAAE,4BAA4B;QAChC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE;QACvC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1B,QAAQ,EAAE,eAAe;QACzB,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAyB,EACzB,QAA4B,EAC5B,KAAa,EACb,OAAe;IAEf,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAED,IACE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;QAC9B,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,EACvC,CAAC;QACD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,gBAAgB,IAAI,wBAAwB,CAAC;QAErE,oBAAoB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAE/C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,qDAAqD;YAC5D,MAAM,EAAE,wCAAwC,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM;SACvF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,sCAAsC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YAE5B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,eAA6C,CAAC;YAClD,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACrC,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM;gBACR,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,eAAe,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;YAErD,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;oBAAE,SAAS;gBAE5C,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACtE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAClE,MAAM,eAAe,GAAG,gBAAgB,IAAI,wBAAwB,CAAC;oBAErE,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;oBAC3C,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;YAED,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;gBAC3D,OAAO,CAAC,GAAG,CACT,IAAI,SAAS,WAAW,UAAU,2CAA2C,CAC9E,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAA4B,EAC5B,OAAe;IAEf,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA2B;IAM5D,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;QACxD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;QAC5C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thinking Block Validator Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for validating and fixing thinking blocks in assistant messages.
|
|
5
|
+
*
|
|
6
|
+
* Ported from oh-my-opencode's thinking-block-validator hook.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Message part representing different content types
|
|
10
|
+
*/
|
|
11
|
+
export interface MessagePart {
|
|
12
|
+
type: string;
|
|
13
|
+
id?: string;
|
|
14
|
+
sessionID?: string;
|
|
15
|
+
messageID?: string;
|
|
16
|
+
thinking?: string;
|
|
17
|
+
text?: string;
|
|
18
|
+
synthetic?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Message information
|
|
22
|
+
*/
|
|
23
|
+
export interface MessageInfo {
|
|
24
|
+
id: string;
|
|
25
|
+
role: 'user' | 'assistant' | 'system';
|
|
26
|
+
sessionID?: string;
|
|
27
|
+
modelID?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Message with parts array
|
|
31
|
+
*/
|
|
32
|
+
export interface MessageWithParts {
|
|
33
|
+
info: MessageInfo;
|
|
34
|
+
parts: MessagePart[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Input for messages transform hook
|
|
38
|
+
*/
|
|
39
|
+
export interface MessagesTransformInput {
|
|
40
|
+
messages: MessageWithParts[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Output for messages transform hook
|
|
44
|
+
*/
|
|
45
|
+
export interface MessagesTransformOutput {
|
|
46
|
+
messages: MessageWithParts[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Hook for transforming messages before API call
|
|
50
|
+
*/
|
|
51
|
+
export interface MessagesTransformHook {
|
|
52
|
+
"experimental.chat.messages.transform"?: (input: Record<string, never>, output: MessagesTransformOutput) => Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Validation result for a message
|
|
56
|
+
*/
|
|
57
|
+
export interface ValidationResult {
|
|
58
|
+
/** Whether the message is valid */
|
|
59
|
+
valid: boolean;
|
|
60
|
+
/** Whether the message was fixed */
|
|
61
|
+
fixed: boolean;
|
|
62
|
+
/** Description of the issue found */
|
|
63
|
+
issue?: string;
|
|
64
|
+
/** Action taken to fix the issue */
|
|
65
|
+
action?: string;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC,CAAC,EAAE,CACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5B,MAAM,EAAE,uBAAuB,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,oCAAoC;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/thinking-block-validator/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|