@cat-factory/worker 0.142.0 → 0.144.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.
Files changed (41) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +6 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/infrastructure/config/agents.d.ts.map +1 -1
  5. package/dist/infrastructure/config/agents.js +4 -1
  6. package/dist/infrastructure/config/agents.js.map +1 -1
  7. package/dist/infrastructure/config/retention.d.ts.map +1 -1
  8. package/dist/infrastructure/config/retention.js +6 -0
  9. package/dist/infrastructure/config/retention.js.map +1 -1
  10. package/dist/infrastructure/container-assembly.d.ts.map +1 -1
  11. package/dist/infrastructure/container-assembly.js +37 -15
  12. package/dist/infrastructure/container-assembly.js.map +1 -1
  13. package/dist/infrastructure/container-executor-deps.d.ts +20 -2
  14. package/dist/infrastructure/container-executor-deps.d.ts.map +1 -1
  15. package/dist/infrastructure/container-executor-deps.js +5 -4
  16. package/dist/infrastructure/container-executor-deps.js.map +1 -1
  17. package/dist/infrastructure/container-model-resolver.d.ts +8 -2
  18. package/dist/infrastructure/container-model-resolver.d.ts.map +1 -1
  19. package/dist/infrastructure/container-model-resolver.js +13 -4
  20. package/dist/infrastructure/container-model-resolver.js.map +1 -1
  21. package/dist/infrastructure/env.d.ts +4 -0
  22. package/dist/infrastructure/env.d.ts.map +1 -1
  23. package/dist/infrastructure/env.js.map +1 -1
  24. package/dist/infrastructure/repositories/D1GateOutcomeRepository.d.ts +12 -0
  25. package/dist/infrastructure/repositories/D1GateOutcomeRepository.d.ts.map +1 -0
  26. package/dist/infrastructure/repositories/D1GateOutcomeRepository.js +64 -0
  27. package/dist/infrastructure/repositories/D1GateOutcomeRepository.js.map +1 -0
  28. package/dist/infrastructure/repositories/D1ModelPresetRepository.d.ts.map +1 -1
  29. package/dist/infrastructure/repositories/D1ModelPresetRepository.js +9 -4
  30. package/dist/infrastructure/repositories/D1ModelPresetRepository.js.map +1 -1
  31. package/dist/infrastructure/repositories/D1PlatformMetricsRepository.d.ts +6 -1
  32. package/dist/infrastructure/repositories/D1PlatformMetricsRepository.d.ts.map +1 -1
  33. package/dist/infrastructure/repositories/D1PlatformMetricsRepository.js +124 -0
  34. package/dist/infrastructure/repositories/D1PlatformMetricsRepository.js.map +1 -1
  35. package/dist/infrastructure/workflows/retention.d.ts +17 -2
  36. package/dist/infrastructure/workflows/retention.d.ts.map +1 -1
  37. package/dist/infrastructure/workflows/retention.js +9 -2
  38. package/dist/infrastructure/workflows/retention.js.map +1 -1
  39. package/migrations/0078_model_preset_provider_preference.sql +10 -0
  40. package/migrations/0079_gate_outcomes_and_run_days.sql +82 -0
  41. package/package.json +18 -18
@@ -6,11 +6,11 @@
6
6
  // `container-model-deps.ts`: model resolution is what everything else in the composition root
7
7
  // is *given*, not part of assembling it, and keeping it here is what lets the executor wiring
8
8
  // (`container-executor-deps.ts`) import it without either module reaching back into the root.
9
- import { composeTraceSinks } from '@cat-factory/kernel';
9
+ import { composeTraceSinks, } from '@cat-factory/kernel';
10
10
  import { vendorConcurrencyLimiterFromEnv } from '@cat-factory/agents';
11
11
  import { cloudflareBindingRegistry } from '@cat-factory/provider-cloudflare';
12
12
  import { buildLangfuseSink, buildOtelSink } from './container-trace-sinks.js';
13
- import { resolvePresetModelForKind } from '@cat-factory/orchestration';
13
+ import { resolvePresetModelForKind, resolvePresetProviderPreference, } from '@cat-factory/orchestration';
14
14
  import { logger, createInlineInstrumentation, createScopedModelProviderResolver, wrapResolverWithTelemetry, } from '@cat-factory/server';
15
15
  import { loadLangfuseConfig } from './config/langfuse';
16
16
  import { loadObservabilityConfig } from './config/observability';
