google-agents-cli 1.5.0__tar.gz → 1.6.1__tar.gz

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.
Files changed (355) hide show
  1. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/PKG-INFO +2 -1
  2. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/pyproject.toml +2 -1
  3. google_agents_cli-1.6.1/src/google/agents/cli/_adk_client.py +382 -0
  4. google_agents_cli-1.6.1/src/google/agents/cli/_defaults.py +22 -0
  5. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_experiments.py +1 -1
  6. google_agents_cli-1.6.1/src/google/agents/cli/_modes.py +31 -0
  7. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_project.py +24 -3
  8. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_remote.py +41 -1
  9. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_skills_check.py +2 -1
  10. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/agent_runtime.py +148 -72
  11. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/cmd_deploy.py +89 -1
  12. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_playground.py +7 -2
  13. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/_paths.py +48 -5
  14. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_dataset.py +1 -1
  15. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_generate.py +29 -9
  16. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_grade.py +27 -3
  17. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_run.py +1 -1
  18. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_resolver.py +133 -25
  19. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/info/cmd_info.py +3 -0
  20. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_cicd.py +1 -1
  21. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/main.py +2 -2
  22. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/run/_local_server.py +28 -10
  23. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/run/cmd_run.py +210 -39
  24. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/.template/templateconfig.yaml +11 -3
  25. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/agent.py +5 -1
  26. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/response_quality.py +1 -1
  27. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/.template/templateconfig.yaml +1 -2
  28. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/Dockerfile +1 -0
  29. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/Makefile +4 -3
  30. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/README.md +3 -1
  31. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/app/agent.go +6 -7
  32. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo.go +541 -0
  33. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo_test.go +956 -0
  34. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/apploader.go +55 -0
  35. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/e2e/integration/server_e2e_test.go +16 -2
  36. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/load_test.go +3 -0
  37. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/README.md +117 -0
  38. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/basic-dataset.json +31 -0
  39. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/eval_config.yaml +13 -0
  40. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/response_quality.py +65 -0
  41. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/go.mod +21 -11
  42. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/go.sum +55 -12
  43. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/main.go +168 -0
  44. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/observability.go +192 -0
  45. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/observability_test.go +178 -0
  46. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/sessions/sessions.go +237 -0
  47. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +5 -1
  48. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/app/agent.ts +5 -1
  49. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/package-lock.json +726 -345
  50. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/package.json +7 -1
  51. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +4 -0
  52. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/apis.tf +25 -8
  53. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/build_triggers.tf +15 -3
  54. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/github.tf +5 -1
  55. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/iam.tf +5 -1
  56. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/locals.tf +7 -4
  57. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/providers.tf +7 -0
  58. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/wif.tf +4 -0
  59. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/apis.tf +24 -4
  60. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/iam.tf +4 -1
  61. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/providers.tf +7 -0
  62. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +103 -0
  63. {google_agents_cli-1.5.0/src/google/agents/cli/scaffold/agents/adk_go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go}/.cloudbuild/pr_checks.yaml +3 -3
  64. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +231 -0
  65. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.gcloudignore +15 -0
  66. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +126 -0
  67. {google_agents_cli-1.5.0/src/google/agents/cli/scaffold/agents/adk_go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go}/.github/workflows/pr_checks.yaml +2 -2
  68. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +197 -0
  69. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.golangci.yml +4 -0
  70. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry.tf +136 -0
  71. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry_outputs.tf +18 -0
  72. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/completions.sql +184 -0
  73. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/genai_logs_schema.json +77 -0
  74. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry.tf +130 -0
  75. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry_outputs.tf +18 -0
  76. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/java/.gcloudignore +15 -0
  77. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/python/.gcloudignore +15 -0
  78. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/Dockerfile +2 -1
  79. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/typescript/.gcloudignore +15 -0
  80. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/create.py +1173 -916
  81. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/enhance.py +13 -24
  82. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/upgrade.py +7 -13
  83. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service.tf +4 -1
  84. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service.tf +4 -1
  85. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +240 -0
  86. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +213 -0
  87. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service.tf +5 -1
  88. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service.tf +5 -1
  89. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service.tf +5 -1
  90. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service.tf +57 -23
  91. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service.tf +26 -10
  92. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-agent_runtime.lock +965 -957
  93. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-cloud_run.lock +1021 -1007
  94. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-gke.lock +1021 -1007
  95. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/backup.py +41 -34
  96. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/cli_options.py +123 -0
  97. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/fs.py +81 -0
  98. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/generate_locks.py +2 -2
  99. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/generation_metadata.py +5 -0
  100. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/merge.py +1 -1
  101. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/remote_template.py +56 -19
  102. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/template.py +108 -60
  103. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/version.py +2 -2
  104. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/README.md +1 -1
  105. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/SKILL.md +72 -0
  106. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go-workflows.md +480 -0
  107. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go.md +720 -0
  108. google_agents_cli-1.5.0/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-workflows.md → google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-workflows.md +2 -2
  109. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python.md +14 -14
  110. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/samples.md +6 -3
  111. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/SKILL.md +12 -12
  112. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/agent-runtime.md +24 -11
  113. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/batch-inference.md +59 -3
  114. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cicd-pipeline.md +4 -1
  115. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cloud-run.md +8 -4
  116. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/gke.md +4 -4
  117. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/terraform-patterns.md +5 -0
  118. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/testing-deployed-agents.md +17 -1
  119. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-eval/SKILL.md +5 -4
  120. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/advanced-commands.md +1 -1
  121. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/metrics-guide.md +5 -3
  122. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/multimodal-eval.md +4 -4
  123. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/user-simulation.md +1 -1
  124. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-observability/SKILL.md +17 -12
  125. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/bigquery-agent-analytics.md +1 -1
  126. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/cloud-trace-and-logging.md +27 -3
  127. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/feedback-mechanism.md +1 -1
  128. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-publish/SKILL.md +5 -3
  129. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/SKILL.md +31 -13
  130. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/references/flags.md +2 -2
  131. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-workflow/SKILL.md +21 -13
  132. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/brainstorming.md +9 -7
  133. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/internals.md +28 -0
  134. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/spec-template.md +3 -0
  135. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/terminology.md +2 -1
  136. google_agents_cli-1.5.0/src/google/agents/cli/_adk_client.py +0 -114
  137. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo.go +0 -297
  138. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo_test.go +0 -185
  139. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/agents/adk_go/main.go +0 -137
  140. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +0 -58
  141. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +0 -154
  142. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +0 -90
  143. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +0 -156
  144. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +0 -105
  145. google_agents_cli-1.5.0/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +0 -95
  146. google_agents_cli-1.5.0/src/google/agents/cli/skills/data/google-agents-cli-adk-code/SKILL.md +0 -78
  147. google_agents_cli-1.5.0/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/internals.md +0 -24
  148. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/LICENSE +0 -0
  149. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/README.md +0 -0
  150. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/__init__.py +0 -0
  151. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_agent_platform.py +0 -0
  152. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_click.py +0 -0
  153. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_gcp_project.py +0 -0
  154. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_output.py +0 -0
  155. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_runner.py +0 -0
  156. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_tools.py +0 -0
  157. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/_trust.py +0 -0
  158. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/auth.py +0 -0
  159. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/data/__init__.py +0 -0
  160. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/data/_recipe.py +0 -0
  161. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/data/cmd_data_ingestion.py +0 -0
  162. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/__init__.py +0 -0
  163. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/_operation.py +0 -0
  164. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/_utils.py +0 -0
  165. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/__init__.py +0 -0
  166. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_build.py +0 -0
  167. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_install.py +0 -0
  168. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_lint.py +0 -0
  169. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/__init__.py +0 -0
  170. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/_synthesize_runner.py +0 -0
  171. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_analyze.py +0 -0
  172. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_compare.py +0 -0
  173. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_eval_group.py +0 -0
  174. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_metric.py +0 -0
  175. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_optimize.py +0 -0
  176. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_submit.py +0 -0
  177. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/eval_utils.py +0 -0
  178. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/optimize_utils.py +0 -0
  179. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/__init__.py +0 -0
  180. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_compat.py +0 -0
  181. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_loader.py +0 -0
  182. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_manifest.py +0 -0
  183. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_overrides.py +0 -0
  184. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_paths.py +0 -0
  185. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_refs.py +0 -0
  186. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_schema.py +0 -0
  187. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_spec.py +0 -0
  188. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_sync.py +0 -0
  189. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/_trust.py +0 -0
  190. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/cmd_extension_add.py +0 -0
  191. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/cmd_extension_group.py +0 -0
  192. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/cmd_extension_list.py +0 -0
  193. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/cmd_extension_remove.py +0 -0
  194. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/extension/cmd_extension_update.py +0 -0
  195. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/info/__init__.py +0 -0
  196. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/__init__.py +0 -0
  197. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/_cicd_utils.py +0 -0
  198. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/_terraform.py +0 -0
  199. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_datastore.py +0 -0
  200. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_infra.py +0 -0
  201. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_infra_show.py +0 -0
  202. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_infra_single_project.py +0 -0
  203. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/__init__.py +0 -0
  204. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/cmd_publish.py +0 -0
  205. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/cmd_publish_group.py +0 -0
  206. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/run/__init__.py +0 -0
  207. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/run/_multimodal.py +0 -0
  208. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/__init__.py +0 -0
  209. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/README.md +0 -0
  210. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/__init__.py +0 -0
  211. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/a2a.py +0 -0
  212. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/reasoning_engine_adapter.py +0 -0
  213. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/services.py +0 -0
  214. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/fast_api_app.py +0 -0
  215. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/README.md +0 -0
  216. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/basic-dataset.json +0 -0
  217. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/eval_config.yaml +0 -0
  218. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/integration/test_agent.py +0 -0
  219. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/app/agent_test.go +0 -0
  220. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/appurl.go +0 -0
  221. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/.results/.placeholder +0 -0
  222. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/README.md +0 -0
  223. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/{{cookiecutter.agent_guidance_filename}} +0 -0
  224. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/.cloudbuild/pr_checks.yaml +0 -0
  225. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/.github/workflows/pr_checks.yaml +0 -0
  226. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/.template/templateconfig.yaml +0 -0
  227. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/Dockerfile +0 -0
  228. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/Makefile +0 -0
  229. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/README.md +0 -0
  230. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/pom.xml +0 -0
  231. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Main.java +0 -0
  232. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/integration/ServerE2ETest.java +0 -0
  233. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/.results/.placeholder +0 -0
  234. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/LoadTest.java +0 -0
  235. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/README.md +0 -0
  236. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/unit/AgentTest.java +0 -0
  237. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/{{cookiecutter.agent_guidance_filename}} +0 -0
  238. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/.cloudbuild/pr_checks.yaml +0 -0
  239. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/.github/workflows/pr_checks.yaml +0 -0
  240. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/.template/templateconfig.yaml +0 -0
  241. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/Dockerfile +0 -0
  242. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/Makefile +0 -0
  243. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/README.md +0 -0
  244. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/agent.test.ts +0 -0
  245. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/server_e2e.test.ts +0 -0
  246. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/.results/.placeholder +0 -0
  247. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/README.md +0 -0
  248. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/load_test.ts +0 -0
  249. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/unit/dummy.test.ts +0 -0
  250. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/empty_go/.template/templateconfig.yaml +0 -0
  251. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/empty_java/.template/templateconfig.yaml +0 -0
  252. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/empty_py/.template/templateconfig.yaml +0 -0
  253. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/empty_ts/.template/templateconfig.yaml +0 -0
  254. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/outputs.tf +0 -0
  255. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/service_accounts.tf +0 -0
  256. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/storage.tf +0 -0
  257. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/variables.tf +0 -0
  258. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/vars/env.tfvars +0 -0
  259. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/outputs.tf +0 -0
  260. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/storage.tf +0 -0
  261. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/variables.tf +0 -0
  262. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/vars/env.tfvars +0 -0
  263. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.env +0 -0
  264. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.env.example +0 -0
  265. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.gitignore +0 -0
  266. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/deploy-to-prod.yaml +0 -0
  267. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/staging.yaml +0 -0
  268. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.env.example +0 -0
  269. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/deploy-to-prod.yaml +0 -0
  270. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/staging.yaml +0 -0
  271. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.gitignore +0 -0
  272. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/src/main/resources/application.properties +0 -0
  273. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/deploy-to-prod.yaml +0 -0
  274. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/pr_checks.yaml +0 -0
  275. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/staging.yaml +0 -0
  276. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.env +0 -0
  277. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.env.example +0 -0
  278. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/deploy-to-prod.yaml +0 -0
  279. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/pr_checks.yaml +0 -0
  280. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/staging.yaml +0 -0
  281. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.gitignore +0 -0
  282. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/README.md +0 -0
  283. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry.tf +0 -0
  284. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  285. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/completions.sql +0 -0
  286. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/genai_logs_schema.json +0 -0
  287. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry.tf +0 -0
  288. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  289. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/pyproject.toml +0 -0
  290. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/tests/unit/test_dummy.py +0 -0
  291. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_guidance_filename}} +0 -0
  292. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/deploy-to-prod.yaml +0 -0
  293. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/staging.yaml +0 -0
  294. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.dockerignore +0 -0
  295. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.env.example +0 -0
  296. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/deploy-to-prod.yaml +0 -0
  297. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/staging.yaml +0 -0
  298. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.gitignore +0 -0
  299. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/eslint.config.mjs +0 -0
  300. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/tsconfig.json +0 -0
  301. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/vitest.config.ts +0 -0
  302. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/cmd_scaffold_group.py +0 -0
  303. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/__init__.py +0 -0
  304. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  305. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/shared/dummy_source.b64 +0 -0
  306. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  307. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment_metadata.json +0 -0
  308. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/integration/test_server_e2e.py +0 -0
  309. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/.results/.placeholder +0 -0
  310. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/README.md +0 -0
  311. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/load_test.py +0 -0
  312. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service_outputs.tf +0 -0
  313. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service_outputs.tf +0 -0
  314. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service_outputs.tf +0 -0
  315. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service.tf +0 -0
  316. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service_outputs.tf +0 -0
  317. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service_outputs.tf +0 -0
  318. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service.tf +0 -0
  319. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service_outputs.tf +0 -0
  320. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/integration/test_server_e2e.py +0 -0
  321. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/.results/.placeholder +0 -0
  322. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/README.md +0 -0
  323. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/load_test.py +0 -0
  324. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service_outputs.tf +0 -0
  325. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service.tf +0 -0
  326. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service_outputs.tf +0 -0
  327. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  328. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  329. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/integration/test_server_e2e.py +0 -0
  330. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/.results/.placeholder +0 -0
  331. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/README.md +0 -0
  332. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/load_test.py +0 -0
  333. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/integration/test_server_e2e.py +0 -0
  334. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/.results/.placeholder +0 -0
  335. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/README.md +0 -0
  336. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/load_test.py +0 -0
  337. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/__init__.py +0 -0
  338. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/command.py +0 -0
  339. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/gcp.py +0 -0
  340. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/language.py +0 -0
  341. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/lock_utils.py +0 -0
  342. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/logging.py +0 -0
  343. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/upgrade.py +0 -0
  344. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/__init__.py +0 -0
  345. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/_antigravity.py +0 -0
  346. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_auth.py +0 -0
  347. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_setup.py +0 -0
  348. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_update.py +0 -0
  349. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/__init__.py +0 -0
  350. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/_bundle.py +0 -0
  351. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/builtin-tools-eval.md +0 -0
  352. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/dataset_schema.md +0 -0
  353. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/adk-docs.md +0 -0
  354. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/commands.md +0 -0
  355. {google_agents_cli-1.5.0 → google_agents_cli-1.6.1}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/extension.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-agents-cli
