agent-starter-pack 0.15.0__tar.gz → 0.15.2__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.
Potentially problematic release.
This version of agent-starter-pack might be problematic. Click here for more details.
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/PKG-INFO +1 -1
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/adk_base/.template/templateconfig.yaml +1 -1
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/adk_base/README.md +1 -1
- {agent_starter_pack-0.15.0/agents/agentic_rag → agent_starter_pack-0.15.2/agents/adk_base}/notebooks/adk_app_testing.ipynb +16 -10
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/.template/templateconfig.yaml +1 -1
- {agent_starter_pack-0.15.0/agents/adk_base → agent_starter_pack-0.15.2/agents/agentic_rag}/notebooks/adk_app_testing.ipynb +16 -10
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/live_api/.template/templateconfig.yaml +1 -1
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/pyproject.toml +1 -1
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/pyproject.toml +2 -2
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/commands/enhance.py +170 -78
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/gcp.py +1 -1
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/template.py +35 -2
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py +6 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-adk_base-agent_engine.lock +385 -271
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-adk_base-cloud_run.lock +439 -310
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-agentic_rag-agent_engine.lock +418 -304
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-agentic_rag-cloud_run.lock +488 -359
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +412 -404
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +511 -488
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +343 -334
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +445 -421
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/locks/uv-live_api-cloud_run.lock +398 -373
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/integration/test_pipeline_parity.py +1 -1
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/uv.lock +1 -1
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.claude/settings.local.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/cd/test_e2e.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/build_use_wheel.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/lint.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/lint_templated_agents.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/test.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/test_makefile.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/test_pipeline_parity.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/test_remote_template.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/ci/test_templated_agents.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/terraform/apis.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/terraform/build_triggers.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/terraform/service_account.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/terraform/storage.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.cloudbuild/terraform/variables.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.github/workflows/docs.yml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/.gitignore +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/CLAUDE.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/CODE_OF_CONDUCT.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/CONTRIBUTING.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/GEMINI.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/LICENSE +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/Makefile +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/adk_base/app/__init__.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/adk_base/app/agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/adk_base/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/adk_base/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/app/__init__.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/app/agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/app/retrievers.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/app/templates.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/agentic_rag/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/app/agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/langgraph_base_react/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/langgraph_base_react/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/langgraph_base_react/app/agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/live_api/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/live_api/app/agent.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/live_api/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/live_api/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/agents/live_api/tests/unit/test_server.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/.vitepress/config.js +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/agents/overview.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/cli/create.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/cli/enhance.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/cli/index.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/cli/list.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/cli/setup_cicd.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/community-showcase.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/data-ingestion.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/deploy-ui.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/deployment.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/development-guide.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/getting-started.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/installation.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/observability.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/template-config-reference.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/troubleshooting.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/video-tutorials.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/guide/why_starter_pack.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/adk_gemini_fullstack.gif +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/adk_gemini_fullstack_architecture.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/adk_logo.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/agent_starter_pack_screenshot.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/ags_high_level_architecture.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/icon.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/logo.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/prototype_to_prod.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/why_sp_edited.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/images/why_starter_pack.png +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/index.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/package-lock.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/package.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/remote-templates/creating-remote-templates.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/remote-templates/index.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/docs/remote-templates/using-remote-templates.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/llm.txt +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/.gitignore +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/GEMINI.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/Makefile +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/apis.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/github.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/iam.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/locals.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/providers.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/storage.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/variables.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %} +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %} +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/tests/unit/test_dummy.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{{cookiecutter.agent_directory}}/utils/gcs.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{{cookiecutter.agent_directory}}/utils/tracing.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/base_template/{{cookiecutter.agent_directory}}/utils/typing.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/commands/create.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/commands/list.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/commands/setup_cicd.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/main.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/__init__.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/cicd.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/datastores.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/logging.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/remote_template.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/cli/utils/version.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/data_ingestion/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/data_ingestion/pyproject.toml +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/data_ingestion/uv.lock +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/Dockerfile +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/deployment/terraform/service.tf +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/deployment_targets/cloud_run/{{cookiecutter.agent_directory}}/server.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/package-lock.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/package.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/public/index.html +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/App.tsx +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/components/logger/logger.scss +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/index.css +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/multimodal-live-types.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/react-app-env.d.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/store-logger.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/side_bar.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/containers/data_processing/Dockerfile +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/containers/e2e-tests/Dockerfile +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/docs/adk-cheatsheet.md +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/idx/.idx/dev.nix +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/idx/idx-template.json +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/resources/idx/idx-template.nix +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/utils/generate_locks.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/utils/lock_utils.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/src/utils/watch_and_rebuild.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/__init__.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cicd/example.env +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cicd/scripts/delete_agent_engines.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cicd/scripts/delete_alloydb_clusters.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cicd/scripts/delete_vector_search.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cicd/test_e2e_deployment.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cli/commands/test_create.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cli/commands/test_create_local.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cli/commands/test_enhance.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cli/commands/test_list.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cli/commands/test_setup_cicd.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cli/utils/test_cicd.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/cli/utils/test_remote_template.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/integration/test_agent_directory_functionality.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/integration/test_makefile_usability.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/integration/test_remote_templating.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/integration/test_template_linting.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/integration/test_templated_patterns.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/integration/utils.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/test_frontend/test_side_bar.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/test_frontend/test_streamlit_app.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/utils/__init__.py +0 -0
- {agent_starter_pack-0.15.0 → agent_starter_pack-0.15.2}/tests/utils/get_agents.py +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
A basic agent built using the **[Google Agent Development Kit (ADK)](https://google.github.io/adk-docs/)**. This example demonstrates core ADK concepts like agent creation and tool integration in a minimal setup.
|
|
6
6
|
|
|
7
|
-
This agent uses the `gemini-2.
|
|
7
|
+
This agent uses the `gemini-2.5-flash` model and is equipped with two simple tools:
|
|
8
8
|
* `get_weather`: Simulates fetching weather (hardcoded for SF).
|
|
9
9
|
* `get_current_time`: Simulates fetching the time (hardcoded for SF).
|
|
10
10
|
|
|
@@ -4,15 +4,12 @@
|
|
|
4
4
|
"cell_type": "markdown",
|
|
5
5
|
"metadata": {},
|
|
6
6
|
"source": [
|
|
7
|
-
"# ADK Application Testing\n",
|
|
7
|
+
"# 🧪 ADK Application Testing\n",
|
|
8
8
|
"\n",
|
|
9
9
|
"This notebook demonstrates how to test an ADK (Agent Development Kit) application.\n",
|
|
10
10
|
"It covers both local and remote testing, both with Agent Engine and Cloud Run.\n",
|
|
11
11
|
"\n",
|
|
12
|
-
"> **Note**: This notebook assumes that the agent files are stored in the `app` folder. If your agent files are located in a different directory, please update all relevant file paths and references accordingly
|
|
13
|
-
"\n",
|
|
14
|
-
"<img src=\"https://github.com/GoogleCloudPlatform/agent-starter-pack/blob/main/docs/images/adk_logo.png?raw=true\" width=\"400\">\n",
|
|
15
|
-
"\n"
|
|
12
|
+
"> **Note**: This notebook assumes that the agent files are stored in the `app` folder. If your agent files are located in a different directory, please update all relevant file paths and references accordingly."
|
|
16
13
|
]
|
|
17
14
|
},
|
|
18
15
|
{
|
|
@@ -92,12 +89,21 @@
|
|
|
92
89
|
"metadata": {},
|
|
93
90
|
"outputs": [],
|
|
94
91
|
"source": [
|
|
95
|
-
"#
|
|
96
|
-
"
|
|
92
|
+
"# Set to None to auto-detect from ./deployment_metadata.json, or specify manually\n",
|
|
93
|
+
"# \"projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID\"\n",
|
|
94
|
+
"REASONING_ENGINE_ID = None\n",
|
|
95
|
+
"\n",
|
|
96
|
+
"if REASONING_ENGINE_ID is None:\n",
|
|
97
|
+
" try:\n",
|
|
98
|
+
" with open(\"../deployment_metadata.json\") as f:\n",
|
|
99
|
+
" metadata = json.load(f)\n",
|
|
100
|
+
" REASONING_ENGINE_ID = metadata.get(\"remote_agent_engine_id\")\n",
|
|
101
|
+
" except (FileNotFoundError, json.JSONDecodeError):\n",
|
|
102
|
+
" pass\n",
|
|
97
103
|
"\n",
|
|
104
|
+
"print(f\"Using REASONING_ENGINE_ID: {REASONING_ENGINE_ID}\")\n",
|
|
98
105
|
"# Get the existing agent engine\n",
|
|
99
|
-
"remote_agent_engine = client.agent_engines.get(name=
|
|
100
|
-
"print(f\"Retrieved agent engine: {remote_agent_engine.api_resource.name}\")"
|
|
106
|
+
"remote_agent_engine = client.agent_engines.get(name=REASONING_ENGINE_ID)"
|
|
101
107
|
]
|
|
102
108
|
},
|
|
103
109
|
{
|
|
@@ -354,7 +360,7 @@
|
|
|
354
360
|
],
|
|
355
361
|
"metadata": {
|
|
356
362
|
"kernelspec": {
|
|
357
|
-
"display_name": "myagent-
|
|
363
|
+
"display_name": "myagent-1758791726",
|
|
358
364
|
"language": "python",
|
|
359
365
|
"name": "python3"
|
|
360
366
|
},
|
|
@@ -4,15 +4,12 @@
|
|
|
4
4
|
"cell_type": "markdown",
|
|
5
5
|
"metadata": {},
|
|
6
6
|
"source": [
|
|
7
|
-
"# ADK Application Testing\n",
|
|
7
|
+
"# 🧪 ADK Application Testing\n",
|
|
8
8
|
"\n",
|
|
9
9
|
"This notebook demonstrates how to test an ADK (Agent Development Kit) application.\n",
|
|
10
10
|
"It covers both local and remote testing, both with Agent Engine and Cloud Run.\n",
|
|
11
11
|
"\n",
|
|
12
|
-
"> **Note**: This notebook assumes that the agent files are stored in the `app` folder. If your agent files are located in a different directory, please update all relevant file paths and references accordingly
|
|
13
|
-
"\n",
|
|
14
|
-
"<img src=\"https://github.com/GoogleCloudPlatform/agent-starter-pack/blob/main/docs/images/adk_logo.png?raw=true\" width=\"400\">\n",
|
|
15
|
-
"\n"
|
|
12
|
+
"> **Note**: This notebook assumes that the agent files are stored in the `app` folder. If your agent files are located in a different directory, please update all relevant file paths and references accordingly."
|
|
16
13
|
]
|
|
17
14
|
},
|
|
18
15
|
{
|
|
@@ -92,12 +89,21 @@
|
|
|
92
89
|
"metadata": {},
|
|
93
90
|
"outputs": [],
|
|
94
91
|
"source": [
|
|
95
|
-
"#
|
|
96
|
-
"
|
|
92
|
+
"# Set to None to auto-detect from ./deployment_metadata.json, or specify manually\n",
|
|
93
|
+
"# \"projects/PROJECT_ID/locations/us-central1/reasoningEngines/ENGINE_ID\"\n",
|
|
94
|
+
"REASONING_ENGINE_ID = None\n",
|
|
95
|
+
"\n",
|
|
96
|
+
"if REASONING_ENGINE_ID is None:\n",
|
|
97
|
+
" try:\n",
|
|
98
|
+
" with open(\"../deployment_metadata.json\") as f:\n",
|
|
99
|
+
" metadata = json.load(f)\n",
|
|
100
|
+
" REASONING_ENGINE_ID = metadata.get(\"remote_agent_engine_id\")\n",
|
|
101
|
+
" except (FileNotFoundError, json.JSONDecodeError):\n",
|
|
102
|
+
" pass\n",
|
|
97
103
|
"\n",
|
|
104
|
+
"print(f\"Using REASONING_ENGINE_ID: {REASONING_ENGINE_ID}\")\n",
|
|
98
105
|
"# Get the existing agent engine\n",
|
|
99
|
-
"remote_agent_engine = client.agent_engines.get(name=
|
|
100
|
-
"print(f\"Retrieved agent engine: {remote_agent_engine.api_resource.name}\")"
|
|
106
|
+
"remote_agent_engine = client.agent_engines.get(name=REASONING_ENGINE_ID)"
|
|
101
107
|
]
|
|
102
108
|
},
|
|
103
109
|
{
|
|
@@ -354,7 +360,7 @@
|
|
|
354
360
|
],
|
|
355
361
|
"metadata": {
|
|
356
362
|
"kernelspec": {
|
|
357
|
-
"display_name": "myagent-
|
|
363
|
+
"display_name": "myagent-1758791726",
|
|
358
364
|
"language": "python",
|
|
359
365
|
"name": "python3"
|
|
360
366
|
},
|
|
@@ -16,12 +16,12 @@ dependencies = [
|
|
|
16
16
|
{%- endif %}
|
|
17
17
|
"google-cloud-logging>=3.12.0",
|
|
18
18
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
|
19
|
-
"google-cloud-aiplatform[evaluation]~=1.
|
|
19
|
+
"google-cloud-aiplatform[evaluation]~=1.116.0",
|
|
20
20
|
"fastapi~=0.115.8",
|
|
21
21
|
"uvicorn~=0.34.0",
|
|
22
22
|
"psycopg2-binary>=2.9.10",
|
|
23
23
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
|
24
|
-
"google-cloud-aiplatform[evaluation,agent-engines]~=1.
|
|
24
|
+
"google-cloud-aiplatform[evaluation,agent-engines]~=1.116.0"
|
|
25
25
|
{%- endif %}
|
|
26
26
|
]
|
|
27
27
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import pathlib
|
|
16
|
+
import re
|
|
16
17
|
import sys
|
|
17
18
|
from typing import Any
|
|
18
19
|
|
|
@@ -26,7 +27,7 @@ else:
|
|
|
26
27
|
import tomli as tomllib
|
|
27
28
|
|
|
28
29
|
from ..utils.logging import display_welcome_banner, handle_cli_error
|
|
29
|
-
from ..utils.template import get_available_agents
|
|
30
|
+
from ..utils.template import get_available_agents, validate_agent_directory_name
|
|
30
31
|
from .create import (
|
|
31
32
|
create,
|
|
32
33
|
get_available_base_templates,
|
|
@@ -96,82 +97,110 @@ def display_agent_directory_selection(
|
|
|
96
97
|
current_dir: pathlib.Path, detected_directory: str
|
|
97
98
|
) -> str:
|
|
98
99
|
"""Display available directories and prompt for agent directory selection."""
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
100
|
+
while True:
|
|
101
|
+
console.print()
|
|
102
|
+
console.print("📁 [bold]Agent Directory Selection[/bold]")
|
|
103
|
+
console.print()
|
|
104
|
+
console.print("Your project needs an agent directory containing:")
|
|
105
|
+
console.print(" • [cyan]agent.py[/cyan] file with your agent logic")
|
|
106
|
+
console.print(" • [cyan]root_agent[/cyan] variable defined in agent.py")
|
|
107
|
+
console.print()
|
|
108
|
+
console.print("Choose where your agent code is located:")
|
|
109
|
+
|
|
110
|
+
# Get all directories in the current path (excluding hidden and common non-agent dirs)
|
|
111
|
+
available_dirs = [
|
|
112
|
+
item.name
|
|
113
|
+
for item in current_dir.iterdir()
|
|
114
|
+
if (
|
|
115
|
+
item.is_dir()
|
|
116
|
+
and not item.name.startswith(".")
|
|
117
|
+
and item.name not in _EXCLUDED_DIRS
|
|
118
|
+
)
|
|
119
|
+
]
|
|
114
120
|
|
|
115
|
-
|
|
116
|
-
|
|
121
|
+
# Sort directories and create choices
|
|
122
|
+
available_dirs.sort()
|
|
117
123
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
124
|
+
directory_choices = {}
|
|
125
|
+
choice_num = 1
|
|
126
|
+
default_choice = None
|
|
121
127
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
default_choice = choice_num
|
|
132
|
-
choice_num += 1
|
|
133
|
-
# Remove from available_dirs to avoid duplication
|
|
134
|
-
available_dirs.remove(detected_directory)
|
|
135
|
-
|
|
136
|
-
# Add other available directories
|
|
137
|
-
for dir_name in available_dirs:
|
|
138
|
-
directory_choices[choice_num] = dir_name
|
|
139
|
-
# Check if this directory might contain agent code
|
|
140
|
-
agent_files_exist = any((current_dir / dir_name).glob("*agent*.py"))
|
|
141
|
-
hint = " (contains agent*.py)" if agent_files_exist else ""
|
|
142
|
-
console.print(f" {choice_num}. [bold]{dir_name}[/]{hint}")
|
|
143
|
-
if (
|
|
144
|
-
default_choice is None
|
|
145
|
-
): # If no detected directory exists, use first available as default
|
|
128
|
+
# Only include the detected directory if it actually exists
|
|
129
|
+
if detected_directory in available_dirs:
|
|
130
|
+
directory_choices[choice_num] = detected_directory
|
|
131
|
+
current_indicator = (
|
|
132
|
+
" (detected)" if detected_directory != "app" else " (default)"
|
|
133
|
+
)
|
|
134
|
+
console.print(
|
|
135
|
+
f" {choice_num}. [bold]{detected_directory}[/]{current_indicator}"
|
|
136
|
+
)
|
|
146
137
|
default_choice = choice_num
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
138
|
+
choice_num += 1
|
|
139
|
+
# Remove from available_dirs to avoid duplication
|
|
140
|
+
available_dirs.remove(detected_directory)
|
|
141
|
+
|
|
142
|
+
# Add other available directories
|
|
143
|
+
for dir_name in available_dirs:
|
|
144
|
+
directory_choices[choice_num] = dir_name
|
|
145
|
+
# Check if this directory might contain agent code
|
|
146
|
+
agent_py_exists = (current_dir / dir_name / "agent.py").exists()
|
|
147
|
+
hint = " (has agent.py)" if agent_py_exists else ""
|
|
148
|
+
console.print(f" {choice_num}. [bold]{dir_name}[/]{hint}")
|
|
149
|
+
if (
|
|
150
|
+
default_choice is None
|
|
151
|
+
): # If no detected directory exists, use first available as default
|
|
152
|
+
default_choice = choice_num
|
|
153
|
+
choice_num += 1
|
|
154
|
+
|
|
155
|
+
# Add option for custom directory
|
|
156
|
+
custom_choice = choice_num
|
|
157
|
+
directory_choices[custom_choice] = "__custom__"
|
|
158
|
+
console.print(f" {custom_choice}. [bold]Enter custom directory name[/]")
|
|
159
|
+
|
|
160
|
+
# If no directories found and no default set, default to custom option
|
|
161
|
+
if default_choice is None:
|
|
162
|
+
default_choice = custom_choice
|
|
157
163
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
164
|
+
console.print()
|
|
165
|
+
choice = IntPrompt.ask(
|
|
166
|
+
"Select agent directory", default=default_choice, show_default=True
|
|
167
|
+
)
|
|
162
168
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
169
|
+
if choice in directory_choices:
|
|
170
|
+
selected = directory_choices[choice]
|
|
171
|
+
if selected == "__custom__":
|
|
172
|
+
console.print()
|
|
173
|
+
while True:
|
|
174
|
+
custom_dir = Prompt.ask(
|
|
175
|
+
"Enter custom agent directory name", default=detected_directory
|
|
176
|
+
)
|
|
177
|
+
try:
|
|
178
|
+
validate_agent_directory_name(custom_dir)
|
|
179
|
+
return custom_dir
|
|
180
|
+
except ValueError as e:
|
|
181
|
+
console.print(f"[bold red]Error:[/] {e}", style="bold red")
|
|
182
|
+
console.print("Please try again with a valid directory name.")
|
|
183
|
+
else:
|
|
184
|
+
# Validate existing directory selection as well
|
|
185
|
+
try:
|
|
186
|
+
validate_agent_directory_name(selected)
|
|
187
|
+
return selected
|
|
188
|
+
except ValueError as e:
|
|
189
|
+
console.print(f"[bold red]Error:[/] {e}", style="bold red")
|
|
190
|
+
console.print(
|
|
191
|
+
"This directory cannot be used as an agent directory. Please select another option."
|
|
192
|
+
)
|
|
193
|
+
console.print()
|
|
194
|
+
# Continue the loop to re-prompt without recursion
|
|
195
|
+
continue
|
|
171
196
|
else:
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
197
|
+
console.print(
|
|
198
|
+
f"[bold red]Error:[/] Invalid selection: {choice}", style="bold red"
|
|
199
|
+
)
|
|
200
|
+
console.print("Please choose a valid option from the list.")
|
|
201
|
+
console.print()
|
|
202
|
+
# Continue the loop to re-prompt without recursion
|
|
203
|
+
continue
|
|
175
204
|
|
|
176
205
|
|
|
177
206
|
@click.command()
|
|
@@ -389,11 +418,8 @@ def enhance(
|
|
|
389
418
|
)
|
|
390
419
|
pass # Fall back to default
|
|
391
420
|
|
|
392
|
-
#
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
# Interactive agent directory selection if not provided via CLI, no app folder exists, and not auto-approved
|
|
396
|
-
if not agent_directory and not app_folder_exists and not auto_approve:
|
|
421
|
+
# Interactive agent directory selection if not provided via CLI and not auto-approved
|
|
422
|
+
if not agent_directory and not auto_approve:
|
|
397
423
|
selected_agent_directory = display_agent_directory_selection(
|
|
398
424
|
current_dir, detected_agent_directory
|
|
399
425
|
)
|
|
@@ -464,16 +490,82 @@ def enhance(
|
|
|
464
490
|
console.print("✋ [yellow]Enhancement cancelled.[/yellow]")
|
|
465
491
|
return
|
|
466
492
|
else:
|
|
467
|
-
# Check for
|
|
493
|
+
# Check for agent.py and validate required object
|
|
468
494
|
agent_py = agent_folder / "agent.py"
|
|
495
|
+
|
|
496
|
+
# Determine required object outside of if/else blocks to avoid NameError
|
|
497
|
+
is_adk = base_template and "adk" in base_template.lower()
|
|
498
|
+
required_object = "root_agent" if is_adk else "agent"
|
|
499
|
+
|
|
469
500
|
if agent_py.exists():
|
|
470
501
|
console.print(
|
|
471
|
-
f"
|
|
502
|
+
f"✅ Found [cyan]/{final_agent_directory}/agent.py[/cyan]"
|
|
472
503
|
)
|
|
504
|
+
|
|
505
|
+
try:
|
|
506
|
+
content = agent_py.read_text(encoding="utf-8")
|
|
507
|
+
|
|
508
|
+
# Look for the required object definition using static analysis
|
|
509
|
+
patterns = [
|
|
510
|
+
rf"^\s*{required_object}\s*=", # assignment: root_agent = ...
|
|
511
|
+
rf"^\s*def\s+{required_object}", # function: def root_agent(...)
|
|
512
|
+
rf"from\s+.*\s+import\s+.*{required_object}", # import: from ... import root_agent
|
|
513
|
+
]
|
|
514
|
+
|
|
515
|
+
found = any(
|
|
516
|
+
re.search(pattern, content, re.MULTILINE)
|
|
517
|
+
for pattern in patterns
|
|
518
|
+
)
|
|
519
|
+
|
|
520
|
+
if found:
|
|
521
|
+
console.print(
|
|
522
|
+
f"✅ Found '{required_object}' definition in {final_agent_directory}/agent.py"
|
|
523
|
+
)
|
|
524
|
+
else:
|
|
525
|
+
console.print(
|
|
526
|
+
f"⚠️ [yellow]Missing '{required_object}' variable in {final_agent_directory}/agent.py[/yellow]"
|
|
527
|
+
)
|
|
528
|
+
console.print(
|
|
529
|
+
" This variable should contain your main agent instance for deployment."
|
|
530
|
+
)
|
|
531
|
+
console.print(
|
|
532
|
+
f" Example: [cyan]{required_object} = YourAgentClass()[/cyan]"
|
|
533
|
+
)
|
|
534
|
+
# Show ADK docs link for ADK templates
|
|
535
|
+
if is_adk:
|
|
536
|
+
console.print(
|
|
537
|
+
" 📖 Learn more: [cyan][link=https://google.github.io/adk-docs/get-started/quickstart/#agentpy]ADK agent.py guide[/link][/cyan]"
|
|
538
|
+
)
|
|
539
|
+
console.print()
|
|
540
|
+
if not auto_approve:
|
|
541
|
+
if not click.confirm(
|
|
542
|
+
f"Continue enhancement? (You can add '{required_object}' later)",
|
|
543
|
+
default=True,
|
|
544
|
+
):
|
|
545
|
+
console.print(
|
|
546
|
+
"✋ [yellow]Enhancement cancelled.[/yellow]"
|
|
547
|
+
)
|
|
548
|
+
return
|
|
549
|
+
|
|
550
|
+
except Exception as e:
|
|
551
|
+
console.print(
|
|
552
|
+
f"⚠️ [yellow]Warning: Could not read {final_agent_directory}/agent.py: {e}[/yellow]"
|
|
553
|
+
)
|
|
473
554
|
else:
|
|
474
555
|
console.print(
|
|
475
|
-
f"
|
|
556
|
+
f"⚠️ [yellow]Warning: {final_agent_directory}/agent.py not found[/yellow]"
|
|
476
557
|
)
|
|
558
|
+
console.print(
|
|
559
|
+
f" Create {final_agent_directory}/agent.py with your agent logic and define: [cyan]{required_object} = your_agent_instance[/cyan]"
|
|
560
|
+
)
|
|
561
|
+
console.print()
|
|
562
|
+
if not auto_approve:
|
|
563
|
+
if not click.confirm(
|
|
564
|
+
f"Continue enhancement? (An example {final_agent_directory}/agent.py will be created for you)",
|
|
565
|
+
default=True,
|
|
566
|
+
):
|
|
567
|
+
console.print("✋ [yellow]Enhancement cancelled.[/yellow]")
|
|
568
|
+
return
|
|
477
569
|
|
|
478
570
|
# Prepare CLI overrides to pass to create command
|
|
479
571
|
final_cli_overrides: dict[str, Any] = {}
|
|
@@ -147,7 +147,7 @@ def get_dummy_request(project_id: str) -> CountTokensRequest:
|
|
|
147
147
|
"""Creates a simple test request for Gemini."""
|
|
148
148
|
return CountTokensRequest(
|
|
149
149
|
contents=[{"role": "user", "parts": [{"text": "Hi"}]}],
|
|
150
|
-
endpoint=f"projects/{project_id}/locations/global/publishers/google/models/gemini-2.
|
|
150
|
+
endpoint=f"projects/{project_id}/locations/global/publishers/google/models/gemini-2.5-flash",
|
|
151
151
|
)
|
|
152
152
|
|
|
153
153
|
|
|
@@ -35,6 +35,30 @@ from .remote_template import (
|
|
|
35
35
|
)
|
|
36
36
|
|
|
37
37
|
|
|
38
|
+
def validate_agent_directory_name(agent_dir: str) -> None:
|
|
39
|
+
"""Validate that an agent directory name is a valid Python identifier.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
agent_dir: The agent directory name to validate
|
|
43
|
+
|
|
44
|
+
Raises:
|
|
45
|
+
ValueError: If the agent directory name is not a valid Python identifier
|
|
46
|
+
"""
|
|
47
|
+
if "-" in agent_dir:
|
|
48
|
+
raise ValueError(
|
|
49
|
+
f"Agent directory '{agent_dir}' contains hyphens (-) which are not allowed. "
|
|
50
|
+
"Agent directories must be valid Python identifiers since they're used as module names. "
|
|
51
|
+
"Please use underscores (_) or lowercase letters instead."
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
if not agent_dir.replace("_", "a").isidentifier():
|
|
55
|
+
raise ValueError(
|
|
56
|
+
f"Agent directory '{agent_dir}' is not a valid Python identifier. "
|
|
57
|
+
"Agent directories must be valid Python identifiers since they're used as module names. "
|
|
58
|
+
"Please use only lowercase letters, numbers, and underscores, and don't start with a number."
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
|
|
38
62
|
@dataclass
|
|
39
63
|
class TemplateConfig:
|
|
40
64
|
name: str
|
|
@@ -478,13 +502,22 @@ def process_template(
|
|
|
478
502
|
template_config: dict[str, Any], cli_overrides: dict[str, Any] | None = None
|
|
479
503
|
) -> str:
|
|
480
504
|
"""Get agent directory with CLI override support."""
|
|
505
|
+
agent_dir = None
|
|
481
506
|
if (
|
|
482
507
|
cli_overrides
|
|
483
508
|
and "settings" in cli_overrides
|
|
484
509
|
and "agent_directory" in cli_overrides["settings"]
|
|
485
510
|
):
|
|
486
|
-
|
|
487
|
-
|
|
511
|
+
agent_dir = cli_overrides["settings"]["agent_directory"]
|
|
512
|
+
else:
|
|
513
|
+
agent_dir = template_config.get("settings", {}).get(
|
|
514
|
+
"agent_directory", "app"
|
|
515
|
+
)
|
|
516
|
+
|
|
517
|
+
# Validate agent directory is a valid Python identifier
|
|
518
|
+
validate_agent_directory_name(agent_dir)
|
|
519
|
+
|
|
520
|
+
return agent_dir
|
|
488
521
|
|
|
489
522
|
# Handle remote vs local templates
|
|
490
523
|
is_remote = remote_template_path is not None
|
|
@@ -282,6 +282,12 @@ def deploy_agent_engine_app(
|
|
|
282
282
|
|
|
283
283
|
logging.info(f"Agent Engine ID written to {metadata_file}")
|
|
284
284
|
|
|
285
|
+
{%- if "adk" in cookiecutter.tags %}
|
|
286
|
+
print(
|
|
287
|
+
"\n✅ Deployment successful! Test your agent: notebooks/adk_app_testing.ipynb\n"
|
|
288
|
+
)
|
|
289
|
+
{%- endif %}
|
|
290
|
+
|
|
285
291
|
return remote_agent
|
|
286
292
|
|
|
287
293
|
|