@agentvault/agentvault 0.9.4 → 0.9.5
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/channel.d.ts +2 -0
- package/dist/channel.d.ts.map +1 -1
- package/dist/cli.js +67 -22
- package/dist/cli.js.map +2 -2
- package/dist/index.js +67 -22
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/channel.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export declare class SecureChannel extends EventEmitter {
|
|
|
27
27
|
private _lastWakeTick;
|
|
28
28
|
private _pendingPollTimer;
|
|
29
29
|
private _syncMessageIds;
|
|
30
|
+
/** Recently handled message IDs via WS — survives reconnects so sync skips them. Max 500. */
|
|
31
|
+
private _recentlyHandledIds;
|
|
30
32
|
/** Queued A2A messages for responder channels not yet activated (no first initiator message received). */
|
|
31
33
|
private _a2aPendingQueue;
|
|
32
34
|
private _scanEngine;
|
package/dist/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAqB3C,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EAMZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,QAAQ,EAER,UAAU,EAEX,MAAM,YAAY,CAAC;AAoDpB,qBAAa,aAAc,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -45393,6 +45393,8 @@ var init_channel = __esm({
|
|
|
45393
45393
|
_lastWakeTick = Date.now();
|
|
45394
45394
|
_pendingPollTimer = null;
|
|
45395
45395
|
_syncMessageIds = null;
|
|
45396
|
+
/** Recently handled message IDs via WS — survives reconnects so sync skips them. Max 500. */
|
|
45397
|
+
_recentlyHandledIds = /* @__PURE__ */ new Set();
|
|
45396
45398
|
/** Queued A2A messages for responder channels not yet activated (no first initiator message received). */
|
|
45397
45399
|
_a2aPendingQueue = {};
|
|
45398
45400
|
_scanEngine = null;
|
|
@@ -46506,7 +46508,9 @@ var init_channel = __esm({
|
|
|
46506
46508
|
};
|
|
46507
46509
|
process.on("unhandledRejection", _onUnhandledRejection);
|
|
46508
46510
|
process.on("uncaughtException", _onUncaughtException);
|
|
46509
|
-
ws.on("close", () => {
|
|
46511
|
+
ws.on("close", (code, reason) => {
|
|
46512
|
+
const reasonStr = reason?.toString() || "";
|
|
46513
|
+
console.log(`[SecureChannel] WS CLOSED: code=${code} reason=${JSON.stringify(reasonStr)}`);
|
|
46510
46514
|
process.removeListener("unhandledRejection", _onUnhandledRejection);
|
|
46511
46515
|
process.removeListener("uncaughtException", _onUncaughtException);
|
|
46512
46516
|
});
|
|
@@ -46529,8 +46533,10 @@ var init_channel = __esm({
|
|
|
46529
46533
|
return;
|
|
46530
46534
|
}
|
|
46531
46535
|
if (data.event === "message") {
|
|
46536
|
+
console.log(`[SecureChannel] \u2190 Direct message received: msg=${data.data?.message_id?.slice(0, 8) ?? "?"} conv=${data.data?.conversation_id?.slice(0, 8) ?? "?"}`);
|
|
46532
46537
|
try {
|
|
46533
46538
|
await this._handleIncomingMessage(data.data);
|
|
46539
|
+
console.log(`[SecureChannel] \u2190 Direct message processed OK: msg=${data.data?.message_id?.slice(0, 8) ?? "?"}`);
|
|
46534
46540
|
} catch (msgErr) {
|
|
46535
46541
|
console.error(
|
|
46536
46542
|
`[SecureChannel] Message handler failed for conv ${data.data?.conversation_id?.slice(0, 8) ?? "?"}...:`,
|
|
@@ -46862,7 +46868,9 @@ var init_channel = __esm({
|
|
|
46862
46868
|
this.emit("error", err);
|
|
46863
46869
|
}
|
|
46864
46870
|
});
|
|
46865
|
-
ws.on("close", () => {
|
|
46871
|
+
ws.on("close", (code, reason) => {
|
|
46872
|
+
const reasonStr = reason?.toString() || "";
|
|
46873
|
+
console.log(`[SecureChannel] WS close handler: code=${code} reason=${JSON.stringify(reasonStr)}`);
|
|
46866
46874
|
this._stopPing();
|
|
46867
46875
|
this._stopWakeDetector();
|
|
46868
46876
|
this._stopPendingPoll();
|
|
@@ -46884,6 +46892,11 @@ var init_channel = __esm({
|
|
|
46884
46892
|
if (this._syncMessageIds?.has(msgData.message_id)) {
|
|
46885
46893
|
return;
|
|
46886
46894
|
}
|
|
46895
|
+
this._recentlyHandledIds.add(msgData.message_id);
|
|
46896
|
+
if (this._recentlyHandledIds.size > 500) {
|
|
46897
|
+
const all = [...this._recentlyHandledIds];
|
|
46898
|
+
this._recentlyHandledIds = new Set(all.slice(all.length - 400));
|
|
46899
|
+
}
|
|
46887
46900
|
const convId = msgData.conversation_id;
|
|
46888
46901
|
const session = this._sessions.get(convId);
|
|
46889
46902
|
if (!session) {
|
|
@@ -46896,7 +46909,14 @@ var init_channel = __esm({
|
|
|
46896
46909
|
header_blob: msgData.header_blob,
|
|
46897
46910
|
ciphertext: msgData.ciphertext
|
|
46898
46911
|
});
|
|
46899
|
-
|
|
46912
|
+
let plaintext;
|
|
46913
|
+
try {
|
|
46914
|
+
plaintext = session.ratchet.decrypt(encrypted);
|
|
46915
|
+
} catch (decryptErr) {
|
|
46916
|
+
console.error(`[SecureChannel] Direct message decrypt FAILED for conv ${convId.slice(0, 8)}...: ${String(decryptErr)}`);
|
|
46917
|
+
throw decryptErr;
|
|
46918
|
+
}
|
|
46919
|
+
console.log(`[SecureChannel] Direct message decrypted OK for conv ${convId.slice(0, 8)}...`);
|
|
46900
46920
|
this._sendAck(msgData.message_id);
|
|
46901
46921
|
if (!session.activated) {
|
|
46902
46922
|
session.activated = true;
|
|
@@ -46989,7 +47009,13 @@ ${messageText}`;
|
|
|
46989
47009
|
Promise.resolve(this.config.onMessage?.(emitText, metadata)).catch((err) => {
|
|
46990
47010
|
console.error("[SecureChannel] onMessage callback error:", err);
|
|
46991
47011
|
});
|
|
46992
|
-
|
|
47012
|
+
console.log(`[SecureChannel] Relaying sync to ${this._sessions.size - 1} siblings for conv ${convId.slice(0, 8)}...`);
|
|
47013
|
+
try {
|
|
47014
|
+
await this._relaySyncToSiblings(convId, session.ownerDeviceId, messageText, topicId);
|
|
47015
|
+
console.log(`[SecureChannel] Sync relay complete for conv ${convId.slice(0, 8)}...`);
|
|
47016
|
+
} catch (relayErr) {
|
|
47017
|
+
console.error(`[SecureChannel] Sync relay FAILED: ${String(relayErr)}`);
|
|
47018
|
+
}
|
|
46993
47019
|
}
|
|
46994
47020
|
if (this._persisted) {
|
|
46995
47021
|
this._persisted.lastMessageTimestamp = msgData.created_at;
|
|
@@ -47114,22 +47140,29 @@ ${messageText}`;
|
|
|
47114
47140
|
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
47115
47141
|
topicId
|
|
47116
47142
|
});
|
|
47143
|
+
let relayed = 0;
|
|
47117
47144
|
for (const [siblingConvId, siblingSession] of this._sessions) {
|
|
47118
47145
|
if (siblingConvId === sourceConvId) continue;
|
|
47119
47146
|
if (!siblingSession.activated) continue;
|
|
47120
|
-
|
|
47121
|
-
|
|
47122
|
-
|
|
47123
|
-
|
|
47124
|
-
|
|
47125
|
-
|
|
47126
|
-
|
|
47127
|
-
|
|
47128
|
-
|
|
47129
|
-
|
|
47130
|
-
|
|
47131
|
-
|
|
47147
|
+
try {
|
|
47148
|
+
const syncEncrypted = siblingSession.ratchet.encrypt(syncPayload);
|
|
47149
|
+
const syncTransport = encryptedMessageToTransport(syncEncrypted);
|
|
47150
|
+
this._ws.send(
|
|
47151
|
+
JSON.stringify({
|
|
47152
|
+
event: "message",
|
|
47153
|
+
data: {
|
|
47154
|
+
conversation_id: siblingConvId,
|
|
47155
|
+
header_blob: syncTransport.header_blob,
|
|
47156
|
+
ciphertext: syncTransport.ciphertext
|
|
47157
|
+
}
|
|
47158
|
+
})
|
|
47159
|
+
);
|
|
47160
|
+
relayed++;
|
|
47161
|
+
} catch (err) {
|
|
47162
|
+
console.error(`[SecureChannel] Sync send failed for sibling ${siblingConvId.slice(0, 8)}...: ${String(err)}`);
|
|
47163
|
+
}
|
|
47132
47164
|
}
|
|
47165
|
+
console.log(`[SecureChannel] _relaySyncToSiblings: relayed to ${relayed}/${this._sessions.size - 1} siblings`);
|
|
47133
47166
|
}
|
|
47134
47167
|
/**
|
|
47135
47168
|
* Send stored message history to a newly-activated session.
|
|
@@ -47366,6 +47399,7 @@ ${messageText}`;
|
|
|
47366
47399
|
const PAGE_SIZE = 200;
|
|
47367
47400
|
let since = this._persisted.lastMessageTimestamp;
|
|
47368
47401
|
let totalProcessed = 0;
|
|
47402
|
+
let totalSkipped = 0;
|
|
47369
47403
|
try {
|
|
47370
47404
|
for (let page = 0; page < MAX_PAGES; page++) {
|
|
47371
47405
|
const url = `${this.config.apiUrl}/api/v1/devices/${this._deviceId}/messages?since=${encodeURIComponent(since)}&limit=${PAGE_SIZE}`;
|
|
@@ -47375,15 +47409,24 @@ ${messageText}`;
|
|
|
47375
47409
|
if (!res.ok) break;
|
|
47376
47410
|
const messages = await res.json();
|
|
47377
47411
|
if (messages.length === 0) break;
|
|
47412
|
+
console.log(`[SecureChannel] Sync page ${page}: ${messages.length} messages since ${since}`);
|
|
47378
47413
|
for (const msg of messages) {
|
|
47379
47414
|
if (msg.sender_device_id === this._deviceId) continue;
|
|
47380
47415
|
if (this._syncMessageIds.has(msg.id)) continue;
|
|
47381
47416
|
this._syncMessageIds.add(msg.id);
|
|
47417
|
+
if (this._recentlyHandledIds.has(msg.id)) {
|
|
47418
|
+
this._persisted.lastMessageTimestamp = msg.created_at;
|
|
47419
|
+
since = msg.created_at;
|
|
47420
|
+
totalSkipped++;
|
|
47421
|
+
continue;
|
|
47422
|
+
}
|
|
47382
47423
|
const session = this._sessions.get(msg.conversation_id);
|
|
47383
47424
|
if (!session) {
|
|
47384
47425
|
console.warn(
|
|
47385
47426
|
`[SecureChannel] No session for conversation ${msg.conversation_id} during sync, skipping`
|
|
47386
47427
|
);
|
|
47428
|
+
this._persisted.lastMessageTimestamp = msg.created_at;
|
|
47429
|
+
since = msg.created_at;
|
|
47387
47430
|
continue;
|
|
47388
47431
|
}
|
|
47389
47432
|
try {
|
|
@@ -47417,9 +47460,6 @@ ${messageText}`;
|
|
|
47417
47460
|
topicId
|
|
47418
47461
|
};
|
|
47419
47462
|
this.emit("message", messageText, metadata);
|
|
47420
|
-
Promise.resolve(this.config.onMessage?.(messageText, metadata)).catch((err) => {
|
|
47421
|
-
console.error("[SecureChannel] onMessage callback error:", err);
|
|
47422
|
-
});
|
|
47423
47463
|
}
|
|
47424
47464
|
this._persisted.lastMessageTimestamp = msg.created_at;
|
|
47425
47465
|
since = msg.created_at;
|
|
@@ -47436,10 +47476,15 @@ ${messageText}`;
|
|
|
47436
47476
|
await this._persistState();
|
|
47437
47477
|
if (messages.length < PAGE_SIZE) break;
|
|
47438
47478
|
}
|
|
47439
|
-
if (totalProcessed > 0) {
|
|
47440
|
-
console.log(`[SecureChannel]
|
|
47479
|
+
if (totalProcessed > 0 || totalSkipped > 0) {
|
|
47480
|
+
console.log(`[SecureChannel] Sync complete: ${totalProcessed} processed, ${totalSkipped} skipped (already handled via WS)`);
|
|
47481
|
+
}
|
|
47482
|
+
} catch (outerErr) {
|
|
47483
|
+
console.warn(`[SecureChannel] Sync interrupted: ${String(outerErr)}`);
|
|
47484
|
+
try {
|
|
47485
|
+
await this._persistState();
|
|
47486
|
+
} catch {
|
|
47441
47487
|
}
|
|
47442
|
-
} catch {
|
|
47443
47488
|
}
|
|
47444
47489
|
this._syncMessageIds = null;
|
|
47445
47490
|
}
|