google-agents-cli 1.6.1__tar.gz → 1.8.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 (355) hide show
  1. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/PKG-INFO +39 -1
  2. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/README.md +38 -0
  3. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/pyproject.toml +4 -1
  4. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_adk_client.py +86 -15
  5. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_click.py +65 -0
  6. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_experiments.py +22 -2
  7. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_modes.py +0 -2
  8. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_output.py +18 -10
  9. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_project.py +6 -0
  10. google_agents_cli-1.8.0/src/google/agents/cli/_telemetry.py +461 -0
  11. google_agents_cli-1.8.0/src/google/agents/cli/_telemetry_worker.py +37 -0
  12. google_agents_cli-1.8.0/src/google/agents/cli/deploy/_operation.py +512 -0
  13. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/deploy/agent_runtime.py +436 -301
  14. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/deploy/cmd_deploy.py +119 -64
  15. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/dev/cmd_playground.py +1 -16
  16. google_agents_cli-1.8.0/src/google/agents/cli/eval/_events.py +116 -0
  17. google_agents_cli-1.8.0/src/google/agents/cli/eval/_live.py +325 -0
  18. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_generate.py +94 -121
  19. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_run.py +13 -0
  20. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_overrides.py +6 -7
  21. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/info/cmd_info.py +32 -12
  22. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/_cicd_utils.py +21 -26
  23. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/cmd_cicd.py +29 -43
  24. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/main.py +39 -4
  25. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/publish/cmd_publish.py +3 -166
  26. google_agents_cli-1.8.0/src/google/agents/cli/run/_a2a_pinning.py +196 -0
  27. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/run/_local_server.py +29 -20
  28. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/run/cmd_run.py +216 -55
  29. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/.template/templateconfig.yaml +2 -10
  30. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/package-lock.json +3 -515
  31. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +1 -0
  32. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/build_triggers.tf +18 -3
  33. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/iam.tf +12 -9
  34. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/providers.tf +5 -1
  35. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/variables.tf +8 -0
  36. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/providers.tf +1 -1
  37. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/variables.tf +9 -0
  38. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.gitignore +2 -0
  39. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/.gitignore +2 -0
  40. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.gitignore +1 -0
  41. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.gitignore +1 -0
  42. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/commands/create.py +454 -346
  43. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/commands/enhance.py +25 -39
  44. google_agents_cli-1.8.0/src/google/agents/cli/scaffold/commands/upgrade.py +419 -0
  45. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service.tf +2 -1
  46. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service.tf +2 -1
  47. google_agents_cli-1.8.0/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment_metadata.json +4 -0
  48. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service.tf +10 -5
  49. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service.tf +10 -5
  50. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service.tf +19 -11
  51. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service.tf +15 -8
  52. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/resources/locks/uv-adk-agent_runtime.lock +174 -188
  53. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/resources/locks/uv-adk-cloud_run.lock +174 -194
  54. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/resources/locks/uv-adk-gke.lock +174 -194
  55. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/backup.py +4 -8
  56. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/cli_options.py +10 -0
  57. google_agents_cli-1.8.0/src/google/agents/cli/scaffold/utils/copy_files.py +427 -0
  58. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/fs.py +23 -0
  59. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/merge.py +48 -31
  60. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/remote_template.py +21 -6
  61. google_agents_cli-1.8.0/src/google/agents/cli/scaffold/utils/symlinks.py +146 -0
  62. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/template.py +26 -285
  63. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/upgrade.py +62 -11
  64. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/SKILL.md +2 -1
  65. google_agents_cli-1.8.0/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-live.md +753 -0
  66. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-workflows.md +1 -1
  67. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python.md +21 -0
  68. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/SKILL.md +8 -4
  69. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/agent-runtime.md +6 -2
  70. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/gke.md +3 -0
  71. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/terraform-patterns.md +1 -1
  72. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/SKILL.md +17 -4
  73. google_agents_cli-1.8.0/src/google/agents/cli/skills/data/google-agents-cli-eval/references/live-eval.md +54 -0
  74. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/SKILL.md +10 -8
  75. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-publish/SKILL.md +4 -9
  76. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/SKILL.md +11 -3
  77. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/SKILL.md +7 -6
  78. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/internals.md +1 -1
  79. google_agents_cli-1.6.1/src/google/agents/cli/deploy/_operation.py +0 -92
  80. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/commands/upgrade.py +0 -189
  81. google_agents_cli-1.6.1/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment_metadata.json +0 -4
  82. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/LICENSE +0 -0
  83. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/__init__.py +0 -0
  84. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_agent_platform.py +0 -0
  85. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_defaults.py +0 -0
  86. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_gcp_project.py +0 -0
  87. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_remote.py +0 -0
  88. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_runner.py +0 -0
  89. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_skills_check.py +0 -0
  90. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_tools.py +0 -0
  91. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/_trust.py +0 -0
  92. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/auth.py +0 -0
  93. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/data/__init__.py +0 -0
  94. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/data/_recipe.py +0 -0
  95. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/data/cmd_data_ingestion.py +0 -0
  96. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/deploy/__init__.py +0 -0
  97. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/deploy/_utils.py +0 -0
  98. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/dev/__init__.py +0 -0
  99. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/dev/cmd_build.py +0 -0
  100. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/dev/cmd_install.py +0 -0
  101. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/dev/cmd_lint.py +0 -0
  102. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/__init__.py +0 -0
  103. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/_paths.py +0 -0
  104. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/_synthesize_runner.py +0 -0
  105. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_analyze.py +0 -0
  106. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_compare.py +0 -0
  107. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_dataset.py +0 -0
  108. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_eval_group.py +0 -0
  109. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_grade.py +0 -0
  110. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_metric.py +0 -0
  111. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_optimize.py +0 -0
  112. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/cmd_submit.py +0 -0
  113. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/eval_utils.py +0 -0
  114. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/eval/optimize_utils.py +0 -0
  115. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/__init__.py +0 -0
  116. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_compat.py +0 -0
  117. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_loader.py +0 -0
  118. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_manifest.py +0 -0
  119. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_paths.py +0 -0
  120. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_refs.py +0 -0
  121. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_resolver.py +0 -0
  122. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_schema.py +0 -0
  123. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_spec.py +0 -0
  124. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_sync.py +0 -0
  125. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/_trust.py +0 -0
  126. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/cmd_extension_add.py +0 -0
  127. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/cmd_extension_group.py +0 -0
  128. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/cmd_extension_list.py +0 -0
  129. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/cmd_extension_remove.py +0 -0
  130. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/extension/cmd_extension_update.py +0 -0
  131. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/info/__init__.py +0 -0
  132. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/__init__.py +0 -0
  133. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/_terraform.py +0 -0
  134. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/cmd_datastore.py +0 -0
  135. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/cmd_infra.py +0 -0
  136. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/cmd_infra_show.py +0 -0
  137. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/infra/cmd_infra_single_project.py +0 -0
  138. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/publish/__init__.py +0 -0
  139. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/publish/cmd_publish_group.py +0 -0
  140. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/run/__init__.py +0 -0
  141. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/run/_multimodal.py +0 -0
  142. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/__init__.py +0 -0
  143. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/README.md +0 -0
  144. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/app/__init__.py +0 -0
  145. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/app/agent.py +0 -0
  146. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/a2a.py +0 -0
  147. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/reasoning_engine_adapter.py +0 -0
  148. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/app/app_utils/services.py +0 -0
  149. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/app/fast_api_app.py +0 -0
  150. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/README.md +0 -0
  151. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/basic-dataset.json +0 -0
  152. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/eval_config.yaml +0 -0
  153. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/tests/eval/response_quality.py +0 -0
  154. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk/tests/integration/test_agent.py +0 -0
  155. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/.template/templateconfig.yaml +0 -0
  156. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/Dockerfile +0 -0
  157. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/Makefile +0 -0
  158. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/README.md +0 -0
  159. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/app/agent.go +0 -0
  160. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/app/agent_test.go +0 -0
  161. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo.go +0 -0
  162. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo_test.go +0 -0
  163. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/apploader.go +0 -0
  164. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/appurl.go +0 -0
  165. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/integration/server_e2e_test.go +0 -0
  166. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/.results/.placeholder +0 -0
  167. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/README.md +0 -0
  168. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/e2e/load_test/load_test.go +0 -0
  169. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/README.md +0 -0
  170. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/basic-dataset.json +0 -0
  171. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/eval_config.yaml +0 -0
  172. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/eval/response_quality.py +0 -0
  173. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/go.mod +0 -0
  174. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/go.sum +0 -0
  175. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/main.go +0 -0
  176. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/observability.go +0 -0
  177. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/observability_test.go +0 -0
  178. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/sessions/sessions.go +0 -0
  179. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_go/{{cookiecutter.agent_guidance_filename}} +0 -0
  180. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/.cloudbuild/pr_checks.yaml +0 -0
  181. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/.github/workflows/pr_checks.yaml +0 -0
  182. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/.template/templateconfig.yaml +0 -0
  183. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/Dockerfile +0 -0
  184. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/Makefile +0 -0
  185. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/README.md +0 -0
  186. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/pom.xml +0 -0
  187. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +0 -0
  188. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Main.java +0 -0
  189. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/integration/ServerE2ETest.java +0 -0
  190. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/.results/.placeholder +0 -0
  191. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/LoadTest.java +0 -0
  192. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/README.md +0 -0
  193. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/unit/AgentTest.java +0 -0
  194. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_java/{{cookiecutter.agent_guidance_filename}} +0 -0
  195. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/.cloudbuild/pr_checks.yaml +0 -0
  196. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/.github/workflows/pr_checks.yaml +0 -0
  197. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/.template/templateconfig.yaml +0 -0
  198. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/Dockerfile +0 -0
  199. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/Makefile +0 -0
  200. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/README.md +0 -0
  201. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/app/agent.ts +0 -0
  202. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/package.json +0 -0
  203. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/agent.test.ts +0 -0
  204. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/server_e2e.test.ts +0 -0
  205. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/.results/.placeholder +0 -0
  206. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/README.md +0 -0
  207. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/load_test/load_test.ts +0 -0
  208. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/adk_ts/tests/unit/dummy.test.ts +0 -0
  209. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/empty_go/.template/templateconfig.yaml +0 -0
  210. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/empty_java/.template/templateconfig.yaml +0 -0
  211. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/empty_py/.template/templateconfig.yaml +0 -0
  212. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/agents/empty_ts/.template/templateconfig.yaml +0 -0
  213. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/apis.tf +0 -0
  214. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/github.tf +0 -0
  215. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/locals.tf +0 -0
  216. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/outputs.tf +0 -0
  217. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/service_accounts.tf +0 -0
  218. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/storage.tf +0 -0
  219. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/vars/env.tfvars +0 -0
  220. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/wif.tf +0 -0
  221. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/apis.tf +0 -0
  222. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/iam.tf +0 -0
  223. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/outputs.tf +0 -0
  224. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/storage.tf +0 -0
  225. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/vars/env.tfvars +0 -0
  226. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +0 -0
  227. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/pr_checks.yaml +0 -0
  228. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +0 -0
  229. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.env +0 -0
  230. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.env.example +0 -0
  231. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.gcloudignore +0 -0
  232. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +0 -0
  233. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/pr_checks.yaml +0 -0
  234. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +0 -0
  235. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/.golangci.yml +0 -0
  236. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry.tf +0 -0
  237. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  238. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/completions.sql +0 -0
  239. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/genai_logs_schema.json +0 -0
  240. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry.tf +0 -0
  241. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  242. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/deploy-to-prod.yaml +0 -0
  243. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/staging.yaml +0 -0
  244. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/.env.example +0 -0
  245. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/.gcloudignore +0 -0
  246. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/deploy-to-prod.yaml +0 -0
  247. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/staging.yaml +0 -0
  248. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/java/src/main/resources/application.properties +0 -0
  249. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/deploy-to-prod.yaml +0 -0
  250. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/pr_checks.yaml +0 -0
  251. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/staging.yaml +0 -0
  252. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.env +0 -0
  253. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.env.example +0 -0
  254. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.gcloudignore +0 -0
  255. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/deploy-to-prod.yaml +0 -0
  256. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/pr_checks.yaml +0 -0
  257. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/staging.yaml +0 -0
  258. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/Dockerfile +0 -0
  259. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/README.md +0 -0
  260. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry.tf +0 -0
  261. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
  262. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/completions.sql +0 -0
  263. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/genai_logs_schema.json +0 -0
  264. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry.tf +0 -0
  265. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
  266. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/pyproject.toml +0 -0
  267. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/tests/unit/test_dummy.py +0 -0
  268. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_guidance_filename}} +0 -0
  269. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/deploy-to-prod.yaml +0 -0
  270. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/staging.yaml +0 -0
  271. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.dockerignore +0 -0
  272. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.env.example +0 -0
  273. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.gcloudignore +0 -0
  274. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/deploy-to-prod.yaml +0 -0
  275. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/staging.yaml +0 -0
  276. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/eslint.config.mjs +0 -0
  277. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/tsconfig.json +0 -0
  278. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/base_templates/typescript/vitest.config.ts +0 -0
  279. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/cmd_scaffold_group.py +0 -0
  280. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/commands/__init__.py +0 -0
  281. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  282. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/shared/dummy_source.b64 +0 -0
  283. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  284. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/integration/test_server_e2e.py +0 -0
  285. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/.results/.placeholder +0 -0
  286. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/README.md +0 -0
  287. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/load_test.py +0 -0
  288. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +0 -0
  289. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service_outputs.tf +0 -0
  290. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +0 -0
  291. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service_outputs.tf +0 -0
  292. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service.tf +0 -0
  293. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service_outputs.tf +0 -0
  294. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service.tf +0 -0
  295. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service_outputs.tf +0 -0
  296. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service_outputs.tf +0 -0
  297. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service_outputs.tf +0 -0
  298. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/integration/test_server_e2e.py +0 -0
  299. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/.results/.placeholder +0 -0
  300. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/README.md +0 -0
  301. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/load_test.py +0 -0
  302. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service.tf +0 -0
  303. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service_outputs.tf +0 -0
  304. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service.tf +0 -0
  305. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service_outputs.tf +0 -0
  306. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
  307. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
  308. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/integration/test_server_e2e.py +0 -0
  309. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/.results/.placeholder +0 -0
  310. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/README.md +0 -0
  311. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/load_test.py +0 -0
  312. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/integration/test_server_e2e.py +0 -0
  313. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/.results/.placeholder +0 -0
  314. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/README.md +0 -0
  315. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/load_test.py +0 -0
  316. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/__init__.py +0 -0
  317. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/command.py +0 -0
  318. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/gcp.py +0 -0
  319. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/generate_locks.py +0 -0
  320. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/generation_metadata.py +0 -0
  321. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/language.py +0 -0
  322. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/lock_utils.py +0 -0
  323. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/logging.py +0 -0
  324. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/scaffold/utils/version.py +0 -0
  325. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/setup/__init__.py +0 -0
  326. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/setup/_antigravity.py +0 -0
  327. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/setup/cmd_auth.py +0 -0
  328. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/setup/cmd_setup.py +0 -0
  329. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/setup/cmd_update.py +0 -0
  330. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/__init__.py +0 -0
  331. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/_bundle.py +0 -0
  332. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/README.md +0 -0
  333. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go-workflows.md +0 -0
  334. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go.md +0 -0
  335. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/samples.md +0 -0
  336. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/batch-inference.md +0 -0
  337. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cicd-pipeline.md +0 -0
  338. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/cloud-run.md +0 -0
  339. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/testing-deployed-agents.md +0 -0
  340. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/advanced-commands.md +0 -0
  341. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/builtin-tools-eval.md +0 -0
  342. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/dataset_schema.md +0 -0
  343. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/metrics-guide.md +0 -0
  344. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/multimodal-eval.md +0 -0
  345. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-eval/references/user-simulation.md +0 -0
  346. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/adk-docs.md +0 -0
  347. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/bigquery-agent-analytics.md +0 -0
  348. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/cloud-trace-and-logging.md +0 -0
  349. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-observability/references/feedback-mechanism.md +0 -0
  350. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-scaffold/references/flags.md +0 -0
  351. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/brainstorming.md +0 -0
  352. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/commands.md +0 -0
  353. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/extension.md +0 -0
  354. {google_agents_cli-1.6.1 → google_agents_cli-1.8.0}/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/spec-template.md +0 -0
  355. {google_agents_cli-1.6.1 → google_agents_cli-1.8.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.6.1
3
+ Version: 1.8.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,42 @@ 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
+ > **Note:** Telemetry is experimental and off by default. It only runs when
214
+ > enabled with `AGENTS_CLI_EXPERIMENTS='{"cli_telemetry": true}'`.
215
+
216
+ `agents-cli` can emit a single usage signal per command invocation to help
217
+ improve the tool and better understand how it's used. Each signal
218
+ is a structured log entry written to **your own Google Cloud project**:
219
+ `GOOGLE_CLOUD_PROJECT`, or else the default project of your Application Default
220
+ Credentials (`logName=projects/<project>/logs/agents-cli`), where you can query
221
+ it in Cloud Logging. It records only the metadata such as command name
222
+ (e.g. `deploy`, `scaffold.create`), exit code, error class, duration (measured
223
+ from command dispatch to exit, so it excludes CLI startup), CLI/Python versions,
224
+ and OS — never file contents, arguments, or other input. Commands added by
225
+ extensions are recorded without their names.
226
+
227
+ The request that writes the entry also carries usage metadata in its
228
+ `User-Agent` and `X-Goog-Api-Client` headers, which Google receives for
229
+ agents-cli usage analytics: the CLI and Python versions, the OS and its release,
230
+ the CPU architecture, the command name and a random per-invocation ID. The log
231
+ entry's contents, such as the exit code, error class and duration, stay in your
232
+ project.
233
+
234
+ To opt out of sending telemetry, use one of the following environment variables:
235
+
236
+ ```bash
237
+ # our cli-specific variable
238
+ # 0, false, no, or off (case-insensitive):
239
+ export AGENTS_CLI_TELEMETRY=0
240
+
241
+ # donottrack.sh standard variable
242
+ export DO_NOT_TRACK=1
243
+ ```
244
+
245
+ Use `agents-cli info` to see the current telemetry state.
246
+
209
247
  ## Terms of Service
210
248
 
211
249
  `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,42 @@ 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
+ > **Note:** Telemetry is experimental and off by default. It only runs when
173
+ > enabled with `AGENTS_CLI_EXPERIMENTS='{"cli_telemetry": true}'`.
174
+
175
+ `agents-cli` can emit a single usage signal per command invocation to help
176
+ improve the tool and better understand how it's used. Each signal
177
+ is a structured log entry written to **your own Google Cloud project**:
178
+ `GOOGLE_CLOUD_PROJECT`, or else the default project of your Application Default
179
+ Credentials (`logName=projects/<project>/logs/agents-cli`), where you can query
180
+ it in Cloud Logging. It records only the metadata such as command name
181
+ (e.g. `deploy`, `scaffold.create`), exit code, error class, duration (measured
182
+ from command dispatch to exit, so it excludes CLI startup), CLI/Python versions,
183
+ and OS — never file contents, arguments, or other input. Commands added by
184
+ extensions are recorded without their names.
185
+
186
+ The request that writes the entry also carries usage metadata in its
187
+ `User-Agent` and `X-Goog-Api-Client` headers, which Google receives for
188
+ agents-cli usage analytics: the CLI and Python versions, the OS and its release,
189
+ the CPU architecture, the command name and a random per-invocation ID. The log
190
+ entry's contents, such as the exit code, error class and duration, stay in your
191
+ project.
192
+
193
+ To opt out of sending telemetry, use one of the following environment variables:
194
+
195
+ ```bash
196
+ # our cli-specific variable
197
+ # 0, false, no, or off (case-insensitive):
198
+ export AGENTS_CLI_TELEMETRY=0
199
+
200
+ # donottrack.sh standard variable
201
+ export DO_NOT_TRACK=1
202
+ ```
203
+
204
+ Use `agents-cli info` to see the current telemetry state.
205
+
168
206
  ## Terms of Service
169
207
 
170
208
  `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.6.1"
3
+ version = "1.8.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",
@@ -17,8 +17,10 @@
17
17
  from __future__ import annotations
18
18
 
19
19
  import asyncio
20
+ import enum
20
21
  import json
21
22
  import logging
23
+ import time
22
24
  from collections.abc import (
23
25
  AsyncGenerator,
24
26
  Iterable,
@@ -36,6 +38,20 @@ _APP_INFO_TIMEOUT = 10
36
38
  DEFAULT_WS_PATH = "/run_live"
37
39
  DEFAULT_TURN_TIMEOUT = 120 # seconds to wait for a turn's turnComplete
38
40
 
41
+ # Live sessions where the server keeps working after a turnComplete report it
42
+ # as `interactionStatus`. IN_PROGRESS means more model output is still coming;
43
+ # anything else (IDLE, or its deprecated REQUIRES_ACTION spelling) ends the
44
+ # turn. UNSPECIFIED is the enum's zero value and carries no signal.
45
+ _STATUS_IN_PROGRESS = "IN_PROGRESS"
46
+ _STATUS_UNSPECIFIED = "INTERACTION_STATUS_UNSPECIFIED"
47
+ # An unrecognized status still ends the turn, but gets logged.
48
+ _STATUS_TERMINAL = frozenset({"IDLE", "REQUIRES_ACTION"})
49
+
50
+ # Fallback for models that don't report interactionStatus: ADK can schedule a
51
+ # NON_BLOCKING tool's response past the terminator, and on the wire that is
52
+ # indistinguishable from a call that is never answered.
53
+ DEFAULT_DEFERRED_RESPONSE_TIMEOUT = 30
54
+
39
55
  # /run_live transcribes it back to text, so output stays gradable.
40
56
  DEFAULT_MODALITIES = ("AUDIO",)
41
57
 
@@ -285,12 +301,21 @@ async def _stream_live_events(
285
301
  await ws.send(json.dumps({"content": content}))
286
302
 
287
303
  boundary = _TurnBoundary()
304
+ # Set once a turnComplete arrives with a tool call still open.
305
+ deferred_deadline: float | None = None
288
306
  while True:
307
+ if deferred_deadline is None:
308
+ timeout = float(DEFAULT_TURN_TIMEOUT)
309
+ else:
310
+ timeout = max(0.0, deferred_deadline - time.monotonic())
289
311
  try:
290
- raw = await asyncio.wait_for(
291
- ws.recv(), timeout=DEFAULT_TURN_TIMEOUT
292
- )
312
+ raw = await asyncio.wait_for(ws.recv(), timeout=timeout)
293
313
  except TimeoutError:
314
+ if deferred_deadline is not None:
315
+ # Nothing followed the provisional terminator, so it
316
+ # was the real end of the turn. An ordinary ending
317
+ # for a fire-and-forget tool -- not a stall.
318
+ break
294
319
  logging.warning(
295
320
  "Turn %d: no event for %ds, giving up on the turn.",
296
321
  turn_index,
@@ -312,8 +337,23 @@ async def _stream_live_events(
312
337
  if event is None:
313
338
  continue
314
339
  yield event
315
- if boundary.is_terminal(event):
340
+
341
+ state = boundary.classify(event)
342
+ if state is _Boundary.TERMINAL:
316
343
  break
344
+ if state is _Boundary.PROVISIONAL:
345
+ deferred_deadline = (
346
+ time.monotonic() + DEFAULT_DEFERRED_RESPONSE_TIMEOUT
347
+ )
348
+ elif deferred_deadline is not None:
349
+ # Only the answer extends the wait: metadata frames
350
+ # routinely follow a turnComplete and would hold it open.
351
+ if _event_has_function_response(event):
352
+ deferred_deadline = None # full turn budget again
353
+ elif _event_has_answer_content(event):
354
+ deferred_deadline = (
355
+ time.monotonic() + DEFAULT_DEFERRED_RESPONSE_TIMEOUT
356
+ )
317
357
 
318
358
  yield None # end of turn
319
359
  finally:
@@ -323,15 +363,27 @@ async def _stream_live_events(
323
363
  pass
324
364
 
325
365
 
366
+ class _Boundary(enum.Enum):
367
+ """What one event means for the end of the current logical turn."""
368
+
369
+ CONTINUE = "continue"
370
+ PROVISIONAL = "provisional"
371
+ TERMINAL = "terminal"
372
+
373
+
326
374
  class _TurnBoundary:
327
- """Detect the terminal turnComplete of one logical live turn."""
375
+ """Detect the end of one logical live turn.
376
+
377
+ Some live models answer one prompt with several turns and report
378
+ ``interactionStatus``; models that omit it use the heuristic below.
379
+ """
328
380
 
329
381
  def __init__(self) -> None:
330
382
  self._tool_call_open = False
331
383
  self._tool_response_seen = False
332
384
 
333
- def is_terminal(self, event: dict) -> bool:
334
- """Feed one event; return True if it ends the current logical turn."""
385
+ def classify(self, event: dict) -> _Boundary:
386
+ """Feed one event; report what it means for the current logical turn."""
335
387
  if _event_has_function_call(event):
336
388
  # Anything spoken before the call is not the post-tool answer.
337
389
  self._tool_call_open = True
@@ -343,14 +395,33 @@ class _TurnBoundary:
343
395
  self._tool_call_open = False
344
396
  self._tool_response_seen = False
345
397
 
346
- if event.get("turnComplete"):
347
- if self._tool_call_open and self._tool_response_seen:
348
- # Terminator for the tool round-trip; keep reading for the answer.
349
- self._tool_call_open = False
350
- self._tool_response_seen = False
351
- return False
352
- return True
353
- return False
398
+ if not event.get("turnComplete"):
399
+ return _Boundary.CONTINUE
400
+
401
+ status = str(event.get("interactionStatus") or "").upper()
402
+ # UNSPECIFIED carries no signal, so it falls through to the heuristic
403
+ # below rather than being read as an authoritative end of turn.
404
+ if status and status != _STATUS_UNSPECIFIED:
405
+ if status == _STATUS_IN_PROGRESS:
406
+ return _Boundary.CONTINUE
407
+ if status not in _STATUS_TERMINAL:
408
+ logging.debug(
409
+ "Unrecognized interactionStatus %r; ending the turn.", status
410
+ )
411
+ return _Boundary.TERMINAL
412
+
413
+ if self._tool_call_open and self._tool_response_seen:
414
+ # Terminator for the tool round-trip; keep reading for the answer.
415
+ self._tool_call_open = False
416
+ self._tool_response_seen = False
417
+ return _Boundary.CONTINUE
418
+ if self._tool_call_open:
419
+ # A terminator while the call is still unanswered. Either the
420
+ # response was scheduled past it and the answer is still coming,
421
+ # or the call is never answered and this really is the end. The
422
+ # two shapes are identical here, so the caller waits it out.
423
+ return _Boundary.PROVISIONAL
424
+ return _Boundary.TERMINAL
354
425
 
355
426
 
356
427
  def _decode_ws_frame(raw) -> dict | None:
@@ -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
@@ -28,9 +28,30 @@ 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
+ # Gates CLI usage telemetry (see _telemetry.py). Off by default
32
+ # during validation. Users can opt out via DO_NOT_TRACK / AGENTS_CLI_TELEMETRY.
33
+ "cli_telemetry": Experiment("cli_telemetry", bool, False),
31
34
  }
32
35
 
33
36
 
37
+ # String spellings accepted for boolean experiments, e.g. '{"x": "false"}'.
38
+ # bool("false") is True, so strings can't go through the plain type cast.
39
+ _TRUE_STRINGS = frozenset({"1", "true", "yes", "on"})
40
+ _FALSE_STRINGS = frozenset({"0", "false", "no", "off"})
41
+
42
+
43
+ def _cast(exp: Experiment, val: Any) -> Any:
44
+ """Cast an override value to the experiment's type."""
45
+ if exp.value_type is bool and isinstance(val, str):
46
+ normalized = val.strip().lower()
47
+ if normalized in _TRUE_STRINGS:
48
+ return True
49
+ if normalized in _FALSE_STRINGS:
50
+ return False
51
+ raise ValueError(f"expected true/false, 1/0, yes/no or on/off, got {val!r}")
52
+ return exp.value_type(val)
53
+
54
+
34
55
  def resolve_experiment(label: str) -> Any:
35
56
  """Returns the value for the given experiment label."""
36
57
  if label not in _REGISTRY:
@@ -45,8 +66,7 @@ def resolve_experiment(label: str) -> Any:
45
66
  overrides = json.loads(env_val)
46
67
  if label in overrides:
47
68
  val = overrides[label]
48
- # Cast to correct type if necessary
49
- return exp.value_type(val)
69
+ return _cast(exp, val)
50
70
  except Exception as e:
51
71
  logging.warning(
52
72
  f"Failed to apply AGENTS_CLI_EXPERIMENTS override for '{label}', "
@@ -25,7 +25,5 @@ MODE_ADK_LIVE = "adk_live"
25
25
  # message from these, so adding a mode is one edit per set rather than one per
26
26
  # call site.
27
27
  RUN_MODES = (MODE_A2A, MODE_ADK, MODE_ADK_LIVE)
28
- # A local server serves ADK only, so a2a needs a --url.
29
- LOCAL_RUN_MODES = (MODE_ADK, MODE_ADK_LIVE)
30
28
  # eval speaks ADK only.
31
29
  EVAL_MODES = (MODE_ADK, MODE_ADK_LIVE)
@@ -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())
@@ -28,6 +28,10 @@ from typing import Any
28
28
  import click
29
29
  import yaml
30
30
 
31
+ # Fallback for manifests written before the framework key existed. Those are all
32
+ # ADK; new projects get the value from their template.
33
+ DEFAULT_FRAMEWORK = "google-adk"
34
+
31
35
 
32
36
  @dataclass
33
37
  class ProjectConfig:
@@ -41,6 +45,7 @@ class ProjectConfig:
41
45
  base_template: str = "adk"
42
46
  acli_version: str = ""
43
47
  language: str = "python"
48
+ framework: str = DEFAULT_FRAMEWORK
44
49
  session_type: str = "none"
45
50
  cicd_runner: str = "skip"
46
51
  agent_gateway: bool = False
@@ -80,6 +85,7 @@ class ProjectConfig:
80
85
  data.get("acli_version") or data.get("version") or cfg.acli_version
81
86
  )
82
87
  cfg.language = data.get("language", cfg.language)
88
+ cfg.framework = data.get("framework", cfg.framework)
83
89
 
84
90
  create_params = data.get("create_params")
85
91
  if create_params is None: