@creatornader/agent-bridge 0.2.0 → 0.3.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.
Files changed (115) hide show
  1. package/CHANGELOG.md +86 -4
  2. package/README.md +567 -55
  3. package/ROADMAP.md +114 -0
  4. package/SECURITY.md +90 -0
  5. package/SKILL.md +68 -2
  6. package/bin/agent-bridge +2 -2
  7. package/clients/claude-desktop.json +3 -1
  8. package/dist/archive.d.ts +163 -0
  9. package/dist/archive.js +50 -0
  10. package/dist/archive.js.map +1 -0
  11. package/dist/bridge-domain-CBX3IVqC.d.ts +153 -0
  12. package/dist/{bridge-service-CfqMcMAn.d.ts → bridge-service-hX1ZQp4W.d.ts} +15 -5
  13. package/dist/bridge-store-DPVSCwfs.d.ts +102 -0
  14. package/dist/bridge.d.ts +76 -17
  15. package/dist/bridge.js +52 -24
  16. package/dist/chunk-2DFNOLMO.js +618 -0
  17. package/dist/chunk-2DFNOLMO.js.map +1 -0
  18. package/dist/{chunk-KVR4JBRF.js → chunk-2EVLG3YA.js} +2 -2
  19. package/dist/{chunk-KVR4JBRF.js.map → chunk-2EVLG3YA.js.map} +1 -1
  20. package/dist/chunk-45BZGB77.js +709 -0
  21. package/dist/chunk-45BZGB77.js.map +1 -0
  22. package/dist/chunk-4VB44KJU.js +230 -0
  23. package/dist/chunk-4VB44KJU.js.map +1 -0
  24. package/dist/chunk-5GMB3A77.js +1013 -0
  25. package/dist/chunk-5GMB3A77.js.map +1 -0
  26. package/dist/chunk-A6W4QALF.js +1258 -0
  27. package/dist/chunk-A6W4QALF.js.map +1 -0
  28. package/dist/chunk-BZLMF5O5.js +328 -0
  29. package/dist/chunk-BZLMF5O5.js.map +1 -0
  30. package/dist/{chunk-AXL2I7FH.js → chunk-CEXBMOI5.js} +240 -79
  31. package/dist/chunk-CEXBMOI5.js.map +1 -0
  32. package/dist/chunk-GADH244D.js +527 -0
  33. package/dist/chunk-GADH244D.js.map +1 -0
  34. package/dist/chunk-MBPZXTJA.js +2428 -0
  35. package/dist/chunk-MBPZXTJA.js.map +1 -0
  36. package/dist/chunk-NCO7RLBM.js +146 -0
  37. package/dist/chunk-NCO7RLBM.js.map +1 -0
  38. package/dist/chunk-Q6PPMXJC.js +1050 -0
  39. package/dist/chunk-Q6PPMXJC.js.map +1 -0
  40. package/dist/{chunk-4KAOBC5X.js → chunk-SPSMZOCJ.js} +190 -165
  41. package/dist/chunk-SPSMZOCJ.js.map +1 -0
  42. package/dist/chunk-UAHMP6GC.js +54 -0
  43. package/dist/chunk-UAHMP6GC.js.map +1 -0
  44. package/dist/{chunk-YD6YJATN.js → chunk-VOQIDTCJ.js} +4 -2
  45. package/dist/chunk-VOQIDTCJ.js.map +1 -0
  46. package/dist/chunk-WAI2IYIQ.js +554 -0
  47. package/dist/chunk-WAI2IYIQ.js.map +1 -0
  48. package/dist/cli.d.ts +2 -1
  49. package/dist/cli.js +3555 -214
  50. package/dist/cli.js.map +1 -1
  51. package/dist/client-config.d.ts +1 -1
  52. package/dist/client-config.js +1 -1
  53. package/dist/client-runtime.d.ts +10 -6
  54. package/dist/client-runtime.js +9 -6
  55. package/dist/contracts/generate.d.ts +2 -0
  56. package/dist/contracts/generate.js +247 -0
  57. package/dist/contracts/generate.js.map +1 -0
  58. package/dist/dr.d.ts +324 -0
  59. package/dist/dr.js +124 -0
  60. package/dist/dr.js.map +1 -0
  61. package/dist/gateway-CggQ8vTC.d.ts +78 -0
  62. package/dist/gateway-main.js +190 -8
  63. package/dist/gateway-main.js.map +1 -1
  64. package/dist/gateway.d.ts +4 -3
  65. package/dist/gateway.js +4 -3
  66. package/dist/index.js +11 -8
  67. package/dist/index.js.map +1 -1
  68. package/dist/postgres-bridge-store-Bfd3hRId.d.ts +49 -0
  69. package/dist/server.d.ts +3 -2
  70. package/dist/server.js +13 -8
  71. package/dist/sqlite.d.ts +94 -12
  72. package/dist/sqlite.js +7 -4
  73. package/docs/architecture-v2.md +394 -0
  74. package/docs/decisions/0001-protocol-layers-and-acknowledgment-semantics.md +85 -0
  75. package/docs/decisions/0002-canonical-operation-contract-registry.md +46 -0
  76. package/docs/decisions/0003-host-adapters-and-consumer-instance-keys.md +88 -0
  77. package/docs/ecosystem.md +86 -0
  78. package/docs/postmortems/2026-07-08-wrapper-source-drift.md +82 -0
  79. package/docs/troubleshooting.md +89 -0
  80. package/llms.txt +107 -6
  81. package/openapi/agent-bridge-v2.openapi.json +9610 -0
  82. package/package.json +24 -4
  83. package/schemas/agent-bridge-v2.capabilities.json +1829 -0
  84. package/schemas/agent-bridge-v2.mcp.json +2074 -0
  85. package/schemas/agent-bridge-v2.schema.json +4560 -0
  86. package/sql/migrations/008_message_projects.sql +36 -0
  87. package/sql/migrations/009_mailbox_query_indexes.sql +28 -0
  88. package/sql/migrations/010_publisher_delivery_policy.sql +210 -0
  89. package/sql/migrations/011_credential_security.sql +875 -0
  90. package/sql/migrations/012_request_authority.sql +177 -0
  91. package/sql/migrations/013_row_isolation.sql +495 -0
  92. package/sql/migrations/014_owner_control_plane.sql +1641 -0
  93. package/sql/migrations/015_portable_archives.sql +1813 -0
  94. package/sql/migrations/016_native_dr_fence.sql +1005 -0
  95. package/bin/CLAUDE.md +0 -11
  96. package/dist/bridge-domain-BcnBeHOn.d.ts +0 -97
  97. package/dist/bridge-store-BuGjxTn4.d.ts +0 -61
  98. package/dist/chunk-4KAOBC5X.js.map +0 -1
  99. package/dist/chunk-6MAZ6YLZ.js +0 -146
  100. package/dist/chunk-6MAZ6YLZ.js.map +0 -1
  101. package/dist/chunk-AXL2I7FH.js.map +0 -1
  102. package/dist/chunk-BV6W4AJK.js +0 -211
  103. package/dist/chunk-BV6W4AJK.js.map +0 -1
  104. package/dist/chunk-CKSKUBDQ.js +0 -153
  105. package/dist/chunk-CKSKUBDQ.js.map +0 -1
  106. package/dist/chunk-JOUBDRYX.js +0 -272
  107. package/dist/chunk-JOUBDRYX.js.map +0 -1
  108. package/dist/chunk-JTC5YURG.js +0 -49
  109. package/dist/chunk-JTC5YURG.js.map +0 -1
  110. package/dist/chunk-O26W5QHS.js +0 -409
  111. package/dist/chunk-O26W5QHS.js.map +0 -1
  112. package/dist/chunk-WEULPMUY.js +0 -988
  113. package/dist/chunk-WEULPMUY.js.map +0 -1
  114. package/dist/chunk-YD6YJATN.js.map +0 -1
  115. package/dist/gateway-BULozv3K.d.ts +0 -54