3
- Version: 1.5.0
3
+ Version: 1.6.1
4
4
  Summary: Agents CLI — Agent Development Lifecycle toolchain for ADK
5
5
  Author-email: Google LLC <agents-cli-dev-pypi@google.com>
6
6
  Requires-Python: >=3.11
@@ -20,6 +20,7 @@ Requires-Dist: pyopenssl<26.2
20
20
  Requires-Dist: rich>=13.7.0
21
21
  Requires-Dist: backoff>=2.2.1
22
22
  Requires-Dist: requests>=2.31.0
23
+ Requires-Dist: websockets>=13.0
23
24
  Requires-Dist: a2a-sdk>=1.0,<2
24
25
  Requires-Dist: protobuf>=5.29.5,<7
25
26
  Requires-Dist: tomlkit>=0.13.0,<1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "google-agents-cli"
3
- version = "1.5.0"
3
+ version = "1.6.1"
4
4
  description = "Agents CLI — Agent Development Lifecycle toolchain for ADK"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -25,6 +25,7 @@ dependencies = [
25
25
  "rich>=13.7.0",
26
26
  "backoff>=2.2.1",
27
27
  "requests>=2.31.0",
28
+ "websockets>=13.0",
28
29
  "a2a-sdk>=1.0,<2",
29
30
  # Pin the a2a-sdk (>=5.29.5) .. aiplatform (<7) window so pip won't chase
30
31
  # protobuf 7 and backtrack into old google-api-core (protobuf<5).
@@ -0,0 +1,382 @@
1
+ # Copyright 2026 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Shared ADK FastAPI client: session create + ``/run_sse`` and ``/run_live``."""
16
+
17
+ from __future__ import annotations
18
+
19
+ import asyncio
20
+ import json
21
+ import logging
22
+ from collections.abc import (
23
+ AsyncGenerator,
24
+ Iterable,
25
+ Iterator,
26
+ )
27
+ from typing import NamedTuple
28
+ from urllib.parse import urlencode
29
+
30
+ import requests
31
+
32
+ _SESSION_TIMEOUT = 30
33
+ _RUN_SSE_TIMEOUT = 120
34
+ _APP_INFO_TIMEOUT = 10
35
+
36
+ DEFAULT_WS_PATH = "/run_live"
37
+ DEFAULT_TURN_TIMEOUT = 120 # seconds to wait for a turn's turnComplete
38
+
39
+ # /run_live transcribes it back to text, so output stays gradable.
40
+ DEFAULT_MODALITIES = ("AUDIO",)
41
+
42
+
43
+ def create_session(
44
+ base_url: str,
45
+ app_name: str,
46
+ user_id: str,
47
+ *,
48
+ headers: dict,
49
+ prior_events: list[dict] | None = None,
50
+ ) -> str:
51
+ """Create an ADK session and return its ID.
52
+
53
+ When ``prior_events`` are supplied, the ADK server seeds the fresh
54
+ session with them.
55
+ """
56
+ session_url = f"{base_url}/apps/{app_name}/users/{user_id}/sessions"
57
+ body: dict = {}
58
+ if prior_events:
59
+ body["events"] = prior_events
60
+
61
+ resp = requests.post(
62
+ session_url, headers=headers, json=body, timeout=_SESSION_TIMEOUT
63
+ )
64
+ resp.raise_for_status()
65
+ return resp.json().get("id")
66
+
67
+
68
+ def fetch_app_info(
69
+ *,
70
+ base_url: str,
71
+ app_name: str,
72
+ headers: dict,
73
+ ) -> tuple[str | None, dict]:
74
+ """Fetch agent metadata from ADK's /apps/{app_name}/app-info endpoint.
75
+
76
+ Returns (root_agent_name, agents), where agents is the raw ADK agents
77
+ map keyed by agent id. root_agent_name may be None if the server omits
78
+ it; agents may be empty.
79
+
80
+ Raises requests.RequestException (or a subclass: ConnectionError,
81
+ HTTPError, JSONDecodeError) if the endpoint isn't reachable, returns a
82
+ non-2xx status, or returns a body that isn't valid JSON.
83
+ """
84
+ url = f"{base_url}/apps/{app_name}/app-info"
85
+ resp = requests.get(url, headers=headers, timeout=_APP_INFO_TIMEOUT)
86
+ resp.raise_for_status()
87
+ payload = resp.json()
88
+ # Accept both camelCase and snake_case for cross language compatibility
89
+ root_agent_name = payload.get("rootAgentName", payload.get("root_agent_name"))
90
+ agents = payload.get("agents") or {}
91
+ return root_agent_name, agents
92
+
93
+
94
+ def run_sse(
95
+ base_url: str,
96
+ app_name: str,
97
+ session_id: str,
98
+ *,
99
+ user_message: dict,
100
+ headers: dict,
101
+ user_id: str,
102
+ ) -> Iterator[dict]:
103
+ """Stream ADK events for a single user turn.
104
+
105
+ Yields each ``data:`` line's decoded JSON dict as it arrives. Blank
106
+ lines, non-``data:`` lines, and payloads that fail to JSON-decode are
107
+ silently skipped.
108
+ """
109
+ run_url = f"{base_url}/run_sse"
110
+ payload = {
111
+ "appName": app_name,
112
+ "userId": user_id,
113
+ "sessionId": session_id,
114
+ "newMessage": user_message,
115
+ }
116
+
117
+ with requests.post(
118
+ run_url, headers=headers, json=payload, stream=True, timeout=_RUN_SSE_TIMEOUT
119
+ ) as resp:
120
+ resp.raise_for_status()
121
+ # Honor the server's explicit charset if provided; otherwise,
122
+ # fall back to UTF-8 rather than latin-1.
123
+ if "charset" not in resp.headers.get("Content-Type", "").lower():
124
+ resp.encoding = "utf-8"
125
+ for line in resp.iter_lines(decode_unicode=True):
126
+ if not isinstance(line, str) or not line.startswith("data: "):
127
+ continue
128
+ data_str = line[len("data: ") :]
129
+ try:
130
+ yield json.loads(data_str)
131
+ except json.JSONDecodeError:
132
+ continue
133
+
134
+
135
+ def _event_parts(event: dict) -> list:
136
+ """Return event's content parts, or an empty list when it carries none."""
137
+ content = event.get("content")
138
+ if not isinstance(content, dict):
139
+ return []
140
+ parts = content.get("parts")
141
+ return parts if isinstance(parts, list) else []
142
+
143
+
144
+ def _event_has_function_call(event: dict) -> bool:
145
+ """Return True if event carries a model function call."""
146
+ return any(
147
+ isinstance(part, dict) and part.get("functionCall")
148
+ for part in _event_parts(event)
149
+ )
150
+
151
+
152
+ def _event_has_function_response(event: dict) -> bool:
153
+ """Return True if event carries a tool's function response."""
154
+ return any(
155
+ isinstance(part, dict) and part.get("functionResponse")
156
+ for part in _event_parts(event)
157
+ )
158
+
159
+
160
+ def _event_has_answer_content(event: dict) -> bool:
161
+ """Return true if event carries gradable model answer content."""
162
+ transcription = event.get("outputTranscription")
163
+ if isinstance(transcription, dict) and transcription.get("text"):
164
+ return True
165
+ return any(
166
+ isinstance(part, dict) and (part.get("text") or part.get("inlineData"))
167
+ for part in _event_parts(event)
168
+ )
169
+
170
+
171
+ class FinishedTranscript(NamedTuple):
172
+ """A completed Live transcription frame."""
173
+
174
+ # "user" for input transcription, else the event's author (or "model").
175
+ author: str
176
+ # "user" or "model" -- the genai Content role for the rendered text.
177
+ role: str
178
+ text: str
179
+
180
+
181
+ # Live transcription keys mapped to the Content role they represent.
182
+ _TRANSCRIPTION_KEYS = (
183
+ ("inputTranscription", "user"),
184
+ ("outputTranscription", "model"),
185
+ )
186
+
187
+
188
+ def finished_transcript(event: dict) -> FinishedTranscript | None:
189
+ """Return the finished transcript carried by event, else None"""
190
+ for key, role in _TRANSCRIPTION_KEYS:
191
+ transcription = event.get(key)
192
+ if not isinstance(transcription, dict):
193
+ continue
194
+ if not transcription.get("finished"):
195
+ return None # partial chunk; the finished aggregate carries the text
196
+ text = transcription.get("text")
197
+ if not text:
198
+ return None
199
+ author = "user" if role == "user" else (event.get("author") or "model")
200
+ return FinishedTranscript(author=author, role=role, text=text)
201
+ return None
202
+
203
+
204
+ def is_transcription_event(event: dict) -> bool:
205
+ """True if event is a Live transcription frame (finished or partial)."""
206
+ # An empty transcription is still a transcription frame, not a malformed one.
207
+ return any(key in event for key, _ in _TRANSCRIPTION_KEYS)
208
+
209
+
210
+ def stream_live_events(
211
+ ws_base: str,
212
+ app_name: str,
213
+ session_id: str,
214
+ *,
215
+ user_turns: Iterable[dict],
216
+ headers: dict,
217
+ user_id: str,
218
+ ) -> Iterator[dict | None]:
219
+ """Stream ADK events for a Live conversation over one /run_live socket."""
220
+ return _iter_async(
221
+ _stream_live_events(
222
+ ws_base,
223
+ app_name,
224
+ session_id,
225
+ user_turns=user_turns,
226
+ headers=headers,
227
+ user_id=user_id,
228
+ )
229
+ )
230
+
231
+
232
+ def group_turns(stream: Iterable[dict | None]) -> Iterator[list[dict]]:
233
+ """Batch a stream_live_events stream into one event list per turn."""
234
+ events: list[dict] = []
235
+ for item in stream:
236
+ if item is None:
237
+ yield events
238
+ events = []
239
+ else:
240
+ events.append(item)
241
+
242
+
243
+ def build_run_live_url(
244
+ ws_base: str,
245
+ app_name: str,
246
+ session_id: str,
247
+ *,
248
+ user_id: str,
249
+ ) -> str:
250
+ """Build the ADK /run_live WebSocket URL from a ws-base."""
251
+ base = ws_base.rstrip("/")
252
+ query = [
253
+ ("app_name", app_name),
254
+ ("user_id", user_id),
255
+ ("session_id", session_id),
256
+ ]
257
+ query.extend(("modalities", m) for m in DEFAULT_MODALITIES)
258
+ return f"{base}{DEFAULT_WS_PATH}?{urlencode(query)}"
259
+
260
+
261
+ async def _stream_live_events(
262
+ ws_base: str,
263
+ app_name: str,
264
+ session_id: str,
265
+ *,
266
+ user_turns: Iterable[dict],
267
+ headers: dict,
268
+ user_id: str,
269
+ ) -> AsyncGenerator[dict | None, None]:
270
+ """Play user_turns over one socket, yielding each event as it arrives."""
271
+ from websockets.asyncio.client import connect as ws_connect
272
+ from websockets.exceptions import ConnectionClosed, ConnectionClosedOK
273
+
274
+ ws_url = build_run_live_url(ws_base, app_name, session_id, user_id=user_id)
275
+ user_turns = list(user_turns)
276
+ expected_turns = len(user_turns)
277
+ extra_headers = {
278
+ k: v for k, v in (headers or {}).items() if k.lower() != "content-type"
279
+ }
280
+
281
+ async with ws_connect(ws_url, additional_headers=extra_headers or None) as ws:
282
+ try:
283
+ for turn_index, content in enumerate(user_turns):
284
+ # One `content` frame per turn; ADK validates each frame.
285
+ await ws.send(json.dumps({"content": content}))
286
+
287
+ boundary = _TurnBoundary()
288
+ while True:
289
+ try:
290
+ raw = await asyncio.wait_for(
291
+ ws.recv(), timeout=DEFAULT_TURN_TIMEOUT
292
+ )
293
+ except TimeoutError:
294
+ logging.warning(
295
+ "Turn %d: no event for %ds, giving up on the turn.",
296
+ turn_index,
297
+ DEFAULT_TURN_TIMEOUT,
298
+ )
299
+ break
300
+ except ConnectionClosedOK:
301
+ if turn_index + 1 < expected_turns:
302
+ logging.warning(
303
+ "Turn %d: the agent closed the stream; "
304
+ "%d later turn(s) were never sent.",
305
+ turn_index,
306
+ expected_turns - turn_index - 1,
307
+ )
308
+ yield None # end of turn
309
+ return
310
+
311
+ event = _decode_ws_frame(raw)
312
+ if event is None:
313
+ continue
314
+ yield event
315
+ if boundary.is_terminal(event):
316
+ break
317
+
318
+ yield None # end of turn
319
+ finally:
320
+ try:
321
+ await ws.send(json.dumps({"close": True}))
322
+ except ConnectionClosed:
323
+ pass
324
+
325
+
326
+ class _TurnBoundary:
327
+ """Detect the terminal turnComplete of one logical live turn."""
328
+
329
+ def __init__(self) -> None:
330
+ self._tool_call_open = False
331
+ self._tool_response_seen = False
332
+
333
+ def is_terminal(self, event: dict) -> bool:
334
+ """Feed one event; return True if it ends the current logical turn."""
335
+ if _event_has_function_call(event):
336
+ # Anything spoken before the call is not the post-tool answer.
337
+ self._tool_call_open = True
338
+ self._tool_response_seen = False
339
+ elif _event_has_function_response(event):
340
+ if self._tool_call_open:
341
+ self._tool_response_seen = True
342
+ elif _event_has_answer_content(event):
343
+ self._tool_call_open = False
344
+ self._tool_response_seen = False
345
+
346
+ if event.get("turnComplete"):
347
+ if self._tool_call_open and self._tool_response_seen:
348
+ # Terminator for the tool round-trip; keep reading for the answer.
349
+ self._tool_call_open = False
350
+ self._tool_response_seen = False
351
+ return False
352
+ return True
353
+ return False
354
+
355
+
356
+ def _decode_ws_frame(raw) -> dict | None:
357
+ """Decode a /run_live frame into an ADK event dict, or None for audio."""
358
+ if isinstance(raw, (bytes, bytearray)):
359
+ try:
360
+ return json.loads(bytes(raw).decode("utf-8"))
361
+ except (UnicodeDecodeError, json.JSONDecodeError):
362
+ return None
363
+ try:
364
+ return json.loads(raw)
365
+ except json.JSONDecodeError:
366
+ return None
367
+
368
+
369
+ def _iter_async(agen) -> Iterator:
370
+ """Drive an async generator from sync code on a dedicated event loop."""
371
+ loop = asyncio.new_event_loop()
372
+ try:
373
+ while True:
374
+ try:
375
+ yield loop.run_until_complete(agen.__anext__())
376
+ except StopAsyncIteration:
377
+ break
378
+ finally:
379
+ loop.run_until_complete(agen.aclose())
380
+ # Finalize websockets' own async generators before closing the loop.
381
+ loop.run_until_complete(loop.shutdown_asyncgens())
382
+ loop.close()
@@ -0,0 +1,22 @@
1
+ # Copyright 2026 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Defaults shared by the CLI and the projects it scaffolds."""
16
+
17
+ from __future__ import annotations
18
+
19
+ # Reaches the templates as the ``default_model`` cookiecutter variable. Nothing
20
+ # renders the skills, docs, eval goldens or extension templates, so their copies
21
+ # of the model id are updated by hand alongside this one.
22
+ DEFAULT_MODEL = "gemini-3.8-flash"
@@ -27,7 +27,7 @@ class Experiment(NamedTuple):
27
27
  # Central registry of experiments: new experiment flags get added here.
28
28
  _REGISTRY: dict[str, Experiment] = {
29
29
  # Hides the `build` command until Go (compiled-language) support launches.
30
- "build_command": Experiment("build_command", bool, False),
30
+ "build_command": Experiment("build_command", bool, True),
31
31
  }
32
32
 
33
33
 
@@ -0,0 +1,31 @@
1
+ # Copyright 2026 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Protocol values shared by every command that talks to an agent."""
16
+
17
+ # A2A protocol.
18
+ MODE_A2A = "a2a"
19
+ # ADK over HTTP: POST /run_sse, or :streamQuery on Agent Runtime.
20
+ MODE_ADK = "adk"
21
+ # ADK over a bidi WebSocket: /run_live, the transport Live (voice) agents use.
22
+ MODE_ADK_LIVE = "adk_live"
23
+
24
+ # What each command accepts. Build every click.Choice and every "choose from"
25
+ # message from these, so adding a mode is one edit per set rather than one per
26
+ # call site.
27
+ RUN_MODES = (MODE_A2A, MODE_ADK, MODE_ADK_LIVE)
28
+ # A local server serves ADK only, so a2a needs a --url.
29
+ LOCAL_RUN_MODES = (MODE_ADK, MODE_ADK_LIVE)
30
+ # eval speaks ADK only.
31
+ EVAL_MODES = (MODE_ADK, MODE_ADK_LIVE)
@@ -45,6 +45,9 @@ class ProjectConfig:
45
45
  cicd_runner: str = "skip"
46
46
  agent_gateway: bool = False
47
47
  agent_guidance_filename: str = "GEMINI.md"
48
+ # The ADK name of the root agent. Empty means "derive it from the project
49
+ # name"; see resolve_root_agent_name.
50
+ root_agent_name: str = ""
48
51
 
49
52
  @property
50
53
  def create_params(self) -> dict[str, Any]:
@@ -55,6 +58,7 @@ class ProjectConfig:
55
58
  "cicd_runner": self.cicd_runner,
56
59
  "agent_gateway": self.agent_gateway,
57
60
  "agent_guidance_filename": self.agent_guidance_filename,
61
+ "root_agent_name": self.root_agent_name,
58
62
  }
