@cat-factory/node-server 0.95.2 → 0.96.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 (52) hide show
  1. package/dist/container.d.ts.map +1 -1
  2. package/dist/container.js +16 -5
  3. package/dist/container.js.map +1 -1
  4. package/dist/repositories/drizzle/_shared.d.ts +2 -0
  5. package/dist/repositories/drizzle/_shared.d.ts.map +1 -0
  6. package/dist/repositories/drizzle/_shared.js +11 -0
  7. package/dist/repositories/drizzle/_shared.js.map +1 -0
  8. package/dist/repositories/drizzle/accounts.d.ts +62 -0
  9. package/dist/repositories/drizzle/accounts.d.ts.map +1 -0
  10. package/dist/repositories/drizzle/accounts.js +438 -0
  11. package/dist/repositories/drizzle/accounts.js.map +1 -0
  12. package/dist/repositories/drizzle/board.d.ts +74 -0
  13. package/dist/repositories/drizzle/board.d.ts.map +1 -0
  14. package/dist/repositories/drizzle/board.js +489 -0
  15. package/dist/repositories/drizzle/board.js.map +1 -0
  16. package/dist/repositories/drizzle/connections.d.ts +84 -0
  17. package/dist/repositories/drizzle/connections.d.ts.map +1 -0
  18. package/dist/repositories/drizzle/connections.js +391 -0
  19. package/dist/repositories/drizzle/connections.js.map +1 -0
  20. package/dist/repositories/drizzle/execution.d.ts +58 -0
  21. package/dist/repositories/drizzle/execution.d.ts.map +1 -0
  22. package/dist/repositories/drizzle/execution.js +585 -0
  23. package/dist/repositories/drizzle/execution.js.map +1 -0
  24. package/dist/repositories/drizzle/initiatives.d.ts +54 -0
  25. package/dist/repositories/drizzle/initiatives.d.ts.map +1 -0
  26. package/dist/repositories/drizzle/initiatives.js +343 -0
  27. package/dist/repositories/drizzle/initiatives.js.map +1 -0
  28. package/dist/repositories/drizzle/kaizen.d.ts +34 -0
  29. package/dist/repositories/drizzle/kaizen.d.ts.map +1 -0
  30. package/dist/repositories/drizzle/kaizen.js +192 -0
  31. package/dist/repositories/drizzle/kaizen.js.map +1 -0
  32. package/dist/repositories/drizzle/reviews.d.ts +75 -0
  33. package/dist/repositories/drizzle/reviews.d.ts.map +1 -0
  34. package/dist/repositories/drizzle/reviews.js +449 -0
  35. package/dist/repositories/drizzle/reviews.js.map +1 -0
  36. package/dist/repositories/drizzle/sandbox.d.ts +61 -0
  37. package/dist/repositories/drizzle/sandbox.d.ts.map +1 -0
  38. package/dist/repositories/drizzle/sandbox.js +370 -0
  39. package/dist/repositories/drizzle/sandbox.js.map +1 -0
  40. package/dist/repositories/drizzle/settings.d.ts +76 -0
  41. package/dist/repositories/drizzle/settings.d.ts.map +1 -0
  42. package/dist/repositories/drizzle/settings.js +377 -0
  43. package/dist/repositories/drizzle/settings.js.map +1 -0
  44. package/dist/repositories/drizzle/telemetry.d.ts +60 -0
  45. package/dist/repositories/drizzle/telemetry.d.ts.map +1 -0
  46. package/dist/repositories/drizzle/telemetry.js +559 -0
  47. package/dist/repositories/drizzle/telemetry.js.map +1 -0
  48. package/dist/repositories/drizzle.d.ts +6 -113
  49. package/dist/repositories/drizzle.d.ts.map +1 -1
  50. package/dist/repositories/drizzle.js +20 -4118
  51. package/dist/repositories/drizzle.js.map +1 -1
  52. package/package.json +7 -7
