@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,751 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token usage tracking service for recording API call metrics, calculating costs,
|
|
3
|
+
* aggregating session totals, and exporting usage data.
|
|
4
|
+
*
|
|
5
|
+
* This module provides comprehensive token tracking functionality for the Compass CLI,
|
|
6
|
+
* enabling users to monitor their API usage, estimate costs, and receive warnings
|
|
7
|
+
* when approaching usage thresholds.
|
|
8
|
+
*/
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
11
|
+
import { getGlobalCompassDir } from '../utils/path.js';
|
|
12
|
+
import { safeReadJson, safeWriteJson, ensureDir } from '../utils/file-system.js';
|
|
13
|
+
import { formatTimestamp } from '../utils/format.js';
|
|
14
|
+
import { logger } from '../utils/logger.js';
|
|
15
|
+
import { getModelConfig } from '../constants/models.js';
|
|
16
|
+
import { TOKEN_WARNING_THRESHOLD } from '../constants/defaults.js';
|
|
17
|
+
import { ROLLING_WINDOW_HOURS, resolvePlanLimits } from '../constants/token-limits.js';
|
|
18
|
+
import { createTokenLimitStore, sumAllUsage, getModelTokens } from './token-limit-store.js';
|
|
19
|
+
/**
|
|
20
|
+
* File name for storing token usage data
|
|
21
|
+
*/
|
|
22
|
+
const TOKEN_USAGE_FILE = 'token-usage.json';
|
|
23
|
+
/**
|
|
24
|
+
* Default empty token usage data structure
|
|
25
|
+
*/
|
|
26
|
+
const DEFAULT_TOKEN_USAGE_DATA = {
|
|
27
|
+
version: '1.0',
|
|
28
|
+
sessions: [],
|
|
29
|
+
currentSessionId: null,
|
|
30
|
+
lastUpdated: '',
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* TokenTracker class provides comprehensive token usage tracking for API calls.
|
|
34
|
+
*
|
|
35
|
+
* Features:
|
|
36
|
+
* - Session-based tracking with automatic aggregation
|
|
37
|
+
* - Cost estimation based on model pricing
|
|
38
|
+
* - Warning system for usage thresholds
|
|
39
|
+
* - Persistent storage with automatic save/load
|
|
40
|
+
* - Detailed metrics and statistics
|
|
41
|
+
* - Export functionality for usage data
|
|
42
|
+
*/
|
|
43
|
+
class TokenTracker {
|
|
44
|
+
data;
|
|
45
|
+
currentSession = null;
|
|
46
|
+
warningThreshold;
|
|
47
|
+
costWarningThreshold;
|
|
48
|
+
initialized = false;
|
|
49
|
+
dirty = false;
|
|
50
|
+
tokenWarningEmitted = false;
|
|
51
|
+
costWarningEmitted = false;
|
|
52
|
+
constructor() {
|
|
53
|
+
this.data = { ...DEFAULT_TOKEN_USAGE_DATA };
|
|
54
|
+
this.warningThreshold = TOKEN_WARNING_THRESHOLD;
|
|
55
|
+
this.costWarningThreshold = 10.0; // $10 default cost warning
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Initializes the token tracker by loading persisted data.
|
|
59
|
+
* Must be called before using other methods.
|
|
60
|
+
*/
|
|
61
|
+
async initialize() {
|
|
62
|
+
if (this.initialized) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
await this.load();
|
|
66
|
+
this.initialized = true;
|
|
67
|
+
logger.debug('Token tracker initialized');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Starts a new tracking session.
|
|
71
|
+
* If a session ID is provided, it will be used; otherwise, a new UUID is generated.
|
|
72
|
+
*
|
|
73
|
+
* @param sessionId - Optional session ID to use
|
|
74
|
+
* @returns The session ID of the new session
|
|
75
|
+
*/
|
|
76
|
+
startSession(sessionId) {
|
|
77
|
+
const id = sessionId || uuidv4();
|
|
78
|
+
// Check if session already exists
|
|
79
|
+
const existingSession = this.data.sessions.find((s) => s.sessionId === id);
|
|
80
|
+
if (existingSession) {
|
|
81
|
+
this.currentSession = existingSession;
|
|
82
|
+
this.data.currentSessionId = id;
|
|
83
|
+
logger.debug(`Resumed existing token tracking session: ${id}`);
|
|
84
|
+
return id;
|
|
85
|
+
}
|
|
86
|
+
// Create new session — reset warning flags
|
|
87
|
+
this.tokenWarningEmitted = false;
|
|
88
|
+
this.costWarningEmitted = false;
|
|
89
|
+
this.currentSession = {
|
|
90
|
+
sessionId: id,
|
|
91
|
+
startTime: formatTimestamp(),
|
|
92
|
+
calls: [],
|
|
93
|
+
totals: this.createEmptyTokenUsage(),
|
|
94
|
+
estimatedCost: this.createEmptyCostEstimate(),
|
|
95
|
+
};
|
|
96
|
+
this.data.sessions.push(this.currentSession);
|
|
97
|
+
this.data.currentSessionId = id;
|
|
98
|
+
this.dirty = true;
|
|
99
|
+
logger.debug(`Token tracking session started: ${id}`);
|
|
100
|
+
return id;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Records token usage for an API call.
|
|
104
|
+
* Automatically starts a session if none is active.
|
|
105
|
+
*
|
|
106
|
+
* @param model - The model ID used for the API call
|
|
107
|
+
* @param usage - Token usage statistics from the API response
|
|
108
|
+
* @param purpose - Optional description of the API call purpose
|
|
109
|
+
*/
|
|
110
|
+
async recordUsage(model, usage, purpose) {
|
|
111
|
+
// Ensure we have an active session
|
|
112
|
+
if (!this.currentSession) {
|
|
113
|
+
this.startSession();
|
|
114
|
+
}
|
|
115
|
+
// Calculate cost for this call
|
|
116
|
+
const cost = this.calculateCost(usage, model);
|
|
117
|
+
// Create the API call record
|
|
118
|
+
const callUsage = {
|
|
119
|
+
id: uuidv4(),
|
|
120
|
+
timestamp: formatTimestamp(),
|
|
121
|
+
model,
|
|
122
|
+
usage: { ...usage },
|
|
123
|
+
cost,
|
|
124
|
+
purpose,
|
|
125
|
+
};
|
|
126
|
+
// Add to current session
|
|
127
|
+
this.currentSession.calls.push(callUsage);
|
|
128
|
+
// Update session totals
|
|
129
|
+
this.updateSessionTotals();
|
|
130
|
+
// Check for warnings (debug-level, emitted once per threshold)
|
|
131
|
+
const warnings = this.checkWarnings();
|
|
132
|
+
for (const warning of warnings) {
|
|
133
|
+
logger.debug(warning.message);
|
|
134
|
+
}
|
|
135
|
+
// Mark as dirty and save
|
|
136
|
+
this.dirty = true;
|
|
137
|
+
await this.save();
|
|
138
|
+
logger.debug(`Recorded usage: ${usage.inputTokens} in, ${usage.outputTokens} out, ${cost.totalCost.toFixed(4)} USD`);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Gets the current session's token usage.
|
|
142
|
+
*
|
|
143
|
+
* @returns The current session usage or null if no session is active
|
|
144
|
+
*/
|
|
145
|
+
getCurrentSessionUsage() {
|
|
146
|
+
return this.currentSession;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Gets usage metrics for the current session.
|
|
150
|
+
*
|
|
151
|
+
* @returns Token metrics for the current session or null if no session/calls
|
|
152
|
+
*/
|
|
153
|
+
getSessionMetrics() {
|
|
154
|
+
if (!this.currentSession || this.currentSession.calls.length === 0) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const calls = this.currentSession.calls;
|
|
158
|
+
const inputTokens = calls.map((c) => c.usage.inputTokens);
|
|
159
|
+
const outputTokens = calls.map((c) => c.usage.outputTokens);
|
|
160
|
+
return {
|
|
161
|
+
averageInputTokens: this.calculateAverage(inputTokens),
|
|
162
|
+
averageOutputTokens: this.calculateAverage(outputTokens),
|
|
163
|
+
peakInputTokens: Math.max(...inputTokens),
|
|
164
|
+
peakOutputTokens: Math.max(...outputTokens),
|
|
165
|
+
totalCalls: calls.length,
|
|
166
|
+
totalTokens: this.currentSession.totals.totalTokens,
|
|
167
|
+
totalCost: this.currentSession.estimatedCost.totalCost,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Gets all-time usage statistics across all sessions.
|
|
172
|
+
*
|
|
173
|
+
* @returns Aggregated token metrics across all sessions
|
|
174
|
+
*/
|
|
175
|
+
getAllTimeStats() {
|
|
176
|
+
const allCalls = this.data.sessions.flatMap((s) => s.calls);
|
|
177
|
+
if (allCalls.length === 0) {
|
|
178
|
+
return {
|
|
179
|
+
averageInputTokens: 0,
|
|
180
|
+
averageOutputTokens: 0,
|
|
181
|
+
peakInputTokens: 0,
|
|
182
|
+
peakOutputTokens: 0,
|
|
183
|
+
totalCalls: 0,
|
|
184
|
+
totalTokens: 0,
|
|
185
|
+
totalCost: 0,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
const inputTokens = allCalls.map((c) => c.usage.inputTokens);
|
|
189
|
+
const outputTokens = allCalls.map((c) => c.usage.outputTokens);
|
|
190
|
+
const totalTokens = this.data.sessions.reduce((sum, s) => sum + s.totals.totalTokens, 0);
|
|
191
|
+
const totalCost = this.data.sessions.reduce((sum, s) => sum + s.estimatedCost.totalCost, 0);
|
|
192
|
+
return {
|
|
193
|
+
averageInputTokens: this.calculateAverage(inputTokens),
|
|
194
|
+
averageOutputTokens: this.calculateAverage(outputTokens),
|
|
195
|
+
peakInputTokens: Math.max(...inputTokens),
|
|
196
|
+
peakOutputTokens: Math.max(...outputTokens),
|
|
197
|
+
totalCalls: allCalls.length,
|
|
198
|
+
totalTokens,
|
|
199
|
+
totalCost,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Gets usage statistics for a specific time period.
|
|
204
|
+
*
|
|
205
|
+
* @param startDate - Start of the period
|
|
206
|
+
* @param endDate - End of the period (defaults to now)
|
|
207
|
+
* @returns Token metrics for the specified period
|
|
208
|
+
*/
|
|
209
|
+
getStatsByPeriod(startDate, endDate = new Date()) {
|
|
210
|
+
const startTime = startDate.getTime();
|
|
211
|
+
const endTime = endDate.getTime();
|
|
212
|
+
const filteredCalls = this.data.sessions.flatMap((s) => s.calls.filter((c) => {
|
|
213
|
+
const callTime = new Date(c.timestamp).getTime();
|
|
214
|
+
return callTime >= startTime && callTime <= endTime;
|
|
215
|
+
}));
|
|
216
|
+
if (filteredCalls.length === 0) {
|
|
217
|
+
return {
|
|
218
|
+
averageInputTokens: 0,
|
|
219
|
+
averageOutputTokens: 0,
|
|
220
|
+
peakInputTokens: 0,
|
|
221
|
+
peakOutputTokens: 0,
|
|
222
|
+
totalCalls: 0,
|
|
223
|
+
totalTokens: 0,
|
|
224
|
+
totalCost: 0,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
const inputTokens = filteredCalls.map((c) => c.usage.inputTokens);
|
|
228
|
+
const outputTokens = filteredCalls.map((c) => c.usage.outputTokens);
|
|
229
|
+
const totalTokens = filteredCalls.reduce((sum, c) => sum + c.usage.totalTokens, 0);
|
|
230
|
+
const totalCost = filteredCalls.reduce((sum, c) => sum + c.cost.totalCost, 0);
|
|
231
|
+
return {
|
|
232
|
+
averageInputTokens: this.calculateAverage(inputTokens),
|
|
233
|
+
averageOutputTokens: this.calculateAverage(outputTokens),
|
|
234
|
+
peakInputTokens: Math.max(...inputTokens),
|
|
235
|
+
peakOutputTokens: Math.max(...outputTokens),
|
|
236
|
+
totalCalls: filteredCalls.length,
|
|
237
|
+
totalTokens,
|
|
238
|
+
totalCost,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Gets usage statistics grouped by model.
|
|
243
|
+
*
|
|
244
|
+
* @returns Map of model ID to token metrics
|
|
245
|
+
*/
|
|
246
|
+
getStatsByModel() {
|
|
247
|
+
const modelStats = new Map();
|
|
248
|
+
// Group calls by model
|
|
249
|
+
for (const session of this.data.sessions) {
|
|
250
|
+
for (const call of session.calls) {
|
|
251
|
+
const existing = modelStats.get(call.model) || [];
|
|
252
|
+
existing.push(call);
|
|
253
|
+
modelStats.set(call.model, existing);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Calculate metrics for each model
|
|
257
|
+
const result = new Map();
|
|
258
|
+
for (const [model, calls] of modelStats) {
|
|
259
|
+
if (calls.length === 0)
|
|
260
|
+
continue;
|
|
261
|
+
const inputTokens = calls.map((c) => c.usage.inputTokens);
|
|
262
|
+
const outputTokens = calls.map((c) => c.usage.outputTokens);
|
|
263
|
+
const totalTokens = calls.reduce((sum, c) => sum + c.usage.totalTokens, 0);
|
|
264
|
+
const totalCost = calls.reduce((sum, c) => sum + c.cost.totalCost, 0);
|
|
265
|
+
result.set(model, {
|
|
266
|
+
averageInputTokens: this.calculateAverage(inputTokens),
|
|
267
|
+
averageOutputTokens: this.calculateAverage(outputTokens),
|
|
268
|
+
peakInputTokens: Math.max(...inputTokens),
|
|
269
|
+
peakOutputTokens: Math.max(...outputTokens),
|
|
270
|
+
totalCalls: calls.length,
|
|
271
|
+
totalTokens,
|
|
272
|
+
totalCost,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Ends the current session and marks it as complete.
|
|
279
|
+
*/
|
|
280
|
+
async endSession() {
|
|
281
|
+
if (this.currentSession) {
|
|
282
|
+
this.currentSession.endTime = formatTimestamp();
|
|
283
|
+
this.dirty = true;
|
|
284
|
+
await this.save();
|
|
285
|
+
logger.debug(`Token tracking session ended: ${this.currentSession.sessionId}`);
|
|
286
|
+
this.currentSession = null;
|
|
287
|
+
this.data.currentSessionId = null;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Exports all usage data for backup or analysis.
|
|
292
|
+
*
|
|
293
|
+
* @returns Complete token usage data structure
|
|
294
|
+
*/
|
|
295
|
+
async exportUsage() {
|
|
296
|
+
return {
|
|
297
|
+
...this.data,
|
|
298
|
+
lastUpdated: formatTimestamp(),
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Exports usage data for a specific session.
|
|
303
|
+
*
|
|
304
|
+
* @param sessionId - The session ID to export
|
|
305
|
+
* @returns Session usage data or null if not found
|
|
306
|
+
*/
|
|
307
|
+
getSessionById(sessionId) {
|
|
308
|
+
return this.data.sessions.find((s) => s.sessionId === sessionId) || null;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Gets all sessions, optionally filtered by date range.
|
|
312
|
+
*
|
|
313
|
+
* @param startDate - Optional start date filter
|
|
314
|
+
* @param endDate - Optional end date filter
|
|
315
|
+
* @returns Array of session usage data
|
|
316
|
+
*/
|
|
317
|
+
getSessions(startDate, endDate) {
|
|
318
|
+
let sessions = [...this.data.sessions];
|
|
319
|
+
if (startDate) {
|
|
320
|
+
const startTime = startDate.getTime();
|
|
321
|
+
sessions = sessions.filter((s) => new Date(s.startTime).getTime() >= startTime);
|
|
322
|
+
}
|
|
323
|
+
if (endDate) {
|
|
324
|
+
const endTime = endDate.getTime();
|
|
325
|
+
sessions = sessions.filter((s) => new Date(s.startTime).getTime() <= endTime);
|
|
326
|
+
}
|
|
327
|
+
return sessions;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Sets the warning threshold for token usage.
|
|
331
|
+
*
|
|
332
|
+
* @param tokens - Token count threshold for warnings
|
|
333
|
+
*/
|
|
334
|
+
setWarningThreshold(tokens) {
|
|
335
|
+
this.warningThreshold = tokens;
|
|
336
|
+
this.tokenWarningEmitted = false;
|
|
337
|
+
logger.debug(`Token warning threshold set to ${tokens}`);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Gets the current warning threshold.
|
|
341
|
+
*
|
|
342
|
+
* @returns The current token warning threshold
|
|
343
|
+
*/
|
|
344
|
+
getWarningThreshold() {
|
|
345
|
+
return this.warningThreshold;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Sets the cost warning threshold.
|
|
349
|
+
*
|
|
350
|
+
* @param cost - Cost threshold in USD for warnings
|
|
351
|
+
*/
|
|
352
|
+
setCostWarningThreshold(cost) {
|
|
353
|
+
this.costWarningThreshold = cost;
|
|
354
|
+
this.costWarningEmitted = false;
|
|
355
|
+
logger.debug(`Cost warning threshold set to $${cost}`);
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Gets the current cost warning threshold.
|
|
359
|
+
*
|
|
360
|
+
* @returns The current cost warning threshold in USD
|
|
361
|
+
*/
|
|
362
|
+
getCostWarningThreshold() {
|
|
363
|
+
return this.costWarningThreshold;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Checks for any warning conditions and returns applicable warnings.
|
|
367
|
+
*
|
|
368
|
+
* @returns Array of token warnings
|
|
369
|
+
*/
|
|
370
|
+
checkWarnings() {
|
|
371
|
+
const warnings = [];
|
|
372
|
+
if (!this.currentSession) {
|
|
373
|
+
return warnings;
|
|
374
|
+
}
|
|
375
|
+
const totalTokens = this.currentSession.totals.totalTokens;
|
|
376
|
+
const totalCost = this.currentSession.estimatedCost.totalCost;
|
|
377
|
+
// Check token threshold (only emit once per threshold crossing)
|
|
378
|
+
if (totalTokens >= this.warningThreshold && !this.tokenWarningEmitted) {
|
|
379
|
+
this.tokenWarningEmitted = true;
|
|
380
|
+
warnings.push({
|
|
381
|
+
type: 'exceeded_threshold',
|
|
382
|
+
message: `Token usage (${totalTokens.toLocaleString()}) has exceeded the warning threshold (${this.warningThreshold.toLocaleString()})`,
|
|
383
|
+
currentValue: totalTokens,
|
|
384
|
+
threshold: this.warningThreshold,
|
|
385
|
+
severity: 'warning',
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
else if (totalTokens >= this.warningThreshold * 0.8 && !this.tokenWarningEmitted) {
|
|
389
|
+
warnings.push({
|
|
390
|
+
type: 'approaching_limit',
|
|
391
|
+
message: `Token usage (${totalTokens.toLocaleString()}) is approaching the warning threshold (${this.warningThreshold.toLocaleString()})`,
|
|
392
|
+
currentValue: totalTokens,
|
|
393
|
+
threshold: this.warningThreshold,
|
|
394
|
+
severity: 'info',
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
// Check cost threshold (only emit once per threshold crossing)
|
|
398
|
+
if (totalCost >= this.costWarningThreshold && !this.costWarningEmitted) {
|
|
399
|
+
this.costWarningEmitted = true;
|
|
400
|
+
warnings.push({
|
|
401
|
+
type: 'high_cost',
|
|
402
|
+
message: `Session cost ($${totalCost.toFixed(2)}) has exceeded the warning threshold ($${this.costWarningThreshold.toFixed(2)})`,
|
|
403
|
+
currentValue: totalCost,
|
|
404
|
+
threshold: this.costWarningThreshold,
|
|
405
|
+
severity: 'warning',
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
else if (totalCost >= this.costWarningThreshold * 0.8 && !this.costWarningEmitted) {
|
|
409
|
+
warnings.push({
|
|
410
|
+
type: 'high_cost',
|
|
411
|
+
message: `Session cost ($${totalCost.toFixed(2)}) is approaching the warning threshold ($${this.costWarningThreshold.toFixed(2)})`,
|
|
412
|
+
currentValue: totalCost,
|
|
413
|
+
threshold: this.costWarningThreshold,
|
|
414
|
+
severity: 'info',
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
return warnings;
|
|
418
|
+
}
|
|
419
|
+
// ===========================================================================
|
|
420
|
+
// Unified rolling window limit system
|
|
421
|
+
// ===========================================================================
|
|
422
|
+
/** Lazily-initialized reference to the unified token limit store. */
|
|
423
|
+
_limitStore = null;
|
|
424
|
+
/**
|
|
425
|
+
* Sets the TokenLimitStore instance used for rolling window tracking.
|
|
426
|
+
* Must be called before using any limit-related methods.
|
|
427
|
+
*/
|
|
428
|
+
setLimitStore(store) {
|
|
429
|
+
this._limitStore = store;
|
|
430
|
+
}
|
|
431
|
+
/** Returns the limit store, throwing if not yet wired up. */
|
|
432
|
+
getLimitStore() {
|
|
433
|
+
if (!this._limitStore) {
|
|
434
|
+
throw new Error('[TokenTracker] TokenLimitStore not set — call setLimitStore() first.');
|
|
435
|
+
}
|
|
436
|
+
return this._limitStore;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Resolves the applicable token limits for a model under a given plan.
|
|
440
|
+
*
|
|
441
|
+
* @param modelId - The model ID to resolve limits for
|
|
442
|
+
* @param planStatus - The user's current plan status
|
|
443
|
+
* @param planType - The subscription tier (only used when planStatus === 'active')
|
|
444
|
+
* @returns General and model-specific limits
|
|
445
|
+
*/
|
|
446
|
+
resolveLimit(modelId, planStatus, planType) {
|
|
447
|
+
const planLimits = resolvePlanLimits(planStatus, planType);
|
|
448
|
+
const modelLimit = planLimits.perModelLimits[modelId] ?? planLimits.defaultPerModelLimit;
|
|
449
|
+
return {
|
|
450
|
+
generalLimit: planLimits.generalLimit,
|
|
451
|
+
modelLimit,
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Checks whether an API call for a given model is allowed under the
|
|
456
|
+
* token limits for the current 6-hour window.
|
|
457
|
+
*
|
|
458
|
+
* Loads the state (which resets if the window expired), reads flat
|
|
459
|
+
* counters, and compares against both the general (aggregate) limit
|
|
460
|
+
* and the per-model limit.
|
|
461
|
+
*
|
|
462
|
+
* @param modelId - The model ID to check
|
|
463
|
+
* @param planStatus - The user's current plan status
|
|
464
|
+
* @param planType - The subscription tier (only used when planStatus === 'active')
|
|
465
|
+
* @returns Check result with allowed status and remaining tokens
|
|
466
|
+
*/
|
|
467
|
+
async checkLimit(modelId, planStatus, planType) {
|
|
468
|
+
const store = this.getLimitStore();
|
|
469
|
+
const state = await store.loadState(); // loads + resets if window expired
|
|
470
|
+
const { generalLimit, modelLimit } = this.resolveLimit(modelId, planStatus, planType);
|
|
471
|
+
const generalUsed = sumAllUsage(state);
|
|
472
|
+
const modelUsed = getModelTokens(state, modelId);
|
|
473
|
+
const generalRemaining = Math.max(0, generalLimit - generalUsed);
|
|
474
|
+
const modelRemaining = Math.max(0, modelLimit - modelUsed);
|
|
475
|
+
// Check model limit first (more specific)
|
|
476
|
+
if (modelUsed >= modelLimit) {
|
|
477
|
+
return {
|
|
478
|
+
allowed: false,
|
|
479
|
+
generalRemaining,
|
|
480
|
+
modelRemaining: 0,
|
|
481
|
+
reason: `Token limit exceeded for model "${modelId}". Used ${modelUsed.toLocaleString()} / ${modelLimit.toLocaleString()} tokens in the last ${ROLLING_WINDOW_HOURS}h.`,
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
// Check general limit
|
|
485
|
+
if (generalUsed >= generalLimit) {
|
|
486
|
+
return {
|
|
487
|
+
allowed: false,
|
|
488
|
+
generalRemaining: 0,
|
|
489
|
+
modelRemaining,
|
|
490
|
+
reason: `Aggregate token limit exceeded. Used ${generalUsed.toLocaleString()} / ${generalLimit.toLocaleString()} tokens in the last ${ROLLING_WINDOW_HOURS}h.`,
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
return {
|
|
494
|
+
allowed: true,
|
|
495
|
+
generalRemaining,
|
|
496
|
+
modelRemaining,
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Records token usage against the rolling window limit store.
|
|
501
|
+
* This is separate from the session analytics `recordUsage` method.
|
|
502
|
+
*
|
|
503
|
+
* @param modelId - The model that consumed tokens
|
|
504
|
+
* @param tokens - Number of tokens consumed
|
|
505
|
+
*/
|
|
506
|
+
async recordLimitUsage(modelId, tokens) {
|
|
507
|
+
try {
|
|
508
|
+
const store = this.getLimitStore();
|
|
509
|
+
await store.recordUsage(modelId, tokens);
|
|
510
|
+
}
|
|
511
|
+
catch (err) {
|
|
512
|
+
logger.warn(`[TokenTracker] Failed to record limit usage for ${modelId}: ${String(err)}`);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Gets the total tokens used for a specific model within the rolling window.
|
|
517
|
+
*
|
|
518
|
+
* @param modelId - The model to check
|
|
519
|
+
* @returns Number of tokens used in the current window
|
|
520
|
+
*/
|
|
521
|
+
async getUsageForModel(modelId) {
|
|
522
|
+
const store = this.getLimitStore();
|
|
523
|
+
return store.getModelUsage(modelId);
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Gets the remaining tokens for a model under the current plan.
|
|
527
|
+
*
|
|
528
|
+
* @param modelId - The model to check
|
|
529
|
+
* @param planStatus - The user's current plan status
|
|
530
|
+
* @param planType - The subscription tier (only used when planStatus === 'active')
|
|
531
|
+
* @returns Remaining tokens for the model
|
|
532
|
+
*/
|
|
533
|
+
async getRemainingTokens(modelId, planStatus, planType) {
|
|
534
|
+
const { modelLimit } = this.resolveLimit(modelId, planStatus, planType);
|
|
535
|
+
const used = await this.getUsageForModel(modelId);
|
|
536
|
+
return Math.max(0, modelLimit - used);
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Clears all usage data. Use with caution.
|
|
540
|
+
*/
|
|
541
|
+
async clearAllData() {
|
|
542
|
+
this.data = { ...DEFAULT_TOKEN_USAGE_DATA };
|
|
543
|
+
this.currentSession = null;
|
|
544
|
+
this.dirty = true;
|
|
545
|
+
await this.save();
|
|
546
|
+
logger.info('All token usage data cleared');
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Clears usage data older than the specified number of days.
|
|
550
|
+
*
|
|
551
|
+
* @param days - Number of days to retain
|
|
552
|
+
* @returns Number of sessions removed
|
|
553
|
+
*/
|
|
554
|
+
async clearOldData(days) {
|
|
555
|
+
const cutoffDate = new Date();
|
|
556
|
+
cutoffDate.setDate(cutoffDate.getDate() - days);
|
|
557
|
+
const cutoffTime = cutoffDate.getTime();
|
|
558
|
+
const originalCount = this.data.sessions.length;
|
|
559
|
+
this.data.sessions = this.data.sessions.filter((session) => {
|
|
560
|
+
const sessionTime = new Date(session.startTime).getTime();
|
|
561
|
+
return sessionTime >= cutoffTime;
|
|
562
|
+
});
|
|
563
|
+
const removedCount = originalCount - this.data.sessions.length;
|
|
564
|
+
if (removedCount > 0) {
|
|
565
|
+
this.dirty = true;
|
|
566
|
+
await this.save();
|
|
567
|
+
logger.info(`Cleared ${removedCount} sessions older than ${days} days`);
|
|
568
|
+
}
|
|
569
|
+
return removedCount;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* Calculates cost for token usage based on model pricing.
|
|
573
|
+
*
|
|
574
|
+
* @param usage - Token usage statistics
|
|
575
|
+
* @param model - Model ID for pricing lookup
|
|
576
|
+
* @returns Cost estimate breakdown
|
|
577
|
+
*/
|
|
578
|
+
calculateCost(usage, model) {
|
|
579
|
+
const modelConfig = getModelConfig(model);
|
|
580
|
+
if (!modelConfig) {
|
|
581
|
+
logger.debug(`Unknown model for cost calculation: ${model}`);
|
|
582
|
+
return this.createEmptyCostEstimate();
|
|
583
|
+
}
|
|
584
|
+
const inputCost = (usage.inputTokens / 1_000_000) * modelConfig.pricing.inputPricePerMillion;
|
|
585
|
+
const outputCost = (usage.outputTokens / 1_000_000) * modelConfig.pricing.outputPricePerMillion;
|
|
586
|
+
return {
|
|
587
|
+
inputCost,
|
|
588
|
+
outputCost,
|
|
589
|
+
totalCost: inputCost + outputCost,
|
|
590
|
+
currency: 'USD',
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Updates the current session's totals based on all calls.
|
|
595
|
+
*/
|
|
596
|
+
updateSessionTotals() {
|
|
597
|
+
if (!this.currentSession) {
|
|
598
|
+
return;
|
|
599
|
+
}
|
|
600
|
+
const totals = this.createEmptyTokenUsage();
|
|
601
|
+
const cost = this.createEmptyCostEstimate();
|
|
602
|
+
for (const call of this.currentSession.calls) {
|
|
603
|
+
totals.inputTokens += call.usage.inputTokens;
|
|
604
|
+
totals.outputTokens += call.usage.outputTokens;
|
|
605
|
+
totals.totalTokens += call.usage.totalTokens;
|
|
606
|
+
// Handle cache tokens if present
|
|
607
|
+
if (call.usage.cacheCreationInputTokens) {
|
|
608
|
+
totals.cacheCreationInputTokens =
|
|
609
|
+
(totals.cacheCreationInputTokens || 0) +
|
|
610
|
+
call.usage.cacheCreationInputTokens;
|
|
611
|
+
}
|
|
612
|
+
if (call.usage.cacheReadInputTokens) {
|
|
613
|
+
totals.cacheReadInputTokens =
|
|
614
|
+
(totals.cacheReadInputTokens || 0) + call.usage.cacheReadInputTokens;
|
|
615
|
+
}
|
|
616
|
+
cost.inputCost += call.cost.inputCost;
|
|
617
|
+
cost.outputCost += call.cost.outputCost;
|
|
618
|
+
cost.totalCost += call.cost.totalCost;
|
|
619
|
+
}
|
|
620
|
+
this.currentSession.totals = totals;
|
|
621
|
+
this.currentSession.estimatedCost = cost;
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Calculates the average of an array of numbers.
|
|
625
|
+
*
|
|
626
|
+
* @param numbers - Array of numbers to average
|
|
627
|
+
* @returns The average, rounded to nearest integer
|
|
628
|
+
*/
|
|
629
|
+
calculateAverage(numbers) {
|
|
630
|
+
if (numbers.length === 0) {
|
|
631
|
+
return 0;
|
|
632
|
+
}
|
|
633
|
+
const sum = numbers.reduce((a, b) => a + b, 0);
|
|
634
|
+
return Math.round(sum / numbers.length);
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Creates an empty token usage object.
|
|
638
|
+
*
|
|
639
|
+
* @returns Empty TokenUsage object
|
|
640
|
+
*/
|
|
641
|
+
createEmptyTokenUsage() {
|
|
642
|
+
return {
|
|
643
|
+
inputTokens: 0,
|
|
644
|
+
outputTokens: 0,
|
|
645
|
+
totalTokens: 0,
|
|
646
|
+
};
|
|
647
|
+
}
|
|
648
|
+
/**
|
|
649
|
+
* Creates an empty cost estimate object.
|
|
650
|
+
*
|
|
651
|
+
* @returns Empty CostEstimate object
|
|
652
|
+
*/
|
|
653
|
+
createEmptyCostEstimate() {
|
|
654
|
+
return {
|
|
655
|
+
inputCost: 0,
|
|
656
|
+
outputCost: 0,
|
|
657
|
+
totalCost: 0,
|
|
658
|
+
currency: 'USD',
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* Gets the file path for token usage data storage.
|
|
663
|
+
*
|
|
664
|
+
* @returns Full path to the token usage file
|
|
665
|
+
*/
|
|
666
|
+
getFilePath() {
|
|
667
|
+
return path.join(getGlobalCompassDir(), TOKEN_USAGE_FILE);
|
|
668
|
+
}
|
|
669
|
+
/**
|
|
670
|
+
* Loads token usage data from disk.
|
|
671
|
+
*/
|
|
672
|
+
async load() {
|
|
673
|
+
try {
|
|
674
|
+
// Ensure the directory exists
|
|
675
|
+
await ensureDir(getGlobalCompassDir());
|
|
676
|
+
const filePath = this.getFilePath();
|
|
677
|
+
const data = await safeReadJson(filePath);
|
|
678
|
+
if (data) {
|
|
679
|
+
this.data = {
|
|
680
|
+
...DEFAULT_TOKEN_USAGE_DATA,
|
|
681
|
+
...data,
|
|
682
|
+
};
|
|
683
|
+
// Restore current session if exists
|
|
684
|
+
if (data.currentSessionId) {
|
|
685
|
+
this.currentSession =
|
|
686
|
+
data.sessions.find((s) => s.sessionId === data.currentSessionId) ||
|
|
687
|
+
null;
|
|
688
|
+
}
|
|
689
|
+
logger.debug(`Loaded token usage data: ${this.data.sessions.length} sessions`);
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
catch (error) {
|
|
693
|
+
logger.debug('Failed to load token usage data, starting fresh', error);
|
|
694
|
+
this.data = { ...DEFAULT_TOKEN_USAGE_DATA };
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
/**
|
|
698
|
+
* Saves token usage data to disk.
|
|
699
|
+
*/
|
|
700
|
+
async save() {
|
|
701
|
+
if (!this.dirty) {
|
|
702
|
+
return;
|
|
703
|
+
}
|
|
704
|
+
try {
|
|
705
|
+
// Ensure the directory exists
|
|
706
|
+
await ensureDir(getGlobalCompassDir());
|
|
707
|
+
const filePath = this.getFilePath();
|
|
708
|
+
this.data.lastUpdated = formatTimestamp();
|
|
709
|
+
await safeWriteJson(filePath, this.data);
|
|
710
|
+
this.dirty = false;
|
|
711
|
+
logger.debug('Token usage data saved');
|
|
712
|
+
}
|
|
713
|
+
catch (error) {
|
|
714
|
+
logger.error('Failed to save token usage data', error);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
/**
|
|
718
|
+
* Forces a save of the current data, regardless of dirty state.
|
|
719
|
+
*/
|
|
720
|
+
async forceSave() {
|
|
721
|
+
this.dirty = true;
|
|
722
|
+
await this.save();
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
// Singleton instance
|
|
726
|
+
let tokenTrackerInstance = null;
|
|
727
|
+
/**
|
|
728
|
+
* Gets the singleton TokenTracker instance.
|
|
729
|
+
* Creates and initializes the instance on first call.
|
|
730
|
+
*
|
|
731
|
+
* @returns Promise resolving to the TokenTracker instance
|
|
732
|
+
*/
|
|
733
|
+
export async function getTokenTracker() {
|
|
734
|
+
if (!tokenTrackerInstance) {
|
|
735
|
+
tokenTrackerInstance = new TokenTracker();
|
|
736
|
+
tokenTrackerInstance.setLimitStore(createTokenLimitStore());
|
|
737
|
+
await tokenTrackerInstance.initialize();
|
|
738
|
+
}
|
|
739
|
+
return tokenTrackerInstance;
|
|
740
|
+
}
|
|
741
|
+
/**
|
|
742
|
+
* Creates a new TokenTracker instance with custom configuration.
|
|
743
|
+
* Use this when you need a separate instance from the singleton.
|
|
744
|
+
*
|
|
745
|
+
* @returns A new TokenTracker instance (not initialized)
|
|
746
|
+
*/
|
|
747
|
+
export function createTokenTracker() {
|
|
748
|
+
return new TokenTracker();
|
|
749
|
+
}
|
|
750
|
+
export { TokenTracker };
|
|
751
|
+
//# sourceMappingURL=token-tracker.js.map
|