agent-starter-pack 0.15.7__py3-none-any.whl → 0.16.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.

Files changed (101) hide show
  1. {agent_starter_pack-0.15.7.dist-info → agent_starter_pack-0.16.0.dist-info}/METADATA +2 -2
  2. {agent_starter_pack-0.15.7.dist-info → agent_starter_pack-0.16.0.dist-info}/RECORD +96 -94
  3. agents/adk_base/.template/templateconfig.yaml +1 -1
  4. agents/{live_api → adk_live}/.template/templateconfig.yaml +5 -7
  5. agents/adk_live/README.md +31 -0
  6. agents/adk_live/app/agent.py +48 -0
  7. agents/adk_live/tests/unit/test_dummy.py +38 -0
  8. agents/agentic_rag/.template/templateconfig.yaml +1 -1
  9. agents/crewai_coding_crew/app/agent.py +18 -57
  10. agents/langgraph_base_react/app/agent.py +7 -46
  11. llm.txt +1 -1
  12. src/base_template/GEMINI.md +1 -1
  13. src/base_template/Makefile +130 -61
  14. src/base_template/README.md +6 -6
  15. src/base_template/deployment/terraform/dev/apis.tf +1 -1
  16. src/base_template/deployment/terraform/dev/variables.tf +1 -1
  17. src/base_template/deployment/terraform/locals.tf +1 -1
  18. src/base_template/deployment/terraform/variables.tf +1 -1
  19. src/base_template/pyproject.toml +22 -21
  20. src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +2 -2
  21. src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml +1 -1
  22. src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +71 -8
  23. src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml +2 -2
  24. src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml +1 -1
  25. src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml +90 -8
  26. src/base_template/{{cookiecutter.agent_directory}}/utils/tracing.py +1 -1
  27. src/base_template/{{cookiecutter.agent_directory}}/utils/typing.py +4 -4
  28. src/cli/utils/template.py +12 -5
  29. src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +205 -4
  30. src/deployment_targets/agent_engine/tests/load_test/README.md +47 -0
  31. src/deployment_targets/agent_engine/tests/load_test/load_test.py +132 -3
  32. src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py +11 -3
  33. src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/deployment.py +5 -1
  34. src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/{% if cookiecutter.is_adk_live %}expose_app.py{% else %}unused_expose_app.py{% endif %} +461 -0
  35. src/deployment_targets/cloud_run/Dockerfile +3 -3
  36. src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +4 -4
  37. src/deployment_targets/cloud_run/deployment/terraform/service.tf +7 -7
  38. src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +207 -5
  39. src/deployment_targets/cloud_run/tests/load_test/README.md +82 -0
  40. src/deployment_targets/cloud_run/tests/load_test/load_test.py +130 -3
  41. src/deployment_targets/cloud_run/{{cookiecutter.agent_directory}}/server.py +178 -146
  42. src/frontends/{live_api_react → adk_live_react}/frontend/package-lock.json +39 -1007
  43. src/frontends/{live_api_react → adk_live_react}/frontend/package.json +1 -9
  44. src/frontends/{live_api_react → adk_live_react}/frontend/src/App.tsx +1 -1
  45. src/frontends/{live_api_react → adk_live_react}/frontend/src/components/logger/Logger.tsx +8 -3
  46. src/frontends/{live_api_react → adk_live_react}/frontend/src/components/logger/logger.scss +26 -0
  47. src/frontends/{live_api_react → adk_live_react}/frontend/src/components/side-panel/SidePanel.tsx +11 -5
  48. src/frontends/{live_api_react → adk_live_react}/frontend/src/components/side-panel/side-panel.scss +146 -115
  49. src/frontends/adk_live_react/frontend/src/components/transcription-preview/TranscriptionPreview.tsx +106 -0
  50. src/frontends/adk_live_react/frontend/src/components/transcription-preview/transcription-preview.scss +150 -0
  51. src/frontends/{live_api_react → adk_live_react}/frontend/src/hooks/use-live-api.ts +8 -2
  52. src/frontends/{live_api_react → adk_live_react}/frontend/src/multimodal-live-types.ts +38 -2
  53. src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/audio-recorder.ts +1 -1
  54. src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/audio-streamer.ts +1 -1
  55. src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/multimodal-live-client.ts +204 -23
  56. src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/utils.ts +27 -5
  57. src/frontends/streamlit/frontend/utils/local_chat_history.py +2 -0
  58. src/resources/idx/.idx/dev.nix +25 -11
  59. src/resources/idx/idx-template.json +1 -16
  60. src/resources/idx/idx-template.nix +2 -3
  61. src/resources/locks/uv-adk_base-agent_engine.lock +434 -349
  62. src/resources/locks/uv-adk_base-cloud_run.lock +502 -409
  63. src/resources/locks/uv-adk_live-agent_engine.lock +4189 -0
  64. src/resources/locks/{uv-live_api-cloud_run.lock → uv-adk_live-cloud_run.lock} +884 -2219
  65. src/resources/locks/uv-agentic_rag-agent_engine.lock +473 -388
  66. src/resources/locks/uv-agentic_rag-cloud_run.lock +557 -464
  67. src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +498 -515
  68. src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +898 -687
  69. src/resources/locks/uv-langgraph_base_react-agent_engine.lock +455 -483
  70. src/resources/locks/uv-langgraph_base_react-cloud_run.lock +910 -645
  71. src/utils/generate_locks.py +8 -4
  72. agents/live_api/README.md +0 -37
  73. agents/live_api/app/agent.py +0 -72
  74. agents/live_api/tests/integration/test_server_e2e.py +0 -260
  75. agents/live_api/tests/load_test/load_test.py +0 -40
  76. agents/live_api/tests/unit/test_server.py +0 -144
  77. {agent_starter_pack-0.15.7.dist-info → agent_starter_pack-0.16.0.dist-info}/WHEEL +0 -0
  78. {agent_starter_pack-0.15.7.dist-info → agent_starter_pack-0.16.0.dist-info}/entry_points.txt +0 -0
  79. {agent_starter_pack-0.15.7.dist-info → agent_starter_pack-0.16.0.dist-info}/licenses/LICENSE +0 -0
  80. /src/frontends/{live_api_react → adk_live_react}/frontend/public/favicon.ico +0 -0
  81. /src/frontends/{live_api_react → adk_live_react}/frontend/public/index.html +0 -0
  82. /src/frontends/{live_api_react → adk_live_react}/frontend/public/robots.txt +0 -0
  83. /src/frontends/{live_api_react → adk_live_react}/frontend/src/App.scss +0 -0
  84. /src/frontends/{live_api_react → adk_live_react}/frontend/src/App.test.tsx +0 -0
  85. /src/frontends/{live_api_react → adk_live_react}/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
  86. /src/frontends/{live_api_react → adk_live_react}/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
  87. /src/frontends/{live_api_react → adk_live_react}/frontend/src/components/logger/mock-logs.ts +0 -0
  88. /src/frontends/{live_api_react → adk_live_react}/frontend/src/contexts/LiveAPIContext.tsx +0 -0
  89. /src/frontends/{live_api_react → adk_live_react}/frontend/src/hooks/use-media-stream-mux.ts +0 -0
  90. /src/frontends/{live_api_react → adk_live_react}/frontend/src/hooks/use-screen-capture.ts +0 -0
  91. /src/frontends/{live_api_react → adk_live_react}/frontend/src/hooks/use-webcam.ts +0 -0
  92. /src/frontends/{live_api_react → adk_live_react}/frontend/src/index.css +0 -0
  93. /src/frontends/{live_api_react → adk_live_react}/frontend/src/index.tsx +0 -0
  94. /src/frontends/{live_api_react → adk_live_react}/frontend/src/react-app-env.d.ts +0 -0
  95. /src/frontends/{live_api_react → adk_live_react}/frontend/src/reportWebVitals.ts +0 -0
  96. /src/frontends/{live_api_react → adk_live_react}/frontend/src/setupTests.ts +0 -0
  97. /src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/audioworklet-registry.ts +0 -0
  98. /src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/store-logger.ts +0 -0
  99. /src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/worklets/audio-processing.ts +0 -0
  100. /src/frontends/{live_api_react → adk_live_react}/frontend/src/utils/worklets/vol-meter.ts +0 -0
  101. /src/frontends/{live_api_react → adk_live_react}/frontend/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-starter-pack
