Commit Graph

199 Commits

Author SHA1 Message Date
EugeneTes
8ba99b1477 feat(a2a-client): watch long remote tasks by push, subscribe or poll and deliver the results 2026-10-08 12:58:53 +00:00
EugeneTes
4fc523f86c feat(a2a-client): connect to remote agents through their cards with the configured key 2026-10-08 12:48:39 +00:00
EugeneTes
24747858eb fix(a2a-client): fake MCP server on the ASP.NET framework, question-first results, safer file names 2026-10-08 12:46:32 +00:00
EugeneTes
ef906b34dd chore(a2a-client): drop test package references the ASP.NET framework provides 2026-10-08 12:39:48 +00:00
EugeneTes
1fe9bfe4e8 feat(a2a-client): persist watches in pending.json 2026-10-08 12:36:29 +00:00
EugeneTes
fcc0191319 feat(a2a-client): describe remote tasks and save their files to the inbox 2026-10-08 12:36:12 +00:00
EugeneTes
168e8fc80d feat(a2a-client): read remote agents from agents.json on every call 2026-10-08 12:35:47 +00:00
EugeneTes
76e465ed2a feat(a2a-client): scaffold the A2A client extension behind A2AClient__Enabled 2026-10-08 12:35:26 +00:00
EugeneTes
e70557725a docs(plan): A2A client implementation plan; spec revisions 2026-10-08 12:29:29 +00:00
EugeneTes
b8be0f82ab docs(spec): task files carry caller and push configs only 2026-10-07 14:38:10 +00:00
EugeneTes
3360c320e7 docs(a2a): security reach, ports and limits 2026-10-07 14:32:33 +00:00
EugeneTes
fdb0bde798 fix(a2a): review polish 2026-10-07 14:31:35 +00:00
EugeneTes
0d1ddcc4df fix(a2a): unambiguous session scopes and validated context ids 2026-10-07 14:29:50 +00:00
EugeneTes
d542fcfe42 docs(a2a): A2A server guide, architecture, Telegram and Docker notes
Add docs/a2a.md (concepts, file formats, endpoints, sessions, task
lifecycle, configuration, security notes, curl examples) describing
what src/Volcanic.AgenticCore.A2A.Server actually does. Add an A2A
project paragraph to architecture.md, an "A2A" section to
telegram-bot.md (/a2a, notify_owner, isolated sessions, port 8080),
A2A_ENABLED/A2A_PUBLIC_URL and the aspnet image to docker.md, and
project-map/test-command updates to CLAUDE.md.

Mark the A2A server design spec implemented and record the deviations
found while building it (A2AHostOptions, synchronous
IA2ACallerDirectory.Find, generic WorkspaceCallerDirectory, per-status
push payload, split file-part error handling, the outbound guarded
handler, the per-caller server/router architecture, the restart grace
period, the owner= log field, the aspnet image, and the actual push
retry schedule). Note the aspnet image in the docker-deployment spec
too, without rewriting its historical decisions.
2026-10-07 14:20:19 +00:00
EugeneTes
f87a8dd8c1 chore(docker): rely on the aspnet image's port setting
mcr.microsoft.com/dotnet/aspnet:10.0-noble already sets ASPNETCORE_HTTP_PORTS=8080;
also setting ASPNETCORE_URLS made Kestrel log an override warning on every start.
2026-10-07 14:11:56 +00:00
EugeneTes
b53c339bf3 chore(docker): aspnet runtime image, port 8080 and A2A settings 2026-10-07 14:08:11 +00:00
EugeneTes
372c600503 fix(telegram): clean exit on A2A bind failure, log listen URLs, /a2a polish 2026-10-07 14:02:49 +00:00
EugeneTes
a3aee939d4 feat(telegram): /a2a lists a chat's A2A callers and recent tasks 2026-10-07 13:53:47 +00:00
EugeneTes
c1a8744eb7 feat(telegram): serve A2A from the bot, callers per chat workspace, notify_owner into the chat 2026-10-07 13:50:54 +00:00
EugeneTes
93a4504607 feat(a2a): standalone A2A sample host 2026-10-07 13:45:53 +00:00
EugeneTes
baddd320c7 fix(a2a): fresh response artifact per run, atomic continuation, sturdier e2e tests
- Each run's first text delta replaces the response artifact (append:false) and a resumed task
  drops the previous run's response, so a failed/canceled continuation never keeps old text.
- Resumed is built from a fresh store read, history chronological (question, then answer),
  timestamps on the TaskUpdater clock.
- Pool.Track refuses a second unfinished run of the same task; the pre-check rejects
  continuations of a running task with UnsupportedOperation.
- Tests: continuation history, streaming continuation, response replacement, concurrent
  continuation; busy test waits for the model call; TimeoutException in waits; push test
  matches TASK_STATE_COMPLETED; harness cleans up on failed start.
