@agentvault/agentvault 0.23.33 → 0.23.34

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/index.js CHANGED
@@ -63266,11 +63266,11 @@ var init_mls_kp_pool = __esm({
63266
63266
 
63267
63267
  // src/client-version.ts
63268
63268
  function ownIdentity() {
63269
- const v2 = true ? "0.23.33" : FALLBACK;
63269
+ const v2 = true ? "0.23.34" : FALLBACK;
63270
63270
  return `${PACKAGE}@${v2}`;
63271
63271
  }
63272
63272
  function buildSha() {
63273
- const raw = true ? "7b91f2f-dirty" : "";
63273
+ const raw = true ? "6b305ca-dirty" : "";
63274
63274
  const cleaned = (raw ?? "").trim();
63275
63275
  return !cleaned || cleaned === "unknown" ? null : cleaned;
63276
63276
  }
@@ -65481,7 +65481,7 @@ var init_channel = __esm({
65481
65481
  */
65482
65482
  sendActivitySpan(spanData) {
65483
65483
  if (!this._ws || this._ws.readyState !== WebSocket.OPEN) return;
65484
- const pluginVersion = true ? "0.23.33" : "0.0.0-dev";
65484
+ const pluginVersion = true ? "0.23.34" : "0.0.0-dev";
65485
65485
  const agentName = this.config.agentName ?? "Agent";
65486
65486
  const resource = {
65487
65487
  "service.name": "agentvault-agent",
@@ -67419,7 +67419,7 @@ var init_channel = __esm({
67419
67419
  agentVersion: this.config.agentVersion ?? "0.0.0",
67420
67420
  // __AV_VERSION__ is injected by esbuild from package.json at build time.
67421
67421
  // Falls back to "0.0.0-dev" in non-bundled contexts (tests).
67422
- pluginVersion: true ? "0.23.33" : "0.0.0-dev"
67422
+ pluginVersion: true ? "0.23.34" : "0.0.0-dev"
67423
67423
  });
67424
67424
  this._telemetryReporter.startAutoFlush(3e4);
67425
67425
  }
@@ -67743,7 +67743,7 @@ var init_channel = __esm({
67743
67743
  agentVersion: this.config.agentVersion ?? "0.0.0",
67744
67744
  // __AV_VERSION__ is injected by esbuild from package.json at build time.
67745
67745
  // Falls back to "0.0.0-dev" in non-bundled contexts (tests).
67746
- pluginVersion: true ? "0.23.33" : "0.0.0-dev"
67746
+ pluginVersion: true ? "0.23.34" : "0.0.0-dev"
67747
67747
  });
67748
67748
  this._telemetryReporter.startAutoFlush(3e4);
67749
67749
  }
@@ -68147,6 +68147,7 @@ var init_channel = __esm({
68147
68147
  try {
68148
68148
  const cipherBytes = new Uint8Array(Buffer.from(data.payload, "hex"));
68149
68149
  const result = await mgr.decrypt(cipherBytes);
68150
+ if (mgrKey) this._mlsDecryptFailCounts.delete(mgrKey);
68150
68151
  const mlsGroupId = (convGroupId ? this._persisted?.mlsGroups?.[convGroupId]?.mlsGroupId : null) ?? this._persisted?.mlsConversations?.[convId]?.mlsGroupId ?? groupId;
68151
68152
  if (mlsGroupId) {
68152
68153
  await saveMlsState(this.config.dataDir, mlsGroupId, JSON.stringify(mgr.exportState()));
@@ -68251,6 +68252,10 @@ var init_channel = __esm({
68251
68252
  this.config.onMessage(text, metadata);
68252
68253
  }
68253
68254
  } catch (decryptErr) {
68255
+ if (classifyCommitFailure(data.epoch, mgr?.epoch) === "already-applied") {
68256
+ console.debug(`[SecureChannel] MLS 1:1 message at epoch ${String(data.epoch)} predates our epoch ${String(mgr?.epoch)} \u2014 cannot decrypt, ignoring`);
68257
+ return;
68258
+ }
68254
68259
  const failKey = mgrKey || `unknown:${groupId}`;
68255
68260
  const count = (this._mlsDecryptFailCounts.get(failKey) ?? 0) + 1;
68256
68261
  this._mlsDecryptFailCounts.set(failKey, count);
@@ -69092,6 +69097,7 @@ ${baseText}`;
69092
69097
  try {
69093
69098
  const ciphertext = Buffer.from(data.payload, "hex");
69094
69099
  const result = await mlsGroup.decrypt(new Uint8Array(ciphertext));
69100
+ this._mlsDecryptFailCounts.delete(resolvedRoomId);
69095
69101
  await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mlsGroup.exportState()));
69096
69102
  if (result.isHandshake || !result.plaintext) {
69097
69103
  return;
@@ -69181,6 +69187,10 @@ ${baseText}`;
69181
69187
  console.error("[SecureChannel] onMessage callback error (MLS):", err);
69182
69188
  });
69183
69189
  } catch (err) {
69190
+ if (classifyCommitFailure(data.epoch, mlsGroup.epoch) === "already-applied") {
69191
+ console.debug(`[SecureChannel] MLS room message at epoch ${String(data.epoch)} predates our epoch ${String(mlsGroup.epoch)} for ${resolvedRoomId.slice(0, 8)} \u2014 cannot decrypt, ignoring`);
69192
+ return;
69193
+ }
69184
69194
  const failKey = resolvedRoomId;
69185
69195
  const count = (this._mlsDecryptFailCounts.get(failKey) ?? 0) + 1;
69186
69196
  this._mlsDecryptFailCounts.set(failKey, count);
@@ -70220,6 +70230,11 @@ ${baseText}`;
70220
70230
  nackedIds.push(msg.queue_id);
70221
70231
  if (msg.group_id && (msg.message_type === "commit" || msg.message_type === "application")) {
70222
70232
  const failKey = msg.conversation_group_id ? `1to1-group:${msg.conversation_group_id}` : `group:${msg.group_id}`;
70233
+ const localMgr = msg.room_id && this._mlsGroups.get(msg.room_id) || this._mlsGroups.get(failKey);
70234
+ if (classifyCommitFailure(msg.epoch, localMgr?.epoch) === "already-applied") {
70235
+ console.debug(`[SecureChannel] Delivery ${msg.message_type} at epoch ${String(msg.epoch)} predates our epoch ${String(localMgr?.epoch)} \u2014 not counting toward recovery`);
70236
+ continue;
70237
+ }
70223
70238
  const count = (this._mlsDecryptFailCounts.get(failKey) ?? 0) + 1;
70224
70239
  this._mlsDecryptFailCounts.set(failKey, count);
70225
70240
  if (count >= _SecureChannel.MAX_MLS_DECRYPT_FAILS) {
@@ -70897,6 +70912,7 @@ ${baseText}`;
70897
70912
  try {
70898
70913
  const ciphertext = new Uint8Array(Buffer.from(data.payload, "hex"));
70899
70914
  const result = await mlsGroup.decrypt(ciphertext);
70915
+ this._mlsDecryptFailCounts.delete(`a2a:${a2aChannelId}`);
70900
70916
  await saveMlsState(this.config.dataDir, groupId, JSON.stringify(mlsGroup.exportState()));
70901
70917
  if (result.isHandshake || !result.plaintext) {
70902
70918
  return;
@@ -70917,6 +70933,10 @@ ${baseText}`;
70917
70933
  this.config.onA2AMessage(a2aMsg);
70918
70934
  }
70919
70935
  } catch (err) {
70936
+ if (classifyCommitFailure(data.epoch, mlsGroup?.epoch) === "already-applied") {
70937
+ console.debug(`[SecureChannel] MLS A2A message at epoch ${String(data.epoch)} predates our epoch ${String(mlsGroup?.epoch)} for ${a2aChannelId.slice(0, 8)} \u2014 cannot decrypt, ignoring`);
70938
+ return;
70939
+ }
70920
70940
  const failKey = `a2a:${a2aChannelId}`;
70921
70941
  const count = (this._mlsDecryptFailCounts.get(failKey) ?? 0) + 1;
70922
70942
  this._mlsDecryptFailCounts.set(failKey, count);
@@ -98585,7 +98605,7 @@ var init_index = __esm({
98585
98605
  await init_skill_telemetry();
98586
98606
  await init_policy_enforcer();
98587
98607
  init_room_protocol();
98588
- VERSION = true ? "0.23.33" : "0.0.0-dev";
98608
+ VERSION = true ? "0.23.34" : "0.0.0-dev";
98589
98609
  }
98590
98610
  });
98591
98611
  await init_index();