agent-starter-pack 0.16.0__py3-none-any.whl → 0.17.0__py3-none-any.whl
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.
- {agents → agent_starter_pack/agents}/adk_live/.template/templateconfig.yaml +1 -1
- {agents → agent_starter_pack/agents}/adk_live/README.md +2 -1
- {src → agent_starter_pack}/base_template/Makefile +2 -2
- {src → agent_starter_pack}/base_template/deployment/terraform/dev/log_sinks.tf +31 -25
- {src → agent_starter_pack}/base_template/deployment/terraform/dev/providers.tf +1 -1
- {src → agent_starter_pack}/base_template/deployment/terraform/github.tf +14 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/log_sinks.tf +37 -28
- {src → agent_starter_pack}/base_template/deployment/terraform/providers.tf +1 -1
- {src → agent_starter_pack}/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %} +4 -2
- {src → agent_starter_pack}/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +3 -3
- {src → agent_starter_pack}/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml +2 -2
- {src → agent_starter_pack}/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +3 -3
- {src → agent_starter_pack}/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml +4 -4
- {src → agent_starter_pack}/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml +3 -3
- {src → agent_starter_pack}/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml +7 -7
- {src → agent_starter_pack}/cli/commands/setup_cicd.py +1 -1
- {src → agent_starter_pack}/cli/main.py +2 -2
- {src → agent_starter_pack}/cli/utils/gcp.py +1 -1
- {src → agent_starter_pack}/cli/utils/remote_template.py +12 -9
- {src → agent_starter_pack}/cli/utils/template.py +7 -10
- agent_starter_pack/deployment_targets/agent_engine/deployment/terraform/{% if not cookiecutter.is_adk_live %}service.tf{% else %}unused_service.tf{% endif %} +82 -0
- {src → agent_starter_pack}/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py +29 -11
- {src → agent_starter_pack}/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/deployment.py +11 -6
- {src → agent_starter_pack}/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/{% if cookiecutter.is_adk_live %}expose_app.py{% else %}unused_expose_app.py{% endif %} +110 -51
- {src → agent_starter_pack}/deployment_targets/cloud_run/{{cookiecutter.agent_directory}}/server.py +12 -0
- {src → agent_starter_pack}/resources/docs/adk-cheatsheet.md +5 -5
- {src → agent_starter_pack}/resources/locks/uv-adk_base-agent_engine.lock +741 -701
- {src → agent_starter_pack}/resources/locks/uv-adk_base-cloud_run.lock +1032 -993
- {src → agent_starter_pack}/resources/locks/uv-adk_live-agent_engine.lock +742 -702
- {src → agent_starter_pack}/resources/locks/uv-adk_live-cloud_run.lock +1033 -994
- {src → agent_starter_pack}/resources/locks/uv-agentic_rag-agent_engine.lock +769 -744
- {src → agent_starter_pack}/resources/locks/uv-agentic_rag-cloud_run.lock +1076 -1052
- {src → agent_starter_pack}/resources/locks/uv-crewai_coding_crew-agent_engine.lock +930 -916
- {src → agent_starter_pack}/resources/locks/uv-crewai_coding_crew-cloud_run.lock +1263 -1253
- {src → agent_starter_pack}/resources/locks/uv-langgraph_base_react-agent_engine.lock +814 -807
- {src → agent_starter_pack}/resources/locks/uv-langgraph_base_react-cloud_run.lock +1170 -1167
- {src → agent_starter_pack}/utils/generate_locks.py +4 -3
- {src → agent_starter_pack}/utils/lock_utils.py +2 -2
- {src → agent_starter_pack}/utils/watch_and_rebuild.py +1 -1
- {agent_starter_pack-0.16.0.dist-info → agent_starter_pack-0.17.0.dist-info}/METADATA +17 -18
- agent_starter_pack-0.17.0.dist-info/RECORD +179 -0
- agent_starter_pack-0.17.0.dist-info/entry_points.txt +2 -0
- agent_starter_pack-0.16.0.dist-info/RECORD +0 -178
- agent_starter_pack-0.16.0.dist-info/entry_points.txt +0 -2
- {agents → agent_starter_pack/agents}/README.md +0 -0
- {agents → agent_starter_pack/agents}/adk_base/.template/templateconfig.yaml +0 -0
- {agents → agent_starter_pack/agents}/adk_base/README.md +0 -0
- {agents → agent_starter_pack/agents}/adk_base/app/__init__.py +0 -0
- {agents → agent_starter_pack/agents}/adk_base/app/agent.py +0 -0
- {agents → agent_starter_pack/agents}/adk_base/notebooks/adk_app_testing.ipynb +0 -0
- {agents → agent_starter_pack/agents}/adk_base/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agents → agent_starter_pack/agents}/adk_base/tests/integration/test_agent.py +0 -0
- {agents → agent_starter_pack/agents}/adk_live/app/agent.py +0 -0
- {agents → agent_starter_pack/agents}/adk_live/tests/unit/test_dummy.py +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/.template/templateconfig.yaml +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/README.md +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/app/__init__.py +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/app/agent.py +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/app/retrievers.py +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/app/templates.py +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/notebooks/adk_app_testing.ipynb +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/notebooks/evaluating_adk_agent.ipynb +0 -0
- {agents → agent_starter_pack/agents}/agentic_rag/tests/integration/test_agent.py +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/.template/templateconfig.yaml +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/README.md +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/app/agent.py +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/app/crew/crew.py +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agents → agent_starter_pack/agents}/crewai_coding_crew/tests/integration/test_agent.py +0 -0
- {agents → agent_starter_pack/agents}/langgraph_base_react/.template/templateconfig.yaml +0 -0
- {agents → agent_starter_pack/agents}/langgraph_base_react/README.md +0 -0
- {agents → agent_starter_pack/agents}/langgraph_base_react/app/agent.py +0 -0
- {agents → agent_starter_pack/agents}/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agents → agent_starter_pack/agents}/langgraph_base_react/tests/integration/test_agent.py +0 -0
- {src → agent_starter_pack}/base_template/.gitignore +0 -0
- {src → agent_starter_pack}/base_template/GEMINI.md +0 -0
- {src → agent_starter_pack}/base_template/README.md +0 -0
- {src → agent_starter_pack}/base_template/deployment/README.md +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/apis.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/dev/apis.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/dev/iam.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/dev/storage.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/dev/variables.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/iam.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/locals.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/service_accounts.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/storage.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/variables.tf +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/vars/env.tfvars +0 -0
- {src → agent_starter_pack}/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %} +0 -0
- {src → agent_starter_pack}/base_template/pyproject.toml +0 -0
- {src → agent_starter_pack}/base_template/tests/unit/test_dummy.py +0 -0
- {src → agent_starter_pack}/base_template/{{cookiecutter.agent_directory}}/utils/gcs.py +0 -0
- {src → agent_starter_pack}/base_template/{{cookiecutter.agent_directory}}/utils/tracing.py +0 -0
- {src → agent_starter_pack}/base_template/{{cookiecutter.agent_directory}}/utils/typing.py +0 -0
- {src → agent_starter_pack}/cli/commands/create.py +0 -0
- {src → agent_starter_pack}/cli/commands/enhance.py +0 -0
- {src → agent_starter_pack}/cli/commands/list.py +0 -0
- {src → agent_starter_pack}/cli/utils/__init__.py +0 -0
- {src → agent_starter_pack}/cli/utils/cicd.py +0 -0
- {src → agent_starter_pack}/cli/utils/datastores.py +0 -0
- {src → agent_starter_pack}/cli/utils/logging.py +0 -0
- {src → agent_starter_pack}/cli/utils/version.py +0 -0
- {src → agent_starter_pack}/data_ingestion/README.md +0 -0
- {src → agent_starter_pack}/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
- {src → agent_starter_pack}/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
- {src → agent_starter_pack}/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
- {src → agent_starter_pack}/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
- {src → agent_starter_pack}/data_ingestion/pyproject.toml +0 -0
- {src → agent_starter_pack}/data_ingestion/uv.lock +0 -0
- {src → agent_starter_pack}/deployment_targets/agent_engine/deployment_metadata.json +0 -0
- {src → agent_starter_pack}/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb +0 -0
- {src → agent_starter_pack}/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
- {src → agent_starter_pack}/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
- {src → agent_starter_pack}/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
- {src → agent_starter_pack}/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
- {src → agent_starter_pack}/deployment_targets/cloud_run/Dockerfile +0 -0
- {src → agent_starter_pack}/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +0 -0
- {src → agent_starter_pack}/deployment_targets/cloud_run/deployment/terraform/service.tf +0 -0
- {src → agent_starter_pack}/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
- {src → agent_starter_pack}/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
- {src → agent_starter_pack}/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
- {src → agent_starter_pack}/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/package-lock.json +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/package.json +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/public/favicon.ico +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/public/index.html +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/public/robots.txt +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/App.scss +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/App.test.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/App.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/logger/Logger.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/logger/logger.scss +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/logger/mock-logs.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/side-panel/SidePanel.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/side-panel/side-panel.scss +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/transcription-preview/TranscriptionPreview.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/components/transcription-preview/transcription-preview.scss +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/hooks/use-live-api.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/hooks/use-screen-capture.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/hooks/use-webcam.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/index.css +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/index.tsx +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/multimodal-live-types.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/react-app-env.d.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/reportWebVitals.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/setupTests.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/audio-recorder.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/audio-streamer.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/audioworklet-registry.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/multimodal-live-client.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/store-logger.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/utils.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
- {src → agent_starter_pack}/frontends/adk_live_react/frontend/tsconfig.json +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/side_bar.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/streamlit_app.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/style/app_markdown.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/utils/message_editing.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
- {src → agent_starter_pack}/frontends/streamlit/frontend/utils/title_summary.py +0 -0
- {src → agent_starter_pack}/resources/containers/data_processing/Dockerfile +0 -0
- {src → agent_starter_pack}/resources/containers/e2e-tests/Dockerfile +0 -0
- {src → agent_starter_pack}/resources/idx/.idx/dev.nix +0 -0
- {src → agent_starter_pack}/resources/idx/idx-template.json +0 -0
- {src → agent_starter_pack}/resources/idx/idx-template.nix +0 -0
- {agent_starter_pack-0.16.0.dist-info → agent_starter_pack-0.17.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.16.0.dist-info → agent_starter_pack-0.17.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -17,6 +17,6 @@ settings:
|
|
|
17
17
|
requires_data_ingestion: false
|
|
18
18
|
frontend_type: "adk_live_react"
|
|
19
19
|
deployment_targets: ["agent_engine", "cloud_run"]
|
|
20
|
-
extra_dependencies: ["google-adk>=1.
|
|
20
|
+
extra_dependencies: ["google-adk>=1.16.0,<2.0.0", "click>=8.0.0,<9.0.0", "uvicorn>=0.18.0,<1.0.0", "fastapi>=0.75.0,<1.0.0", "backoff>=2.0.0,<3.0.0"]
|
|
21
21
|
tags: ["adk", "adk_live"]
|
|
22
22
|
example_question: "What's the weather in San Francisco?"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Real-time conversational agent built with Google ADK and Gemini's live audio model. Supports audio, video, and text interactions with native tool calling.
|
|
4
4
|
|
|
5
|
-

|
|
6
6
|
|
|
7
7
|
**Key components:**
|
|
8
8
|
|
|
@@ -19,6 +19,7 @@ Once running, click the play button to connect and interact with the agent. Try
|
|
|
19
19
|
Explore these resources to learn more about the Multimodal Live API and see examples of its usage:
|
|
20
20
|
|
|
21
21
|
- [Project Pastra](https://github.com/heiko-hotz/gemini-multimodal-live-dev-guide/tree/main): a comprehensive developer guide for the Gemini Multimodal Live API.
|
|
22
|
+
- [ADK Samples: Realtime Conversational Agent](https://github.com/google/adk-samples/tree/main/python/agents/realtime-conversational-agent): Full-stack, reusable template using Agent Development Kit (ADK) with the Gemini Live API.
|
|
22
23
|
- [Google Cloud Multimodal Live API demos and samples](https://github.com/GoogleCloudPlatform/generative-ai/tree/main/gemini/multimodal-live-api): Collection of code samples and demo applications leveraging multimodal live API in Vertex AI
|
|
23
24
|
- [Gemini 2 Cookbook](https://github.com/google-gemini/cookbook/tree/main/gemini-2): Practical examples and tutorials for working with Gemini 2
|
|
24
25
|
- [Multimodal Live API Web Console](https://github.com/google-gemini/multimodal-live-api-web-console): Interactive React-based web interface for testing and experimenting with Gemini Multimodal Live API.
|
|
@@ -38,7 +38,7 @@ playground:{%- if cookiecutter.is_adk_live %} build-frontend-if-needed{%- endif
|
|
|
38
38
|
@echo "==============================================================================="
|
|
39
39
|
{%- if cookiecutter.is_adk_live %}
|
|
40
40
|
{%- if cookiecutter.deployment_target == 'agent_engine' %}
|
|
41
|
-
uv run python -m {{cookiecutter.agent_directory}}.utils.expose_app --mode local
|
|
41
|
+
uv run python -m {{cookiecutter.agent_directory}}.utils.expose_app --mode local --local-agent {{cookiecutter.agent_directory}}.agent.root_agent
|
|
42
42
|
{%- else %}
|
|
43
43
|
uv run uvicorn {{cookiecutter.agent_directory}}.server:app --host localhost --port 8000 --reload
|
|
44
44
|
{%- endif %}
|
|
@@ -111,7 +111,7 @@ local-backend:
|
|
|
111
111
|
|
|
112
112
|
# Launch local development server with hot-reload
|
|
113
113
|
local-backend:
|
|
114
|
-
uv run python -m {{cookiecutter.agent_directory}}.utils.expose_app --mode local --port 8000
|
|
114
|
+
uv run python -m {{cookiecutter.agent_directory}}.utils.expose_app --mode local --port 8000 --local-agent {{cookiecutter.agent_directory}}.agent.root_agent
|
|
115
115
|
|
|
116
116
|
# Connect to remote deployed agent
|
|
117
117
|
playground-remote: build-frontend-if-needed
|
|
@@ -12,13 +12,6 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
resource "google_project_iam_member" "bigquery_data_editor" {
|
|
16
|
-
|
|
17
|
-
project = var.dev_project_id
|
|
18
|
-
role = "roles/bigquery.dataEditor"
|
|
19
|
-
member = module.log_export_to_bigquery.writer_identity
|
|
20
|
-
}
|
|
21
|
-
|
|
22
15
|
resource "google_bigquery_dataset" "feedback_dataset" {
|
|
23
16
|
project = var.dev_project_id
|
|
24
17
|
dataset_id = replace("${var.project_name}_feedback", "-", "_")
|
|
@@ -35,29 +28,42 @@ resource "google_bigquery_dataset" "telemetry_logs_dataset" {
|
|
|
35
28
|
depends_on = [resource.google_project_service.services]
|
|
36
29
|
}
|
|
37
30
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
31
|
+
resource "google_logging_project_sink" "feedback_export_to_bigquery" {
|
|
32
|
+
name = "${var.project_name}_feedback"
|
|
33
|
+
project = var.dev_project_id
|
|
34
|
+
destination = "bigquery.googleapis.com/projects/${var.dev_project_id}/datasets/${google_bigquery_dataset.feedback_dataset.dataset_id}"
|
|
35
|
+
filter = var.feedback_logs_filter
|
|
36
|
+
|
|
37
|
+
bigquery_options {
|
|
38
|
+
use_partitioned_tables = true
|
|
39
|
+
}
|
|
40
|
+
|
|
47
41
|
unique_writer_identity = true
|
|
48
42
|
depends_on = [google_bigquery_dataset.feedback_dataset]
|
|
49
43
|
}
|
|
50
44
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
resource "google_logging_project_sink" "log_export_to_bigquery" {
|
|
46
|
+
name = "${var.project_name}_telemetry"
|
|
47
|
+
project = var.dev_project_id
|
|
48
|
+
destination = "bigquery.googleapis.com/projects/${var.dev_project_id}/datasets/${google_bigquery_dataset.telemetry_logs_dataset.dataset_id}"
|
|
49
|
+
filter = var.telemetry_logs_filter
|
|
50
|
+
|
|
51
|
+
bigquery_options {
|
|
52
|
+
use_partitioned_tables = true
|
|
53
|
+
}
|
|
54
54
|
|
|
55
|
-
log_sink_name = "${var.project_name}_telemetry"
|
|
56
|
-
parent_resource_type = "project"
|
|
57
|
-
parent_resource_id = var.dev_project_id
|
|
58
|
-
destination_uri = "bigquery.googleapis.com/projects/${var.dev_project_id}/datasets/${google_bigquery_dataset.telemetry_logs_dataset.dataset_id}"
|
|
59
|
-
filter = var.telemetry_logs_filter
|
|
60
|
-
bigquery_options = { use_partitioned_tables = true }
|
|
61
55
|
unique_writer_identity = true
|
|
62
56
|
depends_on = [google_bigquery_dataset.telemetry_logs_dataset]
|
|
63
57
|
}
|
|
58
|
+
|
|
59
|
+
resource "google_project_iam_member" "bigquery_data_editor" {
|
|
60
|
+
project = var.dev_project_id
|
|
61
|
+
role = "roles/bigquery.dataEditor"
|
|
62
|
+
member = google_logging_project_sink.log_export_to_bigquery.writer_identity
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
resource "google_project_iam_member" "feedback_bigquery_data_editor" {
|
|
66
|
+
project = var.dev_project_id
|
|
67
|
+
role = "roles/bigquery.dataEditor"
|
|
68
|
+
member = google_logging_project_sink.feedback_export_to_bigquery.writer_identity
|
|
69
|
+
}
|
|
@@ -119,6 +119,20 @@ resource "github_actions_variable" "app_sa_email_prod" {
|
|
|
119
119
|
depends_on = [github_repository.repo]
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
resource "github_actions_variable" "logs_bucket_name_staging" {
|
|
123
|
+
repository = var.repository_name
|
|
124
|
+
variable_name = "LOGS_BUCKET_NAME_STAGING"
|
|
125
|
+
value = google_storage_bucket.logs_data_bucket[var.staging_project_id].url
|
|
126
|
+
depends_on = [github_repository.repo]
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
resource "github_actions_variable" "logs_bucket_name_prod" {
|
|
130
|
+
repository = var.repository_name
|
|
131
|
+
variable_name = "LOGS_BUCKET_NAME_PROD"
|
|
132
|
+
value = google_storage_bucket.logs_data_bucket[var.prod_project_id].url
|
|
133
|
+
depends_on = [github_repository.repo]
|
|
134
|
+
}
|
|
135
|
+
|
|
122
136
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
|
123
137
|
resource "github_actions_variable" "container_name" {
|
|
124
138
|
repository = var.repository_name
|
|
@@ -12,14 +12,6 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
resource "google_project_iam_member" "bigquery_data_editor" {
|
|
16
|
-
for_each = local.deploy_project_ids
|
|
17
|
-
|
|
18
|
-
project = each.value
|
|
19
|
-
role = "roles/bigquery.dataEditor"
|
|
20
|
-
member = module.log_export_to_bigquery[each.key].writer_identity
|
|
21
|
-
}
|
|
22
|
-
|
|
23
15
|
resource "google_bigquery_dataset" "feedback_dataset" {
|
|
24
16
|
for_each = local.deploy_project_ids
|
|
25
17
|
project = each.value
|
|
@@ -38,33 +30,50 @@ resource "google_bigquery_dataset" "telemetry_logs_dataset" {
|
|
|
38
30
|
depends_on = [resource.google_project_service.cicd_services, resource.google_project_service.deploy_project_services]
|
|
39
31
|
}
|
|
40
32
|
|
|
41
|
-
|
|
33
|
+
resource "google_logging_project_sink" "feedback_export_to_bigquery" {
|
|
42
34
|
for_each = local.deploy_project_ids
|
|
43
35
|
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
name = "${var.project_name}_feedback"
|
|
37
|
+
project = each.value
|
|
38
|
+
destination = "bigquery.googleapis.com/projects/${each.value}/datasets/${google_bigquery_dataset.feedback_dataset[each.key].dataset_id}"
|
|
39
|
+
filter = var.feedback_logs_filter
|
|
40
|
+
|
|
41
|
+
bigquery_options {
|
|
42
|
+
use_partitioned_tables = true
|
|
43
|
+
}
|
|
46
44
|
|
|
47
|
-
log_sink_name = "${var.project_name}_telemetry"
|
|
48
|
-
parent_resource_type = "project"
|
|
49
|
-
parent_resource_id = each.value
|
|
50
|
-
destination_uri = "bigquery.googleapis.com/projects/${each.value}/datasets/${google_bigquery_dataset.telemetry_logs_dataset[each.key].dataset_id}"
|
|
51
|
-
filter = var.telemetry_logs_filter
|
|
52
|
-
bigquery_options = { use_partitioned_tables = true }
|
|
53
45
|
unique_writer_identity = true
|
|
54
|
-
depends_on = [google_bigquery_dataset.
|
|
46
|
+
depends_on = [google_bigquery_dataset.feedback_dataset]
|
|
55
47
|
}
|
|
56
48
|
|
|
57
|
-
|
|
49
|
+
resource "google_logging_project_sink" "log_export_to_bigquery" {
|
|
58
50
|
for_each = local.deploy_project_ids
|
|
59
51
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
52
|
+
name = "${var.project_name}_telemetry"
|
|
53
|
+
project = each.value
|
|
54
|
+
destination = "bigquery.googleapis.com/projects/${each.value}/datasets/${google_bigquery_dataset.telemetry_logs_dataset[each.key].dataset_id}"
|
|
55
|
+
filter = var.telemetry_logs_filter
|
|
56
|
+
|
|
57
|
+
bigquery_options {
|
|
58
|
+
use_partitioned_tables = true
|
|
59
|
+
}
|
|
60
|
+
|
|
68
61
|
unique_writer_identity = true
|
|
69
|
-
depends_on = [google_bigquery_dataset.
|
|
62
|
+
depends_on = [google_bigquery_dataset.telemetry_logs_dataset]
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
resource "google_project_iam_member" "bigquery_data_editor" {
|
|
66
|
+
for_each = local.deploy_project_ids
|
|
67
|
+
|
|
68
|
+
project = each.value
|
|
69
|
+
role = "roles/bigquery.dataEditor"
|
|
70
|
+
member = google_logging_project_sink.log_export_to_bigquery[each.key].writer_identity
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
resource "google_project_iam_member" "feedback_bigquery_data_editor" {
|
|
74
|
+
for_each = local.deploy_project_ids
|
|
75
|
+
|
|
76
|
+
project = each.value
|
|
77
|
+
role = "roles/bigquery.dataEditor"
|
|
78
|
+
member = google_logging_project_sink.feedback_export_to_bigquery[each.key].writer_identity
|
|
70
79
|
}
|
|
@@ -74,12 +74,13 @@ resource "google_cloudbuild_trigger" "cd_pipeline" {
|
|
|
74
74
|
substitutions = {
|
|
75
75
|
_STAGING_PROJECT_ID = var.staging_project_id
|
|
76
76
|
_BUCKET_NAME_LOAD_TEST_RESULTS = resource.google_storage_bucket.bucket_load_test_results.name
|
|
77
|
+
_LOGS_BUCKET_NAME_STAGING = resource.google_storage_bucket.logs_data_bucket[var.staging_project_id].url
|
|
77
78
|
_REGION = var.region
|
|
78
79
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
|
79
80
|
_CONTAINER_NAME = var.project_name
|
|
80
81
|
_ARTIFACT_REGISTRY_REPO_NAME = resource.google_artifact_registry_repository.repo-artifacts-genai.repository_id
|
|
81
82
|
{% elif cookiecutter.deployment_target == 'agent_engine' %}
|
|
82
|
-
|
|
83
|
+
|
|
83
84
|
{% endif %}
|
|
84
85
|
{% if cookiecutter.data_ingestion %}
|
|
85
86
|
_PIPELINE_GCS_ROOT_STAGING = "gs://${resource.google_storage_bucket.data_ingestion_pipeline_gcs_root["staging"].name}"
|
|
@@ -123,12 +124,13 @@ resource "google_cloudbuild_trigger" "deploy_to_prod_pipeline" {
|
|
|
123
124
|
}
|
|
124
125
|
substitutions = {
|
|
125
126
|
_PROD_PROJECT_ID = var.prod_project_id
|
|
127
|
+
_LOGS_BUCKET_NAME_PROD = resource.google_storage_bucket.logs_data_bucket[var.prod_project_id].url
|
|
126
128
|
_REGION = var.region
|
|
127
129
|
{% if cookiecutter.deployment_target == 'cloud_run' %}
|
|
128
130
|
_CONTAINER_NAME = var.project_name
|
|
129
131
|
_ARTIFACT_REGISTRY_REPO_NAME = resource.google_artifact_registry_repository.repo-artifacts-genai.repository_id
|
|
130
132
|
{% elif cookiecutter.deployment_target == 'agent_engine' %}
|
|
131
|
-
|
|
133
|
+
|
|
132
134
|
{% endif %}
|
|
133
135
|
{% if cookiecutter.data_ingestion %}
|
|
134
136
|
_PIPELINE_GCS_ROOT_PROD = "gs://${resource.google_storage_bucket.data_ingestion_pipeline_gcs_root["prod"].name}"
|
|
@@ -44,10 +44,10 @@ jobs:
|
|
|
44
44
|
- name: Checkout code
|
|
45
45
|
uses: actions/checkout@v4
|
|
46
46
|
|
|
47
|
-
- name: Set up Python 3.
|
|
47
|
+
- name: Set up Python 3.12
|
|
48
48
|
uses: actions/setup-python@v4
|
|
49
49
|
with:
|
|
50
|
-
python-version: '3.
|
|
50
|
+
python-version: '3.12'
|
|
51
51
|
|
|
52
52
|
- id: 'auth'
|
|
53
53
|
name: 'Authenticate to Google Cloud'
|
|
@@ -111,7 +111,7 @@ jobs:
|
|
|
111
111
|
uv run {{cookiecutter.agent_directory}}/agent_engine_app.py \
|
|
112
112
|
--project {% raw %}${{ vars.PROD_PROJECT_ID }}{% endraw %} \
|
|
113
113
|
--location {% raw %}${{ vars.REGION }}{% endraw %} \
|
|
114
|
-
--
|
|
114
|
+
--artifacts-bucket-name {% raw %}${{ vars.LOGS_BUCKET_NAME_PROD }}{% endraw %} \
|
|
115
115
|
--set-env-vars="COMMIT_SHA={% raw %}${{ github.sha }}{% endraw %}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID={% raw %}${{ vars.DATA_STORE_ID_PROD }}{% endraw %},DATA_STORE_REGION={% raw %}${{ vars.DATA_STORE_REGION }}{% endraw %}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX={% raw %}${{ vars.VECTOR_SEARCH_INDEX_PROD }}{% endraw %},VECTOR_SEARCH_INDEX_ENDPOINT={% raw %}${{ vars.VECTOR_SEARCH_INDEX_ENDPOINT_PROD }}{% endraw %},VECTOR_SEARCH_BUCKET={% raw %}${{ vars.VECTOR_SEARCH_BUCKET_PROD }}{% endraw %}{%- endif %}{%- endif %}"
|
|
116
116
|
{%- endif %}
|
|
117
117
|
|
|
@@ -48,10 +48,10 @@ jobs:
|
|
|
48
48
|
project_id: {% raw %}${{ vars.CICD_PROJECT_ID }}{% endraw %}
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
- name: Set up Python 3.
|
|
51
|
+
- name: Set up Python 3.12
|
|
52
52
|
uses: actions/setup-python@v4
|
|
53
53
|
with:
|
|
54
|
-
python-version: '3.
|
|
54
|
+
python-version: '3.12'
|
|
55
55
|
|
|
56
56
|
- name: Install uv and dependencies
|
|
57
57
|
run: |
|
|
@@ -36,10 +36,10 @@ jobs:
|
|
|
36
36
|
- name: Checkout code
|
|
37
37
|
uses: actions/checkout@v4
|
|
38
38
|
|
|
39
|
-
- name: Set up Python 3.
|
|
39
|
+
- name: Set up Python 3.12
|
|
40
40
|
uses: actions/setup-python@v4
|
|
41
41
|
with:
|
|
42
|
-
python-version: '3.
|
|
42
|
+
python-version: '3.12'
|
|
43
43
|
|
|
44
44
|
- id: 'auth'
|
|
45
45
|
name: 'Authenticate to Google Cloud'
|
|
@@ -122,7 +122,7 @@ jobs:
|
|
|
122
122
|
uv run {{cookiecutter.agent_directory}}/agent_engine_app.py \
|
|
123
123
|
--project {% raw %}${{ vars.STAGING_PROJECT_ID }}{% endraw %} \
|
|
124
124
|
--location {% raw %}${{ vars.REGION }}{% endraw %} \
|
|
125
|
-
--
|
|
125
|
+
--artifacts-bucket-name {% raw %}${{ vars.LOGS_BUCKET_NAME_STAGING }}{% endraw %} \
|
|
126
126
|
--set-env-vars="COMMIT_SHA={% raw %}${{ github.sha }}{% endraw %}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID={% raw %}${{ vars.DATA_STORE_ID_STAGING }}{% endraw %},DATA_STORE_REGION={% raw %}${{ vars.DATA_STORE_REGION }}{% endraw %}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX={% raw %}${{ vars.VECTOR_SEARCH_INDEX_STAGING }}{% endraw %},VECTOR_SEARCH_INDEX_ENDPOINT={% raw %}${{ vars.VECTOR_SEARCH_INDEX_ENDPOINT_STAGING }}{% endraw %},VECTOR_SEARCH_BUCKET={% raw %}${{ vars.VECTOR_SEARCH_BUCKET_STAGING }}{% endraw %}{%- endif %}{%- endif %}"
|
|
127
127
|
|
|
128
128
|
- name: Fetch Auth Token
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
16
|
{%- if cookiecutter.data_ingestion %}
|
|
17
|
-
- name: "python:3.
|
|
17
|
+
- name: "python:3.12-slim"
|
|
18
18
|
id: deploy-data-ingestion-pipeline-prod
|
|
19
19
|
entrypoint: bash
|
|
20
20
|
args:
|
|
@@ -57,7 +57,7 @@ steps:
|
|
|
57
57
|
- $_PROD_PROJECT_ID
|
|
58
58
|
|
|
59
59
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
|
60
|
-
- name: "python:3.
|
|
60
|
+
- name: "python:3.12-slim"
|
|
61
61
|
id: install-dependencies
|
|
62
62
|
entrypoint: /bin/bash
|
|
63
63
|
args:
|
|
@@ -67,7 +67,7 @@ steps:
|
|
|
67
67
|
env:
|
|
68
68
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
69
69
|
|
|
70
|
-
- name: "python:3.
|
|
70
|
+
- name: "python:3.12-slim"
|
|
71
71
|
id: trigger-deployment
|
|
72
72
|
entrypoint: /bin/bash
|
|
73
73
|
args:
|
|
@@ -77,7 +77,7 @@ steps:
|
|
|
77
77
|
uv run {{cookiecutter.agent_directory}}/agent_engine_app.py \
|
|
78
78
|
--project ${_PROD_PROJECT_ID} \
|
|
79
79
|
--location ${_REGION} \
|
|
80
|
-
--
|
|
80
|
+
--artifacts-bucket-name ${_LOGS_BUCKET_NAME_PROD} \
|
|
81
81
|
--set-env-vars="COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID_PROD},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX_PROD},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT_PROD},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET_PROD}{%- endif %}{%- endif %}"
|
|
82
82
|
env:
|
|
83
83
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
16
|
# Install uv package manager and sync dependencies
|
|
17
|
-
- name: "python:3.
|
|
17
|
+
- name: "python:3.12-slim"
|
|
18
18
|
id: install-dependencies
|
|
19
19
|
entrypoint: /bin/bash
|
|
20
20
|
args:
|
|
@@ -25,7 +25,7 @@ steps:
|
|
|
25
25
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
26
26
|
|
|
27
27
|
# Run unit tests using pytest
|
|
28
|
-
- name: "python:3.
|
|
28
|
+
- name: "python:3.12-slim"
|
|
29
29
|
id: unit-tests
|
|
30
30
|
entrypoint: /bin/bash
|
|
31
31
|
args:
|
|
@@ -36,7 +36,7 @@ steps:
|
|
|
36
36
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
37
37
|
|
|
38
38
|
# Run integration tests
|
|
39
|
-
- name: "python:3.
|
|
39
|
+
- name: "python:3.12-slim"
|
|
40
40
|
id: integration-tests
|
|
41
41
|
entrypoint: /bin/bash
|
|
42
42
|
args:
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
steps:
|
|
16
16
|
{%- if cookiecutter.data_ingestion %}
|
|
17
|
-
- name: "python:3.
|
|
17
|
+
- name: "python:3.12-slim"
|
|
18
18
|
id: deploy-data-ingestion-pipeline-staging
|
|
19
19
|
entrypoint: bash
|
|
20
20
|
args:
|
|
@@ -91,7 +91,7 @@ steps:
|
|
|
91
91
|
- |
|
|
92
92
|
echo $(gcloud auth print-identity-token -q) > id_token.txt
|
|
93
93
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
|
94
|
-
- name: "python:3.
|
|
94
|
+
- name: "python:3.12-slim"
|
|
95
95
|
id: install-dependencies
|
|
96
96
|
entrypoint: /bin/bash
|
|
97
97
|
args:
|
|
@@ -101,7 +101,7 @@ steps:
|
|
|
101
101
|
env:
|
|
102
102
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
103
103
|
|
|
104
|
-
- name: "python:3.
|
|
104
|
+
- name: "python:3.12-slim"
|
|
105
105
|
id: deploy-staging
|
|
106
106
|
entrypoint: /bin/bash
|
|
107
107
|
args:
|
|
@@ -111,7 +111,7 @@ steps:
|
|
|
111
111
|
uv run {{cookiecutter.agent_directory}}/agent_engine_app.py \
|
|
112
112
|
--project ${_STAGING_PROJECT_ID} \
|
|
113
113
|
--location ${_REGION} \
|
|
114
|
-
--
|
|
114
|
+
--artifacts-bucket-name ${_LOGS_BUCKET_NAME_STAGING} \
|
|
115
115
|
--set-env-vars="COMMIT_SHA=${COMMIT_SHA}{%- if cookiecutter.data_ingestion %}{%- if cookiecutter.datastore_type == "vertex_ai_search" %},DATA_STORE_ID=${_DATA_STORE_ID_STAGING},DATA_STORE_REGION=${_DATA_STORE_REGION}{%- elif cookiecutter.datastore_type == "vertex_ai_vector_search" %},VECTOR_SEARCH_INDEX=${_VECTOR_SEARCH_INDEX_STAGING},VECTOR_SEARCH_INDEX_ENDPOINT=${_VECTOR_SEARCH_INDEX_ENDPOINT_STAGING},VECTOR_SEARCH_BUCKET=${_VECTOR_SEARCH_BUCKET_STAGING}{%- endif %}{%- endif %}"
|
|
116
116
|
env:
|
|
117
117
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
@@ -167,7 +167,7 @@ steps:
|
|
|
167
167
|
# Exit with load test result to fail build if tests failed
|
|
168
168
|
exit $$_LOAD_TEST_EXIT_CODE
|
|
169
169
|
{%- elif cookiecutter.deployment_target == 'cloud_run' %}
|
|
170
|
-
- name: "python:3.
|
|
170
|
+
- name: "python:3.12-slim"
|
|
171
171
|
id: load_test
|
|
172
172
|
entrypoint: /bin/bash
|
|
173
173
|
args:
|
|
@@ -185,7 +185,7 @@ steps:
|
|
|
185
185
|
env:
|
|
186
186
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
187
187
|
{%- elif cookiecutter.deployment_target == 'agent_engine' and cookiecutter.is_adk_live %}
|
|
188
|
-
- name: "python:3.
|
|
188
|
+
- name: "python:3.12-slim"
|
|
189
189
|
id: load_test
|
|
190
190
|
entrypoint: /bin/bash
|
|
191
191
|
args:
|
|
@@ -218,7 +218,7 @@ steps:
|
|
|
218
218
|
env:
|
|
219
219
|
- 'PATH=/usr/local/bin:/usr/bin:~/.local/bin'
|
|
220
220
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
|
221
|
-
- name: "python:3.
|
|
221
|
+
- name: "python:3.12-slim"
|
|
222
222
|
id: load_test
|
|
223
223
|
entrypoint: /bin/bash
|
|
224
224
|
args:
|
|
@@ -49,8 +49,8 @@ def print_version(ctx: click.Context, param: click.Parameter, value: bool) -> No
|
|
|
49
49
|
help="Show the version and exit.",
|
|
50
50
|
)
|
|
51
51
|
def cli() -> None:
|
|
52
|
-
# Check for updates at startup (skip if --agent-garden
|
|
53
|
-
if
|
|
52
|
+
# Check for updates at startup (skip if --agent-garden, -ag, or --locked is used)
|
|
53
|
+
if not any(flag in sys.argv for flag in ("--agent-garden", "-ag", "--locked")):
|
|
54
54
|
display_update_message()
|
|
55
55
|
|
|
56
56
|
|
|
@@ -34,7 +34,7 @@ from google.cloud.aiplatform_v1beta1.types.prediction_service import (
|
|
|
34
34
|
from rich.console import Console
|
|
35
35
|
from rich.prompt import Confirm
|
|
36
36
|
|
|
37
|
-
from
|
|
37
|
+
from agent_starter_pack.cli.utils.version import PACKAGE_NAME, get_current_version
|
|
38
38
|
|
|
39
39
|
console = Console()
|
|
40
40
|
|
|
@@ -167,15 +167,18 @@ def check_and_execute_with_version_lock(
|
|
|
167
167
|
|
|
168
168
|
# Add version lock specific parameters and handle remote URL replacement
|
|
169
169
|
if original_agent_spec:
|
|
170
|
-
#
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
170
|
+
# Check if --agent flag exists in original args
|
|
171
|
+
agent_flag_exists = "--agent" in original_args or "-a" in original_args
|
|
172
|
+
|
|
173
|
+
if agent_flag_exists:
|
|
174
|
+
# Replace remote agent spec with local path
|
|
175
|
+
original_args = [
|
|
176
|
+
f"local@{template_dir}" if arg == original_agent_spec else arg
|
|
177
|
+
for arg in original_args
|
|
178
|
+
]
|
|
179
|
+
else:
|
|
180
|
+
# Agent was selected interactively, add --agent flag
|
|
181
|
+
original_args.extend(["--agent", f"local@{template_dir}"])
|
|
179
182
|
|
|
180
183
|
# Add version lock flags only for ASP versions 0.14.1 and above
|
|
181
184
|
if pkg_version.parse(version) > pkg_version.parse("0.14.1"):
|
|
@@ -26,7 +26,7 @@ from cookiecutter.main import cookiecutter
|
|
|
26
26
|
from rich.console import Console
|
|
27
27
|
from rich.prompt import IntPrompt, Prompt
|
|
28
28
|
|
|
29
|
-
from
|
|
29
|
+
from agent_starter_pack.cli.utils.version import get_current_version
|
|
30
30
|
|
|
31
31
|
from .datastores import DATASTORES
|
|
32
32
|
from .remote_template import (
|
|
@@ -119,7 +119,7 @@ def get_available_agents(deployment_target: str | None = None) -> dict:
|
|
|
119
119
|
|
|
120
120
|
agents_list = []
|
|
121
121
|
priority_agents_dict = dict.fromkeys(PRIORITY_AGENTS) # Track priority agents
|
|
122
|
-
agents_dir = pathlib.Path(__file__).parent.parent.parent
|
|
122
|
+
agents_dir = pathlib.Path(__file__).parent.parent.parent / "agents"
|
|
123
123
|
|
|
124
124
|
for agent_dir in agents_dir.iterdir():
|
|
125
125
|
if agent_dir.is_dir() and not agent_dir.name.startswith("__"):
|
|
@@ -191,7 +191,7 @@ def get_deployment_targets(
|
|
|
191
191
|
config = remote_config
|
|
192
192
|
else:
|
|
193
193
|
template_path = (
|
|
194
|
-
pathlib.Path(__file__).parent.parent.parent
|
|
194
|
+
pathlib.Path(__file__).parent.parent.parent
|
|
195
195
|
/ "agents"
|
|
196
196
|
/ agent_name
|
|
197
197
|
/ ".template"
|
|
@@ -309,7 +309,7 @@ def prompt_datastore_selection(
|
|
|
309
309
|
|
|
310
310
|
# Otherwise, proceed with normal flow
|
|
311
311
|
template_path = (
|
|
312
|
-
pathlib.Path(__file__).parent.parent.parent
|
|
312
|
+
pathlib.Path(__file__).parent.parent.parent
|
|
313
313
|
/ "agents"
|
|
314
314
|
/ agent_name
|
|
315
315
|
/ ".template"
|
|
@@ -418,7 +418,7 @@ def prompt_cicd_runner_selection() -> str:
|
|
|
418
418
|
|
|
419
419
|
def get_template_path(agent_name: str, debug: bool = False) -> pathlib.Path:
|
|
420
420
|
"""Get the absolute path to the agent template directory."""
|
|
421
|
-
current_dir = pathlib.Path(__file__).parent.parent.parent
|
|
421
|
+
current_dir = pathlib.Path(__file__).parent.parent.parent
|
|
422
422
|
template_path = current_dir / "agents" / agent_name / ".template"
|
|
423
423
|
if debug:
|
|
424
424
|
logging.debug(f"Looking for template in: {template_path}")
|
|
@@ -526,9 +526,7 @@ def process_template(
|
|
|
526
526
|
# For remote templates, determine the base template
|
|
527
527
|
base_template_name = get_base_template_name(remote_config or {})
|
|
528
528
|
agent_path = (
|
|
529
|
-
pathlib.Path(__file__).parent.parent.parent
|
|
530
|
-
/ "agents"
|
|
531
|
-
/ base_template_name
|
|
529
|
+
pathlib.Path(__file__).parent.parent.parent / "agents" / base_template_name
|
|
532
530
|
)
|
|
533
531
|
logging.debug(f"Remote template using base: {base_template_name}")
|
|
534
532
|
else:
|
|
@@ -1076,8 +1074,7 @@ def process_template(
|
|
|
1076
1074
|
elif deployment_target:
|
|
1077
1075
|
# For local templates, use the existing logic
|
|
1078
1076
|
lock_path = (
|
|
1079
|
-
pathlib.Path(__file__).parent.parent.parent
|
|
1080
|
-
/ "src"
|
|
1077
|
+
pathlib.Path(__file__).parent.parent.parent
|
|
1081
1078
|
/ "resources"
|
|
1082
1079
|
/ "locks"
|
|
1083
1080
|
/ f"uv-{agent_name}-{deployment_target}.lock"
|