@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.
- package/dist/container.d.ts.map +1 -1
- package/dist/container.js +26 -5
- package/dist/container.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +3 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/machineEventRelay.d.ts +21 -0
- package/dist/machineEventRelay.d.ts.map +1 -0
- package/dist/machineEventRelay.js +34 -0
- package/dist/machineEventRelay.js.map +1 -0
- package/dist/propagator.d.ts +1 -1
- package/dist/propagator.d.ts.map +1 -1
- package/dist/propagator.js +6 -1
- package/dist/propagator.js.map +1 -1
- package/dist/repositories/drizzle/_shared.d.ts +2 -0
- package/dist/repositories/drizzle/_shared.d.ts.map +1 -0
- package/dist/repositories/drizzle/_shared.js +11 -0
- package/dist/repositories/drizzle/_shared.js.map +1 -0
- package/dist/repositories/drizzle/accounts.d.ts +62 -0
- package/dist/repositories/drizzle/accounts.d.ts.map +1 -0
- package/dist/repositories/drizzle/accounts.js +438 -0
- package/dist/repositories/drizzle/accounts.js.map +1 -0
- package/dist/repositories/drizzle/board.d.ts +74 -0
- package/dist/repositories/drizzle/board.d.ts.map +1 -0
- package/dist/repositories/drizzle/board.js +489 -0
- package/dist/repositories/drizzle/board.js.map +1 -0
- package/dist/repositories/drizzle/connections.d.ts +84 -0
- package/dist/repositories/drizzle/connections.d.ts.map +1 -0
- package/dist/repositories/drizzle/connections.js +391 -0
- package/dist/repositories/drizzle/connections.js.map +1 -0
- package/dist/repositories/drizzle/execution.d.ts +58 -0
- package/dist/repositories/drizzle/execution.d.ts.map +1 -0
- package/dist/repositories/drizzle/execution.js +585 -0
- package/dist/repositories/drizzle/execution.js.map +1 -0
- package/dist/repositories/drizzle/initiatives.d.ts +54 -0
- package/dist/repositories/drizzle/initiatives.d.ts.map +1 -0
- package/dist/repositories/drizzle/initiatives.js +343 -0
- package/dist/repositories/drizzle/initiatives.js.map +1 -0
- package/dist/repositories/drizzle/kaizen.d.ts +34 -0
- package/dist/repositories/drizzle/kaizen.d.ts.map +1 -0
- package/dist/repositories/drizzle/kaizen.js +192 -0
- package/dist/repositories/drizzle/kaizen.js.map +1 -0
- package/dist/repositories/drizzle/reviews.d.ts +75 -0
- package/dist/repositories/drizzle/reviews.d.ts.map +1 -0
- package/dist/repositories/drizzle/reviews.js +449 -0
- package/dist/repositories/drizzle/reviews.js.map +1 -0
- package/dist/repositories/drizzle/sandbox.d.ts +61 -0
- package/dist/repositories/drizzle/sandbox.d.ts.map +1 -0
- package/dist/repositories/drizzle/sandbox.js +370 -0
- package/dist/repositories/drizzle/sandbox.js.map +1 -0
- package/dist/repositories/drizzle/settings.d.ts +76 -0
- package/dist/repositories/drizzle/settings.d.ts.map +1 -0
- package/dist/repositories/drizzle/settings.js +377 -0
- package/dist/repositories/drizzle/settings.js.map +1 -0
- package/dist/repositories/drizzle/telemetry.d.ts +60 -0
- package/dist/repositories/drizzle/telemetry.d.ts.map +1 -0
- package/dist/repositories/drizzle/telemetry.js +559 -0
- package/dist/repositories/drizzle/telemetry.js.map +1 -0
- package/dist/repositories/drizzle.d.ts +6 -113
- package/dist/repositories/drizzle.d.ts.map +1 -1
- package/dist/repositories/drizzle.js +20 -4118
- package/dist/repositories/drizzle.js.map +1 -1
- package/drizzle/20260716082429_big_polaris/migration.sql +1 -0
- package/drizzle/20260716082429_big_polaris/snapshot.json +15675 -0
- 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":"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"}
|
|
@@ -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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"}
|