59
63
 
60
64
  @classmethod
@@ -93,6 +97,7 @@ class ProjectConfig:
93
97
  )
94
98
  cfg.is_a2a = create_params.get("is_a2a", cfg.is_a2a)
95
99
  cfg.agent_gateway = create_params.get("agent_gateway", cfg.agent_gateway)
100
+ cfg.root_agent_name = create_params.get("root_agent_name") or ""
96
101
 
97
102
  return cfg
98
103
 
@@ -108,10 +113,12 @@ def _warn_legacy_config() -> None:
108
113
  "\n⚠️ Legacy configuration detected in pyproject.toml.",
109
114
  fg="yellow",
110
115
  bold=True,
116
+ err=True,
111
117
  )
112
118
  click.secho(
113
119
  " Run `agents-cli scaffold upgrade` to migrate to agents-cli-manifest.yaml.\n",
114
120
  fg="yellow",
121
+ err=True,
115
122
  )
116
123
  _WARNED_LEGACY_CONFIG = True
117
124
 
@@ -216,13 +223,15 @@ def check_cli_version(cfg: ProjectConfig) -> None:
216
223
  click.echo(
217
224
  f"\n⚠️ Version mismatch: project was scaffolded with agents-cli {acli_version},"
218
225
  f" running {__version__}.\n"
219
- f" Upgrade the CLI: uv tool install google-agents-cli@{acli_version}\n"
226
+ f" Upgrade the CLI: uv tool install google-agents-cli@{acli_version}\n",
227
+ err=True,
220
228
  )