3
- Version: 0.15.7
3
+ Version: 0.16.0
4
4
  Summary: CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates.
5
5
  Author-email: Google LLC <agent-starter-pack@google.com>
6
6
  License: Apache-2.0
@@ -96,7 +96,7 @@ See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pac
96
96
  | `agentic_rag` | A RAG agent for document retrieval and Q&A. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview). |
97
97
  | `langgraph_base_react` | An agent implementing a base ReAct agent using LangGraph |
98
98
  | `crewai_coding_crew` | A multi-agent system implemented with CrewAI created to support coding activities |
99
- | `live_api` | A real-time multimodal RAG agent powered by Gemini, supporting audio/video/text chat with vector DB-backed responses |
99
+ | `adk_live` | A real-time multimodal RAG agent powered by Gemini, supporting audio/video/text chat with vector DB-backed responses |
100
100
 
101
101
  **More agents are on the way!** We are continuously expanding our [agent library](https://googlecloudplatform.github.io/agent-starter-pack/agents/overview). Have a specific agent type in mind? [Raise an issue as a feature request!](https://github.com/GoogleCloudPlatform/agent-starter-pack/issues/new?labels=enhancement)
102
102
 
@@ -1,13 +1,17 @@
1
1
  agents/README.md,sha256=L8__lIXXjxLTZbkCmTC4taTFUMRVrO3QI2mCKZTdhJM,462
2
2
  agents/adk_base/README.md,sha256=_rnoIkHupZ4afDZEAtrDZzeYSS4WqtJWnvtX2H-RrCM,894
3
- agents/adk_base/.template/templateconfig.yaml,sha256=OwPdd3NoOpT4WpnlOHM5tk_PFdptDdqnS3v7UdwjeOQ,924
3
+ agents/adk_base/.template/templateconfig.yaml,sha256=MxfwQxOi8ea1Nqg_J36K7fgk72DpbDO8JJ3-s1jRVe4,931
4
4
  agents/adk_base/app/__init__.py,sha256=wT1TtenBOdA4LTtf6mQjvAT5aRR1N2PCx_A-MrDLGsg,631
5
5
  agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
6
6
  agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=hyPBwXOmZBWu1Dte6lUU0LDW_vV2VA57yQZ3AjBMzDU,10729
7
7
  agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=SdZC1htgXtXw3oyi8d70dNVpDgUmV9T5hqiwGxM9plk,57034
8
8
  agents/adk_base/tests/integration/test_agent.py,sha256=_zb3GMWMtMRq2rOyYC-uL1eNhpg2XBkm8Noj0O_UOng,1998
9
+ agents/adk_live/README.md,sha256=tMcVwC4q7BhDyuClXm3F6byJmejOA7zOI1hpTN7qp7A,2103
10
+ agents/adk_live/.template/templateconfig.yaml,sha256=5XbK7fs0cIC1_Z1se6Hk1WZYRbAEnL3qXuYkIsJn748,1057
11
+ agents/adk_live/app/agent.py,sha256=AvqZui45OfgdCZo6DnIOaMIxRkwc7yZsPtiaG2MkIA0,1622
12
+ agents/adk_live/tests/unit/test_dummy.py,sha256=NjoCHMsnMID5TnDNhux4eeBdoLqiDqTgUvJgQJWmAk0,1506
9
13
  agents/agentic_rag/README.md,sha256=cPeY_XGt79ava22PIM0x92oi67R-TnlEKBQGpK1MOkA,2262
10
- agents/agentic_rag/.template/templateconfig.yaml,sha256=o8D1Yx7zWsIgI1zVOS3K1pDgc_Lczevw6cveaj2T7HQ,1249
14
+ agents/agentic_rag/.template/templateconfig.yaml,sha256=LlBOa7aoJzIQUVIeveMkZcLF1-8GcRwELjUV9fk7ZHc,1256
11
15
  agents/agentic_rag/app/__init__.py,sha256=wT1TtenBOdA4LTtf6mQjvAT5aRR1N2PCx_A-MrDLGsg,631
12
16
  agents/agentic_rag/app/agent.py,sha256=joSAfrVcS9eRtOT3MXPSoiwElpwVq-hjpCHkqTj6vuM,4041
13
17
  agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
@@ -17,7 +21,7 @@ agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb,sha256=SdZC1htgXtXw3oyi8
17
21
  agents/agentic_rag/tests/integration/test_agent.py,sha256=YcwOZXa9uJqcqZN8UPikNm_dlSh9XduEfcuQa0wkby8,2170
18
22
  agents/crewai_coding_crew/README.md,sha256=4No7sfHQVHELARGiT3fWANJzDR0NP48ow4ct3FoPwlA,1672
19
23
  agents/crewai_coding_crew/.template/templateconfig.yaml,sha256=WjsvXcih4zqrhV0pX_3eH7PZIf3H1KHdcUAaD2n5I6U,1051
20
- agents/crewai_coding_crew/app/agent.py,sha256=yd-P2Jzx3Do4FQuhwDsok-YRNYFi9Vl8OTqSlbdn4Sw,3260
24
+ agents/crewai_coding_crew/app/agent.py,sha256=h8aC6P3XcaLSsnzENtH3Xp14onpZatWIGRx5IS8ZSyQ,1921
21
25
  agents/crewai_coding_crew/app/crew/crew.py,sha256=pqeeJ4txP-gcVT3PKEAw2zZ4x8g4cDlnFFbf0_zZRr4,2000
22
26
  agents/crewai_coding_crew/app/crew/config/agents.yaml,sha256=Cn9zTcP3C-8MvlV19cYdlxR0iIs2_FOy2gKOJLUpNRo,1154
23
27
  agents/crewai_coding_crew/app/crew/config/tasks.yaml,sha256=SSFuiSQPhi4dM0V5HdNuMqtN7JJr5RUCMhhBzUkPBpc,1511
@@ -26,51 +30,45 @@ agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW4
26
30
  agents/crewai_coding_crew/tests/integration/test_agent.py,sha256=f4QgY100tXR4D70qaM8blad2cgCfxCZ5RJ2Pv3amDcs,1640
27
31
  agents/langgraph_base_react/README.md,sha256=KZQ0e8q9CqnIEiItH9Tc2Ceb2mC3sBcyQUo-ZAmO-zs,482
28
32
  agents/langgraph_base_react/.template/templateconfig.yaml,sha256=58k6Lhkn_3mYOmUMFFQ_mMq6Df4LerCZVju9uM2RDuQ,1049
29
- agents/langgraph_base_react/app/agent.py,sha256=yzCc5JaOJgItoBiZOzHPiSy9aD2HGeGI_pH7nrysSmg,2505
33
+ agents/langgraph_base_react/app/agent.py,sha256=KyR9Doi52Q6iygJSPqc4-JAchQvgbB8ilFW58EcqQhA,1188
30
34
  agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
31
35
  agents/langgraph_base_react/tests/integration/test_agent.py,sha256=xy0A_3eGhxM8A5rc81revMztJN5GtFA-o5-CG5JzeQw,1630
32
- agents/live_api/README.md,sha256=c3lu5WguOUBc5hO_UtNZfVhfYxvSzMXuGFICn9M38mU,2897
33
- agents/live_api/.template/templateconfig.yaml,sha256=Y_UQcxq5ql2YPrC5kd-SK7kfGb6Q6IqScaNDRv-vG5I,964
34
- agents/live_api/app/agent.py,sha256=dYE2qd64OhL-fOgwzrjqN50LYXAgJ1TWbx6ohqtV5Rc,2434
35
- agents/live_api/tests/integration/test_server_e2e.py,sha256=SBowHiVj-_Okbk1dqyITFVIG6yvr5BGNrfxHVpO4TFs,8635
36
- agents/live_api/tests/load_test/load_test.py,sha256=HHZyfC4gqiQtZVF_CbbxENGgWQccMLpwMv0IdoQ6cbQ,1275
37
- agents/live_api/tests/unit/test_server.py,sha256=_tf9nHkb7aOe3lZRlyp7cVklOTOYTuXDTy7Djn_lhik,5003
38
- llm.txt,sha256=3beEnDz6DIQT345TibJCi60Mw8xh2PaY-lFc-EJpR8s,15380
36
+ llm.txt,sha256=z9FTkAnj3cErCzHj3IES9eB35wW3JGaVsd8a0wA7IMs,15380
39
37
  src/base_template/.gitignore,sha256=Fq0w34x4sfbwP4RqDqh6hdHNYRUEsFNI-9XONzLWBIs,2580
40
- src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
41
- src/base_template/Makefile,sha256=1UKB6rlIbGStc-hUfnwKanOtxhz-vzaKxrCxTlPilqs,8087
42
- src/base_template/README.md,sha256=_TjEIWOK75GfaG3qfaOQdfC9J5AlPo_dckRY7e84dlM,10184
43
- src/base_template/pyproject.toml,sha256=Ch69IVTRzNn9zueU5TunZjb-dTmvCM_G_NwXDFUiIp8,2940
38
+ src/base_template/GEMINI.md,sha256=ApNsGamVPBsrKeI77p6QxU2-sJE6k3wGwSLVvNa-YGA,126
39
+ src/base_template/Makefile,sha256=RtpEYY_-9S3dQ6Q3OgIsZX1-43j4enXO69eJHxQrsFs,11346
40
+ src/base_template/README.md,sha256=EqNrXQ9MZAk0fm2wd69bqaoJ-YYhFiAJstB4NYt8KkM,10122
41
+ src/base_template/pyproject.toml,sha256=Tc1hPD-o8GtU6YJAkkB2JagTJ5aObdjmjCZuGB4oCb0,3028
44
42
  src/base_template/deployment/README.md,sha256=gZJvSWdQh_Mi-bZ3dmuPv7fMezIw04fgN5tq7KgglPw,692
45
43
  src/base_template/deployment/terraform/apis.tf,sha256=KX8Oe2gjT-gh9Bkntz9yIAyRjPc1gZvwOhroJ6NZVp4,1513
46
44
  src/base_template/deployment/terraform/github.tf,sha256=KhfNBAzeUH9jDr8FOw_DiypesA5AEC8IZT1PRqntSt8,10838
47
45
  src/base_template/deployment/terraform/iam.tf,sha256=I70ROOjXcYiqxtzuak6n0ZNhkjH6vjOzykXQG1Zi1dE,4700
48
- src/base_template/deployment/terraform/locals.tf,sha256=nvjlavqWRL6e-iIqfIRvsai5JY9l6KhRGcwJQFRdu_U,1653
46
+ src/base_template/deployment/terraform/locals.tf,sha256=UiZfZn-3aC3dcpV0eLaO0k7CJKhRxgV3mhtxj8MDoVs,1646
49
47
  src/base_template/deployment/terraform/log_sinks.tf,sha256=eAGh_dCjOKUQjylkqp1fNM9cfE4QB9HSEovjD6_G9Lg,2971
50
48
  src/base_template/deployment/terraform/providers.tf,sha256=wNWvXJbpvV3njDYO8t4s6DdDkL0dQpWgkPsmJw61ABM,1167
51
49
  src/base_template/deployment/terraform/service_accounts.tf,sha256=iSRrRzxL16pZHel5cZDzC7m15IRTRv8qMxkcg4nd30o,1672
52
50
  src/base_template/deployment/terraform/storage.tf,sha256=3mQH5cXNSqagDYGLlI0n-vT8r21t12XepggpXWIXJZs,8690
53
- src/base_template/deployment/terraform/variables.tf,sha256=JD-lvsVYSgE0pR15ZJhmNAn2SAWo5CNDCofXGNVJy1o,6749
51
+ src/base_template/deployment/terraform/variables.tf,sha256=11KZvNn5_NPm8uh4WrysdCxuOJXqW-JQQi1tuNKbZUM,6742
54
52
  src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %},sha256=rCupUnvaTVj75ahJOckNuzlQ-xcLTik_HpqXzVEEB5g,2666
