@machina.ai/cell-cli-core 1.19.4-rc3 → 1.22.5-rc1
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/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/src/agents/delegate-to-agent-tool.d.ts +19 -0
- package/dist/src/agents/delegate-to-agent-tool.js +111 -0
- package/dist/src/agents/delegate-to-agent-tool.js.map +1 -0
- package/dist/src/agents/delegate-to-agent-tool.test.d.ts +6 -0
- package/dist/src/agents/delegate-to-agent-tool.test.js +133 -0
- package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -0
- package/dist/src/agents/executor.js +12 -17
- package/dist/src/agents/executor.js.map +1 -1
- package/dist/src/agents/executor.test.js +8 -9
- package/dist/src/agents/executor.test.js.map +1 -1
- package/dist/src/agents/registry.d.ts +15 -0
- package/dist/src/agents/registry.js +58 -2
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +61 -0
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/availability/errorClassification.d.ts +7 -0
- package/dist/src/availability/errorClassification.js +20 -0
- package/dist/src/availability/errorClassification.js.map +1 -0
- package/dist/src/availability/modelAvailabilityService.d.ts +2 -1
- package/dist/src/availability/modelAvailabilityService.js +5 -2
- package/dist/src/availability/modelAvailabilityService.js.map +1 -1
- package/dist/src/availability/modelAvailabilityService.test.js +3 -3
- package/dist/src/availability/modelAvailabilityService.test.js.map +1 -1
- package/dist/src/availability/modelPolicy.d.ts +8 -1
- package/dist/src/availability/policyCatalog.d.ts +4 -1
- package/dist/src/availability/policyCatalog.js +8 -9
- package/dist/src/availability/policyCatalog.js.map +1 -1
- package/dist/src/availability/policyCatalog.test.js +2 -2
- package/dist/src/availability/policyCatalog.test.js.map +1 -1
- package/dist/src/availability/policyHelpers.d.ts +51 -0
- package/dist/src/availability/policyHelpers.js +145 -0
- package/dist/src/availability/policyHelpers.js.map +1 -0
- package/dist/src/availability/policyHelpers.test.d.ts +6 -0
- package/dist/src/availability/policyHelpers.test.js +172 -0
- package/dist/src/availability/policyHelpers.test.js.map +1 -0
- package/dist/src/availability/testUtils.d.ts +10 -0
- package/dist/src/availability/testUtils.js +22 -0
- package/dist/src/availability/testUtils.js.map +1 -0
- package/dist/src/code_assist/experiments/client_metadata.js +3 -2
- package/dist/src/code_assist/experiments/client_metadata.js.map +1 -1
- package/dist/src/code_assist/experiments/client_metadata.test.js +7 -10
- package/dist/src/code_assist/experiments/client_metadata.test.js.map +1 -1
- package/dist/src/code_assist/experiments/experiments.js +2 -2
- package/dist/src/code_assist/experiments/experiments.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +2 -0
- package/dist/src/code_assist/oauth2.js +41 -15
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +114 -7
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +2 -1
- package/dist/src/code_assist/server.js +7 -4
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +24 -0
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +14 -0
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.js +53 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/init.test.d.ts +6 -0
- package/dist/src/commands/init.test.js +25 -0
- package/dist/src/commands/init.test.js.map +1 -0
- package/dist/src/commands/restore.d.ts +9 -0
- package/dist/src/commands/restore.js +46 -0
- package/dist/src/commands/restore.js.map +1 -0
- package/dist/src/commands/restore.test.d.ts +6 -0
- package/dist/src/commands/restore.test.js +137 -0
- package/dist/src/commands/restore.test.js.map +1 -0
- package/dist/src/commands/types.d.ts +41 -0
- package/dist/src/commands/types.js +7 -0
- package/dist/src/commands/types.js.map +1 -0
- package/dist/src/config/config.d.ts +43 -3
- package/dist/src/config/config.js +182 -29
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +217 -9
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +21 -0
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/models.d.ts +33 -11
- package/dist/src/config/models.js +82 -24
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +70 -76
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/confirmation-bus/message-bus.js +1 -0
- package/dist/src/confirmation-bus/message-bus.js.map +1 -1
- package/dist/src/confirmation-bus/types.d.ts +4 -0
- package/dist/src/core/AuthenticatedContentGenerator.js +4 -4
- package/dist/src/core/AuthenticatedContentGenerator.js.map +1 -1
- package/dist/src/core/baseLlmClient.d.ts +3 -1
- package/dist/src/core/baseLlmClient.js +40 -3
- package/dist/src/core/baseLlmClient.js.map +1 -1
- package/dist/src/core/baseLlmClient.test.js +184 -7
- package/dist/src/core/baseLlmClient.test.js.map +1 -1
- package/dist/src/core/client.js +52 -51
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +178 -6
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +5 -3
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +29 -22
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.d.ts +55 -0
- package/dist/src/core/coreToolHookTriggers.js +244 -0
- package/dist/src/core/coreToolHookTriggers.js.map +1 -0
- package/dist/src/core/coreToolScheduler.d.ts +1 -1
- package/dist/src/core/coreToolScheduler.js +87 -36
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +201 -38
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.js +144 -41
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +251 -192
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiChatHookTriggers.d.ts +64 -0
- package/dist/src/core/geminiChatHookTriggers.js +136 -0
- package/dist/src/core/geminiChatHookTriggers.js.map +1 -0
- package/dist/src/core/geminiChat_network_retry.test.d.ts +6 -0
- package/dist/src/core/geminiChat_network_retry.test.js +198 -0
- package/dist/src/core/geminiChat_network_retry.test.js.map +1 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.js +9 -4
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +4 -5
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +50 -29
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +19 -8
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/sessionHookTriggers.d.ts +28 -0
- package/dist/src/core/sessionHookTriggers.js +68 -0
- package/dist/src/core/sessionHookTriggers.js.map +1 -0
- package/dist/src/core/turn.d.ts +1 -0
- package/dist/src/core/turn.js +1 -1
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/fallback/handler.js +82 -69
- package/dist/src/fallback/handler.js.map +1 -1
- package/dist/src/fallback/handler.test.js +186 -170
- package/dist/src/fallback/handler.test.js.map +1 -1
- package/dist/src/fallback/types.d.ts +8 -0
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookEventHandler.js +70 -12
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.test.js +8 -1
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
- package/dist/src/hooks/hookRegistry.d.ts +0 -7
- package/dist/src/hooks/hookRegistry.js +8 -21
- package/dist/src/hooks/hookRegistry.js.map +1 -1
- package/dist/src/hooks/hookRegistry.test.js +2 -7
- package/dist/src/hooks/hookRegistry.test.js.map +1 -1
- package/dist/src/hooks/hookRunner.js +19 -3
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookRunner.test.js +2 -1
- package/dist/src/hooks/hookRunner.test.js.map +1 -1
- package/dist/src/hooks/hookSystem.d.ts +0 -8
- package/dist/src/hooks/hookSystem.js +0 -18
- package/dist/src/hooks/hookSystem.js.map +1 -1
- package/dist/src/hooks/hookSystem.test.js +124 -18
- package/dist/src/hooks/hookSystem.test.js.map +1 -1
- package/dist/src/hooks/index.d.ts +3 -1
- package/dist/src/hooks/index.js +3 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/types.d.ts +1 -2
- package/dist/src/hooks/types.js +0 -1
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +32 -1
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-client.js +5 -3
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ide-client.test.js +17 -0
- package/dist/src/ide/ide-client.test.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +1 -1
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/auth-provider.d.ts +16 -0
- package/dist/src/mcp/auth-provider.js +7 -0
- package/dist/src/mcp/auth-provider.js.map +1 -0
- package/dist/src/mcp/google-auth-provider.d.ts +10 -2
- package/dist/src/mcp/google-auth-provider.js +28 -0
- package/dist/src/mcp/google-auth-provider.js.map +1 -1
- package/dist/src/mcp/google-auth-provider.test.js +45 -0
- package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
- package/dist/src/mcp/mcpLauncher.js +6 -3
- package/dist/src/mcp/mcpLauncher.js.map +1 -1
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/sa-impersonation-provider.d.ts +2 -2
- package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +1 -1
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
- package/dist/src/output/json-formatter.d.ts +2 -2
- package/dist/src/output/json-formatter.js +6 -3
- package/dist/src/output/json-formatter.js.map +1 -1
- package/dist/src/output/json-formatter.test.js +37 -9
- package/dist/src/output/json-formatter.test.js.map +1 -1
- package/dist/src/output/stream-json-formatter.js +6 -0
- package/dist/src/output/stream-json-formatter.js.map +1 -1
- package/dist/src/output/stream-json-formatter.test.js +98 -100
- package/dist/src/output/stream-json-formatter.test.js.map +1 -1
- package/dist/src/output/types.d.ts +3 -0
- package/dist/src/output/types.js.map +1 -1
- package/dist/src/policy/config.js +97 -11
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/persistence.test.d.ts +6 -0
- package/dist/src/policy/persistence.test.js +154 -0
- package/dist/src/policy/persistence.test.js.map +1 -0
- package/dist/src/policy/policies/agent.toml +31 -0
- package/dist/src/policy/policies/read-only.toml +5 -0
- package/dist/src/policy/policy-engine.d.ts +10 -1
- package/dist/src/policy/policy-engine.js +79 -5
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +26 -2
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/policy-updater.test.d.ts +6 -0
- package/dist/src/policy/policy-updater.test.js +116 -0
- package/dist/src/policy/policy-updater.test.js.map +1 -0
- package/dist/src/policy/shell-safety.test.d.ts +6 -0
- package/dist/src/policy/shell-safety.test.js +75 -0
- package/dist/src/policy/shell-safety.test.js.map +1 -0
- package/dist/src/policy/toml-loader.d.ts +11 -5
- package/dist/src/policy/toml-loader.js +38 -23
- package/dist/src/policy/toml-loader.js.map +1 -1
- package/dist/src/policy/toml-loader.test.js +28 -7
- package/dist/src/policy/toml-loader.test.js.map +1 -1
- package/dist/src/policy/types.d.ts +15 -0
- package/dist/src/resources/resource-registry.d.ts +30 -0
- package/dist/src/resources/resource-registry.js +57 -0
- package/dist/src/resources/resource-registry.js.map +1 -0
- package/dist/src/resources/resource-registry.test.d.ts +6 -0
- package/dist/src/resources/resource-registry.test.js +54 -0
- package/dist/src/resources/resource-registry.test.js.map +1 -0
- package/dist/src/routing/modelRouterService.js +0 -15
- package/dist/src/routing/modelRouterService.js.map +1 -1
- package/dist/src/routing/modelRouterService.test.js +0 -62
- package/dist/src/routing/modelRouterService.test.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js +10 -21
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js +2 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js +23 -12
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.test.js +69 -39
- package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js +4 -3
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
- package/dist/src/safety/checker-runner.js +17 -6
- package/dist/src/safety/checker-runner.js.map +1 -1
- package/dist/src/services/chatCompressionService.js +17 -3
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/chatCompressionService.test.js +9 -0
- package/dist/src/services/chatCompressionService.test.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +14 -0
- package/dist/src/services/chatRecordingService.js +37 -0
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/contextManager.d.ts +35 -0
- package/dist/src/services/contextManager.js +68 -0
- package/dist/src/services/contextManager.js.map +1 -0
- package/dist/src/services/contextManager.test.d.ts +6 -0
- package/dist/src/services/contextManager.test.js +105 -0
- package/dist/src/services/contextManager.test.js.map +1 -0
- package/dist/src/services/fileSystemService.d.ts +0 -9
- package/dist/src/services/fileSystemService.js +0 -11
- package/dist/src/services/fileSystemService.js.map +1 -1
- package/dist/src/services/gitService.js +5 -0
- package/dist/src/services/gitService.js.map +1 -1
- package/dist/src/services/gitService.test.js +28 -0
- package/dist/src/services/gitService.test.js.map +1 -1
- package/dist/src/services/loopDetectionService.js +3 -3
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/modelConfig.golden.test.js +32 -0
- package/dist/src/services/modelConfig.golden.test.js.map +1 -1
- package/dist/src/services/modelConfigService.d.ts +3 -0
- package/dist/src/services/modelConfigService.js +3 -2
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/modelConfigService.test.js +110 -0
- package/dist/src/services/modelConfigService.test.js.map +1 -1
- package/dist/src/services/modelConfigServiceTestUtils.d.ts +10 -0
- package/dist/src/services/modelConfigServiceTestUtils.js +17 -0
- package/dist/src/services/modelConfigServiceTestUtils.js.map +1 -0
- package/dist/src/services/sessionSummaryService.d.ts +28 -0
- package/dist/src/services/sessionSummaryService.js +131 -0
- package/dist/src/services/sessionSummaryService.js.map +1 -0
- package/dist/src/services/sessionSummaryService.test.d.ts +6 -0
- package/dist/src/services/sessionSummaryService.test.js +785 -0
- package/dist/src/services/sessionSummaryService.test.js.map +1 -0
- package/dist/src/services/sessionSummaryUtils.d.ts +16 -0
- package/dist/src/services/sessionSummaryUtils.js +129 -0
- package/dist/src/services/sessionSummaryUtils.js.map +1 -0
- package/dist/src/services/sessionSummaryUtils.test.d.ts +6 -0
- package/dist/src/services/sessionSummaryUtils.test.js +137 -0
- package/dist/src/services/sessionSummaryUtils.test.js.map +1 -0
- package/dist/src/services/shellExecutionService.js +56 -22
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +137 -5
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/services/test-data/resolved-aliases-retry.golden.json +238 -0
- package/dist/src/services/test-data/resolved-aliases.golden.json +16 -0
- package/dist/src/telemetry/activity-detector.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +28 -5
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +67 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +3 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/config.js +2 -0
- package/dist/src/telemetry/config.js.map +1 -1
- package/dist/src/telemetry/config.test.js +25 -0
- package/dist/src/telemetry/config.test.js.map +1 -1
- package/dist/src/telemetry/gcp-exporters.d.ts +4 -3
- package/dist/src/telemetry/gcp-exporters.js +8 -4
- package/dist/src/telemetry/gcp-exporters.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -1
- package/dist/src/telemetry/index.js +2 -1
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +2 -1
- package/dist/src/telemetry/loggers.js +345 -338
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +195 -18
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/sdk.d.ts +9 -2
- package/dist/src/telemetry/sdk.js +143 -17
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/sdk.test.js +130 -28
- package/dist/src/telemetry/sdk.test.js.map +1 -1
- package/dist/src/telemetry/startupProfiler.d.ts +51 -0
- package/dist/src/telemetry/startupProfiler.js +170 -0
- package/dist/src/telemetry/startupProfiler.js.map +1 -0
- package/dist/src/telemetry/startupProfiler.test.d.ts +6 -0
- package/dist/src/telemetry/startupProfiler.test.js +289 -0
- package/dist/src/telemetry/startupProfiler.test.js.map +1 -0
- package/dist/src/telemetry/telemetry.test.js +10 -3
- package/dist/src/telemetry/telemetry.test.js.map +1 -1
- package/dist/src/telemetry/trace.js +2 -2
- package/dist/src/telemetry/trace.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +37 -10
- package/dist/src/telemetry/types.js +82 -17
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +1 -0
- package/dist/src/telemetry/uiTelemetry.js +2 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +4 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/mock-message-bus.js.map +1 -1
- package/dist/src/tools/confirmation-policy.test.d.ts +6 -0
- package/dist/src/tools/confirmation-policy.test.js +152 -0
- package/dist/src/tools/confirmation-policy.test.js.map +1 -0
- package/dist/src/tools/edit.js +5 -0
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +3 -1
- package/dist/src/tools/mcp-client-manager.js +30 -4
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +38 -10
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +40 -3
- package/dist/src/tools/mcp-client.js +437 -174
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +695 -28
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.js +13 -0
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +25 -0
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.js +1 -0
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +22 -13
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.js +1 -1
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.js +6 -4
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +1 -1
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +2 -1
- package/dist/src/tools/shell.js +58 -4
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +25 -5
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/smart-edit.js +6 -1
- package/dist/src/tools/smart-edit.js.map +1 -1
- package/dist/src/tools/smart-edit.test.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +2 -0
- package/dist/src/tools/tool-names.js +2 -0
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tools.d.ts +19 -0
- package/dist/src/tools/tools.js +29 -8
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.js +18 -5
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +1 -0
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/write-file.js +5 -0
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.d.ts +8 -0
- package/dist/src/utils/bfsFileSearch.js +63 -23
- package/dist/src/utils/bfsFileSearch.js.map +1 -1
- package/dist/src/utils/bfsFileSearch.test.js +65 -1
- package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
- package/dist/src/utils/checkpointUtils.d.ts +82 -0
- package/dist/src/utils/checkpointUtils.js +117 -0
- package/dist/src/utils/checkpointUtils.js.map +1 -0
- package/dist/src/utils/checkpointUtils.test.d.ts +6 -0
- package/dist/src/utils/checkpointUtils.test.js +229 -0
- package/dist/src/utils/checkpointUtils.test.js.map +1 -0
- package/dist/src/utils/debugLogger.d.ts +3 -0
- package/dist/src/utils/debugLogger.js +27 -0
- package/dist/src/utils/debugLogger.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +4 -0
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.d.ts +9 -1
- package/dist/src/utils/editor.js +23 -14
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/errors.d.ts +8 -0
- package/dist/src/utils/errors.js +39 -2
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.d.ts +6 -0
- package/dist/src/utils/errors.test.js +155 -0
- package/dist/src/utils/errors.test.js.map +1 -0
- package/dist/src/utils/exitCodes.d.ts +12 -0
- package/dist/src/utils/exitCodes.js +13 -0
- package/dist/src/utils/exitCodes.js.map +1 -0
- package/dist/src/utils/extensionLoader.d.ts +2 -2
- package/dist/src/utils/extensionLoader.js +5 -6
- package/dist/src/utils/extensionLoader.js.map +1 -1
- package/dist/src/utils/extensionLoader.test.js +11 -0
- package/dist/src/utils/extensionLoader.test.js.map +1 -1
- package/dist/src/utils/fetch.d.ts +1 -1
- package/dist/src/utils/fetch.js +3 -3
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +15 -0
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/flashFallback.test.js +1 -1
- package/dist/src/utils/flashFallback.test.js.map +1 -1
- package/dist/src/utils/googleErrors.js +31 -18
- package/dist/src/utils/googleErrors.js.map +1 -1
- package/dist/src/utils/googleErrors.test.js +10 -2
- package/dist/src/utils/googleErrors.test.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
- package/dist/src/utils/googleQuotaErrors.js +32 -6
- package/dist/src/utils/googleQuotaErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.test.js +94 -2
- package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.d.ts +5 -0
- package/dist/src/utils/memoryDiscovery.js +7 -3
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +28 -0
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.test.js +4 -0
- package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
- package/dist/src/utils/pathCorrector.js +12 -2
- package/dist/src/utils/pathCorrector.js.map +1 -1
- package/dist/src/utils/pathCorrector.test.js +6 -2
- package/dist/src/utils/pathCorrector.test.js.map +1 -1
- package/dist/src/utils/retry.d.ts +11 -0
- package/dist/src/utils/retry.js +54 -13
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +170 -10
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/shell-permissions.d.ts +52 -0
- package/dist/src/utils/shell-permissions.js +188 -0
- package/dist/src/utils/shell-permissions.js.map +1 -0
- package/dist/src/utils/shell-permissions.test.d.ts +6 -0
- package/dist/src/utils/shell-permissions.test.js +347 -0
- package/dist/src/utils/shell-permissions.test.js.map +1 -0
- package/dist/src/utils/shell-utils.d.ts +10 -47
- package/dist/src/utils/shell-utils.js +1 -182
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +1 -288
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/stdio.d.ts +2 -2
- package/dist/src/utils/stdio.js +2 -2
- package/dist/src/utils/stdio.js.map +1 -1
- package/dist/src/utils/stdio.test.js +5 -5
- package/dist/src/utils/stdio.test.js.map +1 -1
- package/dist/src/utils/terminalSerializer.test.js +17 -0
- package/dist/src/utils/terminalSerializer.test.js.map +1 -1
- package/dist/src/utils/tokenCalculation.d.ts +19 -0
- package/dist/src/utils/tokenCalculation.js +70 -0
- package/dist/src/utils/tokenCalculation.js.map +1 -0
- package/dist/src/utils/tokenCalculation.test.d.ts +6 -0
- package/dist/src/utils/tokenCalculation.test.js +78 -0
- package/dist/src/utils/tokenCalculation.test.js.map +1 -0
- package/dist/src/utils/tool-utils.js.map +1 -1
- package/dist/src/utils/version.d.ts +6 -0
- package/dist/src/utils/version.js +15 -0
- package/dist/src/utils/version.js.map +1 -0
- package/dist/src/utils/version.test.d.ts +6 -0
- package/dist/src/utils/version.test.js +39 -0
- package/dist/src/utils/version.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
7
|
import { CoreToolScheduler, convertToFunctionResponse, truncateAndSaveToFile, } from './coreToolScheduler.js';
|
|
8
|
-
import { DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES, DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD, BaseDeclarativeTool, BaseToolInvocation, ToolConfirmationOutcome, Kind, ApprovalMode, } from '../index.js';
|
|
8
|
+
import { DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES, DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD, BaseDeclarativeTool, BaseToolInvocation, ToolConfirmationOutcome, Kind, ApprovalMode, HookSystem, } from '../index.js';
|
|
9
|
+
import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
|
|
9
10
|
import { MockModifiableTool, MockTool, MOCK_TOOL_SHOULD_CONFIRM_EXECUTE, } from '../test-utils/mock-tool.js';
|
|
10
11
|
import * as modifiableToolModule from '../tools/modifiable-tool.js';
|
|
11
12
|
import * as fs from 'node:fs/promises';
|
|
12
13
|
import * as path from 'node:path';
|
|
13
|
-
import { isShellInvocationAllowlisted } from '../utils/shell-
|
|
14
|
+
import { isShellInvocationAllowlisted } from '../utils/shell-permissions.js';
|
|
15
|
+
import { DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_MODEL, } from '../config/models.js';
|
|
14
16
|
vi.mock('fs/promises', () => ({
|
|
15
17
|
writeFile: vi.fn(),
|
|
16
18
|
}));
|
|
@@ -142,6 +144,7 @@ function createMockConfig(overrides = {}) {
|
|
|
142
144
|
getSessionId: () => 'test-session-id',
|
|
143
145
|
getUsageStatisticsEnabled: () => true,
|
|
144
146
|
getDebugMode: () => false,
|
|
147
|
+
isInteractive: () => true,
|
|
145
148
|
getApprovalMode: () => ApprovalMode.DEFAULT,
|
|
146
149
|
setApprovalMode: () => { },
|
|
147
150
|
getAllowedTools: () => [],
|
|
@@ -159,10 +162,12 @@ function createMockConfig(overrides = {}) {
|
|
|
159
162
|
getTruncateToolOutputThreshold: () => DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
|
|
160
163
|
getTruncateToolOutputLines: () => DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES,
|
|
161
164
|
getToolRegistry: () => defaultToolRegistry,
|
|
165
|
+
getActiveModel: () => DEFAULT_GEMINI_MODEL,
|
|
162
166
|
getUseSmartEdit: () => false,
|
|
163
167
|
getGeminiClient: () => null,
|
|
164
168
|
getEnableMessageBusIntegration: () => false,
|
|
165
169
|
getMessageBus: () => null,
|
|
170
|
+
getEnableHooks: () => false,
|
|
166
171
|
getPolicyEngine: () => null,
|
|
167
172
|
getExperiments: () => { },
|
|
168
173
|
};
|
|
@@ -255,7 +260,7 @@ describe('CoreToolScheduler', () => {
|
|
|
255
260
|
const onToolCallsUpdate = vi.fn();
|
|
256
261
|
const mockConfig = createMockConfig({
|
|
257
262
|
getToolRegistry: () => mockToolRegistry,
|
|
258
|
-
|
|
263
|
+
getHookSystem: () => undefined,
|
|
259
264
|
});
|
|
260
265
|
const scheduler = new CoreToolScheduler({
|
|
261
266
|
config: mockConfig,
|
|
@@ -344,7 +349,7 @@ describe('CoreToolScheduler', () => {
|
|
|
344
349
|
const onToolCallsUpdate = vi.fn();
|
|
345
350
|
const mockConfig = createMockConfig({
|
|
346
351
|
getToolRegistry: () => mockToolRegistry,
|
|
347
|
-
|
|
352
|
+
getHookSystem: () => undefined,
|
|
348
353
|
});
|
|
349
354
|
const scheduler = new CoreToolScheduler({
|
|
350
355
|
config: mockConfig,
|
|
@@ -437,6 +442,57 @@ describe('CoreToolScheduler', () => {
|
|
|
437
442
|
const statuses = onToolCallsUpdate.mock.calls.flatMap((call) => call[0].map((toolCall) => toolCall.status));
|
|
438
443
|
expect(statuses).not.toContain('error');
|
|
439
444
|
});
|
|
445
|
+
it('should error when tool requires confirmation in non-interactive mode', async () => {
|
|
446
|
+
const mockTool = new MockTool({
|
|
447
|
+
name: 'mockTool',
|
|
448
|
+
shouldConfirmExecute: MOCK_TOOL_SHOULD_CONFIRM_EXECUTE,
|
|
449
|
+
});
|
|
450
|
+
const declarativeTool = mockTool;
|
|
451
|
+
const mockToolRegistry = {
|
|
452
|
+
getTool: () => declarativeTool,
|
|
453
|
+
getFunctionDeclarations: () => [],
|
|
454
|
+
tools: new Map(),
|
|
455
|
+
discovery: {},
|
|
456
|
+
registerTool: () => { },
|
|
457
|
+
getToolByName: () => declarativeTool,
|
|
458
|
+
getToolByDisplayName: () => declarativeTool,
|
|
459
|
+
getTools: () => [],
|
|
460
|
+
discoverTools: async () => { },
|
|
461
|
+
getAllTools: () => [],
|
|
462
|
+
getToolsByServer: () => [],
|
|
463
|
+
};
|
|
464
|
+
const onAllToolCallsComplete = vi.fn();
|
|
465
|
+
const onToolCallsUpdate = vi.fn();
|
|
466
|
+
const mockConfig = createMockConfig({
|
|
467
|
+
getToolRegistry: () => mockToolRegistry,
|
|
468
|
+
isInteractive: () => false,
|
|
469
|
+
});
|
|
470
|
+
const scheduler = new CoreToolScheduler({
|
|
471
|
+
config: mockConfig,
|
|
472
|
+
onAllToolCallsComplete,
|
|
473
|
+
onToolCallsUpdate,
|
|
474
|
+
getPreferredEditor: () => 'vscode',
|
|
475
|
+
});
|
|
476
|
+
const abortController = new AbortController();
|
|
477
|
+
const request = {
|
|
478
|
+
callId: '1',
|
|
479
|
+
name: 'mockTool',
|
|
480
|
+
args: {},
|
|
481
|
+
isClientInitiated: false,
|
|
482
|
+
prompt_id: 'prompt-id-1',
|
|
483
|
+
};
|
|
484
|
+
await scheduler.schedule([request], abortController.signal);
|
|
485
|
+
expect(onAllToolCallsComplete).toHaveBeenCalled();
|
|
486
|
+
const completedCalls = onAllToolCallsComplete.mock
|
|
487
|
+
.calls[0][0];
|
|
488
|
+
expect(completedCalls[0].status).toBe('error');
|
|
489
|
+
const erroredCall = completedCalls[0];
|
|
490
|
+
const errorResponse = erroredCall.response;
|
|
491
|
+
const errorParts = errorResponse.responseParts;
|
|
492
|
+
// @ts-expect-error - accessing internal structure of FunctionResponsePart
|
|
493
|
+
const errorMessage = errorParts[0].functionResponse.response.error;
|
|
494
|
+
expect(errorMessage).toContain('Tool execution for "mockTool" requires user confirmation, which is not supported in non-interactive mode.');
|
|
495
|
+
});
|
|
440
496
|
describe('getToolSuggestion', () => {
|
|
441
497
|
it('should suggest the top N closest tool names for a typo', () => {
|
|
442
498
|
// Create mocked tool registry
|
|
@@ -489,8 +545,13 @@ describe('CoreToolScheduler with payload', () => {
|
|
|
489
545
|
const onToolCallsUpdate = vi.fn();
|
|
490
546
|
const mockConfig = createMockConfig({
|
|
491
547
|
getToolRegistry: () => mockToolRegistry,
|
|
492
|
-
isInteractive: () => false,
|
|
493
548
|
});
|
|
549
|
+
const mockMessageBus = createMockMessageBus();
|
|
550
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
551
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
552
|
+
mockConfig.getHookSystem = vi
|
|
553
|
+
.fn()
|
|
554
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
494
555
|
const scheduler = new CoreToolScheduler({
|
|
495
556
|
config: mockConfig,
|
|
496
557
|
onAllToolCallsComplete,
|
|
@@ -529,7 +590,7 @@ describe('convertToFunctionResponse', () => {
|
|
|
529
590
|
const callId = 'call1';
|
|
530
591
|
it('should handle simple string llmContent', () => {
|
|
531
592
|
const llmContent = 'Simple text output';
|
|
532
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
593
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, DEFAULT_GEMINI_MODEL);
|
|
533
594
|
expect(result).toEqual([
|
|
534
595
|
{
|
|
535
596
|
functionResponse: {
|
|
@@ -542,7 +603,7 @@ describe('convertToFunctionResponse', () => {
|
|
|
542
603
|
});
|
|
543
604
|
it('should handle llmContent as a single Part with text', () => {
|
|
544
605
|
const llmContent = { text: 'Text from Part object' };
|
|
545
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
606
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, DEFAULT_GEMINI_MODEL);
|
|
546
607
|
expect(result).toEqual([
|
|
547
608
|
{
|
|
548
609
|
functionResponse: {
|
|
@@ -555,7 +616,7 @@ describe('convertToFunctionResponse', () => {
|
|
|
555
616
|
});
|
|
556
617
|
it('should handle llmContent as a PartListUnion array with a single text Part', () => {
|
|
557
618
|
const llmContent = [{ text: 'Text from array' }];
|
|
558
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
619
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, DEFAULT_GEMINI_MODEL);
|
|
559
620
|
expect(result).toEqual([
|
|
560
621
|
{
|
|
561
622
|
functionResponse: {
|
|
@@ -566,94 +627,144 @@ describe('convertToFunctionResponse', () => {
|
|
|
566
627
|
},
|
|
567
628
|
]);
|
|
568
629
|
});
|
|
569
|
-
it('should handle llmContent with
|
|
630
|
+
it('should handle llmContent as a PartListUnion array with multiple Parts', () => {
|
|
631
|
+
const llmContent = [{ text: 'part1' }, { text: 'part2' }];
|
|
632
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, DEFAULT_GEMINI_MODEL);
|
|
633
|
+
expect(result).toEqual([
|
|
634
|
+
{
|
|
635
|
+
functionResponse: {
|
|
636
|
+
name: toolName,
|
|
637
|
+
id: callId,
|
|
638
|
+
response: { output: 'part1\npart2' },
|
|
639
|
+
},
|
|
640
|
+
},
|
|
641
|
+
]);
|
|
642
|
+
});
|
|
643
|
+
it('should handle llmContent with fileData for Gemini 3 model (should be siblings)', () => {
|
|
570
644
|
const llmContent = {
|
|
571
|
-
|
|
645
|
+
fileData: { mimeType: 'application/pdf', fileUri: 'gs://...' },
|
|
572
646
|
};
|
|
573
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
647
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
574
648
|
expect(result).toEqual([
|
|
575
649
|
{
|
|
576
650
|
functionResponse: {
|
|
577
651
|
name: toolName,
|
|
578
652
|
id: callId,
|
|
579
|
-
response: {
|
|
580
|
-
output: 'Binary content of type image/png was processed.',
|
|
581
|
-
},
|
|
653
|
+
response: { output: 'Binary content provided (1 item(s)).' },
|
|
582
654
|
},
|
|
583
655
|
},
|
|
584
656
|
llmContent,
|
|
585
657
|
]);
|
|
586
658
|
});
|
|
587
|
-
it('should handle llmContent with
|
|
659
|
+
it('should handle llmContent with inlineData for Gemini 3 model (should be nested)', () => {
|
|
660
|
+
const llmContent = {
|
|
661
|
+
inlineData: { mimeType: 'image/png', data: 'base64...' },
|
|
662
|
+
};
|
|
663
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
664
|
+
expect(result).toEqual([
|
|
665
|
+
{
|
|
666
|
+
functionResponse: {
|
|
667
|
+
name: toolName,
|
|
668
|
+
id: callId,
|
|
669
|
+
response: { output: 'Binary content provided (1 item(s)).' },
|
|
670
|
+
parts: [llmContent],
|
|
671
|
+
},
|
|
672
|
+
},
|
|
673
|
+
]);
|
|
674
|
+
});
|
|
675
|
+
it('should handle llmContent with fileData for non-Gemini 3 models', () => {
|
|
588
676
|
const llmContent = {
|
|
589
677
|
fileData: { mimeType: 'application/pdf', fileUri: 'gs://...' },
|
|
590
678
|
};
|
|
591
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
679
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, DEFAULT_GEMINI_MODEL);
|
|
592
680
|
expect(result).toEqual([
|
|
593
681
|
{
|
|
594
682
|
functionResponse: {
|
|
595
683
|
name: toolName,
|
|
596
684
|
id: callId,
|
|
597
|
-
response: {
|
|
598
|
-
output: 'Binary content of type application/pdf was processed.',
|
|
599
|
-
},
|
|
685
|
+
response: { output: 'Binary content provided (1 item(s)).' },
|
|
600
686
|
},
|
|
601
687
|
},
|
|
602
688
|
llmContent,
|
|
603
689
|
]);
|
|
604
690
|
});
|
|
691
|
+
it('should preserve existing functionResponse metadata', () => {
|
|
692
|
+
const innerId = 'inner-call-id';
|
|
693
|
+
const innerName = 'inner-tool-name';
|
|
694
|
+
const responseMetadata = {
|
|
695
|
+
flags: ['flag1'],
|
|
696
|
+
isError: false,
|
|
697
|
+
customData: { key: 'value' },
|
|
698
|
+
};
|
|
699
|
+
const input = {
|
|
700
|
+
functionResponse: {
|
|
701
|
+
id: innerId,
|
|
702
|
+
name: innerName,
|
|
703
|
+
response: responseMetadata,
|
|
704
|
+
},
|
|
705
|
+
};
|
|
706
|
+
const result = convertToFunctionResponse(toolName, callId, input, DEFAULT_GEMINI_MODEL);
|
|
707
|
+
expect(result).toHaveLength(1);
|
|
708
|
+
expect(result[0].functionResponse).toEqual({
|
|
709
|
+
id: callId,
|
|
710
|
+
name: toolName,
|
|
711
|
+
response: responseMetadata,
|
|
712
|
+
});
|
|
713
|
+
});
|
|
605
714
|
it('should handle llmContent as an array of multiple Parts (text and inlineData)', () => {
|
|
606
715
|
const llmContent = [
|
|
607
716
|
{ text: 'Some textual description' },
|
|
608
717
|
{ inlineData: { mimeType: 'image/jpeg', data: 'base64data...' } },
|
|
609
718
|
{ text: 'Another text part' },
|
|
610
719
|
];
|
|
611
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
720
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
612
721
|
expect(result).toEqual([
|
|
613
722
|
{
|
|
614
723
|
functionResponse: {
|
|
615
724
|
name: toolName,
|
|
616
725
|
id: callId,
|
|
617
|
-
response: {
|
|
726
|
+
response: {
|
|
727
|
+
output: 'Some textual description\nAnother text part',
|
|
728
|
+
},
|
|
729
|
+
parts: [
|
|
730
|
+
{ inlineData: { mimeType: 'image/jpeg', data: 'base64data...' } },
|
|
731
|
+
],
|
|
618
732
|
},
|
|
619
733
|
},
|
|
620
|
-
...llmContent,
|
|
621
734
|
]);
|
|
622
735
|
});
|
|
623
736
|
it('should handle llmContent as an array with a single inlineData Part', () => {
|
|
624
737
|
const llmContent = [
|
|
625
738
|
{ inlineData: { mimeType: 'image/gif', data: 'gifdata...' } },
|
|
626
739
|
];
|
|
627
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
740
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
628
741
|
expect(result).toEqual([
|
|
629
742
|
{
|
|
630
743
|
functionResponse: {
|
|
631
744
|
name: toolName,
|
|
632
745
|
id: callId,
|
|
633
|
-
response: {
|
|
634
|
-
|
|
635
|
-
},
|
|
746
|
+
response: { output: 'Binary content provided (1 item(s)).' },
|
|
747
|
+
parts: llmContent,
|
|
636
748
|
},
|
|
637
749
|
},
|
|
638
|
-
...llmContent,
|
|
639
750
|
]);
|
|
640
751
|
});
|
|
641
752
|
it('should handle llmContent as a generic Part (not text, inlineData, or fileData)', () => {
|
|
642
753
|
const llmContent = { functionCall: { name: 'test', args: {} } };
|
|
643
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
754
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
644
755
|
expect(result).toEqual([
|
|
645
756
|
{
|
|
646
757
|
functionResponse: {
|
|
647
758
|
name: toolName,
|
|
648
759
|
id: callId,
|
|
649
|
-
response: {
|
|
760
|
+
response: {},
|
|
650
761
|
},
|
|
651
762
|
},
|
|
652
763
|
]);
|
|
653
764
|
});
|
|
654
765
|
it('should handle empty string llmContent', () => {
|
|
655
766
|
const llmContent = '';
|
|
656
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
767
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
657
768
|
expect(result).toEqual([
|
|
658
769
|
{
|
|
659
770
|
functionResponse: {
|
|
@@ -666,26 +777,26 @@ describe('convertToFunctionResponse', () => {
|
|
|
666
777
|
});
|
|
667
778
|
it('should handle llmContent as an empty array', () => {
|
|
668
779
|
const llmContent = [];
|
|
669
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
780
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
670
781
|
expect(result).toEqual([
|
|
671
782
|
{
|
|
672
783
|
functionResponse: {
|
|
673
784
|
name: toolName,
|
|
674
785
|
id: callId,
|
|
675
|
-
response: {
|
|
786
|
+
response: {},
|
|
676
787
|
},
|
|
677
788
|
},
|
|
678
789
|
]);
|
|
679
790
|
});
|
|
680
791
|
it('should handle llmContent as a Part with undefined inlineData/fileData/text', () => {
|
|
681
792
|
const llmContent = {}; // An empty part object
|
|
682
|
-
const result = convertToFunctionResponse(toolName, callId, llmContent);
|
|
793
|
+
const result = convertToFunctionResponse(toolName, callId, llmContent, PREVIEW_GEMINI_MODEL);
|
|
683
794
|
expect(result).toEqual([
|
|
684
795
|
{
|
|
685
796
|
functionResponse: {
|
|
686
797
|
name: toolName,
|
|
687
798
|
id: callId,
|
|
688
|
-
response: {
|
|
799
|
+
response: {},
|
|
689
800
|
},
|
|
690
801
|
},
|
|
691
802
|
]);
|
|
@@ -745,8 +856,13 @@ describe('CoreToolScheduler edit cancellation', () => {
|
|
|
745
856
|
const onToolCallsUpdate = vi.fn();
|
|
746
857
|
const mockConfig = createMockConfig({
|
|
747
858
|
getToolRegistry: () => mockToolRegistry,
|
|
748
|
-
isInteractive: () => false,
|
|
749
859
|
});
|
|
860
|
+
const mockMessageBus = createMockMessageBus();
|
|
861
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
862
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
863
|
+
mockConfig.getHookSystem = vi
|
|
864
|
+
.fn()
|
|
865
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
750
866
|
const scheduler = new CoreToolScheduler({
|
|
751
867
|
config: mockConfig,
|
|
752
868
|
onAllToolCallsComplete,
|
|
@@ -815,6 +931,12 @@ describe('CoreToolScheduler YOLO mode', () => {
|
|
|
815
931
|
getApprovalMode: () => ApprovalMode.YOLO,
|
|
816
932
|
isInteractive: () => false,
|
|
817
933
|
});
|
|
934
|
+
const mockMessageBus = createMockMessageBus();
|
|
935
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
936
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
937
|
+
mockConfig.getHookSystem = vi
|
|
938
|
+
.fn()
|
|
939
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
818
940
|
const scheduler = new CoreToolScheduler({
|
|
819
941
|
config: mockConfig,
|
|
820
942
|
onAllToolCallsComplete,
|
|
@@ -889,6 +1011,12 @@ describe('CoreToolScheduler request queueing', () => {
|
|
|
889
1011
|
getApprovalMode: () => ApprovalMode.YOLO, // Use YOLO to avoid confirmation prompts
|
|
890
1012
|
isInteractive: () => false,
|
|
891
1013
|
});
|
|
1014
|
+
const mockMessageBus = createMockMessageBus();
|
|
1015
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
1016
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
1017
|
+
mockConfig.getHookSystem = vi
|
|
1018
|
+
.fn()
|
|
1019
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
892
1020
|
const scheduler = new CoreToolScheduler({
|
|
893
1021
|
config: mockConfig,
|
|
894
1022
|
onAllToolCallsComplete,
|
|
@@ -911,6 +1039,7 @@ describe('CoreToolScheduler request queueing', () => {
|
|
|
911
1039
|
prompt_id: 'prompt-2',
|
|
912
1040
|
};
|
|
913
1041
|
// Schedule the first call, which will pause execution.
|
|
1042
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
914
1043
|
scheduler.schedule([request1], abortController.signal);
|
|
915
1044
|
// Wait for the first call to be in the 'executing' state.
|
|
916
1045
|
await waitForStatus(onToolCallsUpdate, 'executing');
|
|
@@ -983,6 +1112,12 @@ describe('CoreToolScheduler request queueing', () => {
|
|
|
983
1112
|
}),
|
|
984
1113
|
isInteractive: () => false,
|
|
985
1114
|
});
|
|
1115
|
+
const mockMessageBus = createMockMessageBus();
|
|
1116
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
1117
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
1118
|
+
mockConfig.getHookSystem = vi
|
|
1119
|
+
.fn()
|
|
1120
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
986
1121
|
const scheduler = new CoreToolScheduler({
|
|
987
1122
|
config: mockConfig,
|
|
988
1123
|
onAllToolCallsComplete,
|
|
@@ -1069,7 +1204,7 @@ describe('CoreToolScheduler request queueing', () => {
|
|
|
1069
1204
|
terminalHeight: 24,
|
|
1070
1205
|
}),
|
|
1071
1206
|
getToolRegistry: () => toolRegistry,
|
|
1072
|
-
|
|
1207
|
+
getHookSystem: () => undefined,
|
|
1073
1208
|
});
|
|
1074
1209
|
const scheduler = new CoreToolScheduler({
|
|
1075
1210
|
config: mockConfig,
|
|
@@ -1118,8 +1253,13 @@ describe('CoreToolScheduler request queueing', () => {
|
|
|
1118
1253
|
const mockConfig = createMockConfig({
|
|
1119
1254
|
getToolRegistry: () => mockToolRegistry,
|
|
1120
1255
|
getApprovalMode: () => ApprovalMode.YOLO,
|
|
1121
|
-
isInteractive: () => false,
|
|
1122
1256
|
});
|
|
1257
|
+
const mockMessageBus = createMockMessageBus();
|
|
1258
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
1259
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
1260
|
+
mockConfig.getHookSystem = vi
|
|
1261
|
+
.fn()
|
|
1262
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
1123
1263
|
const scheduler = new CoreToolScheduler({
|
|
1124
1264
|
config: mockConfig,
|
|
1125
1265
|
onAllToolCallsComplete,
|
|
@@ -1160,8 +1300,13 @@ describe('CoreToolScheduler request queueing', () => {
|
|
|
1160
1300
|
setApprovalMode: (mode) => {
|
|
1161
1301
|
approvalMode = mode;
|
|
1162
1302
|
},
|
|
1163
|
-
isInteractive: () => false,
|
|
1164
1303
|
});
|
|
1304
|
+
const mockMessageBus = createMockMessageBus();
|
|
1305
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
1306
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
1307
|
+
mockConfig.getHookSystem = vi
|
|
1308
|
+
.fn()
|
|
1309
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
1165
1310
|
const testTool = new TestApprovalTool(mockConfig);
|
|
1166
1311
|
const toolRegistry = {
|
|
1167
1312
|
getTool: () => testTool,
|
|
@@ -1303,6 +1448,12 @@ describe('CoreToolScheduler Sequential Execution', () => {
|
|
|
1303
1448
|
getApprovalMode: () => ApprovalMode.YOLO, // Use YOLO to avoid confirmation prompts
|
|
1304
1449
|
isInteractive: () => false,
|
|
1305
1450
|
});
|
|
1451
|
+
const mockMessageBus = createMockMessageBus();
|
|
1452
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
1453
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
1454
|
+
mockConfig.getHookSystem = vi
|
|
1455
|
+
.fn()
|
|
1456
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
1306
1457
|
const scheduler = new CoreToolScheduler({
|
|
1307
1458
|
config: mockConfig,
|
|
1308
1459
|
onAllToolCallsComplete,
|
|
@@ -1389,6 +1540,12 @@ describe('CoreToolScheduler Sequential Execution', () => {
|
|
|
1389
1540
|
getApprovalMode: () => ApprovalMode.YOLO,
|
|
1390
1541
|
isInteractive: () => false,
|
|
1391
1542
|
});
|
|
1543
|
+
const mockMessageBus = createMockMessageBus();
|
|
1544
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
1545
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
1546
|
+
mockConfig.getHookSystem = vi
|
|
1547
|
+
.fn()
|
|
1548
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
1392
1549
|
const scheduler = new CoreToolScheduler({
|
|
1393
1550
|
config: mockConfig,
|
|
1394
1551
|
onAllToolCallsComplete,
|
|
@@ -1470,6 +1627,12 @@ describe('CoreToolScheduler Sequential Execution', () => {
|
|
|
1470
1627
|
const mockConfig = createMockConfig({
|
|
1471
1628
|
getToolRegistry: () => mockToolRegistry,
|
|
1472
1629
|
});
|
|
1630
|
+
const mockMessageBus = createMockMessageBus();
|
|
1631
|
+
mockConfig.getMessageBus = vi.fn().mockReturnValue(mockMessageBus);
|
|
1632
|
+
mockConfig.getEnableHooks = vi.fn().mockReturnValue(false);
|
|
1633
|
+
mockConfig.getHookSystem = vi
|
|
1634
|
+
.fn()
|
|
1635
|
+
.mockReturnValue(new HookSystem(mockConfig));
|
|
1473
1636
|
const scheduler = new CoreToolScheduler({
|
|
1474
1637
|
config: mockConfig,
|
|
1475
1638
|
onAllToolCallsComplete,
|