@agentvault/agentvault 0.23.19 → 0.23.21

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.
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Change-gate for the `[listA2AChannels]` log line — LEAF MODULE (#798).
3
+ *
4
+ * That line was an unconditional `console.log` inside `listA2AChannels()`, which
5
+ * polls every 30 seconds. Measured 2026-08-07/08:
6
+ *
7
+ * bridge.log 90,841 of 100,702 lines (90.2%), 7.5 MB
8
+ * wren's gateway.log 27.9 MB, tail entirely this line
9
+ *
10
+ * Every one of them read `channels=0`. Real signal sat at a 10:1 noise ratio,
11
+ * which is what pushed the 08-06 investigation onto `tail -N` — a sliding
12
+ * window, not a clock.
13
+ *
14
+ * ⚠️ NOT deleted, deliberately. **#794 is an active watch on A2A behaviour**
15
+ * (the loop guard went prompt-level when #792 removed the accidental rate
16
+ * limiter), and this line is the only report of A2A channel state. Deleting it
17
+ * would remove the signal that watch depends on. Logging only on CHANGE keeps
18
+ * every transition and drops the ~2,880 identical lines a day.
19
+ *
20
+ * ⚠️ Deliberately does NOT timestamp. The OpenClaw gateway already stamps this
21
+ * line on its own path (`2026-08-08T06:23:57.536-05:00 [listA2AChannels] …`), so
22
+ * adding one here would double-stamp for every OpenClaw agent. On the bridge
23
+ * path it stays unstamped — acceptable at a handful of lines a day, and the
24
+ * bridge's OWN sinks are stamped by #796.
25
+ */
26
+ /** The fields of a channel that make a state worth reporting. */
27
+ export interface A2AChannelLike {
28
+ channelId?: string;
29
+ status?: string;
30
+ participant_count?: number;
31
+ }
32
+ /**
33
+ * Stable fingerprint of the A2A channel set.
34
+ *
35
+ * **Sorted by id on purpose.** The server does not promise ordering, and an
36
+ * order-sensitive signature would log a "change" every time the same channels
37
+ * came back shuffled — reintroducing the noise this exists to remove, in a form
38
+ * that looks like real activity.
39
+ *
40
+ * Only id / status / participant count are included: those are what the log line
41
+ * reports and what #794 needs to see move.
42
+ */
43
+ export declare function a2aChannelSignature(channels: readonly A2AChannelLike[]): string;
44
+ /**
45
+ * Tracks the last reported signature so a caller can log only on change.
46
+ *
47
+ * First observation always reports: at process start the current state is news,
48
+ * and a silent start would leave an operator unable to tell "no channels" from
49
+ * "not running".
50
+ */
51
+ export declare class A2ALogGate {
52
+ private last;
53
+ /** True when this state differs from the last reported one. Records it. */
54
+ shouldReport(channels: readonly A2AChannelLike[]): boolean;
55
+ }
56
+ //# sourceMappingURL=a2a-log-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-log-gate.d.ts","sourceRoot":"","sources":["../src/a2a-log-gate.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAU/E;AAED;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAuB;IAEnC,2EAA2E;IAC3E,YAAY,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO;CAM3D"}
package/dist/channel.d.ts CHANGED
@@ -51,6 +51,11 @@ export declare class SecureChannel extends EventEmitter {
51
51
  private _heartbeatTimer;
52
52
  private _heartbeatCallback;
53
53
  private _heartbeatIntervalSeconds;
54
+ /** #798: report the A2A channel set only when it CHANGES. This line polls
55
+ * every 30s and produced 90.2% of bridge.log (90,841/100,702 lines) and a
56
+ * 27.9MB gateway.log on wren, every one reading `channels=0`. Not deleted —
57
+ * #794's A2A watch needs the transitions. */
58
+ private _a2aLogGate;
54
59
  private _wakeDetectorTimer;
55
60
  private _lastWakeTick;
56
61
  private _trustToken;
@@ -60,6 +65,17 @@ export declare class SecureChannel extends EventEmitter {
60
65
  private _pendingPollTimer;
61
66
  private _syncMessageIds;
62
67
  private _deliveryHeartbeat;
68
+ /**
69
+ * How often to re-check the KeyPackage pool against the server (#826).
70
+ *
71
+ * KeyPackages expire after 7 days and, before this, only a reconnect
72
+ * republished them — so an agent that simply stayed up ran to zero usable
73
+ * and silently stopped accepting new MLS 1:1 conversations while looking
74
+ * perfectly healthy. 6h gives ~28 attempts inside one lifetime, so a run of
75
+ * transient failures cannot age the pool out. Cost is one GET per interval.
76
+ */
77
+ private static readonly _KP_REPLENISH_INTERVAL_MS;
78
+ private _kpReplenishTimer;
63
79
  private _a2aReconcileTimer;
64
80
  private _deliveryPulling;
65
81
  private _drDeliveryPulling;
@@ -440,6 +456,25 @@ export declare class SecureChannel extends EventEmitter {
440
456
  * transient error can never over-prune a live room.
441
457
  */
442
458
  private _reconcileRoomsWithServer;
459
+ /**
460
+ * #629 — quarantine MLS state for groups this device is no longer in.
461
+ *
462
+ * `_reconcileRoomsWithServer` above covers ROOMS: anything absent from
463
+ * `GET /rooms` is pruned. It cannot see a group that was never a room — a 1:1
464
+ * conversation group or an A2A channel group — so that state lingered with
465
+ * nothing to reconcile it. Measured on loopita 2026-08-08: one group-state
466
+ * file whose group had no server-side row at all.
467
+ *
468
+ * `quarantineOrphanedMlsState` was written for exactly this and shipped with
469
+ * 11 passing tests, but nothing ever called it. This is that call site.
470
+ *
471
+ * Runs AFTER the room reconcile so rooms are already gone and this only sees
472
+ * genuine non-room orphans.
473
+ *
474
+ * Quarantine RENAMES to `.orphaned` rather than deleting: if the verdict is
475
+ * ever wrong the state is recoverable by hand, which deletion would not be.
476
+ */
477
+ private _quarantineOrphanedMlsGroups;
443
478
  /**
444
479
  * Handle an in-band `{event:"error"}` frame from the server.
445
480
  *
@@ -830,6 +865,34 @@ export declare class SecureChannel extends EventEmitter {
830
865
  * loop; the next trigger retries.
831
866
  */
832
867
  private _ensureKpPoolPublished;
868
+ /** Start the periodic KeyPackage replenish (#826). Idempotent. */
869
+ private _startKpReplenishTimer;
870
+ private _stopKpReplenishTimer;
871
+ /**
872
+ * The server's EXPIRY-AWARE usable KeyPackage count, or null when unknown.
873
+ *
874
+ * `count_unconsumed` filters `expires_at > utcnow()`, which is the only count
875
+ * that reflects what a peer can actually fetch. Returns null (not 0) on any
876
+ * failure so callers can tell "server says empty" from "we could not ask" —
877
+ * guessing 0 here would publish a fresh pool on every transient 503.
878
+ */
879
+ private _fetchServerKpCount;
880
+ /**
881
+ * Top the pool up against the SERVER's count (#826).
882
+ *
883
+ * ⚠️ DO NOT replace this with a periodic call to `_ensureKpPoolPublished()`.
884
+ * That function early-returns on `_pendingKpBundles.length >= _KP_POOL_TARGET`,
885
+ * and that array holds PRIVATE bundles which never expire locally — so on an
886
+ * agent that has been connected longer than the KeyPackage lifetime it is
887
+ * still full while the server has zero usable. Measured on prod 2026-08-09:
888
+ * cortina and eclaude were online and green with 10 unconsumed / 0 usable,
889
+ * unable to accept any new MLS 1:1. A timer over the local guard would have
890
+ * run forever and changed nothing.
891
+ *
892
+ * Publishes only the shortfall, and never throws — this runs on a timer and
893
+ * must not be able to take the channel down.
894
+ */
895
+ private _replenishKpPoolFromServer;
833
896
  private _handleMlsWelcome;
834
897
  /**
835
898
  * Self-bootstrap a room entry + MLS group mapping from a Welcome whose room is
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
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;AAM5B,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;AAgFpB;;;;;GAKG;AACH,UAAU,mBAAoB,SAAQ,WAAW;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiED;;;;;;4DAM4D;AAC5D,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAIhF;AAED,qBAAa,aAAc,SAAQ,YAAY;IAgNjC,OAAO,CAAC,MAAM;IA/M1B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAGH;IACd,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAA+B;IAMjD,OAAO,CAAC,eAAe,CAAM;IAG7B,OAAO,CAAC,wBAAwB,CAA8B;IAC9D,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAA8D;IAChF,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,kBAAkB,CAAwC;IAClE,OAAO,CAAC,yBAAyB,CAAa;IAC9C;;;kDAG8C;IAC9C,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,mBAAmB,CAA+C;IAC1E,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,kBAAkB,CAA+C;IACzE;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAsB;IACvE,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,kBAAkB,CAA+C;IACzE,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,kBAAkB,CAAS;IAEnC,wHAAwH;IACxH,OAAO,CAAC,UAAU,CAA2C;IAE7D,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,8EAA8E;IAC9E,OAAO,CAAC,qBAAqB,CAAkC;IAC/D;;uDAEmD;IACnD,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAK;IAElD,kFAAkF;IAClF,OAAO,CAAC,cAAc,CAA2E;IACjG,uFAAuF;IACvF,OAAO,CAAC,mBAAmB,CAAyE;IACpG;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,2FAA2F;IAC3F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAC7C;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAM;IAChD,oFAAoF;IACpF,OAAO,CAAC,cAAc,CAAS;IAE/B,0FAA0F;IAC1F,OAAO,CAAC,kBAAkB,CAA+D;IAEzF,oFAAoF;IACpF,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;mFAE+E;IAC/E,OAAO,CAAC,oBAAoB,CAAqB;IACjD,iFAAiF;IACjF,OAAO,CAAC,0BAA0B,CAAoC;IAEtE,qFAAqF;IACrF,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAO;IAC3C,mGAAmG;IACnG,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAO;IAC3C;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAA0C;IACnE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,oFAAoF;IACpF,OAAO,CAAC,oBAAoB,CAAqB;IAEjD,mGAAmG;IACnG,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,mFAAmF;IACnF,OAAO,CAAC,kBAAkB,CAAkC;IAE5D,yFAAyF;IACzF,OAAO,CAAC,wBAAwB,CAAkC;IAElE,sDAAsD;IACtD,OAAO,CAAC,kBAAkB,CAA8C;IACxE,OAAO,CAAC,oBAAoB,CAAS;IAKrC,OAAO,CAAC,iBAAiB,CAAkB;IAQ3C,OAAO,CAAC,sBAAsB,CAAkB;IAKhD,OAAO,CAAC,cAAc,CAAuB;IAI7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAU;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAEvD;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAU;gBAEZ,MAAM,EAAE,mBAAmB;IAK/C;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;;;;;;OAUG;YACW,wBAAwB;IAsBtC;;;;;;;;;;;;;;;;;OAiBG;YACW,sBAAsB;IAuDpC;;;;;;;;;;;OAWG;YACW,YAAY;IA2D1B,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,0EAA0E;IAC1E,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,sEAAsE;IACtE,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;+EAG2E;IAC3E,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;;;yEAIqE;IACrE,OAAO,CAAC,sBAAsB;IA0B9B,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,iEAAiE;IACjE,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAED,2CAA2C;IAC3C,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,6CAA6C;IAC7C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,mFAAmF;IACnF,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,mFAAmF;IACnF,IAAI,OAAO,IAAI,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAGrD;IAED,oEAAoE;IACpE,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAW/B;IAED,+FAA+F;IAC/F,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOtD,kFAAkF;IAClF,IAAI,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAExC;IAED;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAI7G,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B;;;;;;OAMG;YACW,qBAAqB;IAmInC;;OAEG;YACW,eAAe;IAiB7B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,YAAY,EAAE;IAMhE;;;OAGG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2T3E;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;;OAGG;IACH,UAAU,IAAI,IAAI;IAYlB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA2BzD;;;;;OAKG;IACH,mBAAmB,CAAC,CAAC,EAAE;QACrB,aAAa,EAAE,OAAO,CAAC;QACvB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,GAAG,IAAI;IAmBR;;;;OAIG;IACG,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BpE;;;;;;OAMG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuClF;;;OAGG;IACG,QAAQ,CAAC,QAAQ,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,aAAa,EAAE,oBAAoB,EAAE,CAAC;QACtC,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyFjB;;;OAGG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,OAAO,CAAC,IAAI,CAAC;IA6DhB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC9C;;;;;;;;;;;;;;OAcG;YACW,yBAAyB;IAiDvC;;;;;;;;;;;;;;;;;OAiBG;YACW,4BAA4B;IA6B1C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;YACW,kBAAkB;IAmDhC;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;YACW,4BAA4B;IA6E1C;;;;;;;;;;;;;;;OAeG;YACW,oBAAoB;IAmClC;;OAEG;IACH,QAAQ,IAAI,QAAQ,EAAE;IAUtB;;;;;;;;;;;;;OAaG;YACW,kBAAkB;IAkDhC,cAAc,CACZ,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,eAAe,GACpC,IAAI;IAUD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlD,YAAY,CAAC,QAAQ,EAAE;QAC3B,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDX,sBAAsB,CAAC,YAAY,EAAE;QACzC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBX,4BAA4B,CAChC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,IAAI,CAAC;IA0BhB;;;OAGG;IACG,OAAO,CACX,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,eAAe,CAAC;IAyP3B;;OAEG;IACH,WAAW,IAAI,UAAU,EAAE;IA0C3B,OAAO,CAAC,cAAc;IAoBtB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAKzC,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAE9B;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,IAAI,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAEvC;IAEK,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBxC,sBAAsB,IAAI,IAAI;IAS9B,qBAAqB,IAAI,IAAI;IAOvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC3B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA0GnC,OAAO,CAAC,eAAe;IAOvB;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,iBAAiB,EAAE,mBAAmB,GAAG,IAAI;IAI5E,uCAAuC;IACvC,IAAI,SAAS,IAAI,OAAO,iBAAiB,EAAE,mBAAmB,GAAG,IAAI,CAEpE;IAID;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAsC1F;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAiCpF;;;OAGG;IACG,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6DrE;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC9E;;;;;;;;;;OAUG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsFpG;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCtE;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAO/B,0DAA0D;IAC1D,OAAO,CAAC,sBAAsB;IAO9B;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YA6OhC,OAAO;IAgDrB,OAAO,CAAC,KAAK;YAsCC,SAAS;YA0JT,QAAQ;IAw9BtB;;;;OAIG;IACH;;;OAGG;YACW,iBAAiB;YA6MjB,sBAAsB;IAmRpC;;;OAGG;YACW,6BAA6B;IA6C3C;;;OAGG;YACW,iBAAiB;IAwD/B;;;OAGG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAoDhB;;;OAGG;YACW,oBAAoB;IA2DlC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAqC5B;;;OAGG;YACW,oBAAoB;IA0BlC;;;OAGG;YACW,uBAAuB;IAqCrC;;;;OAIG;YACW,mBAAmB;IAyEjC;;;;OAIG;YACW,oBAAoB;IAsFlC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsEhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B,mDAAmD;IACnD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,uBAAuB,EAAE,gBAAgB,GAAG,SAAS;IAIxG,mFAAmF;IACnF,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,uBAAuB,EAAE,gBAAgB,EAAE;IAIlF,uEAAuE;IACvE,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIxD,wDAAwD;IACxD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAInD,6DAA6D;IAC7D,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YAU5B,qBAAqB;IAqNnC;;;OAGG;YACW,4BAA4B;YAkE5B,gBAAgB;IAyD9B,4EAA4E;IAC5E,OAAO,CAAC,gBAAgB;IAexB,qDAAqD;YACvC,wBAAwB;IAuBtC;;;OAGG;IACH;;;;;;;OAOG;IACH;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;YACW,gBAAgB;YA0BhB,uBAAuB;YAiCvB,wBAAwB;IAwCtC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;YACW,mBAAmB;IA+CjC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAiB1B,4EAA4E;IAC5E,OAAO,CAAC,iBAAiB;IAKzB;;;;;;;;;;;;;OAaG;YACW,sBAAsB;IA6CpC,kEAAkE;IAClE,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,qBAAqB;IAO7B;;;;;;;OAOG;YACW,mBAAmB;IAejC;;;;;;;;;;;;;;OAcG;YACW,0BAA0B;YAmD1B,iBAAiB;IAuM/B;;;;;;;;;OASG;YACW,wBAAwB;IAuBtC;;;OAGG;YACW,kBAAkB;IAmrBhC;;;OAGG;YACW,oBAAoB;YA4LpB,sBAAsB;IAqBpC;;;OAGG;YACW,oBAAoB;IA+FlC;;;;;;OAMG;YACW,cAAc;IAgH5B;;;OAGG;YACW,mBAAmB;IAuKjC,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;YAMJ,mBAAmB;IAmCjC,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;YAOV,qBAAqB;IAuCnC,OAAO,CAAC,kBAAkB;IA0E1B,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,kBAAkB;IA8I1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAK;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAW;IAE5D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH;;;;;;;;;;;;;;;;;;OAkBG;YACW,yBAAyB;YA0BzB,oBAAoB;IAkDlC;;;OAGG;YACW,aAAa;IA6B3B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAqB9B"}
package/dist/cli.js CHANGED
@@ -63012,6 +63012,35 @@ async function deleteMlsState(dataDir2, groupId) {
63012
63012
  } catch {
63013
63013
  }
63014
63014
  }
63015
+ async function quarantineOrphanedMlsState(dataDir2, isStillMember, opts = {}) {
63016
+ const max = opts.max ?? 20;
63017
+ const quarantined = [];
63018
+ let names;
63019
+ try {
63020
+ names = await readdir(dataDir2);
63021
+ } catch {
63022
+ return quarantined;
63023
+ }
63024
+ for (const name2 of names) {
63025
+ if (quarantined.length >= max) break;
63026
+ const m2 = /^mls-(?!kp-pending-)([A-Za-z0-9_-]+)\.json$/.exec(name2);
63027
+ if (!m2) continue;
63028
+ const groupId = m2[1];
63029
+ let member;
63030
+ try {
63031
+ member = await isStillMember(groupId);
63032
+ } catch {
63033
+ continue;
63034
+ }
63035
+ if (member === null || member === true) continue;
63036
+ try {
63037
+ await rename(join(dataDir2, name2), join(dataDir2, `${name2}.orphaned`));
63038
+ quarantined.push(groupId);
63039
+ } catch {
63040
+ }
63041
+ }
63042
+ return quarantined;
63043
+ }
63015
63044
  var SYNC_LOCK_STALE_MS, pendingKpPath;
63016
63045
  var init_mls_state = __esm({
63017
63046
  "src/mls-state.ts"() {
@@ -63356,6 +63385,45 @@ var init_transport2 = __esm({
63356
63385
  }
63357
63386
  });
63358
63387
 
63388
+ // src/a2a-log-gate.ts
63389
+ function a2aChannelSignature(channels) {
63390
+ return JSON.stringify(
63391
+ channels.map((c2) => ({
63392
+ id: c2.channelId?.slice(0, 8),
63393
+ status: c2.status,
63394
+ participants: c2.participant_count
63395
+ })).sort((a2, b2) => (a2.id ?? "").localeCompare(b2.id ?? ""))
63396
+ );
63397
+ }
63398
+ var A2ALogGate;
63399
+ var init_a2a_log_gate = __esm({
63400
+ "src/a2a-log-gate.ts"() {
63401
+ "use strict";
63402
+ A2ALogGate = class {
63403
+ last = null;
63404
+ /** True when this state differs from the last reported one. Records it. */
63405
+ shouldReport(channels) {
63406
+ const sig = a2aChannelSignature(channels);
63407
+ if (sig === this.last) return false;
63408
+ this.last = sig;
63409
+ return true;
63410
+ }
63411
+ };
63412
+ }
63413
+ });
63414
+
63415
+ // src/mls-membership-probe.ts
63416
+ function mlsMembershipFromStatus(status) {
63417
+ if (status === 200) return true;
63418
+ if (status === 403 || status === 404) return false;
63419
+ return null;
63420
+ }
63421
+ var init_mls_membership_probe = __esm({
63422
+ "src/mls-membership-probe.ts"() {
63423
+ "use strict";
63424
+ }
63425
+ });
63426
+
63359
63427
  // src/openclaw-compat.ts