package/dist/dr.d.ts ADDED
@@ -0,0 +1,324 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+
3
+ declare const NATIVE_DR_MAX_BUNDLE_BYTES: number;
4
+ declare const NATIVE_DR_FORMAT = "agent-bridge-native-dr";
5
+ declare const NATIVE_DR_VERSION = 1;
6
+ interface NativeDrManifest {
7
+ backupId: string;
8
+ createdAt: string;
9
+ entries: Array<{
10
+ length: number;
11
+ name: string;
12
+ sha256: string;
13
+ }>;
14
+ format: typeof NATIVE_DR_FORMAT;
15
+ kind: "sqlite" | "postgres";
16
+ schema: Record<string, unknown>;
17
+ version: typeof NATIVE_DR_VERSION;
18
+ }
19
+ interface NativeDrBundleMetadata {
20
+ manifest: NativeDrManifest;
21
+ bundleSha256: string;
22
+ bundleBytes: number;
23
+ }
24
+ declare class NativeDrBundleError extends Error {
25
+ }
26
+ interface NativeDrInputEntry {
27
+ name: string;
28
+ path: string;
29
+ }
30
+ interface NativeDrBundleInput {
31
+ backupId: string;
32
+ createdAt: string;
33
+ entries: readonly NativeDrInputEntry[];
34
+ kind: "sqlite" | "postgres";
35
+ schema: Record<string, unknown>;
36
+ }
37
+ interface NativeDrBundleWriteHooks {
38
+ afterHash?(): void;
39
+ }
40
+ declare function validateNativeDrAggregateSize(entryBytes: readonly number[], framingBytes?: number): number;
41
+ declare function writeNativeDrBundle(outputDescriptor: number, input: NativeDrBundleInput, outputPath: string, hooks?: NativeDrBundleWriteHooks): NativeDrManifest;
42
+ declare class NativeDrBundleReader {
43
+ readonly path: string;
44
+ private readonly descriptor;
45
+ private readonly identity;
46
+ private closed;
47
+ constructor(path: string);
48
+ private readExact;
49
+ inspect(output?: (entry: NativeDrManifest["entries"][number]) => number | undefined): NativeDrBundleMetadata;
50
+ close(): void;
51
+ }
52
+
53
+ declare const LOCAL_SQLITE_APPLICATION_ID = 1094862642;
54
+ declare const EDGE_SQLITE_APPLICATION_ID = 1094862661;
55
+ declare const SQLITE_DATABASE_SCHEMA_VERSION = 1;
56
+ declare const SQLITE_METADATA_TABLE = "agent_bridge_metadata";
57
+ declare const LOCAL_SQLITE_SCHEMA_CONTRACTS: readonly [Readonly<{
58
+ id: "current-created-schema";
59
+ sha256: "e2f978c27ea5d151a4b4b3ec349166833441e42401fedfe60dc3ba20f3d713aa";
60
+ }>, Readonly<{
61
+ id: "current-upgraded-project-column";
62
+ sha256: "cb0975bbc1ccc7a2a66d8f4d76df619804449cf81119972337afad6cdab64451";
63
+ }>, Readonly<{
64
+ id: "current-upgraded-delivery-policy";
65
+ sha256: "d4fd8905ea73057b27662454c16c038834f5a1bf017db9cfc041792104aa2e6d";
66
+ }>, Readonly<{
67
+ id: "current-upgraded-delivery-events";
68
+ sha256: "35bdab0cbdf4ce619ba1c7d36032379ae4d9692bd7509e49bb90b409bbbcf632";
69
+ }>];
70
+ declare const EDGE_SQLITE_SCHEMA_CONTRACTS: readonly [Readonly<{
71
+ id: "current-created-schema";
72
+ sha256: "27f22b2f4024585c87e8d6f76f8999a8df92bb1f585d46594a7a1e852fd53c4c";
73
+ }>, Readonly<{
74
+ id: "current-upgraded-project-column";
75
+ sha256: "171ae11f520b4963f517d3102de64cb8a5f45c080078ff02e20aeb17891b585c";
76
+ }>];
77
+ declare const isSupportedLocalSqliteSchemaContract: (hash: string) => boolean;
78
+ declare const isSupportedEdgeSqliteSchemaContract: (hash: string) => boolean;
79
+ declare class SQLiteDatabaseContractError extends Error {
80
+ }
81
+ declare function sqliteSchemaContractHash(db: DatabaseSync): string;
82
+ declare function assertLocalUpgradeCandidate(db: DatabaseSync): void;
83
+ declare function assertEdgeUpgradeCandidate(db: DatabaseSync): void;
84
+ declare function installLocalAuthorityMarkers(db: DatabaseSync): void;
85
+ declare function installEdgeMarkers(db: DatabaseSync): void;
86
+ declare function identifySqliteDatabase(db: DatabaseSync): "local-authority" | "edge-cache" | "legacy-local" | "legacy-edge" | "unknown";
87
+ declare function assertEdgeDatabase(db: DatabaseSync): void;
88
+ declare function assertLocalAuthorityDatabase(db: DatabaseSync): void;
89
+ declare function verifySqliteHealth(db: DatabaseSync): void;
90
+
91
+ declare class NativeDrCommandError extends Error {
92
+ readonly code: string;
93
+ readonly details?: Record<string, unknown> | undefined;
94
+ constructor(code: string, message: string, details?: Record<string, unknown> | undefined);
95
+ }
96
+ interface NativeDrFileOperations {
97
+ link(source: string, target: string): void;
98
+ unlink(path: string): void;
99
+ syncDirectory(path: string): void;
100
+ afterPublish?(target: string): void;
101
+ }
102
+ interface SQLiteNativeDrOptions {
103
+ timeoutMs?: number;
104
+ fileOperations?: Partial<NativeDrFileOperations>;
105
+ runBackupWorker?: typeof runSqliteBackupWorker;
106
+ now?: () => Date;
107
+ }
108
+ declare function validateNativeDrId(value: string): string;
109
+ declare function validateNativeDrTimeout(value: number | undefined): number;
110
+ declare function runSqliteBackupWorker(source: string, destination: string, timeoutMs: number): Promise<number>;
111
+ declare function backupLocalSqlite(sourcePath: string, outputPath: string, backupIdInput?: string, options?: SQLiteNativeDrOptions): Promise<NativeDrBundleMetadata>;
112
+ declare function verifyNativeDrBundle(path: string): NativeDrBundleMetadata;
113
+ declare function restoreLocalSqlite(bundlePath: string, targetPath: string, requestIdInput?: string, options?: SQLiteNativeDrOptions): Promise<NativeDrBundleMetadata & {
114
+ requestId: string;
115
+ }>;
116
+ declare const SQLITE_EDGE_APPLICATION_ID = 1094862661;
117
+
118
+ declare const POSTGRES_NATIVE_DR_ROLE_SCHEMA = "agent-bridge.postgres-native-dr-roles";
119
+ declare const POSTGRES_NATIVE_DR_ROLE_VERSION = 1;
120
+ declare const POSTGRES_NATIVE_DR_SERVICE = "agent_bridge_dr";
121
+ declare const POSTGRES_NATIVE_DR_EXCLUDED_DATA_TABLES: readonly ["agent_bridge.agent_instances", "agent_bridge.rate_limit_buckets", "agent_bridge.request_authorities", "agent_bridge.archive_transaction_authorizations"];
122
+ type PostgresDrRoleKind = "derived" | "schema-owner" | "object-role" | "external-principal";
123
+ interface PostgresDrRole {
124
+ name: string;
125
+ kind: PostgresDrRoleKind;
126
+ }
127
+ interface PostgresDrMembership {
128
+ role: string;
129
+ member: string;
130
+ adminOption: boolean;
131
+ inheritOption: boolean;
132
+ setOption: boolean;
133
+ }
134
+ interface PostgresDrDefaultAclGrantBase {
135
+ grantor: string;
136
+ privilege: string;
137
+ grantable: boolean;
138
+ }
139
+ type PostgresDrDefaultAclGrant = PostgresDrDefaultAclGrantBase & ({
140
+ granteeKind: "public";
141
+ } | {
142
+ granteeKind: "role";
143
+ grantee: string;
144
+ });
145
+ interface PostgresDrDefaultAcl {
146
+ owner: string;
147
+ schema: "agent_bridge" | null;
148
+ objectType: "r" | "S" | "f" | "T" | "n";
149
+ grants: PostgresDrDefaultAclGrant[];
150
+ }
151
+ interface PostgresDrRoleInventory {
152
+ schema: typeof POSTGRES_NATIVE_DR_ROLE_SCHEMA;
153
+ version: typeof POSTGRES_NATIVE_DR_ROLE_VERSION;
154
+ databaseName: string;
155
+ roles: PostgresDrRole[];
156
+ memberships: PostgresDrMembership[];
157
+ defaultAcls: PostgresDrDefaultAcl[];
158
+ }
159
+ interface PostgresDrLibpqFiles {
160
+ serviceName: typeof POSTGRES_NATIVE_DR_SERVICE;
161
+ serviceFile: string;
162
+ passFile: string;
163
+ environment: Record<"LC_ALL" | "PGAPPNAME" | "PGPASSFILE" | "PGSERVICE" | "PGSERVICEFILE", string>;
164
+ }
165
+ interface PostgresNativeDrMigration {
166
+ version: number;
167
+ name: string;
168
+ checksum: string;
169
+ }
170
+ interface PostgresNativeDrSchema {
171
+ databaseName: string;
172
+ serverVersionNum: number;
173
+ serverMajor: number;
174
+ schemaVersion: number;
175
+ migrations: PostgresNativeDrMigration[];
176
+ tableCounts: Record<string, string>;
177
+ excludedDataTables: string[];
178
+ claimedDeliveryCount: string;
179
+ pgDumpVersion: string;
180
+ roleInventorySha256: string;
181
+ readinessAttestations: {
182
+ securitySchemaSha256: string;
183
+ rowIsolationSha256: string;
184
+ ownerControlSha256: string;
185
+ portableArchiveSha256: string;
186
+ };
187
+ }
188
+ interface PostgresNativeDrBundleInput {
189
+ backupId: string;
190
+ createdAt: string;
191
+ kind: "postgres";
192
+ schema: PostgresNativeDrSchema;
193
+ entries: readonly [
194
+ {
195
+ name: "postgres/database.dump";
196
+ path: string;
197
+ },
198
+ {
199
+ name: "postgres/roles.json";
200
+ path: string;
201
+ }
202
+ ];
203
+ }
204
+ interface PostgresDrQueryResult<T> {
205
+ rows: T[];
206
+ rowCount: number | null;
207
+ }
208
+ interface PostgresDrClient {
209
+ connect(): Promise<void>;
210
+ query<T = Record<string, unknown>>(sql: string, values?: unknown[]): Promise<PostgresDrQueryResult<T>>;
211
+ end(): Promise<void>;
212
+ }
213
+ interface PostgresDrToolResult {
214
+ stdout: string;
215
+ stderr: string;
216
+ exitCode: number;
217
+ timedOut?: boolean;
218
+ stdoutTruncated?: boolean;
219
+ stderrTruncated?: boolean;
220
+ }
221
+ interface PostgresNativeDrDependencies {
222
+ createClient(connectionUrl: string): PostgresDrClient;
223
+ resolveTool(tool: "pg_dump" | "pg_restore", toolDirectory?: string): string;
224
+ runTool(command: string, args: string[], environment: Record<string, string>, inputFileDescriptor?: number): Promise<PostgresDrToolResult>;
225
+ now(): Date;
226
+ randomId(): string;
227
+ checkRowIsolationReady(client: PostgresDrClient): Promise<boolean>;
228
+ removePath(path: string): void;
229
+ }
230
+ interface BackupPostgresNativeDrOptions {
231
+ stagingDirectory: string;
232
+ backupId?: string;
233
+ environment?: NodeJS.ProcessEnv;
234
+ toolDirectory?: string;
235
+ dependencies?: Partial<PostgresNativeDrDependencies>;
236
+ }
237
+ interface RestorePostgresNativeDrOptions {
238
+ dumpPath: string;
239
+ rolesPath: string;
240
+ schema: PostgresNativeDrSchema;
241
+ artifactAnchors: PostgresNativeDrArtifactAnchors;
242
+ acceptSourceSqlRisk: boolean;
243
+ environment?: NodeJS.ProcessEnv;
244
+ toolDirectory?: string;
245
+ dependencies?: Partial<PostgresNativeDrDependencies>;
246
+ }
247
+ interface PostgresNativeDrArtifactAnchor {
248
+ descriptor: number;
249
+ device: string;
250
+ inode: string;
251
+ size: string;
252
+ ctimeNanoseconds: string;
253
+ mtimeNanoseconds: string;
254
+ sha256: string;
255
+ }
256
+ interface PostgresNativeDrArtifactAnchors {
257
+ dump: PostgresNativeDrArtifactAnchor;
258
+ roles: PostgresNativeDrArtifactAnchor;
259
+ }
260
+ interface VerifyPostgresNativeDrArtifactsOptions {
261
+ dumpPath: string;
262
+ rolesPath: string;
263
+ schema: PostgresNativeDrSchema;
264
+ artifactAnchors: PostgresNativeDrArtifactAnchors;
265
+ toolDirectory?: string;
266
+ dependencies?: Partial<PostgresNativeDrDependencies>;
267
+ }
268
+ interface VerifyPostgresNativeDrArtifactsResult {
269
+ schema: PostgresNativeDrSchema;
270
+ roleInventory: PostgresDrRoleInventory;
271
+ artifactAnchors: PostgresNativeDrArtifactAnchors;
272
+ dumpTocVerified: true;
273
+ dumpToc: string;
274
+ }
275
+ interface RestorePostgresNativeDrResult {
276
+ databaseName: string;
277
+ normalizedClaimedDeliveries: string;
278
+ tableCounts: Record<string, string>;
279
+ readiness: {
280
+ security: true;
281
+ rowIsolation: true;
282
+ ownerControl: true;
283
+ portableArchive: true;
284
+ };
285
+ }
286
+ declare class PostgresNativeDrError extends Error {
287
+ readonly code: string;
288
+ readonly details: {
289
+ residualRoleShells?: string[];
290
+ targetOffline?: boolean;
291
+ targetMutated?: boolean;
292
+ restoreCompleted?: boolean;
293
+ recoveryPaths?: string[];
294
+ causeCode?: string;
295
+ };
296
+ constructor(code: string, message: string, details?: {
297
+ residualRoleShells?: string[];
298
+ targetOffline?: boolean;
299
+ targetMutated?: boolean;
300
+ restoreCompleted?: boolean;
301
+ recoveryPaths?: string[];
302
+ causeCode?: string;
303
+ });
304
+ }
305
+ declare function createPostgresDrLibpqFiles(connectionUrl: string, directory: string): PostgresDrLibpqFiles;
306
+ declare function buildPgDumpArgs(outputPath: string, snapshot: string, serviceName?: string): string[];
307
+ declare function buildPgRestoreArgs(inputPath: string | undefined, serviceName?: string): string[];
308
+ declare function buildPgRestoreListArgs(inputPath?: string): string[];
309
+ declare function buildPgRestoreSchemaAclArgs(inputPath: string | undefined, listPath: string, serviceName?: string): string[];
310
+ declare function validatePostgresDumpToc(text: string): void;
311
+ declare function schemaAclRestoreList(text: string): string;
312
+ declare function parsePostgresToolMajor(output: string): number;
313
+ declare function validatePostgresRoleInventory(value: unknown): PostgresDrRoleInventory;
314
+ declare function canonicalPostgresRoleInventory(inventory: PostgresDrRoleInventory): string;
315
+ declare function buildPostgresRoleShellStatements(inventory: PostgresDrRoleInventory): string[];
316
+ declare function buildPostgresMembershipStatements(inventory: PostgresDrRoleInventory, serverMajor: number): string[];
317
+ declare function buildPostgresDefaultPrivilegeStatements(inventory: PostgresDrRoleInventory): string[];
318
+ declare function collectPostgresRoleInventory(client: PostgresDrClient, databaseName: string): Promise<PostgresDrRoleInventory>;
319
+ declare function backupPostgresNativeDr(options: BackupPostgresNativeDrOptions): Promise<PostgresNativeDrBundleInput>;
320
+ declare function verifyPostgresNativeDrArtifacts(options: VerifyPostgresNativeDrArtifactsOptions): Promise<VerifyPostgresNativeDrArtifactsResult>;
321
+ declare function assertPostgresRestoreAuthority(client: PostgresDrClient): Promise<void>;
322
+ declare function restorePostgresNativeDr(options: RestorePostgresNativeDrOptions): Promise<RestorePostgresNativeDrResult>;
323
+
324
+ export { type BackupPostgresNativeDrOptions, EDGE_SQLITE_APPLICATION_ID, EDGE_SQLITE_SCHEMA_CONTRACTS, LOCAL_SQLITE_APPLICATION_ID, LOCAL_SQLITE_SCHEMA_CONTRACTS, NATIVE_DR_FORMAT, NATIVE_DR_MAX_BUNDLE_BYTES, NATIVE_DR_VERSION, NativeDrBundleError, type NativeDrBundleInput, type NativeDrBundleMetadata, NativeDrBundleReader, type NativeDrBundleWriteHooks, NativeDrCommandError, type NativeDrFileOperations, type NativeDrInputEntry, type NativeDrManifest, POSTGRES_NATIVE_DR_EXCLUDED_DATA_TABLES, POSTGRES_NATIVE_DR_ROLE_SCHEMA, POSTGRES_NATIVE_DR_ROLE_VERSION, POSTGRES_NATIVE_DR_SERVICE, type PostgresDrClient, type PostgresDrDefaultAcl, type PostgresDrDefaultAclGrant, type PostgresDrLibpqFiles, type PostgresDrMembership, type PostgresDrRole, type PostgresDrRoleInventory, type PostgresDrRoleKind, type PostgresDrToolResult, type PostgresNativeDrArtifactAnchor, type PostgresNativeDrArtifactAnchors, type PostgresNativeDrBundleInput, type PostgresNativeDrDependencies, PostgresNativeDrError, type PostgresNativeDrMigration, type PostgresNativeDrSchema, type RestorePostgresNativeDrOptions, type RestorePostgresNativeDrResult, SQLITE_DATABASE_SCHEMA_VERSION, SQLITE_EDGE_APPLICATION_ID, SQLITE_METADATA_TABLE, SQLiteDatabaseContractError, type SQLiteNativeDrOptions, type VerifyPostgresNativeDrArtifactsOptions, type VerifyPostgresNativeDrArtifactsResult, assertEdgeDatabase, assertEdgeUpgradeCandidate, assertLocalAuthorityDatabase, assertLocalUpgradeCandidate, assertPostgresRestoreAuthority, backupLocalSqlite, backupPostgresNativeDr, buildPgDumpArgs, buildPgRestoreArgs, buildPgRestoreListArgs, buildPgRestoreSchemaAclArgs, buildPostgresDefaultPrivilegeStatements, buildPostgresMembershipStatements, buildPostgresRoleShellStatements, canonicalPostgresRoleInventory, collectPostgresRoleInventory, createPostgresDrLibpqFiles, identifySqliteDatabase, installEdgeMarkers, installLocalAuthorityMarkers, isSupportedEdgeSqliteSchemaContract, isSupportedLocalSqliteSchemaContract, parsePostgresToolMajor, restoreLocalSqlite, restorePostgresNativeDr, runSqliteBackupWorker, schemaAclRestoreList, sqliteSchemaContractHash, validateNativeDrAggregateSize, validateNativeDrId, validateNativeDrTimeout, validatePostgresDumpToc, validatePostgresRoleInventory, verifyNativeDrBundle, verifyPostgresNativeDrArtifacts, verifySqliteHealth, writeNativeDrBundle };
package/dist/dr.js ADDED
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ NATIVE_DR_FORMAT,
4
+ NATIVE_DR_MAX_BUNDLE_BYTES,
5
+ NATIVE_DR_VERSION,
6
+ NativeDrBundleError,
7
+ NativeDrBundleReader,
8
+ NativeDrCommandError,
9
+ POSTGRES_NATIVE_DR_EXCLUDED_DATA_TABLES,
10
+ POSTGRES_NATIVE_DR_ROLE_SCHEMA,
11
+ POSTGRES_NATIVE_DR_ROLE_VERSION,
12
+ POSTGRES_NATIVE_DR_SERVICE,
13
+ PostgresNativeDrError,
14
+ SQLITE_EDGE_APPLICATION_ID,
15
+ assertPostgresRestoreAuthority,
16
+ backupLocalSqlite,
17
+ backupPostgresNativeDr,
18
+ buildPgDumpArgs,
19
+ buildPgRestoreArgs,
20
+ buildPgRestoreListArgs,
21
+ buildPgRestoreSchemaAclArgs,
22
+ buildPostgresDefaultPrivilegeStatements,
23
+ buildPostgresMembershipStatements,
24
+ buildPostgresRoleShellStatements,
25
+ canonicalPostgresRoleInventory,
26
+ collectPostgresRoleInventory,
27
+ createPostgresDrLibpqFiles,
28
+ parsePostgresToolMajor,
29
+ restoreLocalSqlite,
30
+ restorePostgresNativeDr,
31
+ runSqliteBackupWorker,
32
+ schemaAclRestoreList,
33
+ validateNativeDrAggregateSize,
34
+ validateNativeDrId,
35
+ validateNativeDrTimeout,
36
+ validatePostgresDumpToc,
37
+ validatePostgresRoleInventory,
38
+ verifyNativeDrBundle,
39
+ verifyPostgresNativeDrArtifacts,
40
+ writeNativeDrBundle
41
+ } from "./chunk-MBPZXTJA.js";
42
+ import {
43
+ EDGE_SQLITE_APPLICATION_ID,
44
+ EDGE_SQLITE_SCHEMA_CONTRACTS,
45
+ LOCAL_SQLITE_APPLICATION_ID,
46
+ LOCAL_SQLITE_SCHEMA_CONTRACTS,
47
+ SQLITE_DATABASE_SCHEMA_VERSION,
48
+ SQLITE_METADATA_TABLE,
49
+ SQLiteDatabaseContractError,
50
+ assertEdgeDatabase,
51
+ assertEdgeUpgradeCandidate,
52
+ assertLocalAuthorityDatabase,
53
+ assertLocalUpgradeCandidate,
54
+ identifySqliteDatabase,
55
+ installEdgeMarkers,
56
+ installLocalAuthorityMarkers,
57
+ isSupportedEdgeSqliteSchemaContract,
58
+ isSupportedLocalSqliteSchemaContract,
59
+ sqliteSchemaContractHash,
60
+ verifySqliteHealth
61
+ } from "./chunk-5GMB3A77.js";
62
+ import "./chunk-NCO7RLBM.js";
63
+ import "./chunk-45BZGB77.js";
64
+ import "./chunk-VOQIDTCJ.js";
65
+ import "./chunk-BZLMF5O5.js";
66
+ export {
67
+ EDGE_SQLITE_APPLICATION_ID,
68
+ EDGE_SQLITE_SCHEMA_CONTRACTS,
69
+ LOCAL_SQLITE_APPLICATION_ID,
70
+ LOCAL_SQLITE_SCHEMA_CONTRACTS,
71
+ NATIVE_DR_FORMAT,
72
+ NATIVE_DR_MAX_BUNDLE_BYTES,
73
+ NATIVE_DR_VERSION,
74
+ NativeDrBundleError,
75
+ NativeDrBundleReader,
76
+ NativeDrCommandError,
77
+ POSTGRES_NATIVE_DR_EXCLUDED_DATA_TABLES,
78
+ POSTGRES_NATIVE_DR_ROLE_SCHEMA,
79
+ POSTGRES_NATIVE_DR_ROLE_VERSION,
80
+ POSTGRES_NATIVE_DR_SERVICE,
81
+ PostgresNativeDrError,
82
+ SQLITE_DATABASE_SCHEMA_VERSION,
83
+ SQLITE_EDGE_APPLICATION_ID,
84
+ SQLITE_METADATA_TABLE,
85
+ SQLiteDatabaseContractError,
86
+ assertEdgeDatabase,
87
+ assertEdgeUpgradeCandidate,
88
+ assertLocalAuthorityDatabase,
89
+ assertLocalUpgradeCandidate,
90
+ assertPostgresRestoreAuthority,
91
+ backupLocalSqlite,
92
+ backupPostgresNativeDr,
93
+ buildPgDumpArgs,
94
+ buildPgRestoreArgs,
95
+ buildPgRestoreListArgs,
96
+ buildPgRestoreSchemaAclArgs,
97
+ buildPostgresDefaultPrivilegeStatements,
98
+ buildPostgresMembershipStatements,
99
+ buildPostgresRoleShellStatements,
100
+ canonicalPostgresRoleInventory,
101
+ collectPostgresRoleInventory,
102
+ createPostgresDrLibpqFiles,
103
+ identifySqliteDatabase,
104
+ installEdgeMarkers,
105
+ installLocalAuthorityMarkers,
106
+ isSupportedEdgeSqliteSchemaContract,
107
+ isSupportedLocalSqliteSchemaContract,
108
+ parsePostgresToolMajor,
109
+ restoreLocalSqlite,
110
+ restorePostgresNativeDr,
111
+ runSqliteBackupWorker,
112
+ schemaAclRestoreList,
113
+ sqliteSchemaContractHash,
114
+ validateNativeDrAggregateSize,
115
+ validateNativeDrId,
116
+ validateNativeDrTimeout,
117
+ validatePostgresDumpToc,
118
+ validatePostgresRoleInventory,
119
+ verifyNativeDrBundle,
120
+ verifyPostgresNativeDrArtifacts,
121
+ verifySqliteHealth,
122
+ writeNativeDrBundle
123
+ };
124
+ //# sourceMappingURL=dr.js.map
package/dist/dr.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,78 @@
1
+ import * as node_http from 'node:http';
2
+ import { IncomingMessage, ServerResponse } from 'node:http';
3
+ import { a as BridgeStore } from './bridge-store-DPVSCwfs.js';
4
+ import { c as BridgePrincipal } from './bridge-domain-CBX3IVqC.js';
5
+ import { P as PgQueryable, b as PostgresBridgeStore } from './postgres-bridge-store-Bfd3hRId.js';
6
+
7
+ declare const AUTHORIZATION_SCOPES: readonly ["deliveries:claim", "deliveries:manage", "deliveries:read", "deliveries:settle", "gateway:metrics", "messages:read", "messages:write", "presence:read", "presence:write", "receipts:write", "status:read"];
8
+ type AuthorizationScope = typeof AUTHORIZATION_SCOPES[number];
9
+ type OperationId = "capabilities" | "status" | "client_status" | "gateway_metrics" | "publish_message" | "history" | "record_receipt" | "claim_delivery" | "list_deliveries" | "list_delivery_events" | "cancel_delivery" | "requeue_delivery" | "extend_delivery" | "acknowledge_delivery" | "negative_acknowledge_delivery" | "heartbeat" | "presence" | "sync";
10
+
11
+ interface AuthenticatedCredential {
12
+ id: string;
13
+ principal: BridgePrincipal;
14
+ /** Canonical authorization scopes granted to this credential. */
15
+ scopes: readonly AuthorizationScope[];
16
+ }
17
+ interface CredentialResolver {
18
+ resolve(token: string, signal?: AbortSignal): Promise<AuthenticatedCredential | null>;
19
+ }
20
+ declare function hashCredential(token: string): string;
21
+ declare class PostgresCredentialResolver implements CredentialResolver {
22
+ private readonly db;
23
+ constructor(db: PgQueryable);
24
+ resolve(token: string, signal?: AbortSignal): Promise<AuthenticatedCredential | null>;
25
+ }
26
+ declare function bearerToken(value: string | undefined): string | null;
27
+ declare function safeTokenHashEqual(token: string, expectedHash: string): boolean;
28
+
29
+ interface RateLimitDecision {
30
+ allowed: boolean;
31
+ policyId: string | null;
32
+ limit: number;
33
+ remaining: number;
34
+ retryAfterSeconds: number;
35
+ }
36
+ interface GatewaySecurity {
37
+ recordScopeDenial(credentialId: string, operationId: OperationId, requestId: string, signal?: AbortSignal): Promise<void>;
38
+ consume(credentialId: string, operationId: OperationId, requestId: string, signal?: AbortSignal): Promise<RateLimitDecision>;
39
+ }
40
+ declare class PostgresGatewaySecurity implements GatewaySecurity {
41
+ private readonly db;
42
+ constructor(db: PgQueryable);
43
+ private functionName;
44
+ recordScopeDenial(credentialId: string, operationId: OperationId, requestId: string, signal?: AbortSignal): Promise<void>;
45
+ consume(credentialId: string, operationId: OperationId, requestId: string, signal?: AbortSignal): Promise<RateLimitDecision>;
46
+ }
47
+
48
+ interface RequestAuthorityContext {
49
+ credential: {
50
+ id: string;
51
+ principal: BridgePrincipal;
52
+ scopes: readonly AuthorizationScope[];
53
+ };
54
+ store: PostgresBridgeStore;
55
+ security: PostgresGatewaySecurity;
56
+ /** Establishes the savepoint separating durable security accounting from domain work. */
57
+ beginDomainWork(): Promise<void>;
58
+ }
59
+ interface RequestAuthority {
60
+ run<T>(credentialId: string, credentialHash: string, requestId: string, signal: AbortSignal, work: (context: RequestAuthorityContext) => Promise<T>): Promise<T>;
61
+ }
62
+
63
+ interface GatewayOptions {
64
+ store: BridgeStore;
65
+ credentials: CredentialResolver;
66
+ security: GatewaySecurity;
67
+ allowedOrigins?: string[];
68
+ bodyLimitBytes?: number;
69
+ requestDeadlineMs?: number;
70
+ ready?: () => Promise<boolean>;
71
+ /** Reports whether the configured database has verified row isolation. */
72
+ rowIsolationReady?: () => Promise<boolean>;
73
+ /** Production PostgreSQL request authority. Other providers omit this. */
74
+ requestAuthority?: RequestAuthority;
75
+ }
76
+ declare function createGateway(options: GatewayOptions): node_http.Server<typeof IncomingMessage, typeof ServerResponse>;
77
+
78
+ export { type AuthenticatedCredential as A, type CredentialResolver as C, type GatewayOptions as G, PostgresCredentialResolver as P, bearerToken as b, createGateway as c, hashCredential as h, safeTokenHashEqual as s };