@cat-factory/worker 0.128.2 → 0.130.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/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/container-assembly.d.ts +3 -1
- package/dist/infrastructure/container-assembly.d.ts.map +1 -1
- package/dist/infrastructure/container-assembly.js +48 -28
- package/dist/infrastructure/container-assembly.js.map +1 -1
- package/dist/infrastructure/container-shared-services.d.ts +49 -0
- package/dist/infrastructure/container-shared-services.d.ts.map +1 -0
- package/dist/infrastructure/container-shared-services.js +130 -0
- package/dist/infrastructure/container-shared-services.js.map +1 -0
- package/dist/infrastructure/container.d.ts +60 -3
- package/dist/infrastructure/container.d.ts.map +1 -1
- package/dist/infrastructure/container.js +57 -117
- package/dist/infrastructure/container.js.map +1 -1
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.d.ts +2 -0
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.js +20 -4
- package/dist/infrastructure/repositories/D1AgentContextSnapshotRepository.js.map +1 -1
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.d.ts +2 -0
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.js +22 -4
- package/dist/infrastructure/repositories/D1AgentSearchQueryRepository.js.map +1 -1
- package/dist/infrastructure/repositories/D1FoundationalServiceRepository.d.ts +38 -0
- package/dist/infrastructure/repositories/D1FoundationalServiceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/D1FoundationalServiceRepository.js +280 -0
- package/dist/infrastructure/repositories/D1FoundationalServiceRepository.js.map +1 -0
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.d.ts +2 -0
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.js +21 -3
- package/dist/infrastructure/repositories/D1LlmCallMetricRepository.js.map +1 -1
- package/dist/infrastructure/repositories/D1NotificationWebhookRepository.d.ts +5 -1
- package/dist/infrastructure/repositories/D1NotificationWebhookRepository.d.ts.map +1 -1
- package/dist/infrastructure/repositories/D1NotificationWebhookRepository.js +11 -5
- package/dist/infrastructure/repositories/D1NotificationWebhookRepository.js.map +1 -1
- package/dist/infrastructure/workflows/ExecutionWorkflow.d.ts.map +1 -1
- package/dist/infrastructure/workflows/ExecutionWorkflow.js +110 -84
- package/dist/infrastructure/workflows/ExecutionWorkflow.js.map +1 -1
- package/migrations/0072_webhook_run_events.sql +11 -0
- package/migrations/0073_foundational_services.sql +84 -0
- package/package.json +18 -18
|
@@ -49,6 +49,11 @@ function rowToSnapshot(row) {
|
|
|
49
49
|
extras: parseObject(row.extras),
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Statements per `db.batch` in the batch append — small, because one snapshot row is routinely
|
|
54
|
+
* megabytes (the composed prompt plus every injected `.cat-context/*` file's body).
|
|
55
|
+
*/
|
|
56
|
+
const SNAPSHOT_CHUNK_SIZE = 10;
|
|
52
57
|
/**
|
|
53
58
|
* D1-backed sink for agent-context observability. Lives in the dedicated TELEMETRY_DB
|
|
54
59
|
* database (see `telemetry-migrations/`), alongside `llm_call_metrics`.
|
|
@@ -59,13 +64,24 @@ export class D1AgentContextSnapshotRepository {
|
|
|
59
64
|
this.db = db;
|
|
60
65
|
}
|
|
61
66
|
async record(snapshot) {
|
|
62
|
-
await this.
|
|
67
|
+
await this.insertStatement(snapshot, false).run();
|
|
68
|
+
}
|
|
69
|
+
async recordMany(snapshots) {
|
|
70
|
+
// One `batch` per chunk (a single round trip each) — never a `record` loop. Chunked SMALL:
|
|
71
|
+
// one snapshot row carries the whole composed prompt plus every injected context file's body.
|
|
72
|
+
// Idempotent by id (see the port) because the ingest retries a chunk whose ack was lost.
|
|
73
|
+
const statements = snapshots.map((snapshot) => this.insertStatement(snapshot, true));
|
|
74
|
+
for (let i = 0; i < statements.length; i += SNAPSHOT_CHUNK_SIZE) {
|
|
75
|
+
await this.db.batch(statements.slice(i, i + SNAPSHOT_CHUNK_SIZE));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
insertStatement(snapshot, ignoreDuplicateId) {
|
|
79
|
+
return this.db
|
|
63
80
|
.prepare(`INSERT INTO agent_context_snapshots
|
|
64
81
|
(id, workspace_id, execution_id, agent_kind, step_index, created_at,
|
|
65
82
|
model, harness, system_prompt, user_prompt, fragments, context_files, extras)
|
|
66
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
67
|
-
.bind(snapshot.id, snapshot.workspaceId, snapshot.executionId, snapshot.agentKind, snapshot.stepIndex, snapshot.createdAt, snapshot.model, snapshot.harness, snapshot.systemPrompt, snapshot.userPrompt, JSON.stringify(snapshot.fragments), JSON.stringify(snapshot.contextFiles), JSON.stringify(snapshot.extras))
|
|
68
|
-
.run();
|
|
83
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)${ignoreDuplicateId ? ' ON CONFLICT(id) DO NOTHING' : ''}`)
|
|
84
|
+
.bind(snapshot.id, snapshot.workspaceId, snapshot.executionId, snapshot.agentKind, snapshot.stepIndex, snapshot.createdAt, snapshot.model, snapshot.harness, snapshot.systemPrompt, snapshot.userPrompt, JSON.stringify(snapshot.fragments), JSON.stringify(snapshot.contextFiles), JSON.stringify(snapshot.extras));
|
|
69
85
|
}
|
|
70
86
|
async listByExecution(workspaceId, executionId) {
|
|
71
87
|
const { results } = await this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1AgentContextSnapshotRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1AgentContextSnapshotRepository.ts"],"names":[],"mappings":"AA0BA,SAAS,UAAU,CAAI,IAAY;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAA;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAc,CAAC,CAAC,CAAC,EAAE,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAA;QAC1C,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnE,CAAC,CAAE,MAAkC;YACrC,CAAC,CAAC,EAAE,CAAA;IACR,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAeD,SAAS,UAAU,CAAC,GAAa;IAC/B,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC;QAC/C,eAAe,EAAE,GAAG,CAAC,iBAAiB,IAAI,CAAC;QAC3C,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,CAAC;QACxC,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,IAAI,CAAC;KAChD,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAgB;IACrC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,SAAS,EAAE,UAAU,CAAuB,GAAG,CAAC,SAAS,CAAC;QAC1D,YAAY,EAAE,UAAU,CAAmB,GAAG,CAAC,aAAa,CAAC;QAC7D,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;KAChC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,gCAAgC;IAC1B,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAA8B;QACzC,MAAM,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"D1AgentContextSnapshotRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1AgentContextSnapshotRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export declare class D1AgentSearchQueryRepository implements AgentSearchQueryRep
|
|
|
11
11
|
db: D1Database;
|
|
12
12
|
});
|
|
13
13
|
record(query: AgentSearchQuery): Promise<void>;
|
|
14
|
+
recordMany(queries: AgentSearchQuery[]): Promise<void>;
|
|
15
|
+
private insertStatement;
|
|
14
16
|
listByExecution(workspaceId: string, executionId: string): Promise<AgentSearchQuery[]>;
|
|
15
17
|
listPage(workspaceId: string, query: AgentSearchQueryPageQuery): Promise<AgentSearchQuery[]>;
|
|
16
18
|
countByExecution(workspaceId: string, executionId: string): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1AgentSearchQueryRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1AgentSearchQueryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"D1AgentSearchQueryRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1AgentSearchQueryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAiC3D;;;;GAIG;AACH,qBAAa,4BAA6B,YAAW,0BAA0B;IAC7E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnD;IAEK,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3D;IAED,OAAO,CAAC,eAAe;IAmBjB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAU3F;IAEK,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoB7B;IAEK,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhF;IAEK,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtD;CACF"}
|
|
@@ -12,6 +12,11 @@ function rowToQuery(row) {
|
|
|
12
12
|
createdAt: row.created_at,
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Statements per `db.batch` in the batch append. D1 executes a batch in one round trip as an
|
|
17
|
+
* implicit transaction; chunking keeps a long run's ingest off any single-request ceiling.
|
|
18
|
+
*/
|
|
19
|
+
const INSERT_CHUNK_SIZE = 50;
|
|
15
20
|
/**
|
|
16
21
|
* D1-backed sink for agent-search-query observability. Lives in the dedicated
|
|
17
22
|
* TELEMETRY_DB database (see `telemetry-migrations/`), alongside `llm_call_metrics`
|
|
@@ -23,12 +28,25 @@ export class D1AgentSearchQueryRepository {
|
|
|
23
28
|
this.db = db;
|
|
24
29
|
}
|
|
25
30
|
async record(query) {
|
|
26
|
-
await this.
|
|
31
|
+
await this.insertStatement(query, false).run();
|
|
32
|
+
}
|
|
33
|
+
async recordMany(queries) {
|
|
34
|
+
// One `batch` per chunk — a single round trip and one implicit transaction each — never a
|
|
35
|
+
// `record` loop (the banned N+1 write). D1 caps bound parameters per statement, so a batch of
|
|
36
|
+
// single-row statements is the portable shape here rather than one multi-row VALUES.
|
|
37
|
+
// Idempotent by id (see the port): the mothership-mode telemetry ingest retries a chunk whose
|
|
38
|
+
// ack was lost, and one duplicate must not abort the rest of the batch.
|
|
39
|
+
const statements = queries.map((query) => this.insertStatement(query, true));
|
|
40
|
+
for (let i = 0; i < statements.length; i += INSERT_CHUNK_SIZE) {
|
|
41
|
+
await this.db.batch(statements.slice(i, i + INSERT_CHUNK_SIZE));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
insertStatement(query, ignoreDuplicateId) {
|
|
45
|
+
return this.db
|
|
27
46
|
.prepare(`INSERT INTO agent_search_queries
|
|
28
47
|
(id, workspace_id, execution_id, agent_kind, provider, query, result_count, created_at)
|
|
29
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
30
|
-
.bind(query.id, query.workspaceId, query.executionId, query.agentKind, query.provider, query.query, query.resultCount, query.createdAt)
|
|
31
|
-
.run();
|
|
48
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)${ignoreDuplicateId ? ' ON CONFLICT(id) DO NOTHING' : ''}`)
|
|
49
|
+
.bind(query.id, query.workspaceId, query.executionId, query.agentKind, query.provider, query.query, query.resultCount, query.createdAt);
|
|
32
50
|
}
|
|
33
51
|
async listByExecution(workspaceId, executionId) {
|
|
34
52
|
const { results } = await this.db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1AgentSearchQueryRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1AgentSearchQueryRepository.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAc5D,SAAS,UAAU,CAAC,GAAmB;IACrC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,kFAAkF;QAClF,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACjE,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,4BAA4B;IACtB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAuB;QAClC,MAAM,IAAI,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"D1AgentSearchQueryRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1AgentSearchQueryRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { FoundationalServiceOwnerKind } from '@cat-factory/contracts';
|
|
2
|
+
import type { ApiContractManifestEntry, ApiContractRecord, ApiContractRepository, FoundationalServiceRecord, FoundationalServiceRepository, FoundationalServiceSourceRecord, FoundationalServiceSourceRepository } from '@cat-factory/kernel';
|
|
3
|
+
import type { D1Database } from '@cloudflare/workers-types';
|
|
4
|
+
export declare class D1FoundationalServiceRepository implements FoundationalServiceRepository {
|
|
5
|
+
private readonly db;
|
|
6
|
+
constructor({ db }: {
|
|
7
|
+
db: D1Database;
|
|
8
|
+
});
|
|
9
|
+
listByOwner(ownerKind: FoundationalServiceOwnerKind, ownerId: string, includeDeleted?: boolean): Promise<FoundationalServiceRecord[]>;
|
|
10
|
+
get(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceId: string): Promise<FoundationalServiceRecord | null>;
|
|
11
|
+
upsert(record: FoundationalServiceRecord): Promise<void>;
|
|
12
|
+
softDelete(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceId: string, at: number): Promise<void>;
|
|
13
|
+
listBySource(sourceId: string): Promise<FoundationalServiceRecord[]>;
|
|
14
|
+
softDeleteBySource(sourceId: string, at: number): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare class D1ApiContractRepository implements ApiContractRepository {
|
|
17
|
+
private readonly db;
|
|
18
|
+
constructor({ db }: {
|
|
19
|
+
db: D1Database;
|
|
20
|
+
});
|
|
21
|
+
listManifestByOwner(ownerKind: FoundationalServiceOwnerKind, ownerId: string): Promise<ApiContractManifestEntry[]>;
|
|
22
|
+
listByServiceIds(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceIds: string[]): Promise<ApiContractRecord[]>;
|
|
23
|
+
replaceForService(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceId: string, contracts: ApiContractRecord[]): Promise<void>;
|
|
24
|
+
deleteForService(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceId: string): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export declare class D1FoundationalServiceSourceRepository implements FoundationalServiceSourceRepository {
|
|
27
|
+
private readonly db;
|
|
28
|
+
constructor({ db }: {
|
|
29
|
+
db: D1Database;
|
|
30
|
+
});
|
|
31
|
+
listByOwner(ownerKind: FoundationalServiceOwnerKind, ownerId: string): Promise<FoundationalServiceSourceRecord[]>;
|
|
32
|
+
get(id: string): Promise<FoundationalServiceSourceRecord | null>;
|
|
33
|
+
upsert(record: FoundationalServiceSourceRecord): Promise<void>;
|
|
34
|
+
updateSyncState(id: string, lastSyncedCommit: string | null, lastSyncedAt: number): Promise<void>;
|
|
35
|
+
softDelete(id: string, at: number): Promise<void>;
|
|
36
|
+
listStale(staleBefore: number, limit: number): Promise<FoundationalServiceSourceRecord[]>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=D1FoundationalServiceRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"D1FoundationalServiceRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1FoundationalServiceRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
// D1-backed stores for the foundational-services catalog (migration 0073). The Drizzle mirrors
|
|
2
|
+
// live in `runtimes/node/src/repositories/foundationalServices.ts`; the two are kept honest by
|
|
3
|
+
// the conformance suite's foundational-services assertions.
|
|
4
|
+
/**
|
|
5
|
+
* How many service ids ride ONE `IN (…)` of the lazy contract read. D1 binds parameters
|
|
6
|
+
* positionally with a per-statement ceiling, so a design that declared many services is chunked
|
|
7
|
+
* rather than issued as a query per id (which is the banned N+1) or as one over-long statement.
|
|
8
|
+
*/
|
|
9
|
+
const ID_CHUNK = 50;
|
|
10
|
+
function toServiceRecord(row) {
|
|
11
|
+
return {
|
|
12
|
+
serviceId: row.service_id,
|
|
13
|
+
ownerKind: row.owner_kind,
|
|
14
|
+
ownerId: row.owner_id,
|
|
15
|
+
name: row.name,
|
|
16
|
+
summary: row.summary,
|
|
17
|
+
description: row.description,
|
|
18
|
+
capabilities: parseStringArray(row.capabilities),
|
|
19
|
+
sourceId: row.source_id,
|
|
20
|
+
sourcePath: row.source_path,
|
|
21
|
+
pinnedCommit: row.pinned_commit,
|
|
22
|
+
createdAt: row.created_at,
|
|
23
|
+
updatedAt: row.updated_at,
|
|
24
|
+
deletedAt: row.deleted_at,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A JSON `string[]` column, read LENIENTLY. A malformed value degrades to `[]` rather than
|
|
29
|
+
* throwing: these columns are written only by our own repos, so a bad value means a hand edit or
|
|
30
|
+
* a partially-applied migration, and failing the whole catalog read over one row's tags would
|
|
31
|
+
* take down every design dispatch in the workspace.
|
|
32
|
+
*/
|
|
33
|
+
function parseStringArray(value) {
|
|
34
|
+
if (!value)
|
|
35
|
+
return [];
|
|
36
|
+
try {
|
|
37
|
+
const parsed = JSON.parse(value);
|
|
38
|
+
return Array.isArray(parsed) ? parsed.filter((v) => typeof v === 'string') : [];
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// silent-catch-ok: see the note above — a malformed tag list reads as no tags, and the row
|
|
42
|
+
// it belongs to is still served.
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export class D1FoundationalServiceRepository {
|
|
47
|
+
db;
|
|
48
|
+
constructor({ db }) {
|
|
49
|
+
this.db = db;
|
|
50
|
+
}
|
|
51
|
+
async listByOwner(ownerKind, ownerId, includeDeleted = false) {
|
|
52
|
+
const where = includeDeleted ? '' : ' AND deleted_at IS NULL';
|
|
53
|
+
const { results } = await this.db
|
|
54
|
+
.prepare(`SELECT * FROM foundational_services WHERE owner_kind = ? AND owner_id = ?${where} ORDER BY service_id`)
|
|
55
|
+
.bind(ownerKind, ownerId)
|
|
56
|
+
.all();
|
|
57
|
+
return results.map(toServiceRecord);
|
|
58
|
+
}
|
|
59
|
+
async get(ownerKind, ownerId, serviceId) {
|
|
60
|
+
const row = await this.db
|
|
61
|
+
.prepare('SELECT * FROM foundational_services WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
|
|
62
|
+
.bind(ownerKind, ownerId, serviceId)
|
|
63
|
+
.first();
|
|
64
|
+
return row ? toServiceRecord(row) : null;
|
|
65
|
+
}
|
|
66
|
+
async upsert(record) {
|
|
67
|
+
await this.db
|
|
68
|
+
.prepare(`INSERT INTO foundational_services
|
|
69
|
+
(service_id, owner_kind, owner_id, name, summary, description, capabilities,
|
|
70
|
+
source_id, source_path, pinned_commit, created_at, updated_at, deleted_at)
|
|
71
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
72
|
+
ON CONFLICT (owner_kind, owner_id, service_id) DO UPDATE SET
|
|
73
|
+
name = excluded.name,
|
|
74
|
+
summary = excluded.summary,
|
|
75
|
+
description = excluded.description,
|
|
76
|
+
capabilities = excluded.capabilities,
|
|
77
|
+
source_id = excluded.source_id,
|
|
78
|
+
source_path = excluded.source_path,
|
|
79
|
+
pinned_commit = excluded.pinned_commit,
|
|
80
|
+
updated_at = excluded.updated_at,
|
|
81
|
+
deleted_at = excluded.deleted_at`)
|
|
82
|
+
.bind(record.serviceId, record.ownerKind, record.ownerId, record.name, record.summary, record.description, JSON.stringify(record.capabilities), record.sourceId, record.sourcePath, record.pinnedCommit, record.createdAt, record.updatedAt, record.deletedAt)
|
|
83
|
+
.run();
|
|
84
|
+
}
|
|
85
|
+
async softDelete(ownerKind, ownerId, serviceId, at) {
|
|
86
|
+
await this.db
|
|
87
|
+
.prepare('UPDATE foundational_services SET deleted_at = ?, updated_at = ? WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
|
|
88
|
+
.bind(at, at, ownerKind, ownerId, serviceId)
|
|
89
|
+
.run();
|
|
90
|
+
}
|
|
91
|
+
async listBySource(sourceId) {
|
|
92
|
+
const { results } = await this.db
|
|
93
|
+
.prepare('SELECT * FROM foundational_services WHERE source_id = ? AND deleted_at IS NULL ORDER BY service_id')
|
|
94
|
+
.bind(sourceId)
|
|
95
|
+
.all();
|
|
96
|
+
return results.map(toServiceRecord);
|
|
97
|
+
}
|
|
98
|
+
async softDeleteBySource(sourceId, at) {
|
|
99
|
+
await this.db
|
|
100
|
+
.prepare('UPDATE foundational_services SET deleted_at = ?, updated_at = ? WHERE source_id = ? AND deleted_at IS NULL')
|
|
101
|
+
.bind(at, at, sourceId)
|
|
102
|
+
.run();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export class D1ApiContractRepository {
|
|
106
|
+
db;
|
|
107
|
+
constructor({ db }) {
|
|
108
|
+
this.db = db;
|
|
109
|
+
}
|
|
110
|
+
async listManifestByOwner(ownerKind, ownerId) {
|
|
111
|
+
// `length(body)` rather than `body`: the whole point of the manifest is that a catalog read
|
|
112
|
+
// never transfers a document. SQLite's `length()` on TEXT counts characters, which is what
|
|
113
|
+
// the size is compared against everywhere else (`body.length` in JS).
|
|
114
|
+
const { results } = await this.db
|
|
115
|
+
.prepare(`SELECT service_id, contract_id, format, title, length(body) AS size,
|
|
116
|
+
operations, omitted_operations, source_path
|
|
117
|
+
FROM api_contracts
|
|
118
|
+
WHERE owner_kind = ? AND owner_id = ?
|
|
119
|
+
ORDER BY service_id, contract_id`)
|
|
120
|
+
.bind(ownerKind, ownerId)
|
|
121
|
+
.all();
|
|
122
|
+
return results.map((row) => ({
|
|
123
|
+
serviceId: row.service_id,
|
|
124
|
+
contractId: row.contract_id,
|
|
125
|
+
format: row.format,
|
|
126
|
+
title: row.title,
|
|
127
|
+
size: row.size,
|
|
128
|
+
operations: parseStringArray(row.operations),
|
|
129
|
+
omittedOperations: row.omitted_operations,
|
|
130
|
+
sourcePath: row.source_path,
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
async listByServiceIds(ownerKind, ownerId, serviceIds) {
|
|
134
|
+
const ids = [...new Set(serviceIds)].filter(Boolean);
|
|
135
|
+
if (ids.length === 0)
|
|
136
|
+
return [];
|
|
137
|
+
const out = [];
|
|
138
|
+
for (let i = 0; i < ids.length; i += ID_CHUNK) {
|
|
139
|
+
const chunk = ids.slice(i, i + ID_CHUNK);
|
|
140
|
+
const placeholders = chunk.map(() => '?').join(', ');
|
|
141
|
+
const { results } = await this.db
|
|
142
|
+
.prepare(`SELECT * FROM api_contracts
|
|
143
|
+
WHERE owner_kind = ? AND owner_id = ? AND service_id IN (${placeholders})
|
|
144
|
+
ORDER BY service_id, contract_id`)
|
|
145
|
+
.bind(ownerKind, ownerId, ...chunk)
|
|
146
|
+
.all();
|
|
147
|
+
for (const row of results)
|
|
148
|
+
out.push(toContractRecord(row));
|
|
149
|
+
}
|
|
150
|
+
return out;
|
|
151
|
+
}
|
|
152
|
+
async replaceForService(ownerKind, ownerId, serviceId, contracts) {
|
|
153
|
+
// One BATCH so the delete and the inserts land together: a reader between the two would
|
|
154
|
+
// otherwise see a service whose contracts had vanished, which the catalog renders as a
|
|
155
|
+
// service with no interface rather than as a write in progress.
|
|
156
|
+
const statements = [
|
|
157
|
+
this.db
|
|
158
|
+
.prepare('DELETE FROM api_contracts WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
|
|
159
|
+
.bind(ownerKind, ownerId, serviceId),
|
|
160
|
+
...contracts.map((contract) => this.db
|
|
161
|
+
.prepare(`INSERT INTO api_contracts
|
|
162
|
+
(owner_kind, owner_id, service_id, contract_id, format, title, body,
|
|
163
|
+
operations, omitted_operations, source_path, source_sha, created_at, updated_at)
|
|
164
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
165
|
+
.bind(ownerKind, ownerId, serviceId, contract.contractId, contract.format, contract.title, contract.body, JSON.stringify(contract.operations), contract.omittedOperations, contract.sourcePath, contract.sourceSha, contract.createdAt, contract.updatedAt)),
|
|
166
|
+
];
|
|
167
|
+
await this.db.batch(statements);
|
|
168
|
+
}
|
|
169
|
+
async deleteForService(ownerKind, ownerId, serviceId) {
|
|
170
|
+
await this.db
|
|
171
|
+
.prepare('DELETE FROM api_contracts WHERE owner_kind = ? AND owner_id = ? AND service_id = ?')
|
|
172
|
+
.bind(ownerKind, ownerId, serviceId)
|
|
173
|
+
.run();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function toContractRecord(row) {
|
|
177
|
+
return {
|
|
178
|
+
ownerKind: row.owner_kind,
|
|
179
|
+
ownerId: row.owner_id,
|
|
180
|
+
serviceId: row.service_id,
|
|
181
|
+
contractId: row.contract_id,
|
|
182
|
+
format: row.format,
|
|
183
|
+
title: row.title,
|
|
184
|
+
body: row.body,
|
|
185
|
+
operations: parseStringArray(row.operations),
|
|
186
|
+
omittedOperations: row.omitted_operations,
|
|
187
|
+
sourcePath: row.source_path,
|
|
188
|
+
sourceSha: row.source_sha,
|
|
189
|
+
createdAt: row.created_at,
|
|
190
|
+
updatedAt: row.updated_at,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function toSourceRecord(row) {
|
|
194
|
+
return {
|
|
195
|
+
id: row.id,
|
|
196
|
+
ownerKind: row.owner_kind,
|
|
197
|
+
ownerId: row.owner_id,
|
|
198
|
+
repoOwner: row.repo_owner,
|
|
199
|
+
repoName: row.repo_name,
|
|
200
|
+
gitRef: row.git_ref,
|
|
201
|
+
mode: row.mode,
|
|
202
|
+
dirPath: row.dir_path,
|
|
203
|
+
filePaths: parseStringArray(row.file_paths),
|
|
204
|
+
serviceId: row.service_id,
|
|
205
|
+
serviceName: row.service_name,
|
|
206
|
+
serviceSummary: row.service_summary,
|
|
207
|
+
lastSyncedCommit: row.last_synced_commit,
|
|
208
|
+
lastSyncedAt: row.last_synced_at,
|
|
209
|
+
createdAt: row.created_at,
|
|
210
|
+
deletedAt: row.deleted_at,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
export class D1FoundationalServiceSourceRepository {
|
|
214
|
+
db;
|
|
215
|
+
constructor({ db }) {
|
|
216
|
+
this.db = db;
|
|
217
|
+
}
|
|
218
|
+
async listByOwner(ownerKind, ownerId) {
|
|
219
|
+
const { results } = await this.db
|
|
220
|
+
.prepare('SELECT * FROM foundational_service_sources WHERE owner_kind = ? AND owner_id = ? AND deleted_at IS NULL ORDER BY created_at DESC')
|
|
221
|
+
.bind(ownerKind, ownerId)
|
|
222
|
+
.all();
|
|
223
|
+
return results.map(toSourceRecord);
|
|
224
|
+
}
|
|
225
|
+
async get(id) {
|
|
226
|
+
const row = await this.db
|
|
227
|
+
.prepare('SELECT * FROM foundational_service_sources WHERE id = ?')
|
|
228
|
+
.bind(id)
|
|
229
|
+
.first();
|
|
230
|
+
return row ? toSourceRecord(row) : null;
|
|
231
|
+
}
|
|
232
|
+
async upsert(record) {
|
|
233
|
+
await this.db
|
|
234
|
+
.prepare(`INSERT INTO foundational_service_sources
|
|
235
|
+
(id, owner_kind, owner_id, repo_owner, repo_name, git_ref, mode, dir_path, file_paths,
|
|
236
|
+
service_id, service_name, service_summary, last_synced_commit, last_synced_at,
|
|
237
|
+
created_at, deleted_at)
|
|
238
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
239
|
+
ON CONFLICT (id) DO UPDATE SET
|
|
240
|
+
repo_owner = excluded.repo_owner,
|
|
241
|
+
repo_name = excluded.repo_name,
|
|
242
|
+
git_ref = excluded.git_ref,
|
|
243
|
+
mode = excluded.mode,
|
|
244
|
+
dir_path = excluded.dir_path,
|
|
245
|
+
file_paths = excluded.file_paths,
|
|
246
|
+
service_id = excluded.service_id,
|
|
247
|
+
service_name = excluded.service_name,
|
|
248
|
+
service_summary = excluded.service_summary,
|
|
249
|
+
last_synced_commit = excluded.last_synced_commit,
|
|
250
|
+
last_synced_at = excluded.last_synced_at,
|
|
251
|
+
deleted_at = excluded.deleted_at`)
|
|
252
|
+
.bind(record.id, record.ownerKind, record.ownerId, record.repoOwner, record.repoName, record.gitRef, record.mode, record.dirPath, JSON.stringify(record.filePaths), record.serviceId, record.serviceName, record.serviceSummary, record.lastSyncedCommit, record.lastSyncedAt, record.createdAt, record.deletedAt)
|
|
253
|
+
.run();
|
|
254
|
+
}
|
|
255
|
+
async updateSyncState(id, lastSyncedCommit, lastSyncedAt) {
|
|
256
|
+
await this.db
|
|
257
|
+
.prepare('UPDATE foundational_service_sources SET last_synced_commit = ?, last_synced_at = ? WHERE id = ?')
|
|
258
|
+
.bind(lastSyncedCommit, lastSyncedAt, id)
|
|
259
|
+
.run();
|
|
260
|
+
}
|
|
261
|
+
async softDelete(id, at) {
|
|
262
|
+
await this.db
|
|
263
|
+
.prepare('UPDATE foundational_service_sources SET deleted_at = ? WHERE id = ?')
|
|
264
|
+
.bind(at, id)
|
|
265
|
+
.run();
|
|
266
|
+
}
|
|
267
|
+
async listStale(staleBefore, limit) {
|
|
268
|
+
// `last_synced_at IS NULL` first: a source linked but never synced is the stalest thing there
|
|
269
|
+
// is, and ordering by a nullable column alone would sort it unpredictably across engines.
|
|
270
|
+
const { results } = await this.db
|
|
271
|
+
.prepare(`SELECT * FROM foundational_service_sources
|
|
272
|
+
WHERE deleted_at IS NULL AND (last_synced_at IS NULL OR last_synced_at < ?)
|
|
273
|
+
ORDER BY (last_synced_at IS NULL) DESC, last_synced_at ASC
|
|
274
|
+
LIMIT ?`)
|
|
275
|
+
.bind(staleBefore, limit)
|
|
276
|
+
.all();
|
|
277
|
+
return results.map(toSourceRecord);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=D1FoundationalServiceRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"D1FoundationalServiceRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1FoundationalServiceRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export declare class D1LlmCallMetricRepository implements LlmCallMetricRepositor
|
|
|
7
7
|
db: D1Database;
|
|
8
8
|
});
|
|
9
9
|
record(metric: LlmCallMetric): Promise<void>;
|
|
10
|
+
recordMany(metrics: LlmCallMetric[]): Promise<void>;
|
|
11
|
+
private insertStatement;
|
|
10
12
|
latestChainTip(workspaceId: string, executionId: string, agentKind: string): Promise<LlmPromptChainTip | null>;
|
|
11
13
|
listByExecution(workspaceId: string, executionId: string, limit?: number, agentKind?: string): Promise<LlmCallMetric[]>;
|
|
12
14
|
listPage(workspaceId: string, query: LlmCallPageQuery): Promise<LlmCallMetricPage[]>;
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAiT3D,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,CAWjD;IAEK,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxD;IAED,OAAO,CAAC,eAAe;IA+CjB,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,CA2BjC;IAEK,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtD;CACF"}
|
|
@@ -217,6 +217,11 @@ function rowToPage(row) {
|
|
|
217
217
|
reasoning: withMatch({ text: row.reasoning_text, totalChars: row.reasoning_chars ?? 0 }, row.reasoning_match),
|
|
218
218
|
};
|
|
219
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* Statements per `db.batch` in the batch append. D1 executes a batch in one round trip as an
|
|
222
|
+
* implicit transaction; chunking keeps a long run's ingest off any single-request ceiling.
|
|
223
|
+
*/
|
|
224
|
+
const INSERT_CHUNK_SIZE = 50;
|
|
220
225
|
/** D1-backed sink for LLM observability (see migration 0026). */
|
|
221
226
|
export class D1LlmCallMetricRepository {
|
|
222
227
|
db;
|
|
@@ -233,7 +238,21 @@ export class D1LlmCallMetricRepository {
|
|
|
233
238
|
// violations, so a malformed metric would vanish here while still throwing on Postgres.
|
|
234
239
|
// This mirrors the Drizzle repo's `onConflictDoNothing({ target: id })` exactly — only a
|
|
235
240
|
// duplicate id is ignored.
|
|
236
|
-
await this.
|
|
241
|
+
await this.insertStatement(metric).run();
|
|
242
|
+
}
|
|
243
|
+
async recordMany(metrics) {
|
|
244
|
+
// One `batch` per chunk — a single round trip and one implicit transaction each — never a
|
|
245
|
+
// `record` loop (the banned N+1 write). D1 caps bound parameters per statement, so a batch of
|
|
246
|
+
// single-row statements is the portable shape rather than one multi-row VALUES. Same
|
|
247
|
+
// first-write-wins-by-id semantics as `record`, which is what lets the mothership-mode
|
|
248
|
+
// telemetry ingest retry a chunk whose ack was lost.
|
|
249
|
+
const statements = metrics.map((metric) => this.insertStatement(metric));
|
|
250
|
+
for (let i = 0; i < statements.length; i += INSERT_CHUNK_SIZE) {
|
|
251
|
+
await this.db.batch(statements.slice(i, i + INSERT_CHUNK_SIZE));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
insertStatement(metric) {
|
|
255
|
+
return this.db
|
|
237
256
|
.prepare(`INSERT INTO llm_call_metrics
|
|
238
257
|
(id, workspace_id, execution_id, agent_kind, provider, model, created_at,
|
|
239
258
|
streaming, phase, turn_index, message_count, tool_count, request_max_tokens,
|
|
@@ -243,8 +262,7 @@ export class D1LlmCallMetricRepository {
|
|
|
243
262
|
prompt_text, prompt_prefix_count, prompt_hash, response_text, reasoning_text)
|
|
244
263
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
245
264
|
ON CONFLICT(id) DO NOTHING`)
|
|
246
|
-
.bind(metric.id, metric.workspaceId, metric.executionId, metric.agentKind, metric.provider, metric.model, metric.createdAt, metric.streaming ? 1 : 0, metric.phase, metric.turnIndex, metric.messageCount, metric.toolCount, metric.requestMaxTokens, metric.promptTokens, metric.cacheReadTokens, metric.cacheWriteTokens, metric.completionTokens, metric.totalTokens, metric.finishReason, metric.upstreamMs, metric.overheadMs, metric.totalMs, metric.ok ? 1 : 0, metric.httpStatus, metric.errorMessage, metric.promptText, metric.promptPrefixCount, metric.promptHash, metric.responseText, metric.reasoningText)
|
|
247
|
-
.run();
|
|
265
|
+
.bind(metric.id, metric.workspaceId, metric.executionId, metric.agentKind, metric.provider, metric.model, metric.createdAt, metric.streaming ? 1 : 0, metric.phase, metric.turnIndex, metric.messageCount, metric.toolCount, metric.requestMaxTokens, metric.promptTokens, metric.cacheReadTokens, metric.cacheWriteTokens, metric.completionTokens, metric.totalTokens, metric.finishReason, metric.upstreamMs, metric.overheadMs, metric.totalMs, metric.ok ? 1 : 0, metric.httpStatus, metric.errorMessage, metric.promptText, metric.promptPrefixCount, metric.promptHash, metric.responseText, metric.reasoningText);
|
|
248
266
|
}
|
|
249
267
|
async latestChainTip(workspaceId, executionId, agentKind) {
|
|
250
268
|
// The newest call for the conversation; one indexed row, no text columns.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1LlmCallMetricRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LlmCallMetricRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"D1LlmCallMetricRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1LlmCallMetricRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { NotificationWebhookRecord, NotificationWebhookRepository } from '@cat-factory/kernel';
|
|
2
2
|
import type { D1Database } from '@cloudflare/workers-types';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* A workspace's outbound webhook, one row per workspace (migration 0061; `run_events` added in
|
|
5
|
+
* 0072). Both JSON filter columns are decoded through the SHARED parsers the Drizzle repo uses,
|
|
6
|
+
* so the columns can't drift between runtimes.
|
|
7
|
+
*/
|
|
4
8
|
export declare class D1NotificationWebhookRepository implements NotificationWebhookRepository {
|
|
5
9
|
private readonly db;
|
|
6
10
|
constructor({ db }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D1NotificationWebhookRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1NotificationWebhookRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"D1NotificationWebhookRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1NotificationWebhookRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAa3D;;;;GAIG;AACH,qBAAa,+BAAgC,YAAW,6BAA6B;IACnF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAexE;IAEK,GAAG,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1D;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/C;CACF"}
|