221
229
  elif cli_ver > project_ver:
222
230
  click.echo(
223
231
  f"\n⚠️ Version mismatch: project was scaffolded with agents-cli {acli_version},"
224
232
  f" running {__version__}.\n"
225
- " Upgrade the project: agents-cli scaffold upgrade\n"
233
+ " Upgrade the project: agents-cli scaffold upgrade\n",
234
+ err=True,
226
235
  )
227
236
 
228
237
 
@@ -309,7 +318,7 @@ def chdir_project_root(dir: Path | None = None) -> None:
309
318
  )
310
319
  # Only announce the root when we actually move (i.e. run from a subdir).
311
320
  if root.resolve() != Path.cwd().resolve():
312
- click.echo(f"Using project root directory: {root}")
321
+ click.echo(f"Using project root directory: {root}", err=True)
313
322
  os.chdir(root)
314
323
 
315
324
 
@@ -383,3 +392,15 @@ def root_agent_name(project_name: str) -> str:
383
392
  return "root_agent"
384
393
  # A leading digit is legal in a project name but not in an identifier.
385
394
  return f"agent_{candidate}" if candidate[0].isdigit() else candidate
395
+
396
+
397
+ def resolve_root_agent_name(cfg: ProjectConfig) -> str:
398
+ """The project's root agent name: recorded in the manifest, else derived.
399
+
400
+ The recorded value wins so that renaming the agent in code stays
401
+ expressible. Derivation alone can only produce names that follow from the
402
+ project name, so a project called ``it-support-agent`` whose agent is
403
+ ``billing_bot`` has no way to say so -- and nothing reports the mismatch,
404
+ because a telemetry query filtered on the wrong name simply returns no rows.
405
+ """
406
+ return cfg.root_agent_name or root_agent_name(cfg.project_name)
@@ -21,7 +21,8 @@ how a ``--url`` is classified and what auth token it gets.
21
21
  from __future__ import annotations
