@rei-standard/amsg-server 2.6.0-next.8 → 3.0.0

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 (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +861 -35
  3. package/dist/adapters/d1.d.ts +693 -0
  4. package/dist/adapters/factory.d.ts +39 -0
  5. package/dist/adapters/interface.d.ts +384 -0
  6. package/dist/adapters/neon.d.ts +105 -0
  7. package/dist/adapters/pg-shared.d.ts +194 -0
  8. package/dist/adapters/pg.d.ts +101 -0
  9. package/dist/adapters/schema.d.ts +57 -0
  10. package/dist/adapters/schema.sqlite.d.ts +80 -0
  11. package/dist/chunk-7NMQFTDJ.cjs +148 -0
  12. package/dist/{chunk-GOBCWCJP.mjs → chunk-GN44PST5.mjs} +68 -1
  13. package/dist/chunk-RL7V7VSS.mjs +8784 -0
  14. package/dist/chunk-TKDISKCF.cjs +163 -0
  15. package/dist/chunk-XKUWMYVF.mjs +163 -0
  16. package/dist/chunk-YBDQJVFQ.cjs +8784 -0
  17. package/dist/cloudflare/single-user-worker.d.ts +39 -0
  18. package/dist/cloudflare.cjs +35 -2
  19. package/dist/cloudflare.d.ts +11 -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-namespaces.d.ts +5 -0
  24. package/dist/handlers/client-state.d.ts +7 -0
  25. package/dist/handlers/cloud-data.d.ts +4 -0
  26. package/dist/handlers/get-message.d.ts +3 -0
  27. package/dist/handlers/get-user-key.d.ts +3 -0
  28. package/dist/handlers/init-tenant.d.ts +23 -0
  29. package/dist/handlers/llm-credentials.d.ts +5 -0
  30. package/dist/handlers/messages.d.ts +3 -0
  31. package/dist/handlers/outbox.d.ts +9 -0
  32. package/dist/handlers/push-subscription.d.ts +5 -0
  33. package/dist/handlers/schedule-message.d.ts +3 -0
  34. package/dist/handlers/send-notifications.d.ts +3 -0
  35. package/dist/handlers/single-user-init.d.ts +13 -0
  36. package/dist/handlers/update-message.d.ts +3 -0
  37. package/dist/handlers/vapid-public-key.d.ts +19 -0
  38. package/dist/index.cjs +133 -44
  39. package/dist/index.d.cts +145 -766
  40. package/dist/index.d.ts +145 -766
  41. package/dist/index.mjs +125 -36
  42. package/dist/lib/agentic-fire.d.ts +177 -0
  43. package/dist/lib/client-state-store.d.ts +88 -0
  44. package/dist/lib/cloud-data-cleanup.d.ts +36 -0
  45. package/dist/lib/cloud-data-guard.d.ts +14 -0
  46. package/dist/lib/cloud-data-inventory.d.ts +15 -0
  47. package/dist/lib/constant-time.d.ts +14 -0
  48. package/dist/lib/db-errors.d.ts +10 -0
  49. package/dist/lib/encryption.d.ts +48 -0
  50. package/dist/lib/errors.d.ts +273 -0
  51. package/dist/lib/llm-credentials-store.d.ts +147 -0
  52. package/dist/lib/llm.d.ts +12 -0
  53. package/dist/lib/message-processor.d.ts +82 -0
  54. package/dist/lib/outbox-store.d.ts +162 -0
  55. package/dist/lib/push-policy.d.ts +11 -0
  56. package/dist/lib/push-subscription-store.d.ts +94 -0
  57. package/dist/lib/recurrence.d.ts +51 -0
  58. package/dist/lib/request.d.ts +182 -0
  59. package/dist/lib/result-emitter.d.ts +60 -0
  60. package/dist/lib/retry-policy.d.ts +11 -0
  61. package/dist/lib/run-tick.d.ts +121 -0
  62. package/dist/lib/schema-version.d.ts +50 -0
  63. package/dist/lib/state-accessors.d.ts +70 -0
  64. package/dist/lib/state-chunks.d.ts +65 -0
  65. package/dist/lib/task-projection.d.ts +92 -0
  66. package/dist/lib/validation.d.ts +97 -0
  67. package/dist/lib/version.d.ts +7 -0
  68. package/dist/lib/webcrypto-utils.d.ts +1 -0
  69. package/dist/lib/webpush-webcrypto.d.ts +78 -0
  70. package/dist/{neon-QJ7KYHEX.mjs → neon-GKLT4UY3.mjs} +116 -44
  71. package/dist/{neon-V4VOH55N.cjs → neon-XHPJZESV.cjs} +121 -49
  72. package/dist/{pg-6X74HKMX.cjs → pg-FHXQ6BJP.cjs} +109 -48
  73. package/dist/{pg-DFJSFOJQ.mjs → pg-J4YXRQP5.mjs} +104 -43
  74. package/dist/single-user.d.ts +106 -0
  75. package/dist/tenant/blob-store.d.ts +30 -0
  76. package/dist/tenant/context.d.ts +47 -0
  77. package/dist/tenant/single-user-context.d.ts +29 -0
  78. package/dist/tenant/token.d.ts +26 -0
  79. package/package.json +3 -3
  80. package/dist/chunk-DCKCAGFV.cjs +0 -81
  81. package/dist/chunk-HQHRXSQA.cjs +0 -2710
  82. package/dist/chunk-LEE5KQ7Y.mjs +0 -2710
  83. package/dist/cloudflare-CH3dBl5b.d.cts +0 -4235
  84. package/dist/cloudflare-CH3dBl5b.d.ts +0 -4235
  85. package/dist/cloudflare.d.cts +0 -2
  86. package/dist/neon-D8Z2Nn97.d.cts +0 -295
  87. package/dist/neon-PqNFJIz2.d.ts +0 -295
  88. package/dist/pg-C48FwCWW.d.cts +0 -289
  89. package/dist/pg-C5gtWUfU.d.ts +0 -289
  90. package/dist/schema-BHuyH_6Z.d.cts +0 -88
  91. package/dist/schema-BHuyH_6Z.d.ts +0 -88
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @param {{
3
+ * tenantStore: ReturnType<import('./blob-store.js').createTenantBlobStore>,
4
+ * tokenSigningKey: string,
5
+ * publicBaseUrl?: string
6
+ * }} options
7
+ */
8
+ export function createTenantContextManager(options: {
9
+ tenantStore: ReturnType<typeof import("./blob-store.js").createTenantBlobStore>;
10
+ tokenSigningKey: string;
11
+ publicBaseUrl?: string;
12
+ }): {
13
+ initializeTenant: ({ driver, connectionString, tenantId: providedTenantId }: {
14
+ driver: any;
15
+ connectionString: any;
16
+ tenantId: any;
17
+ }) => Promise<{
18
+ tenantId: string;
19
+ masterKeyFingerprint: string;
20
+ tenantToken: string;
21
+ cronToken: string;
22
+ cronWebhookUrl: string;
23
+ }>;
24
+ resolveTenant: (headers: any, options?: {}) => Promise<{
25
+ ok: boolean;
26
+ error: {
27
+ status: number;
28
+ body: {
29
+ success: boolean;
30
+ error: {
31
+ code: string;
32
+ message: string;
33
+ };
34
+ };
35
+ };
36
+ context?: undefined;
37
+ } | {
38
+ ok: boolean;
39
+ context: {
40
+ tenantId: any;
41
+ tokenType: any;
42
+ db: any;
43
+ masterKey: any;
44
+ };
45
+ error?: undefined;
46
+ }>;
47
+ };
@@ -0,0 +1,29 @@
1
+ export function createSingleUserContextManager({ db, masterKey, serverToken }?: {}): {
2
+ resolveTenant: (headers: any) => Promise<{
3
+ ok: boolean;
4
+ error: {
5
+ status: number;
6
+ body: {
7
+ success: boolean;
8
+ error: {
9
+ code: string;
10
+ message: string;
11
+ };
12
+ };
13
+ };
14
+ context?: undefined;
15
+ } | {
16
+ ok: boolean;
17
+ context: {
18
+ tenantId: string;
19
+ tokenType: string;
20
+ db: any;
21
+ masterKey: any;
22
+ };
23
+ error?: undefined;
24
+ }>;
25
+ initializeTenant: () => Promise<{
26
+ tenantId: string;
27
+ schema: any;
28
+ }>;
29
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @typedef {'tenant'|'cron'} TokenType
3
+ */
4
+ /**
5
+ * @param {{ tenantId: string, type: TokenType, expiresInSeconds?: number }} params
6
+ * @param {string} secret
7
+ */
8
+ export function createTenantToken(params: {
9
+ tenantId: string;
10
+ type: TokenType;
11
+ expiresInSeconds?: number;
12
+ }, secret: string): string;
13
+ /**
14
+ * @param {string} token
15
+ * @param {string} secret
16
+ * @param {{ expectedTypes?: TokenType[] }} [options]
17
+ */
18
+ export function verifyTenantToken(token: string, secret: string, options?: {
19
+ expectedTypes?: TokenType[];
20
+ }): any;
21
+ /**
22
+ * @param {Record<string, any>} headers
23
+ * @returns {string}
24
+ */
25
+ export function extractBearerToken(headers?: Record<string, any>): string;
26
+ export type TokenType = "tenant" | "cron";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rei-standard/amsg-server",
3
- "version": "2.6.0-next.8",
3
+ "version": "3.0.0",
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",
@@ -31,7 +31,7 @@
31
31
  "dist"
32
32
  ],
33
33
  "scripts": {
34
- "build": "tsup",
34
+ "build": "tsup && tsc -p tsconfig.json && node -e \"require('fs').copyFileSync('dist/index.d.ts', 'dist/index.d.cts')\"",
35
35
  "test": "node --test test/*.test.mjs"
36
36
  },
37
37
  "engines": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@netlify/blobs": "^8.1.0",
42
- "@rei-standard/amsg-shared": "^0.4.0-next.1",
42
+ "@rei-standard/amsg-shared": "^0.4.0",
43
43
  "web-push": "^3.6.7"
44
44
  },
