@compass-ai/nova 1.0.73 → 1.0.74
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/dist/acp/agent.d.ts +318 -0
- package/dist/acp/agent.d.ts.map +1 -0
- package/dist/acp/agent.js +795 -0
- package/dist/acp/agent.js.map +1 -0
- package/dist/acp/backpressure-writer.d.ts +49 -0
- package/dist/acp/backpressure-writer.d.ts.map +1 -0
- package/dist/acp/backpressure-writer.js +153 -0
- package/dist/acp/backpressure-writer.js.map +1 -0
- package/dist/acp/event-adapter.d.ts +242 -0
- package/dist/acp/event-adapter.d.ts.map +1 -0
- package/dist/acp/event-adapter.js +456 -0
- package/dist/acp/event-adapter.js.map +1 -0
- package/dist/acp/index.d.ts +30 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +36 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/modes.d.ts +56 -0
- package/dist/acp/modes.d.ts.map +1 -0
- package/dist/acp/modes.js +135 -0
- package/dist/acp/modes.js.map +1 -0
- package/dist/acp/session-manager.d.ts +170 -0
- package/dist/acp/session-manager.d.ts.map +1 -0
- package/dist/acp/session-manager.js +381 -0
- package/dist/acp/session-manager.js.map +1 -0
- package/dist/acp/text-coalescer.d.ts +45 -0
- package/dist/acp/text-coalescer.d.ts.map +1 -0
- package/dist/acp/text-coalescer.js +110 -0
- package/dist/acp/text-coalescer.js.map +1 -0
- package/dist/acp/tool-bridge.d.ts +156 -0
- package/dist/acp/tool-bridge.d.ts.map +1 -0
- package/dist/acp/tool-bridge.js +381 -0
- package/dist/acp/tool-bridge.js.map +1 -0
- package/dist/acp/types.d.ts +314 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +8 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +185 -184
- package/dist/cli.js.map +1 -0
- package/dist/commands/acp.d.ts +26 -0
- package/dist/commands/acp.d.ts.map +1 -0
- package/dist/commands/acp.js +492 -0
- package/dist/commands/acp.js.map +1 -0
- package/dist/commands/cache.d.ts +33 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +537 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +367 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/consent.d.ts +21 -0
- package/dist/commands/consent.d.ts.map +1 -0
- package/dist/commands/consent.js +334 -0
- package/dist/commands/consent.js.map +1 -0
- package/dist/commands/data.d.ts +24 -0
- package/dist/commands/data.d.ts.map +1 -0
- package/dist/commands/data.js +586 -0
- package/dist/commands/data.js.map +1 -0
- package/dist/commands/index.d.ts +145 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +210 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +106 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +349 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/logs.d.ts +13 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +359 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/mcp.d.ts +20 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +687 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/reset.d.ts +20 -0
- package/dist/commands/reset.d.ts.map +1 -0
- package/dist/commands/reset.js +372 -0
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/setup.d.ts +74 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +863 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/slash/agents.d.ts +40 -0
- package/dist/commands/slash/agents.d.ts.map +1 -0
- package/dist/commands/slash/agents.js +519 -0
- package/dist/commands/slash/agents.js.map +1 -0
- package/dist/commands/slash/approve.d.ts +46 -0
- package/dist/commands/slash/approve.d.ts.map +1 -0
- package/dist/commands/slash/approve.js +239 -0
- package/dist/commands/slash/approve.js.map +1 -0
- package/dist/commands/slash/attach.d.ts +70 -0
- package/dist/commands/slash/attach.d.ts.map +1 -0
- package/dist/commands/slash/attach.js +333 -0
- package/dist/commands/slash/attach.js.map +1 -0
- package/dist/commands/slash/clear.d.ts +47 -0
- package/dist/commands/slash/clear.d.ts.map +1 -0
- package/dist/commands/slash/clear.js +261 -0
- package/dist/commands/slash/clear.js.map +1 -0
- package/dist/commands/slash/commit.d.ts +40 -0
- package/dist/commands/slash/commit.d.ts.map +1 -0
- package/dist/commands/slash/commit.js +337 -0
- package/dist/commands/slash/commit.js.map +1 -0
- package/dist/commands/slash/compact.d.ts +48 -0
- package/dist/commands/slash/compact.d.ts.map +1 -0
- package/dist/commands/slash/compact.js +288 -0
- package/dist/commands/slash/compact.js.map +1 -0
- package/dist/commands/slash/config.d.ts +20 -0
- package/dist/commands/slash/config.d.ts.map +1 -0
- package/dist/commands/slash/config.js +136 -0
- package/dist/commands/slash/config.js.map +1 -0
- package/dist/commands/slash/context.d.ts +49 -0
- package/dist/commands/slash/context.d.ts.map +1 -0
- package/dist/commands/slash/context.js +430 -0
- package/dist/commands/slash/context.js.map +1 -0
- package/dist/commands/slash/cost.d.ts +34 -0
- package/dist/commands/slash/cost.d.ts.map +1 -0
- package/dist/commands/slash/cost.js +312 -0
- package/dist/commands/slash/cost.js.map +1 -0
- package/dist/commands/slash/custom.d.ts +41 -0
- package/dist/commands/slash/custom.d.ts.map +1 -0
- package/dist/commands/slash/custom.js +126 -0
- package/dist/commands/slash/custom.js.map +1 -0
- package/dist/commands/slash/exit.d.ts +25 -0
- package/dist/commands/slash/exit.d.ts.map +1 -0
- package/dist/commands/slash/exit.js +186 -0
- package/dist/commands/slash/exit.js.map +1 -0
- package/dist/commands/slash/export.d.ts +27 -0
- package/dist/commands/slash/export.d.ts.map +1 -0
- package/dist/commands/slash/export.js +318 -0
- package/dist/commands/slash/export.js.map +1 -0
- package/dist/commands/slash/files.d.ts +47 -0
- package/dist/commands/slash/files.d.ts.map +1 -0
- package/dist/commands/slash/files.js +521 -0
- package/dist/commands/slash/files.js.map +1 -0
- package/dist/commands/slash/help.d.ts +50 -0
- package/dist/commands/slash/help.d.ts.map +1 -0
- package/dist/commands/slash/help.js +282 -0
- package/dist/commands/slash/help.js.map +1 -0
- package/dist/commands/slash/index-cmd.d.ts +41 -0
- package/dist/commands/slash/index-cmd.d.ts.map +1 -0
- package/dist/commands/slash/index-cmd.js +349 -0
- package/dist/commands/slash/index-cmd.js.map +1 -0
- package/dist/commands/slash/index.d.ts +97 -0
- package/dist/commands/slash/index.d.ts.map +1 -0
- package/dist/commands/slash/index.js +251 -0
- package/dist/commands/slash/index.js.map +1 -0
- package/dist/commands/slash/login.d.ts +23 -0
- package/dist/commands/slash/login.d.ts.map +1 -0
- package/dist/commands/slash/login.js +175 -0
- package/dist/commands/slash/login.js.map +1 -0
- package/dist/commands/slash/logout.d.ts +23 -0
- package/dist/commands/slash/logout.d.ts.map +1 -0
- package/dist/commands/slash/logout.js +153 -0
- package/dist/commands/slash/logout.js.map +1 -0
- package/dist/commands/slash/logs.d.ts +29 -0
- package/dist/commands/slash/logs.d.ts.map +1 -0
- package/dist/commands/slash/logs.js +423 -0
- package/dist/commands/slash/logs.js.map +1 -0
- package/dist/commands/slash/mcp.d.ts +29 -0
- package/dist/commands/slash/mcp.d.ts.map +1 -0
- package/dist/commands/slash/mcp.js +1026 -0
- package/dist/commands/slash/mcp.js.map +1 -0
- package/dist/commands/slash/model.d.ts +60 -0
- package/dist/commands/slash/model.d.ts.map +1 -0
- package/dist/commands/slash/model.js +466 -0
- package/dist/commands/slash/model.js.map +1 -0
- package/dist/commands/slash/personality.d.ts +40 -0
- package/dist/commands/slash/personality.d.ts.map +1 -0
- package/dist/commands/slash/personality.js +272 -0
- package/dist/commands/slash/personality.js.map +1 -0
- package/dist/commands/slash/purge.d.ts +42 -0
- package/dist/commands/slash/purge.d.ts.map +1 -0
- package/dist/commands/slash/purge.js +233 -0
- package/dist/commands/slash/purge.js.map +1 -0
- package/dist/commands/slash/reset.d.ts +44 -0
- package/dist/commands/slash/reset.d.ts.map +1 -0
- package/dist/commands/slash/reset.js +326 -0
- package/dist/commands/slash/reset.js.map +1 -0
- package/dist/commands/slash/skills.d.ts +40 -0
- package/dist/commands/slash/skills.d.ts.map +1 -0
- package/dist/commands/slash/skills.js +207 -0
- package/dist/commands/slash/skills.js.map +1 -0
- package/dist/commands/slash/tokens.d.ts +34 -0
- package/dist/commands/slash/tokens.d.ts.map +1 -0
- package/dist/commands/slash/tokens.js +205 -0
- package/dist/commands/slash/tokens.js.map +1 -0
- package/dist/commands/slash/unleash.d.ts +50 -0
- package/dist/commands/slash/unleash.d.ts.map +1 -0
- package/dist/commands/slash/unleash.js +262 -0
- package/dist/commands/slash/unleash.js.map +1 -0
- package/dist/commands/slash/update.d.ts +34 -0
- package/dist/commands/slash/update.d.ts.map +1 -0
- package/dist/commands/slash/update.js +364 -0
- package/dist/commands/slash/update.js.map +1 -0
- package/dist/commands/slash/wrap.d.ts +18 -0
- package/dist/commands/slash/wrap.d.ts.map +1 -0
- package/dist/commands/slash/wrap.js +21 -0
- package/dist/commands/slash/wrap.js.map +1 -0
- package/dist/commands/tokens.d.ts +26 -0
- package/dist/commands/tokens.d.ts.map +1 -0
- package/dist/commands/tokens.js +245 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/constants/builtin-agents.d.ts +27 -0
- package/dist/constants/builtin-agents.d.ts.map +1 -0
- package/dist/constants/builtin-agents.js +710 -0
- package/dist/constants/builtin-agents.js.map +1 -0
- package/dist/constants/builtin-skills.d.ts +32 -0
- package/dist/constants/builtin-skills.d.ts.map +1 -0
- package/dist/constants/builtin-skills.js +389 -0
- package/dist/constants/builtin-skills.js.map +1 -0
- package/dist/constants/defaults.d.ts +448 -0
- package/dist/constants/defaults.d.ts.map +1 -0
- package/dist/constants/defaults.js +829 -0
- package/dist/constants/defaults.js.map +1 -0
- package/dist/constants/index.d.ts +27 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +85 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/install-hints.d.ts +7 -0
- package/dist/constants/install-hints.d.ts.map +1 -0
- package/dist/constants/install-hints.js +123 -0
- package/dist/constants/install-hints.js.map +1 -0
- package/dist/constants/models.d.ts +255 -0
- package/dist/constants/models.d.ts.map +1 -0
- package/dist/constants/models.js +596 -0
- package/dist/constants/models.js.map +1 -0
- package/dist/constants/schedule.d.ts +43 -0
- package/dist/constants/schedule.d.ts.map +1 -0
- package/dist/constants/schedule.js +110 -0
- package/dist/constants/schedule.js.map +1 -0
- package/dist/constants/system-utilities.d.ts +57 -0
- package/dist/constants/system-utilities.d.ts.map +1 -0
- package/dist/constants/system-utilities.js +421 -0
- package/dist/constants/system-utilities.js.map +1 -0
- package/dist/constants/token-limits.d.ts +102 -0
- package/dist/constants/token-limits.d.ts.map +1 -0
- package/dist/constants/token-limits.js +286 -0
- package/dist/constants/token-limits.js.map +1 -0
- package/dist/core/autocomplete.d.ts +132 -0
- package/dist/core/autocomplete.d.ts.map +1 -0
- package/dist/core/autocomplete.js +653 -0
- package/dist/core/autocomplete.js.map +1 -0
- package/dist/core/command-parser.d.ts +301 -0
- package/dist/core/command-parser.d.ts.map +1 -0
- package/dist/core/command-parser.js +526 -0
- package/dist/core/command-parser.js.map +1 -0
- package/dist/core/context-builder.d.ts +264 -0
- package/dist/core/context-builder.d.ts.map +1 -0
- package/dist/core/context-builder.js +1018 -0
- package/dist/core/context-builder.js.map +1 -0
- package/dist/core/event-emitter.d.ts +411 -0
- package/dist/core/event-emitter.d.ts.map +1 -0
- package/dist/core/event-emitter.js +138 -0
- package/dist/core/event-emitter.js.map +1 -0
- package/dist/core/history-manager.d.ts +62 -0
- package/dist/core/history-manager.d.ts.map +1 -0
- package/dist/core/history-manager.js +151 -0
- package/dist/core/history-manager.js.map +1 -0
- package/dist/core/slash-command-handler.d.ts +352 -0
- package/dist/core/slash-command-handler.d.ts.map +1 -0
- package/dist/core/slash-command-handler.js +563 -0
- package/dist/core/slash-command-handler.js.map +1 -0
- package/dist/core/task-processor.d.ts +179 -0
- package/dist/core/task-processor.d.ts.map +1 -0
- package/dist/core/task-processor.js +519 -0
- package/dist/core/task-processor.js.map +1 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -0
- package/dist/prompts/agent-prompt-generator.d.ts +26 -0
- package/dist/prompts/agent-prompt-generator.d.ts.map +1 -0
- package/dist/prompts/agent-prompt-generator.js +244 -0
- package/dist/prompts/agent-prompt-generator.js.map +1 -0
- package/dist/prompts/commit-message.d.ts +35 -0
- package/dist/prompts/commit-message.d.ts.map +1 -0
- package/dist/prompts/commit-message.js +187 -0
- package/dist/prompts/commit-message.js.map +1 -0
- package/dist/prompts/conversation.d.ts +51 -0
- package/dist/prompts/conversation.d.ts.map +1 -0
- package/dist/prompts/conversation.js +115 -0
- package/dist/prompts/conversation.js.map +1 -0
- package/dist/prompts/index.d.ts +39 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +74 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/memory.d.ts +6 -0
- package/dist/prompts/memory.d.ts.map +1 -0
- package/dist/prompts/memory.js +29 -0
- package/dist/prompts/memory.js.map +1 -0
- package/dist/prompts/personality.d.ts +77 -0
- package/dist/prompts/personality.d.ts.map +1 -0
- package/dist/prompts/personality.js +393 -0
- package/dist/prompts/personality.js.map +1 -0
- package/dist/prompts/plan-generator.d.ts +144 -0
- package/dist/prompts/plan-generator.d.ts.map +1 -0
- package/dist/prompts/plan-generator.js +553 -0
- package/dist/prompts/plan-generator.js.map +1 -0
- package/dist/prompts/system.d.ts +95 -0
- package/dist/prompts/system.d.ts.map +1 -0
- package/dist/prompts/system.js +461 -0
- package/dist/prompts/system.js.map +1 -0
- package/dist/prompts/task-processor.d.ts +94 -0
- package/dist/prompts/task-processor.d.ts.map +1 -0
- package/dist/prompts/task-processor.js +554 -0
- package/dist/prompts/task-processor.js.map +1 -0
- package/dist/prompts/unguarded.d.ts +78 -0
- package/dist/prompts/unguarded.d.ts.map +1 -0
- package/dist/prompts/unguarded.js +418 -0
- package/dist/prompts/unguarded.js.map +1 -0
- package/dist/prompts/utils.d.ts +73 -0
- package/dist/prompts/utils.d.ts.map +1 -0
- package/dist/prompts/utils.js +114 -0
- package/dist/prompts/utils.js.map +1 -0
- package/dist/prompts/workflow.d.ts +241 -0
- package/dist/prompts/workflow.d.ts.map +1 -0
- package/dist/prompts/workflow.js +608 -0
- package/dist/prompts/workflow.js.map +1 -0
- package/dist/services/action-logger.d.ts +383 -0
- package/dist/services/action-logger.d.ts.map +1 -0
- package/dist/services/action-logger.js +544 -0
- package/dist/services/action-logger.js.map +1 -0
- package/dist/services/agent-budget-allocator.d.ts +111 -0
- package/dist/services/agent-budget-allocator.d.ts.map +1 -0
- package/dist/services/agent-budget-allocator.js +278 -0
- package/dist/services/agent-budget-allocator.js.map +1 -0
- package/dist/services/agent-manager.d.ts +181 -0
- package/dist/services/agent-manager.d.ts.map +1 -0
- package/dist/services/agent-manager.js +749 -0
- package/dist/services/agent-manager.js.map +1 -0
- package/dist/services/agent-spawner.d.ts +138 -0
- package/dist/services/agent-spawner.d.ts.map +1 -0
- package/dist/services/agent-spawner.js +748 -0
- package/dist/services/agent-spawner.js.map +1 -0
- package/dist/services/agent-state-service.d.ts +145 -0
- package/dist/services/agent-state-service.d.ts.map +1 -0
- package/dist/services/agent-state-service.js +247 -0
- package/dist/services/agent-state-service.js.map +1 -0
- package/dist/services/anthropic-client.d.ts +357 -0
- package/dist/services/anthropic-client.d.ts.map +1 -0
- package/dist/services/anthropic-client.js +1451 -0
- package/dist/services/anthropic-client.js.map +1 -0
- package/dist/services/approval-manager.d.ts +385 -0
- package/dist/services/approval-manager.d.ts.map +1 -0
- package/dist/services/approval-manager.js +1044 -0
- package/dist/services/approval-manager.js.map +1 -0
- package/dist/services/audit-logger.d.ts +245 -0
- package/dist/services/audit-logger.d.ts.map +1 -0
- package/dist/services/audit-logger.js +324 -0
- package/dist/services/audit-logger.js.map +1 -0
- package/dist/services/backup-manager.d.ts +136 -0
- package/dist/services/backup-manager.d.ts.map +1 -0
- package/dist/services/backup-manager.js +260 -0
- package/dist/services/backup-manager.js.map +1 -0
- package/dist/services/cache-service.d.ts +247 -0
- package/dist/services/cache-service.d.ts.map +1 -0
- package/dist/services/cache-service.js +558 -0
- package/dist/services/cache-service.js.map +1 -0
- package/dist/services/chat-archival-service.d.ts +108 -0
- package/dist/services/chat-archival-service.d.ts.map +1 -0
- package/dist/services/chat-archival-service.js +465 -0
- package/dist/services/chat-archival-service.js.map +1 -0
- package/dist/services/codebase-indexer.d.ts +272 -0
- package/dist/services/codebase-indexer.d.ts.map +1 -0
- package/dist/services/codebase-indexer.js +863 -0
- package/dist/services/codebase-indexer.js.map +1 -0
- package/dist/services/compass-auth-service.d.ts +204 -0
- package/dist/services/compass-auth-service.d.ts.map +1 -0
- package/dist/services/compass-auth-service.js +391 -0
- package/dist/services/compass-auth-service.js.map +1 -0
- package/dist/services/complexity-classifier.d.ts +208 -0
- package/dist/services/complexity-classifier.d.ts.map +1 -0
- package/dist/services/complexity-classifier.js +1410 -0
- package/dist/services/complexity-classifier.js.map +1 -0
- package/dist/services/config-manager.d.ts +278 -0
- package/dist/services/config-manager.d.ts.map +1 -0
- package/dist/services/config-manager.js +651 -0
- package/dist/services/config-manager.js.map +1 -0
- package/dist/services/consent-manager.d.ts +239 -0
- package/dist/services/consent-manager.d.ts.map +1 -0
- package/dist/services/consent-manager.js +516 -0
- package/dist/services/consent-manager.js.map +1 -0
- package/dist/services/conversation-compactor.d.ts +223 -0
- package/dist/services/conversation-compactor.d.ts.map +1 -0
- package/dist/services/conversation-compactor.js +750 -0
- package/dist/services/conversation-compactor.js.map +1 -0
- package/dist/services/cost-tracker.d.ts +167 -0
- package/dist/services/cost-tracker.d.ts.map +1 -0
- package/dist/services/cost-tracker.js +199 -0
- package/dist/services/cost-tracker.js.map +1 -0
- package/dist/services/credential-store.d.ts +273 -0
- package/dist/services/credential-store.d.ts.map +1 -0
- package/dist/services/credential-store.js +877 -0
- package/dist/services/credential-store.js.map +1 -0
- package/dist/services/custom-command-service.d.ts +112 -0
- package/dist/services/custom-command-service.d.ts.map +1 -0
- package/dist/services/custom-command-service.js +464 -0
- package/dist/services/custom-command-service.js.map +1 -0
- package/dist/services/default-statusline-renderer.d.ts +60 -0
- package/dist/services/default-statusline-renderer.d.ts.map +1 -0
- package/dist/services/default-statusline-renderer.js +110 -0
- package/dist/services/default-statusline-renderer.js.map +1 -0
- package/dist/services/enhanced-context-gatherer.d.ts +116 -0
- package/dist/services/enhanced-context-gatherer.d.ts.map +1 -0
- package/dist/services/enhanced-context-gatherer.js +605 -0
- package/dist/services/enhanced-context-gatherer.js.map +1 -0
- package/dist/services/file-hash-tracker.d.ts +95 -0
- package/dist/services/file-hash-tracker.d.ts.map +1 -0
- package/dist/services/file-hash-tracker.js +199 -0
- package/dist/services/file-hash-tracker.js.map +1 -0
- package/dist/services/file-service.d.ts +274 -0
- package/dist/services/file-service.d.ts.map +1 -0
- package/dist/services/file-service.js +876 -0
- package/dist/services/file-service.js.map +1 -0
- package/dist/services/git-service.d.ts +536 -0
- package/dist/services/git-service.d.ts.map +1 -0
- package/dist/services/git-service.js +1215 -0
- package/dist/services/git-service.js.map +1 -0
- package/dist/services/hook-service.d.ts +148 -0
- package/dist/services/hook-service.d.ts.map +1 -0
- package/dist/services/hook-service.js +705 -0
- package/dist/services/hook-service.js.map +1 -0
- package/dist/services/ide-state-service.d.ts +114 -0
- package/dist/services/ide-state-service.d.ts.map +1 -0
- package/dist/services/ide-state-service.js +204 -0
- package/dist/services/ide-state-service.js.map +1 -0
- package/dist/services/interactive-clarifier.d.ts +90 -0
- package/dist/services/interactive-clarifier.d.ts.map +1 -0
- package/dist/services/interactive-clarifier.js +446 -0
- package/dist/services/interactive-clarifier.js.map +1 -0
- package/dist/services/iteration-scoper.d.ts +225 -0
- package/dist/services/iteration-scoper.d.ts.map +1 -0
- package/dist/services/iteration-scoper.js +387 -0
- package/dist/services/iteration-scoper.js.map +1 -0
- package/dist/services/llm-plan-generator.d.ts +44 -0
- package/dist/services/llm-plan-generator.d.ts.map +1 -0
- package/dist/services/llm-plan-generator.js +863 -0
- package/dist/services/llm-plan-generator.js.map +1 -0
- package/dist/services/llm-system-prompt-generator.d.ts +85 -0
- package/dist/services/llm-system-prompt-generator.d.ts.map +1 -0
- package/dist/services/llm-system-prompt-generator.js +257 -0
- package/dist/services/llm-system-prompt-generator.js.map +1 -0
- package/dist/services/log-interpreter.d.ts +190 -0
- package/dist/services/log-interpreter.d.ts.map +1 -0
- package/dist/services/log-interpreter.js +520 -0
- package/dist/services/log-interpreter.js.map +1 -0
- package/dist/services/mcp-config-manager.d.ts +141 -0
- package/dist/services/mcp-config-manager.d.ts.map +1 -0
- package/dist/services/mcp-config-manager.js +678 -0
- package/dist/services/mcp-config-manager.js.map +1 -0
- package/dist/services/mcp-oauth-service.d.ts +170 -0
- package/dist/services/mcp-oauth-service.d.ts.map +1 -0
- package/dist/services/mcp-oauth-service.js +892 -0
- package/dist/services/mcp-oauth-service.js.map +1 -0
- package/dist/services/mcp-plugin-support.d.ts +81 -0
- package/dist/services/mcp-plugin-support.d.ts.map +1 -0
- package/dist/services/mcp-plugin-support.js +305 -0
- package/dist/services/mcp-plugin-support.js.map +1 -0
- package/dist/services/mcp-server-manager.d.ts +134 -0
- package/dist/services/mcp-server-manager.d.ts.map +1 -0
- package/dist/services/mcp-server-manager.js +613 -0
- package/dist/services/mcp-server-manager.js.map +1 -0
- package/dist/services/mcp-tool-integration.d.ts +119 -0
- package/dist/services/mcp-tool-integration.d.ts.map +1 -0
- package/dist/services/mcp-tool-integration.js +381 -0
- package/dist/services/mcp-tool-integration.js.map +1 -0
- package/dist/services/mcp-transport.d.ts +105 -0
- package/dist/services/mcp-transport.d.ts.map +1 -0
- package/dist/services/mcp-transport.js +1316 -0
- package/dist/services/mcp-transport.js.map +1 -0
- package/dist/services/memory-service.d.ts +55 -0
- package/dist/services/memory-service.d.ts.map +1 -0
- package/dist/services/memory-service.js +251 -0
- package/dist/services/memory-service.js.map +1 -0
- package/dist/services/model-availability.d.ts +64 -0
- package/dist/services/model-availability.d.ts.map +1 -0
- package/dist/services/model-availability.js +114 -0
- package/dist/services/model-availability.js.map +1 -0
- package/dist/services/plan-generator.d.ts +98 -0
- package/dist/services/plan-generator.d.ts.map +1 -0
- package/dist/services/plan-generator.js +658 -0
- package/dist/services/plan-generator.js.map +1 -0
- package/dist/services/plan-mode-fallback.d.ts +80 -0
- package/dist/services/plan-mode-fallback.d.ts.map +1 -0
- package/dist/services/plan-mode-fallback.js +307 -0
- package/dist/services/plan-mode-fallback.js.map +1 -0
- package/dist/services/plan-mode-handler.d.ts +42 -0
- package/dist/services/plan-mode-handler.d.ts.map +1 -0
- package/dist/services/plan-mode-handler.js +388 -0
- package/dist/services/plan-mode-handler.js.map +1 -0
- package/dist/services/plan-persistence.d.ts +203 -0
- package/dist/services/plan-persistence.d.ts.map +1 -0
- package/dist/services/plan-persistence.js +538 -0
- package/dist/services/plan-persistence.js.map +1 -0
- package/dist/services/prompt-preprocessor.d.ts +73 -0
- package/dist/services/prompt-preprocessor.d.ts.map +1 -0
- package/dist/services/prompt-preprocessor.js +146 -0
- package/dist/services/prompt-preprocessor.js.map +1 -0
- package/dist/services/rating-service.d.ts +84 -0
- package/dist/services/rating-service.d.ts.map +1 -0
- package/dist/services/rating-service.js +171 -0
- package/dist/services/rating-service.js.map +1 -0
- package/dist/services/rating-state-manager.d.ts +131 -0
- package/dist/services/rating-state-manager.d.ts.map +1 -0
- package/dist/services/rating-state-manager.js +270 -0
- package/dist/services/rating-state-manager.js.map +1 -0
- package/dist/services/sdk-runner.d.ts +113 -0
- package/dist/services/sdk-runner.d.ts.map +1 -0
- package/dist/services/sdk-runner.js +1424 -0
- package/dist/services/sdk-runner.js.map +1 -0
- package/dist/services/session-manager.d.ts +528 -0
- package/dist/services/session-manager.d.ts.map +1 -0
- package/dist/services/session-manager.js +1184 -0
- package/dist/services/session-manager.js.map +1 -0
- package/dist/services/shell-executor.d.ts +337 -0
- package/dist/services/shell-executor.d.ts.map +1 -0
- package/dist/services/shell-executor.js +1201 -0
- package/dist/services/shell-executor.js.map +1 -0
- package/dist/services/skill-service.d.ts +149 -0
- package/dist/services/skill-service.d.ts.map +1 -0
- package/dist/services/skill-service.js +594 -0
- package/dist/services/skill-service.js.map +1 -0
- package/dist/services/statusline-executor.d.ts +102 -0
- package/dist/services/statusline-executor.d.ts.map +1 -0
- package/dist/services/statusline-executor.js +305 -0
- package/dist/services/statusline-executor.js.map +1 -0
- package/dist/services/step-tracker.d.ts +356 -0
- package/dist/services/step-tracker.d.ts.map +1 -0
- package/dist/services/step-tracker.js +634 -0
- package/dist/services/step-tracker.js.map +1 -0
- package/dist/services/system-event-logger.d.ts +473 -0
- package/dist/services/system-event-logger.d.ts.map +1 -0
- package/dist/services/system-event-logger.js +790 -0
- package/dist/services/system-event-logger.js.map +1 -0
- package/dist/services/system-utility-detector.d.ts +91 -0
- package/dist/services/system-utility-detector.d.ts.map +1 -0
- package/dist/services/system-utility-detector.js +238 -0
- package/dist/services/system-utility-detector.js.map +1 -0
- package/dist/services/team-context-store.d.ts +100 -0
- package/dist/services/team-context-store.d.ts.map +1 -0
- package/dist/services/team-context-store.js +513 -0
- package/dist/services/team-context-store.js.map +1 -0
- package/dist/services/temp-file-service.d.ts +164 -0
- package/dist/services/temp-file-service.d.ts.map +1 -0
- package/dist/services/temp-file-service.js +303 -0
- package/dist/services/temp-file-service.js.map +1 -0
- package/dist/services/token-limit-enforcer.d.ts +53 -0
- package/dist/services/token-limit-enforcer.d.ts.map +1 -0
- package/dist/services/token-limit-enforcer.js +90 -0
- package/dist/services/token-limit-enforcer.js.map +1 -0
- package/dist/services/token-limit-store.d.ts +105 -0
- package/dist/services/token-limit-store.d.ts.map +1 -0
- package/dist/services/token-limit-store.js +288 -0
- package/dist/services/token-limit-store.js.map +1 -0
- package/dist/services/token-tracker.d.ts +290 -0
- package/dist/services/token-tracker.d.ts.map +1 -0
- package/dist/services/token-tracker.js +751 -0
- package/dist/services/token-tracker.js.map +1 -0
- package/dist/services/tool-registry.d.ts +302 -0
- package/dist/services/tool-registry.d.ts.map +1 -0
- package/dist/services/tool-registry.js +606 -0
- package/dist/services/tool-registry.js.map +1 -0
- package/dist/services/tools-logger.d.ts +152 -0
- package/dist/services/tools-logger.d.ts.map +1 -0
- package/dist/services/tools-logger.js +222 -0
- package/dist/services/tools-logger.js.map +1 -0
- package/dist/services/update-plan-handler.d.ts +56 -0
- package/dist/services/update-plan-handler.d.ts.map +1 -0
- package/dist/services/update-plan-handler.js +372 -0
- package/dist/services/update-plan-handler.js.map +1 -0
- package/dist/services/update-service.d.ts +197 -0
- package/dist/services/update-service.d.ts.map +1 -0
- package/dist/services/update-service.js +749 -0
- package/dist/services/update-service.js.map +1 -0
- package/dist/services/verifier.d.ts +113 -0
- package/dist/services/verifier.d.ts.map +1 -0
- package/dist/services/verifier.js +541 -0
- package/dist/services/verifier.js.map +1 -0
- package/dist/services/workflow-manager.d.ts +277 -0
- package/dist/services/workflow-manager.d.ts.map +1 -0
- package/dist/services/workflow-manager.js +616 -0
- package/dist/services/workflow-manager.js.map +1 -0
- package/dist/services/workflow-orchestrator.d.ts +148 -0
- package/dist/services/workflow-orchestrator.d.ts.map +1 -0
- package/dist/services/workflow-orchestrator.js +617 -0
- package/dist/services/workflow-orchestrator.js.map +1 -0
- package/dist/services/worktree-manager.d.ts +36 -0
- package/dist/services/worktree-manager.d.ts.map +1 -0
- package/dist/services/worktree-manager.js +185 -0
- package/dist/services/worktree-manager.js.map +1 -0
- package/dist/templates/ascii-art.d.ts +136 -0
- package/dist/templates/ascii-art.d.ts.map +1 -0
- package/dist/templates/ascii-art.js +286 -0
- package/dist/templates/ascii-art.js.map +1 -0
- package/dist/templates/help.d.ts +186 -0
- package/dist/templates/help.d.ts.map +1 -0
- package/dist/templates/help.js +588 -0
- package/dist/templates/help.js.map +1 -0
- package/dist/templates/prompts/workflow-prompts.d.ts +9 -0
- package/dist/templates/prompts/workflow-prompts.d.ts.map +1 -0
- package/dist/templates/prompts/workflow-prompts.js +9 -0
- package/dist/templates/prompts/workflow-prompts.js.map +1 -0
- package/dist/tools/agent-tools.d.ts +9 -0
- package/dist/tools/agent-tools.d.ts.map +1 -0
- package/dist/tools/agent-tools.js +349 -0
- package/dist/tools/agent-tools.js.map +1 -0
- package/dist/tools/edit-replacers.d.ts +90 -0
- package/dist/tools/edit-replacers.d.ts.map +1 -0
- package/dist/tools/edit-replacers.js +553 -0
- package/dist/tools/edit-replacers.js.map +1 -0
- package/dist/tools/file-tools.d.ts +13 -0
- package/dist/tools/file-tools.d.ts.map +1 -0
- package/dist/tools/file-tools.js +954 -0
- package/dist/tools/file-tools.js.map +1 -0
- package/dist/tools/git-tools.d.ts +9 -0
- package/dist/tools/git-tools.d.ts.map +1 -0
- package/dist/tools/git-tools.js +261 -0
- package/dist/tools/git-tools.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +70 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/network-tools.d.ts +8 -0
- package/dist/tools/network-tools.d.ts.map +1 -0
- package/dist/tools/network-tools.js +261 -0
- package/dist/tools/network-tools.js.map +1 -0
- package/dist/tools/openai-tools.d.ts +16 -0
- package/dist/tools/openai-tools.d.ts.map +1 -0
- package/dist/tools/openai-tools.js +385 -0
- package/dist/tools/openai-tools.js.map +1 -0
- package/dist/tools/plan-tools.d.ts +9 -0
- package/dist/tools/plan-tools.d.ts.map +1 -0
- package/dist/tools/plan-tools.js +223 -0
- package/dist/tools/plan-tools.js.map +1 -0
- package/dist/tools/schedule-tools.d.ts +9 -0
- package/dist/tools/schedule-tools.d.ts.map +1 -0
- package/dist/tools/schedule-tools.js +405 -0
- package/dist/tools/schedule-tools.js.map +1 -0
- package/dist/tools/search-tools.d.ts +8 -0
- package/dist/tools/search-tools.d.ts.map +1 -0
- package/dist/tools/search-tools.js +357 -0
- package/dist/tools/search-tools.js.map +1 -0
- package/dist/tools/shared-utils.d.ts +91 -0
- package/dist/tools/shared-utils.d.ts.map +1 -0
- package/dist/tools/shared-utils.js +385 -0
- package/dist/tools/shared-utils.js.map +1 -0
- package/dist/tools/shell-tools.d.ts +9 -0
- package/dist/tools/shell-tools.d.ts.map +1 -0
- package/dist/tools/shell-tools.js +409 -0
- package/dist/tools/shell-tools.js.map +1 -0
- package/dist/tools/skill-tools.d.ts +13 -0
- package/dist/tools/skill-tools.d.ts.map +1 -0
- package/dist/tools/skill-tools.js +244 -0
- package/dist/tools/skill-tools.js.map +1 -0
- package/dist/tools/swarm-tools.d.ts +9 -0
- package/dist/tools/swarm-tools.d.ts.map +1 -0
- package/dist/tools/swarm-tools.js +422 -0
- package/dist/tools/swarm-tools.js.map +1 -0
- package/dist/tools/user-tools.d.ts +13 -0
- package/dist/tools/user-tools.d.ts.map +1 -0
- package/dist/tools/user-tools.js +232 -0
- package/dist/tools/user-tools.js.map +1 -0
- package/dist/types/agent-process.d.ts +244 -0
- package/dist/types/agent-process.d.ts.map +1 -0
- package/dist/types/agent-process.js +93 -0
- package/dist/types/agent-process.js.map +1 -0
- package/dist/types/agent.d.ts +358 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +171 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/anthropic.d.ts +438 -0
- package/dist/types/anthropic.d.ts.map +1 -0
- package/dist/types/anthropic.js +9 -0
- package/dist/types/anthropic.js.map +1 -0
- package/dist/types/approval.d.ts +332 -0
- package/dist/types/approval.d.ts.map +1 -0
- package/dist/types/approval.js +44 -0
- package/dist/types/approval.js.map +1 -0
- package/dist/types/autocomplete.d.ts +57 -0
- package/dist/types/autocomplete.d.ts.map +1 -0
- package/dist/types/autocomplete.js +7 -0
- package/dist/types/autocomplete.js.map +1 -0
- package/dist/types/chat-archive.d.ts +161 -0
- package/dist/types/chat-archive.d.ts.map +1 -0
- package/dist/types/chat-archive.js +36 -0
- package/dist/types/chat-archive.js.map +1 -0
- package/dist/types/config.d.ts +268 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +188 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/consent.d.ts +191 -0
- package/dist/types/consent.d.ts.map +1 -0
- package/dist/types/consent.js +119 -0
- package/dist/types/consent.js.map +1 -0
- package/dist/types/custom-command.d.ts +139 -0
- package/dist/types/custom-command.d.ts.map +1 -0
- package/dist/types/custom-command.js +7 -0
- package/dist/types/custom-command.js.map +1 -0
- package/dist/types/git.d.ts +20 -0
- package/dist/types/git.d.ts.map +1 -0
- package/dist/types/git.js +2 -0
- package/dist/types/git.js.map +1 -0
- package/dist/types/hook.d.ts +342 -0
- package/dist/types/hook.d.ts.map +1 -0
- package/dist/types/hook.js +84 -0
- package/dist/types/hook.js.map +1 -0
- package/dist/types/index.d.ts +86 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +71 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mcp.d.ts +456 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +94 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/rating.d.ts +110 -0
- package/dist/types/rating.d.ts.map +1 -0
- package/dist/types/rating.js +53 -0
- package/dist/types/rating.js.map +1 -0
- package/dist/types/schedule.d.ts +91 -0
- package/dist/types/schedule.d.ts.map +1 -0
- package/dist/types/schedule.js +8 -0
- package/dist/types/schedule.js.map +1 -0
- package/dist/types/session.d.ts +361 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +9 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/skill.d.ts +258 -0
- package/dist/types/skill.d.ts.map +1 -0
- package/dist/types/skill.js +79 -0
- package/dist/types/skill.js.map +1 -0
- package/dist/types/statusline.d.ts +212 -0
- package/dist/types/statusline.d.ts.map +1 -0
- package/dist/types/statusline.js +8 -0
- package/dist/types/statusline.js.map +1 -0
- package/dist/types/stream.d.ts +61 -0
- package/dist/types/stream.d.ts.map +1 -0
- package/dist/types/stream.js +17 -0
- package/dist/types/stream.js.map +1 -0
- package/dist/types/swarm.d.ts +132 -0
- package/dist/types/swarm.d.ts.map +1 -0
- package/dist/types/swarm.js +21 -0
- package/dist/types/swarm.js.map +1 -0
- package/dist/types/token-limits.d.ts +107 -0
- package/dist/types/token-limits.d.ts.map +1 -0
- package/dist/types/token-limits.js +57 -0
- package/dist/types/token-limits.js.map +1 -0
- package/dist/types/token.d.ts +329 -0
- package/dist/types/token.d.ts.map +1 -0
- package/dist/types/token.js +9 -0
- package/dist/types/token.js.map +1 -0
- package/dist/types/update.d.ts +189 -0
- package/dist/types/update.d.ts.map +1 -0
- package/dist/types/update.js +55 -0
- package/dist/types/update.js.map +1 -0
- package/dist/types/workflow.d.ts +396 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/types/workflow.js +46 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/ui/App.d.ts +62 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +511 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/InteractiveSession.d.ts +34 -0
- package/dist/ui/InteractiveSession.d.ts.map +1 -0
- package/dist/ui/InteractiveSession.js +3611 -0
- package/dist/ui/InteractiveSession.js.map +1 -0
- package/dist/ui/MCPApprovalPrompt.d.ts +27 -0
- package/dist/ui/MCPApprovalPrompt.d.ts.map +1 -0
- package/dist/ui/MCPApprovalPrompt.js +51 -0
- package/dist/ui/MCPApprovalPrompt.js.map +1 -0
- package/dist/ui/SetupWizard.d.ts +26 -0
- package/dist/ui/SetupWizard.d.ts.map +1 -0
- package/dist/ui/SetupWizard.js +396 -0
- package/dist/ui/SetupWizard.js.map +1 -0
- package/dist/ui/components/AgentCreationWizard.d.ts +36 -0
- package/dist/ui/components/AgentCreationWizard.d.ts.map +1 -0
- package/dist/ui/components/AgentCreationWizard.js +619 -0
- package/dist/ui/components/AgentCreationWizard.js.map +1 -0
- package/dist/ui/components/AgentManager.d.ts +41 -0
- package/dist/ui/components/AgentManager.d.ts.map +1 -0
- package/dist/ui/components/AgentManager.js +343 -0
- package/dist/ui/components/AgentManager.js.map +1 -0
- package/dist/ui/components/ApprovalDialog.d.ts +18 -0
- package/dist/ui/components/ApprovalDialog.d.ts.map +1 -0
- package/dist/ui/components/ApprovalDialog.js +439 -0
- package/dist/ui/components/ApprovalDialog.js.map +1 -0
- package/dist/ui/components/AsciiArt.d.ts +54 -0
- package/dist/ui/components/AsciiArt.d.ts.map +1 -0
- package/dist/ui/components/AsciiArt.js +89 -0
- package/dist/ui/components/AsciiArt.js.map +1 -0
- package/dist/ui/components/ClarificationWizard.d.ts +36 -0
- package/dist/ui/components/ClarificationWizard.d.ts.map +1 -0
- package/dist/ui/components/ClarificationWizard.js +407 -0
- package/dist/ui/components/ClarificationWizard.js.map +1 -0
- package/dist/ui/components/CompassSpinner.d.ts +15 -0
- package/dist/ui/components/CompassSpinner.d.ts.map +1 -0
- package/dist/ui/components/CompassSpinner.js +50 -0
- package/dist/ui/components/CompassSpinner.js.map +1 -0
- package/dist/ui/components/ConfirmationSelector.d.ts +45 -0
- package/dist/ui/components/ConfirmationSelector.d.ts.map +1 -0
- package/dist/ui/components/ConfirmationSelector.js +106 -0
- package/dist/ui/components/ConfirmationSelector.js.map +1 -0
- package/dist/ui/components/ContextUsage.d.ts +76 -0
- package/dist/ui/components/ContextUsage.d.ts.map +1 -0
- package/dist/ui/components/ContextUsage.js +188 -0
- package/dist/ui/components/ContextUsage.js.map +1 -0
- package/dist/ui/components/DiffPreview.d.ts +13 -0
- package/dist/ui/components/DiffPreview.d.ts.map +1 -0
- package/dist/ui/components/DiffPreview.js +30 -0
- package/dist/ui/components/DiffPreview.js.map +1 -0
- package/dist/ui/components/ExecutionModeSelector.d.ts +45 -0
- package/dist/ui/components/ExecutionModeSelector.d.ts.map +1 -0
- package/dist/ui/components/ExecutionModeSelector.js +120 -0
- package/dist/ui/components/ExecutionModeSelector.js.map +1 -0
- package/dist/ui/components/FileTree.d.ts +47 -0
- package/dist/ui/components/FileTree.d.ts.map +1 -0
- package/dist/ui/components/FileTree.js +258 -0
- package/dist/ui/components/FileTree.js.map +1 -0
- package/dist/ui/components/HelpMenu.d.ts +49 -0
- package/dist/ui/components/HelpMenu.d.ts.map +1 -0
- package/dist/ui/components/HelpMenu.js +91 -0
- package/dist/ui/components/HelpMenu.js.map +1 -0
- package/dist/ui/components/InterleavedStream.d.ts +42 -0
- package/dist/ui/components/InterleavedStream.d.ts.map +1 -0
- package/dist/ui/components/InterleavedStream.js +1500 -0
- package/dist/ui/components/InterleavedStream.js.map +1 -0
- package/dist/ui/components/ModelSelector.d.ts +81 -0
- package/dist/ui/components/ModelSelector.d.ts.map +1 -0
- package/dist/ui/components/ModelSelector.js +305 -0
- package/dist/ui/components/ModelSelector.js.map +1 -0
- package/dist/ui/components/PlanApprovalDialog.d.ts +21 -0
- package/dist/ui/components/PlanApprovalDialog.d.ts.map +1 -0
- package/dist/ui/components/PlanApprovalDialog.js +189 -0
- package/dist/ui/components/PlanApprovalDialog.js.map +1 -0
- package/dist/ui/components/PlanExecutionTracker.d.ts +53 -0
- package/dist/ui/components/PlanExecutionTracker.d.ts.map +1 -0
- package/dist/ui/components/PlanExecutionTracker.js +113 -0
- package/dist/ui/components/PlanExecutionTracker.js.map +1 -0
- package/dist/ui/components/ProgressIndicator.d.ts +151 -0
- package/dist/ui/components/ProgressIndicator.d.ts.map +1 -0
- package/dist/ui/components/ProgressIndicator.js +171 -0
- package/dist/ui/components/ProgressIndicator.js.map +1 -0
- package/dist/ui/components/Prompt.d.ts +47 -0
- package/dist/ui/components/Prompt.d.ts.map +1 -0
- package/dist/ui/components/Prompt.js +632 -0
- package/dist/ui/components/Prompt.js.map +1 -0
- package/dist/ui/components/RatingPanel.d.ts +45 -0
- package/dist/ui/components/RatingPanel.d.ts.map +1 -0
- package/dist/ui/components/RatingPanel.js +119 -0
- package/dist/ui/components/RatingPanel.js.map +1 -0
- package/dist/ui/components/StatusLine.d.ts +43 -0
- package/dist/ui/components/StatusLine.d.ts.map +1 -0
- package/dist/ui/components/StatusLine.js +44 -0
- package/dist/ui/components/StatusLine.js.map +1 -0
- package/dist/ui/components/StreamingResponse.d.ts +45 -0
- package/dist/ui/components/StreamingResponse.d.ts.map +1 -0
- package/dist/ui/components/StreamingResponse.js +56 -0
- package/dist/ui/components/StreamingResponse.js.map +1 -0
- package/dist/ui/components/TokenUsage.d.ts +89 -0
- package/dist/ui/components/TokenUsage.d.ts.map +1 -0
- package/dist/ui/components/TokenUsage.js +99 -0
- package/dist/ui/components/TokenUsage.js.map +1 -0
- package/dist/ui/components/ToolSummary.d.ts +77 -0
- package/dist/ui/components/ToolSummary.d.ts.map +1 -0
- package/dist/ui/components/ToolSummary.js +162 -0
- package/dist/ui/components/ToolSummary.js.map +1 -0
- package/dist/ui/components/UpdateNotification.d.ts +65 -0
- package/dist/ui/components/UpdateNotification.d.ts.map +1 -0
- package/dist/ui/components/UpdateNotification.js +166 -0
- package/dist/ui/components/UpdateNotification.js.map +1 -0
- package/dist/ui/diff-renderer.d.ts +18 -0
- package/dist/ui/diff-renderer.d.ts.map +1 -0
- package/dist/ui/diff-renderer.js +206 -0
- package/dist/ui/diff-renderer.js.map +1 -0
- package/dist/ui/themes/markdown-theme.d.ts +48 -0
- package/dist/ui/themes/markdown-theme.d.ts.map +1 -0
- package/dist/ui/themes/markdown-theme.js +79 -0
- package/dist/ui/themes/markdown-theme.js.map +1 -0
- package/dist/ui/themes/ui-theme.d.ts +301 -0
- package/dist/ui/themes/ui-theme.d.ts.map +1 -0
- package/dist/ui/themes/ui-theme.js +204 -0
- package/dist/ui/themes/ui-theme.js.map +1 -0
- package/dist/utils/attachment-handler.d.ts +129 -0
- package/dist/utils/attachment-handler.d.ts.map +1 -0
- package/dist/utils/attachment-handler.js +280 -0
- package/dist/utils/attachment-handler.js.map +1 -0
- package/dist/utils/backup-cleanup.d.ts +28 -0
- package/dist/utils/backup-cleanup.d.ts.map +1 -0
- package/dist/utils/backup-cleanup.js +99 -0
- package/dist/utils/backup-cleanup.js.map +1 -0
- package/dist/utils/clipboard-handler.d.ts +82 -0
- package/dist/utils/clipboard-handler.d.ts.map +1 -0
- package/dist/utils/clipboard-handler.js +311 -0
- package/dist/utils/clipboard-handler.js.map +1 -0
- package/dist/utils/cloud-detection.d.ts +14 -0
- package/dist/utils/cloud-detection.d.ts.map +1 -0
- package/dist/utils/cloud-detection.js +92 -0
- package/dist/utils/cloud-detection.js.map +1 -0
- package/dist/utils/command-parser.d.ts +56 -0
- package/dist/utils/command-parser.d.ts.map +1 -0
- package/dist/utils/command-parser.js +206 -0
- package/dist/utils/command-parser.js.map +1 -0
- package/dist/utils/console-capture.d.ts +30 -0
- package/dist/utils/console-capture.d.ts.map +1 -0
- package/dist/utils/console-capture.js +88 -0
- package/dist/utils/console-capture.js.map +1 -0
- package/dist/utils/cron-parser.d.ts +52 -0
- package/dist/utils/cron-parser.d.ts.map +1 -0
- package/dist/utils/cron-parser.js +455 -0
- package/dist/utils/cron-parser.js.map +1 -0
- package/dist/utils/crypto.d.ts +351 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +615 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/diff.d.ts +311 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +566 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/editor.d.ts +12 -0
- package/dist/utils/editor.d.ts.map +1 -0
- package/dist/utils/editor.js +30 -0
- package/dist/utils/editor.js.map +1 -0
- package/dist/utils/file-system.d.ts +512 -0
- package/dist/utils/file-system.d.ts.map +1 -0
- package/dist/utils/file-system.js +798 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/format.d.ts +318 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +587 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/ignore-patterns.d.ts +93 -0
- package/dist/utils/ignore-patterns.d.ts.map +1 -0
- package/dist/utils/ignore-patterns.js +710 -0
- package/dist/utils/ignore-patterns.js.map +1 -0
- package/dist/utils/log-cleanup.d.ts +16 -0
- package/dist/utils/log-cleanup.d.ts.map +1 -0
- package/dist/utils/log-cleanup.js +51 -0
- package/dist/utils/log-cleanup.js.map +1 -0
- package/dist/utils/logger.d.ts +305 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +447 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/path.d.ts +406 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +549 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/schedule-file.d.ts +63 -0
- package/dist/utils/schedule-file.d.ts.map +1 -0
- package/dist/utils/schedule-file.js +244 -0
- package/dist/utils/schedule-file.js.map +1 -0
- package/dist/utils/task-id.d.ts +29 -0
- package/dist/utils/task-id.d.ts.map +1 -0
- package/dist/utils/task-id.js +53 -0
- package/dist/utils/task-id.js.map +1 -0
- package/dist/utils/temp-cleanup.d.ts +46 -0
- package/dist/utils/temp-cleanup.d.ts.map +1 -0
- package/dist/utils/temp-cleanup.js +95 -0
- package/dist/utils/temp-cleanup.js.map +1 -0
- package/dist/utils/terminal-output.d.ts +34 -0
- package/dist/utils/terminal-output.d.ts.map +1 -0
- package/dist/utils/terminal-output.js +40 -0
- package/dist/utils/terminal-output.js.map +1 -0
- package/dist/utils/token-counter.d.ts +224 -0
- package/dist/utils/token-counter.d.ts.map +1 -0
- package/dist/utils/token-counter.js +332 -0
- package/dist/utils/token-counter.js.map +1 -0
- package/dist/utils/tool-mapper.d.ts +70 -0
- package/dist/utils/tool-mapper.d.ts.map +1 -0
- package/dist/utils/tool-mapper.js +234 -0
- package/dist/utils/tool-mapper.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,705 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook service for discovering, parsing, and executing hooks.
|
|
3
|
+
* Hooks are shell commands that execute in response to events like tool calls.
|
|
4
|
+
*
|
|
5
|
+
* Claude Code style hooks support:
|
|
6
|
+
* - PreToolUse: Execute before a tool runs, can block execution
|
|
7
|
+
* - PostToolUse: Execute after a tool runs
|
|
8
|
+
* - UserPromptSubmit: Execute when user submits a prompt
|
|
9
|
+
* - Notification: Execute for notifications
|
|
10
|
+
* - Stop: Execute when the session ends
|
|
11
|
+
*
|
|
12
|
+
* Hooks are defined in:
|
|
13
|
+
* - .compass/hooks/ (project-specific)
|
|
14
|
+
* - ~/.compass/hooks/ (personal/global)
|
|
15
|
+
*
|
|
16
|
+
* Hook files can be:
|
|
17
|
+
* - <event>.yaml or <event>.md (single hook per event)
|
|
18
|
+
* - <event>/<name>.yaml or <event>/<name>.md (multiple hooks per event)
|
|
19
|
+
*/
|
|
20
|
+
import fs from 'fs-extra';
|
|
21
|
+
import path from 'path';
|
|
22
|
+
import { glob } from 'glob';
|
|
23
|
+
import { execa } from 'execa';
|
|
24
|
+
import { getGlobalCompassDir, getProjectCompassDir } from '../utils/path.js';
|
|
25
|
+
import { HOOKS_DIR } from '../constants/defaults.js';
|
|
26
|
+
import { logger } from '../utils/logger.js';
|
|
27
|
+
import { isValidHookEvent, HOOK_SOURCE_PRIORITY, } from '../types/hook.js';
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Module State
|
|
30
|
+
// =============================================================================
|
|
31
|
+
/** Cache for discovered hooks */
|
|
32
|
+
let cachedHooks = null;
|
|
33
|
+
let cacheTimestamp = 0;
|
|
34
|
+
const CACHE_TTL_MS = 5000; // 5 seconds
|
|
35
|
+
/** Current project root for hook discovery */
|
|
36
|
+
let currentProjectRoot = process.cwd();
|
|
37
|
+
/** Whether hooks are enabled globally */
|
|
38
|
+
let hooksEnabled = true;
|
|
39
|
+
/** Default timeout for hook execution */
|
|
40
|
+
const DEFAULT_HOOK_TIMEOUT_MS = 30000;
|
|
41
|
+
// =============================================================================
|
|
42
|
+
// Path Utilities
|
|
43
|
+
// =============================================================================
|
|
44
|
+
/**
|
|
45
|
+
* Gets the project hooks directory path.
|
|
46
|
+
*/
|
|
47
|
+
export function getProjectHooksDir() {
|
|
48
|
+
return path.join(getProjectCompassDir(currentProjectRoot), HOOKS_DIR);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Gets the personal (user) hooks directory path.
|
|
52
|
+
*/
|
|
53
|
+
export function getPersonalHooksDir() {
|
|
54
|
+
return path.join(getGlobalCompassDir(), HOOKS_DIR);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Sets the project root for hook discovery.
|
|
58
|
+
* Call this when --cwd is used to ensure hooks are discovered from the correct location.
|
|
59
|
+
*/
|
|
60
|
+
export function setHooksProjectRoot(projectRoot) {
|
|
61
|
+
if (currentProjectRoot !== projectRoot) {
|
|
62
|
+
currentProjectRoot = projectRoot;
|
|
63
|
+
invalidateHookCache();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Gets the current project root.
|
|
68
|
+
*/
|
|
69
|
+
export function getHooksProjectRoot() {
|
|
70
|
+
return currentProjectRoot;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Enables or disables hooks globally.
|
|
74
|
+
*/
|
|
75
|
+
export function setHooksEnabled(enabled) {
|
|
76
|
+
hooksEnabled = enabled;
|
|
77
|
+
logger.debug(`Hooks ${enabled ? 'enabled' : 'disabled'}`);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Checks if hooks are enabled.
|
|
81
|
+
*/
|
|
82
|
+
export function areHooksEnabled() {
|
|
83
|
+
return hooksEnabled;
|
|
84
|
+
}
|
|
85
|
+
// =============================================================================
|
|
86
|
+
// Frontmatter Parsing
|
|
87
|
+
// =============================================================================
|
|
88
|
+
/**
|
|
89
|
+
* Parses YAML frontmatter from hook file content.
|
|
90
|
+
* Uses a simple regex-based approach for portability.
|
|
91
|
+
*
|
|
92
|
+
* @param content - The file content
|
|
93
|
+
* @returns Object containing parsed frontmatter and script body
|
|
94
|
+
*/
|
|
95
|
+
export function parseHookFrontmatter(content) {
|
|
96
|
+
const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
|
|
97
|
+
const match = content.match(frontmatterRegex);
|
|
98
|
+
if (!match) {
|
|
99
|
+
return { frontmatter: {}, script: content };
|
|
100
|
+
}
|
|
101
|
+
const [, yamlContent, script] = match;
|
|
102
|
+
const frontmatter = {};
|
|
103
|
+
// Parse YAML key-value pairs and arrays
|
|
104
|
+
const lines = yamlContent.split(/\r?\n/);
|
|
105
|
+
let currentKey = null;
|
|
106
|
+
let currentArray = null;
|
|
107
|
+
for (const line of lines) {
|
|
108
|
+
// Skip empty lines and comments
|
|
109
|
+
if (!line.trim() || line.trim().startsWith('#')) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// Check for array item
|
|
113
|
+
if (line.match(/^\s+-\s+/)) {
|
|
114
|
+
if (currentKey && currentArray !== null) {
|
|
115
|
+
const value = line.replace(/^\s+-\s+/, '').trim();
|
|
116
|
+
// Remove quotes if present
|
|
117
|
+
const unquoted = value.replace(/^["']|["']$/g, '');
|
|
118
|
+
currentArray.push(unquoted);
|
|
119
|
+
}
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
// Check for key-value pair
|
|
123
|
+
const kvMatch = line.match(/^([a-zA-Z-]+):\s*(.*)$/);
|
|
124
|
+
if (kvMatch) {
|
|
125
|
+
// Save previous array if any
|
|
126
|
+
if (currentKey && currentArray !== null) {
|
|
127
|
+
frontmatter[currentKey] = currentArray;
|
|
128
|
+
}
|
|
129
|
+
const [, key, value] = kvMatch;
|
|
130
|
+
currentKey = key;
|
|
131
|
+
if (value.trim() === '') {
|
|
132
|
+
// Start of array
|
|
133
|
+
currentArray = [];
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Simple value
|
|
137
|
+
currentArray = null;
|
|
138
|
+
let parsedValue = value.trim();
|
|
139
|
+
// Remove quotes if present
|
|
140
|
+
parsedValue = parsedValue.replace(/^["']|["']$/g, '');
|
|
141
|
+
// Parse booleans
|
|
142
|
+
if (parsedValue === 'true')
|
|
143
|
+
parsedValue = true;
|
|
144
|
+
if (parsedValue === 'false')
|
|
145
|
+
parsedValue = false;
|
|
146
|
+
// Parse numbers for timeout
|
|
147
|
+
if (key === 'timeout' && !isNaN(Number(parsedValue))) {
|
|
148
|
+
parsedValue = Number(parsedValue);
|
|
149
|
+
}
|
|
150
|
+
frontmatter[key] = parsedValue;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Save last array if any
|
|
155
|
+
if (currentKey && currentArray !== null) {
|
|
156
|
+
frontmatter[currentKey] = currentArray;
|
|
157
|
+
}
|
|
158
|
+
return { frontmatter, script: script.trim() };
|
|
159
|
+
}
|
|
160
|
+
// =============================================================================
|
|
161
|
+
// Hook Parsing
|
|
162
|
+
// =============================================================================
|
|
163
|
+
/**
|
|
164
|
+
* Extracts description from frontmatter or first comment line.
|
|
165
|
+
*/
|
|
166
|
+
function extractDescription(frontmatter, script) {
|
|
167
|
+
if (frontmatter.description) {
|
|
168
|
+
return frontmatter.description;
|
|
169
|
+
}
|
|
170
|
+
// Try to extract from first comment line
|
|
171
|
+
const lines = script.split(/\r?\n/);
|
|
172
|
+
for (const line of lines) {
|
|
173
|
+
const trimmed = line.trim();
|
|
174
|
+
if (trimmed.startsWith('#!')) {
|
|
175
|
+
continue; // Skip shebang
|
|
176
|
+
}
|
|
177
|
+
if (trimmed.startsWith('#')) {
|
|
178
|
+
return trimmed.slice(1).trim();
|
|
179
|
+
}
|
|
180
|
+
if (trimmed) {
|
|
181
|
+
break; // Stop at first non-comment line
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return 'Custom hook';
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Determines the event type from file path.
|
|
188
|
+
*/
|
|
189
|
+
function getEventFromPath(filePath, baseDir) {
|
|
190
|
+
const relativePath = path.relative(baseDir, filePath);
|
|
191
|
+
const parts = relativePath.split(path.sep);
|
|
192
|
+
// Check if first directory or filename (without extension) is a valid event
|
|
193
|
+
const firstPart = parts[0].replace(/\.(yaml|yml|md)$/i, '');
|
|
194
|
+
if (isValidHookEvent(firstPart)) {
|
|
195
|
+
return firstPart;
|
|
196
|
+
}
|
|
197
|
+
// Check second level for event/<name>.yaml pattern
|
|
198
|
+
if (parts.length >= 2 && isValidHookEvent(parts[0])) {
|
|
199
|
+
return parts[0];
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Parses a hook file and creates a HookDefinition.
|
|
205
|
+
*
|
|
206
|
+
* @param filePath - Absolute path to the hook file
|
|
207
|
+
* @param source - Where this hook was found
|
|
208
|
+
* @param baseDir - The base hooks directory
|
|
209
|
+
* @returns Parsed hook definition or null if invalid
|
|
210
|
+
*/
|
|
211
|
+
export async function parseHookFile(filePath, source, baseDir) {
|
|
212
|
+
try {
|
|
213
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
214
|
+
const { frontmatter, script } = parseHookFrontmatter(content);
|
|
215
|
+
// Determine event from file path
|
|
216
|
+
const event = getEventFromPath(filePath, baseDir);
|
|
217
|
+
if (!event) {
|
|
218
|
+
logger.warn(`Could not determine event type for hook: ${filePath}`);
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
// Get hook name from filename (without extension)
|
|
222
|
+
const filename = path.basename(filePath);
|
|
223
|
+
const name = filename.replace(/\.(yaml|yml|md)$/i, '');
|
|
224
|
+
// If name equals event, it's the only hook for that event
|
|
225
|
+
const hookName = name === event ? 'default' : name;
|
|
226
|
+
const description = extractDescription(frontmatter, script);
|
|
227
|
+
return {
|
|
228
|
+
id: `${source}-${event}-${hookName}`,
|
|
229
|
+
name: hookName,
|
|
230
|
+
event,
|
|
231
|
+
filePath,
|
|
232
|
+
source,
|
|
233
|
+
frontmatter,
|
|
234
|
+
script,
|
|
235
|
+
description,
|
|
236
|
+
isActive: true, // Will be updated during priority resolution
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
logger.warn(`Failed to parse hook file: ${filePath}`, error);
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// =============================================================================
|
|
245
|
+
// Hook Discovery
|
|
246
|
+
// =============================================================================
|
|
247
|
+
/**
|
|
248
|
+
* Discovers hooks from a specific directory.
|
|
249
|
+
*
|
|
250
|
+
* @param directory - Directory to search
|
|
251
|
+
* @param source - Source type for discovered hooks
|
|
252
|
+
* @returns Array of discovered hooks
|
|
253
|
+
*/
|
|
254
|
+
async function discoverHooksInDirectory(directory, source) {
|
|
255
|
+
const hooks = [];
|
|
256
|
+
if (!(await fs.pathExists(directory))) {
|
|
257
|
+
return hooks;
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
// Find all hook files (yaml, yml, md)
|
|
261
|
+
const hookFiles = await glob('**/*.{yaml,yml,md}', {
|
|
262
|
+
cwd: directory,
|
|
263
|
+
nodir: true,
|
|
264
|
+
absolute: true,
|
|
265
|
+
});
|
|
266
|
+
for (const filePath of hookFiles) {
|
|
267
|
+
const hook = await parseHookFile(filePath, source, directory);
|
|
268
|
+
if (hook) {
|
|
269
|
+
hooks.push(hook);
|
|
270
|
+
logger.debug(`Discovered ${source} hook: ${hook.event}/${hook.name}`, {
|
|
271
|
+
path: filePath,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
logger.warn(`Failed to discover hooks in ${directory}`, error);
|
|
278
|
+
}
|
|
279
|
+
return hooks;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Resolves hook priorities and marks inactive hooks.
|
|
283
|
+
*
|
|
284
|
+
* @param hooks - All discovered hooks
|
|
285
|
+
* @returns Discovery result with priority resolution
|
|
286
|
+
*/
|
|
287
|
+
function resolveHookPriorities(hooks) {
|
|
288
|
+
const bySource = {
|
|
289
|
+
personal: [],
|
|
290
|
+
project: [],
|
|
291
|
+
};
|
|
292
|
+
const byEvent = {
|
|
293
|
+
PreToolUse: [],
|
|
294
|
+
PostToolUse: [],
|
|
295
|
+
UserPromptSubmit: [],
|
|
296
|
+
Notification: [],
|
|
297
|
+
Stop: [],
|
|
298
|
+
};
|
|
299
|
+
// Group by source
|
|
300
|
+
for (const hook of hooks) {
|
|
301
|
+
bySource[hook.source].push(hook);
|
|
302
|
+
}
|
|
303
|
+
// Build active hooks map (higher priority wins for same event+name)
|
|
304
|
+
const activeByKey = new Map();
|
|
305
|
+
// Process in priority order (lowest first, so higher overwrites)
|
|
306
|
+
for (const source of HOOK_SOURCE_PRIORITY) {
|
|
307
|
+
for (const hook of bySource[source]) {
|
|
308
|
+
const key = `${hook.event}-${hook.name}`;
|
|
309
|
+
activeByKey.set(key, hook);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// Mark active status and group by event
|
|
313
|
+
const active = [];
|
|
314
|
+
for (const hook of hooks) {
|
|
315
|
+
const key = `${hook.event}-${hook.name}`;
|
|
316
|
+
const isActive = activeByKey.get(key)?.id === hook.id;
|
|
317
|
+
hook.isActive = isActive;
|
|
318
|
+
if (isActive) {
|
|
319
|
+
active.push(hook);
|
|
320
|
+
byEvent[hook.event].push(hook);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
all: hooks,
|
|
325
|
+
active,
|
|
326
|
+
byEvent,
|
|
327
|
+
bySource,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Discovers all hooks from personal and project directories.
|
|
332
|
+
* Project hooks take precedence over personal hooks with the same name.
|
|
333
|
+
*
|
|
334
|
+
* @param forceRefresh - Force refresh the cache
|
|
335
|
+
* @returns Discovery result with all hooks
|
|
336
|
+
*/
|
|
337
|
+
export async function discoverHooks(forceRefresh = false) {
|
|
338
|
+
// Check cache
|
|
339
|
+
if (!forceRefresh && cachedHooks && Date.now() - cacheTimestamp < CACHE_TTL_MS) {
|
|
340
|
+
return cachedHooks;
|
|
341
|
+
}
|
|
342
|
+
const allHooks = [];
|
|
343
|
+
// 1. Personal hooks (lower priority)
|
|
344
|
+
const personalHooks = await discoverHooksInDirectory(getPersonalHooksDir(), 'personal');
|
|
345
|
+
allHooks.push(...personalHooks);
|
|
346
|
+
// 2. Project hooks (higher priority)
|
|
347
|
+
const projectHooks = await discoverHooksInDirectory(getProjectHooksDir(), 'project');
|
|
348
|
+
allHooks.push(...projectHooks);
|
|
349
|
+
// Resolve priorities
|
|
350
|
+
const result = resolveHookPriorities(allHooks);
|
|
351
|
+
// Update cache
|
|
352
|
+
cachedHooks = result;
|
|
353
|
+
cacheTimestamp = Date.now();
|
|
354
|
+
logger.info(`Discovered ${result.active.length} active hooks (${result.all.length} total)`);
|
|
355
|
+
return result;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Invalidates the hook cache.
|
|
359
|
+
*/
|
|
360
|
+
export function invalidateHookCache() {
|
|
361
|
+
cachedHooks = null;
|
|
362
|
+
cacheTimestamp = 0;
|
|
363
|
+
}
|
|
364
|
+
// =============================================================================
|
|
365
|
+
// Pattern Matching
|
|
366
|
+
// =============================================================================
|
|
367
|
+
/**
|
|
368
|
+
* Simple glob pattern matching.
|
|
369
|
+
*/
|
|
370
|
+
function matchGlob(pattern, value) {
|
|
371
|
+
// Convert glob to regex
|
|
372
|
+
const regexPattern = pattern
|
|
373
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape special regex chars
|
|
374
|
+
.replace(/\*/g, '.*') // * matches anything
|
|
375
|
+
.replace(/\?/g, '.'); // ? matches single char
|
|
376
|
+
const regex = new RegExp(`^${regexPattern}$`, 'i');
|
|
377
|
+
return regex.test(value);
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Checks if a hook matches the given tool context.
|
|
381
|
+
*/
|
|
382
|
+
function hookMatchesTool(hook, toolName, toolInput) {
|
|
383
|
+
const { frontmatter } = hook;
|
|
384
|
+
// If no tools specified, matches all tools
|
|
385
|
+
if (!frontmatter.tools || frontmatter.tools.length === 0) {
|
|
386
|
+
return true;
|
|
387
|
+
}
|
|
388
|
+
// Check if tool name matches any pattern
|
|
389
|
+
const toolMatches = frontmatter.tools.some((pattern) => matchGlob(pattern, toolName));
|
|
390
|
+
if (!toolMatches) {
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
// If no match patterns specified, tool name match is sufficient
|
|
394
|
+
if (!frontmatter.match || Object.keys(frontmatter.match).length === 0) {
|
|
395
|
+
return true;
|
|
396
|
+
}
|
|
397
|
+
// Check input pattern matching
|
|
398
|
+
for (const [field, pattern] of Object.entries(frontmatter.match)) {
|
|
399
|
+
const inputValue = toolInput[field];
|
|
400
|
+
if (inputValue === undefined) {
|
|
401
|
+
return false;
|
|
402
|
+
}
|
|
403
|
+
if (!matchGlob(pattern, String(inputValue))) {
|
|
404
|
+
return false;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
return true;
|
|
408
|
+
}
|
|
409
|
+
// =============================================================================
|
|
410
|
+
// Hook Execution
|
|
411
|
+
// =============================================================================
|
|
412
|
+
/**
|
|
413
|
+
* Builds environment variables for hook execution.
|
|
414
|
+
*/
|
|
415
|
+
function buildHookEnvironment(hook, context) {
|
|
416
|
+
const env = {
|
|
417
|
+
HOOK_EVENT: context.event,
|
|
418
|
+
HOOK_NAME: hook.name,
|
|
419
|
+
HOOK_CWD: context.projectRoot,
|
|
420
|
+
HOOK_SESSION_ID: context.sessionId,
|
|
421
|
+
};
|
|
422
|
+
// Add tool-specific variables
|
|
423
|
+
if (context.tool) {
|
|
424
|
+
env.TOOL_NAME = context.tool.name;
|
|
425
|
+
env.TOOL_CALL_ID = context.tool.callId;
|
|
426
|
+
env.TOOL_INPUT = JSON.stringify(context.tool.input);
|
|
427
|
+
// Add individual input fields as TOOL_INPUT_<FIELD_NAME>
|
|
428
|
+
for (const [key, value] of Object.entries(context.tool.input)) {
|
|
429
|
+
const envKey = `TOOL_INPUT_${key.toUpperCase().replace(/[^A-Z0-9]/g, '_')}`;
|
|
430
|
+
env[envKey] = String(value);
|
|
431
|
+
}
|
|
432
|
+
// PostToolUse specific
|
|
433
|
+
if (context.event === 'PostToolUse') {
|
|
434
|
+
env.TOOL_OUTPUT = JSON.stringify(context.tool.output);
|
|
435
|
+
env.TOOL_SUCCESS = String(context.tool.success ?? true);
|
|
436
|
+
if (context.tool.error) {
|
|
437
|
+
env.TOOL_ERROR = context.tool.error;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// UserPromptSubmit specific
|
|
442
|
+
if (context.userPrompt !== undefined) {
|
|
443
|
+
env.USER_PROMPT = context.userPrompt;
|
|
444
|
+
}
|
|
445
|
+
return env;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Executes a single hook.
|
|
449
|
+
*/
|
|
450
|
+
async function executeHook(hook, context) {
|
|
451
|
+
const startTime = Date.now();
|
|
452
|
+
// Check if hook is enabled
|
|
453
|
+
if (hook.frontmatter.enabled === false) {
|
|
454
|
+
return {
|
|
455
|
+
hookId: hook.id,
|
|
456
|
+
success: true,
|
|
457
|
+
exitCode: 0,
|
|
458
|
+
stdout: '',
|
|
459
|
+
stderr: '',
|
|
460
|
+
duration: 0,
|
|
461
|
+
skipped: true,
|
|
462
|
+
skipReason: 'Hook is disabled',
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
// For tool events, check if hook matches the tool
|
|
466
|
+
if ((context.event === 'PreToolUse' || context.event === 'PostToolUse') && context.tool) {
|
|
467
|
+
if (!hookMatchesTool(hook, context.tool.name, context.tool.input)) {
|
|
468
|
+
return {
|
|
469
|
+
hookId: hook.id,
|
|
470
|
+
success: true,
|
|
471
|
+
exitCode: 0,
|
|
472
|
+
stdout: '',
|
|
473
|
+
stderr: '',
|
|
474
|
+
duration: 0,
|
|
475
|
+
skipped: true,
|
|
476
|
+
skipReason: 'Hook does not match tool',
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
// Build environment
|
|
481
|
+
const env = buildHookEnvironment(hook, context);
|
|
482
|
+
// Determine shell based on platform
|
|
483
|
+
const isWindows = process.platform === 'win32';
|
|
484
|
+
const shell = isWindows ? 'cmd.exe' : '/bin/bash';
|
|
485
|
+
const shellArgs = isWindows ? ['/c'] : ['-c'];
|
|
486
|
+
try {
|
|
487
|
+
logger.debug(`Executing hook: ${hook.id}`, { event: context.event });
|
|
488
|
+
const timeout = hook.frontmatter.timeout ?? DEFAULT_HOOK_TIMEOUT_MS;
|
|
489
|
+
const result = await execa(shell, [...shellArgs, hook.script], {
|
|
490
|
+
cwd: context.projectRoot,
|
|
491
|
+
env: { ...process.env, ...env },
|
|
492
|
+
timeout,
|
|
493
|
+
reject: false,
|
|
494
|
+
shell: false,
|
|
495
|
+
});
|
|
496
|
+
const duration = Date.now() - startTime;
|
|
497
|
+
return {
|
|
498
|
+
hookId: hook.id,
|
|
499
|
+
success: result.exitCode === 0,
|
|
500
|
+
exitCode: result.exitCode ?? 1,
|
|
501
|
+
stdout: result.stdout || '',
|
|
502
|
+
stderr: result.stderr || '',
|
|
503
|
+
duration,
|
|
504
|
+
skipped: false,
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
catch (error) {
|
|
508
|
+
const duration = Date.now() - startTime;
|
|
509
|
+
const errorMsg = error instanceof Error ? error.message : 'Hook execution failed';
|
|
510
|
+
logger.error(`Hook execution failed: ${hook.id}`, error);
|
|
511
|
+
return {
|
|
512
|
+
hookId: hook.id,
|
|
513
|
+
success: false,
|
|
514
|
+
exitCode: 1,
|
|
515
|
+
stdout: '',
|
|
516
|
+
stderr: '',
|
|
517
|
+
duration,
|
|
518
|
+
skipped: false,
|
|
519
|
+
error: errorMsg,
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
// =============================================================================
|
|
524
|
+
// Event Execution
|
|
525
|
+
// =============================================================================
|
|
526
|
+
/**
|
|
527
|
+
* Executes all hooks for a given event.
|
|
528
|
+
*
|
|
529
|
+
* @param event - The event type
|
|
530
|
+
* @param context - Execution context
|
|
531
|
+
* @returns Combined result from all hooks
|
|
532
|
+
*/
|
|
533
|
+
export async function executeHooks(event, context) {
|
|
534
|
+
const startTime = Date.now();
|
|
535
|
+
// Check if hooks are enabled
|
|
536
|
+
if (!hooksEnabled) {
|
|
537
|
+
return {
|
|
538
|
+
event,
|
|
539
|
+
allowed: true,
|
|
540
|
+
results: [],
|
|
541
|
+
totalDuration: 0,
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
const fullContext = { ...context, event };
|
|
545
|
+
const discovery = await discoverHooks();
|
|
546
|
+
const hooks = discovery.byEvent[event];
|
|
547
|
+
if (hooks.length === 0) {
|
|
548
|
+
return {
|
|
549
|
+
event,
|
|
550
|
+
allowed: true,
|
|
551
|
+
results: [],
|
|
552
|
+
totalDuration: 0,
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
const results = [];
|
|
556
|
+
let blocked = false;
|
|
557
|
+
let blockMessage;
|
|
558
|
+
for (const hook of hooks) {
|
|
559
|
+
const result = await executeHook(hook, fullContext);
|
|
560
|
+
results.push(result);
|
|
561
|
+
// For PreToolUse, check if hook blocked execution
|
|
562
|
+
if (event === 'PreToolUse' && !result.success && !result.skipped) {
|
|
563
|
+
blocked = true;
|
|
564
|
+
// Use stderr or stdout as block message
|
|
565
|
+
blockMessage = result.stderr.trim() || result.stdout.trim() || `Blocked by hook: ${hook.name}`;
|
|
566
|
+
logger.info(`Tool blocked by hook ${hook.id}: ${blockMessage}`);
|
|
567
|
+
break; // Stop processing more hooks
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
const totalDuration = Date.now() - startTime;
|
|
571
|
+
return {
|
|
572
|
+
event,
|
|
573
|
+
allowed: !blocked,
|
|
574
|
+
blockMessage,
|
|
575
|
+
results,
|
|
576
|
+
totalDuration,
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
// =============================================================================
|
|
580
|
+
// Convenience Functions
|
|
581
|
+
// =============================================================================
|
|
582
|
+
/**
|
|
583
|
+
* Executes PreToolUse hooks for a tool call.
|
|
584
|
+
* Returns whether the tool should proceed (allowed) and any block message.
|
|
585
|
+
*/
|
|
586
|
+
export async function executePreToolUseHooks(toolName, toolCallId, toolInput, projectRoot, sessionId) {
|
|
587
|
+
const result = await executeHooks('PreToolUse', {
|
|
588
|
+
projectRoot,
|
|
589
|
+
sessionId,
|
|
590
|
+
tool: {
|
|
591
|
+
name: toolName,
|
|
592
|
+
callId: toolCallId,
|
|
593
|
+
input: toolInput,
|
|
594
|
+
},
|
|
595
|
+
});
|
|
596
|
+
return {
|
|
597
|
+
allowed: result.allowed,
|
|
598
|
+
blockMessage: result.blockMessage,
|
|
599
|
+
};
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Executes PostToolUse hooks for a tool call.
|
|
603
|
+
*/
|
|
604
|
+
export async function executePostToolUseHooks(toolName, toolCallId, toolInput, toolOutput, success, error, projectRoot, sessionId) {
|
|
605
|
+
await executeHooks('PostToolUse', {
|
|
606
|
+
projectRoot,
|
|
607
|
+
sessionId,
|
|
608
|
+
tool: {
|
|
609
|
+
name: toolName,
|
|
610
|
+
callId: toolCallId,
|
|
611
|
+
input: toolInput,
|
|
612
|
+
output: toolOutput,
|
|
613
|
+
success,
|
|
614
|
+
error,
|
|
615
|
+
},
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Executes UserPromptSubmit hooks.
|
|
620
|
+
* Returns whether the prompt should proceed (allowed) and any block message.
|
|
621
|
+
*/
|
|
622
|
+
export async function executeUserPromptSubmitHooks(userPrompt, projectRoot, sessionId) {
|
|
623
|
+
const result = await executeHooks('UserPromptSubmit', {
|
|
624
|
+
projectRoot,
|
|
625
|
+
sessionId,
|
|
626
|
+
userPrompt,
|
|
627
|
+
});
|
|
628
|
+
return {
|
|
629
|
+
allowed: result.allowed,
|
|
630
|
+
blockMessage: result.blockMessage,
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Executes Notification hooks.
|
|
635
|
+
*/
|
|
636
|
+
export async function executeNotificationHooks(notification, projectRoot, sessionId) {
|
|
637
|
+
await executeHooks('Notification', {
|
|
638
|
+
projectRoot,
|
|
639
|
+
sessionId,
|
|
640
|
+
notification,
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* Executes Stop hooks.
|
|
645
|
+
*/
|
|
646
|
+
export async function executeStopHooks(projectRoot, sessionId) {
|
|
647
|
+
await executeHooks('Stop', {
|
|
648
|
+
projectRoot,
|
|
649
|
+
sessionId,
|
|
650
|
+
});
|
|
651
|
+
}
|
|
652
|
+
// =============================================================================
|
|
653
|
+
// Hook Lookup
|
|
654
|
+
// =============================================================================
|
|
655
|
+
/**
|
|
656
|
+
* Gets all active hooks.
|
|
657
|
+
*/
|
|
658
|
+
export async function getActiveHooks() {
|
|
659
|
+
const result = await discoverHooks();
|
|
660
|
+
return result.active;
|
|
661
|
+
}
|
|
662
|
+
/**
|
|
663
|
+
* Gets all hooks for a specific event.
|
|
664
|
+
*/
|
|
665
|
+
export async function getHooksForEvent(event) {
|
|
666
|
+
const result = await discoverHooks();
|
|
667
|
+
return result.byEvent[event];
|
|
668
|
+
}
|
|
669
|
+
/**
|
|
670
|
+
* Checks if any hooks are defined for an event.
|
|
671
|
+
*/
|
|
672
|
+
export async function hasHooksForEvent(event) {
|
|
673
|
+
const hooks = await getHooksForEvent(event);
|
|
674
|
+
return hooks.length > 0;
|
|
675
|
+
}
|
|
676
|
+
// =============================================================================
|
|
677
|
+
// Export Default
|
|
678
|
+
// =============================================================================
|
|
679
|
+
export default {
|
|
680
|
+
// Path utilities
|
|
681
|
+
getProjectHooksDir,
|
|
682
|
+
getPersonalHooksDir,
|
|
683
|
+
setHooksProjectRoot,
|
|
684
|
+
getHooksProjectRoot,
|
|
685
|
+
setHooksEnabled,
|
|
686
|
+
areHooksEnabled,
|
|
687
|
+
// Discovery
|
|
688
|
+
discoverHooks,
|
|
689
|
+
invalidateHookCache,
|
|
690
|
+
// Parsing
|
|
691
|
+
parseHookFrontmatter,
|
|
692
|
+
parseHookFile,
|
|
693
|
+
// Execution
|
|
694
|
+
executeHooks,
|
|
695
|
+
executePreToolUseHooks,
|
|
696
|
+
executePostToolUseHooks,
|
|
697
|
+
executeUserPromptSubmitHooks,
|
|
698
|
+
executeNotificationHooks,
|
|
699
|
+
executeStopHooks,
|
|
700
|
+
// Lookup
|
|
701
|
+
getActiveHooks,
|
|
702
|
+
getHooksForEvent,
|
|
703
|
+
hasHooksForEvent,
|
|
704
|
+
};
|
|
705
|
+
//# sourceMappingURL=hook-service.js.map
|