22
22
 
23
23
  import re
24
- from urllib.parse import urlparse
24
+ from typing import NamedTuple
25
+ from urllib.parse import urlparse, urlsplit, urlunsplit
25
26
 
26
27
  import click
27
28
 
@@ -32,6 +33,10 @@ _REASONING_ENGINE_PATH = "reasoningEngines"
32
33
  # A valid Agent Runtime host carries a location prefix: <location>-aiplatform.googleapis.com
33
34
  _AGENT_RUNTIME_HOST_RE = re.compile(rf".+-{re.escape(_AGENT_ENGINE_URL_FRAGMENT)}$")
34
35
 
36
+ # WebSocket traffic has its own ingress; HTTP goes through reasoningEngines/v1.
37
+ # https://github.com/GoogleCloudPlatform/generative-ai/blob/main/agents/agent_engine/tutorial_bidi_stream_v2.ipynb
38
+ _AGENT_RUNTIME_WS_INGRESS = "reasoningEngines/ws/internal"
39
+
35
40
 
36
41
  def is_agent_runtime_url(url: str) -> bool:
37
42
  """Return ``True`` if *url* points to an Agent Runtime endpoint."""
@@ -79,6 +84,41 @@ def build_agent_runtime_passthrough_url(location: str, runtime_resource: str) ->
79
84
  )
