@cat-factory/local-server 0.84.1 → 0.85.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.
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,oBAAoB,EACrB,MAAM,0BAA0B,CAAA;AAWjC,OAAO,KAAK,EAAqC,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAO7F,OAAO,KAAK,EACV,WAAW,EAGZ,MAAM,qBAAqB,CAAA;AAwtB5B,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe,CAqRlF;AAiDD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACjC,WAAW,EAAE,CAMf;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACjC,WAAW,EAAE,CAUf"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAGV,oBAAoB,EACrB,MAAM,0BAA0B,CAAA;AAYjC,OAAO,KAAK,EAAqC,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAO7F,OAAO,KAAK,EACV,WAAW,EAGZ,MAAM,qBAAqB,CAAA;AAwtB5B,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe,CAuSlF;AAiDD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACjC,WAAW,EAAE,CAMf;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GACjC,WAAW,EAAE,CAUf"}
package/dist/container.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { CryptoIdGenerator, DrizzleEnvironmentUserHandlerRepository, DrizzleGitHubInstallationRepository, DrizzleLocalSettingsRepository, DrizzleRunnerPoolConnectionRepository, LayeredEventPropagator, ProvisioningLogRecorder, SystemClock, buildNodeContainer, buildNodeResolveTransport, createDrizzleRepositories, executionRuntime, loadNodeConfig, withProvisioningLog, } from '@cat-factory/node-server';
2
2
  import { SqliteWorkRunner, composeMothership, createMothershipConnector, isMothershipMode, } from './mothership.js';
3
+ import { startLocalTelemetryRetention } from './telemetryRetention.js';
3
4
  import { ConflictError, MODEL_PRESET_SEED_IDS, runBestEffort } from '@cat-factory/kernel';
4
5
  import { WorkspaceSettingsService } from '@cat-factory/orchestration';
5
6
  import { buildInfrastructureCapabilities, logger, RunnerJobClient } from '@cat-factory/server';
@@ -741,6 +742,14 @@ export function buildLocalContainer(options) {
741
742
  localPreflightProbes,
742
743
  inProcessRunner,
743
744
  }));
745
+ // Telemetry retention (docs/initiatives/mothership-mode.md, PR 5): the local telemetry store is
746
+ // written on every LLM call / dispatch / provisioning attempt and nothing else prunes it — the
747
+ // mothership's cron owns ITS tables, and the Node facade's retention sweeper runs from `start()`,
748
+ // which a mothership-mode boot never calls. Started here (not in the boot path) so it shares the
749
+ // store's lifecycle: opened by `composeMothership`, pruned here, closed in `onShutdown` below.
750
+ const stopTelemetryRetention = mothership
751
+ ? startLocalTelemetryRetention(mothership.telemetryStore, config.retention, clock, container.logger)
752
+ : undefined;
744
753
  // Real-time INBOUND (docs/initiatives/mothership-mode.md, PR 2): hold one machine-authed
745
754
  // subscription to the mothership per workspace someone is watching here, so org activity raised
746
755
  // by a hosted teammate (or relayed up by a peer laptop) animates this board too. Bound to the
