@agentvault/agentvault 0.9.6 → 0.9.7

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 CHANGED
@@ -9,10 +9,10 @@ var __export = (target, all) => {
9
9
  __defProp(target, name2, { get: all[name2], enumerable: true });
10
10
  };
11
11
 
12
- // ../../../../../node_modules/libsodium-sumo/dist/modules-sumo-esm/libsodium-sumo.mjs
13
- var __filename, __dirname, url, path, Module, Module, root, window_, crypto_, randomValuesStandard, crypto, randomValueNodeJS, _Module, libsodium_sumo_default;
12
+ // ../../node_modules/libsodium-sumo/dist/modules-sumo-esm/libsodium-sumo.mjs
13
+ var __filename, __dirname, url, path, Module, Module, root, window_, crypto_, randomValuesStandard, crypto2, randomValueNodeJS, _Module, libsodium_sumo_default;
14
14
  var init_libsodium_sumo = __esm({
15
- async "../../../../../node_modules/libsodium-sumo/dist/modules-sumo-esm/libsodium-sumo.mjs"() {
15
+ async "../../node_modules/libsodium-sumo/dist/modules-sumo-esm/libsodium-sumo.mjs"() {
16
16
  try {
17
17
  if (typeof process !== "undefined" && process.versions && process.versions.node) {
18
18
  url = await import("url");
@@ -74,9 +74,9 @@ var init_libsodium_sumo = __esm({
74
74
  Module.getRandomValue = randomValuesStandard;
75
75
  } catch (e) {
76
76
  try {
77
- crypto = null;
77
+ crypto2 = null;
78
78
  randomValueNodeJS = function() {
79
- var buf = crypto["randomBytes"](4);
79
+ var buf = crypto2["randomBytes"](4);
80
80
  return (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]) >>> 0;
81
81
  };
82
82
  randomValueNodeJS();
@@ -210,7 +210,7 @@ var init_libsodium_sumo = __esm({
210
210
  }, Module: function(binary) {
211
211
  }, Instance: function(module2, info) {
212
212
  this.exports = // EMSCRIPTEN_START_ASM
213
- function instantiate(ea2) {
213
+ (function instantiate(ea2) {
214
214
  var a2;
215
215
  var b2 = new Uint8Array(123);
216
216
  for (var c2 = 25; c2 >= 0; --c2) {
@@ -40005,7 +40005,7 @@ var init_libsodium_sumo = __esm({
40005
40005
  } } }), f: yi, g: ma2, h: Ba2, i: ma2, j: ka2, k: Le2, l: Je2, m: zg, n: yg, o: xg, p: wg, q: ka2, r: Ba2, s: ka2, t: ka2, u: Le2, v: ra2, w: vg, x: ug, y: tg, z: sg, A: Ba2, B: rg, C: qg, D: pg, E: ng, F: mg, G: lg, H: kg, I: jg, J: ka2, K: Ce2, L: Ba2, M: ma2, N: Ta2, O: ra2, P: ka2, Q: Oa2, R: Ba2, S: ma2, T: Ta2, U: ra2, V: ig, W: hg, X: gg, Y: fg, Z: ka2, _: Ma2, $: Ba2, aa: ma2, ba: Ta2, ca: ra2, da: ka2, ea: ka2, fa: Kg, ga: wd, ha: vd, ia: ra2, ja: ka2, ka: ka2, la: Cb, ma: ra2, na: Xa2, oa: eg, pa: qb, qa: dg, ra: cg, sa: ua2, ta: ka2, ua: Dc, va: ra2, wa: Va2, xa: ud, ya: Ya2, za: bg, Aa: ag, Ba: ka2, Ca: ka2, Da: Dc, Ea: ra2, Fa: ze2, Ga: ud, Ha: Ng, Ia: wd, Ja: vd, Ka: ka2, La: ka2, Ma: ka2, Na: ka2, Oa: Ma2, Pa: ka2, Qa: ma2, Ra: ma2, Sa: Ta2, Ta: dh2, Ua: ch, Va: bh, Wa: ah, Xa: Lb, Ya: Kb, Za: td, _a: sd, $a: rd, ab: $f, bb: _f, cb: Zf, db: qd, eb: Yf, fb: pd, gb: Xf, hb: Wf, ib: Uf, jb: Md, kb: tc, lb: nb, mb, nb: Lb, ob: Kb, pb: td, qb: sd, rb: ka2, sb: ka2, tb: ka2, ub: ka2, vb: Ma2, wb: ka2, xb: ma2, yb: ma2, zb: Ta2, Ab: Aa2, Bb: ka2, Cb: ma2, Db: ka2, Eb: ma2, Fb: Sa2, Gb: ka2, Hb: ma2, Ib: ka2, Jb: ma2, Kb: vb, Lb: ua2, Mb: ma2, Nb: ka2, Ob: ma2, Pb: ub, Qb: ua2, Rb: ma2, Sb: ka2, Tb: ma2, Ub: tb, Vb: ua2, Wb: ma2, Xb: ka2, Yb: ma2, Zb: ma2, _b: ua2, $b: ka2, ac: ma2, bc: ua2, cc: ka2, dc: Nd, ec: pe2, fc: od, gc: fh, hc: nd, ic: eh, jc: ra2, kc: ma2, lc: ua2, mc: ka2, nc: ma2, oc: ua2, pc: ka2, qc: ma2, rc: ma2, sc: pe2, tc: ra2, uc: od, vc: Tf, wc: Ja2, xc: xh, yc: nd, zc: Ia2, Ac: ua2, Bc: md, Cc: Lg, Dc: ka2, Ec: Ag, Fc: Ub, Gc: Sf, Hc: Ua2, Ic: Rf, Jc: ua2, Kc: Cb, Lc: Za2, Mc: ic, Nc: Ca2, Oc: md, Pc: ma2, Qc: ua2, Rc: Oa2, Sc: ka2, Tc: ld, Uc: Nd, Vc: ma2, Wc: ua2, Xc: Oa2, Yc: ka2, Zc: ld, _c: ra2, $c: Gh, ad: Fh, bd: Eh, cd: Dh, dd: ra2, ed: Ch, fd: ka2, gd: Ba2, hd: Bh, id: Cb, jd: ze2, kd: hi, ld: gi, md: fi, nd: ei, od: di, pd: ua2, qd: Ba2, rd: ci, sd: Dc, td: Gg, ud: nb, vd: Fg, wd: Eg, xd: ka2, yd: ka2, zd: ka2, Ad: ka2, Bd: Dg, Cd: Rc, Dd: ma2, Ed: ka2, Fd: kd, Gd: jd, Hd: Sg, Id: id, Jd: Rg, Kd: Qg, Ld: ra2, Md: kd, Nd: jd, Od: Ga2, Pd: id, Qd: Fa2, Rd: ma2, Sd: ka2, Td: Rc, Ud: ra2, Vd: Db, Wd: ma2, Xd: wa2, Yd: Ba2, Zd: wa2, _d: ma2, $d: yc, ae: wh, be: Vb, ce: wa2, de: xc, ee: wc, fe: vc, ge: me2, he: vh, ie: uh, je: Oa2, ke: th, le: Pf, me: Of, ne: Nf, oe: Mf, pe: Lf, qe: fb, re: ma2, se: wa2, te: Ba2, ue: wa2, ve: ma2, we: yc, xe: fe2, ye: Db, ze: wa2, Ae: xc, Be: wc, Ce: fb, De: ee2, Ee: Vb, Fe: de2, Ge: vc, He: uc, Ie: Kf, Je: hd, Ke: Jf, Le: Db, Me: fb, Ne: fb, Oe: ma2, Pe: wa2, Qe: Ba2, Re: wa2, Se: ma2, Te: yc, Ue: fe2, Ve: Db, We: wa2, Xe: xc, Ye: wc, Ze: fb, _e: ee2, $e: Vb, af: de2, bf: vc, cf: uc, df: Hf, ef: hd, ff: Gf, gf: Ff, hf: Ef, jf: sh, kf: Jg, lf: Ig, mf: Hg, nf: ka2, of: ka2, pf: Ea2, qf: wb, rf: ka2, sf: ka2, tf: ka2, uf: Ma2, vf: ka2, wf: ma2, xf: ma2, yf: Ta2, zf: Mg, Af: Lb, Bf: Kb, Cf: ra2, Df: rd, Ef: Df, Ff: qd, Gf: pd, Hf: Lb, If: Kb, Jf: ka2, Kf: Ma2, Lf: ka2, Mf: ma2, Nf: ma2, Of: Ta2, Pf: ra2, Qf: ra2, Rf: Mh, Sf: Lh, Tf: Kh, Uf: Cf, Vf: Bf, Wf: Jh, Xf: Ih, Yf: Ma2, Zf: ka2, _f: Hh, $f: Ba2, ag: Db, bg: fb, cg: Vb, dg: Oa2, eg: ma2, fg: Tg, gg: gd, hg: Je2, ig: Oa2, jg: ma2, kg: gd, lg: Cb, mg: ua2, ng: ka2, og: ka2, pg: ua2, qg: Wd, rg: lh, sg: kh, tg: jh, ug: fd, vg: ed, wg: dd, xg: cd, yg: ih, zg: ic, Ag: hh, Bg: gh, Cg: Cb, Dg: ua2, Eg: ka2, Fg: ka2, Gg: ua2, Hg: Wd, Ig: nh, Jg: mh, Kg: Vd, Lg: ic, Mg: Ud, Ng: Td, Og: Yd, Pg: Xd, Qg: ph, Rg: oh, Sg: cd, Tg: ed, Ug: dd, Vg: fd, Wg: ka2, Xg: Oa2, Yg: wa2, Zg: ka2, _g: Ce2, $g: wa2, ah: zf, bh: yf, ch: xf, dh: wf, eh: vf, fh: uf, gh: ra2, hh: ra2, ih: ka2, jh: Ma2, kh: wa2, lh: qh, mh: bd, nh: ad, oh: ra2, ph: ka2, qh: Oa2, rh: wa2, sh: tf, th: sf, uh: rf, vh: ra2, wh: bd, xh: qf, yh: ad, zh: ka2, Ah: Ma2, Bh: wa2, Ch: ra2, Dh: ma2, Eh: ka2, Fh: ua2, Gh: db, Hh: kb, Ih: xd, Jh: oi, Kh: ni, Lh: Ae2, Mh: mi, Nh: za2, Oh: li, Ph: ka2, Qh: ki, Rh: pf, Sh: Ah, Th: zh, Uh: yh, Vh: Bc, Wh: Ac, Xh: ti, Yh: ji, Zh: ii, _h: Cg, $h: Bg, ai: fb, bi: Ba2, ci: tc, di: nb, ei: rh, fi: $c, gi: of, hi: nf, ii: mf, ji: _c, ki: lf, li: Yc, mi: kf, ni: ka2, oi: ka2, pi: ka2, qi: ka2, ri: Ma2, si: ma2, ti: Ta2, ui: jf, vi: hf, wi: Md, xi: bi, yi: ai, zi: $h, Ai: _h, Bi: Zh, Ci: ye2, Di: xe2, Ei: we2, Fi: ve2, Gi: ue2, Hi: te2, Ii: se2, Ji: re2, Ki: ka2, Li: ua2, Mi: ka2, Ni: ua2, Oi: ka2, Pi: Yh, Qi: Xh, Ri: Wh, Si: Vh, Ti: Uh, Ui: Th, Vi: Sh, Wi: Rh, Xi: Qh, Yi: Ph, Zi: Oh, _i: re2, $i: Nh, aj: ka2, bj: ua2, cj: ua2, dj: ka2, ej: gf, fj: ma2, gj: wa2, hj: Ba2, ij: wa2, jj: ka2, kj: $g, lj: _g, mj: Zg, nj: wa2, oj: Ed, pj: wa2, qj: Yg, rj: Ed, sj: me2, tj: uc, uj: ff, vj: ef, wj: df, xj: cf, yj: Xg, zj: Wg, Aj: Vg, Bj: Ug, Cj: ka2, Dj: ka2, Ej: Pg, Fj: Og, Gj: ka2, Hj: ka2, Ij: $c, Jj: bf, Kj: _c, Lj: Yc, Mj: ka2, Nj: Ma2, Oj: ma2, Pj: Ta2, Qj: ma2, Rj: ma2, Sj: af, Tj: $e2, Uj: _e2, Vj: ka2, Wj: Oa2, Xj: wa2, Yj: ra2, Zj: Ze2, _j: Ye2, $j: ka2, ak: Oa2, bk: wa2, ck: ra2, dk: ka2, ek: Ma2, fk: wa2, gk: Xe2, hk: We2, ik: Ve2, jk: ra2, kk: Da2, lk: ta2 };
40006
40006
  }
40007
40007
  return da2(ea2);
40008
- }(info);
40008
+ })(info);
40009
40009
  }, instantiate: function(binary, info) {
40010
40010
  return { then: function(ok) {
40011
40011
  var module2 = new WebAssembly2.Module(binary);
@@ -40279,7 +40279,7 @@ var init_libsodium_sumo = __esm({
40279
40279
  try {
40280
40280
  var window_ = "object" === typeof window ? window : self;
40281
40281
  var crypto_ = typeof window_.crypto !== "undefined" ? window_.crypto : window_.msCrypto;
40282
- crypto_ = crypto_ === void 0 ? crypto : crypto_;
40282
+ crypto_ = crypto_ === void 0 ? crypto2 : crypto_;
40283
40283
  var randomValuesStandard = function() {
40284
40284
  var buf = new Uint32Array(1);
40285
40285
  crypto_.getRandomValues(buf);
@@ -40289,9 +40289,9 @@ var init_libsodium_sumo = __esm({
40289
40289
  Module3.getRandomValue = randomValuesStandard;
40290
40290
  } catch (e) {
40291
40291
  try {
40292
- var crypto = null;
40292
+ var crypto2 = null;
40293
40293
  var randomValueNodeJS = function() {
40294
- var buf = crypto["randomBytes"](4);
40294
+ var buf = crypto2["randomBytes"](4);
40295
40295
  return (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]) >>> 0;
40296
40296
  };
40297
40297
  randomValueNodeJS();
@@ -41339,7 +41339,7 @@ var init_libsodium_sumo = __esm({
41339
41339
  try {
41340
41340
  var window_ = "object" === typeof window ? window : self;
41341
41341
  var crypto_ = typeof window_.crypto !== "undefined" ? window_.crypto : window_.msCrypto;
41342
- crypto_ = crypto_ === void 0 ? crypto : crypto_;
41342
+ crypto_ = crypto_ === void 0 ? crypto2 : crypto_;
41343
41343
  var randomValuesStandard = function() {
41344
41344
  var buf = new Uint32Array(1);
41345
41345
  crypto_.getRandomValues(buf);
@@ -41349,9 +41349,9 @@ var init_libsodium_sumo = __esm({
41349
41349
  Module2.getRandomValue = randomValuesStandard;
41350
41350
  } catch (e) {
41351
41351
  try {
41352
- var crypto = null;
41352
+ var crypto2 = null;
41353
41353
  var randomValueNodeJS = function() {
41354
- var buf = crypto["randomBytes"](4);
41354
+ var buf = crypto2["randomBytes"](4);
41355
41355
  return (buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]) >>> 0;
41356
41356
  };
41357
41357
  randomValueNodeJS();
@@ -42009,7 +42009,7 @@ var init_libsodium_sumo = __esm({
42009
42009
  }
42010
42010
  });
42011
42011
 
42012
- // ../../../../../node_modules/libsodium-wrappers-sumo/dist/modules-sumo-esm/libsodium-wrappers.mjs
42012
+ // ../../node_modules/libsodium-wrappers-sumo/dist/modules-sumo-esm/libsodium-wrappers.mjs
42013
42013
  function _(e) {
42014
42014
  if ("function" == typeof TextEncoder) return new TextEncoder().encode(e);
42015
42015
  e = unescape(encodeURIComponent(e));
@@ -44529,7 +44529,7 @@ function qr() {
44529
44529
  }
44530
44530
  var a, r, t, c, libsodium_wrappers_default;
44531
44531
  var init_libsodium_wrappers = __esm({
44532
- async "../../../../../node_modules/libsodium-wrappers-sumo/dist/modules-sumo-esm/libsodium-wrappers.mjs"() {
44532
+ async "../../node_modules/libsodium-wrappers-sumo/dist/modules-sumo-esm/libsodium-wrappers.mjs"() {
44533
44533
  await init_libsodium_sumo();
44534
44534
  r = {};
44535
44535
  t = libsodium_sumo_default.ready.then(function() {
@@ -44611,7 +44611,7 @@ var init_libsodium_wrappers = __esm({
44611
44611
  }
44612
44612
  });
44613
44613
 
44614
- // ../../../../../packages/crypto/dist/keys.js
44614
+ // ../crypto/dist/keys.js
44615
44615
  async function generateIdentityKeypair() {
44616
44616
  await libsodium_wrappers_default.ready;
44617
44617
  const kp = libsodium_wrappers_default.crypto_sign_keypair();
@@ -44638,13 +44638,13 @@ function createProofOfPossession(privateKey, publicKey) {
44638
44638
  return libsodium_wrappers_default.crypto_sign_detached(publicKey, privateKey);
44639
44639
  }
44640
44640
  var init_keys = __esm({
44641
- async "../../../../../packages/crypto/dist/keys.js"() {
44641
+ async "../crypto/dist/keys.js"() {
44642
44642
  "use strict";
44643
44643
  await init_libsodium_wrappers();
44644
44644
  }
44645
44645
  });
44646
44646
 
44647
- // ../../../../../packages/crypto/dist/x3dh.js
44647
+ // ../crypto/dist/x3dh.js
44648
44648
  function ed25519PrivateToX25519(edPrivate) {
44649
44649
  return libsodium_wrappers_default.crypto_sign_ed25519_sk_to_curve25519(edPrivate);
44650
44650
  }
@@ -44666,13 +44666,13 @@ function performX3DH(params) {
44666
44666
  return libsodium_wrappers_default.crypto_generichash(32, combined);
44667
44667
  }
44668
44668
  var init_x3dh = __esm({
44669
- async "../../../../../packages/crypto/dist/x3dh.js"() {
44669
+ async "../crypto/dist/x3dh.js"() {
44670
44670
  "use strict";
44671
44671
  await init_libsodium_wrappers();
44672
44672
  }
44673
44673
  });
44674
44674
 
44675
- // ../../../../../packages/crypto/dist/ratchet.js
44675
+ // ../crypto/dist/ratchet.js
44676
44676
  function kdfChainKey(chainKey) {
44677
44677
  const nextChainKey = libsodium_wrappers_default.crypto_generichash(32, chainKey, CHAIN_KEY_SEED);
44678
44678
  const messageKey = libsodium_wrappers_default.crypto_generichash(32, chainKey, MSG_KEY_SEED);
@@ -44711,7 +44711,7 @@ function verifyHeaderSignature(header, signature, identityPublicKey) {
44711
44711
  }
44712
44712
  var MAX_SKIP, CHAIN_KEY_SEED, MSG_KEY_SEED, DoubleRatchet;
44713
44713
  var init_ratchet = __esm({
44714
- async "../../../../../packages/crypto/dist/ratchet.js"() {
44714
+ async "../crypto/dist/ratchet.js"() {
44715
44715
  "use strict";
44716
44716
  await init_libsodium_wrappers();
44717
44717
  MAX_SKIP = 100;
@@ -44783,6 +44783,22 @@ var init_ratchet = __esm({
44783
44783
  const currentDhHex = this.state.dhReceivingPublicKey ? libsodium_wrappers_default.to_hex(this.state.dhReceivingPublicKey) : null;
44784
44784
  if (currentDhHex === null && this.state.receivingChain) {
44785
44785
  this.state.dhReceivingPublicKey = message.header.dhPublicKey;
44786
+ } else if (currentDhHex === null && !this.state.receivingChain) {
44787
+ if (message.header.messageNumber === 0) {
44788
+ try {
44789
+ const { messageKey: testKey, nextChainKey: nextChainKey2 } = kdfChainKey(this.state.rootKey);
44790
+ const ad2 = serializeHeader(message.header);
44791
+ const ptBytes = libsodium_wrappers_default.crypto_aead_xchacha20poly1305_ietf_decrypt(null, message.ciphertext, ad2, message.nonce, testKey);
44792
+ this.state.dhReceivingPublicKey = message.header.dhPublicKey;
44793
+ this.state.receivingChain = {
44794
+ chainKey: nextChainKey2,
44795
+ messageNumber: 1
44796
+ };
44797
+ return libsodium_wrappers_default.to_string(ptBytes);
44798
+ } catch {
44799
+ }
44800
+ }
44801
+ this.dhRatchetReceive(message.header.dhPublicKey);
44786
44802
  } else if (headerDhHex !== currentDhHex) {
44787
44803
  if (this.state.receivingChain && this.state.dhReceivingPublicKey) {
44788
44804
  this.skipMessages(this.state.receivingChain, message.header.previousChainLength, this.state.dhReceivingPublicKey);
@@ -44940,7 +44956,7 @@ var init_ratchet = __esm({
44940
44956
  }
44941
44957
  });
44942
44958
 
44943
- // ../../../../../packages/crypto/dist/file-crypto.js
44959
+ // ../crypto/dist/file-crypto.js
44944
44960
  function encryptFile(plainData) {
44945
44961
  const fileKey = libsodium_wrappers_default.randombytes_buf(libsodium_wrappers_default.crypto_aead_xchacha20poly1305_ietf_KEYBYTES);
44946
44962
  const fileNonce = libsodium_wrappers_default.randombytes_buf(libsodium_wrappers_default.crypto_aead_xchacha20poly1305_ietf_NPUBBYTES);
@@ -44973,23 +44989,23 @@ function computeFileDigest(data) {
44973
44989
  return libsodium_wrappers_default.to_hex(digestBytes);
44974
44990
  }
44975
44991
  var init_file_crypto = __esm({
44976
- async "../../../../../packages/crypto/dist/file-crypto.js"() {
44992
+ async "../crypto/dist/file-crypto.js"() {
44977
44993
  "use strict";
44978
44994
  await init_libsodium_wrappers();
44979
44995
  }
44980
44996
  });
44981
44997
 
44982
- // ../../../../../packages/crypto/dist/did.js
44998
+ // ../crypto/dist/did.js
44983
44999
  var init_did = __esm({
44984
- async "../../../../../packages/crypto/dist/did.js"() {
45000
+ async "../crypto/dist/did.js"() {
44985
45001
  "use strict";
44986
45002
  }
44987
45003
  });
44988
45004
 
44989
- // ../../../../../packages/crypto/dist/scan-engine.js
45005
+ // ../crypto/dist/scan-engine.js
44990
45006
  var BUILTIN_PATTERNS, ScanEngine;
44991
45007
  var init_scan_engine = __esm({
44992
- "../../../../../packages/crypto/dist/scan-engine.js"() {
45008
+ "../crypto/dist/scan-engine.js"() {
44993
45009
  "use strict";
44994
45010
  BUILTIN_PATTERNS = {
44995
45011
  pii_ssn: [/\b\d{3}-\d{2}-\d{4}\b/g, /\b\d{9}\b/g],
@@ -45144,14 +45160,22 @@ var init_scan_engine = __esm({
45144
45160
  }
45145
45161
  });
45146
45162
 
45147
- // ../../../../../packages/crypto/dist/merkle.js
45163
+ // ../crypto/dist/merkle.js
45148
45164
  var init_merkle = __esm({
45149
- async "../../../../../packages/crypto/dist/merkle.js"() {
45165
+ async "../crypto/dist/merkle.js"() {
45166
+ "use strict";
45167
+ }
45168
+ });
45169
+
45170
+ // ../crypto/dist/vc.js
45171
+ var init_vc = __esm({
45172
+ async "../crypto/dist/vc.js"() {
45150
45173
  "use strict";
45174
+ await init_did();
45151
45175
  }
45152
45176
  });
45153
45177
 
45154
- // ../../../../../packages/crypto/dist/transport.js
45178
+ // ../crypto/dist/transport.js
45155
45179
  function hexToBytes(hex) {
45156
45180
  return libsodium_wrappers_default.from_hex(hex);
45157
45181
  }
@@ -45194,15 +45218,229 @@ function transportToEncryptedMessage(transport) {
45194
45218
  };
45195
45219
  }
45196
45220
  var init_transport = __esm({
45197
- async "../../../../../packages/crypto/dist/transport.js"() {
45221
+ async "../crypto/dist/transport.js"() {
45198
45222
  "use strict";
45199
45223
  await init_libsodium_wrappers();
45200
45224
  }
45201
45225
  });
45202
45226
 
45203
- // ../../../../../packages/crypto/dist/index.js
45227
+ // ../crypto/dist/telemetry.js
45228
+ function randomHex(byteCount) {
45229
+ const bytes = new Uint8Array(byteCount);
45230
+ crypto.getRandomValues(bytes);
45231
+ let hex = "";
45232
+ for (let i2 = 0; i2 < bytes.length; i2++) {
45233
+ hex += bytes[i2].toString(16).padStart(2, "0");
45234
+ }
45235
+ return hex;
45236
+ }
45237
+ function generateTraceId() {
45238
+ return randomHex(16);
45239
+ }
45240
+ function generateSpanId() {
45241
+ return randomHex(8);
45242
+ }
45243
+ function buildLlmSpan(opts) {
45244
+ const now = Date.now();
45245
+ const attributes = {
45246
+ "ai.agent.llm.model": opts.model,
45247
+ "ai.agent.llm.latency_ms": opts.latencyMs,
45248
+ "ai.agent.llm.tokens_input": opts.tokensInput,
45249
+ "ai.agent.llm.tokens_output": opts.tokensOutput
45250
+ };
45251
+ if (opts.provider !== void 0) {
45252
+ attributes["ai.agent.llm.provider"] = opts.provider;
45253
+ }
45254
+ const isError = opts.status === "error";
45255
+ const status = isError ? { code: 2, ...opts.statusMessage ? { message: opts.statusMessage } : {} } : { code: 0 };
45256
+ return {
45257
+ traceId: opts.traceId ?? generateTraceId(),
45258
+ spanId: opts.spanId ?? generateSpanId(),
45259
+ parentSpanId: opts.parentSpanId,
45260
+ name: "llm.inference",
45261
+ kind: "internal",
45262
+ startTime: now - opts.latencyMs,
45263
+ endTime: now,
45264
+ attributes,
45265
+ status
45266
+ };
45267
+ }
45268
+ function buildToolSpan(opts) {
45269
+ const now = Date.now();
45270
+ const attributes = {
45271
+ "ai.agent.tool.name": opts.toolName,
45272
+ "ai.agent.tool.latency_ms": opts.latencyMs,
45273
+ "ai.agent.tool.success": opts.success
45274
+ };
45275
+ const status = opts.success ? { code: 0 } : { code: 2, ...opts.errorMessage ? { message: opts.errorMessage } : {} };
45276
+ return {
45277
+ traceId: opts.traceId ?? generateTraceId(),
45278
+ spanId: opts.spanId ?? generateSpanId(),
45279
+ parentSpanId: opts.parentSpanId,
45280
+ name: "tool.execute",
45281
+ kind: "internal",
45282
+ startTime: now - opts.latencyMs,
45283
+ endTime: now,
45284
+ attributes,
45285
+ status
45286
+ };
45287
+ }
45288
+ function buildErrorSpan(opts) {
45289
+ const now = Date.now();
45290
+ return {
45291
+ traceId: opts.traceId ?? generateTraceId(),
45292
+ spanId: opts.spanId ?? generateSpanId(),
45293
+ parentSpanId: opts.parentSpanId,
45294
+ name: "error",
45295
+ kind: opts.spanKind ?? "internal",
45296
+ startTime: now,
45297
+ endTime: now,
45298
+ attributes: {
45299
+ "ai.agent.error.type": opts.errorType,
45300
+ "ai.agent.error.message": opts.errorMessage
45301
+ },
45302
+ status: { code: 2, message: opts.errorMessage }
45303
+ };
45304
+ }
45305
+ var init_telemetry = __esm({
45306
+ "../crypto/dist/telemetry.js"() {
45307
+ "use strict";
45308
+ }
45309
+ });
45310
+
45311
+ // ../crypto/dist/telemetry-reporter.js
45312
+ function toOtlpAttributes(attrs) {
45313
+ return Object.entries(attrs).map(([key, val]) => {
45314
+ if (typeof val === "string") {
45315
+ return { key, value: { stringValue: val } };
45316
+ }
45317
+ if (typeof val === "boolean") {
45318
+ return { key, value: { boolValue: val } };
45319
+ }
45320
+ if (Number.isInteger(val)) {
45321
+ return { key, value: { intValue: val } };
45322
+ }
45323
+ return { key, value: { doubleValue: val } };
45324
+ });
45325
+ }
45326
+ function spanToOtlp(span) {
45327
+ const otlp = {
45328
+ traceId: span.traceId,
45329
+ spanId: span.spanId,
45330
+ name: span.name,
45331
+ kind: span.kind,
45332
+ startTimeUnixNano: String(span.startTime * 1e6),
45333
+ endTimeUnixNano: String(span.endTime * 1e6),
45334
+ attributes: toOtlpAttributes(span.attributes)
45335
+ };
45336
+ if (span.parentSpanId !== void 0) {
45337
+ otlp.parentSpanId = span.parentSpanId;
45338
+ }
45339
+ if (span.status) {
45340
+ otlp.status = span.status;
45341
+ }
45342
+ if (span.events && span.events.length > 0) {
45343
+ otlp.events = span.events;
45344
+ }
45345
+ return otlp;
45346
+ }
45347
+ var TelemetryReporter;
45348
+ var init_telemetry_reporter = __esm({
45349
+ "../crypto/dist/telemetry-reporter.js"() {
45350
+ "use strict";
45351
+ init_telemetry();
45352
+ TelemetryReporter = class {
45353
+ _apiBase;
45354
+ _hubId;
45355
+ _authHeader;
45356
+ _fetch;
45357
+ _buffer = [];
45358
+ _timer = null;
45359
+ constructor(config) {
45360
+ this._apiBase = config.apiBase.replace(/\/+$/, "");
45361
+ this._hubId = config.hubId;
45362
+ this._authHeader = config.authHeader;
45363
+ this._fetch = config.fetchImpl ?? globalThis.fetch;
45364
+ }
45365
+ /** Number of spans waiting to be flushed. */
45366
+ get pendingCount() {
45367
+ return this._buffer.length;
45368
+ }
45369
+ // -- Report methods ---------------------------------------------------------
45370
+ /** Record an LLM inference call. */
45371
+ reportLlmCall(opts) {
45372
+ this._buffer.push(buildLlmSpan(opts));
45373
+ }
45374
+ /** Record a tool/function invocation. */
45375
+ reportToolCall(opts) {
45376
+ this._buffer.push(buildToolSpan(opts));
45377
+ }
45378
+ /** Record an error event. */
45379
+ reportError(opts) {
45380
+ this._buffer.push(buildErrorSpan(opts));
45381
+ }
45382
+ /** Record an arbitrary pre-built span. */
45383
+ reportCustomSpan(span) {
45384
+ this._buffer.push(span);
45385
+ }
45386
+ // -- Flush ------------------------------------------------------------------
45387
+ /**
45388
+ * POST all buffered spans to the backend ingest endpoint.
45389
+ *
45390
+ * - On success (HTTP 2xx): clears the buffer.
45391
+ * - On failure: keeps spans in the buffer for retry.
45392
+ * - Never throws — telemetry is best-effort.
45393
+ */
45394
+ async flush() {
45395
+ if (this._buffer.length === 0) {
45396
+ return;
45397
+ }
45398
+ const spans = this._buffer;
45399
+ this._buffer = [];
45400
+ try {
45401
+ const response = await this._fetch(`${this._apiBase}/api/v1/telemetry/ingest`, {
45402
+ method: "POST",
45403
+ headers: {
45404
+ "Content-Type": "application/json",
45405
+ Authorization: this._authHeader
45406
+ },
45407
+ body: JSON.stringify({
45408
+ hub_id: this._hubId,
45409
+ spans: spans.map(spanToOtlp)
45410
+ })
45411
+ });
45412
+ if (!response.ok) {
45413
+ this._buffer = spans.concat(this._buffer);
45414
+ }
45415
+ } catch {
45416
+ this._buffer = spans.concat(this._buffer);
45417
+ }
45418
+ }
45419
+ // -- Auto-flush -------------------------------------------------------------
45420
+ /**
45421
+ * Start a periodic flush timer.
45422
+ * @param intervalMs Flush interval in milliseconds (default 30 000).
45423
+ */
45424
+ startAutoFlush(intervalMs = 3e4) {
45425
+ this.stopAutoFlush();
45426
+ this._timer = setInterval(() => {
45427
+ void this.flush();
45428
+ }, intervalMs);
45429
+ }
45430
+ /** Stop the periodic flush timer. Safe to call when not started. */
45431
+ stopAutoFlush() {
45432
+ if (this._timer !== null) {
45433
+ clearInterval(this._timer);
45434
+ this._timer = null;
45435
+ }
45436
+ }
45437
+ };
45438
+ }
45439
+ });
45440
+
45441
+ // ../crypto/dist/index.js
45204
45442
  var init_dist = __esm({
45205
- async "../../../../../packages/crypto/dist/index.js"() {
45443
+ async "../crypto/dist/index.js"() {
45206
45444
  "use strict";
45207
45445
  await init_keys();
45208
45446
  await init_x3dh();
@@ -45211,7 +45449,10 @@ var init_dist = __esm({
45211
45449
  await init_did();
45212
45450
  init_scan_engine();
45213
45451
  await init_merkle();
45452
+ await init_vc();
45214
45453
  await init_transport();
45454
+ init_telemetry();
45455
+ init_telemetry_reporter();
45215
45456
  }
45216
45457
  });
45217
45458
 
@@ -45397,6 +45638,7 @@ var init_channel = __esm({
45397
45638
  _a2aPendingQueue = {};
45398
45639
  _scanEngine = null;
45399
45640
  _scanRuleSetVersion = 0;
45641
+ _telemetryReporter = null;
45400
45642
  /** Topic ID from the most recent inbound message — used as fallback for replies. */
45401
45643
  _lastIncomingTopicId;
45402
45644
  // Liveness detection: server sends app-level {"event":"ping"} every 30s.
@@ -45427,6 +45669,10 @@ var init_channel = __esm({
45427
45669
  get sessionCount() {
45428
45670
  return this._sessions.size;
45429
45671
  }
45672
+ /** Returns the TelemetryReporter instance (available after WebSocket connect). */
45673
+ get telemetry() {
45674
+ return this._telemetryReporter;
45675
+ }
45430
45676
  async start() {
45431
45677
  this._stopped = false;
45432
45678
  await libsodium_wrappers_default.ready;
@@ -45971,6 +46217,11 @@ var init_channel = __esm({
45971
46217
  clearTimeout(this._reconnectTimer);
45972
46218
  this._reconnectTimer = null;
45973
46219
  }
46220
+ if (this._telemetryReporter) {
46221
+ this._telemetryReporter.stopAutoFlush();
46222
+ await this._telemetryReporter.flush();
46223
+ this._telemetryReporter = null;
46224
+ }
45974
46225
  if (this._ws) {
45975
46226
  this._ws.removeAllListeners();
45976
46227
  this._ws.close();
@@ -46494,6 +46745,14 @@ var init_channel = __esm({
46494
46745
  this._scanEngine = new ScanEngine();
46495
46746
  await this._fetchScanRules();
46496
46747
  }
46748
+ if (!this._telemetryReporter && this._persisted?.deviceJwt && this._persisted?.hubAddress) {
46749
+ this._telemetryReporter = new TelemetryReporter({
46750
+ apiBase: this.config.apiUrl,
46751
+ hubId: this._persisted.hubAddress,
46752
+ authHeader: `Bearer ${this._persisted.deviceJwt}`
46753
+ });
46754
+ this._telemetryReporter.startAutoFlush(3e4);
46755
+ }
46497
46756
  this.emit("ready");
46498
46757
  } catch (openErr) {
46499
46758
  console.error("[SecureChannel] Error in WS open handler:", openErr);
@@ -47810,7 +48069,7 @@ var init_gateway_send = __esm({
47810
48069
 
47811
48070
  // src/index.ts
47812
48071
  var VERSION;
47813
- var init_src = __esm({
48072
+ var init_index = __esm({
47814
48073
  async "src/index.ts"() {
47815
48074
  "use strict";
47816
48075
  await init_channel();
@@ -48114,7 +48373,7 @@ var init_setup = __esm({
48114
48373
  async "src/setup.ts"() {
48115
48374
  "use strict";
48116
48375
  await init_channel();
48117
- await init_src();
48376
+ await init_index();
48118
48377
  }
48119
48378
  });
48120
48379