@cat-factory/local-server 0.94.2 → 0.96.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 +5 -0
- package/dist/container.js.map +1 -1
- package/dist/deployImage.d.ts +1 -1
- package/dist/deployImage.js +1 -1
- package/dist/harnessImage.d.ts +1 -1
- package/dist/harnessImage.js +1 -1
- package/dist/mothership.d.ts +12 -1
- package/dist/mothership.d.ts.map +1 -1
- package/dist/mothership.js +27 -4
- package/dist/mothership.js.map +1 -1
- package/dist/server.js +16 -1
- package/dist/server.js.map +1 -1
- package/dist/sqlite/telemetryCoverage.d.ts +58 -0
- package/dist/sqlite/telemetryCoverage.d.ts.map +1 -0
- package/dist/sqlite/telemetryCoverage.js +89 -0
- package/dist/sqlite/telemetryCoverage.js.map +1 -0
- package/dist/sqlite/telemetryStore.d.ts +7 -1
- package/dist/sqlite/telemetryStore.d.ts.map +1 -1
- package/dist/sqlite/telemetryStore.js +77 -6
- package/dist/sqlite/telemetryStore.js.map +1 -1
- package/dist/telemetryReadThrough.d.ts +33 -0
- package/dist/telemetryReadThrough.d.ts.map +1 -0
- package/dist/telemetryReadThrough.js +296 -0
- package/dist/telemetryReadThrough.js.map +1 -0
- package/dist/telemetryRetention.d.ts +2 -0
- package/dist/telemetryRetention.d.ts.map +1 -1
- package/dist/telemetryRetention.js +7 -0
- package/dist/telemetryRetention.js.map +1 -1
- package/package.json +13 -13
|
@@ -3,6 +3,7 @@ import { subscriptionVendorSchema } from '@cat-factory/contracts';
|
|
|
3
3
|
import { decodeEnum } from '@cat-factory/server';
|
|
4
4
|
import { openSqliteDb } from './db.js';
|
|
5
5
|
import { SqliteTelemetryIngestReader, } from './telemetryIngestReader.js';
|
|
6
|
+
import { TELEMETRY_COVERAGE_SCHEMA, SqliteTelemetryCoverage, } from './telemetryCoverage.js';
|
|
6
7
|
import { rowToMetric, rowToQuery, rowToSnapshot, } from './telemetryRows.js';
|
|
7
8
|
// The mothership-mode LOCAL telemetry store (docs/initiatives/mothership-mode.md, PR 5).
|
|
8
9
|
//
|
|
@@ -291,12 +292,15 @@ CREATE TABLE IF NOT EXISTS telemetry_ingest_state (
|
|
|
291
292
|
ingested_at INTEGER NOT NULL,
|
|
292
293
|
PRIMARY KEY (workspace_id, execution_id)
|
|
293
294
|
);
|
|
295
|
+
${TELEMETRY_COVERAGE_SCHEMA}
|
|
294
296
|
`;
|
|
295
297
|
/** The per-call LLM telemetry sink — the local-sqlite mirror of `D1LlmCallMetricRepository`. */
|
|
296
298
|
class SqliteLlmCallMetricRepository {
|
|
297
299
|
db;
|
|
298
|
-
|
|
300
|
+
coverage;
|
|
301
|
+
constructor(db, coverage) {
|
|
299
302
|
this.db = db;
|
|
303
|
+
this.coverage = coverage;
|
|
300
304
|
}
|
|
301
305
|
async record(metric) {
|
|
302
306
|
this.insert(metric);
|
|
@@ -369,6 +373,28 @@ class SqliteLlmCallMetricRepository {
|
|
|
369
373
|
.all(workspaceId, executionId, agentKind ?? null, agentKind ?? null, limit ?? -1);
|
|
370
374
|
return rows.map(rowToMetric);
|
|
371
375
|
}
|
|
376
|
+
async listRunPage(workspaceId, query) {
|
|
377
|
+
const clauses = ['workspace_id = ?', 'execution_id = ?'];
|
|
378
|
+
const binds = [workspaceId, query.executionId];
|
|
379
|
+
if (query.agentKind != null) {
|
|
380
|
+
clauses.push('agent_kind = ?');
|
|
381
|
+
binds.push(query.agentKind);
|
|
382
|
+
}
|
|
383
|
+
if (query.cursor) {
|
|
384
|
+
// Composite keyset matching the ORDER BY, for the same reason `listPage`'s is composite.
|
|
385
|
+
clauses.push('(created_at < ? OR (created_at = ? AND id < ?))');
|
|
386
|
+
binds.push(query.cursor.createdAt, query.cursor.createdAt, query.cursor.id);
|
|
387
|
+
}
|
|
388
|
+
binds.push(query.limit);
|
|
389
|
+
// `SELECT *` — the bodies WHOLE, unlike `listPage`, which returns slices plus their lengths.
|
|
390
|
+
const rows = this.db
|
|
391
|
+
.prepare(`SELECT * FROM llm_call_metrics
|
|
392
|
+
WHERE ${clauses.join(' AND ')}
|
|
393
|
+
ORDER BY created_at DESC, id DESC
|
|
394
|
+
LIMIT ?`)
|
|
395
|
+
.all(...binds);
|
|
396
|
+
return rows.map(rowToMetric);
|
|
397
|
+
}
|
|
372
398
|
async listPage(workspaceId, query) {
|
|
373
399
|
const ascending = query.order === 'oldest';
|
|
374
400
|
const clauses = ['workspace_id = ?', 'execution_id = ?'];
|
|
@@ -467,6 +493,11 @@ class SqliteLlmCallMetricRepository {
|
|
|
467
493
|
}));
|
|
468
494
|
}
|
|
469
495
|
async deleteOlderThan(epochMs) {
|
|
496
|
+
// Record which runs this delete makes the local store non-authoritative for BEFORE taking
|
|
497
|
+
// the rows — afterwards there is nothing left to tell. See `telemetryCoverage.ts`: a run that
|
|
498
|
+
// straddles the cutoff keeps its newer rows, and a subset answered as though it were the whole
|
|
499
|
+
// run is how a pruned run's token rollup silently reads low.
|
|
500
|
+
this.coverage.markPrunedBefore('llm_call_metrics', epochMs);
|
|
470
501
|
const res = this.db.prepare('DELETE FROM llm_call_metrics WHERE created_at < ?').run(epochMs);
|
|
471
502
|
return Number(res.changes);
|
|
472
503
|
}
|
|
@@ -488,8 +519,10 @@ function rowToIndex(row) {
|
|
|
488
519
|
/** The per-dispatch agent-context sink — the local-sqlite mirror of `D1AgentContextSnapshotRepository`. */
|
|
489
520
|
class SqliteAgentContextSnapshotRepository {
|
|
490
521
|
db;
|
|
491
|
-
|
|
522
|
+
coverage;
|
|
523
|
+
constructor(db, coverage) {
|
|
492
524
|
this.db = db;
|
|
525
|
+
this.coverage = coverage;
|
|
493
526
|
}
|
|
494
527
|
async record(snapshot) {
|
|
495
528
|
this.insert(snapshot, false);
|
|
@@ -554,6 +587,28 @@ class SqliteAgentContextSnapshotRepository {
|
|
|
554
587
|
.all(...binds);
|
|
555
588
|
return rows.map(rowToIndex);
|
|
556
589
|
}
|
|
590
|
+
async listRunPage(workspaceId, query) {
|
|
591
|
+
const clauses = ['workspace_id = ?', 'execution_id = ?'];
|
|
592
|
+
const binds = [workspaceId, query.executionId];
|
|
593
|
+
if (query.stepIndex != null) {
|
|
594
|
+
clauses.push('step_index = ?');
|
|
595
|
+
binds.push(query.stepIndex);
|
|
596
|
+
}
|
|
597
|
+
if (query.cursor) {
|
|
598
|
+
clauses.push('(created_at < ? OR (created_at = ? AND id < ?))');
|
|
599
|
+
binds.push(query.cursor.createdAt, query.cursor.createdAt, query.cursor.id);
|
|
600
|
+
}
|
|
601
|
+
binds.push(query.limit);
|
|
602
|
+
// Same predicate, ordering and keyset as `listIndex` — bodies included. Keeping the two in
|
|
603
|
+
// step is what lets a caller page the index and then page the rows and see the same run.
|
|
604
|
+
const rows = this.db
|
|
605
|
+
.prepare(`SELECT * FROM agent_context_snapshots
|
|
606
|
+
WHERE ${clauses.join(' AND ')}
|
|
607
|
+
ORDER BY created_at DESC, id DESC
|
|
608
|
+
LIMIT ?`)
|
|
609
|
+
.all(...binds);
|
|
610
|
+
return rows.map(rowToSnapshot);
|
|
611
|
+
}
|
|
557
612
|
async get(workspaceId, id) {
|
|
558
613
|
const row = this.db
|
|
559
614
|
.prepare('SELECT * FROM agent_context_snapshots WHERE workspace_id = ? AND id = ?')
|
|
@@ -567,6 +622,11 @@ class SqliteAgentContextSnapshotRepository {
|
|
|
567
622
|
return row?.n ?? 0;
|
|
568
623
|
}
|
|
569
624
|
async deleteOlderThan(epochMs) {
|
|
625
|
+
// Record which runs this delete makes the local store non-authoritative for BEFORE taking
|
|
626
|
+
// the rows — afterwards there is nothing left to tell. See `telemetryCoverage.ts`: a run that
|
|
627
|
+
// straddles the cutoff keeps its newer rows, and a subset answered as though it were the whole
|
|
628
|
+
// run is how a pruned run's token rollup silently reads low.
|
|
629
|
+
this.coverage.markPrunedBefore('agent_context_snapshots', epochMs);
|
|
570
630
|
const res = this.db
|
|
571
631
|
.prepare('DELETE FROM agent_context_snapshots WHERE created_at < ?')
|
|
572
632
|
.run(epochMs);
|
|
@@ -576,8 +636,10 @@ class SqliteAgentContextSnapshotRepository {
|
|
|
576
636
|
/** The performed-web-search sink — the local-sqlite mirror of `D1AgentSearchQueryRepository`. */
|
|
577
637
|
class SqliteAgentSearchQueryRepository {
|
|
578
638
|
db;
|
|
579
|
-
|
|
639
|
+
coverage;
|
|
640
|
+
constructor(db, coverage) {
|
|
580
641
|
this.db = db;
|
|
642
|
+
this.coverage = coverage;
|
|
581
643
|
}
|
|
582
644
|
async record(query) {
|
|
583
645
|
this.insert(query, false);
|
|
@@ -638,6 +700,11 @@ class SqliteAgentSearchQueryRepository {
|
|
|
638
700
|
return row?.n ?? 0;
|
|
639
701
|
}
|
|
640
702
|
async deleteOlderThan(epochMs) {
|
|
703
|
+
// Record which runs this delete makes the local store non-authoritative for BEFORE taking
|
|
704
|
+
// the rows — afterwards there is nothing left to tell. See `telemetryCoverage.ts`: a run that
|
|
705
|
+
// straddles the cutoff keeps its newer rows, and a subset answered as though it were the whole
|
|
706
|
+
// run is how a pruned run's token rollup silently reads low.
|
|
707
|
+
this.coverage.markPrunedBefore('agent_search_queries', epochMs);
|
|
641
708
|
const res = this.db
|
|
642
709
|
.prepare('DELETE FROM agent_search_queries WHERE created_at < ?')
|
|
643
710
|
.run(epochMs);
|
|
@@ -790,13 +857,17 @@ class SqliteSubscriptionQuotaCycleRepository {
|
|
|
790
857
|
*/
|
|
791
858
|
export function createLocalTelemetryStore(path) {
|
|
792
859
|
const db = openSqliteDb(path, SCHEMA);
|
|
860
|
+
// Shared by the three run-scoped sinks: each records what its own prune took, and the
|
|
861
|
+
// read-through asks the one record whether a run's local answer is still the whole of it.
|
|
862
|
+
const coverage = new SqliteTelemetryCoverage(db);
|
|
793
863
|
return {
|
|
794
|
-
llmCallMetricRepository: new SqliteLlmCallMetricRepository(db),
|
|
795
|
-
agentContextSnapshotRepository: new SqliteAgentContextSnapshotRepository(db),
|
|
796
|
-
agentSearchQueryRepository: new SqliteAgentSearchQueryRepository(db),
|
|
864
|
+
llmCallMetricRepository: new SqliteLlmCallMetricRepository(db, coverage),
|
|
865
|
+
agentContextSnapshotRepository: new SqliteAgentContextSnapshotRepository(db, coverage),
|
|
866
|
+
agentSearchQueryRepository: new SqliteAgentSearchQueryRepository(db, coverage),
|
|
797
867
|
provisioningLogRepository: new SqliteProvisioningLogRepository(db),
|
|
798
868
|
subscriptionQuotaCycleRepository: new SqliteSubscriptionQuotaCycleRepository(db),
|
|
799
869
|
ingestReader: new SqliteTelemetryIngestReader(db),
|
|
870
|
+
coverage,
|
|
800
871
|
close: () => db.close(),
|
|
801
872
|
};
|
|
802
873
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetryStore.js","sourceRoot":"","sources":["../../src/sqlite/telemetryStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"telemetryStore.js","sourceRoot":"","sources":["../../src/sqlite/telemetryStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { AgentContextSnapshotRepository, AgentSearchQueryRepository, LlmCallMetricRepository, Logger } from '@cat-factory/kernel';
|
|
2
|
+
import { type MachineTelemetryReadClient } from '@cat-factory/server';
|
|
3
|
+
import type { LocalTelemetryCoverage } from './sqlite/telemetryCoverage.js';
|
|
4
|
+
/** The three run-scoped telemetry repositories this decorates. */
|
|
5
|
+
export interface ReadThroughTelemetryRepositories {
|
|
6
|
+
llmCallMetricRepository: LlmCallMetricRepository;
|
|
7
|
+
agentContextSnapshotRepository: AgentContextSnapshotRepository;
|
|
8
|
+
agentSearchQueryRepository: AgentSearchQueryRepository;
|
|
9
|
+
}
|
|
10
|
+
/** What the read-through needs besides the local store it decorates. */
|
|
11
|
+
export interface TelemetryReadThroughDeps {
|
|
12
|
+
/** Performs one bounded read against the mothership. */
|
|
13
|
+
client: MachineTelemetryReadClient;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the local store still holds ALL of a run's rows. Required rather than optional: a
|
|
16
|
+
* default of "always complete" would silently restore the partial-run under-reporting this
|
|
17
|
+
* exists to remove, and it would do so on the surface — a token total — least likely to be
|
|
18
|
+
* questioned.
|
|
19
|
+
*/
|
|
20
|
+
coverage: LocalTelemetryCoverage;
|
|
21
|
+
logger?: Logger;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Wrap `local` so that a read the local store cannot answer WHOLE is answered from the mothership.
|
|
25
|
+
*
|
|
26
|
+
* Only READS are decorated. `record` / `recordMany` / `latestChainTip` / `deleteOlderThan` pass
|
|
27
|
+
* straight through to the local store: the first three are the capture hot path (the whole reason
|
|
28
|
+
* this bucket is local-first), the chain tip must resolve against the rows this node actually
|
|
29
|
+
* holds or it would compute a prompt delta against a tip it cannot reproduce, and the prune owns
|
|
30
|
+
* local rows only.
|
|
31
|
+
*/
|
|
32
|
+
export declare function withTelemetryReadThrough(local: ReadThroughTelemetryRepositories, deps: TelemetryReadThroughDeps): ReadThroughTelemetryRepositories;
|
|
33
|
+
//# sourceMappingURL=telemetryReadThrough.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryReadThrough.d.ts","sourceRoot":"","sources":["../src/telemetryReadThrough.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,8BAA8B,EAG9B,0BAA0B,EAI1B,uBAAuB,EAIvB,MAAM,EACP,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAIL,KAAK,0BAA0B,EAEhC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAsD3E,kEAAkE;AAClE,MAAM,WAAW,gCAAgC;IAC/C,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,0BAA0B,EAAE,0BAA0B,CAAA;CACvD;AAED,wEAAwE;AACxE,MAAM,WAAW,wBAAwB;IACvC,wDAAwD;IACxD,MAAM,EAAE,0BAA0B,CAAA;IAClC;;;;;OAKG;IACH,QAAQ,EAAE,sBAAsB,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAiBD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,gCAAgC,EACvC,IAAI,EAAE,wBAAwB,GAC7B,gCAAgC,CAqBlC"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { noopLogger } from '@cat-factory/kernel';
|
|
2
|
+
import { TELEMETRY_READ_PAGE_SIZES, TelemetryReadTooLargeError, telemetryReadBodyCap, } from '@cat-factory/server';
|
|
3
|
+
/**
|
|
4
|
+
* Ceiling on how many rows a `listByExecution` fallback will drain from the mothership when the
|
|
5
|
+
* caller named no limit of its own.
|
|
6
|
+
*
|
|
7
|
+
* `listByExecution` has no cursor, so the node has to decide where to stop; these are the caps a
|
|
8
|
+
* local answer would effectively have been bounded by anyway (a run's own capture volume). A
|
|
9
|
+
* drain that REACHES its cap is logged with the run it stopped on, because a silently shortened
|
|
10
|
+
* list would read to whoever is looking at the panel as the whole run.
|
|
11
|
+
*/
|
|
12
|
+
const DRAIN_CAPS = {
|
|
13
|
+
metrics: 1000,
|
|
14
|
+
snapshots: 200,
|
|
15
|
+
searchQueries: 2000,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Wrap `local` so that a read the local store cannot answer WHOLE is answered from the mothership.
|
|
19
|
+
*
|
|
20
|
+
* Only READS are decorated. `record` / `recordMany` / `latestChainTip` / `deleteOlderThan` pass
|
|
21
|
+
* straight through to the local store: the first three are the capture hot path (the whole reason
|
|
22
|
+
* this bucket is local-first), the chain tip must resolve against the rows this node actually
|
|
23
|
+
* holds or it would compute a prompt delta against a tip it cannot reproduce, and the prune owns
|
|
24
|
+
* local rows only.
|
|
25
|
+
*/
|
|
26
|
+
export function withTelemetryReadThrough(local, deps) {
|
|
27
|
+
const log = (deps.logger ?? noopLogger).child({ scope: 'telemetryReadThrough' });
|
|
28
|
+
const read = (repo, method, workspaceId, args) => deps.client.read({ workspaceId, repo, method, args });
|
|
29
|
+
const ctx = {
|
|
30
|
+
read,
|
|
31
|
+
log,
|
|
32
|
+
// A run local has rows for is authoritative only while the prune has taken none of them.
|
|
33
|
+
whole: (workspaceId, executionId, held) => held > 0 && deps.coverage.isRunLocallyComplete(workspaceId, executionId),
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
llmCallMetricRepository: metricsReadThrough(local.llmCallMetricRepository, ctx),
|
|
37
|
+
agentContextSnapshotRepository: snapshotsReadThrough(local.agentContextSnapshotRepository, ctx),
|
|
38
|
+
agentSearchQueryRepository: searchQueriesReadThrough(local.agentSearchQueryRepository, ctx),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** The EXCLUSIVE cursor that continues after `rows`' oldest entry, or undefined when it is empty. */
|
|
42
|
+
function cursorAfter(rows) {
|
|
43
|
+
const last = rows[rows.length - 1];
|
|
44
|
+
return last ? { createdAt: last.createdAt, id: last.id } : undefined;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether a page-shaped local answer can be returned as-is.
|
|
48
|
+
*
|
|
49
|
+
* A FULL page is always its own answer — the caller holds a cursor and will come back for more,
|
|
50
|
+
* and a run that is missing older rows reaches the seam on a later page, where this same test
|
|
51
|
+
* fails and the fallback picks it up. A SHORT page is the end of the data only if the local store
|
|
52
|
+
* is whole for the run; otherwise the missing rows are exactly what makes it short.
|
|
53
|
+
*/
|
|
54
|
+
function pageIsAnswerable(ctx, workspaceId, executionId, held, limit) {
|
|
55
|
+
return held >= limit || ctx.whole(workspaceId, executionId, held);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Page a remote read forwards from newest to oldest until it is exhausted or `cap` rows have been
|
|
59
|
+
* collected, cursoring on the `(createdAt, id)` composite every telemetry read orders by.
|
|
60
|
+
*
|
|
61
|
+
* Reaching the cap is REPORTED rather than silently returned as a complete list: the caller is
|
|
62
|
+
* rendering a run, and a list that quietly stops partway reads as the whole of it.
|
|
63
|
+
*
|
|
64
|
+
* A page refused for SIZE halves and re-asks on the same cursor. That terminates: the mothership's
|
|
65
|
+
* backstop is derived to exceed the largest single row either body-bearing sink can store, so a
|
|
66
|
+
* one-row page can never be refused for size (`MAX_TELEMETRY_READ_CHARS`, pinned by an assertion
|
|
67
|
+
* against both capture ceilings).
|
|
68
|
+
*/
|
|
69
|
+
async function drainPages(opts, fetchPage) {
|
|
70
|
+
const rows = [];
|
|
71
|
+
// The local store already filled the caller's whole allowance, so there is no remainder to
|
|
72
|
+
// fetch. Returning HERE rather than falling through the loop matters: with no iterations left
|
|
73
|
+
// the tail below would report a cap it never reached, and a "capped a run's calls" warning about
|
|
74
|
+
// a complete answer is exactly the kind of noise that teaches a reader to ignore the real one.
|
|
75
|
+
if (opts.cap <= 0)
|
|
76
|
+
return rows;
|
|
77
|
+
let cursor = opts.cursor;
|
|
78
|
+
let pageSize = opts.pageSize;
|
|
79
|
+
while (rows.length < opts.cap) {
|
|
80
|
+
// Never ask for more than the cap still allows, so the last page is not over-fetched.
|
|
81
|
+
const want = Math.min(pageSize, opts.cap - rows.length);
|
|
82
|
+
let page;
|
|
83
|
+
try {
|
|
84
|
+
page = await fetchPage(cursor, want);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
// Within its ROW cap but over the mothership's BYTE backstop — a run with large prompts, not
|
|
88
|
+
// a fault. Re-ask smaller on the same cursor; nothing is lost because the cursor has not
|
|
89
|
+
// moved. Any other failure propagates, as does this one at a page of 1 (unreachable by the
|
|
90
|
+
// backstop's derivation, so reaching it means that invariant broke and must be reported).
|
|
91
|
+
if (error instanceof TelemetryReadTooLargeError && want > 1) {
|
|
92
|
+
pageSize = Math.max(1, Math.floor(want / 2));
|
|
93
|
+
opts.log.debug('read-through narrowed a page the mothership refused for size', {
|
|
94
|
+
executionId: opts.executionId,
|
|
95
|
+
what: opts.what,
|
|
96
|
+
was: want,
|
|
97
|
+
now: pageSize,
|
|
98
|
+
});
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
rows.push(...page);
|
|
104
|
+
// A SHORT page means the store had no more, and terminating on it is what makes the drain
|
|
105
|
+
// finite. A full one may or may not — finding out costs another request, which is exactly
|
|
106
|
+
// what the next iteration is.
|
|
107
|
+
if (page.length < want)
|
|
108
|
+
return rows;
|
|
109
|
+
const next = cursorAfter(page);
|
|
110
|
+
if (!next)
|
|
111
|
+
return rows;
|
|
112
|
+
cursor = next;
|
|
113
|
+
}
|
|
114
|
+
// Stopped ON the cap rather than on an exhausted store. It is possible the run held exactly
|
|
115
|
+
// this many rows and nothing was actually dropped — distinguishing the two would cost one more
|
|
116
|
+
// request per drain, and reporting a cap that happened to be exact is the cheaper error.
|
|
117
|
+
opts.log.warn(`read-through capped a run's ${opts.what}`, {
|
|
118
|
+
executionId: opts.executionId,
|
|
119
|
+
cap: opts.cap,
|
|
120
|
+
collected: rows.length,
|
|
121
|
+
});
|
|
122
|
+
return rows;
|
|
123
|
+
}
|
|
124
|
+
function metricsReadThrough(local, ctx) {
|
|
125
|
+
return {
|
|
126
|
+
// Capture + prune + chain-tip: local only. See the module note.
|
|
127
|
+
record: (metric) => local.record(metric),
|
|
128
|
+
recordMany: (metrics) => local.recordMany(metrics),
|
|
129
|
+
latestChainTip: (ws, ex, kind) => local.latestChainTip(ws, ex, kind),
|
|
130
|
+
deleteOlderThan: (epochMs) => local.deleteOlderThan(epochMs),
|
|
131
|
+
async listByExecution(ws, executionId, limit, agentKind) {
|
|
132
|
+
const rows = await local.listByExecution(ws, executionId, limit, agentKind);
|
|
133
|
+
if (ctx.whole(ws, executionId, rows.length))
|
|
134
|
+
return rows;
|
|
135
|
+
const cap = limit ?? DRAIN_CAPS.metrics;
|
|
136
|
+
// Everything strictly OLDER than local's oldest row — the disjoint remainder, per the
|
|
137
|
+
// module note's prefix-prune invariant. With no local rows this is the whole run.
|
|
138
|
+
const older = await drainPages({
|
|
139
|
+
pageSize: TELEMETRY_READ_PAGE_SIZES.metrics,
|
|
140
|
+
cap: cap - rows.length,
|
|
141
|
+
cursor: cursorAfter(rows),
|
|
142
|
+
log: ctx.log,
|
|
143
|
+
what: 'calls',
|
|
144
|
+
executionId,
|
|
145
|
+
}, (cursor, pageLimit) => ctx.read('llmCallMetricRepository', 'listRunPage', ws, [
|
|
146
|
+
{ executionId, agentKind, limit: pageLimit, cursor },
|
|
147
|
+
]));
|
|
148
|
+
return [...rows, ...older];
|
|
149
|
+
},
|
|
150
|
+
async listRunPage(ws, query) {
|
|
151
|
+
const rows = await local.listRunPage(ws, query);
|
|
152
|
+
if (pageIsAnswerable(ctx, ws, query.executionId, rows.length, query.limit))
|
|
153
|
+
return rows;
|
|
154
|
+
return ctx.read('llmCallMetricRepository', 'listRunPage', ws, [query]);
|
|
155
|
+
},
|
|
156
|
+
async listPage(ws, query) {
|
|
157
|
+
const rows = await local.listPage(ws, query);
|
|
158
|
+
if (pageIsAnswerable(ctx, ws, query.executionId, rows.length, query.limit))
|
|
159
|
+
return rows;
|
|
160
|
+
// The whole page from the mothership rather than a stitch: this read's ORDER and cursor are
|
|
161
|
+
// the caller's, so where the seam falls depends on which direction it is walking, and
|
|
162
|
+
// re-deriving that across two stores per page is where the off-by-one lives. The mothership
|
|
163
|
+
// holds the run's complete copy, so one read answers it in any order.
|
|
164
|
+
return ctx.read('llmCallMetricRepository', 'listPage', ws, [query]);
|
|
165
|
+
},
|
|
166
|
+
async get(ws, id, body) {
|
|
167
|
+
const row = await local.get(ws, id, body);
|
|
168
|
+
if (row)
|
|
169
|
+
return row;
|
|
170
|
+
return ctx.read('llmCallMetricRepository', 'get', ws, [
|
|
171
|
+
id,
|
|
172
|
+
withDeclaredBodyCap('llmCallMetricRepository', 'get', body),
|
|
173
|
+
]);
|
|
174
|
+
},
|
|
175
|
+
async summarizeByExecution(ws, executionId) {
|
|
176
|
+
const cells = await local.summarizeByExecution(ws, executionId);
|
|
177
|
+
// Cell COUNT stands in for row count here: an aggregate over zero rows is zero cells, and a
|
|
178
|
+
// run the prune has taken from produces cells whose totals are simply too low.
|
|
179
|
+
if (ctx.whole(ws, executionId, cells.length))
|
|
180
|
+
return cells;
|
|
181
|
+
// Never a merge of the two. The local aggregate is over a subset and the remote over the
|
|
182
|
+
// complete ingested copy, and nothing in either says which rows they share — so summing
|
|
183
|
+
// double-counts and taking the larger is a guess. The mothership's is the whole run's.
|
|
184
|
+
ctx.log.debug('read-through folding a run rollup from the mothership', { executionId });
|
|
185
|
+
return ctx.read('llmCallMetricRepository', 'summarizeByExecution', ws, [executionId]);
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function snapshotsReadThrough(local, ctx) {
|
|
190
|
+
return {
|
|
191
|
+
record: (snapshot) => local.record(snapshot),
|
|
192
|
+
recordMany: (snapshots) => local.recordMany(snapshots),
|
|
193
|
+
deleteOlderThan: (epochMs) => local.deleteOlderThan(epochMs),
|
|
194
|
+
async listByExecution(ws, executionId) {
|
|
195
|
+
const rows = await local.listByExecution(ws, executionId);
|
|
196
|
+
if (ctx.whole(ws, executionId, rows.length))
|
|
197
|
+
return rows;
|
|
198
|
+
const older = await drainPages({
|
|
199
|
+
pageSize: TELEMETRY_READ_PAGE_SIZES.snapshots,
|
|
200
|
+
cap: DRAIN_CAPS.snapshots - rows.length,
|
|
201
|
+
cursor: cursorAfter(rows),
|
|
202
|
+
log: ctx.log,
|
|
203
|
+
what: 'dispatch snapshots',
|
|
204
|
+
executionId,
|
|
205
|
+
}, (cursor, pageLimit) => ctx.read('agentContextSnapshotRepository', 'listRunPage', ws, [
|
|
206
|
+
{ executionId, limit: pageLimit, cursor },
|
|
207
|
+
]));
|
|
208
|
+
return [...rows, ...older];
|
|
209
|
+
},
|
|
210
|
+
async listRunPage(ws, query) {
|
|
211
|
+
const rows = await local.listRunPage(ws, query);
|
|
212
|
+
if (pageIsAnswerable(ctx, ws, query.executionId, rows.length, query.limit))
|
|
213
|
+
return rows;
|
|
214
|
+
return ctx.read('agentContextSnapshotRepository', 'listRunPage', ws, [
|
|
215
|
+
query,
|
|
216
|
+
]);
|
|
217
|
+
},
|
|
218
|
+
async listIndex(ws, query) {
|
|
219
|
+
const rows = await local.listIndex(ws, query);
|
|
220
|
+
if (pageIsAnswerable(ctx, ws, query.executionId, rows.length, query.limit))
|
|
221
|
+
return rows;
|
|
222
|
+
return ctx.read('agentContextSnapshotRepository', 'listIndex', ws, [query]);
|
|
223
|
+
},
|
|
224
|
+
async get(ws, id) {
|
|
225
|
+
const row = await local.get(ws, id);
|
|
226
|
+
if (row)
|
|
227
|
+
return row;
|
|
228
|
+
return ctx.read('agentContextSnapshotRepository', 'get', ws, [
|
|
229
|
+
id,
|
|
230
|
+
]);
|
|
231
|
+
},
|
|
232
|
+
async countByExecution(ws, executionId) {
|
|
233
|
+
const n = await local.countByExecution(ws, executionId);
|
|
234
|
+
if (ctx.whole(ws, executionId, n))
|
|
235
|
+
return n;
|
|
236
|
+
return ctx.read('agentContextSnapshotRepository', 'countByExecution', ws, [
|
|
237
|
+
executionId,
|
|
238
|
+
]);
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
function searchQueriesReadThrough(local, ctx) {
|
|
243
|
+
return {
|
|
244
|
+
record: (query) => local.record(query),
|
|
245
|
+
recordMany: (queries) => local.recordMany(queries),
|
|
246
|
+
deleteOlderThan: (epochMs) => local.deleteOlderThan(epochMs),
|
|
247
|
+
async listByExecution(ws, executionId) {
|
|
248
|
+
const rows = await local.listByExecution(ws, executionId);
|
|
249
|
+
if (ctx.whole(ws, executionId, rows.length))
|
|
250
|
+
return rows;
|
|
251
|
+
// Searches need no `listRunPage` of their own: this sink's `listPage` already returns
|
|
252
|
+
// WHOLE rows on the same keyset (the query text is capped at capture, so there is no
|
|
253
|
+
// unbounded body to slice), so the drain rides it directly.
|
|
254
|
+
const older = await drainPages({
|
|
255
|
+
pageSize: TELEMETRY_READ_PAGE_SIZES.searchQueries,
|
|
256
|
+
cap: DRAIN_CAPS.searchQueries - rows.length,
|
|
257
|
+
cursor: cursorAfter(rows),
|
|
258
|
+
log: ctx.log,
|
|
259
|
+
what: 'searches',
|
|
260
|
+
executionId,
|
|
261
|
+
}, (cursor, pageLimit) => ctx.read('agentSearchQueryRepository', 'listPage', ws, [
|
|
262
|
+
{ executionId, limit: pageLimit, cursor },
|
|
263
|
+
]));
|
|
264
|
+
return [...rows, ...older];
|
|
265
|
+
},
|
|
266
|
+
async listPage(ws, query) {
|
|
267
|
+
const rows = await local.listPage(ws, query);
|
|
268
|
+
if (pageIsAnswerable(ctx, ws, query.executionId, rows.length, query.limit))
|
|
269
|
+
return rows;
|
|
270
|
+
return ctx.read('agentSearchQueryRepository', 'listPage', ws, [query]);
|
|
271
|
+
},
|
|
272
|
+
async countByExecution(ws, executionId) {
|
|
273
|
+
const n = await local.countByExecution(ws, executionId);
|
|
274
|
+
if (ctx.whole(ws, executionId, n))
|
|
275
|
+
return n;
|
|
276
|
+
return ctx.read('agentSearchQueryRepository', 'countByExecution', ws, [executionId]);
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* The body window to send for a point read, filling in the method's declared ceiling when the
|
|
282
|
+
* caller supplied none.
|
|
283
|
+
*
|
|
284
|
+
* An absent window means "the whole bodies" to the port, which is the unstated size the machine
|
|
285
|
+
* surface refuses — so passing the caller's `undefined` straight through would turn a legitimate
|
|
286
|
+
* local miss into a 422. The ceiling is the most the surface will serve anyway, and the slice is
|
|
287
|
+
* self-describing (`totalChars` beside the text), so a longer body reports itself as cut rather
|
|
288
|
+
* than passing as whole.
|
|
289
|
+
*/
|
|
290
|
+
function withDeclaredBodyCap(repo, method, window) {
|
|
291
|
+
if (window?.chars != null)
|
|
292
|
+
return window;
|
|
293
|
+
const cap = telemetryReadBodyCap(repo, method);
|
|
294
|
+
return cap == null ? window : { ...window, chars: cap };
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=telemetryReadThrough.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryReadThrough.js","sourceRoot":"","sources":["../src/telemetryReadThrough.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,GAGrB,MAAM,qBAAqB,CAAA;AA4E5B;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,GAAG;IACd,aAAa,EAAE,IAAI;CACX,CAAA;AAEV;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAuC,EACvC,IAA8B;IAE9B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAA;IAChF,MAAM,IAAI,GAAG,CACX,IAA6B,EAC7B,MAAc,EACd,WAAmB,EACnB,IAAe,EACH,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAe,CAAA;IACpF,MAAM,GAAG,GAAuB;QAC9B,IAAI;QACJ,GAAG;QACH,yFAAyF;QACzF,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CACxC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,EAAE,WAAW,CAAC;KAC3E,CAAA;IAED,OAAO;QACL,uBAAuB,EAAE,kBAAkB,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC;QAC/E,8BAA8B,EAAE,oBAAoB,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC;QAC/F,0BAA0B,EAAE,wBAAwB,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC;KAC5F,CAAA;AACH,CAAC;AAwBD,qGAAqG;AACrG,SAAS,WAAW,CAAC,IAA0B;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAClC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,GAAuB,EACvB,WAAmB,EACnB,WAAmB,EACnB,IAAY,EACZ,KAAa;IAEb,OAAO,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,UAAU,CACvB,IAOC,EACD,SAAyE;IAEzE,MAAM,IAAI,GAAQ,EAAE,CAAA;IACpB,2FAA2F;IAC3F,8FAA8F;IAC9F,iGAAiG;IACjG,+FAA+F;IAC/F,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC5B,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,sFAAsF;QACtF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;QACvD,IAAI,IAAS,CAAA;QACb,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6FAA6F;YAC7F,yFAAyF;YACzF,2FAA2F;YAC3F,0FAA0F;YAC1F,IAAI,KAAK,YAAY,0BAA0B,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC5D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8DAA8D,EAAE;oBAC7E,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,GAAG,EAAE,IAAI;oBACT,GAAG,EAAE,QAAQ;iBACd,CAAC,CAAA;gBACF,SAAQ;YACV,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAClB,0FAA0F;QAC1F,0FAA0F;QAC1F,8BAA8B;QAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI;YAAE,OAAO,IAAI,CAAA;QACnC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QACtB,MAAM,GAAG,IAAI,CAAA;IACf,CAAC;IACD,4FAA4F;IAC5F,+FAA+F;IAC/F,yFAAyF;IACzF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,EAAE;QACxD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,MAAM;KACvB,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA8B,EAC9B,GAAuB;IAEvB,OAAO;QACL,gEAAgE;QAChE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACxC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QAClD,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;QACpE,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;QAE5D,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS;YACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YAC3E,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAA;YACxD,MAAM,GAAG,GAAG,KAAK,IAAI,UAAU,CAAC,OAAO,CAAA;YACvC,sFAAsF;YACtF,kFAAkF;YAClF,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B;gBACE,QAAQ,EAAE,yBAAyB,CAAC,OAAO;gBAC3C,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM;gBACtB,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;gBACzB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,IAAI,EAAE,OAAO;gBACb,WAAW;aACZ,EACD,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CACpB,GAAG,CAAC,IAAI,CAAkB,yBAAyB,EAAE,aAAa,EAAE,EAAE,EAAE;gBACtE,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAgC;aACnF,CAAC,CACL,CAAA;YACD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,KAA0B;YAC9C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAC/C,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvF,OAAO,GAAG,CAAC,IAAI,CAAkB,yBAAyB,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QACzF,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAuB;YACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAC5C,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvF,4FAA4F;YAC5F,sFAAsF;YACtF,4FAA4F;YAC5F,sEAAsE;YACtE,OAAO,GAAG,CAAC,IAAI,CAAsB,yBAAyB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1F,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAwB;YACxC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,OAAO,GAAG,CAAC,IAAI,CAA2B,yBAAyB,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC9E,EAAE;gBACF,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAI,CAAC;aAC5D,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,WAAW;YACxC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;YAC/D,4FAA4F;YAC5F,+EAA+E;YAC/E,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC1D,yFAAyF;YACzF,wFAAwF;YACxF,uFAAuF;YACvF,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,uDAAuD,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;YACvF,OAAO,GAAG,CAAC,IAAI,CACb,yBAAyB,EACzB,sBAAsB,EACtB,EAAE,EACF,CAAC,WAAW,CAAC,CACd,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAqC,EACrC,GAAuB;IAEvB,OAAO;QACL,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC5C,UAAU,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;QACtD,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;QAE5D,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW;YACnC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;YACzD,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAA;YACxD,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B;gBACE,QAAQ,EAAE,yBAAyB,CAAC,SAAS;gBAC7C,GAAG,EAAE,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM;gBACvC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;gBACzB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,WAAW;aACZ,EACD,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CACpB,GAAG,CAAC,IAAI,CAAyB,gCAAgC,EAAE,aAAa,EAAE,EAAE,EAAE;gBACpF,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAqC;aAC7E,CAAC,CACL,CAAA;YACD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,KAA+B;YACnD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAC/C,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvF,OAAO,GAAG,CAAC,IAAI,CAAyB,gCAAgC,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC3F,KAAK;aACN,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,KAA6B;YAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAC7C,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvF,OAAO,GAAG,CAAC,IAAI,CACb,gCAAgC,EAChC,WAAW,EACX,EAAE,EACF,CAAC,KAAK,CAAC,CACR,CAAA;QACH,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE;YACd,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YACnC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,OAAO,GAAG,CAAC,IAAI,CAA8B,gCAAgC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACxF,EAAE;aACH,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,WAAW;YACpC,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;YACvD,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAA;YAC3C,OAAO,GAAG,CAAC,IAAI,CAAS,gCAAgC,EAAE,kBAAkB,EAAE,EAAE,EAAE;gBAChF,WAAW;aACZ,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAiC,EACjC,GAAuB;IAEvB,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QAClD,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC;QAE5D,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW;YACnC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;YACzD,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAA;YACxD,sFAAsF;YACtF,qFAAqF;YACrF,4DAA4D;YAC5D,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B;gBACE,QAAQ,EAAE,yBAAyB,CAAC,aAAa;gBACjD,GAAG,EAAE,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;gBAC3C,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC;gBACzB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,IAAI,EAAE,UAAU;gBAChB,WAAW;aACZ,EACD,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CACpB,GAAG,CAAC,IAAI,CAAqB,4BAA4B,EAAE,UAAU,EAAE,EAAE,EAAE;gBACzE,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAsC;aAC9E,CAAC,CACL,CAAA;YACD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAgC;YACjD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAC5C,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACvF,OAAO,GAAG,CAAC,IAAI,CAAqB,4BAA4B,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5F,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,WAAW;YACpC,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;YACvD,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAA;YAC3C,OAAO,GAAG,CAAC,IAAI,CAAS,4BAA4B,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;QAC9F,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,mBAAmB,CAC1B,IAA6B,EAC7B,MAAc,EACd,MAAqC;IAErC,IAAI,MAAM,EAAE,KAAK,IAAI,IAAI;QAAE,OAAO,MAAM,CAAA;IACxC,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC9C,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;AACzD,CAAC"}
|
|
@@ -10,6 +10,8 @@ export interface LocalTelemetryRetentionResult {
|
|
|
10
10
|
subscriptionQuotaCycles: number;
|
|
11
11
|
/** Upstream-ingest high-water marks (PR 5's sync UP) whose runs' rows are long gone. */
|
|
12
12
|
ingestState: number;
|
|
13
|
+
/** Partial-prune markers (PR 5's read-through) for runs the store now holds nothing of. */
|
|
14
|
+
prunedRunMarkers: number;
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* Prune each local telemetry table to its retention window. Pure over the store, so it is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetryRetention.d.ts","sourceRoot":"","sources":["../src/telemetryRetention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA4BrE,mEAAmE;AACnE,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,wFAAwF;IACxF,WAAW,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"telemetryRetention.d.ts","sourceRoot":"","sources":["../src/telemetryRetention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA4BrE,mEAAmE;AACnE,MAAM,WAAW,6BAA6B;IAC5C,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,wFAAwF;IACxF,WAAW,EAAE,MAAM,CAAA;IACnB,2FAA2F;IAC3F,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAYD;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,6BAA6B,CAAC,CAgCxC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,GACV,MAAM,OAAO,CAAC,IAAI,CAAC,CA8BrB"}
|
|
@@ -46,6 +46,13 @@ export async function sweepLocalTelemetryRetention(store, retention, now) {
|
|
|
46
46
|
// so the mark outlives the rows it describes and can never be dropped while a still-stored run
|
|
47
47
|
// would be re-uploaded because of it.
|
|
48
48
|
ingestState: await prune(retention.llmCallMetricsMs, now, async (c) => store.ingestReader.deleteIngestStateOlderThan(c)),
|
|
49
|
+
// LAST, and unconditionally: the three prunes above are what create these markers, so sweeping
|
|
50
|
+
// before them would leave a pass's own markers behind for an hour. It takes no window of its
|
|
51
|
+
// own — a marker is spent exactly when the run it names has no local rows left, at which point
|
|
52
|
+
// the read-through's emptiness gate already falls through to the mothership. Ageing it out on
|
|
53
|
+
// a duration instead would expire it while the run's SURVIVING rows were still being answered
|
|
54
|
+
// with, which is the one moment it is load-bearing.
|
|
55
|
+
prunedRunMarkers: store.coverage.forgetSettledRuns(),
|
|
49
56
|
};
|
|
50
57
|
}
|
|
51
58
|
/**
|