The `vertexai` extra does not exist in google-adk's pyproject.toml, so
`pip install google-adk[vertexai]` silently installs the base package
without the Agent Platform dependencies. Readers following these snippets
hit an ImportError when constructing VertexAiSessionService or
VertexAiMemoryBankService.
The correct extra is `gcp`, which pulls in
google-cloud-aiplatform[agent-engines].
Follow-up to review feedback on #2031, which flagged the two occurrences
in express-mode.md. The same stale extra appears once in
sessions/session/index.md, fixed here too.
Co-authored-by: Shahin Saadati <happyhuman@users.noreply.github.com>
* Create bashtool.md
This PR adds the integration documentation for the new ExecuteBashTool in the Python ADK.
Rendered view:
Agent's PR: #1442
Original Issue: #1438
Key additions:
- Documented the tool's core capabilities and experimental status.
- Added security and execution safeguards (User Confirmation, Command Validation, Resource Limits, Disabled Core Dumps, and Process Group Termination).
- Reviewed against ADK integration-create and review guidelines
- Checked against the repository> https://github.com/google/adk-python/blob/ecb759cc16bc870aa190d01c4c3f0e1e3e97afab/src/google/adk/tools/bash_tool.py
Icon PR: #2047
* Update bashtool.md
* Update bashtool.md
* Add files via upload
* Add files via upload
* docs(integrations): fix unresolvable imports and stale API claims
* docs: apply style pass and drop out-of-scope import cleanup
* docs(integrations): address review feedback on gcs, cloud-trace, reflect-and-retry
Restore the gcs_ tool name prefixes in the GCS tool tables, since both
toolsets set tool_name_prefix="gcs" and the tables list names as the
model sees them. Use the current Agent Platform SDK name in cloud-trace
prose, make the reflect-and-retry failure description language-neutral
for Python and Go, and drop the redundant re-export clause.
* docs(gcs): note that tool_filter matches unprefixed tool names
Tool filtering runs inside get_tools() against the unprefixed name, and
get_tools_with_prefix() applies the gcs_ prefix afterwards, so the names
in the tables are not the names tool_filter expects.
* docs(computer-use): drop unused Gemini and override imports
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Upgrade Kotlin examples to adk-kotlin 0.7.0
The Kotlin examples were pinned to adk-kotlin 0.5.0, which predates the
context caching, Vertex AI memory, and RAG retrieval APIs. Bump the pin to
0.7.0 so snippets for those features can be added.
Three consequences of the bump are handled here:
- `ExperimentalResumabilityFeature` was removed in 0.7.0, so RunConfigExample
no longer opts into it. The annotation class is gone, not merely deprecated,
so this is a hard compile break rather than a warning that could be deferred.
- The Vertex AI session and memory services expose Ktor's `HttpClient` as a
defaulted constructor parameter, so any snippet naming them needs Ktor on the
compile classpath, not just at runtime.
- The `resolutionStrategy` block forcing kotlin-stdlib 2.1.20 is now dead. It
worked around 0.5.0 publishing a stdlib newer than this project's compiler;
0.6.0 fixed that upstream. Verified that the highest stdlib on the compile
classpath is still 2.1.20 without it.
Also fixes two unrelated snags found while validating the above:
- `check_kotlin_snippets.sh` walked `examples/kotlin` without pruning build
output, so after any local build it reported every generated KSP file as an
unregistered snippet. CI only ever ran it against a clean checkout, so the
bug was invisible there.
- A transclusion path in logging.md was split across two lines, so the include
never resolved and the code block rendered empty.
* Fix broken links to adk-python plugin samples
The three plugin sample links 404. adk-python renamed
`contributing/samples/plugin/` to `contributing/samples/plugins/`; the
directory contents are otherwise unchanged, so only the path segment moves.
This is what the repo-wide `link-check` job has been failing on. It is
unrelated to the 0.7.0 upgrade in this PR, but the check gates the merge and
the fix is confined to the three URLs.
Verified all three targets return 200.
* Add Kotlin snippet for the Knowledge Engine retrieval tool
The Knowledge Engine integration page only showed Python. `VertexAiRagRetrieval`
landed in adk-kotlin 0.7.0, so add a Kotlin tab and advertise Kotlin support in
the page badge.
Retrieval runs inside the model through the Gemini-native `vertexRagStore` kind
rather than as a locally executed tool, so the snippet configures the corpus via
`VertexRagStoreRagResource` and leaves invocation to the model.
Registers the new file in files_to_test.txt so it stays in the compile
regression suite.
* Use the conventional package for the RAG retrieval snippet
RagEngine.kt declared `package integrations`. Every other snippet in the tree
uses `com.google.adk.kt.examples.<area>`. It compiled either way because the
source root is `snippets/` and Kotlin does not require the directory to match
the package, so nothing would have caught it.
Also worth flagging for anyone reading this alongside the memory snippets: the
two APIs take opposite corpus formats. `VertexAiRagRetrieval` here wants the
full `projects/.../ragCorpora/...` resource name, while
`VertexAiRagMemoryService` wants a bare corpus id and rejects the full name.
That is the library's doing, not a docs inconsistency.
- Add pip install "google-adk[gcp]" step to Eventarc Prerequisites.
- Clarify datacontenttype inference defaults and specify application/json in snippet prompt.
- Update Runtime Lambda table entry to use ctx.session_id and note support for payload and Context.
- Update OMIT table entry to list all mandatory attributes (type, source, bus, id, specversion).
Addresses feedback in https://github.com/google/adk-docs/pull/2045#issuecomment-5184438669
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* Upgrade Kotlin examples to adk-kotlin 0.7.0
The Kotlin examples were pinned to adk-kotlin 0.5.0, which predates the
context caching, Vertex AI memory, and RAG retrieval APIs. Bump the pin to
0.7.0 so snippets for those features can be added.
Three consequences of the bump are handled here:
- `ExperimentalResumabilityFeature` was removed in 0.7.0, so RunConfigExample
no longer opts into it. The annotation class is gone, not merely deprecated,
so this is a hard compile break rather than a warning that could be deferred.
- The Vertex AI session and memory services expose Ktor's `HttpClient` as a
defaulted constructor parameter, so any snippet naming them needs Ktor on the
compile classpath, not just at runtime.
- The `resolutionStrategy` block forcing kotlin-stdlib 2.1.20 is now dead. It
worked around 0.5.0 publishing a stdlib newer than this project's compiler;
0.6.0 fixed that upstream. Verified that the highest stdlib on the compile
classpath is still 2.1.20 without it.
Also fixes two unrelated snags found while validating the above:
- `check_kotlin_snippets.sh` walked `examples/kotlin` without pruning build
output, so after any local build it reported every generated KSP file as an
unregistered snippet. CI only ever ran it against a clean checkout, so the
bug was invisible there.
- A transclusion path in logging.md was split across two lines, so the include
never resolved and the code block rendered empty.
* Fix broken links to adk-python plugin samples
The three plugin sample links 404. adk-python renamed
`contributing/samples/plugin/` to `contributing/samples/plugins/`; the
directory contents are otherwise unchanged, so only the path segment moves.
This is what the repo-wide `link-check` job has been failing on. It is
unrelated to the 0.7.0 upgrade in this PR, but the check gates the merge and
the fix is confined to the three URLs.
Verified all three targets return 200.
* Create enterprise-web-search.md
Rendered page:
Logo's PR: #2057
Agent's PR: #1121 and #1122
Original Issue: #1113
--
This PR adds the official documentation for the new EnterpriseWebSearchTool.
Key additions:
- Overview & Use Cases: Explains enterprise compliance, controlled web access, and regulated workflows.
- Code Examples checked against repositories: Provides initialization snippets for both Python (google-adk) and TypeScript (@google/adk).
* Update enterprise-web-search.md
* Update enterprise-web-search.md
The site rendered one language under two names. Tab labels were split
137 `TypeScript` / 53 `Typescript`, with three pages carrying both
spellings at once (custom-agents.md 7/7, patterns.md 1/7,
function-tools.md 4/1), and the language-support badges were split 67/18
the same way. Because pymdownx.tabbed slugifies tab labels to lowercase,
both variants rendered and linked fine, so no link check or build warning
ever flagged it -- it was visible only to readers, as two names for one
SDK.
Every user-visible occurrence is normalized to `TypeScript`, plus the two
inconsistencies that turned up while doing it. 80 changed lines, accounted
for exactly:
53 tab label === "Typescript" -> === "TypeScript"
18 badge span lst-typescript">Typescript -> TypeScript
3 prose mention cloud-run.md, mcp-tools.md, workflows/patterns.md
2 api-reference/index.md card heading and link text
1 badge div attr title="...Python and Typescript."
1 mkdocs.yml nav Typescript ADK -> TypeScript ADK
1 code fence ```javascript -> ```typescript on a .ts include
1 artifacts/index.md closing summary sentence
---
80
The first six rows are pure casing: 78 lines that differ from their
originals by nothing but `Typescript` -> `TypeScript`. The last two are
not, and are the reason this is not a `sed`:
llm-agents.md:872 fenced `--8<-- ".../capital_agent.ts"` as ```javascript.
It was the only javascript-fenced `.ts` include in docs/ (the other 189
TypeScript fences are correct), and it cost that one snippet its
TypeScript highlighting.
artifacts/index.md:1084 closed the page by naming languages and got the
list wrong. It described reaching the artifact methods "using Python's
context objects or directly interacting with the `BaseArtifactService` in
Java" -- a two-language enumeration at the end of a page that carries
Python, TypeScript, Go, Java and Kotlin tabs (11/10/10/10/11), and one
that contradicts :556, which correctly names four of them. The
enumeration is dropped rather than extended: the sentence now describes
the two ways to reach these methods -- through the context object, or
through `BaseArtifactService` -- which is what the page actually teaches
and does not rot when a sixth language is added.
docs/api-reference/index.md is included even though the rest of
docs/api-reference/ is generated output that must not be touched. That
tree holds 3,140 generated HTML files and exactly one hand-authored page:
this one. It is Markdown, it is the only api-reference entry mkdocs.yml
lists as `.md` rather than `index.html` (:272, :441), it uses Material
`grid cards` and `:fontawesome-*:` shortcodes, and it carries a
`CONTRIBUTORS:` note citing issues #1716 and #1717. Its TypeScript card
already said "TypeScript" twice in its body text while its heading and
link text said "Typescript"; those two are now consistent with the body.
No generated file is modified.
Not in this change: the broken `SseConnectionParams` sample in
mcp-tools.md (docs-ts/p6c-mcp-ts-sample) and the `@google/adk` example
version bumps (docs-ts/p6b-example-versions). Only the casing of the
prose line above that sample is touched here.
Verified: `mkdocs build` exits 0 with an empty warning set on both main
and this branch, and the two warning sets are identical. A rendered
before/after diff of the whole site shows every `__tabbed_*` id, every
tab radio id and every heading anchor unchanged. Zero `=== "Typescript"`
and zero `lst-typescript">Typescript` remain anywhere in the repo.
Co-authored-by: Amaad Martin <amaadmartin@google.com>
* Enhance BigQuery Agent Analytics documentation
Updated documentation to clarify Java and Python plugin differences, added details on dropped-event observability, and improved explanations of event types and attributes.
* Address review: use language support tags and a single drop-reasons table
- Replace the inline Java version callouts in prose with language-support-tag
blocks on the relevant sections (Built-in redaction, Dropped-event
observability; ADK 2.0 workflow events already carried one).
- Collapse the duplicated 'Drop reasons (Python)' / 'Drop reasons (Java)'
tables into a single table with a per-language column.
- Trim the duplicated Java scope prose in the intro and the ADK 2.0 note.
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Create slack runner integration page #1521 - 4
Adds the official integration documentation for `SlackRunner`.
- Created `docs/integrations/slack.md` following the Plugin template.
- Added Socket Mode installation and initialization instructions (`google-adk[slack]`).
- Checked against the integration-review and integration-create instructions.
* Update slack.md
* Update slack.md
Worked on feedback
* docs: remove experimental banner from data agent tools
* Update data-agent.md
also remove "Experimental" tag subheader
---------
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* Update Spanner Toolset per issue #1521 - 6
Rendered page:
PR: #1525
Original Issue #1521
---
- Updated the page to add the Spanner admin toolset info with examples.
- Added configuration details for environment variables.
- Added alias for gemini-flash-latest to the bot's original snippet.
- Added contextual system instruction for the agent.
* Update spanner.md
* docs(integrations): refresh e2a page for the hosted-only MCP server
The e2a integration page has drifted from the service since it landed in
May. Corrections:
- Drop both Local MCP Server tabs. The `@e2a/mcp-server` npm package is
retired and the current server has no stdio transport, so `npx -y
@e2a/mcp-server` installs an abandoned build.
- Point the remote examples at `https://api.e2a.dev/mcp`, the endpoint
published in the MCP Registry, instead of the older `mcp.e2a.dev`.
- Remove `E2A_AGENT_EMAIL`, which no longer exists; `whoami` takes no
inputs and resolves identity from the credential.
- Remove the `E2A_BASE_URL` config table (renamed, and unused now that
the page is hosted-only).
- Fix the held-send status: `pending_review`, not `pending_approval`.
- Drop the `agent_mode: local|cloud` guidance. There is no delivery mode
to choose; inbound is available by polling or webhook subscription.
- Refresh the tool surface (~60 tools, was 18) and group it by credential
scope, since an agent-scoped key sees only the runtime tools.
- Update repository links for the tokencanopy org rename.
* docs(integrations): recommend the e2a SDK for production ADK agents
The MCP toolset gives the model the inbox, which is the wrong layer for
the deterministic parts of a deployment: webhook signature verification,
at-least-once delivery handling, and idempotent sends. Add a section
recommending the SDK own that boundary, with the MCP toolset kept for
model-driven actions inside a turn, and point at the working example.
* docs(integrations): add WebSocket delivery and future-proof the tool count
Two corrections after checking the page against the running service:
- Receiving mail listed only polling and webhooks. WebSocket delivery via
the SDK's listen() needs no public URL, which makes it the practical
choice while developing an ADK agent or for a long-running agent that
isn't a web service.
- The tool surface grows; state 60+ rather than a number that dates.
* docs(integrations): restructure e2a page to the integration template
Address review feedback. Drop the four added top-level sections ('For
production', 'Key scope', 'Receiving mail', 'Sending and review holds')
and fold only the load-bearing facts back into the template's existing
shape:
- Key scope becomes two sentences introducing Available tools, since an
agent-scoped key genuinely cannot see the admin tools listed there.
- The SDK recommendation becomes a short tip after the code sample,
keeping the inline links.
- Delivery options and OAuth become one sentence each in Configuration.
- accepted/pending_review moves into the send_message table row.
Additional resources trimmed to four: dropped the MCP Registry link (a
raw JSON API) and the two SDK links, which remain linked inline.
Page is now intro / use cases / prerequisites / one sample / tools /
configuration / resources, 186 lines.
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
Add a featured "Looker Block" subsection to "Build a dashboard" pointing to the
ready-to-use BigQuery Agent Analytics Looker Block on the Looker Marketplace,
and move the existing example-notebook guidance under a "Custom dashboard from a
notebook" subsection.
* VertexAiSearchTool dynamic config according to issue #1227 - 7
Added dynamic configuration per the bot's suggestion, but I improved snippet and description.
* Update agent-search.md
* Align snippet param name with SDK signature (readonly_context)
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Add Unstructured Transform MCP integration
* Add pacing helper, env setup, and Gemini key prerequisite from review
* Re-trigger CLA check after signing
* Use the blue Unstructured logo for the integration icon
* Note that the agent can retry a weak parse with the hi_res strategy
* formatting changes
* Adopt nested tab convention, make wait helper async, replace hyphen asides
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Update cloud-trace.md to include captured attributes
* Cloud trace small updates
Small change to the Cloud Trace section
* Update cloud-trace.md
* Update cloud-trace.md
* Update cloud trace page according to issue #1256 - 5
Managed the conflicts with the agent's PR. Updated the Google Cloud Console link. It would be more helpful to deep-link directly to the Trace Explorer rather than the root dashboard, so this has been adjusted. Added a brief introductory paragraph to the ## Resources section to provide better context for the provided links
* Update cloud-trace.md
Worked on feedback: fixed capitalization, ensured consistent formatting, removed extra spaces, and made the update more technically accurate.
* Update cloud-trace.md
Worked on missing feedback comments.
* Remove user.id from captured attributes and clarify heading in cloud-trace.md
* Format cloud-trace.md: line wrapping, tab spacing, and copy cleanup
---------
Co-authored-by: adk-bot <adk-bot@google.com>
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Add Sprites integration
Adds the Sprites integration page and catalog icon. Sprites (https://sprites.dev)
are persistent, stateful Linux sandboxes from Fly.io with checkpoint/restore,
via the sprites-adk plugin (pip install sprites-adk).
* Refine Sprites page: benefit-forward use cases, precise wording
* Address review: functional heading + runner registration in example
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Enhance BigQuery Agent Analytics with new options
Added options for OpenTelemetry correlation, custom metadata capture, and payload column projection in BigQuery Agent Analytics configuration.
* Fix formatting of Interactive Demo Notebook link
fix format
* docs(bigquery-agent-analytics): replace version callouts with language support tags
Address review feedback (koverholt) on PR #1942: the page used ad-hoc,
non-conventional version callouts (per-row table tags, footnotes, version
suffixes in headers, "post-vX.Y.Z" notes) that are unmaintainable and, in
places, stale.
- Drop the "(v2.4.0+)" / "(1.27.0+)" suffixes from config-table rows and
section headers; convey minimum versions with the repo-standard
language-support-tag blocks on the relevant sections instead
(Trace correlation → Python v2.4.0, Automatically Created Views →
Python v1.27.0, ADK 2.0 workflow events → Python v2.3.0).
- Remove the "‡ Added in v2.4.0" and "† ... not in v2.2.0" view-table
footnotes; the ADK 2.0 views/columns now point to the ADK 2.0 section.
- Remove the stale top "Version Requirement" note (v2.2.0 is no longer the
latest release; ADK 2.0 workflow support shipped in v2.3.0) and the stale
ADK 2.0 section note; de-version the intro prose.
- Remove the "Structured tool declarations (post-v2.4.0)" note: that shape is
not in any tagged release (v2.4.0 emits tools as a list of names); it will
be re-added under a language-support-tag once it ships.
- Trim the Trace-correlation section so it no longer restates the option table,
keeping only the cross-option constraints and the combined example.
* #1029 - 8 vector_store_similarity_search and SpannerVectorStoreSettings
Added vector_store_similarity_search to SpannerToolset. SpannerVectorStoreSettings is introduced to support this feature.
* Update spanner.md
* Update spanner.md
Applied feedback. Additionally, reviewed the phrasing in the intro for clarity and concision and did some minor formatting edits.
* Fix wrapping, missing import, trailing whitespace, formatting fixes
* Restructure Spanner page: add intro, section headings, reorder vector search
* Add experimental tags/notes to corresponding integration pages
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs(integrations): rename Mimir Memory -> Perseus Vault Memory (supersedes #1877)
* docs(integrations): address review on perseus-vault memory page
- Restore "Use cases" section
- Add intro phrases before Installation and Use-with-agent code blocks
- Point the binary prereq at the Installation section
- Drop the non-existent `cargo install perseus-vault` step
- Remove the "(formerly Mimir/Mneme)" lineage note
- Add trailing newline
* docs(integrations): restore Perseus live context (optional) section
Carry over the optional [perseus] extra / perseus_context_agent section
from the original page, updated to the Perseus Vault names.
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs: update ADK Go imports to v2 for core concepts and tutorials
* docs: update ADK Go imports and APIs to v2 for runtime and safety
* docs: update ADK Go imports to v2 for features (workflows, tools, skills, sessions, plugins)
* docs: update ADK Go imports to v2 for operations and integrations
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs(integrations): add CarsXE MCP integration
Add CarsXE to the integrations catalog as an MCP server integration.
The hosted CarsXE MCP server (https://mcp.carsxe.com/mcp, streamable
HTTP) exposes vehicle data — VIN specs, plate decoding, market value,
history, recalls, lien/theft, OBD codes, images — as MCP tools wired
into an ADK agent via McpToolset. Includes Python and TypeScript
examples, the full tool list, and an icon asset.
* Update docs/integrations/carsxe.md
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Update docs/integrations/carsxe.md
Co-authored-by: Kristopher Overholt <koverholt@google.com>
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
Now that the Perseus Context integration page is live, point to it
instead of the raw GitHub repo, mirroring how perseus.md already
links back to /integrations/mimir/.
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs: update GOOGLE_GENAI_USE_VERTEXAI to GOOGLE_GENAI_USE_ENTERPRISE in configs and models
* docs: update GOOGLE_GENAI_USE_VERTEXAI in deployment and setup guides
* docs: update GOOGLE_GENAI_USE_VERTEXAI and Client parameter in integrations and streaming docs
* docs: update GOOGLE_GENAI_USE_VERTEXAI in tutorials and examples
---------
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
Update the Redis integration page for adk-redis 0.0.7 selectable memory
backends. Sessions and memory now run on either managed Redis Agent Memory
(the default) or the self-hosted Agent Memory Server, chosen with a
`backend` field.
- Intro, approaches table, and prerequisites now describe both backends.
- Sessions + Memory example uses the managed backend with api_key/store_id,
plus a note on switching to opensource-agent-memory.
- New Memory tools tab covering the SDK BaseTool memory classes.
- Services table and resource links clarified per backend.
* Add Perseus Context integration page
Adds docs/integrations/perseus.md (catalog tags: code, mcp) plus the
assets/perseus.svg icon. The page documents adk-perseus-context — an ADK
plugin / before_model_callback that injects a deterministically compiled
Perseus context into the system instruction — and the optional Perseus MCP
server via McpToolset. The integrations catalog auto-renders from the
frontmatter, so no nav changes are needed.
* Update Perseus icon to the matched Mimir/Perseus icon system
Flat SVG: directives (nodes) converging into a single context node
(amber #F5A623 on #161420), matched to Mimir's layered-memory mark.
* Refine page for consistency and correctness
* Fix typo in lychee config
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Update Mimir icon to the matched Mimir/Perseus icon system
Flat SVG: fading memory layers (violet #8B5CF6 on #161420), matched to
Perseus's converging-context mark so the pair reads as one ecosystem.
* Add "mcp" catalog tag to Mimir
Mimir is an MCP (stdio) server, so it belongs under the catalog's MCP
filter — which also surfaces it alongside its companion, Perseus
(tagged code/mcp), as a pair.
* docs(mimir): drop "mcp" catalog tag per review (integration uses BaseMemoryService, not McpToolset)
* wip: temporary staging
* Consolidate Google Cloud and Agent Platform connection info
* remove gcp-mentions file
* adding links to central GCP connection page
* minor updates
* responded to review comments
* docs(integrations): add Latitude observability integration
Add a Latitude integration page under docs/integrations with an
observability catalog tag, a square card logo, and a complete,
runnable ADK example using Latitude's Python telemetry SDK.
* Add evaluation tag, env-var credentials, and clean up copy/links
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs(integrations): add Agent Threat Rules (ATR) guardrail plugin
Adds docs/integrations/atr-guardrail.md (+ icon) for the adk-atr-guardrail
package -- an in-process, deterministic security guardrail that enforces the
open-source Agent Threat Rules ruleset at three fail-closed Runner callbacks
(before_run / before_model / before_tool). Tagged 'resilience'. Created per
maintainer guidance on google/adk-python#6130 to ship as a standalone package
listed in the integrations catalog. Verified locally with mkdocs build.
* Use gemini-flash-latest, switch to the App plugin pattern with ADK >= 2.0, and remove the resilience catalog tag
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>