@@ -104,8 +104,17 @@ export function buildModelProviderResolver(env, db) {
104
104
  * every agent kind at Kimi K2.7, so an unpinned step resolves to it even before the
105
105
  * preset library is materialised.
106
106
  */
107
- export function buildResolveWorkspaceModelDefault(db) {
107
+ export function buildResolveWorkspaceModelDefault(db, caches) {
108
108
  const repo = new D1ModelPresetRepository({ db });
109
- return (workspaceId, agentKind, modelPresetId) => resolvePresetModelForKind(repo, workspaceId, agentKind, modelPresetId);
109
+ return (workspaceId, agentKind, modelPresetId) => resolvePresetModelForKind(repo, workspaceId, agentKind, modelPresetId, caches?.modelPreset);
110
+ }
111
+ /**
112
+ * The route ORDER a preset states, read from the same D1 preset repo as the model id above. Its
113
+ * sibling: the model a step runs and the order that model's routes are tried in come from one row,
114
+ * so a preset cannot pick a model on one surface and an order on another.
115
+ */
116
+ export function buildResolvePresetProviderPreference(db, caches) {
117
+ const repo = new D1ModelPresetRepository({ db });
118
+ return (workspaceId, modelPresetId) => resolvePresetProviderPreference(repo, workspaceId, modelPresetId, caches?.modelPreset);
110
119
  }
111
120
  //# sourceMappingURL=container-model-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"container-model-resolver.js","sourceRoot":"","sources":["../../src/infrastructure/container-model-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container-model-resolver.js","sourceRoot":"","sources":["../../src/infrastructure/container-model-resolver.ts"],"names":[],"mappings":"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"}
@@ -590,6 +590,10 @@ export interface Env {
590
590
  * Default 90. 0 disables pruning.
591
591
  */
592
592
  NOTIFICATION_RETENTION_DAYS?: string;
593
+ /** Settled-gate projection (`gate_outcomes`) retention, in days. Default 90; 0 disables. */
594
+ GATE_OUTCOME_RETENTION_DAYS?: string;
595
+ /** Daily run rollup (`platform_run_days`) retention, in days. Default 400; 0 disables. */
596
+ PLATFORM_RUN_DAY_RETENTION_DAYS?: string;
593
597
  }
594
598
  /**
595
599
  * Resolve the required telemetry database, throwing a clear, actionable error when the
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AA8pB7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/infrastructure/env.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAkqB7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAQ;IACzC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAA;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,YAAY,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,GAAQ;IAChC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAA;AACf,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { GateOutcomeRecord, GateOutcomeRepository, PlatformGateOutcomeCount } from '@cat-factory/kernel';
2
+ import type { D1Database } from '@cloudflare/workers-types';
3
+ export declare class D1GateOutcomeRepository implements GateOutcomeRepository {
4
+ private readonly db;
5
+ constructor({ db }: {
6
+ db: D1Database;
7
+ });
8
+ record(row: GateOutcomeRecord): Promise<void>;
9
+ statsSince(accountId: string, sinceEpochMs: number): Promise<PlatformGateOutcomeCount[]>;
10
+ deleteOlderThan(cutoff: number): Promise<number>;
11
+ }
12
+ //# sourceMappingURL=D1GateOutcomeRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1GateOutcomeRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1GateOutcomeRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAc3D,qBAAa,uBAAwB,YAAW,qBAAqB;IACnE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BlD;IAEK,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAmC7F;IAEK,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMrD;CACF"}
@@ -0,0 +1,64 @@
1
+ // The settled-gate projection on D1: the write the engine's gate machine makes, and the ONE
2
+ // aggregate the operator dashboard's gate statistics read. Mirrors
3
+ // {@link DrizzleGateOutcomeRepository}; the cross-runtime conformance suite asserts they agree.
4
+ /** The account's workspace ids, as the scalar sub-select the account-scoped read uses. */
5
+ const ACCOUNT_WORKSPACES = 'SELECT id FROM workspaces WHERE account_id = ?';
6
+ /** Guard a stored `outcome` into the port's union; anything else is treated as exhausted. */
7
+ function decodeOutcome(raw) {
8
+ return raw === 'passed' ? 'passed' : 'exhausted';
9
+ }
10
+ export class D1GateOutcomeRepository {
11
+ db;
12
+ constructor({ db }) {
13
+ this.db = db;
14
+ }
15
+ async record(row) {
16
+ // FIRST WRITE WINS on the derived id: the durable drivers replay, so the same settle can
17
+ // arrive twice, and re-inserting it would inflate every count this table exists to report.
18
+ // `ON CONFLICT(id) DO NOTHING` rather than `INSERT OR IGNORE`, which would also swallow a
19
+ // genuine constraint violation (the `llm_call_metrics` precedent).
20
+ await this.db
21
+ .prepare(`INSERT INTO gate_outcomes
22
+ (id, workspace_id, execution_id, block_id, gate_kind, helper_kind, outcome,
23
+ attempts, max_attempts, helper_failures, duration_ms, created_at)
24
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
25
+ ON CONFLICT(id) DO NOTHING`)
26
+ .bind(row.id, row.workspaceId, row.executionId, row.blockId, row.gateKind, row.helperKind, row.outcome, row.attempts, row.maxAttempts, row.helperFailures, row.durationMs, row.createdAt)
27
+ .run();
28
+ }
29
+ async statsSince(accountId, sinceEpochMs) {
30
+ const { results } = await this.db
31
+ .prepare(
32
+ // One GROUP BY: the counts, the attempt sums and the precheck-clean tally all come off
33
+ // the same scan. `helper_kind` joins the grouping key rather than being aggregated:
34
+ // it is a property of the gate definition, so it does not vary within a gate kind.
35
+ `SELECT gate_kind, helper_kind, outcome,
36
+ COUNT(*) AS gates,
37
+ SUM(attempts) AS attempts,
38
+ SUM(helper_failures) AS helper_failures,
39
+ SUM(CASE WHEN attempts = 0 THEN 1 ELSE 0 END) AS clean_gates
40
+ FROM gate_outcomes
41
+ WHERE workspace_id IN (${ACCOUNT_WORKSPACES}) AND created_at >= ?
42
+ GROUP BY gate_kind, helper_kind, outcome
43
+ ORDER BY gates DESC`)
44
+ .bind(accountId, sinceEpochMs)
45
+ .all();
46
+ return (results ?? []).map((r) => ({
47
+ gateKind: r.gate_kind,
48
+ helperKind: r.helper_kind ?? null,
49
+ outcome: decodeOutcome(r.outcome),
50
+ gates: Number(r.gates),
51
+ attempts: Number(r.attempts ?? 0),
52
+ helperFailures: Number(r.helper_failures ?? 0),
53
+ cleanGates: Number(r.clean_gates ?? 0),
54
+ }));
55
+ }
56
+ async deleteOlderThan(cutoff) {
57
+ const res = await this.db
58
+ .prepare('DELETE FROM gate_outcomes WHERE created_at < ?')
59
+ .bind(cutoff)
60
+ .run();
61
+ return res.meta.changes ?? 0;
62
+ }
63
+ }
64
+ //# sourceMappingURL=D1GateOutcomeRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1GateOutcomeRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1GateOutcomeRepository.ts"],"names":[],"mappings":"AAQA,4FAA4F;AAC5F,mEAAmE;AACnE,gGAAgG;AAEhG,0FAA0F;AAC1F,MAAM,kBAAkB,GAAG,gDAAgD,CAAA;AAE3E,6FAA6F;AAC7F,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAA;AAClD,CAAC;AAED,MAAM,OAAO,uBAAuB;IACjB,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAsB;QACpC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAsB;QACjC,yFAAyF;QACzF,2FAA2F;QAC3F,0FAA0F;QAC1F,mEAAmE;QACnE,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;;;;oCAI4B,CAC7B;aACA,IAAI,CACH,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,cAAc,EAClB,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,SAAS,CACd;aACA,GAAG,EAAE,CAAA;IACV,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,YAAoB;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE;aAC9B,OAAO;QACN,uFAAuF;QACvF,oFAAoF;QACpF,mFAAmF;QACnF;;;;;;kCAM0B,kBAAkB;;6BAEvB,CACtB;aACA,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;aAC7B,GAAG,EAQA,CAAA;QACN,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,UAAU,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;YACjC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;YACjC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC;YAC9C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;SACvC,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CAAC,gDAAgD,CAAC;aACzD,IAAI,CAAC,MAAM,CAAC;aACZ,GAAG,EAAE,CAAA;QACR,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAA;IAC9B,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"D1ModelPresetRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ModelPresetRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AA+B3D;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,qBAAqB;IACnE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMtE;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAMtD;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAUjE;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCpE;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3D;CACF"}
1
+ {"version":3,"file":"D1ModelPresetRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ModelPresetRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAkC3D;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,qBAAqB;IACnE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAMtE;IAEK,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAMtD;IAEK,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAUjE;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCpE;IAEK,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK3D;CACF"}
@@ -1,3 +1,4 @@
1
+ import { parseProviderPreferenceColumn, serializeProviderPreferenceColumn, } from '@cat-factory/server';
1
2
  function rowToPreset(row) {
2
3
  let overrides = {};
3
4
  try {
@@ -8,6 +9,7 @@ function rowToPreset(row) {
8
9
  catch {
9
10
  // A malformed JSON column degrades to no overrides (base model applies to all).
10
11
  }
12
+ const providerPreference = parseProviderPreferenceColumn(row.provider_preference);
11
13
  return {
12
14
  id: row.id,
13
15
  name: row.name,
@@ -15,6 +17,7 @@ function rowToPreset(row) {
15
17
  overrides,
16
18
  isDefault: row.is_default === 1,
17
19
  ...(row.version != null ? { version: row.version } : {}),
20
+ ...(providerPreference ? { providerPreference } : {}),
18
21
  createdAt: row.created_at,
19
22
  };
20
23
  }
@@ -65,15 +68,17 @@ export class D1ModelPresetRepository {
65
68
  }
66
69
  statements.push(this.db
67
70
  .prepare(`INSERT INTO model_presets
68
- (workspace_id, id, name, base_model_id, overrides, is_default, version, created_at)
69
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
71
+ (workspace_id, id, name, base_model_id, overrides, is_default, version,
72
+ provider_preference, created_at)
73
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
70
74
  ON CONFLICT (workspace_id, id) DO UPDATE SET
71
75
  name = excluded.name,
72
76
  base_model_id = excluded.base_model_id,
73
77
  overrides = excluded.overrides,
74
78
  is_default = excluded.is_default,
75
- version = excluded.version`)
76
- .bind(workspaceId, preset.id, preset.name, preset.baseModelId, JSON.stringify(preset.overrides), preset.isDefault ? 1 : 0, preset.version ?? null, preset.createdAt));
79
+ version = excluded.version,
80
+ provider_preference = excluded.provider_preference`)
81
+ .bind(workspaceId, preset.id, preset.name, preset.baseModelId, JSON.stringify(preset.overrides), preset.isDefault ? 1 : 0, preset.version ?? null, serializeProviderPreferenceColumn(preset.providerPreference), preset.createdAt));
77
82
  await this.db.batch(statements);
78
83
  }
79
84
  async remove(workspaceId, id) {
@@ -1 +1 @@
1
- {"version":3,"file":"D1ModelPresetRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ModelPresetRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1ModelPresetRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1ModelPresetRepository.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PlatformDurationStats, PlatformFailureCount, PlatformLiveCounts, PlatformMetricsRepository, PlatformRunOutcome, PlatformRunTrendPoint } from '@cat-factory/kernel';
1
+ import type { PlatformDailyRunCount, PlatformDurationStats, PlatformFailedRunRef, PlatformFailureCount, PlatformLiveCounts, PlatformMetricsRepository, PlatformRunOutcome, PlatformRunTrendPoint } from '@cat-factory/kernel';
2
2
  import type { D1Database } from '@cloudflare/workers-types';
3
3
  export declare class D1PlatformMetricsRepository implements PlatformMetricsRepository {
4
4
  private readonly db;
@@ -10,5 +10,10 @@ export declare class D1PlatformMetricsRepository implements PlatformMetricsRepos
10
10
  failureKindBreakdown(accountId: string, sinceEpochMs: number): Promise<PlatformFailureCount[]>;
11
11
  activeAndParkedCounts(accountId: string): Promise<PlatformLiveCounts>;
12
12
  durationStatsSince(accountId: string, sinceEpochMs: number): Promise<PlatformDurationStats>;
13
+ rollupRunDays(fromEpochMs: number, toEpochMs: number): Promise<number>;
14
+ dailyRunTotalsSince(accountId: string, sinceEpochMs: number): Promise<PlatformDailyRunCount[]>;
15
+ dailyRollupWatermark(): Promise<number | null>;
16
+ deleteRunDaysOlderThan(cutoff: number): Promise<number>;
17
+ recentFailedRuns(accountId: string, sinceEpochMs: number, perWorkspaceLimit: number): Promise<PlatformFailedRunRef[]>;
13
18
  }
14
19
  //# sourceMappingURL=D1PlatformMetricsRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1PlatformMetricsRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1PlatformMetricsRepository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAW3D,qBAAa,2BAA4B,YAAW,yBAAyB;IAC3E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAe7F;IAEK,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAkBlC;IAEK,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAejC;IAEK,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgB1E;IAEK,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA6ChC;CACF"}
1
+ {"version":3,"file":"D1PlatformMetricsRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1PlatformMetricsRepository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAI5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAW3D,qBAAa,2BAA4B,YAAW,yBAAyB;IAC3E,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAE/B,YAAY,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,UAAU,CAAA;KAAE,EAErC;IAEK,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAe7F;IAEK,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAkBlC;IAEK,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAejC;IAEK,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgB1E;IAEK,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CA6ChC;IAEK,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyD3E;IAEK,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAoBlC;IAEK,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMnD;IAEK,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM5D;IAEK,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAuCjC;CACF"}
@@ -1,4 +1,6 @@
1
1
  import { agentRunKindSchema } from '@cat-factory/contracts';
2
+ import { RUN_DAYS_ROLLUP } from '@cat-factory/kernel';
3
+ import { DAY_MS } from '@cat-factory/orchestration';
2
4
  import { decodeEnum } from '@cat-factory/server';
3
5
  // Deployment-level rollups over `agent_runs`, scoped to an account by a sub-select on
4
6
  // `workspaces` (both live in the main DB). Every method is a single aggregate query —
@@ -110,5 +112,127 @@ export class D1PlatformMetricsRepository {
110
112
  p99Ms: at(row?.p99_ms),
111
113
  };
112
114
  }
115
+ async rollupRunDays(fromEpochMs, toEpochMs) {
116
+ // The aggregation happens in SQLite and no run row is ever loaded. Snapping the bounds to
117
+ // day edges keeps a partially-covered day from being written with only the covered part's
118
+ // counts, which would then look complete.
119
+ const from = Math.floor(fromEpochMs / DAY_MS) * DAY_MS;
120
+ const to = Math.ceil(toEpochMs / DAY_MS) * DAY_MS;
121
+ if (to <= from)
122
+ return 0;
123
+ // DELETE the window, then INSERT it: an upsert alone is NOT a rewrite. A run's `status`
124
+ // MUTATES in place (`running` → `done`) while its `created_at` stays put, so a pass that ran
125
+ // while the day was in flight wrote a `(day, 'running')` bucket that a later pass's SELECT no
126
+ // longer produces — `DO UPDATE` never touches a row the new result set omits, and the orphan
127
+ // then sits in the table until retention, inflating every long-window total and trend by
128
+ // every run that happened to be mid-flight at a sweep.
129
+ //
130
+ // `batch()` runs both in ONE implicit transaction, so a concurrent dashboard read never
131
+ // observes the window mid-rewrite (it would see an empty stretch and render it as an idle
132
+ // period). The `ON CONFLICT` is kept as a belt on top of the braces: the `GROUP BY` makes the
133
+ // incoming keys unique, so it can only fire against a pass racing this one.
134
+ const [, inserted] = await this.db.batch([
135
+ this.db
136
+ .prepare('DELETE FROM platform_run_days WHERE day_start >= ? AND day_start < ?')
137
+ .bind(from, to),
138
+ this.db
139
+ .prepare(
140
+ // `failure_kind` is '' for a non-failed status because it is part of the primary key
141
+ // and SQLite does not treat two NULLs there as equal (see migration 0079).
142
+ `INSERT INTO platform_run_days (workspace_id, day_start, status, failure_kind, run_count)
143
+ SELECT workspace_id,
144
+ CAST(created_at / ? AS INTEGER) * ? AS day_start,
145
+ status,
146
+ CASE WHEN status = 'failed'
147
+ THEN COALESCE(json_extract(failure, '$.kind'), 'unknown')
148
+ ELSE '' END AS failure_kind,
149
+ COUNT(*) AS run_count
150
+ FROM agent_runs
151
+ WHERE created_at >= ? AND created_at < ?
152
+ GROUP BY workspace_id, day_start, status, failure_kind
153
+ ON CONFLICT(workspace_id, day_start, status, failure_kind)
154
+ DO UPDATE SET run_count = excluded.run_count`)
155
+ .bind(DAY_MS, DAY_MS, from, to),
156
+ // The sweep's coverage, in the SAME batch (hence the same transaction) as the rewrite it
157
+ // describes, so the watermark can never claim a day the rows do not have. `through_day` is
158
+ // the last day the pass actually covered (`to` is the exclusive end) and only ever moves
159
+ // FORWARD: a pass recomputing an OLD window (a backfill, a replay) must not walk it
160
+ // backwards and make a current rollup read as behind. `updated_at` is the pass's own upper
161
+ // bound, which is the caller's `now` before it was snapped to a day edge.
162
+ this.db
163
+ .prepare(`INSERT INTO platform_rollup_state (rollup, through_day, updated_at) VALUES (?, ?, ?)
164
+ ON CONFLICT(rollup) DO UPDATE SET
165
+ through_day = MAX(platform_rollup_state.through_day, excluded.through_day),
166
+ updated_at = MAX(platform_rollup_state.updated_at, excluded.updated_at)`)
167
+ .bind(RUN_DAYS_ROLLUP, to - DAY_MS, toEpochMs),
168
+ ]);
169
+ return inserted?.meta.changes ?? 0;
170
+ }
171
+ async dailyRunTotalsSince(accountId, sinceEpochMs) {
172
+ const { results } = await this.db
173
+ .prepare(`SELECT day_start, status, failure_kind, SUM(run_count) AS run_count
174
+ FROM platform_run_days
175
+ WHERE workspace_id IN (${ACCOUNT_WORKSPACES}) AND day_start >= ?
176
+ GROUP BY day_start, status, failure_kind
177
+ ORDER BY day_start`)
178
+ // Snap to the day the window starts IN, so a window beginning mid-day still includes
179
+ // that day's bucket instead of silently dropping it (the bucket is the smallest unit
180
+ // this table can answer, and omitting it would under-report the oldest day).
181
+ .bind(accountId, Math.floor(sinceEpochMs / DAY_MS) * DAY_MS)
182
+ .all();
183
+ return (results ?? []).map((r) => ({
184
+ dayStart: Number(r.day_start),
185
+ status: r.status,
186
+ failureKind: r.failure_kind === '' ? null : r.failure_kind,
187
+ count: Number(r.run_count),
188
+ }));
189
+ }
190
+ async dailyRollupWatermark() {
191
+ const row = await this.db
192
+ .prepare('SELECT through_day FROM platform_rollup_state WHERE rollup = ?')
193
+ .bind(RUN_DAYS_ROLLUP)
194
+ .first();
195
+ return row?.through_day != null ? Number(row.through_day) : null;
196
+ }
197
+ async deleteRunDaysOlderThan(cutoff) {
198
+ const res = await this.db
199
+ .prepare('DELETE FROM platform_run_days WHERE day_start < ?')
200
+ .bind(cutoff)
201
+ .run();
202
+ return res.meta.changes ?? 0;
203
+ }
204
+ async recentFailedRuns(accountId, sinceEpochMs, perWorkspaceLimit) {
205
+ if (perWorkspaceLimit <= 0)
206
+ return [];
207
+ const { results } = await this.db
208
+ .prepare(
209
+ // Capped PER WORKSPACE by a window function, not by one global LIMIT: a card belongs to
210
+ // one workspace, and a single noisy workspace must not starve every other one's card of
211
+ // its own evidence. The partition COUNT rides along so the cap can report what it left
212
+ // out without a second query that could disagree with the sample it accompanies.
213
+ `SELECT workspace_id, id, block_id, failure_kind, created_at, workspace_failed_total
214
+ FROM (
215
+ SELECT workspace_id, id, block_id, created_at,
216
+ COALESCE(json_extract(failure, '$.kind'), 'unknown') AS failure_kind,
217
+ ROW_NUMBER() OVER (PARTITION BY workspace_id ORDER BY created_at DESC, id DESC)
218
+ AS rn,
219
+ COUNT(*) OVER (PARTITION BY workspace_id) AS workspace_failed_total
220
+ FROM agent_runs
221
+ WHERE workspace_id IN (${ACCOUNT_WORKSPACES}) AND created_at >= ?
222
+ AND status = 'failed' AND kind = 'execution'
223
+ )
224
+ WHERE rn <= ?
225
+ ORDER BY workspace_id, created_at DESC`)
226
+ .bind(accountId, sinceEpochMs, perWorkspaceLimit)
227
+ .all();
228
+ return (results ?? []).map((r) => ({
229
+ workspaceId: r.workspace_id,
230
+ executionId: r.id,
231
+ blockId: r.block_id ?? null,
232
+ failureKind: r.failure_kind ?? 'unknown',
233
+ createdAt: Number(r.created_at),
234
+ workspaceFailedTotal: Number(r.workspace_failed_total),
235
+ }));
236
+ }
113
237
  }
114
238
  //# sourceMappingURL=D1PlatformMetricsRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"D1PlatformMetricsRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1PlatformMetricsRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"D1PlatformMetricsRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/repositories/D1PlatformMetricsRepository.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AgentContextSnapshotRepository, AgentSearchQueryRepository, Clock, CommitProjectionRepository, LlmCallMetricRepository, NotificationRepository, AuthAttemptRepository, MachineNodeRepository, PasswordResetTokenRepository, PipelineScheduleRepository, ProvisioningLogRepository, RateLimitRepository, SubscriptionQuotaCycleRepository, TokenUsageRepository, Logger } from '@cat-factory/kernel';
1
+ import type { AgentContextSnapshotRepository, AgentSearchQueryRepository, Clock, CommitProjectionRepository, LlmCallMetricRepository, GateOutcomeRepository, NotificationRepository, AuthAttemptRepository, MachineNodeRepository, PasswordResetTokenRepository, PlatformMetricsRepository, PipelineScheduleRepository, ProvisioningLogRepository, RateLimitRepository, SubscriptionQuotaCycleRepository, TokenUsageRepository, Logger } from '@cat-factory/kernel';
2
2
  /** Per-table retention ages in milliseconds; 0 (or less) disables that table's pass. */
3
3
  interface RetentionPolicy {
4
4
  tokenUsageMs: number;
@@ -14,6 +14,10 @@ interface RetentionPolicy {
14
14
  provisioningLogMs: number;
15
15
  /** Resolved (acted/dismissed) notifications; open cards are never pruned. */
16
16
  notificationsMs: number;
17
+ /** Settled-gate projection (`gate_outcomes`) behind the dashboard's attempt statistics. */
18
+ gateOutcomesMs: number;
19
+ /** Daily run rollup (`platform_run_days`) behind the `30d` / `90d` dashboard windows. */
20
+ runDaysMs: number;
17
21
  }
18
22
  export interface RetentionDeps {
19
23
  tokenUsageRepository: TokenUsageRepository;
@@ -44,6 +48,13 @@ export interface RetentionDeps {
44
48
  authAttemptRepository: AuthAttemptRepository;
45
49
  /** Resolved notifications past the retention window (open cards are never pruned). */
46
50
  notificationRepository: NotificationRepository;
51
+ /** Settled-gate projection: pruned to `gateOutcomesMs`. */
52
+ gateOutcomeRepository: GateOutcomeRepository;
53
+ /**
54
+ * The daily run rollup: this pass both MATERIALISES it (a short trailing window, so a missed
55
+ * pass self-heals) and prunes it to `runDaysMs`.
56
+ */
57
+ platformMetricsRepository: PlatformMetricsRepository;
47
58
  clock: Clock;
48
59
  policy: RetentionPolicy;
49
60
  /** Names the table behind each isolated prune failure. Absent ⇒ the failures are silent. */
@@ -64,6 +75,10 @@ export interface RetentionResult {
64
75
  machineNodes: number;
65
76
  authAttempts: number;
66
77
  notifications: number;
78
+ gateOutcomes: number;
79
+ runDays: number;
80
+ /** Daily buckets (re)written by this pass's rollup: a WRITE, not rows reclaimed. */
81
+ runDaysRolledUp: number;
67
82
  /**
68
83
  * The tables whose prune threw this pass. EMPTY on a clean pass. Reported separately from
69
84
  * the counts because a failed prune and an empty table both reclaim 0 rows, and only one of
@@ -82,6 +97,6 @@ export interface RetentionResult {
82
97
  * since the same table failed on every subsequent pass too. Shared with the Node twin via
83
98
  * `createRetentionPass`, so the two facades cannot drift on it.
84
99
  */
85
- export declare function sweepRetention({ tokenUsageRepository, rateLimitRepository, commitRepository, llmCallMetricRepository, agentContextSnapshotRepository, agentSearchQueryRepository, subscriptionQuotaCycleRepository, pipelineScheduleRepository, provisioningLogRepository, passwordResetTokenRepository, machineNodeRepository, authAttemptRepository, notificationRepository, clock, policy, logger, }: RetentionDeps): Promise<RetentionResult>;
100
+ export declare function sweepRetention({ tokenUsageRepository, rateLimitRepository, commitRepository, llmCallMetricRepository, agentContextSnapshotRepository, agentSearchQueryRepository, subscriptionQuotaCycleRepository, pipelineScheduleRepository, provisioningLogRepository, passwordResetTokenRepository, machineNodeRepository, authAttemptRepository, notificationRepository, gateOutcomeRepository, platformMetricsRepository, clock, policy, logger, }: RetentionDeps): Promise<RetentionResult>;
86
101
  export {};
87
102
  //# sourceMappingURL=retention.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,0BAA0B,EAC1B,KAAK,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,gCAAgC,EAChC,oBAAoB,EACpB,MAAM,EACP,MAAM,qBAAqB,CAAA;AA4B5B,wFAAwF;AACxF,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,gBAAgB,EAAE,0BAA0B,CAAA;IAC5C,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,oFAAoF;IACpF,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,iFAAiF;IACjF,0BAA0B,EAAE,0BAA0B,CAAA;IACtD,uFAAuF;IACvF,gCAAgC,EAAE,gCAAgC,CAAA;IAClE,4FAA4F;IAC5F,0BAA0B,CAAC,EAAE,0BAA0B,CAAA;IACvD,+FAA+F;IAC/F,yBAAyB,CAAC,EAAE,yBAAyB,CAAA;IACrD,mFAAmF;IACnF,4BAA4B,CAAC,EAAE,4BAA4B,CAAA;IAC3D;;;;;OAKG;IACH,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C;kDAC8C;IAC9C,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,sFAAsF;IACtF,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,eAAe,CAAA;IACvB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,EACnC,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,gCAAgC,EAChC,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,EACL,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAmE1C"}
1
+ {"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/workflows/retention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8BAA8B,EAC9B,0BAA0B,EAC1B,KAAK,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,gCAAgC,EAChC,oBAAoB,EACpB,MAAM,EACP,MAAM,qBAAqB,CAAA;AA4B5B,wFAAwF;AACxF,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAA;IACvB,2FAA2F;IAC3F,cAAc,EAAE,MAAM,CAAA;IACtB,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,gBAAgB,EAAE,0BAA0B,CAAA;IAC5C,uBAAuB,EAAE,uBAAuB,CAAA;IAChD,oFAAoF;IACpF,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,iFAAiF;IACjF,0BAA0B,EAAE,0BAA0B,CAAA;IACtD,uFAAuF;IACvF,gCAAgC,EAAE,gCAAgC,CAAA;IAClE,4FAA4F;IAC5F,0BAA0B,CAAC,EAAE,0BAA0B,CAAA;IACvD,+FAA+F;IAC/F,yBAAyB,CAAC,EAAE,yBAAyB,CAAA;IACrD,mFAAmF;IACnF,4BAA4B,CAAC,EAAE,4BAA4B,CAAA;IAC3D;;;;;OAKG;IACH,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C;kDAC8C;IAC9C,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,sFAAsF;IACtF,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,2DAA2D;IAC3D,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C;;;OAGG;IACH,yBAAyB,EAAE,yBAAyB,CAAA;IACpD,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,eAAe,CAAA;IACvB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,EACnC,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,EAC1B,gCAAgC,EAChC,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,EACL,MAAM,EACN,MAAM,GACP,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAgF1C"}
@@ -1,4 +1,4 @@
1
- import { createRetentionPass } from '@cat-factory/orchestration';
1
+ import { RUN_DAY_ROLLUP_LOOKBACK_MS, createRetentionPass } from '@cat-factory/orchestration';
2
2
  /** Recurring-pipeline run history is kept ~1 week (the inspector's window). */
3
3
  const SCHEDULE_RUN_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
4
4
  // Auth attempts are junk once the 15-minute throttle window closes; a 1-hour retention leaves
@@ -25,7 +25,7 @@ const SUBSCRIPTION_QUOTA_CYCLE_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;
25
25
  * since the same table failed on every subsequent pass too. Shared with the Node twin via
26
26
  * `createRetentionPass`, so the two facades cannot drift on it.
27
27
  */
28
- export async function sweepRetention({ tokenUsageRepository, rateLimitRepository, commitRepository, llmCallMetricRepository, agentContextSnapshotRepository, agentSearchQueryRepository, subscriptionQuotaCycleRepository, pipelineScheduleRepository, provisioningLogRepository, passwordResetTokenRepository, machineNodeRepository, authAttemptRepository, notificationRepository, clock, policy, logger, }) {
28
+ export async function sweepRetention({ tokenUsageRepository, rateLimitRepository, commitRepository, llmCallMetricRepository, agentContextSnapshotRepository, agentSearchQueryRepository, subscriptionQuotaCycleRepository, pipelineScheduleRepository, provisioningLogRepository, passwordResetTokenRepository, machineNodeRepository, authAttemptRepository, notificationRepository, gateOutcomeRepository, platformMetricsRepository, clock, policy, logger, }) {
29
29
  const now = clock.now();
30
30
  const pass = createRetentionPass(logger);
31
31
  return {
@@ -55,6 +55,13 @@ export async function sweepRetention({ tokenUsageRepository, rateLimitRepository
55
55
  authAttempts: await pass.prune('auth_attempts', AUTH_ATTEMPT_RETENTION_MS, now, (c) => authAttemptRepository.deleteOlderThan(c)),
56
56
  // Resolved (acted/dismissed) notifications past the window; open cards untouched.
57
57
  notifications: await pass.prune('notifications', policy.notificationsMs, now, (c) => notificationRepository.deleteResolvedOlderThan(c)),
58
+ // Settled gates behind the dashboard's attempt statistics.
59
+ gateOutcomes: await pass.prune('gate_outcomes', policy.gateOutcomesMs, now, (c) => gateOutcomeRepository.deleteOlderThan(c)),
60
+ // Materialise the daily rollup BEFORE pruning it, so a pass never prunes a window it is
61
+ // about to rewrite, and recompute a short trailing lookback so a missed pass self-heals
62
+ // rather than leaving a day permanently half-counted.
63
+ runDaysRolledUp: await pass.materialize('platform_run_days', () => platformMetricsRepository.rollupRunDays(now - RUN_DAY_ROLLUP_LOOKBACK_MS, now)),
64
+ runDays: await pass.prune('platform_run_days', policy.runDaysMs, now, (c) => platformMetricsRepository.deleteRunDaysOlderThan(c)),
58
65
  failedTables: pass.failed,
59
66
  };
60
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"retention.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/retention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retention.js","sourceRoot":"","sources":["../../../src/infrastructure/workflows/retention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ -- Per-preset provider preference.
2
+ --
3
+ -- `provider_preference` is the order a preset's runs prefer a model's routes in (its
4
+ -- `ModelFlavor`s, most preferred first), stored as a JSON array. It REORDERS and never
5
+ -- filters: routes the list omits are appended in the default order and tried last, so a
6
+ -- preset naming three flavours cannot make a model whose only route is the fourth
7
+ -- unresolvable. NULL (and an empty array) mean the deployment's default order, which is
8
+ -- what every pre-existing row keeps.
9
+ ALTER TABLE model_presets
10
+ ADD COLUMN provider_preference TEXT;