@@ -776,11 +785,15 @@ export function buildLocalContainer(options) {
776
785
  // On shutdown (the boot paths call this from their SIGTERM/SIGINT handlers): stop the
777
786
  // native host-process harnesses (agent + deploy) so a graceful exit tears them down —
778
787
  // aborting their in-flight CLI children — rather than relying on the parent-exit
779
- // backstop kill; in mothership mode ALSO stop the work runner's recovery poll FIRST so
780
- // it can't touch the queue mid-close, then release both local SQLite handles.
788
+ // backstop kill; in mothership mode ALSO stop the work runner's recovery poll AND the
789
+ // telemetry retention sweep FIRST so neither can touch a store mid-close, then release
790
+ // the local SQLite handles.
781
791
  onShutdown: async () => {
782
792
  if (mothership) {
783
793
  inProcessRunner?.stop();
794
+ // Awaited, not fire-and-forget: an in-flight prune must finish touching the SQLite
795
+ // handle before `close()` pulls it out from under it.
796
+ await stopTelemetryRetention?.();
784
797
  mothership.close();
785
798
  }
786
799
  await getNativeProcessTransport()?.shutdown();
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../src/container.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * `@cat-factory/executor-harness`'s version (the value CI tags the published image with, and
4
4
  * the same tag `deploy/backend` pins). Bump it whenever the harness image bumps.
5
5
  */
6
- export declare const RECOMMENDED_HARNESS_IMAGE = "ghcr.io/kibertoad/cat-factory-executor:1.68.0";
6
+ export declare const RECOMMENDED_HARNESS_IMAGE = "ghcr.io/kibertoad/cat-factory-executor:1.70.0";
7
7
  /**
8
8
  * The effective harness image ref: an explicit `LOCAL_HARNESS_IMAGE` wins (a custom build, a
9
9
  * different pin, or a mutable tag), else the backend-matched {@link RECOMMENDED_HARNESS_IMAGE}.
@@ -22,7 +22,7 @@ import { isOffValue } from './envFlags.js';
22
22
  * `@cat-factory/executor-harness`'s version (the value CI tags the published image with, and
23
23
  * the same tag `deploy/backend` pins). Bump it whenever the harness image bumps.
24
24
  */
25
- export const RECOMMENDED_HARNESS_IMAGE = 'ghcr.io/kibertoad/cat-factory-executor:1.68.0';
25
+ export const RECOMMENDED_HARNESS_IMAGE = 'ghcr.io/kibertoad/cat-factory-executor:1.70.0';
26
26
  /**
27
27
  * The effective harness image ref: an explicit `LOCAL_HARNESS_IMAGE` wins (a custom build, a
28
28
  * different pin, or a mutable tag), else the backend-matched {@link RECOMMENDED_HARNESS_IMAGE}.
@@ -5,6 +5,7 @@ import { MothershipWebSocketPropagator } from './mothershipPropagator.js';
5
5
  import { MothershipEventSubscriber } from './mothershipSubscriber.js';
6
6
  import { type LocalCredentialStore } from './sqlite/credentialStore.js';
7
7
  import { type LocalSettingsStore } from './sqlite/localSettingsStore.js';
8
+ import { type LocalTelemetryStore } from './sqlite/telemetryStore.js';
8
9
  import { type LocalMachineTokenStore } from './sqlite/machineTokenStore.js';
9
10
  import { SqliteWorkQueue } from './sqlite/workQueue.js';
10
11
  /** True when this local node should boot in mothership mode (a mothership URL is configured). */
@@ -12,7 +13,8 @@ export declare function isMothershipMode(env: NodeJS.ProcessEnv): boolean;
12
13
  /** The composed mothership persistence: remote org repos + the local credential store. */
13
14
  export interface MothershipComposition {
14
15
  /**
15
- * The full {@link CoreRepositories} surface, every entry remote (RPC-backed). The server-side
16
+ * The full {@link CoreRepositories} surface, remote (RPC-backed) except the local-first
17
+ * TELEMETRY bucket layered over it from {@link telemetryStore}. The server-side
16
18
  * allow-list (`REMOTE_PERSISTENCE_METHODS`) gates which repo+method actually executes on the
17
19
  * mothership; an un-allow-listed call returns `unknown_method`. The allow-list covers the
18
20
  * board-load + run paths (resolved by the Phase-3 merge gate — see
@@ -36,6 +38,16 @@ export interface MothershipComposition {
36
38
  * facade's own differentiator — so it lives on the laptop, not the mothership.
37
39
  */
38
40
  localSettingsStore: LocalSettingsStore;
41
+ /**
42
+ * The local-sqlite TELEMETRY store (product decision 5: telemetry/logs are local-first). Holds
43
+ * the per-call LLM metrics, agent-context snapshots, performed web searches, provisioning log
44
+ * and modeled subscription quota cycles a run produces on this machine — append-heavy,
45
+ * high-volume, short-retention state that must never ride the per-call persistence RPC. Layered
46
+ * over the remote registry in {@link repos}, so every consumer (recorders, the observability
47
+ * endpoints, the board's per-step rollups) resolves it with no per-consumer wiring; the local
48
+ * retention sweep prunes it to the deployment's configured window.
49
+ */
50
+ telemetryStore: LocalTelemetryStore;
39
51
  /**
40
52
  * Delegated GitHub token source: installation tokens minted BY THE MOTHERSHIP over
41
53
  * `POST /internal/github/installation-token` (the mothership owns the GitHub App; its
@@ -1 +1 @@
1
- {"version":3,"file":"mothership.d.ts","sourceRoot":"","sources":["../src/mothership.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mothership.d.ts","sourceRoot":"","sources":["../src/mothership.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,18 @@ import { MothershipWebSocketPropagator } from './mothershipPropagator.js';
7
7
  import { MothershipEventSubscriber } from './mothershipSubscriber.js';
8
8
  import { createLocalCredentialStore } from './sqlite/credentialStore.js';
9
9
  import { createLocalSettingsStore } from './sqlite/localSettingsStore.js';
10
+ import { createLocalTelemetryStore } from './sqlite/telemetryStore.js';
10
11
  import { createLocalMachineTokenStore, } from './sqlite/machineTokenStore.js';
11
12
  import { SqliteWorkQueue, createWorkQueue } from './sqlite/workQueue.js';
12
13
  // Mothership mode (docs/initiatives/mothership-mode.md): the local node keeps NO main
13
14
  // database. Org/durable state lives on a hosted "mothership" cat-factory (Node or Cloudflare)
14
15
  // and is reached over the authenticated `/internal/persistence` machine API; agent/model
15
16
  // CREDENTIALS stay on the laptop in a file-based `node:sqlite` store, sealed with the LOCAL
16
- // key (the mothership's ENCRYPTION_KEY never reaches the machine). This module composes those
17
- // two halves into the seams `buildLocalContainer` threads into `buildNodeContainer`, and
18
- // supplies the in-process work runner that replaces pg-boss when there is no Postgres.
17
+ // key (the mothership's ENCRYPTION_KEY never reaches the machine); and run TELEMETRY is
18
+ // local-first in a second `node:sqlite` store (append-heavy and hot-path, so it must never
19
+ // ride the per-call RPC). This module composes those halves into the seams
20
+ // `buildLocalContainer` threads into `buildNodeContainer`, and supplies the in-process work
21
+ // runner that replaces pg-boss when there is no Postgres.
19
22
  /** True when this local node should boot in mothership mode (a mothership URL is configured). */
20
23
  export function isMothershipMode(env) {
21
24
  return !!env.LOCAL_MOTHERSHIP_URL?.trim();
@@ -62,7 +65,22 @@ export function composeMothership(env) {
62
65
  const envToken = env.LOCAL_MOTHERSHIP_TOKEN?.trim();
63
66
  const machineToken = () => envToken || validCachedToken(machineTokenStore);
64
67
  const client = new HttpPersistenceRpcClient({ baseUrl, token: machineToken });
65
- const repos = createRemoteRepositoryRegistry(client);
68
+ // Telemetry is LOCAL-FIRST (product decision 5), so its repositories are layered over the
69
+ // remote registry rather than proxied: they are written on the hot path of every LLM call,
70
+ // dispatch and provisioning attempt, and none of their methods is (or should be) allow-listed
71
+ // on the machine API. Opened before the registry so the composition is a single expression.
72
+ const telemetryStore = createLocalTelemetryStore(localDbPath(env.LOCAL_MOTHERSHIP_TELEMETRY_DB, 'telemetry.sqlite'));
73
+ // Typed by `LocalFirstPersistenceRepository` (the server-side declaration of the bucket), so
74
+ // the map can never be HALF-wired: omitting an entry fails to typecheck rather than silently
75
+ // leaving that repository on a remote proxy the allow-list only ever answers `unknown_method`.
76
+ const localFirst = {
77
+ llmCallMetricRepository: telemetryStore.llmCallMetricRepository,
78
+ agentContextSnapshotRepository: telemetryStore.agentContextSnapshotRepository,
79
+ agentSearchQueryRepository: telemetryStore.agentSearchQueryRepository,
80
+ provisioningLogRepository: telemetryStore.provisioningLogRepository,
81
+ subscriptionQuotaCycleRepository: telemetryStore.subscriptionQuotaCycleRepository,
82
+ };
83
+ const repos = createRemoteRepositoryRegistry(client, localFirst);
66
84
  // Same base URL + per-request token as the persistence RPC, so GitHub delegation follows
67
85
  // the exact connect/expiry lifecycle of the rest of the machine API.
68
86
  const githubTokenSource = new DelegatedAppTokenSource({ baseUrl, token: machineToken });
@@ -102,12 +120,14 @@ export function composeMothership(env) {
102
120
  notificationChannel,
103
121
  credentialStore,
104
122
  localSettingsStore,
123
+ telemetryStore,
105
124
  workQueue,
106
125
  machineTokenStore,
107
126
  close: () => {
108
127
  realtimeSubscriber.stop();
109
128
  credentialStore.close();
110
129
  localSettingsStore.close();
130
+ telemetryStore.close();
111
131
  workQueue.close();
112
132
  machineTokenStore.close();
113
133
  },
@@ -1 +1 @@
1
- {"version":3,"file":"mothership.js","sourceRoot":"","sources":["../src/mothership.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAA2C,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAClG,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,wBAAwB,EAGxB,yBAAyB,EACzB,8BAA8B,EAC9B,MAAM,GACP,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAA6B,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AACnG,OAAO,EAA2B,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAClG,OAAO,EAEL,4BAA4B,GAC7B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAExE,sFAAsF;AACtF,8FAA8F;AAC9F,yFAAyF;AACzF,4FAA4F;AAC5F,8FAA8F;AAC9F,yFAAyF;AACzF,uFAAuF;AAEvF,iGAAiG;AACjG,MAAM,UAAU,gBAAgB,CAAC,GAAsB;IACrD,OAAO,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAA;AAC3C,CAAC;AAED,qGAAqG;AACrG,SAAS,gBAAgB,CAAC,KAA6B;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC3B,OAAO,MAAM,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,QAA4B,EAAE,QAAgB;IACjE,MAAM,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAA;IACjC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAA;IAC3C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAC5B,CAAC;AA+ED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAsB;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAA;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IACD,MAAM,iBAAiB,GAAG,4BAA4B,CACpD,WAAW,CAAC,GAAG,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CACnE,CAAA;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAA;IACnD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,QAAQ,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAG,8BAA8B,CAAC,MAAM,CAAgC,CAAA;IACnF,yFAAyF;IACzF,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;IACvF,kGAAkG;IAClG,0FAA0F;IAC1F,kFAAkF;IAClF,EAAE;IACF,8FAA8F;IAC9F,+FAA+F;IAC/F,6FAA6F;IAC7F,MAAM,gBAAgB,GAAG,mBAAmB,MAAM,CAAC,UAAU,EAAE,EAAE,CAAA;IACjE,MAAM,eAAe,GAAG,IAAI,6BAA6B,CACvD,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAC5D,gBAAgB,CACjB,CAAA;IACD,MAAM,kBAAkB,GAAG,IAAI,yBAAyB,CAAC;QACvD,OAAO;QACP,KAAK,EAAE,YAAY;QACnB,YAAY,EAAE,gBAAgB;QAC9B,GAAG,EAAE,MAAM;KACZ,CAAC,CAAA;IACF,gGAAgG;IAChG,+FAA+F;IAC/F,6DAA6D;IAC7D,MAAM,mBAAmB,GAAG,IAAI,yBAAyB,CAAC;QACxD,MAAM,EAAE,IAAI,6BAA6B,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAC3E,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CACtB,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;YACrD,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3D,GAAG,GAAG;SACP,CAAC;KACL,CAAC,CAAA;IACF,MAAM,eAAe,GAAG,0BAA0B,CAChD,WAAW,CAAC,GAAG,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,CACtE,CAAA;IACD,MAAM,kBAAkB,GAAG,wBAAwB,CACjD,WAAW,CAAC,GAAG,CAAC,4BAA4B,EAAE,uBAAuB,CAAC,CACvE,CAAA;IACD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC,CAAA;IACjG,OAAO;QACL,KAAK;QACL,iBAAiB;QACjB,eAAe;QACf,kBAAkB;QAClB,mBAAmB;QACnB,eAAe;QACf,kBAAkB;QAClB,SAAS;QACT,iBAAiB;QACjB,KAAK,EAAE,GAAG,EAAE;YACV,kBAAkB,CAAC,IAAI,EAAE,CAAA;YACzB,eAAe,CAAC,KAAK,EAAE,CAAA;YACvB,kBAAkB,CAAC,KAAK,EAAE,CAAA;YAC1B,SAAS,CAAC,KAAK,EAAE,CAAA;YACjB,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAC3B,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAIzC;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAA;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC/C,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,OAAO;YACnB,IAAI,GAAa,CAAA;YACjB,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,OAAO,qBAAqB,EAAE;oBACrD,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,OAAO,EAAE,EAAE;oBACnF,qFAAqF;oBACrF,iFAAiF;oBACjF,IAAI,EAAE,IAAI;iBACX,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,mCAAmC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBAC/F,CAAA;YACH,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAcxC,CAAA;YACR,IACE,CAAC,GAAG,CAAC,EAAE;gBACP,CAAC,IAAI,EAAE,KAAK;gBACZ,CAAC,IAAI,CAAC,MAAM;gBACZ,CAAC,IAAI,CAAC,MAAM;gBACZ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC/B,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;gBAC5B,CAAC,IAAI,CAAC,IAAI,EACV,CAAC;gBACD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG;oBACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,IAAI,qCAAqC;iBACvE,CAAA;YACH,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAA;YACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;QAClF,CAAC;KACF,CAAA;AACH,CAAC;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,gBAAgB;IAQR,KAAK;IACL,IAAI;IACJ,GAAG;IACH,GAAG;IAVd,IAAI,CAAmB;IACvB,SAAS,CAAqB;IACrB,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,UAAU,CAAiC;IAC3C,OAAO,GAAG,KAAK,CAAA;IAEvB,YACmB,KAAsB,EACtB,IAA6B,EAC7B,GAAW,EACX,GAAG,GAAiB,IAAI,CAAC,GAAG;qBAH5B,KAAK;oBACL,IAAI;mBACJ,GAAG;mBACH,GAAG;IACnB,CAAC;IAEJ;;;;;;;OAOG;IACH,IAAI,CAAC,IAAsB,EAAE,SAA8B;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,+FAA+F;QAC/F,gEAAgE;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;QACzC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oEAAoE,EAAE;gBAClF,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,8FAA8F;QAC9F,qFAAqF;QACrF,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC5B,gGAAgG;QAChG,yFAAyF;QACzF,qFAAqF;QACrF,IAAI,IAAI,CAAC,UAAU;YAAE,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAC9B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAA;IAC3B,CAAC;IAED,sGAAsG;IACtG,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,IAAI,CAAC,UAAU;YAAE,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,WAAmB;QACrD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,WAAmB;QAC3D,8FAA8F;QAC9F,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,0FAA0F;QAC1F,8FAA8F;IAChG,CAAC;IAED;;;;;;OAMG;IACK,IAAI,CAAC,WAAmB,EAAE,WAAmB;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1D,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,sGAAsG;IAC9F,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACtC,6FAA6F;QAC7F,gGAAgG;QAChG,4CAA4C;QAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAC7C,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,IAAI,CAAC,WAAW,EACrB,IAAI,CAAC,OAAO,CACb,EAAE,CAAC;YACF,KAAK,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QACnF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YACzE,IAAI,CAAC,GAAG;gBAAE,MAAK;YACf,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,WAAmB,EAAE,WAAmB;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,IAAI,CAAC,IAAI;YAAE,OAAM;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACpF,GAAG,EAAE,IAAI,CAAC,GAAG;aACd,CAAC,CAAA;YACF,0FAA0F;YAC1F,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAM;YACxB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,0FAA0F;gBAC1F,yFAAyF;gBACzF,qFAAqF;gBACrF,2FAA2F;gBAC3F,yFAAyF;gBACzF,8CAA8C;gBAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAC5F,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC1D,CAAC;iBAAM,CAAC;gBACN,2FAA2F;gBAC3F,+EAA+E;gBAC/E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAM;YACxB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE;gBAC9D,WAAW;gBACX,WAAW;gBACX,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtD,CAAC,CAAA;YACF,6FAA6F;YAC7F,yFAAyF;YACzF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC3E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAClC,CAAC;QACD,8FAA8F;QAC9F,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,gGAAgG;IACxF,YAAY,CAAC,OAAe;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;QAClE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAA;IACjB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,WAAW,CACvB,WAAmB,EACnB,WAAmB,EACnB,QAAgB;QAEhB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mEAAmE,EAAE;YAClF,WAAW;YACX,WAAW;YACX,QAAQ;SACT,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,EAAE,OAAO,CACtB,WAAW,EACX,WAAW,EACX,2BAA2B,QAAQ,6BAA6B,EAChE,SAAS,EACT,IAAI,CACL,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,6DAA6D,EAAE;gBAC5E,WAAW;gBACX,WAAW;gBACX,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QAC3C,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC5E,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAM;YACxB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;oBAAE,SAAQ;gBACtC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,SAAQ;gBACtC,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;oBAAE,SAAS,EAAE,CAAA;YAClF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gFAAgF;YAChF,OAAM;QACR,CAAC;QACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,IAAI,CACX,oFAAoF,EACpF,EAAE,SAAS,EAAE,CACd,CAAA;YACD,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"mothership.js","sourceRoot":"","sources":["../src/mothership.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type AgentContextSnapshotRepository, type AgentSearchQueryRepository, type LlmCallMetricRepository, type ProvisioningLogRepository, type SubscriptionQuotaCycleRepository } from '@cat-factory/kernel';
2
+ /**
3
+ * The telemetry repositories a mothership-mode node serves LOCALLY, keyed by the name the engine
4
+ * (and the remote registry) addresses them by. `composeMothership` layers this map over the remote
5
+ * repository registry, so every consumer — the recorders, the observability read endpoints, the
6
+ * board's per-step rollups and the retention sweep — resolves the local store with no per-consumer
7
+ * wiring.
8
+ */
9
+ export interface LocalTelemetryRepositories {
10
+ llmCallMetricRepository: LlmCallMetricRepository;
11
+ agentContextSnapshotRepository: AgentContextSnapshotRepository;
12
+ agentSearchQueryRepository: AgentSearchQueryRepository;
13
+ provisioningLogRepository: ProvisioningLogRepository;
14
+ subscriptionQuotaCycleRepository: SubscriptionQuotaCycleRepository;
15
+ }
16
+ /** The local telemetry repositories plus a handle to close the underlying db. */
17
+ export interface LocalTelemetryStore extends LocalTelemetryRepositories {
18
+ close(): void;
19
+ }
20
+ /**
21
+ * Open the local telemetry store at `path` (a file under the developer's config dir, or
22
+ * `:memory:` in tests). Holds ONLY high-volume run telemetry — never a credential, never org
23
+ * state — and is pruned to the deployment's retention window by the local retention sweep.
24
+ */
25
+ export declare function createLocalTelemetryStore(path: string): LocalTelemetryStore;
26
+ //# sourceMappingURL=telemetryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetryStore.d.ts","sourceRoot":"","sources":["../../src/sqlite/telemetryStore.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,8BAA8B,EAEnC,KAAK,0BAA0B,EAE/B,KAAK,uBAAuB,EAK5B,KAAK,yBAAyB,EAE9B,KAAK,gCAAgC,EAGtC,MAAM,qBAAqB,CAAA;AAgwB5B;;;;;;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,iFAAiF;AACjF,MAAM,WAAW,mBAAoB,SAAQ,0BAA0B;IACrE,KAAK,IAAI,IAAI,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAU3E"}
@@ -0,0 +1,518 @@
1
+ import { LLM_WARNING_FINISH_REASONS, } from '@cat-factory/kernel';
2
+ import { isWebSearchProvider, subscriptionVendorSchema, } from '@cat-factory/contracts';
3
+ import { decodeEnum } from '@cat-factory/server';
4
+ import { openSqliteDb } from './db.js';
5
+ // The mothership-mode LOCAL telemetry store (docs/initiatives/mothership-mode.md, PR 5).
6
+ //
7
+ // Telemetry is the third bucket, distinct from both the remote org/durable state and the local
8
+ // CREDENTIALS: it is append-heavy, high-volume and short-retention (product decision 5 —
9
+ // "telemetry/logs are local-first"). Routing it through the per-call persistence RPC would put a
10
+ // network round trip on the hot path of every LLM call, every dispatch and every provisioning
11
+ // attempt — so a mothership-mode node writes it HERE, to a file-based `node:sqlite` database on
12
+ // the laptop, and reads it back from the same place.
13
+ //
14
+ // Before this store existed those repositories resolved to the remote registry, where none of
15
+ // their methods is allow-listed: every write came back `unknown_method` (swallowed by the
16
+ // best-effort recorders) and every read came back empty. So a mothership-mode developer's
17
+ // observability panel, per-step token rollups, web-search log and provisioning "View logs"
18
+ // surfaces were all blank, and the board's per-run token counters read zero — the run telemetry
19
+ // most worth inspecting silently did not exist.
20
+ //
21
+ // What is NOT here: `tokenUsageRepository`. The spend ledger looks like telemetry but is the
22
+ // org's BUDGET SAFEGUARD — the gate reads its rollups remotely (`totalsSinceFor*`, long
23
+ // allow-listed), so a laptop-local ledger would leave every local run invisible to the
24
+ // workspace/account/user budget it is supposed to answer to. It stays remote, with `record` now
25
+ // allow-listed under a scope rule that pins the row's denormalized account/user to the caller
26
+ // (see `REMOTE_PERSISTENCE_METHODS`).
27
+ //
28
+ // The schema mirrors the D1 telemetry/provisioning databases column-for-column (D1 IS SQLite, so
29
+ // `D1LlmCallMetricRepository` et al. are the closest reference) and each repository mirrors its
30
+ // `D1*` counterpart's SQL, so a mothership-mode node chains prompt deltas, aggregates per-kind
31
+ // rollups and prunes exactly like a Postgres or D1 one. `DatabaseSync` is synchronous, so the
32
+ // ports' async methods execute synchronously here.
33
+ /** `length` / `content_filter` as a SQL list literal — shared constant, so the two agree. */
34
+ const WARNING_REASONS_SQL = LLM_WARNING_FINISH_REASONS.map((r) => `'${r}'`).join(', ');
35
+ const SCHEMA = `
36
+ CREATE TABLE IF NOT EXISTS llm_call_metrics (
37
+ id TEXT PRIMARY KEY,
38
+ workspace_id TEXT NOT NULL,
39
+ execution_id TEXT,
40
+ agent_kind TEXT NOT NULL,
41
+ provider TEXT NOT NULL,
42
+ model TEXT NOT NULL,
43
+ created_at INTEGER NOT NULL,
44
+ streaming INTEGER NOT NULL DEFAULT 0,
45
+ message_count INTEGER NOT NULL DEFAULT 0,
46
+ tool_count INTEGER NOT NULL DEFAULT 0,
47
+ request_max_tokens INTEGER,
48
+ prompt_tokens INTEGER NOT NULL DEFAULT 0,
49
+ cache_read_tokens INTEGER NOT NULL DEFAULT 0,
50
+ cache_write_tokens INTEGER NOT NULL DEFAULT 0,
51
+ completion_tokens INTEGER NOT NULL DEFAULT 0,
52
+ total_tokens INTEGER NOT NULL DEFAULT 0,
53
+ finish_reason TEXT,
54
+ upstream_ms INTEGER NOT NULL DEFAULT 0,
55
+ overhead_ms INTEGER NOT NULL DEFAULT 0,
56
+ total_ms INTEGER NOT NULL DEFAULT 0,
57
+ ok INTEGER NOT NULL DEFAULT 1,
58
+ http_status INTEGER,
59
+ error_message TEXT,
60
+ prompt_text TEXT NOT NULL DEFAULT '',
61
+ prompt_prefix_count INTEGER NOT NULL DEFAULT 0,
62
+ prompt_hash TEXT NOT NULL DEFAULT '',
63
+ response_text TEXT NOT NULL DEFAULT '',
64
+ reasoning_text TEXT NOT NULL DEFAULT '',
65
+ -- The phase/turn axes, mirroring D1 telemetry migration 0004 including its nullability: phase
66
+ -- defaults to '' so an older harness image's rows are a REAL rollup group rather than dropped,
67
+ -- and turn_index stays NULLABLE because the proxy path has no job-scoped counter -- a 0 there
68
+ -- would read as "the first turn" and sort every proxied call to the front of its phase.
69
+ phase TEXT NOT NULL DEFAULT '',
70
+ turn_index INTEGER
71
+ );
72
+ CREATE INDEX IF NOT EXISTS idx_llm_call_metrics_execution
73
+ ON llm_call_metrics (workspace_id, execution_id, created_at);
74
+ CREATE INDEX IF NOT EXISTS idx_llm_call_metrics_created ON llm_call_metrics (created_at);
75
+
76
+ CREATE TABLE IF NOT EXISTS agent_context_snapshots (
77
+ id TEXT PRIMARY KEY,
78
+ workspace_id TEXT NOT NULL,
79
+ execution_id TEXT NOT NULL,
80
+ agent_kind TEXT NOT NULL,
81
+ step_index INTEGER NOT NULL,
82
+ created_at INTEGER NOT NULL,
83
+ model TEXT,
84
+ harness TEXT,
85
+ system_prompt TEXT NOT NULL DEFAULT '',
86
+ user_prompt TEXT NOT NULL DEFAULT '',
87
+ fragments TEXT NOT NULL DEFAULT '[]',
88
+ context_files TEXT NOT NULL DEFAULT '[]',
89
+ extras TEXT NOT NULL DEFAULT '{}'
90
+ );
91
+ CREATE INDEX IF NOT EXISTS idx_agent_context_snapshots_execution
92
+ ON agent_context_snapshots (workspace_id, execution_id, created_at);
93
+ CREATE INDEX IF NOT EXISTS idx_agent_context_snapshots_created
94
+ ON agent_context_snapshots (created_at);
95
+
96
+ CREATE TABLE IF NOT EXISTS agent_search_queries (
97
+ id TEXT PRIMARY KEY,
98
+ workspace_id TEXT NOT NULL,
99
+ execution_id TEXT NOT NULL,
100
+ agent_kind TEXT NOT NULL,
101
+ provider TEXT,
102
+ query TEXT NOT NULL DEFAULT '',
103
+ result_count INTEGER NOT NULL DEFAULT 0,
104
+ created_at INTEGER NOT NULL
105
+ );
106
+ CREATE INDEX IF NOT EXISTS idx_agent_search_queries_execution
107
+ ON agent_search_queries (workspace_id, execution_id, created_at);
108
+ CREATE INDEX IF NOT EXISTS idx_agent_search_queries_created
109
+ ON agent_search_queries (created_at);
110
+
111
+ CREATE TABLE IF NOT EXISTS provisioning_log (
112
+ id TEXT PRIMARY KEY,
113
+ workspace_id TEXT NOT NULL,
114
+ subsystem TEXT NOT NULL,
115
+ operation TEXT NOT NULL,
116
+ target_id TEXT,
117
+ provider_id TEXT,
118
+ block_id TEXT,
119
+ execution_id TEXT,
120
+ outcome TEXT NOT NULL,
121
+ error TEXT,
122
+ detail TEXT,
123
+ created_at INTEGER NOT NULL
124
+ );
125
+ CREATE INDEX IF NOT EXISTS idx_provisioning_log_workspace
126
+ ON provisioning_log (workspace_id, created_at);
127
+ CREATE INDEX IF NOT EXISTS idx_provisioning_log_execution
128
+ ON provisioning_log (workspace_id, execution_id, created_at);
129
+ CREATE INDEX IF NOT EXISTS idx_provisioning_log_created ON provisioning_log (created_at);
130
+
131
+ CREATE TABLE IF NOT EXISTS subscription_quota_cycles (
132
+ id TEXT PRIMARY KEY,
133
+ scope TEXT NOT NULL,
134
+ scope_id TEXT NOT NULL,
135
+ vendor TEXT NOT NULL,
136
+ window_kind TEXT NOT NULL,
137
+ window_started_at INTEGER NOT NULL,
138
+ input_tokens INTEGER NOT NULL DEFAULT 0,
139
+ output_tokens INTEGER NOT NULL DEFAULT 0,
140
+ request_count INTEGER NOT NULL DEFAULT 0,
141
+ updated_at INTEGER NOT NULL,
142
+ UNIQUE (scope, scope_id, vendor, window_kind)
143
+ );
144
+ CREATE INDEX IF NOT EXISTS idx_subscription_quota_cycles_window
145
+ ON subscription_quota_cycles (window_started_at);
146
+ `;
147
+ function rowToMetric(row) {
148
+ return {
149
+ id: row.id,
150
+ workspaceId: row.workspace_id,
151
+ executionId: row.execution_id,
152
+ agentKind: row.agent_kind,
153
+ provider: row.provider,
154
+ model: row.model,
155
+ createdAt: row.created_at,
156
+ streaming: row.streaming === 1,
157
+ messageCount: row.message_count,
158
+ toolCount: row.tool_count,
159
+ requestMaxTokens: row.request_max_tokens,
160
+ promptTokens: row.prompt_tokens,
161
+ cacheReadTokens: row.cache_read_tokens,
162
+ cacheWriteTokens: row.cache_write_tokens,
163
+ completionTokens: row.completion_tokens,
164
+ totalTokens: row.total_tokens,
165
+ finishReason: row.finish_reason,
166
+ upstreamMs: row.upstream_ms,
167
+ overheadMs: row.overhead_ms,
168
+ totalMs: row.total_ms,
169
+ ok: row.ok === 1,
170
+ httpStatus: row.http_status,
171
+ errorMessage: row.error_message,
172
+ promptText: row.prompt_text,
173
+ promptPrefixCount: row.prompt_prefix_count,
174
+ promptHash: row.prompt_hash,
175
+ responseText: row.response_text,
176
+ reasoningText: row.reasoning_text,
177
+ phase: row.phase,
178
+ turnIndex: row.turn_index,
179
+ };
180
+ }
181
+ /** The per-call LLM telemetry sink — the local-sqlite mirror of `D1LlmCallMetricRepository`. */
182
+ class SqliteLlmCallMetricRepository {
183
+ db;
184
+ constructor(db) {
185
+ this.db = db;
186
+ }
187
+ async record(metric) {
188
+ // First write wins, and ONLY a duplicate id is ignored — `ON CONFLICT(id) DO NOTHING`, never
189
+ // `INSERT OR IGNORE` (which would also swallow a NOT NULL/CHECK violation and silently drop a
190
+ // malformed metric here while the other runtimes throw). The harness-call recorder deliberately
191
+ // re-offers a deterministic id (live drain, terminal list, durable-driver replay), so ignoring
192
+ // the repeat is what makes those paths idempotent; overwriting would invalidate the row's
193
+ // stored prompt DELTA, which is only meaningful against the tip that preceded its FIRST write.
194
+ this.db
195
+ .prepare(`INSERT INTO llm_call_metrics
196
+ (id, workspace_id, execution_id, agent_kind, provider, model, created_at,
197
+ streaming, message_count, tool_count, request_max_tokens,
198
+ prompt_tokens, cache_read_tokens, cache_write_tokens, completion_tokens,
199
+ total_tokens, finish_reason,
200
+ upstream_ms, overhead_ms, total_ms, ok, http_status, error_message,
201
+ prompt_text, prompt_prefix_count, prompt_hash, response_text, reasoning_text,
202
+ phase, turn_index)
203
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
204
+ ON CONFLICT(id) DO NOTHING`)
205
+ .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);
206
+ }
207
+ async latestChainTip(workspaceId, executionId, agentKind) {
208
+ // `message_count > 0` skips rows that can never BE a tip: a subagent call carries no
209
+ // re-sendable prompt chain, and those interleave with the parent's now that harness telemetry
210
+ // streams live — treating one as the tip makes every following parent call unchainable.
211
+ // message_count breaks a same-millisecond createdAt tie; id is the last resort.
212
+ const row = this.db
213
+ .prepare(`SELECT message_count, prompt_hash FROM llm_call_metrics
214
+ WHERE workspace_id = ? AND execution_id = ? AND agent_kind = ? AND message_count > 0
215
+ ORDER BY created_at DESC, message_count DESC, id DESC
216
+ LIMIT 1`)
217
+ .get(workspaceId, executionId, agentKind);
218
+ return row ? { messageCount: row.message_count, promptHash: row.prompt_hash } : null;
219
+ }
220
+ async listByExecution(workspaceId, executionId, limit, agentKind) {
221
+ // Newest first; `LIMIT -1` means "no limit" in SQLite, so an omitted cap reads all.
222
+ const rows = this.db
223
+ .prepare(`SELECT * FROM llm_call_metrics
224
+ WHERE workspace_id = ? AND execution_id = ?
225
+ AND (? IS NULL OR agent_kind = ?)
226
+ ORDER BY created_at DESC, id DESC
227
+ LIMIT ?`)
228
+ .all(workspaceId, executionId, agentKind ?? null, agentKind ?? null, limit ?? -1);
229
+ return rows.map(rowToMetric);
230
+ }
231
+ async summarizeByExecution(workspaceId, executionId) {
232
+ // Aggregate-only: selects no prompt/response text, so it stays cheap enough to run on every
233
+ // execution emit (it backs the live board rollups).
234
+ const rows = this.db
235
+ .prepare(`SELECT
236
+ agent_kind AS agent_kind,
237
+ COUNT(*) AS calls,
238
+ COALESCE(SUM(prompt_tokens), 0) AS prompt_tokens,
239
+ COALESCE(SUM(cache_read_tokens), 0) AS cache_read_tokens,
240
+ COALESCE(SUM(cache_write_tokens), 0) AS cache_write_tokens,
241
+ COALESCE(SUM(completion_tokens), 0) AS completion_tokens,
242
+ COALESCE(MAX(completion_tokens), 0) AS peak_completion_tokens,
243
+ MAX(request_max_tokens) AS max_output_tokens,
244
+ COALESCE(SUM(CASE WHEN finish_reason = 'length' THEN 1 ELSE 0 END), 0) AS truncated_calls,
245
+ COALESCE(SUM(upstream_ms), 0) AS upstream_ms,
246
+ COALESCE(SUM(overhead_ms), 0) AS overhead_ms,
247
+ COALESCE(SUM(CASE WHEN ok = 0 THEN 1 ELSE 0 END), 0) AS errors,
248
+ COALESCE(SUM(CASE WHEN ok = 1 AND finish_reason IN (${WARNING_REASONS_SQL}) THEN 1 ELSE 0 END), 0) AS warnings
249
+ FROM llm_call_metrics
250
+ WHERE workspace_id = ? AND execution_id = ?
251
+ GROUP BY agent_kind`)
252
+ .all(workspaceId, executionId);
253
+ return rows.map((r) => ({
254
+ agentKind: r.agent_kind,
255
+ calls: r.calls,
256
+ promptTokens: r.prompt_tokens,
257
+ cacheReadTokens: r.cache_read_tokens,
258
+ cacheWriteTokens: r.cache_write_tokens,
259
+ completionTokens: r.completion_tokens,
260
+ peakCompletionTokens: r.peak_completion_tokens,
261
+ maxOutputTokens: r.max_output_tokens,
262
+ truncatedCalls: r.truncated_calls,
263
+ upstreamMs: r.upstream_ms,
264
+ overheadMs: r.overhead_ms,
265
+ errors: r.errors,
266
+ warnings: r.warnings,
267
+ }));
268
+ }
269
+ async deleteOlderThan(epochMs) {
270
+ const res = this.db.prepare('DELETE FROM llm_call_metrics WHERE created_at < ?').run(epochMs);
271
+ return Number(res.changes);
272
+ }
273
+ }
274
+ function parseArray(text) {
275
+ try {
276
+ const parsed = JSON.parse(text);
277
+ return Array.isArray(parsed) ? parsed : [];
278
+ }
279
+ catch {
280
+ return [];
281
+ }
282
+ }
283
+ function parseObject(text) {
284
+ try {
285
+ const parsed = JSON.parse(text);
286
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
287
+ ? parsed
288
+ : {};
289
+ }
290
+ catch {
291
+ return {};
292
+ }
293
+ }
294
+ /** The per-dispatch agent-context sink — the local-sqlite mirror of `D1AgentContextSnapshotRepository`. */
295
+ class SqliteAgentContextSnapshotRepository {
296
+ db;
297
+ constructor(db) {
298
+ this.db = db;
299
+ }
300
+ async record(snapshot) {
301
+ this.db
302
+ .prepare(`INSERT INTO agent_context_snapshots
303
+ (id, workspace_id, execution_id, agent_kind, step_index, created_at,
304
+ model, harness, system_prompt, user_prompt, fragments, context_files, extras)
305
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
306
+ .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));
307
+ }
308
+ async listByExecution(workspaceId, executionId) {
309
+ const rows = this.db
310
+ .prepare(`SELECT * FROM agent_context_snapshots
311
+ WHERE workspace_id = ? AND execution_id = ?
312
+ ORDER BY created_at DESC, id DESC`)
313
+ .all(workspaceId, executionId);
314
+ return rows.map((row) => ({
315
+ id: row.id,
316
+ workspaceId: row.workspace_id,
317
+ executionId: row.execution_id,
318
+ agentKind: row.agent_kind,
319
+ stepIndex: row.step_index,
320
+ createdAt: row.created_at,
321
+ model: row.model,
322
+ harness: row.harness,
323
+ systemPrompt: row.system_prompt,
324
+ userPrompt: row.user_prompt,
325
+ fragments: parseArray(row.fragments),
326
+ contextFiles: parseArray(row.context_files),
327
+ extras: parseObject(row.extras),
328
+ }));
329
+ }
330
+ async deleteOlderThan(epochMs) {
331
+ const res = this.db
332
+ .prepare('DELETE FROM agent_context_snapshots WHERE created_at < ?')
333
+ .run(epochMs);
334
+ return Number(res.changes);
335
+ }
336
+ }
337
+ /** The performed-web-search sink — the local-sqlite mirror of `D1AgentSearchQueryRepository`. */
338
+ class SqliteAgentSearchQueryRepository {
339
+ db;
340
+ constructor(db) {
341
+ this.db = db;
342
+ }
343
+ async record(query) {
344
+ this.db
345
+ .prepare(`INSERT INTO agent_search_queries
346
+ (id, workspace_id, execution_id, agent_kind, provider, query, result_count, created_at)
347
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
348
+ .run(query.id, query.workspaceId, query.executionId, query.agentKind, query.provider, query.query, query.resultCount, query.createdAt);
349
+ }
350
+ async listByExecution(workspaceId, executionId) {
351
+ const rows = this.db
352
+ .prepare(`SELECT * FROM agent_search_queries
353
+ WHERE workspace_id = ? AND execution_id = ?
354
+ ORDER BY created_at DESC, id DESC`)
355
+ .all(workspaceId, executionId);
356
+ return rows.map((row) => ({
357
+ id: row.id,
358
+ workspaceId: row.workspace_id,
359
+ executionId: row.execution_id,
360
+ agentKind: row.agent_kind,
361
+ // The stored provider column is free-text TEXT; narrow it back to the wire union.
362
+ provider: isWebSearchProvider(row.provider) ? row.provider : null,
363
+ query: row.query,
364
+ resultCount: row.result_count,
365
+ createdAt: row.created_at,
366
+ }));
367
+ }
368
+ async deleteOlderThan(epochMs) {
369
+ const res = this.db
370
+ .prepare('DELETE FROM agent_search_queries WHERE created_at < ?')
371
+ .run(epochMs);
372
+ return Number(res.changes);
373
+ }
374
+ }
375
+ /** The provisioning event log — the local-sqlite mirror of `D1ProvisioningLogRepository`. */
376
+ class SqliteProvisioningLogRepository {
377
+ db;
378
+ constructor(db) {
379
+ this.db = db;
380
+ }
381
+ async append(record) {
382
+ this.db
383
+ .prepare(`INSERT INTO provisioning_log
384
+ (id, workspace_id, subsystem, operation, target_id, provider_id, block_id,
385
+ execution_id, outcome, error, detail, created_at)
386
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
387
+ .run(record.id, record.workspaceId, record.subsystem, record.operation, record.targetId, record.providerId, record.blockId, record.executionId, record.outcome, record.error, record.detail, record.createdAt);
388
+ }
389
+ async list(workspaceId, query = {}) {
390
+ const clauses = ['workspace_id = ?'];
391
+ const binds = [workspaceId];
392
+ if (query.subsystem) {
393
+ clauses.push('subsystem = ?');
394
+ binds.push(query.subsystem);
395
+ }
396
+ if (query.executionId) {
397
+ clauses.push('execution_id = ?');
398
+ binds.push(query.executionId);
399
+ }
400
+ if (query.targetId) {
401
+ clauses.push('target_id = ?');
402
+ binds.push(query.targetId);
403
+ }
404
+ if (query.before != null) {
405
+ clauses.push('created_at < ?');
406
+ binds.push(query.before);
407
+ }
408
+ // Newest first; `LIMIT -1` means "no limit" in SQLite, so an omitted cap reads all.
409
+ binds.push(query.limit ?? -1);
410
+ const rows = this.db
411
+ .prepare(`SELECT * FROM provisioning_log
412
+ WHERE ${clauses.join(' AND ')}
413
+ ORDER BY created_at DESC, id DESC
414
+ LIMIT ?`)
415
+ .all(...binds);
416
+ return rows.map((row) => ({
417
+ id: row.id,
418
+ workspaceId: row.workspace_id,
419
+ subsystem: row.subsystem,
420
+ operation: row.operation,
421
+ targetId: row.target_id,
422
+ providerId: row.provider_id,
423
+ blockId: row.block_id,
424
+ executionId: row.execution_id,
425
+ outcome: row.outcome,
426
+ error: row.error,
427
+ detail: row.detail,
428
+ createdAt: row.created_at,
429
+ }));
430
+ }
431
+ async deleteOlderThan(epochMs) {
432
+ const res = this.db.prepare('DELETE FROM provisioning_log WHERE created_at < ?').run(epochMs);
433
+ return Number(res.changes);
434
+ }
435
+ }
436
+ /**
437
+ * The modeled subscription quota-cycle counters — the local-sqlite mirror of
438
+ * `D1SubscriptionQuotaCycleRepository`. Local by construction as well as by policy: in mothership
439
+ * mode BOTH scopes a cycle can key on live on the laptop (a `pooled` cycle's scopeId is a
440
+ * `provider_subscription_tokens` row in the local credential store, and a `user` cycle counts a
441
+ * personal subscription kept there too), so remoting the counters would split a cycle from the
442
+ * credential it models.
443
+ */
444
+ class SqliteSubscriptionQuotaCycleRepository {
445
+ db;
446
+ constructor(db) {
447
+ this.db = db;
448
+ }
449
+ async recordUsage(key, usage, at, windowMs) {
450
+ // Windowed UPSERT: INSERT anchors a fresh window at `at`; ON CONFLICT accumulates when the
451
+ // existing window is still active (`at - window_started_at < windowMs`) or resets it to `at`
452
+ // otherwise. SQLite evaluates every SET right-hand side against the row's PRE-update values,
453
+ // so referencing `window_started_at` in the counter branches is safe even though the first SET
454
+ // reassigns it (identical to the D1 repo).
455
+ const active = '(? - window_started_at < ?)';
456
+ this.db
457
+ .prepare(`INSERT INTO subscription_quota_cycles
458
+ (id, scope, scope_id, vendor, window_kind, window_started_at,
459
+ input_tokens, output_tokens, request_count, updated_at)
460
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, 1, ?)
461
+ ON CONFLICT (scope, scope_id, vendor, window_kind) DO UPDATE SET
462
+ window_started_at = CASE WHEN ${active} THEN window_started_at ELSE ? END,
463
+ input_tokens = CASE WHEN ${active} THEN input_tokens ELSE 0 END + ?,
464
+ output_tokens = CASE WHEN ${active} THEN output_tokens ELSE 0 END + ?,
465
+ request_count = CASE WHEN ${active} THEN request_count ELSE 0 END + 1,
466
+ updated_at = ?`)
467
+ .run(
468
+ // INSERT values
469
+ key.id, key.scope, key.scopeId, key.vendor, key.windowKind, at, usage.inputTokens, usage.outputTokens, at,
470
+ // UPDATE branches
471
+ at, windowMs, at, at, windowMs, usage.inputTokens, at, windowMs, usage.outputTokens, at, windowMs, at);
472
+ }
473
+ async listByScopeVendor(scope, scopeId, vendor) {
474
+ const rows = this.db
475
+ .prepare(`SELECT * FROM subscription_quota_cycles
476
+ WHERE scope = ? AND scope_id = ? AND vendor = ?`)
477
+ .all(scope, scopeId, vendor);
478
+ return rows.map((row) => ({
479
+ id: row.id,
480
+ scope: row.scope,
481
+ scopeId: row.scope_id,
482
+ vendor: decodeEnum(subscriptionVendorSchema, row.vendor, {
483
+ table: 'subscription_quota_cycles',
484
+ column: 'vendor',
485
+ id: row.id,
486
+ }),
487
+ windowKind: row.window_kind,
488
+ windowStartedAt: row.window_started_at,
489
+ inputTokens: row.input_tokens,
490
+ outputTokens: row.output_tokens,
491
+ requestCount: row.request_count,
492
+ updatedAt: row.updated_at,
493
+ }));
494
+ }
495
+ async deleteOlderThan(epochMs) {
496
+ const res = this.db
497
+ .prepare('DELETE FROM subscription_quota_cycles WHERE window_started_at < ?')
498
+ .run(epochMs);
499
+ return Number(res.changes);
500
+ }
501
+ }
502
+ /**
503
+ * Open the local telemetry store at `path` (a file under the developer's config dir, or
504
+ * `:memory:` in tests). Holds ONLY high-volume run telemetry — never a credential, never org
505
+ * state — and is pruned to the deployment's retention window by the local retention sweep.
506
+ */
507
+ export function createLocalTelemetryStore(path) {
508
+ const db = openSqliteDb(path, SCHEMA);
509
+ return {
510
+ llmCallMetricRepository: new SqliteLlmCallMetricRepository(db),
511
+ agentContextSnapshotRepository: new SqliteAgentContextSnapshotRepository(db),
512
+ agentSearchQueryRepository: new SqliteAgentSearchQueryRepository(db),
513
+ provisioningLogRepository: new SqliteProvisioningLogRepository(db),
514
+ subscriptionQuotaCycleRepository: new SqliteSubscriptionQuotaCycleRepository(db),
515
+ close: () => db.close(),
516
+ };
517
+ }
518
+ //# sourceMappingURL=telemetryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetryStore.js","sourceRoot":"","sources":["../../src/sqlite/telemetryStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { Clock, Logger } from '@cat-factory/kernel';
2
+ import type { RetentionConfig } from '@cat-factory/server';
3
+ import type { LocalTelemetryStore } from './sqlite/telemetryStore.js';
4
+ /** Rows reclaimed from each local telemetry table, for logging. */
5
+ export interface LocalTelemetryRetentionResult {
6
+ llmCallMetrics: number;
7
+ agentContextSnapshots: number;
8
+ agentSearchQueries: number;
9
+ provisioningLog: number;
10
+ subscriptionQuotaCycles: number;
11
+ }
12
+ /**
13
+ * Prune each local telemetry table to its retention window. Pure over the store, so it is
14
+ * unit-testable without a timer (mirrors the Node facade's `sweepRetention`). The three
15
+ * agent-observability sinks share the LLM-call window — they are the same run's heavy bodies —
16
+ * while the provisioning log keeps its own and the quota cycles a fixed one.
17
+ */
18
+ export declare function sweepLocalTelemetryRetention(store: LocalTelemetryStore, retention: RetentionConfig, now: number): Promise<LocalTelemetryRetentionResult>;
19
+ /**
20
+ * Start the periodic local telemetry prune. Runs once immediately (so a restart reclaims promptly)
21
+ * then hourly, non-overlapping and best-effort — a failed pass is logged and retried next tick,
22
+ * never thrown, because losing observability must never take the node down.
23
+ *
24
+ * The returned stop function is ASYNC and must be AWAITED before the store is closed. That is not
25
+ * tidiness: the immediate first pass is asynchronous, so on a short-lived node (a test, a boot that
26
+ * fails straight after) it is still mid-flight when shutdown closes the SQLite handle underneath
27
+ * it — the pass then dies on "database is not open" and every such exit carries a spurious error
28
+ * line. Awaiting the in-flight pass makes teardown ordered instead of racy; the stop flag covers
29
+ * the case where the pass has not started yet.
30
+ */
31
+ export declare function startLocalTelemetryRetention(store: LocalTelemetryStore, retention: RetentionConfig, clock: Clock, log: Logger): () => Promise<void>;
32
+ //# sourceMappingURL=telemetryRetention.d.ts.map
@@ -0,0 +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;CAChC;AAYD;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,eAAe,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,6BAA6B,CAAC,CAkBxC;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"}
@@ -0,0 +1,92 @@
1
+ import { startSweeper } from '@cat-factory/node-server';
2
+ // Retention for the mothership-mode LOCAL telemetry store (docs/initiatives/mothership-mode.md,
3
+ // PR 5). Telemetry is local-first on a mothership-mode node, so nothing else prunes it: the
4
+ // mothership's own cron owns ITS tables, and the Node facade's `startRetentionSweeper` runs from
5
+ // `start()`, which a mothership-mode boot never calls (there is no Postgres and no pg-boss). Left
6
+ // unpruned, the `llm_call_metrics` table — full per-call prompt + response bodies — grows without
7
+ // bound on the developer's disk, which is exactly the failure the configured window exists to
8
+ // prevent on the other two runtimes.
9
+ //
10
+ // The windows are the SAME `RetentionConfig` the Node/Worker sweeps use, so a developer's laptop
11
+ // keeps telemetry for as long as the deployment says. Only the tables this store actually owns are
12
+ // pruned; everything else on a mothership-mode node is org state the mothership prunes.
13
+ /**
14
+ * How often the local telemetry prune runs. Matches the Node facade's retention cadence: the
15
+ * windows are measured in days, so an hourly indexed range delete costs nothing and usually
16
+ * reclaims nothing.
17
+ */
18
+ const LOCAL_TELEMETRY_SWEEP_INTERVAL_MS = 60 * 60 * 1000;
19
+ /**
20
+ * Idle quota-cycle rows are pruned after a fixed 30 days, deliberately far beyond the longest
21
+ * quota window (the 7-day weekly one) so a live cycle is never deleted mid-window. Mirrors the
22
+ * Node facade's `SUBSCRIPTION_QUOTA_CYCLE_RETENTION_MS`; a stale window re-anchors on next use.
23
+ */
24
+ const SUBSCRIPTION_QUOTA_CYCLE_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;
25
+ /** Delete rows older than `now - windowMs`, treating a non-positive window as "disabled". */
26
+ async function prune(windowMs, now, del) {
27
+ if (windowMs <= 0)
28
+ return 0;
29
+ return del(now - windowMs);
30
+ }
31
+ /**
32
+ * Prune each local telemetry table to its retention window. Pure over the store, so it is
33
+ * unit-testable without a timer (mirrors the Node facade's `sweepRetention`). The three
34
+ * agent-observability sinks share the LLM-call window — they are the same run's heavy bodies —
35
+ * while the provisioning log keeps its own and the quota cycles a fixed one.
36
+ */
37
+ export async function sweepLocalTelemetryRetention(store, retention, now) {
38
+ return {
39
+ llmCallMetrics: await prune(retention.llmCallMetricsMs, now, (c) => store.llmCallMetricRepository.deleteOlderThan(c)),
40
+ agentContextSnapshots: await prune(retention.llmCallMetricsMs, now, (c) => store.agentContextSnapshotRepository.deleteOlderThan(c)),
41
+ agentSearchQueries: await prune(retention.llmCallMetricsMs, now, (c) => store.agentSearchQueryRepository.deleteOlderThan(c)),
42
+ provisioningLog: await prune(retention.provisioningLogMs, now, (c) => store.provisioningLogRepository.deleteOlderThan(c)),
43
+ subscriptionQuotaCycles: await prune(SUBSCRIPTION_QUOTA_CYCLE_RETENTION_MS, now, (c) => store.subscriptionQuotaCycleRepository.deleteOlderThan(c)),
44
+ };
45
+ }
46
+ /**
47
+ * Start the periodic local telemetry prune. Runs once immediately (so a restart reclaims promptly)
48
+ * then hourly, non-overlapping and best-effort — a failed pass is logged and retried next tick,
49
+ * never thrown, because losing observability must never take the node down.
50
+ *
51
+ * The returned stop function is ASYNC and must be AWAITED before the store is closed. That is not
52
+ * tidiness: the immediate first pass is asynchronous, so on a short-lived node (a test, a boot that
53
+ * fails straight after) it is still mid-flight when shutdown closes the SQLite handle underneath
54
+ * it — the pass then dies on "database is not open" and every such exit carries a spurious error
55
+ * line. Awaiting the in-flight pass makes teardown ordered instead of racy; the stop flag covers
56
+ * the case where the pass has not started yet.
57
+ */
58
+ export function startLocalTelemetryRetention(store, retention, clock, log) {
59
+ let stopped = false;
60
+ let inFlight;
61
+ const stopSweeper = startSweeper({
62
+ name: 'local-telemetry-retention',
63
+ intervalMs: LOCAL_TELEMETRY_SWEEP_INTERVAL_MS,
64
+ log,
65
+ failureMessage: 'local telemetry retention sweep failed',
66
+ tick: async () => {
67
+ if (stopped)
68
+ return;
69
+ const pass = sweepLocalTelemetryRetention(store, retention, clock.now());
70
+ inFlight = pass;
71
+ try {
72
+ const reclaimed = await pass;
73
+ if (Object.values(reclaimed).some((n) => n > 0)) {
74
+ log.info('local telemetry retention sweep reclaimed rows', { ...reclaimed });
75
+ }
76
+ }
77
+ finally {
78
+ if (inFlight === pass)
79
+ inFlight = undefined;
80
+ }
81
+ },
82
+ });
83
+ return async () => {
84
+ stopped = true;
85
+ stopSweeper();
86
+ // silent-catch-ok: the sweeper's own error handler already logged this pass's failure; here we
87
+ // only need it to have FINISHED touching the store before the caller closes it, so re-reporting
88
+ // would duplicate the line and rethrowing would fail an otherwise clean shutdown.
89
+ await inFlight?.catch(() => undefined);
90
+ };
91
+ }
92
+ //# sourceMappingURL=telemetryRetention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetryRetention.js","sourceRoot":"","sources":["../src/telemetryRetention.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/local-server",
3
- "version": "0.84.1",
3
+ "version": "0.85.0",
4
4
  "description": "Local-mode runtime facade for the Agent Architecture Board: the @cat-factory/node-server stack with agent jobs run as local Docker/Podman containers and GitHub accessed via a personal access token — a developer can run the whole product on their own machine.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,23 +27,23 @@
27
27
  "@hono/node-server": "^2.0.12",
28
28
  "drizzle-orm": "1.0.0-rc.4",
29
29
  "ws": "^8.21.1",
30
- "@cat-factory/agents": "0.80.1",
31
- "@cat-factory/contracts": "0.184.0",
32
- "@cat-factory/executor-harness": "1.68.0",
33
- "@cat-factory/gitlab": "0.13.25",
34
- "@cat-factory/integrations": "0.107.2",
35
- "@cat-factory/kernel": "0.177.0",
36
- "@cat-factory/node-server": "0.129.0",
37
- "@cat-factory/orchestration": "0.157.0",
38
- "@cat-factory/server": "0.166.1"
30
+ "@cat-factory/agents": "0.81.1",
31
+ "@cat-factory/contracts": "0.186.0",
32
+ "@cat-factory/gitlab": "0.13.27",
33
+ "@cat-factory/integrations": "0.108.0",
34
+ "@cat-factory/kernel": "0.179.0",
35
+ "@cat-factory/node-server": "0.130.0",
36
+ "@cat-factory/orchestration": "0.159.0",
37
+ "@cat-factory/server": "0.167.0",
38
+ "@cat-factory/executor-harness": "1.70.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/node": "^26.1.1",
42
42
  "@types/ws": "^8.18.1",
43
43
  "typescript": "7.0.2",
44
44
  "vitest": "^4.1.10",
45
- "@cat-factory/conformance": "0.13.1",
46
- "@cat-factory/gates": "0.8.5"
45
+ "@cat-factory/conformance": "0.14.1",
46
+ "@cat-factory/gates": "0.8.7"
47
47
  },
48
48
  "scripts": {
49
49
  "build": "tsc -b tsconfig.build.json",