@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
|
@@ -8,13 +8,10 @@
|
|
|
8
8
|
* Handles Text, Data (JSON), and File parts.
|
|
9
9
|
*/
|
|
10
10
|
export function extractMessageText(message) {
|
|
11
|
-
if (!message
|
|
11
|
+
if (!message) {
|
|
12
12
|
return '';
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
.map((part) => extractPartText(part))
|
|
16
|
-
.filter(Boolean);
|
|
17
|
-
return parts.join('\n');
|
|
14
|
+
return extractPartsText(message.parts);
|
|
18
15
|
}
|
|
19
16
|
/**
|
|
20
17
|
* Extracts text from a single Part.
|
|
@@ -40,37 +37,42 @@ export function extractPartText(part) {
|
|
|
40
37
|
return '';
|
|
41
38
|
}
|
|
42
39
|
/**
|
|
43
|
-
* Extracts a human-readable text summary from a Task object.
|
|
44
|
-
* Includes status
|
|
40
|
+
* Extracts a clean, human-readable text summary from a Task object.
|
|
41
|
+
* Includes the status message and any artifact content with context headers.
|
|
42
|
+
* Technical metadata like ID and State are omitted for better clarity and token efficiency.
|
|
45
43
|
*/
|
|
46
44
|
export function extractTaskText(task) {
|
|
47
|
-
|
|
48
|
-
output += `State: ${task.status.state}\n`;
|
|
45
|
+
const parts = [];
|
|
49
46
|
// Status Message
|
|
50
|
-
const statusMessageText = extractMessageText(task.status
|
|
47
|
+
const statusMessageText = extractMessageText(task.status?.message);
|
|
51
48
|
if (statusMessageText) {
|
|
52
|
-
|
|
49
|
+
parts.push(statusMessageText);
|
|
53
50
|
}
|
|
54
51
|
// Artifacts
|
|
55
|
-
if (task.artifacts
|
|
56
|
-
output += `Artifacts:\n`;
|
|
52
|
+
if (task.artifacts) {
|
|
57
53
|
for (const artifact of task.artifacts) {
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
.join('\n');
|
|
65
|
-
if (artifactContent) {
|
|
66
|
-
// Indent content for readability
|
|
67
|
-
const indentedContent = artifactContent.replace(/^/gm, ' ');
|
|
68
|
-
output += ` Content:\n${indentedContent}\n`;
|
|
69
|
-
}
|
|
54
|
+
const artifactContent = extractPartsText(artifact.parts);
|
|
55
|
+
if (artifactContent) {
|
|
56
|
+
const header = artifact.name
|
|
57
|
+
? `Artifact (${artifact.name}):`
|
|
58
|
+
: 'Artifact:';
|
|
59
|
+
parts.push(`${header}\n${artifactContent}`);
|
|
70
60
|
}
|
|
71
61
|
}
|
|
72
62
|
}
|
|
73
|
-
return
|
|
63
|
+
return parts.join('\n\n');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Extracts text from an array of parts.
|
|
67
|
+
*/
|
|
68
|
+
function extractPartsText(parts) {
|
|
69
|
+
if (!parts || parts.length === 0) {
|
|
70
|
+
return '';
|
|
71
|
+
}
|
|
72
|
+
return parts
|
|
73
|
+
.map((p) => extractPartText(p))
|
|
74
|
+
.filter(Boolean)
|
|
75
|
+
.join('\n');
|
|
74
76
|
}
|
|
75
77
|
// Type Guards
|
|
76
78
|
function isTextPart(part) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2aUtils.js","sourceRoot":"","sources":["../../../src/agents/a2aUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,IAAI,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"a2aUtils.js","sourceRoot":"","sources":["../../../src/agents/a2aUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,7 +102,7 @@ describe('a2aUtils', () => {
|
|
|
102
102
|
});
|
|
103
103
|
});
|
|
104
104
|
describe('extractTaskText', () => {
|
|
105
|
-
it('should extract basic task info', () => {
|
|
105
|
+
it('should extract basic task info (clean)', () => {
|
|
106
106
|
const task = {
|
|
107
107
|
id: 'task-1',
|
|
108
108
|
contextId: 'ctx-1',
|
|
@@ -118,11 +118,11 @@ describe('a2aUtils', () => {
|
|
|
118
118
|
},
|
|
119
119
|
};
|
|
120
120
|
const result = extractTaskText(task);
|
|
121
|
-
expect(result).toContain('ID: task-1');
|
|
122
|
-
expect(result).toContain('State: working');
|
|
123
|
-
expect(result).
|
|
121
|
+
expect(result).not.toContain('ID: task-1');
|
|
122
|
+
expect(result).not.toContain('State: working');
|
|
123
|
+
expect(result).toBe('Processing...');
|
|
124
124
|
});
|
|
125
|
-
it('should extract artifacts', () => {
|
|
125
|
+
it('should extract artifacts with headers', () => {
|
|
126
126
|
const task = {
|
|
127
127
|
id: 'task-1',
|
|
128
128
|
contextId: 'ctx-1',
|
|
@@ -137,10 +137,10 @@ describe('a2aUtils', () => {
|
|
|
137
137
|
],
|
|
138
138
|
};
|
|
139
139
|
const result = extractTaskText(task);
|
|
140
|
-
expect(result).toContain('
|
|
141
|
-
expect(result).toContain('
|
|
142
|
-
expect(result).toContain('
|
|
143
|
-
expect(result).toContain('
|
|
140
|
+
expect(result).toContain('Artifact (Report):');
|
|
141
|
+
expect(result).toContain('This is the report.');
|
|
142
|
+
expect(result).not.toContain('Artifacts:');
|
|
143
|
+
expect(result).not.toContain(' - Name: Report');
|
|
144
144
|
});
|
|
145
145
|
});
|
|
146
146
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2aUtils.test.js","sourceRoot":"","sources":["../../../src/agents/a2aUtils.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"a2aUtils.test.js","sourceRoot":"","sources":["../../../src/agents/a2aUtils.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentDefinition } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* DTO for Markdown parsing - represents the structure from frontmatter.
|
|
9
|
+
*/
|
|
10
|
+
interface FrontmatterBaseAgentDefinition {
|
|
11
|
+
name: string;
|
|
12
|
+
display_name?: string;
|
|
13
|
+
}
|
|
14
|
+
interface FrontmatterLocalAgentDefinition extends FrontmatterBaseAgentDefinition {
|
|
15
|
+
kind: 'local';
|
|
16
|
+
description: string;
|
|
17
|
+
tools?: string[];
|
|
18
|
+
system_prompt: string;
|
|
19
|
+
model?: string;
|
|
20
|
+
temperature?: number;
|
|
21
|
+
max_turns?: number;
|
|
22
|
+
timeout_mins?: number;
|
|
23
|
+
}
|
|
24
|
+
interface FrontmatterRemoteAgentDefinition extends FrontmatterBaseAgentDefinition {
|
|
25
|
+
kind: 'remote';
|
|
26
|
+
description?: string;
|
|
27
|
+
agent_card_url: string;
|
|
28
|
+
}
|
|
29
|
+
type FrontmatterAgentDefinition = FrontmatterLocalAgentDefinition | FrontmatterRemoteAgentDefinition;
|
|
30
|
+
/**
|
|
31
|
+
* Error thrown when an agent definition is invalid or cannot be loaded.
|
|
32
|
+
*/
|
|
33
|
+
export declare class AgentLoadError extends Error {
|
|
34
|
+
filePath: string;
|
|
35
|
+
constructor(filePath: string, message: string);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result of loading agents from a directory.
|
|
39
|
+
*/
|
|
40
|
+
export interface AgentLoadResult {
|
|
41
|
+
agents: AgentDefinition[];
|
|
42
|
+
errors: AgentLoadError[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Parses and validates an agent Markdown file with frontmatter.
|
|
46
|
+
*
|
|
47
|
+
* @param filePath Path to the Markdown file.
|
|
48
|
+
* @returns An array containing the single parsed agent definition.
|
|
49
|
+
* @throws AgentLoadError if parsing or validation fails.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseAgentMarkdown(filePath: string): Promise<FrontmatterAgentDefinition[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Converts a FrontmatterAgentDefinition DTO to the internal AgentDefinition structure.
|
|
54
|
+
*
|
|
55
|
+
* @param markdown The parsed Markdown/Frontmatter definition.
|
|
56
|
+
* @returns The internal AgentDefinition.
|
|
57
|
+
*/
|
|
58
|
+
export declare function markdownToAgentDefinition(markdown: FrontmatterAgentDefinition): AgentDefinition;
|
|
59
|
+
/**
|
|
60
|
+
* Loads all agents from a specific directory.
|
|
61
|
+
* Ignores files starting with _ and non-supported extensions.
|
|
62
|
+
* Supported extensions: .md
|
|
63
|
+
*
|
|
64
|
+
* @param dir Directory path to scan.
|
|
65
|
+
* @returns Object containing successfully loaded agents and any errors.
|
|
66
|
+
*/
|
|
67
|
+
export declare function loadAgentsFromDirectory(dir: string): Promise<AgentLoadResult>;
|
|
68
|
+
export {};
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import
|
|
6
|
+
import yaml from 'js-yaml';
|
|
7
7
|
import * as fs from 'node:fs/promises';
|
|
8
8
|
import {} from 'node:fs';
|
|
9
9
|
import * as path from 'node:path';
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
import { isValidToolName, DELEGATE_TO_AGENT_TOOL_NAME, } from '../tools/tool-names.js';
|
|
12
|
+
import { FRONTMATTER_REGEX } from '../skills/skillLoader.js';
|
|
12
13
|
/**
|
|
13
14
|
* Error thrown when an agent definition is invalid or cannot be loaded.
|
|
14
15
|
*/
|
|
@@ -34,22 +35,10 @@ const localAgentSchema = z
|
|
|
34
35
|
message: 'Invalid tool name',
|
|
35
36
|
}))
|
|
36
37
|
.optional(),
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
model: z
|
|
42
|
-
.object({
|
|
43
|
-
model: z.string().optional(),
|
|
44
|
-
temperature: z.number().optional(),
|
|
45
|
-
})
|
|
46
|
-
.optional(),
|
|
47
|
-
run: z
|
|
48
|
-
.object({
|
|
49
|
-
max_turns: z.number().int().positive().optional(),
|
|
50
|
-
timeout_mins: z.number().int().positive().optional(),
|
|
51
|
-
})
|
|
52
|
-
.optional(),
|
|
38
|
+
model: z.string().optional(),
|
|
39
|
+
temperature: z.number().optional(),
|
|
40
|
+
max_turns: z.number().int().positive().optional(),
|
|
41
|
+
timeout_mins: z.number().int().positive().optional(),
|
|
53
42
|
})
|
|
54
43
|
.strict();
|
|
55
44
|
const remoteAgentSchema = z
|
|
@@ -61,20 +50,14 @@ const remoteAgentSchema = z
|
|
|
61
50
|
agent_card_url: z.string().url(),
|
|
62
51
|
})
|
|
63
52
|
.strict();
|
|
64
|
-
const remoteAgentsConfigSchema = z
|
|
65
|
-
.object({
|
|
66
|
-
remote_agents: z.array(remoteAgentSchema),
|
|
67
|
-
})
|
|
68
|
-
.strict();
|
|
69
53
|
// Use a Zod union to automatically discriminate between local and remote
|
|
70
|
-
// agent types.
|
|
71
|
-
// as it correctly handles cases where 'kind' is omitted by relying on
|
|
72
|
-
// the presence of unique fields like `agent_card_url` or `prompts`.
|
|
54
|
+
// agent types.
|
|
73
55
|
const agentUnionOptions = [
|
|
74
56
|
{ schema: localAgentSchema, label: 'Local Agent' },
|
|
75
57
|
{ schema: remoteAgentSchema, label: 'Remote Agent' },
|
|
76
58
|
];
|
|
77
|
-
const
|
|
59
|
+
const remoteAgentsListSchema = z.array(remoteAgentSchema);
|
|
60
|
+
const markdownFrontmatterSchema = z.union([
|
|
78
61
|
agentUnionOptions[0].schema,
|
|
79
62
|
agentUnionOptions[1].schema,
|
|
80
63
|
]);
|
|
@@ -99,13 +82,13 @@ function formatZodError(error, context) {
|
|
|
99
82
|
return `${context}:\n${issues}`;
|
|
100
83
|
}
|
|
101
84
|
/**
|
|
102
|
-
* Parses and validates an agent
|
|
85
|
+
* Parses and validates an agent Markdown file with frontmatter.
|
|
103
86
|
*
|
|
104
|
-
* @param filePath Path to the
|
|
105
|
-
* @returns An array
|
|
87
|
+
* @param filePath Path to the Markdown file.
|
|
88
|
+
* @returns An array containing the single parsed agent definition.
|
|
106
89
|
* @throws AgentLoadError if parsing or validation fails.
|
|
107
90
|
*/
|
|
108
|
-
export async function
|
|
91
|
+
export async function parseAgentMarkdown(filePath) {
|
|
109
92
|
let content;
|
|
110
93
|
try {
|
|
111
94
|
content = await fs.readFile(filePath, 'utf-8');
|
|
@@ -113,42 +96,65 @@ export async function parseAgentToml(filePath) {
|
|
|
113
96
|
catch (error) {
|
|
114
97
|
throw new AgentLoadError(filePath, `Could not read file: ${error.message}`);
|
|
115
98
|
}
|
|
116
|
-
|
|
99
|
+
// Split frontmatter and body
|
|
100
|
+
const match = content.match(FRONTMATTER_REGEX);
|
|
101
|
+
if (!match) {
|
|
102
|
+
throw new AgentLoadError(filePath, 'Invalid agent definition: Missing mandatory YAML frontmatter. Agent Markdown files MUST start with YAML frontmatter enclosed in triple-dashes "---" (e.g., ---\nname: my-agent\n---).');
|
|
103
|
+
}
|
|
104
|
+
const frontmatterStr = match[1];
|
|
105
|
+
const body = match[2] || '';
|
|
106
|
+
let rawFrontmatter;
|
|
117
107
|
try {
|
|
118
|
-
|
|
108
|
+
rawFrontmatter = yaml.load(frontmatterStr);
|
|
119
109
|
}
|
|
120
110
|
catch (error) {
|
|
121
|
-
throw new AgentLoadError(filePath, `
|
|
111
|
+
throw new AgentLoadError(filePath, `YAML frontmatter parsing failed: ${error.message}`);
|
|
122
112
|
}
|
|
123
|
-
//
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
'remote_agents' in raw) {
|
|
127
|
-
const result = remoteAgentsConfigSchema.safeParse(raw);
|
|
113
|
+
// Handle array of remote agents
|
|
114
|
+
if (Array.isArray(rawFrontmatter)) {
|
|
115
|
+
const result = remoteAgentsListSchema.safeParse(rawFrontmatter);
|
|
128
116
|
if (!result.success) {
|
|
129
|
-
throw new AgentLoadError(filePath, `Validation failed: ${formatZodError(result.error, 'Remote Agents
|
|
117
|
+
throw new AgentLoadError(filePath, `Validation failed: ${formatZodError(result.error, 'Remote Agents List')}`);
|
|
130
118
|
}
|
|
131
|
-
return result.data.
|
|
119
|
+
return result.data.map((agent) => ({
|
|
120
|
+
...agent,
|
|
121
|
+
kind: 'remote',
|
|
122
|
+
}));
|
|
132
123
|
}
|
|
133
|
-
|
|
134
|
-
const result = singleAgentSchema.safeParse(raw);
|
|
124
|
+
const result = markdownFrontmatterSchema.safeParse(rawFrontmatter);
|
|
135
125
|
if (!result.success) {
|
|
136
126
|
throw new AgentLoadError(filePath, `Validation failed: ${formatZodError(result.error, 'Agent Definition')}`);
|
|
137
127
|
}
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
128
|
+
const frontmatter = result.data;
|
|
129
|
+
if (frontmatter.kind === 'remote') {
|
|
130
|
+
return [
|
|
131
|
+
{
|
|
132
|
+
...frontmatter,
|
|
133
|
+
kind: 'remote',
|
|
134
|
+
},
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
// Local agent validation
|
|
138
|
+
// Validate tools
|
|
139
|
+
if (frontmatter.tools &&
|
|
140
|
+
frontmatter.tools.includes(DELEGATE_TO_AGENT_TOOL_NAME)) {
|
|
141
141
|
throw new AgentLoadError(filePath, `Validation failed: tools list cannot include '${DELEGATE_TO_AGENT_TOOL_NAME}'. Sub-agents cannot delegate to other agents.`);
|
|
142
142
|
}
|
|
143
|
-
|
|
143
|
+
// Construct the local agent definition
|
|
144
|
+
const agentDef = {
|
|
145
|
+
...frontmatter,
|
|
146
|
+
kind: 'local',
|
|
147
|
+
system_prompt: body.trim(),
|
|
148
|
+
};
|
|
149
|
+
return [agentDef];
|
|
144
150
|
}
|
|
145
151
|
/**
|
|
146
|
-
* Converts a
|
|
152
|
+
* Converts a FrontmatterAgentDefinition DTO to the internal AgentDefinition structure.
|
|
147
153
|
*
|
|
148
|
-
* @param
|
|
154
|
+
* @param markdown The parsed Markdown/Frontmatter definition.
|
|
149
155
|
* @returns The internal AgentDefinition.
|
|
150
156
|
*/
|
|
151
|
-
export function
|
|
157
|
+
export function markdownToAgentDefinition(markdown) {
|
|
152
158
|
const inputConfig = {
|
|
153
159
|
inputs: {
|
|
154
160
|
query: {
|
|
@@ -158,39 +164,41 @@ export function tomlToAgentDefinition(toml) {
|
|
|
158
164
|
},
|
|
159
165
|
},
|
|
160
166
|
};
|
|
161
|
-
if (
|
|
167
|
+
if (markdown.kind === 'remote') {
|
|
162
168
|
return {
|
|
163
169
|
kind: 'remote',
|
|
164
|
-
name:
|
|
165
|
-
description:
|
|
166
|
-
displayName:
|
|
167
|
-
agentCardUrl:
|
|
170
|
+
name: markdown.name,
|
|
171
|
+
description: markdown.description || '(Loading description...)',
|
|
172
|
+
displayName: markdown.display_name,
|
|
173
|
+
agentCardUrl: markdown.agent_card_url,
|
|
168
174
|
inputConfig,
|
|
169
175
|
};
|
|
170
176
|
}
|
|
171
177
|
// If a model is specified, use it. Otherwise, inherit
|
|
172
|
-
const modelName =
|
|
178
|
+
const modelName = markdown.model || 'inherit';
|
|
173
179
|
return {
|
|
174
180
|
kind: 'local',
|
|
175
|
-
name:
|
|
176
|
-
description:
|
|
177
|
-
displayName:
|
|
181
|
+
name: markdown.name,
|
|
182
|
+
description: markdown.description,
|
|
183
|
+
displayName: markdown.display_name,
|
|
178
184
|
promptConfig: {
|
|
179
|
-
systemPrompt:
|
|
180
|
-
query:
|
|
185
|
+
systemPrompt: markdown.system_prompt,
|
|
186
|
+
query: '${query}',
|
|
181
187
|
},
|
|
182
188
|
modelConfig: {
|
|
183
189
|
model: modelName,
|
|
184
|
-
|
|
185
|
-
|
|
190
|
+
generateContentConfig: {
|
|
191
|
+
temperature: markdown.temperature ?? 1,
|
|
192
|
+
topP: 0.95,
|
|
193
|
+
},
|
|
186
194
|
},
|
|
187
195
|
runConfig: {
|
|
188
|
-
|
|
189
|
-
|
|
196
|
+
maxTurns: markdown.max_turns,
|
|
197
|
+
maxTimeMinutes: markdown.timeout_mins || 5,
|
|
190
198
|
},
|
|
191
|
-
toolConfig:
|
|
199
|
+
toolConfig: markdown.tools
|
|
192
200
|
? {
|
|
193
|
-
tools:
|
|
201
|
+
tools: markdown.tools,
|
|
194
202
|
}
|
|
195
203
|
: undefined,
|
|
196
204
|
inputConfig,
|
|
@@ -198,7 +206,8 @@ export function tomlToAgentDefinition(toml) {
|
|
|
198
206
|
}
|
|
199
207
|
/**
|
|
200
208
|
* Loads all agents from a specific directory.
|
|
201
|
-
* Ignores
|
|
209
|
+
* Ignores files starting with _ and non-supported extensions.
|
|
210
|
+
* Supported extensions: .md
|
|
202
211
|
*
|
|
203
212
|
* @param dir Directory path to scan.
|
|
204
213
|
* @returns Object containing successfully loaded agents and any errors.
|
|
@@ -220,17 +229,15 @@ export async function loadAgentsFromDirectory(dir) {
|
|
|
220
229
|
result.errors.push(new AgentLoadError(dir, `Could not list directory: ${error.message}`));
|
|
221
230
|
return result;
|
|
222
231
|
}
|
|
223
|
-
const files = dirEntries
|
|
224
|
-
|
|
225
|
-
entry.name.endsWith('.
|
|
226
|
-
|
|
227
|
-
.
|
|
228
|
-
for (const file of files) {
|
|
229
|
-
const filePath = path.join(dir, file);
|
|
232
|
+
const files = dirEntries.filter((entry) => entry.isFile() &&
|
|
233
|
+
!entry.name.startsWith('_') &&
|
|
234
|
+
entry.name.endsWith('.md'));
|
|
235
|
+
for (const entry of files) {
|
|
236
|
+
const filePath = path.join(dir, entry.name);
|
|
230
237
|
try {
|
|
231
|
-
const
|
|
232
|
-
for (const
|
|
233
|
-
const agent =
|
|
238
|
+
const agentDefs = await parseAgentMarkdown(filePath);
|
|
239
|
+
for (const def of agentDefs) {
|
|
240
|
+
const agent = markdownToAgentDefinition(def);
|
|
234
241
|
result.agents.push(agent);
|
|
235
242
|
}
|
|
236
243
|
}
|
|
@@ -245,4 +252,4 @@ export async function loadAgentsFromDirectory(dir) {
|
|
|
245
252
|
}
|
|
246
253
|
return result;
|
|
247
254
|
}
|
|
248
|
-
//# sourceMappingURL=
|
|
255
|
+
//# sourceMappingURL=agentLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentLoader.js","sourceRoot":"","sources":["../../../src/agents/agentLoader.ts"],"names":[],"mappings":"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"}
|