google-agents-cli 1.7.0__tar.gz → 1.9.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 (361) hide show
  1. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/PKG-INFO +36 -1
  2. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/README.md +35 -0
  3. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/pyproject.toml +5 -1
  4. google_agents_cli-1.9.0/src/google/agents/cli/_agent_platform_types.py +31 -0
  5. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_click.py +65 -0
  6. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_experiments.py +19 -2
  7. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_output.py +18 -10
  8. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_runner.py +37 -2
  9. google_agents_cli-1.9.0/src/google/agents/cli/_telemetry.py +444 -0
  10. google_agents_cli-1.9.0/src/google/agents/cli/_telemetry_worker.py +37 -0
  11. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_tools.py +8 -1
  12. google_agents_cli-1.9.0/src/google/agents/cli/deploy/_agent_engines.py +68 -0
  13. google_agents_cli-1.9.0/src/google/agents/cli/deploy/_cloud_validation.py +576 -0
  14. google_agents_cli-1.9.0/src/google/agents/cli/deploy/_operation.py +512 -0
  15. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/deploy/_utils.py +73 -2
  16. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/deploy/agent_runtime.py +1144 -807
  17. google_agents_cli-1.9.0/src/google/agents/cli/deploy/cloud_run.py +517 -0
  18. google_agents_cli-1.9.0/src/google/agents/cli/deploy/cmd_deploy.py +727 -0
  19. google_agents_cli-1.9.0/src/google/agents/cli/deploy/gke.py +396 -0
  20. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/_events.py +8 -8
  21. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/_live.py +20 -21
  22. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/_synthesize_runner.py +2 -4
  23. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_analyze.py +1 -1
  24. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_generate.py +23 -25
  25. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_grade.py +4 -7
  26. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_metric.py +3 -1
  27. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_submit.py +2 -4
  28. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/eval_utils.py +5 -3
  29. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_overrides.py +16 -7
  30. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/info/cmd_info.py +25 -12
  31. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/_cicd_utils.py +21 -26
  32. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/cmd_cicd.py +29 -43
  33. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/main.py +41 -32
  34. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/publish/cmd_publish.py +0 -164
  35. google_agents_cli-1.9.0/src/google/agents/cli/run/_a2a_pinning.py +196 -0
  36. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/run/cmd_run.py +25 -3
  37. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/.template/templateconfig.yaml +2 -10
  38. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/a2a.py +8 -3
  39. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/.cloudbuild/pr_checks.yaml +4 -4
  40. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/.github/workflows/pr_checks.yaml +1 -1
  41. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/Dockerfile +12 -9
  42. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/README.md +2 -1
  43. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/package-lock.json +2384 -1883
  44. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/package.json +2 -2
  45. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/build_triggers.tf +18 -3
  46. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/iam.tf +12 -9
  47. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/providers.tf +4 -0
  48. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.gitignore +2 -0
  49. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.golangci.yml +3 -0
  50. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry.tf +15 -0
  51. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/completions.sql +13 -4
  52. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/genai_logs_schema.json +16 -0
  53. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry.tf +15 -0
  54. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/.gitignore +2 -0
  55. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/pr_checks.yaml +1 -1
  56. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.env +1 -1
  57. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.env.example +1 -1
  58. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/pr_checks.yaml +1 -1
  59. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.gitignore +1 -0
  60. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry.tf +10 -0
  61. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/completions.sql +10 -0
  62. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/genai_logs_schema.json +2 -1
  63. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry.tf +10 -0
  64. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/pyproject.toml +1 -1
  65. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/staging.yaml +1 -1
  66. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/staging.yaml +1 -1
  67. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.gitignore +1 -0
  68. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/commands/create.py +37 -11
  69. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/commands/enhance.py +8 -15
  70. google_agents_cli-1.9.0/src/google/agents/cli/scaffold/commands/upgrade.py +419 -0
  71. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service.tf +1 -1
  72. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service.tf +1 -1
  73. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/integration/test_server_e2e.py +28 -14
  74. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service.tf +1 -1
  75. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service.tf +1 -1
  76. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/integration/test_server_e2e.py +29 -14
  77. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service.tf +2 -2
  78. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service.tf +1 -1
  79. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/integration/test_server_e2e.py +29 -14
  80. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/integration/test_server_e2e.py +29 -14
  81. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/resources/locks/uv-adk-agent_runtime.lock +681 -660
  82. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/resources/locks/uv-adk-cloud_run.lock +719 -685
  83. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/resources/locks/uv-adk-gke.lock +719 -685
  84. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/copy_files.py +80 -96
  85. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/gcp.py +0 -44
  86. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/merge.py +41 -24
  87. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/symlinks.py +36 -17
  88. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/template.py +15 -21
  89. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/upgrade.py +62 -11
  90. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/SKILL.md +1 -1
  91. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python.md +2 -2
  92. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/samples.md +0 -3
  93. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/SKILL.md +13 -4
  94. google_agents_cli-1.9.0/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cmek.md +112 -0
  95. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/terraform-patterns.md +1 -1
  96. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/SKILL.md +2 -2
  97. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/user-simulation.md +1 -1
  98. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/SKILL.md +10 -8
  99. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-publish/SKILL.md +2 -8
  100. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/SKILL.md +6 -2
  101. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/references/flags.md +1 -1
  102. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/SKILL.md +3 -3
  103. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/internals.md +1 -1
  104. google_agents_cli-1.7.0/src/google/agents/cli/deploy/_operation.py +0 -104
  105. google_agents_cli-1.7.0/src/google/agents/cli/deploy/cmd_deploy.py +0 -1533
  106. google_agents_cli-1.7.0/src/google/agents/cli/scaffold/commands/upgrade.py +0 -190
  107. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/LICENSE +0 -0
  108. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/__init__.py +0 -0
  109. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_adk_client.py +0 -0
  110. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_agent_platform.py +0 -0
  111. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_defaults.py +0 -0
  112. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_gcp_project.py +0 -0
  113. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_modes.py +0 -0
  114. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_project.py +0 -0
  115. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_remote.py +0 -0
  116. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_skills_check.py +0 -0
  117. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/_trust.py +0 -0
  118. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/auth.py +0 -0
  119. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/data/__init__.py +0 -0
  120. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/data/_recipe.py +0 -0
  121. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/data/cmd_data_ingestion.py +0 -0
  122. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/deploy/__init__.py +0 -0
  123. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/dev/__init__.py +0 -0
  124. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/dev/cmd_build.py +0 -0
  125. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/dev/cmd_install.py +0 -0
  126. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/dev/cmd_lint.py +0 -0
  127. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/dev/cmd_playground.py +0 -0
  128. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/__init__.py +0 -0
  129. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/_paths.py +0 -0
  130. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_compare.py +0 -0
  131. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_dataset.py +0 -0
  132. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_eval_group.py +0 -0
  133. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_optimize.py +0 -0
  134. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/cmd_run.py +0 -0
  135. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/eval/optimize_utils.py +0 -0
  136. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/__init__.py +0 -0
  137. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_compat.py +0 -0
  138. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_loader.py +0 -0
  139. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_manifest.py +0 -0
  140. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_paths.py +0 -0
  141. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_refs.py +0 -0
  142. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_resolver.py +0 -0
  143. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_schema.py +0 -0
  144. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_spec.py +0 -0
  145. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_sync.py +0 -0
  146. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/_trust.py +0 -0
  147. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/cmd_extension_add.py +0 -0
  148. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/cmd_extension_group.py +0 -0
  149. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/cmd_extension_list.py +0 -0
  150. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/cmd_extension_remove.py +0 -0
  151. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/extension/cmd_extension_update.py +0 -0
  152. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/info/__init__.py +0 -0
  153. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/__init__.py +0 -0
  154. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/_terraform.py +0 -0
  155. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/cmd_datastore.py +0 -0
  156. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/cmd_infra.py +0 -0
  157. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/cmd_infra_show.py +0 -0
  158. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/infra/cmd_infra_single_project.py +0 -0
  159. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/publish/__init__.py +0 -0
  160. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/publish/cmd_publish_group.py +0 -0
  161. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/run/__init__.py +0 -0
  162. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/run/_local_server.py +0 -0
  163. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/run/_multimodal.py +0 -0
  164. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/__init__.py +0 -0
  165. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/README.md +0 -0
  166. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/app/__init__.py +0 -0
  167. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/app/agent.py +0 -0
  168. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/reasoning_engine_adapter.py +0 -0
  169. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/services.py +0 -0
  170. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/app/fast_api_app.py +0 -0
  171. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/README.md +0 -0
  172. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/basic-dataset.json +0 -0
  173. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/eval_config.yaml +0 -0
  174. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/response_quality.py +0 -0
  175. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk/tests/integration/test_agent.py +0 -0
  176. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/.template/templateconfig.yaml +0 -0
  177. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/Dockerfile +0 -0
  178. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/Makefile +0 -0
  179. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/README.md +0 -0
  180. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/app/agent.go +0 -0
  181. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/app/agent_test.go +0 -0
  182. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo.go +0 -0
  183. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo_test.go +0 -0
  184. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/apploader.go +0 -0
  185. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/appurl.go +0 -0
  186. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/integration/server_e2e_test.go +0 -0
  187. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/.results/.placeholder +0 -0
  188. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/README.md +0 -0
  189. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/load_test.go +0 -0
  190. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/README.md +0 -0
  191. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/basic-dataset.json +0 -0
  192. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/eval_config.yaml +0 -0
  193. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/response_quality.py +0 -0
  194. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/go.mod +0 -0
  195. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/go.sum +0 -0
  196. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/main.go +0 -0
  197. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/observability.go +0 -0
  198. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/observability_test.go +0 -0
  199. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/sessions/sessions.go +0 -0
  200. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_go/{{cookiecutter.agent_guidance_filename}} +0 -0
  201. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/.cloudbuild/pr_checks.yaml +0 -0
  202. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/.github/workflows/pr_checks.yaml +0 -0
  203. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/.template/templateconfig.yaml +0 -0
  204. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/Dockerfile +0 -0
  205. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/Makefile +0 -0
  206. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/README.md +0 -0
  207. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/pom.xml +0 -0
  208. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +0 -0
  209. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Main.java +0 -0
  210. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/integration/ServerE2ETest.java +0 -0
  211. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/.results/.placeholder +0 -0
  212. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/LoadTest.java +0 -0
  213. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/README.md +0 -0
  214. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/unit/AgentTest.java +0 -0
  215. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_java/{{cookiecutter.agent_guidance_filename}} +0 -0
  216. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/.template/templateconfig.yaml +0 -0
  217. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/Makefile +0 -0
  218. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/app/agent.ts +0 -0
  219. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/agent.test.ts +0 -0
  220. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/server_e2e.test.ts +0 -0
  221. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/.results/.placeholder +0 -0
  222. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/README.md +0 -0
  223. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/load_test.ts +0 -0
  224. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/unit/dummy.test.ts +0 -0
  225. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/empty_go/.template/templateconfig.yaml +0 -0
  226. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/empty_java/.template/templateconfig.yaml +0 -0
  227. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/empty_py/.template/templateconfig.yaml +0 -0
  228. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/agents/empty_ts/.template/templateconfig.yaml +0 -0
  229. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +0 -0
  230. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/apis.tf +0 -0
  231. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/github.tf +0 -0
  232. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/locals.tf +0 -0
  233. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/outputs.tf +0 -0
  234. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/service_accounts.tf +0 -0
  235. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/storage.tf +0 -0
  236. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/variables.tf +0 -0
  237. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/vars/env.tfvars +0 -0
  238. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/wif.tf +0 -0
  239. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/apis.tf +0 -0
  240. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/iam.tf +0 -0
  241. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/outputs.tf +0 -0
  242. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/providers.tf +0 -0
  243. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/storage.tf +0 -0
  244. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/variables.tf +0 -0
  245. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/vars/env.tfvars +0 -0
  246. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +0 -0
  247. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/pr_checks.yaml +0 -0
  248. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +0 -0
  249. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.env +0 -0
  250. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.env.example +0 -0
  251. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.gcloudignore +0 -0
  252. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +0 -0
  253. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/pr_checks.yaml +0 -0
  254. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +0 -0
  255. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  256. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  257. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/deploy-to-prod.yaml +0 -0
  258. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/staging.yaml +0 -0
  259. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/.env.example +0 -0
  260. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/.gcloudignore +0 -0
  261. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/deploy-to-prod.yaml +0 -0
  262. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/staging.yaml +0 -0
  263. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/java/src/main/resources/application.properties +0 -0
  264. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/deploy-to-prod.yaml +0 -0
  265. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/staging.yaml +0 -0
  266. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.gcloudignore +0 -0
  267. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/deploy-to-prod.yaml +0 -0
  268. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/staging.yaml +0 -0
  269. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/Dockerfile +0 -0
  270. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/README.md +0 -0
  271. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  272. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  273. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/tests/unit/test_dummy.py +0 -0
  274. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_guidance_filename}} +0 -0
  275. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/deploy-to-prod.yaml +0 -0
  276. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.dockerignore +0 -0
  277. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.env.example +0 -0
  278. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.gcloudignore +0 -0
  279. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/deploy-to-prod.yaml +0 -0
  280. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/eslint.config.mjs +0 -0
  281. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/tsconfig.json +0 -0
  282. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/base_templates/typescript/vitest.config.ts +0 -0
  283. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/cmd_scaffold_group.py +0 -0
  284. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/commands/__init__.py +0 -0
  285. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  286. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/shared/dummy_source.b64 +0 -0
  287. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  288. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment_metadata.json +0 -0
  289. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/.results/.placeholder +0 -0
  290. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/README.md +0 -0
  291. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/load_test.py +0 -0
  292. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +0 -0
  293. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service_outputs.tf +0 -0
  294. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +0 -0
  295. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service_outputs.tf +0 -0
  296. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service.tf +0 -0
  297. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service_outputs.tf +0 -0
  298. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service.tf +0 -0
  299. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service_outputs.tf +0 -0
  300. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service_outputs.tf +0 -0
  301. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service_outputs.tf +0 -0
  302. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/.results/.placeholder +0 -0
  303. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/README.md +0 -0
  304. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/load_test.py +0 -0
  305. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service.tf +0 -0
  306. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service_outputs.tf +0 -0
  307. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service.tf +0 -0
  308. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service_outputs.tf +0 -0
  309. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  310. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  311. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/.results/.placeholder +0 -0
  312. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/README.md +0 -0
  313. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/load_test.py +0 -0
  314. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/.results/.placeholder +0 -0
  315. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/README.md +0 -0
  316. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/load_test.py +0 -0
  317. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/__init__.py +0 -0
  318. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/backup.py +0 -0
  319. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/cli_options.py +0 -0
  320. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/command.py +0 -0
  321. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/fs.py +0 -0
  322. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/generate_locks.py +0 -0
  323. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/generation_metadata.py +0 -0
  324. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/language.py +0 -0
  325. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/lock_utils.py +0 -0
  326. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/logging.py +0 -0
  327. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/remote_template.py +0 -0
  328. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/scaffold/utils/version.py +0 -0
  329. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/setup/__init__.py +0 -0
  330. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/setup/_antigravity.py +0 -0
  331. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/setup/cmd_auth.py +0 -0
  332. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/setup/cmd_setup.py +0 -0
  333. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/setup/cmd_update.py +0 -0
  334. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/__init__.py +0 -0
  335. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/_bundle.py +0 -0
  336. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/README.md +0 -0
  337. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go-workflows.md +0 -0
  338. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go.md +0 -0
  339. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-live.md +0 -0
  340. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-workflows.md +0 -0
  341. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/agent-runtime.md +0 -0
  342. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/batch-inference.md +0 -0
  343. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cicd-pipeline.md +0 -0
  344. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cloud-run.md +0 -0
  345. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/gke.md +0 -0
  346. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/testing-deployed-agents.md +0 -0
  347. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/advanced-commands.md +0 -0
  348. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/builtin-tools-eval.md +0 -0
  349. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/dataset_schema.md +0 -0
  350. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/live-eval.md +0 -0
  351. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/metrics-guide.md +0 -0
  352. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/multimodal-eval.md +0 -0
  353. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/adk-docs.md +0 -0
  354. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/bigquery-agent-analytics.md +0 -0
  355. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/cloud-trace-and-logging.md +0 -0
  356. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/feedback-mechanism.md +0 -0
  357. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/brainstorming.md +0 -0
  358. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/commands.md +0 -0
  359. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/extension.md +0 -0
  360. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/spec-template.md +0 -0
  361. {google_agents_cli-1.7.0 → google_agents_cli-1.9.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/terminology.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-agents-cli
3
- Version: 1.7.0
3
+ Version: 1.9.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
@@ -157,6 +157,8 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
157
157
 
158
158
  </details>
159
159
 
160
+
161
+
160
162
  ## How it works
161
163
 
162
164
  <div align="center">
@@ -206,6 +208,39 @@ The best way to contribute is through feedback: bug reports, feature requests, a
206
208
 
207
209
  See the [contributing guide](CONTRIBUTING.md) for details.
208
210
 
211
+ ## Telemetry
212
+
213
+ By default, `agents-cli` emits a single usage signal per command invocation to help
214
+ improve the tool and better understand how it's used. Each signal
215
+ is a structured log entry written to **your own Google Cloud project**:
216
+ `GOOGLE_CLOUD_PROJECT`, or else the default project of your Application Default
217
+ Credentials (`logName=projects/<project>/logs/agents-cli`), where you can query
218
+ it in Cloud Logging. It records only the metadata such as command name
219
+ (e.g. `deploy`, `scaffold.create`), exit code, error class, duration (measured
220
+ from command dispatch to exit, so it excludes CLI startup), CLI/Python versions,
221
+ and OS — never file contents, arguments, or other input. Commands added by
222
+ extensions are recorded without their names.
223
+
224
+ The request that writes the entry also carries usage metadata in its
225
+ `User-Agent` and `X-Goog-Api-Client` headers, which Google receives for
226
+ agents-cli usage analytics: the CLI and Python versions, the OS and its release,
227
+ the CPU architecture, the command name and a random per-invocation ID. The log
228
+ entry's contents, such as the exit code, error class and duration, stay in your
229
+ project.
230
+
231
+ To opt out of sending telemetry, use one of the following environment variables:
232
+
233
+ ```bash
234
+ # our cli-specific variable
235
+ # 0, false, no, or off (case-insensitive):
236
+ export AGENTS_CLI_TELEMETRY=0
237
+
238
+ # donottrack.sh standard variable
239
+ export DO_NOT_TRACK=1
240
+ ```
241
+
242
+ Use `agents-cli info` to see the current telemetry state.
243
+
209
244
  ## Terms of Service
210
245
 
211
246
  `agents-cli` leverages Google Cloud APIs. When you deploy agents, you'll be deploying resources in your own Google Cloud project and will be responsible for those resources. Please review the [Google Cloud Service Terms](https://cloud.google.com/terms/service-terms) for details.
@@ -116,6 +116,8 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
116
116
 
117
117
  </details>
118
118
 
119
+
120
+
119
121
  ## How it works
120
122
 
121
123
  <div align="center">
@@ -165,6 +167,39 @@ The best way to contribute is through feedback: bug reports, feature requests, a
165
167
 
166
168
  See the [contributing guide](CONTRIBUTING.md) for details.
167
169
 
170
+ ## Telemetry
171
+
172
+ By default, `agents-cli` emits a single usage signal per command invocation to help
173
+ improve the tool and better understand how it's used. Each signal
174
+ is a structured log entry written to **your own Google Cloud project**:
175
+ `GOOGLE_CLOUD_PROJECT`, or else the default project of your Application Default
176
+ Credentials (`logName=projects/<project>/logs/agents-cli`), where you can query
177
+ it in Cloud Logging. It records only the metadata such as command name
178
+ (e.g. `deploy`, `scaffold.create`), exit code, error class, duration (measured
179
+ from command dispatch to exit, so it excludes CLI startup), CLI/Python versions,
180
+ and OS — never file contents, arguments, or other input. Commands added by
181
+ extensions are recorded without their names.
182
+
183
+ The request that writes the entry also carries usage metadata in its
184
+ `User-Agent` and `X-Goog-Api-Client` headers, which Google receives for
185
+ agents-cli usage analytics: the CLI and Python versions, the OS and its release,
186
+ the CPU architecture, the command name and a random per-invocation ID. The log
187
+ entry's contents, such as the exit code, error class and duration, stay in your
188
+ project.
189
+
190
+ To opt out of sending telemetry, use one of the following environment variables:
191
+
192
+ ```bash
193
+ # our cli-specific variable
194
+ # 0, false, no, or off (case-insensitive):
195
+ export AGENTS_CLI_TELEMETRY=0
196
+
197
+ # donottrack.sh standard variable
198
+ export DO_NOT_TRACK=1
199
+ ```
200
+
201
+ Use `agents-cli info` to see the current telemetry state.
202
+
168
203
  ## Terms of Service
169
204
 
170
205
  `agents-cli` leverages Google Cloud APIs. When you deploy agents, you'll be deploying resources in your own Google Cloud project and will be responsible for those resources. Please review the [Google Cloud Service Terms](https://cloud.google.com/terms/service-terms) for details.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "google-agents-cli"
3
- version = "1.7.0"
3
+ version = "1.9.0"
4
4
  description = "Agents CLI — Agent Development Lifecycle toolchain for ADK"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -101,6 +101,9 @@ include = [
101
101
  "tools/**/*.py",
102
102
  # First-party extensions ship real code; lint them like the rest.
103
103
  "extensions/**/*.py",
104
+ # The lift report builder and the eval tools.
105
+ "evals/report/**/*.py",
106
+ "evals/tools/**/*.py",
104
107
  ]
105
108
  exclude = [
106
109
  "src/google/agents/cli/scaffold/agents",
@@ -136,6 +139,7 @@ ignore = ["E501", "C901", "RUF001", "UP036", "RUF067", "RUF069"]
136
139
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
137
140
  "rich.console.Console" = { msg = "Use `google.agents.cli._output.Console` instead to ensure project-wide defaults (soft_wrap=True) are applied." }
138
141
  "agentplatform.Client" = { msg = "Use `google.agents.cli._agent_platform.AgentPlatformClient` instead, so the client retries throttled requests." }
142
+ "agentplatform._genai" = { msg = "Private SDK module that can change without notice. Use `types` from `google.agents.cli._agent_platform_types` for SDK types." }
139
143
 
140
144
  [tool.ruff.lint.pylint]
141
145
  max-positional-args = 5
@@ -0,0 +1,31 @@
1
+ # Copyright 2026 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Agent Platform SDK types, imported through the SDK's public path.
16
+
17
+ Use ``types.EvalCase``, ``types.evals.AgentEvent``, etc. from here rather than
18
+ importing ``agentplatform._genai`` directly.
19
+ """
20
+
21
+ from typing import TYPE_CHECKING
22
+
23
+ if TYPE_CHECKING:
24
+ # The public `agentplatform.types` is served by an untyped module
25
+ # `__getattr__`, which type checkers resolve to Unknown. Point them at the
26
+ # module it returns so the SDK models stay type-checked.
27
+ from agentplatform._genai import types # noqa: TID251
28
+ else:
29
+ from agentplatform import types
30
+
31
+ __all__ = ["types"]
@@ -24,6 +24,20 @@ import click
24
24
 
25
25
  from google.agents.cli._experiments import resolve_experiment
26
26
 
27
+ # Key under which the dispatched subcommand chain is recorded on ``ctx.meta``
28
+ # (root -> leaf, e.g. ``["scaffold", "create"]``). ``ctx.meta`` is shared across
29
+ # the whole context tree, so every level appends to the same list and any
30
+ # context can read the full path. Consumed by ``_telemetry``.
31
+ COMMAND_PATH_META_KEY = "agents_cli.command_path"
32
+ # Set on ``ctx.meta`` once the resolved leaf command actually runs, so a help
33
+ # view (``--help``, or a group given no subcommand) can be told apart from a
34
+ # run. Consumed by ``_telemetry``.
35
+ COMMAND_INVOKED_META_KEY = "agents_cli.command_invoked"
36
+ # Marks a recorded path segment that an extension serves: ``generate~ext`` for
37
+ # an overridden built-in. A command an extension adds is recorded as the bare
38
+ # marker, never by name, since the extension author chose that name.
39
+ EXTENSION_PATH_MARKER = "~ext"
40
+
27
41
 
28
42
  class LazyGroup(click.Group):
29
43
  """Click group that defers importing subcommand modules until needed.
@@ -104,6 +118,33 @@ class LazyGroup(click.Group):
104
118
  self.commands[cmd_name] = cmd
105
119
  return super().get_command(ctx, cmd_name)
106
120
 
121
+ def resolve_command(
122
+ self, ctx: click.Context, args: list[str]
123
+ ) -> tuple[str | None, click.Command | None, list[str]]:
124
+ cmd_name, cmd, rest = super().resolve_command(ctx, args)
125
+ if cmd_name is not None and cmd is not None:
126
+ # Record the dispatched command chain on ctx.meta as Click resolves
127
+ # each level, so we can avoid parsing arguments later. Recorded here
128
+ # rather than in get_command, which also runs for lookups that
129
+ # aren't dispatch (e.g. listing commands for shell completion).
130
+ ctx.meta.setdefault(COMMAND_PATH_META_KEY, []).append(
131
+ self._path_segment(cmd_name)
132
+ )
133
+ _flag_invocation(cmd)
134
+ return cmd_name, cmd, rest
135
+
136
+ def _path_segment(self, cmd_name: str) -> str:
137
+ """The recorded path segment for a dispatched ``cmd_name``.
138
+
139
+ Overrides only apply to built-ins and added commands never share a
140
+ built-in's name, so an extension-served built-in name is an override.
141
+ """
142
+ if cmd_name not in self._overrides:
143
+ return cmd_name
144
+ if cmd_name in self._lazy_commands or cmd_name in self.commands:
145
+ return f"{cmd_name}{EXTENSION_PATH_MARKER}"
146
+ return EXTENSION_PATH_MARKER
147
+
107
148
  def format_commands(self, ctx: click.Context, formatter: click.HelpFormatter) -> None:
108
149
  rows: list[tuple[str, str]] = []
109
150
  for name in self.list_commands(ctx):
@@ -122,6 +163,30 @@ class LazyGroup(click.Group):
122
163
  formatter.write_dl(rows)
123
164
 
124
165
 
166
+ def _flag_invocation(cmd: Any) -> None:
167
+ """Make a leaf command set ``COMMAND_INVOKED_META_KEY`` when it runs.
168
+
169
+ Click handles ``--help`` while parsing arguments and exits before calling
170
+ ``invoke``, so the flag stays unset for help views. Groups only dispatch,
171
+ so they are left alone.
172
+
173
+ This wraps ``invoke`` on the command object itself, which is shared for the
174
+ whole process, the same way ``patch_source_in_help`` wraps
175
+ ``format_epilog``. The ``_invocation_flagged`` marker keeps it idempotent.
176
+ """
177
+ if isinstance(cmd, click.Group) or getattr(cmd, "_invocation_flagged", False):
178
+ return
179
+
180
+ original = cmd.invoke
181
+
182
+ def _invoke(ctx: click.Context) -> Any:
183
+ ctx.meta[COMMAND_INVOKED_META_KEY] = True
184
+ return original(ctx)
185
+
186
+ cmd.invoke = _invoke
187
+ cmd._invocation_flagged = True
188
+
189
+
125
190
  def _source_path(cmd: Any) -> str | None:
126
191
  """Resolve the absolute file path of a command's callback module."""
127
192
  cb = cmd.callback
@@ -31,6 +31,24 @@ _REGISTRY: dict[str, Experiment] = {
31
31
  }
32
32
 
33
33
 
34
+ # String spellings accepted for boolean experiments, e.g. '{"x": "false"}'.
35
+ # bool("false") is True, so strings can't go through the plain type cast.
36
+ _TRUE_STRINGS = frozenset({"1", "true", "yes", "on"})
37
+ _FALSE_STRINGS = frozenset({"0", "false", "no", "off"})
38
+
39
+
40
+ def _cast(exp: Experiment, val: Any) -> Any:
41
+ """Cast an override value to the experiment's type."""
42
+ if exp.value_type is bool and isinstance(val, str):
43
+ normalized = val.strip().lower()
44
+ if normalized in _TRUE_STRINGS:
45
+ return True
46
+ if normalized in _FALSE_STRINGS:
47
+ return False
48
+ raise ValueError(f"expected true/false, 1/0, yes/no or on/off, got {val!r}")
49
+ return exp.value_type(val)
50
+
51
+
34
52
  def resolve_experiment(label: str) -> Any:
35
53
  """Returns the value for the given experiment label."""
36
54
  if label not in _REGISTRY:
@@ -45,8 +63,7 @@ def resolve_experiment(label: str) -> Any:
45
63
  overrides = json.loads(env_val)
46
64
  if label in overrides:
47
65
  val = overrides[label]
48
- # Cast to correct type if necessary
49
- return exp.value_type(val)
66
+ return _cast(exp, val)
50
67
  except Exception as e:
51
68
  logging.warning(
52
69
  f"Failed to apply AGENTS_CLI_EXPERIMENTS override for '{label}', "
@@ -16,15 +16,11 @@
16
16
 
17
17
  import json
18
18
  import sys
19
- from enum import IntEnum
20
19
  from typing import Any
21
20
 
21
+ import click
22
22
  from rich.console import Console as _RichConsole # noqa: TID251
23
-
24
-
25
- class ExitCode(IntEnum):
26
- OK = 0
27
- ERROR = 1
23
+ from rich.markup import escape
28
24
 
29
25
 
30
26
  class Console(_RichConsole):
@@ -40,7 +36,19 @@ def emit(data: dict) -> None:
40
36
  print(json.dumps(data), file=sys.stdout)
41
37
 
42
38
 
43
- def emit_error(msg: str, code: int = ExitCode.ERROR) -> None:
44
- """Write error message to stderr and exit."""
45
- print(json.dumps({"error": msg}), file=sys.stderr)
46
- raise SystemExit(code)
39
+ def print_error(message: str) -> None:
40
+ """Print an error message to stderr with a red "❌ Error:" prefix."""
41
+ # escape() so text like "[cyan]" or "[0]" in the message is shown as-is.
42
+ Console(stderr=True, highlight=False).print(
43
+ f"[bold red]❌ Error:[/bold red] {escape(message)}"
44
+ )
45
+
46
+
47
+ def print_click_exception(e: click.ClickException) -> None:
48
+ """Show a ClickException like Click does, but with a red "❌ Error:" prefix."""
49
+ if isinstance(e, click.UsageError) and e.ctx is not None:
50
+ hint = ""
51
+ if e.ctx.command.get_help_option(e.ctx) is not None:
52
+ hint = f"Try '{e.ctx.command_path} {e.ctx.help_option_names[0]}' for help.\n"
53
+ click.echo(f"{e.ctx.get_usage()}\n{hint}", err=True, color=e.ctx.color)
54
+ print_error(e.format_message())
@@ -14,6 +14,7 @@
14
14
 
15
15
  """Subprocess helpers for agents CLI."""
16
16
 
17
+ import contextlib
17
18
  import io
18
19
  import os
19
20
  import shlex
@@ -222,6 +223,30 @@ def run_extension_command(
222
223
  return result.returncode
223
224
 
224
225
 
226
+ @contextlib.contextmanager
227
+ def _wrap_launch_errors(executable: str | None, args: list[str]):
228
+ """Turn a resolved tool's launch-time OSError into a ToolNotExecutableError.
229
+
230
+ On Windows, shutil.which doesn't check ACLs or security policies, so a
231
+ blocked tool resolves fine and only fails at launch, even with check=False.
232
+ Only ERROR_ACCESS_DENIED maps to PermissionError; policy blocks (e.g.
233
+ WinError 4551 from Application Control) surface as a plain OSError.
234
+ FileNotFoundError and unresolved executables (``executable is None``) keep
235
+ the raw error so callers' own handling still applies.
236
+ """
237
+ try:
238
+ yield
239
+ except FileNotFoundError:
240
+ raise
241
+ except (PermissionError, OSError) as e:
242
+ if executable is None:
243
+ raise
244
+ msg = f"'{executable}' was found at '{args[0]}' but could not be executed: {e}"
245
+ if _tools.is_windows():
246
+ msg += "\n It may be blocked by a security policy (e.g. AppLocker, WDAC, Defender)."
247
+ raise _tools.ToolNotExecutableError(msg) from e
248
+
249
+
225
250
  def run_resolved(
226
251
  args: list[str], *, resolve_executable: bool = True, **kwargs
227
252
  ) -> subprocess.CompletedProcess:
@@ -235,6 +260,8 @@ def run_resolved(
235
260
 
236
261
  Raises:
237
262
  ToolNotFoundError: If resolve_executable is True and the tool cannot be found.
263
+ ToolNotExecutableError: If resolve_executable is True and the OS refuses
264
+ to execute the resolved tool.
238
265
 
239
266
  Returns:
240
267
  CompletedProcess instance.
@@ -242,13 +269,15 @@ def run_resolved(
242
269
  if isinstance(args, str):
243
270
  raise ValueError("args must be a list of strings, not a single string.")
244
271
 
272
+ executable = None
245
273
  if resolve_executable and args:
246
274
  executable = args[0]
247
275
  # Create a shallow copy to avoid modifying the original list passed by reference
248
276
  args = args.copy()
249
277
  args[0] = _tools.require_tool(executable)
250
278
 
251
- return subprocess.run(args, **kwargs)
279
+ with _wrap_launch_errors(executable, args):
280
+ return subprocess.run(args, **kwargs)
252
281
 
253
282
 
254
283
  def popen_resolved(
@@ -264,6 +293,8 @@ def popen_resolved(
264
293
 
265
294
  Raises:
266
295
  ToolNotFoundError: If resolve_executable is True and the tool cannot be found.
296
+ ToolNotExecutableError: If resolve_executable is True and the OS refuses
297
+ to execute the resolved tool.
267
298
 
268
299
  Returns:
269
300
  Popen instance.
@@ -271,13 +302,15 @@ def popen_resolved(
271
302
  if isinstance(args, str):
272
303
  raise ValueError("args must be a list of strings, not a single string.")
273
304
 
305
+ executable = None
274
306
  if resolve_executable and args:
275
307
  executable = args[0]
276
308
  # Create a shallow copy to avoid modifying the original list passed by reference
277
309
  args = args.copy()
278
310
  args[0] = _tools.require_tool(executable)
279
311
 
280
- return subprocess.Popen(args, **kwargs)
312
+ with _wrap_launch_errors(executable, args):
313
+ return subprocess.Popen(args, **kwargs)
281
314
 
282
315
 
283
316
  def popen_resolved_detached(
@@ -298,6 +331,8 @@ def popen_resolved_detached(
298
331
 
299
332
  Raises:
300
333
  ToolNotFoundError: If resolve_executable is True and the tool cannot be found.
334
+ ToolNotExecutableError: If resolve_executable is True and the OS refuses
335
+ to execute the resolved tool.
301
336
 
302
337
  Returns:
303
338
  Popen instance.