@agentvault/agentvault 0.20.31 → 0.20.32
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/cli.js +61 -3
- package/dist/cli.js.map +2 -2
- package/dist/index.js +61 -3
- package/dist/index.js.map +2 -2
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/dist/_cp.d.ts +0 -10
- package/dist/_cp.d.ts.map +0 -1
- package/dist/account-config.d.ts +0 -20
- package/dist/account-config.d.ts.map +0 -1
- package/dist/channel.d.ts +0 -418
- package/dist/channel.d.ts.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/create-agent.d.ts +0 -28
- package/dist/create-agent.d.ts.map +0 -1
- package/dist/credential-store.d.ts +0 -62
- package/dist/credential-store.d.ts.map +0 -1
- package/dist/crypto-helpers.d.ts +0 -2
- package/dist/crypto-helpers.d.ts.map +0 -1
- package/dist/doctor.d.ts +0 -41
- package/dist/doctor.d.ts.map +0 -1
- package/dist/fetch-interceptor.d.ts +0 -32
- package/dist/fetch-interceptor.d.ts.map +0 -1
- package/dist/gateway-send.d.ts +0 -98
- package/dist/gateway-send.d.ts.map +0 -1
- package/dist/http-handlers.d.ts +0 -53
- package/dist/http-handlers.d.ts.map +0 -1
- package/dist/index.d.ts +0 -27
- package/dist/index.d.ts.map +0 -1
- package/dist/mcp-handlers.d.ts +0 -26
- package/dist/mcp-handlers.d.ts.map +0 -1
- package/dist/mcp-proxy-helpers.d.ts +0 -9
- package/dist/mcp-proxy-helpers.d.ts.map +0 -1
- package/dist/mcp-server.d.ts +0 -91
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mls-state.d.ts +0 -54
- package/dist/mls-state.d.ts.map +0 -1
- package/dist/openclaw-compat.d.ts +0 -33
- package/dist/openclaw-compat.d.ts.map +0 -1
- package/dist/openclaw-entry.d.ts +0 -32
- package/dist/openclaw-entry.d.ts.map +0 -1
- package/dist/openclaw-plugin.d.ts +0 -102
- package/dist/openclaw-plugin.d.ts.map +0 -1
- package/dist/openclaw-types.d.ts +0 -186
- package/dist/openclaw-types.d.ts.map +0 -1
- package/dist/policy-enforcer.d.ts +0 -78
- package/dist/policy-enforcer.d.ts.map +0 -1
- package/dist/setup.d.ts +0 -27
- package/dist/setup.d.ts.map +0 -1
- package/dist/skill-invoker.d.ts +0 -30
- package/dist/skill-invoker.d.ts.map +0 -1
- package/dist/skill-manifest.d.ts +0 -30
- package/dist/skill-manifest.d.ts.map +0 -1
- package/dist/skill-telemetry.d.ts +0 -36
- package/dist/skill-telemetry.d.ts.map +0 -1
- package/dist/skills-publish.d.ts +0 -8
- package/dist/skills-publish.d.ts.map +0 -1
- package/dist/state.d.ts +0 -32
- package/dist/state.d.ts.map +0 -1
- package/dist/transport.d.ts +0 -24
- package/dist/transport.d.ts.map +0 -1
- package/dist/types.d.ts +0 -454
- package/dist/types.d.ts.map +0 -1
- package/dist/workspace-handlers.d.ts +0 -62
- package/dist/workspace-handlers.d.ts.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -63721,6 +63721,8 @@ var init_channel = __esm({
|
|
|
63721
63721
|
_mlsKeyPackage = null;
|
|
63722
63722
|
/** Pending KeyPackage bundle from request-Welcome flow (used by _handleMlsWelcome). */
|
|
63723
63723
|
_pendingMlsKpBundle;
|
|
63724
|
+
/** Buffer for MLS commits received before Welcome (keyed by groupId, sorted by epoch). */
|
|
63725
|
+
_pendingMlsCommits = /* @__PURE__ */ new Map();
|
|
63724
63726
|
/** In-memory credential store for renter-provided credentials (never persisted). */
|
|
63725
63727
|
_credentialStore = new CredentialStore();
|
|
63726
63728
|
/** Dedup buffer for A2A message IDs (prevents double-delivery via direct + Redis) */
|
|
@@ -67030,6 +67032,11 @@ ${messageText}`;
|
|
|
67030
67032
|
console.log(`[SecureChannel] MLS decrypt attempt room=${resolvedRoomId.slice(0, 8)} group=${groupId?.slice(0, 8)} loaded=${!!mlsGroup} init=${mlsGroup?.isInitialized} mlsGroupsKeys=[${Array.from(this._mlsGroups.keys()).join(",")}]`);
|
|
67031
67033
|
if (!mlsGroup?.isInitialized) {
|
|
67032
67034
|
console.warn(`[SecureChannel] MLS group not loaded for room ${resolvedRoomId.slice(0, 8)}, requesting Welcome`);
|
|
67035
|
+
const roomLockId = `room-kp-${groupId}`;
|
|
67036
|
+
if (!await acquireA2ASyncLock(this.config.dataDir, roomLockId)) {
|
|
67037
|
+
console.log(`[SecureChannel] Room KP publish locked for group ${groupId?.slice(0, 8)}, skipping`);
|
|
67038
|
+
return;
|
|
67039
|
+
}
|
|
67033
67040
|
try {
|
|
67034
67041
|
const { MLSGroupManager: MLS } = await init_dist().then(() => dist_exports);
|
|
67035
67042
|
const mgr = new MLS();
|
|
@@ -67042,6 +67049,7 @@ ${messageText}`;
|
|
|
67042
67049
|
body: JSON.stringify({ key_package: kpHex, device_id: this._deviceId })
|
|
67043
67050
|
});
|
|
67044
67051
|
this._pendingMlsKpBundle = kp;
|
|
67052
|
+
await savePendingKpBundle(this.config.dataDir, groupId, kp);
|
|
67045
67053
|
await fetch(`${this.config.apiUrl}/api/v1/mls/groups/${groupId}/request-welcome`, {
|
|
67046
67054
|
method: "POST",
|
|
67047
67055
|
headers: { Authorization: `Bearer ${this._deviceJwt}`, "Content-Type": "application/json" },
|
|
@@ -67050,6 +67058,8 @@ ${messageText}`;
|
|
|
67050
67058
|
console.log(`[SecureChannel] Welcome requested for room ${resolvedRoomId.slice(0, 8)} group ${groupId?.slice(0, 8)}`);
|
|
67051
67059
|
} catch (reqErr) {
|
|
67052
67060
|
console.warn(`[SecureChannel] Welcome request failed for room ${resolvedRoomId.slice(0, 8)}:`, reqErr);
|
|
67061
|
+
await releaseA2ASyncLock(this.config.dataDir, roomLockId).catch(() => {
|
|
67062
|
+
});
|
|
67053
67063
|
}
|
|
67054
67064
|
return;
|
|
67055
67065
|
}
|
|
@@ -67182,6 +67192,7 @@ ${messageText}`;
|
|
|
67182
67192
|
}
|
|
67183
67193
|
async _handleMlsCommit(data) {
|
|
67184
67194
|
const groupId = data.group_id;
|
|
67195
|
+
const epoch = typeof data.epoch === "number" ? data.epoch : 0;
|
|
67185
67196
|
for (const [roomId, room] of Object.entries(this._persisted?.rooms ?? {})) {
|
|
67186
67197
|
if (room.mlsGroupId === groupId) {
|
|
67187
67198
|
const mlsGroup = this._mlsGroups.get(roomId);
|
|
@@ -67200,6 +67211,9 @@ ${messageText}`;
|
|
|
67200
67211
|
throw err;
|
|
67201
67212
|
}
|
|
67202
67213
|
}
|
|
67214
|
+
} else {
|
|
67215
|
+
this._bufferMlsCommit(groupId, epoch, data);
|
|
67216
|
+
console.log(`[SecureChannel] Buffered MLS commit for room ${roomId.slice(0, 8)} (epoch=${epoch}, group not initialized)`);
|
|
67203
67217
|
}
|
|
67204
67218
|
return;
|
|
67205
67219
|
}
|
|
@@ -67222,11 +67236,50 @@ ${messageText}`;
|
|
|
67222
67236
|
throw err;
|
|
67223
67237
|
}
|
|
67224
67238
|
}
|
|
67239
|
+
} else {
|
|
67240
|
+
this._bufferMlsCommit(groupId, epoch, data);
|
|
67241
|
+
console.log(`[SecureChannel] Buffered MLS commit for A2A ${chId.slice(0, 8)} (epoch=${epoch}, group not initialized)`);
|
|
67225
67242
|
}
|
|
67226
67243
|
return;
|
|
67227
67244
|
}
|
|
67228
67245
|
}
|
|
67229
67246
|
}
|
|
67247
|
+
/** Buffer an MLS commit for replay after Welcome join. Max 50 per group. */
|
|
67248
|
+
_bufferMlsCommit(groupId, epoch, data) {
|
|
67249
|
+
let buf = this._pendingMlsCommits.get(groupId);
|
|
67250
|
+
if (!buf) {
|
|
67251
|
+
buf = [];
|
|
67252
|
+
this._pendingMlsCommits.set(groupId, buf);
|
|
67253
|
+
}
|
|
67254
|
+
if (!buf.some((c2) => c2.epoch === epoch)) {
|
|
67255
|
+
buf.push({ epoch, data });
|
|
67256
|
+
buf.sort((a2, b2) => a2.epoch - b2.epoch);
|
|
67257
|
+
if (buf.length > 50) buf.splice(0, buf.length - 50);
|
|
67258
|
+
}
|
|
67259
|
+
}
|
|
67260
|
+
/** Apply buffered MLS commits after Welcome join. */
|
|
67261
|
+
async _applyBufferedMlsCommits(groupId, mgr) {
|
|
67262
|
+
const buf = this._pendingMlsCommits.get(groupId);
|
|
67263
|
+
if (!buf || buf.length === 0) return;
|
|
67264
|
+
console.log(`[SecureChannel] Applying ${buf.length} buffered MLS commits for group ${groupId.slice(0, 8)}`);
|
|
67265
|
+
let applied = 0;
|
|
67266
|
+
for (const entry of buf) {
|
|
67267
|
+
if (entry.epoch <= mgr.epoch) continue;
|
|
67268
|
+
try {
|
|
67269
|
+
const commitBytes = new Uint8Array(Buffer.from(entry.data.payload, "hex"));
|
|
67270
|
+
await mgr.processCommit(commitBytes);
|
|
67271
|
+
applied++;
|
|
67272
|
+
} catch (err) {
|
|
67273
|
+
console.warn(`[SecureChannel] Buffered commit epoch=${entry.epoch} failed: ${err?.message}`);
|
|
67274
|
+
break;
|
|
67275
|
+
}
|
|
67276
|
+
}
|
|
67277
|
+
this._pendingMlsCommits.delete(groupId);
|
|
67278
|
+
if (applied > 0) {
|
|
67279
|
+
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67280
|
+
console.log(`[SecureChannel] Applied ${applied} buffered commits, now epoch=${mgr.epoch}`);
|
|
67281
|
+
}
|
|
67282
|
+
}
|
|
67230
67283
|
async _handleMlsWelcome(data) {
|
|
67231
67284
|
const groupId = data.group_id;
|
|
67232
67285
|
const conversationId = data.conversation_id;
|
|
@@ -67247,8 +67300,8 @@ ${messageText}`;
|
|
|
67247
67300
|
}
|
|
67248
67301
|
}
|
|
67249
67302
|
if (!kp) {
|
|
67250
|
-
|
|
67251
|
-
|
|
67303
|
+
console.error(`[SecureChannel] No matching KeyPackage found for Welcome \u2014 cannot join group ${groupId?.slice(0, 8)}. A fresh KP would fail because the Welcome is encrypted to the published KP's public key. The existing Welcome recovery mechanism will re-request.`);
|
|
67304
|
+
return;
|
|
67252
67305
|
}
|
|
67253
67306
|
console.log(`[SecureChannel] Welcome joinFromWelcome: group=${groupId?.slice(0, 8)} kpSource=${kpSource} welcomeLen=${welcomeBytes.length}`);
|
|
67254
67307
|
await mgr.joinFromWelcome(welcomeBytes, kp);
|
|
@@ -67256,6 +67309,7 @@ ${messageText}`;
|
|
|
67256
67309
|
const key = `conv:${conversationId}`;
|
|
67257
67310
|
this._mlsGroups.set(key, mgr);
|
|
67258
67311
|
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67312
|
+
await this._applyBufferedMlsCommits(groupId, mgr);
|
|
67259
67313
|
if (this._persisted) {
|
|
67260
67314
|
if (!this._persisted.mlsConversations) this._persisted.mlsConversations = {};
|
|
67261
67315
|
this._persisted.mlsConversations[conversationId] = { mlsGroupId: groupId };
|
|
@@ -67271,8 +67325,11 @@ ${messageText}`;
|
|
|
67271
67325
|
this._mlsGroups.set(roomId, mgr);
|
|
67272
67326
|
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67273
67327
|
await this._persistState();
|
|
67328
|
+
await this._applyBufferedMlsCommits(groupId, mgr);
|
|
67274
67329
|
console.log(`[SecureChannel] Joined MLS group for room ${roomId.slice(0, 8)} via Welcome (epoch=${mgr.epoch})`);
|
|
67275
67330
|
this._pendingMlsKpBundle = void 0;
|
|
67331
|
+
await releaseA2ASyncLock(this.config.dataDir, `room-kp-${groupId}`).catch(() => {
|
|
67332
|
+
});
|
|
67276
67333
|
return;
|
|
67277
67334
|
}
|
|
67278
67335
|
}
|
|
@@ -67283,6 +67340,7 @@ ${messageText}`;
|
|
|
67283
67340
|
this._mlsGroups.set(`a2a:${channelId}`, mgr);
|
|
67284
67341
|
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67285
67342
|
await this._persistState();
|
|
67343
|
+
await this._applyBufferedMlsCommits(groupId, mgr);
|
|
67286
67344
|
await clearPendingWelcome(this.config.dataDir, groupId).catch(() => {
|
|
67287
67345
|
});
|
|
67288
67346
|
await releaseA2ASyncLock(this.config.dataDir, channelId).catch(() => {
|
|
@@ -89065,7 +89123,7 @@ var init_index = __esm({
|
|
|
89065
89123
|
init_skill_invoker();
|
|
89066
89124
|
await init_skill_telemetry();
|
|
89067
89125
|
await init_policy_enforcer();
|
|
89068
|
-
VERSION = true ? "0.20.
|
|
89126
|
+
VERSION = true ? "0.20.32" : "0.0.0-dev";
|
|
89069
89127
|
}
|
|
89070
89128
|
});
|
|
89071
89129
|
|