55
53
  src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %},sha256=e-9vA6hpS-vsq9ttZZj2mUASPAcUFJB7b-PrUW4G96M,6871
56
- src/base_template/deployment/terraform/dev/apis.tf,sha256=R5fyLQGHsZy7JyDdFpuNzUBute6Rn9xR32zIMjkGxzc,1592
54
+ src/base_template/deployment/terraform/dev/apis.tf,sha256=xsiXP3enUW4A4CchYo3qa0Su3w6Y37_UX5Ax1BXuSOE,1585
57
55
  src/base_template/deployment/terraform/dev/iam.tf,sha256=q8dfqbMNSpgMXW96hP7rnApFoNaAUzZgUXs5HIl7ZFI,3329
58
56
  src/base_template/deployment/terraform/dev/log_sinks.tf,sha256=uVdMtDdd8MnxtKhqzVaYqadE11P3r4fs2IdgNecxM4I,2671
59
57
  src/base_template/deployment/terraform/dev/providers.tf,sha256=1S9jCh48d6ailVZ1e14EHsUUDSp7DyGZGExJwViFCkM,900
60
58
  src/base_template/deployment/terraform/dev/storage.tf,sha256=jBb1yJoOD2Ccki2fXy_P1-0sZGJbxmiTcwqZpGwApBI,4649
61
- src/base_template/deployment/terraform/dev/variables.tf,sha256=l95zljQbchR6b--wJGJJcCAu89FqsR3UqAiCz_bH7to,4089
59
+ src/base_template/deployment/terraform/dev/variables.tf,sha256=2fKRBTH58eXN7XUUunz8G3jOiJPsbcBLqSy5X0Fm4pk,4082
62
60
  src/base_template/deployment/terraform/dev/vars/env.tfvars,sha256=LoQMjh1AAMR-MGfaSCsVMjdoYTk2T4oS4D9vMH54CdQ,714
63
61
  src/base_template/deployment/terraform/vars/env.tfvars,sha256=YcVMXSDXZWYZg1ZxkdNWMRPG0p4bCz8HE9EQyNKeWLs,1394
64
62
  src/base_template/tests/unit/test_dummy.py,sha256=2exfCH8qhkZrLWvK04ZxNTO9MV3fdTbZkJN3uK6zvok,850
