@masons/agent-network 0.4.6 → 0.4.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAc9D,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,oBAAoB,CAAC,CAAC;IAC9B,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;IACvD,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IACpE,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACjE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CAC/D;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,OAAO,CAAC;CACb;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,sBAAsB;IAC9B,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACzE;AAED,UAAU,qBAAqB,CAAC,CAAC,GAAG,OAAO;IACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAsDD,UAAU,qBAAqB,CAAC,CAAC,GAAG,OAAO;IACzC,YAAY,CAAC,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,WAAW,CAAC,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,UAAU,yBAAyB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,mBAAmB,CAAC;IAClC,MAAM,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAClD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;CACrD;AAqDD,eAAO,MAAM,mBAAmB,EAAE,yBAwWjC,CAAC"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAc9D,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,oBAAoB,CAAC,CAAC;IAC9B,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;IACvD,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IACpE,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACjE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CAC/D;AAED,UAAU,sBAAsB;IAC9B,EAAE,EAAE,OAAO,CAAC;CACb;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,sBAAsB;IAC9B,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACzE;AAED,UAAU,qBAAqB,CAAC,CAAC,GAAG,OAAO;IACzC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAsDD,UAAU,qBAAqB,CAAC,CAAC,GAAG,OAAO;IACzC,YAAY,CAAC,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,WAAW,CAAC,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,UAAU,yBAAyB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,mBAAmB,CAAC;IAClC,MAAM,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAClD,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;CACrD;AAkED,eAAO,MAAM,mBAAmB,EAAE,yBAkXjC,CAAC"}
package/dist/channel.js CHANGED
@@ -10,21 +10,32 @@ const dbg = createDebug("agent-network:channel");
10
10
  // not per-message metadata. See the message_received handler for details.
11
11
  // See: docs/openclaw/research/session-identity-mapping.md §5
12
12
  /**
13
- * Extract a human-readable name from the remote Agent's MSTP address.
13
+ * Extract a human-readable name from the sender's metadata.
14
14
  *
15
- * `metadata.from` contains the address (e.g. `mstps://preview.masons.ai/alice`)
16
- * when the remote Agent connects through a Connector. Falls back to
17
- * "Unknown Agent" for direct MSTP clients without address metadata.
15
+ * Resolution order (account-level identity first, then address):
16
+ * 1. `metadata.visitor_name` display name for Passport browser visitors
17
+ * (resolved by Connector from user_info.displayName)
18
+ * 2. `metadata.from` — MSTP address for agent-to-agent connections
19
+ * (e.g. `mstps://preview.masons.ai/alice` → "alice")
20
+ * 3. Fallback: "Unknown" for direct MSTP clients without metadata
21
+ *
22
+ * Design: Channel determines routing, Account determines identity.
23
+ * See: interop-routing-system-design.md §3 "Channel vs Account".
18
24
  */
19
25
  function deriveSenderName(event) {
26
+ // Account-level identity: Passport visitor with resolved display name
27
+ const visitorName = event.metadata?.visitor_name;
28
+ if (visitorName && typeof visitorName === "string") {
29
+ return visitorName;
30
+ }
31
+ // MSTP address: extract handle from agent address
20
32
  const from = event.metadata?.from;
21
- if (!from || typeof from !== "string") {
22
- return "Unknown Agent";
33
+ if (from && typeof from === "string") {
34
+ const trimmed = from.replace(/\/+$/, "");
35
+ const parts = trimmed.split("/");
36
+ return parts[parts.length - 1] || from;
23
37
  }
24
- // Extract handle from MSTP address: mstps://preview.masons.ai/alice → alice
25
- const trimmed = from.replace(/\/+$/, "");
26
- const parts = trimmed.split("/");
27
- return parts[parts.length - 1] || from;
38
+ return "Unknown";
28
39
  }
29
40
  /**
30
41
  * Extract the Connector host from a connectorUrl.
@@ -159,13 +170,20 @@ export const agentNetworkChannel = {
159
170
  // senderId for OpenClaw routing: use MSTP address if available,
160
171
  // fall back to sessionId for unknown sessions / direct MSTP clients.
161
172
  const senderId = isRealAddress ? senderAddress : event.sessionId;
162
- // Derive sender name from the MSTP address, or "Unknown Agent" for fallback.
173
+ // Derive sender name.
174
+ // - MSTP agents: extract handle from address.
175
+ // - Passport visitors / direct clients: use the contact name stored
176
+ // in ConversationManager at session_created time (which read
177
+ // visitor_name from session metadata). Per-message metadata does
178
+ // NOT carry session-level fields like visitor_name, so we must
179
+ // use the stored value. Falls back to deriveSenderName → "Unknown".
163
180
  const senderName = isRealAddress
164
181
  ? deriveSenderName({
165
182
  ...event,
166
183
  metadata: { ...event.metadata, from: senderAddress },
167
184
  })
168
- : deriveSenderName(event);
185
+ : (conversationManager.getContactBySessionId(event.sessionId) ??
186
+ deriveSenderName(event));
169
187
  try {
170
188
  // Step 1 — Resolve agent route (await defensively — may be sync or async)
171
189
  const route = await runtime.channel.routing.resolveAgentRoute({
@@ -242,8 +260,11 @@ export const agentNetworkChannel = {
242
260
  conversationManager.registerInbound(event.sessionId, contact, remoteAddress);
243
261
  }
244
262
  else {
245
- // No address metadata register with sessionId as fallback
246
- conversationManager.registerInbound(event.sessionId, event.sessionId, event.sessionId);
263
+ // No MSTP address — Passport visitor or direct MSTP client.
264
+ // Use visitor_name from session metadata (account-level identity
265
+ // resolved by Connector) if available, else sessionId fallback.
266
+ const contact = deriveSenderName(event);
267
+ conversationManager.registerInbound(event.sessionId, contact, event.sessionId);
247
268
  }
248
269
  }
249
270
  // Outbound sessions are handled by SessionLifecycle internally
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** Plugin version — must match package.json. Validated by prepublishOnly. */
2
- export declare const PLUGIN_VERSION = "0.4.6";
2
+ export declare const PLUGIN_VERSION = "0.4.7";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /** Plugin version — must match package.json. Validated by prepublishOnly. */
2
- export const PLUGIN_VERSION = "0.4.6";
2
+ export const PLUGIN_VERSION = "0.4.7";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masons/agent-network",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "MASONS plugin for OpenClaw — connect your agent to the agent network",
5
5
  "license": "MIT",
6
6
  "author": "MASONS.ai <hello@masons.ai> (https://masons.ai)",