@rei-standard/amsg-server 2.6.0-next.0 → 2.6.0-next.1

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.
@@ -1425,6 +1425,35 @@ function createSingleUserInitHandler(ctx) {
1425
1425
  return { POST };
1426
1426
  }
1427
1427
 
1428
+ // src/server/handlers/vapid-public-key.js
1429
+ function createVapidPublicKeyHandler(ctx) {
1430
+ async function GET(url, headers) {
1431
+ const effectiveHeaders = headers || url || {};
1432
+ const tenantResult = await ctx.tenantManager.resolveTenant(effectiveHeaders);
1433
+ if (!tenantResult.ok) {
1434
+ return tenantResult.error;
1435
+ }
1436
+ const publicKey = ctx.vapid && ctx.vapid.publicKey;
1437
+ if (!publicKey) {
1438
+ return {
1439
+ status: 503,
1440
+ body: {
1441
+ success: false,
1442
+ error: {
1443
+ code: "VAPID_NOT_CONFIGURED",
1444
+ message: "VAPID \u516C\u94A5\u672A\u914D\u7F6E\uFF1A\u8BF7\u4E3A\u672C Worker \u8BBE\u7F6E VAPID_PUBLIC_KEY"
1445
+ }
1446
+ }
1447
+ };
1448
+ }
1449
+ return {
1450
+ status: 200,
1451
+ body: { success: true, publicKey }
1452
+ };
1453
+ }
1454
+ return { GET };
1455
+ }
1456
+
1428
1457
  // src/server/single-user.js
1429
1458
  function createSingleUserServer(config) {
1430
1459
  if (!config || !config.db) throw new Error("[amsg-server single-user] config.db is required");
@@ -1452,7 +1481,8 @@ function createSingleUserServer(config) {
1452
1481
  scheduleMessage: createScheduleMessageHandler(ctx),
1453
1482
  updateMessage: createUpdateMessageHandler(ctx),
1454
1483
  cancelMessage: createCancelMessageHandler(ctx),
1455
- messages: createMessagesHandler(ctx)
1484
+ messages: createMessagesHandler(ctx),
1485
+ vapidPublicKey: createVapidPublicKeyHandler(ctx)
1456
1486
  }
1457
1487
  };
1458
1488
  }
@@ -1741,6 +1771,8 @@ function createSingleUserCloudflareWorker(buildConfig) {
1741
1771
  result = await server.handlers.updateMessage.PUT(url, headers, await request.text());
1742
1772
  } else if (method === "DELETE" && pathname.endsWith("/cancel-message")) {
1743
1773
  result = await server.handlers.cancelMessage.DELETE(url, headers);
1774
+ } else if (method === "GET" && pathname.endsWith("/vapid-public-key")) {
1775
+ result = await server.handlers.vapidPublicKey.GET(url, headers);
1744
1776
  } else {
1745
1777
  result = { status: 404, body: { success: false, error: { code: "NOT_FOUND", message: "Unknown route" } } };
1746
1778
  }
@@ -1425,6 +1425,35 @@ function createSingleUserInitHandler(ctx) {
1425
1425
  return { POST };
1426
1426
  }
1427
1427
 
1428
+ // src/server/handlers/vapid-public-key.js
1429
+ function createVapidPublicKeyHandler(ctx) {
1430
+ async function GET(url, headers) {
1431
+ const effectiveHeaders = headers || url || {};
1432
+ const tenantResult = await ctx.tenantManager.resolveTenant(effectiveHeaders);
1433
+ if (!tenantResult.ok) {
1434
+ return tenantResult.error;
1435
+ }
1436
+ const publicKey = ctx.vapid && ctx.vapid.publicKey;
1437
+ if (!publicKey) {
1438
+ return {
1439
+ status: 503,
1440
+ body: {
1441
+ success: false,
1442
+ error: {
1443
+ code: "VAPID_NOT_CONFIGURED",
1444
+ message: "VAPID \u516C\u94A5\u672A\u914D\u7F6E\uFF1A\u8BF7\u4E3A\u672C Worker \u8BBE\u7F6E VAPID_PUBLIC_KEY"
1445
+ }
1446
+ }
1447
+ };
1448
+ }
1449
+ return {
1450
+ status: 200,
1451
+ body: { success: true, publicKey }
1452
+ };
1453
+ }
1454
+ return { GET };
1455
+ }
1456
+
1428
1457
  // src/server/single-user.js
