diff --git a/eventarc-agentic-workflows/requirements-dev.in b/eventarc-agentic-workflows/requirements-dev.in new file mode 100644 index 0000000..391da8c --- /dev/null +++ b/eventarc-agentic-workflows/requirements-dev.in @@ -0,0 +1,8 @@ +-r services/agents/adk_a2a_agent/requirements.in +-r services/agents/adk_mcp_agent/requirements.in +-r services/agents/langchain_mcp_agent/requirements.in +-r services/store/requirements.in +-r services/third_party_shipment/requirements.in +pyyaml>=6.0.2 +python-dotenv==1.2.2 +google-adk[eval] diff --git a/eventarc-agentic-workflows/requirements-dev.txt b/eventarc-agentic-workflows/requirements-dev.txt index ea1fcf2..678e986 100644 --- a/eventarc-agentic-workflows/requirements-dev.txt +++ b/eventarc-agentic-workflows/requirements-dev.txt @@ -1,5 +1,785 @@ -# requirements-dev.txt --r services/agents/adk_a2a_agent/requirements.txt -pyyaml>=6.0.2 -python-dotenv==1.0.1 -google-adk[eval] +a2a-sdk==0.3.26 + # via google-adk +absl-py==2.4.0 + # via rouge-score +aiohappyeyeballs==2.6.1 + # via aiohttp +aiohttp==3.13.5 + # via + # google-cloud-aiplatform + # litellm +aiosignal==1.4.0 + # via aiohttp +aiosqlite==0.22.1 + # via google-adk +alembic==1.18.4 + # via sqlalchemy-spanner +annotated-doc==0.0.4 + # via + # fastapi + # typer +annotated-types==0.7.0 + # via pydantic +anyio==4.13.0 + # via + # google-adk + # google-genai + # httpx + # mcp + # openai + # sse-starlette + # starlette +attrs==26.1.0 + # via + # aiohttp + # jsonschema + # referencing +authlib==1.7.0 + # via google-adk +bottleneck==1.6.0 + # via langchain-google-vertexai +certifi==2026.4.22 + # via + # httpcore + # httpx + # requests +cffi==2.0.0 + # via + # cryptography + # pytest-codspeed +charset-normalizer==3.4.7 + # via requests +click==8.3.3 + # via + # google-adk + # litellm + # nltk + # typer + # uvicorn +cloudpickle==3.1.2 + # via google-cloud-aiplatform +cryptography==46.0.7 + # via + # authlib + # google-auth + # joserfc + # pyjwt + # pyopenssl +distro==1.9.0 + # via + # google-genai + # openai +docstring-parser==0.18.0 + # via google-cloud-aiplatform +fastapi==0.136.1 + # via + # -r services/agents/adk_mcp_agent/requirements.in + # -r services/agents/langchain_mcp_agent/requirements.in + # -r services/store/requirements.in + # -r services/third_party_shipment/requirements.in + # google-adk +fastuuid==0.14.0 + # via litellm +filelock==3.29.0 + # via huggingface-hub +frozenlist==1.8.0 + # via + # aiohttp + # aiosignal +fsspec==2026.3.0 + # via huggingface-hub +gepa==0.1.1 + # via google-adk +google-adk[a2a,eval]==1.31.1 + # via + # -r requirements-dev.in + # -r services/agents/adk_a2a_agent/requirements.in + # -r services/agents/adk_mcp_agent/requirements.in +google-api-core[grpc]==2.30.3 + # via + # a2a-sdk + # google-api-python-client + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-core + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-storage + # google-cloud-trace + # google-cloud-vectorsearch +google-api-python-client==2.194.0 + # via google-adk +google-auth[pyopenssl,requests]==2.49.2 + # via + # google-adk + # google-api-core + # google-api-python-client + # google-auth-httplib2 + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-core + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-speech + # google-cloud-storage + # google-cloud-trace + # google-cloud-vectorsearch + # google-genai +google-auth-httplib2==0.3.1 + # via google-api-python-client +google-cloud-aiplatform[agent-engines,evaluation]==1.148.1 + # via + # google-adk + # langchain-google-vertexai +google-cloud-appengine-logging==1.9.0 + # via google-cloud-logging +google-cloud-audit-log==0.5.0 + # via google-cloud-logging +google-cloud-bigquery==3.41.0 + # via + # google-adk + # google-cloud-aiplatform +google-cloud-bigquery-storage==2.37.0 + # via google-adk +google-cloud-bigtable==2.36.0 + # via google-adk +google-cloud-core==2.5.1 + # via + # google-cloud-bigquery + # google-cloud-bigtable + # google-cloud-logging + # google-cloud-spanner + # google-cloud-storage +google-cloud-dataplex==2.18.0 + # via google-adk +google-cloud-discoveryengine==0.13.12 + # via google-adk +google-cloud-eventarc-publishing==0.10.0 + # via + # -r services/agents/adk_a2a_agent/requirements.in + # -r services/agents/adk_mcp_agent/requirements.in + # -r services/agents/langchain_mcp_agent/requirements.in + # -r services/store/requirements.in + # -r services/third_party_shipment/requirements.in +google-cloud-iam==2.22.0 + # via google-cloud-aiplatform +google-cloud-logging==3.15.0 + # via + # google-cloud-aiplatform + # opentelemetry-exporter-gcp-logging +google-cloud-monitoring==2.30.0 + # via + # google-cloud-spanner + # opentelemetry-exporter-gcp-monitoring +google-cloud-pubsub==2.37.0 + # via google-adk +google-cloud-resource-manager==1.17.0 + # via google-cloud-aiplatform +google-cloud-secret-manager==2.27.0 + # via google-adk +google-cloud-spanner==3.65.0 + # via + # google-adk + # sqlalchemy-spanner +google-cloud-speech==2.38.0 + # via google-adk +google-cloud-storage==3.10.1 + # via + # google-adk + # google-cloud-aiplatform + # langchain-google-vertexai +google-cloud-trace==1.19.0 + # via + # google-cloud-aiplatform + # opentelemetry-exporter-gcp-trace +google-cloud-vectorsearch==0.10.0 + # via langchain-google-vertexai +google-crc32c==1.8.0 + # via + # google-cloud-bigtable + # google-cloud-storage + # google-resumable-media +google-genai==1.73.1 + # via + # google-adk + # google-cloud-aiplatform +google-resumable-media==2.8.2 + # via + # google-cloud-bigquery + # google-cloud-storage +googleapis-common-protos[grpc]==1.74.0 + # via + # google-api-core + # google-cloud-audit-log + # grpc-google-iam-v1 + # grpcio-status + # opentelemetry-exporter-otlp-proto-http +graphviz==0.21 + # via google-adk +greenlet==3.4.0 + # via sqlalchemy +grpc-google-iam-v1==0.14.4 + # via + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-iam + # google-cloud-logging + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner +grpc-interceptor==0.15.4 + # via google-cloud-spanner +grpcio==1.80.0 + # via + # google-api-core + # google-cloud-appengine-logging + # google-cloud-bigquery-storage + # google-cloud-dataplex + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-speech + # google-cloud-trace + # google-cloud-vectorsearch + # googleapis-common-protos + # grpc-google-iam-v1 + # grpc-interceptor + # grpcio-status +grpcio-status==1.80.0 + # via + # google-api-core + # google-cloud-pubsub +h11==0.16.0 + # via + # httpcore + # uvicorn +hf-xet==1.4.3 + # via huggingface-hub +httpcore==1.0.9 + # via httpx +httplib2==0.31.2 + # via + # google-api-python-client + # google-auth-httplib2 +httpx==0.28.1 + # via + # a2a-sdk + # google-adk + # google-genai + # huggingface-hub + # langchain-google-vertexai + # langchain-tests + # langgraph-sdk + # langsmith + # litellm + # mcp + # openai +httpx-sse==0.4.3 + # via + # a2a-sdk + # langchain-google-vertexai + # mcp +huggingface-hub==1.12.0 + # via tokenizers +idna==3.13 + # via + # anyio + # httpx + # requests + # yarl +importlib-metadata==8.7.1 + # via + # litellm + # opentelemetry-api +iniconfig==2.3.0 + # via pytest +jinja2==3.1.6 + # via + # -r services/store/requirements.in + # google-adk + # litellm +jiter==0.14.0 + # via openai +joblib==1.5.3 + # via + # nltk + # scikit-learn +joserfc==1.6.4 + # via authlib +jsonpatch==1.33 + # via langchain-core +jsonpointer==3.1.1 + # via jsonpatch +jsonschema==4.26.0 + # via + # google-adk + # google-cloud-aiplatform + # litellm + # mcp +jsonschema-specifications==2025.9.1 + # via jsonschema +langchain==1.2.15 + # via -r services/agents/langchain_mcp_agent/requirements.in +langchain-core==1.3.2 + # via + # langchain + # langchain-google-vertexai + # langchain-tests + # langgraph + # langgraph-checkpoint + # langgraph-prebuilt +langchain-google-vertexai==3.2.2 + # via -r services/agents/langchain_mcp_agent/requirements.in +langchain-protocol==0.0.11 + # via langchain-core +langchain-tests==1.1.6 + # via langchain-google-vertexai +langgraph==1.1.9 + # via + # -r services/agents/langchain_mcp_agent/requirements.in + # langchain +langgraph-checkpoint==4.0.2 + # via + # langgraph + # langgraph-prebuilt +langgraph-prebuilt==1.0.10 + # via langgraph +langgraph-sdk==0.3.13 + # via langgraph +langsmith==0.7.36 + # via langchain-core +litellm==1.82.6 + # via google-cloud-aiplatform +mako==1.3.11 + # via alembic +markdown-it-py==4.0.0 + # via rich +markupsafe==3.0.3 + # via + # jinja2 + # mako +mcp==1.27.0 + # via + # -r services/agents/adk_mcp_agent/requirements.in + # -r services/agents/langchain_mcp_agent/requirements.in + # google-adk +mdurl==0.1.2 + # via markdown-it-py +mmh3==5.2.1 + # via google-cloud-spanner +multidict==6.7.1 + # via + # aiohttp + # yarl +nltk==3.9.4 + # via rouge-score +numexpr==2.14.1 + # via langchain-google-vertexai +numpy==2.4.4 + # via + # bottleneck + # langchain-tests + # numexpr + # pandas + # rouge-score + # scikit-learn + # scipy +openai==2.32.0 + # via litellm +opentelemetry-api==1.38.0 + # via + # google-adk + # google-cloud-logging + # google-cloud-pubsub + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp + # opentelemetry-sdk + # opentelemetry-semantic-conventions +opentelemetry-exporter-gcp-logging==1.11.0a0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-exporter-gcp-monitoring==1.11.0a0 + # via google-adk +opentelemetry-exporter-gcp-trace==1.11.0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-exporter-otlp-proto-common==1.38.0 + # via opentelemetry-exporter-otlp-proto-http +opentelemetry-exporter-otlp-proto-http==1.38.0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-proto==1.38.0 + # via + # opentelemetry-exporter-otlp-proto-common + # opentelemetry-exporter-otlp-proto-http +opentelemetry-resourcedetector-gcp==1.11.0a0 + # via + # google-adk + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace +opentelemetry-sdk==1.38.0 + # via + # google-adk + # google-cloud-aiplatform + # google-cloud-pubsub + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp +opentelemetry-semantic-conventions==0.59b0 + # via + # google-cloud-spanner + # opentelemetry-sdk +orjson==3.11.8 + # via + # langgraph-sdk + # langsmith +ormsgpack==1.12.2 + # via langgraph-checkpoint +packaging==26.1 + # via + # google-cloud-aiplatform + # google-cloud-bigquery + # huggingface-hub + # langchain-core + # langsmith + # pytest +pandas==3.0.2 + # via + # google-adk + # google-cloud-aiplatform +pluggy==1.6.0 + # via pytest +propcache==0.4.1 + # via + # aiohttp + # yarl +proto-plus==1.27.2 + # via + # google-api-core + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-trace + # google-cloud-vectorsearch +protobuf==6.33.6 + # via + # a2a-sdk + # google-api-core + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-audit-log + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-trace + # google-cloud-vectorsearch + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status + # opentelemetry-proto + # proto-plus +py-cpuinfo==9.0.0 + # via pytest-benchmark +pyarrow==22.0.0 + # via + # google-adk + # langchain-google-vertexai +pyasn1==0.6.3 + # via pyasn1-modules +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.13.3 + # via + # a2a-sdk + # fastapi + # google-adk + # google-cloud-aiplatform + # google-genai + # langchain + # langchain-core + # langchain-google-vertexai + # langgraph + # langsmith + # litellm + # mcp + # openai + # pydantic-settings +pydantic-core==2.46.3 + # via pydantic +pydantic-settings==2.14.0 + # via mcp +pygments==2.20.0 + # via + # pytest + # rich +pyjwt[crypto]==2.12.1 + # via mcp +pyopenssl==26.0.0 + # via google-auth +pyparsing==3.3.2 + # via httplib2 +pytest==9.0.3 + # via + # langchain-tests + # pytest-asyncio + # pytest-benchmark + # pytest-codspeed + # pytest-recording + # pytest-socket + # syrupy +pytest-asyncio==1.3.0 + # via langchain-tests +pytest-benchmark==5.2.3 + # via langchain-tests +pytest-codspeed==4.4.0 + # via langchain-tests +pytest-recording==0.13.4 + # via langchain-tests +pytest-socket==0.7.0 + # via langchain-tests +python-dateutil==2.9.0.post0 + # via + # google-adk + # google-cloud-bigquery + # pandas +python-dotenv==1.2.2 + # via + # -r requirements-dev.in + # google-adk + # litellm + # pydantic-settings +python-multipart==0.0.26 + # via + # -r services/store/requirements.in + # mcp +pyyaml==6.0.3 + # via + # -r requirements-dev.in + # google-adk + # google-cloud-aiplatform + # huggingface-hub + # langchain-core + # vcrpy +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications +regex==2026.4.4 + # via + # nltk + # tiktoken +requests==2.33.1 + # via + # google-adk + # google-api-core + # google-auth + # google-cloud-bigquery + # google-cloud-storage + # google-genai + # langsmith + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp + # requests-toolbelt + # tiktoken +requests-toolbelt==1.0.0 + # via langsmith +rich==15.0.0 + # via + # pytest-codspeed + # typer +rouge-score==0.1.2 + # via google-adk +rpds-py==0.30.0 + # via + # jsonschema + # referencing +ruamel-yaml==0.19.1 + # via google-cloud-aiplatform +scikit-learn==1.8.0 + # via google-cloud-aiplatform +scipy==1.17.1 + # via scikit-learn +shellingham==1.5.4 + # via typer +six==1.17.0 + # via + # python-dateutil + # rouge-score +sniffio==1.3.1 + # via + # google-genai + # openai +sqlalchemy==2.0.49 + # via + # alembic + # google-adk + # sqlalchemy-spanner +sqlalchemy-spanner==1.17.3 + # via google-adk +sqlparse==0.5.5 + # via google-cloud-spanner +sse-starlette==3.3.4 + # via mcp +starlette==0.52.1 + # via + # fastapi + # google-adk + # mcp + # sse-starlette +syrupy==5.1.0 + # via langchain-tests +tabulate==0.10.0 + # via google-adk +tenacity==9.1.4 + # via + # google-adk + # google-genai + # langchain-core +threadpoolctl==3.6.0 + # via scikit-learn +tiktoken==0.12.0 + # via litellm +tokenizers==0.22.2 + # via litellm +tqdm==4.67.3 + # via + # google-cloud-aiplatform + # huggingface-hub + # nltk + # openai +typer==0.24.2 + # via huggingface-hub +typing-extensions==4.15.0 + # via + # alembic + # fastapi + # google-adk + # google-cloud-aiplatform + # google-genai + # grpcio + # huggingface-hub + # langchain-core + # langchain-protocol + # mcp + # openai + # opentelemetry-api + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp + # opentelemetry-sdk + # opentelemetry-semantic-conventions + # pydantic + # pydantic-core + # sqlalchemy + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # mcp + # pydantic + # pydantic-settings +tzlocal==5.3.1 + # via google-adk +uritemplate==4.2.0 + # via google-api-python-client +urllib3==2.6.3 + # via requests +uuid-utils==0.14.1 + # via + # langchain-core + # langsmith +uvicorn==0.46.0 + # via + # -r services/agents/adk_a2a_agent/requirements.in + # -r services/agents/adk_mcp_agent/requirements.in + # -r services/agents/langchain_mcp_agent/requirements.in + # -r services/store/requirements.in + # -r services/third_party_shipment/requirements.in + # google-adk + # mcp +validators==0.35.0 + # via langchain-google-vertexai +vcrpy==8.1.1 + # via + # langchain-tests + # pytest-recording +watchdog==6.0.0 + # via google-adk +websockets==15.0.1 + # via + # google-adk + # google-genai +wrapt==2.1.2 + # via vcrpy +xxhash==3.6.0 + # via + # langgraph + # langsmith +yarl==1.23.0 + # via aiohttp +zipp==3.23.1 + # via importlib-metadata +zstandard==0.25.0 + # via langsmith diff --git a/eventarc-agentic-workflows/services/agents/adk_a2a_agent/Dockerfile b/eventarc-agentic-workflows/services/agents/adk_a2a_agent/Dockerfile index 1db50d7..d962adc 100644 --- a/eventarc-agentic-workflows/services/agents/adk_a2a_agent/Dockerfile +++ b/eventarc-agentic-workflows/services/agents/adk_a2a_agent/Dockerfile @@ -11,7 +11,7 @@ WORKDIR /app # Cache the dependency layer COPY requirements.txt /app/requirements.txt -RUN pip install --no-cache-dir uvicorn -r /app/requirements.txt +RUN pip install --no-cache-dir -r /app/requirements.txt # Copy shared_tools from additional context COPY --from=shared_tools . /app/shared_tools/ diff --git a/eventarc-agentic-workflows/services/agents/adk_a2a_agent/requirements.in b/eventarc-agentic-workflows/services/agents/adk_a2a_agent/requirements.in new file mode 100644 index 0000000..ee5b41a --- /dev/null +++ b/eventarc-agentic-workflows/services/agents/adk_a2a_agent/requirements.in @@ -0,0 +1,3 @@ +google-adk[a2a]>=1.6.1 +google-cloud-eventarc-publishing +uvicorn diff --git a/eventarc-agentic-workflows/services/agents/adk_a2a_agent/requirements.txt b/eventarc-agentic-workflows/services/agents/adk_a2a_agent/requirements.txt index fe92059..11f8ec7 100644 --- a/eventarc-agentic-workflows/services/agents/adk_a2a_agent/requirements.txt +++ b/eventarc-agentic-workflows/services/agents/adk_a2a_agent/requirements.txt @@ -1,2 +1,516 @@ -google-adk[a2a]>=1.6.1 -google-cloud-eventarc-publishing +a2a-sdk==0.3.26 + # via google-adk +aiohappyeyeballs==2.6.1 + # via aiohttp +aiohttp==3.13.5 + # via google-cloud-aiplatform +aiosignal==1.4.0 + # via aiohttp +aiosqlite==0.22.1 + # via google-adk +alembic==1.18.4 + # via sqlalchemy-spanner +annotated-doc==0.0.4 + # via fastapi +annotated-types==0.7.0 + # via pydantic +anyio==4.13.0 + # via + # google-adk + # google-genai + # httpx + # mcp + # sse-starlette + # starlette +attrs==26.1.0 + # via + # aiohttp + # jsonschema + # referencing +authlib==1.7.0 + # via google-adk +certifi==2026.4.22 + # via + # httpcore + # httpx + # requests +cffi==2.0.0 + # via cryptography +charset-normalizer==3.4.7 + # via requests +click==8.3.3 + # via + # google-adk + # uvicorn +cloudpickle==3.1.2 + # via google-cloud-aiplatform +cryptography==46.0.7 + # via + # authlib + # google-auth + # joserfc + # pyjwt + # pyopenssl +distro==1.9.0 + # via google-genai +docstring-parser==0.18.0 + # via google-cloud-aiplatform +fastapi==0.136.1 + # via google-adk +frozenlist==1.8.0 + # via + # aiohttp + # aiosignal +google-adk[a2a]==1.31.1 + # via -r requirements.in +google-api-core[grpc]==2.30.3 + # via + # a2a-sdk + # google-api-python-client + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-core + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-storage + # google-cloud-trace +google-api-python-client==2.194.0 + # via google-adk +google-auth[pyopenssl,requests]==2.49.2 + # via + # google-adk + # google-api-core + # google-api-python-client + # google-auth-httplib2 + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-core + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-speech + # google-cloud-storage + # google-cloud-trace + # google-genai +google-auth-httplib2==0.3.1 + # via google-api-python-client +google-cloud-aiplatform[agent-engines]==1.148.1 + # via google-adk +google-cloud-appengine-logging==1.9.0 + # via google-cloud-logging +google-cloud-audit-log==0.5.0 + # via google-cloud-logging +google-cloud-bigquery==3.41.0 + # via + # google-adk + # google-cloud-aiplatform +google-cloud-bigquery-storage==2.37.0 + # via google-adk +google-cloud-bigtable==2.36.0 + # via google-adk +google-cloud-core==2.5.1 + # via + # google-cloud-bigquery + # google-cloud-bigtable + # google-cloud-logging + # google-cloud-spanner + # google-cloud-storage +google-cloud-dataplex==2.18.0 + # via google-adk +google-cloud-discoveryengine==0.13.12 + # via google-adk +google-cloud-eventarc-publishing==0.10.0 + # via -r requirements.in +google-cloud-iam==2.22.0 + # via google-cloud-aiplatform +google-cloud-logging==3.15.0 + # via + # google-cloud-aiplatform + # opentelemetry-exporter-gcp-logging +google-cloud-monitoring==2.30.0 + # via + # google-cloud-spanner + # opentelemetry-exporter-gcp-monitoring +google-cloud-pubsub==2.37.0 + # via google-adk +google-cloud-resource-manager==1.17.0 + # via google-cloud-aiplatform +google-cloud-secret-manager==2.27.0 + # via google-adk +google-cloud-spanner==3.65.0 + # via + # google-adk + # sqlalchemy-spanner +google-cloud-speech==2.38.0 + # via google-adk +google-cloud-storage==3.10.1 + # via + # google-adk + # google-cloud-aiplatform +google-cloud-trace==1.19.0 + # via + # google-cloud-aiplatform + # opentelemetry-exporter-gcp-trace +google-crc32c==1.8.0 + # via + # google-cloud-bigtable + # google-cloud-storage + # google-resumable-media +google-genai==1.73.1 + # via + # google-adk + # google-cloud-aiplatform +google-resumable-media==2.8.2 + # via + # google-cloud-bigquery + # google-cloud-storage +googleapis-common-protos[grpc]==1.74.0 + # via + # google-api-core + # google-cloud-audit-log + # grpc-google-iam-v1 + # grpcio-status + # opentelemetry-exporter-otlp-proto-http +graphviz==0.21 + # via google-adk +greenlet==3.4.0 + # via sqlalchemy +grpc-google-iam-v1==0.14.4 + # via + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-iam + # google-cloud-logging + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner +grpc-interceptor==0.15.4 + # via google-cloud-spanner +grpcio==1.80.0 + # via + # google-api-core + # google-cloud-appengine-logging + # google-cloud-bigquery-storage + # google-cloud-dataplex + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-speech + # google-cloud-trace + # googleapis-common-protos + # grpc-google-iam-v1 + # grpc-interceptor + # grpcio-status +grpcio-status==1.80.0 + # via + # google-api-core + # google-cloud-pubsub +h11==0.16.0 + # via + # httpcore + # uvicorn +httpcore==1.0.9 + # via httpx +httplib2==0.31.2 + # via + # google-api-python-client + # google-auth-httplib2 +httpx==0.28.1 + # via + # a2a-sdk + # google-adk + # google-genai + # mcp +httpx-sse==0.4.3 + # via + # a2a-sdk + # mcp +idna==3.13 + # via + # anyio + # httpx + # requests + # yarl +importlib-metadata==8.7.1 + # via opentelemetry-api +joserfc==1.6.4 + # via authlib +jsonschema==4.26.0 + # via + # google-adk + # mcp +jsonschema-specifications==2025.9.1 + # via jsonschema +mako==1.3.11 + # via alembic +markupsafe==3.0.3 + # via mako +mcp==1.27.0 + # via google-adk +mmh3==5.2.1 + # via google-cloud-spanner +multidict==6.7.1 + # via + # aiohttp + # yarl +opentelemetry-api==1.38.0 + # via + # google-adk + # google-cloud-logging + # google-cloud-pubsub + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp + # opentelemetry-sdk + # opentelemetry-semantic-conventions +opentelemetry-exporter-gcp-logging==1.11.0a0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-exporter-gcp-monitoring==1.11.0a0 + # via google-adk +opentelemetry-exporter-gcp-trace==1.11.0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-exporter-otlp-proto-common==1.38.0 + # via opentelemetry-exporter-otlp-proto-http +opentelemetry-exporter-otlp-proto-http==1.38.0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-proto==1.38.0 + # via + # opentelemetry-exporter-otlp-proto-common + # opentelemetry-exporter-otlp-proto-http +opentelemetry-resourcedetector-gcp==1.11.0a0 + # via + # google-adk + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace +opentelemetry-sdk==1.38.0 + # via + # google-adk + # google-cloud-aiplatform + # google-cloud-pubsub + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp +opentelemetry-semantic-conventions==0.59b0 + # via + # google-cloud-spanner + # opentelemetry-sdk +packaging==26.1 + # via + # google-cloud-aiplatform + # google-cloud-bigquery +propcache==0.4.1 + # via + # aiohttp + # yarl +proto-plus==1.27.2 + # via + # google-api-core + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-trace +protobuf==6.33.6 + # via + # a2a-sdk + # google-api-core + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-audit-log + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-trace + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status + # opentelemetry-proto + # proto-plus +pyarrow==24.0.0 + # via google-adk +pyasn1==0.6.3 + # via pyasn1-modules +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.13.3 + # via + # a2a-sdk + # fastapi + # google-adk + # google-cloud-aiplatform + # google-genai + # mcp + # pydantic-settings +pydantic-core==2.46.3 + # via pydantic +pydantic-settings==2.14.0 + # via mcp +pyjwt[crypto]==2.12.1 + # via mcp +pyopenssl==26.0.0 + # via google-auth +pyparsing==3.3.2 + # via httplib2 +python-dateutil==2.9.0.post0 + # via + # google-adk + # google-cloud-bigquery +python-dotenv==1.2.2 + # via + # google-adk + # pydantic-settings +python-multipart==0.0.26 + # via mcp +pyyaml==6.0.3 + # via google-adk +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.33.1 + # via + # google-adk + # google-api-core + # google-auth + # google-cloud-bigquery + # google-cloud-storage + # google-genai + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp +rpds-py==0.30.0 + # via + # jsonschema + # referencing +six==1.17.0 + # via python-dateutil +sniffio==1.3.1 + # via google-genai +sqlalchemy==2.0.49 + # via + # alembic + # google-adk + # sqlalchemy-spanner +sqlalchemy-spanner==1.17.3 + # via google-adk +sqlparse==0.5.5 + # via google-cloud-spanner +sse-starlette==3.3.4 + # via mcp +starlette==0.52.1 + # via + # fastapi + # google-adk + # mcp + # sse-starlette +tenacity==9.1.4 + # via + # google-adk + # google-genai +typing-extensions==4.15.0 + # via + # alembic + # fastapi + # google-adk + # google-cloud-aiplatform + # google-genai + # grpcio + # mcp + # opentelemetry-api + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp + # opentelemetry-sdk + # opentelemetry-semantic-conventions + # pydantic + # pydantic-core + # sqlalchemy + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # mcp + # pydantic + # pydantic-settings +tzlocal==5.3.1 + # via google-adk +uritemplate==4.2.0 + # via google-api-python-client +urllib3==2.6.3 + # via requests +uvicorn==0.46.0 + # via + # -r requirements.in + # google-adk + # mcp +watchdog==6.0.0 + # via google-adk +websockets==15.0.1 + # via + # google-adk + # google-genai +yarl==1.23.0 + # via aiohttp +zipp==3.23.1 + # via importlib-metadata diff --git a/eventarc-agentic-workflows/services/agents/adk_mcp_agent/requirements.in b/eventarc-agentic-workflows/services/agents/adk_mcp_agent/requirements.in new file mode 100644 index 0000000..3adc7dc --- /dev/null +++ b/eventarc-agentic-workflows/services/agents/adk_mcp_agent/requirements.in @@ -0,0 +1,5 @@ +google-adk>=1.6.1 +google-cloud-eventarc-publishing +mcp +fastapi +uvicorn diff --git a/eventarc-agentic-workflows/services/agents/adk_mcp_agent/requirements.txt b/eventarc-agentic-workflows/services/agents/adk_mcp_agent/requirements.txt index 3adc7dc..97f8091 100644 --- a/eventarc-agentic-workflows/services/agents/adk_mcp_agent/requirements.txt +++ b/eventarc-agentic-workflows/services/agents/adk_mcp_agent/requirements.txt @@ -1,5 +1,512 @@ -google-adk>=1.6.1 -google-cloud-eventarc-publishing -mcp -fastapi -uvicorn +aiohappyeyeballs==2.6.1 + # via aiohttp +aiohttp==3.13.5 + # via google-cloud-aiplatform +aiosignal==1.4.0 + # via aiohttp +aiosqlite==0.22.1 + # via google-adk +alembic==1.18.4 + # via sqlalchemy-spanner +annotated-doc==0.0.4 + # via fastapi +annotated-types==0.7.0 + # via pydantic +anyio==4.13.0 + # via + # google-adk + # google-genai + # httpx + # mcp + # sse-starlette + # starlette +attrs==26.1.0 + # via + # aiohttp + # jsonschema + # referencing +authlib==1.7.0 + # via google-adk +certifi==2026.4.22 + # via + # httpcore + # httpx + # requests +cffi==2.0.0 + # via cryptography +charset-normalizer==3.4.7 + # via requests +click==8.3.3 + # via + # google-adk + # uvicorn +cloudpickle==3.1.2 + # via google-cloud-aiplatform +cryptography==46.0.7 + # via + # authlib + # google-auth + # joserfc + # pyjwt + # pyopenssl +distro==1.9.0 + # via google-genai +docstring-parser==0.18.0 + # via google-cloud-aiplatform +fastapi==0.136.1 + # via + # -r requirements.in + # google-adk +frozenlist==1.8.0 + # via + # aiohttp + # aiosignal +google-adk==1.31.1 + # via -r requirements.in +google-api-core[grpc]==2.30.3 + # via + # google-api-python-client + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-core + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-storage + # google-cloud-trace +google-api-python-client==2.194.0 + # via google-adk +google-auth[pyopenssl,requests]==2.49.2 + # via + # google-adk + # google-api-core + # google-api-python-client + # google-auth-httplib2 + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-core + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-speech + # google-cloud-storage + # google-cloud-trace + # google-genai +google-auth-httplib2==0.3.1 + # via google-api-python-client +google-cloud-aiplatform[agent-engines]==1.148.1 + # via google-adk +google-cloud-appengine-logging==1.9.0 + # via google-cloud-logging +google-cloud-audit-log==0.5.0 + # via google-cloud-logging +google-cloud-bigquery==3.41.0 + # via + # google-adk + # google-cloud-aiplatform +google-cloud-bigquery-storage==2.37.0 + # via google-adk +google-cloud-bigtable==2.36.0 + # via google-adk +google-cloud-core==2.5.1 + # via + # google-cloud-bigquery + # google-cloud-bigtable + # google-cloud-logging + # google-cloud-spanner + # google-cloud-storage +google-cloud-dataplex==2.18.0 + # via google-adk +google-cloud-discoveryengine==0.13.12 + # via google-adk +google-cloud-eventarc-publishing==0.10.0 + # via -r requirements.in +google-cloud-iam==2.22.0 + # via google-cloud-aiplatform +google-cloud-logging==3.15.0 + # via + # google-cloud-aiplatform + # opentelemetry-exporter-gcp-logging +google-cloud-monitoring==2.30.0 + # via + # google-cloud-spanner + # opentelemetry-exporter-gcp-monitoring +google-cloud-pubsub==2.37.0 + # via google-adk +google-cloud-resource-manager==1.17.0 + # via google-cloud-aiplatform +google-cloud-secret-manager==2.27.0 + # via google-adk +google-cloud-spanner==3.65.0 + # via + # google-adk + # sqlalchemy-spanner +google-cloud-speech==2.38.0 + # via google-adk +google-cloud-storage==3.10.1 + # via + # google-adk + # google-cloud-aiplatform +google-cloud-trace==1.19.0 + # via + # google-cloud-aiplatform + # opentelemetry-exporter-gcp-trace +google-crc32c==1.8.0 + # via + # google-cloud-bigtable + # google-cloud-storage + # google-resumable-media +google-genai==1.73.1 + # via + # google-adk + # google-cloud-aiplatform +google-resumable-media==2.8.2 + # via + # google-cloud-bigquery + # google-cloud-storage +googleapis-common-protos[grpc]==1.74.0 + # via + # google-api-core + # google-cloud-audit-log + # grpc-google-iam-v1 + # grpcio-status + # opentelemetry-exporter-otlp-proto-http +graphviz==0.21 + # via google-adk +greenlet==3.4.0 + # via sqlalchemy +grpc-google-iam-v1==0.14.4 + # via + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-iam + # google-cloud-logging + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner +grpc-interceptor==0.15.4 + # via google-cloud-spanner +grpcio==1.80.0 + # via + # google-api-core + # google-cloud-appengine-logging + # google-cloud-bigquery-storage + # google-cloud-dataplex + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-speech + # google-cloud-trace + # googleapis-common-protos + # grpc-google-iam-v1 + # grpc-interceptor + # grpcio-status +grpcio-status==1.80.0 + # via + # google-api-core + # google-cloud-pubsub +h11==0.16.0 + # via + # httpcore + # uvicorn +httpcore==1.0.9 + # via httpx +httplib2==0.31.2 + # via + # google-api-python-client + # google-auth-httplib2 +httpx==0.28.1 + # via + # google-adk + # google-genai + # mcp +httpx-sse==0.4.3 + # via mcp +idna==3.13 + # via + # anyio + # httpx + # requests + # yarl +importlib-metadata==8.7.1 + # via opentelemetry-api +joserfc==1.6.4 + # via authlib +jsonschema==4.26.0 + # via + # google-adk + # mcp +jsonschema-specifications==2025.9.1 + # via jsonschema +mako==1.3.11 + # via alembic +markupsafe==3.0.3 + # via mako +mcp==1.27.0 + # via + # -r requirements.in + # google-adk +mmh3==5.2.1 + # via google-cloud-spanner +multidict==6.7.1 + # via + # aiohttp + # yarl +opentelemetry-api==1.38.0 + # via + # google-adk + # google-cloud-logging + # google-cloud-pubsub + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp + # opentelemetry-sdk + # opentelemetry-semantic-conventions +opentelemetry-exporter-gcp-logging==1.11.0a0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-exporter-gcp-monitoring==1.11.0a0 + # via google-adk +opentelemetry-exporter-gcp-trace==1.11.0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-exporter-otlp-proto-common==1.38.0 + # via opentelemetry-exporter-otlp-proto-http +opentelemetry-exporter-otlp-proto-http==1.38.0 + # via + # google-adk + # google-cloud-aiplatform +opentelemetry-proto==1.38.0 + # via + # opentelemetry-exporter-otlp-proto-common + # opentelemetry-exporter-otlp-proto-http +opentelemetry-resourcedetector-gcp==1.11.0a0 + # via + # google-adk + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace +opentelemetry-sdk==1.38.0 + # via + # google-adk + # google-cloud-aiplatform + # google-cloud-pubsub + # google-cloud-spanner + # opentelemetry-exporter-gcp-logging + # opentelemetry-exporter-gcp-monitoring + # opentelemetry-exporter-gcp-trace + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp +opentelemetry-semantic-conventions==0.59b0 + # via + # google-cloud-spanner + # opentelemetry-sdk +packaging==26.1 + # via + # google-cloud-aiplatform + # google-cloud-bigquery +propcache==0.4.1 + # via + # aiohttp + # yarl +proto-plus==1.27.2 + # via + # google-api-core + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-trace +protobuf==6.33.6 + # via + # google-api-core + # google-cloud-aiplatform + # google-cloud-appengine-logging + # google-cloud-audit-log + # google-cloud-bigquery-storage + # google-cloud-bigtable + # google-cloud-dataplex + # google-cloud-discoveryengine + # google-cloud-eventarc-publishing + # google-cloud-iam + # google-cloud-logging + # google-cloud-monitoring + # google-cloud-pubsub + # google-cloud-resource-manager + # google-cloud-secret-manager + # google-cloud-spanner + # google-cloud-speech + # google-cloud-trace + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status + # opentelemetry-proto + # proto-plus +pyarrow==24.0.0 + # via google-adk +pyasn1==0.6.3 + # via pyasn1-modules +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.13.3 + # via + # fastapi + # google-adk + # google-cloud-aiplatform + # google-genai + # mcp + # pydantic-settings +pydantic-core==2.46.3 + # via pydantic +pydantic-settings==2.14.0 + # via mcp +pyjwt[crypto]==2.12.1 + # via mcp +pyopenssl==26.0.0 + # via google-auth +pyparsing==3.3.2 + # via httplib2 +python-dateutil==2.9.0.post0 + # via + # google-adk + # google-cloud-bigquery +python-dotenv==1.2.2 + # via + # google-adk + # pydantic-settings +python-multipart==0.0.26 + # via mcp +pyyaml==6.0.3 + # via google-adk +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.33.1 + # via + # google-adk + # google-api-core + # google-auth + # google-cloud-bigquery + # google-cloud-storage + # google-genai + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp +rpds-py==0.30.0 + # via + # jsonschema + # referencing +six==1.17.0 + # via python-dateutil +sniffio==1.3.1 + # via google-genai +sqlalchemy==2.0.49 + # via + # alembic + # google-adk + # sqlalchemy-spanner +sqlalchemy-spanner==1.17.3 + # via google-adk +sqlparse==0.5.5 + # via google-cloud-spanner +sse-starlette==3.3.4 + # via mcp +starlette==0.52.1 + # via + # fastapi + # google-adk + # mcp + # sse-starlette +tenacity==9.1.4 + # via + # google-adk + # google-genai +typing-extensions==4.15.0 + # via + # alembic + # fastapi + # google-adk + # google-cloud-aiplatform + # google-genai + # grpcio + # mcp + # opentelemetry-api + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-resourcedetector-gcp + # opentelemetry-sdk + # opentelemetry-semantic-conventions + # pydantic + # pydantic-core + # sqlalchemy + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # mcp + # pydantic + # pydantic-settings +tzlocal==5.3.1 + # via google-adk +uritemplate==4.2.0 + # via google-api-python-client +urllib3==2.6.3 + # via requests +uvicorn==0.46.0 + # via + # -r requirements.in + # google-adk + # mcp +watchdog==6.0.0 + # via google-adk +websockets==15.0.1 + # via + # google-adk + # google-genai +yarl==1.23.0 + # via aiohttp +zipp==3.23.1 + # via importlib-metadata diff --git a/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/agent.py b/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/agent.py index 7a96088..40c5aae 100644 --- a/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/agent.py +++ b/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/agent.py @@ -3,10 +3,9 @@ import logging import os from fastapi import FastAPI -from langchain.agents import AgentExecutor, create_tool_calling_agent -from langchain.tools import tool -from langchain_core.prompts import ChatPromptTemplate +from langchain_core.tools import tool from langchain_google_vertexai import ChatVertexAI +from langgraph.prebuilt import create_react_agent from mcp.server.fastmcp import FastMCP from shared_tools.eventarc import publish_to_eventarc from shared_tools.logging_middleware import RequestLoggingASGIMiddleware @@ -76,17 +75,12 @@ def emit_business_event(type: str, data: dict, attributes: dict = None) -> str: # 3. Initialize LangChain Agent using Vertex AI -llm = ChatVertexAI(model_name="gemini-2.5-flash") +llm = ChatVertexAI( + model_name="gemini-2.5-flash", + model_kwargs={"system_instruction": full_instruction}, +) tools = [emit_business_event] - -prompt = ChatPromptTemplate.from_messages([ - ("system", full_instruction), - ("human", "{input}"), - ("placeholder", "{agent_scratchpad}"), -]) - -agent = create_tool_calling_agent(llm, tools, prompt) -agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) +agent_executor = create_react_agent(llm, tools) # 4. FastMCP Server Implementation # Explicitly set host="0.0.0.0" to allow Cloud Run to route traffic to this container. @@ -109,10 +103,10 @@ def run_agent(prompt: str) -> str: """ logging.info(f"Received run_agent call with prompt: {prompt}") try: - result = agent_executor.invoke({"input": prompt}) - return result.get( - "output", "Agent completed execution without text output." + result = agent_executor.invoke( + {"messages": [("system", full_instruction), ("user", prompt)]} ) + return result["messages"][-1].content except Exception as e: logging.error(f"Error running agent: {str(e)}") try: diff --git a/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/requirements.in b/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/requirements.in new file mode 100644 index 0000000..4742a63 --- /dev/null +++ b/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/requirements.in @@ -0,0 +1,7 @@ +langchain==1.2.15 +langchain-google-vertexai +mcp +fastapi +uvicorn +google-cloud-eventarc-publishing +langgraph diff --git a/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/requirements.txt b/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/requirements.txt index 08dc3b6..5387e00 100644 --- a/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/requirements.txt +++ b/eventarc-agentic-workflows/services/agents/langchain_mcp_agent/requirements.txt @@ -1,6 +1,358 @@ -langchain==0.1.20 -langchain-google-vertexai -mcp -fastapi -uvicorn -google-cloud-eventarc-publishing +annotated-doc==0.0.4 + # via fastapi +annotated-types==0.7.0 + # via pydantic +anyio==4.13.0 + # via + # google-genai + # httpx + # mcp + # sse-starlette + # starlette +attrs==26.1.0 + # via + # jsonschema + # referencing +bottleneck==1.6.0 + # via langchain-google-vertexai +certifi==2026.4.22 + # via + # httpcore + # httpx + # requests +cffi==2.0.0 + # via + # cryptography + # pytest-codspeed +charset-normalizer==3.4.7 + # via requests +click==8.3.3 + # via uvicorn +cryptography==46.0.7 + # via + # google-auth + # pyjwt +distro==1.9.0 + # via google-genai +docstring-parser==0.18.0 + # via google-cloud-aiplatform +fastapi==0.136.1 + # via -r requirements.in +google-api-core[grpc]==2.30.3 + # via + # google-cloud-aiplatform + # google-cloud-bigquery + # google-cloud-core + # google-cloud-eventarc-publishing + # google-cloud-resource-manager + # google-cloud-storage + # google-cloud-vectorsearch +google-auth[requests]==2.49.2 + # via + # google-api-core + # google-cloud-aiplatform + # google-cloud-bigquery + # google-cloud-core + # google-cloud-eventarc-publishing + # google-cloud-resource-manager + # google-cloud-storage + # google-cloud-vectorsearch + # google-genai +google-cloud-aiplatform==1.148.1 + # via langchain-google-vertexai +google-cloud-bigquery==3.41.0 + # via google-cloud-aiplatform +google-cloud-core==2.5.1 + # via + # google-cloud-bigquery + # google-cloud-storage +google-cloud-eventarc-publishing==0.10.0 + # via -r requirements.in +google-cloud-resource-manager==1.17.0 + # via google-cloud-aiplatform +google-cloud-storage==3.10.1 + # via + # google-cloud-aiplatform + # langchain-google-vertexai +google-cloud-vectorsearch==0.10.0 + # via langchain-google-vertexai +google-crc32c==1.8.0 + # via + # google-cloud-storage + # google-resumable-media +google-genai==1.73.1 + # via google-cloud-aiplatform +google-resumable-media==2.8.2 + # via + # google-cloud-bigquery + # google-cloud-storage +googleapis-common-protos[grpc]==1.74.0 + # via + # google-api-core + # grpc-google-iam-v1 + # grpcio-status +grpc-google-iam-v1==0.14.4 + # via google-cloud-resource-manager +grpcio==1.80.0 + # via + # google-api-core + # google-cloud-eventarc-publishing + # google-cloud-resource-manager + # google-cloud-vectorsearch + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status +grpcio-status==1.80.0 + # via google-api-core +h11==0.16.0 + # via + # httpcore + # uvicorn +httpcore==1.0.9 + # via httpx +httpx==0.28.1 + # via + # google-genai + # langchain-google-vertexai + # langchain-tests + # langgraph-sdk + # langsmith + # mcp +httpx-sse==0.4.3 + # via + # langchain-google-vertexai + # mcp +idna==3.13 + # via + # anyio + # httpx + # requests +iniconfig==2.3.0 + # via pytest +jsonpatch==1.33 + # via langchain-core +jsonpointer==3.1.1 + # via jsonpatch +jsonschema==4.26.0 + # via mcp +jsonschema-specifications==2025.9.1 + # via jsonschema +langchain==1.2.15 + # via -r requirements.in +langchain-core==1.3.2 + # via + # langchain + # langchain-google-vertexai + # langchain-tests + # langgraph + # langgraph-checkpoint + # langgraph-prebuilt +langchain-google-vertexai==3.2.2 + # via -r requirements.in +langchain-protocol==0.0.11 + # via langchain-core +langchain-tests==1.1.6 + # via langchain-google-vertexai +langgraph==1.1.9 + # via + # -r requirements.in + # langchain +langgraph-checkpoint==4.0.2 + # via + # langgraph + # langgraph-prebuilt +langgraph-prebuilt==1.0.10 + # via langgraph +langgraph-sdk==0.3.13 + # via langgraph +langsmith==0.7.36 + # via langchain-core +markdown-it-py==4.0.0 + # via rich +mcp==1.27.0 + # via -r requirements.in +mdurl==0.1.2 + # via markdown-it-py +numexpr==2.14.1 + # via langchain-google-vertexai +numpy==2.4.4 + # via + # bottleneck + # langchain-tests + # numexpr +orjson==3.11.8 + # via + # langgraph-sdk + # langsmith +ormsgpack==1.12.2 + # via langgraph-checkpoint +packaging==26.1 + # via + # google-cloud-aiplatform + # google-cloud-bigquery + # langchain-core + # langsmith + # pytest +pluggy==1.6.0 + # via pytest +proto-plus==1.27.2 + # via + # google-api-core + # google-cloud-aiplatform + # google-cloud-eventarc-publishing + # google-cloud-resource-manager + # google-cloud-vectorsearch +protobuf==6.33.6 + # via + # google-api-core + # google-cloud-aiplatform + # google-cloud-eventarc-publishing + # google-cloud-resource-manager + # google-cloud-vectorsearch + # googleapis-common-protos + # grpc-google-iam-v1 + # grpcio-status + # proto-plus +py-cpuinfo==9.0.0 + # via pytest-benchmark +pyarrow==22.0.0 + # via langchain-google-vertexai +pyasn1==0.6.3 + # via pyasn1-modules +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.13.3 + # via + # fastapi + # google-cloud-aiplatform + # google-genai + # langchain + # langchain-core + # langchain-google-vertexai + # langgraph + # langsmith + # mcp + # pydantic-settings +pydantic-core==2.46.3 + # via pydantic +pydantic-settings==2.14.0 + # via mcp +pygments==2.20.0 + # via + # pytest + # rich +pyjwt[crypto]==2.12.1 + # via mcp +pytest==9.0.3 + # via + # langchain-tests + # pytest-asyncio + # pytest-benchmark + # pytest-codspeed + # pytest-recording + # pytest-socket + # syrupy +pytest-asyncio==1.3.0 + # via langchain-tests +pytest-benchmark==5.2.3 + # via langchain-tests +pytest-codspeed==4.4.0 + # via langchain-tests +pytest-recording==0.13.4 + # via langchain-tests +pytest-socket==0.7.0 + # via langchain-tests +python-dateutil==2.9.0.post0 + # via google-cloud-bigquery +python-dotenv==1.2.2 + # via pydantic-settings +python-multipart==0.0.26 + # via mcp +pyyaml==6.0.3 + # via + # langchain-core + # vcrpy +referencing==0.37.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.33.1 + # via + # google-api-core + # google-auth + # google-cloud-bigquery + # google-cloud-storage + # google-genai + # langsmith + # requests-toolbelt +requests-toolbelt==1.0.0 + # via langsmith +rich==15.0.0 + # via pytest-codspeed +rpds-py==0.30.0 + # via + # jsonschema + # referencing +six==1.17.0 + # via python-dateutil +sniffio==1.3.1 + # via google-genai +sse-starlette==3.3.4 + # via mcp +starlette==1.0.0 + # via + # fastapi + # mcp + # sse-starlette +syrupy==5.1.0 + # via langchain-tests +tenacity==9.1.4 + # via + # google-genai + # langchain-core +typing-extensions==4.15.0 + # via + # fastapi + # google-cloud-aiplatform + # google-genai + # grpcio + # langchain-core + # langchain-protocol + # mcp + # pydantic + # pydantic-core + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # mcp + # pydantic + # pydantic-settings +urllib3==2.6.3 + # via requests +uuid-utils==0.14.1 + # via + # langchain-core + # langsmith +uvicorn==0.46.0 + # via + # -r requirements.in + # mcp +validators==0.35.0 + # via langchain-google-vertexai +vcrpy==8.1.1 + # via + # langchain-tests + # pytest-recording +websockets==16.0 + # via google-genai +wrapt==2.1.2 + # via vcrpy +xxhash==3.6.0 + # via + # langgraph + # langsmith +zstandard==0.25.0 + # via langsmith diff --git a/eventarc-agentic-workflows/services/log_events/server.js b/eventarc-agentic-workflows/services/log_events/server.js index 434ac19..7fccefa 100644 --- a/eventarc-agentic-workflows/services/log_events/server.js +++ b/eventarc-agentic-workflows/services/log_events/server.js @@ -1,21 +1,34 @@ const express = require('express'); +const fs = require('fs'); +const path = require('path'); + const app = express(); +// Read files into memory on startup to avoid file system access on requests +const indexHtml = fs.readFileSync(path.join(__dirname, 'index.html'), 'utf8'); +const simulationJs = fs.readFileSync( + path.join(__dirname, 'simulation.js'), + 'utf8', +); + // Parse incoming JSON payloads from Eventarc app.use(express.json()); // Parse incoming text/plain payloads app.use(express.text()); -// Serve static files (like simulation.js) -app.use(express.static(__dirname)); +// Serve simulation.js from memory +app.get('/simulation.js', (req, res) => { + res.setHeader('Content-Type', 'application/javascript'); + res.send(simulationJs); +}); // Store connected browser clients let clients = []; -// 1. Serve the Unified UI Dashboard +// 1. Serve the Unified UI Dashboard from memory app.get('/', (req, res) => { - res.sendFile(__dirname + '/index.html'); + res.send(indexHtml); }); // Expose configuration to the frontend diff --git a/eventarc-agentic-workflows/services/store/requirements.in b/eventarc-agentic-workflows/services/store/requirements.in new file mode 100644 index 0000000..ca492e5 --- /dev/null +++ b/eventarc-agentic-workflows/services/store/requirements.in @@ -0,0 +1,5 @@ +fastapi +uvicorn +jinja2 +google-cloud-eventarc-publishing +python-multipart diff --git a/eventarc-agentic-workflows/services/store/requirements.txt b/eventarc-agentic-workflows/services/store/requirements.txt index ca492e5..b70184a 100644 --- a/eventarc-agentic-workflows/services/store/requirements.txt +++ b/eventarc-agentic-workflows/services/store/requirements.txt @@ -1,5 +1,89 @@ -fastapi -uvicorn -jinja2 -google-cloud-eventarc-publishing -python-multipart +annotated-doc==0.0.4 + # via fastapi +annotated-types==0.7.0 + # via pydantic +anyio==4.13.0 + # via starlette +certifi==2026.4.22 + # via requests +cffi==2.0.0 + # via cryptography +charset-normalizer==3.4.7 + # via requests +click==8.3.3 + # via uvicorn +cryptography==46.0.7 + # via google-auth +fastapi==0.136.1 + # via -r requirements.in +google-api-core[grpc]==2.30.3 + # via google-cloud-eventarc-publishing +google-auth==2.49.2 + # via + # google-api-core + # google-cloud-eventarc-publishing +google-cloud-eventarc-publishing==0.10.0 + # via -r requirements.in +googleapis-common-protos==1.74.0 + # via + # google-api-core + # grpcio-status +grpcio==1.80.0 + # via + # google-api-core + # google-cloud-eventarc-publishing + # grpcio-status +grpcio-status==1.80.0 + # via google-api-core +h11==0.16.0 + # via uvicorn +idna==3.13 + # via + # anyio + # requests +jinja2==3.1.6 + # via -r requirements.in +markupsafe==3.0.3 + # via jinja2 +proto-plus==1.27.2 + # via + # google-api-core + # google-cloud-eventarc-publishing +protobuf==6.33.6 + # via + # google-api-core + # google-cloud-eventarc-publishing + # googleapis-common-protos + # grpcio-status + # proto-plus +pyasn1==0.6.3 + # via pyasn1-modules +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.13.3 + # via fastapi +pydantic-core==2.46.3 + # via pydantic +python-multipart==0.0.26 + # via -r requirements.in +requests==2.33.1 + # via google-api-core +starlette==1.0.0 + # via fastapi +typing-extensions==4.15.0 + # via + # fastapi + # grpcio + # pydantic + # pydantic-core + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # pydantic +urllib3==2.6.3 + # via requests +uvicorn==0.46.0 + # via -r requirements.in diff --git a/eventarc-agentic-workflows/services/third_party_shipment/Dockerfile b/eventarc-agentic-workflows/services/third_party_shipment/Dockerfile index 80ac252..afe85bc 100644 --- a/eventarc-agentic-workflows/services/third_party_shipment/Dockerfile +++ b/eventarc-agentic-workflows/services/third_party_shipment/Dockerfile @@ -9,7 +9,7 @@ WORKDIR /app # Cache the dependency layer COPY requirements.txt /app/requirements.txt -RUN pip install --no-cache-dir fastapi uvicorn -r /app/requirements.txt +RUN pip install --no-cache-dir -r /app/requirements.txt # Copy shared_tools from additional context COPY --from=shared_tools . /app/shared_tools/ diff --git a/eventarc-agentic-workflows/services/third_party_shipment/requirements.in b/eventarc-agentic-workflows/services/third_party_shipment/requirements.in new file mode 100644 index 0000000..aceb0fc --- /dev/null +++ b/eventarc-agentic-workflows/services/third_party_shipment/requirements.in @@ -0,0 +1,3 @@ +google-cloud-eventarc-publishing +fastapi +uvicorn diff --git a/eventarc-agentic-workflows/services/third_party_shipment/requirements.txt b/eventarc-agentic-workflows/services/third_party_shipment/requirements.txt index 6cd2480..61ae6ef 100644 --- a/eventarc-agentic-workflows/services/third_party_shipment/requirements.txt +++ b/eventarc-agentic-workflows/services/third_party_shipment/requirements.txt @@ -1 +1,83 @@ -google-cloud-eventarc-publishing +annotated-doc==0.0.4 + # via fastapi +annotated-types==0.7.0 + # via pydantic +anyio==4.13.0 + # via starlette +certifi==2026.4.22 + # via requests +cffi==2.0.0 + # via cryptography +charset-normalizer==3.4.7 + # via requests +click==8.3.3 + # via uvicorn +cryptography==46.0.7 + # via google-auth +fastapi==0.136.1 + # via -r requirements.in +google-api-core[grpc]==2.30.3 + # via google-cloud-eventarc-publishing +google-auth==2.49.2 + # via + # google-api-core + # google-cloud-eventarc-publishing +google-cloud-eventarc-publishing==0.10.0 + # via -r requirements.in +googleapis-common-protos==1.74.0 + # via + # google-api-core + # grpcio-status +grpcio==1.80.0 + # via + # google-api-core + # google-cloud-eventarc-publishing + # grpcio-status +grpcio-status==1.80.0 + # via google-api-core +h11==0.16.0 + # via uvicorn +idna==3.13 + # via + # anyio + # requests +proto-plus==1.27.2 + # via + # google-api-core + # google-cloud-eventarc-publishing +protobuf==6.33.6 + # via + # google-api-core + # google-cloud-eventarc-publishing + # googleapis-common-protos + # grpcio-status + # proto-plus +pyasn1==0.6.3 + # via pyasn1-modules +pyasn1-modules==0.4.2 + # via google-auth +pycparser==3.0 + # via cffi +pydantic==2.13.3 + # via fastapi +pydantic-core==2.46.3 + # via pydantic +requests==2.33.1 + # via google-api-core +starlette==1.0.0 + # via fastapi +typing-extensions==4.15.0 + # via + # fastapi + # grpcio + # pydantic + # pydantic-core + # typing-inspection +typing-inspection==0.4.2 + # via + # fastapi + # pydantic +urllib3==2.6.3 + # via requests +uvicorn==0.46.0 + # via -r requirements.in