45
45
  "peerDependencies": {
@@ -1,81 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/server/adapters/schema.js
2
- var TABLE_SQL = `
3
- CREATE TABLE IF NOT EXISTS scheduled_messages (
4
- id SERIAL PRIMARY KEY,
5
- user_id VARCHAR(255) NOT NULL,
6
- uuid VARCHAR(36),
7
- encrypted_payload TEXT NOT NULL,
8
- message_type VARCHAR(50) NOT NULL CHECK (message_type IN ('fixed', 'prompted', 'auto', 'instant')),
9
- next_send_at TIMESTAMP WITH TIME ZONE NOT NULL,
10
- lease_until TIMESTAMP WITH TIME ZONE,
11
- status VARCHAR(50) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'sent', 'failed')),
12
- retry_count INTEGER DEFAULT 0,
13
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
14
- updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
15
- )
16
- `;
17
- var MIGRATIONS = [
18
- {
19
- name: "add_lease_until",
20
- sql: "ALTER TABLE scheduled_messages ADD COLUMN IF NOT EXISTS lease_until TIMESTAMP WITH TIME ZONE",
21
- description: "Task claim lease (2.6.0)"
22
- }
23
- ];
24
- var INDEXES = [
25
- {
26
- name: "idx_pending_tasks_optimized",
27
- sql: `CREATE INDEX IF NOT EXISTS idx_pending_tasks_optimized
28
- ON scheduled_messages (status, next_send_at, id, retry_count)
29
- WHERE status = 'pending'`,
30
- description: "Main query index (Cron Job finds pending tasks)"
31
- },
32
- {
33
- name: "idx_cleanup_completed",
34
- sql: `CREATE INDEX IF NOT EXISTS idx_cleanup_completed
35
- ON scheduled_messages (status, updated_at)
36
- WHERE status IN ('sent', 'failed')`,
37
- description: "Cleanup query index"
38
- },
39
- {
40
- name: "idx_failed_retry",
41
- sql: `CREATE INDEX IF NOT EXISTS idx_failed_retry
42
- ON scheduled_messages (status, retry_count, next_send_at)
43
- WHERE status = 'failed' AND retry_count < 3`,
44
- description: "Failed retry index"
45
- },
46
- {
47
- name: "idx_user_id",
48
- sql: `CREATE INDEX IF NOT EXISTS idx_user_id
49
- ON scheduled_messages (user_id)`,
50
- description: "User task query index"
51
- },
52
- {
53
- name: "uidx_uuid",
54
- sql: `CREATE UNIQUE INDEX IF NOT EXISTS uidx_uuid
55
- ON scheduled_messages (uuid)
56
- WHERE uuid IS NOT NULL`,
57
- description: "UUID uniqueness guard",
58
- critical: true
59
- }
60
- ];
61
- var VERIFY_TABLE_SQL = `
62
- SELECT table_name
63
- FROM information_schema.tables
64
- WHERE table_schema = 'public'
65
- AND table_name = 'scheduled_messages'
66
- `;
67
- var COLUMNS_SQL = `
68
- SELECT column_name, data_type, is_nullable
69
- FROM information_schema.columns
70
- WHERE table_schema = 'public'
71
- AND table_name = 'scheduled_messages'
72
- ORDER BY ordinal_position
73
- `;
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
- exports.TABLE_SQL = TABLE_SQL; exports.MIGRATIONS = MIGRATIONS; exports.INDEXES = INDEXES; exports.VERIFY_TABLE_SQL = VERIFY_TABLE_SQL; exports.COLUMNS_SQL = COLUMNS_SQL;