@google/gemini-cli-core 0.24.0-nightly.20251231.05049b5ab → 0.24.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/dist/docs/cli/settings.md +1 -0
- package/dist/docs/cli/skills.md +156 -0
- package/dist/docs/cli/telemetry.md +3 -3
- package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
- package/dist/docs/cli/tutorials.md +4 -0
- package/dist/docs/get-started/configuration.md +32 -11
- package/dist/docs/hooks/best-practices.md +177 -127
- package/dist/docs/hooks/index.md +22 -0
- package/dist/docs/sidebar.json +4 -0
- package/dist/src/agents/a2a-client-manager.d.ts +5 -0
- package/dist/src/agents/a2a-client-manager.js +130 -0
- package/dist/src/agents/a2a-client-manager.js.map +1 -1
- package/dist/src/agents/a2a-client-manager.test.js +27 -1
- package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
- package/dist/src/agents/a2aUtils.d.ts +28 -0
- package/dist/src/agents/a2aUtils.js +111 -0
- package/dist/src/agents/a2aUtils.js.map +1 -0
- package/dist/src/agents/a2aUtils.test.js +147 -0
- package/dist/src/agents/a2aUtils.test.js.map +1 -0
- package/dist/src/agents/delegate-to-agent-tool.d.ts +2 -2
- package/dist/src/agents/delegate-to-agent-tool.js +6 -6
- package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
- package/dist/src/agents/delegate-to-agent-tool.test.js +37 -7
- package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
- package/dist/src/agents/introspection-agent.js +2 -2
- package/dist/src/agents/introspection-agent.js.map +1 -1
- package/dist/src/agents/introspection-agent.test.js +2 -2
- package/dist/src/agents/introspection-agent.test.js.map +1 -1
- package/dist/src/agents/local-executor.js +1 -1
- package/dist/src/agents/local-executor.js.map +1 -1
- package/dist/src/agents/local-executor.test.js +2 -2
- package/dist/src/agents/local-executor.test.js.map +1 -1
- package/dist/src/agents/local-invocation.d.ts +2 -2
- package/dist/src/agents/local-invocation.js +3 -3
- package/dist/src/agents/local-invocation.js.map +1 -1
- package/dist/src/agents/local-invocation.test.js +7 -5
- package/dist/src/agents/local-invocation.test.js.map +1 -1
- package/dist/src/agents/remote-invocation.d.ts +17 -3
- package/dist/src/agents/remote-invocation.js +104 -6
- package/dist/src/agents/remote-invocation.js.map +1 -1
- package/dist/src/agents/remote-invocation.test.js +184 -18
- package/dist/src/agents/remote-invocation.test.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
- package/dist/src/agents/subagent-tool-wrapper.js +6 -5
- package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
- package/dist/src/agents/subagent-tool-wrapper.test.js +17 -10
- package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
- package/dist/src/agents/types.d.ts +6 -0
- package/dist/src/code_assist/oauth2.js +31 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +75 -3
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +5 -0
- package/dist/src/code_assist/server.js +19 -4
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/server.test.js +19 -0
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/code_assist/setup.js +6 -4
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.js +63 -0
- package/dist/src/code_assist/setup.test.js.map +1 -1
- package/dist/src/code_assist/types.d.ts +18 -0
- package/dist/src/config/config.d.ts +20 -6
- package/dist/src/config/config.js +63 -37
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +81 -4
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/flashFallback.test.js +13 -0
- package/dist/src/config/flashFallback.test.js.map +1 -1
- package/dist/src/config/models.js +6 -4
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +21 -1
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/core/client.js +39 -7
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +93 -1
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +1 -1
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +1 -1
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.test.js +11 -9
- package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +1 -0
- package/dist/src/core/coreToolScheduler.js +30 -106
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +21 -22
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.js +14 -2
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +29 -5
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/prompts.test.js +40 -1
- package/dist/src/core/prompts.test.js.map +1 -1
- package/dist/src/core/sessionHookTriggers.d.ts +3 -2
- package/dist/src/core/sessionHookTriggers.js +8 -1
- package/dist/src/core/sessionHookTriggers.js.map +1 -1
- package/dist/src/core/turn.d.ts +16 -2
- package/dist/src/core/turn.js +2 -0
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +3 -3
- package/dist/src/generated/git-commit.js +3 -3
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.d.ts +6 -2
- package/dist/src/hooks/hookEventHandler.js +24 -3
- package/dist/src/hooks/hookEventHandler.js.map +1 -1
- package/dist/src/hooks/hookEventHandler.test.js +31 -8
- package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
- package/dist/src/hooks/hookRunner.d.ts +2 -2
- package/dist/src/hooks/hookRunner.js +12 -4
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/hookRunner.test.js +33 -0
- package/dist/src/hooks/hookRunner.test.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/policy/config.js +60 -22
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/config.test.js +21 -0
- 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/write.toml +5 -0
- package/dist/src/policy/policy-engine.d.ts +4 -0
- package/dist/src/policy/policy-engine.js +75 -51
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/policy-engine.test.js +272 -1
- package/dist/src/policy/policy-engine.test.js.map +1 -1
- package/dist/src/policy/policy-updater.test.js +2 -2
- package/dist/src/policy/policy-updater.test.js.map +1 -1
- package/dist/src/policy/toml-loader.d.ts +0 -8
- package/dist/src/policy/toml-loader.js +7 -70
- package/dist/src/policy/toml-loader.js.map +1 -1
- package/dist/src/policy/toml-loader.test.js +16 -6
- package/dist/src/policy/toml-loader.test.js.map +1 -1
- package/dist/src/policy/types.d.ts +6 -0
- package/dist/src/policy/utils.d.ts +21 -0
- package/dist/src/policy/utils.js +42 -0
- package/dist/src/policy/utils.js.map +1 -0
- package/dist/src/policy/utils.test.js +64 -0
- package/dist/src/policy/utils.test.js.map +1 -0
- package/dist/src/scheduler/tool-executor.d.ts +22 -0
- package/dist/src/scheduler/tool-executor.js +198 -0
- package/dist/src/scheduler/tool-executor.js.map +1 -0
- package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
- package/dist/src/scheduler/tool-executor.test.js +231 -0
- package/dist/src/scheduler/tool-executor.test.js.map +1 -0
- package/dist/src/skills/skillLoader.d.ts +28 -0
- package/dist/src/skills/skillLoader.js +77 -0
- package/dist/src/skills/skillLoader.js.map +1 -0
- package/dist/src/skills/skillLoader.test.d.ts +6 -0
- package/dist/src/skills/skillLoader.test.js +73 -0
- package/dist/src/skills/skillLoader.test.js.map +1 -0
- package/dist/src/{services → skills}/skillManager.d.ts +10 -20
- package/dist/src/skills/skillManager.js +89 -0
- package/dist/src/skills/skillManager.js.map +1 -0
- package/dist/src/skills/skillManager.test.d.ts +6 -0
- package/dist/src/skills/skillManager.test.js +128 -0
- package/dist/src/skills/skillManager.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +5 -5
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +8 -8
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -2
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -4
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +3 -3
- package/dist/src/telemetry/loggers.js +4 -4
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +6 -8
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +7 -7
- package/dist/src/telemetry/types.js +10 -10
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/mock-message-bus.d.ts +1 -0
- package/dist/src/test-utils/mock-message-bus.js +29 -0
- package/dist/src/test-utils/mock-message-bus.js.map +1 -1
- package/dist/src/test-utils/mock-tool.d.ts +5 -3
- package/dist/src/test-utils/mock-tool.js +11 -10
- package/dist/src/test-utils/mock-tool.js.map +1 -1
- package/dist/src/tools/activate-skill.d.ts +27 -0
- package/dist/src/tools/activate-skill.js +120 -0
- package/dist/src/tools/activate-skill.js.map +1 -0
- package/dist/src/tools/activate-skill.test.d.ts +6 -0
- package/dist/src/tools/activate-skill.test.js +95 -0
- package/dist/src/tools/activate-skill.test.js.map +1 -0
- package/dist/src/tools/confirmation-policy.test.js +2 -12
- package/dist/src/tools/confirmation-policy.test.js.map +1 -1
- package/dist/src/tools/edit.d.ts +27 -5
- package/dist/src/tools/edit.js +444 -137
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +257 -525
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/get-internal-docs.d.ts +2 -2
- package/dist/src/tools/get-internal-docs.js +6 -6
- package/dist/src/tools/get-internal-docs.js.map +1 -1
- package/dist/src/tools/get-internal-docs.test.js +2 -1
- package/dist/src/tools/get-internal-docs.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +2 -2
- package/dist/src/tools/glob.js +1 -1
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +2 -1
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +2 -2
- package/dist/src/tools/grep.js +1 -1
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +5 -4
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.d.ts +2 -2
- package/dist/src/tools/ls.js +2 -2
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/ls.test.js +2 -1
- package/dist/src/tools/ls.test.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.js +14 -7
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.test.js +28 -0
- package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +2 -2
- package/dist/src/tools/mcp-client.js +2 -1
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +2 -2
- package/dist/src/tools/mcp-tool.js +7 -7
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.test.js +11 -6
- package/dist/src/tools/mcp-tool.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +3 -3
- package/dist/src/tools/memoryTool.js +2 -2
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/memoryTool.test.js +5 -2
- package/dist/src/tools/memoryTool.test.js.map +1 -1
- package/dist/src/tools/message-bus-integration.test.js +10 -37
- package/dist/src/tools/message-bus-integration.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +2 -2
- package/dist/src/tools/read-file.js +1 -1
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +3 -2
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +2 -2
- package/dist/src/tools/read-many-files.js +2 -3
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +3 -2
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.d.ts +2 -2
- package/dist/src/tools/ripGrep.js +3 -4
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +7 -6
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +3 -6
- package/dist/src/tools/shell.js +15 -48
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +35 -59
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-names.d.ts +2 -1
- package/dist/src/tools/tool-names.js +2 -0
- package/dist/src/tools/tool-names.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +11 -6
- package/dist/src/tools/tool-registry.js +13 -8
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +14 -10
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +5 -5
- package/dist/src/tools/tools.js +15 -17
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/tools.test.js +3 -1
- package/dist/src/tools/tools.test.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +2 -2
- package/dist/src/tools/web-fetch.js +4 -4
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +17 -19
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +2 -2
- package/dist/src/tools/web-search.js +3 -4
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/web-search.test.js +2 -1
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +2 -2
- package/dist/src/tools/write-file.js +3 -3
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +4 -1
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/tools/write-todos.d.ts +2 -2
- package/dist/src/tools/write-todos.js +5 -4
- package/dist/src/tools/write-todos.js.map +1 -1
- package/dist/src/tools/write-todos.test.js +2 -1
- package/dist/src/tools/write-todos.test.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +1 -1
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/events.d.ts +46 -1
- package/dist/src/utils/events.js +21 -0
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/events.test.js +25 -0
- package/dist/src/utils/events.test.js.map +1 -1
- package/dist/src/utils/getFolderStructure.js +6 -1
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/shell-permissions.test.js +27 -0
- package/dist/src/utils/shell-permissions.test.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +6 -0
- package/dist/src/utils/shell-utils.js +72 -8
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +99 -1
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/src/utils/terminal.d.ts +2 -0
- package/dist/src/utils/terminal.js +6 -0
- package/dist/src/utils/terminal.js.map +1 -1
- package/dist/src/utils/tokenCalculation.js +20 -5
- package/dist/src/utils/tokenCalculation.js.map +1 -1
- package/dist/src/utils/tokenCalculation.test.js +11 -2
- package/dist/src/utils/tokenCalculation.test.js.map +1 -1
- package/dist/src/utils/tool-utils.test.js +2 -1
- package/dist/src/utils/tool-utils.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/google-gemini-cli-core-0.24.0-nightly.20251227.37be16243.tgz +0 -0
- package/dist/src/services/skillManager.js +0 -157
- package/dist/src/services/skillManager.js.map +0 -1
- package/dist/src/services/skillManager.test.js +0 -169
- package/dist/src/services/skillManager.test.js.map +0 -1
- package/dist/src/tools/smart-edit.d.ts +0 -78
- package/dist/src/tools/smart-edit.js +0 -722
- package/dist/src/tools/smart-edit.js.map +0 -1
- package/dist/src/tools/smart-edit.test.js +0 -592
- package/dist/src/tools/smart-edit.test.js.map +0 -1
- /package/dist/src/{services/skillManager.test.d.ts → agents/a2aUtils.test.d.ts} +0 -0
- /package/dist/src/{tools/smart-edit.test.d.ts → policy/utils.test.d.ts} +0 -0
|
@@ -4,128 +4,6 @@ This guide covers security considerations, performance optimization, debugging
|
|
|
4
4
|
techniques, and privacy considerations for developing and deploying hooks in
|
|
5
5
|
Gemini CLI.
|
|
6
6
|
|
|
7
|
-
## Security considerations
|
|
8
|
-
|
|
9
|
-
### Validate all inputs
|
|
10
|
-
|
|
11
|
-
Never trust data from hooks without validation. Hook inputs may contain
|
|
12
|
-
user-provided data that could be malicious:
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
#!/usr/bin/env bash
|
|
16
|
-
input=$(cat)
|
|
17
|
-
|
|
18
|
-
# Validate JSON structure
|
|
19
|
-
if ! echo "$input" | jq empty 2>/dev/null; then
|
|
20
|
-
echo "Invalid JSON input" >&2
|
|
21
|
-
exit 1
|
|
22
|
-
fi
|
|
23
|
-
|
|
24
|
-
# Validate required fields
|
|
25
|
-
tool_name=$(echo "$input" | jq -r '.tool_name // empty')
|
|
26
|
-
if [ -z "$tool_name" ]; then
|
|
27
|
-
echo "Missing tool_name field" >&2
|
|
28
|
-
exit 1
|
|
29
|
-
fi
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### Use timeouts
|
|
33
|
-
|
|
34
|
-
Set reasonable timeouts to prevent hooks from hanging indefinitely:
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"hooks": {
|
|
39
|
-
"BeforeTool": [
|
|
40
|
-
{
|
|
41
|
-
"matcher": "*",
|
|
42
|
-
"hooks": [
|
|
43
|
-
{
|
|
44
|
-
"name": "slow-validator",
|
|
45
|
-
"type": "command",
|
|
46
|
-
"command": "./hooks/validate.sh",
|
|
47
|
-
"timeout": 5000
|
|
48
|
-
}
|
|
49
|
-
]
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**Recommended timeouts:**
|
|
57
|
-
|
|
58
|
-
- Fast validation: 1000-5000ms
|
|
59
|
-
- Network requests: 10000-30000ms
|
|
60
|
-
- Heavy computation: 30000-60000ms
|
|
61
|
-
|
|
62
|
-
### Limit permissions
|
|
63
|
-
|
|
64
|
-
Run hooks with minimal required permissions:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
#!/usr/bin/env bash
|
|
68
|
-
# Don't run as root
|
|
69
|
-
if [ "$EUID" -eq 0 ]; then
|
|
70
|
-
echo "Hook should not run as root" >&2
|
|
71
|
-
exit 1
|
|
72
|
-
fi
|
|
73
|
-
|
|
74
|
-
# Check file permissions before writing
|
|
75
|
-
if [ -w "$file_path" ]; then
|
|
76
|
-
# Safe to write
|
|
77
|
-
else
|
|
78
|
-
echo "Insufficient permissions" >&2
|
|
79
|
-
exit 1
|
|
80
|
-
fi
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Scan for secrets
|
|
84
|
-
|
|
85
|
-
Use `BeforeTool` hooks to prevent committing sensitive data:
|
|
86
|
-
|
|
87
|
-
```javascript
|
|
88
|
-
const SECRET_PATTERNS = [
|
|
89
|
-
/api[_-]?key\s*[:=]\s*['"]?[a-zA-Z0-9_-]{20,}['"]?/i,
|
|
90
|
-
/password\s*[:=]\s*['"]?[^\s'"]{8,}['"]?/i,
|
|
91
|
-
/secret\s*[:=]\s*['"]?[a-zA-Z0-9_-]{20,}['"]?/i,
|
|
92
|
-
/AKIA[0-9A-Z]{16}/, // AWS access key
|
|
93
|
-
/ghp_[a-zA-Z0-9]{36}/, // GitHub personal access token
|
|
94
|
-
/sk-[a-zA-Z0-9]{48}/, // OpenAI API key
|
|
95
|
-
];
|
|
96
|
-
|
|
97
|
-
function containsSecret(content) {
|
|
98
|
-
return SECRET_PATTERNS.some((pattern) => pattern.test(content));
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Review external scripts
|
|
103
|
-
|
|
104
|
-
Always review hook scripts from untrusted sources before enabling them:
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Review before installing
|
|
108
|
-
cat third-party-hook.sh | less
|
|
109
|
-
|
|
110
|
-
# Check for suspicious patterns
|
|
111
|
-
grep -E 'curl|wget|ssh|eval' third-party-hook.sh
|
|
112
|
-
|
|
113
|
-
# Verify hook source
|
|
114
|
-
ls -la third-party-hook.sh
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### Sandbox untrusted hooks
|
|
118
|
-
|
|
119
|
-
For maximum security, consider running untrusted hooks in isolated environments:
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
# Run hook in Docker container
|
|
123
|
-
docker run --rm \
|
|
124
|
-
-v "$GEMINI_PROJECT_DIR:/workspace:ro" \
|
|
125
|
-
-i untrusted-hook-image \
|
|
126
|
-
/hook-script.sh < input.json
|
|
127
|
-
```
|
|
128
|
-
|
|
129
7
|
## Performance
|
|
130
8
|
|
|
131
9
|
### Keep hooks fast
|
|
@@ -140,11 +18,13 @@ const data2 = await fetch(url2).then((r) => r.json());
|
|
|
140
18
|
const data3 = await fetch(url3).then((r) => r.json());
|
|
141
19
|
|
|
142
20
|
// Prefer parallel operations for better performance
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
21
|
+
// Start requests concurrently
|
|
22
|
+
const p1 = fetch(url1).then((r) => r.json());
|
|
23
|
+
const p2 = fetch(url2).then((r) => r.json());
|
|
24
|
+
const p3 = fetch(url3).then((r) => r.json());
|
|
25
|
+
|
|
26
|
+
// Wait for all results
|
|
27
|
+
const [data1, data2, data3] = await Promise.all([p1, p2, p3]);
|
|
148
28
|
```
|
|
149
29
|
|
|
150
30
|
### Cache expensive operations
|
|
@@ -714,6 +594,176 @@ if [ -f "$GEMINI_PROJECT_DIR/.env" ]; then
|
|
|
714
594
|
fi
|
|
715
595
|
```
|
|
716
596
|
|
|
597
|
+
## Using Hooks Securely
|
|
598
|
+
|
|
599
|
+
### Threat Model
|
|
600
|
+
|
|
601
|
+
Understanding where hooks come from and what they can do is critical for secure
|
|
602
|
+
usage.
|
|
603
|
+
|
|
604
|
+
| Hook Source | Description |
|
|
605
|
+
| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------- |
|
|
606
|
+
| **System** | Configured by system administrators (e.g., `/etc/gemini-cli/settings.json`, `/Library/...`). Assumed to be the **safest**. |
|
|
607
|
+
| **User** (`~/.gemini/...`) | Configured by you. You are responsible for ensuring they are safe. |
|
|
608
|
+
| **Extensions** | You explicitly approve and install these. Security depends on the extension source (integrity). |
|
|
609
|
+
| **Project** (`./.gemini/...`) | **Untrusted by default.** Safest in trusted internal repos; higher risk in third-party/public repos. |
|
|
610
|
+
|
|
611
|
+
#### Project Hook Security
|
|
612
|
+
|
|
613
|
+
When you open a project with hooks defined in `.gemini/settings.json`:
|
|
614
|
+
|
|
615
|
+
1. **Detection**: Gemini CLI detects the hooks.
|
|
616
|
+
2. **Identification**: A unique identity is generated for each hook based on its
|
|
617
|
+
`name` and `command`.
|
|
618
|
+
3. **Warning**: If this specific hook identity has not been seen before, a
|
|
619
|
+
**warning** is displayed.
|
|
620
|
+
4. **Execution**: The hook is executed (unless specific security settings block
|
|
621
|
+
it).
|
|
622
|
+
5. **Trust**: The hook is marked as "trusted" for this project.
|
|
623
|
+
|
|
624
|
+
> [!IMPORTANT] **Modification Detection**: If the `command` string of a project
|
|
625
|
+
> hook is changed (e.g., by a `git pull`), its identity changes. Gemini CLI will
|
|
626
|
+
> treat it as a **new, untrusted hook** and warn you again. This prevents
|
|
627
|
+
> malicious actors from silently swapping a verified command for a malicious
|
|
628
|
+
> one.
|
|
629
|
+
|
|
630
|
+
### Risks
|
|
631
|
+
|
|
632
|
+
| Risk | Description |
|
|
633
|
+
| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
|
|
634
|
+
| **Arbitrary Code Execution** | Hooks run as your user. They can do anything you can do (delete files, install software). |
|
|
635
|
+
| **Data Exfiltration** | A hook could read your input (prompts), output (code), or environment variables (`GEMINI_API_KEY`) and send them to a remote server. |
|
|
636
|
+
| **Prompt Injection** | Malicious content in a file or web page could trick an LLM into running a tool that triggers a hook in an unexpected way. |
|
|
637
|
+
|
|
638
|
+
### Mitigation Strategies
|
|
639
|
+
|
|
640
|
+
#### Verify the source
|
|
641
|
+
|
|
642
|
+
**Verify the source** of any project hooks or extensions before enabling them.
|
|
643
|
+
|
|
644
|
+
- For open-source projects, a quick review of the hook scripts is recommended.
|
|
645
|
+
- For extensions, ensure you trust the author or publisher (e.g., verified
|
|
646
|
+
publishers, well-known community members).
|
|
647
|
+
- Be cautious with obfuscated scripts or compiled binaries from unknown sources.
|
|
648
|
+
|
|
649
|
+
#### Sanitize Environment
|
|
650
|
+
|
|
651
|
+
Hooks inherit the environment of the Gemini CLI process, which may include
|
|
652
|
+
sensitive API keys. Gemini CLI attempts to sanitize sensitive variables, but you
|
|
653
|
+
should be cautious.
|
|
654
|
+
|
|
655
|
+
- **Avoid printing environment variables** to stdout/stderr unless necessary.
|
|
656
|
+
- **Use `.env` files** to securely manage sensitive variables, ensuring they are
|
|
657
|
+
excluded from version control.
|
|
658
|
+
|
|
659
|
+
**System Administrators:** You can enforce environment variable redaction by
|
|
660
|
+
default in the system configuration (e.g., `/etc/gemini-cli/settings.json`):
|
|
661
|
+
|
|
662
|
+
```json
|
|
663
|
+
{
|
|
664
|
+
"security": {
|
|
665
|
+
"environmentVariableRedaction": {
|
|
666
|
+
"enabled": true,
|
|
667
|
+
"blocked": ["MY_SECRET_KEY"],
|
|
668
|
+
"allowed": ["SAFE_VAR"]
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
## Authoring Secure Hooks
|
|
675
|
+
|
|
676
|
+
When writing your own hooks, follow these practices to ensure they are robust
|
|
677
|
+
and secure.
|
|
678
|
+
|
|
679
|
+
### Validate all inputs
|
|
680
|
+
|
|
681
|
+
Never trust data from hooks without validation. Hook inputs often come from the
|
|
682
|
+
LLM or user prompts, which can be manipulated.
|
|
683
|
+
|
|
684
|
+
```bash
|
|
685
|
+
#!/usr/bin/env bash
|
|
686
|
+
input=$(cat)
|
|
687
|
+
|
|
688
|
+
# Validate JSON structure
|
|
689
|
+
if ! echo "$input" | jq empty 2>/dev/null; then
|
|
690
|
+
echo "Invalid JSON input" >&2
|
|
691
|
+
exit 1
|
|
692
|
+
fi
|
|
693
|
+
|
|
694
|
+
# Validate tool_name explicitly
|
|
695
|
+
tool_name=$(echo "$input" | jq -r '.tool_name // empty')
|
|
696
|
+
if [[ "$tool_name" != "write_file" && "$tool_name" != "read_file" ]]; then
|
|
697
|
+
echo "Unexpected tool: $tool_name" >&2
|
|
698
|
+
exit 1
|
|
699
|
+
fi
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
### Use timeouts
|
|
703
|
+
|
|
704
|
+
Prevent denial-of-service (hanging agents) by enforcing timeouts. Gemini CLI
|
|
705
|
+
defaults to 60 seconds, but you should set stricter limits for fast hooks.
|
|
706
|
+
|
|
707
|
+
```json
|
|
708
|
+
{
|
|
709
|
+
"hooks": {
|
|
710
|
+
"BeforeTool": [
|
|
711
|
+
{
|
|
712
|
+
"matcher": "*",
|
|
713
|
+
"hooks": [
|
|
714
|
+
{
|
|
715
|
+
"name": "fast-validator",
|
|
716
|
+
"command": "./hooks/validate.sh",
|
|
717
|
+
"timeout": 5000 // 5 seconds
|
|
718
|
+
}
|
|
719
|
+
]
|
|
720
|
+
}
|
|
721
|
+
]
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
### Limit permissions
|
|
727
|
+
|
|
728
|
+
Run hooks with minimal required permissions:
|
|
729
|
+
|
|
730
|
+
```bash
|
|
731
|
+
#!/usr/bin/env bash
|
|
732
|
+
# Don't run as root
|
|
733
|
+
if [ "$EUID" -eq 0 ]; then
|
|
734
|
+
echo "Hook should not run as root" >&2
|
|
735
|
+
exit 1
|
|
736
|
+
fi
|
|
737
|
+
|
|
738
|
+
# Check file permissions before writing
|
|
739
|
+
if [ -w "$file_path" ]; then
|
|
740
|
+
# Safe to write
|
|
741
|
+
else
|
|
742
|
+
echo "Insufficient permissions" >&2
|
|
743
|
+
exit 1
|
|
744
|
+
fi
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
### Example: Secret Scanner
|
|
748
|
+
|
|
749
|
+
Use `BeforeTool` hooks to prevent committing sensitive data. This is a powerful
|
|
750
|
+
pattern for enhancing security in your workflow.
|
|
751
|
+
|
|
752
|
+
```javascript
|
|
753
|
+
const SECRET_PATTERNS = [
|
|
754
|
+
/api[_-]?key\s*[:=]\s*['"]?[a-zA-Z0-9_-]{20,}['"]?/i,
|
|
755
|
+
/password\s*[:=]\s*['"]?[^\s'"]{8,}['"]?/i,
|
|
756
|
+
/secret\s*[:=]\s*['"]?[a-zA-Z0-9_-]{20,}['"]?/i,
|
|
757
|
+
/AKIA[0-9A-Z]{16}/, // AWS access key
|
|
758
|
+
/ghp_[a-zA-Z0-9]{36}/, // GitHub personal access token
|
|
759
|
+
/sk-[a-zA-Z0-9]{48}/, // OpenAI API key
|
|
760
|
+
];
|
|
761
|
+
|
|
762
|
+
function containsSecret(content) {
|
|
763
|
+
return SECRET_PATTERNS.some((pattern) => pattern.test(content));
|
|
764
|
+
}
|
|
765
|
+
```
|
|
766
|
+
|
|
717
767
|
## Privacy considerations
|
|
718
768
|
|
|
719
769
|
Hook inputs and outputs may contain sensitive information. Gemini CLI respects
|
package/dist/docs/hooks/index.md
CHANGED
|
@@ -27,6 +27,28 @@ With hooks, you can:
|
|
|
27
27
|
Hooks run synchronously as part of the agent loop—when a hook event fires,
|
|
28
28
|
Gemini CLI waits for all matching hooks to complete before continuing.
|
|
29
29
|
|
|
30
|
+
## Security and Risks
|
|
31
|
+
|
|
32
|
+
> [!WARNING] **Hooks execute arbitrary code with your user privileges.**
|
|
33
|
+
|
|
34
|
+
By configuring hooks, you are explicitly allowing Gemini CLI to run shell
|
|
35
|
+
commands on your machine. Malicious or poorly configured hooks can:
|
|
36
|
+
|
|
37
|
+
- **Exfiltrate data**: Read sensitive files (`.env`, ssh keys) and send them to
|
|
38
|
+
remote servers.
|
|
39
|
+
- **Modify system**: Delete files, install malware, or change system settings.
|
|
40
|
+
- **Consume resources**: Run infinite loops or crash your system.
|
|
41
|
+
|
|
42
|
+
**Project-level hooks** (in `.gemini/settings.json`) and **Extension hooks** are
|
|
43
|
+
particularly risky when opening third-party projects or extensions from
|
|
44
|
+
untrusted authors. Gemini CLI will **warn you** the first time it detects a new
|
|
45
|
+
project hook (identified by its name and command), but it is **your
|
|
46
|
+
responsibility** to review these hooks (and any installed extensions) before
|
|
47
|
+
trusting them.
|
|
48
|
+
|
|
49
|
+
See [Security Considerations](best-practices.md#using-hooks-securely) for a
|
|
50
|
+
detailed threat model and mitigation strategies.
|
|
51
|
+
|
|
30
52
|
## Core concepts
|
|
31
53
|
|
|
32
54
|
### Hook events
|
package/dist/docs/sidebar.json
CHANGED
|
@@ -71,3 +71,8 @@ export declare class A2AClientManager {
|
|
|
71
71
|
*/
|
|
72
72
|
cancelTask(agentName: string, taskId: string): Promise<Task>;
|
|
73
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Creates a fetch implementation that adapts standard A2A SDK requests to the
|
|
76
|
+
* proto-JSON dialect and endpoint shapes required by Vertex AI Agent Engine.
|
|
77
|
+
*/
|
|
78
|
+
export declare function createAdapterFetch(baseFetch: typeof fetch): typeof fetch;
|
|
@@ -48,6 +48,9 @@ export class A2AClientManager {
|
|
|
48
48
|
if (authHandler) {
|
|
49
49
|
fetchImpl = createAuthenticatingFetchWithRetry(fetch, authHandler);
|
|
50
50
|
}
|
|
51
|
+
// Wrap with custom adapter for ADK Reasoning Engine compatibility
|
|
52
|
+
// TODO: Remove this when a2a-js fixes compatibility
|
|
53
|
+
fetchImpl = createAdapterFetch(fetchImpl);
|
|
51
54
|
const resolver = new DefaultAgentCardResolver({ fetchImpl });
|
|
52
55
|
const options = ClientFactoryOptions.createFrom(ClientFactoryOptions.default, {
|
|
53
56
|
transports: [
|
|
@@ -162,4 +165,131 @@ export class A2AClientManager {
|
|
|
162
165
|
}
|
|
163
166
|
}
|
|
164
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* Maps TaskState proto-JSON enums to lower-case strings.
|
|
170
|
+
*/
|
|
171
|
+
function mapTaskState(state) {
|
|
172
|
+
if (!state)
|
|
173
|
+
return state;
|
|
174
|
+
if (state.startsWith('TASK_STATE_')) {
|
|
175
|
+
return state.replace('TASK_STATE_', '').toLowerCase();
|
|
176
|
+
}
|
|
177
|
+
return state.toLowerCase();
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Creates a fetch implementation that adapts standard A2A SDK requests to the
|
|
181
|
+
* proto-JSON dialect and endpoint shapes required by Vertex AI Agent Engine.
|
|
182
|
+
*/
|
|
183
|
+
export function createAdapterFetch(baseFetch) {
|
|
184
|
+
return async (input, init) => {
|
|
185
|
+
const urlStr = input;
|
|
186
|
+
// 2. Dialect Mapping (Request)
|
|
187
|
+
let body = init?.body;
|
|
188
|
+
let isRpc = false;
|
|
189
|
+
let rpcId;
|
|
190
|
+
if (typeof body === 'string') {
|
|
191
|
+
try {
|
|
192
|
+
let jsonBody = JSON.parse(body);
|
|
193
|
+
// Unwrap JSON-RPC if present
|
|
194
|
+
if (jsonBody.jsonrpc === '2.0') {
|
|
195
|
+
isRpc = true;
|
|
196
|
+
rpcId = jsonBody.id;
|
|
197
|
+
jsonBody = jsonBody.params;
|
|
198
|
+
}
|
|
199
|
+
// Apply dialect translation to the message object
|
|
200
|
+
const message = jsonBody.message || jsonBody;
|
|
201
|
+
if (message && typeof message === 'object') {
|
|
202
|
+
// Role: user -> ROLE_USER, agent/model -> ROLE_AGENT
|
|
203
|
+
if (message.role === 'user')
|
|
204
|
+
message.role = 'ROLE_USER';
|
|
205
|
+
if (message.role === 'agent' || message.role === 'model') {
|
|
206
|
+
message.role = 'ROLE_AGENT';
|
|
207
|
+
}
|
|
208
|
+
// Strip SDK-specific 'kind' field
|
|
209
|
+
delete message.kind;
|
|
210
|
+
// Map 'parts' to 'content' (Proto-JSON dialect often uses 'content' or typed parts)
|
|
211
|
+
// Also strip 'kind' from parts.
|
|
212
|
+
if (Array.isArray(message.parts)) {
|
|
213
|
+
message.content = message.parts.map((p) => {
|
|
214
|
+
const { kind: _k, ...rest } = p;
|
|
215
|
+
// If it's a simple text part, ensure it matches { text: "..." }
|
|
216
|
+
if (p.kind === 'text')
|
|
217
|
+
return { text: p.text };
|
|
218
|
+
return rest;
|
|
219
|
+
});
|
|
220
|
+
delete message.parts;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
body = JSON.stringify(jsonBody);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
debugLogger.debug('[A2AClientManager] Failed to parse request body for dialect translation:', error);
|
|
227
|
+
// Non-JSON or parse error; let the baseFetch handle it.
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
const response = await baseFetch(urlStr, { ...init, body });
|
|
231
|
+
// Map response back
|
|
232
|
+
if (response.ok) {
|
|
233
|
+
try {
|
|
234
|
+
const responseData = await response.clone().json();
|
|
235
|
+
const result = responseData.task || responseData.message || responseData;
|
|
236
|
+
// Restore 'kind' for the SDK and a2aUtils parsing
|
|
237
|
+
if (result && typeof result === 'object' && !result.kind) {
|
|
238
|
+
if (responseData.task || (result.id && result.status)) {
|
|
239
|
+
result.kind = 'task';
|
|
240
|
+
}
|
|
241
|
+
else if (responseData.message || result.messageId) {
|
|
242
|
+
result.kind = 'message';
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Restore 'kind' on parts so extractMessageText works
|
|
246
|
+
if (result?.parts && Array.isArray(result.parts)) {
|
|
247
|
+
for (const part of result.parts) {
|
|
248
|
+
if (!part.kind) {
|
|
249
|
+
if (part.file)
|
|
250
|
+
part.kind = 'file';
|
|
251
|
+
else if (part.data)
|
|
252
|
+
part.kind = 'data';
|
|
253
|
+
else if (part.text)
|
|
254
|
+
part.kind = 'text';
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Recursively restore 'kind' on artifact parts
|
|
259
|
+
if (result?.artifacts && Array.isArray(result.artifacts)) {
|
|
260
|
+
for (const artifact of result.artifacts) {
|
|
261
|
+
if (artifact.parts && Array.isArray(artifact.parts)) {
|
|
262
|
+
for (const part of artifact.parts) {
|
|
263
|
+
if (!part.kind) {
|
|
264
|
+
if (part.file)
|
|
265
|
+
part.kind = 'file';
|
|
266
|
+
else if (part.data)
|
|
267
|
+
part.kind = 'data';
|
|
268
|
+
else if (part.text)
|
|
269
|
+
part.kind = 'text';
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Map Task States back to SDK expectations
|
|
276
|
+
if (result && typeof result === 'object' && result.status) {
|
|
277
|
+
result.status.state = mapTaskState(result.status.state);
|
|
278
|
+
}
|
|
279
|
+
if (isRpc) {
|
|
280
|
+
return new Response(JSON.stringify({
|
|
281
|
+
jsonrpc: '2.0',
|
|
282
|
+
id: rpcId,
|
|
283
|
+
result,
|
|
284
|
+
}), response);
|
|
285
|
+
}
|
|
286
|
+
return new Response(JSON.stringify(result), response);
|
|
287
|
+
}
|
|
288
|
+
catch (_e) {
|
|
289
|
+
// Non-JSON response or unwrapping failure
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return response;
|
|
293
|
+
};
|
|
294
|
+
}
|
|
165
295
|
//# sourceMappingURL=a2a-client-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-client-manager.js","sourceRoot":"","sources":["../../../src/agents/a2a-client-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAEL,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EAEvB,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,QAAQ,CAAmB;IAE1C,8DAA8D;IACtD,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAElD,gBAAuB,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;YAC/B,gBAAgB,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,uBAAuB;QAC5B,qDAAqD;QACrD,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CACb,IAAY,EACZ,YAAoB,EACpB,WAAmC;QAEnC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,sBAAsB,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,SAAS,
|
|
1
|
+
{"version":3,"file":"a2a-client-manager.js","sourceRoot":"","sources":["../../../src/agents/a2a-client-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
7
|
-
import { A2AClientManager, } from './a2a-client-manager.js';
|
|
7
|
+
import { A2AClientManager, createAdapterFetch, } from './a2a-client-manager.js';
|
|
8
8
|
import { ClientFactory, DefaultAgentCardResolver } from '@a2a-js/sdk/client';
|
|
9
9
|
import { debugLogger } from '../utils/debugLogger.js';
|
|
10
10
|
import { createAuthenticatingFetchWithRetry, ClientFactoryOptions, } from '@a2a-js/sdk/client';
|
|
@@ -207,5 +207,31 @@ describe('A2AClientManager', () => {
|
|
|
207
207
|
await expect(manager.cancelTask('NonExistentAgent', 'task123')).rejects.toThrow("Agent 'NonExistentAgent' not found.");
|
|
208
208
|
});
|
|
209
209
|
});
|
|
210
|
+
describe('createAdapterFetch', () => {
|
|
211
|
+
it('normalizes TASK_STATE_ enums to lower-case', async () => {
|
|
212
|
+
const baseFetch = vi
|
|
213
|
+
.fn()
|
|
214
|
+
.mockResolvedValue(new Response(JSON.stringify({ status: { state: 'TASK_STATE_WORKING' } })));
|
|
215
|
+
const adapter = createAdapterFetch(baseFetch);
|
|
216
|
+
const response = await adapter('http://example.com', {
|
|
217
|
+
method: 'POST',
|
|
218
|
+
body: '{}',
|
|
219
|
+
});
|
|
220
|
+
const data = await response.json();
|
|
221
|
+
expect(data.status.state).toBe('working');
|
|
222
|
+
});
|
|
223
|
+
it('lowercases non-prefixed task states', async () => {
|
|
224
|
+
const baseFetch = vi
|
|
225
|
+
.fn()
|
|
226
|
+
.mockResolvedValue(new Response(JSON.stringify({ status: { state: 'WORKING' } })));
|
|
227
|
+
const adapter = createAdapterFetch(baseFetch);
|
|
228
|
+
const response = await adapter('http://example.com', {
|
|
229
|
+
method: 'POST',
|
|
230
|
+
body: '{}',
|
|
231
|
+
});
|
|
232
|
+
const data = await response.json();
|
|
233
|
+
expect(data.status.state).toBe('working');
|
|
234
|
+
});
|
|
235
|
+
});
|
|
210
236
|
});
|
|
211
237
|
//# sourceMappingURL=a2a-client-manager.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-client-manager.test.js","sourceRoot":"","sources":["../../../src/agents/a2a-client-manager.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EACL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"a2a-client-manager.test.js","sourceRoot":"","sources":["../../../src/agents/a2a-client-manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Message, Task, Part } from '@a2a-js/sdk';
|
|
7
|
+
/**
|
|
8
|
+
* Extracts a human-readable text representation from a Message object.
|
|
9
|
+
* Handles Text, Data (JSON), and File parts.
|
|
10
|
+
*/
|
|
11
|
+
export declare function extractMessageText(message: Message | undefined): string;
|
|
12
|
+
/**
|
|
13
|
+
* Extracts text from a single Part.
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractPartText(part: Part): string;
|
|
16
|
+
/**
|
|
17
|
+
* Extracts a human-readable text summary from a Task object.
|
|
18
|
+
* Includes status, ID, and any artifact content.
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractTaskText(task: Task): string;
|
|
21
|
+
/**
|
|
22
|
+
* Extracts contextId and taskId from a Message or Task response.
|
|
23
|
+
* Follows the pattern from the A2A CLI sample to maintain conversational continuity.
|
|
24
|
+
*/
|
|
25
|
+
export declare function extractIdsFromResponse(result: Message | Task): {
|
|
26
|
+
contextId?: string;
|
|
27
|
+
taskId?: string;
|
|
28
|
+
};
|