1429
1458
  function createSingleUserServer(config) {
1430
1459
  if (!config || !config.db) throw new Error("[amsg-server single-user] config.db is required");
@@ -1452,7 +1481,8 @@ function createSingleUserServer(config) {
1452
1481
  scheduleMessage: createScheduleMessageHandler(ctx),
1453
1482
  updateMessage: createUpdateMessageHandler(ctx),
1454
1483
  cancelMessage: createCancelMessageHandler(ctx),
1455
- messages: createMessagesHandler(ctx)
1484
+ messages: createMessagesHandler(ctx),
1485
+ vapidPublicKey: createVapidPublicKeyHandler(ctx)
1456
1486
  }
1457
1487
  };
1458
1488
  }
@@ -1741,6 +1771,8 @@ function createSingleUserCloudflareWorker(buildConfig) {
1741
1771
  result = await server.handlers.updateMessage.PUT(url, headers, await request.text());
1742
1772
  } else if (method === "DELETE" && pathname.endsWith("/cancel-message")) {
1743
1773
  result = await server.handlers.cancelMessage.DELETE(url, headers);
1774
+ } else if (method === "GET" && pathname.endsWith("/vapid-public-key")) {
1775
+ result = await server.handlers.vapidPublicKey.GET(url, headers);
1744
1776
  } else {
1745
1777
  result = { status: 404, body: { success: false, error: { code: "NOT_FOUND", message: "Unknown route" } } };
1746
1778
  }
@@ -2151,6 +2151,54 @@ function createSingleUserInitHandler(ctx) {
2151
2151
  return { POST };
2152
2152
  }
2153
2153
 