65
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=79RK2xyUTfkAzRyDiZH-1tePdcoeMwTczeVozppD1ao,5768
66
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml,sha256=urlWV4ncjKm-M1Wwg5nlw9E9LGob40rWO7fEOxyxE4U,2010
67
- src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml,sha256=jU4DV9wGI8GzbYjER0eTdzZvtiFcc86RuFmy7L4bU0U,8552
68
- src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml,sha256=6fiQ3fVPrVljoO6omGKNk_ZL8RTSyfY4SquDifpZ7U8,3727
69
- src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml,sha256=vldAl58Fp67FFmkhQcXhHd8R2F5m78hLDstKYlQHfX0,1512
70
- src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml,sha256=8dpECHEZzXOd2ra2Jue3x5r5bZuQCZ1NEdyf3umttUY,7391
63
+ src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml,sha256=XDmWICzNDYIM6tvGjXcBdgCJmQDGzRO0291MKaUc750,5768
64
+ src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml,sha256=RNP2bqyjbXyfRA0mA9LERj08fiGkGpuia0JSUOk3fIY,2010
65
+ src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml,sha256=gZa3KdCKUI-80ZzLII1ajSzxI9sG5ZfuA4aUuK8Gnxs,10988
66
+ src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml,sha256=wGbPowD8Fjzv80UbckhSW_dndPSsUxFfjjP-2VyGcxU,3727
67
+ src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml,sha256=kPyLVf55NHhk3lllCgFt5nW-GeNcuIEnxLb24gcAq2c,1512
68
+ src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml,sha256=SwtiYmSQX7oB8YwscraiYgxN4XmO-GSSzovbuQ5gLE8,10076
71
69
  src/base_template/{{cookiecutter.agent_directory}}/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
72
- src/base_template/{{cookiecutter.agent_directory}}/utils/tracing.py,sha256=fZpJ3r2YWOnWqnSYPUXwsZ0uq5q8Wi7R9X_4bUClrDU,6047
73
- src/base_template/{{cookiecutter.agent_directory}}/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
70
+ src/base_template/{{cookiecutter.agent_directory}}/utils/tracing.py,sha256=QxI-6NbiqMLFL2WSpZjNsxCPUY6xm2_maS2sRtbtG6Y,6040
71
+ src/base_template/{{cookiecutter.agent_directory}}/utils/typing.py,sha256=cfirFUBZQOwfQjEs9EYYP2nubv6BEpVzFHPj85PTMmg,4221
74
72
  src/cli/main.py,sha256=aSD5x_r3yMqnI1Bp_HUsgpzJ7QdQNgR06TOVixVv1kU,1954
75
73
  src/cli/commands/create.py,sha256=wuRL9lX6_AL6EucRSlixP91iIo5ROeDlLUAOIGOoCbA,47322
76
74
  src/cli/commands/enhance.py,sha256=AF58CFikNLPib8PULKkzM6r9JGXkTvRWspBaEvGnR3k,24237
@@ -82,7 +80,7 @@ src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1
82
80
  src/cli/utils/gcp.py,sha256=wGgTOc1EWuq7FIHyXa80OUgE1ypGm7zwMF-dvI0jDOE,9261
83
81
  src/cli/utils/logging.py,sha256=61ulUY1hUrpxHDFi0szqsjPlrpxdBvwzfYEEV0o97GA,3530
84
82
  src/cli/utils/remote_template.py,sha256=ITN1a5GQmVIb1dHpExPLTz1k5c9j7M6fF-HXUDCl6i8,23967
85
- src/cli/utils/template.py,sha256=YIJu0xZJTyP0XmyNN08Fj7Wc7Wl9ROT45rcZvsvgLb0,52108
83
+ src/cli/utils/template.py,sha256=PwU_641K_yiDXb52npKpQqmbPeSu3mp9UU30jK1_p1c,52516
86
84
  src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
87
85
  src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
88
86
  src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
@@ -93,60 +91,63 @@ src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPm
93
91
  src/data_ingestion/data_ingestion_pipeline/components/process_data.py,sha256=8vubxkykRpx-d89H1XYGO3yXz4hxhihhGDgDR3s-XZ4,22045
94
92
  src/deployment_targets/agent_engine/deployment_metadata.json,sha256=G_t_n-UNrFsBgH1Xrw5-ZqYzUGwZ4X6ipsIm_yiSq-w,72
95
93
  src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb,sha256=RE6Gp-bu4bHtNBngfkt_CF5emy5YcOWQ5rMYW_Cv8_w,48809
96
- src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py,sha256=W2ej8qR1gzPCqVa_aQ-ue4XBGYKaWdtgpIbyOTpy-uo,6154
97
- src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=aQP7nDAqd2jKBET4noI39HC9PVHpgpned7cxucWpVJo,1302
98
- src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=VbQjm8uR8JsdJe3upO1eUIz5SZR7IQsHYyJy88cAjy0,4516
94
+ src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py,sha256=UtC4hmR5rP5ZfJTkF57tksrfTJqOGRzxVtxx4seDbyg,12675
95
+ src/deployment_targets/agent_engine/tests/load_test/README.md,sha256=mUuKQV-NZCe23Qbi08V3mGgLW2GN-IgCAGqlBw69n_8,2874
96
+ src/deployment_targets/agent_engine/tests/load_test/load_test.py,sha256=sZewuwPQwgrfaYCo7IjIhIN9REFXP-rhJbtW236EuGA,9110
99
97
  src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py,sha256=auV2fnIh6L8-AuEoX0CcTzUGIbWQwhoMOGh_tCD-Rx4,12432
101
- src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/deployment.py,sha256=AY7awaGuFjri4Ha6M2IrPwpl1b1V7RTlJ_4uZ_zpfTo,2833
102
- src/deployment_targets/cloud_run/Dockerfile,sha256=rSpmFK7uJhZYwYMtxH8W7mywcCPvaoFn7gL_mXRYuF8,1449
103
- src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=09F6jkkMtoQlbQNdzJl8OZs-ZlfmzZmgCaUFvniJnlQ,11146
104
- src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=l6fG-kMyYOOrRwnsUys_Vq46-76bMiRyXzHYkVD2XFM,6993
105
- src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=85tA1gtbu_Z2CJqzOHgvDS-lvQFbYUMW8_mfqEc1_8I,9325
106
- src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=clrCwgwUDr_AsivG0oLeNImTK4uke9EAWkrpS2nhIX0,2769
107
- src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=kK3KaCdBFHKlni3ZVY2u4h_ugNla4o6pbhGRZlQ-haI,4270
98
+ src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py,sha256=FMi6m2kOCwZqkSQRgi3Ih1cECGrJRb3caxkq28HF1_o,12779
99
+ src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/deployment.py,sha256=NjM1CILs5vehkGGeOP6Rx0hF6V664GUApsTUdQ1RwLw,2972
100
+ src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/{% if cookiecutter.is_adk_live %}expose_app.py{% else %}unused_expose_app.py{% endif %},sha256=2PL4JkHXTtqdPm_RCr2aYpgw4-FCpLNHSlq5ZpoOJEA,17272
101
+ src/deployment_targets/cloud_run/Dockerfile,sha256=GExFR0dSpkTzvzmeE3siGaoXCWp7zKJoB4Uguo0oZhk,1423
102
+ src/deployment_targets/cloud_run/deployment/terraform/service.tf,sha256=xBFjT7QGKjMkN2MW40eE22odbyZmvbujkxjAqUN2TNY,11097
103
+ src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf,sha256=8HpzDfWVuk2MhfgBAwMTZnMMb3oh1g7Mv_U-myACS9A,6965
104
+ src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py,sha256=qi0fOZ0ZcOz0gsq_M1-TmtGnwriEPGk3kqufjOakQb0,15851
105
+ src/deployment_targets/cloud_run/tests/load_test/README.md,sha256=RORT8P8MD50X3q5lMIoVinBdr-B7In-oXz27Ar45JtE,5464
106
+ src/deployment_targets/cloud_run/tests/load_test/load_test.py,sha256=qMj5kJ06MQNAz_g--zkDwtZN4LardgKuJDdHbaXe7z8,8702
108
107
  src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=ZbWpSgDo8bT33PstD_73aQSeN_0oo0F104NMUGuZ8lE,14903
