* Update ADK doc according to issue #1521 - 25
* Document suppression of experimental feature warnings
Added instructions to suppress experimental feature warnings in logs in a note, whole section deleted
* Document suppression of experimental warnings
Added information on suppressing experimental feature warnings in logs.
* Update quickstart-exposing.md
---------
Co-authored-by: Juan Carlos Gonzalez Resendiz <juancarlosgon@google.com>
Co-authored-by: Zyan <zyanya@google.com>
* Add Kotlin snippet for context caching configuration
The context caching page showed Python and Java only. `ContextCacheConfig` and
the `App`-level wiring are available in adk-kotlin as of 0.7.0, so add a Kotlin
tab and advertise Kotlin support in the page badge.
The snippet is inline rather than transcluded to match the Python and Java tabs
on this page. It opts in at file level via `ExperimentalContextCachingFeature`,
which the API still requires, and uses `kotlin.time` durations so the TTL reads
as `10.minutes` rather than a `Duration.ofMinutes` call.
* 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.
* Use a minTokens value that actually has an effect
The snippet carried Python's `minTokens = 2048`. The 0.7.0 KDoc is explicit
that "Gemini enforces a hard 4096-token minimum that always applies, so values
below 4096 have no additional effect" -- so as written the line was inert and
the comment implied otherwise. Use a value above the floor and say where the
floor comes from.
* 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 snippets for Memory Bank and RAG memory
The memory page documented `VertexAiMemoryBankService` and
`VertexAiRagMemoryService` for Python and Java only; the Kotlin tab stopped at
the in-memory service. Both are available in adk-kotlin as of 0.7.0, so add
the two missing tabs.
Both services declare an `internal` primary constructor, so the snippets use
the public secondary one that takes project/location plus the engine or corpus
id -- reading the primary signature alone gives a constructor callers cannot
invoke.
The page's language-support badge stays at Kotlin v0.1.0: it marks when Kotlin
support for the page was introduced, and the other six Kotlin snippets on it
have worked since then.
The remaining diff in MemoryExample.kt is ktlint bringing pre-existing lines
into line with the repo style, which the linter now gates on because the file
is touched here.
* Correct the ragCorpus contract and wire both services to a Runner
Three fixes from review:
- The `rag_memory` KDoc claimed `ragCorpus` accepts a bare id or a full
resource name. It is the opposite: `normalizeCorpusName` does
`require(!ragCorpus.startsWith("projects/"))` and throws on a full name. The
Python tab directly above this snippet passes a full resource name, so a
reader switching tabs would have hit an IllegalArgumentException with a
comment telling them it was fine. The note now states the bare-id rule and
calls out the divergence from Python explicitly.
- Dropped "the primary constructor is internal" from the rendered snippet. It
is a note for reviewers, not for readers, who cannot see that constructor.
It stays in the PR description.
- Both snippets stopped at a factory function while the surrounding prose says
"instantiating the service and passing it to the Runner" and the Python tab
shows exactly that. They now build the service and pass it to a Runner.
* 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.
* docs(tutorials): fix ToolContext, output_key and persistence claims
* Update agent-team.md
* docs: address review — revert get-started changes, move streaming note
Reverts docs/get-started/python.md entirely and drops the edit to the
retired quickstart-streaming.md page. The corrected streaming caveat now
lands on docs/live/get-started/streaming-python.md, scoped to the
run_async path and naming SequentialAgent as the only workflow agent
with live support.
---------
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* 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
* Add allow_origins flag to cloud run page per issue #1113 - 1
Rendered page:
Agent's PR: #1118
Original Issue: #1113
--
This PR updates the deployment documentation to include --allow_origins flag (with regex support).
While the original draft suggested updating multiple pages, a review of the live site confirmed that this feature is already documented in the main CLI reference for the api_server and web commands.
Additional format changes:
- Fixed Markdown rendering bugs: Repaired broken code blocks in the Environment variables and Cloud Build permissions sections, fixed the misplaced Secret command, and corrected the malformed numbered list under Prerequisites.
- Style changes.
* Update cloud-run.md
* Update cloud-run.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 custom_metadata per Issue 1292 - 8
Rendered page:
Agent PR: #1306
Original Issue: #1292
-Polished the explanation of how and why custom_metadata works. It now clearly outlines how developers can pass service-specific configurations (like ttl and revision_ttl) directly to the underlying Agent Platform.
- I found that the add_events_to_memory(events=...) section that the agent was proposing was already documented in the site.
* Update memory.md
Worked on feedback. Updated the custom metadata documentation to use a generic BaseMemoryService example instead of platform-specific services. The code snippet was also revised to use generic key-value pairs rather than prescriptive TTL keys.
* 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>
* OpenAPI tool execution section per Issue #1227 - 11
Rendered view
PRs> #1245#1246
Original Issue> #1227
---
- Updated the execution section of the OpenAPI tool and improved language.
- Did minor edits to format and headers
* Update openapi-tools.md
* Update include_plugins per Issue #1173 - 9
Rendered page>
PRs> #1190#1192
Original Issue> #1173
- Changed the proposed note format into a bullet point.
- Made the explanation shorter and more direct so it matches Google's writing style guide.
- Fixed and replaced the undefined agent variable with a concrete MyImageAgent placeholder class to make the Python snippet self-contained.
- Added comments inside the code to explain exactly what happens when you turn plugins on or off (like how it affects things like tracing and events).
- Did light formatting in the rest of the page
* Update function-tools.md
* Update function-tools.md
fixed rendering mistakes
* Update function-tools.md
Adding a bullet did not work, I created a sub topic to stop the snippet from breaking in the rendering.
* Update function-tools.md