2026-10-07 13:38:36 +00:00
EugeneTes
ebdf4a1aa4 test(a2a): push delivery, URL guard and push receiver 2026-10-07 13:25:33 +00:00
EugeneTes
7b044c5437 test(a2a): streaming, input-required, busy contexts, cancel, subscribe, files and hops 2026-10-07 13:25:33 +00:00
EugeneTes
7d4b6ae119 fix(a2a): continuations emit the resumed task, guarded clients bypass proxies
A continued task (input-required -> new message) produced only status updates, so the SDK
answered 'Agent handler did not produce any response events'. The handler now enqueues the
resumed task (caller message and question in history, working) as the first event.
The guarded SocketsHttpHandler sets UseProxy = false: a proxy would make the connection and
skip the ConnectCallback address check.
2026-10-07 13:25:33 +00:00
EugeneTes
098ab9f5ac test(a2a): end-to-end server flows through the SDK client 2026-10-07 13:22:09 +00:00
EugeneTes
0ae8fdd19f fix(a2a): dedicated guarded HTTP clients, context-checked continuations, request-scoped card URL 2026-10-07 13:19:04 +00:00
EugeneTes
9c51c97c93 feat(a2a): per-caller SDK servers behind a key filter, cards and push receiver 2026-10-07 13:10:19 +00:00
EugeneTes
f925eaaafd fix(a2a): track live runs from the start, atomic eviction, token-based cancel and safe final writes 2026-10-07 13:05:06 +00:00
EugeneTes
e932a44877 feat(a2a): map one A2A task to one agent session run 2026-10-07 12:51:32 +00:00
EugeneTes
79079ea6ba feat(a2a): pool one agent session per caller context 2026-10-07 12:50:04 +00:00
EugeneTes
2c9f18a7bd feat(a2a): request_input, notify_owner and an artifact chat channel for server sessions 2026-10-07 12:49:09 +00:00
EugeneTes
ab4af2cc21 fix(a2a): reject malformed file part URLs as prompt errors 2026-10-07 12:41:55 +00:00
EugeneTes
ee06e84cd5 feat(a2a): build session prompts from A2A messages, save file parts to the inbox 2026-10-07 12:35:53 +00:00
EugeneTes
2bfa76e0be feat(a2a): per-caller task files with lazy restart recovery 2026-10-07 12:34:01 +00:00
EugeneTes
a2e6a1ac9c feat(a2a): read callers.json from workspaces on every request 2026-10-07 12:18:36 +00:00
EugeneTes
39c9c2467f feat(a2a): scaffold the A2A server library and its tests 2026-10-07 12:18:18 +00:00
EugeneTes
99528d003f docs(plan): A2A server implementation plan 2026-10-07 11:26:18 +00:00
EugeneTes
3569f25eb0 docs(spec): A2A server and client designs 2026-10-07 10:11:57 +00:00
EugeneTes
3a07d00eb2 feat(telegram): log trigger changes and the trigger count at startup 2026-10-05 18:43:30 +00:00
EugeneTes
145977c6fb chore: decline release notes for this repo 2026-10-05 16:32:36 +00:00
EugeneTes
cabec7ad70 docs(telegram): groups and Jev topic triggers 2026-10-05 16:29:07 +00:00
EugeneTes
be3c77b4d0 feat(telegram): watch groups silently and route Jev topic triggers to the owner's chat 2026-10-05 16:26:16 +00:00
EugeneTes
4ce71201b0 feat(telegram): trigger engine with Jev classification, debounce and snooze batches 2026-10-05 16:21:41 +00:00
EugeneTes
50d0e81aac feat(telegram): group registry, trigger store and snooze queue 2026-10-05 16:17:17 +00:00
EugeneTes
af714cc50b feat(telegram): trigger options and Jev client for OpenRouter systemone 2026-10-05 16:15:06 +00:00
EugeneTes
7520ff56a2 docs(spec): Telegram groups and Jev topic triggers 2026-10-05 15:42:19 +00:00
EugeneTes
92a0061fdd feat(telegram): ADMIN_USER_ID may /impersonate another user
While on, the admin's updates are routed as the target user's (allow-list,
chat, workspace, session, settings, jobs) and the target chat's output goes
to the admin's chat. The target's own updates are dropped with a notice that
an admin is working with their account. In memory; /impersonate 0 stops.
2026-10-05 07:24:07 +00:00
EugeneTes
64ea6f7fa1 feat(telegram): retry transient speech-to-text failures up to 3 attempts 2026-10-05 07:02:23 +00:00
EugeneTes
094d518827 fix(claude-code): disable built-in plugins and learn new ones from init
Claude Code 2.1.287 loads cc-plugin-* built-ins regardless of --setting-sources,
which tripped the fail-closed init check. Disable every known built-in in
--settings, and when init lists only built-ins that slipped through, disable them
process-wide and replay the request once. Other plugins still fail closed.
2026-10-02 10:08:23 +00:00
EugeneTes
39e7849039 fix(telegram): cut the voice transcript echo to 1024 characters 2026-10-02 09:51:57 +00:00