2154
+ /**
2155
+ * Handler: vapid-public-key
2156
+ *
2157
+ * Exposes this worker's own VAPID public key so a browser frontend can build a
2158
+ * Web Push subscription (`applicationServerKey`) at runtime. Each self-hosted
2159
+ * worker owns its keypair, so the key can't be baked into the frontend — it
2160
+ * pulls it from here.
2161
+ *
2162
+ * Auth funnels through the same resolveTenant as every other endpoint, so with
2163
+ * a serverToken configured this route requires `X-Client-Token` too (the
2164
+ * all-or-nothing contract). The public key itself is not a secret; gating it
2165
+ * just keeps every endpoint consistent.
2166
+ *
2167
+ * @param {Object} ctx - Server context ({ vapid, tenantManager, ... }).
2168
+ * @returns {{ GET: function }}
2169
+ */
2170
+
2171
+ function createVapidPublicKeyHandler(ctx) {
2172
+ async function GET(url, headers) {
2173
+ const effectiveHeaders = headers || url || {};
2174
+ const tenantResult = await ctx.tenantManager.resolveTenant(effectiveHeaders);
2175
+ if (!tenantResult.ok) {
2176
+ return tenantResult.error;
2177
+ }
2178
+
2179
+ const publicKey = ctx.vapid && ctx.vapid.publicKey;
2180
+ if (!publicKey) {
2181
+ return {
2182
+ status: 503,
2183
+ body: {
2184
+ success: false,
2185
+ error: {
2186
+ code: 'VAPID_NOT_CONFIGURED',
2187
+ message: 'VAPID 公钥未配置:请为本 Worker 设置 VAPID_PUBLIC_KEY'
2188
+ }
2189
+ }
2190
+ };
2191
+ }
2192
+
2193
+ return {
2194
+ status: 200,
2195
+ body: { success: true, publicKey }
2196
+ };
2197
+ }
2198
+
2199
+ return { GET };
2200
+ }
2201
+
2154
2202
  /**
2155
2203
  * Single-user ReiStandard server assembly.
2156
2204
  *
@@ -2199,7 +2247,8 @@ function createSingleUserServer(config) {
2199
2247
  scheduleMessage: createScheduleMessageHandler(ctx),
2200
2248
  updateMessage: createUpdateMessageHandler(ctx),
2201
2249
  cancelMessage: createCancelMessageHandler(ctx),
2202
- messages: createMessagesHandler(ctx)
2250
+ messages: createMessagesHandler(ctx),
2251
+ vapidPublicKey: createVapidPublicKeyHandler(ctx)
2203
2252
  }
2204
2253
  };
2205
2254
  }
@@ -2593,6 +2642,8 @@ function createWebCryptoWebPush(vapid = {}, { ttl = SCHEDULED_DEFAULT_TTL } = {}
2593
2642
  * GET /messages → list
2594
2643
  * PUT /update-message → patch
2595
2644
  * DELETE /cancel-message → delete
2645
+ * GET /vapid-public-key → this worker's VAPID public key (for the frontend's
2646
+ * Web Push subscription); 503 if VAPID_PUBLIC_KEY unset
2596
2647
  *
2597
2648
  * CORS is opt-in: pass `cors: { origin }` in the config (a fixed origin, '*', or
2598
2649
  * an (origin) => allowedOrigin function) to answer OPTIONS preflights and echo
@@ -2689,6 +2740,8 @@ function createSingleUserCloudflareWorker(buildConfig) {
2689
2740
  result = await server.handlers.updateMessage.PUT(url, headers, await request.text());
2690
2741
  } else if (method === 'DELETE' && pathname.endsWith('/cancel-message')) {
2691
2742
  result = await server.handlers.cancelMessage.DELETE(url, headers);
2743
+ } else if (method === 'GET' && pathname.endsWith('/vapid-public-key')) {
2744
+ result = await server.handlers.vapidPublicKey.GET(url, headers);
2692
2745
  } else {
2693
2746
  result = { status: 404, body: { success: false, error: { code: 'NOT_FOUND', message: 'Unknown route' } } };
2694
2747
  }
@@ -2151,6 +2151,54 @@ function createSingleUserInitHandler(ctx) {
2151
2151
  return { POST };
2152
2152
  }
2153
2153
 
2154
+ /**
2155
+ * Handler: vapid-public-key
2156
+ *
2157
+ * Exposes this worker's own VAPID public key so a browser frontend can build a
2158
+ * Web Push subscription (`applicationServerKey`) at runtime. Each self-hosted
2159
+ * worker owns its keypair, so the key can't be baked into the frontend — it
2160
+ * pulls it from here.
2161
+ *
2162
+ * Auth funnels through the same resolveTenant as every other endpoint, so with
2163
+ * a serverToken configured this route requires `X-Client-Token` too (the
2164
+ * all-or-nothing contract). The public key itself is not a secret; gating it
2165
+ * just keeps every endpoint consistent.
2166
+ *
2167
+ * @param {Object} ctx - Server context ({ vapid, tenantManager, ... }).
2168
+ * @returns {{ GET: function }}
2169
+ */
2170
+
2171
+ function createVapidPublicKeyHandler(ctx) {
2172
+ async function GET(url, headers) {
2173
+ const effectiveHeaders = headers || url || {};
2174
+ const tenantResult = await ctx.tenantManager.resolveTenant(effectiveHeaders);
2175
+ if (!tenantResult.ok) {
2176
+ return tenantResult.error;
2177
+ }
2178
+
2179
+ const publicKey = ctx.vapid && ctx.vapid.publicKey;
2180
+ if (!publicKey) {
2181
+ return {
2182
+ status: 503,
2183
+ body: {
2184
+ success: false,
2185
+ error: {
2186
+ code: 'VAPID_NOT_CONFIGURED',
2187
+ message: 'VAPID 公钥未配置:请为本 Worker 设置 VAPID_PUBLIC_KEY'
2188
+ }
2189
+ }
2190
+ };
2191
+ }
2192
+
2193
+ return {
2194
+ status: 200,
2195
+ body: { success: true, publicKey }
2196
+ };
2197
+ }
2198
+
2199
+ return { GET };
2200
+ }
2201
+
2154
2202
  /**
2155
2203
  * Single-user ReiStandard server assembly.
2156
2204
  *
@@ -2199,7 +2247,8 @@ function createSingleUserServer(config) {
2199
2247
  scheduleMessage: createScheduleMessageHandler(ctx),
2200
2248
  updateMessage: createUpdateMessageHandler(ctx),
2201
2249
  cancelMessage: createCancelMessageHandler(ctx),
2202
- messages: createMessagesHandler(ctx)
2250
+ messages: createMessagesHandler(ctx),
2251
+ vapidPublicKey: createVapidPublicKeyHandler(ctx)
2203
2252
  }
2204
2253
  };
2205
2254
  }
@@ -2593,6 +2642,8 @@ function createWebCryptoWebPush(vapid = {}, { ttl = SCHEDULED_DEFAULT_TTL } = {}
2593
2642
  * GET /messages → list
2594
2643
  * PUT /update-message → patch
2595
2644
  * DELETE /cancel-message → delete
2645
+ * GET /vapid-public-key → this worker's VAPID public key (for the frontend's
2646
+ * Web Push subscription); 503 if VAPID_PUBLIC_KEY unset
2596
2647
  *
2597
2648
  * CORS is opt-in: pass `cors: { origin }` in the config (a fixed origin, '*', or
2598
2649
  * an (origin) => allowedOrigin function) to answer OPTIONS preflights and echo
@@ -2689,6 +2740,8 @@ function createSingleUserCloudflareWorker(buildConfig) {
2689
2740
  result = await server.handlers.updateMessage.PUT(url, headers, await request.text());
2690
2741
  } else if (method === 'DELETE' && pathname.endsWith('/cancel-message')) {
2691
2742
  result = await server.handlers.cancelMessage.DELETE(url, headers);
2743
+ } else if (method === 'GET' && pathname.endsWith('/vapid-public-key')) {
2744
+ result = await server.handlers.vapidPublicKey.GET(url, headers);
2692
2745
  } else {
2693
2746
  result = { status: 404, body: { success: false, error: { code: 'NOT_FOUND', message: 'Unknown route' } } };
2694
2747
  }
@@ -8,7 +8,7 @@
8
8
 
9
9
 
10
10
 
11
- var _chunkYKDKY2LEcjs = require('./chunk-YKDKY2LE.cjs');
11
+ var _chunkS5DV7AUHcjs = require('./chunk-S5DV7AUH.cjs');
12
12
 
13
13
 
14
14
 
@@ -19,4 +19,4 @@ var _chunkYKDKY2LEcjs = require('./chunk-YKDKY2LE.cjs');
19
19
 
20
20
 
21
21
 
22
- exports.createD1Adapter = _chunkYKDKY2LEcjs.createD1Adapter; exports.createSingleUserCloudflareWorker = _chunkYKDKY2LEcjs.createSingleUserCloudflareWorker; exports.createSingleUserServer = _chunkYKDKY2LEcjs.createSingleUserServer; exports.createWebCryptoWebPush = _chunkYKDKY2LEcjs.createWebCryptoWebPush; exports.decryptFromStorage = _chunkYKDKY2LEcjs.decryptFromStorage; exports.decryptPayload = _chunkYKDKY2LEcjs.decryptPayload; exports.deriveUserEncryptionKey = _chunkYKDKY2LEcjs.deriveUserEncryptionKey; exports.encryptForStorage = _chunkYKDKY2LEcjs.encryptForStorage; exports.runScheduledTick = _chunkYKDKY2LEcjs.runScheduledTick;
22
+ exports.createD1Adapter = _chunkS5DV7AUHcjs.createD1Adapter; exports.createSingleUserCloudflareWorker = _chunkS5DV7AUHcjs.createSingleUserCloudflareWorker; exports.createSingleUserServer = _chunkS5DV7AUHcjs.createSingleUserServer; exports.createWebCryptoWebPush = _chunkS5DV7AUHcjs.createWebCryptoWebPush; exports.decryptFromStorage = _chunkS5DV7AUHcjs.decryptFromStorage; exports.decryptPayload = _chunkS5DV7AUHcjs.decryptPayload; exports.deriveUserEncryptionKey = _chunkS5DV7AUHcjs.deriveUserEncryptionKey; exports.encryptForStorage = _chunkS5DV7AUHcjs.encryptForStorage; exports.runScheduledTick = _chunkS5DV7AUHcjs.runScheduledTick;
@@ -1,3 +1,3 @@
1
- export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, r as runScheduledTick } from './cloudflare-BwOfBtLF.cjs';
1
+ export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, r as runScheduledTick } from './cloudflare-5Ryuxz10.cjs';
2
2
  import 'crypto';
3
3
  import '@rei-standard/amsg-shared';
@@ -1,3 +1,3 @@
1
- export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, r as runScheduledTick } from './cloudflare-BwOfBtLF.js';
1
+ export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, r as runScheduledTick } from './cloudflare-5Ryuxz10.js';
2
2
  import 'crypto';
3
3
  import '@rei-standard/amsg-shared';
@@ -8,7 +8,7 @@ import {
8
8
  deriveUserEncryptionKey,
9
9
  encryptForStorage,
10
10
  runScheduledTick
11
- } from "./chunk-PJAW56VN.mjs";
11
+ } from "./chunk-6WA3XDPP.mjs";
12
12
  export {
13
13
  createD1Adapter,
14
14
  createSingleUserCloudflareWorker,
package/dist/index.cjs CHANGED
@@ -23,7 +23,7 @@
23
23
 
24
24
 
25
25
 
26
- var _chunkYKDKY2LEcjs = require('./chunk-YKDKY2LE.cjs');
26
+ var _chunkS5DV7AUHcjs = require('./chunk-S5DV7AUH.cjs');
27
27
 
28
28
  // src/server/adapters/factory.js
29
29
  async function createAdapter(config) {
@@ -56,7 +56,7 @@ async function createAdapter(config) {
56
56
  // src/server/handlers/init-tenant.js
57
57
  function createInitTenantHandler(ctx) {
58
58
  async function POST(headers, body) {
59
- const initSecret = _chunkYKDKY2LEcjs.getHeader.call(void 0, headers, "x-init-secret");
59
+ const initSecret = _chunkS5DV7AUHcjs.getHeader.call(void 0, headers, "x-init-secret");
60
60
  if (ctx.tenant.initSecret && initSecret !== ctx.tenant.initSecret) {
61
61
  return {
62
62
  status: 401,
@@ -69,7 +69,7 @@ function createInitTenantHandler(ctx) {
69
69
  }
70
70
  };
71
71
  }
72
- const parsed = _chunkYKDKY2LEcjs.parseJsonBody.call(void 0, body);
72
+ const parsed = _chunkS5DV7AUHcjs.parseJsonBody.call(void 0, body);
73
73
  if (!parsed.ok) {
74
74
  return {
75
75
  status: 400,
@@ -83,7 +83,7 @@ function createInitTenantHandler(ctx) {
83
83
  const tenantId = payload.tenantId || void 0;
84
84
  const driver = payload.driver;
85
85
  const databaseUrl = payload.databaseUrl || payload.connectionString;
86
- if (tenantId && !_chunkYKDKY2LEcjs.isValidUUIDv4.call(void 0, tenantId)) {
86
+ if (tenantId && !_chunkS5DV7AUHcjs.isValidUUIDv4.call(void 0, tenantId)) {
87
87
  return {
88
88
  status: 400,
89
89
  body: {
@@ -203,7 +203,7 @@ function createSendNotificationsHandler(ctx) {
203
203
  }
204
204
  };
205
205
  }
206
- const data = await _chunkYKDKY2LEcjs.runScheduledTick.call(void 0, { ...ctx, db, masterKey });
206
+ const data = await _chunkS5DV7AUHcjs.runScheduledTick.call(void 0, { ...ctx, db, masterKey });
207
207
  return { status: 200, body: { success: true, data } };
208
208
  }
209
209
  return { POST };
@@ -575,12 +575,12 @@ async function createReiServer(config) {
575
575
  return {
576
576
  handlers: {
577
577
  initTenant: createInitTenantHandler(ctx),
578
- getUserKey: _chunkYKDKY2LEcjs.createGetUserKeyHandler.call(void 0, ctx),
579
- scheduleMessage: _chunkYKDKY2LEcjs.createScheduleMessageHandler.call(void 0, ctx),
578
+ getUserKey: _chunkS5DV7AUHcjs.createGetUserKeyHandler.call(void 0, ctx),
579
+ scheduleMessage: _chunkS5DV7AUHcjs.createScheduleMessageHandler.call(void 0, ctx),
580
580
  sendNotifications: createSendNotificationsHandler(ctx),
581
- updateMessage: _chunkYKDKY2LEcjs.createUpdateMessageHandler.call(void 0, ctx),
582
- cancelMessage: _chunkYKDKY2LEcjs.createCancelMessageHandler.call(void 0, ctx),
583
- messages: _chunkYKDKY2LEcjs.createMessagesHandler.call(void 0, ctx)
581
+ updateMessage: _chunkS5DV7AUHcjs.createUpdateMessageHandler.call(void 0, ctx),
582
+ cancelMessage: _chunkS5DV7AUHcjs.createCancelMessageHandler.call(void 0, ctx),
583
+ messages: _chunkS5DV7AUHcjs.createMessagesHandler.call(void 0, ctx)
584
584
  }
585
585
  };
586
586
  }
@@ -606,4 +606,4 @@ async function createReiServer(config) {
606
606
 
607
607
 
608
608
 
609
- exports.createAdapter = createAdapter; exports.createD1Adapter = _chunkYKDKY2LEcjs.createD1Adapter; exports.createReiServer = createReiServer; exports.createSingleUserCloudflareWorker = _chunkYKDKY2LEcjs.createSingleUserCloudflareWorker; exports.createSingleUserServer = _chunkYKDKY2LEcjs.createSingleUserServer; exports.createTenantToken = createTenantToken; exports.createWebCryptoWebPush = _chunkYKDKY2LEcjs.createWebCryptoWebPush; exports.decryptFromStorage = _chunkYKDKY2LEcjs.decryptFromStorage; exports.decryptPayload = _chunkYKDKY2LEcjs.decryptPayload; exports.deriveUserEncryptionKey = _chunkYKDKY2LEcjs.deriveUserEncryptionKey; exports.encryptForStorage = _chunkYKDKY2LEcjs.encryptForStorage; exports.isValidISO8601 = _chunkYKDKY2LEcjs.isValidISO8601; exports.isValidUUID = _chunkYKDKY2LEcjs.isValidUUID; exports.isValidUUIDv4 = _chunkYKDKY2LEcjs.isValidUUIDv4; exports.isValidUrl = _chunkYKDKY2LEcjs.isValidUrl; exports.runScheduledTick = _chunkYKDKY2LEcjs.runScheduledTick; exports.validateAvatarUrl = _chunkYKDKY2LEcjs.validateAvatarUrl; exports.validateLlmMessagesArray = _chunkYKDKY2LEcjs.validateLlmMessagesArray; exports.validateScheduleMessagePayload = _chunkYKDKY2LEcjs.validateScheduleMessagePayload; exports.validateSplitPattern = _chunkYKDKY2LEcjs.validateSplitPattern; exports.verifyTenantToken = verifyTenantToken;
609
+ exports.createAdapter = createAdapter; exports.createD1Adapter = _chunkS5DV7AUHcjs.createD1Adapter; exports.createReiServer = createReiServer; exports.createSingleUserCloudflareWorker = _chunkS5DV7AUHcjs.createSingleUserCloudflareWorker; exports.createSingleUserServer = _chunkS5DV7AUHcjs.createSingleUserServer; exports.createTenantToken = createTenantToken; exports.createWebCryptoWebPush = _chunkS5DV7AUHcjs.createWebCryptoWebPush; exports.decryptFromStorage = _chunkS5DV7AUHcjs.decryptFromStorage; exports.decryptPayload = _chunkS5DV7AUHcjs.decryptPayload; exports.deriveUserEncryptionKey = _chunkS5DV7AUHcjs.deriveUserEncryptionKey; exports.encryptForStorage = _chunkS5DV7AUHcjs.encryptForStorage; exports.isValidISO8601 = _chunkS5DV7AUHcjs.isValidISO8601; exports.isValidUUID = _chunkS5DV7AUHcjs.isValidUUID; exports.isValidUUIDv4 = _chunkS5DV7AUHcjs.isValidUUIDv4; exports.isValidUrl = _chunkS5DV7AUHcjs.isValidUrl; exports.runScheduledTick = _chunkS5DV7AUHcjs.runScheduledTick; exports.validateAvatarUrl = _chunkS5DV7AUHcjs.validateAvatarUrl; exports.validateLlmMessagesArray = _chunkS5DV7AUHcjs.validateLlmMessagesArray; exports.validateScheduleMessagePayload = _chunkS5DV7AUHcjs.validateScheduleMessagePayload; exports.validateSplitPattern = _chunkS5DV7AUHcjs.validateSplitPattern; exports.verifyTenantToken = verifyTenantToken;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { g as getHeader, p as parseJsonBody, i as isValidUUIDv4, r as runScheduledTick, c as createMessagesHandler, a as createCancelMessageHandler, b as createUpdateMessageHandler, d as createScheduleMessageHandler, e as createGetUserKeyHandler } from './cloudflare-BwOfBtLF.cjs';
2
- export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, q as isValidISO8601, s as isValidUUID, t as isValidUrl, v as validateLlmMessagesArray, u as validateScheduleMessagePayload, w as validateSplitPattern } from './cloudflare-BwOfBtLF.cjs';
1
+ import { g as getHeader, p as parseJsonBody, i as isValidUUIDv4, r as runScheduledTick, c as createMessagesHandler, a as createCancelMessageHandler, b as createUpdateMessageHandler, d as createScheduleMessageHandler, e as createGetUserKeyHandler } from './cloudflare-5Ryuxz10.cjs';
2
+ export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, q as isValidISO8601, s as isValidUUID, t as isValidUrl, v as validateLlmMessagesArray, u as validateScheduleMessagePayload, w as validateSplitPattern } from './cloudflare-5Ryuxz10.cjs';
3
3
  import { createHash, randomBytes, createCipheriv, createDecipheriv, timingSafeEqual, createHmac, randomUUID } from 'crypto';
4
4
  import { normalizeVapidSubject } from '@rei-standard/amsg-shared';
5
5
  export { validateAvatarUrl } from '@rei-standard/amsg-shared';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { g as getHeader, p as parseJsonBody, i as isValidUUIDv4, r as runScheduledTick, c as createMessagesHandler, a as createCancelMessageHandler, b as createUpdateMessageHandler, d as createScheduleMessageHandler, e as createGetUserKeyHandler } from './cloudflare-BwOfBtLF.js';
2
- export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, q as isValidISO8601, s as isValidUUID, t as isValidUrl, v as validateLlmMessagesArray, u as validateScheduleMessagePayload, w as validateSplitPattern } from './cloudflare-BwOfBtLF.js';
1
+ import { g as getHeader, p as parseJsonBody, i as isValidUUIDv4, r as runScheduledTick, c as createMessagesHandler, a as createCancelMessageHandler, b as createUpdateMessageHandler, d as createScheduleMessageHandler, e as createGetUserKeyHandler } from './cloudflare-5Ryuxz10.js';
2
+ export { f as createD1Adapter, h as createSingleUserCloudflareWorker, j as createSingleUserServer, k as createWebCryptoWebPush, l as decryptFromStorage, m as decryptPayload, n as deriveUserEncryptionKey, o as encryptForStorage, q as isValidISO8601, s as isValidUUID, t as isValidUrl, v as validateLlmMessagesArray, u as validateScheduleMessagePayload, w as validateSplitPattern } from './cloudflare-5Ryuxz10.js';
3
3
  import { createHash, randomBytes, createCipheriv, createDecipheriv, timingSafeEqual, createHmac, randomUUID } from 'crypto';
4
4
  import { normalizeVapidSubject } from '@rei-standard/amsg-shared';
5
5
  export { validateAvatarUrl } from '@rei-standard/amsg-shared';
package/dist/index.mjs CHANGED
@@ -23,7 +23,7 @@ import {
23
23
  validateLlmMessagesArray,
24
24
  validateScheduleMessagePayload,
25
25
  validateSplitPattern
26
- } from "./chunk-PJAW56VN.mjs";
26
+ } from "./chunk-6WA3XDPP.mjs";
27
27
 
28
28
  // src/server/adapters/factory.js
29
29
  async function createAdapter(config) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rei-standard/amsg-server",
3
- "version": "2.6.0-next.0",
3
+ "version": "2.6.0-next.1",
4
4
  "description": "ReiStandard Active Messaging server SDK with pluggable database adapters. Three-axis push schema (messageKind / messageType / messageSubtype) from @rei-standard/amsg-shared. Auto-emits ReasoningPush when the LLM response carries reasoning_content.",
5
5
  "repository": {
6
6
  "type": "git",