109
- src/deployment_targets/cloud_run/{{cookiecutter.agent_directory}}/server.py,sha256=_qHU_K_gGN4jyRR3PY0U_7j39D0n7CKybSXlDiYq8bs,15458
110
- src/frontends/live_api_react/frontend/package-lock.json,sha256=_vWIfornMhB4lrRIwUmy4CqKGINCKjeUuYcTw2Sc_IY,734344
111
- src/frontends/live_api_react/frontend/package.json,sha256=OBOzzDiDiESPzmbLDlZ6KM1Trit71vXdP692dI-g9Uo,1381
112
- src/frontends/live_api_react/frontend/tsconfig.json,sha256=cyqEhf7-Yydz-PX8_cuF8JpsyC363NDTNkrmCk0sKAo,595
113
- src/frontends/live_api_react/frontend/public/favicon.ico,sha256=FY9oTN01RzaJ2lZ1rCjNXsEfT1gWZJA3fPx0QMBlMCU,15086
114
- src/frontends/live_api_react/frontend/public/index.html,sha256=tOhOQOx5kMi9WhxT-4XAk75tmkoHNCyBM36dgR725TM,2508
115
- src/frontends/live_api_react/frontend/public/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
116
- src/frontends/live_api_react/frontend/src/App.scss,sha256=477MjERLsjhhzSS5WvROHfgdLi41F0PeW7zFTIROlH4,3472
117
- src/frontends/live_api_react/frontend/src/App.test.tsx,sha256=l4bj_dLHDggvlcxZZgbhXdR9oIpdCwrGglRWtSqNqUU,869
118
- src/frontends/live_api_react/frontend/src/App.tsx,sha256=2iY35ZFsNizUa7FQ9DSlSosGJIqFDcGJ8tu8mQLfgfM,2251
119
- src/frontends/live_api_react/frontend/src/index.css,sha256=THy1DxvcOTW4WypzWvYEL_SVAVzda1iPEQ0M6pvgNUo,950
120
- src/frontends/live_api_react/frontend/src/index.tsx,sha256=c3VCNMXzTZInNqpHaQUMPPwZsicO468Ujc5u3jLGLZ8,1150
121
- src/frontends/live_api_react/frontend/src/multimodal-live-types.ts,sha256=J52j9vfza9EyODprh9w29psdBSEygTnXZF8yJIsfsDs,6037
122
- src/frontends/live_api_react/frontend/src/react-app-env.d.ts,sha256=4bU28oZlD8FJ4AdXDQq363Ql9oYd69DhrT-i3nrTDiQ,636
123
- src/frontends/live_api_react/frontend/src/reportWebVitals.ts,sha256=mGju88uviGA8x6soLtI3vm0dgIZVFaN3QQ0603KB5pk,1021
124
- src/frontends/live_api_react/frontend/src/setupTests.ts,sha256=7Iq1rAaeoGzkLb3FhpNU2XlVmnu1O1cS56foEBFISTg,837
125
- src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx,sha256=lnB4GWVy9HW4nI6YuRes059ywhU-WwZO0K_zvAadUZY,1690
126
- src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss,sha256=L8MzlqHkoJ3B-qnlYD62nGlTTUOkgX5H3yxKVBeHh-c,1346
127
- src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx,sha256=E11x8IaWcCJFtVOml9NSiqZV6OQLfuEjHWc6vm12tVU,6696
128
- src/frontends/live_api_react/frontend/src/components/logger/logger.scss,sha256=0ObbIB4mCYNshL650inZN24-HXPvNBxAvMIVhqc0hdg,2432
129
- src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts,sha256=7r7bRNowJxdSkDJN2awTX82etfNu7V-ThufCRACYhU0,3293
130
- src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx,sha256=NsrRdCorl34MggRSiKLeDfGdgHZXFOf7oinng2ig-WM,16363
131
- src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss,sha256=Pq27rQAM-2-Z5tYShtJoVk85w541ywkF6X30F5tXQwI,11477
132
- src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx,sha256=qBQ6KLxVNCeaydwPtXIiOMFJ04_ETUqU0hRypLkF03M,1383
133
- src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts,sha256=9t2rkByVRmRJkO3Lgi44FxYAuLccKXySCnbokY4erJw,3035
134
- src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts,sha256=83cmRJlQYoLLy9VDc0GO3e4VBfkKpiEHrvV26Z5rHng,776
135
- src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts,sha256=A4UIo8T6yHlIAEEgoyoVOqMNwukkonYjfO8iMwAyjDQ,1977
136
- src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts,sha256=NuTM7meIwaSIg0kB3SusMESaI44GGIX8zM07PvPBPWw,1841
137
- src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts,sha256=JcO69YeM7boSf1gM5VVX6cbLvGRT-dYYJjWUVBJFWbM,3699
138
- src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts,sha256=xgtnrm_jbmKzwUkeCQiv3C7jmU7DfdaJU2su6NLpXCk,8301
139
- src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts,sha256=2I1va0WszQ3-SHfSmgp5-ToOSof5H6q-rgFnlf8mGUI,1258
140
- src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts,sha256=1XYFpfF9jCa6k7oCWbVYqErQchoTBQBKKwM-zQcyQBI,9932
141
- src/frontends/live_api_react/frontend/src/utils/store-logger.ts,sha256=YxS0TjiGntFPIrHVVU14WplpITzzxP2faTeAVOMvbQA,1761
142
- src/frontends/live_api_react/frontend/src/utils/utils.ts,sha256=qQIhLzfyCBLecU0ksQCKIbD3cIflb0hxt0SPZGdYFEo,2457
143
- src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts,sha256=ULgnXphZUfbHkRhGoPT_670WHjzaXJwWgYU0ISQRSXI,1979
144
- src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts,sha256=DEXn9ywn7N_tqKBhQ9eUxvWCWqteyfT-Q0dwjbvjjpY,1780
108
+ src/deployment_targets/cloud_run/{{cookiecutter.agent_directory}}/server.py,sha256=pHVU908zwfv2jgXc12XQShB7InUPRLivxa0DR7ZTzPk,16329
109
+ src/frontends/adk_live_react/frontend/package-lock.json,sha256=fenwkrOYhrFnJIUN6p9soaWYRg7uUPGLsMG27D45iuI,697250
110
+ src/frontends/adk_live_react/frontend/package.json,sha256=KL24gqAKmsNf7CGe39ZqIIp2nD7rYBt4kdupO0QdK80,1137
111
+ src/frontends/adk_live_react/frontend/tsconfig.json,sha256=cyqEhf7-Yydz-PX8_cuF8JpsyC363NDTNkrmCk0sKAo,595
112
+ src/frontends/adk_live_react/frontend/public/favicon.ico,sha256=FY9oTN01RzaJ2lZ1rCjNXsEfT1gWZJA3fPx0QMBlMCU,15086
113
+ src/frontends/adk_live_react/frontend/public/index.html,sha256=tOhOQOx5kMi9WhxT-4XAk75tmkoHNCyBM36dgR725TM,2508
114
+ src/frontends/adk_live_react/frontend/public/robots.txt,sha256=kNJLw79pisHhc3OVAimMzKcq3x9WT6sF9IS4xI0crdI,67
115
+ src/frontends/adk_live_react/frontend/src/App.scss,sha256=477MjERLsjhhzSS5WvROHfgdLi41F0PeW7zFTIROlH4,3472
116
+ src/frontends/adk_live_react/frontend/src/App.test.tsx,sha256=l4bj_dLHDggvlcxZZgbhXdR9oIpdCwrGglRWtSqNqUU,869
117
+ src/frontends/adk_live_react/frontend/src/App.tsx,sha256=XbYYYR8H-2MqTVQHeOCMDB4-ugqeQ87ImxZsve9aXCs,2250
118
+ src/frontends/adk_live_react/frontend/src/index.css,sha256=THy1DxvcOTW4WypzWvYEL_SVAVzda1iPEQ0M6pvgNUo,950
119
+ src/frontends/adk_live_react/frontend/src/index.tsx,sha256=c3VCNMXzTZInNqpHaQUMPPwZsicO468Ujc5u3jLGLZ8,1150
120
+ src/frontends/adk_live_react/frontend/src/multimodal-live-types.ts,sha256=xDvm71PYghXhr2I2eaYl-WjpK1ZD61dGxRWVoMNlqto,7030
121
+ src/frontends/adk_live_react/frontend/src/react-app-env.d.ts,sha256=4bU28oZlD8FJ4AdXDQq363Ql9oYd69DhrT-i3nrTDiQ,636
122
+ src/frontends/adk_live_react/frontend/src/reportWebVitals.ts,sha256=mGju88uviGA8x6soLtI3vm0dgIZVFaN3QQ0603KB5pk,1021
123
+ src/frontends/adk_live_react/frontend/src/setupTests.ts,sha256=7Iq1rAaeoGzkLb3FhpNU2XlVmnu1O1cS56foEBFISTg,837
124
+ src/frontends/adk_live_react/frontend/src/components/audio-pulse/AudioPulse.tsx,sha256=lnB4GWVy9HW4nI6YuRes059ywhU-WwZO0K_zvAadUZY,1690
125
+ src/frontends/adk_live_react/frontend/src/components/audio-pulse/audio-pulse.scss,sha256=L8MzlqHkoJ3B-qnlYD62nGlTTUOkgX5H3yxKVBeHh-c,1346
126
+ src/frontends/adk_live_react/frontend/src/components/logger/Logger.tsx,sha256=RyF3WN6l4BnugTbZb3aIwiX14rSf9qPiYJUvJZ_wvRo,6899
127
+ src/frontends/adk_live_react/frontend/src/components/logger/logger.scss,sha256=eiIrvNjBQ8eDyHEAK2QTwKWzLhy6X7_k5hkkOzBrr2s,2955
128
+ src/frontends/adk_live_react/frontend/src/components/logger/mock-logs.ts,sha256=7r7bRNowJxdSkDJN2awTX82etfNu7V-ThufCRACYhU0,3293
129
+ src/frontends/adk_live_react/frontend/src/components/side-panel/SidePanel.tsx,sha256=LOJcZjpKTlYpWdxdZdIlaa-CoK690AuRS9ETWzjIZrk,16632
130
+ src/frontends/adk_live_react/frontend/src/components/side-panel/side-panel.scss,sha256=S0f9jQZ8_HkAN1Xb7iMohH8-RVvn7mAIeTI-u5sgQnc,11999
131
+ src/frontends/adk_live_react/frontend/src/components/transcription-preview/TranscriptionPreview.tsx,sha256=nJt0EbuoHKkxyU0yldwVBBSSnYWeAcdSgGMXAhXgYDc,3572
132
+ src/frontends/adk_live_react/frontend/src/components/transcription-preview/transcription-preview.scss,sha256=CYmGWvPXHKJkq3KZBOGFFIKKDD137D69FvWAP8KHEJg,3146
133
+ src/frontends/adk_live_react/frontend/src/contexts/LiveAPIContext.tsx,sha256=qBQ6KLxVNCeaydwPtXIiOMFJ04_ETUqU0hRypLkF03M,1383
134
+ src/frontends/adk_live_react/frontend/src/hooks/use-live-api.ts,sha256=O0nANxs9NCe8ahkM27iVl_Ml6iTw840XTl6WLnutzKI,3221
135
+ src/frontends/adk_live_react/frontend/src/hooks/use-media-stream-mux.ts,sha256=83cmRJlQYoLLy9VDc0GO3e4VBfkKpiEHrvV26Z5rHng,776
136
+ src/frontends/adk_live_react/frontend/src/hooks/use-screen-capture.ts,sha256=A4UIo8T6yHlIAEEgoyoVOqMNwukkonYjfO8iMwAyjDQ,1977
137
+ src/frontends/adk_live_react/frontend/src/hooks/use-webcam.ts,sha256=NuTM7meIwaSIg0kB3SusMESaI44GGIX8zM07PvPBPWw,1841
138
+ src/frontends/adk_live_react/frontend/src/utils/audio-recorder.ts,sha256=cWCdpdeQW0-cia-Jsg39wH1UdSt4SViVXsMMHj6oeoE,3691
139
+ src/frontends/adk_live_react/frontend/src/utils/audio-streamer.ts,sha256=F9L53m74vPUNG0vED5m7Y8i2thlIbktEHVXU9RGIiNs,8290
140
+ src/frontends/adk_live_react/frontend/src/utils/audioworklet-registry.ts,sha256=2I1va0WszQ3-SHfSmgp5-ToOSof5H6q-rgFnlf8mGUI,1258
141
+ src/frontends/adk_live_react/frontend/src/utils/multimodal-live-client.ts,sha256=hJPLkWIHQNJCTF9hfEn6HGam9QSdOrktlUBKoWMLfqU,16833
142
+ src/frontends/adk_live_react/frontend/src/utils/store-logger.ts,sha256=YxS0TjiGntFPIrHVVU14WplpITzzxP2faTeAVOMvbQA,1761
143
+ src/frontends/adk_live_react/frontend/src/utils/utils.ts,sha256=AT9Jzsny0lU52w7NjbCWo4dsQnt1gXuWBId5zlz-CbE,3312
144
+ src/frontends/adk_live_react/frontend/src/utils/worklets/audio-processing.ts,sha256=ULgnXphZUfbHkRhGoPT_670WHjzaXJwWgYU0ISQRSXI,1979
145
+ src/frontends/adk_live_react/frontend/src/utils/worklets/vol-meter.ts,sha256=DEXn9ywn7N_tqKBhQ9eUxvWCWqteyfT-Q0dwjbvjjpY,1780
145
146
  src/frontends/streamlit/frontend/side_bar.py,sha256=XKiC8RtJbx5f3d4CKsTvNFKK0X4o6VzTYQCWE4QUNb4,9043
