@cat-factory/local-server 0.92.0 → 0.93.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.js +17 -12
- package/dist/container.js.map +1 -1
- package/dist/mothership.d.ts +10 -1
- package/dist/mothership.d.ts.map +1 -1
- package/dist/mothership.js +6 -1
- package/dist/mothership.js.map +1 -1
- package/dist/sqlite/telemetryIngestReader.d.ts +62 -0
- package/dist/sqlite/telemetryIngestReader.d.ts.map +1 -0
- package/dist/sqlite/telemetryIngestReader.js +86 -0
- package/dist/sqlite/telemetryIngestReader.js.map +1 -0
- package/dist/sqlite/telemetryRows.d.ts +62 -0
- package/dist/sqlite/telemetryRows.d.ts.map +1 -0
- package/dist/sqlite/telemetryRows.js +87 -0
- package/dist/sqlite/telemetryRows.js.map +1 -0
- package/dist/sqlite/telemetryStore.d.ts +3 -1
- package/dist/sqlite/telemetryStore.d.ts.map +1 -1
- package/dist/sqlite/telemetryStore.js +87 -87
- package/dist/sqlite/telemetryStore.js.map +1 -1
- package/dist/telemetryIngest.d.ts +49 -0
- package/dist/telemetryIngest.d.ts.map +1 -0
- package/dist/telemetryIngest.js +226 -0
- package/dist/telemetryIngest.js.map +1 -0
- package/dist/telemetryRetention.d.ts +2 -0
- package/dist/telemetryRetention.d.ts.map +1 -1
- package/dist/telemetryRetention.js +5 -0
- package/dist/telemetryRetention.js.map +1 -1
- package/dist/telemetrySweeps.d.ts +28 -0
- package/dist/telemetrySweeps.d.ts.map +1 -0
- package/dist/telemetrySweeps.js +32 -0
- package/dist/telemetrySweeps.js.map +1 -0
- package/package.json +11 -11
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AgentContextSnapshotRepository, type AgentSearchQueryRepository, type LlmCallMetricRepository, type ProvisioningLogRepository, type SubscriptionQuotaCycleRepository } from '@cat-factory/kernel';
|
|
2
|
+
import { type LocalTelemetryIngestReader } from './telemetryIngestReader.js';
|
|
2
3
|
/**
|
|
3
4
|
* The telemetry repositories a mothership-mode node serves LOCALLY, keyed by the name the engine
|
|
4
5
|
* (and the remote registry) addresses them by. `composeMothership` layers this map over the remote
|
|
@@ -13,8 +14,9 @@ export interface LocalTelemetryRepositories {
|
|
|
13
14
|
provisioningLogRepository: ProvisioningLogRepository;
|
|
14
15
|
subscriptionQuotaCycleRepository: SubscriptionQuotaCycleRepository;
|
|
15
16
|
}
|
|
16
|
-
/** The local telemetry repositories plus a handle to close the
|
|
17
|
+
/** The local telemetry repositories plus the ingest reader and a handle to close the db. */
|
|
17
18
|
export interface LocalTelemetryStore extends LocalTelemetryRepositories {
|
|
19
|
+
ingestReader: LocalTelemetryIngestReader;
|
|
18
20
|
close(): void;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetryStore.d.ts","sourceRoot":"","sources":["../../src/sqlite/telemetryStore.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"telemetryStore.d.ts","sourceRoot":"","sources":["../../src/sqlite/telemetryStore.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,8BAA8B,EAGnC,KAAK,0BAA0B,EAI/B,KAAK,uBAAuB,EAO5B,KAAK,yBAAyB,EAE9B,KAAK,gCAAgC,EAGtC,MAAM,qBAAqB,CAAA;AAI5B,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,4BAA4B,CAAA;AAgjCnC;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,0BAA0B,EAAE,0BAA0B,CAAA;IACtD,yBAAyB,EAAE,yBAAyB,CAAA;IACpD,gCAAgC,EAAE,gCAAgC,CAAA;CACnE;AAED,4FAA4F;AAC5F,MAAM,WAAW,mBAAoB,SAAQ,0BAA0B;IACrE,YAAY,EAAE,0BAA0B,CAAA;IACxC,KAAK,IAAI,IAAI,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAW3E"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { LLM_WARNING_FINISH_REASONS, escapeLikePattern, } from '@cat-factory/kernel';
|
|
2
|
-
import {
|
|
2
|
+
import { subscriptionVendorSchema } from '@cat-factory/contracts';
|
|
3
3
|
import { decodeEnum } from '@cat-factory/server';
|
|
4
4
|
import { openSqliteDb } from './db.js';
|
|
5
|
+
import { SqliteTelemetryIngestReader, } from './telemetryIngestReader.js';
|
|
6
|
+
import { rowToMetric, rowToQuery, rowToSnapshot, } from './telemetryRows.js';
|
|
5
7
|
// The mothership-mode LOCAL telemetry store (docs/initiatives/mothership-mode.md, PR 5).
|
|
6
8
|
//
|
|
7
9
|
// Telemetry is the third bucket, distinct from both the remote org/durable state and the local
|
|
@@ -274,41 +276,22 @@ CREATE TABLE IF NOT EXISTS subscription_quota_cycles (
|
|
|
274
276
|
);
|
|
275
277
|
CREATE INDEX IF NOT EXISTS idx_subscription_quota_cycles_window
|
|
276
278
|
ON subscription_quota_cycles (window_started_at);
|
|
279
|
+
|
|
280
|
+
-- Per-run high-water mark for the UPSTREAM telemetry ingest (docs/initiatives/mothership-mode.md,
|
|
281
|
+
-- PR 5): which runs have already been uploaded to the mothership, and up to which capture time.
|
|
282
|
+
-- Local-only bookkeeping -- it never leaves the laptop and has no mothership counterpart.
|
|
283
|
+
CREATE TABLE IF NOT EXISTS telemetry_ingest_state (
|
|
284
|
+
workspace_id TEXT NOT NULL,
|
|
285
|
+
execution_id TEXT NOT NULL,
|
|
286
|
+
-- The newest captured row (across the three run-scoped sinks) this run was ingested through.
|
|
287
|
+
-- A later row moves the run's newest-write time past this and makes it a candidate again, which
|
|
288
|
+
-- is what covers a RESUMED run: the upload is idempotent by row id, so re-offering the
|
|
289
|
+
-- already-ingested prefix costs bandwidth and nothing else.
|
|
290
|
+
ingested_through INTEGER NOT NULL,
|
|
291
|
+
ingested_at INTEGER NOT NULL,
|
|
292
|
+
PRIMARY KEY (workspace_id, execution_id)
|
|
293
|
+
);
|
|
277
294
|
`;
|
|
278
|
-
function rowToMetric(row) {
|
|
279
|
-
return {
|
|
280
|
-
id: row.id,
|
|
281
|
-
workspaceId: row.workspace_id,
|
|
282
|
-
executionId: row.execution_id,
|
|
283
|
-
agentKind: row.agent_kind,
|
|
284
|
-
provider: row.provider,
|
|
285
|
-
model: row.model,
|
|
286
|
-
createdAt: row.created_at,
|
|
287
|
-
streaming: row.streaming === 1,
|
|
288
|
-
messageCount: row.message_count,
|
|
289
|
-
toolCount: row.tool_count,
|
|
290
|
-
requestMaxTokens: row.request_max_tokens,
|
|
291
|
-
promptTokens: row.prompt_tokens,
|
|
292
|
-
cacheReadTokens: row.cache_read_tokens,
|
|
293
|
-
cacheWriteTokens: row.cache_write_tokens,
|
|
294
|
-
completionTokens: row.completion_tokens,
|
|
295
|
-
totalTokens: row.total_tokens,
|
|
296
|
-
finishReason: row.finish_reason,
|
|
297
|
-
upstreamMs: row.upstream_ms,
|
|
298
|
-
overheadMs: row.overhead_ms,
|
|
299
|
-
totalMs: row.total_ms,
|
|
300
|
-
ok: row.ok === 1,
|
|
301
|
-
httpStatus: row.http_status,
|
|
302
|
-
errorMessage: row.error_message,
|
|
303
|
-
promptText: row.prompt_text,
|
|
304
|
-
promptPrefixCount: row.prompt_prefix_count,
|
|
305
|
-
promptHash: row.prompt_hash,
|
|
306
|
-
responseText: row.response_text,
|
|
307
|
-
reasoningText: row.reasoning_text,
|
|
308
|
-
phase: row.phase,
|
|
309
|
-
turnIndex: row.turn_index,
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
295
|
/** The per-call LLM telemetry sink — the local-sqlite mirror of `D1LlmCallMetricRepository`. */
|
|
313
296
|
class SqliteLlmCallMetricRepository {
|
|
314
297
|
db;
|
|
@@ -316,6 +299,9 @@ class SqliteLlmCallMetricRepository {
|
|
|
316
299
|
this.db = db;
|
|
317
300
|
}
|
|
318
301
|
async record(metric) {
|
|
302
|
+
this.insert(metric);
|
|
303
|
+
}
|
|
304
|
+
insert(metric) {
|
|
319
305
|
// First write wins, and ONLY a duplicate id is ignored — `ON CONFLICT(id) DO NOTHING`, never
|
|
320
306
|
// `INSERT OR IGNORE` (which would also swallow a NOT NULL/CHECK violation and silently drop a
|
|
321
307
|
// malformed metric here while the other runtimes throw). The harness-call recorder deliberately
|
|
@@ -335,6 +321,30 @@ class SqliteLlmCallMetricRepository {
|
|
|
335
321
|
ON CONFLICT(id) DO NOTHING`)
|
|
336
322
|
.run(metric.id, metric.workspaceId, metric.executionId, metric.agentKind, metric.provider, metric.model, metric.createdAt, metric.streaming ? 1 : 0, 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, metric.phase, metric.turnIndex);
|
|
337
323
|
}
|
|
324
|
+
async recordMany(metrics) {
|
|
325
|
+
// `DatabaseSync` is synchronous and single-process, so the loop below is one uninterrupted
|
|
326
|
+
// append rather than N round trips — this is the local mirror of the other runtimes' batch
|
|
327
|
+
// insert, not the N+1 the rule forbids. Wrapped in a transaction so a partially applied
|
|
328
|
+
// batch can't leave the run's rows interleaved with a concurrent writer's.
|
|
329
|
+
//
|
|
330
|
+
// The loop calls the SYNCHRONOUS `insert`, never `await this.record(...)`: an await inside the
|
|
331
|
+
// transaction yields the microtask queue, which is exactly what "uninterrupted" rules out — a
|
|
332
|
+
// concurrent recorder's insert would land inside this BEGIN and be rolled back with it, and a
|
|
333
|
+
// re-entrant `recordMany` would fail on a nested BEGIN. Same shape as the snapshot and
|
|
334
|
+
// search-query repos below.
|
|
335
|
+
if (metrics.length === 0)
|
|
336
|
+
return;
|
|
337
|
+
this.db.exec('BEGIN');
|
|
338
|
+
try {
|
|
339
|
+
for (const metric of metrics)
|
|
340
|
+
this.insert(metric);
|
|
341
|
+
this.db.exec('COMMIT');
|
|
342
|
+
}
|
|
343
|
+
catch (error) {
|
|
344
|
+
this.db.exec('ROLLBACK');
|
|
345
|
+
throw error;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
338
348
|
async latestChainTip(workspaceId, executionId, agentKind) {
|
|
339
349
|
// `message_count > 0` skips rows that can never BE a tip: a subagent call carries no
|
|
340
350
|
// re-sendable prompt chain, and those interleave with the parent's now that harness telemetry
|
|
@@ -461,43 +471,6 @@ class SqliteLlmCallMetricRepository {
|
|
|
461
471
|
return Number(res.changes);
|
|
462
472
|
}
|
|
463
473
|
}
|
|
464
|
-
function parseArray(text) {
|
|
465
|
-
try {
|
|
466
|
-
const parsed = JSON.parse(text);
|
|
467
|
-
return Array.isArray(parsed) ? parsed : [];
|
|
468
|
-
}
|
|
469
|
-
catch {
|
|
470
|
-
return [];
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
function parseObject(text) {
|
|
474
|
-
try {
|
|
475
|
-
const parsed = JSON.parse(text);
|
|
476
|
-
return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
477
|
-
? parsed
|
|
478
|
-
: {};
|
|
479
|
-
}
|
|
480
|
-
catch {
|
|
481
|
-
return {};
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
function rowToSnapshot(row) {
|
|
485
|
-
return {
|
|
486
|
-
id: row.id,
|
|
487
|
-
workspaceId: row.workspace_id,
|
|
488
|
-
executionId: row.execution_id,
|
|
489
|
-
agentKind: row.agent_kind,
|
|
490
|
-
stepIndex: row.step_index,
|
|
491
|
-
createdAt: row.created_at,
|
|
492
|
-
model: row.model,
|
|
493
|
-
harness: row.harness,
|
|
494
|
-
systemPrompt: row.system_prompt,
|
|
495
|
-
userPrompt: row.user_prompt,
|
|
496
|
-
fragments: parseArray(row.fragments),
|
|
497
|
-
contextFiles: parseArray(row.context_files),
|
|
498
|
-
extras: parseObject(row.extras),
|
|
499
|
-
};
|
|
500
|
-
}
|
|
501
474
|
function rowToIndex(row) {
|
|
502
475
|
return {
|
|
503
476
|
id: row.id,
|
|
@@ -519,11 +492,31 @@ class SqliteAgentContextSnapshotRepository {
|
|
|
519
492
|
this.db = db;
|
|
520
493
|
}
|
|
521
494
|
async record(snapshot) {
|
|
495
|
+
this.insert(snapshot, false);
|
|
496
|
+
}
|
|
497
|
+
async recordMany(snapshots) {
|
|
498
|
+
// Synchronous single-process appends inside one transaction — the local mirror of the other
|
|
499
|
+
// runtimes' batch insert. Duplicate ids are IGNORED here (unlike the single-row `record`),
|
|
500
|
+
// per the port: a batch append has to be retryable.
|
|
501
|
+
if (snapshots.length === 0)
|
|
502
|
+
return;
|
|
503
|
+
this.db.exec('BEGIN');
|
|
504
|
+
try {
|
|
505
|
+
for (const snapshot of snapshots)
|
|
506
|
+
this.insert(snapshot, true);
|
|
507
|
+
this.db.exec('COMMIT');
|
|
508
|
+
}
|
|
509
|
+
catch (error) {
|
|
510
|
+
this.db.exec('ROLLBACK');
|
|
511
|
+
throw error;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
insert(snapshot, ignoreDuplicateId) {
|
|
522
515
|
this.db
|
|
523
516
|
.prepare(`INSERT INTO agent_context_snapshots
|
|
524
517
|
(id, workspace_id, execution_id, agent_kind, step_index, created_at,
|
|
525
518
|
model, harness, system_prompt, user_prompt, fragments, context_files, extras)
|
|
526
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
519
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)${ignoreDuplicateId ? ' ON CONFLICT(id) DO NOTHING' : ''}`)
|
|
527
520
|
.run(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));
|
|
528
521
|
}
|
|
529
522
|
async listByExecution(workspaceId, executionId) {
|
|
@@ -580,19 +573,6 @@ class SqliteAgentContextSnapshotRepository {
|
|
|
580
573
|
return Number(res.changes);
|
|
581
574
|
}
|
|
582
575
|
}
|
|
583
|
-
function rowToQuery(row) {
|
|
584
|
-
return {
|
|
585
|
-
id: row.id,
|
|
586
|
-
workspaceId: row.workspace_id,
|
|
587
|
-
executionId: row.execution_id,
|
|
588
|
-
agentKind: row.agent_kind,
|
|
589
|
-
// The stored provider column is free-text TEXT; narrow it back to the wire union.
|
|
590
|
-
provider: isWebSearchProvider(row.provider) ? row.provider : null,
|
|
591
|
-
query: row.query,
|
|
592
|
-
resultCount: row.result_count,
|
|
593
|
-
createdAt: row.created_at,
|
|
594
|
-
};
|
|
595
|
-
}
|
|
596
576
|
/** The performed-web-search sink — the local-sqlite mirror of `D1AgentSearchQueryRepository`. */
|
|
597
577
|
class SqliteAgentSearchQueryRepository {
|
|
598
578
|
db;
|
|
@@ -600,10 +580,29 @@ class SqliteAgentSearchQueryRepository {
|
|
|
600
580
|
this.db = db;
|
|
601
581
|
}
|
|
602
582
|
async record(query) {
|
|
583
|
+
this.insert(query, false);
|
|
584
|
+
}
|
|
585
|
+
async recordMany(queries) {
|
|
586
|
+
// See the snapshot repo's note: one transaction, duplicate ids ignored so the batch append
|
|
587
|
+
// stays retryable.
|
|
588
|
+
if (queries.length === 0)
|
|
589
|
+
return;
|
|
590
|
+
this.db.exec('BEGIN');
|
|
591
|
+
try {
|
|
592
|
+
for (const query of queries)
|
|
593
|
+
this.insert(query, true);
|
|
594
|
+
this.db.exec('COMMIT');
|
|
595
|
+
}
|
|
596
|
+
catch (error) {
|
|
597
|
+
this.db.exec('ROLLBACK');
|
|
598
|
+
throw error;
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
insert(query, ignoreDuplicateId) {
|
|
603
602
|
this.db
|
|
604
603
|
.prepare(`INSERT INTO agent_search_queries
|
|
605
604
|
(id, workspace_id, execution_id, agent_kind, provider, query, result_count, created_at)
|
|
606
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
605
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)${ignoreDuplicateId ? ' ON CONFLICT(id) DO NOTHING' : ''}`)
|
|
607
606
|
.run(query.id, query.workspaceId, query.executionId, query.agentKind, query.provider, query.query, query.resultCount, query.createdAt);
|
|
608
607
|
}
|
|
609
608
|
async listByExecution(workspaceId, executionId) {
|
|
@@ -797,6 +796,7 @@ export function createLocalTelemetryStore(path) {
|
|
|
797
796
|
agentSearchQueryRepository: new SqliteAgentSearchQueryRepository(db),
|
|
798
797
|
provisioningLogRepository: new SqliteProvisioningLogRepository(db),
|
|
799
798
|
subscriptionQuotaCycleRepository: new SqliteSubscriptionQuotaCycleRepository(db),
|
|
799
|
+
ingestReader: new SqliteTelemetryIngestReader(db),
|
|
800
800
|
close: () => db.close(),
|
|
801
801
|
};
|
|
802
802
|
}
|
|
@@ -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,49 @@
|
|
|
1
|
+
import type { Clock, Logger } from '@cat-factory/kernel';
|
|
2
|
+
import { type MachineTelemetryClient } from '@cat-factory/server';
|
|
3
|
+
import type { LocalTelemetryIngestReader } from './sqlite/telemetryIngestReader.js';
|
|
4
|
+
/** A row no batch can ever carry, named so the sweep can REPORT the drop rather than hide it. */
|
|
5
|
+
export interface OversizedRow {
|
|
6
|
+
id: string;
|
|
7
|
+
chars: number;
|
|
8
|
+
}
|
|
9
|
+
/** What one sweep moved, for logging. */
|
|
10
|
+
export interface TelemetryIngestSweepResult {
|
|
11
|
+
runs: number;
|
|
12
|
+
metrics: number;
|
|
13
|
+
snapshots: number;
|
|
14
|
+
searchQueries: number;
|
|
15
|
+
/** Runs left un-marked because their upload failed — retried on the next pass. */
|
|
16
|
+
failed: number;
|
|
17
|
+
/**
|
|
18
|
+
* Rows skipped because one row alone exceeds the mothership's whole-body cap. Reported, never
|
|
19
|
+
* silent: the alternative is a run that can never finish draining, and a cap that drops
|
|
20
|
+
* something has to say so.
|
|
21
|
+
*/
|
|
22
|
+
skipped: number;
|
|
23
|
+
}
|
|
24
|
+
export interface TelemetryIngestDeps {
|
|
25
|
+
reader: LocalTelemetryIngestReader;
|
|
26
|
+
client: MachineTelemetryClient;
|
|
27
|
+
clock: Clock;
|
|
28
|
+
log: Logger;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Upload every quiesced run's telemetry once. Pure over its dependencies (no timer), so it is
|
|
32
|
+
* unit-testable directly — the same shape as `sweepLocalTelemetryRetention`.
|
|
33
|
+
*
|
|
34
|
+
* A run whose upload fails is left UNMARKED and counted in `failed`: the next pass retries it from
|
|
35
|
+
* the beginning, which is safe precisely because the mothership's append is idempotent by row id.
|
|
36
|
+
* One run's failure never stops the pass — a single unreachable moment must not park the backlog.
|
|
37
|
+
*/
|
|
38
|
+
export declare function sweepTelemetryIngest(deps: TelemetryIngestDeps, now: number): Promise<TelemetryIngestSweepResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Start the periodic telemetry ingest sweep. Best-effort throughout — losing observability must
|
|
41
|
+
* never take the node down, and an unreachable mothership only means the rows stay local until it
|
|
42
|
+
* comes back.
|
|
43
|
+
*
|
|
44
|
+
* Like the retention sweep, the returned stop function is ASYNC and must be AWAITED before the
|
|
45
|
+
* telemetry store is closed: a pass in flight when shutdown closes the SQLite handle would die on
|
|
46
|
+
* "database is not open" and put a spurious error line on every clean exit.
|
|
47
|
+
*/
|
|
48
|
+
export declare function startTelemetryIngest(deps: TelemetryIngestDeps): () => Promise<void>;
|
|
49
|
+
//# sourceMappingURL=telemetryIngest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryIngest.d.ts","sourceRoot":"","sources":["../src/telemetryIngest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EAIL,KAAK,sBAAsB,EAE5B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAgB,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAyDjG,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;CACd;AAED,yCAAyC;AACzC,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,0BAA0B,CAAA;IAClC,MAAM,EAAE,sBAAsB,CAAA;IAC9B,KAAK,EAAE,KAAK,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAoFD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,0BAA0B,CAAC,CAqErC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CA6BnF"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { startSweeper } from '@cat-factory/node-server';
|
|
2
|
+
import { MAX_TELEMETRY_INGEST_CHARS, MachineTokenUnavailableError, TELEMETRY_INGEST_LIMITS, } from '@cat-factory/server';
|
|
3
|
+
// The UPSTREAM half of the mothership-mode telemetry bucket (docs/initiatives/mothership-mode.md,
|
|
4
|
+
// PR 5). The capture half writes every LLM call, dispatch context and performed search to the
|
|
5
|
+
// laptop's `node:sqlite` store, because putting a network round trip on the hot path of every
|
|
6
|
+
// model call is exactly what the local-first bucket exists to avoid. This is the background sweep
|
|
7
|
+
// that carries a FINISHED run's rows up to the mothership afterwards, so hosted teammates can read
|
|
8
|
+
// the observability of a run a developer drove, and so those rows outlive the node's short local
|
|
9
|
+
// retention window.
|
|
10
|
+
//
|
|
11
|
+
// Two design points worth keeping:
|
|
12
|
+
//
|
|
13
|
+
// - "Finished" is QUIESCENCE, not a run-status read. The node holds no execution index of its
|
|
14
|
+
// own (runs live on the mothership), so asking "which runs ended" would mean a remote query
|
|
15
|
+
// per candidate — the N+1 this bucket was created to avoid. A run that has produced no
|
|
16
|
+
// telemetry for the grace period is done as far as its telemetry is concerned, and a RESUMED
|
|
17
|
+
// run simply becomes a candidate again on its next quiet period.
|
|
18
|
+
// - Progress is a per-run high-water mark, advanced only after the whole run drained. A node
|
|
19
|
+
// that dies mid-drain re-offers the rows it already sent, which costs bandwidth and nothing
|
|
20
|
+
// else: the mothership's append is idempotent by row id.
|
|
21
|
+
/** How often the sweep runs. Telemetry is read after the fact, so a slow cadence is right. */
|
|
22
|
+
const INGEST_SWEEP_INTERVAL_MS = 5 * 60 * 1000;
|
|
23
|
+
/**
|
|
24
|
+
* How long a run must produce no telemetry before it is uploaded. Long enough that an agent step
|
|
25
|
+
* thinking between model calls is not mistaken for a finished run (which would upload the run
|
|
26
|
+
* repeatedly as it continued), short enough that a developer's teammates see a run's telemetry
|
|
27
|
+
* while it is still the thing being discussed.
|
|
28
|
+
*/
|
|
29
|
+
const QUIESCENCE_MS = 10 * 60 * 1000;
|
|
30
|
+
/** Runs uploaded per pass — a bound on how much a single sweep can spend on a backlog. */
|
|
31
|
+
const RUNS_PER_SWEEP = 20;
|
|
32
|
+
/**
|
|
33
|
+
* Rows read per page, per sink. Deliberately the mothership's own per-request ROW caps: a page the
|
|
34
|
+
* node built larger would be refused whole, and the drain would never advance.
|
|
35
|
+
*/
|
|
36
|
+
const PAGE_SIZES = TELEMETRY_INGEST_LIMITS;
|
|
37
|
+
/**
|
|
38
|
+
* Headroom left under {@link MAX_TELEMETRY_INGEST_CHARS} for everything in the request body that
|
|
39
|
+
* is not the rows themselves — the envelope's two ids, the sink key, the brackets and separators.
|
|
40
|
+
* Generous, because being a few hundred bytes over the mothership's cap costs a whole refused
|
|
41
|
+
* batch.
|
|
42
|
+
*/
|
|
43
|
+
const ENVELOPE_OVERHEAD_CHARS = 4_096;
|
|
44
|
+
/**
|
|
45
|
+
* The byte budget one posted batch may fill. The mothership enforces TWO caps — a row count AND
|
|
46
|
+
* {@link MAX_TELEMETRY_INGEST_CHARS} — and mirroring only the first is what let a page of 20
|
|
47
|
+
* snapshot rows (routinely megabytes each) exceed the byte cap, be refused 413 whole, and leave
|
|
48
|
+
* the run retrying the same doomed page every sweep until the local prune deleted it.
|
|
49
|
+
*/
|
|
50
|
+
const BATCH_BUDGET_CHARS = MAX_TELEMETRY_INGEST_CHARS - ENVELOPE_OVERHEAD_CHARS;
|
|
51
|
+
/** The last row of a page, as the cursor the next page resumes from. */
|
|
52
|
+
function cursorOf(rows) {
|
|
53
|
+
const last = rows[rows.length - 1];
|
|
54
|
+
return last ? { createdAt: last.createdAt, id: last.id } : undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Split one page into batches that each fit {@link BATCH_BUDGET_CHARS}, separating out any row
|
|
58
|
+
* that cannot fit ALONE.
|
|
59
|
+
*
|
|
60
|
+
* The row caps bound COUNT; this bounds BYTES, which is the axis a snapshot row moves — the whole
|
|
61
|
+
* composed prompt plus every injected context file's body. Sizing is by the row's own serialized
|
|
62
|
+
* length, the same measure the mothership applies to the body it receives.
|
|
63
|
+
*
|
|
64
|
+
* A row too big even by itself is returned in `oversized` rather than posted: sending it means a
|
|
65
|
+
* guaranteed 413, which fails the run's whole drain and re-offers the identical page on the next
|
|
66
|
+
* sweep, forever. Skipping it lets the rest of the run through, and the caller reports the drop.
|
|
67
|
+
*/
|
|
68
|
+
function budgetBatches(rows) {
|
|
69
|
+
const batches = [];
|
|
70
|
+
const oversized = [];
|
|
71
|
+
let batch = [];
|
|
72
|
+
let used = 0;
|
|
73
|
+
for (const row of rows) {
|
|
74
|
+
const chars = JSON.stringify(row).length;
|
|
75
|
+
if (chars > BATCH_BUDGET_CHARS) {
|
|
76
|
+
oversized.push({ id: row.id, chars });
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (batch.length > 0 && used + chars > BATCH_BUDGET_CHARS) {
|
|
80
|
+
batches.push(batch);
|
|
81
|
+
batch = [];
|
|
82
|
+
used = 0;
|
|
83
|
+
}
|
|
84
|
+
batch.push(row);
|
|
85
|
+
used += chars;
|
|
86
|
+
}
|
|
87
|
+
if (batch.length > 0)
|
|
88
|
+
batches.push(batch);
|
|
89
|
+
return { batches, oversized };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Drain ONE sink of one run, posting each page as one or more byte-budgeted batches. Pages are
|
|
93
|
+
* read forwards on the `(createdAt, id)` keyset, so a run's telemetry lands on the mothership in
|
|
94
|
+
* the order it was captured — which is what keeps a metric's prompt-delta chain readable there.
|
|
95
|
+
*
|
|
96
|
+
* The cursor advances past a skipped oversized row deliberately: it can never be uploaded, so
|
|
97
|
+
* holding the drain on it would strand every row behind it too. The caller names what was dropped.
|
|
98
|
+
*/
|
|
99
|
+
async function drainSink(read, limit, post) {
|
|
100
|
+
let cursor;
|
|
101
|
+
const drain = { uploaded: 0, oversized: [] };
|
|
102
|
+
for (;;) {
|
|
103
|
+
const rows = read(cursor, limit);
|
|
104
|
+
if (rows.length === 0)
|
|
105
|
+
return drain;
|
|
106
|
+
const budgeted = budgetBatches(rows);
|
|
107
|
+
for (const batch of budgeted.batches) {
|
|
108
|
+
await post(batch);
|
|
109
|
+
drain.uploaded += batch.length;
|
|
110
|
+
}
|
|
111
|
+
drain.oversized.push(...budgeted.oversized);
|
|
112
|
+
cursor = cursorOf(rows);
|
|
113
|
+
// A short page is the last one; asking again would cost a query to learn nothing.
|
|
114
|
+
if (rows.length < limit)
|
|
115
|
+
return drain;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Upload every quiesced run's telemetry once. Pure over its dependencies (no timer), so it is
|
|
120
|
+
* unit-testable directly — the same shape as `sweepLocalTelemetryRetention`.
|
|
121
|
+
*
|
|
122
|
+
* A run whose upload fails is left UNMARKED and counted in `failed`: the next pass retries it from
|
|
123
|
+
* the beginning, which is safe precisely because the mothership's append is idempotent by row id.
|
|
124
|
+
* One run's failure never stops the pass — a single unreachable moment must not park the backlog.
|
|
125
|
+
*/
|
|
126
|
+
export async function sweepTelemetryIngest(deps, now) {
|
|
127
|
+
const pending = deps.reader.listPendingRuns(now - QUIESCENCE_MS, RUNS_PER_SWEEP);
|
|
128
|
+
const result = {
|
|
129
|
+
runs: 0,
|
|
130
|
+
metrics: 0,
|
|
131
|
+
snapshots: 0,
|
|
132
|
+
searchQueries: 0,
|
|
133
|
+
failed: 0,
|
|
134
|
+
skipped: 0,
|
|
135
|
+
};
|
|
136
|
+
for (const run of pending) {
|
|
137
|
+
const { workspaceId, executionId } = run;
|
|
138
|
+
const send = (batch) => deps.client.ingest({ workspaceId, executionId, ...batch }).then(() => undefined);
|
|
139
|
+
try {
|
|
140
|
+
const metrics = await drainSink((cursor, limit) => deps.reader.listMetrics(workspaceId, executionId, cursor, limit), PAGE_SIZES.metrics, (rows) => send({ metrics: rows }));
|
|
141
|
+
const snapshots = await drainSink((cursor, limit) => deps.reader.listSnapshots(workspaceId, executionId, cursor, limit), PAGE_SIZES.snapshots, (rows) => send({ snapshots: rows }));
|
|
142
|
+
const searchQueries = await drainSink((cursor, limit) => deps.reader.listSearchQueries(workspaceId, executionId, cursor, limit), PAGE_SIZES.searchQueries, (rows) => send({ searchQueries: rows }));
|
|
143
|
+
result.metrics += metrics.uploaded;
|
|
144
|
+
result.snapshots += snapshots.uploaded;
|
|
145
|
+
result.searchQueries += searchQueries.uploaded;
|
|
146
|
+
// A row too large to ever post is dropped rather than retried forever — but a cap that drops
|
|
147
|
+
// something says what it dropped, naming the rows so the gap in the mothership's view of
|
|
148
|
+
// this run is explicable rather than an unexplained hole.
|
|
149
|
+
const oversized = [...metrics.oversized, ...snapshots.oversized, ...searchQueries.oversized];
|
|
150
|
+
if (oversized.length > 0) {
|
|
151
|
+
result.skipped += oversized.length;
|
|
152
|
+
deps.log.warn('mothership telemetry ingest skipped rows over the body cap', {
|
|
153
|
+
workspaceId,
|
|
154
|
+
executionId,
|
|
155
|
+
skipped: oversized.length,
|
|
156
|
+
capChars: BATCH_BUDGET_CHARS,
|
|
157
|
+
rows: oversized.map((row) => `${row.id}:${row.chars}`).join(','),
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
// Marked only once every sink drained — the mark is what stops the run being re-offered, so
|
|
161
|
+
// writing it after a partial upload would strand whatever had not been sent yet.
|
|
162
|
+
deps.reader.markIngested(workspaceId, executionId, run.lastWriteAt, now);
|
|
163
|
+
result.runs += 1;
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
result.failed += 1;
|
|
167
|
+
// No token yet: EVERY remaining run would fail the same way, so the pass stops here with one
|
|
168
|
+
// line instead of twenty identical ones. The runs stay candidates — nothing was marked.
|
|
169
|
+
if (error instanceof MachineTokenUnavailableError) {
|
|
170
|
+
deps.log.info('mothership telemetry ingest deferred: node has not logged in yet', {
|
|
171
|
+
pending: pending.length,
|
|
172
|
+
});
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
deps.log.warn('mothership telemetry ingest failed for a run', {
|
|
176
|
+
workspaceId,
|
|
177
|
+
executionId,
|
|
178
|
+
err: error instanceof Error ? error.message : String(error),
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Start the periodic telemetry ingest sweep. Best-effort throughout — losing observability must
|
|
186
|
+
* never take the node down, and an unreachable mothership only means the rows stay local until it
|
|
187
|
+
* comes back.
|
|
188
|
+
*
|
|
189
|
+
* Like the retention sweep, the returned stop function is ASYNC and must be AWAITED before the
|
|
190
|
+
* telemetry store is closed: a pass in flight when shutdown closes the SQLite handle would die on
|
|
191
|
+
* "database is not open" and put a spurious error line on every clean exit.
|
|
192
|
+
*/
|
|
193
|
+
export function startTelemetryIngest(deps) {
|
|
194
|
+
let stopped = false;
|
|
195
|
+
let inFlight;
|
|
196
|
+
const stopSweeper = startSweeper({
|
|
197
|
+
name: 'mothership-telemetry-ingest',
|
|
198
|
+
intervalMs: INGEST_SWEEP_INTERVAL_MS,
|
|
199
|
+
log: deps.log,
|
|
200
|
+
failureMessage: 'mothership telemetry ingest sweep failed',
|
|
201
|
+
tick: async () => {
|
|
202
|
+
if (stopped)
|
|
203
|
+
return;
|
|
204
|
+
const pass = sweepTelemetryIngest(deps, deps.clock.now());
|
|
205
|
+
inFlight = pass;
|
|
206
|
+
try {
|
|
207
|
+
const moved = await pass;
|
|
208
|
+
if (moved.runs > 0 || moved.failed > 0 || moved.skipped > 0) {
|
|
209
|
+
deps.log.info('mothership telemetry ingest uploaded runs', { ...moved });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
if (inFlight === pass)
|
|
214
|
+
inFlight = undefined;
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
return async () => {
|
|
219
|
+
stopped = true;
|
|
220
|
+
stopSweeper();
|
|
221
|
+
// silent-catch-ok: the sweeper's own error handler already logged this pass's failure; here we
|
|
222
|
+
// only need it to have FINISHED touching the store before the caller closes it.
|
|
223
|
+
await inFlight?.catch(() => undefined);
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=telemetryIngest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetryIngest.js","sourceRoot":"","sources":["../src/telemetryIngest.ts"],"names":[],"mappings":"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"}
|