80
85
 
81
86
 
87
+ class AgentEndpoints(NamedTuple):
88
+ """HTTP and WebSocket base URLs for one remote agent."""
89
+
90
+ http_base: str
91
+ ws_base: str
92
+
93
+
94
+ def http_to_ws_url(base_url: str) -> str:
95
+ """Normalize a URL's scheme to ws/wss"""
96
+ parts = urlsplit(base_url)
97
+ scheme = {"http": "ws", "https": "wss"}.get(parts.scheme, parts.scheme)
98
+ return urlunsplit(parts._replace(scheme=scheme))
99
+
100
+
101
+ def build_agent_runtime_endpoints(location: str, runtime_resource: str) -> AgentEndpoints:
102
+ """Build Agent Runtime ingress base URLs for a deployed engine."""
103
+ host = f"{location}-{_AGENT_ENGINE_URL_FRAGMENT}"
104
+ resource = runtime_resource.strip("/")
105
+ return AgentEndpoints(
106
+ http_base=build_agent_runtime_passthrough_url(location, resource),
107
+ ws_base=f"wss://{host}/{_AGENT_RUNTIME_WS_INGRESS}/{resource}/api",
108
+ )
109
+
110
+
111
+ def resolve_agent_endpoints(url: str) -> AgentEndpoints:
112
+ """Resolve the HTTP and WebSocket base URLs for a remote agent."""
113
+ http_url = url.rstrip("/")
114
+ if not is_agent_runtime_url(http_url):
115
+ return AgentEndpoints(http_base=http_url, ws_base=http_to_ws_url(http_url))
116
+
117
+ validate_agent_runtime_url(http_url)
118
+ location, resource = parse_agent_runtime_service_url(http_url)
119
+ return build_agent_runtime_endpoints(location, resource.removesuffix("/api"))
120
+
121
+
82
122
  def parse_agent_runtime_service_url(service_url: str) -> tuple[str, str]:
83
123
  """Split an Agent Runtime service URL into (location, runtime_resource).
84
124
 
@@ -218,5 +218,6 @@ def check_skills_version() -> None:
218
218
  f"\n⚠️ Skills version mismatch — CLI is v{__version__}, "
219
219
  f"but {len(mismatched)} skill(s) differ:\n"
220
220
  + "\n".join(lines)
221
- + "\n Run 'agents-cli update' to sync.\n"
221
+ + "\n Run 'agents-cli update' to sync.\n",
222
+ err=True,
222
223
  )