@compass-ai/nova 1.0.74 → 1.0.76
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/cli.js +557 -555
- package/dist/index.js +10 -8
- package/package.json +1 -1
- package/dist/acp/agent.d.ts +0 -318
- package/dist/acp/agent.d.ts.map +0 -1
- package/dist/acp/agent.js +0 -795
- package/dist/acp/agent.js.map +0 -1
- package/dist/acp/backpressure-writer.d.ts +0 -49
- package/dist/acp/backpressure-writer.d.ts.map +0 -1
- package/dist/acp/backpressure-writer.js +0 -153
- package/dist/acp/backpressure-writer.js.map +0 -1
- package/dist/acp/event-adapter.d.ts +0 -242
- package/dist/acp/event-adapter.d.ts.map +0 -1
- package/dist/acp/event-adapter.js +0 -456
- package/dist/acp/event-adapter.js.map +0 -1
- package/dist/acp/index.d.ts +0 -30
- package/dist/acp/index.d.ts.map +0 -1
- package/dist/acp/index.js +0 -36
- package/dist/acp/index.js.map +0 -1
- package/dist/acp/modes.d.ts +0 -56
- package/dist/acp/modes.d.ts.map +0 -1
- package/dist/acp/modes.js +0 -135
- package/dist/acp/modes.js.map +0 -1
- package/dist/acp/session-manager.d.ts +0 -170
- package/dist/acp/session-manager.d.ts.map +0 -1
- package/dist/acp/session-manager.js +0 -381
- package/dist/acp/session-manager.js.map +0 -1
- package/dist/acp/text-coalescer.d.ts +0 -45
- package/dist/acp/text-coalescer.d.ts.map +0 -1
- package/dist/acp/text-coalescer.js +0 -110
- package/dist/acp/text-coalescer.js.map +0 -1
- package/dist/acp/tool-bridge.d.ts +0 -156
- package/dist/acp/tool-bridge.d.ts.map +0 -1
- package/dist/acp/tool-bridge.js +0 -381
- package/dist/acp/tool-bridge.js.map +0 -1
- package/dist/acp/types.d.ts +0 -314
- package/dist/acp/types.d.ts.map +0 -1
- package/dist/acp/types.js +0 -8
- package/dist/acp/types.js.map +0 -1
- package/dist/cli.d.ts +0 -9
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/acp.d.ts +0 -26
- package/dist/commands/acp.d.ts.map +0 -1
- package/dist/commands/acp.js +0 -492
- package/dist/commands/acp.js.map +0 -1
- package/dist/commands/cache.d.ts +0 -33
- package/dist/commands/cache.d.ts.map +0 -1
- package/dist/commands/cache.js +0 -537
- package/dist/commands/cache.js.map +0 -1
- package/dist/commands/config.d.ts +0 -10
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -367
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/consent.d.ts +0 -21
- package/dist/commands/consent.d.ts.map +0 -1
- package/dist/commands/consent.js +0 -334
- package/dist/commands/consent.js.map +0 -1
- package/dist/commands/data.d.ts +0 -24
- package/dist/commands/data.d.ts.map +0 -1
- package/dist/commands/data.js +0 -586
- package/dist/commands/data.js.map +0 -1
- package/dist/commands/index.d.ts +0 -145
- package/dist/commands/index.d.ts.map +0 -1
- package/dist/commands/index.js +0 -210
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/init.d.ts +0 -106
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -349
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -13
- package/dist/commands/logs.d.ts.map +0 -1
- package/dist/commands/logs.js +0 -359
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -20
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js +0 -687
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/reset.d.ts +0 -20
- package/dist/commands/reset.d.ts.map +0 -1
- package/dist/commands/reset.js +0 -372
- package/dist/commands/reset.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -74
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -863
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/slash/agents.d.ts +0 -40
- package/dist/commands/slash/agents.d.ts.map +0 -1
- package/dist/commands/slash/agents.js +0 -519
- package/dist/commands/slash/agents.js.map +0 -1
- package/dist/commands/slash/approve.d.ts +0 -46
- package/dist/commands/slash/approve.d.ts.map +0 -1
- package/dist/commands/slash/approve.js +0 -239
- package/dist/commands/slash/approve.js.map +0 -1
- package/dist/commands/slash/attach.d.ts +0 -70
- package/dist/commands/slash/attach.d.ts.map +0 -1
- package/dist/commands/slash/attach.js +0 -333
- package/dist/commands/slash/attach.js.map +0 -1
- package/dist/commands/slash/clear.d.ts +0 -47
- package/dist/commands/slash/clear.d.ts.map +0 -1
- package/dist/commands/slash/clear.js +0 -261
- package/dist/commands/slash/clear.js.map +0 -1
- package/dist/commands/slash/commit.d.ts +0 -40
- package/dist/commands/slash/commit.d.ts.map +0 -1
- package/dist/commands/slash/commit.js +0 -337
- package/dist/commands/slash/commit.js.map +0 -1
- package/dist/commands/slash/compact.d.ts +0 -48
- package/dist/commands/slash/compact.d.ts.map +0 -1
- package/dist/commands/slash/compact.js +0 -288
- package/dist/commands/slash/compact.js.map +0 -1
- package/dist/commands/slash/config.d.ts +0 -20
- package/dist/commands/slash/config.d.ts.map +0 -1
- package/dist/commands/slash/config.js +0 -136
- package/dist/commands/slash/config.js.map +0 -1
- package/dist/commands/slash/context.d.ts +0 -49
- package/dist/commands/slash/context.d.ts.map +0 -1
- package/dist/commands/slash/context.js +0 -430
- package/dist/commands/slash/context.js.map +0 -1
- package/dist/commands/slash/cost.d.ts +0 -34
- package/dist/commands/slash/cost.d.ts.map +0 -1
- package/dist/commands/slash/cost.js +0 -312
- package/dist/commands/slash/cost.js.map +0 -1
- package/dist/commands/slash/custom.d.ts +0 -41
- package/dist/commands/slash/custom.d.ts.map +0 -1
- package/dist/commands/slash/custom.js +0 -126
- package/dist/commands/slash/custom.js.map +0 -1
- package/dist/commands/slash/exit.d.ts +0 -25
- package/dist/commands/slash/exit.d.ts.map +0 -1
- package/dist/commands/slash/exit.js +0 -186
- package/dist/commands/slash/exit.js.map +0 -1
- package/dist/commands/slash/export.d.ts +0 -27
- package/dist/commands/slash/export.d.ts.map +0 -1
- package/dist/commands/slash/export.js +0 -318
- package/dist/commands/slash/export.js.map +0 -1
- package/dist/commands/slash/files.d.ts +0 -47
- package/dist/commands/slash/files.d.ts.map +0 -1
- package/dist/commands/slash/files.js +0 -521
- package/dist/commands/slash/files.js.map +0 -1
- package/dist/commands/slash/help.d.ts +0 -50
- package/dist/commands/slash/help.d.ts.map +0 -1
- package/dist/commands/slash/help.js +0 -282
- package/dist/commands/slash/help.js.map +0 -1
- package/dist/commands/slash/index-cmd.d.ts +0 -41
- package/dist/commands/slash/index-cmd.d.ts.map +0 -1
- package/dist/commands/slash/index-cmd.js +0 -349
- package/dist/commands/slash/index-cmd.js.map +0 -1
- package/dist/commands/slash/index.d.ts +0 -97
- package/dist/commands/slash/index.d.ts.map +0 -1
- package/dist/commands/slash/index.js +0 -251
- package/dist/commands/slash/index.js.map +0 -1
- package/dist/commands/slash/login.d.ts +0 -23
- package/dist/commands/slash/login.d.ts.map +0 -1
- package/dist/commands/slash/login.js +0 -175
- package/dist/commands/slash/login.js.map +0 -1
- package/dist/commands/slash/logout.d.ts +0 -23
- package/dist/commands/slash/logout.d.ts.map +0 -1
- package/dist/commands/slash/logout.js +0 -153
- package/dist/commands/slash/logout.js.map +0 -1
- package/dist/commands/slash/logs.d.ts +0 -29
- package/dist/commands/slash/logs.d.ts.map +0 -1
- package/dist/commands/slash/logs.js +0 -423
- package/dist/commands/slash/logs.js.map +0 -1
- package/dist/commands/slash/mcp.d.ts +0 -29
- package/dist/commands/slash/mcp.d.ts.map +0 -1
- package/dist/commands/slash/mcp.js +0 -1026
- package/dist/commands/slash/mcp.js.map +0 -1
- package/dist/commands/slash/model.d.ts +0 -60
- package/dist/commands/slash/model.d.ts.map +0 -1
- package/dist/commands/slash/model.js +0 -466
- package/dist/commands/slash/model.js.map +0 -1
- package/dist/commands/slash/personality.d.ts +0 -40
- package/dist/commands/slash/personality.d.ts.map +0 -1
- package/dist/commands/slash/personality.js +0 -272
- package/dist/commands/slash/personality.js.map +0 -1
- package/dist/commands/slash/purge.d.ts +0 -42
- package/dist/commands/slash/purge.d.ts.map +0 -1
- package/dist/commands/slash/purge.js +0 -233
- package/dist/commands/slash/purge.js.map +0 -1
- package/dist/commands/slash/reset.d.ts +0 -44
- package/dist/commands/slash/reset.d.ts.map +0 -1
- package/dist/commands/slash/reset.js +0 -326
- package/dist/commands/slash/reset.js.map +0 -1
- package/dist/commands/slash/skills.d.ts +0 -40
- package/dist/commands/slash/skills.d.ts.map +0 -1
- package/dist/commands/slash/skills.js +0 -207
- package/dist/commands/slash/skills.js.map +0 -1
- package/dist/commands/slash/tokens.d.ts +0 -34
- package/dist/commands/slash/tokens.d.ts.map +0 -1
- package/dist/commands/slash/tokens.js +0 -205
- package/dist/commands/slash/tokens.js.map +0 -1
- package/dist/commands/slash/unleash.d.ts +0 -50
- package/dist/commands/slash/unleash.d.ts.map +0 -1
- package/dist/commands/slash/unleash.js +0 -262
- package/dist/commands/slash/unleash.js.map +0 -1
- package/dist/commands/slash/update.d.ts +0 -34
- package/dist/commands/slash/update.d.ts.map +0 -1
- package/dist/commands/slash/update.js +0 -364
- package/dist/commands/slash/update.js.map +0 -1
- package/dist/commands/slash/wrap.d.ts +0 -18
- package/dist/commands/slash/wrap.d.ts.map +0 -1
- package/dist/commands/slash/wrap.js +0 -21
- package/dist/commands/slash/wrap.js.map +0 -1
- package/dist/commands/tokens.d.ts +0 -26
- package/dist/commands/tokens.d.ts.map +0 -1
- package/dist/commands/tokens.js +0 -245
- package/dist/commands/tokens.js.map +0 -1
- package/dist/constants/builtin-agents.d.ts +0 -27
- package/dist/constants/builtin-agents.d.ts.map +0 -1
- package/dist/constants/builtin-agents.js +0 -710
- package/dist/constants/builtin-agents.js.map +0 -1
- package/dist/constants/builtin-skills.d.ts +0 -32
- package/dist/constants/builtin-skills.d.ts.map +0 -1
- package/dist/constants/builtin-skills.js +0 -389
- package/dist/constants/builtin-skills.js.map +0 -1
- package/dist/constants/defaults.d.ts +0 -448
- package/dist/constants/defaults.d.ts.map +0 -1
- package/dist/constants/defaults.js +0 -829
- package/dist/constants/defaults.js.map +0 -1
- package/dist/constants/index.d.ts +0 -27
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -85
- package/dist/constants/index.js.map +0 -1
- package/dist/constants/install-hints.d.ts +0 -7
- package/dist/constants/install-hints.d.ts.map +0 -1
- package/dist/constants/install-hints.js +0 -123
- package/dist/constants/install-hints.js.map +0 -1
- package/dist/constants/models.d.ts +0 -255
- package/dist/constants/models.d.ts.map +0 -1
- package/dist/constants/models.js +0 -596
- package/dist/constants/models.js.map +0 -1
- package/dist/constants/schedule.d.ts +0 -43
- package/dist/constants/schedule.d.ts.map +0 -1
- package/dist/constants/schedule.js +0 -110
- package/dist/constants/schedule.js.map +0 -1
- package/dist/constants/system-utilities.d.ts +0 -57
- package/dist/constants/system-utilities.d.ts.map +0 -1
- package/dist/constants/system-utilities.js +0 -421
- package/dist/constants/system-utilities.js.map +0 -1
- package/dist/constants/token-limits.d.ts +0 -102
- package/dist/constants/token-limits.d.ts.map +0 -1
- package/dist/constants/token-limits.js +0 -286
- package/dist/constants/token-limits.js.map +0 -1
- package/dist/core/autocomplete.d.ts +0 -132
- package/dist/core/autocomplete.d.ts.map +0 -1
- package/dist/core/autocomplete.js +0 -653
- package/dist/core/autocomplete.js.map +0 -1
- package/dist/core/command-parser.d.ts +0 -301
- package/dist/core/command-parser.d.ts.map +0 -1
- package/dist/core/command-parser.js +0 -526
- package/dist/core/command-parser.js.map +0 -1
- package/dist/core/context-builder.d.ts +0 -264
- package/dist/core/context-builder.d.ts.map +0 -1
- package/dist/core/context-builder.js +0 -1018
- package/dist/core/context-builder.js.map +0 -1
- package/dist/core/event-emitter.d.ts +0 -411
- package/dist/core/event-emitter.d.ts.map +0 -1
- package/dist/core/event-emitter.js +0 -138
- package/dist/core/event-emitter.js.map +0 -1
- package/dist/core/history-manager.d.ts +0 -62
- package/dist/core/history-manager.d.ts.map +0 -1
- package/dist/core/history-manager.js +0 -151
- package/dist/core/history-manager.js.map +0 -1
- package/dist/core/slash-command-handler.d.ts +0 -352
- package/dist/core/slash-command-handler.d.ts.map +0 -1
- package/dist/core/slash-command-handler.js +0 -563
- package/dist/core/slash-command-handler.js.map +0 -1
- package/dist/core/task-processor.d.ts +0 -179
- package/dist/core/task-processor.d.ts.map +0 -1
- package/dist/core/task-processor.js +0 -519
- package/dist/core/task-processor.js.map +0 -1
- package/dist/index.d.ts +0 -90
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/prompts/agent-prompt-generator.d.ts +0 -26
- package/dist/prompts/agent-prompt-generator.d.ts.map +0 -1
- package/dist/prompts/agent-prompt-generator.js +0 -244
- package/dist/prompts/agent-prompt-generator.js.map +0 -1
- package/dist/prompts/commit-message.d.ts +0 -35
- package/dist/prompts/commit-message.d.ts.map +0 -1
- package/dist/prompts/commit-message.js +0 -187
- package/dist/prompts/commit-message.js.map +0 -1
- package/dist/prompts/conversation.d.ts +0 -51
- package/dist/prompts/conversation.d.ts.map +0 -1
- package/dist/prompts/conversation.js +0 -115
- package/dist/prompts/conversation.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -39
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -74
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/memory.d.ts +0 -6
- package/dist/prompts/memory.d.ts.map +0 -1
- package/dist/prompts/memory.js +0 -29
- package/dist/prompts/memory.js.map +0 -1
- package/dist/prompts/personality.d.ts +0 -77
- package/dist/prompts/personality.d.ts.map +0 -1
- package/dist/prompts/personality.js +0 -393
- package/dist/prompts/personality.js.map +0 -1
- package/dist/prompts/plan-generator.d.ts +0 -144
- package/dist/prompts/plan-generator.d.ts.map +0 -1
- package/dist/prompts/plan-generator.js +0 -553
- package/dist/prompts/plan-generator.js.map +0 -1
- package/dist/prompts/system.d.ts +0 -95
- package/dist/prompts/system.d.ts.map +0 -1
- package/dist/prompts/system.js +0 -461
- package/dist/prompts/system.js.map +0 -1
- package/dist/prompts/task-processor.d.ts +0 -94
- package/dist/prompts/task-processor.d.ts.map +0 -1
- package/dist/prompts/task-processor.js +0 -554
- package/dist/prompts/task-processor.js.map +0 -1
- package/dist/prompts/unguarded.d.ts +0 -78
- package/dist/prompts/unguarded.d.ts.map +0 -1
- package/dist/prompts/unguarded.js +0 -418
- package/dist/prompts/unguarded.js.map +0 -1
- package/dist/prompts/utils.d.ts +0 -73
- package/dist/prompts/utils.d.ts.map +0 -1
- package/dist/prompts/utils.js +0 -114
- package/dist/prompts/utils.js.map +0 -1
- package/dist/prompts/workflow.d.ts +0 -241
- package/dist/prompts/workflow.d.ts.map +0 -1
- package/dist/prompts/workflow.js +0 -608
- package/dist/prompts/workflow.js.map +0 -1
- package/dist/services/action-logger.d.ts +0 -383
- package/dist/services/action-logger.d.ts.map +0 -1
- package/dist/services/action-logger.js +0 -544
- package/dist/services/action-logger.js.map +0 -1
- package/dist/services/agent-budget-allocator.d.ts +0 -111
- package/dist/services/agent-budget-allocator.d.ts.map +0 -1
- package/dist/services/agent-budget-allocator.js +0 -278
- package/dist/services/agent-budget-allocator.js.map +0 -1
- package/dist/services/agent-manager.d.ts +0 -181
- package/dist/services/agent-manager.d.ts.map +0 -1
- package/dist/services/agent-manager.js +0 -749
- package/dist/services/agent-manager.js.map +0 -1
- package/dist/services/agent-spawner.d.ts +0 -138
- package/dist/services/agent-spawner.d.ts.map +0 -1
- package/dist/services/agent-spawner.js +0 -748
- package/dist/services/agent-spawner.js.map +0 -1
- package/dist/services/agent-state-service.d.ts +0 -145
- package/dist/services/agent-state-service.d.ts.map +0 -1
- package/dist/services/agent-state-service.js +0 -247
- package/dist/services/agent-state-service.js.map +0 -1
- package/dist/services/anthropic-client.d.ts +0 -357
- package/dist/services/anthropic-client.d.ts.map +0 -1
- package/dist/services/anthropic-client.js +0 -1451
- package/dist/services/anthropic-client.js.map +0 -1
- package/dist/services/approval-manager.d.ts +0 -385
- package/dist/services/approval-manager.d.ts.map +0 -1
- package/dist/services/approval-manager.js +0 -1044
- package/dist/services/approval-manager.js.map +0 -1
- package/dist/services/audit-logger.d.ts +0 -245
- package/dist/services/audit-logger.d.ts.map +0 -1
- package/dist/services/audit-logger.js +0 -324
- package/dist/services/audit-logger.js.map +0 -1
- package/dist/services/backup-manager.d.ts +0 -136
- package/dist/services/backup-manager.d.ts.map +0 -1
- package/dist/services/backup-manager.js +0 -260
- package/dist/services/backup-manager.js.map +0 -1
- package/dist/services/cache-service.d.ts +0 -247
- package/dist/services/cache-service.d.ts.map +0 -1
- package/dist/services/cache-service.js +0 -558
- package/dist/services/cache-service.js.map +0 -1
- package/dist/services/chat-archival-service.d.ts +0 -108
- package/dist/services/chat-archival-service.d.ts.map +0 -1
- package/dist/services/chat-archival-service.js +0 -465
- package/dist/services/chat-archival-service.js.map +0 -1
- package/dist/services/codebase-indexer.d.ts +0 -272
- package/dist/services/codebase-indexer.d.ts.map +0 -1
- package/dist/services/codebase-indexer.js +0 -863
- package/dist/services/codebase-indexer.js.map +0 -1
- package/dist/services/compass-auth-service.d.ts +0 -204
- package/dist/services/compass-auth-service.d.ts.map +0 -1
- package/dist/services/compass-auth-service.js +0 -391
- package/dist/services/compass-auth-service.js.map +0 -1
- package/dist/services/complexity-classifier.d.ts +0 -208
- package/dist/services/complexity-classifier.d.ts.map +0 -1
- package/dist/services/complexity-classifier.js +0 -1410
- package/dist/services/complexity-classifier.js.map +0 -1
- package/dist/services/config-manager.d.ts +0 -278
- package/dist/services/config-manager.d.ts.map +0 -1
- package/dist/services/config-manager.js +0 -651
- package/dist/services/config-manager.js.map +0 -1
- package/dist/services/consent-manager.d.ts +0 -239
- package/dist/services/consent-manager.d.ts.map +0 -1
- package/dist/services/consent-manager.js +0 -516
- package/dist/services/consent-manager.js.map +0 -1
- package/dist/services/conversation-compactor.d.ts +0 -223
- package/dist/services/conversation-compactor.d.ts.map +0 -1
- package/dist/services/conversation-compactor.js +0 -750
- package/dist/services/conversation-compactor.js.map +0 -1
- package/dist/services/cost-tracker.d.ts +0 -167
- package/dist/services/cost-tracker.d.ts.map +0 -1
- package/dist/services/cost-tracker.js +0 -199
- package/dist/services/cost-tracker.js.map +0 -1
- package/dist/services/credential-store.d.ts +0 -273
- package/dist/services/credential-store.d.ts.map +0 -1
- package/dist/services/credential-store.js +0 -877
- package/dist/services/credential-store.js.map +0 -1
- package/dist/services/custom-command-service.d.ts +0 -112
- package/dist/services/custom-command-service.d.ts.map +0 -1
- package/dist/services/custom-command-service.js +0 -464
- package/dist/services/custom-command-service.js.map +0 -1
- package/dist/services/default-statusline-renderer.d.ts +0 -60
- package/dist/services/default-statusline-renderer.d.ts.map +0 -1
- package/dist/services/default-statusline-renderer.js +0 -110
- package/dist/services/default-statusline-renderer.js.map +0 -1
- package/dist/services/enhanced-context-gatherer.d.ts +0 -116
- package/dist/services/enhanced-context-gatherer.d.ts.map +0 -1
- package/dist/services/enhanced-context-gatherer.js +0 -605
- package/dist/services/enhanced-context-gatherer.js.map +0 -1
- package/dist/services/file-hash-tracker.d.ts +0 -95
- package/dist/services/file-hash-tracker.d.ts.map +0 -1
- package/dist/services/file-hash-tracker.js +0 -199
- package/dist/services/file-hash-tracker.js.map +0 -1
- package/dist/services/file-service.d.ts +0 -274
- package/dist/services/file-service.d.ts.map +0 -1
- package/dist/services/file-service.js +0 -876
- package/dist/services/file-service.js.map +0 -1
- package/dist/services/git-service.d.ts +0 -536
- package/dist/services/git-service.d.ts.map +0 -1
- package/dist/services/git-service.js +0 -1215
- package/dist/services/git-service.js.map +0 -1
- package/dist/services/hook-service.d.ts +0 -148
- package/dist/services/hook-service.d.ts.map +0 -1
- package/dist/services/hook-service.js +0 -705
- package/dist/services/hook-service.js.map +0 -1
- package/dist/services/ide-state-service.d.ts +0 -114
- package/dist/services/ide-state-service.d.ts.map +0 -1
- package/dist/services/ide-state-service.js +0 -204
- package/dist/services/ide-state-service.js.map +0 -1
- package/dist/services/interactive-clarifier.d.ts +0 -90
- package/dist/services/interactive-clarifier.d.ts.map +0 -1
- package/dist/services/interactive-clarifier.js +0 -446
- package/dist/services/interactive-clarifier.js.map +0 -1
- package/dist/services/iteration-scoper.d.ts +0 -225
- package/dist/services/iteration-scoper.d.ts.map +0 -1
- package/dist/services/iteration-scoper.js +0 -387
- package/dist/services/iteration-scoper.js.map +0 -1
- package/dist/services/llm-plan-generator.d.ts +0 -44
- package/dist/services/llm-plan-generator.d.ts.map +0 -1
- package/dist/services/llm-plan-generator.js +0 -863
- package/dist/services/llm-plan-generator.js.map +0 -1
- package/dist/services/llm-system-prompt-generator.d.ts +0 -85
- package/dist/services/llm-system-prompt-generator.d.ts.map +0 -1
- package/dist/services/llm-system-prompt-generator.js +0 -257
- package/dist/services/llm-system-prompt-generator.js.map +0 -1
- package/dist/services/log-interpreter.d.ts +0 -190
- package/dist/services/log-interpreter.d.ts.map +0 -1
- package/dist/services/log-interpreter.js +0 -520
- package/dist/services/log-interpreter.js.map +0 -1
- package/dist/services/mcp-config-manager.d.ts +0 -141
- package/dist/services/mcp-config-manager.d.ts.map +0 -1
- package/dist/services/mcp-config-manager.js +0 -678
- package/dist/services/mcp-config-manager.js.map +0 -1
- package/dist/services/mcp-oauth-service.d.ts +0 -170
- package/dist/services/mcp-oauth-service.d.ts.map +0 -1
- package/dist/services/mcp-oauth-service.js +0 -892
- package/dist/services/mcp-oauth-service.js.map +0 -1
- package/dist/services/mcp-plugin-support.d.ts +0 -81
- package/dist/services/mcp-plugin-support.d.ts.map +0 -1
- package/dist/services/mcp-plugin-support.js +0 -305
- package/dist/services/mcp-plugin-support.js.map +0 -1
- package/dist/services/mcp-server-manager.d.ts +0 -134
- package/dist/services/mcp-server-manager.d.ts.map +0 -1
- package/dist/services/mcp-server-manager.js +0 -613
- package/dist/services/mcp-server-manager.js.map +0 -1
- package/dist/services/mcp-tool-integration.d.ts +0 -119
- package/dist/services/mcp-tool-integration.d.ts.map +0 -1
- package/dist/services/mcp-tool-integration.js +0 -381
- package/dist/services/mcp-tool-integration.js.map +0 -1
- package/dist/services/mcp-transport.d.ts +0 -105
- package/dist/services/mcp-transport.d.ts.map +0 -1
- package/dist/services/mcp-transport.js +0 -1316
- package/dist/services/mcp-transport.js.map +0 -1
- package/dist/services/memory-service.d.ts +0 -55
- package/dist/services/memory-service.d.ts.map +0 -1
- package/dist/services/memory-service.js +0 -251
- package/dist/services/memory-service.js.map +0 -1
- package/dist/services/model-availability.d.ts +0 -64
- package/dist/services/model-availability.d.ts.map +0 -1
- package/dist/services/model-availability.js +0 -114
- package/dist/services/model-availability.js.map +0 -1
- package/dist/services/plan-generator.d.ts +0 -98
- package/dist/services/plan-generator.d.ts.map +0 -1
- package/dist/services/plan-generator.js +0 -658
- package/dist/services/plan-generator.js.map +0 -1
- package/dist/services/plan-mode-fallback.d.ts +0 -80
- package/dist/services/plan-mode-fallback.d.ts.map +0 -1
- package/dist/services/plan-mode-fallback.js +0 -307
- package/dist/services/plan-mode-fallback.js.map +0 -1
- package/dist/services/plan-mode-handler.d.ts +0 -42
- package/dist/services/plan-mode-handler.d.ts.map +0 -1
- package/dist/services/plan-mode-handler.js +0 -388
- package/dist/services/plan-mode-handler.js.map +0 -1
- package/dist/services/plan-persistence.d.ts +0 -203
- package/dist/services/plan-persistence.d.ts.map +0 -1
- package/dist/services/plan-persistence.js +0 -538
- package/dist/services/plan-persistence.js.map +0 -1
- package/dist/services/prompt-preprocessor.d.ts +0 -73
- package/dist/services/prompt-preprocessor.d.ts.map +0 -1
- package/dist/services/prompt-preprocessor.js +0 -146
- package/dist/services/prompt-preprocessor.js.map +0 -1
- package/dist/services/rating-service.d.ts +0 -84
- package/dist/services/rating-service.d.ts.map +0 -1
- package/dist/services/rating-service.js +0 -171
- package/dist/services/rating-service.js.map +0 -1
- package/dist/services/rating-state-manager.d.ts +0 -131
- package/dist/services/rating-state-manager.d.ts.map +0 -1
- package/dist/services/rating-state-manager.js +0 -270
- package/dist/services/rating-state-manager.js.map +0 -1
- package/dist/services/sdk-runner.d.ts +0 -113
- package/dist/services/sdk-runner.d.ts.map +0 -1
- package/dist/services/sdk-runner.js +0 -1424
- package/dist/services/sdk-runner.js.map +0 -1
- package/dist/services/session-manager.d.ts +0 -528
- package/dist/services/session-manager.d.ts.map +0 -1
- package/dist/services/session-manager.js +0 -1184
- package/dist/services/session-manager.js.map +0 -1
- package/dist/services/shell-executor.d.ts +0 -337
- package/dist/services/shell-executor.d.ts.map +0 -1
- package/dist/services/shell-executor.js +0 -1201
- package/dist/services/shell-executor.js.map +0 -1
- package/dist/services/skill-service.d.ts +0 -149
- package/dist/services/skill-service.d.ts.map +0 -1
- package/dist/services/skill-service.js +0 -594
- package/dist/services/skill-service.js.map +0 -1
- package/dist/services/statusline-executor.d.ts +0 -102
- package/dist/services/statusline-executor.d.ts.map +0 -1
- package/dist/services/statusline-executor.js +0 -305
- package/dist/services/statusline-executor.js.map +0 -1
- package/dist/services/step-tracker.d.ts +0 -356
- package/dist/services/step-tracker.d.ts.map +0 -1
- package/dist/services/step-tracker.js +0 -634
- package/dist/services/step-tracker.js.map +0 -1
- package/dist/services/system-event-logger.d.ts +0 -473
- package/dist/services/system-event-logger.d.ts.map +0 -1
- package/dist/services/system-event-logger.js +0 -790
- package/dist/services/system-event-logger.js.map +0 -1
- package/dist/services/system-utility-detector.d.ts +0 -91
- package/dist/services/system-utility-detector.d.ts.map +0 -1
- package/dist/services/system-utility-detector.js +0 -238
- package/dist/services/system-utility-detector.js.map +0 -1
- package/dist/services/team-context-store.d.ts +0 -100
- package/dist/services/team-context-store.d.ts.map +0 -1
- package/dist/services/team-context-store.js +0 -513
- package/dist/services/team-context-store.js.map +0 -1
- package/dist/services/temp-file-service.d.ts +0 -164
- package/dist/services/temp-file-service.d.ts.map +0 -1
- package/dist/services/temp-file-service.js +0 -303
- package/dist/services/temp-file-service.js.map +0 -1
- package/dist/services/token-limit-enforcer.d.ts +0 -53
- package/dist/services/token-limit-enforcer.d.ts.map +0 -1
- package/dist/services/token-limit-enforcer.js +0 -90
- package/dist/services/token-limit-enforcer.js.map +0 -1
- package/dist/services/token-limit-store.d.ts +0 -105
- package/dist/services/token-limit-store.d.ts.map +0 -1
- package/dist/services/token-limit-store.js +0 -288
- package/dist/services/token-limit-store.js.map +0 -1
- package/dist/services/token-tracker.d.ts +0 -290
- package/dist/services/token-tracker.d.ts.map +0 -1
- package/dist/services/token-tracker.js +0 -751
- package/dist/services/token-tracker.js.map +0 -1
- package/dist/services/tool-registry.d.ts +0 -302
- package/dist/services/tool-registry.d.ts.map +0 -1
- package/dist/services/tool-registry.js +0 -606
- package/dist/services/tool-registry.js.map +0 -1
- package/dist/services/tools-logger.d.ts +0 -152
- package/dist/services/tools-logger.d.ts.map +0 -1
- package/dist/services/tools-logger.js +0 -222
- package/dist/services/tools-logger.js.map +0 -1
- package/dist/services/update-plan-handler.d.ts +0 -56
- package/dist/services/update-plan-handler.d.ts.map +0 -1
- package/dist/services/update-plan-handler.js +0 -372
- package/dist/services/update-plan-handler.js.map +0 -1
- package/dist/services/update-service.d.ts +0 -197
- package/dist/services/update-service.d.ts.map +0 -1
- package/dist/services/update-service.js +0 -749
- package/dist/services/update-service.js.map +0 -1
- package/dist/services/verifier.d.ts +0 -113
- package/dist/services/verifier.d.ts.map +0 -1
- package/dist/services/verifier.js +0 -541
- package/dist/services/verifier.js.map +0 -1
- package/dist/services/workflow-manager.d.ts +0 -277
- package/dist/services/workflow-manager.d.ts.map +0 -1
- package/dist/services/workflow-manager.js +0 -616
- package/dist/services/workflow-manager.js.map +0 -1
- package/dist/services/workflow-orchestrator.d.ts +0 -148
- package/dist/services/workflow-orchestrator.d.ts.map +0 -1
- package/dist/services/workflow-orchestrator.js +0 -617
- package/dist/services/workflow-orchestrator.js.map +0 -1
- package/dist/services/worktree-manager.d.ts +0 -36
- package/dist/services/worktree-manager.d.ts.map +0 -1
- package/dist/services/worktree-manager.js +0 -185
- package/dist/services/worktree-manager.js.map +0 -1
- package/dist/templates/ascii-art.d.ts +0 -136
- package/dist/templates/ascii-art.d.ts.map +0 -1
- package/dist/templates/ascii-art.js +0 -286
- package/dist/templates/ascii-art.js.map +0 -1
- package/dist/templates/help.d.ts +0 -186
- package/dist/templates/help.d.ts.map +0 -1
- package/dist/templates/help.js +0 -588
- package/dist/templates/help.js.map +0 -1
- package/dist/templates/prompts/workflow-prompts.d.ts +0 -9
- package/dist/templates/prompts/workflow-prompts.d.ts.map +0 -1
- package/dist/templates/prompts/workflow-prompts.js +0 -9
- package/dist/templates/prompts/workflow-prompts.js.map +0 -1
- package/dist/tools/agent-tools.d.ts +0 -9
- package/dist/tools/agent-tools.d.ts.map +0 -1
- package/dist/tools/agent-tools.js +0 -349
- package/dist/tools/agent-tools.js.map +0 -1
- package/dist/tools/edit-replacers.d.ts +0 -90
- package/dist/tools/edit-replacers.d.ts.map +0 -1
- package/dist/tools/edit-replacers.js +0 -553
- package/dist/tools/edit-replacers.js.map +0 -1
- package/dist/tools/file-tools.d.ts +0 -13
- package/dist/tools/file-tools.d.ts.map +0 -1
- package/dist/tools/file-tools.js +0 -954
- package/dist/tools/file-tools.js.map +0 -1
- package/dist/tools/git-tools.d.ts +0 -9
- package/dist/tools/git-tools.d.ts.map +0 -1
- package/dist/tools/git-tools.js +0 -261
- package/dist/tools/git-tools.js.map +0 -1
- package/dist/tools/index.d.ts +0 -13
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -70
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/network-tools.d.ts +0 -8
- package/dist/tools/network-tools.d.ts.map +0 -1
- package/dist/tools/network-tools.js +0 -261
- package/dist/tools/network-tools.js.map +0 -1
- package/dist/tools/openai-tools.d.ts +0 -16
- package/dist/tools/openai-tools.d.ts.map +0 -1
- package/dist/tools/openai-tools.js +0 -385
- package/dist/tools/openai-tools.js.map +0 -1
- package/dist/tools/plan-tools.d.ts +0 -9
- package/dist/tools/plan-tools.d.ts.map +0 -1
- package/dist/tools/plan-tools.js +0 -223
- package/dist/tools/plan-tools.js.map +0 -1
- package/dist/tools/schedule-tools.d.ts +0 -9
- package/dist/tools/schedule-tools.d.ts.map +0 -1
- package/dist/tools/schedule-tools.js +0 -405
- package/dist/tools/schedule-tools.js.map +0 -1
- package/dist/tools/search-tools.d.ts +0 -8
- package/dist/tools/search-tools.d.ts.map +0 -1
- package/dist/tools/search-tools.js +0 -357
- package/dist/tools/search-tools.js.map +0 -1
- package/dist/tools/shared-utils.d.ts +0 -91
- package/dist/tools/shared-utils.d.ts.map +0 -1
- package/dist/tools/shared-utils.js +0 -385
- package/dist/tools/shared-utils.js.map +0 -1
- package/dist/tools/shell-tools.d.ts +0 -9
- package/dist/tools/shell-tools.d.ts.map +0 -1
- package/dist/tools/shell-tools.js +0 -409
- package/dist/tools/shell-tools.js.map +0 -1
- package/dist/tools/skill-tools.d.ts +0 -13
- package/dist/tools/skill-tools.d.ts.map +0 -1
- package/dist/tools/skill-tools.js +0 -244
- package/dist/tools/skill-tools.js.map +0 -1
- package/dist/tools/swarm-tools.d.ts +0 -9
- package/dist/tools/swarm-tools.d.ts.map +0 -1
- package/dist/tools/swarm-tools.js +0 -422
- package/dist/tools/swarm-tools.js.map +0 -1
- package/dist/tools/user-tools.d.ts +0 -13
- package/dist/tools/user-tools.d.ts.map +0 -1
- package/dist/tools/user-tools.js +0 -232
- package/dist/tools/user-tools.js.map +0 -1
- package/dist/types/agent-process.d.ts +0 -244
- package/dist/types/agent-process.d.ts.map +0 -1
- package/dist/types/agent-process.js +0 -93
- package/dist/types/agent-process.js.map +0 -1
- package/dist/types/agent.d.ts +0 -358
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js +0 -171
- package/dist/types/agent.js.map +0 -1
- package/dist/types/anthropic.d.ts +0 -438
- package/dist/types/anthropic.d.ts.map +0 -1
- package/dist/types/anthropic.js +0 -9
- package/dist/types/anthropic.js.map +0 -1
- package/dist/types/approval.d.ts +0 -332
- package/dist/types/approval.d.ts.map +0 -1
- package/dist/types/approval.js +0 -44
- package/dist/types/approval.js.map +0 -1
- package/dist/types/autocomplete.d.ts +0 -57
- package/dist/types/autocomplete.d.ts.map +0 -1
- package/dist/types/autocomplete.js +0 -7
- package/dist/types/autocomplete.js.map +0 -1
- package/dist/types/chat-archive.d.ts +0 -161
- package/dist/types/chat-archive.d.ts.map +0 -1
- package/dist/types/chat-archive.js +0 -36
- package/dist/types/chat-archive.js.map +0 -1
- package/dist/types/config.d.ts +0 -268
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -188
- package/dist/types/config.js.map +0 -1
- package/dist/types/consent.d.ts +0 -191
- package/dist/types/consent.d.ts.map +0 -1
- package/dist/types/consent.js +0 -119
- package/dist/types/consent.js.map +0 -1
- package/dist/types/custom-command.d.ts +0 -139
- package/dist/types/custom-command.d.ts.map +0 -1
- package/dist/types/custom-command.js +0 -7
- package/dist/types/custom-command.js.map +0 -1
- package/dist/types/git.d.ts +0 -20
- package/dist/types/git.d.ts.map +0 -1
- package/dist/types/git.js +0 -2
- package/dist/types/git.js.map +0 -1
- package/dist/types/hook.d.ts +0 -342
- package/dist/types/hook.d.ts.map +0 -1
- package/dist/types/hook.js +0 -84
- package/dist/types/hook.js.map +0 -1
- package/dist/types/index.d.ts +0 -86
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -71
- package/dist/types/index.js.map +0 -1
- package/dist/types/mcp.d.ts +0 -456
- package/dist/types/mcp.d.ts.map +0 -1
- package/dist/types/mcp.js +0 -94
- package/dist/types/mcp.js.map +0 -1
- package/dist/types/rating.d.ts +0 -110
- package/dist/types/rating.d.ts.map +0 -1
- package/dist/types/rating.js +0 -53
- package/dist/types/rating.js.map +0 -1
- package/dist/types/schedule.d.ts +0 -91
- package/dist/types/schedule.d.ts.map +0 -1
- package/dist/types/schedule.js +0 -8
- package/dist/types/schedule.js.map +0 -1
- package/dist/types/session.d.ts +0 -361
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js +0 -9
- package/dist/types/session.js.map +0 -1
- package/dist/types/skill.d.ts +0 -258
- package/dist/types/skill.d.ts.map +0 -1
- package/dist/types/skill.js +0 -79
- package/dist/types/skill.js.map +0 -1
- package/dist/types/statusline.d.ts +0 -212
- package/dist/types/statusline.d.ts.map +0 -1
- package/dist/types/statusline.js +0 -8
- package/dist/types/statusline.js.map +0 -1
- package/dist/types/stream.d.ts +0 -61
- package/dist/types/stream.d.ts.map +0 -1
- package/dist/types/stream.js +0 -17
- package/dist/types/stream.js.map +0 -1
- package/dist/types/swarm.d.ts +0 -132
- package/dist/types/swarm.d.ts.map +0 -1
- package/dist/types/swarm.js +0 -21
- package/dist/types/swarm.js.map +0 -1
- package/dist/types/token-limits.d.ts +0 -107
- package/dist/types/token-limits.d.ts.map +0 -1
- package/dist/types/token-limits.js +0 -57
- package/dist/types/token-limits.js.map +0 -1
- package/dist/types/token.d.ts +0 -329
- package/dist/types/token.d.ts.map +0 -1
- package/dist/types/token.js +0 -9
- package/dist/types/token.js.map +0 -1
- package/dist/types/update.d.ts +0 -189
- package/dist/types/update.d.ts.map +0 -1
- package/dist/types/update.js +0 -55
- package/dist/types/update.js.map +0 -1
- package/dist/types/workflow.d.ts +0 -396
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/types/workflow.js +0 -46
- package/dist/types/workflow.js.map +0 -1
- package/dist/ui/App.d.ts +0 -62
- package/dist/ui/App.d.ts.map +0 -1
- package/dist/ui/App.js +0 -511
- package/dist/ui/App.js.map +0 -1
- package/dist/ui/InteractiveSession.d.ts +0 -34
- package/dist/ui/InteractiveSession.d.ts.map +0 -1
- package/dist/ui/InteractiveSession.js +0 -3611
- package/dist/ui/InteractiveSession.js.map +0 -1
- package/dist/ui/MCPApprovalPrompt.d.ts +0 -27
- package/dist/ui/MCPApprovalPrompt.d.ts.map +0 -1
- package/dist/ui/MCPApprovalPrompt.js +0 -51
- package/dist/ui/MCPApprovalPrompt.js.map +0 -1
- package/dist/ui/SetupWizard.d.ts +0 -26
- package/dist/ui/SetupWizard.d.ts.map +0 -1
- package/dist/ui/SetupWizard.js +0 -396
- package/dist/ui/SetupWizard.js.map +0 -1
- package/dist/ui/components/AgentCreationWizard.d.ts +0 -36
- package/dist/ui/components/AgentCreationWizard.d.ts.map +0 -1
- package/dist/ui/components/AgentCreationWizard.js +0 -619
- package/dist/ui/components/AgentCreationWizard.js.map +0 -1
- package/dist/ui/components/AgentManager.d.ts +0 -41
- package/dist/ui/components/AgentManager.d.ts.map +0 -1
- package/dist/ui/components/AgentManager.js +0 -343
- package/dist/ui/components/AgentManager.js.map +0 -1
- package/dist/ui/components/ApprovalDialog.d.ts +0 -18
- package/dist/ui/components/ApprovalDialog.d.ts.map +0 -1
- package/dist/ui/components/ApprovalDialog.js +0 -439
- package/dist/ui/components/ApprovalDialog.js.map +0 -1
- package/dist/ui/components/AsciiArt.d.ts +0 -54
- package/dist/ui/components/AsciiArt.d.ts.map +0 -1
- package/dist/ui/components/AsciiArt.js +0 -89
- package/dist/ui/components/AsciiArt.js.map +0 -1
- package/dist/ui/components/ClarificationWizard.d.ts +0 -36
- package/dist/ui/components/ClarificationWizard.d.ts.map +0 -1
- package/dist/ui/components/ClarificationWizard.js +0 -407
- package/dist/ui/components/ClarificationWizard.js.map +0 -1
- package/dist/ui/components/CompassSpinner.d.ts +0 -15
- package/dist/ui/components/CompassSpinner.d.ts.map +0 -1
- package/dist/ui/components/CompassSpinner.js +0 -50
- package/dist/ui/components/CompassSpinner.js.map +0 -1
- package/dist/ui/components/ConfirmationSelector.d.ts +0 -45
- package/dist/ui/components/ConfirmationSelector.d.ts.map +0 -1
- package/dist/ui/components/ConfirmationSelector.js +0 -106
- package/dist/ui/components/ConfirmationSelector.js.map +0 -1
- package/dist/ui/components/ContextUsage.d.ts +0 -76
- package/dist/ui/components/ContextUsage.d.ts.map +0 -1
- package/dist/ui/components/ContextUsage.js +0 -188
- package/dist/ui/components/ContextUsage.js.map +0 -1
- package/dist/ui/components/DiffPreview.d.ts +0 -13
- package/dist/ui/components/DiffPreview.d.ts.map +0 -1
- package/dist/ui/components/DiffPreview.js +0 -30
- package/dist/ui/components/DiffPreview.js.map +0 -1
- package/dist/ui/components/ExecutionModeSelector.d.ts +0 -45
- package/dist/ui/components/ExecutionModeSelector.d.ts.map +0 -1
- package/dist/ui/components/ExecutionModeSelector.js +0 -120
- package/dist/ui/components/ExecutionModeSelector.js.map +0 -1
- package/dist/ui/components/FileTree.d.ts +0 -47
- package/dist/ui/components/FileTree.d.ts.map +0 -1
- package/dist/ui/components/FileTree.js +0 -258
- package/dist/ui/components/FileTree.js.map +0 -1
- package/dist/ui/components/HelpMenu.d.ts +0 -49
- package/dist/ui/components/HelpMenu.d.ts.map +0 -1
- package/dist/ui/components/HelpMenu.js +0 -91
- package/dist/ui/components/HelpMenu.js.map +0 -1
- package/dist/ui/components/InterleavedStream.d.ts +0 -42
- package/dist/ui/components/InterleavedStream.d.ts.map +0 -1
- package/dist/ui/components/InterleavedStream.js +0 -1500
- package/dist/ui/components/InterleavedStream.js.map +0 -1
- package/dist/ui/components/ModelSelector.d.ts +0 -81
- package/dist/ui/components/ModelSelector.d.ts.map +0 -1
- package/dist/ui/components/ModelSelector.js +0 -305
- package/dist/ui/components/ModelSelector.js.map +0 -1
- package/dist/ui/components/PlanApprovalDialog.d.ts +0 -21
- package/dist/ui/components/PlanApprovalDialog.d.ts.map +0 -1
- package/dist/ui/components/PlanApprovalDialog.js +0 -189
- package/dist/ui/components/PlanApprovalDialog.js.map +0 -1
- package/dist/ui/components/PlanExecutionTracker.d.ts +0 -53
- package/dist/ui/components/PlanExecutionTracker.d.ts.map +0 -1
- package/dist/ui/components/PlanExecutionTracker.js +0 -113
- package/dist/ui/components/PlanExecutionTracker.js.map +0 -1
- package/dist/ui/components/ProgressIndicator.d.ts +0 -151
- package/dist/ui/components/ProgressIndicator.d.ts.map +0 -1
- package/dist/ui/components/ProgressIndicator.js +0 -171
- package/dist/ui/components/ProgressIndicator.js.map +0 -1
- package/dist/ui/components/Prompt.d.ts +0 -47
- package/dist/ui/components/Prompt.d.ts.map +0 -1
- package/dist/ui/components/Prompt.js +0 -632
- package/dist/ui/components/Prompt.js.map +0 -1
- package/dist/ui/components/RatingPanel.d.ts +0 -45
- package/dist/ui/components/RatingPanel.d.ts.map +0 -1
- package/dist/ui/components/RatingPanel.js +0 -119
- package/dist/ui/components/RatingPanel.js.map +0 -1
- package/dist/ui/components/StatusLine.d.ts +0 -43
- package/dist/ui/components/StatusLine.d.ts.map +0 -1
- package/dist/ui/components/StatusLine.js +0 -44
- package/dist/ui/components/StatusLine.js.map +0 -1
- package/dist/ui/components/StreamingResponse.d.ts +0 -45
- package/dist/ui/components/StreamingResponse.d.ts.map +0 -1
- package/dist/ui/components/StreamingResponse.js +0 -56
- package/dist/ui/components/StreamingResponse.js.map +0 -1
- package/dist/ui/components/TokenUsage.d.ts +0 -89
- package/dist/ui/components/TokenUsage.d.ts.map +0 -1
- package/dist/ui/components/TokenUsage.js +0 -99
- package/dist/ui/components/TokenUsage.js.map +0 -1
- package/dist/ui/components/ToolSummary.d.ts +0 -77
- package/dist/ui/components/ToolSummary.d.ts.map +0 -1
- package/dist/ui/components/ToolSummary.js +0 -162
- package/dist/ui/components/ToolSummary.js.map +0 -1
- package/dist/ui/components/UpdateNotification.d.ts +0 -65
- package/dist/ui/components/UpdateNotification.d.ts.map +0 -1
- package/dist/ui/components/UpdateNotification.js +0 -166
- package/dist/ui/components/UpdateNotification.js.map +0 -1
- package/dist/ui/diff-renderer.d.ts +0 -18
- package/dist/ui/diff-renderer.d.ts.map +0 -1
- package/dist/ui/diff-renderer.js +0 -206
- package/dist/ui/diff-renderer.js.map +0 -1
- package/dist/ui/themes/markdown-theme.d.ts +0 -48
- package/dist/ui/themes/markdown-theme.d.ts.map +0 -1
- package/dist/ui/themes/markdown-theme.js +0 -79
- package/dist/ui/themes/markdown-theme.js.map +0 -1
- package/dist/ui/themes/ui-theme.d.ts +0 -301
- package/dist/ui/themes/ui-theme.d.ts.map +0 -1
- package/dist/ui/themes/ui-theme.js +0 -204
- package/dist/ui/themes/ui-theme.js.map +0 -1
- package/dist/utils/attachment-handler.d.ts +0 -129
- package/dist/utils/attachment-handler.d.ts.map +0 -1
- package/dist/utils/attachment-handler.js +0 -280
- package/dist/utils/attachment-handler.js.map +0 -1
- package/dist/utils/backup-cleanup.d.ts +0 -28
- package/dist/utils/backup-cleanup.d.ts.map +0 -1
- package/dist/utils/backup-cleanup.js +0 -99
- package/dist/utils/backup-cleanup.js.map +0 -1
- package/dist/utils/clipboard-handler.d.ts +0 -82
- package/dist/utils/clipboard-handler.d.ts.map +0 -1
- package/dist/utils/clipboard-handler.js +0 -311
- package/dist/utils/clipboard-handler.js.map +0 -1
- package/dist/utils/cloud-detection.d.ts +0 -14
- package/dist/utils/cloud-detection.d.ts.map +0 -1
- package/dist/utils/cloud-detection.js +0 -92
- package/dist/utils/cloud-detection.js.map +0 -1
- package/dist/utils/command-parser.d.ts +0 -56
- package/dist/utils/command-parser.d.ts.map +0 -1
- package/dist/utils/command-parser.js +0 -206
- package/dist/utils/command-parser.js.map +0 -1
- package/dist/utils/console-capture.d.ts +0 -30
- package/dist/utils/console-capture.d.ts.map +0 -1
- package/dist/utils/console-capture.js +0 -88
- package/dist/utils/console-capture.js.map +0 -1
- package/dist/utils/cron-parser.d.ts +0 -52
- package/dist/utils/cron-parser.d.ts.map +0 -1
- package/dist/utils/cron-parser.js +0 -455
- package/dist/utils/cron-parser.js.map +0 -1
- package/dist/utils/crypto.d.ts +0 -351
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/crypto.js +0 -615
- package/dist/utils/crypto.js.map +0 -1
- package/dist/utils/diff.d.ts +0 -311
- package/dist/utils/diff.d.ts.map +0 -1
- package/dist/utils/diff.js +0 -566
- package/dist/utils/diff.js.map +0 -1
- package/dist/utils/editor.d.ts +0 -12
- package/dist/utils/editor.d.ts.map +0 -1
- package/dist/utils/editor.js +0 -30
- package/dist/utils/editor.js.map +0 -1
- package/dist/utils/file-system.d.ts +0 -512
- package/dist/utils/file-system.d.ts.map +0 -1
- package/dist/utils/file-system.js +0 -798
- package/dist/utils/file-system.js.map +0 -1
- package/dist/utils/format.d.ts +0 -318
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js +0 -587
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/ignore-patterns.d.ts +0 -93
- package/dist/utils/ignore-patterns.d.ts.map +0 -1
- package/dist/utils/ignore-patterns.js +0 -710
- package/dist/utils/ignore-patterns.js.map +0 -1
- package/dist/utils/log-cleanup.d.ts +0 -16
- package/dist/utils/log-cleanup.d.ts.map +0 -1
- package/dist/utils/log-cleanup.js +0 -51
- package/dist/utils/log-cleanup.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -305
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -447
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/path.d.ts +0 -406
- package/dist/utils/path.d.ts.map +0 -1
- package/dist/utils/path.js +0 -549
- package/dist/utils/path.js.map +0 -1
- package/dist/utils/schedule-file.d.ts +0 -63
- package/dist/utils/schedule-file.d.ts.map +0 -1
- package/dist/utils/schedule-file.js +0 -244
- package/dist/utils/schedule-file.js.map +0 -1
- package/dist/utils/task-id.d.ts +0 -29
- package/dist/utils/task-id.d.ts.map +0 -1
- package/dist/utils/task-id.js +0 -53
- package/dist/utils/task-id.js.map +0 -1
- package/dist/utils/temp-cleanup.d.ts +0 -46
- package/dist/utils/temp-cleanup.d.ts.map +0 -1
- package/dist/utils/temp-cleanup.js +0 -95
- package/dist/utils/temp-cleanup.js.map +0 -1
- package/dist/utils/terminal-output.d.ts +0 -34
- package/dist/utils/terminal-output.d.ts.map +0 -1
- package/dist/utils/terminal-output.js +0 -40
- package/dist/utils/terminal-output.js.map +0 -1
- package/dist/utils/token-counter.d.ts +0 -224
- package/dist/utils/token-counter.d.ts.map +0 -1
- package/dist/utils/token-counter.js +0 -332
- package/dist/utils/token-counter.js.map +0 -1
- package/dist/utils/tool-mapper.d.ts +0 -70
- package/dist/utils/tool-mapper.d.ts.map +0 -1
- package/dist/utils/tool-mapper.js +0 -234
- package/dist/utils/tool-mapper.js.map +0 -1
|
@@ -1,1044 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Approval system service implementing three-tier approval flow
|
|
3
|
-
*
|
|
4
|
-
* This service manages the approval workflow for file modifications and other
|
|
5
|
-
* operations that require user consent. It supports three approval modes:
|
|
6
|
-
* - MANUAL: Requires explicit approval for each operation
|
|
7
|
-
* - AUTO: Automatically approves safe operations based on patterns and thresholds
|
|
8
|
-
* - STRICT: Requires approval for all operations including low-risk ones
|
|
9
|
-
*
|
|
10
|
-
* Features:
|
|
11
|
-
* - Three-tier approval system (manual, auto, strict)
|
|
12
|
-
* - Risk level assessment for operations
|
|
13
|
-
* - Pattern-based auto-approval configuration
|
|
14
|
-
* - Audit logging of all approval requests and responses
|
|
15
|
-
* - Event emission for UI integration
|
|
16
|
-
*/
|
|
17
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
18
|
-
import { ApprovalMode, } from '../types/approval.js';
|
|
19
|
-
import { logger } from '../utils/logger.js';
|
|
20
|
-
import { formatTimestamp } from '../utils/format.js';
|
|
21
|
-
import { matchesPattern } from '../utils/path.js';
|
|
22
|
-
import { getEventEmitter } from '../core/event-emitter.js';
|
|
23
|
-
import { getSystemEventLogger } from './system-event-logger.js';
|
|
24
|
-
/**
|
|
25
|
-
* Default configuration values for the approval manager
|
|
26
|
-
*/
|
|
27
|
-
const DEFAULT_MAX_AUTO_APPROVE_FILES = 5;
|
|
28
|
-
const DEFAULT_MAX_AUTO_APPROVE_LINES = 100;
|
|
29
|
-
/**
|
|
30
|
-
* ApprovalManager handles the three-tier approval system for operations
|
|
31
|
-
* that modify files, execute commands, or perform other potentially
|
|
32
|
-
* destructive actions.
|
|
33
|
-
*/
|
|
34
|
-
class ApprovalManager {
|
|
35
|
-
/** Current approval mode */
|
|
36
|
-
mode = ApprovalMode.MANUAL;
|
|
37
|
-
/** History of all approval requests and responses */
|
|
38
|
-
history = { requests: [], responses: [] };
|
|
39
|
-
/** Patterns for files that can be auto-approved */
|
|
40
|
-
autoApprovePatterns = [];
|
|
41
|
-
/** Patterns for files that always require approval */
|
|
42
|
-
requireApprovalPatterns = [];
|
|
43
|
-
/** Maximum number of files that can be auto-approved in one operation */
|
|
44
|
-
maxAutoApproveFiles = DEFAULT_MAX_AUTO_APPROVE_FILES;
|
|
45
|
-
/** Maximum number of lines changed that can be auto-approved */
|
|
46
|
-
maxAutoApproveLines = DEFAULT_MAX_AUTO_APPROVE_LINES;
|
|
47
|
-
/** Event emitter for UI communication */
|
|
48
|
-
eventEmitter;
|
|
49
|
-
/** Currently pending approval request */
|
|
50
|
-
pendingRequest = null;
|
|
51
|
-
/** Resolver function for pending approval promise */
|
|
52
|
-
resolveApproval = null;
|
|
53
|
-
/** Current complexity context for SMART mode decisions */
|
|
54
|
-
currentComplexityMode = null;
|
|
55
|
-
/** Confidence of the current complexity classification */
|
|
56
|
-
currentComplexityConfidence = 0;
|
|
57
|
-
/** Minimum confidence threshold for SMART mode auto-approval (0-100) */
|
|
58
|
-
smartModeConfidenceThreshold = 70;
|
|
59
|
-
/** Session-wide auto-approval flag (set via [A] option in approval dialog) */
|
|
60
|
-
sessionAutoApprovalEnabled = false;
|
|
61
|
-
/** Auto-approve file edits, writes, and command executions (set via plan approval dialog) */
|
|
62
|
-
fileEditsAutoApprovalEnabled = false;
|
|
63
|
-
/** Currently pending plan approval request */
|
|
64
|
-
pendingPlanApproval = null;
|
|
65
|
-
/** Resolver function for pending plan approval promise */
|
|
66
|
-
resolvePlanApprovalPromise = null;
|
|
67
|
-
/** Set of approved command prefixes (e.g., 'npm', 'git', 'yarn') */
|
|
68
|
-
approvedCommandPrefixes = new Set();
|
|
69
|
-
/** Currently pending clarification wizard request */
|
|
70
|
-
pendingClarificationWizard = null;
|
|
71
|
-
/** Resolver function for pending clarification wizard promise */
|
|
72
|
-
resolveClarificationWizardPromise = null;
|
|
73
|
-
/**
|
|
74
|
-
* Creates a new ApprovalManager instance
|
|
75
|
-
*/
|
|
76
|
-
constructor() {
|
|
77
|
-
this.eventEmitter = getEventEmitter();
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Gets the current approval mode
|
|
81
|
-
* @returns The current ApprovalMode
|
|
82
|
-
*/
|
|
83
|
-
getMode() {
|
|
84
|
-
return this.mode;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Enables session-wide auto-approval.
|
|
88
|
-
* When enabled, all subsequent operations will be auto-approved for this session.
|
|
89
|
-
* This is typically triggered by selecting [A] in the approval dialog.
|
|
90
|
-
*/
|
|
91
|
-
enableSessionAutoApproval() {
|
|
92
|
-
this.sessionAutoApprovalEnabled = true;
|
|
93
|
-
logger.info('Session auto-approval enabled - all subsequent operations will be auto-approved');
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Disables session-wide auto-approval.
|
|
97
|
-
*/
|
|
98
|
-
disableSessionAutoApproval() {
|
|
99
|
-
this.sessionAutoApprovalEnabled = false;
|
|
100
|
-
logger.info('Session auto-approval disabled');
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Checks if session-wide auto-approval is enabled.
|
|
104
|
-
* @returns True if session auto-approval is enabled
|
|
105
|
-
*/
|
|
106
|
-
isSessionAutoApprovalEnabled() {
|
|
107
|
-
return this.sessionAutoApprovalEnabled;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Enables auto-approval for file edits, writes, and command executions.
|
|
111
|
-
* File creates, modifies, and shell commands will be auto-approved;
|
|
112
|
-
* high-risk/critical shell commands still require manual approval.
|
|
113
|
-
*/
|
|
114
|
-
enableFileEditsAutoApproval() {
|
|
115
|
-
this.fileEditsAutoApprovalEnabled = true;
|
|
116
|
-
logger.info('File edits auto-approval enabled - file writes, edits, and commands will be auto-approved');
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Disables auto-approval for file edits and writes.
|
|
120
|
-
*/
|
|
121
|
-
disableFileEditsAutoApproval() {
|
|
122
|
-
this.fileEditsAutoApprovalEnabled = false;
|
|
123
|
-
logger.info('File edits auto-approval disabled');
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Extracts the command prefix from a shell command.
|
|
127
|
-
* Examples: "npm install" -> "npm", "git status" -> "git"
|
|
128
|
-
*
|
|
129
|
-
* @param command - The full command string
|
|
130
|
-
* @returns The command prefix (first word)
|
|
131
|
-
*/
|
|
132
|
-
getCommandPrefix(command) {
|
|
133
|
-
const trimmed = command.trim();
|
|
134
|
-
// Handle common shell prefixes like sudo, env, etc.
|
|
135
|
-
const parts = trimmed.split(/\s+/);
|
|
136
|
-
const skipPrefixes = ['sudo', 'env', 'npx', 'pnpm', 'yarn', 'bunx'];
|
|
137
|
-
for (const part of parts) {
|
|
138
|
-
if (!skipPrefixes.includes(part.toLowerCase())) {
|
|
139
|
-
return part.toLowerCase();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return parts[0]?.toLowerCase() || '';
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Checks if a command's prefix has been approved for auto-execution.
|
|
146
|
-
*
|
|
147
|
-
* @param command - The command to check
|
|
148
|
-
* @returns True if the command prefix is approved
|
|
149
|
-
*/
|
|
150
|
-
isCommandPrefixApproved(command) {
|
|
151
|
-
const prefix = this.getCommandPrefix(command);
|
|
152
|
-
return this.approvedCommandPrefixes.has(prefix);
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Approves a command prefix for auto-execution in this session.
|
|
156
|
-
* Future commands starting with this prefix will be auto-approved.
|
|
157
|
-
*
|
|
158
|
-
* @param command - The command whose prefix should be approved
|
|
159
|
-
*/
|
|
160
|
-
approveCommandPrefix(command) {
|
|
161
|
-
const prefix = this.getCommandPrefix(command);
|
|
162
|
-
this.approvedCommandPrefixes.add(prefix);
|
|
163
|
-
logger.info(`Command prefix approved for session: ${prefix}`);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Gets all approved command prefixes.
|
|
167
|
-
*
|
|
168
|
-
* @returns Array of approved command prefixes
|
|
169
|
-
*/
|
|
170
|
-
getApprovedCommandPrefixes() {
|
|
171
|
-
return Array.from(this.approvedCommandPrefixes);
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Clears all approved command prefixes.
|
|
175
|
-
*/
|
|
176
|
-
clearApprovedCommandPrefixes() {
|
|
177
|
-
this.approvedCommandPrefixes.clear();
|
|
178
|
-
logger.debug('Approved command prefixes cleared');
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Sets the complexity context for SMART mode decisions.
|
|
182
|
-
* This should be called before file operations when complexity classification is available.
|
|
183
|
-
*
|
|
184
|
-
* @param mode - The complexity mode from the classifier (direct, clarification, plan)
|
|
185
|
-
* @param confidence - The confidence score (0-100) of the classification
|
|
186
|
-
*/
|
|
187
|
-
setComplexityContext(mode, confidence = 0) {
|
|
188
|
-
this.currentComplexityMode = mode;
|
|
189
|
-
this.currentComplexityConfidence = confidence;
|
|
190
|
-
logger.debug(`Complexity context set: mode=${mode}, confidence=${confidence}`);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Gets the current complexity context
|
|
194
|
-
* @returns Object with mode and confidence, or null if not set
|
|
195
|
-
*/
|
|
196
|
-
getComplexityContext() {
|
|
197
|
-
return {
|
|
198
|
-
mode: this.currentComplexityMode,
|
|
199
|
-
confidence: this.currentComplexityConfidence,
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Clears the complexity context (call after workflow completion)
|
|
204
|
-
*/
|
|
205
|
-
clearComplexityContext() {
|
|
206
|
-
this.currentComplexityMode = null;
|
|
207
|
-
this.currentComplexityConfidence = 0;
|
|
208
|
-
logger.debug('Complexity context cleared');
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Sets the confidence threshold for SMART mode auto-approval
|
|
212
|
-
* @param threshold - Minimum confidence (0-100) required for auto-approval
|
|
213
|
-
*/
|
|
214
|
-
setSmartModeConfidenceThreshold(threshold) {
|
|
215
|
-
this.smartModeConfidenceThreshold = Math.max(0, Math.min(100, threshold));
|
|
216
|
-
logger.debug(`SMART mode confidence threshold set to: ${this.smartModeConfidenceThreshold}`);
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Quick classification of a user request for SMART mode.
|
|
220
|
-
* This is a lightweight heuristic-based classification that runs before LLM calls.
|
|
221
|
-
* It sets the complexity context based on the request text.
|
|
222
|
-
*
|
|
223
|
-
* @param userRequest - The user's request text
|
|
224
|
-
* @returns The determined complexity mode and confidence
|
|
225
|
-
*/
|
|
226
|
-
quickClassifyRequest(userRequest) {
|
|
227
|
-
const request = userRequest.toLowerCase();
|
|
228
|
-
// Keywords indicating complex operations (PLAN mode)
|
|
229
|
-
const complexKeywords = [
|
|
230
|
-
'refactor', 'redesign', 'migrate', 'architecture', 'rewrite',
|
|
231
|
-
'restructure', 'overhaul', 'major', 'breaking change', 'system',
|
|
232
|
-
'framework', 'infrastructure', 'database schema', 'api redesign',
|
|
233
|
-
'authentication system', 'authorization', 'security overhaul',
|
|
234
|
-
];
|
|
235
|
-
// Keywords indicating medium complexity (CLARIFICATION mode)
|
|
236
|
-
const mediumKeywords = [
|
|
237
|
-
'implement', 'feature', 'add functionality', 'integrate',
|
|
238
|
-
'connect', 'setup', 'configure', 'multi-file', 'across files',
|
|
239
|
-
'multiple components', 'service', 'module', 'api endpoint',
|
|
240
|
-
];
|
|
241
|
-
// Keywords indicating simple operations (DIRECT mode)
|
|
242
|
-
const simpleKeywords = [
|
|
243
|
-
'create', 'simple', 'basic', 'hello world', 'example',
|
|
244
|
-
'add file', 'new file', 'write', 'make', 'generate',
|
|
245
|
-
'readme', 'config', 'single', 'quick', 'small',
|
|
246
|
-
'fix typo', 'update text', 'change string', 'rename',
|
|
247
|
-
];
|
|
248
|
-
// Check for complex patterns first (highest priority)
|
|
249
|
-
const hasComplexKeyword = complexKeywords.some(keyword => request.includes(keyword));
|
|
250
|
-
if (hasComplexKeyword) {
|
|
251
|
-
logger.debug(`Quick classify: PLAN (complex keyword found)`);
|
|
252
|
-
return { mode: 'plan', confidence: 80 };
|
|
253
|
-
}
|
|
254
|
-
// Check for medium complexity
|
|
255
|
-
const hasMediumKeyword = mediumKeywords.some(keyword => request.includes(keyword));
|
|
256
|
-
const hasMultipleFiles = /multiple|several|all|many|across/i.test(request);
|
|
257
|
-
if (hasMediumKeyword || hasMultipleFiles) {
|
|
258
|
-
logger.debug(`Quick classify: CLARIFICATION (medium keyword found)`);
|
|
259
|
-
return { mode: 'clarification', confidence: 70 };
|
|
260
|
-
}
|
|
261
|
-
// Check for simple patterns
|
|
262
|
-
const hasSimpleKeyword = simpleKeywords.some(keyword => request.includes(keyword));
|
|
263
|
-
// Additional simple indicators
|
|
264
|
-
const isShortRequest = request.length < 100;
|
|
265
|
-
const mentionsSingleFile = /\b(a|one|single|the)\s+(file|page|document)\b/i.test(request);
|
|
266
|
-
const isCreationRequest = /^(create|make|write|add|generate)\b/i.test(request.trim());
|
|
267
|
-
if (hasSimpleKeyword || (isShortRequest && (mentionsSingleFile || isCreationRequest))) {
|
|
268
|
-
const confidence = hasSimpleKeyword ? 85 : 75;
|
|
269
|
-
logger.debug(`Quick classify: DIRECT (simple indicators, confidence: ${confidence})`);
|
|
270
|
-
return { mode: 'direct', confidence };
|
|
271
|
-
}
|
|
272
|
-
// Default to clarification for ambiguous requests
|
|
273
|
-
logger.debug(`Quick classify: CLARIFICATION (default for ambiguous request)`);
|
|
274
|
-
return { mode: 'clarification', confidence: 60 };
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Classifies a user request and sets the complexity context.
|
|
278
|
-
* Call this before tool execution to enable SMART mode decisions.
|
|
279
|
-
*
|
|
280
|
-
* @param userRequest - The user's request text
|
|
281
|
-
*/
|
|
282
|
-
classifyAndSetContext(userRequest) {
|
|
283
|
-
const { mode, confidence } = this.quickClassifyRequest(userRequest);
|
|
284
|
-
this.setComplexityContext(mode, confidence);
|
|
285
|
-
logger.info(`Request classified: mode=${mode}, confidence=${confidence}%`);
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Sets the approval mode
|
|
289
|
-
* @param mode - The new approval mode to set
|
|
290
|
-
*/
|
|
291
|
-
setMode(mode) {
|
|
292
|
-
const previousMode = this.mode;
|
|
293
|
-
this.mode = mode;
|
|
294
|
-
logger.info(`Approval mode changed from ${previousMode} to ${mode}`);
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* Toggles between manual and auto approval modes
|
|
298
|
-
* If currently in STRICT mode, toggles to MANUAL
|
|
299
|
-
* @returns The new approval mode after toggling
|
|
300
|
-
*/
|
|
301
|
-
toggleMode() {
|
|
302
|
-
if (this.mode === ApprovalMode.MANUAL) {
|
|
303
|
-
this.mode = ApprovalMode.AUTO;
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
this.mode = ApprovalMode.MANUAL;
|
|
307
|
-
}
|
|
308
|
-
logger.info(`Approval mode toggled to: ${this.mode}`);
|
|
309
|
-
return this.mode;
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Configures the approval manager with custom settings
|
|
313
|
-
* @param options - Configuration options for auto-approval behavior
|
|
314
|
-
*/
|
|
315
|
-
configure(options) {
|
|
316
|
-
if (options.autoApprovePatterns !== undefined) {
|
|
317
|
-
this.autoApprovePatterns = options.autoApprovePatterns;
|
|
318
|
-
}
|
|
319
|
-
if (options.requireApprovalPatterns !== undefined) {
|
|
320
|
-
this.requireApprovalPatterns = options.requireApprovalPatterns;
|
|
321
|
-
}
|
|
322
|
-
if (options.maxAutoApproveFiles !== undefined) {
|
|
323
|
-
this.maxAutoApproveFiles = options.maxAutoApproveFiles;
|
|
324
|
-
}
|
|
325
|
-
if (options.maxAutoApproveLines !== undefined) {
|
|
326
|
-
this.maxAutoApproveLines = options.maxAutoApproveLines;
|
|
327
|
-
}
|
|
328
|
-
logger.debug('Approval manager configured', options);
|
|
329
|
-
}
|
|
330
|
-
/**
|
|
331
|
-
* Gets the current configuration
|
|
332
|
-
* @returns The current approval configuration
|
|
333
|
-
*/
|
|
334
|
-
getConfig() {
|
|
335
|
-
return {
|
|
336
|
-
mode: this.mode,
|
|
337
|
-
autoApprovePatterns: [...this.autoApprovePatterns],
|
|
338
|
-
requireApprovalPatterns: [...this.requireApprovalPatterns],
|
|
339
|
-
maxAutoApproveFiles: this.maxAutoApproveFiles,
|
|
340
|
-
maxAutoApproveLines: this.maxAutoApproveLines,
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Requests approval for an operation
|
|
345
|
-
*
|
|
346
|
-
* This method creates an approval request, assesses its risk level,
|
|
347
|
-
* and either auto-approves it (based on mode and patterns) or
|
|
348
|
-
* waits for user input.
|
|
349
|
-
*
|
|
350
|
-
* @param type - The type of operation requiring approval
|
|
351
|
-
* @param description - Human-readable description of the operation
|
|
352
|
-
* @param details - Detailed information about the operation
|
|
353
|
-
* @returns Promise resolving to the approval response
|
|
354
|
-
*/
|
|
355
|
-
async requestApproval(type, description, details) {
|
|
356
|
-
const request = {
|
|
357
|
-
id: uuidv4(),
|
|
358
|
-
type,
|
|
359
|
-
timestamp: formatTimestamp(),
|
|
360
|
-
description,
|
|
361
|
-
details,
|
|
362
|
-
riskLevel: this.assessRiskLevel(type, details),
|
|
363
|
-
estimatedImpact: this.estimateImpact(type, details),
|
|
364
|
-
};
|
|
365
|
-
this.history.requests.push(request);
|
|
366
|
-
this.pendingRequest = request;
|
|
367
|
-
logger.debug(`Approval requested: ${request.id}`, {
|
|
368
|
-
type,
|
|
369
|
-
riskLevel: request.riskLevel,
|
|
370
|
-
});
|
|
371
|
-
// Log approval request to system events
|
|
372
|
-
const systemEventLogger = getSystemEventLogger();
|
|
373
|
-
systemEventLogger.logApprovalRequested({
|
|
374
|
-
approvalId: request.id,
|
|
375
|
-
actionType: type,
|
|
376
|
-
actionDescription: description,
|
|
377
|
-
reason: `Risk level: ${request.riskLevel}`,
|
|
378
|
-
});
|
|
379
|
-
// Check if auto-approval is possible based on risk and patterns
|
|
380
|
-
if (this.canAutoApprove(request)) {
|
|
381
|
-
const response = this.createResponse(request, true, 'Auto-approved based on configuration');
|
|
382
|
-
this.history.responses.push(response);
|
|
383
|
-
this.pendingRequest = null;
|
|
384
|
-
logger.info(`Request ${request.id} auto-approved`);
|
|
385
|
-
// Log auto-approval to system events
|
|
386
|
-
systemEventLogger.logApprovalGranted({
|
|
387
|
-
approvalId: request.id,
|
|
388
|
-
actionType: type,
|
|
389
|
-
actionDescription: description,
|
|
390
|
-
decidedBy: 'system',
|
|
391
|
-
reason: 'Auto-approved based on configuration',
|
|
392
|
-
});
|
|
393
|
-
return response;
|
|
394
|
-
}
|
|
395
|
-
// In strict mode, always require explicit approval
|
|
396
|
-
if (this.mode === ApprovalMode.STRICT) {
|
|
397
|
-
return this.waitForUserApproval(request);
|
|
398
|
-
}
|
|
399
|
-
// In manual mode, always require approval
|
|
400
|
-
if (this.mode === ApprovalMode.MANUAL) {
|
|
401
|
-
return this.waitForUserApproval(request);
|
|
402
|
-
}
|
|
403
|
-
// In auto mode, check if this specific request should require approval
|
|
404
|
-
if (this.shouldRequireApproval(request)) {
|
|
405
|
-
return this.waitForUserApproval(request);
|
|
406
|
-
}
|
|
407
|
-
// Auto-approve in auto mode for safe operations
|
|
408
|
-
const response = this.createResponse(request, true, 'Auto-approved (auto mode)');
|
|
409
|
-
this.history.responses.push(response);
|
|
410
|
-
this.pendingRequest = null;
|
|
411
|
-
logger.info(`Request ${request.id} auto-approved in auto mode`);
|
|
412
|
-
// Log auto-approval to system events
|
|
413
|
-
systemEventLogger.logApprovalGranted({
|
|
414
|
-
approvalId: request.id,
|
|
415
|
-
actionType: type,
|
|
416
|
-
actionDescription: description,
|
|
417
|
-
decidedBy: 'system',
|
|
418
|
-
reason: 'Auto-approved (auto mode)',
|
|
419
|
-
});
|
|
420
|
-
return response;
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* Resolves a pending approval request with the user's choice
|
|
424
|
-
*
|
|
425
|
-
* @param choice - The user's approval choice
|
|
426
|
-
* @param reason - Optional reason for the decision
|
|
427
|
-
*/
|
|
428
|
-
resolveRequest(choice, reason) {
|
|
429
|
-
if (!this.pendingRequest || !this.resolveApproval) {
|
|
430
|
-
logger.warn('No pending approval request to resolve');
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
const approved = choice === 'approve';
|
|
434
|
-
const response = this.createResponse(this.pendingRequest, approved, reason);
|
|
435
|
-
this.history.responses.push(response);
|
|
436
|
-
logger.info(`Request ${this.pendingRequest.id} ${approved ? 'approved' : 'rejected'}`, {
|
|
437
|
-
choice,
|
|
438
|
-
reason,
|
|
439
|
-
});
|
|
440
|
-
// Log approval decision to system events
|
|
441
|
-
const systemEventLogger = getSystemEventLogger();
|
|
442
|
-
const approvalData = {
|
|
443
|
-
approvalId: this.pendingRequest.id,
|
|
444
|
-
actionType: this.pendingRequest.type,
|
|
445
|
-
actionDescription: this.pendingRequest.description,
|
|
446
|
-
decidedBy: 'user',
|
|
447
|
-
reason,
|
|
448
|
-
};
|
|
449
|
-
if (approved) {
|
|
450
|
-
systemEventLogger.logApprovalGranted(approvalData);
|
|
451
|
-
}
|
|
452
|
-
else {
|
|
453
|
-
systemEventLogger.logApprovalDenied(approvalData);
|
|
454
|
-
}
|
|
455
|
-
this.resolveApproval(response);
|
|
456
|
-
this.pendingRequest = null;
|
|
457
|
-
this.resolveApproval = null;
|
|
458
|
-
}
|
|
459
|
-
/**
|
|
460
|
-
* Gets the currently pending approval request
|
|
461
|
-
* @returns The pending request or null if none
|
|
462
|
-
*/
|
|
463
|
-
getPendingRequest() {
|
|
464
|
-
return this.pendingRequest;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Checks if there is a pending approval request
|
|
468
|
-
* @returns True if there is a pending request
|
|
469
|
-
*/
|
|
470
|
-
hasPendingRequest() {
|
|
471
|
-
return this.pendingRequest !== null;
|
|
472
|
-
}
|
|
473
|
-
/**
|
|
474
|
-
* Cancels the pending approval request
|
|
475
|
-
*/
|
|
476
|
-
cancelPendingRequest() {
|
|
477
|
-
if (this.pendingRequest && this.resolveApproval) {
|
|
478
|
-
const response = this.createResponse(this.pendingRequest, false, 'Cancelled by user');
|
|
479
|
-
this.history.responses.push(response);
|
|
480
|
-
// Log cancellation to system events
|
|
481
|
-
const systemEventLogger = getSystemEventLogger();
|
|
482
|
-
systemEventLogger.logApprovalDenied({
|
|
483
|
-
approvalId: this.pendingRequest.id,
|
|
484
|
-
actionType: this.pendingRequest.type,
|
|
485
|
-
actionDescription: this.pendingRequest.description,
|
|
486
|
-
decidedBy: 'user',
|
|
487
|
-
reason: 'Cancelled by user',
|
|
488
|
-
});
|
|
489
|
-
this.resolveApproval(response);
|
|
490
|
-
}
|
|
491
|
-
this.pendingRequest = null;
|
|
492
|
-
this.resolveApproval = null;
|
|
493
|
-
}
|
|
494
|
-
/**
|
|
495
|
-
* Gets the approval history
|
|
496
|
-
* @returns A copy of the approval history
|
|
497
|
-
*/
|
|
498
|
-
getHistory() {
|
|
499
|
-
return {
|
|
500
|
-
requests: [...this.history.requests],
|
|
501
|
-
responses: [...this.history.responses],
|
|
502
|
-
};
|
|
503
|
-
}
|
|
504
|
-
/**
|
|
505
|
-
* Gets statistics about approval history
|
|
506
|
-
* @returns Object containing approval statistics
|
|
507
|
-
*/
|
|
508
|
-
getStatistics() {
|
|
509
|
-
const approved = this.history.responses.filter((r) => r.approved).length;
|
|
510
|
-
const autoApproved = this.history.responses.filter((r) => r.approved && r.reason?.includes('Auto-approved')).length;
|
|
511
|
-
return {
|
|
512
|
-
totalRequests: this.history.requests.length,
|
|
513
|
-
approved,
|
|
514
|
-
rejected: this.history.responses.filter((r) => !r.approved).length,
|
|
515
|
-
autoApproved,
|
|
516
|
-
};
|
|
517
|
-
}
|
|
518
|
-
/**
|
|
519
|
-
* Clears the approval history
|
|
520
|
-
*/
|
|
521
|
-
clearHistory() {
|
|
522
|
-
this.history = { requests: [], responses: [] };
|
|
523
|
-
logger.debug('Approval history cleared');
|
|
524
|
-
}
|
|
525
|
-
// ==========================================================================
|
|
526
|
-
// Plan Approval Methods
|
|
527
|
-
// ==========================================================================
|
|
528
|
-
/**
|
|
529
|
-
* Requests approval for an implementation plan.
|
|
530
|
-
* Emits 'plan-approval-required' event and waits for user response.
|
|
531
|
-
*
|
|
532
|
-
* @param plan - The implementation plan requiring approval
|
|
533
|
-
* @param context - The gathered project context
|
|
534
|
-
* @param complexity - The complexity classification result
|
|
535
|
-
* @returns Promise resolving to the plan approval response
|
|
536
|
-
*/
|
|
537
|
-
async requestPlanApproval(plan, context, complexity, completedTaskIds) {
|
|
538
|
-
const request = {
|
|
539
|
-
id: uuidv4(),
|
|
540
|
-
timestamp: formatTimestamp(),
|
|
541
|
-
plan,
|
|
542
|
-
context,
|
|
543
|
-
complexity,
|
|
544
|
-
completedTaskIds,
|
|
545
|
-
};
|
|
546
|
-
this.pendingPlanApproval = request;
|
|
547
|
-
logger.info('Plan approval requested', {
|
|
548
|
-
planId: plan.id,
|
|
549
|
-
taskCount: plan.tasks.length,
|
|
550
|
-
totalComplexity: plan.totalComplexity,
|
|
551
|
-
});
|
|
552
|
-
// Log to system events
|
|
553
|
-
const systemEventLogger = getSystemEventLogger();
|
|
554
|
-
systemEventLogger.logPlanApprovalRequested(plan.id);
|
|
555
|
-
// Emit event for UI to display the plan approval dialog
|
|
556
|
-
this.eventEmitter.emit('plan-approval-required', { request });
|
|
557
|
-
// Wait for user response
|
|
558
|
-
return new Promise((resolve) => {
|
|
559
|
-
this.resolvePlanApprovalPromise = resolve;
|
|
560
|
-
});
|
|
561
|
-
}
|
|
562
|
-
/**
|
|
563
|
-
* Resolves a pending plan approval request with the user's choice.
|
|
564
|
-
*
|
|
565
|
-
* @param choice - The user's approval choice
|
|
566
|
-
* @param modifications - Optional modifications if choice is 'edit'
|
|
567
|
-
* @param clarifications - Optional clarifications if choice is 'clarify'
|
|
568
|
-
*/
|
|
569
|
-
resolvePlanApproval(choice, modifications, clarifications) {
|
|
570
|
-
if (!this.pendingPlanApproval || !this.resolvePlanApprovalPromise) {
|
|
571
|
-
logger.warn('No pending plan approval request to resolve');
|
|
572
|
-
return;
|
|
573
|
-
}
|
|
574
|
-
const response = {
|
|
575
|
-
requestId: this.pendingPlanApproval.id,
|
|
576
|
-
approved: choice === 'approve' || choice === 'approve-compact' || choice === 'approve-auto-edits',
|
|
577
|
-
timestamp: formatTimestamp(),
|
|
578
|
-
choice,
|
|
579
|
-
modifications,
|
|
580
|
-
clarifications,
|
|
581
|
-
};
|
|
582
|
-
logger.info('Plan approval resolved', {
|
|
583
|
-
planId: this.pendingPlanApproval.plan.id,
|
|
584
|
-
choice,
|
|
585
|
-
approved: response.approved,
|
|
586
|
-
});
|
|
587
|
-
// Log to system events
|
|
588
|
-
const systemEventLogger = getSystemEventLogger();
|
|
589
|
-
systemEventLogger.logPlanApprovalResolved(this.pendingPlanApproval.plan.id, choice);
|
|
590
|
-
// Emit resolution event
|
|
591
|
-
this.eventEmitter.emit('plan-approval-resolved', {
|
|
592
|
-
requestId: this.pendingPlanApproval.id,
|
|
593
|
-
choice,
|
|
594
|
-
modifications,
|
|
595
|
-
clarifications,
|
|
596
|
-
});
|
|
597
|
-
this.resolvePlanApprovalPromise(response);
|
|
598
|
-
this.pendingPlanApproval = null;
|
|
599
|
-
this.resolvePlanApprovalPromise = null;
|
|
600
|
-
}
|
|
601
|
-
/**
|
|
602
|
-
* Gets the currently pending plan approval request.
|
|
603
|
-
* @returns The pending plan approval request or null
|
|
604
|
-
*/
|
|
605
|
-
getPendingPlanApproval() {
|
|
606
|
-
return this.pendingPlanApproval;
|
|
607
|
-
}
|
|
608
|
-
/**
|
|
609
|
-
* Checks if there is a pending plan approval request.
|
|
610
|
-
* @returns True if there is a pending plan approval
|
|
611
|
-
*/
|
|
612
|
-
hasPendingPlanApproval() {
|
|
613
|
-
return this.pendingPlanApproval !== null;
|
|
614
|
-
}
|
|
615
|
-
/**
|
|
616
|
-
* Cancels the pending plan approval request.
|
|
617
|
-
*/
|
|
618
|
-
cancelPendingPlanApproval() {
|
|
619
|
-
if (this.pendingPlanApproval && this.resolvePlanApprovalPromise) {
|
|
620
|
-
const response = {
|
|
621
|
-
requestId: this.pendingPlanApproval.id,
|
|
622
|
-
approved: false,
|
|
623
|
-
timestamp: formatTimestamp(),
|
|
624
|
-
choice: 'reject',
|
|
625
|
-
};
|
|
626
|
-
logger.info('Plan approval cancelled', {
|
|
627
|
-
planId: this.pendingPlanApproval.plan.id,
|
|
628
|
-
});
|
|
629
|
-
// Log to system events
|
|
630
|
-
const systemEventLogger = getSystemEventLogger();
|
|
631
|
-
systemEventLogger.logPlanApprovalResolved(this.pendingPlanApproval.plan.id, 'reject');
|
|
632
|
-
this.resolvePlanApprovalPromise(response);
|
|
633
|
-
}
|
|
634
|
-
this.pendingPlanApproval = null;
|
|
635
|
-
this.resolvePlanApprovalPromise = null;
|
|
636
|
-
}
|
|
637
|
-
// ==========================================================================
|
|
638
|
-
// Clarification Wizard Methods
|
|
639
|
-
// ==========================================================================
|
|
640
|
-
/**
|
|
641
|
-
* Requests clarification from the user via the wizard UI.
|
|
642
|
-
* Used when complexity classifier determines CLARIFICATION mode.
|
|
643
|
-
*
|
|
644
|
-
* @param taskSummary - Brief description of the task
|
|
645
|
-
* @param questions - The clarification questions to ask
|
|
646
|
-
* @param reasoning - The reasoning from complexity classifier
|
|
647
|
-
* @returns Promise resolving to the clarification wizard response
|
|
648
|
-
*/
|
|
649
|
-
async requestClarification(taskSummary, questions, reasoning) {
|
|
650
|
-
const request = {
|
|
651
|
-
id: uuidv4(),
|
|
652
|
-
timestamp: formatTimestamp(),
|
|
653
|
-
taskSummary,
|
|
654
|
-
questions,
|
|
655
|
-
reasoning,
|
|
656
|
-
};
|
|
657
|
-
this.pendingClarificationWizard = request;
|
|
658
|
-
logger.info('Clarification wizard requested', {
|
|
659
|
-
requestId: request.id,
|
|
660
|
-
questionCount: questions.length,
|
|
661
|
-
});
|
|
662
|
-
// Emit event for UI to display the clarification wizard
|
|
663
|
-
this.eventEmitter.emit('clarification-required', { request });
|
|
664
|
-
// Wait for user response
|
|
665
|
-
return new Promise((resolve) => {
|
|
666
|
-
this.resolveClarificationWizardPromise = resolve;
|
|
667
|
-
});
|
|
668
|
-
}
|
|
669
|
-
/**
|
|
670
|
-
* Resolves a pending clarification wizard request with the user's answers.
|
|
671
|
-
*
|
|
672
|
-
* @param answers - The user's answers to questions (null if cancelled)
|
|
673
|
-
*/
|
|
674
|
-
resolveClarificationWizard(answers) {
|
|
675
|
-
if (!this.pendingClarificationWizard || !this.resolveClarificationWizardPromise) {
|
|
676
|
-
logger.warn('No pending clarification wizard request to resolve');
|
|
677
|
-
return;
|
|
678
|
-
}
|
|
679
|
-
const completed = answers !== null;
|
|
680
|
-
const request = this.pendingClarificationWizard;
|
|
681
|
-
// Build ClarificationResult if completed
|
|
682
|
-
let result;
|
|
683
|
-
if (completed && answers) {
|
|
684
|
-
const qaRecords = request.questions.map((question, index) => ({
|
|
685
|
-
question,
|
|
686
|
-
answer: answers[index] || {
|
|
687
|
-
questionId: question.id,
|
|
688
|
-
answer: '',
|
|
689
|
-
answeredAt: formatTimestamp(),
|
|
690
|
-
},
|
|
691
|
-
}));
|
|
692
|
-
// Generate decision summary from answers
|
|
693
|
-
const decisionParts = answers.map((a, i) => {
|
|
694
|
-
const q = request.questions[i];
|
|
695
|
-
const answerText = Array.isArray(a.answer) ? a.answer.join(', ') : a.answer;
|
|
696
|
-
return `${q.category}: ${answerText}`;
|
|
697
|
-
});
|
|
698
|
-
result = {
|
|
699
|
-
qaRecords,
|
|
700
|
-
completedAt: formatTimestamp(),
|
|
701
|
-
duration: 0, // Could track actual duration if needed
|
|
702
|
-
decisionSummary: decisionParts.join('; '),
|
|
703
|
-
};
|
|
704
|
-
}
|
|
705
|
-
const response = {
|
|
706
|
-
requestId: request.id,
|
|
707
|
-
completed,
|
|
708
|
-
timestamp: formatTimestamp(),
|
|
709
|
-
answers: answers || undefined,
|
|
710
|
-
result,
|
|
711
|
-
};
|
|
712
|
-
logger.info('Clarification wizard resolved', {
|
|
713
|
-
requestId: request.id,
|
|
714
|
-
completed,
|
|
715
|
-
answerCount: answers?.length || 0,
|
|
716
|
-
});
|
|
717
|
-
this.resolveClarificationWizardPromise(response);
|
|
718
|
-
this.pendingClarificationWizard = null;
|
|
719
|
-
this.resolveClarificationWizardPromise = null;
|
|
720
|
-
}
|
|
721
|
-
/**
|
|
722
|
-
* Gets the currently pending clarification wizard request.
|
|
723
|
-
* @returns The pending request or null
|
|
724
|
-
*/
|
|
725
|
-
getPendingClarificationWizard() {
|
|
726
|
-
return this.pendingClarificationWizard;
|
|
727
|
-
}
|
|
728
|
-
/**
|
|
729
|
-
* Checks if there is a pending clarification wizard request.
|
|
730
|
-
* @returns True if there is a pending request
|
|
731
|
-
*/
|
|
732
|
-
hasPendingClarificationWizard() {
|
|
733
|
-
return this.pendingClarificationWizard !== null;
|
|
734
|
-
}
|
|
735
|
-
/**
|
|
736
|
-
* Cancels the pending clarification wizard request.
|
|
737
|
-
*/
|
|
738
|
-
cancelPendingClarificationWizard() {
|
|
739
|
-
if (this.pendingClarificationWizard && this.resolveClarificationWizardPromise) {
|
|
740
|
-
const response = {
|
|
741
|
-
requestId: this.pendingClarificationWizard.id,
|
|
742
|
-
completed: false,
|
|
743
|
-
timestamp: formatTimestamp(),
|
|
744
|
-
};
|
|
745
|
-
logger.info('Clarification wizard cancelled', {
|
|
746
|
-
requestId: this.pendingClarificationWizard.id,
|
|
747
|
-
});
|
|
748
|
-
this.resolveClarificationWizardPromise(response);
|
|
749
|
-
}
|
|
750
|
-
this.pendingClarificationWizard = null;
|
|
751
|
-
this.resolveClarificationWizardPromise = null;
|
|
752
|
-
}
|
|
753
|
-
/**
|
|
754
|
-
* Gets a specific approval request by ID
|
|
755
|
-
* @param requestId - The ID of the request to find
|
|
756
|
-
* @returns The request or undefined if not found
|
|
757
|
-
*/
|
|
758
|
-
getRequest(requestId) {
|
|
759
|
-
return this.history.requests.find((r) => r.id === requestId);
|
|
760
|
-
}
|
|
761
|
-
/**
|
|
762
|
-
* Gets the response for a specific request
|
|
763
|
-
* @param requestId - The ID of the request
|
|
764
|
-
* @returns The response or undefined if not found
|
|
765
|
-
*/
|
|
766
|
-
getResponse(requestId) {
|
|
767
|
-
return this.history.responses.find((r) => r.requestId === requestId);
|
|
768
|
-
}
|
|
769
|
-
/**
|
|
770
|
-
* Waits for user approval by emitting an event and returning a promise
|
|
771
|
-
* @param request - The approval request
|
|
772
|
-
* @returns Promise resolving to the approval response
|
|
773
|
-
*/
|
|
774
|
-
async waitForUserApproval(request) {
|
|
775
|
-
// Emit event for UI to handle
|
|
776
|
-
this.eventEmitter.emit('approval-required', { request });
|
|
777
|
-
return new Promise((resolve) => {
|
|
778
|
-
this.resolveApproval = resolve;
|
|
779
|
-
});
|
|
780
|
-
}
|
|
781
|
-
/**
|
|
782
|
-
* Determines if a request can be auto-approved based on configuration
|
|
783
|
-
* @param request - The approval request to evaluate
|
|
784
|
-
* @returns True if the request can be auto-approved
|
|
785
|
-
*/
|
|
786
|
-
canAutoApprove(request) {
|
|
787
|
-
// Session auto-approval takes precedence (user selected [A] in approval dialog)
|
|
788
|
-
// Only skip critical operations for safety
|
|
789
|
-
if (this.sessionAutoApprovalEnabled) {
|
|
790
|
-
if (request.riskLevel === 'critical') {
|
|
791
|
-
logger.debug('Session auto-approval: Skipping critical operation, requiring manual approval');
|
|
792
|
-
return false;
|
|
793
|
-
}
|
|
794
|
-
logger.debug('Session auto-approval: Auto-approving operation');
|
|
795
|
-
return true;
|
|
796
|
-
}
|
|
797
|
-
// File edits auto-approval: auto-approve file creates, modifies, and shell commands
|
|
798
|
-
if (this.fileEditsAutoApprovalEnabled) {
|
|
799
|
-
const autoApprovedOperations = ['file_create', 'file_modify', 'shell_command'];
|
|
800
|
-
if (autoApprovedOperations.includes(request.type)) {
|
|
801
|
-
// Still require manual approval for high-risk/critical shell commands (e.g., rm, delete)
|
|
802
|
-
if (request.type === 'shell_command' && (request.riskLevel === 'high' || request.riskLevel === 'critical')) {
|
|
803
|
-
logger.debug('File edits auto-approval: Skipping high-risk shell command, requiring manual approval');
|
|
804
|
-
}
|
|
805
|
-
else {
|
|
806
|
-
logger.debug('File edits auto-approval: Auto-approving operation');
|
|
807
|
-
return true;
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
}
|
|
811
|
-
// Check if this is a shell command with an approved prefix
|
|
812
|
-
if (request.type === 'shell_command' && request.details.command) {
|
|
813
|
-
if (this.isCommandPrefixApproved(request.details.command)) {
|
|
814
|
-
const prefix = this.getCommandPrefix(request.details.command);
|
|
815
|
-
logger.debug(`Command prefix '${prefix}' is approved, auto-approving`);
|
|
816
|
-
return true;
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
// Never auto-approve high-risk or critical operations
|
|
820
|
-
if (request.riskLevel === 'high' || request.riskLevel === 'critical') {
|
|
821
|
-
return false;
|
|
822
|
-
}
|
|
823
|
-
// Never auto-approve in strict mode
|
|
824
|
-
if (this.mode === ApprovalMode.STRICT) {
|
|
825
|
-
return false;
|
|
826
|
-
}
|
|
827
|
-
// Check file count threshold
|
|
828
|
-
if (request.details.affectedFiles !== undefined &&
|
|
829
|
-
request.details.affectedFiles > this.maxAutoApproveFiles) {
|
|
830
|
-
return false;
|
|
831
|
-
}
|
|
832
|
-
// Check line count threshold
|
|
833
|
-
const totalLines = (request.details.linesAdded || 0) + (request.details.linesRemoved || 0);
|
|
834
|
-
if (totalLines > this.maxAutoApproveLines) {
|
|
835
|
-
return false;
|
|
836
|
-
}
|
|
837
|
-
// Check if any file matches require-approval patterns
|
|
838
|
-
if (request.details.filePaths) {
|
|
839
|
-
for (const filePath of request.details.filePaths) {
|
|
840
|
-
if (matchesPattern(filePath, this.requireApprovalPatterns)) {
|
|
841
|
-
return false;
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
// SMART mode: auto-approve DIRECT complexity tasks with low risk and high confidence
|
|
846
|
-
if (this.mode === ApprovalMode.SMART) {
|
|
847
|
-
return this.canSmartAutoApprove(request);
|
|
848
|
-
}
|
|
849
|
-
// In manual mode, don't auto-approve unless explicitly configured
|
|
850
|
-
if (this.mode === ApprovalMode.MANUAL) {
|
|
851
|
-
return false;
|
|
852
|
-
}
|
|
853
|
-
return true;
|
|
854
|
-
}
|
|
855
|
-
/**
|
|
856
|
-
* Determines if a request can be auto-approved in SMART mode.
|
|
857
|
-
* SMART mode auto-approves when:
|
|
858
|
-
* - Complexity mode is DIRECT
|
|
859
|
-
* - Confidence is above threshold
|
|
860
|
-
* - Risk level is low
|
|
861
|
-
* - Operation is simple (file create, small modifications)
|
|
862
|
-
*
|
|
863
|
-
* @param request - The approval request to evaluate
|
|
864
|
-
* @returns True if SMART mode should auto-approve
|
|
865
|
-
*/
|
|
866
|
-
canSmartAutoApprove(request) {
|
|
867
|
-
// Get complexity context from the request details or the stored context
|
|
868
|
-
const complexityMode = request.details.complexityMode || this.currentComplexityMode;
|
|
869
|
-
const complexityConfidence = request.details.complexityConfidence ?? this.currentComplexityConfidence;
|
|
870
|
-
// If no complexity context available, fall back to requiring approval
|
|
871
|
-
if (!complexityMode) {
|
|
872
|
-
logger.debug('SMART mode: No complexity context available, requiring approval');
|
|
873
|
-
return false;
|
|
874
|
-
}
|
|
875
|
-
// Only auto-approve DIRECT mode tasks
|
|
876
|
-
if (complexityMode !== 'direct') {
|
|
877
|
-
logger.debug(`SMART mode: Complexity mode is ${complexityMode}, requiring approval`);
|
|
878
|
-
return false;
|
|
879
|
-
}
|
|
880
|
-
// Check confidence threshold
|
|
881
|
-
if (complexityConfidence < this.smartModeConfidenceThreshold) {
|
|
882
|
-
logger.debug(`SMART mode: Confidence ${complexityConfidence} below threshold ${this.smartModeConfidenceThreshold}, requiring approval`);
|
|
883
|
-
return false;
|
|
884
|
-
}
|
|
885
|
-
// Only auto-approve low-risk operations
|
|
886
|
-
if (request.riskLevel !== 'low') {
|
|
887
|
-
logger.debug(`SMART mode: Risk level is ${request.riskLevel}, requiring approval`);
|
|
888
|
-
return false;
|
|
889
|
-
}
|
|
890
|
-
// Additional safety: only auto-approve file creation and small modifications
|
|
891
|
-
const safeOperations = ['file_create', 'file_modify', 'file_rename'];
|
|
892
|
-
if (!safeOperations.includes(request.type)) {
|
|
893
|
-
logger.debug(`SMART mode: Operation type ${request.type} not safe for auto-approval`);
|
|
894
|
-
return false;
|
|
895
|
-
}
|
|
896
|
-
logger.info(`SMART mode: Auto-approving ${request.type} (complexity: ${complexityMode}, ` +
|
|
897
|
-
`confidence: ${complexityConfidence}%, risk: ${request.riskLevel})`);
|
|
898
|
-
return true;
|
|
899
|
-
}
|
|
900
|
-
/**
|
|
901
|
-
* Determines if a request should require explicit approval in auto mode
|
|
902
|
-
* @param request - The approval request to evaluate
|
|
903
|
-
* @returns True if the request should require approval
|
|
904
|
-
*/
|
|
905
|
-
shouldRequireApproval(request) {
|
|
906
|
-
// Check if any file matches require-approval patterns
|
|
907
|
-
if (request.details.filePaths) {
|
|
908
|
-
for (const filePath of request.details.filePaths) {
|
|
909
|
-
if (matchesPattern(filePath, this.requireApprovalPatterns)) {
|
|
910
|
-
return true;
|
|
911
|
-
}
|
|
912
|
-
// If not in auto-approve patterns and we have patterns configured, require approval
|
|
913
|
-
if (this.autoApprovePatterns.length > 0 &&
|
|
914
|
-
!matchesPattern(filePath, this.autoApprovePatterns)) {
|
|
915
|
-
return true;
|
|
916
|
-
}
|
|
917
|
-
}
|
|
918
|
-
}
|
|
919
|
-
// Medium risk operations should require approval
|
|
920
|
-
if (request.riskLevel === 'medium') {
|
|
921
|
-
return true;
|
|
922
|
-
}
|
|
923
|
-
// Shell commands always require approval unless explicitly auto-approved
|
|
924
|
-
if (request.type === 'shell_command') {
|
|
925
|
-
return true;
|
|
926
|
-
}
|
|
927
|
-
// Git operations that push changes require approval
|
|
928
|
-
if (request.type === 'git_push') {
|
|
929
|
-
return true;
|
|
930
|
-
}
|
|
931
|
-
return false;
|
|
932
|
-
}
|
|
933
|
-
/**
|
|
934
|
-
* Assesses the risk level of an operation
|
|
935
|
-
* @param type - The type of operation
|
|
936
|
-
* @param details - The operation details
|
|
937
|
-
* @returns The assessed risk level
|
|
938
|
-
*/
|
|
939
|
-
assessRiskLevel(type, details) {
|
|
940
|
-
// Critical operations
|
|
941
|
-
if (type === 'git_push') {
|
|
942
|
-
return 'critical';
|
|
943
|
-
}
|
|
944
|
-
// High-risk operations
|
|
945
|
-
if (type === 'file_delete') {
|
|
946
|
-
return 'high';
|
|
947
|
-
}
|
|
948
|
-
// Multi-file operations scale with file count
|
|
949
|
-
if (type === 'multi_file_operation') {
|
|
950
|
-
const fileCount = details.affectedFiles || 0;
|
|
951
|
-
if (fileCount > 10)
|
|
952
|
-
return 'high';
|
|
953
|
-
if (fileCount > 5)
|
|
954
|
-
return 'medium';
|
|
955
|
-
}
|
|
956
|
-
// Shell commands are medium risk by default
|
|
957
|
-
if (type === 'shell_command') {
|
|
958
|
-
// Check for potentially dangerous commands
|
|
959
|
-
const command = details.command?.toLowerCase() || '';
|
|
960
|
-
if (command.includes('rm ') ||
|
|
961
|
-
command.includes('delete') ||
|
|
962
|
-
command.includes('drop') ||
|
|
963
|
-
command.includes('truncate')) {
|
|
964
|
-
return 'high';
|
|
965
|
-
}
|
|
966
|
-
return 'medium';
|
|
967
|
-
}
|
|
968
|
-
// Git commits are medium risk
|
|
969
|
-
if (type === 'git_commit') {
|
|
970
|
-
return 'medium';
|
|
971
|
-
}
|
|
972
|
-
// File modifications scale with change size
|
|
973
|
-
if (type === 'file_modify') {
|
|
974
|
-
const totalLines = (details.linesAdded || 0) + (details.linesRemoved || 0);
|
|
975
|
-
if (totalLines > 200)
|
|
976
|
-
return 'medium';
|
|
977
|
-
if (totalLines > 100)
|
|
978
|
-
return 'low';
|
|
979
|
-
}
|
|
980
|
-
// File creation and rename are generally low risk
|
|
981
|
-
if (type === 'file_create' || type === 'file_rename') {
|
|
982
|
-
return 'low';
|
|
983
|
-
}
|
|
984
|
-
return 'low';
|
|
985
|
-
}
|
|
986
|
-
/**
|
|
987
|
-
* Estimates the impact of an operation for display
|
|
988
|
-
* @param type - The type of operation
|
|
989
|
-
* @param details - The operation details
|
|
990
|
-
* @returns A human-readable impact description
|
|
991
|
-
*/
|
|
992
|
-
estimateImpact(_type, details) {
|
|
993
|
-
const parts = [];
|
|
994
|
-
if (details.affectedFiles !== undefined) {
|
|
995
|
-
parts.push(`${details.affectedFiles} file${details.affectedFiles === 1 ? '' : 's'}`);
|
|
996
|
-
}
|
|
997
|
-
if (details.linesAdded !== undefined && details.linesAdded > 0) {
|
|
998
|
-
parts.push(`+${details.linesAdded} line${details.linesAdded === 1 ? '' : 's'}`);
|
|
999
|
-
}
|
|
1000
|
-
if (details.linesRemoved !== undefined && details.linesRemoved > 0) {
|
|
1001
|
-
parts.push(`-${details.linesRemoved} line${details.linesRemoved === 1 ? '' : 's'}`);
|
|
1002
|
-
}
|
|
1003
|
-
if (details.command) {
|
|
1004
|
-
const truncatedCommand = details.command.length > 50
|
|
1005
|
-
? details.command.substring(0, 47) + '...'
|
|
1006
|
-
: details.command;
|
|
1007
|
-
parts.push(`Command: ${truncatedCommand}`);
|
|
1008
|
-
}
|
|
1009
|
-
if (parts.length === 0) {
|
|
1010
|
-
return 'Minimal impact';
|
|
1011
|
-
}
|
|
1012
|
-
return parts.join(', ');
|
|
1013
|
-
}
|
|
1014
|
-
/**
|
|
1015
|
-
* Creates an approval response object
|
|
1016
|
-
* @param request - The original request
|
|
1017
|
-
* @param approved - Whether the request was approved
|
|
1018
|
-
* @param reason - Optional reason for the decision
|
|
1019
|
-
* @returns The approval response
|
|
1020
|
-
*/
|
|
1021
|
-
createResponse(request, approved, reason) {
|
|
1022
|
-
return {
|
|
1023
|
-
requestId: request.id,
|
|
1024
|
-
approved,
|
|
1025
|
-
timestamp: formatTimestamp(),
|
|
1026
|
-
mode: this.mode,
|
|
1027
|
-
reason,
|
|
1028
|
-
};
|
|
1029
|
-
}
|
|
1030
|
-
}
|
|
1031
|
-
// Singleton instance
|
|
1032
|
-
let approvalManagerInstance = null;
|
|
1033
|
-
/**
|
|
1034
|
-
* Gets the singleton ApprovalManager instance
|
|
1035
|
-
* @returns The ApprovalManager instance
|
|
1036
|
-
*/
|
|
1037
|
-
export function getApprovalManager() {
|
|
1038
|
-
if (!approvalManagerInstance) {
|
|
1039
|
-
approvalManagerInstance = new ApprovalManager();
|
|
1040
|
-
}
|
|
1041
|
-
return approvalManagerInstance;
|
|
1042
|
-
}
|
|
1043
|
-
export { ApprovalManager };
|
|
1044
|
-
//# sourceMappingURL=approval-manager.js.map
|