146
147
  src/frontends/streamlit/frontend/streamlit_app.py,sha256=O-mF9-0nSL220mZSohKK6QrdSiaRsUJL1o_XeKdj8zo,9868
147
148
  src/frontends/streamlit/frontend/style/app_markdown.py,sha256=4H9GGlaOIbG_4T4QvHyTMfoeumJze7cZ2VuGIv39wFo,1050
148
149
  src/frontends/streamlit/frontend/utils/chat_utils.py,sha256=YFN9wuHn4GJWNJQxUkq1uFJ3SqIjNZV2nkTDOPDac4o,2280
149
- src/frontends/streamlit/frontend/utils/local_chat_history.py,sha256=1dcF3aPu6hT8f819-ppkVYUg20mnlUNNOnTpJ5yCcXE,4777
150
+ src/frontends/streamlit/frontend/utils/local_chat_history.py,sha256=d1VuDnlxJHdpGdIiAJr0pdg1AXTgVTqFUaYpZcCw_Oo,4899
150
151
  src/frontends/streamlit/frontend/utils/message_editing.py,sha256=YWoPe2KeWMuL3YVTm0am6MK3kzjEIYVmdkdwTQpmGdQ,2263
151
152
  src/frontends/streamlit/frontend/utils/multimodal_utils.py,sha256=v6YbCkz_YcnEo-9YvRjwBNt0SzU4M39bYxJGmKk69vE,7313
