@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/index.js
CHANGED
|
@@ -63720,6 +63720,8 @@ var init_channel = __esm({
|
|
|
63720
63720
|
_mlsKeyPackage = null;
|
|
63721
63721
|
/** Pending KeyPackage bundle from request-Welcome flow (used by _handleMlsWelcome). */
|
|
63722
63722
|
_pendingMlsKpBundle;
|
|
63723
|
+
/** Buffer for MLS commits received before Welcome (keyed by groupId, sorted by epoch). */
|
|
63724
|
+
_pendingMlsCommits = /* @__PURE__ */ new Map();
|
|
63723
63725
|
/** In-memory credential store for renter-provided credentials (never persisted). */
|
|
63724
63726
|
_credentialStore = new CredentialStore();
|
|
63725
63727
|
/** Dedup buffer for A2A message IDs (prevents double-delivery via direct + Redis) */
|
|
@@ -67029,6 +67031,11 @@ ${messageText}`;
|
|
|
67029
67031
|
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(",")}]`);
|
|
67030
67032
|
if (!mlsGroup?.isInitialized) {
|
|
67031
67033
|
console.warn(`[SecureChannel] MLS group not loaded for room ${resolvedRoomId.slice(0, 8)}, requesting Welcome`);
|
|
67034
|
+
const roomLockId = `room-kp-${groupId}`;
|
|
67035
|
+
if (!await acquireA2ASyncLock(this.config.dataDir, roomLockId)) {
|
|
67036
|
+
console.log(`[SecureChannel] Room KP publish locked for group ${groupId?.slice(0, 8)}, skipping`);
|
|
67037
|
+
return;
|
|
67038
|
+
}
|
|
67032
67039
|
try {
|
|
67033
67040
|
const { MLSGroupManager: MLS } = await init_dist().then(() => dist_exports);
|
|
67034
67041
|
const mgr = new MLS();
|
|
@@ -67041,6 +67048,7 @@ ${messageText}`;
|
|
|
67041
67048
|
body: JSON.stringify({ key_package: kpHex, device_id: this._deviceId })
|
|
67042
67049
|
});
|
|
67043
67050
|
this._pendingMlsKpBundle = kp;
|
|
67051
|
+
await savePendingKpBundle(this.config.dataDir, groupId, kp);
|
|
67044
67052
|
await fetch(`${this.config.apiUrl}/api/v1/mls/groups/${groupId}/request-welcome`, {
|
|
67045
67053
|
method: "POST",
|
|
67046
67054
|
headers: { Authorization: `Bearer ${this._deviceJwt}`, "Content-Type": "application/json" },
|
|
@@ -67049,6 +67057,8 @@ ${messageText}`;
|
|
|
67049
67057
|
console.log(`[SecureChannel] Welcome requested for room ${resolvedRoomId.slice(0, 8)} group ${groupId?.slice(0, 8)}`);
|
|
67050
67058
|
} catch (reqErr) {
|
|
67051
67059
|
console.warn(`[SecureChannel] Welcome request failed for room ${resolvedRoomId.slice(0, 8)}:`, reqErr);
|
|
67060
|
+
await releaseA2ASyncLock(this.config.dataDir, roomLockId).catch(() => {
|
|
67061
|
+
});
|
|
67052
67062
|
}
|
|
67053
67063
|
return;
|
|
67054
67064
|
}
|
|
@@ -67181,6 +67191,7 @@ ${messageText}`;
|
|
|
67181
67191
|
}
|
|
67182
67192
|
async _handleMlsCommit(data) {
|
|
67183
67193
|
const groupId = data.group_id;
|
|
67194
|
+
const epoch = typeof data.epoch === "number" ? data.epoch : 0;
|
|
67184
67195
|
for (const [roomId, room] of Object.entries(this._persisted?.rooms ?? {})) {
|
|
67185
67196
|
if (room.mlsGroupId === groupId) {
|
|
67186
67197
|
const mlsGroup = this._mlsGroups.get(roomId);
|
|
@@ -67199,6 +67210,9 @@ ${messageText}`;
|
|
|
67199
67210
|
throw err;
|
|
67200
67211
|
}
|
|
67201
67212
|
}
|
|
67213
|
+
} else {
|
|
67214
|
+
this._bufferMlsCommit(groupId, epoch, data);
|
|
67215
|
+
console.log(`[SecureChannel] Buffered MLS commit for room ${roomId.slice(0, 8)} (epoch=${epoch}, group not initialized)`);
|
|
67202
67216
|
}
|
|
67203
67217
|
return;
|
|
67204
67218
|
}
|
|
@@ -67221,11 +67235,50 @@ ${messageText}`;
|
|
|
67221
67235
|
throw err;
|
|
67222
67236
|
}
|
|
67223
67237
|
}
|
|
67238
|
+
} else {
|
|
67239
|
+
this._bufferMlsCommit(groupId, epoch, data);
|
|
67240
|
+
console.log(`[SecureChannel] Buffered MLS commit for A2A ${chId.slice(0, 8)} (epoch=${epoch}, group not initialized)`);
|
|
67224
67241
|
}
|
|
67225
67242
|
return;
|
|
67226
67243
|
}
|
|
67227
67244
|
}
|
|
67228
67245
|
}
|
|
67246
|
+
/** Buffer an MLS commit for replay after Welcome join. Max 50 per group. */
|
|
67247
|
+
_bufferMlsCommit(groupId, epoch, data) {
|
|
67248
|
+
let buf = this._pendingMlsCommits.get(groupId);
|
|
67249
|
+
if (!buf) {
|
|
67250
|
+
buf = [];
|
|
67251
|
+
this._pendingMlsCommits.set(groupId, buf);
|
|
67252
|
+
}
|
|
67253
|
+
if (!buf.some((c2) => c2.epoch === epoch)) {
|
|
67254
|
+
buf.push({ epoch, data });
|
|
67255
|
+
buf.sort((a2, b2) => a2.epoch - b2.epoch);
|
|
67256
|
+
if (buf.length > 50) buf.splice(0, buf.length - 50);
|
|
67257
|
+
}
|
|
67258
|
+
}
|
|
67259
|
+
/** Apply buffered MLS commits after Welcome join. */
|
|
67260
|
+
async _applyBufferedMlsCommits(groupId, mgr) {
|
|
67261
|
+
const buf = this._pendingMlsCommits.get(groupId);
|
|
67262
|
+
if (!buf || buf.length === 0) return;
|
|
67263
|
+
console.log(`[SecureChannel] Applying ${buf.length} buffered MLS commits for group ${groupId.slice(0, 8)}`);
|
|
67264
|
+
let applied = 0;
|
|
67265
|
+
for (const entry of buf) {
|
|
67266
|
+
if (entry.epoch <= mgr.epoch) continue;
|
|
67267
|
+
try {
|
|
67268
|
+
const commitBytes = new Uint8Array(Buffer.from(entry.data.payload, "hex"));
|
|
67269
|
+
await mgr.processCommit(commitBytes);
|
|
67270
|
+
applied++;
|
|
67271
|
+
} catch (err) {
|
|
67272
|
+
console.warn(`[SecureChannel] Buffered commit epoch=${entry.epoch} failed: ${err?.message}`);
|
|
67273
|
+
break;
|
|
67274
|
+
}
|
|
67275
|
+
}
|
|
67276
|
+
this._pendingMlsCommits.delete(groupId);
|
|
67277
|
+
if (applied > 0) {
|
|
67278
|
+
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67279
|
+
console.log(`[SecureChannel] Applied ${applied} buffered commits, now epoch=${mgr.epoch}`);
|
|
67280
|
+
}
|
|
67281
|
+
}
|
|
67229
67282
|
async _handleMlsWelcome(data) {
|
|
67230
67283
|
const groupId = data.group_id;
|
|
67231
67284
|
const conversationId = data.conversation_id;
|
|
@@ -67246,8 +67299,8 @@ ${messageText}`;
|
|
|
67246
67299
|
}
|
|
67247
67300
|
}
|
|
67248
67301
|
if (!kp) {
|
|
67249
|
-
|
|
67250
|
-
|
|
67302
|
+
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.`);
|
|
67303
|
+
return;
|
|
67251
67304
|
}
|
|
67252
67305
|
console.log(`[SecureChannel] Welcome joinFromWelcome: group=${groupId?.slice(0, 8)} kpSource=${kpSource} welcomeLen=${welcomeBytes.length}`);
|
|
67253
67306
|
await mgr.joinFromWelcome(welcomeBytes, kp);
|
|
@@ -67255,6 +67308,7 @@ ${messageText}`;
|
|
|
67255
67308
|
const key = `conv:${conversationId}`;
|
|
67256
67309
|
this._mlsGroups.set(key, mgr);
|
|
67257
67310
|
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67311
|
+
await this._applyBufferedMlsCommits(groupId, mgr);
|
|
67258
67312
|
if (this._persisted) {
|
|
67259
67313
|
if (!this._persisted.mlsConversations) this._persisted.mlsConversations = {};
|
|
67260
67314
|
this._persisted.mlsConversations[conversationId] = { mlsGroupId: groupId };
|
|
@@ -67270,8 +67324,11 @@ ${messageText}`;
|
|
|
67270
67324
|
this._mlsGroups.set(roomId, mgr);
|
|
67271
67325
|
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67272
67326
|
await this._persistState();
|
|
67327
|
+
await this._applyBufferedMlsCommits(groupId, mgr);
|
|
67273
67328
|
console.log(`[SecureChannel] Joined MLS group for room ${roomId.slice(0, 8)} via Welcome (epoch=${mgr.epoch})`);
|
|
67274
67329
|
this._pendingMlsKpBundle = void 0;
|
|
67330
|
+
await releaseA2ASyncLock(this.config.dataDir, `room-kp-${groupId}`).catch(() => {
|
|
67331
|
+
});
|
|
67275
67332
|
return;
|
|
67276
67333
|
}
|
|
67277
67334
|
}
|
|
@@ -67282,6 +67339,7 @@ ${messageText}`;
|
|
|
67282
67339
|
this._mlsGroups.set(`a2a:${channelId}`, mgr);
|
|
67283
67340
|
await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mgr.exportState()));
|
|
67284
67341
|
await this._persistState();
|
|
67342
|
+
await this._applyBufferedMlsCommits(groupId, mgr);
|
|
67285
67343
|
await clearPendingWelcome(this.config.dataDir, groupId).catch(() => {
|
|
67286
67344
|
});
|
|
67287
67345
|
await releaseA2ASyncLock(this.config.dataDir, channelId).catch(() => {
|
|
@@ -94962,7 +95020,7 @@ var init_index = __esm({
|
|
|
94962
95020
|
init_skill_invoker();
|
|
94963
95021
|
await init_skill_telemetry();
|
|
94964
95022
|
await init_policy_enforcer();
|
|
94965
|
-
VERSION = true ? "0.20.
|
|
95023
|
+
VERSION = true ? "0.20.32" : "0.0.0-dev";
|
|
94966
95024
|
}
|
|
94967
95025
|
});
|
|
94968
95026
|
await init_index();
|