@@ -0,0 +1,489 @@
1
+ // Drizzle/Postgres implementations of the core kernel repository ports, split by
2
+ // domain (mirrors the Cloudflare D1 per-repository layout). The row<->domain mapping
3
+ // is the SAME shared mapping the D1 repos use (@cat-factory/server), so behaviour
4
+ // matches across stores; this layer only owns the Drizzle queries. Assembled into the
5
+ // CoreRepositories set by ./drizzle.ts (the barrel).
6
+ import { WORKSPACE_SCOPED_TABLES } from '@cat-factory/kernel';
7
+ import { blockInsertValues, blockPatchToColumns, rowToBlock, rowToWorkspace, tryDecodeRows, } from '@cat-factory/server';
8
+ import { and, count, desc, eq, inArray, isNull, or, sql } from 'drizzle-orm';
9
+ import { agentRuns, blocks, services, workspaceFragmentDefaults, workspaceServices, workspaces, } from '../../db/schema.js';
10
+ export class DrizzleWorkspaceRepository {
11
+ db;
12
+ constructor(db) {
13
+ this.db = db;
14
+ }
15
+ async listVisible(scope) {
16
+ if (scope === null) {
17
+ const rows = await this.db.select().from(workspaces).orderBy(desc(workspaces.created_at));
18
+ return rows.map(rowToWorkspace);
19
+ }
20
+ const legacy = and(isNull(workspaces.account_id), eq(workspaces.owner_user_id, scope.ownerUserId));
21
+ const where = scope.accountIds.length > 0
22
+ ? or(inArray(workspaces.account_id, scope.accountIds), legacy)
23
+ : legacy;
24
+ const rows = await this.db
25
+ .select()
26
+ .from(workspaces)
27
+ .where(where)
28
+ .orderBy(desc(workspaces.created_at));
29
+ return rows.map(rowToWorkspace);
30
+ }
31
+ async get(id) {
32
+ const [row] = await this.db.select().from(workspaces).where(eq(workspaces.id, id));
33
+ return row ? rowToWorkspace(row) : null;
34
+ }
35
+ async ownerOf(id) {
36
+ const [row] = await this.db
37
+ .select({ owner: workspaces.owner_user_id })
38
+ .from(workspaces)
39
+ .where(eq(workspaces.id, id));
40
+ return row ? row.owner : undefined;
41
+ }
42
+ async accountOf(id) {
43
+ const [row] = await this.db
44
+ .select({ account: workspaces.account_id })
45
+ .from(workspaces)
46
+ .where(eq(workspaces.id, id));
47
+ return row ? row.account : undefined;
48
+ }
49
+ async create(workspace, ownerUserId, accountId) {
50
+ await this.db.insert(workspaces).values({
51
+ id: workspace.id,
52
+ name: workspace.name,
53
+ description: workspace.description,
54
+ created_at: workspace.createdAt,
55
+ owner_user_id: ownerUserId,
56
+ account_id: accountId,
57
+ });
58
+ }
59
+ async rename(id, name) {
60
+ await this.db.update(workspaces).set({ name }).where(eq(workspaces.id, id));
61
+ }
62
+ async setDescription(id, description) {
63
+ await this.db.update(workspaces).set({ description }).where(eq(workspaces.id, id));
64
+ }
65
+ async delete(id, rehome = []) {
66
+ await this.db.transaction(async (tx) => {
67
+ // Re-home shared services FIRST: move each service's blocks + run history to a surviving
68
+ // mounting board by re-stamping their `workspace_id`. Blocks are keyed by `service_id`, so
69
+ // after the move the service's frame no longer lives in THIS workspace — the reclaim below
70
+ // then skips it, leaving the service, its subtree and every OTHER board's mount intact. A
71
+ // shared service therefore outlives its home board's deletion. Mirror any change in the
72
+ // Cloudflare facade's D1WorkspaceRepository.delete.
73
+ for (const { serviceId, toWorkspaceId } of rehome) {
74
+ await tx
75
+ .update(agentRuns)
76
+ .set({ workspace_id: toWorkspaceId })
77
+ .where(inArray(agentRuns.block_id, tx.select({ id: blocks.id }).from(blocks).where(eq(blocks.service_id, serviceId))));
78
+ await tx
79
+ .update(blocks)
80
+ .set({ workspace_id: toWorkspaceId })
81
+ .where(eq(blocks.service_id, serviceId));
82
+ }
83
+ // Reclaim the account-owned services this workspace HOMES (+ every board's mount of them)
84
+ // BEFORE the blocks they reference are dropped. A deleted board that leaves its services
85
+ // behind is not a cosmetic leak: `services` is account-scoped and looked up by
86
+ // (installation_id, repo_github_id), so a dangling service (its frame block gone) keeps the
87
+ // SAME repo from being re-added on any other board in the account. Mirror any change in the
88
+ // Cloudflare facade's D1WorkspaceRepository.delete.
89
+ const homed = await tx
90
+ .select({ id: services.id })
91
+ .from(services)
92
+ .innerJoin(blocks, eq(services.frame_block_id, blocks.id))
93
+ .where(eq(blocks.workspace_id, id));
94
+ const serviceIds = homed.map((r) => r.id);
95
+ if (serviceIds.length) {
96
+ await tx.delete(workspaceServices).where(inArray(workspaceServices.service_id, serviceIds));
97
+ await tx.delete(services).where(inArray(services.id, serviceIds));
98
+ }
99
+ // This workspace's OWN mounts of services homed elsewhere (shared services it mounted).
100
+ await tx.delete(workspaceServices).where(eq(workspaceServices.workspace_id, id));
101
+ // Bulk reclaim of every plain workspace-scoped table (incl. blocks/agent_runs/pipelines/
102
+ // environments) from the shared kernel list — keeps this cascade in lockstep with the
103
+ // Cloudflare facade and stops a new workspace-scoped table silently orphaning. The schema
104
+ // declares no FKs between these tables, so order is free; they only need to run AFTER the
105
+ // `services` reclaim above (which reads `blocks`) and BEFORE the root `workspaces` row.
106
+ for (const table of WORKSPACE_SCOPED_TABLES) {
107
+ await tx.execute(sql `DELETE FROM ${sql.identifier(table)} WHERE workspace_id = ${id}`);
108
+ }
109
+ await tx.delete(workspaces).where(eq(workspaces.id, id));
110
+ });
111
+ }
112
+ }
113
+ export class DrizzleBlockRepository {
114
+ db;
115
+ constructor(db) {
116
+ this.db = db;
117
+ }
118
+ // List reads order by `seq` (insertion order) for parity with the Cloudflare facade's
119
+ // `ORDER BY rowid` — Postgres heap order is otherwise non-deterministic.
120
+ async listByWorkspace(workspaceId) {
121
+ const rows = await this.db
122
+ .select()
123
+ .from(blocks)
124
+ .where(eq(blocks.workspace_id, workspaceId))
125
+ .orderBy(blocks.seq);
126
+ // Snapshot-facing list read: drop a corrupt block rather than failing the whole board load.
127
+ return tryDecodeRows(rows, rowToBlock, (r) => ({ table: 'blocks', id: r.id }));
128
+ }
129
+ async listByService(serviceId) {
130
+ const rows = await this.db
131
+ .select()
132
+ .from(blocks)
133
+ .where(eq(blocks.service_id, serviceId))
134
+ .orderBy(blocks.seq);
135
+ return tryDecodeRows(rows, rowToBlock, (r) => ({ table: 'blocks', id: r.id }));
136
+ }
137
+ async listByServices(serviceIds) {
138
+ if (serviceIds.length === 0)
139
+ return [];
140
+ const out = [];
141
+ // Chunk the IN list to stay well under the bind-parameter limit. Ordering is
142
+ // per-chunk, matching the D1 twin's per-chunk `ORDER BY rowid`.
143
+ for (let i = 0; i < serviceIds.length; i += 500) {
144
+ const rows = await this.db
145
+ .select()
146
+ .from(blocks)
147
+ .where(inArray(blocks.service_id, serviceIds.slice(i, i + 500)))
148
+ .orderBy(blocks.seq);
149
+ out.push(...tryDecodeRows(rows, rowToBlock, (r) => ({ table: 'blocks', id: r.id })));
150
+ }
151
+ return out;
152
+ }
153
+ async get(workspaceId, id) {
154
+ const [row] = await this.db
155
+ .select()
156
+ .from(blocks)
157
+ .where(and(eq(blocks.workspace_id, workspaceId), eq(blocks.id, id)));
158
+ return row ? rowToBlock(row) : null;
159
+ }
160
+ async findById(blockId) {
161
+ const [row] = await this.db.select().from(blocks).where(eq(blocks.id, blockId)).limit(1);
162
+ if (!row)
163
+ return null;
164
+ return {
165
+ workspaceId: row.workspace_id,
166
+ serviceId: row.service_id ?? null,
167
+ block: rowToBlock(row),
168
+ };
169
+ }
170
+ async findByIds(blockIds) {
171
+ if (blockIds.length === 0)
172
+ return [];
173
+ const out = [];
174
+ // Chunk the IN list to stay well under the bind-parameter limit.
175
+ for (let i = 0; i < blockIds.length; i += 500) {
176
+ const rows = await this.db
177
+ .select()
178
+ .from(blocks)
179
+ .where(inArray(blocks.id, blockIds.slice(i, i + 500)));
180
+ out.push(...rows.map((row) => ({
181
+ workspaceId: row.workspace_id,
182
+ serviceId: row.service_id ?? null,
183
+ block: rowToBlock(row),
184
+ })));
185
+ }
186
+ return out;
187
+ }
188
+ async insert(workspaceId, block, serviceId) {
189
+ await this.db.insert(blocks).values({
190
+ workspace_id: workspaceId,
191
+ service_id: serviceId ?? null,
192
+ ...blockInsertValues(block),
193
+ });
194
+ }
195
+ async update(workspaceId, id, patch) {
196
+ const set = blockPatchToColumns(patch);
197
+ if (Object.keys(set).length === 0)
198
+ return;
199
+ await this.db
200
+ .update(blocks)
201
+ .set(set)
202
+ .where(and(eq(blocks.workspace_id, workspaceId), eq(blocks.id, id)));
203
+ }
204
+ async setService(workspaceId, ids, serviceId) {
205
+ if (ids.length === 0)
206
+ return;
207
+ await this.db
208
+ .update(blocks)
209
+ .set({ service_id: serviceId })
210
+ .where(and(eq(blocks.workspace_id, workspaceId), inArray(blocks.id, ids)));
211
+ }
212
+ async deleteMany(workspaceId, ids) {
213
+ if (ids.length === 0)
214
+ return;
215
+ await this.db
216
+ .delete(blocks)
217
+ .where(and(eq(blocks.workspace_id, workspaceId), inArray(blocks.id, ids)));
218
+ }
219
+ async countActiveInternal(workspaceId) {
220
+ const [row] = await this.db
221
+ .select({ n: count() })
222
+ .from(blocks)
223
+ .where(and(eq(blocks.workspace_id, workspaceId), eq(blocks.internal, 1), eq(blocks.status, 'in_progress')));
224
+ return row?.n ?? 0;
225
+ }
226
+ }
227
+ export class DrizzleServiceFragmentDefaultsRepository {
228
+ db;
229
+ constructor(db) {
230
+ this.db = db;
231
+ }
232
+ async get(workspaceId) {
233
+ const [row] = await this.db
234
+ .select({ fragmentIds: workspaceFragmentDefaults.fragment_ids })
235
+ .from(workspaceFragmentDefaults)
236
+ .where(eq(workspaceFragmentDefaults.workspace_id, workspaceId));
237
+ return row ? JSON.parse(row.fragmentIds) : [];
238
+ }
239
+ async set(workspaceId, fragmentIds) {
240
+ await this.db
241
+ .insert(workspaceFragmentDefaults)
242
+ .values({
243
+ workspace_id: workspaceId,
244
+ fragment_ids: JSON.stringify(fragmentIds),
245
+ updated_at: Date.now(),
246
+ })
247
+ .onConflictDoUpdate({
248
+ target: workspaceFragmentDefaults.workspace_id,
249
+ set: { fragment_ids: JSON.stringify(fragmentIds), updated_at: Date.now() },
250
+ });
251
+ }
252
+ }
253
+ function rowToService(row) {
254
+ return {
255
+ id: row.id,
256
+ accountId: row.account_id,
257
+ frameBlockId: row.frame_block_id,
258
+ installationId: row.installation_id,
259
+ repoGithubId: row.repo_github_id,
260
+ directory: row.directory,
261
+ createdAt: row.created_at,
262
+ };
263
+ }
264
+ /** Account-owned services (migration 0030). The canonical, shareable board unit. */
265
+ export class DrizzleServiceRepository {
266
+ db;
267
+ constructor(db) {
268
+ this.db = db;
269
+ }
270
+ async get(id) {
271
+ const [row] = await this.db.select().from(services).where(eq(services.id, id));
272
+ return row ? rowToService(row) : null;
273
+ }
274
+ async getByFrameBlock(frameBlockId) {
275
+ const [row] = await this.db
276
+ .select()
277
+ .from(services)
278
+ .where(eq(services.frame_block_id, frameBlockId));
279
+ return row ? rowToService(row) : null;
280
+ }
281
+ async listByFrameBlocks(frameBlockIds) {
282
+ if (frameBlockIds.length === 0)
283
+ return [];
284
+ const out = [];
285
+ // Chunk the IN list to stay well under the bind-parameter limit.
286
+ for (let i = 0; i < frameBlockIds.length; i += 500) {
287
+ const rows = await this.db
288
+ .select()
289
+ .from(services)
290
+ .where(inArray(services.frame_block_id, frameBlockIds.slice(i, i + 500)));
291
+ for (const row of rows)
292
+ out.push(rowToService(row));
293
+ }
294
+ return out;
295
+ }
296
+ async listByAccount(accountId) {
297
+ // NULL-safe match so the legacy/unscoped org (accountId null) lists cleanly.
298
+ const rows = await this.db
299
+ .select()
300
+ .from(services)
301
+ .where(sql `${services.account_id} IS NOT DISTINCT FROM ${accountId}`)
302
+ .orderBy(services.created_at);
303
+ return rows.map(rowToService);
304
+ }
305
+ async listByIds(ids) {
306
+ if (ids.length === 0)
307
+ return [];
308
+ const out = [];
309
+ // Chunk the IN list to stay well under the bind-parameter limit.
310
+ for (let i = 0; i < ids.length; i += 500) {
311
+ const rows = await this.db
312
+ .select()
313
+ .from(services)
314
+ .where(inArray(services.id, ids.slice(i, i + 500)));
315
+ for (const row of rows)
316
+ out.push(rowToService(row));
317
+ }
318
+ return out;
319
+ }
320
+ async getByRepo(installationId, repoGithubId) {
321
+ const [row] = await this.db
322
+ .select()
323
+ .from(services)
324
+ .where(and(eq(services.installation_id, installationId), eq(services.repo_github_id, repoGithubId)));
325
+ return row ? rowToService(row) : null;
326
+ }
327
+ async insert(service) {
328
+ await this.db.insert(services).values({
329
+ id: service.id,
330
+ account_id: service.accountId,
331
+ frame_block_id: service.frameBlockId,
332
+ installation_id: service.installationId,
333
+ repo_github_id: service.repoGithubId,
334
+ directory: service.directory ?? null,
335
+ created_at: service.createdAt,
336
+ });
337
+ }
338
+ async update(id, patch) {
339
+ const set = {};
340
+ if ('accountId' in patch)
341
+ set.account_id = patch.accountId ?? null;
342
+ if ('installationId' in patch)
343
+ set.installation_id = patch.installationId ?? null;
344
+ if ('repoGithubId' in patch)
345
+ set.repo_github_id = patch.repoGithubId ?? null;
346
+ if ('directory' in patch)
347
+ set.directory = patch.directory ?? null;
348
+ if (Object.keys(set).length === 0)
349
+ return;
350
+ await this.db.update(services).set(set).where(eq(services.id, id));
351
+ }
352
+ async delete(id) {
353
+ await this.db.delete(services).where(eq(services.id, id));
354
+ }
355
+ async deleteMany(ids) {
356
+ if (ids.length === 0)
357
+ return;
358
+ // Chunk the IN list to stay well under the bind-parameter limit.
359
+ for (let i = 0; i < ids.length; i += 500) {
360
+ await this.db.delete(services).where(inArray(services.id, ids.slice(i, i + 500)));
361
+ }
362
+ }
363
+ }
364
+ function rowToMount(row) {
365
+ return {
366
+ workspaceId: row.workspace_id,
367
+ serviceId: row.service_id,
368
+ position: { x: row.pos_x, y: row.pos_y },
369
+ size: row.width !== null && row.height !== null ? { w: row.width, h: row.height } : null,
370
+ createdAt: row.created_at,
371
+ };
372
+ }
373
+ /** A service mounted onto a workspace board + its per-workspace layout (migration 0030). */
374
+ export class DrizzleWorkspaceMountRepository {
375
+ db;
376
+ constructor(db) {
377
+ this.db = db;
378
+ }
379
+ async listByWorkspace(workspaceId) {
380
+ const rows = await this.db
381
+ .select()
382
+ .from(workspaceServices)
383
+ .where(eq(workspaceServices.workspace_id, workspaceId))
384
+ .orderBy(workspaceServices.created_at);
385
+ return rows.map(rowToMount);
386
+ }
387
+ async listByService(serviceId) {
388
+ const rows = await this.db
389
+ .select()
390
+ .from(workspaceServices)
391
+ .where(eq(workspaceServices.service_id, serviceId))
392
+ .orderBy(workspaceServices.created_at);
393
+ return rows.map(rowToMount);
394
+ }
395
+ async listByServiceIds(serviceIds) {
396
+ if (serviceIds.length === 0)
397
+ return [];
398
+ const rows = await this.db
399
+ .select()
400
+ .from(workspaceServices)
401
+ .where(inArray(workspaceServices.service_id, serviceIds))
402
+ .orderBy(workspaceServices.created_at);
403
+ return rows.map(rowToMount);
404
+ }
405
+ async listWorkspaceIdsMountingBlock(originWorkspaceId, blockId) {
406
+ // One join: the service owning the block → the workspaces that mount it. A block with no
407
+ // service makes the subquery NULL, which matches no rows (`service_id = NULL`) → empty.
408
+ const rows = await this.db
409
+ .select({ workspaceId: workspaceServices.workspace_id })
410
+ .from(workspaceServices)
411
+ .where(sql `${workspaceServices.service_id} = (SELECT ${blocks.service_id} FROM ${blocks} WHERE ${blocks.workspace_id} = ${originWorkspaceId} AND ${blocks.id} = ${blockId})`);
412
+ return rows.map((r) => r.workspaceId);
413
+ }
414
+ async countByServiceIds(serviceIds) {
415
+ if (serviceIds.length === 0)
416
+ return {};
417
+ const rows = await this.db
418
+ .select({ serviceId: workspaceServices.service_id, n: sql `count(*)` })
419
+ .from(workspaceServices)
420
+ .where(inArray(workspaceServices.service_id, serviceIds))
421
+ .groupBy(workspaceServices.service_id);
422
+ const counts = {};
423
+ for (const row of rows)
424
+ counts[row.serviceId] = Number(row.n);
425
+ return counts;
426
+ }
427
+ async get(workspaceId, serviceId) {
428
+ const [row] = await this.db
429
+ .select()
430
+ .from(workspaceServices)
431
+ .where(and(eq(workspaceServices.workspace_id, workspaceId), eq(workspaceServices.service_id, serviceId)));
432
+ return row ? rowToMount(row) : null;
433
+ }
434
+ async upsert(mount) {
435
+ await this.db
436
+ .insert(workspaceServices)
437
+ .values({
438
+ workspace_id: mount.workspaceId,
439
+ service_id: mount.serviceId,
440
+ pos_x: mount.position.x,
441
+ pos_y: mount.position.y,
442
+ width: mount.size?.w ?? null,
443
+ height: mount.size?.h ?? null,
444
+ created_at: mount.createdAt,
445
+ })
446
+ .onConflictDoUpdate({
447
+ target: [workspaceServices.workspace_id, workspaceServices.service_id],
448
+ set: {
449
+ pos_x: mount.position.x,
450
+ pos_y: mount.position.y,
451
+ width: mount.size?.w ?? null,
452
+ height: mount.size?.h ?? null,
453
+ },
454
+ });
455
+ }
456
+ async update(workspaceId, serviceId, patch) {
457
+ const set = {};
458
+ if (patch.position) {
459
+ set.pos_x = patch.position.x;
460
+ set.pos_y = patch.position.y;
461
+ }
462
+ if ('size' in patch) {
463
+ set.width = patch.size?.w ?? null;
464
+ set.height = patch.size?.h ?? null;
465
+ }
466
+ if (Object.keys(set).length === 0)
467
+ return;
468
+ await this.db
469
+ .update(workspaceServices)
470
+ .set(set)
471
+ .where(and(eq(workspaceServices.workspace_id, workspaceId), eq(workspaceServices.service_id, serviceId)));
472
+ }
473
+ async remove(workspaceId, serviceId) {
474
+ await this.db
475
+ .delete(workspaceServices)
476
+ .where(and(eq(workspaceServices.workspace_id, workspaceId), eq(workspaceServices.service_id, serviceId)));
477
+ }
478
+ async removeByServices(serviceIds) {
479
+ if (serviceIds.length === 0)
480
+ return;
481
+ // Chunk the IN list to stay well under the bind-parameter limit.
482
+ for (let i = 0; i < serviceIds.length; i += 500) {
483
+ await this.db
484
+ .delete(workspaceServices)
485
+ .where(inArray(workspaceServices.service_id, serviceIds.slice(i, i + 500)));
486
+ }
487
+ }
488
+ }
489
+ //# sourceMappingURL=board.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/repositories/drizzle/board.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { IncidentEnrichmentConnectionRecord, IncidentEnrichmentConnectionRepository, ObservabilityConnectionRecord, ObservabilityConnectionRepository, PackageRegistryConnectionRecord, PackageRegistryConnectionRepository, ReleaseHealthConfigRecord, ReleaseHealthConfigRepository, SubscriptionQuotaCycleRecord, SubscriptionQuotaCycleRepository, SubscriptionQuotaScope, SubscriptionQuotaWindowKind, TestSecretRecord, TestSecretsRepository } from '@cat-factory/kernel';
2
+ import type { SubscriptionVendor } from '@cat-factory/contracts';
3
+ import type { DrizzleDb } from '../../db/client.js';
4
+ export declare class DrizzleObservabilityConnectionRepository implements ObservabilityConnectionRepository {
5
+ private readonly db;
6
+ constructor(db: DrizzleDb);
7
+ get(workspaceId: string): Promise<ObservabilityConnectionRecord | null>;
8
+ upsert(record: ObservabilityConnectionRecord): Promise<void>;
9
+ delete(workspaceId: string): Promise<void>;
10
+ }
11
+ /**
12
+ * Postgres-backed modeled subscription quota-cycle counters (the Drizzle mirror of the
13
+ * Worker's `D1SubscriptionQuotaCycleRepository`, migration 0047), column-for-column so
14
+ * behaviour matches across stores.
15
+ */
16
+ export declare class DrizzleSubscriptionQuotaCycleRepository implements SubscriptionQuotaCycleRepository {
17
+ private readonly db;
18
+ constructor(db: DrizzleDb);
19
+ recordUsage(key: {
20
+ id: string;
21
+ scope: SubscriptionQuotaScope;
22
+ scopeId: string;
23
+ vendor: SubscriptionVendor;
24
+ windowKind: SubscriptionQuotaWindowKind;
25
+ }, usage: {
26
+ inputTokens: number;
27
+ outputTokens: number;
28
+ }, at: number, windowMs: number): Promise<void>;
29
+ listByScopeVendor(scope: SubscriptionQuotaScope, scopeId: string, vendor: SubscriptionVendor): Promise<SubscriptionQuotaCycleRecord[]>;
30
+ deleteOlderThan(epochMs: number): Promise<number>;
31
+ }
32
+ /**
33
+ * A workspace's private package-registry connection over Postgres (the Drizzle mirror
34
+ * of the Worker's `D1PackageRegistryConnectionRepository`, migration 0034). One row per
35
+ * workspace; the registry entries are stored as ONE sealed JSON array (encrypted by the
36
+ * caller), with a non-secret `summary` blob for display.
37
+ */
38
+ export declare class DrizzlePackageRegistryConnectionRepository implements PackageRegistryConnectionRepository {
39
+ private readonly db;
40
+ constructor(db: DrizzleDb);
41
+ get(workspaceId: string): Promise<PackageRegistryConnectionRecord | null>;
42
+ upsert(record: PackageRegistryConnectionRecord): Promise<void>;
43
+ delete(workspaceId: string): Promise<void>;
44
+ }
45
+ /**
46
+ * A workspace's incident-enrichment connection over Postgres (the Drizzle mirror of the
47
+ * Worker's `D1IncidentEnrichmentConnectionRepository`, migration 0013). One row per
48
+ * workspace; both PagerDuty + incident.io credentials live in ONE sealed JSON blob
49
+ * (encrypted by the caller), with a non-secret `summary` presence blob.
50
+ */
51
+ export declare class DrizzleIncidentEnrichmentConnectionRepository implements IncidentEnrichmentConnectionRepository {
52
+ private readonly db;
53
+ constructor(db: DrizzleDb);
54
+ get(workspaceId: string): Promise<IncidentEnrichmentConnectionRecord | null>;
55
+ upsert(record: IncidentEnrichmentConnectionRecord): Promise<void>;
56
+ delete(workspaceId: string): Promise<void>;
57
+ }
58
+ /**
59
+ * Per-block monitor/SLO mapping for the post-release-health gate over Postgres (the
60
+ * Drizzle mirror of the Worker's `D1ReleaseHealthConfigRepository`, migration 0003).
61
+ */
62
+ export declare class DrizzleReleaseHealthConfigRepository implements ReleaseHealthConfigRepository {
63
+ private readonly db;
64
+ constructor(db: DrizzleDb);
65
+ getByBlock(workspaceId: string, blockId: string): Promise<ReleaseHealthConfigRecord | null>;
66
+ listByWorkspace(workspaceId: string): Promise<ReleaseHealthConfigRecord[]>;
67
+ upsert(record: ReleaseHealthConfigRecord): Promise<void>;
68
+ delete(workspaceId: string, blockId: string): Promise<void>;
69
+ }
70
+ /**
71
+ * A service frame's sensitive test credentials over Postgres (the Drizzle mirror of the
72
+ * Worker's `D1TestSecretsRepository`, migration 0044). At most one row per (workspace, block);
73
+ * `credentials` is a sealed envelope of the `TestSecretEntry[]` JSON, `summary` a non-secret
74
+ * `TestSecretRef[]` display blob.
75
+ */
76
+ export declare class DrizzleTestSecretsRepository implements TestSecretsRepository {
77
+ private readonly db;
78
+ constructor(db: DrizzleDb);
79
+ getByBlock(workspaceId: string, blockId: string): Promise<TestSecretRecord | null>;
80
+ listByWorkspace(workspaceId: string): Promise<TestSecretRecord[]>;
81
+ upsert(record: TestSecretRecord): Promise<void>;
82
+ deleteByBlock(workspaceId: string, blockId: string): Promise<void>;
83
+ }
84
+ //# sourceMappingURL=connections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../../src/repositories/drizzle/connections.ts"],"names":[],"mappings":"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"}