@stackory/gateway-persistence 0.0.1 → 0.3.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.
- package/dist/esm/gateway-database.d.ts.map +1 -1
- package/dist/esm/gateway-database.js +7 -2
- package/dist/esm/gateway-database.js.map +1 -1
- package/dist/esm/migrations/generated.d.ts.map +1 -1
- package/dist/esm/migrations/generated.js +5 -2
- package/dist/esm/migrations/generated.js.map +1 -1
- package/dist/esm/schema.d.ts +10 -74
- package/dist/esm/schema.d.ts.map +1 -1
- package/dist/esm/schema.js +6 -10
- package/dist/esm/schema.js.map +1 -1
- package/dist/esm/stores/index.d.ts +1 -1
- package/dist/esm/stores/index.d.ts.map +1 -1
- package/dist/esm/stores/index.js +1 -1
- package/dist/esm/stores/index.js.map +1 -1
- package/dist/esm/stores/sqlite-user-binding-store.d.ts +9 -0
- package/dist/esm/stores/sqlite-user-binding-store.d.ts.map +1 -0
- package/dist/esm/stores/sqlite-user-binding-store.js +26 -0
- package/dist/esm/stores/sqlite-user-binding-store.js.map +1 -0
- package/package.json +14 -14
- package/dist/esm/stores/sqlite-policy-store.d.ts +0 -12
- package/dist/esm/stores/sqlite-policy-store.d.ts.map +0 -1
- package/dist/esm/stores/sqlite-policy-store.js +0 -95
- package/dist/esm/stores/sqlite-policy-store.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-database.d.ts","sourceRoot":"","sources":["../../src/gateway-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,wBAAwB,CAAC;AAQhC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACtD,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"gateway-database.d.ts","sourceRoot":"","sources":["../../src/gateway-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,wBAAwB,CAAC;AAQhC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CACtD,GAAG,gBAAgB,CAkBnB"}
|
|
@@ -2,17 +2,22 @@ import { openDatabase } from './database';
|
|
|
2
2
|
import { createDedupStore } from './stores/dedup-store';
|
|
3
3
|
import { SqliteAdapterBindingStore } from './stores/sqlite-binding-store';
|
|
4
4
|
import { SqlitePairRequestStore } from './stores/sqlite-pair-request-store';
|
|
5
|
-
import { SqliteAccessPolicyStore } from './stores/sqlite-policy-store';
|
|
6
5
|
import { SqliteSessionStore } from './stores/sqlite-session-store';
|
|
6
|
+
import { SqliteUserBindingStore } from './stores/sqlite-user-binding-store';
|
|
7
7
|
export function openGatewayDatabase(opts) {
|
|
8
8
|
const db = openDatabase({ databasePath: opts.databasePath });
|
|
9
9
|
const serializers = opts.serializers ?? new Map();
|
|
10
10
|
return {
|
|
11
11
|
sessions: new SqliteSessionStore(db),
|
|
12
12
|
bindings: new SqliteAdapterBindingStore(db, serializers),
|
|
13
|
-
|
|
13
|
+
users: new SqliteUserBindingStore(db),
|
|
14
14
|
pairs: new SqlitePairRequestStore(db),
|
|
15
15
|
dedup: createDedupStore(db),
|
|
16
|
+
// sync-only 事务 — db.drizzle.transaction(fn) 对回调返回值有
|
|
17
|
+
// T extends Promise<any> ? DrizzleTypeError : T 的泛型约束,
|
|
18
|
+
// 而我们独立泛型 T 无法满足该条件类型,故需要 as never → as T 绕开。
|
|
19
|
+
// 下层(drizzle + node:sqlite)与上层(fn)均为同步,此 cast 安全。
|
|
20
|
+
transaction: (fn) => db.drizzle.transaction(() => fn()),
|
|
16
21
|
close: () => db.close(),
|
|
17
22
|
};
|
|
18
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-database.js","sourceRoot":"","sources":["../../src/gateway-database.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"gateway-database.js","sourceRoot":"","sources":["../../src/gateway-database.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,MAAM,UAAU,mBAAmB,CAAC,IAGnC;IACA,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,EAAE,CAAC;IAElD,OAAO;QACN,QAAQ,EAAE,IAAI,kBAAkB,CAAC,EAAE,CAAC;QACpC,QAAQ,EAAE,IAAI,yBAAyB,CAAC,EAAE,EAAE,WAAW,CAAC;QACxD,KAAK,EAAE,IAAI,sBAAsB,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,IAAI,sBAAsB,CAAC,EAAE,CAAC;QACrC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC3B,oDAAoD;QACpD,uDAAuD;QACvD,8CAA8C;QAC9C,kDAAkD;QAClD,WAAW,EAAE,CAAI,EAAW,EAAK,EAAE,CAClC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,EAAW,CAAM;QACjD,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;KACvB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../../src/migrations/generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../../src/migrations/generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,eAAO,MAAM,mBAAmB,EAAE,SAAS,UAAU,EAKpD,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
// AUTO-GENERATED by `pnpm drizzle:codegen`. Do not edit by hand.
|
|
2
2
|
// To regenerate: edit src/schema.ts → run `pnpm drizzle:generate` → `pnpm drizzle:codegen`.
|
|
3
|
-
const
|
|
3
|
+
const _20260610074040_third_jimmy_woo = "CREATE TABLE `adapter_bindings` (\n\t`adapter_id` text PRIMARY KEY,\n\t`platform` text NOT NULL,\n\t`config_json` text DEFAULT '{}' NOT NULL,\n\t`secrets_json` text DEFAULT '{}' NOT NULL\n);\n\nCREATE TABLE `inbound_dedup` (\n\t`adapter_id` text NOT NULL,\n\t`message_id` text NOT NULL,\n\t`seen_at_ms` integer NOT NULL,\n\tCONSTRAINT `inbound_dedup_pkey` PRIMARY KEY(`adapter_id`, `message_id`)\n);\n\nCREATE TABLE `pair_requests` (\n\t`code` text PRIMARY KEY,\n\t`adapter_id` text NOT NULL,\n\t`user_id` text NOT NULL,\n\t`chat_id` text NOT NULL,\n\t`expires_at_ms` integer NOT NULL\n);\n\nCREATE TABLE `sessions` (\n\t`adapter_id` text NOT NULL,\n\t`chat_id` text NOT NULL,\n\t`thread_id` text DEFAULT '' NOT NULL,\n\t`user_id` text DEFAULT '' NOT NULL,\n\t`session_id` text NOT NULL,\n\t`state_kind` text NOT NULL,\n\t`state_data` text NOT NULL,\n\t`origin_json` text NOT NULL,\n\t`created_at_ms` integer NOT NULL,\n\t`last_turn_at_ms` integer NOT NULL,\n\t`token_input` integer DEFAULT 0 NOT NULL,\n\t`token_output` integer DEFAULT 0 NOT NULL,\n\tCONSTRAINT `sessions_pkey` PRIMARY KEY(`adapter_id`, `chat_id`, `thread_id`, `user_id`)\n);\n\nCREATE TABLE `user_bindings` (\n\t`adapter_id` text NOT NULL,\n\t`user_id` text NOT NULL,\n\t`approved_at_ms` integer NOT NULL,\n\t`approved_by` text NOT NULL,\n\tCONSTRAINT `user_bindings_pkey` PRIMARY KEY(`adapter_id`, `user_id`)\n);\n\nCREATE INDEX `idx_inbound_dedup_seen` ON `inbound_dedup` (`adapter_id`,`seen_at_ms`);\nCREATE INDEX `idx_sessions_adapter_state` ON `sessions` (`adapter_id`,`state_kind`);\nCREATE INDEX `idx_sessions_adapter_idle` ON `sessions` (`adapter_id`,`last_turn_at_ms`);";
|
|
4
4
|
export const generatedMigrations = [
|
|
5
|
-
{
|
|
5
|
+
{
|
|
6
|
+
name: '20260610074040_third_jimmy_woo',
|
|
7
|
+
sql: _20260610074040_third_jimmy_woo,
|
|
8
|
+
},
|
|
6
9
|
];
|
|
7
10
|
//# sourceMappingURL=generated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../../src/migrations/generated.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4FAA4F;AAI5F,MAAM,
|
|
1
|
+
{"version":3,"file":"generated.js","sourceRoot":"","sources":["../../../src/migrations/generated.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4FAA4F;AAI5F,MAAM,+BAA+B,GACpC,inDAAinD,CAAC;AAEnnD,MAAM,CAAC,MAAM,mBAAmB,GAA0B;IACzD;QACC,IAAI,EAAE,gCAAgC;QACtC,GAAG,EAAE,+BAA+B;KACpC;CACD,CAAC"}
|
package/dist/esm/schema.d.ts
CHANGED
|
@@ -350,13 +350,13 @@ export declare const adapterBindings: import("drizzle-orm/sqlite-core").SQLiteTa
|
|
|
350
350
|
};
|
|
351
351
|
dialect: "sqlite";
|
|
352
352
|
}>;
|
|
353
|
-
export declare const
|
|
354
|
-
name: "
|
|
353
|
+
export declare const userBindings: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
354
|
+
name: "user_bindings";
|
|
355
355
|
schema: undefined;
|
|
356
356
|
columns: {
|
|
357
357
|
adapterId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
358
358
|
name: string;
|
|
359
|
-
tableName: "
|
|
359
|
+
tableName: "user_bindings";
|
|
360
360
|
dataType: "string";
|
|
361
361
|
data: string;
|
|
362
362
|
driverParam: string;
|
|
@@ -370,25 +370,9 @@ export declare const chatPolicy: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
370
370
|
identity: undefined;
|
|
371
371
|
generated: undefined;
|
|
372
372
|
}, {}>;
|
|
373
|
-
|
|
374
|
-
name: string;
|
|
375
|
-
tableName: "chat_policy";
|
|
376
|
-
dataType: "string";
|
|
377
|
-
data: string;
|
|
378
|
-
driverParam: string;
|
|
379
|
-
notNull: true;
|
|
380
|
-
hasDefault: false;
|
|
381
|
-
isPrimaryKey: false;
|
|
382
|
-
isAutoincrement: false;
|
|
383
|
-
hasRuntimeDefault: false;
|
|
384
|
-
enumValues: [string, ...string[]];
|
|
385
|
-
baseColumn: never;
|
|
386
|
-
identity: undefined;
|
|
387
|
-
generated: undefined;
|
|
388
|
-
}, {}>;
|
|
389
|
-
policy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
373
|
+
userId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
390
374
|
name: string;
|
|
391
|
-
tableName: "
|
|
375
|
+
tableName: "user_bindings";
|
|
392
376
|
dataType: "string";
|
|
393
377
|
data: string;
|
|
394
378
|
driverParam: string;
|
|
@@ -402,14 +386,14 @@ export declare const chatPolicy: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
402
386
|
identity: undefined;
|
|
403
387
|
generated: undefined;
|
|
404
388
|
}, {}>;
|
|
405
|
-
|
|
389
|
+
approvedAtMs: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
406
390
|
name: string;
|
|
407
|
-
tableName: "
|
|
391
|
+
tableName: "user_bindings";
|
|
408
392
|
dataType: "number int53";
|
|
409
393
|
data: number;
|
|
410
394
|
driverParam: number;
|
|
411
395
|
notNull: true;
|
|
412
|
-
hasDefault:
|
|
396
|
+
hasDefault: false;
|
|
413
397
|
isPrimaryKey: false;
|
|
414
398
|
isAutoincrement: false;
|
|
415
399
|
hasRuntimeDefault: false;
|
|
@@ -418,41 +402,9 @@ export declare const chatPolicy: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
418
402
|
identity: undefined;
|
|
419
403
|
generated: undefined;
|
|
420
404
|
}, {}>;
|
|
421
|
-
|
|
422
|
-
name: string;
|
|
423
|
-
tableName: "chat_policy";
|
|
424
|
-
dataType: "string";
|
|
425
|
-
data: string;
|
|
426
|
-
driverParam: string;
|
|
427
|
-
notNull: true;
|
|
428
|
-
hasDefault: true;
|
|
429
|
-
isPrimaryKey: false;
|
|
430
|
-
isAutoincrement: false;
|
|
431
|
-
hasRuntimeDefault: false;
|
|
432
|
-
enumValues: [string, ...string[]];
|
|
433
|
-
baseColumn: never;
|
|
434
|
-
identity: undefined;
|
|
435
|
-
generated: undefined;
|
|
436
|
-
}, {}>;
|
|
437
|
-
blacklistJson: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
438
|
-
name: string;
|
|
439
|
-
tableName: "chat_policy";
|
|
440
|
-
dataType: "string";
|
|
441
|
-
data: string;
|
|
442
|
-
driverParam: string;
|
|
443
|
-
notNull: true;
|
|
444
|
-
hasDefault: true;
|
|
445
|
-
isPrimaryKey: false;
|
|
446
|
-
isAutoincrement: false;
|
|
447
|
-
hasRuntimeDefault: false;
|
|
448
|
-
enumValues: [string, ...string[]];
|
|
449
|
-
baseColumn: never;
|
|
450
|
-
identity: undefined;
|
|
451
|
-
generated: undefined;
|
|
452
|
-
}, {}>;
|
|
453
|
-
updatedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
405
|
+
approvedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
454
406
|
name: string;
|
|
455
|
-
tableName: "
|
|
407
|
+
tableName: "user_bindings";
|
|
456
408
|
dataType: "string";
|
|
457
409
|
data: string;
|
|
458
410
|
driverParam: string;
|
|
@@ -466,22 +418,6 @@ export declare const chatPolicy: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
466
418
|
identity: undefined;
|
|
467
419
|
generated: undefined;
|
|
468
420
|
}, {}>;
|
|
469
|
-
updatedAtMs: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
470
|
-
name: string;
|
|
471
|
-
tableName: "chat_policy";
|
|
472
|
-
dataType: "number int53";
|
|
473
|
-
data: number;
|
|
474
|
-
driverParam: number;
|
|
475
|
-
notNull: true;
|
|
476
|
-
hasDefault: false;
|
|
477
|
-
isPrimaryKey: false;
|
|
478
|
-
isAutoincrement: false;
|
|
479
|
-
hasRuntimeDefault: false;
|
|
480
|
-
enumValues: undefined;
|
|
481
|
-
baseColumn: never;
|
|
482
|
-
identity: undefined;
|
|
483
|
-
generated: undefined;
|
|
484
|
-
}, {}>;
|
|
485
421
|
};
|
|
486
422
|
dialect: "sqlite";
|
|
487
423
|
}>;
|
package/dist/esm/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BpB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK1B,CAAC;AAEH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BpB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK1B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMvB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC"}
|
package/dist/esm/schema.js
CHANGED
|
@@ -66,19 +66,15 @@ export const adapterBindings = sqliteTable('adapter_bindings', {
|
|
|
66
66
|
configJson: text('config_json').notNull().default('{}'),
|
|
67
67
|
secretsJson: text('secrets_json').notNull().default('{}'),
|
|
68
68
|
});
|
|
69
|
-
export const
|
|
69
|
+
export const userBindings = sqliteTable('user_bindings', {
|
|
70
70
|
adapterId: text('adapter_id').notNull(),
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
allowlistJson: text('allowlist_json').notNull().default('[]'),
|
|
75
|
-
blacklistJson: text('blacklist_json').notNull().default('[]'),
|
|
76
|
-
updatedBy: text('updated_by').notNull(),
|
|
77
|
-
updatedAtMs: integer('updated_at_ms').notNull(),
|
|
71
|
+
userId: text('user_id').notNull(),
|
|
72
|
+
approvedAtMs: integer('approved_at_ms').notNull(),
|
|
73
|
+
approvedBy: text('approved_by').notNull(),
|
|
78
74
|
}, (t) => [
|
|
79
75
|
primaryKey({
|
|
80
|
-
name: '
|
|
81
|
-
columns: [t.adapterId, t.
|
|
76
|
+
name: 'user_bindings_pkey',
|
|
77
|
+
columns: [t.adapterId, t.userId],
|
|
82
78
|
}),
|
|
83
79
|
]);
|
|
84
80
|
export const pairRequests = sqliteTable('pair_requests', {
|
package/dist/esm/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,6 @@ export { createDedupStore } from '../stores/dedup-store';
|
|
|
2
2
|
export { InMemorySessionStore } from '../stores/in-memory-session-store';
|
|
3
3
|
export { SqliteAdapterBindingStore } from '../stores/sqlite-binding-store';
|
|
4
4
|
export { SqlitePairRequestStore } from '../stores/sqlite-pair-request-store';
|
|
5
|
-
export { SqliteAccessPolicyStore } from '../stores/sqlite-policy-store';
|
|
6
5
|
export { SqliteSessionStore } from '../stores/sqlite-session-store';
|
|
6
|
+
export { SqliteUserBindingStore } from '../stores/sqlite-user-binding-store';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stores/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stores/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC"}
|
package/dist/esm/stores/index.js
CHANGED
|
@@ -3,6 +3,6 @@ export { createDedupStore } from '../stores/dedup-store';
|
|
|
3
3
|
export { InMemorySessionStore } from '../stores/in-memory-session-store';
|
|
4
4
|
export { SqliteAdapterBindingStore } from '../stores/sqlite-binding-store';
|
|
5
5
|
export { SqlitePairRequestStore } from '../stores/sqlite-pair-request-store';
|
|
6
|
-
export { SqliteAccessPolicyStore } from '../stores/sqlite-policy-store';
|
|
7
6
|
export { SqliteSessionStore } from '../stores/sqlite-session-store';
|
|
7
|
+
export { SqliteUserBindingStore } from '../stores/sqlite-user-binding-store';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stores/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stores/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IUserBindingStore } from '@stackory/gateway-core';
|
|
2
|
+
import type { IInternalDatabaseHandle } from '../database';
|
|
3
|
+
export declare class SqliteUserBindingStore implements IUserBindingStore {
|
|
4
|
+
private readonly db;
|
|
5
|
+
constructor(db: IInternalDatabaseHandle);
|
|
6
|
+
isApproved(adapterId: string, userId: string): boolean;
|
|
7
|
+
approve(adapterId: string, userId: string, by: string, atMs: number): boolean;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=sqlite-user-binding-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-user-binding-store.d.ts","sourceRoot":"","sources":["../../../src/stores/sqlite-user-binding-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,sBAAuB,YAAW,iBAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,uBAAuB;IAExD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IActD,OAAO,CACN,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GACV,OAAO;CASV"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { and, eq } from 'drizzle-orm';
|
|
2
|
+
import { userBindings } from '../schema';
|
|
3
|
+
export class SqliteUserBindingStore {
|
|
4
|
+
db;
|
|
5
|
+
constructor(db) {
|
|
6
|
+
this.db = db;
|
|
7
|
+
}
|
|
8
|
+
isApproved(adapterId, userId) {
|
|
9
|
+
const row = this.db.drizzle
|
|
10
|
+
.select()
|
|
11
|
+
.from(userBindings)
|
|
12
|
+
.where(and(eq(userBindings.adapterId, adapterId), eq(userBindings.userId, userId)))
|
|
13
|
+
.get();
|
|
14
|
+
return row !== undefined;
|
|
15
|
+
}
|
|
16
|
+
approve(adapterId, userId, by, atMs) {
|
|
17
|
+
const result = this.db.drizzle
|
|
18
|
+
.insert(userBindings)
|
|
19
|
+
.values({ adapterId, userId, approvedBy: by, approvedAtMs: atMs })
|
|
20
|
+
.onConflictDoNothing()
|
|
21
|
+
.run();
|
|
22
|
+
// result.changes is 1 if row was inserted, 0 if conflict — no row inserted
|
|
23
|
+
return result.changes > 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sqlite-user-binding-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-user-binding-store.js","sourceRoot":"","sources":["../../../src/stores/sqlite-user-binding-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,OAAO,sBAAsB;IACL;IAA7B,YAA6B,EAA2B;QAA3B,OAAE,GAAF,EAAE,CAAyB;IAAG,CAAC;IAE5D,UAAU,CAAC,SAAiB,EAAE,MAAc;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO;aACzB,MAAM,EAAE;aACR,IAAI,CAAC,YAAY,CAAC;aAClB,KAAK,CACL,GAAG,CACF,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,EACrC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAC/B,CACD;aACA,GAAG,EAAE,CAAC;QACR,OAAO,GAAG,KAAK,SAAS,CAAC;IAC1B,CAAC;IAED,OAAO,CACN,SAAiB,EACjB,MAAc,EACd,EAAU,EACV,IAAY;QAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO;aAC5B,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;aACjE,mBAAmB,EAAE;aACrB,GAAG,EAAE,CAAC;QACR,2EAA2E;QAC3E,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC3B,CAAC;CACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stackory/gateway-persistence",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"import": {
|
|
@@ -21,20 +21,9 @@
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
|
-
"scripts": {
|
|
25
|
-
"build": "rimraf ./dist && tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
26
|
-
"clean": "rimraf ./node_modules dist .tanstack",
|
|
27
|
-
"check:lint": "biome check --write",
|
|
28
|
-
"check:type": "tsc -p ./tsconfig.json --noEmit",
|
|
29
|
-
"check:dep": "depcruise --config .dependency-cruiser.mjs src",
|
|
30
|
-
"check:test": "vitest --watch=false",
|
|
31
|
-
"drizzle:generate": "drizzle-kit generate && pnpm drizzle:codegen",
|
|
32
|
-
"drizzle:codegen": "tsx scripts/build-migrations.ts",
|
|
33
|
-
"drizzle:check": "drizzle-kit check"
|
|
34
|
-
},
|
|
35
24
|
"dependencies": {
|
|
36
|
-
"
|
|
37
|
-
"
|
|
25
|
+
"drizzle-orm": "1.0.0-rc.3",
|
|
26
|
+
"@stackory/gateway-core": "0.3.0"
|
|
38
27
|
},
|
|
39
28
|
"devDependencies": {
|
|
40
29
|
"@types/node": "25.9.1",
|
|
@@ -48,5 +37,16 @@
|
|
|
48
37
|
"type": "git",
|
|
49
38
|
"url": "https://github.com/stackory-lab/gateway",
|
|
50
39
|
"directory": "persistence"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "rimraf ./dist && tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
43
|
+
"clean": "rimraf ./node_modules dist .tanstack",
|
|
44
|
+
"check:lint": "biome check --write",
|
|
45
|
+
"check:type": "tsc -p ./tsconfig.json --noEmit",
|
|
46
|
+
"check:dep": "depcruise --config .dependency-cruiser.mjs src",
|
|
47
|
+
"check:test": "vitest --watch=false",
|
|
48
|
+
"drizzle:generate": "drizzle-kit generate && pnpm drizzle:codegen",
|
|
49
|
+
"drizzle:codegen": "tsx scripts/build-migrations.ts",
|
|
50
|
+
"drizzle:check": "drizzle-kit check"
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { IAccessPolicyStore, IChatPolicy, IChatPolicyEntry, IResolvedPolicy } from '@stackory/gateway-core';
|
|
2
|
-
import type { IInternalDatabaseHandle } from '../database';
|
|
3
|
-
export declare class SqliteAccessPolicyStore implements IAccessPolicyStore {
|
|
4
|
-
private readonly db;
|
|
5
|
-
constructor(db: IInternalDatabaseHandle);
|
|
6
|
-
findChatPolicy(adapterId: string, chatId: string): IChatPolicy | undefined;
|
|
7
|
-
upsertChatPolicy(adapterId: string, chatId: string, policy: IChatPolicy, by: string): void;
|
|
8
|
-
deleteChatPolicy(adapterId: string, chatId: string): void;
|
|
9
|
-
listChatPolicies(adapterId: string): readonly IChatPolicyEntry[];
|
|
10
|
-
resolveForChat(adapterId: string, chatId: string, _chatType: 'p2p' | 'group'): IResolvedPolicy;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=sqlite-policy-store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-policy-store.d.ts","sourceRoot":"","sources":["../../../src/stores/sqlite-policy-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAW1D,qBAAa,uBAAwB,YAAW,kBAAkB;IACrD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,uBAAuB;IAExD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAY1E,gBAAgB,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,MAAM,GACR,IAAI;IA2BP,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,gBAAgB,EAAE;IAShE,cAAc,CACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAAG,OAAO,GACxB,eAAe;CAalB"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { and, eq } from 'drizzle-orm';
|
|
2
|
-
import { chatPolicy } from '../schema';
|
|
3
|
-
const DENY_ALL = {
|
|
4
|
-
source: 'default',
|
|
5
|
-
policy: 'allowlist',
|
|
6
|
-
requireMention: false,
|
|
7
|
-
effectiveAllowlist: [],
|
|
8
|
-
effectiveBlacklist: [],
|
|
9
|
-
};
|
|
10
|
-
export class SqliteAccessPolicyStore {
|
|
11
|
-
db;
|
|
12
|
-
constructor(db) {
|
|
13
|
-
this.db = db;
|
|
14
|
-
}
|
|
15
|
-
findChatPolicy(adapterId, chatId) {
|
|
16
|
-
const row = this.db.drizzle
|
|
17
|
-
.select()
|
|
18
|
-
.from(chatPolicy)
|
|
19
|
-
.where(and(eq(chatPolicy.adapterId, adapterId), eq(chatPolicy.chatId, chatId)))
|
|
20
|
-
.get();
|
|
21
|
-
if (!row)
|
|
22
|
-
return undefined;
|
|
23
|
-
return rowToPolicy(row);
|
|
24
|
-
}
|
|
25
|
-
upsertChatPolicy(adapterId, chatId, policy, by) {
|
|
26
|
-
this.db.drizzle
|
|
27
|
-
.insert(chatPolicy)
|
|
28
|
-
.values({
|
|
29
|
-
adapterId,
|
|
30
|
-
chatId,
|
|
31
|
-
policy: policy.policy,
|
|
32
|
-
requireMention: policy.requireMention ? 1 : 0,
|
|
33
|
-
allowlistJson: JSON.stringify(policy.allowlist),
|
|
34
|
-
blacklistJson: JSON.stringify(policy.blacklist),
|
|
35
|
-
updatedBy: by,
|
|
36
|
-
updatedAtMs: Date.now(),
|
|
37
|
-
})
|
|
38
|
-
.onConflictDoUpdate({
|
|
39
|
-
target: [chatPolicy.adapterId, chatPolicy.chatId],
|
|
40
|
-
set: {
|
|
41
|
-
policy: policy.policy,
|
|
42
|
-
requireMention: policy.requireMention ? 1 : 0,
|
|
43
|
-
allowlistJson: JSON.stringify(policy.allowlist),
|
|
44
|
-
blacklistJson: JSON.stringify(policy.blacklist),
|
|
45
|
-
updatedBy: by,
|
|
46
|
-
updatedAtMs: Date.now(),
|
|
47
|
-
},
|
|
48
|
-
})
|
|
49
|
-
.run();
|
|
50
|
-
}
|
|
51
|
-
deleteChatPolicy(adapterId, chatId) {
|
|
52
|
-
this.db.drizzle
|
|
53
|
-
.delete(chatPolicy)
|
|
54
|
-
.where(and(eq(chatPolicy.adapterId, adapterId), eq(chatPolicy.chatId, chatId)))
|
|
55
|
-
.run();
|
|
56
|
-
}
|
|
57
|
-
listChatPolicies(adapterId) {
|
|
58
|
-
return this.db.drizzle
|
|
59
|
-
.select()
|
|
60
|
-
.from(chatPolicy)
|
|
61
|
-
.where(eq(chatPolicy.adapterId, adapterId))
|
|
62
|
-
.all()
|
|
63
|
-
.map(rowToEntry);
|
|
64
|
-
}
|
|
65
|
-
resolveForChat(adapterId, chatId, _chatType) {
|
|
66
|
-
const policy = this.findChatPolicy(adapterId, chatId);
|
|
67
|
-
if (!policy) {
|
|
68
|
-
return DENY_ALL;
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
source: 'chat',
|
|
72
|
-
policy: policy.policy,
|
|
73
|
-
requireMention: policy.requireMention,
|
|
74
|
-
effectiveAllowlist: policy.allowlist,
|
|
75
|
-
effectiveBlacklist: policy.blacklist,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function rowToPolicy(row) {
|
|
80
|
-
return {
|
|
81
|
-
policy: row.policy,
|
|
82
|
-
requireMention: row.requireMention === 1,
|
|
83
|
-
allowlist: JSON.parse(row.allowlistJson),
|
|
84
|
-
blacklist: JSON.parse(row.blacklistJson),
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
function rowToEntry(row) {
|
|
88
|
-
return {
|
|
89
|
-
...rowToPolicy(row),
|
|
90
|
-
chatId: row.chatId,
|
|
91
|
-
updatedBy: row.updatedBy,
|
|
92
|
-
updatedAtMs: row.updatedAtMs,
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=sqlite-policy-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-policy-store.js","sourceRoot":"","sources":["../../../src/stores/sqlite-policy-store.ts"],"names":[],"mappings":"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"}
|