@cat-factory/node-server 0.95.2 → 0.97.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 (69) hide show
  1. package/dist/container.d.ts.map +1 -1
  2. package/dist/container.js +26 -5
  3. package/dist/container.js.map +1 -1
  4. package/dist/db/schema.d.ts.map +1 -1
  5. package/dist/db/schema.js +3 -0
  6. package/dist/db/schema.js.map +1 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +4 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/machineEventRelay.d.ts +21 -0
  12. package/dist/machineEventRelay.d.ts.map +1 -0
  13. package/dist/machineEventRelay.js +34 -0
  14. package/dist/machineEventRelay.js.map +1 -0
  15. package/dist/propagator.d.ts +1 -1
  16. package/dist/propagator.d.ts.map +1 -1
  17. package/dist/propagator.js +6 -1
  18. package/dist/propagator.js.map +1 -1
  19. package/dist/repositories/drizzle/_shared.d.ts +2 -0
  20. package/dist/repositories/drizzle/_shared.d.ts.map +1 -0
  21. package/dist/repositories/drizzle/_shared.js +11 -0
  22. package/dist/repositories/drizzle/_shared.js.map +1 -0
  23. package/dist/repositories/drizzle/accounts.d.ts +62 -0
  24. package/dist/repositories/drizzle/accounts.d.ts.map +1 -0
  25. package/dist/repositories/drizzle/accounts.js +438 -0
  26. package/dist/repositories/drizzle/accounts.js.map +1 -0
  27. package/dist/repositories/drizzle/board.d.ts +74 -0
  28. package/dist/repositories/drizzle/board.d.ts.map +1 -0
  29. package/dist/repositories/drizzle/board.js +489 -0
  30. package/dist/repositories/drizzle/board.js.map +1 -0
  31. package/dist/repositories/drizzle/connections.d.ts +84 -0
  32. package/dist/repositories/drizzle/connections.d.ts.map +1 -0
  33. package/dist/repositories/drizzle/connections.js +391 -0
  34. package/dist/repositories/drizzle/connections.js.map +1 -0
  35. package/dist/repositories/drizzle/execution.d.ts +58 -0
  36. package/dist/repositories/drizzle/execution.d.ts.map +1 -0
  37. package/dist/repositories/drizzle/execution.js +585 -0
  38. package/dist/repositories/drizzle/execution.js.map +1 -0
  39. package/dist/repositories/drizzle/initiatives.d.ts +54 -0
  40. package/dist/repositories/drizzle/initiatives.d.ts.map +1 -0
  41. package/dist/repositories/drizzle/initiatives.js +343 -0
  42. package/dist/repositories/drizzle/initiatives.js.map +1 -0
  43. package/dist/repositories/drizzle/kaizen.d.ts +34 -0
  44. package/dist/repositories/drizzle/kaizen.d.ts.map +1 -0
  45. package/dist/repositories/drizzle/kaizen.js +192 -0
  46. package/dist/repositories/drizzle/kaizen.js.map +1 -0
  47. package/dist/repositories/drizzle/reviews.d.ts +75 -0
  48. package/dist/repositories/drizzle/reviews.d.ts.map +1 -0
  49. package/dist/repositories/drizzle/reviews.js +449 -0
  50. package/dist/repositories/drizzle/reviews.js.map +1 -0
  51. package/dist/repositories/drizzle/sandbox.d.ts +61 -0
  52. package/dist/repositories/drizzle/sandbox.d.ts.map +1 -0
  53. package/dist/repositories/drizzle/sandbox.js +370 -0
  54. package/dist/repositories/drizzle/sandbox.js.map +1 -0
  55. package/dist/repositories/drizzle/settings.d.ts +76 -0
  56. package/dist/repositories/drizzle/settings.d.ts.map +1 -0
  57. package/dist/repositories/drizzle/settings.js +377 -0
  58. package/dist/repositories/drizzle/settings.js.map +1 -0
  59. package/dist/repositories/drizzle/telemetry.d.ts +60 -0
  60. package/dist/repositories/drizzle/telemetry.d.ts.map +1 -0
  61. package/dist/repositories/drizzle/telemetry.js +559 -0
  62. package/dist/repositories/drizzle/telemetry.js.map +1 -0
  63. package/dist/repositories/drizzle.d.ts +6 -113
  64. package/dist/repositories/drizzle.d.ts.map +1 -1
  65. package/dist/repositories/drizzle.js +20 -4118
  66. package/dist/repositories/drizzle.js.map +1 -1
  67. package/drizzle/20260716082429_big_polaris/migration.sql +1 -0
  68. package/drizzle/20260716082429_big_polaris/snapshot.json +15675 -0
  69. package/package.json +18 -18
