google-agents-cli 1.4.2__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 (366) hide show
  1. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/PKG-INFO +11 -8
  2. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/README.md +3 -6
  3. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/pyproject.toml +27 -5
  4. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/__init__.py +5 -1
  5. google_agents_cli-1.6.1/src/google/agents/cli/_adk_client.py +382 -0
  6. google_agents_cli-1.6.1/src/google/agents/cli/_agent_platform.py +66 -0
  7. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_click.py +13 -1
  8. google_agents_cli-1.6.1/src/google/agents/cli/_defaults.py +22 -0
  9. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_experiments.py +1 -1
  10. google_agents_cli-1.6.1/src/google/agents/cli/_modes.py +31 -0
  11. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_output.py +1 -1
  12. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_project.py +93 -23
  13. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_remote.py +56 -6
  14. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_runner.py +49 -0
  15. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_skills_check.py +2 -1
  16. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_tools.py +5 -1
  17. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_trust.py +8 -5
  18. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/_utils.py +32 -3
  19. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/agent_runtime.py +224 -91
  20. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/cmd_deploy.py +170 -11
  21. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_install.py +9 -0
  22. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_playground.py +14 -3
  23. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/_paths.py +57 -3
  24. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/_synthesize_runner.py +3 -1
  25. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_analyze.py +2 -3
  26. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_dataset.py +1 -1
  27. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_generate.py +40 -19
  28. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_grade.py +79 -11
  29. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_run.py +56 -13
  30. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_submit.py +3 -3
  31. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/eval_utils.py +75 -2
  32. google_agents_cli-1.6.1/src/google/agents/cli/extension/_compat.py +86 -0
  33. google_agents_cli-1.6.1/src/google/agents/cli/extension/_loader.py +295 -0
  34. google_agents_cli-1.6.1/src/google/agents/cli/extension/_manifest.py +137 -0
  35. google_agents_cli-1.6.1/src/google/agents/cli/extension/_overrides.py +197 -0
  36. google_agents_cli-1.6.1/src/google/agents/cli/extension/_paths.py +91 -0
  37. google_agents_cli-1.6.1/src/google/agents/cli/extension/_refs.py +168 -0
  38. google_agents_cli-1.6.1/src/google/agents/cli/extension/_resolver.py +453 -0
  39. google_agents_cli-1.6.1/src/google/agents/cli/extension/_schema.py +103 -0
  40. google_agents_cli-1.6.1/src/google/agents/cli/extension/_spec.py +255 -0
  41. google_agents_cli-1.6.1/src/google/agents/cli/extension/_sync.py +102 -0
  42. google_agents_cli-1.6.1/src/google/agents/cli/extension/_trust.py +38 -0
  43. google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_add.py +216 -0
  44. google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_group.py +57 -0
  45. google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_list.py +58 -0
  46. google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_remove.py +63 -0
  47. google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_update.py +147 -0
  48. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/info/cmd_info.py +41 -0
  49. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/_cicd_utils.py +10 -3
  50. google_agents_cli-1.6.1/src/google/agents/cli/infra/_terraform.py +79 -0
  51. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_cicd.py +1 -1
  52. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_infra.py +6 -0
  53. google_agents_cli-1.6.1/src/google/agents/cli/infra/cmd_infra_show.py +100 -0
  54. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_infra_single_project.py +5 -10
  55. google_agents_cli-1.6.1/src/google/agents/cli/main.py +482 -0
  56. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/cmd_publish.py +39 -16
  57. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/run/_local_server.py +61 -20
  58. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/run/_multimodal.py +1 -1
  59. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/run/cmd_run.py +259 -75
  60. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/.template/templateconfig.yaml +15 -2
  61. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/agent.py +6 -2
  62. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/app_utils/a2a.py +1 -38
  63. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/app_utils/reasoning_engine_adapter.py +17 -7
  64. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/fast_api_app.py +13 -8
  65. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/response_quality.py +22 -3
  66. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/.template/templateconfig.yaml +1 -3
  67. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/Dockerfile +13 -10
  68. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/Makefile +7 -6
  69. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/README.md +5 -3
  70. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/agents/adk_go/agent → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/app}/agent.go +37 -8
  71. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/agents/adk_go/agent → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/app}/agent_test.go +2 -2
  72. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo.go +541 -0
  73. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo_test.go +956 -0
  74. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/apploader.go +55 -0
  75. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appurl.go +47 -0
  76. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/integration/server_e2e_test.go +113 -2
  77. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/load_test/README.md +1 -1
  78. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/load_test/load_test.go +3 -0
  79. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/README.md +117 -0
  80. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/basic-dataset.json +31 -0
  81. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/eval_config.yaml +13 -0
  82. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/response_quality.py +65 -0
  83. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/go.mod +23 -13
  84. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/go.sum +55 -12
  85. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/main.go +168 -0
  86. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/observability.go +192 -0
  87. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/observability_test.go +178 -0
  88. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/sessions/sessions.go +237 -0
  89. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/Makefile +1 -1
  90. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +6 -2
  91. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/Makefile +1 -1
  92. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/app/agent.ts +6 -2
  93. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/package-lock.json +726 -345
  94. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/package.json +7 -1
  95. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_go/.template/templateconfig.yaml +25 -0
  96. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_java/.template/templateconfig.yaml +25 -0
  97. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_py/.template/templateconfig.yaml +24 -0
  98. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_ts/.template/templateconfig.yaml +25 -0
  99. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +20 -0
  100. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/apis.tf +25 -8
  101. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/build_triggers.tf +15 -3
  102. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/github.tf +5 -1
  103. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/iam.tf +5 -1
  104. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/locals.tf +7 -4
  105. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/providers.tf +7 -0
  106. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/wif.tf +4 -0
  107. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/apis.tf +24 -4
  108. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/iam.tf +4 -1
  109. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/providers.tf +7 -0
  110. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +103 -0
  111. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/pr_checks.yaml +3 -3
  112. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +231 -0
  113. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.gcloudignore +15 -0
  114. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +126 -0
  115. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/pr_checks.yaml +3 -3
  116. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +197 -0
  117. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.gitignore +3 -1
  118. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.golangci.yml +4 -0
  119. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry.tf +136 -0
  120. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry_outputs.tf +18 -0
  121. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/completions.sql +184 -0
  122. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/genai_logs_schema.json +77 -0
  123. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry.tf +130 -0
  124. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry_outputs.tf +18 -0
  125. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/java/.gcloudignore +15 -0
  126. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.gitignore +3 -1
  127. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/python/.gcloudignore +15 -0
  128. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.gitignore +6 -2
  129. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/Dockerfile +2 -1
  130. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/pyproject.toml +9 -4
  131. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_guidance_filename}} +2 -0
  132. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/typescript/.gcloudignore +15 -0
  133. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.gitignore +7 -1
  134. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/commands/create.py +1730 -0
  135. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/enhance.py +75 -51
  136. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/upgrade.py +8 -14
  137. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service.tf +4 -1
  138. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service.tf +4 -1
  139. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/integration/test_server_e2e.py +24 -0
  140. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +240 -0
  141. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +213 -0
  142. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service.tf +6 -2
  143. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service.tf +1 -1
  144. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service.tf +6 -2
  145. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service.tf +1 -1
  146. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service.tf +6 -2
  147. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service.tf +1 -1
  148. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service.tf +57 -25
  149. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service.tf +26 -11
  150. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-agent_runtime.lock +967 -959
  151. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-cloud_run.lock +1023 -1009
  152. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-gke.lock +1023 -1009
  153. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/__init__.py +13 -0
  154. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/backup.py +41 -34
  155. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/cli_options.py +123 -0
  156. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/fs.py +81 -0
  157. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/generate_locks.py +17 -15
  158. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/generation_metadata.py +19 -3
  159. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/language.py +5 -1
  160. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/lock_utils.py +36 -0
  161. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/merge.py +7 -4
  162. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/remote_template.py +93 -25
  163. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/template.py +262 -94
  164. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/upgrade.py +11 -9
  165. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/version.py +2 -2
  166. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_setup.py +119 -17
  167. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_update.py +1 -1
  168. google_agents_cli-1.6.1/src/google/agents/cli/skills/__init__.py +13 -0
  169. google_agents_cli-1.6.1/src/google/agents/cli/skills/_bundle.py +59 -0
  170. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/README.md +1 -1
  171. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/SKILL.md +72 -0
  172. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go-workflows.md +480 -0
  173. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go.md +720 -0
  174. google_agents_cli-1.4.2/skills/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
  175. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-adk-code/references/adk-python.md +14 -14
  176. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-adk-code/references/samples.md +6 -3
  177. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/SKILL.md +27 -25
  178. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/agent-runtime.md +43 -22
  179. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/batch-inference.md +131 -0
  180. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/cicd-pipeline.md +4 -1
  181. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/cloud-run.md +11 -3
  182. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/gke.md +9 -3
  183. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/terraform-patterns.md +8 -0
  184. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/testing-deployed-agents.md +21 -3
  185. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/SKILL.md +26 -12
  186. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/advanced-commands.md +3 -1
  187. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/builtin-tools-eval.md +3 -1
  188. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/metrics-guide.md +9 -3
  189. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/multimodal-eval.md +4 -4
  190. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/user-simulation.md +2 -0
  191. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/SKILL.md +34 -37
  192. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-observability/references/adk-docs.md +10 -0
  193. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/references/bigquery-agent-analytics.md +2 -2
  194. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/references/cloud-trace-and-logging.md +29 -5
  195. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/references/feedback-mechanism.md +1 -1
  196. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-publish/SKILL.md +15 -9
  197. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-scaffold/SKILL.md +41 -19
  198. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-scaffold/references/flags.md +6 -2
  199. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/SKILL.md +24 -13
  200. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/brainstorming.md +9 -7
  201. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/extension.md +125 -0
  202. google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/internals.md +28 -0
  203. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/spec-template.md +3 -0
  204. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/terminology.md +2 -1
  205. google_agents_cli-1.4.2/skills/google-agents-cli-adk-code/SKILL.md +0 -78
  206. google_agents_cli-1.4.2/skills/google-agents-cli-deploy/references/batch-inference.md +0 -73
  207. google_agents_cli-1.4.2/skills/google-agents-cli-workflow/references/internals.md +0 -24
  208. google_agents_cli-1.4.2/src/google/agents/cli/_adk_client.py +0 -111
  209. google_agents_cli-1.4.2/src/google/agents/cli/_agent_runtime_a2a.py +0 -44
  210. google_agents_cli-1.4.2/src/google/agents/cli/main.py +0 -211
  211. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/agents/adk/README.md +0 -14
  212. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +0 -16
  213. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +0 -58
  214. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +0 -154
  215. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +0 -90
  216. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +0 -156
  217. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/agent/agent.go +0 -29
  218. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/main.go +0 -113
  219. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +0 -48
  220. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java/src/test/java/{{cookiecutter.java_package_path}}/unit/AgentTest.java +0 -33
  221. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript/app/agent.ts +0 -25
  222. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/commands/create.py +0 -1405
  223. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +0 -105
  224. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +0 -95
  225. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/{{cookiecutter.agent_directory}}/fast_api_app.py +0 -76
  226. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/gke/python/{{cookiecutter.agent_directory}}/fast_api_app.py +0 -76
  227. google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/none/python/{{cookiecutter.agent_directory}}/fast_api_app.py +0 -76
  228. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/LICENSE +0 -0
  229. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_gcp_project.py +0 -0
  230. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/auth.py +0 -0
  231. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/data/__init__.py +0 -0
  232. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/data/_recipe.py +0 -0
  233. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/data/cmd_data_ingestion.py +0 -0
  234. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/__init__.py +0 -0
  235. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/_operation.py +0 -0
  236. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/__init__.py +0 -0
  237. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_build.py +0 -0
  238. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_lint.py +0 -0
  239. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/__init__.py +0 -0
  240. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_compare.py +0 -0
  241. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_eval_group.py +0 -0
  242. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_metric.py +0 -0
  243. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_optimize.py +0 -0
  244. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/optimize_utils.py +0 -0
  245. {google_agents_cli-1.4.2/src/google/agents/cli/run → google_agents_cli-1.6.1/src/google/agents/cli/extension}/__init__.py +0 -0
  246. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/info/__init__.py +0 -0
  247. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/__init__.py +0 -0
  248. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_datastore.py +0 -0
  249. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/__init__.py +0 -0
  250. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/cmd_publish_group.py +0 -0
  251. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/utils → google_agents_cli-1.6.1/src/google/agents/cli/run}/__init__.py +0 -0
  252. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/__init__.py +0 -0
  253. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/README.md +0 -0
  254. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/__init__.py +0 -0
  255. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/app_utils/services.py +0 -0
  256. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/README.md +0 -0
  257. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/basic-dataset.json +0 -0
  258. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/eval_config.yaml +0 -0
  259. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/integration/test_agent.py +0 -0
  260. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/load_test/.results/.placeholder +0 -0
  261. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/{{cookiecutter.agent_guidance_filename}} +0 -0
  262. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/.cloudbuild/pr_checks.yaml +0 -0
  263. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/.github/workflows/pr_checks.yaml +0 -0
  264. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/.template/templateconfig.yaml +0 -0
  265. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/Dockerfile +0 -0
  266. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/README.md +0 -0
  267. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/pom.xml +0 -0
  268. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → 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
  269. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → 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
  270. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → 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
  271. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → 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
  272. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → 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
  273. {google_agents_cli-1.4.2 → 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
  274. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/{{cookiecutter.agent_guidance_filename}} +0 -0
  275. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/.cloudbuild/pr_checks.yaml +0 -0
  276. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/.github/workflows/pr_checks.yaml +0 -0
  277. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/.template/templateconfig.yaml +0 -0
  278. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/Dockerfile +0 -0
  279. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/README.md +0 -0
  280. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/agent.test.ts +0 -0
  281. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/integration/server_e2e.test.ts +0 -0
  282. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/load_test/.results/.placeholder +0 -0
  283. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/load_test/README.md +0 -0
  284. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/load_test/load_test.ts +0 -0
  285. {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/unit/dummy.test.ts +0 -0
  286. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/outputs.tf +0 -0
  287. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/service_accounts.tf +0 -0
  288. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/storage.tf +0 -0
  289. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/variables.tf +0 -0
  290. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/vars/env.tfvars +0 -0
  291. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/outputs.tf +0 -0
  292. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/storage.tf +0 -0
  293. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/variables.tf +0 -0
  294. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/vars/env.tfvars +0 -0
  295. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.env +0 -0
  296. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.env.example +0 -0
  297. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/deploy-to-prod.yaml +0 -0
  298. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/staging.yaml +0 -0
  299. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.env.example +0 -0
  300. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/deploy-to-prod.yaml +0 -0
  301. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/staging.yaml +0 -0
  302. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/src/main/resources/application.properties +0 -0
  303. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/deploy-to-prod.yaml +0 -0
  304. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/pr_checks.yaml +0 -0
  305. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/staging.yaml +0 -0
  306. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.env +0 -0
  307. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.env.example +0 -0
  308. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/deploy-to-prod.yaml +0 -0
  309. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/pr_checks.yaml +0 -0
  310. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/staging.yaml +0 -0
  311. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/README.md +0 -0
  312. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry.tf +0 -0
  313. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  314. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/completions.sql +0 -0
  315. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/genai_logs_schema.json +0 -0
  316. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry.tf +0 -0
  317. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  318. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/tests/unit/test_dummy.py +0 -0
  319. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/deploy-to-prod.yaml +0 -0
  320. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/staging.yaml +0 -0
  321. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.dockerignore +0 -0
  322. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.env.example +0 -0
  323. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/deploy-to-prod.yaml +0 -0
  324. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/staging.yaml +0 -0
  325. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/eslint.config.mjs +0 -0
  326. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/tsconfig.json +0 -0
  327. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/vitest.config.ts +0 -0
  328. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/cmd_scaffold_group.py +0 -0
  329. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/__init__.py +0 -0
  330. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  331. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/shared/dummy_source.b64 +0 -0
  332. {google_agents_cli-1.4.2 → 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
  333. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment_metadata.json +0 -0
  334. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/.results/.placeholder +0 -0
  335. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/README.md +0 -0
  336. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/load_test.py +0 -0
  337. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service_outputs.tf +0 -0
  338. {google_agents_cli-1.4.2 → 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
  339. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service_outputs.tf +0 -0
  340. {google_agents_cli-1.4.2 → 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
  341. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service_outputs.tf +0 -0
  342. {google_agents_cli-1.4.2 → 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
  343. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/integration/test_server_e2e.py +0 -0
  344. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/.results/.placeholder +0 -0
  345. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/README.md +0 -0
  346. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/load_test.py +0 -0
  347. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service_outputs.tf +0 -0
  348. {google_agents_cli-1.4.2 → 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
  349. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  350. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  351. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/integration/test_server_e2e.py +0 -0
  352. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/.results/.placeholder +0 -0
  353. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/README.md +0 -0
  354. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/load_test.py +0 -0
  355. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/integration/test_server_e2e.py +0 -0
  356. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/.results/.placeholder +0 -0
  357. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/README.md +0 -0
  358. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/load_test.py +0 -0
  359. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/command.py +0 -0
  360. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/gcp.py +0 -0
  361. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/logging.py +0 -0
  362. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/__init__.py +0 -0
  363. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/_antigravity.py +0 -0
  364. {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_auth.py +0 -0
  365. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/dataset_schema.md +0 -0
  366. {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/commands.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-agents-cli
3
- Version: 1.4.2
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
@@ -13,17 +13,23 @@ Requires-Dist: click>=8.1.8,<9
13
13
  Requires-Dist: PyYAML>=6.0.2,<7
14
14
  Requires-Dist: cookiecutter>=2.6.0,<3
15
15
  Requires-Dist: jinja2>=3.1.0
16
- Requires-Dist: google-cloud-aiplatform[evaluation]>=1.156.0,<2
16
+ Requires-Dist: google-cloud-aiplatform[evaluation]>=1.165.0,<2
17
17
  Requires-Dist: google-cloud-resource-manager>=1.12.0
18
18
  Requires-Dist: google-auth[pyopenssl]>=2.47.0
19
+ Requires-Dist: pyopenssl<26.2
19
20
  Requires-Dist: rich>=13.7.0
20
21
  Requires-Dist: backoff>=2.2.1
21
22
  Requires-Dist: requests>=2.31.0
23
+ Requires-Dist: websockets>=13.0
22
24
  Requires-Dist: a2a-sdk>=1.0,<2
25
+ Requires-Dist: protobuf>=5.29.5,<7
23
26
  Requires-Dist: tomlkit>=0.13.0,<1
24
27
  Requires-Dist: psutil>=5.9.0
25
28
  Requires-Dist: python-dotenv>=1.0.0
26
29
  Requires-Dist: pathspec>=0.12.1
30
+ Requires-Dist: filelock>=3.12,<4
31
+ Requires-Dist: packaging>=24
32
+ Requires-Dist: pydantic>=2.10,<3
27
33
  Requires-Dist: ruff ; extra == "lint"
28
34
  Requires-Dist: ty ; extra == "lint"
29
35
  Requires-Dist: codespell ; extra == "lint"
@@ -111,7 +117,7 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
111
117
  | Command | What it does |
112
118
  |---------|-------------|
113
119
  | `agents-cli setup` | Install CLI + skills to coding agents |
114
- | `agents-cli scaffold <name>` | Create a new agent project |
120
+ | `agents-cli create <name>` | Create a new agent project |
115
121
  | `agents-cli eval run` | Run the agent over the eval dataset and grade the traces |
116
122
  | `agents-cli deploy` | Deploy to Google Cloud |
117
123
  | `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
@@ -124,8 +130,8 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
124
130
  | `agents-cli login` | Authenticate with Google Cloud or AI Studio |
125
131
  | `agents-cli login --status` | Show authentication status |
126
132
  | **Scaffold** | |
127
- | `agents-cli scaffold <name>` | Create a new agent project |
128
- | `agents-cli scaffold enhance` | Add deployment, CI/CD, or RAG to an existing project |
133
+ | `agents-cli create <name>` | Create a new agent project |
134
+ | `agents-cli scaffold enhance` | Add deployment or CI/CD to an existing project |
129
135
  | `agents-cli scaffold upgrade` | Upgrade project to a newer agents-cli version |
130
136
  | **Develop** | |
131
137
  | `agents-cli run "prompt"` | Run agent with a single prompt |
@@ -145,9 +151,6 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
145
151
  | `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
146
152
  | `agents-cli infra single-project` | Provision single-project infrastructure |
147
153
  | `agents-cli infra cicd` | Set up CI/CD pipeline + staging/prod infrastructure |
148
- | **Data** | |
149
- | `agents-cli infra datastore` | Provision datastore infrastructure for RAG |
150
- | `agents-cli data-ingestion` | Run data ingestion pipeline |
151
154
  | **Other** | |
152
155
  | `agents-cli info` | Show project config and CLI version |
153
156
  | `agents-cli update` | Force reinstall skills to all IDEs |
@@ -76,7 +76,7 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
76
76
  | Command | What it does |
77
77
  |---------|-------------|
78
78
  | `agents-cli setup` | Install CLI + skills to coding agents |
79
- | `agents-cli scaffold <name>` | Create a new agent project |
79
+ | `agents-cli create <name>` | Create a new agent project |
80
80
  | `agents-cli eval run` | Run the agent over the eval dataset and grade the traces |
81
81
  | `agents-cli deploy` | Deploy to Google Cloud |
82
82
  | `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
@@ -89,8 +89,8 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
89
89
  | `agents-cli login` | Authenticate with Google Cloud or AI Studio |
90
90
  | `agents-cli login --status` | Show authentication status |
91
91
  | **Scaffold** | |
92
- | `agents-cli scaffold <name>` | Create a new agent project |
93
- | `agents-cli scaffold enhance` | Add deployment, CI/CD, or RAG to an existing project |
92
+ | `agents-cli create <name>` | Create a new agent project |
93
+ | `agents-cli scaffold enhance` | Add deployment or CI/CD to an existing project |
94
94
  | `agents-cli scaffold upgrade` | Upgrade project to a newer agents-cli version |
95
95
  | **Develop** | |
96
96
  | `agents-cli run "prompt"` | Run agent with a single prompt |
@@ -110,9 +110,6 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
110
110
  | `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
111
111
  | `agents-cli infra single-project` | Provision single-project infrastructure |
112
112
  | `agents-cli infra cicd` | Set up CI/CD pipeline + staging/prod infrastructure |
113
- | **Data** | |
114
- | `agents-cli infra datastore` | Provision datastore infrastructure for RAG |
115
- | `agents-cli data-ingestion` | Run data ingestion pipeline |
116
113
  | **Other** | |
117
114
  | `agents-cli info` | Show project config and CLI version |
118
115
  | `agents-cli update` | Force reinstall skills to all IDEs |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "google-agents-cli"
3
- version = "1.4.2"
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"
@@ -16,17 +16,28 @@ dependencies = [
16
16
  "PyYAML>=6.0.2,<7",
17
17
  "cookiecutter>=2.6.0,<3",
18
18
  "jinja2>=3.1.0",
19
- "google-cloud-aiplatform[evaluation]>=1.156.0,<2",
19
+ "google-cloud-aiplatform[evaluation]>=1.165.0,<2",
20
20
  "google-cloud-resource-manager>=1.12.0",
21
21
  "google-auth[pyopenssl]>=2.47.0",
22
+ # pyOpenSSL 26.2 forbids mutating a used SSL Context; urllib3 does it per
23
+ # connection under google-auth's mTLS shim (urllib3#5107). Lift when fixed.
24
+ "pyopenssl<26.2",
22
25
  "rich>=13.7.0",
23
26
  "backoff>=2.2.1",
24
27
  "requests>=2.31.0",
28
+ "websockets>=13.0",
25
29
  "a2a-sdk>=1.0,<2",
30
+ # Pin the a2a-sdk (>=5.29.5) .. aiplatform (<7) window so pip won't chase
31
+ # protobuf 7 and backtrack into old google-api-core (protobuf<5).
32
+ "protobuf>=5.29.5,<7",
26
33
  "tomlkit>=0.13.0,<1",
27
34
  "psutil>=5.9.0",
28
35
  "python-dotenv>=1.0.0",
29
36
  "pathspec>=0.12.1",
37
+ "filelock>=3.12,<4",
38
+ "packaging>=24",
39
+ # 2.10+: earlier versions emit `enum` beside `const`, which the schema sync test sees.
40
+ "pydantic>=2.10,<3",
30
41
  ]
31
42
 
32
43
  [project.urls]
@@ -53,7 +64,6 @@ include = [
53
64
  "src/google/agents/cli/scaffold/deployment_targets/",
54
65
  "src/google/agents/cli/scaffold/resources/",
55
66
  "src/google/agents/cli/scaffold/sample_data/",
56
- "skills/",
57
67
  ]
58
68
 
59
69
  [project.optional-dependencies]
@@ -79,16 +89,27 @@ dev = [
79
89
  "pytest-rerunfailures>=15.0",
80
90
  "pytest-xdist>=3.6.1",
81
91
  "pytest-cov>=4.1.0",
92
+ "jsonschema>=4.20",
82
93
  ]
83
94
 
84
95
  [tool.ruff]
85
96
  line-length = 90
86
97
  target-version = "py311"
87
- include = ["src/google/agents/cli/**/*.py", "tests/**/*.py", "tools/**/*.py"]
98
+ include = [
99
+ "src/google/agents/cli/**/*.py",
100
+ "tests/**/*.py",
101
+ "tools/**/*.py",
102
+ # First-party extensions ship real code; lint them like the rest.
103
+ "extensions/**/*.py",
104
+ ]
88
105
  exclude = [
89
106
  "src/google/agents/cli/scaffold/agents",
90
107
  "src/google/agents/cli/scaffold/base_templates",
91
108
  "src/google/agents/cli/scaffold/deployment_targets",
109
+ # Generated-project sources, linted by the project's own config (a
110
+ # different line length, and no `google` namespace on disk), not this one.
111
+ "extensions/*/template",
112
+ "src/google/agents/cli/skills/data",
92
113
  "tests/cicd/scripts",
93
114
  ]
94
115
 
@@ -111,10 +132,10 @@ ignore = ["E501", "C901", "RUF001", "UP036", "RUF067", "RUF069"]
111
132
 
112
133
  [tool.ruff.lint.per-file-ignores]
113
134
  "tests/**/*.py" = ["PLR0917"]
114
- "src/google/agents/cli/_output.py" = ["TID251"]
115
135
 
116
136
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
117
137
  "rich.console.Console" = { msg = "Use `google.agents.cli._output.Console` instead to ensure project-wide defaults (soft_wrap=True) are applied." }
138
+ "agentplatform.Client" = { msg = "Use `google.agents.cli._agent_platform.AgentPlatformClient` instead, so the client retries throttled requests." }
118
139
 
119
140
  [tool.ruff.lint.pylint]
120
141
  max-positional-args = 5
@@ -136,6 +157,7 @@ exclude = [
136
157
  "src/google/agents/cli/scaffold/agents/**",
137
158
  "src/google/agents/cli/scaffold/base_templates/**",
138
159
  "src/google/agents/cli/scaffold/deployment_targets/**",
160
+ "src/google/agents/cli/skills/data/**",
139
161
  "tests/cicd/scripts/**",
140
162
  ]
141
163
 
@@ -16,7 +16,11 @@
16
16
 
17
17
  import importlib.metadata
18
18
 
19
+ # Reported when the CLI runs from a source checkout rather than an installed
20
+ # distribution. Version checks treat it as "unknown, don't block".
21
+ DEV_VERSION = "0.0.0-dev"
22
+
19
23
  try:
20
24
  __version__ = importlib.metadata.version("google-agents-cli")
21
25
  except importlib.metadata.PackageNotFoundError:
22
- __version__ = "0.0.0-dev"
26
+ __version__ = DEV_VERSION
@@ -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,66 @@
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 construction of the Agent Platform SDK client."""
16
+
17
+ from __future__ import annotations
18
+
19
+ from typing import TYPE_CHECKING, Any
20
+
21
+ if TYPE_CHECKING:
22
+ import agentplatform
23
+
24
+ # Retry options applied to every Agent Platform client the CLI builds. Leaving
25
+ # http_status_codes unset keeps the SDK's default retryable set (408/429/500/502/503/504);
26
+ # waits are roughly 1s, 2s, 4s, 8s (full-jittered).
27
+ RETRY_OPTIONS: dict[str, Any] = {
28
+ "attempts": 5,
29
+ "initial_delay": 1.0,
30
+ }
31
+
32
+
33
+ class AgentPlatformClient:
34
+ """Agent Platform client configured with CLI-wide defaults (e.g. retries on transient errors).
35
+
36
+ Retries are opt-in in the underlying SDK, so constructing ``agentplatform.Client``
37
+ directly runs without them. A ruff rule enforces using this wrapper instead.
38
+
39
+ Args:
40
+ project: GCP project ID, or None to let the SDK resolve it.
41
+ location: API location (e.g. ``us-east1``), or None.
42
+ api_version: Optional API version override (e.g. ``v1beta1``).
43
+ """
44
+
45
+ def __init__(
46
+ self,
47
+ *,
48
+ project: str | None = None,
49
+ location: str | None = None,
50
+ api_version: str | None = None,
51
+ ) -> None:
52
+ # Lazy: agentplatform is expensive to import, this module is not.
53
+ import agentplatform
54
+
55
+ http_options: dict[str, Any] = {"retry_options": RETRY_OPTIONS}
56
+ if api_version:
57
+ http_options["api_version"] = api_version
58
+
59
+ self._client: agentplatform.Client = agentplatform.Client( # noqa: TID251
60
+ project=project,
61
+ location=location,
62
+ http_options=http_options,
63
+ )
64
+
65
+ def __getattr__(self, name: str) -> Any:
66
+ return getattr(self._client, name)
@@ -50,6 +50,7 @@ class LazyGroup(click.Group):
50
50
  self._lazy_commands: dict[str, tuple[str, str]] = {}
51
51
  # name -> experiment label
52
52
  self._experiment_gates: dict[str, str] = {}
53
+ self._overrides: dict[str, click.Command] = {}
53
54
 
54
55
  def add_lazy_command(
55
56
  self,
@@ -81,12 +82,20 @@ class LazyGroup(click.Group):
81
82
  return bool(resolve_experiment(label))
82
83
 
83
84
  def list_commands(self, ctx: click.Context) -> list[str]:
84
- names = set(super().list_commands(ctx)) | set(self._lazy_commands)
85
+ names = (
86
+ set(super().list_commands(ctx))
87
+ | set(self._lazy_commands)
88
+ | set(self._overrides)
89
+ )
85
90
  return sorted(filter(self._is_visible, names))
86
91
 
87
92
  def get_command(self, ctx: click.Context, cmd_name: str) -> click.Command | None:
93
+ # Overrides are consulted only after the visibility check, so an installed
94
+ # extension cannot expose a command that is gated off.
88
95
  if not self._is_visible(cmd_name):
89
96
  return None
97
+ if cmd_name in self._overrides:
98
+ return self._overrides[cmd_name]
90
99
  if cmd_name in self._lazy_commands and cmd_name not in self.commands:
91
100
  import_path, _ = self._lazy_commands[cmd_name]
92
101
  module_path, attr = import_path.split(":")
@@ -98,6 +107,9 @@ class LazyGroup(click.Group):
98
107
  def format_commands(self, ctx: click.Context, formatter: click.HelpFormatter) -> None:
99
108
  rows: list[tuple[str, str]] = []
100
109
  for name in self.list_commands(ctx):
110
+ if name in self._overrides:
111
+ rows.append((name, self._overrides[name].get_short_help_str(limit=1000)))
112
+ continue
101
113
  if name in self.commands:
102
114
  # Don't truncate — Click's default of 45 would cut our docstring summaries.
103
115
  rows.append((name, self.commands[name].get_short_help_str(limit=1000)))