@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,863 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-Powered Plan Generator
|
|
3
|
+
*
|
|
4
|
+
* This module generates implementation plans using Claude AI instead of
|
|
5
|
+
* hardcoded pattern matching. It sends context about the project and user
|
|
6
|
+
* request to Claude and receives a structured ImplementationPlan in response.
|
|
7
|
+
*/
|
|
8
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
9
|
+
import { getAnthropicClient } from './anthropic-client.js';
|
|
10
|
+
import { logger } from '../utils/logger.js';
|
|
11
|
+
import { getEventEmitter } from '../core/event-emitter.js';
|
|
12
|
+
import { IMPLEMENTATION_PLAN_SCHEMA, PLAN_GENERATION_SYSTEM_PROMPT, PLAN_ADOPTION_SYSTEM_PROMPT, PLAN_MODIFICATION_SYSTEM_PROMPT, buildPlanModificationUserPrompt, buildLightweightPlanModificationPrompt, } from '../prompts/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Emits a status message for UI display during plan generation.
|
|
15
|
+
*/
|
|
16
|
+
function emitStatus(toolCallId, message) {
|
|
17
|
+
if (toolCallId) {
|
|
18
|
+
const eventEmitter = getEventEmitter();
|
|
19
|
+
eventEmitter.emit('tool-status-message', { toolId: toolCallId, message });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Plan generation phases in order of appearance in JSON output.
|
|
24
|
+
*/
|
|
25
|
+
var PlanPhase;
|
|
26
|
+
(function (PlanPhase) {
|
|
27
|
+
PlanPhase[PlanPhase["STARTING"] = 0] = "STARTING";
|
|
28
|
+
PlanPhase[PlanPhase["PROBLEM_STATEMENT"] = 1] = "PROBLEM_STATEMENT";
|
|
29
|
+
PlanPhase[PlanPhase["REQUIREMENTS"] = 2] = "REQUIREMENTS";
|
|
30
|
+
PlanPhase[PlanPhase["EDGE_CASES"] = 3] = "EDGE_CASES";
|
|
31
|
+
PlanPhase[PlanPhase["CONSTRAINTS"] = 4] = "CONSTRAINTS";
|
|
32
|
+
PlanPhase[PlanPhase["ASSUMPTIONS"] = 5] = "ASSUMPTIONS";
|
|
33
|
+
PlanPhase[PlanPhase["IMPACT"] = 6] = "IMPACT";
|
|
34
|
+
PlanPhase[PlanPhase["TASKS"] = 7] = "TASKS";
|
|
35
|
+
PlanPhase[PlanPhase["RISKS"] = 8] = "RISKS";
|
|
36
|
+
PlanPhase[PlanPhase["TESTING"] = 9] = "TESTING";
|
|
37
|
+
PlanPhase[PlanPhase["FINALIZING"] = 10] = "FINALIZING";
|
|
38
|
+
})(PlanPhase || (PlanPhase = {}));
|
|
39
|
+
/**
|
|
40
|
+
* Tracks plan generation progress by analyzing streamed JSON content.
|
|
41
|
+
* Uses a state machine to ensure orderly progression through phases.
|
|
42
|
+
*/
|
|
43
|
+
class PlanProgressTracker {
|
|
44
|
+
content = '';
|
|
45
|
+
lastEmittedMessage = '';
|
|
46
|
+
currentPhase = PlanPhase.STARTING;
|
|
47
|
+
requirementCount = 0;
|
|
48
|
+
taskCount = 0;
|
|
49
|
+
riskCount = 0;
|
|
50
|
+
/**
|
|
51
|
+
* Appends new content and returns a status message if progress changed.
|
|
52
|
+
*/
|
|
53
|
+
update(chunk) {
|
|
54
|
+
this.content += chunk;
|
|
55
|
+
const message = this.detectProgress();
|
|
56
|
+
if (message && message !== this.lastEmittedMessage) {
|
|
57
|
+
this.lastEmittedMessage = message;
|
|
58
|
+
return message;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Detects progress using ordered phase transitions.
|
|
64
|
+
* Only moves forward through phases, never backward.
|
|
65
|
+
*/
|
|
66
|
+
detectProgress() {
|
|
67
|
+
// Check phases in order - only advance, never go back
|
|
68
|
+
if (this.currentPhase < PlanPhase.PROBLEM_STATEMENT &&
|
|
69
|
+
this.content.includes('"problemStatement"')) {
|
|
70
|
+
this.currentPhase = PlanPhase.PROBLEM_STATEMENT;
|
|
71
|
+
return 'Defining problem statement...';
|
|
72
|
+
}
|
|
73
|
+
if (this.currentPhase < PlanPhase.REQUIREMENTS &&
|
|
74
|
+
this.content.includes('"requirements"')) {
|
|
75
|
+
this.currentPhase = PlanPhase.REQUIREMENTS;
|
|
76
|
+
}
|
|
77
|
+
// While in requirements phase, track count
|
|
78
|
+
if (this.currentPhase === PlanPhase.REQUIREMENTS) {
|
|
79
|
+
const count = (this.content.match(/"id":\s*"req-/g) || []).length;
|
|
80
|
+
if (count > this.requirementCount) {
|
|
81
|
+
this.requirementCount = count;
|
|
82
|
+
return `Generating requirements... (${count} found)`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (this.currentPhase < PlanPhase.EDGE_CASES &&
|
|
86
|
+
this.content.includes('"edgeCases"')) {
|
|
87
|
+
this.currentPhase = PlanPhase.EDGE_CASES;
|
|
88
|
+
return 'Identifying edge cases...';
|
|
89
|
+
}
|
|
90
|
+
if (this.currentPhase < PlanPhase.CONSTRAINTS &&
|
|
91
|
+
this.content.includes('"constraints"')) {
|
|
92
|
+
this.currentPhase = PlanPhase.CONSTRAINTS;
|
|
93
|
+
return 'Defining constraints...';
|
|
94
|
+
}
|
|
95
|
+
if (this.currentPhase < PlanPhase.ASSUMPTIONS &&
|
|
96
|
+
this.content.includes('"assumptions"')) {
|
|
97
|
+
this.currentPhase = PlanPhase.ASSUMPTIONS;
|
|
98
|
+
return 'Documenting assumptions...';
|
|
99
|
+
}
|
|
100
|
+
if (this.currentPhase < PlanPhase.IMPACT &&
|
|
101
|
+
this.content.includes('"impact"')) {
|
|
102
|
+
this.currentPhase = PlanPhase.IMPACT;
|
|
103
|
+
return 'Analyzing file impact...';
|
|
104
|
+
}
|
|
105
|
+
if (this.currentPhase < PlanPhase.TASKS &&
|
|
106
|
+
this.content.includes('"tasks"')) {
|
|
107
|
+
this.currentPhase = PlanPhase.TASKS;
|
|
108
|
+
}
|
|
109
|
+
// While in tasks phase, track count
|
|
110
|
+
if (this.currentPhase === PlanPhase.TASKS) {
|
|
111
|
+
const count = (this.content.match(/"id":\s*"task-/g) || []).length;
|
|
112
|
+
if (count > this.taskCount) {
|
|
113
|
+
this.taskCount = count;
|
|
114
|
+
return `Creating tasks... (${count} defined)`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (this.currentPhase < PlanPhase.RISKS &&
|
|
118
|
+
this.content.includes('"risks"')) {
|
|
119
|
+
this.currentPhase = PlanPhase.RISKS;
|
|
120
|
+
}
|
|
121
|
+
// While in risks phase, track count
|
|
122
|
+
if (this.currentPhase === PlanPhase.RISKS) {
|
|
123
|
+
const count = (this.content.match(/"severity":\s*"/g) || []).length;
|
|
124
|
+
if (count > this.riskCount) {
|
|
125
|
+
this.riskCount = count;
|
|
126
|
+
return `Identifying risks... (${count} found)`;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (this.currentPhase < PlanPhase.TESTING &&
|
|
130
|
+
this.content.includes('"testing"')) {
|
|
131
|
+
this.currentPhase = PlanPhase.TESTING;
|
|
132
|
+
return 'Defining test strategy...';
|
|
133
|
+
}
|
|
134
|
+
if (this.currentPhase < PlanPhase.FINALIZING &&
|
|
135
|
+
this.content.includes('"rollbackStrategy"')) {
|
|
136
|
+
this.currentPhase = PlanPhase.FINALIZING;
|
|
137
|
+
return 'Finalizing plan...';
|
|
138
|
+
}
|
|
139
|
+
// Default based on current phase
|
|
140
|
+
if (this.currentPhase === PlanPhase.STARTING) {
|
|
141
|
+
return 'Generating plan...';
|
|
142
|
+
}
|
|
143
|
+
return this.lastEmittedMessage || 'Generating plan...';
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Returns final summary of what was generated.
|
|
147
|
+
*/
|
|
148
|
+
getSummary() {
|
|
149
|
+
return `Generated plan with ${this.requirementCount} requirements, ${this.taskCount} tasks, ${this.riskCount} risks`;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Builds the system prompt for plan generation.
|
|
154
|
+
* Uses the centralized prompt from the prompts module.
|
|
155
|
+
*/
|
|
156
|
+
function buildSystemPrompt() {
|
|
157
|
+
return PLAN_GENERATION_SYSTEM_PROMPT;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Builds the user prompt with all context for plan generation.
|
|
161
|
+
*/
|
|
162
|
+
function buildUserPrompt(userRequest, context, complexity, clarifications) {
|
|
163
|
+
const parts = [];
|
|
164
|
+
// User Request
|
|
165
|
+
parts.push('## User Request');
|
|
166
|
+
parts.push(userRequest);
|
|
167
|
+
parts.push('');
|
|
168
|
+
// Project Context
|
|
169
|
+
parts.push('## Project Context');
|
|
170
|
+
parts.push(`**Project Root:** ${context.projectRoot}`);
|
|
171
|
+
parts.push(`**Project Type:** ${context.projectType || 'unknown'}`);
|
|
172
|
+
parts.push(`**Languages:** ${context.languages.join(', ') || 'unknown'}`);
|
|
173
|
+
parts.push('');
|
|
174
|
+
// Directory Structure
|
|
175
|
+
if (context.directoryTree) {
|
|
176
|
+
parts.push('### Directory Structure');
|
|
177
|
+
parts.push('```');
|
|
178
|
+
parts.push(context.directoryTree.substring(0, 2000)); // Limit size
|
|
179
|
+
parts.push('```');
|
|
180
|
+
parts.push('');
|
|
181
|
+
}
|
|
182
|
+
// Relevant Files
|
|
183
|
+
if (context.relevantFiles.length > 0) {
|
|
184
|
+
parts.push('### Relevant Files');
|
|
185
|
+
for (const file of context.relevantFiles.slice(0, 15)) {
|
|
186
|
+
parts.push(`- \`${file.path}\` (${file.reason})`);
|
|
187
|
+
}
|
|
188
|
+
parts.push('');
|
|
189
|
+
}
|
|
190
|
+
// Affected Areas
|
|
191
|
+
if (context.affectedAreas.length > 0) {
|
|
192
|
+
parts.push('### Affected Areas');
|
|
193
|
+
parts.push(context.affectedAreas.join(', '));
|
|
194
|
+
parts.push('');
|
|
195
|
+
}
|
|
196
|
+
// Complexity Assessment
|
|
197
|
+
parts.push('## Complexity Assessment');
|
|
198
|
+
parts.push(`- **Mode:** ${complexity.mode}`);
|
|
199
|
+
parts.push(`- **Confidence:** ${complexity.confidence}%`);
|
|
200
|
+
parts.push(`- **Files Affected:** ${complexity.factors.filesAffected}`);
|
|
201
|
+
parts.push(`- **Architectural Change:** ${complexity.factors.architecturalChange}`);
|
|
202
|
+
parts.push(`- **Breaking Changes:** ${complexity.factors.breakingChanges}`);
|
|
203
|
+
parts.push(`- **Risk Level:** ${complexity.factors.riskLevel}/10`);
|
|
204
|
+
parts.push(`- **Reasoning:** ${complexity.reasoning}`);
|
|
205
|
+
parts.push('');
|
|
206
|
+
// Clarifications (if any)
|
|
207
|
+
if (clarifications && clarifications.qaRecords.length > 0) {
|
|
208
|
+
parts.push('## User Clarifications');
|
|
209
|
+
for (const qa of clarifications.qaRecords) {
|
|
210
|
+
parts.push(`**Q:** ${qa.question.question}`);
|
|
211
|
+
const answer = Array.isArray(qa.answer.answer)
|
|
212
|
+
? qa.answer.answer.join(', ')
|
|
213
|
+
: qa.answer.answer;
|
|
214
|
+
parts.push(`**A:** ${answer}`);
|
|
215
|
+
parts.push('');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Git Context
|
|
219
|
+
if (context.gitContext) {
|
|
220
|
+
parts.push('## Git Context');
|
|
221
|
+
parts.push(`- **Current Branch:** ${context.gitContext.currentBranch}`);
|
|
222
|
+
parts.push(`- **Working Directory Clean:** ${context.gitContext.isClean}`);
|
|
223
|
+
if (context.gitContext.uncommittedChanges.length > 0) {
|
|
224
|
+
parts.push(`- **Uncommitted Changes:** ${context.gitContext.uncommittedChanges.length} files`);
|
|
225
|
+
}
|
|
226
|
+
parts.push('');
|
|
227
|
+
}
|
|
228
|
+
// Task
|
|
229
|
+
parts.push('## Task');
|
|
230
|
+
parts.push('Generate a detailed implementation plan as JSON matching this schema:');
|
|
231
|
+
parts.push('```json');
|
|
232
|
+
parts.push(IMPLEMENTATION_PLAN_SCHEMA);
|
|
233
|
+
parts.push('```');
|
|
234
|
+
parts.push('');
|
|
235
|
+
parts.push('Requirements:');
|
|
236
|
+
parts.push('- Create 3-10 specific, actionable tasks');
|
|
237
|
+
parts.push('- Each task should target specific files from this project');
|
|
238
|
+
parts.push('- Include realistic task dependencies');
|
|
239
|
+
parts.push('- Identify concrete risks with mitigations specific to this codebase');
|
|
240
|
+
parts.push('- Be specific to THIS request - do not use generic placeholders');
|
|
241
|
+
parts.push('- File paths should be relative to the project root');
|
|
242
|
+
parts.push('');
|
|
243
|
+
parts.push('Respond with ONLY the JSON object, no other text.');
|
|
244
|
+
return parts.join('\n');
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Parses the LLM response into an ImplementationPlan.
|
|
248
|
+
* Handles potential JSON parsing errors and validates the structure.
|
|
249
|
+
*/
|
|
250
|
+
function parsePlanResponse(response) {
|
|
251
|
+
// Try to extract JSON from the response (in case there's extra text)
|
|
252
|
+
let jsonStr = response.trim();
|
|
253
|
+
// Remove markdown code blocks if present
|
|
254
|
+
if (jsonStr.startsWith('```json')) {
|
|
255
|
+
jsonStr = jsonStr.slice(7);
|
|
256
|
+
}
|
|
257
|
+
else if (jsonStr.startsWith('```')) {
|
|
258
|
+
jsonStr = jsonStr.slice(3);
|
|
259
|
+
}
|
|
260
|
+
if (jsonStr.endsWith('```')) {
|
|
261
|
+
jsonStr = jsonStr.slice(0, -3);
|
|
262
|
+
}
|
|
263
|
+
jsonStr = jsonStr.trim();
|
|
264
|
+
// Try to parse the JSON
|
|
265
|
+
const parsed = JSON.parse(jsonStr);
|
|
266
|
+
return parsed;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Validates and fills in missing fields in the parsed plan.
|
|
270
|
+
*/
|
|
271
|
+
function validateAndFillPlan(partial, userRequest) {
|
|
272
|
+
const id = uuidv4();
|
|
273
|
+
const now = new Date().toISOString();
|
|
274
|
+
// Ensure tasks have proper IDs and order
|
|
275
|
+
const tasks = (partial.tasks || []).map((task, index) => ({
|
|
276
|
+
id: task.id || `task-${uuidv4().slice(0, 8)}`,
|
|
277
|
+
order: task.order || index + 1,
|
|
278
|
+
description: task.description || 'No description',
|
|
279
|
+
targetFiles: task.targetFiles || [],
|
|
280
|
+
targetElements: task.targetElements || [],
|
|
281
|
+
changes: task.changes || '',
|
|
282
|
+
dependencies: task.dependencies || [],
|
|
283
|
+
verificationCriteria: task.verificationCriteria || [],
|
|
284
|
+
complexity: task.complexity || 5,
|
|
285
|
+
requirementRefs: task.requirementRefs || [],
|
|
286
|
+
}));
|
|
287
|
+
// Ensure requirements have IDs
|
|
288
|
+
const requirements = (partial.requirements || []).map((req) => ({
|
|
289
|
+
id: req.id || `req-${uuidv4().slice(0, 8)}`,
|
|
290
|
+
description: req.description || userRequest,
|
|
291
|
+
priority: req.priority || 1,
|
|
292
|
+
source: req.source || 'user',
|
|
293
|
+
}));
|
|
294
|
+
// Default requirement if none provided
|
|
295
|
+
if (requirements.length === 0) {
|
|
296
|
+
requirements.push({
|
|
297
|
+
id: `req-${uuidv4().slice(0, 8)}`,
|
|
298
|
+
description: userRequest,
|
|
299
|
+
priority: 1,
|
|
300
|
+
source: 'user',
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
// Ensure edge cases have proper structure
|
|
304
|
+
const edgeCases = (partial.edgeCases || []).map((ec) => ({
|
|
305
|
+
description: ec.description || '',
|
|
306
|
+
handling: ec.handling || '',
|
|
307
|
+
risk: ec.risk || 'medium',
|
|
308
|
+
}));
|
|
309
|
+
// Ensure risks have proper structure
|
|
310
|
+
const risks = (partial.risks || []).map((risk) => ({
|
|
311
|
+
description: risk.description || '',
|
|
312
|
+
severity: risk.severity || 'medium',
|
|
313
|
+
mitigation: risk.mitigation || '',
|
|
314
|
+
rollback: risk.rollback,
|
|
315
|
+
}));
|
|
316
|
+
// Ensure file operations have proper structure
|
|
317
|
+
const fileOperations = (partial.impact?.fileOperations || []).map((op) => ({
|
|
318
|
+
path: op.path || '',
|
|
319
|
+
operation: op.operation || 'create',
|
|
320
|
+
changes: op.changes,
|
|
321
|
+
}));
|
|
322
|
+
// Calculate total complexity from tasks
|
|
323
|
+
const totalComplexity = partial.totalComplexity ||
|
|
324
|
+
Math.round(tasks.reduce((sum, t) => sum + t.complexity, 0) / Math.max(tasks.length, 1));
|
|
325
|
+
// Build summary if not provided
|
|
326
|
+
const summary = partial.summary ||
|
|
327
|
+
`Plan with ${tasks.length} tasks, ${risks.length} risks identified. Total complexity: ${totalComplexity}/10`;
|
|
328
|
+
// Generate title from problem statement if not provided
|
|
329
|
+
const title = partial.title ||
|
|
330
|
+
(partial.problemStatement
|
|
331
|
+
? partial.problemStatement.split(/[.!?\n]/)[0].trim().substring(0, 80)
|
|
332
|
+
: userRequest.split(/[.!?\n]/)[0].trim().substring(0, 80));
|
|
333
|
+
return {
|
|
334
|
+
id,
|
|
335
|
+
createdAt: now,
|
|
336
|
+
version: 1,
|
|
337
|
+
title,
|
|
338
|
+
problemStatement: partial.problemStatement || userRequest,
|
|
339
|
+
requirements,
|
|
340
|
+
edgeCases,
|
|
341
|
+
constraints: partial.constraints || [],
|
|
342
|
+
assumptions: partial.assumptions || [],
|
|
343
|
+
impact: {
|
|
344
|
+
fileOperations,
|
|
345
|
+
dependenciesAffected: partial.impact?.dependenciesAffected || [],
|
|
346
|
+
breakingChanges: partial.impact?.breakingChanges || [],
|
|
347
|
+
migrations: partial.impact?.migrations,
|
|
348
|
+
},
|
|
349
|
+
tasks,
|
|
350
|
+
risks,
|
|
351
|
+
testing: {
|
|
352
|
+
unitTests: partial.testing?.unitTests || [],
|
|
353
|
+
integrationTests: partial.testing?.integrationTests || [],
|
|
354
|
+
testFiles: partial.testing?.testFiles || [],
|
|
355
|
+
},
|
|
356
|
+
rollbackStrategy: partial.rollbackStrategy || 'Use git to revert changes',
|
|
357
|
+
totalComplexity,
|
|
358
|
+
complexityNote: partial.complexityNote,
|
|
359
|
+
summary,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Generates an implementation plan using Claude AI.
|
|
364
|
+
*
|
|
365
|
+
* @param userRequest - The user's original request
|
|
366
|
+
* @param context - Gathered project context
|
|
367
|
+
* @param complexity - Complexity classification results
|
|
368
|
+
* @param clarifications - Optional clarification results
|
|
369
|
+
* @param toolCallId - Optional tool call ID for status updates
|
|
370
|
+
* @returns A detailed implementation plan
|
|
371
|
+
*/
|
|
372
|
+
export async function generatePlanWithLLM(userRequest, context, complexity, clarifications, toolCallId) {
|
|
373
|
+
logger.info('Generating implementation plan with LLM', {
|
|
374
|
+
projectType: context.projectType,
|
|
375
|
+
complexityMode: complexity.mode,
|
|
376
|
+
relevantFiles: context.relevantFiles.length,
|
|
377
|
+
});
|
|
378
|
+
const startTime = Date.now();
|
|
379
|
+
try {
|
|
380
|
+
// Get the Anthropic client
|
|
381
|
+
emitStatus(toolCallId, 'Initializing plan generation...');
|
|
382
|
+
const client = await getAnthropicClient();
|
|
383
|
+
if (!client.isInitialized()) {
|
|
384
|
+
await client.initialize();
|
|
385
|
+
}
|
|
386
|
+
// Build prompts
|
|
387
|
+
emitStatus(toolCallId, 'Analyzing project context...');
|
|
388
|
+
const systemPrompt = buildSystemPrompt();
|
|
389
|
+
const userPrompt = buildUserPrompt(userRequest, context, complexity, clarifications);
|
|
390
|
+
// Stream the response with progress tracking
|
|
391
|
+
emitStatus(toolCallId, 'Generating plan...');
|
|
392
|
+
const progressTracker = new PlanProgressTracker();
|
|
393
|
+
let fullContent = '';
|
|
394
|
+
// Use streaming to track progress
|
|
395
|
+
for await (const response of client.streamMessage([{ role: 'user', content: userPrompt }], {
|
|
396
|
+
system: systemPrompt,
|
|
397
|
+
maxTokens: 8192,
|
|
398
|
+
temperature: 0.4, // Conservative temperature for consistent structured output
|
|
399
|
+
})) {
|
|
400
|
+
if (response.type === 'text' && response.content) {
|
|
401
|
+
fullContent += response.content;
|
|
402
|
+
// Update progress based on streamed content
|
|
403
|
+
const progressMessage = progressTracker.update(response.content);
|
|
404
|
+
if (progressMessage) {
|
|
405
|
+
emitStatus(toolCallId, progressMessage);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
else if (response.type === 'error') {
|
|
409
|
+
throw new Error(response.error || 'Unknown streaming error');
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
logger.debug('LLM plan generation response received', {
|
|
413
|
+
contentLength: fullContent.length,
|
|
414
|
+
summary: progressTracker.getSummary(),
|
|
415
|
+
});
|
|
416
|
+
// Parse the response
|
|
417
|
+
emitStatus(toolCallId, 'Parsing plan...');
|
|
418
|
+
const parsedPlan = parsePlanResponse(fullContent);
|
|
419
|
+
// Validate and fill in missing fields
|
|
420
|
+
emitStatus(toolCallId, 'Validating plan structure...');
|
|
421
|
+
const plan = validateAndFillPlan(parsedPlan, userRequest);
|
|
422
|
+
const duration = Date.now() - startTime;
|
|
423
|
+
logger.info('Plan generated successfully', {
|
|
424
|
+
planId: plan.id,
|
|
425
|
+
taskCount: plan.tasks.length,
|
|
426
|
+
riskCount: plan.risks.length,
|
|
427
|
+
totalComplexity: plan.totalComplexity,
|
|
428
|
+
duration: `${duration}ms`,
|
|
429
|
+
});
|
|
430
|
+
return plan;
|
|
431
|
+
}
|
|
432
|
+
catch (error) {
|
|
433
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
434
|
+
logger.error('Failed to generate plan with LLM', { error: errorMessage });
|
|
435
|
+
// Return a fallback plan on error
|
|
436
|
+
return createFallbackPlan(userRequest, context, complexity, errorMessage);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Creates a fallback plan when LLM generation fails.
|
|
441
|
+
*/
|
|
442
|
+
function createFallbackPlan(userRequest, context, complexity, errorReason) {
|
|
443
|
+
logger.warn('Creating fallback plan due to LLM error', { errorReason });
|
|
444
|
+
const id = uuidv4();
|
|
445
|
+
const now = new Date().toISOString();
|
|
446
|
+
return {
|
|
447
|
+
id,
|
|
448
|
+
createdAt: now,
|
|
449
|
+
version: 1,
|
|
450
|
+
title: userRequest.split(/[.!?\n]/)[0].trim().substring(0, 80) || 'Implementation Plan',
|
|
451
|
+
problemStatement: `${userRequest}\n\n[Note: LLM plan generation failed: ${errorReason}. This is a basic fallback plan.]`,
|
|
452
|
+
requirements: [
|
|
453
|
+
{
|
|
454
|
+
id: `req-${uuidv4().slice(0, 8)}`,
|
|
455
|
+
description: userRequest,
|
|
456
|
+
priority: 1,
|
|
457
|
+
source: 'user',
|
|
458
|
+
},
|
|
459
|
+
],
|
|
460
|
+
edgeCases: [],
|
|
461
|
+
constraints: [`Project type: ${context.projectType || 'unknown'}`],
|
|
462
|
+
assumptions: ['Development environment is properly configured'],
|
|
463
|
+
impact: {
|
|
464
|
+
fileOperations: [],
|
|
465
|
+
dependenciesAffected: [],
|
|
466
|
+
breakingChanges: [],
|
|
467
|
+
},
|
|
468
|
+
tasks: [
|
|
469
|
+
{
|
|
470
|
+
id: `task-${uuidv4().slice(0, 8)}`,
|
|
471
|
+
order: 1,
|
|
472
|
+
description: 'Analyze requirements and existing codebase',
|
|
473
|
+
targetFiles: context.relevantFiles.slice(0, 5).map((f) => f.path),
|
|
474
|
+
targetElements: [],
|
|
475
|
+
changes: 'Review existing code patterns and plan implementation',
|
|
476
|
+
dependencies: [],
|
|
477
|
+
verificationCriteria: ['Requirements understood'],
|
|
478
|
+
complexity: 3,
|
|
479
|
+
requirementRefs: [],
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
id: `task-${uuidv4().slice(0, 8)}`,
|
|
483
|
+
order: 2,
|
|
484
|
+
description: 'Implement the requested functionality',
|
|
485
|
+
targetFiles: [],
|
|
486
|
+
targetElements: [],
|
|
487
|
+
changes: userRequest,
|
|
488
|
+
dependencies: [],
|
|
489
|
+
verificationCriteria: ['Functionality works as expected'],
|
|
490
|
+
complexity: complexity.factors.filesAffected > 5 ? 7 : 5,
|
|
491
|
+
requirementRefs: [],
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
id: `task-${uuidv4().slice(0, 8)}`,
|
|
495
|
+
order: 3,
|
|
496
|
+
description: 'Test and verify implementation',
|
|
497
|
+
targetFiles: [],
|
|
498
|
+
targetElements: [],
|
|
499
|
+
changes: 'Write tests and verify functionality',
|
|
500
|
+
dependencies: [],
|
|
501
|
+
verificationCriteria: ['All tests pass'],
|
|
502
|
+
complexity: 3,
|
|
503
|
+
requirementRefs: [],
|
|
504
|
+
},
|
|
505
|
+
],
|
|
506
|
+
risks: [
|
|
507
|
+
{
|
|
508
|
+
description: 'LLM plan generation failed - using basic fallback plan',
|
|
509
|
+
severity: 'medium',
|
|
510
|
+
mitigation: 'Proceed carefully and verify each step manually',
|
|
511
|
+
rollback: 'Use git to revert changes if needed',
|
|
512
|
+
},
|
|
513
|
+
],
|
|
514
|
+
testing: {
|
|
515
|
+
unitTests: ['Test new functionality'],
|
|
516
|
+
integrationTests: [],
|
|
517
|
+
testFiles: [],
|
|
518
|
+
},
|
|
519
|
+
rollbackStrategy: 'Use git to revert all changes',
|
|
520
|
+
totalComplexity: complexity.factors.riskLevel,
|
|
521
|
+
summary: `Fallback plan for: ${userRequest.substring(0, 100)}...`,
|
|
522
|
+
};
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Builds the user prompt for plan adoption.
|
|
526
|
+
* Uses the user's structured input as the plan source.
|
|
527
|
+
*/
|
|
528
|
+
function buildAdoptionUserPrompt(userProvidedPlan, context, adoptedPlanSummary) {
|
|
529
|
+
const parts = [];
|
|
530
|
+
// User's Plan (the source of truth)
|
|
531
|
+
parts.push('## User-Provided Plan');
|
|
532
|
+
parts.push('The following is the user\'s structured plan. PRESERVE this structure:');
|
|
533
|
+
parts.push('');
|
|
534
|
+
parts.push(userProvidedPlan);
|
|
535
|
+
parts.push('');
|
|
536
|
+
if (adoptedPlanSummary) {
|
|
537
|
+
parts.push('## Detected Structure');
|
|
538
|
+
parts.push(adoptedPlanSummary);
|
|
539
|
+
parts.push('');
|
|
540
|
+
}
|
|
541
|
+
// Project Context (for enrichment)
|
|
542
|
+
parts.push('## Project Context (use to enrich the plan)');
|
|
543
|
+
parts.push(`**Project Root:** ${context.projectRoot}`);
|
|
544
|
+
parts.push(`**Project Type:** ${context.projectType || 'unknown'}`);
|
|
545
|
+
parts.push(`**Languages:** ${context.languages.join(', ') || 'unknown'}`);
|
|
546
|
+
parts.push('');
|
|
547
|
+
// Directory Structure
|
|
548
|
+
if (context.directoryTree) {
|
|
549
|
+
parts.push('### Directory Structure');
|
|
550
|
+
parts.push('```');
|
|
551
|
+
parts.push(context.directoryTree.substring(0, 2000));
|
|
552
|
+
parts.push('```');
|
|
553
|
+
parts.push('');
|
|
554
|
+
}
|
|
555
|
+
// Relevant Files
|
|
556
|
+
if (context.relevantFiles.length > 0) {
|
|
557
|
+
parts.push('### Relevant Files (use to populate targetFiles)');
|
|
558
|
+
for (const file of context.relevantFiles.slice(0, 15)) {
|
|
559
|
+
parts.push(`- \`${file.path}\` (${file.reason})`);
|
|
560
|
+
}
|
|
561
|
+
parts.push('');
|
|
562
|
+
}
|
|
563
|
+
// Affected Areas
|
|
564
|
+
if (context.affectedAreas.length > 0) {
|
|
565
|
+
parts.push('### Affected Areas');
|
|
566
|
+
parts.push(context.affectedAreas.join(', '));
|
|
567
|
+
parts.push('');
|
|
568
|
+
}
|
|
569
|
+
// Git Context
|
|
570
|
+
if (context.gitContext) {
|
|
571
|
+
parts.push('## Git Context');
|
|
572
|
+
parts.push(`- **Current Branch:** ${context.gitContext.currentBranch}`);
|
|
573
|
+
parts.push(`- **Working Directory Clean:** ${context.gitContext.isClean}`);
|
|
574
|
+
parts.push('');
|
|
575
|
+
}
|
|
576
|
+
// Task Instructions
|
|
577
|
+
parts.push('## Your Task');
|
|
578
|
+
parts.push('Convert the user\'s plan above into valid JSON matching this schema:');
|
|
579
|
+
parts.push('```json');
|
|
580
|
+
parts.push(IMPLEMENTATION_PLAN_SCHEMA);
|
|
581
|
+
parts.push('```');
|
|
582
|
+
parts.push('');
|
|
583
|
+
parts.push('REMEMBER:');
|
|
584
|
+
parts.push('- PRESERVE the user\'s task descriptions and order');
|
|
585
|
+
parts.push('- ADD technical details (IDs, file paths, dependencies, complexity scores)');
|
|
586
|
+
parts.push('- DO NOT add, remove, or restructure tasks');
|
|
587
|
+
parts.push('- Use project context to populate targetFiles accurately');
|
|
588
|
+
parts.push('');
|
|
589
|
+
parts.push('Respond with ONLY the JSON object, no other text.');
|
|
590
|
+
return parts.join('\n');
|
|
591
|
+
}
|
|
592
|
+
/**
|
|
593
|
+
* Adopts a user-provided plan by validating and enriching it with technical details.
|
|
594
|
+
* Uses PLAN_ADOPT mode - preserves user's task structure, adds IDs/files/dependencies.
|
|
595
|
+
*
|
|
596
|
+
* @param userProvidedPlan - The user's structured plan input
|
|
597
|
+
* @param context - Gathered project context
|
|
598
|
+
* @param adoptedPlanSummary - Optional summary from classification of what was detected
|
|
599
|
+
* @param toolCallId - Optional tool call ID for status updates
|
|
600
|
+
* @returns An enriched implementation plan preserving user's structure
|
|
601
|
+
*/
|
|
602
|
+
export async function adoptPlanWithLLM(userProvidedPlan, context, adoptedPlanSummary, toolCallId) {
|
|
603
|
+
logger.info('Adopting user-provided plan with LLM enrichment', {
|
|
604
|
+
projectType: context.projectType,
|
|
605
|
+
planLength: userProvidedPlan.length,
|
|
606
|
+
relevantFiles: context.relevantFiles.length,
|
|
607
|
+
});
|
|
608
|
+
const startTime = Date.now();
|
|
609
|
+
try {
|
|
610
|
+
// Get the Anthropic client
|
|
611
|
+
emitStatus(toolCallId, 'Initializing plan adoption...');
|
|
612
|
+
const client = await getAnthropicClient();
|
|
613
|
+
if (!client.isInitialized()) {
|
|
614
|
+
await client.initialize();
|
|
615
|
+
}
|
|
616
|
+
// Build prompts - use adoption-specific prompt
|
|
617
|
+
emitStatus(toolCallId, 'Validating user plan structure...');
|
|
618
|
+
const systemPrompt = PLAN_ADOPTION_SYSTEM_PROMPT;
|
|
619
|
+
const userPrompt = buildAdoptionUserPrompt(userProvidedPlan, context, adoptedPlanSummary);
|
|
620
|
+
// Stream the response with progress tracking
|
|
621
|
+
emitStatus(toolCallId, 'Enriching plan with technical details...');
|
|
622
|
+
const progressTracker = new PlanProgressTracker();
|
|
623
|
+
let fullContent = '';
|
|
624
|
+
// Use streaming to track progress
|
|
625
|
+
for await (const response of client.streamMessage([{ role: 'user', content: userPrompt }], {
|
|
626
|
+
system: systemPrompt,
|
|
627
|
+
maxTokens: 8192,
|
|
628
|
+
temperature: 0.3, // Lower temperature for adoption - preserve structure
|
|
629
|
+
})) {
|
|
630
|
+
if (response.type === 'text' && response.content) {
|
|
631
|
+
fullContent += response.content;
|
|
632
|
+
// Update progress based on streamed content
|
|
633
|
+
const progressMessage = progressTracker.update(response.content);
|
|
634
|
+
if (progressMessage) {
|
|
635
|
+
emitStatus(toolCallId, progressMessage);
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
else if (response.type === 'error') {
|
|
639
|
+
throw new Error(response.error || 'Unknown streaming error');
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
logger.debug('LLM plan adoption response received', {
|
|
643
|
+
contentLength: fullContent.length,
|
|
644
|
+
summary: progressTracker.getSummary(),
|
|
645
|
+
});
|
|
646
|
+
// Parse the response
|
|
647
|
+
emitStatus(toolCallId, 'Parsing adopted plan...');
|
|
648
|
+
const parsedPlan = parsePlanResponse(fullContent);
|
|
649
|
+
// Validate and fill in missing fields
|
|
650
|
+
emitStatus(toolCallId, 'Validating plan structure...');
|
|
651
|
+
const plan = validateAndFillPlan(parsedPlan, userProvidedPlan);
|
|
652
|
+
const duration = Date.now() - startTime;
|
|
653
|
+
logger.info('Plan adopted successfully', {
|
|
654
|
+
planId: plan.id,
|
|
655
|
+
taskCount: plan.tasks.length,
|
|
656
|
+
totalComplexity: plan.totalComplexity,
|
|
657
|
+
duration: `${duration}ms`,
|
|
658
|
+
});
|
|
659
|
+
return plan;
|
|
660
|
+
}
|
|
661
|
+
catch (error) {
|
|
662
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
663
|
+
logger.error('Failed to adopt plan with LLM', { error: errorMessage });
|
|
664
|
+
// Return a fallback plan based on basic parsing of user input
|
|
665
|
+
return createAdoptionFallbackPlan(userProvidedPlan, context, errorMessage);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Creates a fallback plan when LLM adoption fails.
|
|
670
|
+
* Attempts basic parsing of user's structured input.
|
|
671
|
+
*/
|
|
672
|
+
function createAdoptionFallbackPlan(userProvidedPlan, context, errorReason) {
|
|
673
|
+
logger.warn('Creating adoption fallback plan due to LLM error', { errorReason });
|
|
674
|
+
const id = uuidv4();
|
|
675
|
+
const now = new Date().toISOString();
|
|
676
|
+
// Basic extraction of numbered items from user input
|
|
677
|
+
const lines = userProvidedPlan.split('\n');
|
|
678
|
+
const tasks = [];
|
|
679
|
+
let taskOrder = 0;
|
|
680
|
+
for (const line of lines) {
|
|
681
|
+
const trimmed = line.trim();
|
|
682
|
+
// Match numbered items like "1.", "2.", "1)", "2)", "- ", "* "
|
|
683
|
+
const match = trimmed.match(/^(?:(\d+)[.)]|\s*[-*])\s*(.+)/);
|
|
684
|
+
if (match && match[2]) {
|
|
685
|
+
taskOrder++;
|
|
686
|
+
tasks.push({
|
|
687
|
+
id: `task-${uuidv4().slice(0, 8)}`,
|
|
688
|
+
order: taskOrder,
|
|
689
|
+
description: match[2].trim(),
|
|
690
|
+
targetFiles: [],
|
|
691
|
+
targetElements: [],
|
|
692
|
+
changes: match[2].trim(),
|
|
693
|
+
dependencies: taskOrder > 1 ? [`task-${tasks[tasks.length - 1]?.id || ''}`] : [],
|
|
694
|
+
verificationCriteria: ['Task completed as described'],
|
|
695
|
+
complexity: 5,
|
|
696
|
+
requirementRefs: [],
|
|
697
|
+
});
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
// If no tasks extracted, create a single task from the whole input
|
|
701
|
+
if (tasks.length === 0) {
|
|
702
|
+
tasks.push({
|
|
703
|
+
id: `task-${uuidv4().slice(0, 8)}`,
|
|
704
|
+
order: 1,
|
|
705
|
+
description: userProvidedPlan.substring(0, 200),
|
|
706
|
+
targetFiles: context.relevantFiles.slice(0, 3).map((f) => f.path),
|
|
707
|
+
targetElements: [],
|
|
708
|
+
changes: userProvidedPlan,
|
|
709
|
+
dependencies: [],
|
|
710
|
+
verificationCriteria: ['Implementation matches user specification'],
|
|
711
|
+
complexity: 5,
|
|
712
|
+
requirementRefs: [],
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
return {
|
|
716
|
+
id,
|
|
717
|
+
createdAt: now,
|
|
718
|
+
version: 1,
|
|
719
|
+
title: `Adopted Plan (${tasks.length} tasks)`,
|
|
720
|
+
problemStatement: `${userProvidedPlan.substring(0, 500)}\n\n[Note: LLM adoption failed: ${errorReason}. Tasks extracted via basic parsing.]`,
|
|
721
|
+
requirements: [
|
|
722
|
+
{
|
|
723
|
+
id: `req-${uuidv4().slice(0, 8)}`,
|
|
724
|
+
description: 'Implement user-provided plan',
|
|
725
|
+
priority: 1,
|
|
726
|
+
source: 'user',
|
|
727
|
+
},
|
|
728
|
+
],
|
|
729
|
+
edgeCases: [],
|
|
730
|
+
constraints: [`Project type: ${context.projectType || 'unknown'}`],
|
|
731
|
+
assumptions: ['User-provided plan is complete and accurate'],
|
|
732
|
+
impact: {
|
|
733
|
+
fileOperations: [],
|
|
734
|
+
dependenciesAffected: [],
|
|
735
|
+
breakingChanges: [],
|
|
736
|
+
},
|
|
737
|
+
tasks,
|
|
738
|
+
risks: [
|
|
739
|
+
{
|
|
740
|
+
description: 'LLM plan adoption failed - tasks extracted via basic parsing',
|
|
741
|
+
severity: 'medium',
|
|
742
|
+
mitigation: 'Review extracted tasks for accuracy before proceeding',
|
|
743
|
+
rollback: 'Use git to revert changes if needed',
|
|
744
|
+
},
|
|
745
|
+
],
|
|
746
|
+
testing: {
|
|
747
|
+
unitTests: [],
|
|
748
|
+
integrationTests: [],
|
|
749
|
+
testFiles: [],
|
|
750
|
+
},
|
|
751
|
+
rollbackStrategy: 'Use git to revert all changes',
|
|
752
|
+
totalComplexity: Math.min(tasks.length + 2, 10),
|
|
753
|
+
summary: `Adopted plan with ${tasks.length} tasks extracted from user input`,
|
|
754
|
+
};
|
|
755
|
+
}
|
|
756
|
+
/**
|
|
757
|
+
* Modifies an existing plan using the LLM.
|
|
758
|
+
* Preserves completed tasks and only updates affected portions.
|
|
759
|
+
*
|
|
760
|
+
* @param existingPlan - The current plan to modify
|
|
761
|
+
* @param modificationRequest - Description of what changes to make
|
|
762
|
+
* @param context - Gathered project context
|
|
763
|
+
* @param completedTaskIds - IDs of tasks already completed
|
|
764
|
+
* @param preserveCompleted - Whether to preserve completed tasks (default: true)
|
|
765
|
+
* @param toolCallId - Optional tool call ID for status updates
|
|
766
|
+
* @returns The updated implementation plan
|
|
767
|
+
*/
|
|
768
|
+
export async function modifyPlanWithLLM(existingPlan, modificationRequest, context, completedTaskIds, preserveCompleted = true, toolCallId, skipContextInjection = false) {
|
|
769
|
+
logger.info('Modifying existing plan with LLM', {
|
|
770
|
+
planId: existingPlan.id,
|
|
771
|
+
currentVersion: existingPlan.version,
|
|
772
|
+
completedTasks: completedTaskIds.length,
|
|
773
|
+
modificationRequest: modificationRequest.substring(0, 100),
|
|
774
|
+
skipContextInjection,
|
|
775
|
+
});
|
|
776
|
+
const startTime = Date.now();
|
|
777
|
+
try {
|
|
778
|
+
// Get the Anthropic client
|
|
779
|
+
emitStatus(toolCallId, 'Analyzing modification request...');
|
|
780
|
+
const client = await getAnthropicClient();
|
|
781
|
+
if (!client.isInitialized()) {
|
|
782
|
+
await client.initialize();
|
|
783
|
+
}
|
|
784
|
+
// Build prompts — use lightweight version when plan is already in conversation
|
|
785
|
+
const systemPrompt = PLAN_MODIFICATION_SYSTEM_PROMPT;
|
|
786
|
+
let userPrompt;
|
|
787
|
+
if (skipContextInjection) {
|
|
788
|
+
logger.info('Using lightweight plan modification prompt (skipping context re-injection)');
|
|
789
|
+
userPrompt = buildLightweightPlanModificationPrompt(existingPlan, modificationRequest, completedTaskIds, preserveCompleted);
|
|
790
|
+
}
|
|
791
|
+
else {
|
|
792
|
+
userPrompt = buildPlanModificationUserPrompt(existingPlan, modificationRequest, {
|
|
793
|
+
projectRoot: context.projectRoot,
|
|
794
|
+
projectType: context.projectType,
|
|
795
|
+
languages: context.languages,
|
|
796
|
+
directoryTree: context.directoryTree,
|
|
797
|
+
relevantFiles: context.relevantFiles.map((f) => ({ path: f.path, reason: f.reason })),
|
|
798
|
+
affectedAreas: context.affectedAreas,
|
|
799
|
+
gitContext: context.gitContext,
|
|
800
|
+
}, completedTaskIds, preserveCompleted);
|
|
801
|
+
}
|
|
802
|
+
// Stream the response with progress tracking
|
|
803
|
+
emitStatus(toolCallId, 'Generating updated plan...');
|
|
804
|
+
const progressTracker = new PlanProgressTracker();
|
|
805
|
+
let fullContent = '';
|
|
806
|
+
// Use streaming to track progress
|
|
807
|
+
for await (const response of client.streamMessage([{ role: 'user', content: userPrompt }], {
|
|
808
|
+
system: systemPrompt,
|
|
809
|
+
maxTokens: 8192,
|
|
810
|
+
temperature: 0.4, // Balanced temperature for modification
|
|
811
|
+
})) {
|
|
812
|
+
if (response.type === 'text' && response.content) {
|
|
813
|
+
fullContent += response.content;
|
|
814
|
+
// Update progress based on streamed content
|
|
815
|
+
const progressMessage = progressTracker.update(response.content);
|
|
816
|
+
if (progressMessage) {
|
|
817
|
+
emitStatus(toolCallId, progressMessage);
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
else if (response.type === 'error') {
|
|
821
|
+
throw new Error(response.error || 'Unknown streaming error');
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
logger.debug('LLM plan modification response received', {
|
|
825
|
+
contentLength: fullContent.length,
|
|
826
|
+
summary: progressTracker.getSummary(),
|
|
827
|
+
});
|
|
828
|
+
// Parse the response
|
|
829
|
+
emitStatus(toolCallId, 'Parsing modified plan...');
|
|
830
|
+
const parsedPlan = parsePlanResponse(fullContent);
|
|
831
|
+
// Validate and fill in missing fields
|
|
832
|
+
emitStatus(toolCallId, 'Validating plan structure...');
|
|
833
|
+
const updatedPlan = validateAndFillPlan(parsedPlan, modificationRequest);
|
|
834
|
+
// Preserve original ID and increment version
|
|
835
|
+
updatedPlan.id = existingPlan.id;
|
|
836
|
+
updatedPlan.version = existingPlan.version + 1;
|
|
837
|
+
const duration = Date.now() - startTime;
|
|
838
|
+
logger.info('Plan modified successfully', {
|
|
839
|
+
planId: updatedPlan.id,
|
|
840
|
+
previousVersion: existingPlan.version,
|
|
841
|
+
newVersion: updatedPlan.version,
|
|
842
|
+
taskCount: updatedPlan.tasks.length,
|
|
843
|
+
duration: `${duration}ms`,
|
|
844
|
+
});
|
|
845
|
+
emitStatus(toolCallId, `Plan updated to version ${updatedPlan.version}`);
|
|
846
|
+
return updatedPlan;
|
|
847
|
+
}
|
|
848
|
+
catch (error) {
|
|
849
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
850
|
+
logger.error('Failed to modify plan with LLM', { error: errorMessage });
|
|
851
|
+
// Return original plan with error note in assumptions
|
|
852
|
+
const fallbackPlan = {
|
|
853
|
+
...existingPlan,
|
|
854
|
+
version: existingPlan.version + 1,
|
|
855
|
+
assumptions: [
|
|
856
|
+
...(existingPlan.assumptions || []),
|
|
857
|
+
`[MODIFICATION FAILED] ${errorMessage} - Original plan preserved`,
|
|
858
|
+
],
|
|
859
|
+
};
|
|
860
|
+
return fallbackPlan;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
//# sourceMappingURL=llm-plan-generator.js.map
|