CopilotKit Intelligence for Google ADK
copilotkit-intelligence-adk projects verified CopilotKit Intelligence Registry
skills into Google ADK through SkillRegistry and SkillToolset.
Installation
This package supports Python 3.10 or newer, google-adk>=2.0.0,<3.0.0, and
copilotkit>=0.1.95,<1.0.0.
Native registration
The adapter registers a native Google ADK toolset; it does not construct or wrap an agent.
from copilotkit_intelligence_adk import SkillRegistry, SkillToolset
from google.adk.agents import LlmAgent
registry = SkillRegistry(copilotkit_client, learning_container_id)
agent = LlmAgent(name="skill_agent", tools=[SkillToolset(registry)])
Each tool invocation returns the verified instruction text and its immutable Registry identity metadata. The adapter never executes skill scripts.
Lifecycle and preload
Use await registry.preload() for an explicit fresh preload,
await registry.preload_cached() for an explicitly offline preload, or
await registry.load() at request time. registry.status, registry.ready,
and await registry.wait_until_ready(timeout) expose readiness. A cold registry
fails closed until one complete verified set has loaded.
Fresh and cached data
Fresh preload and request-time load delegate only to the generic SDK's
client.skills.get(...); cached preload delegates only to
client.skills.get_cached(...). Snapshots report fresh or cached source.
Request-time loads are throttled for 30 seconds and share one in-flight call.
A transient refresh publishes stale and raises its canonical error: there is
no implicit stale-data fallback.
Limits and scripts
The complete set is rejected above 128 skills, above 262144 bytes for one
SKILL.md, or above 1048576 aggregate bytes. Instructions must be strict UTF-8.
Any failure rejects the full set. Manifest files with a script role or a
normalized path beginning with scripts/ are denied before content is read.
Telemetry
Events are load.started, load.throttled, load.singleflight_joined,
status.changed, load.succeeded, and load.failed. Metadata is restricted to
framework/adapter version, source/freshness, status/outcome/reason, latency,
skill count, Registry revision, and canonical error code/category/retryability,
request ID, and trace ID. Tokens, container IDs, paths, and instruction content
are forbidden. A telemetry sink exception is propagated explicitly; every
caller joined to that load receives the same adapter failure instance.
The adapter version is read from installed distribution metadata, with the
source-tree package version as its development fallback. A telemetry callback
cannot await a load or close that depends on that callback: a load during
load.started and any reentrant close reject immediately, while terminal
callbacks observe the already-published ready snapshot or exact failure.
Errors
Auth, permission, HTTP 401/403/404/410, archived-container,
project-mismatch, container-not-found, and Registry-unrecoverable errors deny
the set and preserve the generic SDK's canonical metadata. Transient or
integrity refresh failures become LEARNING_REGISTRY_STALE. Adapter validation
errors cover count, individual and aggregate byte limits, strict UTF-8, disabled
scripts, and unsupported legacy SDK projections.
Closing
await registry.aclose() is idempotent and changes status to closed. Closing
does not cancel an already running native invocation, but every future fresh,
cached, or request-time load rejects with LEARNING_REGISTRY_CLOSED.
Compatibility
The exact supported ranges are google-adk>=2.0.0,<3.0.0 and
copilotkit>=0.1.95,<1.0.0. The public
google.adk.tools.base_toolset.BaseToolset hook and its async
get_tools(self, readonly_context=None) method were verified through
LlmAgent(..., tools=[toolset]) at the minimum Google ADK 2.0.0 and latest
compatible Google ADK 2.5.0.
Ownership and release
The Intelligence/Learning team owns this package. It is independently versioned, tagged, and published, and its release does not require or trigger a release of another adapter.