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