@rei-standard/amsg-server 2.6.0-next.2 → 2.6.0-next.20

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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +452 -24
  3. package/dist/adapters/d1.d.ts +388 -0
  4. package/dist/adapters/factory.d.ts +39 -0
  5. package/dist/adapters/interface.d.ts +265 -0
  6. package/dist/adapters/neon.d.ts +82 -0
  7. package/dist/adapters/pg-shared.d.ts +161 -0
  8. package/dist/adapters/pg.d.ts +84 -0
  9. package/dist/adapters/schema.d.ts +41 -0
  10. package/dist/adapters/schema.sqlite.d.ts +49 -0
  11. package/dist/chunk-5FXVSC5O.mjs +144 -0
  12. package/dist/chunk-E7OWP3VL.cjs +135 -0
  13. package/dist/chunk-HTGYGGUH.mjs +4998 -0
  14. package/dist/chunk-V6NZQ22S.cjs +144 -0
  15. package/dist/chunk-WOXSQBAM.cjs +4998 -0
  16. package/dist/chunk-ZGGF4GMA.mjs +135 -0
  17. package/dist/cloudflare/single-user-worker.d.ts +37 -0
  18. package/dist/cloudflare.cjs +35 -2
  19. package/dist/cloudflare.d.ts +9 -2
  20. package/dist/cloudflare.mjs +36 -3
  21. package/dist/handlers/cancel-message.d.ts +3 -0
  22. package/dist/handlers/capabilities.d.ts +4 -0
  23. package/dist/handlers/client-state.d.ts +7 -0
  24. package/dist/handlers/get-message.d.ts +3 -0
  25. package/dist/handlers/get-user-key.d.ts +3 -0
  26. package/dist/handlers/init-tenant.d.ts +23 -0
  27. package/dist/handlers/llm-credentials.d.ts +5 -0
  28. package/dist/handlers/messages.d.ts +3 -0
  29. package/dist/handlers/outbox.d.ts +7 -0
  30. package/dist/handlers/push-subscription.d.ts +5 -0
  31. package/dist/handlers/schedule-message.d.ts +3 -0
  32. package/dist/handlers/send-notifications.d.ts +3 -0
  33. package/dist/handlers/single-user-init.d.ts +13 -0
  34. package/dist/handlers/update-message.d.ts +3 -0
  35. package/dist/handlers/vapid-public-key.d.ts +19 -0
  36. package/dist/index.cjs +121 -44
  37. package/dist/index.d.cts +113 -766
  38. package/dist/index.d.ts +113 -766
  39. package/dist/index.mjs +113 -36
  40. package/dist/lib/agentic-fire.d.ts +108 -0
  41. package/dist/lib/client-state-store.d.ts +61 -0
  42. package/dist/lib/constant-time.d.ts +14 -0
  43. package/dist/lib/db-errors.d.ts +10 -0
  44. package/dist/lib/encryption.d.ts +48 -0
  45. package/dist/lib/errors.d.ts +93 -0
  46. package/dist/lib/llm-credentials-store.d.ts +147 -0
  47. package/dist/lib/llm.d.ts +1 -0
  48. package/dist/lib/message-processor.d.ts +56 -0
  49. package/dist/lib/outbox-store.d.ts +33 -0
  50. package/dist/lib/push-subscription-store.d.ts +71 -0
  51. package/dist/lib/recurrence.d.ts +51 -0
  52. package/dist/lib/request.d.ts +135 -0
  53. package/dist/lib/run-tick.d.ts +106 -0
  54. package/dist/lib/schema-version.d.ts +50 -0
  55. package/dist/lib/state-accessors.d.ts +70 -0
  56. package/dist/lib/state-chunks.d.ts +55 -0
  57. package/dist/lib/task-projection.d.ts +87 -0
  58. package/dist/lib/validation.d.ts +62 -0
  59. package/dist/lib/version.d.ts +7 -0
  60. package/dist/lib/webcrypto-utils.d.ts +1 -0
  61. package/dist/lib/webpush-webcrypto.d.ts +78 -0
  62. package/dist/{neon-BFUS25UX.cjs → neon-U6TQFKMJ.cjs} +100 -8
  63. package/dist/{neon-CU5N3CSW.mjs → neon-Y4KEZO5C.mjs} +96 -4
  64. package/dist/{pg-IIH3M4OM.cjs → pg-B324Q2R4.cjs} +89 -8
  65. package/dist/{pg-QO6NKTGL.mjs → pg-GWJZBWAM.mjs} +85 -4
  66. package/dist/single-user.d.ts +94 -0
  67. package/dist/tenant/blob-store.d.ts +30 -0
  68. package/dist/tenant/context.d.ts +47 -0
  69. package/dist/tenant/single-user-context.d.ts +29 -0
  70. package/dist/tenant/token.d.ts +26 -0
  71. package/package.json +3 -3
  72. package/dist/chunk-5ENJGVZX.mjs +0 -72
  73. package/dist/chunk-GN5QTMCL.cjs +0 -1870
  74. package/dist/chunk-PVNLB6TF.mjs +0 -1870
  75. package/dist/chunk-RGECD4OH.cjs +0 -72
  76. package/dist/cloudflare-B-E51VjP.d.cts +0 -2848
  77. package/dist/cloudflare-B-E51VjP.d.ts +0 -2848
  78. package/dist/cloudflare.d.cts +0 -2
  79. package/dist/neon-CJl66EGy.d.cts +0 -251
  80. package/dist/neon-DYvGnCzx.d.ts +0 -251
  81. package/dist/pg-07S-u_H4.d.cts +0 -246
  82. package/dist/pg-Du-pN_UT.d.ts +0 -246
  83. package/dist/schema-C8OnYk6j.d.cts +0 -74
  84. package/dist/schema-C8OnYk6j.d.ts +0 -74
