agent-inbox 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +44 -7
- package/README.md +67 -24
- package/dist/federation/connection-manager.d.ts +13 -2
- package/dist/federation/connection-manager.d.ts.map +1 -1
- package/dist/federation/connection-manager.js +109 -10
- package/dist/federation/connection-manager.js.map +1 -1
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -0
- package/dist/ipc/ipc-server.d.ts +2 -0
- package/dist/ipc/ipc-server.d.ts.map +1 -1
- package/dist/ipc/ipc-server.js +48 -0
- package/dist/ipc/ipc-server.js.map +1 -1
- package/dist/map/map-client.d.ts +100 -0
- package/dist/map/map-client.d.ts.map +1 -1
- package/dist/map/map-client.js +61 -0
- package/dist/map/map-client.js.map +1 -1
- package/dist/mcp/mcp-proxy.d.ts +28 -0
- package/dist/mcp/mcp-proxy.d.ts.map +1 -0
- package/dist/mcp/mcp-proxy.js +280 -0
- package/dist/mcp/mcp-proxy.js.map +1 -0
- package/dist/mesh/delivery-bridge.d.ts +47 -0
- package/dist/mesh/delivery-bridge.d.ts.map +1 -0
- package/dist/mesh/delivery-bridge.js +73 -0
- package/dist/mesh/delivery-bridge.js.map +1 -0
- package/dist/mesh/mesh-connector.d.ts +29 -0
- package/dist/mesh/mesh-connector.d.ts.map +1 -0
- package/dist/mesh/mesh-connector.js +36 -0
- package/dist/mesh/mesh-connector.js.map +1 -0
- package/dist/mesh/mesh-transport.d.ts +70 -0
- package/dist/mesh/mesh-transport.d.ts.map +1 -0
- package/dist/mesh/mesh-transport.js +92 -0
- package/dist/mesh/mesh-transport.js.map +1 -0
- package/dist/mesh/type-mapper.d.ts +67 -0
- package/dist/mesh/type-mapper.d.ts.map +1 -0
- package/dist/mesh/type-mapper.js +165 -0
- package/dist/mesh/type-mapper.js.map +1 -0
- package/dist/types.d.ts +29 -2
- package/dist/types.d.ts.map +1 -1
- package/docs/CLAUDE-CODE-SWARM-PROPOSAL.md +137 -0
- package/package.json +7 -2
- package/src/federation/connection-manager.ts +125 -10
- package/src/index.ts +96 -5
- package/src/ipc/ipc-server.ts +58 -0
- package/src/map/map-client.ts +152 -0
- package/src/mcp/mcp-proxy.ts +326 -0
- package/src/mesh/delivery-bridge.ts +110 -0
- package/src/mesh/mesh-connector.ts +41 -0
- package/src/mesh/mesh-transport.ts +157 -0
- package/src/mesh/type-mapper.ts +239 -0
- package/src/types.ts +33 -1
- package/test/federation/integration.test.ts +37 -3
- package/test/federation/sdk-integration.test.ts +4 -8
- package/test/ipc-new-commands.test.ts +200 -0
- package/test/mcp-proxy.test.ts +191 -0
- package/test/mesh/delivery-bridge.test.ts +178 -0
- package/test/mesh/e2e-mesh.test.ts +527 -0
- package/test/mesh/e2e-real-meshpeer.test.ts +629 -0
- package/test/mesh/federation-mesh.test.ts +269 -0
- package/test/mesh/mesh-connector.test.ts +66 -0
- package/test/mesh/mesh-transport.test.ts +191 -0
- package/test/mesh/meshpeer-integration.test.ts +442 -0
- package/test/mesh/mock-mesh.ts +125 -0
- package/test/mesh/mock-meshpeer.ts +266 -0
- package/test/mesh/type-mapper.test.ts +226 -0
- package/docs/PLAN.md +0 -545
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh-transport.js","sourceRoot":"","sources":["../../src/mesh/mesh-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type mapping between agentic-mesh MAP messages and agent-inbox messages.
|
|
3
|
+
*
|
|
4
|
+
* Translates MAP Message (from agentic-mesh's MapServer/FederationGateway)
|
|
5
|
+
* into agent-inbox's internal Message format and vice versa.
|
|
6
|
+
*
|
|
7
|
+
* Inbox-specific fields (subject, thread_tag, importance, recipientKind)
|
|
8
|
+
* are encoded in the MAP message's `_meta` vendor extension field.
|
|
9
|
+
*/
|
|
10
|
+
import type { Message } from "../types.js";
|
|
11
|
+
/** MAP Message as delivered by agentic-mesh's MapServer. */
|
|
12
|
+
export interface MapMessage {
|
|
13
|
+
id: string;
|
|
14
|
+
from: string;
|
|
15
|
+
to: MapAddress;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
payload?: unknown;
|
|
18
|
+
meta?: MapMessageMeta;
|
|
19
|
+
_meta?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export type MapAddress = string | {
|
|
22
|
+
agent: string;
|
|
23
|
+
} | {
|
|
24
|
+
agents: string[];
|
|
25
|
+
} | {
|
|
26
|
+
scope: string;
|
|
27
|
+
} | {
|
|
28
|
+
role: string;
|
|
29
|
+
within?: string;
|
|
30
|
+
} | {
|
|
31
|
+
broadcast: true;
|
|
32
|
+
} | {
|
|
33
|
+
system: string;
|
|
34
|
+
agent: string;
|
|
35
|
+
} | Record<string, unknown>;
|
|
36
|
+
export interface MapMessageMeta {
|
|
37
|
+
priority?: "urgent" | "high" | "normal" | "low";
|
|
38
|
+
correlationId?: string;
|
|
39
|
+
delivery?: "fire-and-forget" | "acknowledged" | "guaranteed";
|
|
40
|
+
_meta?: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Convert a MAP Message from agentic-mesh into an agent-inbox Message.
|
|
44
|
+
*
|
|
45
|
+
* Inbox-specific fields are read from `_meta` (or `meta._meta`):
|
|
46
|
+
* - `_meta.subject` → `subject`
|
|
47
|
+
* - `_meta.threadTag` / `meta.correlationId` → `thread_tag`
|
|
48
|
+
* - `_meta.inReplyTo` → `in_reply_to`
|
|
49
|
+
* - `_meta.recipientKind` → per-recipient `kind`
|
|
50
|
+
* - `_meta.inboxMessageId` → used as `id` if present
|
|
51
|
+
* - `meta.priority` → `importance`
|
|
52
|
+
*/
|
|
53
|
+
export declare function mapMessageToInbox(mapMsg: MapMessage, scope?: string): Message;
|
|
54
|
+
/**
|
|
55
|
+
* Convert an agent-inbox Message into partial MAP message fields
|
|
56
|
+
* suitable for sending via `AgentConnection.send()` or `FederationGateway.route()`.
|
|
57
|
+
*
|
|
58
|
+
* Returns `to`, `payload`, and `meta` (including `_meta` for inbox fields).
|
|
59
|
+
*/
|
|
60
|
+
export declare function inboxMessageToMap(msg: Message): {
|
|
61
|
+
to: MapAddress;
|
|
62
|
+
payload: unknown;
|
|
63
|
+
meta: MapMessageMeta & {
|
|
64
|
+
_meta: Record<string, unknown>;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=type-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-mapper.d.ts","sourceRoot":"","sources":["../../src/mesh/type-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,OAAO,EAIR,MAAM,aAAa,CAAC;AAMrB,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,UAAU,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,UAAU,GAClB,MAAM,GACN;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GACpB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,iBAAiB,GAAG,cAAc,GAAG,YAAY,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,KAAK,GAAE,MAAkB,GACxB,OAAO,CA6BT;AA+ED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG;IAC/C,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAC3D,CAgCA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type mapping between agentic-mesh MAP messages and agent-inbox messages.
|
|
3
|
+
*
|
|
4
|
+
* Translates MAP Message (from agentic-mesh's MapServer/FederationGateway)
|
|
5
|
+
* into agent-inbox's internal Message format and vice versa.
|
|
6
|
+
*
|
|
7
|
+
* Inbox-specific fields (subject, thread_tag, importance, recipientKind)
|
|
8
|
+
* are encoded in the MAP message's `_meta` vendor extension field.
|
|
9
|
+
*/
|
|
10
|
+
import { ulid } from "ulid";
|
|
11
|
+
import { normalizeContent } from "../router/message-router.js";
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// MAP → Inbox
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
/**
|
|
16
|
+
* Convert a MAP Message from agentic-mesh into an agent-inbox Message.
|
|
17
|
+
*
|
|
18
|
+
* Inbox-specific fields are read from `_meta` (or `meta._meta`):
|
|
19
|
+
* - `_meta.subject` → `subject`
|
|
20
|
+
* - `_meta.threadTag` / `meta.correlationId` → `thread_tag`
|
|
21
|
+
* - `_meta.inReplyTo` → `in_reply_to`
|
|
22
|
+
* - `_meta.recipientKind` → per-recipient `kind`
|
|
23
|
+
* - `_meta.inboxMessageId` → used as `id` if present
|
|
24
|
+
* - `meta.priority` → `importance`
|
|
25
|
+
*/
|
|
26
|
+
export function mapMessageToInbox(mapMsg, scope = "default") {
|
|
27
|
+
const vendorMeta = mapMsg._meta ?? mapMsg.meta?._meta ?? {};
|
|
28
|
+
const recipients = resolveMapAddress(mapMsg.to, vendorMeta);
|
|
29
|
+
const priority = mapMsg.meta?.priority;
|
|
30
|
+
const importance = priority === "urgent"
|
|
31
|
+
? "urgent"
|
|
32
|
+
: priority === "high"
|
|
33
|
+
? "high"
|
|
34
|
+
: priority === "low"
|
|
35
|
+
? "low"
|
|
36
|
+
: "normal";
|
|
37
|
+
return {
|
|
38
|
+
id: vendorMeta.inboxMessageId ?? ulid(),
|
|
39
|
+
scope,
|
|
40
|
+
sender_id: mapMsg.from,
|
|
41
|
+
recipients,
|
|
42
|
+
content: normalizeContent(mapMsg.payload),
|
|
43
|
+
importance,
|
|
44
|
+
subject: vendorMeta.subject,
|
|
45
|
+
thread_tag: vendorMeta.threadTag ?? mapMsg.meta?.correlationId,
|
|
46
|
+
in_reply_to: vendorMeta.inReplyTo,
|
|
47
|
+
conversation_id: vendorMeta.conversationId,
|
|
48
|
+
metadata: stripInboxKeys(vendorMeta),
|
|
49
|
+
created_at: new Date(mapMsg.timestamp).toISOString(),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve a MAP Address into agent-inbox Recipients.
|
|
54
|
+
*/
|
|
55
|
+
function resolveMapAddress(addr, vendorMeta) {
|
|
56
|
+
const kind = vendorMeta.recipientKind ?? "to";
|
|
57
|
+
const now = new Date().toISOString();
|
|
58
|
+
if (typeof addr === "string") {
|
|
59
|
+
return [{ agent_id: addr, kind, delivered_at: now }];
|
|
60
|
+
}
|
|
61
|
+
// Federated address must be checked before simple agent address
|
|
62
|
+
// since { system: "x", agent: "y" } also matches "agent" in addr
|
|
63
|
+
if ("system" in addr &&
|
|
64
|
+
"agent" in addr &&
|
|
65
|
+
typeof addr.system === "string" &&
|
|
66
|
+
typeof addr.agent === "string") {
|
|
67
|
+
return [
|
|
68
|
+
{ agent_id: `${addr.agent}@${addr.system}`, kind, delivered_at: now },
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
if ("agent" in addr && typeof addr.agent === "string") {
|
|
72
|
+
return [{ agent_id: addr.agent, kind, delivered_at: now }];
|
|
73
|
+
}
|
|
74
|
+
if ("agents" in addr && Array.isArray(addr.agents)) {
|
|
75
|
+
return addr.agents.map((agentId) => ({
|
|
76
|
+
agent_id: agentId,
|
|
77
|
+
kind,
|
|
78
|
+
delivered_at: now,
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
if ("scope" in addr && typeof addr.scope === "string") {
|
|
82
|
+
return [{ agent_id: addr.scope, kind, delivered_at: now }];
|
|
83
|
+
}
|
|
84
|
+
if ("broadcast" in addr) {
|
|
85
|
+
return [{ agent_id: "*", kind, delivered_at: now }];
|
|
86
|
+
}
|
|
87
|
+
return [];
|
|
88
|
+
}
|
|
89
|
+
// Keys that belong to the inbox layer, not stored in metadata
|
|
90
|
+
const INBOX_META_KEYS = new Set([
|
|
91
|
+
"subject",
|
|
92
|
+
"threadTag",
|
|
93
|
+
"inReplyTo",
|
|
94
|
+
"recipientKind",
|
|
95
|
+
"inboxMessageId",
|
|
96
|
+
"conversationId",
|
|
97
|
+
"importance",
|
|
98
|
+
]);
|
|
99
|
+
function stripInboxKeys(meta) {
|
|
100
|
+
const result = {};
|
|
101
|
+
for (const [k, v] of Object.entries(meta)) {
|
|
102
|
+
if (!INBOX_META_KEYS.has(k)) {
|
|
103
|
+
result[k] = v;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// Inbox → MAP
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
/**
|
|
112
|
+
* Convert an agent-inbox Message into partial MAP message fields
|
|
113
|
+
* suitable for sending via `AgentConnection.send()` or `FederationGateway.route()`.
|
|
114
|
+
*
|
|
115
|
+
* Returns `to`, `payload`, and `meta` (including `_meta` for inbox fields).
|
|
116
|
+
*/
|
|
117
|
+
export function inboxMessageToMap(msg) {
|
|
118
|
+
// Build the MAP address from recipients
|
|
119
|
+
const primaryRecipients = msg.recipients.filter((r) => r.kind === "to");
|
|
120
|
+
const to = resolveRecipientsToAddress(primaryRecipients);
|
|
121
|
+
const priority = msg.importance === "urgent"
|
|
122
|
+
? "urgent"
|
|
123
|
+
: msg.importance === "high"
|
|
124
|
+
? "high"
|
|
125
|
+
: msg.importance === "low"
|
|
126
|
+
? "low"
|
|
127
|
+
: "normal";
|
|
128
|
+
return {
|
|
129
|
+
to,
|
|
130
|
+
payload: msg.content,
|
|
131
|
+
meta: {
|
|
132
|
+
priority,
|
|
133
|
+
correlationId: msg.thread_tag,
|
|
134
|
+
_meta: {
|
|
135
|
+
inboxMessageId: msg.id,
|
|
136
|
+
...(msg.subject ? { subject: msg.subject } : {}),
|
|
137
|
+
...(msg.thread_tag ? { threadTag: msg.thread_tag } : {}),
|
|
138
|
+
...(msg.in_reply_to ? { inReplyTo: msg.in_reply_to } : {}),
|
|
139
|
+
...(msg.conversation_id
|
|
140
|
+
? { conversationId: msg.conversation_id }
|
|
141
|
+
: {}),
|
|
142
|
+
...msg.metadata,
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function resolveRecipientsToAddress(recipients) {
|
|
148
|
+
if (recipients.length === 0) {
|
|
149
|
+
return { broadcast: true };
|
|
150
|
+
}
|
|
151
|
+
if (recipients.length === 1) {
|
|
152
|
+
const agentId = recipients[0].agent_id;
|
|
153
|
+
// Check for federated address (agent@system)
|
|
154
|
+
const atIdx = agentId.indexOf("@");
|
|
155
|
+
if (atIdx > 0) {
|
|
156
|
+
return {
|
|
157
|
+
system: agentId.slice(atIdx + 1),
|
|
158
|
+
agent: agentId.slice(0, atIdx),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return { agent: agentId };
|
|
162
|
+
}
|
|
163
|
+
return { agents: recipients.map((r) => r.agent_id) };
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=type-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-mapper.js","sourceRoot":"","sources":["../../src/mesh/type-mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -130,14 +130,36 @@ export interface IpcCheckInboxCommand {
|
|
|
130
130
|
unreadOnly?: boolean;
|
|
131
131
|
clear?: boolean;
|
|
132
132
|
}
|
|
133
|
+
export interface IpcReadThreadCommand {
|
|
134
|
+
action: "read_thread";
|
|
135
|
+
threadTag: string;
|
|
136
|
+
scope?: string;
|
|
137
|
+
}
|
|
138
|
+
export interface IpcListAgentsCommand {
|
|
139
|
+
action: "list_agents";
|
|
140
|
+
scope?: string;
|
|
141
|
+
includeFederated?: boolean;
|
|
142
|
+
}
|
|
133
143
|
export interface IpcPingCommand {
|
|
134
144
|
action: "ping";
|
|
135
145
|
}
|
|
136
|
-
export type IpcCommand = IpcSendCommand | IpcEmitCommand | IpcNotifyCommand | IpcCheckInboxCommand | IpcPingCommand;
|
|
146
|
+
export type IpcCommand = IpcSendCommand | IpcEmitCommand | IpcNotifyCommand | IpcCheckInboxCommand | IpcReadThreadCommand | IpcListAgentsCommand | IpcPingCommand;
|
|
137
147
|
export interface IpcResponse {
|
|
138
148
|
ok: boolean;
|
|
139
149
|
messageId?: string;
|
|
140
150
|
messages?: Message[];
|
|
151
|
+
agents?: Array<{
|
|
152
|
+
agentId: string;
|
|
153
|
+
name?: string;
|
|
154
|
+
scope: string;
|
|
155
|
+
status: string;
|
|
156
|
+
program?: string;
|
|
157
|
+
lastActive?: string;
|
|
158
|
+
location: "local" | "federated";
|
|
159
|
+
peerId?: string;
|
|
160
|
+
}>;
|
|
161
|
+
count?: number;
|
|
162
|
+
threadTag?: string;
|
|
141
163
|
error?: string;
|
|
142
164
|
pid?: number;
|
|
143
165
|
}
|
|
@@ -157,7 +179,10 @@ export interface FederatedAddress {
|
|
|
157
179
|
}
|
|
158
180
|
export interface FederationPeerConfig {
|
|
159
181
|
systemId: string;
|
|
160
|
-
|
|
182
|
+
/** WebSocket URL for MAP SDK connections. */
|
|
183
|
+
url?: string;
|
|
184
|
+
/** Mesh peer ID for agentic-mesh transport connections. */
|
|
185
|
+
meshPeerId?: string;
|
|
161
186
|
auth?: FederationAuth;
|
|
162
187
|
exposure?: ExposurePolicy;
|
|
163
188
|
}
|
|
@@ -172,12 +197,14 @@ export interface ExposurePolicy {
|
|
|
172
197
|
scopes?: string[];
|
|
173
198
|
events?: ExposureLevel;
|
|
174
199
|
}
|
|
200
|
+
export type FederationTransport = "websocket" | "mesh";
|
|
175
201
|
export interface FederationLink {
|
|
176
202
|
peerId: string;
|
|
177
203
|
sessionId: string;
|
|
178
204
|
status: "connected" | "disconnected" | "authenticating";
|
|
179
205
|
exposure: ExposurePolicy;
|
|
180
206
|
url: string;
|
|
207
|
+
transport: FederationTransport;
|
|
181
208
|
connectedAt?: string;
|
|
182
209
|
}
|
|
183
210
|
export interface SystemId {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# claude-code-swarm Migration Proposal: Embedded MeshPeer + agent-inbox
|
|
2
|
+
|
|
3
|
+
**Author:** agent-inbox team
|
|
4
|
+
**Date:** 2026-03-16
|
|
5
|
+
**Status:** Proposal
|
|
6
|
+
**Context:** agent-inbox has completed full agentic-mesh integration (Phase 1 + Phase 2). This document proposes migrating claude-code-swarm from its custom WebSocket sidecar to the shared agent-inbox + agentic-mesh stack.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## The Problem: Per-Agent-Runtime Reimplementation
|
|
11
|
+
|
|
12
|
+
claude-code-swarm currently uses a custom WebSocket sidecar (~1500 lines) tightly coupled to Claude Code's hook system. It handles MAP connections, agent registration, and message routing. If we want to support a different agent runtime (e.g., OpenAI-based agents, AutoGen, standalone scripts), we'd have to reimplement the sidecar each time.
|
|
13
|
+
|
|
14
|
+
## The Solution: Three-Layer Architecture
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
┌────────────────────────────────────────────────┐
|
|
18
|
+
│ Agent-Specific Adapter (~200 lines) │
|
|
19
|
+
│ (Claude Code hooks, or OpenAI plugin, etc.) │
|
|
20
|
+
├────────────────────────────────────────────────┤
|
|
21
|
+
│ agent-inbox │
|
|
22
|
+
│ (inbox/outbox, threading, traceability, MCP) │
|
|
23
|
+
├────────────────────────────────────────────────┤
|
|
24
|
+
│ agentic-mesh (MeshPeer) │
|
|
25
|
+
│ (transport, encryption, MAP protocol, │
|
|
26
|
+
│ federation, discovery, CRDT sync) │
|
|
27
|
+
└────────────────────────────────────────────────┘
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**agentic-mesh is the layer every agent shares.** It handles networking, encryption, peer discovery, and MAP protocol once. agent-inbox adds structured messaging on top. The per-agent adapter is just lifecycle translation (~200 lines).
|
|
31
|
+
|
|
32
|
+
## What's Ready Today
|
|
33
|
+
|
|
34
|
+
### agent-inbox + agentic-mesh integration (complete)
|
|
35
|
+
|
|
36
|
+
| Capability | Status |
|
|
37
|
+
|-----------|--------|
|
|
38
|
+
| P2P message delivery over encrypted mesh | Working |
|
|
39
|
+
| Offline queuing (both layers) | Working |
|
|
40
|
+
| Agent discovery via MapServer registry | Working |
|
|
41
|
+
| Full MAP scoped addressing | Working |
|
|
42
|
+
| Federation with hop/loop detection | Working (FederationGateway) |
|
|
43
|
+
| `_meta` field passthrough (threading, importance, subjects) | Verified end-to-end |
|
|
44
|
+
| DeliveryHandler bridge (MAP → inbox storage) | Working |
|
|
45
|
+
| MAP ↔ Inbox type translation | Working (18 tests) |
|
|
46
|
+
| E2E with real MeshPeer instances | 13 tests passing |
|
|
47
|
+
| Total mesh-related tests | 85 tests, all passing |
|
|
48
|
+
|
|
49
|
+
### How agent-inbox consumes MeshPeer
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const inbox = await createAgentInbox({
|
|
53
|
+
meshPeer: myMeshPeer, // Embedded MeshPeer, full MAP protocol
|
|
54
|
+
enableFederation: true,
|
|
55
|
+
config: {
|
|
56
|
+
federation: {
|
|
57
|
+
peers: [
|
|
58
|
+
{ systemId: "system-b", meshPeerId: "system-b" }
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
This single call:
|
|
66
|
+
1. Registers `agent-inbox` as an agent on the MeshPeer's MapServer
|
|
67
|
+
2. Installs a `DeliveryBridge` to intercept MAP message delivery → inbox storage
|
|
68
|
+
3. Wires `FederationGateway` for cross-mesh routing with envelope wrapping and loop detection
|
|
69
|
+
4. Sets up all inbox semantics (threading, read tracking, traceability)
|
|
70
|
+
|
|
71
|
+
## Proposed Migration Path for claude-code-swarm
|
|
72
|
+
|
|
73
|
+
### Step 1: Replace the sidecar with embedded MeshPeer + agent-inbox
|
|
74
|
+
|
|
75
|
+
The current sidecar handles:
|
|
76
|
+
- MAP WebSocket connection management
|
|
77
|
+
- Agent registration on connect/disconnect
|
|
78
|
+
- Message routing between agents
|
|
79
|
+
- Hook-based lifecycle (agent spawn/done events)
|
|
80
|
+
|
|
81
|
+
All of these are now handled by MeshPeer + agent-inbox. The sidecar reduces to a thin adapter that:
|
|
82
|
+
- Creates an embedded `MeshPeer` on startup
|
|
83
|
+
- Passes it to `createAgentInbox({ meshPeer })`
|
|
84
|
+
- Translates Claude Code hook events (agent spawn/done) into agent-inbox registry calls
|
|
85
|
+
- Exposes MCP tools for agents to send/receive messages
|
|
86
|
+
|
|
87
|
+
### Step 2: Claude Code hook adapter (~200 lines)
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// Pseudocode for the thin adapter
|
|
91
|
+
import { MeshPeer } from "agentic-mesh";
|
|
92
|
+
import { createAgentInbox } from "agent-inbox";
|
|
93
|
+
|
|
94
|
+
// 1. Start embedded MeshPeer
|
|
95
|
+
const peer = MeshPeer.createEmbedded({ peerId: "swarm-leader" });
|
|
96
|
+
await peer.start();
|
|
97
|
+
|
|
98
|
+
// 2. Create agent-inbox with MeshPeer
|
|
99
|
+
const inbox = await createAgentInbox({ meshPeer: peer, enableFederation: true });
|
|
100
|
+
|
|
101
|
+
// 3. Hook adapter: translate Claude Code events → inbox
|
|
102
|
+
onAgentSpawn(({ agentId, name }) => {
|
|
103
|
+
inbox.registry.register(agentId, { name });
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
onAgentDone(({ agentId }) => {
|
|
107
|
+
inbox.registry.disconnect(agentId);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// 4. MCP tools are automatically available via inbox
|
|
111
|
+
// Agents use send_message, check_inbox, read_thread, list_agents
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 3: Multi-runtime support
|
|
115
|
+
|
|
116
|
+
With the sidecar replaced, supporting new agent runtimes is just writing a new ~200-line adapter:
|
|
117
|
+
- OpenAI agent adapter: translates OpenAI function calls → inbox MCP tools
|
|
118
|
+
- AutoGen adapter: maps AutoGen conversation patterns → inbox threading
|
|
119
|
+
- Standalone script adapter: CLI wrapper around inbox IPC
|
|
120
|
+
|
|
121
|
+
Each adapter only handles lifecycle translation. Messaging, routing, federation, and storage are all shared.
|
|
122
|
+
|
|
123
|
+
## Benefits
|
|
124
|
+
|
|
125
|
+
1. **~1300 fewer lines** in claude-code-swarm (1500 LOC sidecar → 200 LOC adapter)
|
|
126
|
+
2. **No more MAP WebSocket management** — MeshPeer handles transport
|
|
127
|
+
3. **Encrypted P2P** — Nebula/Tailscale tunnels instead of plain WebSocket
|
|
128
|
+
4. **Federation with safety** — hop counting, loop detection, message buffering
|
|
129
|
+
5. **Multi-runtime** — any agent runtime can join the mesh with a thin adapter
|
|
130
|
+
6. **Structured messaging** — threading, read tracking, importance levels, traceability
|
|
131
|
+
|
|
132
|
+
## Open Questions
|
|
133
|
+
|
|
134
|
+
1. **Migration timeline** — Can this be done incrementally (sidecar + inbox side-by-side) or does it need a clean cutover?
|
|
135
|
+
2. **Hook compatibility** — Are there Claude Code hook behaviors the adapter can't replicate?
|
|
136
|
+
3. **Performance** — Does the extra indirection (hook → adapter → inbox → MeshPeer) add unacceptable latency for real-time agent coordination?
|
|
137
|
+
4. **State migration** — Any persistent state in the current sidecar that needs migrating?
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-inbox",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Agent Inbox — message routing, traceability, and MCP tools for multi-agent systems",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,16 +37,21 @@
|
|
|
37
37
|
"ulid": "^2.3.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@multi-agent-protocol/sdk": "^0.1.4"
|
|
40
|
+
"@multi-agent-protocol/sdk": "^0.1.4",
|
|
41
|
+
"agentic-mesh": ">=0.2.0"
|
|
41
42
|
},
|
|
42
43
|
"peerDependenciesMeta": {
|
|
43
44
|
"@multi-agent-protocol/sdk": {
|
|
44
45
|
"optional": true
|
|
46
|
+
},
|
|
47
|
+
"agentic-mesh": {
|
|
48
|
+
"optional": true
|
|
45
49
|
}
|
|
46
50
|
},
|
|
47
51
|
"devDependencies": {
|
|
48
52
|
"@types/better-sqlite3": "^7.6.13",
|
|
49
53
|
"@types/node": "^22.0.0",
|
|
54
|
+
"agentic-mesh": "^0.2.0",
|
|
50
55
|
"typescript": "^5.7.0",
|
|
51
56
|
"vitest": "^3.0.0"
|
|
52
57
|
}
|