@masons/agent-network 0.6.12 → 0.6.14
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/dist/connector-client.d.ts +2 -0
- package/dist/connector-client.d.ts.map +1 -1
- package/dist/connector-client.js +28 -1
- package/dist/conversation-manager.d.ts +1 -0
- package/dist/conversation-manager.d.ts.map +1 -1
- package/dist/conversation-manager.js +45 -12
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -27,6 +27,7 @@ export declare class ConnectorClient extends EventEmitter {
|
|
|
27
27
|
private registerReject;
|
|
28
28
|
private registerTimer;
|
|
29
29
|
private lastKnownSeq;
|
|
30
|
+
private highestWireSeq;
|
|
30
31
|
private readonly pendingSeqMessages;
|
|
31
32
|
private readonly seenPayloadIds;
|
|
32
33
|
private readonly seenPayloadIdOrder;
|
|
@@ -55,6 +56,7 @@ export declare class ConnectorClient extends EventEmitter {
|
|
|
55
56
|
private dispatchAddressed;
|
|
56
57
|
private handleAddressedMessage;
|
|
57
58
|
private handleDeliverySkip;
|
|
59
|
+
private adoptLedgerDeliveryCursor;
|
|
58
60
|
private adoptDeliveredFloor;
|
|
59
61
|
private acceptContiguous;
|
|
60
62
|
private drainPendingSeqMessagesFrom;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connector-client.d.ts","sourceRoot":"","sources":["../src/connector-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAEL,KAAK,qBAAqB,EAI1B,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAcxB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AA2BpB,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;gBACT,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM;CAMvD;AAID,KAAK,qBAAqB,GAAG;IAC3B,gBAAgB,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACxD,eAAe,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACtD,gBAAgB,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACxD,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAIF,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,cAAc,CAA8C;IAEpE,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,aAAa,CAA8C;IAGnE,OAAO,CAAC,YAAY,CAAqB;
|
|
1
|
+
{"version":3,"file":"connector-client.d.ts","sourceRoot":"","sources":["../src/connector-client.ts"],"names":[],"mappings":"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"}
|
package/dist/connector-client.js
CHANGED
|
@@ -36,6 +36,7 @@ export class ConnectorClient extends EventEmitter {
|
|
|
36
36
|
registerReject = null;
|
|
37
37
|
registerTimer = null;
|
|
38
38
|
lastKnownSeq;
|
|
39
|
+
highestWireSeq = 0;
|
|
39
40
|
pendingSeqMessages = new Map();
|
|
40
41
|
seenPayloadIds = new Set();
|
|
41
42
|
seenPayloadIdOrder = [];
|
|
@@ -126,6 +127,7 @@ export class ConnectorClient extends EventEmitter {
|
|
|
126
127
|
const ws = new WebSocket(this.url, { handshakeTimeout: 10_000 });
|
|
127
128
|
this.ws = ws;
|
|
128
129
|
ws.on("open", () => {
|
|
130
|
+
this.highestWireSeq = 0;
|
|
129
131
|
this.sendRegister();
|
|
130
132
|
this.startRegisterTimeout();
|
|
131
133
|
});
|
|
@@ -212,6 +214,10 @@ export class ConnectorClient extends EventEmitter {
|
|
|
212
214
|
return;
|
|
213
215
|
}
|
|
214
216
|
if (isDeliveryCursor(parsed)) {
|
|
217
|
+
if (parsed.deliveredSeq !== undefined &&
|
|
218
|
+
parsed.deliveredSeq > this.highestWireSeq) {
|
|
219
|
+
this.highestWireSeq = parsed.deliveredSeq;
|
|
220
|
+
}
|
|
215
221
|
const floor = this.lastKnownSeq ?? 0;
|
|
216
222
|
dbg("DELIVERY_CURSOR deliverySeq=%d deliveredSeq=%s local=%d", parsed.deliverySeq, parsed.deliveredSeq ?? "none", floor);
|
|
217
223
|
if (parsed.deliveredSeq !== undefined && parsed.deliveredSeq > floor) {
|
|
@@ -224,7 +230,18 @@ export class ConnectorClient extends EventEmitter {
|
|
|
224
230
|
else if (parsed.deliveredSeq !== undefined &&
|
|
225
231
|
this.lastKnownSeq !== undefined &&
|
|
226
232
|
parsed.deliveredSeq < this.lastKnownSeq) {
|
|
227
|
-
|
|
233
|
+
if (parsed.deliverySeq < this.lastKnownSeq &&
|
|
234
|
+
this.highestWireSeq <= parsed.deliverySeq) {
|
|
235
|
+
const adopted = parsed.deliveredSeq;
|
|
236
|
+
console.warn(`[agent-network] delivery cursor unattainable: local claim ${this.lastKnownSeq} exceeds the ledger's highest reserved seq ${parsed.deliverySeq}; adopting the ledger floor ${adopted}. Messages are being recovered from that point.`);
|
|
237
|
+
this.adoptLedgerDeliveryCursor(adopted);
|
|
238
|
+
if (parsed.deliverySeq > adopted) {
|
|
239
|
+
this.requestGapFill(adopted);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
this.ackDelivery(this.lastKnownSeq);
|
|
244
|
+
}
|
|
228
245
|
}
|
|
229
246
|
return;
|
|
230
247
|
}
|
|
@@ -248,6 +265,8 @@ export class ConnectorClient extends EventEmitter {
|
|
|
248
265
|
this.emit("message_received", message);
|
|
249
266
|
return;
|
|
250
267
|
}
|
|
268
|
+
if (message.seq > this.highestWireSeq)
|
|
269
|
+
this.highestWireSeq = message.seq;
|
|
251
270
|
const floor = this.lastKnownSeq ?? 0;
|
|
252
271
|
if (message.seq <= floor)
|
|
253
272
|
return;
|
|
@@ -259,6 +278,8 @@ export class ConnectorClient extends EventEmitter {
|
|
|
259
278
|
this.acceptContiguous(message);
|
|
260
279
|
}
|
|
261
280
|
handleDeliverySkip(event) {
|
|
281
|
+
if (event.seq > this.highestWireSeq)
|
|
282
|
+
this.highestWireSeq = event.seq;
|
|
262
283
|
const floor = this.lastKnownSeq ?? 0;
|
|
263
284
|
if (event.seq <= floor)
|
|
264
285
|
return;
|
|
@@ -270,6 +291,12 @@ export class ConnectorClient extends EventEmitter {
|
|
|
270
291
|
this.drainPendingSeqMessagesFrom(event.seq + 1);
|
|
271
292
|
this.ackDelivery(this.lastKnownSeq);
|
|
272
293
|
}
|
|
294
|
+
adoptLedgerDeliveryCursor(seq) {
|
|
295
|
+
this.pendingSeqMessages.clear();
|
|
296
|
+
this.seenPayloadIds.clear();
|
|
297
|
+
this.seenPayloadIdOrder.length = 0;
|
|
298
|
+
this.lastKnownSeq = seq;
|
|
299
|
+
}
|
|
273
300
|
adoptDeliveredFloor(seq) {
|
|
274
301
|
if (!Number.isInteger(seq) || seq < 0)
|
|
275
302
|
return;
|
|
@@ -40,6 +40,7 @@ export declare class ConversationManager {
|
|
|
40
40
|
endConversation(contact: string): boolean;
|
|
41
41
|
commitEndedConversations(): void;
|
|
42
42
|
resolveAddress(contact: string): string;
|
|
43
|
+
private resolveContactForSend;
|
|
43
44
|
extractHandle(address: string): string;
|
|
44
45
|
private ensureConversationEntry;
|
|
45
46
|
_resetForTesting(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../src/conversation-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AAa7E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC;IAchC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC;CACjC;AAuBD,MAAM,WAAW,eAAe;IAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,eAAO,MAAM,4BAA4B,QAAc,CAAC;AA4BxD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;gBAE1D,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM;IAuBpD,IAAI,CACR,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../src/conversation-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,uBAAuB,CAAC;AAa7E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC;IAchC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,GAAG,QAAQ,CAAC;CACjC;AAuBD,MAAM,WAAW,eAAe;IAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,eAAO,MAAM,4BAA4B,QAAc,CAAC;AA4BxD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;gBAE1D,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM;IAuBpD,IAAI,CACR,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC;IA8GtB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAYvD,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,GAC5C,IAAI;IAmBP,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAkBxD,iBAAiB,IAAI,mBAAmB,EAAE;IAwB1C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAiBzC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAoCzC,wBAAwB,IAAI,IAAI;IAsChC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAoBvC,OAAO,CAAC,qBAAqB;IA+C7B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQtC,OAAO,CAAC,uBAAuB;IA0B/B,gBAAgB,IAAI,IAAI;CAGzB"}
|
|
@@ -27,7 +27,17 @@ export class ConversationManager {
|
|
|
27
27
|
this.mstpAuthority = mstpAuthority;
|
|
28
28
|
}
|
|
29
29
|
async send(contact, content, metadata) {
|
|
30
|
-
const
|
|
30
|
+
const resolution = this.resolveContactForSend(contact);
|
|
31
|
+
if (resolution.ambiguous) {
|
|
32
|
+
const message = `'${contact}' matches more than one of your connections. Use the full address from masons_list_connections instead of the bare handle.`;
|
|
33
|
+
dbg("send refused: ambiguous contact=%s", contact);
|
|
34
|
+
return {
|
|
35
|
+
status: "failed",
|
|
36
|
+
error: message,
|
|
37
|
+
errorCode: "AMBIGUOUS_CONTACT",
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const address = resolution.address;
|
|
31
41
|
let wireMetadata;
|
|
32
42
|
let sendTraceId;
|
|
33
43
|
let envelope = metadata === undefined
|
|
@@ -116,7 +126,12 @@ export class ConversationManager {
|
|
|
116
126
|
return this.conversations.has(address);
|
|
117
127
|
}
|
|
118
128
|
endConversation(contact) {
|
|
119
|
-
const
|
|
129
|
+
const resolution = this.resolveContactForSend(contact);
|
|
130
|
+
if (resolution.ambiguous) {
|
|
131
|
+
dbg("endConversation refused: ambiguous contact=%s", contact);
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
const address = resolution.address;
|
|
120
135
|
const entry = this.conversations.get(address);
|
|
121
136
|
if (entry && !entry.ended) {
|
|
122
137
|
entry.ended = true;
|
|
@@ -139,21 +154,39 @@ export class ConversationManager {
|
|
|
139
154
|
}
|
|
140
155
|
}
|
|
141
156
|
resolveAddress(contact) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (contact.startsWith("
|
|
146
|
-
|
|
157
|
+
return this.resolveContactForSend(contact).address;
|
|
158
|
+
}
|
|
159
|
+
resolveContactForSend(contact) {
|
|
160
|
+
if (contact.startsWith("mstps://") ||
|
|
161
|
+
contact.startsWith("mstp://") ||
|
|
162
|
+
contact.startsWith("passport:")) {
|
|
163
|
+
return { address: contact, ambiguous: false };
|
|
147
164
|
}
|
|
148
165
|
const normalizedContact = normalizeHandleContact(contact);
|
|
149
166
|
if (this.conversations.has(normalizedContact)) {
|
|
150
|
-
return normalizedContact;
|
|
167
|
+
return { address: normalizedContact, ambiguous: false };
|
|
151
168
|
}
|
|
169
|
+
let first;
|
|
170
|
+
let ambiguous = false;
|
|
152
171
|
for (const [addr, entry] of this.conversations) {
|
|
153
|
-
if (entry.contact
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
172
|
+
if (entry.contact !== normalizedContact &&
|
|
173
|
+
extractHandleFromAddress(addr).toLowerCase() !==
|
|
174
|
+
normalizedContact.toLowerCase()) {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
if (first === undefined) {
|
|
178
|
+
first = addr;
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
ambiguous = true;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
if (first !== undefined)
|
|
185
|
+
return { address: first, ambiguous };
|
|
186
|
+
return {
|
|
187
|
+
address: `mstps://${this.mstpAuthority}/${normalizedContact}`,
|
|
188
|
+
ambiguous: false,
|
|
189
|
+
};
|
|
157
190
|
}
|
|
158
191
|
extractHandle(address) {
|
|
159
192
|
return extractHandleFromAddress(address);
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PLUGIN_VERSION = "0.6.
|
|
1
|
+
export declare const PLUGIN_VERSION = "0.6.14";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PLUGIN_VERSION = "0.6.
|
|
1
|
+
export const PLUGIN_VERSION = "0.6.14";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masons/agent-network",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.14",
|
|
4
4
|
"description": "MASONS Agent Network — OpenClaw channel plugin for connecting agent runtimes to the Agent Network over MSTP.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "MASONS.ai <hello@masons.ai> (https://masons.ai)",
|