package/dist/index.cjs CHANGED
@@ -23,7 +23,52 @@
23
23
 
24
24
 
25
25
 
26
- var _chunkGN5QTMCLcjs = require('./chunk-GN5QTMCL.cjs');
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+ var _chunkWOXSQBAMcjs = require('./chunk-WOXSQBAM.cjs');
71
+ require('./chunk-V6NZQ22S.cjs');
27
72
 
28
73
  // src/server/adapters/factory.js
29
74
  async function createAdapter(config) {
@@ -39,11 +84,11 @@ async function createAdapter(config) {
39
84
  }
40
85
  switch (config.driver) {
41
86
  case "neon": {
42
- const { NeonAdapter } = await Promise.resolve().then(() => _interopRequireWildcard(require("./neon-BFUS25UX.cjs")));
87
+ const { NeonAdapter } = await Promise.resolve().then(() => _interopRequireWildcard(require("./neon-U6TQFKMJ.cjs")));
43
88
  return new NeonAdapter(config.connectionString);
44
89
  }
45
90
  case "pg": {
46
- const { PgAdapter } = await Promise.resolve().then(() => _interopRequireWildcard(require("./pg-IIH3M4OM.cjs")));
91
+ const { PgAdapter } = await Promise.resolve().then(() => _interopRequireWildcard(require("./pg-B324Q2R4.cjs")));
47
92
  return new PgAdapter(config.connectionString);
48
93
  }
49
94
  default:
@@ -56,7 +101,7 @@ async function createAdapter(config) {
56
101
  // src/server/handlers/init-tenant.js
57
102
  function createInitTenantHandler(ctx) {
58
103
  async function POST(headers, body) {
59
- const initSecret = _chunkGN5QTMCLcjs.getHeader.call(void 0, headers, "x-init-secret");
104
+ const initSecret = _chunkWOXSQBAMcjs.getHeader.call(void 0, headers, "x-init-secret");
60
105
  if (ctx.tenant.initSecret && initSecret !== ctx.tenant.initSecret) {
61
106
  return {
62
107
  status: 401,
@@ -69,7 +114,7 @@ function createInitTenantHandler(ctx) {
69
114
  }
70
115
  };
71
116
  }
72
- const parsed = _chunkGN5QTMCLcjs.parseJsonBody.call(void 0, body);
117
+ const parsed = _chunkWOXSQBAMcjs.parseJsonBody.call(void 0, body);
73
118
  if (!parsed.ok) {
74
119
  return {
75
120
  status: 400,
@@ -83,7 +128,7 @@ function createInitTenantHandler(ctx) {
83
128
  const tenantId = payload.tenantId || void 0;
84
129
  const driver = payload.driver;
85
130
  const databaseUrl = payload.databaseUrl || payload.connectionString;
86
- if (tenantId && !_chunkGN5QTMCLcjs.isValidUUIDv4.call(void 0, tenantId)) {
131
+ if (tenantId && !_chunkWOXSQBAMcjs.isValidUUIDv4.call(void 0, tenantId)) {
87
132
  return {
88
133
  status: 400,
89
134
  body: {
@@ -203,7 +248,7 @@ function createSendNotificationsHandler(ctx) {
203
248
  }
204
249
  };
205
250
  }
206
- const data = await _chunkGN5QTMCLcjs.runScheduledTick.call(void 0, { ...ctx, db, masterKey });
251
+ const data = await _chunkWOXSQBAMcjs.runScheduledTick.call(void 0, { ...ctx, db, masterKey });
207
252
  return { status: 200, body: { success: true, data } };
208
253
  }
209
254
  return { POST };
@@ -212,14 +257,6 @@ function createSendNotificationsHandler(ctx) {
212
257
  // src/server/tenant/blob-store.js
213
258
  var _crypto = require('crypto');
214
259
  var inMemoryNamespaces = /* @__PURE__ */ new Map();
215
- function base64UrlEncode(input) {
216
- return Buffer.from(input).toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
217
- }
218
- function base64UrlDecode(input) {
219
- const normalized = input.replace(/-/g, "+").replace(/_/g, "/");
220
- const padLength = (4 - normalized.length % 4) % 4;
221
- return Buffer.from(normalized + "=".repeat(padLength), "base64");
222
- }
223
260
  function getKekBuffer(kek) {
224
261
  const value = String(kek || "").trim();
225
262
  if (!value) {
@@ -233,16 +270,16 @@ function encryptConfig(config, kekBuffer) {
233
270
  const plaintext = Buffer.from(JSON.stringify(config), "utf8");
234
271
  const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
235
272
  const authTag = cipher.getAuthTag();
236
- return `v1.${base64UrlEncode(iv)}.${base64UrlEncode(authTag)}.${base64UrlEncode(ciphertext)}`;
273
+ return `v1.${_chunkWOXSQBAMcjs.bytesToBase64Url.call(void 0, iv)}.${_chunkWOXSQBAMcjs.bytesToBase64Url.call(void 0, authTag)}.${_chunkWOXSQBAMcjs.bytesToBase64Url.call(void 0, ciphertext)}`;
237
274
  }
238
275
  function decryptConfig(encrypted, kekBuffer) {
239
276
  const parts = String(encrypted || "").split(".");
240
277
  if (parts.length !== 4 || parts[0] !== "v1") {
241
278
  throw new Error("INVALID_TENANT_CONFIG");
242
279
  }
243
- const iv = base64UrlDecode(parts[1]);
244
- const authTag = base64UrlDecode(parts[2]);
245
- const ciphertext = base64UrlDecode(parts[3]);
280
+ const iv = _chunkWOXSQBAMcjs.base64UrlToBytes.call(void 0, parts[1]);
281
+ const authTag = _chunkWOXSQBAMcjs.base64UrlToBytes.call(void 0, parts[2]);
282
+ const ciphertext = _chunkWOXSQBAMcjs.base64UrlToBytes.call(void 0, parts[3]);
246
283
  const decipher = _crypto.createDecipheriv.call(void 0, "aes-256-gcm", kekBuffer, iv);
247
284
  decipher.setAuthTag(authTag);
248
285
  const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString("utf8");
@@ -309,16 +346,8 @@ function createTenantBlobStore(options) {
309
346
 
310
347
  // src/server/tenant/token.js
311
348
 
312
- function base64UrlEncode2(input) {
313
- return Buffer.from(input).toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
314
- }
315
- function base64UrlDecode2(input) {
316
- const normalized = input.replace(/-/g, "+").replace(/_/g, "/");
317
- const padLength = (4 - normalized.length % 4) % 4;
318
- return Buffer.from(normalized + "=".repeat(padLength), "base64");
319
- }
320
349
  function sign(input, secret) {
321
- return base64UrlEncode2(_crypto.createHmac.call(void 0, "sha256", secret).update(input).digest());
350
+ return _chunkWOXSQBAMcjs.bytesToBase64Url.call(void 0, _crypto.createHmac.call(void 0, "sha256", secret).update(input).digest());
322
351
  }
323
352
  function nowEpochSeconds() {
324
353
  return Math.floor(Date.now() / 1e3);
@@ -334,8 +363,8 @@ function createTenantToken(params, secret) {
334
363
  v: 1
335
364
  };
336
365
  const header = { alg: "HS256", typ: "JWT" };
337
- const encodedHeader = base64UrlEncode2(JSON.stringify(header));
338
- const encodedPayload = base64UrlEncode2(JSON.stringify(payload));
366
+ const encodedHeader = _chunkWOXSQBAMcjs.bytesToBase64Url.call(void 0, _chunkWOXSQBAMcjs.utf8.call(void 0, JSON.stringify(header)));
367
+ const encodedPayload = _chunkWOXSQBAMcjs.bytesToBase64Url.call(void 0, _chunkWOXSQBAMcjs.utf8.call(void 0, JSON.stringify(payload)));
339
368
  const signingInput = `${encodedHeader}.${encodedPayload}`;
340
369
  const signature = sign(signingInput, secret);
341
370
  return `${signingInput}.${signature}`;
@@ -351,20 +380,20 @@ function verifyTenantToken(token, secret, options = {}) {
351
380
  const [encodedHeader, encodedPayload, receivedSignature] = parts;
352
381
  const signingInput = `${encodedHeader}.${encodedPayload}`;
353
382
  const expectedSignature = sign(signingInput, secret);
354
- let receivedBuffer;
355
- let expectedBuffer;
383
+ let receivedBytes;
384
+ let expectedBytes;
356
385
  try {
357
- receivedBuffer = base64UrlDecode2(receivedSignature);
358
- expectedBuffer = base64UrlDecode2(expectedSignature);
386
+ receivedBytes = _chunkWOXSQBAMcjs.base64UrlToBytes.call(void 0, receivedSignature);
387
+ expectedBytes = _chunkWOXSQBAMcjs.base64UrlToBytes.call(void 0, expectedSignature);
359
388
  } catch (e) {
360
389
  throw new Error("INVALID_TENANT_AUTH");
361
390
  }
362
- if (receivedBuffer.length !== expectedBuffer.length || !_crypto.timingSafeEqual.call(void 0, receivedBuffer, expectedBuffer)) {
391
+ if (!_chunkWOXSQBAMcjs.timingSafeEqualBytes.call(void 0, receivedBytes, expectedBytes)) {
363
392
  throw new Error("INVALID_TENANT_AUTH");
364
393
  }
365
394
  let payload;
366
395
  try {
367
- payload = JSON.parse(base64UrlDecode2(encodedPayload).toString("utf8"));
396
+ payload = JSON.parse(_chunkWOXSQBAMcjs.utf8Decode.call(void 0, _chunkWOXSQBAMcjs.base64UrlToBytes.call(void 0, encodedPayload)));
368
397
  } catch (e2) {
369
398
  throw new Error("INVALID_TENANT_AUTH");
370
399
  }
@@ -438,8 +467,17 @@ function createTenantContextManager(options) {
438
467
  async function getOrCreateAdapter(dbConfig) {
439
468
  const cacheKey = `${dbConfig.driver}:${dbConfig.connectionString}`;
440
469
  if (!adapterCache.has(cacheKey)) {
441
- const adapter = await adapterFactory(dbConfig);
442
- adapterCache.set(cacheKey, adapter);
470
+ const created = (async () => {
471
+ const adapter = await adapterFactory(dbConfig);
472
+ if (typeof adapter.initSchema === "function") {
473
+ await adapter.initSchema();
474
+ }
475
+ return adapter;
476
+ })().catch((error) => {
477
+ adapterCache.delete(cacheKey);
478
+ throw error;
479
+ });
480
+ adapterCache.set(cacheKey, created);
443
481
  }
444
482
  return adapterCache.get(cacheKey);
445
483
  }
@@ -575,12 +613,15 @@ async function createReiServer(config) {
575
613
  return {
576
614
  handlers: {
577
615
  initTenant: createInitTenantHandler(ctx),
578
- getUserKey: _chunkGN5QTMCLcjs.createGetUserKeyHandler.call(void 0, ctx),
579
- scheduleMessage: _chunkGN5QTMCLcjs.createScheduleMessageHandler.call(void 0, ctx),
616
+ getUserKey: _chunkWOXSQBAMcjs.createGetUserKeyHandler.call(void 0, ctx),
617
+ scheduleMessage: _chunkWOXSQBAMcjs.createScheduleMessageHandler.call(void 0, ctx),
580
618
  sendNotifications: createSendNotificationsHandler(ctx),
581
- updateMessage: _chunkGN5QTMCLcjs.createUpdateMessageHandler.call(void 0, ctx),
582
- cancelMessage: _chunkGN5QTMCLcjs.createCancelMessageHandler.call(void 0, ctx),
583
- messages: _chunkGN5QTMCLcjs.createMessagesHandler.call(void 0, ctx)
619
+ updateMessage: _chunkWOXSQBAMcjs.createUpdateMessageHandler.call(void 0, ctx),
620
+ cancelMessage: _chunkWOXSQBAMcjs.createCancelMessageHandler.call(void 0, ctx),
621
+ messages: _chunkWOXSQBAMcjs.createMessagesHandler.call(void 0, ctx),
622
+ getMessage: _chunkWOXSQBAMcjs.createGetMessageHandler.call(void 0, ctx),
623
+ pushSubscription: _chunkWOXSQBAMcjs.createPushSubscriptionHandler.call(void 0, ctx),
624
+ llmCredentials: _chunkWOXSQBAMcjs.createLlmCredentialsHandler.call(void 0, ctx)
584
625
  }
585
626
  };
586
627
  }
@@ -606,4 +647,40 @@ async function createReiServer(config) {
606
647
 
607
648
 
608
649
 
609
- exports.createAdapter = createAdapter; exports.createD1Adapter = _chunkGN5QTMCLcjs.createD1Adapter; exports.createReiServer = createReiServer; exports.createSingleUserCloudflareWorker = _chunkGN5QTMCLcjs.createSingleUserCloudflareWorker; exports.createSingleUserServer = _chunkGN5QTMCLcjs.createSingleUserServer; exports.createTenantToken = createTenantToken; exports.createWebCryptoWebPush = _chunkGN5QTMCLcjs.createWebCryptoWebPush; exports.decryptFromStorage = _chunkGN5QTMCLcjs.decryptFromStorage; exports.decryptPayload = _chunkGN5QTMCLcjs.decryptPayload; exports.deriveUserEncryptionKey = _chunkGN5QTMCLcjs.deriveUserEncryptionKey; exports.encryptForStorage = _chunkGN5QTMCLcjs.encryptForStorage; exports.isValidISO8601 = _chunkGN5QTMCLcjs.isValidISO8601; exports.isValidUUID = _chunkGN5QTMCLcjs.isValidUUID; exports.isValidUUIDv4 = _chunkGN5QTMCLcjs.isValidUUIDv4; exports.isValidUrl = _chunkGN5QTMCLcjs.isValidUrl; exports.runScheduledTick = _chunkGN5QTMCLcjs.runScheduledTick; exports.validateAvatarUrl = _chunkGN5QTMCLcjs.validateAvatarUrl; exports.validateLlmMessagesArray = _chunkGN5QTMCLcjs.validateLlmMessagesArray; exports.validateScheduleMessagePayload = _chunkGN5QTMCLcjs.validateScheduleMessagePayload; exports.validateSplitPattern = _chunkGN5QTMCLcjs.validateSplitPattern; exports.verifyTenantToken = verifyTenantToken;
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+
686
+ exports.CORS_ALLOW_HEADERS = _chunkWOXSQBAMcjs.CORS_ALLOW_HEADERS; exports.CORS_ALLOW_METHODS = _chunkWOXSQBAMcjs.CORS_ALLOW_METHODS; exports.CRED_ID_MAX_LENGTH = _chunkWOXSQBAMcjs.CRED_ID_MAX_LENGTH; exports.CRED_PUT_BATCH_MAX = _chunkWOXSQBAMcjs.CRED_PUT_BATCH_MAX; exports.CRED_REFS_MAX_ENTRIES = _chunkWOXSQBAMcjs.CRED_REFS_MAX_ENTRIES; exports.CRED_ROWS_PER_USER_MAX = _chunkWOXSQBAMcjs.CRED_ROWS_PER_USER_MAX; exports.DEFAULT_CLAIM_LEASE_MS = _chunkWOXSQBAMcjs.DEFAULT_CLAIM_LEASE_MS; exports.DEFAULT_HEARTBEAT_LEASE_TTL_MS = _chunkWOXSQBAMcjs.DEFAULT_HEARTBEAT_LEASE_TTL_MS; exports.DEFAULT_LEASE_HEARTBEAT_MS = _chunkWOXSQBAMcjs.DEFAULT_LEASE_HEARTBEAT_MS; exports.DEFAULT_MAX_SCHEDULED_TASKS_PER_FIRE = _chunkWOXSQBAMcjs.DEFAULT_MAX_SCHEDULED_TASKS_PER_FIRE; exports.DEFAULT_MAX_TOOL_ITERATIONS = _chunkWOXSQBAMcjs.DEFAULT_MAX_TOOL_ITERATIONS; exports.DEFAULT_TOTAL_TIMEOUT_MS = _chunkWOXSQBAMcjs.DEFAULT_TOTAL_TIMEOUT_MS; exports.MAX_PUSH_PAYLOAD_BYTES = _chunkWOXSQBAMcjs.MAX_PUSH_PAYLOAD_BYTES; exports.MIN_SCHEDULE_LEAD_MS = _chunkWOXSQBAMcjs.MIN_SCHEDULE_LEAD_MS; exports.NonRetryableError = _chunkWOXSQBAMcjs.NonRetryableError; exports.PUSH_ENVELOPE_RESERVED_BYTES = _chunkWOXSQBAMcjs.PUSH_ENVELOPE_RESERVED_BYTES; exports.SCHEMA_VERSION = _chunkWOXSQBAMcjs.SCHEMA_VERSION; exports.WEB_PUSH_ENCRYPTION_OVERHEAD_BYTES = _chunkWOXSQBAMcjs.WEB_PUSH_ENCRYPTION_OVERHEAD_BYTES; exports.WEB_PUSH_MAX_BODY_BYTES = _chunkWOXSQBAMcjs.WEB_PUSH_MAX_BODY_BYTES; exports.advanceOccurrence = _chunkWOXSQBAMcjs.advanceOccurrence; exports.createAdapter = createAdapter; exports.createD1Adapter = _chunkWOXSQBAMcjs.createD1Adapter; exports.createReiServer = createReiServer; exports.createSingleUserCloudflareWorker = _chunkWOXSQBAMcjs.createSingleUserCloudflareWorker; exports.createSingleUserServer = _chunkWOXSQBAMcjs.createSingleUserServer; exports.createTenantToken = createTenantToken; exports.createWebCryptoWebPush = _chunkWOXSQBAMcjs.createWebCryptoWebPush; exports.decryptFromStorage = _chunkWOXSQBAMcjs.decryptFromStorage; exports.decryptPayload = _chunkWOXSQBAMcjs.decryptPayload; exports.deriveUserEncryptionKey = _chunkWOXSQBAMcjs.deriveUserEncryptionKey; exports.encryptForStorage = _chunkWOXSQBAMcjs.encryptForStorage; exports.ensureSchema = _chunkWOXSQBAMcjs.ensureSchema; exports.getSchemaVersion = _chunkWOXSQBAMcjs.getSchemaVersion; exports.hasChatCredRef = _chunkWOXSQBAMcjs.hasChatCredRef; exports.isNonRetryableError = _chunkWOXSQBAMcjs.isNonRetryableError; exports.isValidCredId = _chunkWOXSQBAMcjs.isValidCredId; exports.isValidISO8601 = _chunkWOXSQBAMcjs.isValidISO8601; exports.isValidTimeZoneId = _chunkWOXSQBAMcjs.isValidTimeZoneId; exports.isValidUUID = _chunkWOXSQBAMcjs.isValidUUID; exports.isValidUUIDv4 = _chunkWOXSQBAMcjs.isValidUUIDv4; exports.isValidUrl = _chunkWOXSQBAMcjs.isValidUrl; exports.measurePushPayload = _chunkWOXSQBAMcjs.measurePushPayload; exports.nextFutureOccurrence = _chunkWOXSQBAMcjs.nextFutureOccurrence; exports.planNextOccurrence = _chunkWOXSQBAMcjs.planNextOccurrence; exports.resolveLlmCredential = _chunkWOXSQBAMcjs.resolveLlmCredential; exports.runScheduledTick = _chunkWOXSQBAMcjs.runScheduledTick; exports.runTask = _chunkWOXSQBAMcjs.runTask; exports.sanitizeErrorSummary = _chunkWOXSQBAMcjs.sanitizeErrorSummary; exports.summarizeErrorCause = _chunkWOXSQBAMcjs.summarizeErrorCause; exports.supportsLlmCredentialsStore = _chunkWOXSQBAMcjs.supportsLlmCredentialsStore; exports.validateAvatarUrl = _chunkWOXSQBAMcjs.validateAvatarUrl; exports.validateCredRefs = _chunkWOXSQBAMcjs.validateCredRefs; exports.validateCredValue = _chunkWOXSQBAMcjs.validateCredValue; exports.validateLlmMessagesArray = _chunkWOXSQBAMcjs.validateLlmMessagesArray; exports.validateScheduleMessagePayload = _chunkWOXSQBAMcjs.validateScheduleMessagePayload; exports.validateSplitPattern = _chunkWOXSQBAMcjs.validateSplitPattern; exports.verifyTenantToken = verifyTenantToken;