152
153
  src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS4vrhcvPyZe6z3NLHliEg17s9jjo,12551
@@ -154,23 +155,24 @@ src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABa
154
155
  src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
155
156
  src/resources/containers/e2e-tests/Dockerfile,sha256=yA3HxeX0HNpl8B4oEQUICCVZDCXdRn2Igmii4jt-r7k,1895
156
157
  src/resources/docs/adk-cheatsheet.md,sha256=9VZpM5bG3pJq4PbNfym7LOLzgeLZfqkAGA0YlIhShKQ,71375
157
- src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
158
- src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
159
- src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
160
- src/resources/locks/uv-adk_base-agent_engine.lock,sha256=3vxRrbyJ0ySW_VqjCL3RLFKAuZpYw4CYcL2CjgJWEVI,567595
161
- src/resources/locks/uv-adk_base-cloud_run.lock,sha256=2A1nvhxumnphEbs3jhbPPc3yqU7XJn7g01pEygsZQVQ,752779
162
- src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=j6GtLqMEjBPrMHLbYBP7Tx8u92Ubq8wm-QfvbvpVnOg,636673
163
- src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=NulH9sYfEV3hftBTkPFh0uSr-3Zwl4ojE0SeXiT6_KI,846052
164
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=fcwOoEXj0AGZxYvI_KFbO9t3Opq6KnaLIn3eCRASKB0,934190
165
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=iQiheltFkHQtF9tq992RiQyQKUx1hlaYs_qKMckuous,1233908
166
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=qcsSMY-_lHe3Fy2iY9RwJd2lGXBVhx_lJItDZjh2xy0,800009
167
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=WNSVBOeNpPi96j-1D6ONx7fLZaZOpHMsqwkVDTO_lOE,1063023
168
- src/resources/locks/uv-live_api-cloud_run.lock,sha256=jrcrlnpJfJ6MIyEz1Z7qS_nxy0F035M-6C0D80VWCIo,969381
169
- src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
158
+ src/resources/idx/idx-template.json,sha256=EuiZ_v__1Zourbz4F8fjutNKNSvLGc6HFRW2_4vVSuM,377
159
+ src/resources/idx/idx-template.nix,sha256=cI35oMmMzgsDRMQgIBmMLtAUczIFramAkA2iBpq_o14,811
160
+ src/resources/idx/.idx/dev.nix,sha256=chSxdz-b06y76Mdbb9zjxUJtI3CN4lBVqiZ0rO7PktE,2356
161
+ src/resources/locks/uv-adk_base-agent_engine.lock,sha256=ZgPh5biealIwTDNBuQf_l8jITKP-Ysh6oFzklpKYB7s,579993
162
+ src/resources/locks/uv-adk_base-cloud_run.lock,sha256=uAOfYWCD3OnBDiZBzzgXzgBQWkm2lAPGc0QkHAUIuTY,768341
163
+ src/resources/locks/uv-adk_live-agent_engine.lock,sha256=w2jNujacGZ6k8DIpqCICyXJEKgoACxinPcYbKOWXdzY,581009
164
+ src/resources/locks/uv-adk_live-cloud_run.lock,sha256=LKQSFEwYBxDP74gbToCmYzSwhiANzzjWAMIl4buD-Ng,769305
165
+ src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=pj4aFI8rKhl82Mqq7p2VMq9sJXIPzJkmgLzxebK_hvg,649075
166
+ src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=aMorX9sCGVAGoR-4feaJAG1q3nUqeiHWYWgiXt6LsfU,861618
167
+ src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=kb2_phbUo4uqVD3mlMCDlzZaGF8WEufCZlXNKy-_d4k,934331
168
+ src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=2t7EjbkfRMw0c_yxdfR9kfut2yHC2IOlOyIXtrKO2xI,1257751
169
+ src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=LM3qYoJoEVr0k8MhqQw-NVpV_BtaG_bl_sleI2IRi_A,805452
170
+ src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=pThb2M9iZhqRaS9gUI8lwuGTID3z2wHRc1m1YfT-FfQ,1107679
171
+ src/utils/generate_locks.py,sha256=2BXHtDDPIZS5fOpxF80xVo4W-a0pS25zdk8345lH8RI,4535
170
172
  src/utils/lock_utils.py,sha256=IFOMUWtb-ypm2Y8w8J5y2oI_-MaPuwPF_JOAAlnNudA,2275
171
173
  src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
172
- agent_starter_pack-0.15.7.dist-info/METADATA,sha256=FGrKWMlVKUrEqH7xfJIJGWGrh_qAy3VV-MEo6ODZDm4,11482
173
- agent_starter_pack-0.15.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
174
- agent_starter_pack-0.15.7.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
175
- agent_starter_pack-0.15.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
176
- agent_starter_pack-0.15.7.dist-info/RECORD,,
174
+ agent_starter_pack-0.16.0.dist-info/METADATA,sha256=xvDM0OHmO7n96bD18pBl0mKqDaPFbF18VMeiD5uMz2k,11482
175
+ agent_starter_pack-0.16.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
176
+ agent_starter_pack-0.16.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
177
+ agent_starter_pack-0.16.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
178
+ agent_starter_pack-0.16.0.dist-info/RECORD,,
@@ -18,7 +18,7 @@ settings:
18
18
  requires_data_ingestion: false
19
19
  requires_session: true
20
20
  deployment_targets: ["agent_engine", "cloud_run"]
21
- extra_dependencies: ["google-adk~=1.14.0"]
21
+ extra_dependencies: ["google-adk>=1.15.0,<2.0.0"]
22
22
  tags: ["adk"]
23
23
  frontend_type: "None"
24
24
 
@@ -12,13 +12,11 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- description: "A real-time multimodal RAG agent powered by Gemini Live API, supporting audio/video/text chat with vector DB-backed responses"
15
+ description: "Real-time multimodal agent with ADK and Gemini Live API for low-latency voice and video interaction."
16
16
  settings:
17
17
  requires_data_ingestion: false
