feat: agent-to-agent platform on ZeroClaw 0.8.2 — rooms, delegation, A2A ingress
Builds on the v0.8.2 runtime. Four workstreams, all behind the §15 MCP door:
- Group rooms (Phase 1): migration 0026; N-way threads repo with a DM/room
count-guard; chat.send {room} + room.create/invite/leave tools; RoomMessage
-> room.message SSE; /api/claw-chat/rooms* APIs; Observer room badge.
- Per-claw door identity: door caller_agent resolves the X-ZeroClaw-Agent
header (set by the fork) to the specific claw, falling back to roster[0].
- Gated delegation bridge (Phase 3): clawmates__delegate door tool drives a
sibling via the existing /ws/chat ZeroClawDriveExecutor (not A2A); self-deny,
per-workspace hourly budget, audit trail, untrusted-banner result. Native
in-daemon delegation stays off (it would bypass the door).
- A2A tenant ingress (Phase 2): migration 0027 (workspace_a2a + a2a_tokens);
runtime_provision enable_a2a_server/publish_claw; routes/a2a.rs tenant-aware
proxy (per-workspace tokens, injected internal bearer, daemon stays internal,
cards URL-rewritten to the cm-api edge); a2a.invoked taxonomy.
Tests: cm-db room repos, cm-runtime chat tools, door units. sqlx cache updated.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
1a531e91cd
commit
cbfa0ff24f
@@ -33,6 +33,17 @@ export interface TaxonomyEvents {
|
||||
"door.resolve": { doorId: string; decision: "approve" | "deny"; by?: string };
|
||||
/** Observe System → INTER-AGENT COMMS; World → message-in-flight on a connector. */
|
||||
"agent.message": { fromAgentId: string; toAgentId: string; text: string; ts?: string };
|
||||
/** Observe → INTER-AGENT COMMS; a message posted to an N-way group room. */
|
||||
"room.message": {
|
||||
fromAgentId: string;
|
||||
threadId: string;
|
||||
subject?: string;
|
||||
text: string;
|
||||
participantIds: string[];
|
||||
ts?: string;
|
||||
};
|
||||
/** Observe → an external A2A caller invoked this agent (a new ingress). */
|
||||
"a2a.invoked": { agentId: string; caller?: string; skill?: string; ts?: string };
|
||||
/** World → Live (Gource): the agent pawn retargets to nodeId and beams. */
|
||||
"world.touch": { agentId: string; nodeId: string; kind?: "service" | "event"; weight?: number };
|
||||
/** World → node glow/pulse intensity. */
|
||||
@@ -73,6 +84,8 @@ export const TAXONOMY_TYPES: TaxonomyType[] = [
|
||||
"door.request",
|
||||
"door.resolve",
|
||||
"agent.message",
|
||||
"room.message",
|
||||
"a2a.invoked",
|
||||
"world.touch",
|
||||
"node.activity",
|
||||
"topology.update",
|
||||
|
||||
Reference in New Issue
Block a user