@cat-factory/worker 0.116.0 → 0.118.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/infrastructure/container-assembly.d.ts.map +1 -1
- package/dist/infrastructure/container-assembly.js +6 -0
- package/dist/infrastructure/container-assembly.js.map +1 -1
- package/dist/infrastructure/container.d.ts.map +1 -1
- package/dist/infrastructure/container.js +11 -2
- package/dist/infrastructure/container.js.map +1 -1
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.d.ts +4 -1
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.js +56 -0
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.js.map +1 -1
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.d.ts +3 -1
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.js +26 -0
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.js.map +1 -1
- package/dist/infrastructure/repositories/D1ExecutionRepository.d.ts +12 -1
- package/dist/infrastructure/repositories/D1ExecutionRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1ExecutionRepository.js +57 -1
- package/dist/infrastructure/repositories/D1ExecutionRepository.js.map +1 -1
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.d.ts +3 -1
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.js +188 -1
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.js.map +1 -1
- package/dist/infrastructure/repositories/D1ProvisioningLogRepository.d.ts +4 -0
- package/dist/infrastructure/repositories/D1ProvisioningLogRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1ProvisioningLogRepository.js +16 -3
- package/dist/infrastructure/repositories/D1ProvisioningLogRepository.js.map +1 -1
- package/dist/infrastructure/workflows/ExecutionWorkflow.d.ts.map +1 -1
- package/dist/infrastructure/workflows/ExecutionWorkflow.js +27 -8
- package/dist/infrastructure/workflows/ExecutionWorkflow.js.map +1 -1
- package/package.json +18 -18
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import { LIVE_EXECUTION_STATUSES, } from '@cat-factory/kernel';
|
|
1
2
|
import { tryDecodeRows } from '@cat-factory/server';
|
|
2
3
|
import { chunkForIn } from './chunk';
|
|
3
4
|
import { adoptCreatedAt, executionToDetail, rowToExecution } from './mappers';
|
|
4
5
|
const runContext = (row) => ({ table: 'agent_runs', id: row.id });
|
|
6
|
+
// The live statuses as a SQL list literal, derived from the shared constant so the live-run
|
|
7
|
+
// projection and the admission-control capacity COUNT read the same set here and on Node.
|
|
8
|
+
// `insertLive` deliberately keeps its literals: those mirror the frozen index predicate
|
|
9
|
+
// (see LIVE_EXECUTION_STATUSES).
|
|
10
|
+
const LIVE_STATUS_LIST_SQL = LIVE_EXECUTION_STATUSES.map((s) => `'${s}'`).join(', ');
|
|
5
11
|
/**
|
|
6
12
|
* Execution runs, stored as `kind='execution'` rows of the unified `agent_runs`
|
|
7
13
|
* table (migration 0019). Every statement is scoped by `kind='execution'` so the
|
|
@@ -31,13 +37,24 @@ export class D1ExecutionRepository {
|
|
|
31
37
|
const { results } = await this.db
|
|
32
38
|
.prepare(`SELECT id, block_id, status FROM agent_runs
|
|
33
39
|
WHERE workspace_id = ? AND kind = 'execution'
|
|
34
|
-
AND status IN (
|
|
40
|
+
AND status IN (${LIVE_STATUS_LIST_SQL})`)
|
|
35
41
|
.bind(workspaceId)
|
|
36
42
|
.all();
|
|
37
43
|
// `block_id` is nullable on the table; coalesce to '' so the projection matches the Drizzle
|
|
38
44
|
// repo's `string` shape exactly (live execution runs always carry one in practice).
|
|
39
45
|
return results.map((r) => ({ id: r.id, blockId: r.block_id ?? '', status: r.status }));
|
|
40
46
|
}
|
|
47
|
+
async countActiveByWorkspace(workspaceId) {
|
|
48
|
+
// Admission-control capacity read: the COUNT is pushed into SQL (never rows reduced in JS),
|
|
49
|
+
// over the same live predicate and index as `listLive` above. Mirrors the Drizzle repo.
|
|
50
|
+
const row = await this.db
|
|
51
|
+
.prepare(`SELECT COUNT(*) AS n FROM agent_runs
|
|
52
|
+
WHERE workspace_id = ? AND kind = 'execution'
|
|
53
|
+
AND status IN (${LIVE_STATUS_LIST_SQL})`)
|
|
54
|
+
.bind(workspaceId)
|
|
55
|
+
.first();
|
|
56
|
+
return row?.n ?? 0;
|
|
57
|
+
}
|
|
41
58
|
async listByService(serviceId) {
|
|
42
59
|
const { results } = await this.db
|
|
43
60
|
.prepare(`SELECT * FROM agent_runs WHERE service_id = ? AND kind = 'execution' ORDER BY created_at`)
|
|
@@ -90,6 +107,45 @@ export class D1ExecutionRepository {
|
|
|
90
107
|
// List read: drop a corrupt run rather than failing the whole page.
|
|
91
108
|
return tryDecodeRows(results, rowToExecution, runContext);
|
|
92
109
|
}
|
|
110
|
+
async listRecent(workspaceId, opts) {
|
|
111
|
+
// Same predicates and ordering as `listInternal`, minus its anchor-block join: the debug
|
|
112
|
+
// run index deliberately spans every run in the workspace (see the port). Driven by
|
|
113
|
+
// idx_agent_runs_workspace (workspace_id, created_at) walked in reverse.
|
|
114
|
+
const where = [`workspace_id = ?`, `kind = 'execution'`];
|
|
115
|
+
const binds = [workspaceId];
|
|
116
|
+
if (opts.statuses && opts.statuses.length > 0) {
|
|
117
|
+
where.push(`status IN (${opts.statuses.map(() => '?').join(', ')})`);
|
|
118
|
+
binds.push(...opts.statuses);
|
|
119
|
+
}
|
|
120
|
+
if (opts.since != null) {
|
|
121
|
+
where.push(`created_at >= ?`);
|
|
122
|
+
binds.push(opts.since);
|
|
123
|
+
}
|
|
124
|
+
if (opts.cursor) {
|
|
125
|
+
where.push(`(created_at < ? OR (created_at = ? AND id < ?))`);
|
|
126
|
+
binds.push(opts.cursor.createdAt, opts.cursor.createdAt, opts.cursor.id);
|
|
127
|
+
}
|
|
128
|
+
const { results } = await this.db
|
|
129
|
+
.prepare(`SELECT * FROM agent_runs
|
|
130
|
+
WHERE ${where.join(' AND ')}
|
|
131
|
+
ORDER BY created_at DESC, id DESC
|
|
132
|
+
LIMIT ?`)
|
|
133
|
+
.bind(...binds, opts.limit)
|
|
134
|
+
.all();
|
|
135
|
+
// List read: drop a corrupt run rather than failing the whole page. Note the interaction
|
|
136
|
+
// with the caller's peek-one-extra pagination: a dropped row shrinks the page below
|
|
137
|
+
// `limit + 1`, so a page containing a corrupt run reads as the LAST page and later rows
|
|
138
|
+
// become unreachable until the row is repaired — accepted, matching every other list read.
|
|
139
|
+
return tryDecodeRows(results, rowToExecution, runContext);
|
|
140
|
+
}
|
|
141
|
+
async exists(workspaceId, id) {
|
|
142
|
+
// One indexed probe, no row decode (see the port). Mirrors the Drizzle repo.
|
|
143
|
+
const row = await this.db
|
|
144
|
+
.prepare(`SELECT 1 AS one FROM agent_runs WHERE workspace_id = ? AND id = ? AND kind = 'execution'`)
|
|
145
|
+
.bind(workspaceId, id)
|
|
146
|
+
.first();
|
|
147
|
+
return row != null;
|
|
148
|
+
}
|
|
93
149
|
async get(workspaceId, id) {
|
|
94
150
|
const row = await this.db
|
|
95
151
|
.prepare(`SELECT * FROM agent_runs WHERE workspace_id = ? AND id = ? AND kind = 'execution'`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1ExecutionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ExecutionRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"D1ExecutionRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ExecutionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,uBAAuB,GAGxB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,cAAc,EAAqB,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAEhG,MAAM,UAAU,GAAG,CAAC,GAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;AAE/E,4FAA4F;AAC5F,0FAA0F;AAC1F,wFAAwF;AACxF,iCAAiC;AACjC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEpF;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IACf,EAAE,CAAY;IACd,KAAK,CAAO;IAE7B,YAAY,EAAE,EAAE,EAAE,KAAK,EAAoC;QACzD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,WAAmB;QACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN,4FAA4F,CAC7F;aACA,IAAI,CAAC,WAAW,CAAC;aACjB,GAAG,EAAgB,CAAA;QACtB,0FAA0F;QAC1F,OAAO,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB;QAChC,0FAA0F;QAC1F,2FAA2F;QAC3F,6FAA6F;QAC7F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;;4BAEoB,oBAAoB,GAAG,CAC5C;aACA,IAAI,CAAC,WAAW,CAAC;aACjB,GAAG,EAA6E,CAAA;QACnF,4FAA4F;QAC5F,oFAAoF;QACpF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACxF,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,WAAmB;QAC9C,4FAA4F;QAC5F,wFAAwF;QACxF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN;;4BAEoB,oBAAoB,GAAG,CAC5C;aACA,IAAI,CAAC,WAAW,CAAC;aACjB,KAAK,EAAiB,CAAA;QACzB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN,0FAA0F,CAC3F;aACA,IAAI,CAAC,SAAS,CAAC;aACf,GAAG,EAAgB,CAAA;QACtB,OAAO,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAoB;QACvC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QACtC,MAAM,GAAG,GAAwB,EAAE,CAAA;QACnC,8DAA8D;QAC9D,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACpD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;iBAC9B,OAAO,CACN,iDAAiD,YAAY,8CAA8C,CAC5G;iBACA,IAAI,CAAC,GAAG,KAAK,CAAC;iBACd,GAAG,EAAgB,CAAA;YACtB,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,CAAA;QACjE,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,WAAmB,EACnB,IAKC;QAED,6FAA6F;QAC7F,yFAAyF;QACzF,uFAAuF;QACvF,MAAM,KAAK,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;QAC9E,MAAM,KAAK,GAAwB,CAAC,WAAW,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACtE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,0FAA0F;YAC1F,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;YACnE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;;iBAES,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;iBAEnB,CACV;aACA,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;aAC1B,GAAG,EAAgB,CAAA;QACtB,oEAAoE;QACpE,OAAO,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,IAKC;QAED,yFAAyF;QACzF,oFAAoF;QACpF,yEAAyE;QACzE,MAAM,KAAK,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAA;QACxD,MAAM,KAAK,GAAwB,CAAC,WAAW,CAAC,CAAA;QAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAA;YAC7D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;iBACS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;iBAEnB,CACV;aACA,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;aAC1B,GAAG,EAAgB,CAAA;QACtB,yFAAyF;QACzF,oFAAoF;QACpF,wFAAwF;QACxF,2FAA2F;QAC3F,OAAO,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,EAAU;QAC1C,6EAA6E;QAC7E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN,0FAA0F,CAC3F;aACA,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;aACrB,KAAK,EAAmB,CAAA;QAC3B,OAAO,GAAG,IAAI,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,mFAAmF,CAAC;aAC5F,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;aACrB,KAAK,EAAgB,CAAA;QACxB,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,OAAe;QACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN,yFAAyF,CAC1F;aACA,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;aAC1B,KAAK,EAAgB,CAAA;QACxB,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,SAA4B;QAC5D,6EAA6E;QAC7E,oEAAoE;QACpE,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC3C,wFAAwF;QACxF,8EAA8E;QAC9E,0FAA0F;QAC1F,6EAA6E;QAC7E,sFAAsF;QACtF,kFAAkF;QAClF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN;;;;;;;;;;;;uBAYe,CAChB;aACA,IAAI,CACH,WAAW,EACX,SAAS,CAAC,EAAE,EACZ,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,MAAM,EAChB,MAAM,EACN,SAAS,EACT,GAAG;QACH,uEAAuE;QACvE,SAAS,CAAC,EAAE,EACZ,WAAW,EACX,SAAS,CAAC,OAAO,CAClB;aACA,KAAK,EAAmB,CAAA;QAC3B,IAAI,GAAG;YAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,SAA4B,EAC5B,IAA6B;QAE7B,0EAA0E;QAC1E,yFAAyF;QACzF,2FAA2F;QAC3F,wFAAwF;QACxF,yFAAyF;QACzF,0FAA0F;QAC1F,yFAAyF;QACzF,uFAAuF;QACvF,8DAA8D;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC3C,wFAAwF;QACxF,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE;aACpB,OAAO,CACN;;0EAEkE,CACnE;aACA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,OAAO,CACN;;;;;;;;uBAQe,CAChB;aACA,IAAI,CACH,WAAW,EACX,SAAS,CAAC,EAAE,EACZ,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,MAAM,EAChB,MAAM,EACN,SAAS,EACT,GAAG,EACH,SAAS,CAAC,EAAE,EACZ,WAAW,EACX,SAAS,CAAC,OAAO,CAClB,CAAA;QACH,wFAAwF;QACxF,2EAA2E;QAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QACvE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAA;QACtB,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,SAA4B;QACpE,kFAAkF;QAClF,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN;;;;;;;;uBAQe,CAChB;aACA,IAAI,CACH,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,MAAM,EAChB,MAAM,EACN,GAAG,EACH,WAAW,EACX,SAAS,CAAC,OAAO,EACjB,WAAW,EACX,SAAS,CAAC,EAAE,EACZ,QAAQ,CACT;aACA,KAAK,EAAmB,CAAA;QAC3B,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAA;QACtB,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,OAAe;QACtD,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN,uFAAuF,CACxF;aACA,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;aAC1B,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,gBAAwB;QACtC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO,CACN;;6BAEqB,CACtB;aACA,IAAI,CAAC,gBAAgB,CAAC;aACtB,GAAG,EAAwC,CAAA;QAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,EAAU,EAAE,OAAqB;QACrE,oFAAoF;QACpF,uFAAuF;QACvF,sFAAsF;QACtF,kFAAkF;QAClF,oBAAoB;QACpB,EAAE;QACF,iFAAiF;QACjF,qFAAqF;QACrF,2FAA2F;QAC3F,0FAA0F;QAC1F,2FAA2F;QAC3F,2FAA2F;QAC3F,sFAAsF;QACtF,gFAAgF;QAChF,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;;gDAGwC,CACzC;aACA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;aACjF,GAAG,EAAE,CAAA;IACV,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type LlmCallMetric, type LlmCallMetricRepository, type LlmCallMetricSummary, type LlmPromptChainTip } from '@cat-factory/kernel';
|
|
1
|
+
import { type LlmCallBodyWindow, type LlmCallMetric, type LlmCallMetricPage, type LlmCallMetricRepository, type LlmCallMetricSummary, type LlmCallPageQuery, type LlmPromptChainTip } from '@cat-factory/kernel';
|
|
2
2
|
import type { D1Database } from '@cloudflare/workers-types';
|
|
3
3
|
/** D1-backed sink for LLM observability (see migration 0026). */
|
|
4
4
|
export declare class D1LlmCallMetricRepository implements LlmCallMetricRepository {
|
|
@@ -9,6 +9,8 @@ export declare class D1LlmCallMetricRepository implements LlmCallMetricRepositor
|
|
|
9
9
|
record(metric: LlmCallMetric): Promise<void>;
|
|
10
10
|
latestChainTip(workspaceId: string, executionId: string, agentKind: string): Promise<LlmPromptChainTip | null>;
|
|
11
11
|
listByExecution(workspaceId: string, executionId: string, limit?: number, agentKind?: string): Promise<LlmCallMetric[]>;
|
|
12
|
+
listPage(workspaceId: string, query: LlmCallPageQuery): Promise<LlmCallMetricPage[]>;
|
|
13
|
+
get(workspaceId: string, id: string, body?: LlmCallBodyWindow): Promise<LlmCallMetricPage | null>;
|
|
12
14
|
summarizeByExecution(workspaceId: string, executionId: string): Promise<LlmCallMetricSummary[]>;
|
|
13
15
|
deleteOlderThan(epochMs: number): Promise<number>;
|
|
14
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1LlmCallMetricRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LlmCallMetricRepository.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"D1LlmCallMetricRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LlmCallMetricRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAEzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAkO3D,iEAAiE;AACjE,qBAAa,yBAA0B,YAAW,uBAAuB;IACvE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDjD;IAEK,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoBnC;IAEK,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,EAAE,CAAC,CAa1B;IAEK,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsDzF;IAEK,GAAG,CACP,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAUnC;IAEK,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAsDjC;IAEK,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtD;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LLM_WARNING_FINISH_REASONS, } from '@cat-factory/kernel';
|
|
1
|
+
import { LLM_WARNING_FINISH_REASONS, escapeLikePattern, } from '@cat-factory/kernel';
|
|
2
2
|
// `length` and `content_filter` as a SQL list literal, derived from the shared
|
|
3
3
|
// constant so the warning classification matches the service + the Node store.
|
|
4
4
|
const WARNING_REASONS_SQL = LLM_WARNING_FINISH_REASONS.map((r) => `'${r}'`).join(', ');
|
|
@@ -36,6 +36,134 @@ function rowToMetric(row) {
|
|
|
36
36
|
reasoningText: row.reasoning_text,
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* The metadata columns a bounded page selects, plus each body's full `length()`. The bodies
|
|
41
|
+
* themselves are added by {@link bodyColumns} so the SLICE can be bound to the caller's budget.
|
|
42
|
+
*/
|
|
43
|
+
const PAGE_METADATA_COLUMNS = `id, workspace_id, execution_id, agent_kind, provider, model,
|
|
44
|
+
created_at, streaming, phase, turn_index, message_count, tool_count, request_max_tokens,
|
|
45
|
+
prompt_tokens,
|
|
46
|
+
cache_read_tokens, cache_write_tokens, completion_tokens, total_tokens, finish_reason, upstream_ms,
|
|
47
|
+
overhead_ms, total_ms, ok, http_status, error_message, prompt_prefix_count,
|
|
48
|
+
length(prompt_text) AS prompt_chars,
|
|
49
|
+
length(response_text) AS response_chars,
|
|
50
|
+
length(reasoning_text) AS reasoning_chars`;
|
|
51
|
+
/**
|
|
52
|
+
* The three body columns, windowed to `bodyChars` from `offsetChars` on — the cases, each a
|
|
53
|
+
* different SQL shape:
|
|
54
|
+
*
|
|
55
|
+
* - `undefined` budget at offset 0 selects the columns RAW. Not
|
|
56
|
+
* `substr(col, 1, <huge sentinel>)`: SQLite returns an EMPTY string for a length that
|
|
57
|
+
* large, so a "give me everything" point read would silently hand back nothing while
|
|
58
|
+
* still reporting the real `totalChars`.
|
|
59
|
+
* - `undefined` budget at a later offset selects the REST of the body from there
|
|
60
|
+
* (two-argument `substr`).
|
|
61
|
+
* - `0` selects a literal empty string rather than `substr(col, 1, 0)`, so a sweep over a
|
|
62
|
+
* long run never makes SQLite materialise (or D1 transfer) a single prompt byte — the
|
|
63
|
+
* whole reason bodies are opt-in here.
|
|
64
|
+
* - anything else slices the caller's window. `substr` is 1-based and counts CHARACTERS
|
|
65
|
+
* (code points), matching the wire contract's offsets, so the bind is `offset + 1`.
|
|
66
|
+
*
|
|
67
|
+
* Lengths are always reported by {@link PAGE_METADATA_COLUMNS} regardless, because a size is
|
|
68
|
+
* what tells the caller which rows are worth a point read. Mirrors the Drizzle repo's
|
|
69
|
+
* `llmPageColumns`.
|
|
70
|
+
*/
|
|
71
|
+
function bodyColumns(bodyChars, offsetChars = 0) {
|
|
72
|
+
if (bodyChars !== undefined && bodyChars <= 0) {
|
|
73
|
+
return `'' AS prompt_text, '' AS response_text, '' AS reasoning_text`;
|
|
74
|
+
}
|
|
75
|
+
if (bodyChars === undefined && offsetChars <= 0) {
|
|
76
|
+
return `prompt_text, response_text, reasoning_text`;
|
|
77
|
+
}
|
|
78
|
+
if (bodyChars === undefined) {
|
|
79
|
+
return `substr(prompt_text, ?) AS prompt_text,
|
|
80
|
+
substr(response_text, ?) AS response_text,
|
|
81
|
+
substr(reasoning_text, ?) AS reasoning_text`;
|
|
82
|
+
}
|
|
83
|
+
return `substr(prompt_text, ?, ?) AS prompt_text,
|
|
84
|
+
substr(response_text, ?, ?) AS response_text,
|
|
85
|
+
substr(reasoning_text, ?, ?) AS reasoning_text`;
|
|
86
|
+
}
|
|
87
|
+
/** The window binds `bodyColumns` needs, in the order its placeholders appear. */
|
|
88
|
+
function bodyBinds(bodyChars, offsetChars = 0) {
|
|
89
|
+
if (bodyChars !== undefined && bodyChars <= 0)
|
|
90
|
+
return [];
|
|
91
|
+
if (bodyChars === undefined && offsetChars <= 0)
|
|
92
|
+
return [];
|
|
93
|
+
const from = Math.max(0, offsetChars) + 1;
|
|
94
|
+
if (bodyChars === undefined)
|
|
95
|
+
return [from, from, from];
|
|
96
|
+
return [from, bodyChars, from, bodyChars, from, bodyChars];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The per-body first-match columns a SEARCHED page adds: the 0-based code-point offset of
|
|
100
|
+
* the term in each body, or NULL where it does not occur (`nullif(instr(...), 0) - 1`;
|
|
101
|
+
* NULL propagates through the `- 1`). `instr` counts characters like `substr` does, so the
|
|
102
|
+
* offset feeds a point read's window directly. Case folding matches the WHERE clause's
|
|
103
|
+
* `LIKE`: SQLite's is ASCII-only, so the term is ASCII-lowered in {@link matchBinds}.
|
|
104
|
+
*/
|
|
105
|
+
const MATCH_COLUMNS = `,
|
|
106
|
+
nullif(instr(lower(prompt_text), ?), 0) - 1 AS prompt_match,
|
|
107
|
+
nullif(instr(lower(response_text), ?), 0) - 1 AS response_match,
|
|
108
|
+
nullif(instr(lower(reasoning_text), ?), 0) - 1 AS reasoning_match`;
|
|
109
|
+
/** The lowered-term binds {@link MATCH_COLUMNS} needs. */
|
|
110
|
+
function matchBinds(contains) {
|
|
111
|
+
const lowered = contains.toLowerCase();
|
|
112
|
+
return [lowered, lowered, lowered];
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The SQL predicate for one outcome class, or null for "no narrowing". Mirrors `classifyCall`
|
|
116
|
+
* and the Drizzle repo: a failed call is an `error`; a successful one cut short by the output
|
|
117
|
+
* limit or a content filter is a `warning`; the rest are `ok`. In SQL so a narrowed page spends
|
|
118
|
+
* its `limit` on rows the caller wants.
|
|
119
|
+
*/
|
|
120
|
+
function outcomeClause(outcome) {
|
|
121
|
+
if (outcome === 'error')
|
|
122
|
+
return 'ok = 0';
|
|
123
|
+
if (outcome === 'warning')
|
|
124
|
+
return `ok = 1 AND finish_reason IN (${WARNING_REASONS_SQL})`;
|
|
125
|
+
if (outcome === 'ok') {
|
|
126
|
+
return `ok = 1 AND (finish_reason IS NULL OR finish_reason NOT IN (${WARNING_REASONS_SQL}))`;
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
/** Attach a searched row's per-body match offset; a plain page's slices carry none. */
|
|
131
|
+
function withMatch(slice, match) {
|
|
132
|
+
return match === undefined ? slice : { ...slice, matchOffset: match };
|
|
133
|
+
}
|
|
134
|
+
function rowToPage(row) {
|
|
135
|
+
return {
|
|
136
|
+
id: row.id,
|
|
137
|
+
workspaceId: row.workspace_id,
|
|
138
|
+
executionId: row.execution_id,
|
|
139
|
+
agentKind: row.agent_kind,
|
|
140
|
+
provider: row.provider,
|
|
141
|
+
model: row.model,
|
|
142
|
+
createdAt: row.created_at,
|
|
143
|
+
streaming: row.streaming === 1,
|
|
144
|
+
phase: row.phase,
|
|
145
|
+
turnIndex: row.turn_index,
|
|
146
|
+
messageCount: row.message_count,
|
|
147
|
+
toolCount: row.tool_count,
|
|
148
|
+
requestMaxTokens: row.request_max_tokens,
|
|
149
|
+
promptTokens: row.prompt_tokens,
|
|
150
|
+
cacheReadTokens: row.cache_read_tokens,
|
|
151
|
+
cacheWriteTokens: row.cache_write_tokens,
|
|
152
|
+
completionTokens: row.completion_tokens,
|
|
153
|
+
totalTokens: row.total_tokens,
|
|
154
|
+
finishReason: row.finish_reason,
|
|
155
|
+
upstreamMs: row.upstream_ms,
|
|
156
|
+
overheadMs: row.overhead_ms,
|
|
157
|
+
totalMs: row.total_ms,
|
|
158
|
+
ok: row.ok === 1,
|
|
159
|
+
httpStatus: row.http_status,
|
|
160
|
+
errorMessage: row.error_message,
|
|
161
|
+
promptPrefixCount: row.prompt_prefix_count,
|
|
162
|
+
prompt: withMatch({ text: row.prompt_text, totalChars: row.prompt_chars ?? 0 }, row.prompt_match),
|
|
163
|
+
response: withMatch({ text: row.response_text, totalChars: row.response_chars ?? 0 }, row.response_match),
|
|
164
|
+
reasoning: withMatch({ text: row.reasoning_text, totalChars: row.reasoning_chars ?? 0 }, row.reasoning_match),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
39
167
|
/** D1-backed sink for LLM observability (see migration 0026). */
|
|
40
168
|
export class D1LlmCallMetricRepository {
|
|
41
169
|
db;
|
|
@@ -97,6 +225,65 @@ export class D1LlmCallMetricRepository {
|
|
|
97
225
|
.all();
|
|
98
226
|
return (results ?? []).map(rowToMetric);
|
|
99
227
|
}
|
|
228
|
+
async listPage(workspaceId, query) {
|
|
229
|
+
const ascending = query.order === 'oldest';
|
|
230
|
+
const clauses = ['workspace_id = ?', 'execution_id = ?'];
|
|
231
|
+
// The SELECT-list binds come FIRST (slices, then match offsets), ahead of every WHERE
|
|
232
|
+
// placeholder.
|
|
233
|
+
const binds = [
|
|
234
|
+
...bodyBinds(query.bodyChars),
|
|
235
|
+
...(query.contains != null ? matchBinds(query.contains) : []),
|
|
236
|
+
workspaceId,
|
|
237
|
+
query.executionId,
|
|
238
|
+
];
|
|
239
|
+
if (query.agentKind != null) {
|
|
240
|
+
clauses.push('agent_kind = ?');
|
|
241
|
+
binds.push(query.agentKind);
|
|
242
|
+
}
|
|
243
|
+
// `!= null`, not a truthiness check: '' is the unattributed slice and a legitimate filter.
|
|
244
|
+
if (query.phase != null) {
|
|
245
|
+
clauses.push('phase = ?');
|
|
246
|
+
binds.push(query.phase);
|
|
247
|
+
}
|
|
248
|
+
const outcome = outcomeClause(query.outcome);
|
|
249
|
+
if (outcome)
|
|
250
|
+
clauses.push(`(${outcome})`);
|
|
251
|
+
if (query.contains != null) {
|
|
252
|
+
// The surface's grep: SQLite's LIKE is ASCII-case-insensitive by default, and the shared
|
|
253
|
+
// escaper makes `%`/`_` in the term literal (`ESCAPE '\'` — SQLite has no default escape
|
|
254
|
+
// character, unlike Postgres).
|
|
255
|
+
const pattern = `%${escapeLikePattern(query.contains)}%`;
|
|
256
|
+
clauses.push(`(prompt_text LIKE ? ESCAPE '\\' OR response_text LIKE ? ESCAPE '\\' OR reasoning_text LIKE ? ESCAPE '\\')`);
|
|
257
|
+
binds.push(pattern, pattern, pattern);
|
|
258
|
+
}
|
|
259
|
+
if (query.cursor) {
|
|
260
|
+
// Composite keyset matching the ORDER BY. Calls are recorded off the response path, so a
|
|
261
|
+
// burst genuinely shares a millisecond; a `created_at`-only bound would drop the ties.
|
|
262
|
+
const cmp = ascending ? '>' : '<';
|
|
263
|
+
clauses.push(`(created_at ${cmp} ? OR (created_at = ? AND id ${cmp} ?))`);
|
|
264
|
+
binds.push(query.cursor.createdAt, query.cursor.createdAt, query.cursor.id);
|
|
265
|
+
}
|
|
266
|
+
binds.push(query.limit);
|
|
267
|
+
const direction = ascending ? 'ASC' : 'DESC';
|
|
268
|
+
const { results } = await this.db
|
|
269
|
+
.prepare(`SELECT ${PAGE_METADATA_COLUMNS}, ${bodyColumns(query.bodyChars)}${query.contains != null ? MATCH_COLUMNS : ''}
|
|
270
|
+
FROM llm_call_metrics
|
|
271
|
+
WHERE ${clauses.join(' AND ')}
|
|
272
|
+
ORDER BY created_at ${direction}, id ${direction}
|
|
273
|
+
LIMIT ?`)
|
|
274
|
+
.bind(...binds)
|
|
275
|
+
.all();
|
|
276
|
+
return (results ?? []).map(rowToPage);
|
|
277
|
+
}
|
|
278
|
+
async get(workspaceId, id, body) {
|
|
279
|
+
const row = await this.db
|
|
280
|
+
.prepare(`SELECT ${PAGE_METADATA_COLUMNS}, ${bodyColumns(body?.chars, body?.offset ?? 0)}
|
|
281
|
+
FROM llm_call_metrics
|
|
282
|
+
WHERE workspace_id = ? AND id = ?`)
|
|
283
|
+
.bind(...bodyBinds(body?.chars, body?.offset ?? 0), workspaceId, id)
|
|
284
|
+
.first();
|
|
285
|
+
return row ? rowToPage(row) : null;
|
|
286
|
+
}
|
|
100
287
|
async summarizeByExecution(workspaceId, executionId) {
|
|
101
288
|
// Aggregate-only: deliberately selects no prompt/response text, so this stays
|
|
102
289
|
// cheap to run on every execution emit (it backs the live board rollups).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1LlmCallMetricRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LlmCallMetricRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,
|
|
1
|
+
{"version":3,"file":"D1LlmCallMetricRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LlmCallMetricRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@ export declare class D1ProvisioningLogRepository implements ProvisioningLogRepos
|
|
|
12
12
|
});
|
|
13
13
|
append(record: ProvisioningLogRecord): Promise<void>;
|
|
14
14
|
list(workspaceId: string, query?: ProvisioningLogQuery): Promise<ProvisioningLogRecord[]>;
|
|
15
|
+
countByExecution(workspaceId: string, executionId: string): Promise<{
|
|
16
|
+
total: number;
|
|
17
|
+
failures: number;
|
|
18
|
+
}>;
|
|
15
19
|
deleteOlderThan(epochMs: number): Promise<number>;
|
|
16
20
|
}
|
|
17
21
|
//# sourceMappingURL=D1ProvisioningLogRepository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1ProvisioningLogRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ProvisioningLogRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAkC3D;;;;GAIG;AACH,qBAAa,2BAA4B,YAAW,yBAAyB;IAC3E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBzD;IAEK,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,oBAAyB,GAC/B,OAAO,CAAC,qBAAqB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"D1ProvisioningLogRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ProvisioningLogRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAkC3D;;;;GAIG;AACH,qBAAa,2BAA4B,YAAW,yBAAyB;IAC3E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBzD;IAEK,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,oBAAyB,GAC/B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAiClC;IAEK,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAY9C;IAEK,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtD;CACF"}
|
|
@@ -48,9 +48,11 @@ export class D1ProvisioningLogRepository {
|
|
|
48
48
|
clauses.push('target_id = ?');
|
|
49
49
|
binds.push(query.targetId);
|
|
50
50
|
}
|
|
51
|
-
if (query.
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
if (query.cursor) {
|
|
52
|
+
// Composite keyset matching the ORDER BY: provisioning attempts are appended in bursts,
|
|
53
|
+
// so a `created_at`-only bound would silently drop rows sharing a millisecond.
|
|
54
|
+
clauses.push('(created_at < ? OR (created_at = ? AND id < ?))');
|
|
55
|
+
binds.push(query.cursor.createdAt, query.cursor.createdAt, query.cursor.id);
|
|
54
56
|
}
|
|
55
57
|
// Newest first; `LIMIT -1` means "no limit" in SQLite, so an omitted cap reads all.
|
|
56
58
|
binds.push(query.limit ?? -1);
|
|
@@ -63,6 +65,17 @@ export class D1ProvisioningLogRepository {
|
|
|
63
65
|
.all();
|
|
64
66
|
return (results ?? []).map(rowToRecord);
|
|
65
67
|
}
|
|
68
|
+
async countByExecution(workspaceId, executionId) {
|
|
69
|
+
// Total + failures in ONE aggregate pass over the run's slice (see the port).
|
|
70
|
+
const row = await this.db
|
|
71
|
+
.prepare(`SELECT COUNT(*) AS total,
|
|
72
|
+
COALESCE(SUM(CASE WHEN outcome = 'failure' THEN 1 ELSE 0 END), 0) AS failures
|
|
73
|
+
FROM provisioning_log
|
|
74
|
+
WHERE workspace_id = ? AND execution_id = ?`)
|
|
75
|
+
.bind(workspaceId, executionId)
|
|
76
|
+
.first();
|
|
77
|
+
return { total: row?.total ?? 0, failures: row?.failures ?? 0 };
|
|
78
|
+
}
|
|
66
79
|
async deleteOlderThan(epochMs) {
|
|
67
80
|
const { meta } = await this.db
|
|
68
81
|
.prepare('DELETE FROM provisioning_log WHERE created_at < ?')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1ProvisioningLogRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ProvisioningLogRepository.ts"],"names":[],"mappings":"AAsBA,SAAS,WAAW,CAAC,GAAuB;IAC1C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,SAA+C;QAC9D,SAAS,EAAE,GAAG,CAAC,SAA+C;QAC9D,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,OAAO,EAAE,GAAG,CAAC,OAA2C;QACxD,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IACrB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA6B;QACxC,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;;qDAG6C,CAC9C;aACA,IAAI,CACH,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,CACjB;aACA,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,KAAK,GAAyB,EAAE;QAEhC,MAAM,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACpC,MAAM,KAAK,GAAc,CAAC,WAAW,CAAC,CAAA;QACtC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"D1ProvisioningLogRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ProvisioningLogRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAElB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAI3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAKjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAWpE;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtE,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"ExecutionWorkflow.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAElB,KAAK,YAAY,EAElB,MAAM,oBAAoB,CAAA;AAI3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAKjC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAWpE;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC;IACtE,GAAG,CAChB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAuSf;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WorkflowEntrypoint, } from 'cloudflare:workers';
|
|
2
|
-
import { redactSecrets } from '@cat-factory/kernel';
|
|
2
|
+
import { getErrorReason, redactSecrets } from '@cat-factory/kernel';
|
|
3
3
|
import { buildContainer } from '../container';
|
|
4
4
|
import { loadConfig } from '../config';
|
|
5
5
|
import { logger } from '../observability/logger';
|
|
@@ -41,9 +41,20 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
|
|
|
41
41
|
// instance's durable step history bounded (≈1/day, like a decision wait) instead of the
|
|
42
42
|
// thousands/day a 30s busy-loop would accrue toward the Workflows per-instance limit.
|
|
43
43
|
const pauseRecheckTimeout = decisionTimeout;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
// `reason` is NOT optional decoration: the SPA's `AgentFailureCard` branches on it to
|
|
45
|
+
// render the machine-readable remedies (the "Connect GitHub" jump action, the
|
|
46
|
+
// deploy-runner hint). This helper used to omit the parameter entirely, so every
|
|
47
|
+
// failure path on the DEPLOYED runtime discarded the reason the runtime-neutral
|
|
48
|
+
// `drive.ts` twin has always forwarded — those remedies could never fire in production
|
|
49
|
+
// (observability-logging-gaps.md, B3). Keep the signature in step with `drive.ts`'s
|
|
50
|
+
// `fail`; a divergence here is invisible until a user needs the remedy.
|
|
51
|
+
const failRun = async (i, message, kind = 'agent', detail = null, reason = null) => {
|
|
52
|
+
log.warn(`failing run: ${message}`, {
|
|
53
|
+
step: i,
|
|
54
|
+
failureKind: kind,
|
|
55
|
+
...(reason ? { reason } : {}),
|
|
56
|
+
});
|
|
57
|
+
await step.do(`fail-${i}`, () => container.executionService.failRun(workspaceId, executionId, message, kind, detail, reason));
|
|
47
58
|
};
|
|
48
59
|
// Run one durable status read, converting a *thrown* (transient) poll error into a
|
|
49
60
|
// `read_failed` value the caller tolerates rather than a failure that kills the run.
|
|
@@ -152,8 +163,12 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
|
|
|
152
163
|
})));
|
|
153
164
|
}
|
|
154
165
|
catch (error) {
|
|
155
|
-
// Retries exhausted: persist the failure and open the block for review.
|
|
156
|
-
|
|
166
|
+
// Retries exhausted: persist the failure and open the block for review. A thrown
|
|
167
|
+
// `DomainError` carries its machine-readable `details.reason` (e.g. a
|
|
168
|
+
// `providers_unconfigured` conflict), which is exactly the class of failure the SPA
|
|
169
|
+
// has a remedy for — `getErrorReason` is the read-side dual that lifts it onto the
|
|
170
|
+
// run rather than leaving the user with prose to string-match.
|
|
171
|
+
await failRun(i, error instanceof Error ? error.message : String(error), 'agent', null, getErrorReason(error) ?? null);
|
|
157
172
|
return;
|
|
158
173
|
}
|
|
159
174
|
// An async step (a container coding job) dispatched and parked. Poll it between
|
|
@@ -184,14 +199,18 @@ export class ExecutionWorkflow extends WorkflowEntrypoint {
|
|
|
184
199
|
// An inline gate may carry the precise classification + diagnostic (e.g. an
|
|
185
200
|
// unparseable companion verdict → `companion_rejected` with its raw reply as
|
|
186
201
|
// detail); record those instead of the generic container-failure framing.
|
|
187
|
-
await failRun(i, result.error, result.failureKind ?? 'job_failed', result.detail ?? null);
|
|
202
|
+
await failRun(i, result.error, result.failureKind ?? 'job_failed', result.detail ?? null, result.reason ?? null);
|
|
188
203
|
return;
|
|
189
204
|
}
|
|
190
205
|
// The container kept getting evicted/crashing even after the engine's single
|
|
191
206
|
// automatic fresh-container restart, so the eviction is deterministic: fail
|
|
192
207
|
// the run as `evicted` (its hint points at the container logs / instance size).
|
|
193
208
|
if (result.kind === 'job_evicted') {
|
|
194
|
-
|
|
209
|
+
// Record the transport's container post-mortem as the failure detail, as `drive.ts`
|
|
210
|
+
// does — the container is already reclaimed, so this is the only surviving account
|
|
211
|
+
// of why it died. Dropping it here made an eviction unfalsifiable on the runtime
|
|
212
|
+
// where containers actually run.
|
|
213
|
+
await failRun(i, result.error, 'evicted', result.detail ?? null);
|
|
195
214
|
return;
|
|
196
215
|
}
|
|
197
216
|
if (result.kind === 'done' || result.kind === 'noop')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAKnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ExecutionWorkflow.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/ExecutionWorkflow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/worker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.118.0",
|
|
4
4
|
"description": "Reusable Cloudflare Worker library (Hono + D1) exposing the Agent Architecture Board core: the `createApp()` Hono factory, the default fetch/scheduled/queue handler, and the Durable Object + Workflow classes. Deployments (see deploy/backend) supply the wrangler.toml + config and re-export these.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -42,22 +42,22 @@
|
|
|
42
42
|
"pino": "^10.3.1",
|
|
43
43
|
"valibot": "^1.4.2",
|
|
44
44
|
"workers-ai-provider": "^4.0.0",
|
|
45
|
-
"@cat-factory/agents": "0.
|
|
46
|
-
"@cat-factory/
|
|
47
|
-
"@cat-factory/
|
|
48
|
-
"@cat-factory/
|
|
49
|
-
"@cat-factory/
|
|
50
|
-
"@cat-factory/gates": "0.8.
|
|
51
|
-
"@cat-factory/gitlab": "0.13.
|
|
52
|
-
"@cat-factory/integrations": "0.
|
|
53
|
-
"@cat-factory/kernel": "0.
|
|
54
|
-
"@cat-factory/observability-langfuse": "0.9.
|
|
55
|
-
"@cat-factory/observability-otel": "0.4.
|
|
56
|
-
"@cat-factory/orchestration": "0.
|
|
57
|
-
"@cat-factory/prompt-fragments": "0.15.
|
|
58
|
-
"@cat-factory/provider-cloudflare": "0.7.
|
|
59
|
-
"@cat-factory/server": "0.
|
|
60
|
-
"@cat-factory/spend": "0.12.
|
|
45
|
+
"@cat-factory/agents": "0.82.2",
|
|
46
|
+
"@cat-factory/caching": "0.11.10",
|
|
47
|
+
"@cat-factory/contracts": "0.188.0",
|
|
48
|
+
"@cat-factory/eks": "0.1.163",
|
|
49
|
+
"@cat-factory/consensus": "0.12.11",
|
|
50
|
+
"@cat-factory/gates": "0.8.10",
|
|
51
|
+
"@cat-factory/gitlab": "0.13.30",
|
|
52
|
+
"@cat-factory/integrations": "0.109.1",
|
|
53
|
+
"@cat-factory/kernel": "0.182.0",
|
|
54
|
+
"@cat-factory/observability-langfuse": "0.9.7",
|
|
55
|
+
"@cat-factory/observability-otel": "0.4.7",
|
|
56
|
+
"@cat-factory/orchestration": "0.160.0",
|
|
57
|
+
"@cat-factory/prompt-fragments": "0.15.11",
|
|
58
|
+
"@cat-factory/provider-cloudflare": "0.7.316",
|
|
59
|
+
"@cat-factory/server": "0.170.0",
|
|
60
|
+
"@cat-factory/spend": "0.12.111"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@cloudflare/vitest-pool-workers": "^0.18.8",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"typescript": "7.0.2",
|
|
66
66
|
"vitest": "^4.1.10",
|
|
67
67
|
"wrangler": "^4.114.0",
|
|
68
|
-
"@cat-factory/conformance": "0.14.
|
|
68
|
+
"@cat-factory/conformance": "0.14.4"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"build": "tsc -b tsconfig.build.json",
|