@@ -0,0 +1,370 @@
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 { rowToSandboxExperiment, rowToSandboxFixture, rowToSandboxGrade, rowToSandboxPromptVersion, rowToSandboxRun, } from '@cat-factory/server';
7
+ import { and, desc, eq, inArray, isNull, ne } from 'drizzle-orm';
8
+ import { sandboxExperiments, sandboxFixtures, sandboxGrades, sandboxPromptVersions, sandboxRuns, } from '../../db/schema.js';
9
+ export class DrizzleSandboxPromptVersionRepository {
10
+ db;
11
+ constructor(db) {
12
+ this.db = db;
13
+ }
14
+ async get(workspaceId, id) {
15
+ const rows = await this.db
16
+ .select()
17
+ .from(sandboxPromptVersions)
18
+ .where(and(eq(sandboxPromptVersions.workspace_id, workspaceId), eq(sandboxPromptVersions.id, id)))
19
+ .limit(1);
20
+ return rows[0] ? rowToSandboxPromptVersion(rows[0]) : null;
21
+ }
22
+ async list(workspaceId) {
23
+ const rows = await this.db
24
+ .select()
25
+ .from(sandboxPromptVersions)
26
+ .where(and(eq(sandboxPromptVersions.workspace_id, workspaceId), isNull(sandboxPromptVersions.archived_at)))
27
+ .orderBy(desc(sandboxPromptVersions.created_at));
28
+ return rows.map((r) => rowToSandboxPromptVersion(r));
29
+ }
30
+ async listByKind(workspaceId, agentKind) {
31
+ const rows = await this.db
32
+ .select()
33
+ .from(sandboxPromptVersions)
34
+ .where(and(eq(sandboxPromptVersions.workspace_id, workspaceId), eq(sandboxPromptVersions.agent_kind, agentKind), isNull(sandboxPromptVersions.archived_at)))
35
+ .orderBy(desc(sandboxPromptVersions.created_at));
36
+ return rows.map((r) => rowToSandboxPromptVersion(r));
37
+ }
38
+ async upsert(workspaceId, version) {
39
+ const values = {
40
+ workspace_id: workspaceId,
41
+ id: version.id,
42
+ lineage_id: version.lineageId,
43
+ agent_kind: version.agentKind,
44
+ name: version.name,
45
+ origin: version.origin,
46
+ system_text: version.systemText,
47
+ base_prompt_id: version.basePromptId,
48
+ version: version.version,
49
+ parent_id: version.parentId,
50
+ labels: JSON.stringify(version.labels),
51
+ created_at: version.createdAt,
52
+ created_by: version.createdBy,
53
+ archived_at: version.archivedAt,
54
+ };
55
+ await this.db
56
+ .insert(sandboxPromptVersions)
57
+ .values(values)
58
+ .onConflictDoUpdate({
59
+ target: [sandboxPromptVersions.workspace_id, sandboxPromptVersions.id],
60
+ set: {
61
+ lineage_id: values.lineage_id,
62
+ agent_kind: values.agent_kind,
63
+ name: values.name,
64
+ origin: values.origin,
65
+ system_text: values.system_text,
66
+ base_prompt_id: values.base_prompt_id,
67
+ version: values.version,
68
+ parent_id: values.parent_id,
69
+ labels: values.labels,
70
+ created_by: values.created_by,
71
+ archived_at: values.archived_at,
72
+ },
73
+ });
74
+ }
75
+ async archive(workspaceId, id, at) {
76
+ await this.db
77
+ .update(sandboxPromptVersions)
78
+ .set({ archived_at: at })
79
+ .where(and(eq(sandboxPromptVersions.workspace_id, workspaceId), eq(sandboxPromptVersions.id, id)));
80
+ }
81
+ }
82
+ export class DrizzleSandboxFixtureRepository {
83
+ db;
84
+ constructor(db) {
85
+ this.db = db;
86
+ }
87
+ async get(workspaceId, id) {
88
+ const rows = await this.db
89
+ .select()
90
+ .from(sandboxFixtures)
91
+ .where(and(eq(sandboxFixtures.workspace_id, workspaceId), eq(sandboxFixtures.id, id)))
92
+ .limit(1);
93
+ return rows[0] ? rowToSandboxFixture(rows[0]) : null;
94
+ }
95
+ async list(workspaceId) {
96
+ const rows = await this.db
97
+ .select()
98
+ .from(sandboxFixtures)
99
+ .where(eq(sandboxFixtures.workspace_id, workspaceId))
100
+ .orderBy(sandboxFixtures.created_at);
101
+ return rows.map((r) => rowToSandboxFixture(r));
102
+ }
103
+ async upsert(workspaceId, fixture) {
104
+ const values = {
105
+ workspace_id: workspaceId,
106
+ id: fixture.id,
107
+ kind: fixture.kind,
108
+ name: fixture.name,
109
+ payload: fixture.payload ? JSON.stringify(fixture.payload) : null,
110
+ repo_ref: fixture.repoRef ? JSON.stringify(fixture.repoRef) : null,
111
+ objective: fixture.objective ? JSON.stringify(fixture.objective) : null,
112
+ origin: fixture.origin,
113
+ created_at: fixture.createdAt,
114
+ };
115
+ await this.db
116
+ .insert(sandboxFixtures)
117
+ .values(values)
118
+ .onConflictDoUpdate({
119
+ target: [sandboxFixtures.workspace_id, sandboxFixtures.id],
120
+ set: {
121
+ kind: values.kind,
122
+ name: values.name,
123
+ payload: values.payload,
124
+ repo_ref: values.repo_ref,
125
+ objective: values.objective,
126
+ origin: values.origin,
127
+ },
128
+ });
129
+ }
130
+ async remove(workspaceId, id) {
131
+ await this.db
132
+ .delete(sandboxFixtures)
133
+ .where(and(eq(sandboxFixtures.workspace_id, workspaceId), eq(sandboxFixtures.id, id)));
134
+ }
135
+ }
136
+ export class DrizzleSandboxExperimentRepository {
137
+ db;
138
+ constructor(db) {
139
+ this.db = db;
140
+ }
141
+ async get(workspaceId, id) {
142
+ const rows = await this.db
143
+ .select()
144
+ .from(sandboxExperiments)
145
+ .where(and(eq(sandboxExperiments.workspace_id, workspaceId), eq(sandboxExperiments.id, id)))
146
+ .limit(1);
147
+ return rows[0] ? rowToSandboxExperiment(rows[0]) : null;
148
+ }
149
+ async list(workspaceId) {
150
+ const rows = await this.db
151
+ .select()
152
+ .from(sandboxExperiments)
153
+ .where(eq(sandboxExperiments.workspace_id, workspaceId))
154
+ .orderBy(desc(sandboxExperiments.created_at));
155
+ return rows.map((r) => rowToSandboxExperiment(r));
156
+ }
157
+ async upsert(workspaceId, experiment) {
158
+ const values = {
159
+ workspace_id: workspaceId,
160
+ id: experiment.id,
161
+ name: experiment.name,
162
+ agent_kind: experiment.agentKind,
163
+ judge_model: experiment.judgeModel,
164
+ repeats: experiment.repeats,
165
+ status: experiment.status,
166
+ matrix: JSON.stringify(experiment.matrix),
167
+ budget_tokens: experiment.budgetTokens,
168
+ created_at: experiment.createdAt,
169
+ created_by: experiment.createdBy,
170
+ };
171
+ await this.db
172
+ .insert(sandboxExperiments)
173
+ .values(values)
174
+ .onConflictDoUpdate({
175
+ target: [sandboxExperiments.workspace_id, sandboxExperiments.id],
176
+ set: {
177
+ name: values.name,
178
+ agent_kind: values.agent_kind,
179
+ judge_model: values.judge_model,
180
+ repeats: values.repeats,
181
+ status: values.status,
182
+ matrix: values.matrix,
183
+ budget_tokens: values.budget_tokens,
184
+ created_by: values.created_by,
185
+ },
186
+ });
187
+ }
188
+ async setStatus(workspaceId, id, status) {
189
+ await this.db
190
+ .update(sandboxExperiments)
191
+ .set({ status })
192
+ .where(and(eq(sandboxExperiments.workspace_id, workspaceId), eq(sandboxExperiments.id, id)));
193
+ }
194
+ async claimForRun(workspaceId, id) {
195
+ // Conditional update: only flips a non-running experiment to `running`. `.returning()`
196
+ // reports whether this caller won the claim (empty ⇒ already running). Atomic, so
197
+ // concurrent launches can't both clear + re-expand the grid (see the port doc).
198
+ const rows = await this.db
199
+ .update(sandboxExperiments)
200
+ .set({ status: 'running' })
201
+ .where(and(eq(sandboxExperiments.workspace_id, workspaceId), eq(sandboxExperiments.id, id), ne(sandboxExperiments.status, 'running')))
202
+ .returning({ id: sandboxExperiments.id });
203
+ return rows.length > 0;
204
+ }
205
+ }
206
+ export class DrizzleSandboxRunRepository {
207
+ db;
208
+ constructor(db) {
209
+ this.db = db;
210
+ }
211
+ async get(workspaceId, id) {
212
+ const rows = await this.db
213
+ .select()
214
+ .from(sandboxRuns)
215
+ .where(and(eq(sandboxRuns.workspace_id, workspaceId), eq(sandboxRuns.id, id)))
216
+ .limit(1);
217
+ return rows[0] ? rowToSandboxRun(rows[0]) : null;
218
+ }
219
+ async listByExperiment(workspaceId, experimentId) {
220
+ const rows = await this.db
221
+ .select()
222
+ .from(sandboxRuns)
223
+ .where(and(eq(sandboxRuns.workspace_id, workspaceId), eq(sandboxRuns.experiment_id, experimentId)))
224
+ .orderBy(sandboxRuns.prompt_version_id, sandboxRuns.model, sandboxRuns.fixture_id, sandboxRuns.repeat_index);
225
+ return rows.map((r) => rowToSandboxRun(r));
226
+ }
227
+ async listQueued(workspaceId, experimentId) {
228
+ const rows = await this.db
229
+ .select()
230
+ .from(sandboxRuns)
231
+ .where(and(eq(sandboxRuns.workspace_id, workspaceId), eq(sandboxRuns.experiment_id, experimentId), eq(sandboxRuns.status, 'queued')))
232
+ .orderBy(sandboxRuns.started_at, sandboxRuns.id);
233
+ return rows.map((r) => rowToSandboxRun(r));
234
+ }
235
+ async upsert(workspaceId, run) {
236
+ const values = {
237
+ workspace_id: workspaceId,
238
+ id: run.id,
239
+ experiment_id: run.experimentId,
240
+ prompt_version_id: run.promptVersionId,
241
+ model: run.model,
242
+ fixture_id: run.fixtureId,
243
+ repeat_index: run.repeatIndex,
244
+ status: run.status,
245
+ output_text: run.outputText,
246
+ usage: run.usage ? JSON.stringify(run.usage) : null,
247
+ latency_ms: run.latencyMs,
248
+ branch: run.branch,
249
+ pr_url: run.prUrl,
250
+ diff: run.diff,
251
+ error: run.error,
252
+ seed_sha: run.seedSha,
253
+ prompt_label: run.promptLabel,
254
+ started_at: run.startedAt,
255
+ finished_at: run.finishedAt,
256
+ };
257
+ await this.db
258
+ .insert(sandboxRuns)
259
+ .values(values)
260
+ .onConflictDoUpdate({
261
+ target: [sandboxRuns.workspace_id, sandboxRuns.id],
262
+ set: {
263
+ experiment_id: values.experiment_id,
264
+ prompt_version_id: values.prompt_version_id,
265
+ model: values.model,
266
+ fixture_id: values.fixture_id,
267
+ repeat_index: values.repeat_index,
268
+ status: values.status,
269
+ output_text: values.output_text,
270
+ usage: values.usage,
271
+ latency_ms: values.latency_ms,
272
+ branch: values.branch,
273
+ pr_url: values.pr_url,
274
+ diff: values.diff,
275
+ error: values.error,
276
+ seed_sha: values.seed_sha,
277
+ prompt_label: values.prompt_label,
278
+ started_at: values.started_at,
279
+ finished_at: values.finished_at,
280
+ },
281
+ });
282
+ }
283
+ async setStatus(workspaceId, id, status) {
284
+ await this.db
285
+ .update(sandboxRuns)
286
+ .set({ status })
287
+ .where(and(eq(sandboxRuns.workspace_id, workspaceId), eq(sandboxRuns.id, id)));
288
+ }
289
+ async removeByExperiment(workspaceId, experimentId) {
290
+ await this.db
291
+ .delete(sandboxRuns)
292
+ .where(and(eq(sandboxRuns.workspace_id, workspaceId), eq(sandboxRuns.experiment_id, experimentId)));
293
+ }
294
+ }
295
+ export class DrizzleSandboxGradeRepository {
296
+ db;
297
+ constructor(db) {
298
+ this.db = db;
299
+ }
300
+ async getByRun(workspaceId, runId) {
301
+ const rows = await this.db
302
+ .select()
303
+ .from(sandboxGrades)
304
+ .where(and(eq(sandboxGrades.workspace_id, workspaceId), eq(sandboxGrades.run_id, runId)))
305
+ .orderBy(desc(sandboxGrades.created_at))
306
+ .limit(1);
307
+ return rows[0] ? rowToSandboxGrade(rows[0]) : null;
308
+ }
309
+ async listByExperiment(workspaceId, experimentId) {
310
+ const rows = await this.db
311
+ .select({ grade: sandboxGrades })
312
+ .from(sandboxGrades)
313
+ .innerJoin(sandboxRuns, and(eq(sandboxRuns.workspace_id, sandboxGrades.workspace_id), eq(sandboxRuns.id, sandboxGrades.run_id)))
314
+ .where(and(eq(sandboxGrades.workspace_id, workspaceId), eq(sandboxRuns.experiment_id, experimentId)))
315
+ .orderBy(sandboxGrades.created_at);
316
+ return rows.map((r) => rowToSandboxGrade(r.grade));
317
+ }
318
+ async upsert(workspaceId, grade) {
319
+ const values = {
320
+ workspace_id: workspaceId,
321
+ id: grade.id,
322
+ run_id: grade.runId,
323
+ judge_model: grade.judgeModel,
324
+ scores: JSON.stringify(grade.scores),
325
+ weighted_total: grade.weightedTotal,
326
+ objective: grade.objective ? JSON.stringify(grade.objective) : null,
327
+ created_at: grade.createdAt,
328
+ };
329
+ await this.db
330
+ .insert(sandboxGrades)
331
+ .values(values)
332
+ .onConflictDoUpdate({
333
+ target: [sandboxGrades.workspace_id, sandboxGrades.id],
334
+ set: {
335
+ run_id: values.run_id,
336
+ judge_model: values.judge_model,
337
+ scores: values.scores,
338
+ weighted_total: values.weighted_total,
339
+ objective: values.objective,
340
+ },
341
+ });
342
+ }
343
+ async removeByExperiment(workspaceId, experimentId) {
344
+ // Grades carry no experiment_id; scope them through their run's experiment.
345
+ const runIds = this.db
346
+ .select({ id: sandboxRuns.id })
347
+ .from(sandboxRuns)
348
+ .where(and(eq(sandboxRuns.workspace_id, workspaceId), eq(sandboxRuns.experiment_id, experimentId)));
349
+ await this.db
350
+ .delete(sandboxGrades)
351
+ .where(and(eq(sandboxGrades.workspace_id, workspaceId), inArray(sandboxGrades.run_id, runIds)));
352
+ }
353
+ }
354
+ /**
355
+ * The Sandbox's persistence as one spreadable mixin (the Drizzle analogue of the
356
+ * Worker's `selectSandboxDeps`). The Node container spreads `...createDrizzleSandboxDeps(db)`
357
+ * into its dependencies so the container body never enumerates the Sandbox repos — the
358
+ * knowledge of which repos exist lives here, next to their implementations. Typed by the
359
+ * kernel ports (not `CoreDependencies`) so this module stays free of the orchestration import.
360
+ */
361
+ export function createDrizzleSandboxDeps(db) {
362
+ return {
363
+ sandboxPromptVersionRepository: new DrizzleSandboxPromptVersionRepository(db),
364
+ sandboxFixtureRepository: new DrizzleSandboxFixtureRepository(db),
365
+ sandboxExperimentRepository: new DrizzleSandboxExperimentRepository(db),
366
+ sandboxRunRepository: new DrizzleSandboxRunRepository(db),
367
+ sandboxGradeRepository: new DrizzleSandboxGradeRepository(db),
368
+ };
369
+ }
370
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/repositories/drizzle/sandbox.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,qFAAqF;AACrF,kFAAkF;AAClF,sFAAsF;AACtF,qDAAqD;AAuBrD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAE3B,MAAM,OAAO,qCAAqC;IACnB,EAAE;IAA/B,YAA6B,EAAa;kBAAb,EAAE;IAAc,CAAC;IAE9C,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,qBAAqB,CAAC;aAC3B,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAC3F;aACA,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,qBAAqB,CAAC;aAC3B,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,EACnD,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAC1C,CACF;aACA,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAA4B,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,SAAiB;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,qBAAqB,CAAC;aAC3B,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,EACnD,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,EAC/C,MAAM,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAC1C,CACF;aACA,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAA4B,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,OAA6B;QAC7D,MAAM,MAAM,GAAG;YACb,YAAY,EAAE,WAAW;YACzB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,cAAc,EAAE,OAAO,CAAC,YAAY;YACpC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;YACtC,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,WAAW,EAAE,OAAO,CAAC,UAAU;SAChC,CAAA;QACD,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,qBAAqB,CAAC;aAC7B,MAAM,CAAC,MAAM,CAAC;aACd,kBAAkB,CAAC;YAClB,MAAM,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,qBAAqB,CAAC,EAAE,CAAC;YACtE,GAAG,EAAE;gBACH,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;SACF,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,EAAU,EAAE,EAAU;QACvD,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,qBAAqB,CAAC;aAC7B,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;aACxB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAC3F,CAAA;IACL,CAAC;CACF;AAED,MAAM,OAAO,+BAA+B;IACb,EAAE;IAA/B,YAA6B,EAAa;kBAAb,EAAE;IAAc,CAAC;IAE9C,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,eAAe,CAAC;aACrB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aACrF,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAsB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,eAAe,CAAC;aACrB,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aACpD,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAsB,CAAC,CAAC,CAAA;IACrE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,OAAuB;QACvD,MAAM,MAAM,GAAG;YACb,YAAY,EAAE,WAAW;YACzB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YACjE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YAClE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;YACvE,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,SAAS;SAC9B,CAAA;QACD,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,eAAe,CAAC;aACvB,MAAM,CAAC,MAAM,CAAC;aACd,kBAAkB,CAAC;YAClB,MAAM,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE,CAAC;YAC1D,GAAG,EAAE;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;SACF,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,EAAU;QAC1C,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,eAAe,CAAC;aACvB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1F,CAAC;CACF;AAED,MAAM,OAAO,kCAAkC;IAChB,EAAE;IAA/B,YAA6B,EAAa;kBAAb,EAAE;IAAc,CAAC;IAE9C,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,kBAAkB,CAAC;aACxB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aAC3F,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,kBAAkB,CAAC;aACxB,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aACvD,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAyB,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,UAA6B;QAC7D,MAAM,MAAM,GAAG;YACb,YAAY,EAAE,WAAW;YACzB,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,UAAU,EAAE,UAAU,CAAC,SAAS;YAChC,WAAW,EAAE,UAAU,CAAC,UAAU;YAClC,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YACzC,aAAa,EAAE,UAAU,CAAC,YAAY;YACtC,UAAU,EAAE,UAAU,CAAC,SAAS;YAChC,UAAU,EAAE,UAAU,CAAC,SAAS;SACjC,CAAA;QACD,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,kBAAkB,CAAC;aAC1B,MAAM,CAAC,MAAM,CAAC;aACd,kBAAkB,CAAC;YAClB,MAAM,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAChE,GAAG,EAAE;gBACH,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;SACF,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,EAAU,EAAE,MAA+B;QAC9E,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,kBAAkB,CAAC;aAC1B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;aACf,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAChG,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAmB,EAAE,EAAU;QAC/C,uFAAuF;QACvF,kFAAkF;QAClF,gFAAgF;QAChF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,CAAC,kBAAkB,CAAC;aAC1B,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aAC1B,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAChD,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,EAC7B,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CACzC,CACF;aACA,SAAS,CAAC,EAAE,EAAE,EAAE,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IACxB,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IACT,EAAE;IAA/B,YAA6B,EAAa;kBAAb,EAAE;IAAc,CAAC;IAE9C,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAmB,EAAE,YAAoB;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAC5F;aACA,OAAO,CACN,WAAW,CAAC,iBAAiB,EAC7B,WAAW,CAAC,KAAK,EACjB,WAAW,CAAC,UAAU,EACtB,WAAW,CAAC,YAAY,CACzB,CAAA;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAkB,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,YAAoB;QACxD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EACzC,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,EAC3C,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CACjC,CACF;aACA,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAkB,CAAC,CAAC,CAAA;IAC7D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,GAAe;QAC/C,MAAM,MAAM,GAAG;YACb,YAAY,EAAE,WAAW;YACzB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,aAAa,EAAE,GAAG,CAAC,YAAY;YAC/B,iBAAiB,EAAE,GAAG,CAAC,eAAe;YACtC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,GAAG,CAAC,SAAS;YACzB,YAAY,EAAE,GAAG,CAAC,WAAW;YAC7B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,WAAW,EAAE,GAAG,CAAC,UAAU;YAC3B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACnD,UAAU,EAAE,GAAG,CAAC,SAAS;YACzB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,KAAK;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,GAAG,CAAC,OAAO;YACrB,YAAY,EAAE,GAAG,CAAC,WAAW;YAC7B,UAAU,EAAE,GAAG,CAAC,SAAS;YACzB,WAAW,EAAE,GAAG,CAAC,UAAU;SAC5B,CAAA;QACD,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,WAAW,CAAC;aACnB,MAAM,CAAC,MAAM,CAAC;aACd,kBAAkB,CAAC;YAClB,MAAM,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;YAClD,GAAG,EAAE;gBACH,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;SACF,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,EAAU,EAAE,MAAwB;QACvE,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,WAAW,CAAC;aACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;aACf,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAClF,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,YAAoB;QAChE,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,WAAW,CAAC;aACnB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAC5F,CAAA;IACL,CAAC;CACF;AAED,MAAM,OAAO,6BAA6B;IACX,EAAE;IAA/B,YAA6B,EAAa;kBAAb,EAAE;IAAc,CAAC;IAE9C,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,KAAa;QAC/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;aACxF,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;aACvC,KAAK,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAmB,EAAE,YAAoB;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;aAChC,IAAI,CAAC,aAAa,CAAC;aACnB,SAAS,CACR,WAAW,EACX,GAAG,CACD,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC,EACxD,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CACzC,CACF;aACA,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,EAC3C,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAC5C,CACF;aACA,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAwB,CAAC,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,KAAmB;QACnD,MAAM,MAAM,GAAG;YACb,YAAY,EAAE,WAAW;YACzB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;YACpC,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;YACnE,UAAU,EAAE,KAAK,CAAC,SAAS;SAC5B,CAAA;QACD,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,aAAa,CAAC;aACrB,MAAM,CAAC,MAAM,CAAC;aACd,kBAAkB,CAAC;YAClB,MAAM,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC;YACtD,GAAG,EAAE;gBACH,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;SACF,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,YAAoB;QAChE,4EAA4E;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,MAAM,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC;aAC9B,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAC5F,CAAA;QACH,MAAM,IAAI,CAAC,EAAE;aACV,MAAM,CAAC,aAAa,CAAC;aACrB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CACxF,CAAA;IACL,CAAC;CACF;AAED;;;;;;GAMG;AAEH,MAAM,UAAU,wBAAwB,CAAC,EAAa;IAOpD,OAAO;QACL,8BAA8B,EAAE,IAAI,qCAAqC,CAAC,EAAE,CAAC;QAC7E,wBAAwB,EAAE,IAAI,+BAA+B,CAAC,EAAE,CAAC;QACjE,2BAA2B,EAAE,IAAI,kCAAkC,CAAC,EAAE,CAAC;QACvE,oBAAoB,EAAE,IAAI,2BAA2B,CAAC,EAAE,CAAC;QACzD,sBAAsB,EAAE,IAAI,6BAA6B,CAAC,EAAE,CAAC;KAC9D,CAAA;AACH,CAAC"}
@@ -0,0 +1,76 @@
1
+ import type { AccountSettingsRecord, AccountSettingsRepository, LocalSettingsRecord, LocalSettingsRepository, ModelPreset, ModelPresetRepository, TrackerSettings, TrackerSettingsRepository, UserSettings, UserSettingsRepository, WorkspaceSettings, WorkspaceSettingsRepository } from '@cat-factory/kernel';
2
+ import type { DrizzleDb } from '../../db/client.js';
3
+ export declare class DrizzleUserSettingsRepository implements UserSettingsRepository {
4
+ private readonly db;
5
+ constructor(db: DrizzleDb);
6
+ get(userId: string): Promise<UserSettings | null>;
7
+ upsert(userId: string, settings: UserSettings): Promise<void>;
8
+ }
9
+ /**
10
+ * Per-workspace model presets over Postgres (the Drizzle mirror of the Worker's
11
+ * `D1ModelPresetRepository`, migration 0006). A preset is one `base_model_id` applied
12
+ * to every agent kind plus per-kind `overrides` (a JSON column). Enforces the
13
+ * single-default invariant: promoting a preset to default demotes every other in the
14
+ * workspace before the upsert. The default preset cannot be removed. Behaviourally
15
+ * identical to the D1 repo so the cross-runtime conformance suite asserts the same
16
+ * preset resolution.
17
+ */
18
+ export declare class DrizzleModelPresetRepository implements ModelPresetRepository {
19
+ private readonly db;
20
+ constructor(db: DrizzleDb);
21
+ get(workspaceId: string, id: string): Promise<ModelPreset | null>;
22
+ list(workspaceId: string): Promise<ModelPreset[]>;
23
+ getDefault(workspaceId: string): Promise<ModelPreset | null>;
24
+ upsert(workspaceId: string, preset: ModelPreset): Promise<void>;
25
+ remove(workspaceId: string, id: string): Promise<void>;
26
+ }
27
+ /**
28
+ * A workspace's default service-fragment selection — one row per workspace in
29
+ * `workspace_fragment_defaults`, the fragment ids stored as a JSON array (mirror of the
30
+ * D1 `D1ServiceFragmentDefaultsRepository`). `set` upserts the whole list.
31
+ */
32
+ export declare class DrizzleTrackerSettingsRepository implements TrackerSettingsRepository {
33
+ private readonly db;
34
+ constructor(db: DrizzleDb);
35
+ get(workspaceId: string): Promise<TrackerSettings | null>;
36
+ put(workspaceId: string, settings: TrackerSettings): Promise<void>;
37
+ }
38
+ /**
39
+ * Per-workspace runtime settings over Postgres (the Drizzle mirror of the Worker's
40
+ * `D1WorkspaceSettingsRepository`, migration 0004). One row per workspace; the service
41
+ * lazily seeds the default, so an absent row reads as null. Per-type task limits are a
42
+ * JSON column.
43
+ */
44
+ export declare class DrizzleWorkspaceSettingsRepository implements WorkspaceSettingsRepository {
45
+ private readonly db;
46
+ constructor(db: DrizzleDb);
47
+ get(workspaceId: string): Promise<WorkspaceSettings | null>;
48
+ listByWorkspaceIds(workspaceIds: string[]): Promise<Map<string, WorkspaceSettings>>;
49
+ upsert(workspaceId: string, settings: WorkspaceSettings): Promise<void>;
50
+ }
51
+ /**
52
+ * A workspace's observability connection over Postgres (the Drizzle mirror of the Worker's
53
+ * `D1ObservabilityConnectionRepository`, migration 0007). One row per workspace; the
54
+ * provider-specific credentials are stored as a sealed JSON blob (encrypted by the caller),
55
+ * with a non-secret `summary` blob for display.
56
+ */
57
+ export declare class DrizzleAccountSettingsRepository implements AccountSettingsRepository {
58
+ private readonly db;
59
+ constructor(db: DrizzleDb);
60
+ getByAccount(accountId: string): Promise<AccountSettingsRecord | null>;
61
+ upsert(record: AccountSettingsRecord): Promise<void>;
62
+ listAll(): Promise<AccountSettingsRecord[]>;
63
+ }
64
+ /**
65
+ * The local-mode operational settings singleton (warm-pool sizing + per-repo checkout
66
+ * reuse), replacing the old `LOCAL_POOL_*` / `HARNESS_*` env vars. One row, addressed by a
67
+ * fixed id. Local-mode-only — there is no D1 mirror (the warm pool is the local Docker
68
+ * runner's differentiator).
69
+ */
70
+ export declare class DrizzleLocalSettingsRepository implements LocalSettingsRepository {
71
+ private readonly db;
72
+ constructor(db: DrizzleDb);
73
+ get(): Promise<LocalSettingsRecord | null>;
74
+ upsert(record: LocalSettingsRecord): Promise<void>;
75
+ }
76
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/repositories/drizzle/settings.ts"],"names":[],"mappings":"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"}