@google/gemini-cli-core 0.24.0-preview.3 → 0.25.0-preview.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/README.md +1 -1
- 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/changelogs/index.md +22 -0
- package/dist/docs/changelogs/latest.md +137 -209
- package/dist/docs/changelogs/preview.md +116 -114
- package/dist/docs/changelogs/releases.md +273 -7
- package/dist/docs/cli/commands.md +3 -0
- package/dist/docs/cli/keyboard-shortcuts.md +34 -41
- package/dist/docs/cli/model-routing.md +1 -1
- package/dist/docs/cli/model.md +1 -1
- package/dist/docs/cli/settings.md +69 -53
- package/dist/docs/cli/skills.md +35 -3
- package/dist/docs/cli/telemetry.md +20 -0
- package/dist/docs/core/memport.md +2 -0
- package/dist/docs/core/policy-engine.md +3 -2
- package/dist/docs/extensions/index.md +57 -7
- package/dist/docs/get-started/configuration.md +39 -9
- package/dist/docs/get-started/gemini-3.md +2 -17
- package/dist/docs/hooks/best-practices.md +1 -1
- package/dist/docs/hooks/index.md +47 -11
- package/dist/docs/hooks/reference.md +19 -9
- package/dist/docs/hooks/writing-hooks.md +19 -1
- package/dist/docs/releases.md +1 -1
- package/dist/docs/tools/shell.md +1 -1
- package/dist/docs/troubleshooting.md +9 -3
- package/dist/src/agents/a2a-client-manager.d.ts +4 -0
- package/dist/src/agents/a2a-client-manager.js +22 -22
- package/dist/src/agents/a2a-client-manager.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.test.js +44 -0
- 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/agentLoader.d.ts +68 -0
- package/dist/src/agents/{toml-loader.js → agentLoader.js} +86 -79
- package/dist/src/agents/agentLoader.js.map +1 -0
- package/dist/src/agents/agentLoader.test.js +307 -0
- package/dist/src/agents/agentLoader.test.js.map +1 -0
- package/dist/src/agents/{introspection-agent.d.ts → cli-help-agent.d.ts} +3 -2
- package/dist/src/agents/cli-help-agent.js +85 -0
- package/dist/src/agents/cli-help-agent.js.map +1 -0
- package/dist/src/agents/{introspection-agent.test.js → cli-help-agent.test.js} +25 -7
- package/dist/src/agents/cli-help-agent.test.js.map +1 -0
- package/dist/src/agents/codebase-investigator.js +10 -5
- package/dist/src/agents/codebase-investigator.js.map +1 -1
- package/dist/src/agents/delegate-to-agent-tool.js +17 -10
- package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
- package/dist/src/agents/delegate-to-agent-tool.test.js +60 -12
- package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
- package/dist/src/agents/local-executor.js +42 -8
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +70 -11
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +8 -2
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/registry.d.ts +12 -0
- package/dist/src/agents/registry.js +111 -42
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +228 -15
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/remote-invocation.js +10 -13
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/remote-invocation.test.js +1 -1
- package/dist/src/agents/remote-invocation.test.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.test.js +8 -2
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
- package/dist/src/agents/types.d.ts +3 -11
- package/dist/src/agents/types.js.map +1 -1
- package/dist/src/availability/fallbackIntegration.test.js +58 -0
- package/dist/src/availability/fallbackIntegration.test.js.map +1 -0
- package/dist/src/code_assist/experiments/experiments.d.ts +1 -1
- package/dist/src/code_assist/experiments/experiments.js +21 -0
- package/dist/src/code_assist/experiments/experiments.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 +110 -0
- package/dist/src/code_assist/experiments/experiments_local.test.js.map +1 -0
- package/dist/src/code_assist/oauth-credential-storage.js +3 -4
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +44 -19
- package/dist/src/code_assist/oauth2.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 +7 -0
- package/dist/src/code_assist/types.js +7 -0
- 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 +80 -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/config/config.d.ts +50 -7
- package/dist/src/config/config.js +113 -48
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +34 -4
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/models.d.ts +7 -0
- package/dist/src/config/models.js +11 -0
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +17 -1
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/config/storage.d.ts +1 -0
- package/dist/src/config/storage.js +5 -2
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/core/client.js +25 -8
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +45 -31
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.d.ts +8 -4
- package/dist/src/core/coreToolHookTriggers.js +43 -5
- package/dist/src/core/coreToolHookTriggers.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +1 -8
- package/dist/src/core/coreToolScheduler.js +58 -60
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +215 -8
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +26 -1
- package/dist/src/core/geminiChat.js +91 -8
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +109 -0
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/geminiChatHookTriggers.d.ts +8 -4
- package/dist/src/core/geminiChatHookTriggers.js +31 -9
- package/dist/src/core/geminiChatHookTriggers.js.map +1 -1
- package/dist/src/core/geminiChatHookTriggers.test.d.ts +6 -0
- package/dist/src/core/geminiChatHookTriggers.test.js +153 -0
- package/dist/src/core/geminiChatHookTriggers.test.js.map +1 -0
- package/dist/src/core/loggingContentGenerator.js +5 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.test.js +30 -0
- package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +4 -2
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +8 -8
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +4 -2
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/tokenLimits.js +6 -12
- 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 +2 -0
- package/dist/src/core/turn.js +14 -0
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookEventHandler.d.ts +3 -3
- package/dist/src/hooks/hookEventHandler.js +27 -8
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.test.js +145 -0
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
- package/dist/src/hooks/hookSystem.d.ts +12 -0
- package/dist/src/hooks/hookSystem.js +38 -0
- package/dist/src/hooks/hookSystem.js.map +1 -1
- package/dist/src/hooks/hookTranslator.js +2 -1
- 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/types.d.ts +21 -0
- package/dist/src/hooks/types.js +0 -15
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/hooks/types.test.js +4 -28
- package/dist/src/hooks/types.test.js.map +1 -1
- package/dist/src/ide/detect-ide.d.ts +4 -0
- package/dist/src/ide/detect-ide.js +7 -2
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/detect-ide.test.js +10 -0
- package/dist/src/ide/detect-ide.test.js.map +1 -1
- package/dist/src/ide/ide-installer.js +2 -2
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ide-installer.test.js +11 -2
- package/dist/src/ide/ide-installer.test.js.map +1 -1
- package/dist/src/index.d.ts +10 -1
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/token-storage/file-token-storage.js +2 -2
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
- package/dist/src/policy/config.test.js +3 -2
- package/dist/src/policy/config.test.js.map +1 -1
- package/dist/src/policy/persistence.test.js +1 -1
- package/dist/src/policy/persistence.test.js.map +1 -1
- package/dist/src/policy/policies/agent.toml +1 -1
- package/dist/src/policy/policy-engine.js +80 -20
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +17 -0
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/policy-updater.test.js +3 -3
- 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/types.d.ts +4 -0
- package/dist/src/policy/utils.js +4 -1
- package/dist/src/policy/utils.js.map +1 -1
- package/dist/src/policy/utils.test.js +34 -6
- package/dist/src/policy/utils.test.js.map +1 -1
- package/dist/src/routing/routingStrategy.d.ts +2 -0
- package/dist/src/routing/strategies/classifierStrategy.js +1 -1
- package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
- package/dist/src/routing/strategies/classifierStrategy.test.js +16 -0
- package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.js +2 -2
- package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
- package/dist/src/routing/strategies/fallbackStrategy.test.js +13 -0
- package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.d.ts +1 -1
- package/dist/src/routing/strategies/overrideStrategy.js +5 -5
- package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
- package/dist/src/routing/strategies/overrideStrategy.test.js +14 -0
- package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
- package/dist/src/scheduler/tool-executor.js +2 -2
- package/dist/src/scheduler/tool-executor.js.map +1 -1
- package/dist/src/scheduler/tool-modifier.d.ts +23 -0
- package/dist/src/scheduler/tool-modifier.js +50 -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 +159 -0
- package/dist/src/scheduler/tool-modifier.test.js.map +1 -0
- package/dist/src/services/chatCompressionService.js +3 -10
- package/dist/src/services/chatCompressionService.js.map +1 -1
- package/dist/src/services/chatCompressionService.test.js +1 -0
- package/dist/src/services/chatCompressionService.test.js.map +1 -1
- package/dist/src/services/chatRecordingService.d.ts +7 -1
- package/dist/src/services/chatRecordingService.js +20 -2
- package/dist/src/services/chatRecordingService.js.map +1 -1
- package/dist/src/services/chatRecordingService.test.js +43 -0
- package/dist/src/services/chatRecordingService.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/gitService.test.js +10 -2
- package/dist/src/services/gitService.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 +38 -4
- package/dist/src/services/modelConfigService.js +135 -76
- package/dist/src/services/modelConfigService.js.map +1 -1
- package/dist/src/services/modelConfigService.test.js +116 -0
- package/dist/src/services/modelConfigService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +1 -1
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +43 -2
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/skills/skillLoader.d.ts +3 -0
- package/dist/src/skills/skillLoader.js +3 -3
- package/dist/src/skills/skillLoader.js.map +1 -1
- package/dist/src/skills/skillLoader.test.js +4 -2
- package/dist/src/skills/skillLoader.test.js.map +1 -1
- package/dist/src/skills/skillManager.d.ts +18 -0
- package/dist/src/skills/skillManager.js +43 -5
- package/dist/src/skills/skillManager.js.map +1 -1
- package/dist/src/skills/skillManager.test.js +83 -1
- package/dist/src/skills/skillManager.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +9 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +60 -9
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +105 -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 +5 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +8 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.js +1 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +8 -0
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/types.js +4 -2
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/tools/activate-skill.js +23 -10
- 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/confirmation-policy.test.js +1 -0
- package/dist/src/tools/confirmation-policy.test.js.map +1 -1
- package/dist/src/tools/edit.js +12 -0
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +34 -0
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/get-internal-docs.js +11 -18
- package/dist/src/tools/get-internal-docs.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +18 -3
- package/dist/src/tools/mcp-tool.js +1 -1
- package/dist/src/tools/mcp-tool.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/tools.d.ts +2 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/write-file.js +4 -2
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +45 -6
- package/dist/src/tools/write-file.test.js.map +1 -1
- 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/editCorrector.d.ts +3 -3
- package/dist/src/utils/editCorrector.js +21 -5
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +20 -20
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.d.ts +3 -2
- package/dist/src/utils/editor.js +26 -6
- package/dist/src/utils/editor.js.map +1 -1
- package/dist/src/utils/editor.test.js +27 -4
- package/dist/src/utils/editor.test.js.map +1 -1
- package/dist/src/utils/events.d.ts +23 -1
- package/dist/src/utils/events.js +14 -0
- package/dist/src/utils/events.js.map +1 -1
- 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/gitIgnoreParser.js +9 -10
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/installationManager.test.js +11 -3
- package/dist/src/utils/installationManager.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +1 -2
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.test.js +9 -0
- package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
- package/dist/src/utils/paths.d.ts +10 -0
- package/dist/src/utils/paths.js +20 -1
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/retry.d.ts +1 -0
- package/dist/src/utils/retry.js +14 -2
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +11 -11
- package/dist/src/utils/retry.test.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/workspaceContext.test.js +1 -1
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -2
- package/dist/docs/cli/configuration.md +0 -780
- package/dist/docs/get-started/deployment.md +0 -143
- package/dist/google-gemini-cli-core-0.24.0-preview.2.tgz +0 -0
- package/dist/src/agents/introspection-agent.js +0 -72
- package/dist/src/agents/introspection-agent.js.map +0 -1
- package/dist/src/agents/introspection-agent.test.js.map +0 -1
- package/dist/src/agents/toml-loader.d.ts +0 -74
- package/dist/src/agents/toml-loader.js.map +0 -1
- package/dist/src/agents/toml-loader.test.js +0 -309
- package/dist/src/agents/toml-loader.test.js.map +0 -1
- package/dist/src/core/sessionHookTriggers.d.ts +0 -29
- package/dist/src/core/sessionHookTriggers.js +0 -75
- package/dist/src/core/sessionHookTriggers.js.map +0 -1
- package/dist/src/utils/shell-permissions.d.ts +0 -52
- package/dist/src/utils/shell-permissions.js +0 -188
- package/dist/src/utils/shell-permissions.js.map +0 -1
- package/dist/src/utils/shell-permissions.test.js +0 -369
- package/dist/src/utils/shell-permissions.test.js.map +0 -1
- /package/dist/src/agents/{introspection-agent.test.d.ts → agentLoader.test.d.ts} +0 -0
- /package/dist/src/agents/{toml-loader.test.d.ts → cli-help-agent.test.d.ts} +0 -0
- /package/dist/src/{utils/shell-permissions.test.d.ts → availability/fallbackIntegration.test.d.ts} +0 -0
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
Note: This page will be replaced by [installation.md](installation.md).
|
|
2
|
-
|
|
3
|
-
# Gemini CLI installation, execution, and deployment
|
|
4
|
-
|
|
5
|
-
Install and run Gemini CLI. This document provides an overview of Gemini CLI's
|
|
6
|
-
installation methods and deployment architecture.
|
|
7
|
-
|
|
8
|
-
## How to install and/or run Gemini CLI
|
|
9
|
-
|
|
10
|
-
There are several ways to run Gemini CLI. The recommended option depends on how
|
|
11
|
-
you intend to use Gemini CLI.
|
|
12
|
-
|
|
13
|
-
- As a standard installation. This is the most straightforward method of using
|
|
14
|
-
Gemini CLI.
|
|
15
|
-
- In a sandbox. This method offers increased security and isolation.
|
|
16
|
-
- From the source. This is recommended for contributors to the project.
|
|
17
|
-
|
|
18
|
-
### 1. Standard installation (recommended for standard users)
|
|
19
|
-
|
|
20
|
-
This is the recommended way for end-users to install Gemini CLI. It involves
|
|
21
|
-
downloading the Gemini CLI package from the NPM registry.
|
|
22
|
-
|
|
23
|
-
- **Global install:**
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
npm install -g @google/gemini-cli
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Then, run the CLI from anywhere:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
gemini
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
- **NPX execution:**
|
|
36
|
-
|
|
37
|
-
```bash
|
|
38
|
-
# Execute the latest version from NPM without a global install
|
|
39
|
-
npx @google/gemini-cli
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 2. Run in a sandbox (Docker/Podman)
|
|
43
|
-
|
|
44
|
-
For security and isolation, Gemini CLI can be run inside a container. This is
|
|
45
|
-
the default way that the CLI executes tools that might have side effects.
|
|
46
|
-
|
|
47
|
-
- **Directly from the registry:** You can run the published sandbox image
|
|
48
|
-
directly. This is useful for environments where you only have Docker and want
|
|
49
|
-
to run the CLI.
|
|
50
|
-
```bash
|
|
51
|
-
# Run the published sandbox image
|
|
52
|
-
docker run --rm -it us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.1.1
|
|
53
|
-
```
|
|
54
|
-
- **Using the `--sandbox` flag:** If you have Gemini CLI installed locally
|
|
55
|
-
(using the standard installation described above), you can instruct it to run
|
|
56
|
-
inside the sandbox container.
|
|
57
|
-
```bash
|
|
58
|
-
gemini --sandbox -y -p "your prompt here"
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### 3. Run from source (recommended for Gemini CLI contributors)
|
|
62
|
-
|
|
63
|
-
Contributors to the project will want to run the CLI directly from the source
|
|
64
|
-
code.
|
|
65
|
-
|
|
66
|
-
- **Development mode:** This method provides hot-reloading and is useful for
|
|
67
|
-
active development.
|
|
68
|
-
```bash
|
|
69
|
-
# From the root of the repository
|
|
70
|
-
npm run start
|
|
71
|
-
```
|
|
72
|
-
- **Production-like mode (Linked package):** This method simulates a global
|
|
73
|
-
installation by linking your local package. It's useful for testing a local
|
|
74
|
-
build in a production workflow.
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
# Link the local cli package to your global node_modules
|
|
78
|
-
npm link packages/cli
|
|
79
|
-
|
|
80
|
-
# Now you can run your local version using the `gemini` command
|
|
81
|
-
gemini
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
### 4. Running the latest Gemini CLI commit from GitHub
|
|
87
|
-
|
|
88
|
-
You can run the most recently committed version of Gemini CLI directly from the
|
|
89
|
-
GitHub repository. This is useful for testing features still in development.
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
# Execute the CLI directly from the main branch on GitHub
|
|
93
|
-
npx https://github.com/google-gemini/gemini-cli
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Deployment architecture
|
|
97
|
-
|
|
98
|
-
The execution methods described above are made possible by the following
|
|
99
|
-
architectural components and processes:
|
|
100
|
-
|
|
101
|
-
**NPM packages**
|
|
102
|
-
|
|
103
|
-
Gemini CLI project is a monorepo that publishes two core packages to the NPM
|
|
104
|
-
registry:
|
|
105
|
-
|
|
106
|
-
- `@google/gemini-cli-core`: The backend, handling logic and tool execution.
|
|
107
|
-
- `@google/gemini-cli`: The user-facing frontend.
|
|
108
|
-
|
|
109
|
-
These packages are used when performing the standard installation and when
|
|
110
|
-
running Gemini CLI from the source.
|
|
111
|
-
|
|
112
|
-
**Build and packaging processes**
|
|
113
|
-
|
|
114
|
-
There are two distinct build processes used, depending on the distribution
|
|
115
|
-
channel:
|
|
116
|
-
|
|
117
|
-
- **NPM publication:** For publishing to the NPM registry, the TypeScript source
|
|
118
|
-
code in `@google/gemini-cli-core` and `@google/gemini-cli` is transpiled into
|
|
119
|
-
standard JavaScript using the TypeScript Compiler (`tsc`). The resulting
|
|
120
|
-
`dist/` directory is what gets published in the NPM package. This is a
|
|
121
|
-
standard approach for TypeScript libraries.
|
|
122
|
-
|
|
123
|
-
- **GitHub `npx` execution:** When running the latest version of Gemini CLI
|
|
124
|
-
directly from GitHub, a different process is triggered by the `prepare` script
|
|
125
|
-
in `package.json`. This script uses `esbuild` to bundle the entire application
|
|
126
|
-
and its dependencies into a single, self-contained JavaScript file. This
|
|
127
|
-
bundle is created on-the-fly on the user's machine and is not checked into the
|
|
128
|
-
repository.
|
|
129
|
-
|
|
130
|
-
**Docker sandbox image**
|
|
131
|
-
|
|
132
|
-
The Docker-based execution method is supported by the `gemini-cli-sandbox`
|
|
133
|
-
container image. This image is published to a container registry and contains a
|
|
134
|
-
pre-installed, global version of Gemini CLI.
|
|
135
|
-
|
|
136
|
-
## Release process
|
|
137
|
-
|
|
138
|
-
The release process is automated through GitHub Actions. The release workflow
|
|
139
|
-
performs the following actions:
|
|
140
|
-
|
|
141
|
-
1. Build the NPM packages using `tsc`.
|
|
142
|
-
2. Publish the NPM packages to the artifact registry.
|
|
143
|
-
3. Create GitHub releases with bundled assets.
|
|
Binary file
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { GET_INTERNAL_DOCS_TOOL_NAME } from '../tools/tool-names.js';
|
|
7
|
-
import { GEMINI_MODEL_ALIAS_FLASH } from '../config/models.js';
|
|
8
|
-
import { z } from 'zod';
|
|
9
|
-
const IntrospectionReportSchema = z.object({
|
|
10
|
-
answer: z
|
|
11
|
-
.string()
|
|
12
|
-
.describe('The detailed answer to the user question about Gemini CLI.'),
|
|
13
|
-
sources: z
|
|
14
|
-
.array(z.string())
|
|
15
|
-
.describe('The documentation files used to answer the question.'),
|
|
16
|
-
});
|
|
17
|
-
/**
|
|
18
|
-
* An agent specialized in answering questions about Gemini CLI itself,
|
|
19
|
-
* using its own documentation and runtime state.
|
|
20
|
-
*/
|
|
21
|
-
export const IntrospectionAgent = {
|
|
22
|
-
name: 'introspection_agent',
|
|
23
|
-
kind: 'local',
|
|
24
|
-
displayName: 'Introspection Agent',
|
|
25
|
-
description: 'Specialized in answering questions about yourself (Gemini CLI): features, documentation, and current runtime configuration.',
|
|
26
|
-
inputConfig: {
|
|
27
|
-
inputs: {
|
|
28
|
-
question: {
|
|
29
|
-
description: 'The specific question about Gemini CLI.',
|
|
30
|
-
type: 'string',
|
|
31
|
-
required: true,
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
outputConfig: {
|
|
36
|
-
outputName: 'report',
|
|
37
|
-
description: 'The final answer and sources as a JSON object.',
|
|
38
|
-
schema: IntrospectionReportSchema,
|
|
39
|
-
},
|
|
40
|
-
processOutput: (output) => JSON.stringify(output, null, 2),
|
|
41
|
-
modelConfig: {
|
|
42
|
-
model: GEMINI_MODEL_ALIAS_FLASH,
|
|
43
|
-
temp: 0.1,
|
|
44
|
-
top_p: 0.95,
|
|
45
|
-
thinkingBudget: -1,
|
|
46
|
-
},
|
|
47
|
-
runConfig: {
|
|
48
|
-
max_time_minutes: 3,
|
|
49
|
-
max_turns: 10,
|
|
50
|
-
},
|
|
51
|
-
toolConfig: {
|
|
52
|
-
tools: [GET_INTERNAL_DOCS_TOOL_NAME],
|
|
53
|
-
},
|
|
54
|
-
promptConfig: {
|
|
55
|
-
query: 'Your task is to answer the following question about Gemini CLI:\n' +
|
|
56
|
-
'<question>\n' +
|
|
57
|
-
'${question}\n' +
|
|
58
|
-
'</question>',
|
|
59
|
-
systemPrompt: "You are **Introspection Agent**, an expert on Gemini CLI. Your purpose is to provide accurate information about Gemini CLI's features, configuration, and current state.\n\n" +
|
|
60
|
-
'### Runtime Context\n' +
|
|
61
|
-
'- **CLI Version:** ${cliVersion}\n' +
|
|
62
|
-
'- **Active Model:** ${activeModel}\n' +
|
|
63
|
-
"- **Today's Date:** ${today}\n\n" +
|
|
64
|
-
'### Instructions\n' +
|
|
65
|
-
"1. **Explore Documentation**: Use the `get_internal_docs` tool to find answers. If you don't know where to start, call `get_internal_docs()` without arguments to see the full list of available documentation files.\n" +
|
|
66
|
-
'2. **Be Precise**: Use the provided runtime context and documentation to give exact answers.\n' +
|
|
67
|
-
'3. **Cite Sources**: Always include the specific documentation files you used in your final report.\n' +
|
|
68
|
-
'4. **Non-Interactive**: You operate in a loop and cannot ask the user for more info. If the question is ambiguous, answer as best as you can with the information available.\n\n' +
|
|
69
|
-
'You MUST call `complete_task` with a JSON report containing your `answer` and the `sources` you used.',
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
//# sourceMappingURL=introspection-agent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"introspection-agent.js","sourceRoot":"","sources":["../../../src/agents/introspection-agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,CAAC,4DAA4D,CAAC;IACzE,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,sDAAsD,CAAC;CACpE,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAE3B;IACF,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,qBAAqB;IAClC,WAAW,EACT,6HAA6H;IAC/H,WAAW,EAAE;QACX,MAAM,EAAE;YACN,QAAQ,EAAE;gBACR,WAAW,EAAE,yCAAyC;gBACtD,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;aACf;SACF;KACF;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,gDAAgD;QAC7D,MAAM,EAAE,yBAAyB;KAClC;IAED,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,WAAW,EAAE;QACX,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,IAAI;QACX,cAAc,EAAE,CAAC,CAAC;KACnB;IAED,SAAS,EAAE;QACT,gBAAgB,EAAE,CAAC;QACnB,SAAS,EAAE,EAAE;KACd;IAED,UAAU,EAAE;QACV,KAAK,EAAE,CAAC,2BAA2B,CAAC;KACrC;IAED,YAAY,EAAE;QACZ,KAAK,EACH,mEAAmE;YACnE,cAAc;YACd,eAAe;YACf,aAAa;QACf,YAAY,EACV,8KAA8K;YAC9K,uBAAuB;YACvB,oCAAoC;YACpC,sCAAsC;YACtC,kCAAkC;YAClC,oBAAoB;YACpB,yNAAyN;YACzN,gGAAgG;YAChG,uGAAuG;YACvG,kLAAkL;YAClL,uGAAuG;KAC1G;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"introspection-agent.test.js","sourceRoot":"","sources":["../../../src/agents/introspection-agent.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import type { AgentDefinition } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* DTO for TOML parsing - represents the raw structure of the TOML file.
|
|
9
|
-
*/
|
|
10
|
-
interface TomlBaseAgentDefinition {
|
|
11
|
-
name: string;
|
|
12
|
-
display_name?: string;
|
|
13
|
-
}
|
|
14
|
-
interface TomlLocalAgentDefinition extends TomlBaseAgentDefinition {
|
|
15
|
-
kind: 'local';
|
|
16
|
-
description: string;
|
|
17
|
-
tools?: string[];
|
|
18
|
-
prompts: {
|
|
19
|
-
system_prompt: string;
|
|
20
|
-
query?: string;
|
|
21
|
-
};
|
|
22
|
-
model?: {
|
|
23
|
-
model?: string;
|
|
24
|
-
temperature?: number;
|
|
25
|
-
};
|
|
26
|
-
run?: {
|
|
27
|
-
max_turns?: number;
|
|
28
|
-
timeout_mins?: number;
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
interface TomlRemoteAgentDefinition extends TomlBaseAgentDefinition {
|
|
32
|
-
description?: string;
|
|
33
|
-
kind: 'remote';
|
|
34
|
-
agent_card_url: string;
|
|
35
|
-
}
|
|
36
|
-
type TomlAgentDefinition = TomlLocalAgentDefinition | TomlRemoteAgentDefinition;
|
|
37
|
-
/**
|
|
38
|
-
* Error thrown when an agent definition is invalid or cannot be loaded.
|
|
39
|
-
*/
|
|
40
|
-
export declare class AgentLoadError extends Error {
|
|
41
|
-
filePath: string;
|
|
42
|
-
constructor(filePath: string, message: string);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Result of loading agents from a directory.
|
|
46
|
-
*/
|
|
47
|
-
export interface AgentLoadResult {
|
|
48
|
-
agents: AgentDefinition[];
|
|
49
|
-
errors: AgentLoadError[];
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Parses and validates an agent TOML file. Returns a validated array of RemoteAgentDefinitions or a single LocalAgentDefinition.
|
|
53
|
-
*
|
|
54
|
-
* @param filePath Path to the TOML file.
|
|
55
|
-
* @returns An array of parsed and validated TomlAgentDefinitions.
|
|
56
|
-
* @throws AgentLoadError if parsing or validation fails.
|
|
57
|
-
*/
|
|
58
|
-
export declare function parseAgentToml(filePath: string): Promise<TomlAgentDefinition[]>;
|
|
59
|
-
/**
|
|
60
|
-
* Converts a TomlAgentDefinition DTO to the internal AgentDefinition structure.
|
|
61
|
-
*
|
|
62
|
-
* @param toml The parsed TOML definition.
|
|
63
|
-
* @returns The internal AgentDefinition.
|
|
64
|
-
*/
|
|
65
|
-
export declare function tomlToAgentDefinition(toml: TomlAgentDefinition): AgentDefinition;
|
|
66
|
-
/**
|
|
67
|
-
* Loads all agents from a specific directory.
|
|
68
|
-
* Ignores non-TOML files and files starting with _.
|
|
69
|
-
*
|
|
70
|
-
* @param dir Directory path to scan.
|
|
71
|
-
* @returns Object containing successfully loaded agents and any errors.
|
|
72
|
-
*/
|
|
73
|
-
export declare function loadAgentsFromDirectory(dir: string): Promise<AgentLoadResult>;
|
|
74
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toml-loader.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAe,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAoChC;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAE9B;IADT,YACS,QAAgB,EACvB,OAAe;QAEf,KAAK,CAAC,6BAA6B,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;QAHpD,aAAQ,GAAR,QAAQ,CAAQ;QAIvB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAUD,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,EAAE;KACR,KAAK,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;AAEvD,MAAM,gBAAgB,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpD,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;QAC/C,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CACH;SACA,QAAQ,EAAE;IACb,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;IACF,KAAK,EAAE,CAAC;SACL,MAAM,CAAC;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;SACD,QAAQ,EAAE;IACb,GAAG,EAAE,CAAC;SACH,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACjD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;KACrD,CAAC;SACD,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CACjC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,wBAAwB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,yEAAyE;AACzE,4EAA4E;AAC5E,sEAAsE;AACtE,oEAAoE;AACpE,MAAM,iBAAiB,GAAG;IACxB,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE;IAClD,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE;CAC5C,CAAC;AAEX,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IAChC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM;IAC3B,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM;CAC5B,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,KAAiB,EAAE,OAAe;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,0DAA0D;QAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YAC5C,OAAO,CAAC,CAAC,WAAW;iBACjB,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,KAAK,GACT,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,eAAe,KAAK,GAAG,CAAC,EAAE,CAAC;gBAChE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM;qBAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;qBAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YACrC,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,GAAG,OAAO,MAAM,MAAM,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB;IAEhB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CACtB,QAAQ,EACR,wBAAyB,KAAe,CAAC,OAAO,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,cAAc,CACtB,QAAQ,EACR,wBAAyB,KAAe,CAAC,OAAO,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,IACE,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,eAAe,IAAK,GAA+B,EACnD,CAAC;QACD,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,cAAc,CACtB,QAAQ,EACR,sBAAsB,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,CAC7E,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,aAAsC,CAAC;IAC5D,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,cAAc,CACtB,QAAQ,EACR,sBAAsB,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAA2B,CAAC;IAEhD,uFAAuF;IACvF,IAAI,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,cAAc,CACtB,QAAQ,EACR,iDAAiD,2BAA2B,gDAAgD,CAC7H,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAyB;IAEzB,MAAM,WAAW,GAAG;QAClB,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,IAAI,EAAE,QAAiB;gBACvB,WAAW,EAAE,yBAAyB;gBACtC,QAAQ,EAAE,KAAK;aAChB;SACF;KACF,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,0BAA0B;YAC3D,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,YAAY,EAAE,IAAI,CAAC,cAAc;YACjC,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,YAAY,EAAE;YACZ,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACxC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;SAC1B;QACD,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC;YAClC,KAAK,EAAE,IAAI;SACZ;QACD,SAAS,EAAE;YACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS;YAC9B,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,IAAI,CAAC;SAC9C;QACD,UAAU,EAAE,IAAI,CAAC,KAAK;YACpB,CAAC,CAAC;gBACE,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;YACH,CAAC,CAAC,SAAS;QACb,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAW;IAEX,MAAM,MAAM,GAAoB;QAC9B,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,IAAI,UAAoB,CAAC;IACzB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gDAAgD;QAChD,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,IAAI,cAAc,CAChB,GAAG,EACH,6BAA8B,KAAe,CAAC,OAAO,EAAE,CACxD,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,UAAU;SACrB,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,MAAM,EAAE;QACd,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5B,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAC9B;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,IAAI,cAAc,CAChB,QAAQ,EACR,qBAAsB,KAAe,CAAC,OAAO,EAAE,CAChD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
-
import * as fs from 'node:fs/promises';
|
|
8
|
-
import * as path from 'node:path';
|
|
9
|
-
import * as os from 'node:os';
|
|
10
|
-
import { parseAgentToml, tomlToAgentDefinition, loadAgentsFromDirectory, AgentLoadError, } from './toml-loader.js';
|
|
11
|
-
import { GEMINI_MODEL_ALIAS_PRO } from '../config/models.js';
|
|
12
|
-
describe('toml-loader', () => {
|
|
13
|
-
let tempDir;
|
|
14
|
-
beforeEach(async () => {
|
|
15
|
-
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'agent-test-'));
|
|
16
|
-
});
|
|
17
|
-
afterEach(async () => {
|
|
18
|
-
if (tempDir) {
|
|
19
|
-
await fs.rm(tempDir, { recursive: true, force: true });
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
async function writeAgentToml(content, fileName = 'test.toml') {
|
|
23
|
-
const filePath = path.join(tempDir, fileName);
|
|
24
|
-
await fs.writeFile(filePath, content);
|
|
25
|
-
return filePath;
|
|
26
|
-
}
|
|
27
|
-
describe('parseAgentToml', () => {
|
|
28
|
-
it('should parse a valid MVA TOML file', async () => {
|
|
29
|
-
const filePath = await writeAgentToml(`
|
|
30
|
-
name = "test-agent"
|
|
31
|
-
description = "A test agent"
|
|
32
|
-
[prompts]
|
|
33
|
-
system_prompt = "You are a test agent."
|
|
34
|
-
`);
|
|
35
|
-
const result = await parseAgentToml(filePath);
|
|
36
|
-
expect(result).toHaveLength(1);
|
|
37
|
-
expect(result[0]).toMatchObject({
|
|
38
|
-
name: 'test-agent',
|
|
39
|
-
description: 'A test agent',
|
|
40
|
-
prompts: {
|
|
41
|
-
system_prompt: 'You are a test agent.',
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
it('should parse a valid remote agent TOML file', async () => {
|
|
46
|
-
const filePath = await writeAgentToml(`
|
|
47
|
-
kind = "remote"
|
|
48
|
-
name = "remote-agent"
|
|
49
|
-
description = "A remote agent"
|
|
50
|
-
agent_card_url = "https://example.com/card"
|
|
51
|
-
`);
|
|
52
|
-
const result = await parseAgentToml(filePath);
|
|
53
|
-
expect(result).toHaveLength(1);
|
|
54
|
-
expect(result[0]).toEqual({
|
|
55
|
-
kind: 'remote',
|
|
56
|
-
name: 'remote-agent',
|
|
57
|
-
description: 'A remote agent',
|
|
58
|
-
agent_card_url: 'https://example.com/card',
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
it('should infer remote agent kind from agent_card_url', async () => {
|
|
62
|
-
const filePath = await writeAgentToml(`
|
|
63
|
-
name = "inferred-remote"
|
|
64
|
-
description = "Inferred"
|
|
65
|
-
agent_card_url = "https://example.com/inferred"
|
|
66
|
-
`);
|
|
67
|
-
const result = await parseAgentToml(filePath);
|
|
68
|
-
expect(result).toHaveLength(1);
|
|
69
|
-
expect(result[0]).toEqual({
|
|
70
|
-
kind: 'remote',
|
|
71
|
-
name: 'inferred-remote',
|
|
72
|
-
description: 'Inferred',
|
|
73
|
-
agent_card_url: 'https://example.com/inferred',
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
it('should parse a remote agent without description', async () => {
|
|
77
|
-
const filePath = await writeAgentToml(`
|
|
78
|
-
kind = "remote"
|
|
79
|
-
name = "no-description-remote"
|
|
80
|
-
agent_card_url = "https://example.com/card"
|
|
81
|
-
`);
|
|
82
|
-
const result = await parseAgentToml(filePath);
|
|
83
|
-
expect(result).toHaveLength(1);
|
|
84
|
-
expect(result[0]).toEqual({
|
|
85
|
-
kind: 'remote',
|
|
86
|
-
name: 'no-description-remote',
|
|
87
|
-
agent_card_url: 'https://example.com/card',
|
|
88
|
-
});
|
|
89
|
-
expect(result[0].description).toBeUndefined();
|
|
90
|
-
// defined after conversion to AgentDefinition
|
|
91
|
-
const agentDef = tomlToAgentDefinition(result[0]);
|
|
92
|
-
expect(agentDef.description).toBe('(Loading description...)');
|
|
93
|
-
});
|
|
94
|
-
it('should parse multiple agents in one file', async () => {
|
|
95
|
-
const filePath = await writeAgentToml(`
|
|
96
|
-
[[remote_agents]]
|
|
97
|
-
kind = "remote"
|
|
98
|
-
name = "agent-1"
|
|
99
|
-
description = "Remote 1"
|
|
100
|
-
agent_card_url = "https://example.com/1"
|
|
101
|
-
|
|
102
|
-
[[remote_agents]]
|
|
103
|
-
kind = "remote"
|
|
104
|
-
name = "agent-2"
|
|
105
|
-
description = "Remote 2"
|
|
106
|
-
agent_card_url = "https://example.com/2"
|
|
107
|
-
`);
|
|
108
|
-
const result = await parseAgentToml(filePath);
|
|
109
|
-
expect(result).toHaveLength(2);
|
|
110
|
-
expect(result[0].name).toBe('agent-1');
|
|
111
|
-
expect(result[0].kind).toBe('remote');
|
|
112
|
-
expect(result[1].name).toBe('agent-2');
|
|
113
|
-
expect(result[1].kind).toBe('remote');
|
|
114
|
-
});
|
|
115
|
-
it('should allow omitting kind in remote_agents block', async () => {
|
|
116
|
-
const filePath = await writeAgentToml(`
|
|
117
|
-
[[remote_agents]]
|
|
118
|
-
name = "implicit-remote-1"
|
|
119
|
-
agent_card_url = "https://example.com/1"
|
|
120
|
-
|
|
121
|
-
[[remote_agents]]
|
|
122
|
-
name = "implicit-remote-2"
|
|
123
|
-
agent_card_url = "https://example.com/2"
|
|
124
|
-
`);
|
|
125
|
-
const result = await parseAgentToml(filePath);
|
|
126
|
-
expect(result).toHaveLength(2);
|
|
127
|
-
expect(result[0]).toMatchObject({
|
|
128
|
-
kind: 'remote',
|
|
129
|
-
name: 'implicit-remote-1',
|
|
130
|
-
agent_card_url: 'https://example.com/1',
|
|
131
|
-
});
|
|
132
|
-
expect(result[1]).toMatchObject({
|
|
133
|
-
kind: 'remote',
|
|
134
|
-
name: 'implicit-remote-2',
|
|
135
|
-
agent_card_url: 'https://example.com/2',
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
it('should throw AgentLoadError if file reading fails', async () => {
|
|
139
|
-
const filePath = path.join(tempDir, 'non-existent.toml');
|
|
140
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(AgentLoadError);
|
|
141
|
-
});
|
|
142
|
-
it('should throw AgentLoadError if TOML parsing fails', async () => {
|
|
143
|
-
const filePath = await writeAgentToml('invalid toml [');
|
|
144
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(AgentLoadError);
|
|
145
|
-
});
|
|
146
|
-
it('should throw AgentLoadError if validation fails (missing required field)', async () => {
|
|
147
|
-
const filePath = await writeAgentToml(`
|
|
148
|
-
name = "test-agent"
|
|
149
|
-
# missing description
|
|
150
|
-
[prompts]
|
|
151
|
-
system_prompt = "You are a test agent."
|
|
152
|
-
`);
|
|
153
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed/);
|
|
154
|
-
});
|
|
155
|
-
it('should throw AgentLoadError if name is not a slug', async () => {
|
|
156
|
-
const filePath = await writeAgentToml(`
|
|
157
|
-
name = "Test Agent!"
|
|
158
|
-
description = "A test agent"
|
|
159
|
-
[prompts]
|
|
160
|
-
system_prompt = "You are a test agent."
|
|
161
|
-
`);
|
|
162
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(/Name must be a valid slug/);
|
|
163
|
-
});
|
|
164
|
-
it('should throw AgentLoadError if delegate_to_agent is included in tools', async () => {
|
|
165
|
-
const filePath = await writeAgentToml(`
|
|
166
|
-
name = "test-agent"
|
|
167
|
-
description = "A test agent"
|
|
168
|
-
tools = ["run_shell_command", "delegate_to_agent"]
|
|
169
|
-
[prompts]
|
|
170
|
-
system_prompt = "You are a test agent."
|
|
171
|
-
`);
|
|
172
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(/tools list cannot include 'delegate_to_agent'/);
|
|
173
|
-
});
|
|
174
|
-
it('should throw AgentLoadError if tools contains invalid names', async () => {
|
|
175
|
-
const filePath = await writeAgentToml(`
|
|
176
|
-
name = "test-agent"
|
|
177
|
-
description = "A test agent"
|
|
178
|
-
tools = ["not-a-tool"]
|
|
179
|
-
[prompts]
|
|
180
|
-
system_prompt = "You are a test agent."
|
|
181
|
-
`);
|
|
182
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed:[\s\S]*tools.0: Invalid tool name/);
|
|
183
|
-
});
|
|
184
|
-
it('should throw AgentLoadError if file contains both single and multiple agents', async () => {
|
|
185
|
-
const filePath = await writeAgentToml(`
|
|
186
|
-
name = "top-level-agent"
|
|
187
|
-
description = "I should not be here"
|
|
188
|
-
[prompts]
|
|
189
|
-
system_prompt = "..."
|
|
190
|
-
|
|
191
|
-
[[remote_agents]]
|
|
192
|
-
kind = "remote"
|
|
193
|
-
name = "array-agent"
|
|
194
|
-
description = "I am in an array"
|
|
195
|
-
agent_card_url = "https://example.com/card"
|
|
196
|
-
`);
|
|
197
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed/);
|
|
198
|
-
});
|
|
199
|
-
it('should show both options in error message when validation fails ambiguously', async () => {
|
|
200
|
-
const filePath = await writeAgentToml(`
|
|
201
|
-
name = "ambiguous-agent"
|
|
202
|
-
description = "I have neither prompts nor card"
|
|
203
|
-
`);
|
|
204
|
-
await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed: Agent Definition:\n\(Local Agent\) prompts: Required\n\(Remote Agent\) agent_card_url: Required/);
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
describe('tomlToAgentDefinition', () => {
|
|
208
|
-
it('should convert valid TOML to AgentDefinition with defaults', () => {
|
|
209
|
-
const toml = {
|
|
210
|
-
kind: 'local',
|
|
211
|
-
name: 'test-agent',
|
|
212
|
-
description: 'A test agent',
|
|
213
|
-
prompts: {
|
|
214
|
-
system_prompt: 'You are a test agent.',
|
|
215
|
-
},
|
|
216
|
-
};
|
|
217
|
-
const result = tomlToAgentDefinition(toml);
|
|
218
|
-
expect(result).toMatchObject({
|
|
219
|
-
name: 'test-agent',
|
|
220
|
-
description: 'A test agent',
|
|
221
|
-
promptConfig: {
|
|
222
|
-
systemPrompt: 'You are a test agent.',
|
|
223
|
-
},
|
|
224
|
-
modelConfig: {
|
|
225
|
-
model: 'inherit',
|
|
226
|
-
top_p: 0.95,
|
|
227
|
-
},
|
|
228
|
-
runConfig: {
|
|
229
|
-
max_time_minutes: 5,
|
|
230
|
-
},
|
|
231
|
-
inputConfig: {
|
|
232
|
-
inputs: {
|
|
233
|
-
query: {
|
|
234
|
-
type: 'string',
|
|
235
|
-
required: false,
|
|
236
|
-
},
|
|
237
|
-
},
|
|
238
|
-
},
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
it('should pass through model aliases', () => {
|
|
242
|
-
const toml = {
|
|
243
|
-
kind: 'local',
|
|
244
|
-
name: 'test-agent',
|
|
245
|
-
description: 'A test agent',
|
|
246
|
-
model: {
|
|
247
|
-
model: GEMINI_MODEL_ALIAS_PRO,
|
|
248
|
-
},
|
|
249
|
-
prompts: {
|
|
250
|
-
system_prompt: 'You are a test agent.',
|
|
251
|
-
},
|
|
252
|
-
};
|
|
253
|
-
const result = tomlToAgentDefinition(toml);
|
|
254
|
-
expect(result.modelConfig.model).toBe(GEMINI_MODEL_ALIAS_PRO);
|
|
255
|
-
});
|
|
256
|
-
it('should pass through unknown model names (e.g. auto)', () => {
|
|
257
|
-
const toml = {
|
|
258
|
-
kind: 'local',
|
|
259
|
-
name: 'test-agent',
|
|
260
|
-
description: 'A test agent',
|
|
261
|
-
model: {
|
|
262
|
-
model: 'auto',
|
|
263
|
-
},
|
|
264
|
-
prompts: {
|
|
265
|
-
system_prompt: 'You are a test agent.',
|
|
266
|
-
},
|
|
267
|
-
};
|
|
268
|
-
const result = tomlToAgentDefinition(toml);
|
|
269
|
-
expect(result.modelConfig.model).toBe('auto');
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
describe('loadAgentsFromDirectory', () => {
|
|
273
|
-
it('should load definitions from a directory', async () => {
|
|
274
|
-
await writeAgentToml(`
|
|
275
|
-
name = "agent-1"
|
|
276
|
-
description = "Agent 1"
|
|
277
|
-
[prompts]
|
|
278
|
-
system_prompt = "Prompt 1"
|
|
279
|
-
`, 'valid.toml');
|
|
280
|
-
// Create a non-TOML file
|
|
281
|
-
await fs.writeFile(path.join(tempDir, 'other.txt'), 'content');
|
|
282
|
-
// Create a hidden file
|
|
283
|
-
await writeAgentToml(`
|
|
284
|
-
name = "hidden"
|
|
285
|
-
description = "Hidden"
|
|
286
|
-
[prompts]
|
|
287
|
-
system_prompt = "Hidden"
|
|
288
|
-
`, '_hidden.toml');
|
|
289
|
-
const result = await loadAgentsFromDirectory(tempDir);
|
|
290
|
-
expect(result.agents).toHaveLength(1);
|
|
291
|
-
expect(result.agents[0].name).toBe('agent-1');
|
|
292
|
-
expect(result.errors).toHaveLength(0);
|
|
293
|
-
});
|
|
294
|
-
it('should return empty result if directory does not exist', async () => {
|
|
295
|
-
const nonExistentDir = path.join(tempDir, 'does-not-exist');
|
|
296
|
-
const result = await loadAgentsFromDirectory(nonExistentDir);
|
|
297
|
-
expect(result.agents).toHaveLength(0);
|
|
298
|
-
expect(result.errors).toHaveLength(0);
|
|
299
|
-
});
|
|
300
|
-
it('should capture errors for malformed individual files', async () => {
|
|
301
|
-
// Create a malformed TOML file
|
|
302
|
-
await writeAgentToml('invalid toml [', 'malformed.toml');
|
|
303
|
-
const result = await loadAgentsFromDirectory(tempDir);
|
|
304
|
-
expect(result.agents).toHaveLength(0);
|
|
305
|
-
expect(result.errors).toHaveLength(1);
|
|
306
|
-
});
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
//# sourceMappingURL=toml-loader.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toml-loader.test.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.test.ts"],"names":[],"mappings":"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"}
|