docs(a2a): A2A client guide, configuration and Telegram notes

This commit is contained in:
EugeneTes
2026-10-08 14:34:02 +00:00
parent 8eea09baba
commit 5e50d902af
9 changed files with 318 additions and 8 deletions

View File

@@ -208,3 +208,20 @@ reference) so the host's copy is used at runtime.
Activation or load failures are recorded (`AgentSession.ExtensionErrors`) and logged; other extensions still
load.
## Feature extensions in this repository
Besides the providers ([providers](providers.md), [claude-code-provider.md](claude-code-provider.md)), `extensions/`
holds feature extensions built on this API only: `Mcp` ([mcp.md](mcp.md)), `GoogleCalendar`
([google-calendar.md](google-calendar.md)), `Scheduler` ([telegram-bot.md](telegram-bot.md#scheduling)) and `A2A`.
`Volcanic.AgenticCore.Extensions.A2A` is the A2A client ([a2a.md](a2a.md#client)): `A2AClientExtension(settings,
target, registry)` registers the `a2a` tool (`agents`, `send`, `status`, `cancel` over the session's
`.volcanic/a2a/agents.json`), keeps the inbound hop count from the `a2a.inbound` event, and on `SessionStartEvent`
attaches the session for live delivery and flushes results kept for its target. It is meant to be added per session
by the host (`AgentSessionOptions.ExtraExtensions`, as the Telegram host does for each chat), not host-wide. Long
remote tasks go to the process-wide `A2AWatchRegistry`, which follows them by push, subscribe or poll, persists them
in `.volcanic/a2a/pending.json` and hands results to an `IA2AResultDelivery`: by default the target's live session
(`SendUserMessage` as a follow-up), or the host's own (`registry.UseDelivery(...)`, then `RestoreAsync` at startup and
`StopAsync` at shutdown). A host with an A2A server routes `A2AHostOptions.OnPush` to `registry.OnPushAsync` and sets
`A2AClientSettings.PushBaseUrl` to the server's public URL.