@office-ai/aioncli-core 0.26.0 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/CONTRIBUTING.md +19 -10
- package/dist/docs/admin/enterprise-controls.md +115 -0
- package/dist/docs/architecture.md +3 -3
- package/dist/docs/assets/monitoring-dashboard-logs.png +0 -0
- package/dist/docs/assets/monitoring-dashboard-metrics.png +0 -0
- package/dist/docs/assets/monitoring-dashboard-overview.png +0 -0
- package/dist/docs/bedrock-integration-plan.md +595 -0
- package/dist/docs/changelogs/index.md +187 -0
- package/dist/docs/changelogs/latest.md +299 -209
- package/dist/docs/changelogs/preview.md +353 -115
- package/dist/docs/cli/checkpointing.md +2 -3
- package/dist/docs/cli/cli-reference.md +115 -0
- package/dist/docs/cli/commands.md +360 -247
- package/dist/docs/cli/creating-skills.md +80 -0
- package/dist/docs/cli/custom-commands.md +12 -9
- package/dist/docs/cli/enterprise.md +25 -5
- package/dist/docs/cli/gemini-md.md +20 -12
- package/dist/docs/cli/headless.md +34 -372
- package/dist/docs/cli/index.md +123 -63
- package/dist/docs/cli/keyboard-shortcuts.md +95 -84
- package/dist/docs/cli/model-routing.md +7 -2
- package/dist/docs/cli/model.md +1 -1
- package/dist/docs/cli/plan-mode.md +190 -0
- package/dist/docs/cli/rewind.md +51 -0
- package/dist/docs/cli/sandbox.md +4 -3
- package/dist/docs/cli/session-management.md +61 -44
- package/dist/docs/cli/settings.md +95 -61
- package/dist/docs/cli/skills.md +49 -71
- package/dist/docs/cli/system-prompt.md +32 -0
- package/dist/docs/cli/telemetry.md +75 -4
- package/dist/docs/cli/themes.md +85 -53
- package/dist/docs/cli/tutorials/automation.md +187 -0
- package/dist/docs/cli/tutorials/file-management.md +142 -0
- package/dist/docs/cli/tutorials/mcp-setup.md +105 -0
- package/dist/docs/cli/tutorials/memory-management.md +126 -0
- package/dist/docs/cli/tutorials/session-management.md +105 -0
- package/dist/docs/cli/tutorials/shell-commands.md +107 -0
- package/dist/docs/cli/tutorials/skills-getting-started.md +36 -58
- package/dist/docs/cli/tutorials/task-planning.md +93 -0
- package/dist/docs/cli/tutorials/web-tools.md +78 -0
- package/dist/docs/cli/uninstall.md +18 -0
- package/dist/docs/core/concepts.md +137 -0
- package/dist/docs/core/index.md +6 -0
- package/dist/docs/core/memport.md +2 -0
- package/dist/docs/core/policy-engine.md +57 -7
- package/dist/docs/core/remote-agents.md +84 -0
- package/dist/docs/core/subagents.md +191 -0
- package/dist/docs/extensions/best-practices.md +188 -0
- package/dist/docs/extensions/index.md +38 -270
- package/dist/docs/extensions/reference.md +265 -0
- package/dist/docs/extensions/releasing.md +154 -0
- package/dist/docs/extensions/writing-extensions.md +292 -0
- package/dist/docs/get-started/authentication.md +162 -0
- package/dist/docs/get-started/configuration-v1.md +5 -11
- package/dist/docs/get-started/configuration.md +228 -99
- package/dist/docs/get-started/examples.md +39 -119
- package/dist/docs/get-started/gemini-3.md +2 -17
- package/dist/docs/get-started/index.md +6 -4
- package/dist/docs/get-started/installation.md +110 -77
- package/dist/docs/hooks/best-practices.md +219 -398
- package/dist/docs/hooks/index.md +99 -622
- package/dist/docs/hooks/reference.md +269 -115
- package/dist/docs/hooks/writing-hooks.md +203 -779
- package/dist/docs/index.md +146 -147
- package/dist/docs/local-development.md +1 -1
- package/dist/docs/releases.md +3 -3
- package/dist/docs/sidebar.json +105 -217
- package/dist/docs/tools/activate-skill.md +43 -0
- package/dist/docs/tools/ask-user.md +95 -0
- package/dist/docs/tools/file-system.md +48 -139
- package/dist/docs/tools/index.md +92 -85
- package/dist/docs/tools/internal-docs.md +46 -0
- package/dist/docs/tools/mcp-server.md +29 -5
- package/dist/docs/tools/memory.md +21 -40
- package/dist/docs/tools/planning.md +55 -0
- package/dist/docs/tools/shell.md +45 -89
- package/dist/docs/tools/todos.md +22 -44
- package/dist/docs/tools/web-fetch.md +22 -46
- package/dist/docs/tools/web-search.md +19 -29
- package/dist/docs/tos-privacy.md +1 -1
- package/dist/docs/troubleshooting.md +20 -5
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.d.ts +4 -5
- package/dist/src/agents/a2a-client-manager.js +9 -131
- package/dist/src/agents/a2a-client-manager.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.test.js +10 -27
- package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
- package/dist/src/agents/a2aUtils.d.ts +3 -2
- package/dist/src/agents/a2aUtils.js +28 -26
- package/dist/src/agents/a2aUtils.js.map +1 -1
- package/dist/src/agents/a2aUtils.test.js +9 -9
- package/dist/src/agents/a2aUtils.test.js.map +1 -1
- package/dist/src/agents/acknowledgedAgents.d.ts +18 -0
- package/dist/src/agents/acknowledgedAgents.js +58 -0
- package/dist/src/agents/acknowledgedAgents.js.map +1 -0
- package/dist/src/agents/acknowledgedAgents.test.d.ts +6 -0
- package/dist/src/agents/acknowledgedAgents.test.js +70 -0
- package/dist/src/agents/acknowledgedAgents.test.js.map +1 -0
- package/dist/src/agents/agent-scheduler.d.ts +35 -0
- package/dist/src/agents/agent-scheduler.js +30 -0
- package/dist/src/agents/agent-scheduler.js.map +1 -0
- package/dist/src/agents/agent-scheduler.test.d.ts +6 -0
- package/dist/src/agents/agent-scheduler.test.js +56 -0
- package/dist/src/agents/agent-scheduler.test.js.map +1 -0
- package/dist/src/agents/agentLoader.d.ts +88 -0
- package/dist/src/agents/agentLoader.js +394 -0
- package/dist/src/agents/agentLoader.js.map +1 -0
- package/dist/src/agents/agentLoader.test.d.ts +6 -0
- package/dist/src/agents/agentLoader.test.js +458 -0
- package/dist/src/agents/agentLoader.test.js.map +1 -0
- package/dist/src/agents/auth-provider/base-provider.d.ts +40 -0
- package/dist/src/agents/auth-provider/base-provider.js +43 -0
- package/dist/src/agents/auth-provider/base-provider.js.map +1 -0
- package/dist/src/agents/auth-provider/base-provider.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/base-provider.test.js +107 -0
- package/dist/src/agents/auth-provider/base-provider.test.js.map +1 -0
- package/dist/src/agents/auth-provider/factory.d.ts +27 -0
- package/dist/src/agents/auth-provider/factory.js +161 -0
- package/dist/src/agents/auth-provider/factory.js.map +1 -0
- package/dist/src/agents/auth-provider/factory.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/factory.test.js +344 -0
- package/dist/src/agents/auth-provider/factory.test.js.map +1 -0
- package/dist/src/agents/auth-provider/types.d.ts +74 -0
- package/dist/src/agents/auth-provider/types.js +7 -0
- package/dist/src/agents/auth-provider/types.js.map +1 -0
- package/dist/src/agents/auth-provider/value-resolver.d.ts +29 -0
- package/dist/src/agents/auth-provider/value-resolver.js +85 -0
- package/dist/src/agents/auth-provider/value-resolver.js.map +1 -0
- package/dist/src/agents/auth-provider/value-resolver.test.d.ts +6 -0
- package/dist/src/agents/auth-provider/value-resolver.test.js +100 -0
- package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -0
- package/dist/src/agents/cli-help-agent.d.ts +24 -0
- package/dist/src/agents/cli-help-agent.js +80 -0
- package/dist/src/agents/cli-help-agent.js.map +1 -0
- package/dist/src/agents/cli-help-agent.test.d.ts +6 -0
- package/dist/src/agents/cli-help-agent.test.js +53 -0
- package/dist/src/agents/cli-help-agent.test.js.map +1 -0
- package/dist/src/agents/codebase-investigator.d.ts +2 -1
- package/dist/src/agents/codebase-investigator.js +68 -39
- package/dist/src/agents/codebase-investigator.js.map +1 -1
- package/dist/src/agents/codebase-investigator.test.js +37 -9
- package/dist/src/agents/codebase-investigator.test.js.map +1 -1
- package/dist/src/agents/generalist-agent.d.ts +21 -0
- package/dist/src/agents/generalist-agent.js +60 -0
- package/dist/src/agents/generalist-agent.js.map +1 -0
- package/dist/src/agents/generalist-agent.test.d.ts +6 -0
- package/dist/src/agents/generalist-agent.test.js +32 -0
- package/dist/src/agents/generalist-agent.test.js.map +1 -0
- package/dist/src/agents/introspection-agent.d.ts +2 -2
- package/dist/src/agents/local-executor.d.ts +2 -0
- package/dist/src/agents/local-executor.js +186 -90
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +431 -256
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +15 -5
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/registry.d.ts +24 -8
- package/dist/src/agents/registry.js +193 -96
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +509 -58
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/registry_acknowledgement.test.d.ts +6 -0
- package/dist/src/agents/registry_acknowledgement.test.js +130 -0
- package/dist/src/agents/registry_acknowledgement.test.js.map +1 -0
- package/dist/src/agents/remote-invocation.js +12 -14
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/remote-invocation.test.js +16 -4
- package/dist/src/agents/remote-invocation.test.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.js +1 -3
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.test.js +18 -27
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
- package/dist/src/agents/subagent-tool.d.ts +15 -0
- package/dist/src/agents/subagent-tool.js +57 -0
- package/dist/src/agents/subagent-tool.js.map +1 -0
- package/dist/src/agents/subagent-tool.test.d.ts +6 -0
- package/dist/src/agents/subagent-tool.test.js +97 -0
- package/dist/src/agents/subagent-tool.test.js.map +1 -0
- package/dist/src/agents/types.d.ts +37 -22
- package/dist/src/agents/types.js +12 -0
- package/dist/src/agents/types.js.map +1 -1
- package/dist/src/availability/fallbackIntegration.test.d.ts +6 -0
- package/dist/src/availability/fallbackIntegration.test.js +57 -0
- package/dist/src/availability/fallbackIntegration.test.js.map +1 -0
- package/dist/src/availability/policyCatalog.d.ts +3 -0
- package/dist/src/availability/policyCatalog.js +29 -5
- package/dist/src/availability/policyCatalog.js.map +1 -1
- package/dist/src/availability/policyCatalog.test.js +20 -1
- package/dist/src/availability/policyCatalog.test.js.map +1 -1
- package/dist/src/availability/policyHelpers.js +40 -11
- package/dist/src/availability/policyHelpers.js.map +1 -1
- package/dist/src/availability/policyHelpers.test.js +72 -2
- package/dist/src/availability/policyHelpers.test.js.map +1 -1
- package/dist/src/availability/testUtils.js +1 -0
- package/dist/src/availability/testUtils.js.map +1 -1
- package/dist/src/code_assist/admin/admin_controls.d.ts +49 -0
- package/dist/src/code_assist/admin/admin_controls.js +197 -0
- package/dist/src/code_assist/admin/admin_controls.js.map +1 -0
- package/dist/src/code_assist/admin/admin_controls.test.d.ts +6 -0
- package/dist/src/code_assist/admin/admin_controls.test.js +589 -0
- package/dist/src/code_assist/admin/admin_controls.test.js.map +1 -0
- package/dist/src/code_assist/admin/mcpUtils.d.ts +22 -0
- package/dist/src/code_assist/admin/mcpUtils.js +53 -0
- package/dist/src/code_assist/admin/mcpUtils.js.map +1 -0
- package/dist/src/code_assist/admin/mcpUtils.test.d.ts +6 -0
- package/dist/src/code_assist/admin/mcpUtils.test.js +101 -0
- package/dist/src/code_assist/admin/mcpUtils.test.js.map +1 -0
- package/dist/src/code_assist/codeAssist.js +2 -2
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/codeAssist.test.d.ts +1 -1
- package/dist/src/code_assist/codeAssist.test.js +10 -6
- package/dist/src/code_assist/codeAssist.test.js.map +1 -1
- package/dist/src/code_assist/converter.js +8 -3
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +8 -0
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments.d.ts +1 -1
- package/dist/src/code_assist/experiments/experiments.js +22 -0
- package/dist/src/code_assist/experiments/experiments.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments.test.js +1 -0
- package/dist/src/code_assist/experiments/experiments.test.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments_local.test.d.ts +6 -0
- package/dist/src/code_assist/experiments/experiments_local.test.js +115 -0
- package/dist/src/code_assist/experiments/experiments_local.test.js.map +1 -0
- package/dist/src/code_assist/experiments/flagNames.d.ts +7 -0
- package/dist/src/code_assist/experiments/flagNames.js +7 -0
- package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.js +4 -4
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +10 -3
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +7 -4
- package/dist/src/code_assist/server.js +20 -4
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +18 -5
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.d.ts +35 -3
- package/dist/src/code_assist/setup.js +98 -16
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +322 -5
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/code_assist/telemetry.js +2 -1
- package/dist/src/code_assist/telemetry.js.map +1 -1
- package/dist/src/code_assist/telemetry.test.js +2 -1
- package/dist/src/code_assist/telemetry.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +255 -24
- package/dist/src/code_assist/types.js +57 -7
- package/dist/src/code_assist/types.js.map +1 -1
- package/dist/src/commands/memory.d.ts +11 -0
- package/dist/src/commands/memory.js +81 -0
- package/dist/src/commands/memory.js.map +1 -0
- package/dist/src/commands/memory.test.d.ts +6 -0
- package/dist/src/commands/memory.test.js +155 -0
- package/dist/src/commands/memory.test.js.map +1 -0
- package/dist/src/commands/restore.js +1 -0
- package/dist/src/commands/restore.js.map +1 -1
- package/dist/src/config/config.d.ts +267 -58
- package/dist/src/config/config.js +663 -164
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.d.ts +1 -1
- package/dist/src/config/config.test.js +585 -166
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/constants.d.ts +4 -0
- package/dist/src/config/constants.js +8 -0
- package/dist/src/config/constants.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +27 -8
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/memory.d.ts +14 -0
- package/dist/src/config/memory.js +28 -0
- package/dist/src/config/memory.js.map +1 -0
- package/dist/src/config/memory.test.d.ts +6 -0
- package/dist/src/config/memory.test.js +82 -0
- package/dist/src/config/memory.test.js.map +1 -0
- package/dist/src/config/models.d.ts +77 -6
- package/dist/src/config/models.js +240 -23
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +153 -47
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/config/projectRegistry.d.ts +36 -0
- package/dist/src/config/projectRegistry.js +262 -0
- package/dist/src/config/projectRegistry.js.map +1 -0
- package/dist/src/config/projectRegistry.test.d.ts +6 -0
- package/dist/src/config/projectRegistry.test.js +219 -0
- package/dist/src/config/projectRegistry.test.js.map +1 -0
- package/dist/src/config/storage.d.ts +23 -1
- package/dist/src/config/storage.js +104 -15
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +118 -2
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/config/storageMigration.d.ts +16 -0
- package/dist/src/config/storageMigration.js +42 -0
- package/dist/src/config/storageMigration.js.map +1 -0
- package/dist/src/config/storageMigration.test.d.ts +6 -0
- package/dist/src/config/storageMigration.test.js +70 -0
- package/dist/src/config/storageMigration.test.js.map +1 -0
- package/dist/src/confirmation-bus/message-bus.js +3 -33
- package/dist/src/confirmation-bus/message-bus.js.map +1 -1
- package/dist/src/confirmation-bus/types.d.ts +95 -20
- package/dist/src/confirmation-bus/types.js +9 -3
- package/dist/src/confirmation-bus/types.js.map +1 -1
- package/dist/src/core/anthropicContentGenerator.d.ts +3 -2
- package/dist/src/core/anthropicContentGenerator.js +2 -2
- package/dist/src/core/anthropicContentGenerator.js.map +1 -1
- package/dist/src/core/baseLlmClient.d.ts +9 -0
- package/dist/src/core/baseLlmClient.js +9 -8
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +17 -7
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/bedrockContentGenerator.d.ts +73 -0
- package/dist/src/core/bedrockContentGenerator.js +628 -0
- package/dist/src/core/bedrockContentGenerator.js.map +1 -0
- package/dist/src/core/client.d.ts +13 -4
- package/dist/src/core/client.js +132 -41
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +333 -79
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +16 -3
- package/dist/src/core/contentGenerator.js +56 -2
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.d.ts +1 -1
- package/dist/src/core/contentGenerator.test.js +127 -24
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.d.ts +4 -36
- package/dist/src/core/coreToolHookTriggers.js +42 -150
- package/dist/src/core/coreToolHookTriggers.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.test.js +62 -94
- package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +1 -8
- package/dist/src/core/coreToolScheduler.js +160 -125
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +480 -62
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/fakeContentGenerator.d.ts +4 -2
- package/dist/src/core/fakeContentGenerator.js +9 -2
- package/dist/src/core/fakeContentGenerator.js.map +1 -1
- package/dist/src/core/fakeContentGenerator.test.js +8 -7
- package/dist/src/core/fakeContentGenerator.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +31 -3
- package/dist/src/core/geminiChat.js +144 -34
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +175 -50
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiChat_network_retry.test.js +146 -16
- package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
- package/dist/src/core/logger.js +11 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +2 -4
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +7 -3
- package/dist/src/core/loggingContentGenerator.js +40 -21
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.test.d.ts +1 -1
- package/dist/src/core/loggingContentGenerator.test.js +50 -8
- package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.d.ts +3 -2
- package/dist/src/core/openaiContentGenerator.js +18 -10
- package/dist/src/core/openaiContentGenerator.js.map +1 -1
- package/dist/src/core/openaiContentGenerator.test.js +57 -4
- package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
- package/dist/src/core/prompts-substitution.test.d.ts +6 -0
- package/dist/src/core/prompts-substitution.test.js +109 -0
- package/dist/src/core/prompts-substitution.test.js.map +1 -0
- package/dist/src/core/prompts.d.ts +11 -9
- package/dist/src/core/prompts.js +14 -405
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +290 -56
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/recordingContentGenerator.d.ts +5 -3
- package/dist/src/core/recordingContentGenerator.js +12 -5
- package/dist/src/core/recordingContentGenerator.js.map +1 -1
- package/dist/src/core/recordingContentGenerator.test.js +5 -4
- package/dist/src/core/recordingContentGenerator.test.js.map +1 -1
- package/dist/src/core/tokenLimits.js +6 -10
- package/dist/src/core/tokenLimits.js.map +1 -1
- package/dist/src/core/tokenLimits.test.js +8 -4
- package/dist/src/core/tokenLimits.test.js.map +1 -1
- package/dist/src/core/turn.d.ts +10 -2
- package/dist/src/core/turn.js +36 -17
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +82 -2
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/fallback/handler.js +1 -1
- package/dist/src/fallback/handler.js.map +1 -1
- package/dist/src/fallback/handler.test.js +10 -12
- package/dist/src/fallback/handler.test.js.map +1 -1
- package/dist/src/fallback/types.d.ts +9 -0
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookAggregator.js +16 -4
- package/dist/src/hooks/hookAggregator.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.d.ts +10 -16
- package/dist/src/hooks/hookEventHandler.js +35 -281
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.test.js +189 -4
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
- package/dist/src/hooks/hookRegistry.js +8 -3
- package/dist/src/hooks/hookRegistry.js.map +1 -1
- package/dist/src/hooks/hookRegistry.test.js +31 -2
- package/dist/src/hooks/hookRegistry.test.js.map +1 -1
- package/dist/src/hooks/hookRunner.js +21 -18
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookSystem.d.ts +59 -0
- package/dist/src/hooks/hookSystem.js +206 -6
- package/dist/src/hooks/hookSystem.js.map +1 -1
- package/dist/src/hooks/hookSystem.test.js +20 -9
- package/dist/src/hooks/hookSystem.test.js.map +1 -1
- package/dist/src/hooks/hookTranslator.js +13 -6
- package/dist/src/hooks/hookTranslator.js.map +1 -1
- package/dist/src/hooks/index.d.ts +0 -1
- package/dist/src/hooks/index.js +0 -2
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/trustedHooks.js +2 -0
- package/dist/src/hooks/trustedHooks.js.map +1 -1
- package/dist/src/hooks/types.d.ts +49 -1
- package/dist/src/hooks/types.js +43 -19
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/hooks/types.test.js +13 -29
- package/dist/src/hooks/types.test.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +49 -0
- package/dist/src/ide/detect-ide.js +56 -3
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +70 -0
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +0 -10
- package/dist/src/ide/ide-client.js +31 -199
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +39 -191
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ide-connection-utils.d.ts +27 -0
- package/dist/src/ide/ide-connection-utils.js +195 -0
- package/dist/src/ide/ide-connection-utils.js.map +1 -0
- package/dist/src/ide/ide-connection-utils.test.d.ts +6 -0
- package/dist/src/ide/ide-connection-utils.test.js +372 -0
- package/dist/src/ide/ide-connection-utils.test.js.map +1 -0
- package/dist/src/ide/ide-installer.js +76 -5
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +40 -2
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/ide/types.d.ts +46 -46
- package/dist/src/index.d.ts +30 -2
- package/dist/src/index.js +31 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +10 -3
- package/dist/src/mcp/oauth-provider.js +49 -14
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/oauth-provider.test.js +180 -1
- package/dist/src/mcp/oauth-provider.test.js.map +1 -1
- package/dist/src/mcp/oauth-token-storage.js +3 -0
- package/dist/src/mcp/oauth-token-storage.js.map +1 -1
- package/dist/src/mcp/oauth-utils.d.ts +13 -4
- package/dist/src/mcp/oauth-utils.js +25 -19
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/oauth-utils.test.js +13 -8
- package/dist/src/mcp/oauth-utils.test.js.map +1 -1
- package/dist/src/mcp/sa-impersonation-provider.js +3 -1
- package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
- package/dist/src/mcp/token-storage/file-token-storage.js +6 -2
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +4 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js +12 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.test.js.map +1 -1
- package/dist/src/mcp/token-storage/keychain-token-storage.js +8 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js +10 -5
- package/dist/src/mcp/token-storage/keychain-token-storage.test.js.map +1 -1
- package/dist/src/output/json-formatter.test.js +2 -0
- package/dist/src/output/json-formatter.test.js.map +1 -1
- package/dist/src/output/stream-json-formatter.test.js +4 -0
- package/dist/src/output/stream-json-formatter.test.js.map +1 -1
- package/dist/src/policy/config.d.ts +5 -3
- package/dist/src/policy/config.js +137 -64
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/config.test.js +218 -12
- package/dist/src/policy/config.test.js.map +1 -1
- package/dist/src/policy/persistence.test.js +31 -11
- package/dist/src/policy/persistence.test.js.map +1 -1
- package/dist/src/policy/policies/plan.toml +56 -0
- package/dist/src/policy/policies/read-only.toml +1 -11
- package/dist/src/policy/policies/yolo.toml +13 -2
- package/dist/src/policy/policy-engine.d.ts +16 -11
- package/dist/src/policy/policy-engine.js +208 -101
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +538 -199
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/policy-updater.test.js +20 -6
- package/dist/src/policy/policy-updater.test.js.map +1 -1
- package/dist/src/policy/shell-safety.test.js +371 -8
- package/dist/src/policy/shell-safety.test.js.map +1 -1
- package/dist/src/policy/stable-stringify.js +1 -0
- package/dist/src/policy/stable-stringify.js.map +1 -1
- package/dist/src/policy/toml-loader.d.ts +5 -5
- package/dist/src/policy/toml-loader.js +65 -22
- package/dist/src/policy/toml-loader.js.map +1 -1
- package/dist/src/policy/toml-loader.test.js +88 -9
- package/dist/src/policy/toml-loader.test.js.map +1 -1
- package/dist/src/policy/types.d.ts +26 -1
- package/dist/src/policy/types.js +8 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/policy/utils.d.ts +5 -0
- package/dist/src/policy/utils.js +32 -1
- package/dist/src/policy/utils.js.map +1 -1
- package/dist/src/policy/utils.test.js +67 -7
- package/dist/src/policy/utils.test.js.map +1 -1
- package/dist/src/prompts/promptProvider.d.ts +19 -0
- package/dist/src/prompts/promptProvider.js +174 -0
- package/dist/src/prompts/promptProvider.js.map +1 -0
- package/dist/src/prompts/promptProvider.test.d.ts +6 -0
- package/dist/src/prompts/promptProvider.test.js +71 -0
- package/dist/src/prompts/promptProvider.test.js.map +1 -0
- package/dist/src/prompts/snippets.d.ts +86 -0
- package/dist/src/prompts/snippets.js +573 -0
- package/dist/src/prompts/snippets.js.map +1 -0
- package/dist/src/prompts/snippets.legacy.d.ts +91 -0
- package/dist/src/prompts/snippets.legacy.js +573 -0
- package/dist/src/prompts/snippets.legacy.js.map +1 -0
- package/dist/src/prompts/utils.d.ts +23 -0
- package/dist/src/prompts/utils.js +82 -0
- package/dist/src/prompts/utils.js.map +1 -0
- package/dist/src/routing/modelRouterService.js +18 -8
- package/dist/src/routing/modelRouterService.js.map +1 -1
- package/dist/src/routing/modelRouterService.test.js +14 -6
- package/dist/src/routing/modelRouterService.test.js.map +1 -1
- package/dist/src/routing/routingStrategy.d.ts +2 -0
- package/dist/src/routing/strategies/classifierStrategy.js +14 -9
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js +72 -7
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/compositeStrategy.js +1 -0
- package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
- package/dist/src/routing/strategies/defaultStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/defaultStrategy.js +5 -4
- package/dist/src/routing/strategies/defaultStrategy.js.map +1 -1
- package/dist/src/routing/strategies/defaultStrategy.test.js +58 -4
- package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js +3 -3
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.test.js +13 -1
- package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +13 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.js +188 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.d.ts +6 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +401 -0
- package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -0
- package/dist/src/routing/strategies/overrideStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js +6 -6
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.test.js +13 -3
- package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
- package/dist/src/safety/built-in.js +1 -0
- package/dist/src/safety/built-in.js.map +1 -1
- package/dist/src/safety/context-builder.js +3 -1
- package/dist/src/safety/context-builder.js.map +1 -1
- package/dist/src/scheduler/confirmation.d.ts +50 -0
- package/dist/src/scheduler/confirmation.js +204 -0
- package/dist/src/scheduler/confirmation.js.map +1 -0
- package/dist/src/scheduler/confirmation.test.d.ts +6 -0
- package/dist/src/scheduler/confirmation.test.js +310 -0
- package/dist/src/scheduler/confirmation.test.js.map +1 -0
- package/dist/src/scheduler/policy.d.ts +33 -0
- package/dist/src/scheduler/policy.js +119 -0
- package/dist/src/scheduler/policy.js.map +1 -0
- package/dist/src/scheduler/policy.test.d.ts +6 -0
- package/dist/src/scheduler/policy.test.js +419 -0
- package/dist/src/scheduler/policy.test.js.map +1 -0
- package/dist/src/scheduler/scheduler.d.ts +63 -0
- package/dist/src/scheduler/scheduler.js +371 -0
- package/dist/src/scheduler/scheduler.js.map +1 -0
- package/dist/src/scheduler/scheduler.test.d.ts +6 -0
- package/dist/src/scheduler/scheduler.test.js +937 -0
- package/dist/src/scheduler/scheduler.test.js.map +1 -0
- package/dist/src/scheduler/scheduler_waiting_callback.test.d.ts +6 -0
- package/dist/src/scheduler/scheduler_waiting_callback.test.js +62 -0
- package/dist/src/scheduler/scheduler_waiting_callback.test.js.map +1 -0
- package/dist/src/scheduler/state-manager.d.ts +74 -0
- package/dist/src/scheduler/state-manager.js +368 -0
- package/dist/src/scheduler/state-manager.js.map +1 -0
- package/dist/src/scheduler/state-manager.test.d.ts +6 -0
- package/dist/src/scheduler/state-manager.test.js +433 -0
- package/dist/src/scheduler/state-manager.test.js.map +1 -0
- package/dist/src/scheduler/tool-executor.js +25 -27
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/tool-executor.test.js +26 -25
- package/dist/src/scheduler/tool-executor.test.js.map +1 -1
- package/dist/src/scheduler/tool-modifier.d.ts +23 -0
- package/dist/src/scheduler/tool-modifier.js +53 -0
- package/dist/src/scheduler/tool-modifier.js.map +1 -0
- package/dist/src/scheduler/tool-modifier.test.d.ts +6 -0
- package/dist/src/scheduler/tool-modifier.test.js +179 -0
- package/dist/src/scheduler/tool-modifier.test.js.map +1 -0
- package/dist/src/scheduler/types.d.ts +51 -8
- package/dist/src/scheduler/types.js +15 -1
- package/dist/src/scheduler/types.js.map +1 -1
- package/dist/src/services/chatCompressionService.d.ts +5 -1
- package/dist/src/services/chatCompressionService.js +169 -23
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/chatCompressionService.test.js +382 -18
- package/dist/src/services/chatCompressionService.test.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +23 -3
- package/dist/src/services/chatRecordingService.js +137 -7
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +450 -186
- package/dist/src/services/chatRecordingService.test.js.map +1 -1
- package/dist/src/services/contextManager.d.ts +7 -4
- package/dist/src/services/contextManager.js +43 -18
- package/dist/src/services/contextManager.js.map +1 -1
- package/dist/src/services/contextManager.test.js +54 -27
- package/dist/src/services/contextManager.test.js.map +1 -1
- package/dist/src/services/environmentSanitization.js +4 -3
- package/dist/src/services/environmentSanitization.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +14 -2
- package/dist/src/services/fileDiscoveryService.js +79 -7
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.test.js +142 -10
- package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
- package/dist/src/services/gitService.d.ts +2 -1
- package/dist/src/services/gitService.js +16 -6
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +26 -10
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.js +23 -4
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +24 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/modelConfig.integration.test.js +2 -2
- package/dist/src/services/modelConfig.integration.test.js.map +1 -1
- package/dist/src/services/modelConfigService.d.ts +39 -4
- package/dist/src/services/modelConfigService.js +153 -76
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/modelConfigService.test.js +175 -0
- package/dist/src/services/modelConfigService.test.js.map +1 -1
- package/dist/src/services/modelConfigServiceTestUtils.js +3 -1
- package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -1
- package/dist/src/services/sessionSummaryService.js +2 -0
- package/dist/src/services/sessionSummaryService.js.map +1 -1
- package/dist/src/services/sessionSummaryService.test.js +1 -1
- package/dist/src/services/sessionSummaryService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +48 -0
- package/dist/src/services/shellExecutionService.js +339 -97
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +132 -17
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +26 -8
- package/dist/src/services/test-data/resolved-aliases.golden.json +26 -8
- package/dist/src/services/toolOutputMaskingService.d.ts +43 -0
- package/dist/src/services/toolOutputMaskingService.js +286 -0
- package/dist/src/services/toolOutputMaskingService.js.map +1 -0
- package/dist/src/services/toolOutputMaskingService.test.d.ts +6 -0
- package/dist/src/services/toolOutputMaskingService.test.js +546 -0
- package/dist/src/services/toolOutputMaskingService.test.js.map +1 -0
- package/dist/src/skills/builtin/skill-creator/SKILL.md +382 -0
- package/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +239 -0
- package/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +106 -0
- package/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +131 -0
- package/dist/src/skills/skillLoader.d.ts +3 -0
- package/dist/src/skills/skillLoader.js +73 -12
- package/dist/src/skills/skillLoader.js.map +1 -1
- package/dist/src/skills/skillLoader.test.d.ts +5 -0
- package/dist/src/skills/skillLoader.test.js +195 -1
- package/dist/src/skills/skillLoader.test.js.map +1 -1
- package/dist/src/skills/skillManager.d.ts +25 -3
- package/dist/src/skills/skillManager.js +76 -11
- package/dist/src/skills/skillManager.js.map +1 -1
- package/dist/src/skills/skillManager.test.js +209 -9
- package/dist/src/skills/skillManager.test.js.map +1 -1
- package/dist/src/skills/skillManagerAlias.test.d.ts +6 -0
- package/dist/src/skills/skillManagerAlias.test.js +140 -0
- package/dist/src/skills/skillManagerAlias.test.js.map +1 -0
- package/dist/src/telemetry/activity-monitor.js +1 -0
- package/dist/src/telemetry/activity-monitor.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +25 -4
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +207 -12
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +210 -6
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +23 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +61 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/file-exporters.js +2 -1
- package/dist/src/telemetry/file-exporters.js.map +1 -1
- package/dist/src/telemetry/file-exporters.test.d.ts +6 -0
- package/dist/src/telemetry/file-exporters.test.js +142 -0
- package/dist/src/telemetry/file-exporters.test.js.map +1 -0
- package/dist/src/telemetry/gcp-exporters.js +1 -0
- package/dist/src/telemetry/gcp-exporters.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +3 -2
- package/dist/src/telemetry/index.js +3 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/integration.test.circular.js +2 -1
- package/dist/src/telemetry/integration.test.circular.js.map +1 -1
- package/dist/src/telemetry/llmRole.d.ts +18 -0
- package/dist/src/telemetry/llmRole.js +20 -0
- package/dist/src/telemetry/llmRole.js.map +1 -0
- package/dist/src/telemetry/loggers.d.ts +8 -1
- package/dist/src/telemetry/loggers.js +113 -10
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.circular.js +5 -2
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +169 -19
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/memory-monitor.test.js +1 -0
- package/dist/src/telemetry/memory-monitor.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +39 -1
- package/dist/src/telemetry/metrics.js +105 -4
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +84 -4
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sanitize.test.js +2 -0
- package/dist/src/telemetry/sanitize.test.js.map +1 -1
- package/dist/src/telemetry/sdk.js +24 -0
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.js +5 -1
- package/dist/src/telemetry/sdk.test.js.map +1 -1
- package/dist/src/telemetry/semantic.js +92 -0
- package/dist/src/telemetry/semantic.js.map +1 -1
- package/dist/src/telemetry/semantic.truncation.test.d.ts +1 -0
- package/dist/src/telemetry/semantic.truncation.test.js +92 -0
- package/dist/src/telemetry/semantic.truncation.test.js.map +1 -0
- package/dist/src/telemetry/telemetryAttributes.js +5 -0
- package/dist/src/telemetry/telemetryAttributes.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +98 -15
- package/dist/src/telemetry/types.js +227 -16
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +16 -0
- package/dist/src/telemetry/uiTelemetry.js +39 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +29 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/mock-message-bus.d.ts +1 -19
- package/dist/src/test-utils/mock-message-bus.js +5 -65
- package/dist/src/test-utils/mock-message-bus.js.map +1 -1
- package/dist/src/test-utils/mock-tool.d.ts +1 -0
- package/dist/src/test-utils/mock-tool.js +1 -0
- package/dist/src/test-utils/mock-tool.js.map +1 -1
- package/dist/src/test-utils/mockWorkspaceContext.js +1 -0
- package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -1
- package/dist/src/tools/activate-skill.d.ts +1 -0
- package/dist/src/tools/activate-skill.js +28 -25
- package/dist/src/tools/activate-skill.js.map +1 -1
- package/dist/src/tools/activate-skill.test.js +24 -6
- package/dist/src/tools/activate-skill.test.js.map +1 -1
- package/dist/src/tools/ask-user.d.ts +29 -0
- package/dist/src/tools/ask-user.js +141 -0
- package/dist/src/tools/ask-user.js.map +1 -0
- package/dist/src/tools/ask-user.test.d.ts +6 -0
- package/dist/src/tools/ask-user.test.js +446 -0
- package/dist/src/tools/ask-user.test.js.map +1 -0
- package/dist/src/tools/confirmation-policy.test.js +21 -0
- package/dist/src/tools/confirmation-policy.test.js.map +1 -1
- package/dist/src/tools/constants.d.ts +7 -0
- package/dist/src/tools/constants.js +8 -0
- package/dist/src/tools/constants.js.map +1 -0
- package/dist/src/tools/definitions/base-declarations.d.ts +26 -0
- package/dist/src/tools/definitions/base-declarations.js +30 -0
- package/dist/src/tools/definitions/base-declarations.js.map +1 -0
- package/dist/src/tools/definitions/coreTools.d.ts +36 -0
- package/dist/src/tools/definitions/coreTools.js +143 -0
- package/dist/src/tools/definitions/coreTools.js.map +1 -0
- package/dist/src/tools/definitions/coreToolsModelSnapshots.test.d.ts +6 -0
- package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js +82 -0
- package/dist/src/tools/definitions/coreToolsModelSnapshots.test.js.map +1 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +30 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js +135 -0
- package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -0
- package/dist/src/tools/definitions/model-family-sets/default-legacy.d.ts +11 -0
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js +575 -0
- package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -0
- package/dist/src/tools/definitions/model-family-sets/gemini-3.d.ts +14 -0
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js +578 -0
- package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -0
- package/dist/src/tools/definitions/modelFamilyService.d.ts +14 -0
- package/dist/src/tools/definitions/modelFamilyService.js +29 -0
- package/dist/src/tools/definitions/modelFamilyService.js.map +1 -0
- package/dist/src/tools/definitions/resolver.d.ts +15 -0
- package/dist/src/tools/definitions/resolver.js +27 -0
- package/dist/src/tools/definitions/resolver.js.map +1 -0
- package/dist/src/tools/definitions/resolver.test.d.ts +6 -0
- package/dist/src/tools/definitions/resolver.test.js +58 -0
- package/dist/src/tools/definitions/resolver.test.js.map +1 -0
- package/dist/src/tools/definitions/types.d.ts +44 -0
- package/dist/src/tools/definitions/types.js +7 -0
- package/dist/src/tools/definitions/types.js.map +1 -0
- package/dist/src/tools/diffOptions.d.ts +1 -1
- package/dist/src/tools/diffOptions.js +7 -3
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.js +17 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -1
- package/dist/src/tools/edit.d.ts +1 -0
- package/dist/src/tools/edit.js +52 -82
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +96 -1
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/enter-plan-mode.d.ts +25 -0
- package/dist/src/tools/enter-plan-mode.js +69 -0
- package/dist/src/tools/enter-plan-mode.js.map +1 -0
- package/dist/src/tools/enter-plan-mode.test.d.ts +6 -0
- package/dist/src/tools/enter-plan-mode.test.js +102 -0
- package/dist/src/tools/enter-plan-mode.test.js.map +1 -0
- package/dist/src/tools/exit-plan-mode.d.ts +33 -0
- package/dist/src/tools/exit-plan-mode.js +173 -0
- package/dist/src/tools/exit-plan-mode.js.map +1 -0
- package/dist/src/tools/exit-plan-mode.test.d.ts +6 -0
- package/dist/src/tools/exit-plan-mode.test.js +311 -0
- package/dist/src/tools/exit-plan-mode.test.js.map +1 -0
- package/dist/src/tools/get-internal-docs.d.ts +1 -0
- package/dist/src/tools/get-internal-docs.js +17 -27
- package/dist/src/tools/get-internal-docs.js.map +1 -1
- package/dist/src/tools/glob.d.ts +1 -0
- package/dist/src/tools/glob.js +15 -36
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +219 -280
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +18 -8
- package/dist/src/tools/grep.js +273 -247
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +165 -16
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/line-endings.test.d.ts +6 -0
- package/dist/src/tools/line-endings.test.js +209 -0
- package/dist/src/tools/line-endings.test.js.map +1 -0
- package/dist/src/tools/ls.d.ts +1 -0
- package/dist/src/tools/ls.js +18 -37
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +25 -3
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +18 -5
- package/dist/src/tools/mcp-client-manager.js +118 -37
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +124 -16
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +18 -7
- package/dist/src/tools/mcp-client.js +137 -42
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +248 -29
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +26 -4
- package/dist/src/tools/mcp-tool.js +17 -5
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +5 -5
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +2 -7
- package/dist/src/tools/memoryTool.js +54 -80
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +62 -114
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +3 -3
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +2 -0
- package/dist/src/tools/read-file.js +26 -30
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +90 -3
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +1 -0
- package/dist/src/tools/read-many-files.js +21 -63
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +43 -1
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +20 -3
- package/dist/src/tools/ripGrep.js +217 -189
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +745 -567
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +1 -0
- package/dist/src/tools/shell.js +8 -3
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +248 -11
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +4 -0
- package/dist/src/tools/tool-error.js +4 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +27 -17
- package/dist/src/tools/tool-names.js +59 -20
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-names.test.js +55 -2
- package/dist/src/tools/tool-names.test.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +10 -2
- package/dist/src/tools/tool-registry.js +58 -11
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +113 -1
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +52 -5
- package/dist/src/tools/tools.js +35 -18
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +1 -0
- package/dist/src/tools/web-fetch.js +12 -12
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +1 -0
- package/dist/src/tools/web-search.js +9 -11
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +1 -4
- package/dist/src/tools/write-file.js +42 -35
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +105 -18
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +1 -30
- package/dist/src/tools/write-todos.js +5 -123
- package/dist/src/tools/write-todos.js.map +1 -1
- package/dist/src/tools/xcode-mcp-fix-transport.d.ts +30 -0
- package/dist/src/tools/xcode-mcp-fix-transport.js +82 -0
- package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -0
- package/dist/src/tools/xcode-mcp-fix-transport.test.d.ts +1 -0
- package/dist/src/tools/xcode-mcp-fix-transport.test.js +98 -0
- package/dist/src/tools/xcode-mcp-fix-transport.test.js.map +1 -0
- package/dist/src/utils/apiConversionUtils.d.ts +12 -0
- package/dist/src/utils/apiConversionUtils.js +46 -0
- package/dist/src/utils/apiConversionUtils.js.map +1 -0
- package/dist/src/utils/apiConversionUtils.test.d.ts +6 -0
- package/dist/src/utils/apiConversionUtils.test.js +150 -0
- package/dist/src/utils/apiConversionUtils.test.js.map +1 -0
- package/dist/src/utils/authConsent.d.ts +10 -0
- package/dist/src/utils/authConsent.js +52 -0
- package/dist/src/utils/authConsent.js.map +1 -0
- package/dist/src/utils/authConsent.test.d.ts +6 -0
- package/dist/src/utils/authConsent.test.js +74 -0
- package/dist/src/utils/authConsent.test.js.map +1 -0
- package/dist/src/utils/bfsFileSearch.js +2 -0
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +6 -1
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/checkpointUtils.d.ts +2 -2
- package/dist/src/utils/checkpointUtils.js +2 -0
- package/dist/src/utils/checkpointUtils.js.map +1 -1
- package/dist/src/utils/checks.d.ts +19 -0
- package/dist/src/utils/checks.js +24 -0
- package/dist/src/utils/checks.js.map +1 -0
- package/dist/src/utils/checks.test.d.ts +6 -0
- package/dist/src/utils/checks.test.js +29 -0
- package/dist/src/utils/checks.test.js.map +1 -0
- package/dist/src/utils/constants.d.ts +7 -0
- package/dist/src/utils/constants.js +8 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/deadlineTimer.d.ts +36 -0
- package/dist/src/utils/deadlineTimer.js +87 -0
- package/dist/src/utils/deadlineTimer.js.map +1 -0
- package/dist/src/utils/deadlineTimer.test.d.ts +6 -0
- package/dist/src/utils/deadlineTimer.test.js +64 -0
- package/dist/src/utils/deadlineTimer.test.js.map +1 -0
- package/dist/src/utils/editCorrector.d.ts +3 -3
- package/dist/src/utils/editCorrector.js +37 -10
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +49 -20
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.d.ts +17 -3
- package/dist/src/utils/editor.js +84 -15
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +160 -17
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/environmentContext.js +9 -20
- package/dist/src/utils/environmentContext.js.map +1 -1
- package/dist/src/utils/environmentContext.test.js +31 -14
- package/dist/src/utils/environmentContext.test.js.map +1 -1
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +13 -3
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +23 -1
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/events.d.ts +107 -3
- package/dist/src/utils/events.js +65 -1
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/events.test.js +43 -0
- package/dist/src/utils/events.test.js.map +1 -1
- package/dist/src/utils/extensionLoader.js +2 -0
- package/dist/src/utils/extensionLoader.js.map +1 -1
- package/dist/src/utils/extensionLoader.test.js +21 -0
- package/dist/src/utils/extensionLoader.test.js.map +1 -1
- package/dist/src/utils/fastAckHelper.d.ts +30 -0
- package/dist/src/utils/fastAckHelper.js +142 -0
- package/dist/src/utils/fastAckHelper.js.map +1 -0
- package/dist/src/utils/fastAckHelper.test.d.ts +6 -0
- package/dist/src/utils/fastAckHelper.test.js +115 -0
- package/dist/src/utils/fastAckHelper.test.js.map +1 -0
- package/dist/src/utils/fileDiffUtils.d.ts +18 -0
- package/dist/src/utils/fileDiffUtils.js +37 -0
- package/dist/src/utils/fileDiffUtils.js.map +1 -0
- package/dist/src/utils/fileDiffUtils.test.d.ts +6 -0
- package/dist/src/utils/fileDiffUtils.test.js +84 -0
- package/dist/src/utils/fileDiffUtils.test.js.map +1 -0
- package/dist/src/utils/fileUtils.d.ts +27 -3
- package/dist/src/utils/fileUtils.js +104 -60
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +129 -109
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.d.ts +1 -0
- package/dist/src/utils/filesearch/crawler.js +18 -1
- package/dist/src/utils/filesearch/crawler.js.map +1 -1
- package/dist/src/utils/filesearch/crawler.test.js +101 -82
- package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +4 -3
- package/dist/src/utils/filesearch/fileSearch.js +5 -4
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +172 -84
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.d.ts +2 -7
- package/dist/src/utils/filesearch/ignore.js +7 -14
- package/dist/src/utils/filesearch/ignore.js.map +1 -1
- package/dist/src/utils/filesearch/ignore.test.js +30 -32
- package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
- package/dist/src/utils/formatters.d.ts +1 -1
- package/dist/src/utils/formatters.js +1 -1
- package/dist/src/utils/formatters.js.map +1 -1
- package/dist/src/utils/formatters.test.js +5 -5
- package/dist/src/utils/formatters.test.js.map +1 -1
- package/dist/src/utils/generateContentResponseUtilities.js +3 -0
- package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
- package/dist/src/utils/getFolderStructure.test.js +5 -2
- package/dist/src/utils/getFolderStructure.test.js.map +1 -1
- package/dist/src/utils/getPty.js +3 -0
- package/dist/src/utils/getPty.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.js +10 -11
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/googleErrors.js +4 -0
- package/dist/src/utils/googleErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.d.ts +23 -9
- package/dist/src/utils/googleQuotaErrors.js +90 -23
- package/dist/src/utils/googleQuotaErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.test.js +168 -23
- package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
- package/dist/src/utils/headless.d.ts +26 -0
- package/dist/src/utils/headless.js +33 -0
- package/dist/src/utils/headless.js.map +1 -0
- package/dist/src/utils/headless.test.d.ts +6 -0
- package/dist/src/utils/headless.test.js +167 -0
- package/dist/src/utils/headless.test.js.map +1 -0
- package/dist/src/utils/httpErrors.js +4 -1
- package/dist/src/utils/httpErrors.js.map +1 -1
- package/dist/src/utils/ignoreFileParser.d.ts +30 -0
- package/dist/src/utils/ignoreFileParser.js +100 -0
- package/dist/src/utils/ignoreFileParser.js.map +1 -0
- package/dist/src/utils/ignoreFileParser.test.d.ts +6 -0
- package/dist/src/utils/ignoreFileParser.test.js +167 -0
- package/dist/src/utils/ignoreFileParser.test.js.map +1 -0
- package/dist/src/utils/installationManager.test.js +11 -3
- package/dist/src/utils/installationManager.test.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.js +9 -9
- package/dist/src/utils/llm-edit-fixer.js.map +1 -1
- package/dist/src/utils/llm-edit-fixer.test.js +2 -2
- package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.d.ts +11 -3
- package/dist/src/utils/memoryDiscovery.js +122 -102
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +163 -109
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +7 -24
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +3 -0
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/package.js +10 -3
- package/dist/src/utils/package.js.map +1 -1
- package/dist/src/utils/package.test.d.ts +6 -0
- package/dist/src/utils/package.test.js +57 -0
- package/dist/src/utils/package.test.js.map +1 -0
- package/dist/src/utils/partUtils.js +2 -1
- package/dist/src/utils/partUtils.js.map +1 -1
- package/dist/src/utils/paths.d.ts +33 -9
- package/dist/src/utils/paths.js +88 -29
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +206 -110
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/planUtils.d.ts +29 -0
- package/dist/src/utils/planUtils.js +55 -0
- package/dist/src/utils/planUtils.js.map +1 -0
- package/dist/src/utils/planUtils.test.d.ts +6 -0
- package/dist/src/utils/planUtils.test.js +76 -0
- package/dist/src/utils/planUtils.test.js.map +1 -0
- package/dist/src/utils/process-utils.d.ts +32 -0
- package/dist/src/utils/process-utils.js +88 -0
- package/dist/src/utils/process-utils.js.map +1 -0
- package/dist/src/utils/process-utils.test.d.ts +6 -0
- package/dist/src/utils/process-utils.test.js +103 -0
- package/dist/src/utils/process-utils.test.js.map +1 -0
- package/dist/src/utils/promptIdContext.d.ts +6 -0
- package/dist/src/utils/promptIdContext.js +15 -0
- package/dist/src/utils/promptIdContext.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.js +3 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/dist/src/utils/retry.d.ts +4 -0
- package/dist/src/utils/retry.js +84 -5
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +70 -3
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/safeJsonStringify.js +1 -0
- package/dist/src/utils/safeJsonStringify.js.map +1 -1
- package/dist/src/utils/schemaValidator.d.ts +8 -1
- package/dist/src/utils/schemaValidator.js +78 -11
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/schemaValidator.test.js +77 -0
- package/dist/src/utils/schemaValidator.test.js.map +1 -1
- package/dist/src/utils/security.d.ts +16 -0
- package/dist/src/utils/security.js +91 -0
- package/dist/src/utils/security.js.map +1 -0
- package/dist/src/utils/security.test.d.ts +1 -0
- package/dist/src/utils/security.test.js +121 -0
- package/dist/src/utils/security.test.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +14 -0
- package/dist/src/utils/shell-utils.integration.test.d.ts +1 -0
- package/dist/src/utils/shell-utils.integration.test.js +58 -0
- package/dist/src/utils/shell-utils.integration.test.js.map +1 -0
- package/dist/src/utils/shell-utils.js +191 -30
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +108 -1
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/summarizer.js +2 -1
- package/dist/src/utils/summarizer.js.map +1 -1
- package/dist/src/utils/terminal.d.ts +4 -0
- package/dist/src/utils/terminal.js +12 -0
- package/dist/src/utils/terminal.js.map +1 -1
- package/dist/src/utils/terminalSerializer.d.ts +1 -1
- package/dist/src/utils/terminalSerializer.js +25 -13
- package/dist/src/utils/terminalSerializer.js.map +1 -1
- package/dist/src/utils/testUtils.js +1 -0
- package/dist/src/utils/testUtils.js.map +1 -1
- package/dist/src/utils/textUtils.d.ts +14 -0
- package/dist/src/utils/textUtils.js +23 -0
- package/dist/src/utils/textUtils.js.map +1 -1
- package/dist/src/utils/textUtils.test.js +18 -1
- package/dist/src/utils/textUtils.test.js.map +1 -1
- package/dist/src/utils/tokenCalculation.d.ts +2 -2
- package/dist/src/utils/tokenCalculation.js +87 -21
- package/dist/src/utils/tokenCalculation.js.map +1 -1
- package/dist/src/utils/tokenCalculation.test.js +189 -76
- package/dist/src/utils/tokenCalculation.test.js.map +1 -1
- package/dist/src/utils/tool-utils.d.ts +26 -0
- package/dist/src/utils/tool-utils.js +36 -0
- package/dist/src/utils/tool-utils.js.map +1 -1
- package/dist/src/utils/tool-utils.test.js +73 -3
- package/dist/src/utils/tool-utils.test.js.map +1 -1
- package/dist/src/utils/toolCallContext.d.ts +35 -0
- package/dist/src/utils/toolCallContext.js +29 -0
- package/dist/src/utils/toolCallContext.js.map +1 -0
- package/dist/src/utils/toolCallContext.test.d.ts +6 -0
- package/dist/src/utils/toolCallContext.test.js +68 -0
- package/dist/src/utils/toolCallContext.test.js.map +1 -0
- package/dist/src/utils/userAccountManager.js +1 -0
- package/dist/src/utils/userAccountManager.js.map +1 -1
- package/dist/src/utils/userAccountManager.test.js +5 -5
- package/dist/src/utils/userAccountManager.test.js.map +1 -1
- package/dist/src/utils/version.d.ts +2 -0
- package/dist/src/utils/version.js +14 -3
- package/dist/src/utils/version.js.map +1 -1
- package/dist/src/utils/version.test.js +15 -1
- package/dist/src/utils/version.test.js.map +1 -1
- package/dist/src/utils/workspaceContext.d.ts +28 -0
- package/dist/src/utils/workspaceContext.js +74 -9
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +56 -1
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +25 -15
|
@@ -12,11 +12,11 @@ import { AuthType } from './contentGenerator.js';
|
|
|
12
12
|
import { TerminalQuotaError } from '../utils/googleQuotaErrors.js';
|
|
13
13
|
import {} from '../utils/retry.js';
|
|
14
14
|
import { uiTelemetryService } from '../telemetry/uiTelemetry.js';
|
|
15
|
-
import { HookSystem } from '../hooks/hookSystem.js';
|
|
16
15
|
import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
|
|
17
16
|
import { createAvailabilityServiceMock } from '../availability/testUtils.js';
|
|
18
17
|
import * as policyHelpers from '../availability/policyHelpers.js';
|
|
19
18
|
import { makeResolvedModelConfig } from '../services/modelConfigServiceTestUtils.js';
|
|
19
|
+
import { LlmRole } from '../telemetry/types.js';
|
|
20
20
|
// Mock fs module to prevent actual file system operations during tests
|
|
21
21
|
const mockFileSystem = new Map();
|
|
22
22
|
vi.mock('node:fs', () => {
|
|
@@ -105,7 +105,6 @@ describe('GeminiChat', () => {
|
|
|
105
105
|
getTelemetryLogPromptsEnabled: () => true,
|
|
106
106
|
getUsageStatisticsEnabled: () => true,
|
|
107
107
|
getDebugMode: () => false,
|
|
108
|
-
getPreviewFeatures: () => false,
|
|
109
108
|
getContentGeneratorConfig: vi.fn().mockImplementation(() => ({
|
|
110
109
|
authType: 'oauth-personal',
|
|
111
110
|
model: currentModel,
|
|
@@ -165,9 +164,7 @@ describe('GeminiChat', () => {
|
|
|
165
164
|
setSimulate429(false);
|
|
166
165
|
// Reset history for each test by creating a new instance
|
|
167
166
|
chat = new GeminiChat(mockConfig);
|
|
168
|
-
mockConfig.getHookSystem = vi
|
|
169
|
-
.fn()
|
|
170
|
-
.mockReturnValue(new HookSystem(mockConfig));
|
|
167
|
+
mockConfig.getHookSystem = vi.fn().mockReturnValue(undefined);
|
|
171
168
|
});
|
|
172
169
|
afterEach(() => {
|
|
173
170
|
vi.restoreAllMocks();
|
|
@@ -190,6 +187,27 @@ describe('GeminiChat', () => {
|
|
|
190
187
|
expect(chatEmpty.getLastPromptTokenCount()).toBe(0);
|
|
191
188
|
});
|
|
192
189
|
});
|
|
190
|
+
describe('setHistory', () => {
|
|
191
|
+
it('should recalculate lastPromptTokenCount when history is updated', () => {
|
|
192
|
+
const initialHistory = [
|
|
193
|
+
{ role: 'user', parts: [{ text: 'Hello' }] },
|
|
194
|
+
];
|
|
195
|
+
const chatWithHistory = new GeminiChat(mockConfig, '', [], initialHistory);
|
|
196
|
+
const initialCount = chatWithHistory.getLastPromptTokenCount();
|
|
197
|
+
const newHistory = [
|
|
198
|
+
{
|
|
199
|
+
role: 'user',
|
|
200
|
+
parts: [
|
|
201
|
+
{
|
|
202
|
+
text: 'This is a much longer history item that should result in more tokens than just hello.',
|
|
203
|
+
},
|
|
204
|
+
],
|
|
205
|
+
},
|
|
206
|
+
];
|
|
207
|
+
chatWithHistory.setHistory(newHistory);
|
|
208
|
+
expect(chatWithHistory.getLastPromptTokenCount()).toBeGreaterThan(initialCount);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
193
211
|
describe('sendMessageStream', () => {
|
|
194
212
|
it('should succeed if a tool call is followed by an empty part', async () => {
|
|
195
213
|
// 1. Mock a stream that contains a tool call, then an invalid (empty) part.
|
|
@@ -219,7 +237,7 @@ describe('GeminiChat', () => {
|
|
|
219
237
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(streamWithToolCall);
|
|
220
238
|
// 2. Action & Assert: The stream processing should complete without throwing an error
|
|
221
239
|
// because the presence of a tool call makes the empty final chunk acceptable.
|
|
222
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-tool-call-empty-end', new AbortController().signal);
|
|
240
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-tool-call-empty-end', new AbortController().signal, LlmRole.MAIN);
|
|
223
241
|
await expect((async () => {
|
|
224
242
|
for await (const _ of stream) {
|
|
225
243
|
/* consume stream */
|
|
@@ -259,7 +277,7 @@ describe('GeminiChat', () => {
|
|
|
259
277
|
})();
|
|
260
278
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(streamWithNoFinish);
|
|
261
279
|
// 2. Action & Assert: The stream should fail because there's no finish reason.
|
|
262
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-no-finish-empty-end', new AbortController().signal);
|
|
280
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-no-finish-empty-end', new AbortController().signal, LlmRole.MAIN);
|
|
263
281
|
await expect((async () => {
|
|
264
282
|
for await (const _ of stream) {
|
|
265
283
|
/* consume stream */
|
|
@@ -294,7 +312,7 @@ describe('GeminiChat', () => {
|
|
|
294
312
|
})();
|
|
295
313
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(streamWithInvalidEnd);
|
|
296
314
|
// 2. Action & Assert: The stream should complete without throwing an error.
|
|
297
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-valid-then-invalid-end', new AbortController().signal);
|
|
315
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-valid-then-invalid-end', new AbortController().signal, LlmRole.MAIN);
|
|
298
316
|
await expect((async () => {
|
|
299
317
|
for await (const _ of stream) {
|
|
300
318
|
/* consume stream */
|
|
@@ -329,7 +347,7 @@ describe('GeminiChat', () => {
|
|
|
329
347
|
})();
|
|
330
348
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(multiChunkStream);
|
|
331
349
|
// 2. Action: Send a message and consume the stream.
|
|
332
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-empty-chunk-consolidation', new AbortController().signal);
|
|
350
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-empty-chunk-consolidation', new AbortController().signal, LlmRole.MAIN);
|
|
333
351
|
for await (const _ of stream) {
|
|
334
352
|
// Consume the stream
|
|
335
353
|
}
|
|
@@ -377,7 +395,7 @@ describe('GeminiChat', () => {
|
|
|
377
395
|
})();
|
|
378
396
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(multiChunkStream);
|
|
379
397
|
// 2. Action: Send a message and consume the stream.
|
|
380
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-multi-chunk', new AbortController().signal);
|
|
398
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-multi-chunk', new AbortController().signal, LlmRole.MAIN);
|
|
381
399
|
for await (const _ of stream) {
|
|
382
400
|
// Consume the stream to trigger history recording.
|
|
383
401
|
}
|
|
@@ -413,7 +431,7 @@ describe('GeminiChat', () => {
|
|
|
413
431
|
})();
|
|
414
432
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(mixedContentStream);
|
|
415
433
|
// 2. Action: Send a message and fully consume the stream to trigger history recording.
|
|
416
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-mixed-chunk', new AbortController().signal);
|
|
434
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-mixed-chunk', new AbortController().signal, LlmRole.MAIN);
|
|
417
435
|
for await (const _ of stream) {
|
|
418
436
|
// This loop consumes the stream.
|
|
419
437
|
}
|
|
@@ -467,7 +485,7 @@ describe('GeminiChat', () => {
|
|
|
467
485
|
name: 'find_restaurant',
|
|
468
486
|
response: { name: 'Vesuvio' },
|
|
469
487
|
},
|
|
470
|
-
}, 'prompt-id-stream-1', new AbortController().signal);
|
|
488
|
+
}, 'prompt-id-stream-1', new AbortController().signal, LlmRole.MAIN);
|
|
471
489
|
// 4. Assert: The stream processing should throw an InvalidStreamError.
|
|
472
490
|
await expect((async () => {
|
|
473
491
|
for await (const _ of stream) {
|
|
@@ -498,7 +516,7 @@ describe('GeminiChat', () => {
|
|
|
498
516
|
};
|
|
499
517
|
})();
|
|
500
518
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(streamWithToolCall);
|
|
501
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-1', new AbortController().signal);
|
|
519
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-1', new AbortController().signal, LlmRole.MAIN);
|
|
502
520
|
// Should not throw an error
|
|
503
521
|
await expect((async () => {
|
|
504
522
|
for await (const _ of stream) {
|
|
@@ -522,7 +540,7 @@ describe('GeminiChat', () => {
|
|
|
522
540
|
};
|
|
523
541
|
})();
|
|
524
542
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(streamWithoutFinishReason);
|
|
525
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-1', new AbortController().signal);
|
|
543
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-1', new AbortController().signal, LlmRole.MAIN);
|
|
526
544
|
await expect((async () => {
|
|
527
545
|
for await (const _ of stream) {
|
|
528
546
|
// consume stream
|
|
@@ -545,7 +563,7 @@ describe('GeminiChat', () => {
|
|
|
545
563
|
};
|
|
546
564
|
})();
|
|
547
565
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(streamWithEmptyResponse);
|
|
548
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-1', new AbortController().signal);
|
|
566
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-1', new AbortController().signal, LlmRole.MAIN);
|
|
549
567
|
await expect((async () => {
|
|
550
568
|
for await (const _ of stream) {
|
|
551
569
|
// consume stream
|
|
@@ -568,7 +586,7 @@ describe('GeminiChat', () => {
|
|
|
568
586
|
};
|
|
569
587
|
})();
|
|
570
588
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(validStream);
|
|
571
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-1', new AbortController().signal);
|
|
589
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-1', new AbortController().signal, LlmRole.MAIN);
|
|
572
590
|
// Should not throw an error
|
|
573
591
|
await expect((async () => {
|
|
574
592
|
for await (const _ of stream) {
|
|
@@ -592,7 +610,7 @@ describe('GeminiChat', () => {
|
|
|
592
610
|
};
|
|
593
611
|
})();
|
|
594
612
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(streamWithMalformedFunctionCall);
|
|
595
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.5-pro' }, 'test', 'prompt-id-malformed', new AbortController().signal);
|
|
613
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.5-pro' }, 'test', 'prompt-id-malformed', new AbortController().signal, LlmRole.MAIN);
|
|
596
614
|
// Should throw an error
|
|
597
615
|
await expect((async () => {
|
|
598
616
|
for await (const _ of stream) {
|
|
@@ -626,7 +644,7 @@ describe('GeminiChat', () => {
|
|
|
626
644
|
};
|
|
627
645
|
})());
|
|
628
646
|
// 2. Send a message
|
|
629
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.5-pro' }, 'test retry', 'prompt-id-retry-malformed', new AbortController().signal);
|
|
647
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.5-pro' }, 'test retry', 'prompt-id-retry-malformed', new AbortController().signal, LlmRole.MAIN);
|
|
630
648
|
const events = [];
|
|
631
649
|
for await (const event of stream) {
|
|
632
650
|
events.push(event);
|
|
@@ -664,7 +682,7 @@ describe('GeminiChat', () => {
|
|
|
664
682
|
};
|
|
665
683
|
})();
|
|
666
684
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(response);
|
|
667
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'hello', 'prompt-id-1', new AbortController().signal);
|
|
685
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'hello', 'prompt-id-1', new AbortController().signal, LlmRole.MAIN);
|
|
668
686
|
for await (const _ of stream) {
|
|
669
687
|
// consume stream
|
|
670
688
|
}
|
|
@@ -685,7 +703,7 @@ describe('GeminiChat', () => {
|
|
|
685
703
|
},
|
|
686
704
|
abortSignal: expect.any(AbortSignal),
|
|
687
705
|
},
|
|
688
|
-
}, 'prompt-id-1');
|
|
706
|
+
}, 'prompt-id-1', LlmRole.MAIN);
|
|
689
707
|
});
|
|
690
708
|
it('should use thinkingLevel and remove thinkingBudget for gemini-3 models', async () => {
|
|
691
709
|
const response = (async function* () {
|
|
@@ -699,7 +717,7 @@ describe('GeminiChat', () => {
|
|
|
699
717
|
};
|
|
700
718
|
})();
|
|
701
719
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(response);
|
|
702
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-3-test-only-model-string-for-testing' }, 'hello', 'prompt-id-thinking-level', new AbortController().signal);
|
|
720
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-3-test-only-model-string-for-testing' }, 'hello', 'prompt-id-thinking-level', new AbortController().signal, LlmRole.MAIN);
|
|
703
721
|
for await (const _ of stream) {
|
|
704
722
|
// consume stream
|
|
705
723
|
}
|
|
@@ -711,7 +729,7 @@ describe('GeminiChat', () => {
|
|
|
711
729
|
thinkingLevel: ThinkingLevel.HIGH,
|
|
712
730
|
},
|
|
713
731
|
}),
|
|
714
|
-
}), 'prompt-id-thinking-level');
|
|
732
|
+
}), 'prompt-id-thinking-level', LlmRole.MAIN);
|
|
715
733
|
});
|
|
716
734
|
it('should use thinkingBudget and remove thinkingLevel for non-gemini-3 models', async () => {
|
|
717
735
|
const response = (async function* () {
|
|
@@ -725,7 +743,7 @@ describe('GeminiChat', () => {
|
|
|
725
743
|
};
|
|
726
744
|
})();
|
|
727
745
|
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue(response);
|
|
728
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'hello', 'prompt-id-thinking-budget', new AbortController().signal);
|
|
746
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'hello', 'prompt-id-thinking-budget', new AbortController().signal, LlmRole.MAIN);
|
|
729
747
|
for await (const _ of stream) {
|
|
730
748
|
// consume stream
|
|
731
749
|
}
|
|
@@ -733,11 +751,11 @@ describe('GeminiChat', () => {
|
|
|
733
751
|
model: 'gemini-2.0-flash',
|
|
734
752
|
config: expect.objectContaining({
|
|
735
753
|
thinkingConfig: {
|
|
736
|
-
thinkingBudget:
|
|
754
|
+
thinkingBudget: 8192,
|
|
737
755
|
thinkingLevel: undefined,
|
|
738
756
|
},
|
|
739
757
|
}),
|
|
740
|
-
}), 'prompt-id-thinking-budget');
|
|
758
|
+
}), 'prompt-id-thinking-budget', LlmRole.MAIN);
|
|
741
759
|
});
|
|
742
760
|
});
|
|
743
761
|
describe('addHistory', () => {
|
|
@@ -776,7 +794,7 @@ describe('GeminiChat', () => {
|
|
|
776
794
|
candidates: [{ content: { parts: [{ text: '' }] } }],
|
|
777
795
|
};
|
|
778
796
|
})());
|
|
779
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-1.5-pro' }, 'test', 'prompt-id-no-retry', new AbortController().signal);
|
|
797
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-1.5-pro' }, 'test', 'prompt-id-no-retry', new AbortController().signal, LlmRole.MAIN);
|
|
780
798
|
await expect((async () => {
|
|
781
799
|
for await (const _ of stream) {
|
|
782
800
|
// Must loop to trigger the internal logic that throws.
|
|
@@ -809,7 +827,7 @@ describe('GeminiChat', () => {
|
|
|
809
827
|
};
|
|
810
828
|
})());
|
|
811
829
|
// ACT: Send a message and collect all events from the stream.
|
|
812
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-yield-retry', new AbortController().signal);
|
|
830
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-yield-retry', new AbortController().signal, LlmRole.MAIN);
|
|
813
831
|
const events = [];
|
|
814
832
|
for await (const event of stream) {
|
|
815
833
|
events.push(event);
|
|
@@ -841,7 +859,7 @@ describe('GeminiChat', () => {
|
|
|
841
859
|
],
|
|
842
860
|
};
|
|
843
861
|
})());
|
|
844
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test', 'prompt-id-retry-success', new AbortController().signal);
|
|
862
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test', 'prompt-id-retry-success', new AbortController().signal, LlmRole.MAIN);
|
|
845
863
|
const chunks = [];
|
|
846
864
|
for await (const chunk of stream) {
|
|
847
865
|
chunks.push(chunk);
|
|
@@ -892,7 +910,7 @@ describe('GeminiChat', () => {
|
|
|
892
910
|
],
|
|
893
911
|
};
|
|
894
912
|
})());
|
|
895
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-retry-temperature', new AbortController().signal);
|
|
913
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-retry-temperature', new AbortController().signal, LlmRole.MAIN);
|
|
896
914
|
for await (const _ of stream) {
|
|
897
915
|
// consume stream
|
|
898
916
|
}
|
|
@@ -902,13 +920,13 @@ describe('GeminiChat', () => {
|
|
|
902
920
|
config: expect.objectContaining({
|
|
903
921
|
temperature: 0,
|
|
904
922
|
}),
|
|
905
|
-
}), 'prompt-id-retry-temperature');
|
|
923
|
+
}), 'prompt-id-retry-temperature', LlmRole.MAIN);
|
|
906
924
|
// Second call (retry) should have temperature 1
|
|
907
925
|
expect(mockContentGenerator.generateContentStream).toHaveBeenNthCalledWith(2, expect.objectContaining({
|
|
908
926
|
config: expect.objectContaining({
|
|
909
927
|
temperature: 1,
|
|
910
928
|
}),
|
|
911
|
-
}), 'prompt-id-retry-temperature');
|
|
929
|
+
}), 'prompt-id-retry-temperature', LlmRole.MAIN);
|
|
912
930
|
});
|
|
913
931
|
it('should fail after all retries on persistent invalid content and report metrics', async () => {
|
|
914
932
|
vi.mocked(mockContentGenerator.generateContentStream).mockImplementation(async () => (async function* () {
|
|
@@ -923,7 +941,7 @@ describe('GeminiChat', () => {
|
|
|
923
941
|
],
|
|
924
942
|
};
|
|
925
943
|
})());
|
|
926
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test', 'prompt-id-retry-fail', new AbortController().signal);
|
|
944
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test', 'prompt-id-retry-fail', new AbortController().signal, LlmRole.MAIN);
|
|
927
945
|
await expect(async () => {
|
|
928
946
|
for await (const _ of stream) {
|
|
929
947
|
// Must loop to trigger the internal logic that throws.
|
|
@@ -972,7 +990,7 @@ describe('GeminiChat', () => {
|
|
|
972
990
|
it('should not retry on 400 Bad Request errors', async () => {
|
|
973
991
|
const error400 = new ApiError({ message: 'Bad Request', status: 400 });
|
|
974
992
|
vi.mocked(mockContentGenerator.generateContentStream).mockRejectedValue(error400);
|
|
975
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-400', new AbortController().signal);
|
|
993
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-400', new AbortController().signal, LlmRole.MAIN);
|
|
976
994
|
await expect((async () => {
|
|
977
995
|
for await (const _ of stream) {
|
|
978
996
|
/* consume stream */
|
|
@@ -995,7 +1013,7 @@ describe('GeminiChat', () => {
|
|
|
995
1013
|
],
|
|
996
1014
|
};
|
|
997
1015
|
})());
|
|
998
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-429-retry', new AbortController().signal);
|
|
1016
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-429-retry', new AbortController().signal, LlmRole.MAIN);
|
|
999
1017
|
const events = [];
|
|
1000
1018
|
for await (const event of stream) {
|
|
1001
1019
|
events.push(event);
|
|
@@ -1024,7 +1042,7 @@ describe('GeminiChat', () => {
|
|
|
1024
1042
|
],
|
|
1025
1043
|
};
|
|
1026
1044
|
})());
|
|
1027
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-500-retry', new AbortController().signal);
|
|
1045
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-500-retry', new AbortController().signal, LlmRole.MAIN);
|
|
1028
1046
|
const events = [];
|
|
1029
1047
|
for await (const event of stream) {
|
|
1030
1048
|
events.push(event);
|
|
@@ -1060,7 +1078,7 @@ describe('GeminiChat', () => {
|
|
|
1060
1078
|
throw error;
|
|
1061
1079
|
}
|
|
1062
1080
|
});
|
|
1063
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-fetch-error-retry', new AbortController().signal);
|
|
1081
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'test message', 'prompt-id-fetch-error-retry', new AbortController().signal, LlmRole.MAIN);
|
|
1064
1082
|
const events = [];
|
|
1065
1083
|
for await (const event of stream) {
|
|
1066
1084
|
events.push(event);
|
|
@@ -1103,7 +1121,7 @@ describe('GeminiChat', () => {
|
|
|
1103
1121
|
};
|
|
1104
1122
|
})());
|
|
1105
1123
|
// 3. Send a new message
|
|
1106
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'Second question', 'prompt-id-retry-existing', new AbortController().signal);
|
|
1124
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'Second question', 'prompt-id-retry-existing', new AbortController().signal, LlmRole.MAIN);
|
|
1107
1125
|
for await (const _ of stream) {
|
|
1108
1126
|
// consume stream
|
|
1109
1127
|
}
|
|
@@ -1155,7 +1173,7 @@ describe('GeminiChat', () => {
|
|
|
1155
1173
|
};
|
|
1156
1174
|
})());
|
|
1157
1175
|
// 2. Call the method and consume the stream.
|
|
1158
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test empty stream', 'prompt-id-empty-stream', new AbortController().signal);
|
|
1176
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test empty stream', 'prompt-id-empty-stream', new AbortController().signal, LlmRole.MAIN);
|
|
1159
1177
|
const chunks = [];
|
|
1160
1178
|
for await (const chunk of stream) {
|
|
1161
1179
|
chunks.push(chunk);
|
|
@@ -1216,11 +1234,11 @@ describe('GeminiChat', () => {
|
|
|
1216
1234
|
.mockResolvedValueOnce(firstStreamGenerator)
|
|
1217
1235
|
.mockResolvedValueOnce(secondStreamGenerator);
|
|
1218
1236
|
// 3. Start the first stream and consume only the first chunk to pause it
|
|
1219
|
-
const firstStream = await chat.sendMessageStream({ model: 'test-model' }, 'first', 'prompt-1', new AbortController().signal);
|
|
1237
|
+
const firstStream = await chat.sendMessageStream({ model: 'test-model' }, 'first', 'prompt-1', new AbortController().signal, LlmRole.MAIN);
|
|
1220
1238
|
const firstStreamIterator = firstStream[Symbol.asyncIterator]();
|
|
1221
1239
|
await firstStreamIterator.next();
|
|
1222
1240
|
// 4. While the first stream is paused, start the second call. It will block.
|
|
1223
|
-
const secondStreamPromise = chat.sendMessageStream({ model: 'test-model' }, 'second', 'prompt-2', new AbortController().signal);
|
|
1241
|
+
const secondStreamPromise = chat.sendMessageStream({ model: 'test-model' }, 'second', 'prompt-2', new AbortController().signal, LlmRole.MAIN);
|
|
1224
1242
|
// 5. Assert that only one API call has been made so far.
|
|
1225
1243
|
expect(mockContentGenerator.generateContentStream).toHaveBeenCalledTimes(1);
|
|
1226
1244
|
// 6. Unblock and fully consume the first stream to completion.
|
|
@@ -1294,7 +1312,7 @@ describe('GeminiChat', () => {
|
|
|
1294
1312
|
};
|
|
1295
1313
|
})());
|
|
1296
1314
|
mockHandleFallback.mockImplementation(async () => true);
|
|
1297
|
-
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'trigger 429', 'prompt-id-fb1', new AbortController().signal);
|
|
1315
|
+
const stream = await chat.sendMessageStream({ model: 'test-model' }, 'trigger 429', 'prompt-id-fb1', new AbortController().signal, LlmRole.MAIN);
|
|
1298
1316
|
// Consume stream to trigger logic
|
|
1299
1317
|
for await (const _ of stream) {
|
|
1300
1318
|
// no-op
|
|
@@ -1341,7 +1359,7 @@ describe('GeminiChat', () => {
|
|
|
1341
1359
|
};
|
|
1342
1360
|
})());
|
|
1343
1361
|
// Send a message and consume the stream
|
|
1344
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-discard-test', new AbortController().signal);
|
|
1362
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-2.0-flash' }, 'test message', 'prompt-id-discard-test', new AbortController().signal, LlmRole.MAIN);
|
|
1345
1363
|
const events = [];
|
|
1346
1364
|
for await (const event of stream) {
|
|
1347
1365
|
events.push(event);
|
|
@@ -1520,7 +1538,7 @@ describe('GeminiChat', () => {
|
|
|
1520
1538
|
],
|
|
1521
1539
|
};
|
|
1522
1540
|
})());
|
|
1523
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-healthy', new AbortController().signal);
|
|
1541
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-healthy', new AbortController().signal, LlmRole.MAIN);
|
|
1524
1542
|
for await (const _ of stream) {
|
|
1525
1543
|
// consume
|
|
1526
1544
|
}
|
|
@@ -1542,7 +1560,7 @@ describe('GeminiChat', () => {
|
|
|
1542
1560
|
],
|
|
1543
1561
|
};
|
|
1544
1562
|
})());
|
|
1545
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-sticky-once', new AbortController().signal);
|
|
1563
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-sticky-once', new AbortController().signal, LlmRole.MAIN);
|
|
1546
1564
|
for await (const _ of stream) {
|
|
1547
1565
|
// consume
|
|
1548
1566
|
}
|
|
@@ -1576,7 +1594,7 @@ describe('GeminiChat', () => {
|
|
|
1576
1594
|
}
|
|
1577
1595
|
});
|
|
1578
1596
|
const consume = async () => {
|
|
1579
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-fallback-arg', new AbortController().signal);
|
|
1597
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-fallback-arg', new AbortController().signal, LlmRole.MAIN);
|
|
1580
1598
|
for await (const _ of stream) {
|
|
1581
1599
|
// consume
|
|
1582
1600
|
}
|
|
@@ -1633,19 +1651,126 @@ describe('GeminiChat', () => {
|
|
|
1633
1651
|
vi.mocked(mockContentGenerator.generateContentStream)
|
|
1634
1652
|
.mockResolvedValueOnce(firstResponse)
|
|
1635
1653
|
.mockResolvedValueOnce(secondResponse);
|
|
1636
|
-
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-config-refresh', new AbortController().signal);
|
|
1654
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-config-refresh', new AbortController().signal, LlmRole.MAIN);
|
|
1637
1655
|
// Consume to drive both attempts
|
|
1638
1656
|
for await (const _ of stream) {
|
|
1639
1657
|
// consume
|
|
1640
1658
|
}
|
|
1641
1659
|
expect(mockContentGenerator.generateContentStream).toHaveBeenNthCalledWith(1, expect.objectContaining({
|
|
1642
1660
|
model: 'model-a',
|
|
1643
|
-
config: expect.objectContaining({
|
|
1644
|
-
|
|
1661
|
+
config: expect.objectContaining({
|
|
1662
|
+
temperature: 0.1,
|
|
1663
|
+
}),
|
|
1664
|
+
}), expect.any(String), LlmRole.MAIN);
|
|
1645
1665
|
expect(mockContentGenerator.generateContentStream).toHaveBeenNthCalledWith(2, expect.objectContaining({
|
|
1646
1666
|
model: 'model-b',
|
|
1647
|
-
config: expect.objectContaining({
|
|
1648
|
-
|
|
1667
|
+
config: expect.objectContaining({
|
|
1668
|
+
temperature: 0.9,
|
|
1669
|
+
}),
|
|
1670
|
+
}), expect.any(String), LlmRole.MAIN);
|
|
1671
|
+
});
|
|
1672
|
+
});
|
|
1673
|
+
describe('Hook execution control', () => {
|
|
1674
|
+
let mockHookSystem;
|
|
1675
|
+
beforeEach(() => {
|
|
1676
|
+
vi.mocked(mockConfig.getEnableHooks).mockReturnValue(true);
|
|
1677
|
+
mockHookSystem = {
|
|
1678
|
+
fireBeforeModelEvent: vi.fn().mockResolvedValue({ blocked: false }),
|
|
1679
|
+
fireAfterModelEvent: vi.fn().mockResolvedValue({ response: {} }),
|
|
1680
|
+
fireBeforeToolSelectionEvent: vi.fn().mockResolvedValue({}),
|
|
1681
|
+
};
|
|
1682
|
+
mockConfig.getHookSystem = vi.fn().mockReturnValue(mockHookSystem);
|
|
1683
|
+
});
|
|
1684
|
+
it('should yield AGENT_EXECUTION_STOPPED when BeforeModel hook stops execution', async () => {
|
|
1685
|
+
vi.mocked(mockHookSystem.fireBeforeModelEvent).mockResolvedValue({
|
|
1686
|
+
blocked: true,
|
|
1687
|
+
stopped: true,
|
|
1688
|
+
reason: 'stopped by hook',
|
|
1689
|
+
});
|
|
1690
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-id', new AbortController().signal, LlmRole.MAIN);
|
|
1691
|
+
const events = [];
|
|
1692
|
+
for await (const event of stream) {
|
|
1693
|
+
events.push(event);
|
|
1694
|
+
}
|
|
1695
|
+
expect(events).toHaveLength(1);
|
|
1696
|
+
expect(events[0]).toEqual({
|
|
1697
|
+
type: StreamEventType.AGENT_EXECUTION_STOPPED,
|
|
1698
|
+
reason: 'stopped by hook',
|
|
1699
|
+
});
|
|
1700
|
+
});
|
|
1701
|
+
it('should yield AGENT_EXECUTION_BLOCKED and synthetic response when BeforeModel hook blocks execution', async () => {
|
|
1702
|
+
const syntheticResponse = {
|
|
1703
|
+
candidates: [{ content: { parts: [{ text: 'blocked' }] } }],
|
|
1704
|
+
};
|
|
1705
|
+
vi.mocked(mockHookSystem.fireBeforeModelEvent).mockResolvedValue({
|
|
1706
|
+
blocked: true,
|
|
1707
|
+
reason: 'blocked by hook',
|
|
1708
|
+
syntheticResponse,
|
|
1709
|
+
});
|
|
1710
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-id', new AbortController().signal, LlmRole.MAIN);
|
|
1711
|
+
const events = [];
|
|
1712
|
+
for await (const event of stream) {
|
|
1713
|
+
events.push(event);
|
|
1714
|
+
}
|
|
1715
|
+
expect(events).toHaveLength(2);
|
|
1716
|
+
expect(events[0]).toEqual({
|
|
1717
|
+
type: StreamEventType.AGENT_EXECUTION_BLOCKED,
|
|
1718
|
+
reason: 'blocked by hook',
|
|
1719
|
+
});
|
|
1720
|
+
expect(events[1]).toEqual({
|
|
1721
|
+
type: StreamEventType.CHUNK,
|
|
1722
|
+
value: syntheticResponse,
|
|
1723
|
+
});
|
|
1724
|
+
});
|
|
1725
|
+
it('should yield AGENT_EXECUTION_STOPPED when AfterModel hook stops execution', async () => {
|
|
1726
|
+
// Mock content generator to return a stream
|
|
1727
|
+
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue((async function* () {
|
|
1728
|
+
yield {
|
|
1729
|
+
candidates: [{ content: { parts: [{ text: 'response' }] } }],
|
|
1730
|
+
};
|
|
1731
|
+
})());
|
|
1732
|
+
vi.mocked(mockHookSystem.fireAfterModelEvent).mockResolvedValue({
|
|
1733
|
+
response: {},
|
|
1734
|
+
stopped: true,
|
|
1735
|
+
reason: 'stopped by after hook',
|
|
1736
|
+
});
|
|
1737
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-id', new AbortController().signal, LlmRole.MAIN);
|
|
1738
|
+
const events = [];
|
|
1739
|
+
for await (const event of stream) {
|
|
1740
|
+
events.push(event);
|
|
1741
|
+
}
|
|
1742
|
+
expect(events).toContainEqual({
|
|
1743
|
+
type: StreamEventType.AGENT_EXECUTION_STOPPED,
|
|
1744
|
+
reason: 'stopped by after hook',
|
|
1745
|
+
});
|
|
1746
|
+
});
|
|
1747
|
+
it('should yield AGENT_EXECUTION_BLOCKED and response when AfterModel hook blocks execution', async () => {
|
|
1748
|
+
const response = {
|
|
1749
|
+
candidates: [{ content: { parts: [{ text: 'response' }] } }],
|
|
1750
|
+
};
|
|
1751
|
+
// Mock content generator to return a stream
|
|
1752
|
+
vi.mocked(mockContentGenerator.generateContentStream).mockResolvedValue((async function* () {
|
|
1753
|
+
yield response;
|
|
1754
|
+
})());
|
|
1755
|
+
vi.mocked(mockHookSystem.fireAfterModelEvent).mockResolvedValue({
|
|
1756
|
+
response,
|
|
1757
|
+
blocked: true,
|
|
1758
|
+
reason: 'blocked by after hook',
|
|
1759
|
+
});
|
|
1760
|
+
const stream = await chat.sendMessageStream({ model: 'gemini-pro' }, 'test', 'prompt-id', new AbortController().signal, LlmRole.MAIN);
|
|
1761
|
+
const events = [];
|
|
1762
|
+
for await (const event of stream) {
|
|
1763
|
+
events.push(event);
|
|
1764
|
+
}
|
|
1765
|
+
expect(events).toContainEqual({
|
|
1766
|
+
type: StreamEventType.AGENT_EXECUTION_BLOCKED,
|
|
1767
|
+
reason: 'blocked by after hook',
|
|
1768
|
+
});
|
|
1769
|
+
// Should also contain the chunk (hook response)
|
|
1770
|
+
expect(events).toContainEqual({
|
|
1771
|
+
type: StreamEventType.CHUNK,
|
|
1772
|
+
value: response,
|
|
1773
|
+
});
|
|
1649
1774
|
});
|
|
1650
1775
|
});
|
|
1651
1776
|
});
|