18
- frontend_type: "live_api_react"
19
- deployment_targets: ["cloud_run"]
20
- extra_dependencies: [
21
- "backoff~=2.2.1",
22
- "google-genai>=1.16.0",
23
- ]
18
+ frontend_type: "adk_live_react"
19
+ deployment_targets: ["agent_engine", "cloud_run"]
20
+ extra_dependencies: ["google-adk>=1.15.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
+ tags: ["adk", "adk_live"]
24
22
  example_question: "What's the weather in San Francisco?"
@@ -0,0 +1,31 @@
1
+ # ADK Live Agent
2
+
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
+
5
+ ![adk_live_diagram](https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/adk_live_diagram.png)
6
+
7
+ **Key components:**
8
+
9
+ - **Python Backend** (in `app/` folder): ADK-powered agent using Gemini's live audio model with native tool calling and deployment support for Cloud Run and Agent Engine
10
+
11
+ - **React Frontend** (in `frontend/` folder): Web console for interacting with the live agent via audio, video, and text
12
+
13
+ ![live api demo](https://storage.googleapis.com/github-repo/generative-ai/sample-apps/e2e-gen-ai-app-starter-pack/adk_live_pattern_demo.gif)
14
+
15
+ Once running, click the play button to connect and interact with the agent. Try asking "What's the weather like in San Francisco?" to see tool calling in action.
16
+
17
+ ## Additional Resources for Multimodal Live API
18
+
19
+ Explore these resources to learn more about the Multimodal Live API and see examples of its usage:
20
+
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
+ - [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
+ - [Gemini 2 Cookbook](https://github.com/google-gemini/cookbook/tree/main/gemini-2): Practical examples and tutorials for working with Gemini 2
24
+ - [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.
25
+
26
+ ## Current Status & Future Work
27
+
28
+ This pattern is under active development. Key areas planned for future enhancement include:
29
+
30
+ * **Observability:** Implementing comprehensive monitoring and tracing features.
31
+ * **Load Testing:** Integrating load testing capabilities.
@@ -0,0 +1,48 @@
1
+ # Copyright 2025 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import os
16
+
17
+ import google.auth
18
+ import vertexai
19
+ from google.adk.agents import Agent
20
+
21
+ _, project_id = google.auth.default()
22
+ os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
23
+ os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "us-central1")
24
+ os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
25
+
26
+ vertexai.init(project=project_id, location="us-central1")
27
+
28
+
29
+ def get_weather(query: str) -> str:
30
+ """Simulates a web search. Use it get information on weather.
31
+
32
+ Args:
33
+ query: A string containing the location to get weather information for.
34
+
35
+ Returns:
36
+ A string with the simulated weather information for the queried location.
37
+ """
38
+ if "sf" in query.lower() or "san francisco" in query.lower():
39
+ return "It's 60 degrees and foggy."
40
+ return "It's 90 degrees and sunny."
41
+
42
+
43
+ root_agent = Agent(
44
+ name="root_agent",
45
+ model="gemini-live-2.5-flash-preview-native-audio-09-2025",
46
+ instruction="You are a helpful AI assistant designed to provide accurate and useful information.",
47
+ tools=[get_weather],
48
+ )
@@ -0,0 +1,38 @@
1
+ # Copyright 2025 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """
15
+ You can add your unit tests here.
16
+ This is where you test your business logic, including agent functionality,
17
+ data processing, and other core components of your application.
18
+ """
19
+
20
+ from app.agent import get_weather
21
+
22
+
23
+ def test_get_weather_san_francisco() -> None:
24
+ """Test get_weather function returns correct weather for San Francisco."""
25
+ result = get_weather("What's the weather in San Francisco?")
26
+ assert result == "It's 60 degrees and foggy."
27
+
28
+
29
+ def test_get_weather_san_francisco_abbreviation() -> None:
30
+ """Test get_weather function returns correct weather for SF abbreviation."""
31
+ result = get_weather("weather in sf")
32
+ assert result == "It's 60 degrees and foggy."
33
+
34
+
35
+ def test_get_weather_other_location() -> None:
36
+ """Test get_weather function returns default weather for other locations."""
37
+ result = get_weather("What's the weather in New York?")
38
+ assert result == "It's 90 degrees and sunny."
@@ -19,7 +19,7 @@ settings:
19
19
  requires_session: true
20
20
  deployment_targets: ["agent_engine", "cloud_run"]
21
21
  extra_dependencies: [
22
- "google-adk~=1.14.0",
22
+ "google-adk>=1.15.0,<2.0.0",
23
23
  "langchain-google-vertexai~=2.0.7",
24
24
  "langchain~=0.3.24",
25
25
  "langchain-core~=0.3.55",
@@ -13,74 +13,35 @@
13
13
  # limitations under the License.
14
14
 
15
15
  # mypy: disable-error-code="union-attr"
16
- from langchain_core.messages import BaseMessage
17
- from langchain_core.runnables import RunnableConfig
18
- from langchain_core.tools import tool
19
16
  from langchain_google_vertexai import ChatVertexAI
20
- from langgraph.graph import END, MessagesState, StateGraph
21
- from langgraph.prebuilt import ToolNode
17
+ from langgraph.prebuilt import create_react_agent
22
18
 
23
19
  from .crew.crew import DevCrew
24
20
 
25
21
  LOCATION = "global"
26
22
  LLM = "gemini-2.5-flash"
27
23
 
24
+ llm = ChatVertexAI(model=LLM, location=LOCATION, temperature=0)
25
+
28
26
 
29
- @tool
30
27
  def coding_tool(code_instructions: str) -> str:
31
28
  """Use this tool to write a python program given a set of requirements and or instructions."""
32
29
  inputs = {"code_instructions": code_instructions}
33
30
  return DevCrew().crew().kickoff(inputs=inputs)
34
31
 
35
32
 
36
- tools = [coding_tool]
37
-
38
- # 2. Set up the language model
39
- llm = ChatVertexAI(
40
- model=LLM, location=LOCATION, temperature=0, max_tokens=4096, streaming=True
41
- ).bind_tools(tools)
42
-
43
-
44
- # 3. Define workflow components
45
- def should_continue(state: MessagesState) -> str:
46
- """Determines whether to use the crew or end the conversation."""
47
- last_message = state["messages"][-1]
48
- return "dev_crew" if last_message.tool_calls else END
49
-
50
-
51
- def call_model(state: MessagesState, config: RunnableConfig) -> dict[str, BaseMessage]:
52
- """Calls the language model and returns the response."""
53
- system_message = (
54
- "You are an expert Lead Software Engineer Manager.\n"
55
- "Your role is to speak to a user and understand what kind of code they need to "
56
- "build.\n"
57
- "Part of your task is therefore to gather requirements and clarifying ambiguity "
58
- "by asking followup questions. Don't ask all the questions together as the user "
59
- "has a low attention span, rather ask a question at the time.\n"
60
- "Once the problem to solve is clear, you will call your tool for writing the "
61
- "solution.\n"
62
- "Remember, you are an expert in understanding requirements but you cannot code, "
63
- "use your coding tool to generate a solution. Keep the test cases if any, they "
64
- "are useful for the user."
65
- )
66
-
67
- messages_with_system = [{"type": "system", "content": system_message}] + state[
68
- "messages"
69
- ]
70
- # Forward the RunnableConfig object to ensure the agent is capable of streaming the response.
71
- response = llm.invoke(messages_with_system, config)
72
- return {"messages": response}
73
-
74
-
75
- # 4. Create the workflow graph
76
- workflow = StateGraph(MessagesState)
77
- workflow.add_node("agent", call_model)
78
- workflow.add_node("dev_crew", ToolNode(tools))
79
- workflow.set_entry_point("agent")
80
-
81
- # 5. Define graph edges
82
- workflow.add_conditional_edges("agent", should_continue)
83
- workflow.add_edge("dev_crew", "agent")
84
-
85
- # 6. Compile the workflow
86
- agent = workflow.compile()
33
+ system_message = (
34
+ "You are an expert Lead Software Engineer Manager.\n"
35
+ "Your role is to speak to a user and understand what kind of code they need to "
36
+ "build.\n"
37
+ "Part of your task is therefore to gather requirements and clarifying ambiguity "
38
+ "by asking followup questions. Don't ask all the questions together as the user "
39
+ "has a low attention span, rather ask a question at the time.\n"
40
+ "Once the problem to solve is clear, you will call your tool for writing the "
41
+ "solution.\n"
42
+ "Remember, you are an expert in understanding requirements but you cannot code, "
43
+ "use your coding tool to generate a solution. Keep the test cases if any, they "
44
+ "are useful for the user."
45
+ )
46
+
47
+ agent = create_react_agent(model=llm, tools=[coding_tool], prompt=system_message)