google-agents-cli 1.4.2__tar.gz → 1.6.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/PKG-INFO +11 -8
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/README.md +3 -6
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/pyproject.toml +27 -5
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/__init__.py +5 -1
- google_agents_cli-1.6.1/src/google/agents/cli/_adk_client.py +382 -0
- google_agents_cli-1.6.1/src/google/agents/cli/_agent_platform.py +66 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_click.py +13 -1
- google_agents_cli-1.6.1/src/google/agents/cli/_defaults.py +22 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_experiments.py +1 -1
- google_agents_cli-1.6.1/src/google/agents/cli/_modes.py +31 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_output.py +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_project.py +93 -23
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_remote.py +56 -6
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_runner.py +49 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_skills_check.py +2 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_tools.py +5 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_trust.py +8 -5
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/_utils.py +32 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/agent_runtime.py +224 -91
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/cmd_deploy.py +170 -11
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_install.py +9 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_playground.py +14 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/_paths.py +57 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/_synthesize_runner.py +3 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_analyze.py +2 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_dataset.py +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_generate.py +40 -19
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_grade.py +79 -11
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_run.py +56 -13
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_submit.py +3 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/eval_utils.py +75 -2
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_compat.py +86 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_loader.py +295 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_manifest.py +137 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_overrides.py +197 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_paths.py +91 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_refs.py +168 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_resolver.py +453 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_schema.py +103 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_spec.py +255 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_sync.py +102 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/_trust.py +38 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_add.py +216 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_group.py +57 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_list.py +58 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_remove.py +63 -0
- google_agents_cli-1.6.1/src/google/agents/cli/extension/cmd_extension_update.py +147 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/info/cmd_info.py +41 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/_cicd_utils.py +10 -3
- google_agents_cli-1.6.1/src/google/agents/cli/infra/_terraform.py +79 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_cicd.py +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_infra.py +6 -0
- google_agents_cli-1.6.1/src/google/agents/cli/infra/cmd_infra_show.py +100 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_infra_single_project.py +5 -10
- google_agents_cli-1.6.1/src/google/agents/cli/main.py +482 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/cmd_publish.py +39 -16
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/run/_local_server.py +61 -20
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/run/_multimodal.py +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/run/cmd_run.py +259 -75
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/.template/templateconfig.yaml +15 -2
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/agent.py +6 -2
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/app_utils/a2a.py +1 -38
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/app_utils/reasoning_engine_adapter.py +17 -7
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/fast_api_app.py +13 -8
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/response_quality.py +22 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_go/.template/templateconfig.yaml +1 -3
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/Dockerfile +13 -10
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/Makefile +7 -6
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/README.md +5 -3
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/agents/adk_go/agent → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/app}/agent.go +37 -8
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/agents/adk_go/agent → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/app}/agent_test.go +2 -2
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo.go +541 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appinfo/appinfo_test.go +956 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/apploader.go +55 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/appurl.go +47 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/integration/server_e2e_test.go +113 -2
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/load_test/README.md +1 -1
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/load_test/load_test.go +3 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/README.md +117 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/datasets/basic-dataset.json +31 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/eval_config.yaml +13 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/eval/response_quality.py +65 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/go.mod +23 -13
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/go.sum +55 -12
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/main.go +168 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/observability.go +192 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/observability_test.go +178 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go/sessions/sessions.go +237 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/Makefile +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +6 -2
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/Makefile +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/app/agent.ts +6 -2
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/package-lock.json +726 -345
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/package.json +7 -1
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_go/.template/templateconfig.yaml +25 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_java/.template/templateconfig.yaml +25 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_py/.template/templateconfig.yaml +24 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/empty_ts/.template/templateconfig.yaml +25 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +20 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/apis.tf +25 -8
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/build_triggers.tf +15 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/github.tf +5 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/iam.tf +5 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/locals.tf +7 -4
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/providers.tf +7 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/wif.tf +4 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/apis.tf +24 -4
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/iam.tf +4 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/providers.tf +7 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +103 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/pr_checks.yaml +3 -3
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +231 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.gcloudignore +15 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +126 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/pr_checks.yaml +3 -3
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +197 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.gitignore +3 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.golangci.yml +4 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry.tf +136 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/cicd/telemetry_outputs.tf +18 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/completions.sql +184 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/shared/genai_logs_schema.json +77 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry.tf +130 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/go/deployment/terraform/single-project/telemetry_outputs.tf +18 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/java/.gcloudignore +15 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.gitignore +3 -1
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/python/.gcloudignore +15 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.gitignore +6 -2
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/Dockerfile +2 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/pyproject.toml +9 -4
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_guidance_filename}} +2 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/base_templates/typescript/.gcloudignore +15 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.gitignore +7 -1
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/commands/create.py +1730 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/enhance.py +75 -51
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/upgrade.py +8 -14
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service.tf +4 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service.tf +4 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/integration/test_server_e2e.py +24 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +240 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +213 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service.tf +6 -2
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service.tf +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service.tf +6 -2
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service.tf +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service.tf +6 -2
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service.tf +1 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service.tf +57 -25
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service.tf +26 -11
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-agent_runtime.lock +967 -959
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-cloud_run.lock +1023 -1009
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/resources/locks/uv-adk-gke.lock +1023 -1009
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/__init__.py +13 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/backup.py +41 -34
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/cli_options.py +123 -0
- google_agents_cli-1.6.1/src/google/agents/cli/scaffold/utils/fs.py +81 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/generate_locks.py +17 -15
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/generation_metadata.py +19 -3
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/language.py +5 -1
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/lock_utils.py +36 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/merge.py +7 -4
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/remote_template.py +93 -25
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/template.py +262 -94
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/upgrade.py +11 -9
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/version.py +2 -2
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_setup.py +119 -17
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_update.py +1 -1
- google_agents_cli-1.6.1/src/google/agents/cli/skills/__init__.py +13 -0
- google_agents_cli-1.6.1/src/google/agents/cli/skills/_bundle.py +59 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/README.md +1 -1
- google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/SKILL.md +72 -0
- google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go-workflows.md +480 -0
- google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-go.md +720 -0
- google_agents_cli-1.4.2/skills/google-agents-cli-adk-code/references/adk-workflows.md → google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-adk-code/references/adk-python-workflows.md +2 -2
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-adk-code/references/adk-python.md +14 -14
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-adk-code/references/samples.md +6 -3
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/SKILL.md +27 -25
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/agent-runtime.md +43 -22
- google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-deploy/references/batch-inference.md +131 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/cicd-pipeline.md +4 -1
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/cloud-run.md +11 -3
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/gke.md +9 -3
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/terraform-patterns.md +8 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-deploy/references/testing-deployed-agents.md +21 -3
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/SKILL.md +26 -12
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/advanced-commands.md +3 -1
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/builtin-tools-eval.md +3 -1
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/metrics-guide.md +9 -3
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/multimodal-eval.md +4 -4
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/user-simulation.md +2 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/SKILL.md +34 -37
- google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-observability/references/adk-docs.md +10 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/references/bigquery-agent-analytics.md +2 -2
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/references/cloud-trace-and-logging.md +29 -5
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-observability/references/feedback-mechanism.md +1 -1
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-publish/SKILL.md +15 -9
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-scaffold/SKILL.md +41 -19
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-scaffold/references/flags.md +6 -2
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/SKILL.md +24 -13
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/brainstorming.md +9 -7
- google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/extension.md +125 -0
- google_agents_cli-1.6.1/src/google/agents/cli/skills/data/google-agents-cli-workflow/references/internals.md +28 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/spec-template.md +3 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/terminology.md +2 -1
- google_agents_cli-1.4.2/skills/google-agents-cli-adk-code/SKILL.md +0 -78
- google_agents_cli-1.4.2/skills/google-agents-cli-deploy/references/batch-inference.md +0 -73
- google_agents_cli-1.4.2/skills/google-agents-cli-workflow/references/internals.md +0 -24
- google_agents_cli-1.4.2/src/google/agents/cli/_adk_client.py +0 -111
- google_agents_cli-1.4.2/src/google/agents/cli/_agent_runtime_a2a.py +0 -44
- google_agents_cli-1.4.2/src/google/agents/cli/main.py +0 -211
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/agents/adk/README.md +0 -14
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/_shared/agents-cli-manifest.yaml +0 -16
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/deploy-to-prod.yaml +0 -58
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.cloudbuild/staging.yaml +0 -154
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/deploy-to-prod.yaml +0 -90
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/.github/workflows/staging.yaml +0 -156
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/agent/agent.go +0 -29
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go/main.go +0 -113
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java/src/main/java/{{cookiecutter.java_package_path}}/Agent.java +0 -48
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java/src/test/java/{{cookiecutter.java_package_path}}/unit/AgentTest.java +0 -33
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript/app/agent.ts +0 -25
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/commands/create.py +0 -1405
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service.tf +0 -105
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service.tf +0 -95
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/{{cookiecutter.agent_directory}}/fast_api_app.py +0 -76
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/gke/python/{{cookiecutter.agent_directory}}/fast_api_app.py +0 -76
- google_agents_cli-1.4.2/src/google/agents/cli/scaffold/deployment_targets/none/python/{{cookiecutter.agent_directory}}/fast_api_app.py +0 -76
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/LICENSE +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/_gcp_project.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/auth.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/data/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/data/_recipe.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/data/cmd_data_ingestion.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/deploy/_operation.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_build.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/dev/cmd_lint.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_compare.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_eval_group.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_metric.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/cmd_optimize.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/eval/optimize_utils.py +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/run → google_agents_cli-1.6.1/src/google/agents/cli/extension}/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/info/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/infra/cmd_datastore.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/publish/cmd_publish_group.py +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/utils → google_agents_cli-1.6.1/src/google/agents/cli/run}/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/app/__init__.py +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/python/{{cookiecutter.agent_directory}} → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk/app}/app_utils/services.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/datasets/basic-dataset.json +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/eval/eval_config.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk/tests/integration/test_agent.py +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/e2e/load_test/.results/.placeholder +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/go → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_go}/{{cookiecutter.agent_guidance_filename}} +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/.cloudbuild/pr_checks.yaml +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/.github/workflows/pr_checks.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/.template/templateconfig.yaml +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/Dockerfile +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/README.md +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/pom.xml +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/src/main/java/{{cookiecutter.java_package_path}}/Main.java +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/src/test/java/{{cookiecutter.java_package_path}}/e2e/integration/ServerE2ETest.java +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/.results/.placeholder +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/LoadTest.java +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/src/test/java/{{cookiecutter.java_package_path}}/e2e/load_test/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_java/src/test/java/{{cookiecutter.java_package_path}}/unit/AgentTest.java +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/java → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_java}/{{cookiecutter.agent_guidance_filename}} +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/.cloudbuild/pr_checks.yaml +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/.github/workflows/pr_checks.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/.template/templateconfig.yaml +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/Dockerfile +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/agents/adk_ts/tests/integration/agent.test.ts +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/integration/server_e2e.test.ts +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/load_test/.results/.placeholder +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/load_test/README.md +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/load_test/load_test.ts +0 -0
- {google_agents_cli-1.4.2/src/google/agents/cli/scaffold/base_templates/typescript → google_agents_cli-1.6.1/src/google/agents/cli/scaffold/agents/adk_ts}/tests/unit/dummy.test.ts +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/service_accounts.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/storage.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/variables.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/cicd/vars/env.tfvars +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/storage.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/variables.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/_shared/deployment/terraform/single-project/vars/env.tfvars +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.env +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/go/.env.example +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/deploy-to-prod.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.cloudbuild/staging.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.env.example +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/deploy-to-prod.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/.github/workflows/staging.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/java/src/main/resources/application.properties +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/deploy-to-prod.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/pr_checks.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.cloudbuild/staging.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.env +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.env.example +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/deploy-to-prod.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/pr_checks.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/.github/workflows/staging.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/cicd/telemetry_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/completions.sql +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/shared/genai_logs_schema.json +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/deployment/terraform/single-project/telemetry_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/python/tests/unit/test_dummy.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/deploy-to-prod.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.cloudbuild/staging.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.dockerignore +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.env.example +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/deploy-to-prod.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/.github/workflows/staging.yaml +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/eslint.config.mjs +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/tsconfig.json +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/base_templates/typescript/vitest.config.ts +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/cmd_scaffold_group.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/commands/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/shared/dummy_source.b64 +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/_shared/deployment_metadata.json +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/.results/.placeholder +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/agent_runtime/python/tests/load_test/load_test.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/cicd/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/go/deployment/terraform/single-project/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/cicd/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/java/deployment/terraform/single-project/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/cicd/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/deployment/terraform/single-project/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/integration/test_server_e2e.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/.results/.placeholder +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/python/tests/load_test/load_test.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/cicd/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/cloud_run/typescript/deployment/terraform/single-project/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/cicd/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/_shared/deployment/terraform/single-project/service_outputs.tf +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/integration/test_server_e2e.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/.results/.placeholder +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/gke/python/tests/load_test/load_test.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/integration/test_server_e2e.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/.results/.placeholder +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/README.md +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/deployment_targets/none/python/tests/load_test/load_test.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/command.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/gcp.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/scaffold/utils/logging.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/__init__.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/_antigravity.py +0 -0
- {google_agents_cli-1.4.2 → google_agents_cli-1.6.1}/src/google/agents/cli/setup/cmd_auth.py +0 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-eval/references/dataset_schema.md +0 -0
- {google_agents_cli-1.4.2/skills → google_agents_cli-1.6.1/src/google/agents/cli/skills/data}/google-agents-cli-workflow/references/commands.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: google-agents-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.1
|
|
4
4
|
Summary: Agents CLI — Agent Development Lifecycle toolchain for ADK
|
|
5
5
|
Author-email: Google LLC <agents-cli-dev-pypi@google.com>
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -13,17 +13,23 @@ Requires-Dist: click>=8.1.8,<9
|
|
|
13
13
|
Requires-Dist: PyYAML>=6.0.2,<7
|
|
14
14
|
Requires-Dist: cookiecutter>=2.6.0,<3
|
|
15
15
|
Requires-Dist: jinja2>=3.1.0
|
|
16
|
-
Requires-Dist: google-cloud-aiplatform[evaluation]>=1.
|
|
16
|
+
Requires-Dist: google-cloud-aiplatform[evaluation]>=1.165.0,<2
|
|
17
17
|
Requires-Dist: google-cloud-resource-manager>=1.12.0
|
|
18
18
|
Requires-Dist: google-auth[pyopenssl]>=2.47.0
|
|
19
|
+
Requires-Dist: pyopenssl<26.2
|
|
19
20
|
Requires-Dist: rich>=13.7.0
|
|
20
21
|
Requires-Dist: backoff>=2.2.1
|
|
21
22
|
Requires-Dist: requests>=2.31.0
|
|
23
|
+
Requires-Dist: websockets>=13.0
|
|
22
24
|
Requires-Dist: a2a-sdk>=1.0,<2
|
|
25
|
+
Requires-Dist: protobuf>=5.29.5,<7
|
|
23
26
|
Requires-Dist: tomlkit>=0.13.0,<1
|
|
24
27
|
Requires-Dist: psutil>=5.9.0
|
|
25
28
|
Requires-Dist: python-dotenv>=1.0.0
|
|
26
29
|
Requires-Dist: pathspec>=0.12.1
|
|
30
|
+
Requires-Dist: filelock>=3.12,<4
|
|
31
|
+
Requires-Dist: packaging>=24
|
|
32
|
+
Requires-Dist: pydantic>=2.10,<3
|
|
27
33
|
Requires-Dist: ruff ; extra == "lint"
|
|
28
34
|
Requires-Dist: ty ; extra == "lint"
|
|
29
35
|
Requires-Dist: codespell ; extra == "lint"
|
|
@@ -111,7 +117,7 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
|
|
|
111
117
|
| Command | What it does |
|
|
112
118
|
|---------|-------------|
|
|
113
119
|
| `agents-cli setup` | Install CLI + skills to coding agents |
|
|
114
|
-
| `agents-cli
|
|
120
|
+
| `agents-cli create <name>` | Create a new agent project |
|
|
115
121
|
| `agents-cli eval run` | Run the agent over the eval dataset and grade the traces |
|
|
116
122
|
| `agents-cli deploy` | Deploy to Google Cloud |
|
|
117
123
|
| `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
|
|
@@ -124,8 +130,8 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
|
|
|
124
130
|
| `agents-cli login` | Authenticate with Google Cloud or AI Studio |
|
|
125
131
|
| `agents-cli login --status` | Show authentication status |
|
|
126
132
|
| **Scaffold** | |
|
|
127
|
-
| `agents-cli
|
|
128
|
-
| `agents-cli scaffold enhance` | Add deployment
|
|
133
|
+
| `agents-cli create <name>` | Create a new agent project |
|
|
134
|
+
| `agents-cli scaffold enhance` | Add deployment or CI/CD to an existing project |
|
|
129
135
|
| `agents-cli scaffold upgrade` | Upgrade project to a newer agents-cli version |
|
|
130
136
|
| **Develop** | |
|
|
131
137
|
| `agents-cli run "prompt"` | Run agent with a single prompt |
|
|
@@ -145,9 +151,6 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
|
|
|
145
151
|
| `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
|
|
146
152
|
| `agents-cli infra single-project` | Provision single-project infrastructure |
|
|
147
153
|
| `agents-cli infra cicd` | Set up CI/CD pipeline + staging/prod infrastructure |
|
|
148
|
-
| **Data** | |
|
|
149
|
-
| `agents-cli infra datastore` | Provision datastore infrastructure for RAG |
|
|
150
|
-
| `agents-cli data-ingestion` | Run data ingestion pipeline |
|
|
151
154
|
| **Other** | |
|
|
152
155
|
| `agents-cli info` | Show project config and CLI version |
|
|
153
156
|
| `agents-cli update` | Force reinstall skills to all IDEs |
|
|
@@ -76,7 +76,7 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
|
|
|
76
76
|
| Command | What it does |
|
|
77
77
|
|---------|-------------|
|
|
78
78
|
| `agents-cli setup` | Install CLI + skills to coding agents |
|
|
79
|
-
| `agents-cli
|
|
79
|
+
| `agents-cli create <name>` | Create a new agent project |
|
|
80
80
|
| `agents-cli eval run` | Run the agent over the eval dataset and grade the traces |
|
|
81
81
|
| `agents-cli deploy` | Deploy to Google Cloud |
|
|
82
82
|
| `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
|
|
@@ -89,8 +89,8 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
|
|
|
89
89
|
| `agents-cli login` | Authenticate with Google Cloud or AI Studio |
|
|
90
90
|
| `agents-cli login --status` | Show authentication status |
|
|
91
91
|
| **Scaffold** | |
|
|
92
|
-
| `agents-cli
|
|
93
|
-
| `agents-cli scaffold enhance` | Add deployment
|
|
92
|
+
| `agents-cli create <name>` | Create a new agent project |
|
|
93
|
+
| `agents-cli scaffold enhance` | Add deployment or CI/CD to an existing project |
|
|
94
94
|
| `agents-cli scaffold upgrade` | Upgrade project to a newer agents-cli version |
|
|
95
95
|
| **Develop** | |
|
|
96
96
|
| `agents-cli run "prompt"` | Run agent with a single prompt |
|
|
@@ -110,9 +110,6 @@ See the [full tutorial](https://google.github.io/agents-cli/guide/quickstart-tut
|
|
|
110
110
|
| `agents-cli publish gemini-enterprise` | Register with Gemini Enterprise |
|
|
111
111
|
| `agents-cli infra single-project` | Provision single-project infrastructure |
|
|
112
112
|
| `agents-cli infra cicd` | Set up CI/CD pipeline + staging/prod infrastructure |
|
|
113
|
-
| **Data** | |
|
|
114
|
-
| `agents-cli infra datastore` | Provision datastore infrastructure for RAG |
|
|
115
|
-
| `agents-cli data-ingestion` | Run data ingestion pipeline |
|
|
116
113
|
| **Other** | |
|
|
117
114
|
| `agents-cli info` | Show project config and CLI version |
|
|
118
115
|
| `agents-cli update` | Force reinstall skills to all IDEs |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "google-agents-cli"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.6.1"
|
|
4
4
|
description = "Agents CLI — Agent Development Lifecycle toolchain for ADK"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -16,17 +16,28 @@ dependencies = [
|
|
|
16
16
|
"PyYAML>=6.0.2,<7",
|
|
17
17
|
"cookiecutter>=2.6.0,<3",
|
|
18
18
|
"jinja2>=3.1.0",
|
|
19
|
-
"google-cloud-aiplatform[evaluation]>=1.
|
|
19
|
+
"google-cloud-aiplatform[evaluation]>=1.165.0,<2",
|
|
20
20
|
"google-cloud-resource-manager>=1.12.0",
|
|
21
21
|
"google-auth[pyopenssl]>=2.47.0",
|
|
22
|
+
# pyOpenSSL 26.2 forbids mutating a used SSL Context; urllib3 does it per
|
|
23
|
+
# connection under google-auth's mTLS shim (urllib3#5107). Lift when fixed.
|
|
24
|
+
"pyopenssl<26.2",
|
|
22
25
|
"rich>=13.7.0",
|
|
23
26
|
"backoff>=2.2.1",
|
|
24
27
|
"requests>=2.31.0",
|
|
28
|
+
"websockets>=13.0",
|
|
25
29
|
"a2a-sdk>=1.0,<2",
|
|
30
|
+
# Pin the a2a-sdk (>=5.29.5) .. aiplatform (<7) window so pip won't chase
|
|
31
|
+
# protobuf 7 and backtrack into old google-api-core (protobuf<5).
|
|
32
|
+
"protobuf>=5.29.5,<7",
|
|
26
33
|
"tomlkit>=0.13.0,<1",
|
|
27
34
|
"psutil>=5.9.0",
|
|
28
35
|
"python-dotenv>=1.0.0",
|
|
29
36
|
"pathspec>=0.12.1",
|
|
37
|
+
"filelock>=3.12,<4",
|
|
38
|
+
"packaging>=24",
|
|
39
|
+
# 2.10+: earlier versions emit `enum` beside `const`, which the schema sync test sees.
|
|
40
|
+
"pydantic>=2.10,<3",
|
|
30
41
|
]
|
|
31
42
|
|
|
32
43
|
[project.urls]
|
|
@@ -53,7 +64,6 @@ include = [
|
|
|
53
64
|
"src/google/agents/cli/scaffold/deployment_targets/",
|
|
54
65
|
"src/google/agents/cli/scaffold/resources/",
|
|
55
66
|
"src/google/agents/cli/scaffold/sample_data/",
|
|
56
|
-
"skills/",
|
|
57
67
|
]
|
|
58
68
|
|
|
59
69
|
[project.optional-dependencies]
|
|
@@ -79,16 +89,27 @@ dev = [
|
|
|
79
89
|
"pytest-rerunfailures>=15.0",
|
|
80
90
|
"pytest-xdist>=3.6.1",
|
|
81
91
|
"pytest-cov>=4.1.0",
|
|
92
|
+
"jsonschema>=4.20",
|
|
82
93
|
]
|
|
83
94
|
|
|
84
95
|
[tool.ruff]
|
|
85
96
|
line-length = 90
|
|
86
97
|
target-version = "py311"
|
|
87
|
-
include = [
|
|
98
|
+
include = [
|
|
99
|
+
"src/google/agents/cli/**/*.py",
|
|
100
|
+
"tests/**/*.py",
|
|
101
|
+
"tools/**/*.py",
|
|
102
|
+
# First-party extensions ship real code; lint them like the rest.
|
|
103
|
+
"extensions/**/*.py",
|
|
104
|
+
]
|
|
88
105
|
exclude = [
|
|
89
106
|
"src/google/agents/cli/scaffold/agents",
|
|
90
107
|
"src/google/agents/cli/scaffold/base_templates",
|
|
91
108
|
"src/google/agents/cli/scaffold/deployment_targets",
|
|
109
|
+
# Generated-project sources, linted by the project's own config (a
|
|
110
|
+
# different line length, and no `google` namespace on disk), not this one.
|
|
111
|
+
"extensions/*/template",
|
|
112
|
+
"src/google/agents/cli/skills/data",
|
|
92
113
|
"tests/cicd/scripts",
|
|
93
114
|
]
|
|
94
115
|
|
|
@@ -111,10 +132,10 @@ ignore = ["E501", "C901", "RUF001", "UP036", "RUF067", "RUF069"]
|
|
|
111
132
|
|
|
112
133
|
[tool.ruff.lint.per-file-ignores]
|
|
113
134
|
"tests/**/*.py" = ["PLR0917"]
|
|
114
|
-
"src/google/agents/cli/_output.py" = ["TID251"]
|
|
115
135
|
|
|
116
136
|
[tool.ruff.lint.flake8-tidy-imports.banned-api]
|
|
117
137
|
"rich.console.Console" = { msg = "Use `google.agents.cli._output.Console` instead to ensure project-wide defaults (soft_wrap=True) are applied." }
|
|
138
|
+
"agentplatform.Client" = { msg = "Use `google.agents.cli._agent_platform.AgentPlatformClient` instead, so the client retries throttled requests." }
|
|
118
139
|
|
|
119
140
|
[tool.ruff.lint.pylint]
|
|
120
141
|
max-positional-args = 5
|
|
@@ -136,6 +157,7 @@ exclude = [
|
|
|
136
157
|
"src/google/agents/cli/scaffold/agents/**",
|
|
137
158
|
"src/google/agents/cli/scaffold/base_templates/**",
|
|
138
159
|
"src/google/agents/cli/scaffold/deployment_targets/**",
|
|
160
|
+
"src/google/agents/cli/skills/data/**",
|
|
139
161
|
"tests/cicd/scripts/**",
|
|
140
162
|
]
|
|
141
163
|
|
|
@@ -16,7 +16,11 @@
|
|
|
16
16
|
|
|
17
17
|
import importlib.metadata
|
|
18
18
|
|
|
19
|
+
# Reported when the CLI runs from a source checkout rather than an installed
|
|
20
|
+
# distribution. Version checks treat it as "unknown, don't block".
|
|
21
|
+
DEV_VERSION = "0.0.0-dev"
|
|
22
|
+
|
|
19
23
|
try:
|
|
20
24
|
__version__ = importlib.metadata.version("google-agents-cli")
|
|
21
25
|
except importlib.metadata.PackageNotFoundError:
|
|
22
|
-
__version__ =
|
|
26
|
+
__version__ = DEV_VERSION
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# Copyright 2026 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
"""Shared ADK FastAPI client: session create + ``/run_sse`` and ``/run_live``."""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
import asyncio
|
|
20
|
+
import json
|
|
21
|
+
import logging
|
|
22
|
+
from collections.abc import (
|
|
23
|
+
AsyncGenerator,
|
|
24
|
+
Iterable,
|
|
25
|
+
Iterator,
|
|
26
|
+
)
|
|
27
|
+
from typing import NamedTuple
|
|
28
|
+
from urllib.parse import urlencode
|
|
29
|
+
|
|
30
|
+
import requests
|
|
31
|
+
|
|
32
|
+
_SESSION_TIMEOUT = 30
|
|
33
|
+
_RUN_SSE_TIMEOUT = 120
|
|
34
|
+
_APP_INFO_TIMEOUT = 10
|
|
35
|
+
|
|
36
|
+
DEFAULT_WS_PATH = "/run_live"
|
|
37
|
+
DEFAULT_TURN_TIMEOUT = 120 # seconds to wait for a turn's turnComplete
|
|
38
|
+
|
|
39
|
+
# /run_live transcribes it back to text, so output stays gradable.
|
|
40
|
+
DEFAULT_MODALITIES = ("AUDIO",)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def create_session(
|
|
44
|
+
base_url: str,
|
|
45
|
+
app_name: str,
|
|
46
|
+
user_id: str,
|
|
47
|
+
*,
|
|
48
|
+
headers: dict,
|
|
49
|
+
prior_events: list[dict] | None = None,
|
|
50
|
+
) -> str:
|
|
51
|
+
"""Create an ADK session and return its ID.
|
|
52
|
+
|
|
53
|
+
When ``prior_events`` are supplied, the ADK server seeds the fresh
|
|
54
|
+
session with them.
|
|
55
|
+
"""
|
|
56
|
+
session_url = f"{base_url}/apps/{app_name}/users/{user_id}/sessions"
|
|
57
|
+
body: dict = {}
|
|
58
|
+
if prior_events:
|
|
59
|
+
body["events"] = prior_events
|
|
60
|
+
|
|
61
|
+
resp = requests.post(
|
|
62
|
+
session_url, headers=headers, json=body, timeout=_SESSION_TIMEOUT
|
|
63
|
+
)
|
|
64
|
+
resp.raise_for_status()
|
|
65
|
+
return resp.json().get("id")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def fetch_app_info(
|
|
69
|
+
*,
|
|
70
|
+
base_url: str,
|
|
71
|
+
app_name: str,
|
|
72
|
+
headers: dict,
|
|
73
|
+
) -> tuple[str | None, dict]:
|
|
74
|
+
"""Fetch agent metadata from ADK's /apps/{app_name}/app-info endpoint.
|
|
75
|
+
|
|
76
|
+
Returns (root_agent_name, agents), where agents is the raw ADK agents
|
|
77
|
+
map keyed by agent id. root_agent_name may be None if the server omits
|
|
78
|
+
it; agents may be empty.
|
|
79
|
+
|
|
80
|
+
Raises requests.RequestException (or a subclass: ConnectionError,
|
|
81
|
+
HTTPError, JSONDecodeError) if the endpoint isn't reachable, returns a
|
|
82
|
+
non-2xx status, or returns a body that isn't valid JSON.
|
|
83
|
+
"""
|
|
84
|
+
url = f"{base_url}/apps/{app_name}/app-info"
|
|
85
|
+
resp = requests.get(url, headers=headers, timeout=_APP_INFO_TIMEOUT)
|
|
86
|
+
resp.raise_for_status()
|
|
87
|
+
payload = resp.json()
|
|
88
|
+
# Accept both camelCase and snake_case for cross language compatibility
|
|
89
|
+
root_agent_name = payload.get("rootAgentName", payload.get("root_agent_name"))
|
|
90
|
+
agents = payload.get("agents") or {}
|
|
91
|
+
return root_agent_name, agents
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def run_sse(
|
|
95
|
+
base_url: str,
|
|
96
|
+
app_name: str,
|
|
97
|
+
session_id: str,
|
|
98
|
+
*,
|
|
99
|
+
user_message: dict,
|
|
100
|
+
headers: dict,
|
|
101
|
+
user_id: str,
|
|
102
|
+
) -> Iterator[dict]:
|
|
103
|
+
"""Stream ADK events for a single user turn.
|
|
104
|
+
|
|
105
|
+
Yields each ``data:`` line's decoded JSON dict as it arrives. Blank
|
|
106
|
+
lines, non-``data:`` lines, and payloads that fail to JSON-decode are
|
|
107
|
+
silently skipped.
|
|
108
|
+
"""
|
|
109
|
+
run_url = f"{base_url}/run_sse"
|
|
110
|
+
payload = {
|
|
111
|
+
"appName": app_name,
|
|
112
|
+
"userId": user_id,
|
|
113
|
+
"sessionId": session_id,
|
|
114
|
+
"newMessage": user_message,
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
with requests.post(
|
|
118
|
+
run_url, headers=headers, json=payload, stream=True, timeout=_RUN_SSE_TIMEOUT
|
|
119
|
+
) as resp:
|
|
120
|
+
resp.raise_for_status()
|
|
121
|
+
# Honor the server's explicit charset if provided; otherwise,
|
|
122
|
+
# fall back to UTF-8 rather than latin-1.
|
|
123
|
+
if "charset" not in resp.headers.get("Content-Type", "").lower():
|
|
124
|
+
resp.encoding = "utf-8"
|
|
125
|
+
for line in resp.iter_lines(decode_unicode=True):
|
|
126
|
+
if not isinstance(line, str) or not line.startswith("data: "):
|
|
127
|
+
continue
|
|
128
|
+
data_str = line[len("data: ") :]
|
|
129
|
+
try:
|
|
130
|
+
yield json.loads(data_str)
|
|
131
|
+
except json.JSONDecodeError:
|
|
132
|
+
continue
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def _event_parts(event: dict) -> list:
|
|
136
|
+
"""Return event's content parts, or an empty list when it carries none."""
|
|
137
|
+
content = event.get("content")
|
|
138
|
+
if not isinstance(content, dict):
|
|
139
|
+
return []
|
|
140
|
+
parts = content.get("parts")
|
|
141
|
+
return parts if isinstance(parts, list) else []
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def _event_has_function_call(event: dict) -> bool:
|
|
145
|
+
"""Return True if event carries a model function call."""
|
|
146
|
+
return any(
|
|
147
|
+
isinstance(part, dict) and part.get("functionCall")
|
|
148
|
+
for part in _event_parts(event)
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def _event_has_function_response(event: dict) -> bool:
|
|
153
|
+
"""Return True if event carries a tool's function response."""
|
|
154
|
+
return any(
|
|
155
|
+
isinstance(part, dict) and part.get("functionResponse")
|
|
156
|
+
for part in _event_parts(event)
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def _event_has_answer_content(event: dict) -> bool:
|
|
161
|
+
"""Return true if event carries gradable model answer content."""
|
|
162
|
+
transcription = event.get("outputTranscription")
|
|
163
|
+
if isinstance(transcription, dict) and transcription.get("text"):
|
|
164
|
+
return True
|
|
165
|
+
return any(
|
|
166
|
+
isinstance(part, dict) and (part.get("text") or part.get("inlineData"))
|
|
167
|
+
for part in _event_parts(event)
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class FinishedTranscript(NamedTuple):
|
|
172
|
+
"""A completed Live transcription frame."""
|
|
173
|
+
|
|
174
|
+
# "user" for input transcription, else the event's author (or "model").
|
|
175
|
+
author: str
|
|
176
|
+
# "user" or "model" -- the genai Content role for the rendered text.
|
|
177
|
+
role: str
|
|
178
|
+
text: str
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
# Live transcription keys mapped to the Content role they represent.
|
|
182
|
+
_TRANSCRIPTION_KEYS = (
|
|
183
|
+
("inputTranscription", "user"),
|
|
184
|
+
("outputTranscription", "model"),
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def finished_transcript(event: dict) -> FinishedTranscript | None:
|
|
189
|
+
"""Return the finished transcript carried by event, else None"""
|
|
190
|
+
for key, role in _TRANSCRIPTION_KEYS:
|
|
191
|
+
transcription = event.get(key)
|
|
192
|
+
if not isinstance(transcription, dict):
|
|
193
|
+
continue
|
|
194
|
+
if not transcription.get("finished"):
|
|
195
|
+
return None # partial chunk; the finished aggregate carries the text
|
|
196
|
+
text = transcription.get("text")
|
|
197
|
+
if not text:
|
|
198
|
+
return None
|
|
199
|
+
author = "user" if role == "user" else (event.get("author") or "model")
|
|
200
|
+
return FinishedTranscript(author=author, role=role, text=text)
|
|
201
|
+
return None
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def is_transcription_event(event: dict) -> bool:
|
|
205
|
+
"""True if event is a Live transcription frame (finished or partial)."""
|
|
206
|
+
# An empty transcription is still a transcription frame, not a malformed one.
|
|
207
|
+
return any(key in event for key, _ in _TRANSCRIPTION_KEYS)
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
def stream_live_events(
|
|
211
|
+
ws_base: str,
|
|
212
|
+
app_name: str,
|
|
213
|
+
session_id: str,
|
|
214
|
+
*,
|
|
215
|
+
user_turns: Iterable[dict],
|
|
216
|
+
headers: dict,
|
|
217
|
+
user_id: str,
|
|
218
|
+
) -> Iterator[dict | None]:
|
|
219
|
+
"""Stream ADK events for a Live conversation over one /run_live socket."""
|
|
220
|
+
return _iter_async(
|
|
221
|
+
_stream_live_events(
|
|
222
|
+
ws_base,
|
|
223
|
+
app_name,
|
|
224
|
+
session_id,
|
|
225
|
+
user_turns=user_turns,
|
|
226
|
+
headers=headers,
|
|
227
|
+
user_id=user_id,
|
|
228
|
+
)
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
def group_turns(stream: Iterable[dict | None]) -> Iterator[list[dict]]:
|
|
233
|
+
"""Batch a stream_live_events stream into one event list per turn."""
|
|
234
|
+
events: list[dict] = []
|
|
235
|
+
for item in stream:
|
|
236
|
+
if item is None:
|
|
237
|
+
yield events
|
|
238
|
+
events = []
|
|
239
|
+
else:
|
|
240
|
+
events.append(item)
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
def build_run_live_url(
|
|
244
|
+
ws_base: str,
|
|
245
|
+
app_name: str,
|
|
246
|
+
session_id: str,
|
|
247
|
+
*,
|
|
248
|
+
user_id: str,
|
|
249
|
+
) -> str:
|
|
250
|
+
"""Build the ADK /run_live WebSocket URL from a ws-base."""
|
|
251
|
+
base = ws_base.rstrip("/")
|
|
252
|
+
query = [
|
|
253
|
+
("app_name", app_name),
|
|
254
|
+
("user_id", user_id),
|
|
255
|
+
("session_id", session_id),
|
|
256
|
+
]
|
|
257
|
+
query.extend(("modalities", m) for m in DEFAULT_MODALITIES)
|
|
258
|
+
return f"{base}{DEFAULT_WS_PATH}?{urlencode(query)}"
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
async def _stream_live_events(
|
|
262
|
+
ws_base: str,
|
|
263
|
+
app_name: str,
|
|
264
|
+
session_id: str,
|
|
265
|
+
*,
|
|
266
|
+
user_turns: Iterable[dict],
|
|
267
|
+
headers: dict,
|
|
268
|
+
user_id: str,
|
|
269
|
+
) -> AsyncGenerator[dict | None, None]:
|
|
270
|
+
"""Play user_turns over one socket, yielding each event as it arrives."""
|
|
271
|
+
from websockets.asyncio.client import connect as ws_connect
|
|
272
|
+
from websockets.exceptions import ConnectionClosed, ConnectionClosedOK
|
|
273
|
+
|
|
274
|
+
ws_url = build_run_live_url(ws_base, app_name, session_id, user_id=user_id)
|
|
275
|
+
user_turns = list(user_turns)
|
|
276
|
+
expected_turns = len(user_turns)
|
|
277
|
+
extra_headers = {
|
|
278
|
+
k: v for k, v in (headers or {}).items() if k.lower() != "content-type"
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
async with ws_connect(ws_url, additional_headers=extra_headers or None) as ws:
|
|
282
|
+
try:
|
|
283
|
+
for turn_index, content in enumerate(user_turns):
|
|
284
|
+
# One `content` frame per turn; ADK validates each frame.
|
|
285
|
+
await ws.send(json.dumps({"content": content}))
|
|
286
|
+
|
|
287
|
+
boundary = _TurnBoundary()
|
|
288
|
+
while True:
|
|
289
|
+
try:
|
|
290
|
+
raw = await asyncio.wait_for(
|
|
291
|
+
ws.recv(), timeout=DEFAULT_TURN_TIMEOUT
|
|
292
|
+
)
|
|
293
|
+
except TimeoutError:
|
|
294
|
+
logging.warning(
|
|
295
|
+
"Turn %d: no event for %ds, giving up on the turn.",
|
|
296
|
+
turn_index,
|
|
297
|
+
DEFAULT_TURN_TIMEOUT,
|
|
298
|
+
)
|
|
299
|
+
break
|
|
300
|
+
except ConnectionClosedOK:
|
|
301
|
+
if turn_index + 1 < expected_turns:
|
|
302
|
+
logging.warning(
|
|
303
|
+
"Turn %d: the agent closed the stream; "
|
|
304
|
+
"%d later turn(s) were never sent.",
|
|
305
|
+
turn_index,
|
|
306
|
+
expected_turns - turn_index - 1,
|
|
307
|
+
)
|
|
308
|
+
yield None # end of turn
|
|
309
|
+
return
|
|
310
|
+
|
|
311
|
+
event = _decode_ws_frame(raw)
|
|
312
|
+
if event is None:
|
|
313
|
+
continue
|
|
314
|
+
yield event
|
|
315
|
+
if boundary.is_terminal(event):
|
|
316
|
+
break
|
|
317
|
+
|
|
318
|
+
yield None # end of turn
|
|
319
|
+
finally:
|
|
320
|
+
try:
|
|
321
|
+
await ws.send(json.dumps({"close": True}))
|
|
322
|
+
except ConnectionClosed:
|
|
323
|
+
pass
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
class _TurnBoundary:
|
|
327
|
+
"""Detect the terminal turnComplete of one logical live turn."""
|
|
328
|
+
|
|
329
|
+
def __init__(self) -> None:
|
|
330
|
+
self._tool_call_open = False
|
|
331
|
+
self._tool_response_seen = False
|
|
332
|
+
|
|
333
|
+
def is_terminal(self, event: dict) -> bool:
|
|
334
|
+
"""Feed one event; return True if it ends the current logical turn."""
|
|
335
|
+
if _event_has_function_call(event):
|
|
336
|
+
# Anything spoken before the call is not the post-tool answer.
|
|
337
|
+
self._tool_call_open = True
|
|
338
|
+
self._tool_response_seen = False
|
|
339
|
+
elif _event_has_function_response(event):
|
|
340
|
+
if self._tool_call_open:
|
|
341
|
+
self._tool_response_seen = True
|
|
342
|
+
elif _event_has_answer_content(event):
|
|
343
|
+
self._tool_call_open = False
|
|
344
|
+
self._tool_response_seen = False
|
|
345
|
+
|
|
346
|
+
if event.get("turnComplete"):
|
|
347
|
+
if self._tool_call_open and self._tool_response_seen:
|
|
348
|
+
# Terminator for the tool round-trip; keep reading for the answer.
|
|
349
|
+
self._tool_call_open = False
|
|
350
|
+
self._tool_response_seen = False
|
|
351
|
+
return False
|
|
352
|
+
return True
|
|
353
|
+
return False
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
def _decode_ws_frame(raw) -> dict | None:
|
|
357
|
+
"""Decode a /run_live frame into an ADK event dict, or None for audio."""
|
|
358
|
+
if isinstance(raw, (bytes, bytearray)):
|
|
359
|
+
try:
|
|
360
|
+
return json.loads(bytes(raw).decode("utf-8"))
|
|
361
|
+
except (UnicodeDecodeError, json.JSONDecodeError):
|
|
362
|
+
return None
|
|
363
|
+
try:
|
|
364
|
+
return json.loads(raw)
|
|
365
|
+
except json.JSONDecodeError:
|
|
366
|
+
return None
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
def _iter_async(agen) -> Iterator:
|
|
370
|
+
"""Drive an async generator from sync code on a dedicated event loop."""
|
|
371
|
+
loop = asyncio.new_event_loop()
|
|
372
|
+
try:
|
|
373
|
+
while True:
|
|
374
|
+
try:
|
|
375
|
+
yield loop.run_until_complete(agen.__anext__())
|
|
376
|
+
except StopAsyncIteration:
|
|
377
|
+
break
|
|
378
|
+
finally:
|
|
379
|
+
loop.run_until_complete(agen.aclose())
|
|
380
|
+
# Finalize websockets' own async generators before closing the loop.
|
|
381
|
+
loop.run_until_complete(loop.shutdown_asyncgens())
|
|
382
|
+
loop.close()
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Copyright 2026 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
"""Shared construction of the Agent Platform SDK client."""
|
|
16
|
+
|
|
17
|
+
from __future__ import annotations
|
|
18
|
+
|
|
19
|
+
from typing import TYPE_CHECKING, Any
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
import agentplatform
|
|
23
|
+
|
|
24
|
+
# Retry options applied to every Agent Platform client the CLI builds. Leaving
|
|
25
|
+
# http_status_codes unset keeps the SDK's default retryable set (408/429/500/502/503/504);
|
|
26
|
+
# waits are roughly 1s, 2s, 4s, 8s (full-jittered).
|
|
27
|
+
RETRY_OPTIONS: dict[str, Any] = {
|
|
28
|
+
"attempts": 5,
|
|
29
|
+
"initial_delay": 1.0,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AgentPlatformClient:
|
|
34
|
+
"""Agent Platform client configured with CLI-wide defaults (e.g. retries on transient errors).
|
|
35
|
+
|
|
36
|
+
Retries are opt-in in the underlying SDK, so constructing ``agentplatform.Client``
|
|
37
|
+
directly runs without them. A ruff rule enforces using this wrapper instead.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
project: GCP project ID, or None to let the SDK resolve it.
|
|
41
|
+
location: API location (e.g. ``us-east1``), or None.
|
|
42
|
+
api_version: Optional API version override (e.g. ``v1beta1``).
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
def __init__(
|
|
46
|
+
self,
|
|
47
|
+
*,
|
|
48
|
+
project: str | None = None,
|
|
49
|
+
location: str | None = None,
|
|
50
|
+
api_version: str | None = None,
|
|
51
|
+
) -> None:
|
|
52
|
+
# Lazy: agentplatform is expensive to import, this module is not.
|
|
53
|
+
import agentplatform
|
|
54
|
+
|
|
55
|
+
http_options: dict[str, Any] = {"retry_options": RETRY_OPTIONS}
|
|
56
|
+
if api_version:
|
|
57
|
+
http_options["api_version"] = api_version
|
|
58
|
+
|
|
59
|
+
self._client: agentplatform.Client = agentplatform.Client( # noqa: TID251
|
|
60
|
+
project=project,
|
|
61
|
+
location=location,
|
|
62
|
+
http_options=http_options,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
def __getattr__(self, name: str) -> Any:
|
|
66
|
+
return getattr(self._client, name)
|
|
@@ -50,6 +50,7 @@ class LazyGroup(click.Group):
|
|
|
50
50
|
self._lazy_commands: dict[str, tuple[str, str]] = {}
|
|
51
51
|
# name -> experiment label
|
|
52
52
|
self._experiment_gates: dict[str, str] = {}
|
|
53
|
+
self._overrides: dict[str, click.Command] = {}
|
|
53
54
|
|
|
54
55
|
def add_lazy_command(
|
|
55
56
|
self,
|
|
@@ -81,12 +82,20 @@ class LazyGroup(click.Group):
|
|
|
81
82
|
return bool(resolve_experiment(label))
|
|
82
83
|
|
|
83
84
|
def list_commands(self, ctx: click.Context) -> list[str]:
|
|
84
|
-
names =
|
|
85
|
+
names = (
|
|
86
|
+
set(super().list_commands(ctx))
|
|
87
|
+
| set(self._lazy_commands)
|
|
88
|
+
| set(self._overrides)
|
|
89
|
+
)
|
|
85
90
|
return sorted(filter(self._is_visible, names))
|
|
86
91
|
|
|
87
92
|
def get_command(self, ctx: click.Context, cmd_name: str) -> click.Command | None:
|
|
93
|
+
# Overrides are consulted only after the visibility check, so an installed
|
|
94
|
+
# extension cannot expose a command that is gated off.
|
|
88
95
|
if not self._is_visible(cmd_name):
|
|
89
96
|
return None
|
|
97
|
+
if cmd_name in self._overrides:
|
|
98
|
+
return self._overrides[cmd_name]
|
|
90
99
|
if cmd_name in self._lazy_commands and cmd_name not in self.commands:
|
|
91
100
|
import_path, _ = self._lazy_commands[cmd_name]
|
|
92
101
|
module_path, attr = import_path.split(":")
|
|
@@ -98,6 +107,9 @@ class LazyGroup(click.Group):
|
|
|
98
107
|
def format_commands(self, ctx: click.Context, formatter: click.HelpFormatter) -> None:
|
|
99
108
|
rows: list[tuple[str, str]] = []
|
|
100
109
|
for name in self.list_commands(ctx):
|
|
110
|
+
if name in self._overrides:
|
|
111
|
+
rows.append((name, self._overrides[name].get_short_help_str(limit=1000)))
|
|
112
|
+
continue
|
|
101
113
|
if name in self.commands:
|
|
102
114
|
# Don't truncate — Click's default of 45 would cut our docstring summaries.
|
|
103
115
|
rows.append((name, self.commands[name].get_short_help_str(limit=1000)))
|