google-agents-cli 1.10.0__tar.gz → 1.12.0__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 (371) hide show
  1. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/PKG-INFO +3 -3
  2. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/README.md +2 -2
  3. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/pyproject.toml +1 -1
  4. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_experiments.py +4 -0
  5. google_agents_cli-1.12.0/src/google/agents/cli/_git.py +41 -0
  6. google_agents_cli-1.12.0/src/google/agents/cli/_output.py +167 -0
  7. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_project.py +45 -25
  8. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_remote.py +19 -6
  9. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_skills_check.py +113 -47
  10. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_telemetry.py +3 -2
  11. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_tools.py +58 -3
  12. google_agents_cli-1.12.0/src/google/agents/cli/_uv_index.py +326 -0
  13. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/auth.py +28 -9
  14. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/data/_recipe.py +6 -6
  15. google_agents_cli-1.12.0/src/google/agents/cli/deploy/_agent_identity.py +51 -0
  16. google_agents_cli-1.12.0/src/google/agents/cli/deploy/_build_logs.py +169 -0
  17. google_agents_cli-1.12.0/src/google/agents/cli/deploy/_cloud_validation.py +1011 -0
  18. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/deploy/_operation.py +22 -11
  19. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/deploy/_utils.py +62 -45
  20. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/deploy/agent_runtime.py +151 -95
  21. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/deploy/cloud_run.py +84 -47
  22. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/deploy/cmd_deploy.py +76 -42
  23. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/deploy/gke.py +14 -19
  24. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/dev/cmd_install.py +18 -1
  25. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/dev/cmd_lint.py +14 -1
  26. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/dev/cmd_playground.py +11 -3
  27. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_dataset.py +7 -9
  28. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_generate.py +7 -5
  29. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_grade.py +11 -0
  30. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_optimize.py +6 -2
  31. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_submit.py +3 -2
  32. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/eval_utils.py +8 -13
  33. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_loader.py +14 -6
  34. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_refs.py +32 -3
  35. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_resolver.py +55 -14
  36. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/cmd_extension_add.py +3 -3
  37. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/info/cmd_info.py +34 -2
  38. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/_cicd_utils.py +27 -6
  39. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/cmd_cicd.py +30 -18
  40. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/main.py +4 -1
  41. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/publish/cmd_publish.py +51 -57
  42. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/run/_local_server.py +28 -11
  43. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/run/cmd_run.py +105 -33
  44. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/Dockerfile +6 -2
  45. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/app/agent.go +2 -2
  46. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/app/agent_test.go +1 -1
  47. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/apploader.go +3 -4
  48. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/integration/server_e2e_test.go +19 -6
  49. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/main.go +5 -0
  50. google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_go/sessions/backends.go +31 -0
  51. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/sessions/sessions.go +84 -54
  52. google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_go/sessions/sessions_test.go +54 -0
  53. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/.template/templateconfig.yaml +2 -2
  54. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/app/agent.py +5 -5
  55. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/app/app_utils/reasoning_engine_adapter.py +3 -3
  56. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/app/app_utils/services.py +18 -5
  57. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/app/fast_api_app.py +5 -5
  58. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/tests/integration/test_agent.py +1 -1
  59. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/build_triggers.tf +8 -18
  60. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/github.tf +1 -1
  61. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/iam.tf +3 -1
  62. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/locals.tf +2 -2
  63. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/outputs.tf +1 -1
  64. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/providers.tf +6 -0
  65. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/service_accounts.tf +1 -1
  66. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/variables.tf +2 -2
  67. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/iam.tf +2 -2
  68. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/outputs.tf +1 -1
  69. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/providers.tf +6 -0
  70. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/variables.tf +2 -2
  71. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +1 -1
  72. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/pr_checks.yaml +16 -0
  73. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +20 -2
  74. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/base_templates/python → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/base_templates/go}/.gcloudignore +4 -0
  75. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +1 -1
  76. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +1 -1
  77. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.gitignore +3 -0
  78. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/.gcloudignore +4 -0
  79. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/.gitignore +3 -0
  80. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/deploy-to-prod.yaml +1 -1
  81. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/staging.yaml +1 -1
  82. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/base_templates/python}/.gcloudignore +4 -0
  83. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/deploy-to-prod.yaml +1 -1
  84. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/staging.yaml +1 -1
  85. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.gitignore +6 -0
  86. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/Dockerfile +1 -1
  87. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/pyproject.toml +7 -4
  88. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.gcloudignore +4 -0
  89. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.gitignore +3 -0
  90. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/commands/create.py +301 -223
  91. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/commands/enhance.py +163 -104
  92. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/commands/upgrade.py +103 -22
  93. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service.tf +4 -4
  94. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service.tf +4 -4
  95. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/integration/test_server_e2e.py +11 -8
  96. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/load_test.py +2 -2
  97. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +1 -0
  98. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +1 -0
  99. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service.tf +1 -0
  100. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service.tf +1 -0
  101. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service.tf +1 -0
  102. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service.tf +1 -0
  103. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/deployment_targets/gke → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/deployment_targets/cloud_run}/python/tests/integration/test_server_e2e.py +22 -13
  104. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/README.md +1 -1
  105. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/load_test.py +2 -2
  106. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service.tf +1 -0
  107. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service.tf +1 -0
  108. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service.tf +8 -22
  109. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service.tf +4 -11
  110. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/deployment_targets/none → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/deployment_targets/gke}/python/tests/integration/test_server_e2e.py +22 -13
  111. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/README.md +1 -1
  112. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/load_test.py +2 -2
  113. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/deployment_targets/cloud_run → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/deployment_targets/none}/python/tests/integration/test_server_e2e.py +22 -13
  114. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/README.md +1 -1
  115. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/load_test.py +2 -2
  116. google_agents_cli-1.10.0/src/google/agents/cli/scaffold/resources/locks/uv-adk-agent_runtime.lock → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/resources/locks/uv-adk_python-agent_runtime.lock +487 -419
  117. google_agents_cli-1.10.0/src/google/agents/cli/scaffold/resources/locks/uv-adk-cloud_run.lock → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/resources/locks/uv-adk_python-cloud_run.lock +518 -452
  118. google_agents_cli-1.10.0/src/google/agents/cli/scaffold/resources/locks/uv-adk-gke.lock → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/resources/locks/uv-adk_python-gke.lock +518 -452
  119. google_agents_cli-1.12.0/src/google/agents/cli/scaffold/utils/adk_shortcut.py +140 -0
  120. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/backup.py +2 -1
  121. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/copy_files.py +15 -12
  122. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/fs.py +17 -0
  123. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/gcp.py +2 -4
  124. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/generate_locks.py +14 -2
  125. google_agents_cli-1.12.0/src/google/agents/cli/scaffold/utils/go_overlay.py +451 -0
  126. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/language.py +106 -40
  127. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/merge.py +49 -55
  128. google_agents_cli-1.12.0/src/google/agents/cli/scaffold/utils/remote_template.py +925 -0
  129. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/template.py +458 -174
  130. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/upgrade.py +49 -32
  131. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/setup/cmd_setup.py +16 -25
  132. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/setup/cmd_update.py +1 -1
  133. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/SKILL.md +4 -4
  134. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-live.md +2 -2
  135. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python.md +9 -9
  136. google_agents_cli-1.10.0/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/samples.md → google_agents_cli-1.12.0/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/recipes.md +6 -6
  137. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/SKILL.md +6 -6
  138. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/agent-runtime.md +9 -7
  139. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/testing-deployed-agents.md +1 -1
  140. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/SKILL.md +1 -1
  141. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/SKILL.md +4 -4
  142. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/bigquery-agent-analytics.md +2 -2
  143. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-publish/SKILL.md +1 -1
  144. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/SKILL.md +17 -27
  145. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/references/flags.md +22 -6
  146. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/SKILL.md +10 -10
  147. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/brainstorming.md +9 -9
  148. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/commands.md +1 -1
  149. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/extension.md +1 -1
  150. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/internals.md +1 -1
  151. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/spec-template.md +2 -2
  152. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/terminology.md +1 -1
  153. google_agents_cli-1.10.0/src/google/agents/cli/_output.py +0 -54
  154. google_agents_cli-1.10.0/src/google/agents/cli/deploy/_cloud_validation.py +0 -583
  155. google_agents_cli-1.10.0/src/google/agents/cli/scaffold/utils/remote_template.py +0 -735
  156. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/LICENSE +0 -0
  157. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/__init__.py +0 -0
  158. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_adk_client.py +0 -0
  159. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_agent_platform.py +0 -0
  160. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_agent_platform_types.py +0 -0
  161. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_click.py +0 -0
  162. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_defaults.py +0 -0
  163. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_fs.py +0 -0
  164. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_gcp_project.py +0 -0
  165. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_modes.py +0 -0
  166. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_runner.py +0 -0
  167. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_sdk_compat.py +0 -0
  168. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_telemetry_worker.py +0 -0
  169. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/_trust.py +0 -0
  170. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/data/__init__.py +0 -0
  171. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/data/cmd_data_ingestion.py +0 -0
  172. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/deploy/__init__.py +0 -0
  173. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/dev/__init__.py +0 -0
  174. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/dev/cmd_build.py +0 -0
  175. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/__init__.py +0 -0
  176. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/_events.py +0 -0
  177. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/_live.py +0 -0
  178. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/_paths.py +0 -0
  179. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/_synthesize_runner.py +0 -0
  180. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_analyze.py +0 -0
  181. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_compare.py +0 -0
  182. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_eval_group.py +0 -0
  183. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_metric.py +0 -0
  184. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/cmd_run.py +0 -0
  185. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/eval/optimize_utils.py +0 -0
  186. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/__init__.py +0 -0
  187. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_compat.py +0 -0
  188. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_manifest.py +0 -0
  189. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_overrides.py +0 -0
  190. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_paths.py +0 -0
  191. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_schema.py +0 -0
  192. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_skills.py +0 -0
  193. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_spec.py +0 -0
  194. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_sync.py +0 -0
  195. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/_trust.py +0 -0
  196. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/cmd_extension_group.py +0 -0
  197. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/cmd_extension_list.py +0 -0
  198. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/cmd_extension_remove.py +0 -0
  199. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/extension/cmd_extension_update.py +0 -0
  200. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/info/__init__.py +0 -0
  201. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/__init__.py +0 -0
  202. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/_terraform.py +0 -0
  203. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/cmd_datastore.py +0 -0
  204. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/cmd_infra.py +0 -0
  205. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/cmd_infra_show.py +0 -0
  206. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/infra/cmd_infra_single_project.py +0 -0
  207. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/publish/__init__.py +0 -0
  208. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/publish/cmd_publish_group.py +0 -0
  209. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/run/__init__.py +0 -0
  210. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/run/_a2a_pinning.py +0 -0
  211. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/run/_multimodal.py +0 -0
  212. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/__init__.py +0 -0
  213. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/README.md +0 -0
  214. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/.template/templateconfig.yaml +0 -0
  215. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/Makefile +0 -0
  216. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/README.md +0 -0
  217. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo.go +0 -0
  218. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo_test.go +0 -0
  219. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/appurl.go +0 -0
  220. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/.results/.placeholder +0 -0
  221. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/README.md +0 -0
  222. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/load_test.go +0 -0
  223. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/README.md +0 -0
  224. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk/tests → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_go}/eval/datasets/basic-dataset.json +0 -0
  225. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk/tests → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_go}/eval/eval_config.yaml +0 -0
  226. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk/tests → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_go}/eval/response_quality.py +0 -0
  227. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/go.mod +0 -0
  228. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/go.sum +0 -0
  229. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/observability.go +0 -0
  230. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/observability_test.go +0 -0
  231. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_go/{{cookiecutter.agent_guidance_filename}} +0 -0
  232. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/.cloudbuild/pr_checks.yaml +0 -0
  233. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/.github/workflows/pr_checks.yaml +0 -0
  234. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/.template/templateconfig.yaml +0 -0
  235. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/Dockerfile +0 -0
  236. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/Makefile +0 -0
  237. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/README.md +0 -0
  238. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/pom.xml +0 -0
  239. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +0 -0
  240. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Main.java +0 -0
  241. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/integration/ServerE2ETest.java +0 -0
  242. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/.results/.placeholder +0 -0
  243. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/LoadTest.java +0 -0
  244. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/README.md +0 -0
  245. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/unit/AgentTest.java +0 -0
  246. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_java/{{cookiecutter.agent_guidance_filename}} +0 -0
  247. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/app/__init__.py +0 -0
  248. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/app/app_utils/a2a.py +0 -0
  249. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python}/tests/eval/datasets/README.md +0 -0
  250. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk_go → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python/tests}/eval/datasets/basic-dataset.json +0 -0
  251. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk_go → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python/tests}/eval/eval_config.yaml +0 -0
  252. {google_agents_cli-1.10.0/src/google/agents/cli/scaffold/agents/adk_go → google_agents_cli-1.12.0/src/google/agents/cli/scaffold/agents/adk_python/tests}/eval/response_quality.py +0 -0
  253. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/.cloudbuild/pr_checks.yaml +0 -0
  254. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/.github/workflows/pr_checks.yaml +0 -0
  255. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/.template/templateconfig.yaml +0 -0
  256. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/Dockerfile +0 -0
  257. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/Makefile +0 -0
  258. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/README.md +0 -0
  259. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/app/agent.ts +0 -0
  260. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/package-lock.json +0 -0
  261. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/package.json +0 -0
  262. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/agent.test.ts +0 -0
  263. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/server_e2e.test.ts +0 -0
  264. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/.results/.placeholder +0 -0
  265. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/README.md +0 -0
  266. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/load_test.ts +0 -0
  267. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/unit/dummy.test.ts +0 -0
  268. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/empty_go/.template/templateconfig.yaml +0 -0
  269. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/empty_java/.template/templateconfig.yaml +0 -0
  270. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/empty_py/.template/templateconfig.yaml +0 -0
  271. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/agents/empty_ts/.template/templateconfig.yaml +0 -0
  272. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +0 -0
  273. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/apis.tf +0 -0
  274. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/storage.tf +0 -0
  275. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/vars/env.tfvars +0 -0
  276. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/wif.tf +0 -0
  277. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/apis.tf +0 -0
  278. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/storage.tf +0 -0
  279. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/vars/env.tfvars +0 -0
  280. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.env +0 -0
  281. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.env.example +0 -0
  282. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/pr_checks.yaml +0 -0
  283. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/.golangci.yml +0 -0
  284. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry.tf +0 -0
  285. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  286. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/completions.sql +0 -0
  287. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/genai_logs_schema.json +0 -0
  288. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry.tf +0 -0
  289. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  290. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/deploy-to-prod.yaml +0 -0
  291. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/staging.yaml +0 -0
  292. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/.env.example +0 -0
  293. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/deploy-to-prod.yaml +0 -0
  294. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/staging.yaml +0 -0
  295. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/java/src/main/resources/application.properties +0 -0
  296. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/pr_checks.yaml +0 -0
  297. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.env +0 -0
  298. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.env.example +0 -0
  299. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/pr_checks.yaml +0 -0
  300. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/README.md +0 -0
  301. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry.tf +0 -0
  302. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  303. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/completions.sql +0 -0
  304. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/genai_logs_schema.json +0 -0
  305. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry.tf +0 -0
  306. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  307. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/tests/unit/test_dummy.py +0 -0
  308. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_guidance_filename}} +0 -0
  309. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/deploy-to-prod.yaml +0 -0
  310. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/staging.yaml +0 -0
  311. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.dockerignore +0 -0
  312. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.env.example +0 -0
  313. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/deploy-to-prod.yaml +0 -0
  314. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/staging.yaml +0 -0
  315. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/eslint.config.mjs +0 -0
  316. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/tsconfig.json +0 -0
  317. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/base_templates/typescript/vitest.config.ts +0 -0
  318. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/cmd_scaffold_group.py +0 -0
  319. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/commands/__init__.py +0 -0
  320. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  321. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/shared/dummy_source.b64 +0 -0
  322. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  323. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment_metadata.json +0 -0
  324. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/.results/.placeholder +0 -0
  325. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/README.md +0 -0
  326. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service_outputs.tf +0 -0
  327. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service_outputs.tf +0 -0
  328. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service_outputs.tf +0 -0
  329. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service_outputs.tf +0 -0
  330. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service_outputs.tf +0 -0
  331. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service_outputs.tf +0 -0
  332. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/.results/.placeholder +0 -0
  333. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service_outputs.tf +0 -0
  334. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service_outputs.tf +0 -0
  335. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  336. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  337. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/.results/.placeholder +0 -0
  338. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/.results/.placeholder +0 -0
  339. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/__init__.py +0 -0
  340. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/cli_options.py +0 -0
  341. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/command.py +0 -0
  342. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/generation_metadata.py +0 -0
  343. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/lock_utils.py +0 -0
  344. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/logging.py +0 -0
  345. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/symlinks.py +0 -0
  346. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/scaffold/utils/version.py +0 -0
  347. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/setup/__init__.py +0 -0
  348. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/setup/_antigravity.py +0 -0
  349. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/setup/cmd_auth.py +0 -0
  350. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/__init__.py +0 -0
  351. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/_bundle.py +0 -0
  352. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/README.md +0 -0
  353. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go-workflows.md +0 -0
  354. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go.md +0 -0
  355. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-workflows.md +0 -0
  356. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/batch-inference.md +0 -0
  357. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cicd-pipeline.md +0 -0
  358. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cloud-run.md +0 -0
  359. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cmek.md +0 -0
  360. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/gke.md +0 -0
  361. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/terraform-patterns.md +0 -0
  362. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/advanced-commands.md +0 -0
  363. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/builtin-tools-eval.md +0 -0
  364. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/dataset_schema.md +0 -0
  365. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/live-eval.md +0 -0
  366. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/metrics-guide.md +0 -0
  367. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/multimodal-eval.md +0 -0
  368. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/user-simulation.md +0 -0
  369. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/adk-docs.md +0 -0
  370. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/cloud-trace-and-logging.md +0 -0
  371. {google_agents_cli-1.10.0 → google_agents_cli-1.12.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/feedback-mechanism.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-agents-cli
3
- Version: 1.10.0
3
+ Version: 1.12.0
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
@@ -117,7 +117,7 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
117
117
  | Command | What it does |
118
118
  |---------|-------------|
119
119
  | `agents-cli setup` | Install CLI + skills to coding agents |
120
- | `agents-cli create <name>` | Create a new agent project |
120
+ | `agents-cli create <name> -y` | Create a new agent project with defaults (`adk_python` template, `agent_runtime` target) |
121
121
  | `agents-cli eval run` | Run the agent over the eval dataset and grade the traces |
122
122
  | `agents-cli deploy` | Deploy to Google Cloud |
123
123
  | `agents-cli publish gemini` | Register with Gemini |
@@ -130,7 +130,7 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
130
130
  | `agents-cli login` | Authenticate with Google Cloud or AI Studio |
131
131
  | `agents-cli login --status` | Show authentication status |
132
132
  | **Scaffold** | |
133
- | `agents-cli create <name>` | Create a new agent project |
133
+ | `agents-cli create <name> -y` | Create a new agent project with defaults (`adk_python` template, `agent_runtime` target) |
134
134
  | `agents-cli scaffold enhance` | Add deployment or CI/CD to an existing project |
135
135
  | `agents-cli scaffold upgrade` | Upgrade project to a newer agents-cli version |
136
136
  | **Develop** | |
@@ -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 create <name>` | Create a new agent project |
79
+ | `agents-cli create <name> -y` | Create a new agent project with defaults (`adk_python` template, `agent_runtime` target) |
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` | Register with Gemini |
@@ -89,7 +89,7 @@ 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 create <name>` | Create a new agent project |
92
+ | `agents-cli create <name> -y` | Create a new agent project with defaults (`adk_python` template, `agent_runtime` target) |
93
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** | |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "google-agents-cli"
3
- version = "1.10.0"
3
+ version = "1.12.0"
4
4
  description = "Agents CLI — Agent Development Lifecycle toolchain for ADK"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -28,6 +28,10 @@ class Experiment(NamedTuple):
28
28
  _REGISTRY: dict[str, Experiment] = {
29
29
  # Hides the `build` command until Go (compiled-language) support launches.
30
30
  "build_command": Experiment("build_command", bool, True),
31
+ # Gate in-progress ADK language support until each language launches.
32
+ "adk_java": Experiment("adk_java", bool, False),
33
+ "adk_kotlin": Experiment("adk_kotlin", bool, False),
34
+ "adk_typescript": Experiment("adk_typescript", bool, False),
31
35
  }
32
36
 
33
37
 
@@ -0,0 +1,41 @@
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
+ """Checks for values passed to git as arguments.
16
+
17
+ A value read from a project file or typed by the user can reach git as an
18
+ option (e.g. ``--upload-pack=<cmd>``, which runs a command). Callers check
19
+ values with these before building a git command, and also put ``--`` before
20
+ positional arguments where the git subcommand accepts it.
21
+ """
22
+
23
+ import re
24
+
25
+ # Only a full 40-char SHA is unambiguous. A short/partial hex string could
26
+ # instead be a branch or tag named like hex (e.g. "cafe123").
27
+ _COMMIT_SHA_RE = re.compile(r"[0-9a-f]{40}")
28
+
29
+
30
+ def is_commit_sha(value: str) -> bool:
31
+ """True for a full 40-char lowercase hex commit SHA."""
32
+ # fullmatch, not match with "$": "$" also matches before a trailing newline.
33
+ return bool(_COMMIT_SHA_RE.fullmatch(value))
34
+
35
+
36
+ def is_option_like(value: str) -> bool:
37
+ """True when git would read ``value`` as an option rather than an operand.
38
+
39
+ No valid git ref name starts with "-".
40
+ """
41
+ return value.startswith("-")
@@ -0,0 +1,167 @@
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
+ """Output helpers for agents CLI."""
16
+
17
+ import json
18
+ import logging
19
+ import sys
20
+ from typing import Any
21
+
22
+ import click
23
+ from rich.console import Console as _RichConsole # noqa: TID251
24
+ from rich.markup import escape
25
+
26
+ _OWN_LOGGER_NAME = "google.agents.cli"
27
+ _PLAIN_FORMATTER = logging.Formatter()
28
+
29
+
30
+ class Console(_RichConsole):
31
+ """Rich Console configured with project-wide defaults (soft_wrap=True)."""
32
+
33
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
34
+ kwargs.setdefault("soft_wrap", True)
35
+ super().__init__(*args, **kwargs)
36
+
37
+
38
+ def emit(data: dict) -> None:
39
+ """Write structured data to stdout."""
40
+ print(json.dumps(data), file=sys.stdout)
41
+
42
+
43
+ def print_error(message: str) -> None:
44
+ """Print an error message to stderr with a red "❌ Error:" prefix."""
45
+ # escape() so text like "[cyan]" or "[0]" in the message is shown as-is.
46
+ Console(stderr=True, highlight=False).print(
47
+ f"[bold red]❌ Error:[/bold red] {escape(message)}"
48
+ )
49
+
50
+
51
+ def print_warning(message: str) -> None:
52
+ """Print a warning message to stderr with a yellow "⚠️ Warning:" prefix."""
53
+ Console(stderr=True, highlight=False).print(
54
+ f"[bold yellow]⚠️ Warning:[/bold yellow] {escape(message)}"
55
+ )
56
+
57
+
58
+ INTERACTIVE_FIX = ("-i, --interactive", "be prompted for each missing value")
59
+
60
+
61
+ def auto_approve_fix(default: str) -> tuple[str, str]:
62
+ """The -y entry for programmatic_mode_error; ``default`` names what -y picks."""
63
+ return ("-y, --yes", f"accept the defaults ({default})")
64
+
65
+
66
+ def programmatic_mode_error(
67
+ requirement: str, *fixes: tuple[str, str]
68
+ ) -> click.UsageError:
69
+ """Build the error for a value a command can't fill in without prompting.
70
+
71
+ ``requirement`` is the subject, e.g. "--agent is required"; each fix is a
72
+ (flag, description) pair, and an empty flag continues the fix above. Every
73
+ fix gets its own aligned line: a trailing "pass -i for interactive mode"
74
+ sentence was easy to miss.
75
+ """
76
+ if not fixes:
77
+ return click.UsageError(f"{requirement} in programmatic mode.")
78
+ width = max(len(flag) for flag, _ in fixes)
79
+ lines = "\n".join(f" {flag:<{width}} {text}" for flag, text in fixes)
80
+ return click.UsageError(
81
+ f"{requirement} in programmatic mode. Rerun with one of:\n{lines}"
82
+ )
83
+
84
+
85
+ def print_debug(message: str) -> None:
86
+ """Print a debug message to stderr as a dim "Debug: <message>" line."""
87
+ Console(stderr=True, highlight=False).print(f"Debug: {escape(message)}", style="dim")
88
+
89
+
90
+ def print_click_exception(e: click.ClickException) -> None:
91
+ """Show a ClickException like Click does, but with a red "❌ Error:" prefix."""
92
+ if isinstance(e, click.UsageError) and e.ctx is not None:
93
+ hint = ""
94
+ if e.ctx.command.get_help_option(e.ctx) is not None:
95
+ hint = f"Try '{e.ctx.command_path} {e.ctx.help_option_names[0]}' for help.\n"
96
+ click.echo(f"{e.ctx.get_usage()}\n{hint}", err=True, color=e.ctx.color)
97
+ print_error(e.format_message())
98
+
99
+
100
+ def configure_logging(level: int = logging.INFO) -> None:
101
+ """Send log records to stderr, formatting agents-cli's own records.
102
+
103
+ agents-cli's own records are shown from ``level`` up. Records from libraries
104
+ are shown from WARNING up (or from ``level``, if it is higher), except at
105
+ DEBUG, where they are shown too. agents-cli's own errors, warnings and debug
106
+ records get the print_error() / print_warning() / print_debug() format;
107
+ everything else is printed plain.
108
+ """
109
+ root = logging.getLogger()
110
+ for handler in [h for h in root.handlers if isinstance(h, _CliLogHandler)]:
111
+ root.removeHandler(handler)
112
+
113
+ debug = level <= logging.DEBUG
114
+ library_level = level if debug else max(level, logging.WARNING)
115
+ handler = _CliLogHandler()
116
+ handler.setFormatter(
117
+ logging.Formatter(logging.BASIC_FORMAT if debug else "%(message)s")
118
+ )
119
+ handler.addFilter(lambda r: _is_own_record(r) or r.levelno >= library_level)
120
+ root.addHandler(handler)
121
+ root.setLevel(level)
122
+ # On its first request, google-auth turns off propagation on the "google"
123
+ # logger unless that logger is already configured
124
+ # (google.auth._helpers.is_logging_enabled). That would cut every google.*
125
+ # logger, ours included, off from the handler above. A level counts as
126
+ # configured. At DEBUG, google-auth then logs its requests; their headers
127
+ # (with tokens) go in the record's extra fields, which this format doesn't
128
+ # print.
129
+ logging.getLogger("google").setLevel(level)
130
+
131
+
132
+ class _CliLogHandler(logging.Handler):
133
+ def emit(self, record: logging.LogRecord) -> None:
134
+ try:
135
+ printer = _OWN_RECORD_PRINTERS.get(record.levelno)
136
+ if printer and _is_own_record(record):
137
+ printer(_PLAIN_FORMATTER.format(record))
138
+ else:
139
+ # click.echo looks up sys.stderr on every call, so output still
140
+ # reaches a stream swapped in later (e.g. by CliRunner).
141
+ click.echo(self.format(record), err=True)
142
+ except Exception:
143
+ self.handleError(record)
144
+
145
+
146
+ def _is_own_record(record: logging.LogRecord) -> bool:
147
+ # agents-cli code mostly calls logging.warning() etc. directly, which logs
148
+ # on the root logger.
149
+ return (
150
+ record.name == "root"
151
+ or record.name == _OWN_LOGGER_NAME
152
+ or record.name.startswith(_OWN_LOGGER_NAME + ".")
153
+ )
154
+
155
+
156
+ def _print_plain(message: str) -> None:
157
+ # Our INFO lines stay plain, without the debug-mode "INFO:root:" prefix.
158
+ click.echo(message, err=True)
159
+
160
+
161
+ _OWN_RECORD_PRINTERS = {
162
+ logging.CRITICAL: print_error,
163
+ logging.ERROR: print_error,
164
+ logging.WARNING: print_warning,
165
+ logging.INFO: _print_plain,
166
+ logging.DEBUG: print_debug,
167
+ }
@@ -22,7 +22,7 @@ import re
22
22
  import tomllib
23
23
  from collections.abc import Mapping
24
24
  from dataclasses import dataclass
25
- from pathlib import Path
25
+ from pathlib import Path, PurePosixPath
26
26
  from typing import Any
27
27
 
28
28
  import click
@@ -32,6 +32,9 @@ import yaml
32
32
  # ADK; new projects get the value from their template.
33
33
  DEFAULT_FRAMEWORK = "google-adk"
34
34
 
35
+ # Base template used when a project does not name one. `adk` is an alias for it.
36
+ DEFAULT_BASE_TEMPLATE = "adk_python"
37
+
35
38
  # Values of create_params.agent_runtime.identity_default.
36
39
  AGENT_IDENTITY = "agent_identity"
37
40
  SERVICE_ACCOUNT = "service_account"
@@ -43,6 +46,23 @@ NESTED_CREATE_PARAMS = {
43
46
  "agent_runtime_identity_default": ("agent_runtime", "identity_default"),
44
47
  }
45
48
 
49
+ # The create commands shown when a command runs outside a project, indented to
50
+ # sit under a "create a project first:" line.
51
+ CREATE_PROJECT_HINT = (
52
+ " agents-cli create my-agent -i # choose options in prompts\n"
53
+ " agents-cli create my-agent -y # accept the defaults (adk_python template, agent_runtime target)"
54
+ )
55
+
56
+
57
+ def agent_package_name(agent_directory: str) -> str:
58
+ """Return the package name (basename) of ``agent_directory``."""
59
+ return PurePosixPath(agent_directory).name
60
+
61
+
62
+ def agents_root(agent_directory: str) -> str:
63
+ """Return the parent of ``agent_directory``, ``.`` for a top-level one."""
64
+ return PurePosixPath(agent_directory).parent.as_posix()
65
+
46
66
 
47
67
  @dataclass
48
68
  class ProjectConfig:
@@ -53,9 +73,11 @@ class ProjectConfig:
53
73
  agent_directory: str = "app"
54
74
  is_a2a: bool = False
55
75
  region: str = "us-east1"
56
- base_template: str = "adk"
76
+ base_template: str = DEFAULT_BASE_TEMPLATE
57
77
  acli_version: str = ""
58
- language: str = "python"
78
+ # The manifest's language as written; None when it has no language key.
79
+ # Read `language` unless you need to tell "unset" apart from "python".
80
+ raw_language: str | None = None
59
81
  framework: str = DEFAULT_FRAMEWORK
60
82
  session_type: str = "none"
61
83
  cicd_runner: str = "skip"
@@ -66,6 +88,10 @@ class ProjectConfig:
66
88
  # name"; see resolve_root_agent_name.
67
89
  root_agent_name: str = ""
68
90
 
91
+ @property
92
+ def language(self) -> str:
93
+ return self.raw_language or "python"
94
+
69
95
  @property
70
96
  def create_params(self) -> dict[str, Any]:
71
97
  return {
@@ -97,7 +123,7 @@ class ProjectConfig:
97
123
  cfg.acli_version = (
98
124
  data.get("acli_version") or data.get("version") or cfg.acli_version
99
125
  )
100
- cfg.language = data.get("language", cfg.language)
126
+ cfg.raw_language = data.get("language")
101
127
  cfg.framework = data.get("framework", cfg.framework)
102
128
 
103
129
  create_params = data.get("create_params")
@@ -146,16 +172,9 @@ def _warn_legacy_config() -> None:
146
172
  """Warn about legacy configuration once."""
147
173
  global _WARNED_LEGACY_CONFIG
148
174
  if not _WARNED_LEGACY_CONFIG:
149
- click.secho(
150
- "\n⚠️ Legacy configuration detected in pyproject.toml.",
151
- fg="yellow",
152
- bold=True,
153
- err=True,
154
- )
155
- click.secho(
156
- " Run `agents-cli scaffold upgrade` to migrate to agents-cli-manifest.yaml.\n",
157
- fg="yellow",
158
- err=True,
175
+ logging.warning(
176
+ "Legacy configuration detected in pyproject.toml. Run "
177
+ "`agents-cli scaffold upgrade` to migrate to agents-cli-manifest.yaml."
159
178
  )
160
179
  _WARNED_LEGACY_CONFIG = True
161
180
 
@@ -257,18 +276,19 @@ def check_cli_version(cfg: ProjectConfig) -> None:
257
276
  return
258
277
 
259
278
  if cli_ver < project_ver:
260
- click.echo(
261
- f"\n⚠️ Version mismatch: project was scaffolded with agents-cli {acli_version},"
262
- f" running {__version__}.\n"
263
- f" Upgrade the CLI: uv tool install google-agents-cli@{acli_version}\n",
264
- err=True,
279
+ logging.warning(
280
+ "Version mismatch: project was scaffolded with agents-cli %s, running "
281
+ "%s. Upgrade the CLI: uv tool install google-agents-cli@%s",
282
+ acli_version,
283
+ __version__,
284
+ acli_version,
265
285
  )
266
286
  elif cli_ver > project_ver:
267
- click.echo(
268
- f"\n⚠️ Version mismatch: project was scaffolded with agents-cli {acli_version},"
269
- f" running {__version__}.\n"
270
- " Upgrade the project: agents-cli scaffold upgrade\n",
271
- err=True,
287
+ logging.warning(
288
+ "Version mismatch: project was scaffolded with agents-cli %s, running "
289
+ "%s. Upgrade the project: agents-cli scaffold upgrade",
290
+ acli_version,
291
+ __version__,
272
292
  )
273
293
 
274
294
 
@@ -351,7 +371,7 @@ def chdir_project_root(dir: Path | None = None) -> None:
351
371
  raise click.ClickException(
352
372
  "No agents-cli-manifest.yaml found in the current directory or its parents.\n"
353
373
  " Run this command from your project root, or create a project first:\n"
354
- " agents-cli create my-agent"
374
+ f"{CREATE_PROJECT_HINT}"
355
375
  )
356
376
  # Only announce the root when we actually move (i.e. run from a subdir).
357
377
  if root.resolve() != Path.cwd().resolve():
@@ -20,6 +20,8 @@ how a ``--url`` is classified and what auth token it gets.
20
20
 
21
21
  from __future__ import annotations
22
22
 
23
+ import ipaddress
24
+ import logging
23
25
  import re
24
26
  from typing import NamedTuple
25
27
  from urllib.parse import urlparse, urlsplit, urlunsplit
@@ -155,12 +157,13 @@ def build_remote_headers(
155
157
 
156
158
  Uses an **access token** for Gemini platform / Agent Runtime URLs and an
157
159
  **identity token** (with the service URL as audience) for everything
158
- else (Cloud Run, GKE, etc.).
160
+ else (Cloud Run, GKE, etc.). Loopback URLs (the local dev server) get
161
+ no token.
159
162
  """
160
163
  headers: dict[str, str] = {"Content-Type": "application/json"}
161
164
  parsed = dict(_parse_header(h) for h in custom_headers)
162
165
 
163
- if "Authorization" not in parsed:
166
+ if "Authorization" not in parsed and not _is_loopback_url(url):
164
167
  try:
165
168
  if is_agent_runtime_url(url):
166
169
  token = get_access_token()
@@ -170,10 +173,20 @@ def build_remote_headers(
170
173
  token = get_id_token(audience)
171
174
  headers["Authorization"] = f"Bearer {token}"
172
175
  except Exception as exc:
173
- click.echo(
174
- f"Warning: Could not obtain credentials: {exc}",
175
- err=True,
176
- )
176
+ logging.warning("Could not obtain credentials: %s", exc)
177
177
 
178
178
  headers.update(parsed)
179
179
  return headers
180
+
181
+
182
+ def _is_loopback_url(url: str) -> bool:
183
+ host = urlparse(url).hostname or ""
184
+ # *.localhost always resolves to loopback (RFC 6761).
185
+ if host == "localhost" or host.endswith(".localhost"):
186
+ return True
187
+ try:
188
+ ip = ipaddress.ip_address(host)
189
+ except ValueError:
190
+ return False
191
+ # 0.0.0.0 / :: is what local servers print as their bind address.
192
+ return ip.is_loopback or ip.is_unspecified
@@ -18,10 +18,10 @@ from __future__ import annotations
18
18
 
19
19
  import logging
20
20
  import os
21
+ import subprocess
21
22
  import time
22
23
  from pathlib import Path
23
24
 
24
- import click
25
25
  import yaml
26
26
 
27
27
  # Pin the skills npm package to avoid executing an unverified version.
@@ -61,16 +61,70 @@ def _parse_skill_version(skill_md: Path) -> str | None:
61
61
  return str(version) if version else None
62
62
 
63
63
 
64
- def _find_installed_skills() -> dict[str, str]:
64
+ def list_skills_all_scopes() -> list[dict]:
65
+ """Return ``npx skills list --json`` entries for project and global scope.
66
+
67
+ ``skills list`` without ``-g`` only reports project-scoped skills and
68
+ ``-g`` only reports global ones, so both are queried and merged. Entries
69
+ that share a path are reported once: run from the home directory, the
70
+ project store (``~/.agents/skills``) is also the global store.
71
+
72
+ Raises ``subprocess.CalledProcessError`` if the project query exits
73
+ non-zero, or ``ValueError`` if its output is not a JSON list. If only the
74
+ global query fails, the project entries are returned and a warning is
75
+ logged.
76
+ """
77
+ import json
78
+
79
+ from google.agents.cli._runner import run_resolved
80
+
81
+ entries: list[dict] = []
82
+ seen_paths: set[str] = set()
83
+ # Sequential on purpose: concurrent `npx -y` runs race on the shared npm
84
+ # cache when the package isn't downloaded yet.
85
+ for scope_args in ([], ["-g"]):
86
+ cmd = ["npx", "-y", SKILLS_NPX_PACKAGE, "list", *scope_args, "--json"]
87
+ try:
88
+ proc = run_resolved(
89
+ cmd,
90
+ capture_output=True,
91
+ text=True,
92
+ encoding="utf-8",
93
+ errors="replace",
94
+ timeout=15,
95
+ )
96
+ proc.check_returncode()
97
+ data = json.loads(proc.stdout)
98
+ if not isinstance(data, list):
99
+ raise ValueError(f"expected a JSON list, got {type(data).__name__}")
100
+ except (subprocess.SubprocessError, ValueError) as e:
101
+ if not scope_args:
102
+ raise
103
+ logging.warning(
104
+ "Could not list global skills; using project skills only: %s", e
105
+ )
106
+ continue
107
+ for entry in data:
108
+ path = entry.get("path") if isinstance(entry, dict) else None
109
+ if path in seen_paths:
110
+ continue
111
+ if path:
112
+ seen_paths.add(path)
113
+ entries.append(entry)
114
+ return entries
115
+
116
+
117
+ def _find_installed_skills() -> dict[str, str] | None:
65
118
  """Return ``{skill_name: version}`` for every installed agents-cli skill.
66
119
 
67
120
  Fast path (~8 ms): scan ``~/.agents/skills/google-agents-cli-*/SKILL.md``
68
- directly. Falls back to ``npx skills list --json`` (~400 ms+) if
121
+ directly. Falls back to ``npx skills list [-g] --json`` (~800 ms+) if
69
122
  the well-known directory is empty or missing, which is more robust
70
123
  when skills are installed to a non-default location.
71
- """
72
- import json
73
124
 
125
+ Returns ``None`` if the npx query fails, so callers can tell "no skills
126
+ installed" apart from "could not check".
127
+ """
74
128
  result: dict[str, str] = {}
75
129
 
76
130
  # Fast path: well-known global install location
@@ -88,25 +142,15 @@ def _find_installed_skills() -> dict[str, str]:
88
142
 
89
143
  # Slow path: ask npx skills for actual install locations
90
144
  try:
91
- from google.agents.cli._runner import run_resolved
92
-
93
- proc = run_resolved(
94
- ["npx", "-y", SKILLS_NPX_PACKAGE, "list", "--json"],
95
- capture_output=True,
96
- text=True,
97
- encoding="utf-8",
98
- errors="replace",
99
- timeout=15,
100
- )
101
- if proc.returncode != 0:
102
- return {}
103
- entries = json.loads(proc.stdout)
145
+ entries = list_skills_all_scopes()
146
+ except subprocess.CalledProcessError:
147
+ return None
104
148
  except Exception as e:
105
149
  # Broad by design: this freshness check runs on every CLI invocation and
106
- # must never abort a user's command, so any failure degrades to "no skills
107
- # found" rather than propagating.
150
+ # must never abort a user's command, so any failure degrades to "could
151
+ # not check" rather than propagating.
108
152
  logging.warning("Could not query installed skills via npx: %s", e)
109
- return {}
153
+ return None
110
154
 
111
155
  for entry in entries:
112
156
  if not isinstance(entry, dict):
@@ -132,31 +176,50 @@ def get_installed_skills() -> list[dict] | None:
132
176
 
133
177
  Returns None if the query fails.
134
178
  """
135
- import json
136
-
137
179
  try:
138
- from google.agents.cli._runner import run_resolved
139
-
140
- result = run_resolved(
141
- ["npx", "-y", SKILLS_NPX_PACKAGE, "list", "--json"],
142
- capture_output=True,
143
- text=True,
144
- timeout=15,
145
- )
146
- if result.returncode != 0:
147
- logging.warning(
148
- "npx skills list failed (exit %d): %s",
149
- result.returncode,
150
- result.stderr.strip(),
151
- )
152
- return None
153
- skills = json.loads(result.stdout)
180
+ skills = list_skills_all_scopes()
154
181
  return [s for s in skills if s.get("name", "").startswith("google-agents-cli-")]
182
+ except subprocess.CalledProcessError as e:
183
+ logging.warning(
184
+ "npx skills list failed (exit %d): %s",
185
+ e.returncode,
186
+ (e.stderr or "").strip(),
187
+ )
188
+ return None
155
189
  except Exception as e:
156
190
  logging.warning("Could not query installed skills: %s", e)
157
191
  return None
158
192
 
159
193
 
194
+ def find_parent_workspace_skills(start: Path) -> Path | None:
195
+ """Return the nearest parent of ``start`` with workspace-scope agents-cli skills.
196
+
197
+ ``agents-cli setup --workspace`` installs skills relative to the directory it
198
+ ran in, and coding agents started in a subdirectory (e.g. a project created
199
+ there) may not load them. Returns ``None`` when ``start`` has its own
200
+ workspace skills or no parent has any. The home directory is skipped because
201
+ ``~/.agents/skills`` is the global store, which agents load from anywhere.
202
+ """
203
+ start = start.resolve()
204
+ if _has_workspace_skills(start):
205
+ return None
206
+ home = Path.home().resolve()
207
+ for parent in start.parents:
208
+ if parent != home and _has_workspace_skills(parent):
209
+ return parent
210
+ return None
211
+
212
+
213
+ def _has_workspace_skills(directory: Path) -> bool:
214
+ skills_dir = directory / ".agents" / "skills"
215
+ try:
216
+ return any(
217
+ (d / "SKILL.md").is_file() for d in skills_dir.glob("google-agents-cli-*")
218
+ )
219
+ except OSError:
220
+ return False
221
+
222
+
160
223
  def _is_ci() -> bool:
161
224
  """Return True when running in a CI/automation environment.
162
225
 
@@ -202,22 +265,25 @@ def check_skills_version() -> None:
202
265
  return
203
266
 
204
267
  installed = _find_installed_skills()
268
+ if installed is None:
269
+ # The query failed: don't record the stamp, so the next command retries.
270
+ return
271
+
272
+ _record_skills_check()
205
273
  if not installed:
206
274
  return
207
275
 
208
276
  from google.agents.cli import __version__
209
277
 
210
- _record_skills_check()
211
-
212
278
  mismatched = {name: ver for name, ver in installed.items() if ver != __version__}
213
279
  if not mismatched:
214
280
  return
215
281
 
216
282
  lines = [f" - {name} (v{ver})" for name, ver in mismatched.items()]
217
- click.echo(
218
- f"\n⚠️ Skills version mismatch — CLI is v{__version__}, "
219
- f"but {len(mismatched)} skill(s) differ:\n"
220
- + "\n".join(lines)
221
- + "\n Run 'agents-cli update' to sync.\n",
222
- err=True,
283
+ logging.warning(
284
+ "Skills version mismatch — CLI is v%s, but %d skill(s) differ:\n%s\n"
285
+ "Run 'agents-cli update' to sync.",
286
+ __version__,
287
+ len(mismatched),
288
+ "\n".join(lines),
223
289
  )