* Add A2A consuming quickstart for Kotlin
adk-kotlin has been able to consume remote A2A agents since 0.6.0, and the docs
had no Kotlin page for it. This adds one alongside the Python, Go and Java
quickstarts, plus its nav entry.
A new page rather than a tab: docs/a2a has no tab groups at all, it is one page
per language, so this follows the section's own shape.
Two dependencies are needed, not one. The a2a artifact publishes the A2A SDK as
runtime-only, and A2AAgent's httpClient parameter defaults to JdkA2AHttpClient(),
so a2a-java-sdk-client has to be on the compile classpath as well. That number
was established by compiling, not by reading module metadata: the a2a artifact
alone fails with "Cannot access class 'A2AHttpClient'", and adding the client
artifact is sufficient -- spec and the jsonrpc transport arrive transitively.
Only the consuming side is documented, because that is all that exists: no
webserver source at v0.7.0 mentions a2a, so there is no Kotlin equivalent of the
exposing quickstarts. The page says so and links to the Python and Java ones.
A2AAgent is a suspending factory, and the implementation class behind it is
internal, so the factory is the only way to construct one. The snippet notes it.
Verified end to end rather than by compiling alone: served a real agent card
from a local server and ran the snippet, which fetched it, parsed it and wired
the remote agent in as a sub-agent --
"Root agent root_agent delegates to prime_agent".
* Correct the agent card claims and make the server step usable
A2AAgent does not read the remote's name from the card: the name is the
caller's, and independent of what the card advertises. It does not read the
transport either, which is hardcoded to JSON-RPC. What the card supplies is
the description and the streaming capability.
The server step told readers to start a server without saying how, and the
two obvious candidates do not work: adk-kotlin parses A2A 1.0 cards, which
require supportedInterfaces with a protocolBinding, and the adk-java and
adk-python samples both publish 0.3-style cards that A2AAgent rejects with
AgentCardResolutionError. State that, and give a minimal card verified by
running the snippet against it.
Also fix the root agent instruction, which referenced dice-rolling the agent
cannot do; match the Java snippet's prime-delegation wording.
* Point the A2A quickstart at the adk-python sample server
The page claimed neither the adk-java nor the adk-python sample works as the
server for this quickstart. The adk-python half is wrong. adk-python does not
serve its `agent.json` verbatim: `fast_api.py` parses it through
`_compat.parse_agent_card`, and under a2a-sdk 1.x that parse promotes the
legacy `url` and `preferredTransport` into `supportedInterfaces`. The dependency
is `a2a-sdk>=0.3.4,<2`, so a fresh install resolves to 1.x and the card on the
wire is A2A 1.0 - exactly what the Kotlin client requires.
So the page now names a server a reader can actually start, instead of asking
them to hand-write a card:
adk api_server --a2a --port 8001 \
contributing/samples/a2a/a2a_basic/remote_a2a
Its card is served under the agent's own prefix, and the snippet's agentCardUrl
follows it to http://localhost:8001/a2a/check_prime_agent. Confirmed the route
prefix in `attach_a2a_routes_to_app` and that the sample card's own `url`
already points there.
The adk-java half of the claim was correct and stays: `a2a_server` is pinned to
the 0.3.x A2A SDK and serves a 0.3 card. That, and the A2A 1.0 requirement it
illustrates, move into a note. The hand-written card survives as a collapsible
fallback for readers bringing their own server.
Reported by joefernandez in review of #2118.
* Upgrade Kotlin examples to adk-kotlin 0.8.0
The Kotlin examples project is pinned to adk-kotlin 0.7.0, which predates the
BigQuery agent analytics plugin and the JSON Schema constraint fields on
`Schema`. Bump the pin to 0.8.0 so snippets for those features can be written.
Only the three version strings change. Checked the 0.8.0 POM before bumping:
it still resolves Ktor 2.3.13 and kotlin-stdlib 2.1.20, so the explicit Ktor
pins and the 2.1.20 Kotlin/KSP plugin versions stay correct, and 0.8.0 removes
no API that the current snippets use.
Not compile-verified locally - no JDK 17 on hand, and the Gradle wrapper
rejects the JDK 26 that is. The PR check only builds .kt files changed in the
PR, so it will not cover this either; the first snippet PR on top of this one
is what will actually exercise the new version.
* Bump the Kotlin install instructions to 0.8.0
The dependency blocks readers copy from still pinned 0.5.0 - three releases
behind, and behind the examples project itself. Anyone following the quickstart
got an SDK without context caching, the Vertex AI memory and session services,
or the BigQuery analytics plugin, while the snippets on those same pages are
written against a newer API.
Verified on Maven Central that 0.8.0 is published for every artifact named
here: -core, -processor, -webserver, and -litertlm.
Only install instructions change. The `Kotlin v0.x` support badges are
deliberately left alone: they record the release a feature landed in, not the
current version.
* Add Kotlin snippet for the CallbackContext memory-write helpers
adk-kotlin 0.7.0 added addEventsToMemory and addMemory to CallbackContext,
alongside the addSessionToMemory the page already shows in Kotlin. They cover
the cases addSessionToMemory cannot: a chosen subset of events, and facts you
construct yourself rather than letting the service derive them.
Compiling changed the shape of this snippet. The obvious version read the
current turn's events off context.invocationContext, but that property is
internal -- CallbackContext exposes no way to reach the session. So
addEventsToMemory takes events the caller already holds, and the snippet says
so rather than quietly implying otherwise.
Both helpers, and addSessionToMemory, throw IllegalStateException when the
runner has no memory service. That is a runtime failure with nothing at compile
time to warn you, so the page states it. Verified by running both paths:
"Cannot add events to memory: memory service is not available." and
"Cannot add memory: memory service is not available."
Badged Kotlin v0.7.0, verified rather than assumed: neither helper exists on
CallbackContext at v0.6.0.
Appended to the existing MemoryExample.kt, already registered, so CI compiles
and lints it.
* docs: clarify CallbackContext memory methods and their default behavior
* Add Kotlin snippet for DebugLoggingPlugin
The Kotlin logging page covered LoggingPlugin's console output but not
DebugLoggingPlugin, available since adk-kotlin 0.6.0, which records the same
activity in full to a YAML file instead of truncated console summaries. Both
plugins override the same twelve callbacks, so the difference really is only
fidelity and destination.
Transcluded from the existing LoggingExamples.kt rather than written inline,
matching the rest of the page and keeping it in the compile regression suite --
the file is already registered in files_to_test.txt.
The sample passes includeSystemInstruction = false, since the plugin's KDoc
cautions that it writes raw prompts, tool arguments and session state to disk.
Verified against the upstream test that the flag records has_system_instruction
in place of the instruction text rather than dropping the field, and the
comment names that field so it can be found in the output.
outputPath is left at its default rather than passed explicitly; the default
filename is given in the prose instead, so the snippet does not imply the
parameter is required.
Page badge left at Kotlin v0.1.0: the other snippets on the page have worked
since then, so the version requirement for this one is noted in the prose.
* docs: add Kotlin version support tag to debug logging documentation
* Document how to check whether the context cache was used
The caching page explained how to turn caching on and never how to tell whether
it is working. CacheMetadata has been available since adk-kotlin 0.6.0 and is
undocumented: adk-python has fourteen code references to cache_metadata, while
adk-docs mentions it twice, both incidental -- a BigQuery schema table and a
bullet in the Live dev guide.
The snippet reads it from Event.cacheMetadata and covers both states the type
can be in, because the constructor enforces the split: cacheName, expireTime and
invocationsUsed must either all be set (an active cache) or all be null (the
fingerprint-only state used for prefix matching before a cache exists).
Notes that token counts live on LlmResponse.usageMetadata rather than here,
which the KDoc calls out to avoid duplication and a reader would otherwise
reasonably look for on CacheMetadata.
Badged Kotlin v0.6.0 and verified rather than assumed: the snippet compiles
against a temporary 0.6.0 pin as well as the current 0.7.0 one.
Transcluded and registered, so CI compiles and lints it. Exercised all four
paths with synthetic events: no metadata, fingerprint-only, active, and active
with expireSoon true.
* Correct when CacheMetadata is present on an event
The section claimed every event backed by an LLM response carries a
CacheMetadata. It does not: LlmResponse.cacheMetadata is null when caching
is disabled and also when the call produced no cache information, so the
claim was wrong even with caching on.
Say "can carry", name both null cases, and explain why the snippet checks
before reading. The snippet's own comment made the same overstatement.
* docs: clarify the behavior of expireSoon and cache status in documentation and snippets
adk-kotlin 0.7.0 added a plugins parameter to the agent-based InMemoryRunner
constructor. App.plugins already existed at 0.6.0, so this is an ergonomic
shorthand rather than a new capability, but it is the form a Kotlin reader
should see and the plugins page had no Kotlin at all.
Two tab groups rather than one. The Register group's prose refers to
"the CountInvocationPlugin plugin defined in the previous section", so a Kotlin
tab there alone would point at a class the page never defines in Kotlin. Adding
the Create group as well makes the pair self-contained.
Kotlin now appears in two of the page's nine groups; the remaining seven are
per-callback detail. Whether to finish the page is a separate decision.
Plugin declares exactly one abstract member, name -- all twelve callbacks and
close() have defaults -- so a custom plugin only overrides what it needs. The
snippet overrides beforeAgent and beforeModel, matching the callbacks the
surrounding prose describes.
Transcluded and registered, so CI compiles and lints it. Also run: the runner is
constructed with the plugin wired, and invoking beforeAgent twice prints
"[Plugin] Agent run count: 1" then 2, so the counter callbacks work.
* 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.
InMemorySessionService.create_session is async, so calls without await
return unawaited coroutines and the sessions are never created, causing
SessionNotFoundError on subsequent runner.run_async() calls.
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs: Document new add_memory method for direct memory management
* 1350-6Memoryupdate.md
* Update on memory.md according to issue #1350 - 6
Simplified dense sections, corrected markdown formatting errors, and fixed typos to align with documentation standards. Corrected some sections from the original page and the agent's PR that were a little clunky. Erased sentences inside paragraph's ,Joe's request, and included commas instead. All this while including the necessary update.
* Update memory.md
-Worked on feedback, fixed errors, changed wording slightly, and reviewed format.
-Some changes were lost when I tried to resolve conflicts between branches in my last commit. I added them back here.
* Fix add_memory example and memory operations list in memory.md
* Format memory.md: line wrapping, snippet cleanup, and Java example
---------
Co-authored-by: adk-bot <adk-bot@google.com>
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* #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>
* Fix Go multi-tool tutorial snippet to include two tools
* Update model string in multi-tool snippets to gemini-flash-latest in Python, TS, Java
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
The memory docs and the express-mode weather agent notebook referenced
`adk.tools.preload_memory_tool.PreloadMemoryTool()`, which raises
`AttributeError: module 'google.adk.tools' has no attribute
'preload_memory_tool'` because the submodule is not exposed via the
package's lazy `__getattr__`.
Use the documented public API `from google.adk.tools import preload_memory`
and pass the `preload_memory` instance directly, consistent with how the
sibling `load_memory` tool is shown in the same page.
Fixes#1771
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Format localhost URLs as inline code in quickstarts
* Correct module paths and stale notes in snippet comments
* Reword "and later" to "and higher" in snippet notes
* 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>
* adding go getting started to 2.0 docs
* updating graphs docs for go; adding in workflow example go snippets
* Updating HiTL docs for Go 2.0
* updating Go getting started guide for v2
* Updating Routes docs for Go v2
* Updating data handling docs for Go 2.0
* Updating dynamic workflows docs for Go 2.0
* fix(docs): set ADK Go 2.0 GA date on the 2.0 landing page
* fix(docs): standardize ADK Go 2.0 install/import on /v2 @ v2.0.0
* updating announcement banner
* routes snippets updates
* 2.0 install instructions clean-up
* updating collaboration docs for go v2 + new example snippet
---------
Co-authored-by: Karol Piotrowicz <kpiotrowicz@google.com>
* Update version for ADK Kotlin to 0.2.0
* Update version for ADK Kotlin examples to 0.2.0
* Update install steps on multi-tool-agent page
* Update ADK Kotlin API reference docs to 0.2.0
* Remove runner parameter from AdkWebServer constructor
* Migrating from Map to typed data classes in FuncTool and LongRunningTool kotlin examples
* lint cleanup of kotlin snippets
* adding gradle wrapper for kotlin snippets
* cleaning up build file for kotlin
* fixing ktlint_code_style, added focus on included Gradle Wrapper
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Add Kotlin to hero / front page
* Add quickstart page for Kotlin
* Complete Kotlin quickstart guide and fix hero code sample (#2)
* Replace GitHub repo links with language icons in header (#3)
* Fix header icon FOUC and homepage font weight regression (#4)
* Testing staging pipeline
* Revert test edit (for staging pipeline)
* Update language icon tooltips to indicate GitHub destination (#5)
* Add link to ADK Kotlin release notes (#7)
* Initial commit of ADK Kotlin API reference docs (#6)
* Add script to generate ADK Kotlin API reference docs (#8)
* Update links and link checker ignore list (temporarily) (#9)
* Add ADK Kotlin for Android getting started guide to Advanced setup page (#10)
* Add advanced setup page with steps to "Use ADK Kotlin in Android projects"
* Update temp link checker rules
* Add placeholder folder for adk-samples (#13)
* adding linter/compilation checks for kotlin snippets (#12)
* adding linter/compilation checks for kotlin snippets
* Add Kotlin validation scripts
* Initial commit of Kotlin sample agents for adk-samples (#15)
* Adding kotlin snippet for llm agents (#16)
* Adding kotlin snippets to Events (#17)
* Pull changes to docs/events/index.md from glaforge-kotlin-snippets
* fixing kotlin event timestamp and longRunningToolIds
* Fix language tags (#19)
* Fix language tags
* Update
* Fix wrapping
* Fix wrapping (again)
* Fix wrapping/format
* Fix language tag on integration page
* Enable check_paths in PyMdown Snippets Extension to make the build fail if a snippet can't be found (#20)
* Update mkdocs config (#21)
* Fix broken links, update URLs to adk.dev, and improve (temp) lychee config (#22)
* Add Kotlin/maven badge to README (#23)
* Adding Kotlin snippets for artifacts (#18)
* Pull Kotlin snippets for artifacts from glaforge-kotlin-snippets
* Add comprehensive Kotlin snippets for artifacts
* Refactor artifacts documentation to use external Kotlin snippets
* Update Kotlin model to gemini-flash-latest
* Fix GCS initialization in Kotlin artifact snippet
* afixi failing test with capital-agent added to files_to_check
* Fix snippet label syntax for MkDocs build
* Configure proper Gradle project for Kotlin snippets and fix dependencies
* Add KSP support and generated sources to Kotlin snippets build
* fixing capital_agent turnComplete
* Fix syntax error in build.gradle.kts by removing invalid placeholders (#25)
* Adding Kotlin snippets to google-gemini.md (#27)
Pulling kotlin changes to google-gemini.md from glaforge-kotlin-snippets
* Add a warning about not adding an api key to production code. (#28)
* Add a warning about not adding an api key to production code.
* Update note
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Add ADK Demo App sample showcasing Gemini-powered agents (#29)
This sample demonstrates how to use the Google ADK (Agent Development Kit) in an Android application to create a chat interface powered by a Gemini-based "Fun Facts" agent. The implementation features:
* Integration with the Kotlin ADK core and processor libraries.
* A `FunFactsAgent` defined using `LlmAgent` and the Gemini model.
* A `ChatViewModel` utilizing `InMemoryRunner` for asynchronous message streaming.
* A modern UI built with Jetpack Compose and Material 3.
* Build configuration logic for secure API key management via environment variables or `local.properties`.
* Update Kotlin docs and samples to align with adk-kotlin API changes (#30)
Rename GeminiModel to Gemini, @AdkTool/@AdkParam to @Tool/@Param,
adkTools() to generatedTools(), replace DebugRunner with InMemoryRunner,
fix AgentLoader import path, use SingleAgentLoader, bump Kotlin to
2.3.21 and KSP to 2.3.7, and update Android minSdk from 24 to 26.
* adding kotlin info to READMEs (#14)
* Reorganize Android sample agent and add READMEs (#31)
* Move Android sample agent
* Update repo README, add Android README, update sample agent README
* Minor edit to language support tags (#32)
* Remove blog post link (#33)
Will re-add after it's published
* Remove examples link (#34)
* Adding Kotlin snippets for Sessions docs (#26)
* initial kotlins snippets additions to sessions docs
* Updating memory docs with kotlin snippets
* Adding kotlin snippets to session state docs.
* update model to gemini-flash-latest
* sessions examples clean-up
* fixing sessions snippet markers
* adding kotlin session snippets to files to test
* adding callback to memory_example
* Fixing capital agent snippet (#35)
Fixing file name
Updating adkTool > Tool
Updating GeminiModel > Gemini
* Adding kotlin snippets for tools docs (#36)
* adding function tool kotlin snippets
* adding function_tools snippets to files to test
* Adding kotlin snippets to observability docs (#37)
* initial kotlin observability updates
* adding observability snippets to file check (#38)
* Adding Kotlin snippets to Callbacks docs (#39)
* kotlin callbacks snippets
* adding callbacks snippets to file check
* Align Kotlin and KSP versions with published 0.1.0 artifacts (#40)
* switch CLI entry points from InMemoryRunner to ReplRunner (#41)
* Switch CLI entry points from InMemoryRunner to ReplRunner
* Fix wording
* Update API reference docs for Kotlin, 2026-05-18 (#42)
* Remove ADK on Android note until published (#43)
* Update Kotlin code samples (#44)
* Rename GeminiModel to Gemini in Kotlin snippets and docs
* Remove broken SessionKey call and use sessionId directly in AgentTool snippet
* Rewrite Go hero snippet to use llmagent API
* Use isFinalResponse with safe access in CapitalAgent snippet
* Use Role.USER constant instead of raw string in SetupExample
* Use full semver v0.1.0 in Kotlin language support tags
* Remove Android setup steps, moving to new property (#45)
* Tutorial Kotlin agent (#46)
* Adding multi-tool-agent snippet and updating tutorial
* Fixing Go language order on tutorial page
* adding multi tool agent example to files to test
* Inline Kotlin get-started code sample
* Kotlin Multi agents snippets (#47)
* Multi-agent kotlin snippets
* Fixing docs tags in multiagent example
* Fix Kotlin language support tags, code samples, and google-gemini.md cleanup (#48)
* Add Kotlin v0.1.0 to language support tags across docs
* Fix MultiToolAgent.kt model string and argument style
* Update MultiAgentExample.kt to use gemini-flash-latest model string
* Fix google-gemini.md: add Kotlin sample, remove unsupported Java tabs
* Remove explicit apiKey from CallbackBasic.kt for consistency
* Standardize Gemini() constructor to use named args in all snippets
* Remove adk-samples directory (moved to google/adk-samples#1969)
* Remove adk-samples directory (moved to google/adk-samples#1969) (#49)
* Update API reference docs for ADK Kotlin 0.1.0 (#50)
* Remove adk-samples directory (moved to google/adk-samples#1969)
* Update API reference docs for ADK Kotlin 0.1.0
* Remove kotlin lycheeignore config (#51)
* Remove adk-samples directory (moved to google/adk-samples#1969)
* Remove Kotlin .lycheeignore config links
---------
Co-authored-by: Toni Klopfenstein <2359976+ToniCorinne@users.noreply.github.com>
Co-authored-by: Jolanda Verhoef <JolandaVerhoef@users.noreply.github.com>
* Add agent routing and model routing docs for RoutedAgent and RoutedLlm in ADK JS
* Update example code snippets
* Add renamed code sample files
* Update lychee link checker config
* Shorten docs and snippets paths and filenames
* Update titles
* Rework intros
* Rework intros
* Add notes about experimental status
* Move InMemoryRunner outside of code snippet regions since it's unused in rendered snippet
* fix: working code for the new version
* fix: typos
* fix: lint
* Fix import paths, remove trailing underscore from prefix, and replace Runner with InMemoryRunner/run_debug for a self-contained runnable example.
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>