63360
63428
  var openclaw_compat_exports = {};
63361
63429
  __export(openclaw_compat_exports, {
@@ -63918,6 +63986,8 @@ var init_channel = __esm({
63918
63986
  await init_crypto_helpers();
63919
63987
  await init_state();
63920
63988
  init_transport2();
63989
+ init_a2a_log_gate();
63990
+ init_mls_membership_probe();
63921
63991
  ROOM_AGENT_TYPES = /* @__PURE__ */ new Set([
63922
63992
  "message",
63923
63993
  "text",
@@ -63983,6 +64053,11 @@ var init_channel = __esm({
63983
64053
  _heartbeatTimer = null;
63984
64054
  _heartbeatCallback = null;
63985
64055
  _heartbeatIntervalSeconds = 0;
64056
+ /** #798: report the A2A channel set only when it CHANGES. This line polls
64057
+ * every 30s and produced 90.2% of bridge.log (90,841/100,702 lines) and a
64058
+ * 27.9MB gateway.log on wren, every one reading `channels=0`. Not deleted —
64059
+ * #794's A2A watch needs the transitions. */
64060
+ _a2aLogGate = new A2ALogGate();
63986
64061
  _wakeDetectorTimer = null;
63987
64062
  _lastWakeTick = Date.now();
63988
64063
  _trustToken = null;
@@ -63992,6 +64067,17 @@ var init_channel = __esm({
63992
64067
  _pendingPollTimer = null;
63993
64068
  _syncMessageIds = null;
63994
64069
  _deliveryHeartbeat = null;
64070
+ /**
64071
+ * How often to re-check the KeyPackage pool against the server (#826).
64072
+ *
64073
+ * KeyPackages expire after 7 days and, before this, only a reconnect
64074
+ * republished them — so an agent that simply stayed up ran to zero usable
64075
+ * and silently stopped accepting new MLS 1:1 conversations while looking
64076
+ * perfectly healthy. 6h gives ~28 attempts inside one lifetime, so a run of
64077
+ * transient failures cannot age the pool out. Cost is one GET per interval.
64078
+ */
64079
+ static _KP_REPLENISH_INTERVAL_MS = 6 * 60 * 60 * 1e3;
64080
+ _kpReplenishTimer = null;
63995
64081
  _a2aReconcileTimer = null;
63996
64082
  _deliveryPulling = false;
63997
64083
  _drDeliveryPulling = false;
@@ -64956,7 +65042,7 @@ var init_channel = __esm({
64956
65042
  */
64957
65043
  sendActivitySpan(spanData) {
64958
65044
  if (!this._ws || this._ws.readyState !== WebSocket.OPEN) return;
64959
- const pluginVersion = true ? "0.23.19" : "0.0.0-dev";
65045
+ const pluginVersion = true ? "0.23.21" : "0.0.0-dev";
64960
65046
  const agentName = this.config.agentName ?? "Agent";
64961
65047
  const resource = {
64962
65048
  "service.name": "agentvault-agent",
@@ -65276,6 +65362,47 @@ var init_channel = __esm({
65276
65362
  );
65277
65363
  this.emit("rooms_reconciled", { pruned: stale });
65278
65364
  }
65365
+ /**
65366
+ * #629 — quarantine MLS state for groups this device is no longer in.
65367
+ *
65368
+ * `_reconcileRoomsWithServer` above covers ROOMS: anything absent from
65369
+ * `GET /rooms` is pruned. It cannot see a group that was never a room — a 1:1
65370
+ * conversation group or an A2A channel group — so that state lingered with
65371
+ * nothing to reconcile it. Measured on loopita 2026-08-08: one group-state
65372
+ * file whose group had no server-side row at all.
65373
+ *
65374
+ * `quarantineOrphanedMlsState` was written for exactly this and shipped with
65375
+ * 11 passing tests, but nothing ever called it. This is that call site.
65376
+ *
65377
+ * Runs AFTER the room reconcile so rooms are already gone and this only sees
65378
+ * genuine non-room orphans.
65379
+ *
65380
+ * Quarantine RENAMES to `.orphaned` rather than deleting: if the verdict is
65381
+ * ever wrong the state is recoverable by hand, which deletion would not be.
65382
+ */
65383
+ async _quarantineOrphanedMlsGroups() {
65384
+ if (!this._deviceJwt) return;
65385
+ const quarantined = await quarantineOrphanedMlsState(
65386
+ this.config.dataDir,
65387
+ async (groupId) => {
65388
+ try {
65389
+ const res = await fetch(
65390
+ `${this.config.apiUrl}/api/v1/mls/groups/${encodeURIComponent(groupId)}`,
65391
+ { headers: { Authorization: `Bearer ${this._deviceJwt}` } }
65392
+ );
65393
+ return mlsMembershipFromStatus(res.status);
65394
+ } catch {
65395
+ return null;
65396
+ }
65397
+ }
65398
+ );
65399
+ if (quarantined.length > 0) {
65400
+ console.log(
65401
+ `[SecureChannel] Quarantined ${quarantined.length} orphaned MLS group state file(s): ` + quarantined.map((g2) => g2.slice(0, 8)).join(", ")
65402
+ );
65403
+ this.emit("mls_state_quarantined", { groupIds: quarantined });
65404
+ }
65405
+ }
65279
65406
  /**
65280
65407
  * Handle an in-band `{event:"error"}` frame from the server.
65281
65408
  *
@@ -66436,7 +66563,9 @@ var init_channel = __esm({
66436
66563
  }
66437
66564
  const myHub = this._persisted.hubAddress || "";
66438
66565
  const myHubId = this._persisted.hubId || "";
66439
- console.log(`[listA2AChannels] myHub=${myHub}, channels=${channels.length}, raw=${JSON.stringify(channels.map((c2) => ({ id: c2.channelId?.slice(0, 8), status: c2.status, participants: c2.participant_count })))}`);
66566
+ if (this._a2aLogGate.shouldReport(channels)) {
66567
+ console.log(`[listA2AChannels] myHub=${myHub}, channels=${channels.length}, raw=${JSON.stringify(channels.map((c2) => ({ id: c2.channelId?.slice(0, 8), status: c2.status, participants: c2.participant_count })))}`);
66568
+ }
66440
66569
  for (const ch of channels) {
66441
66570
  if (ch.status === "active" || ch.status === "approved") {
66442
66571
  const myParticipant = ch.participants?.find(
@@ -66798,6 +66927,8 @@ var init_channel = __esm({
66798
66927
  this._setState("ready");
66799
66928
  void this._reconcileRoomsWithServer().catch(
66800
66929
  (err) => console.warn(`[SecureChannel] room reconcile failed (ignored): ${err instanceof Error ? err.message : String(err)}`)
66930
+ ).then(() => this._quarantineOrphanedMlsGroups()).catch(
66931
+ (err) => console.warn(`[SecureChannel] MLS orphan quarantine failed (ignored): ${err instanceof Error ? err.message : String(err)}`)
66801
66932
  );
66802
66933
  if (this.config.enableScanning) {
66803
66934
  this._scanEngine = new ScanEngine();
@@ -66821,7 +66952,7 @@ var init_channel = __esm({
66821
66952
  agentVersion: this.config.agentVersion ?? "0.0.0",
66822
66953
  // __AV_VERSION__ is injected by esbuild from package.json at build time.
66823
66954
  // Falls back to "0.0.0-dev" in non-bundled contexts (tests).
66824
- pluginVersion: true ? "0.23.19" : "0.0.0-dev"
66955
+ pluginVersion: true ? "0.23.21" : "0.0.0-dev"
66825
66956
  });
66826
66957
  this._telemetryReporter.startAutoFlush(3e4);
66827
66958
  }
@@ -66830,6 +66961,7 @@ var init_channel = __esm({
66830
66961
  console.warn("[SecureChannel] A2A channel sync on connect failed:", err);
66831
66962
  });
66832
66963
  await this._ensureKpPoolPublished();
66964
+ this._startKpReplenishTimer();
66833
66965
  this._pullDeliveryQueue().catch((err) => {
66834
66966
  console.warn("[SecureChannel] Initial delivery pull failed:", err);
66835
66967
  });
@@ -67144,7 +67276,7 @@ var init_channel = __esm({
67144
67276
  agentVersion: this.config.agentVersion ?? "0.0.0",
67145
67277
  // __AV_VERSION__ is injected by esbuild from package.json at build time.
67146
67278
  // Falls back to "0.0.0-dev" in non-bundled contexts (tests).
67147
- pluginVersion: true ? "0.23.19" : "0.0.0-dev"
67279
+ pluginVersion: true ? "0.23.21" : "0.0.0-dev"
67148
67280
  });
67149
67281
  this._telemetryReporter.startAutoFlush(3e4);
67150
67282
  }
@@ -67487,6 +67619,7 @@ var init_channel = __esm({
67487
67619
  this._deliveryHeartbeat = null;
67488
67620
  }
67489
67621
  this._stopA2aReconcileTimer();
67622
+ this._stopKpReplenishTimer();
67490
67623
  if (this._stopped) return;
67491
67624
  this._setState("disconnected");
67492
67625
  this._scheduleReconnect();
@@ -68880,6 +69013,103 @@ ${messageText}`;
68880
69013
  this._kpPoolFilling = false;
68881
69014
  }
68882
69015
  }
69016
+ /** Start the periodic KeyPackage replenish (#826). Idempotent. */
69017
+ _startKpReplenishTimer() {
69018
+ this._stopKpReplenishTimer();
69019
+ this._kpReplenishTimer = setInterval(() => {
69020
+ void this._replenishKpPoolFromServer();
69021
+ }, _SecureChannel._KP_REPLENISH_INTERVAL_MS);
69022
+ }
69023
+ _stopKpReplenishTimer() {
69024
+ if (this._kpReplenishTimer) {
69025
+ clearInterval(this._kpReplenishTimer);
69026
+ this._kpReplenishTimer = null;
69027
+ }
69028
+ }
69029
+ /**
69030
+ * The server's EXPIRY-AWARE usable KeyPackage count, or null when unknown.
69031
+ *
69032
+ * `count_unconsumed` filters `expires_at > utcnow()`, which is the only count
69033
+ * that reflects what a peer can actually fetch. Returns null (not 0) on any
69034
+ * failure so callers can tell "server says empty" from "we could not ask" —
69035
+ * guessing 0 here would publish a fresh pool on every transient 503.
69036
+ */
69037
+ async _fetchServerKpCount() {
69038
+ try {
69039
+ const res = await fetch(
69040
+ `${this.config.apiUrl}/api/v1/mls/key-packages/count?device_id=${this._deviceId}`,
69041
+ { headers: { Authorization: `Bearer ${this._deviceJwt}` } }
69042
+ );
69043
+ if (!res.ok) return null;
69044
+ const body = await res.json();
69045
+ const n2 = body?.count;
69046
+ return typeof n2 === "number" && Number.isFinite(n2) ? n2 : null;
69047
+ } catch {
69048
+ return null;
69049
+ }
69050
+ }
69051
+ /**
69052
+ * Top the pool up against the SERVER's count (#826).
69053
+ *
69054
+ * ⚠️ DO NOT replace this with a periodic call to `_ensureKpPoolPublished()`.
69055
+ * That function early-returns on `_pendingKpBundles.length >= _KP_POOL_TARGET`,
69056
+ * and that array holds PRIVATE bundles which never expire locally — so on an
69057
+ * agent that has been connected longer than the KeyPackage lifetime it is
69058
+ * still full while the server has zero usable. Measured on prod 2026-08-09:
69059
+ * cortina and eclaude were online and green with 10 unconsumed / 0 usable,
69060
+ * unable to accept any new MLS 1:1. A timer over the local guard would have
69061
+ * run forever and changed nothing.
69062
+ *
69063
+ * Publishes only the shortfall, and never throws — this runs on a timer and
69064
+ * must not be able to take the channel down.
69065
+ */
69066
+ async _replenishKpPoolFromServer() {
69067
+ try {
69068
+ if (this._kpPoolFilling) return;
69069
+ const usable = await this._fetchServerKpCount();
69070
+ if (usable === null) return;
69071
+ const shortfall = _SecureChannel._KP_POOL_TARGET - usable;
69072
+ if (shortfall <= 0) return;
69073
+ this._kpPoolFilling = true;
69074
+ try {
69075
+ const identity = new TextEncoder().encode(this._deviceId);
69076
+ let published = 0;
69077
+ for (let i2 = 0; i2 < shortfall; i2++) {
69078
+ const mlsMgr = new MLSGroupManager();
69079
+ const kp = await mlsMgr.generateKeyPackage(identity);
69080
+ const kpHex = Buffer.from(
69081
+ MLSGroupManager.serializeKeyPackage(kp.publicPackage)
69082
+ ).toString("hex");
69083
+ const res = await fetch(`${this.config.apiUrl}/api/v1/mls/key-packages`, {
69084
+ method: "POST",
69085
+ headers: {
69086
+ Authorization: `Bearer ${this._deviceJwt}`,
69087
+ "Content-Type": "application/json"
69088
+ },
69089
+ body: JSON.stringify({ key_package: kpHex })
69090
+ });
69091
+ if (!res.ok) {
69092
+ console.warn(
69093
+ `[SecureChannel] KeyPackage replenish rejected (status ${res.status}) after ${published}/${shortfall}`
69094
+ );
69095
+ break;
69096
+ }
69097
+ this._recordPublishedKp(kp);
69098
+ if (!this._mlsKeyPackage) this._mlsKeyPackage = kp;
69099
+ published++;
69100
+ }
69101
+ if (published > 0) {
69102
+ console.log(
69103
+ `[SecureChannel] MLS KeyPackage pool replenished (${published} new; server had ${usable}/${_SecureChannel._KP_POOL_TARGET} usable)`
69104
+ );
69105
+ }
69106
+ } finally {
69107
+ this._kpPoolFilling = false;
69108
+ }
69109
+ } catch (err) {
69110
+ console.warn("[SecureChannel] KeyPackage replenish failed:", err);
69111
+ }
69112
+ }
68883
69113
  async _handleMlsWelcome(data) {
68884
69114
  const groupId = data.group_id;
68885
69115
  const conversationId = data.conversation_id;
@@ -91452,7 +91682,7 @@ var init_index = __esm({
91452
91682
  init_skill_invoker();
91453
91683
  await init_skill_telemetry();
91454
91684
  await init_policy_enforcer();
91455
- VERSION = true ? "0.23.19" : "0.0.0-dev";
91685
+ VERSION = true ? "0.23.21" : "0.0.0-dev";
91456
91686
  }
91457
91687
  });
91458
91688