@agentvault/agentvault 0.20.41 → 0.20.42
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 +8 -0
- package/dist/channel.d.ts.map +1 -1
- package/dist/cli.js +104 -2
- package/dist/cli.js.map +3 -3
- package/dist/index.js +104 -2
- package/dist/index.js.map +3 -3
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/channel.d.ts
CHANGED
|
@@ -42,6 +42,9 @@ export declare class SecureChannel extends EventEmitter {
|
|
|
42
42
|
private _mlsGroups;
|
|
43
43
|
/** Maps conversationId -> conversation_group_id for shared 1:1 MLS groups */
|
|
44
44
|
private _sessionGroupIds;
|
|
45
|
+
/** Consecutive MLS decrypt failure count per group key for epoch recovery. */
|
|
46
|
+
private _mlsDecryptFailCounts;
|
|
47
|
+
private static readonly MAX_MLS_DECRYPT_FAILS;
|
|
45
48
|
/** Cached MLS KeyPackage bundle for this device (regenerated on each connect). */
|
|
46
49
|
private _mlsKeyPackage;
|
|
47
50
|
/** Pending KeyPackage bundle from request-Welcome flow (used by _handleMlsWelcome). */
|
|
@@ -373,6 +376,11 @@ export declare class SecureChannel extends EventEmitter {
|
|
|
373
376
|
private _bufferMlsCommit;
|
|
374
377
|
/** Apply buffered MLS commits after Welcome join. */
|
|
375
378
|
private _applyBufferedMlsCommits;
|
|
379
|
+
/**
|
|
380
|
+
* MLS epoch recovery for shared 1:1 groups.
|
|
381
|
+
* Clears local state, publishes fresh KeyPackage, and requests Welcome.
|
|
382
|
+
*/
|
|
383
|
+
private _triggerMlsEpochRecovery;
|
|
376
384
|
private _handleMlsWelcome;
|
|
377
385
|
/**
|
|
378
386
|
* Pull pending MLS messages from the delivery queue and process them.
|
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;AAU3C,OAAO,EAWL,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EAKZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,QAAQ,EAER,UAAU,EAEV,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,UAAU,EAGX,MAAM,YAAY,CAAC;AAoEpB,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
|
@@ -63720,6 +63720,9 @@ var init_channel = __esm({
|
|
|
63720
63720
|
_mlsGroups = /* @__PURE__ */ new Map();
|
|
63721
63721
|
/** Maps conversationId -> conversation_group_id for shared 1:1 MLS groups */
|
|
63722
63722
|
_sessionGroupIds = /* @__PURE__ */ new Map();
|
|
63723
|
+
/** Consecutive MLS decrypt failure count per group key for epoch recovery. */
|
|
63724
|
+
_mlsDecryptFailCounts = /* @__PURE__ */ new Map();
|
|
63725
|
+
static MAX_MLS_DECRYPT_FAILS = 3;
|
|
63723
63726
|
/** Cached MLS KeyPackage bundle for this device (regenerated on each connect). */
|
|
63724
63727
|
_mlsKeyPackage = null;
|
|
63725
63728
|
/** Pending KeyPackage bundle from request-Welcome flow (used by _handleMlsWelcome). */
|
|
@@ -66435,6 +66438,50 @@ var init_channel = __esm({
|
|
|
66435
66438
|
topicId = parsed.topicId ?? topicId;
|
|
66436
66439
|
} catch {
|
|
66437
66440
|
}
|
|
66441
|
+
if (messageType === "history_catchup_request") {
|
|
66442
|
+
try {
|
|
66443
|
+
const request = JSON.parse(plaintext);
|
|
66444
|
+
const history = this._persisted?.messageHistory ?? [];
|
|
66445
|
+
let filtered = history;
|
|
66446
|
+
if (request.since_ts) {
|
|
66447
|
+
const sinceTime = new Date(request.since_ts).getTime();
|
|
66448
|
+
filtered = history.filter((e) => new Date(e.ts).getTime() > sinceTime);
|
|
66449
|
+
}
|
|
66450
|
+
if (filtered.length > 100) filtered = filtered.slice(-100);
|
|
66451
|
+
const responsePayload = JSON.stringify({
|
|
66452
|
+
type: "history_catchup_response",
|
|
66453
|
+
target_device_id: request.requesting_device_id,
|
|
66454
|
+
messages: filtered.map((e) => ({
|
|
66455
|
+
sender: e.sender,
|
|
66456
|
+
sender_name: e.sender === "agent" ? this.config.agentName ?? "Agent" : "Owner",
|
|
66457
|
+
text: e.text,
|
|
66458
|
+
ts: e.ts
|
|
66459
|
+
})),
|
|
66460
|
+
no_history: filtered.length === 0
|
|
66461
|
+
});
|
|
66462
|
+
if (mgr && mlsGroupId) {
|
|
66463
|
+
const responseBytes = new TextEncoder().encode(responsePayload);
|
|
66464
|
+
const cipher = await mgr.encrypt(responseBytes);
|
|
66465
|
+
await saveMlsState(this.config.dataDir, mlsGroupId, JSON.stringify(mgr.exportState()));
|
|
66466
|
+
if (this._ws) {
|
|
66467
|
+
this._ws.send(JSON.stringify({
|
|
66468
|
+
event: "message_mls",
|
|
66469
|
+
data: {
|
|
66470
|
+
group_id: mlsGroupId,
|
|
66471
|
+
epoch: Number(mgr.epoch),
|
|
66472
|
+
payload: Buffer.from(cipher).toString("hex"),
|
|
66473
|
+
message_type: "history_catchup_response"
|
|
66474
|
+
}
|
|
66475
|
+
}));
|
|
66476
|
+
}
|
|
66477
|
+
console.log(`[SecureChannel] Sent 1:1 history catchup: ${filtered.length} messages to ${request.requesting_device_id?.slice(0, 8)}`);
|
|
66478
|
+
}
|
|
66479
|
+
} catch (catchupErr) {
|
|
66480
|
+
console.warn("[SecureChannel] 1:1 history catchup failed:", catchupErr);
|
|
66481
|
+
}
|
|
66482
|
+
return;
|
|
66483
|
+
}
|
|
66484
|
+
if (messageType === "history_catchup_response") return;
|
|
66438
66485
|
if (convId) {
|
|
66439
66486
|
const session = this._sessions.get(convId);
|
|
66440
66487
|
if (session && !session.activated) {
|
|
@@ -66457,7 +66504,16 @@ var init_channel = __esm({
|
|
|
66457
66504
|
this.config.onMessage(text, metadata);
|
|
66458
66505
|
}
|
|
66459
66506
|
} catch (decryptErr) {
|
|
66460
|
-
|
|
66507
|
+
const failKey = mgrKey || `unknown:${groupId}`;
|
|
66508
|
+
const count = (this._mlsDecryptFailCounts.get(failKey) ?? 0) + 1;
|
|
66509
|
+
this._mlsDecryptFailCounts.set(failKey, count);
|
|
66510
|
+
console.error(`[SecureChannel] MLS 1:1 decrypt failed (${count}/${_SecureChannel.MAX_MLS_DECRYPT_FAILS}) for ${failKey}:`, decryptErr);
|
|
66511
|
+
if (count >= _SecureChannel.MAX_MLS_DECRYPT_FAILS) {
|
|
66512
|
+
const recoveryGroupId = (convGroupId ? this._persisted?.mlsGroups?.[convGroupId]?.mlsGroupId : null) ?? this._persisted?.mlsConversations?.[convId]?.mlsGroupId ?? groupId;
|
|
66513
|
+
if (recoveryGroupId && failKey) {
|
|
66514
|
+
await this._triggerMlsEpochRecovery(failKey, recoveryGroupId);
|
|
66515
|
+
}
|
|
66516
|
+
}
|
|
66461
66517
|
}
|
|
66462
66518
|
}
|
|
66463
66519
|
async _handleIncomingMessage(msgData) {
|
|
@@ -67420,6 +67476,44 @@ ${messageText}`;
|
|
|
67420
67476
|
console.log(`[SecureChannel] Applied ${applied} buffered commits, now epoch=${mgr.epoch}`);
|
|
67421
67477
|
}
|
|
67422
67478
|
}
|
|
67479
|
+
/**
|
|
67480
|
+
* MLS epoch recovery for shared 1:1 groups.
|
|
67481
|
+
* Clears local state, publishes fresh KeyPackage, and requests Welcome.
|
|
67482
|
+
*/
|
|
67483
|
+
async _triggerMlsEpochRecovery(groupKey, mlsGroupId) {
|
|
67484
|
+
console.warn(`[SecureChannel] MLS epoch recovery for ${groupKey} (${mlsGroupId.slice(0, 8)})`);
|
|
67485
|
+
this._mlsGroups.delete(groupKey);
|
|
67486
|
+
this._mlsDecryptFailCounts.delete(groupKey);
|
|
67487
|
+
try {
|
|
67488
|
+
const { unlink: unlink2 } = await import("fs/promises");
|
|
67489
|
+
const path = `${this.config.dataDir}/.mls-state/${mlsGroupId}.json`;
|
|
67490
|
+
await unlink2(path).catch(() => {
|
|
67491
|
+
});
|
|
67492
|
+
} catch {
|
|
67493
|
+
}
|
|
67494
|
+
try {
|
|
67495
|
+
const mgr = new MLSGroupManager();
|
|
67496
|
+
const identity = new TextEncoder().encode(this._deviceId);
|
|
67497
|
+
const kp = await mgr.generateKeyPackage(identity);
|
|
67498
|
+
const kpBytes = MLSGroupManager.serializeKeyPackage(kp.publicPackage);
|
|
67499
|
+
const kpHex = Buffer.from(kpBytes).toString("hex");
|
|
67500
|
+
await fetch(`${this.config.apiUrl}/api/v1/mls/key-packages`, {
|
|
67501
|
+
method: "POST",
|
|
67502
|
+
headers: { Authorization: `Bearer ${this._deviceJwt}`, "Content-Type": "application/json" },
|
|
67503
|
+
body: JSON.stringify({ key_package: kpHex, device_id: this._deviceId })
|
|
67504
|
+
});
|
|
67505
|
+
this._pendingMlsKpBundle = kp;
|
|
67506
|
+
await savePendingKpBundle(this.config.dataDir, mlsGroupId, kp, MLSGroupManager.serializeKeyPackage);
|
|
67507
|
+
await fetch(`${this.config.apiUrl}/api/v1/mls/groups/${mlsGroupId}/request-welcome`, {
|
|
67508
|
+
method: "POST",
|
|
67509
|
+
headers: { Authorization: `Bearer ${this._deviceJwt}`, "Content-Type": "application/json" },
|
|
67510
|
+
body: JSON.stringify({ device_id: this._deviceId })
|
|
67511
|
+
});
|
|
67512
|
+
console.log(`[SecureChannel] Epoch recovery: Welcome requested for group ${mlsGroupId.slice(0, 8)}`);
|
|
67513
|
+
} catch (err) {
|
|
67514
|
+
console.error(`[SecureChannel] Epoch recovery failed for ${mlsGroupId.slice(0, 8)}:`, err);
|
|
67515
|
+
}
|
|
67516
|
+
}
|
|
67423
67517
|
async _handleMlsWelcome(data) {
|
|
67424
67518
|
const groupId = data.group_id;
|
|
67425
67519
|
const conversationId = data.conversation_id;
|
|
@@ -67635,6 +67729,14 @@ ${messageText}`;
|
|
|
67635
67729
|
} catch (err) {
|
|
67636
67730
|
console.warn(`[SecureChannel] Delivery ${msg.message_type} processing failed:`, err);
|
|
67637
67731
|
nackedIds.push(msg.queue_id);
|
|
67732
|
+
if (msg.group_id && (msg.message_type === "commit" || msg.message_type === "application")) {
|
|
67733
|
+
const failKey = msg.conversation_group_id ? `1to1-group:${msg.conversation_group_id}` : `group:${msg.group_id}`;
|
|
67734
|
+
const count = (this._mlsDecryptFailCounts.get(failKey) ?? 0) + 1;
|
|
67735
|
+
this._mlsDecryptFailCounts.set(failKey, count);
|
|
67736
|
+
if (count >= _SecureChannel.MAX_MLS_DECRYPT_FAILS) {
|
|
67737
|
+
await this._triggerMlsEpochRecovery(failKey, msg.group_id);
|
|
67738
|
+
}
|
|
67739
|
+
}
|
|
67638
67740
|
}
|
|
67639
67741
|
}
|
|
67640
67742
|
if (nackedIds.length > 0) {
|
|
@@ -89601,7 +89703,7 @@ var init_index = __esm({
|
|
|
89601
89703
|
init_skill_invoker();
|
|
89602
89704
|
await init_skill_telemetry();
|
|
89603
89705
|
await init_policy_enforcer();
|
|
89604
|
-
VERSION = true ? "0.20.
|
|
89706
|
+
VERSION = true ? "0.20.42" : "0.0.0-dev";
|
|
89605
89707
|
}
|
|
89606
89708
|
});
|
|
89607
89709
|
|