@cat-factory/kernel 0.221.1 → 0.223.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 (39) hide show
  1. package/dist/domain/workspace-cascade.d.ts +1 -1
  2. package/dist/domain/workspace-cascade.d.ts.map +1 -1
  3. package/dist/domain/workspace-cascade.js +2 -0
  4. package/dist/domain/workspace-cascade.js.map +1 -1
  5. package/dist/ports/auth-attempt-repositories.d.ts +27 -0
  6. package/dist/ports/auth-attempt-repositories.d.ts.map +1 -0
  7. package/dist/ports/auth-attempt-repositories.js +9 -0
  8. package/dist/ports/auth-attempt-repositories.js.map +1 -0
  9. package/dist/ports/gate-outcomes.d.ts +89 -0
  10. package/dist/ports/gate-outcomes.d.ts.map +1 -0
  11. package/dist/ports/gate-outcomes.js +35 -0
  12. package/dist/ports/gate-outcomes.js.map +1 -0
  13. package/dist/ports/index.d.ts +8 -3
  14. package/dist/ports/index.d.ts.map +1 -1
  15. package/dist/ports/index.js +3 -1
  16. package/dist/ports/index.js.map +1 -1
  17. package/dist/ports/issue-writeback.d.ts +2 -2
  18. package/dist/ports/llm-trace-sink.d.ts +77 -0
  19. package/dist/ports/llm-trace-sink.d.ts.map +1 -1
  20. package/dist/ports/llm-trace-sink.js +5 -0
  21. package/dist/ports/llm-trace-sink.js.map +1 -1
  22. package/dist/ports/machine-node-repositories.d.ts +72 -0
  23. package/dist/ports/machine-node-repositories.d.ts.map +1 -0
  24. package/dist/ports/machine-node-repositories.js +8 -0
  25. package/dist/ports/machine-node-repositories.js.map +1 -0
  26. package/dist/ports/operational-metrics.d.ts +12 -1
  27. package/dist/ports/operational-metrics.d.ts.map +1 -1
  28. package/dist/ports/operational-metrics.js.map +1 -1
  29. package/dist/ports/platform-metrics.d.ts +80 -0
  30. package/dist/ports/platform-metrics.d.ts.map +1 -1
  31. package/dist/ports/platform-metrics.js +6 -1
  32. package/dist/ports/platform-metrics.js.map +1 -1
  33. package/dist/ports/task-source.d.ts +6 -1
  34. package/dist/ports/task-source.d.ts.map +1 -1
  35. package/dist/ports/tracker-webhook.d.ts +21 -10
  36. package/dist/ports/tracker-webhook.d.ts.map +1 -1
  37. package/dist/ports/tracker-webhook.js +8 -12
  38. package/dist/ports/tracker-webhook.js.map +1 -1
  39. package/package.json +2 -2
@@ -18,7 +18,7 @@
18
18
  * - Runtime-specific tables that only exist on one facade (e.g. the Cloudflare-only
19
19
  * `live_containers` Durable-Object tracking table) are appended by that facade.
20
20
  */
21
- export declare const WORKSPACE_SCOPED_TABLES: readonly ['agent_prompt_revisions', 'agent_runs', 'blocks', 'brainstorm_sessions', 'capability_credentials', 'clarity_reviews', 'consensus_groups', 'consensus_sessions', 'custom_manifest_types', 'doc_interview_sessions', 'document_connections', 'documents', 'environment_connections', 'environment_test_runs', 'environment_user_handlers', 'environments', 'github_branches', 'github_check_runs', 'github_commits', 'github_installations', 'github_issues', 'github_pull_requests', 'github_repos', 'incident_enrichment_connections', 'initiatives', 'kaizen_gradings', 'kaizen_verified_combos', 'merge_threshold_presets', 'merge_track_records', 'model_presets', 'notification_webhooks', 'notifications', 'observability_connections', 'package_registry_connections', 'pipeline_schedule_runs', 'pipeline_schedules', 'pipelines', 'provider_model_catalog', 'provider_subscription_tokens', 'public_api_keys', 'reference_architectures', 'release_health_configs', 'requirement_reviews', 'review_question_posts', 'runner_pool_connections', 'shared_stacks', 'slack_settings', 'task_connections', 'task_source_settings', 'tasks', 'test_secrets', 'tracker_comment_ingests', 'token_usage', 'tracker_settings', 'validation_configs', 'workspace_agent_settings', 'workspace_fragment_defaults', 'workspace_members', 'workspace_settings'];
21
+ export declare const WORKSPACE_SCOPED_TABLES: readonly ['agent_prompt_revisions', 'agent_runs', 'blocks', 'brainstorm_sessions', 'capability_credentials', 'clarity_reviews', 'consensus_groups', 'consensus_sessions', 'custom_manifest_types', 'doc_interview_sessions', 'document_connections', 'documents', 'environment_connections', 'environment_test_runs', 'environment_user_handlers', 'environments', 'gate_outcomes', 'github_branches', 'github_check_runs', 'github_commits', 'github_installations', 'github_issues', 'github_pull_requests', 'github_repos', 'incident_enrichment_connections', 'initiatives', 'kaizen_gradings', 'kaizen_verified_combos', 'merge_threshold_presets', 'merge_track_records', 'model_presets', 'notification_webhooks', 'notifications', 'observability_connections', 'package_registry_connections', 'pipeline_schedule_runs', 'pipeline_schedules', 'pipelines', 'platform_run_days', 'provider_model_catalog', 'provider_subscription_tokens', 'public_api_keys', 'reference_architectures', 'release_health_configs', 'requirement_reviews', 'review_question_posts', 'runner_pool_connections', 'shared_stacks', 'slack_settings', 'task_connections', 'task_source_settings', 'tasks', 'test_secrets', 'tracker_comment_ingests', 'token_usage', 'tracker_settings', 'validation_configs', 'workspace_agent_settings', 'workspace_fragment_defaults', 'workspace_members', 'workspace_settings'];
22
22
  export type WorkspaceScopedTable = (typeof WORKSPACE_SCOPED_TABLES)[number];
23
23
  /**
24
24
  * Tables that carry a `workspace_id` column but are NOT in {@link WORKSPACE_SCOPED_TABLES}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-cascade.d.ts","sourceRoot":"","sources":["../../src/domain/workspace-cascade.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,YAClC,wBAAwB,EACxB,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,iCAAiC,EACjC,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,wBAAwB,EACxB,8BAA8B,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,CACZ,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,YAAI,oBAAoB,EAAE,kBAAkB,CAAU,CAAA"}
1
+ {"version":3,"file":"workspace-cascade.d.ts","sourceRoot":"","sources":["../../src/domain/workspace-cascade.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,YAClC,wBAAwB,EACxB,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,iCAAiC,EACjC,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,8BAA8B,EAC9B,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,6BAA6B,EAC7B,mBAAmB,EACnB,oBAAoB,CACZ,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE3E;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,YAAI,oBAAoB,EAAE,kBAAkB,CAAU,CAAA"}
@@ -59,6 +59,7 @@ export const WORKSPACE_SCOPED_TABLES = [
59
59
  'environment_test_runs',
60
60
  'environment_user_handlers',
61
61
  'environments',
62
+ 'gate_outcomes',
62
63
  'github_branches',
63
64
  'github_check_runs',
64
65
  'github_commits',
@@ -80,6 +81,7 @@ export const WORKSPACE_SCOPED_TABLES = [
80
81
  'pipeline_schedule_runs',
81
82
  'pipeline_schedules',
82
83
  'pipelines',
84
+ 'platform_run_days',
83
85
  'provider_model_catalog',
84
86
  'provider_subscription_tokens',
85
87
  'public_api_keys',
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-cascade.js","sourceRoot":"","sources":["../../src/domain/workspace-cascade.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,kFAAkF;AAClF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,2CAA2C;AAC3C,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,8EAA8E;AAC9E,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,mFAAmF;AACnF,2EAA2E;AAC3E,+EAA+E;AAC/E,oFAAoF;AACpF,mFAAmF;AACnF,mFAAmF;AACnF,oFAAoF;AACpF,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,wBAAwB;IACxB,YAAY;IACZ,QAAQ;IACR,qBAAqB;IACrB,wBAAwB;IACxB,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;IACtB,WAAW;IACX,yBAAyB;IACzB,uBAAuB;IACvB,2BAA2B;IAC3B,cAAc;IACd,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,iCAAiC;IACjC,aAAa;IACb,iBAAiB;IACjB,wBAAwB;IACxB,yBAAyB;IACzB,qBAAqB;IACrB,eAAe;IACf,uBAAuB;IACvB,eAAe;IACf,2BAA2B;IAC3B,8BAA8B;IAC9B,wBAAwB;IACxB,oBAAoB;IACpB,WAAW;IACX,wBAAwB;IACxB,8BAA8B;IAC9B,iBAAiB;IACjB,yBAAyB;IACzB,wBAAwB;IACxB,qBAAqB;IACrB,uBAAuB;IACvB,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,sBAAsB;IACtB,OAAO;IACP,cAAc;IACd,yBAAyB;IACzB,aAAa;IACb,kBAAkB;IAClB,oBAAoB;IACpB,0BAA0B;IAC1B,6BAA6B;IAC7B,mBAAmB;IACnB,oBAAoB;CACZ,CAAA;AAIV;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAU,CAAA"}
1
+ {"version":3,"file":"workspace-cascade.js","sourceRoot":"","sources":["../../src/domain/workspace-cascade.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,kFAAkF;AAClF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,2CAA2C;AAC3C,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,8EAA8E;AAC9E,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,mFAAmF;AACnF,2EAA2E;AAC3E,+EAA+E;AAC/E,oFAAoF;AACpF,mFAAmF;AACnF,mFAAmF;AACnF,oFAAoF;AACpF,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,wBAAwB;IACxB,YAAY;IACZ,QAAQ;IACR,qBAAqB;IACrB,wBAAwB;IACxB,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;IACtB,WAAW;IACX,yBAAyB;IACzB,uBAAuB;IACvB,2BAA2B;IAC3B,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,iCAAiC;IACjC,aAAa;IACb,iBAAiB;IACjB,wBAAwB;IACxB,yBAAyB;IACzB,qBAAqB;IACrB,eAAe;IACf,uBAAuB;IACvB,eAAe;IACf,2BAA2B;IAC3B,8BAA8B;IAC9B,wBAAwB;IACxB,oBAAoB;IACpB,WAAW;IACX,mBAAmB;IACnB,wBAAwB;IACxB,8BAA8B;IAC9B,iBAAiB;IACjB,yBAAyB;IACzB,wBAAwB;IACxB,qBAAqB;IACrB,uBAAuB;IACvB,yBAAyB;IACzB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,sBAAsB;IACtB,OAAO;IACP,cAAc;IACd,yBAAyB;IACzB,aAAa;IACb,kBAAkB;IAClB,oBAAoB;IACpB,0BAA0B;IAC1B,6BAA6B;IAC7B,mBAAmB;IACnB,oBAAoB;CACZ,CAAA;AAIV;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAU,CAAA"}
@@ -0,0 +1,27 @@
1
+ /** One recorded password attempt. */
2
+ export interface AuthAttemptRecord {
3
+ /**
4
+ * The throttle bucket, `<ip>:<email>` for the email endpoints and a fixed literal for
5
+ * token-redeem (keying redeem by token value would hand every guess its own bucket).
6
+ */
7
+ key: string;
8
+ /** The resolved client IP, counted separately as the cross-email stuffing aggregate. */
9
+ ip: string;
10
+ /** Epoch ms of the attempt. */
11
+ at: number;
12
+ }
13
+ export interface AuthAttemptRepository {
14
+ /** Append one attempt. */
15
+ record(attempt: AuthAttemptRecord): Promise<void>;
16
+ /** Attempts recorded for `key` at/after `sinceMs`. */
17
+ countByKeySince(key: string, sinceMs: number): Promise<number>;
18
+ /**
19
+ * Attempts recorded from `ip` at/after `sinceMs`, across every key: the aggregate
20
+ * that stops one-password-many-emails credential stuffing, which the per-email key
21
+ * alone cannot (each email gets a fresh bucket).
22
+ */
23
+ countByIpSince(ip: string, sinceMs: number): Promise<number>;
24
+ /** Retention: delete attempts recorded before `epochMs`; returns the count removed. */
25
+ deleteOlderThan(epochMs: number): Promise<number>;
26
+ }
27
+ //# sourceMappingURL=auth-attempt-repositories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-attempt-repositories.d.ts","sourceRoot":"","sources":["../../src/ports/auth-attempt-repositories.ts"],"names":[],"mappings":"AAQA,qCAAqC;AACrC,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAA;IACX,wFAAwF;IACxF,EAAE,EAAE,MAAM,CAAA;IACV,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,sDAAsD;IACtD,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9D;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5D,uFAAuF;IACvF,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAClD"}
@@ -0,0 +1,9 @@
1
+ // The durable auth-attempt ledger behind the password-endpoint throttle
2
+ // (SEC-4 / durable-auth-rate-limiting.md). The in-process Map it replaces was per
3
+ // isolate/replica, so the effective cap was `MAX_ATTEMPTS x nodes` and a rolling deploy
4
+ // reset it; this store is the cross-replica coordination point. Deliberately tiny: one
5
+ // append + two indexed range counts per password attempt (rare and PBKDF2-priced), and
6
+ // rows are junk minutes later, so the retention sweep prunes aggressively. Do NOT extend
7
+ // it to high-frequency routes: a general API rate limiter is a different design.
8
+ export {};
9
+ //# sourceMappingURL=auth-attempt-repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-attempt-repositories.js","sourceRoot":"","sources":["../../src/ports/auth-attempt-repositories.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,kFAAkF;AAClF,wFAAwF;AACxF,uFAAuF;AACvF,uFAAuF;AACvF,yFAAyF;AACzF,iFAAiF"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * How a gate ended. A gate still looping has no row: only terminal verdicts are recorded.
3
+ *
4
+ * Deliberately TWO values rather than one per settling path, because the question the dashboard
5
+ * asks is "did the gate get the condition green, or does a human now own it", and every way a
6
+ * gate can end answers one or the other.
7
+ */
8
+ export type GateOutcomeKind =
9
+ /** The precheck ultimately passed and the run advanced. */
10
+ 'passed'
11
+ /**
12
+ * The gate ended WITHOUT the precheck going green and a human owns the outcome. Reached two
13
+ * ways: the attempt budget was spent (or there was no helper to escalate to), or an
14
+ * investigate-don't-fix helper finished and handed off out-of-band (`post-release-health` →
15
+ * `on-call`, which raises `release_regression` and never reverts). The two are one bucket
16
+ * because they call for the same operator response; the run's own step detail is where the
17
+ * difference is legible.
18
+ */
19
+ | 'exhausted';
20
+ /** One settled gate, written by the engine as the gate reaches its terminal verdict. */
21
+ export interface GateOutcomeRecord {
22
+ id: string;
23
+ workspaceId: string;
24
+ /** The run whose step this gate was. */
25
+ executionId: string;
26
+ /** The block the run belongs to, so a drill-down can reveal the task. */
27
+ blockId: string;
28
+ /** The gate step's agent kind (`ci` / `conflicts` / `post-release-health` / a custom one). */
29
+ gateKind: string;
30
+ /** The helper agent this gate escalates to (`ci-fixer` / …), or null when it has none. */
31
+ helperKind: string | null;
32
+ outcome: GateOutcomeKind;
33
+ /** Helper dispatches spent on this gate. 0 ⇒ the precheck passed with nothing spun up. */
34
+ attempts: number;
35
+ /** The attempt budget the task's merge preset allowed. */
36
+ maxAttempts: number;
37
+ /**
38
+ * Helper dispatches whose own job FAILED, as opposed to finishing and leaving the precheck
39
+ * red. Recorded separately because the two need opposite fixes: a fixer that keeps crashing
40
+ * is a platform fault, one that runs clean and cannot get the build green is a product one.
41
+ */
42
+ helperFailures: number;
43
+ /** Wall-clock ms from the gate's first entry to this verdict, or null when unknown. */
44
+ durationMs: number | null;
45
+ /** When the gate settled (epoch ms). */
46
+ createdAt: number;
47
+ }
48
+ /** One `(gateKind, helperKind, outcome)` bucket of settled gates in the window. */
49
+ export interface PlatformGateOutcomeCount {
50
+ gateKind: string;
51
+ helperKind: string | null;
52
+ outcome: GateOutcomeKind;
53
+ /** Gates that settled this way. */
54
+ gates: number;
55
+ /** Helper dispatches summed across them. */
56
+ attempts: number;
57
+ /** Helper dispatches whose job failed, summed across them. */
58
+ helperFailures: number;
59
+ /** Of {@link gates}, how many settled with zero helper dispatches. */
60
+ cleanGates: number;
61
+ }
62
+ export interface GateOutcomeRepository {
63
+ /**
64
+ * Record a settled gate. Best-effort at the call site (a failed write must never fail the
65
+ * run), and FIRST-WRITE-WINS on the id: the durable drivers replay, so the same gate can
66
+ * settle twice with the same minted id and the second write must not recompute the row.
67
+ */
68
+ record(row: GateOutcomeRecord): Promise<void>;
69
+ /**
70
+ * Gates that SETTLED at or after `sinceEpochMs`, grouped by `(gateKind, helperKind,
71
+ * outcome)`, for the account's workspaces. One aggregate query; the service folds these
72
+ * into the dashboard's per-gate statistics.
73
+ */
74
+ statsSince(accountId: string, sinceEpochMs: number): Promise<PlatformGateOutcomeCount[]>;
75
+ /** Prune settled gates older than `cutoff` (epoch ms). Returns the rows removed. */
76
+ deleteOlderThan(cutoff: number): Promise<number>;
77
+ }
78
+ /**
79
+ * The "this deployment keeps no settled-gate projection" implementation, for a caller that has
80
+ * nothing to record into (an engine unit test, a facade with no such store).
81
+ *
82
+ * It exists so `CoreDependencies.gateOutcomeRepository` can be REQUIRED. An un-wired projection
83
+ * reads downstream as "no gate ever escalated on this deployment", which is indistinguishable
84
+ * from a healthy one and is the same failure mode that made `logger` and `operationalMetrics`
85
+ * required rather than optional: a facade that forgets to wire it must fail to TYPECHECK, and a
86
+ * caller that genuinely has no store must say so in code.
87
+ */
88
+ export declare const noopGateOutcomeRepository: GateOutcomeRepository;
89
+ //# sourceMappingURL=gate-outcomes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-outcomes.d.ts","sourceRoot":"","sources":["../../src/ports/gate-outcomes.ts"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,MAAM,MAAM,eAAe;AACzB,2DAA2D;AACzD,QAAQ;AACV;;;;;;;GAOG;GACD,WAAW,CAAA;AAEf,wFAAwF;AACxF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,QAAQ,EAAE,MAAM,CAAA;IAChB,0FAA0F;IAC1F,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,eAAe,CAAA;IACxB,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,CAAA;IAChB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,uFAAuF;IACvF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,eAAe,CAAA;IACxB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAA;IACxF,oFAAoF;IACpF,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACjD;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB,EAAE,qBAIvC,CAAA"}
@@ -0,0 +1,35 @@
1
+ // Queryable projection of SETTLED polling gates: the store behind the operator dashboard's
2
+ // gate/CI-fixer attempt statistics.
3
+ //
4
+ // Why a projection at all: a gate's live state (`attempts`, `attemptLog`, the escalation
5
+ // phase) lives INSIDE the per-run `detail` JSON blob as `steps[].gate.*`, which is the right
6
+ // home for the run window and the wrong one for a rollup. Aggregating it would mean
7
+ // dialect-divergent JSON-array expansion (`json_each` versus `jsonb_array_elements`) reaching
8
+ // into the engine's internal step-serialization shape, in SQL, on both runtimes: a coupling
9
+ // that breaks the moment a step field is renamed, and that no `GROUP BY` can express in one
10
+ // query anyway. So the engine writes one flat row when a gate reaches a terminal verdict, and
11
+ // the rollup is an ordinary aggregate over columns.
12
+ //
13
+ // One row per SETTLED GATE, not per attempt. The per-round history is already durable on the
14
+ // step (and is what the run UI reads); what an operator cannot otherwise ask is how a gate
15
+ // ENDED and how much helper work it took to get there, which is exactly one row's worth of
16
+ // facts. Deliberately in the MAIN store beside `agent_runs`, not the telemetry store: it is
17
+ // account-scoped through the same `workspaces` sub-select every other platform rollup uses,
18
+ // and a telemetry-store home would have forced either a cross-store join or a workspace-id
19
+ // list threaded through the read (the one store rule in the initiative doc).
20
+ /**
21
+ * The "this deployment keeps no settled-gate projection" implementation, for a caller that has
22
+ * nothing to record into (an engine unit test, a facade with no such store).
23
+ *
24
+ * It exists so `CoreDependencies.gateOutcomeRepository` can be REQUIRED. An un-wired projection
25
+ * reads downstream as "no gate ever escalated on this deployment", which is indistinguishable
26
+ * from a healthy one and is the same failure mode that made `logger` and `operationalMetrics`
27
+ * required rather than optional: a facade that forgets to wire it must fail to TYPECHECK, and a
28
+ * caller that genuinely has no store must say so in code.
29
+ */
30
+ export const noopGateOutcomeRepository = {
31
+ record: async () => { },
32
+ statsSince: async () => [],
33
+ deleteOlderThan: async () => 0,
34
+ };
35
+ //# sourceMappingURL=gate-outcomes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-outcomes.js","sourceRoot":"","sources":["../../src/ports/gate-outcomes.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,oCAAoC;AACpC,EAAE;AACF,yFAAyF;AACzF,6FAA6F;AAC7F,oFAAoF;AACpF,8FAA8F;AAC9F,4FAA4F;AAC5F,4FAA4F;AAC5F,8FAA8F;AAC9F,oDAAoD;AACpD,EAAE;AACF,6FAA6F;AAC7F,2FAA2F;AAC3F,2FAA2F;AAC3F,4FAA4F;AAC5F,4FAA4F;AAC5F,2FAA2F;AAC3F,6EAA6E;AAmF7E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA0B;IAC9D,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;IACtB,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;IAC1B,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;CAC/B,CAAA"}
@@ -24,11 +24,14 @@ export { inlineModelRef, resolveScopedModelProvider } from './model-provider.js'
24
24
  export type { TokenUsageRecord, TokenUsageRepository, TokenUsageTotals, UsageBilling, UsageBreakdownRow, } from './token-usage.js';
25
25
  export type { InlineLlmCall, InlineLlmCallBody, InlineLlmCallRecorder, LlmCallBodySlice, LlmCallBodyWindow, LlmCallMetric, LlmCallMetricPage, LlmCallMetricRepository, LlmCallMetricSummary, LlmCallOutcomeFilter, LlmCallPageQuery, LlmCallRollupTotals, LlmCallRunPageQuery, LlmPromptChainTip, } from './llm-metrics.js';
26
26
  export { LLM_WARNING_FINISH_REASONS, escapeLikePattern } from './llm-metrics.js';
27
- export type { PlatformDurationStats, PlatformFailureCount, PlatformLiveCounts, PlatformMetricsRepository, PlatformRunOutcome, PlatformRunTrendPoint, } from './platform-metrics.js';
27
+ export type { PlatformDailyRunCount, PlatformDurationStats, PlatformFailedRunRef, PlatformFailureCount, PlatformLiveCounts, PlatformMetricsRepository, PlatformRunOutcome, PlatformRunTrendPoint, } from './platform-metrics.js';
28
+ export { RUN_DAYS_ROLLUP } from './platform-metrics.js';
29
+ export type { GateOutcomeKind, GateOutcomeRecord, GateOutcomeRepository, PlatformGateOutcomeCount, } from './gate-outcomes.js';
30
+ export { noopGateOutcomeRepository } from './gate-outcomes.js';
28
31
  export type { ReportActivityGroup, ReportRange, ReportScope, ReportSpendGroup, ReportSpendTrendBucket, ReportsRepository, } from './reports.js';
29
32
  export type { AgentContextFile, AgentContextFragment, AgentContextIndexQuery, AgentContextRecorder, AgentContextRunPageQuery, AgentContextSnapshot, AgentContextSnapshotIndex, AgentContextSnapshotRepository, RecordAgentContextInput, } from './agent-context.js';
30
33
  export type { AgentSearchQuery, AgentSearchQueryPageQuery, AgentSearchQueryRecorder, AgentSearchQueryRepository, RecordAgentSearchQueryInput, } from './agent-search-queries.js';
31
- export type { LlmGenerationEvent, LlmToolSpan, LlmToolSpanContext, LlmTraceSink, InlineAttribution, InlineAttributionScope, InlineObservabilityContext, TraceSinkObservability, } from './llm-trace-sink.js';
34
+ export type { LlmGenerationEvent, LlmRunSpan, LlmStepSpan, LlmToolSpan, LlmToolSpanContext, LlmTraceSink, InlineAttribution, InlineAttributionScope, InlineObservabilityContext, TraceSinkObservability, } from './llm-trace-sink.js';
32
35
  export { INLINE_OBSERVABILITY_NS, CompositeTraceSink, catFactoryObservability, composeTraceSinks, readInlineObservabilityContext, resolveInlineAttribution, } from './llm-trace-sink.js';
33
36
  export type { AgentDecisionRequest, AgentExecutor, AgentJobHandle, AgentJobUpdate, AgentRunContext, AgentRunResult, AgentTokenUsage, AsyncAgentExecutor, } from './agent-executor.js';
34
37
  export { isAsyncAgentExecutor } from './agent-executor.js';
@@ -53,7 +56,7 @@ export type { DocumentConnectionRecord, DocumentConnectionRepository, DocumentRe
53
56
  export type { TaskCredentials, TaskContent, TaskSearchRepoScope, IssueIntakeQuery, BugCandidate, TrackerBoard, NormalizedTaskConnection, TaskSourceProvider, TaskSourceRegistry, } from './task-source.js';
54
57
  export type { BugHuntAssessor, BugHuntSubject } from './bug-hunt.js';
55
58
  export type { TaskSourceWebhookAdapter, TrackerCommentAuthor, TrackerCommentEvent, TrackerIssueEvent, TrackerWebhookDelivery, TrackerWebhookEvent, } from './tracker-webhook.js';
56
- export { TRACKER_WEBHOOK_REPLY_ALLOW_KEY, TRACKER_WEBHOOK_SECRET_KEY, isTaskSourceKind, trackerWebhookSecret, } from './tracker-webhook.js';
59
+ export { BUILTIN_TASK_SOURCE_KINDS, TRACKER_WEBHOOK_REPLY_ALLOW_KEY, TRACKER_WEBHOOK_SECRET_KEY, isTaskSourceKind, trackerWebhookSecret, } from './tracker-webhook.js';
57
60
  export type { TaskConnectionRecord, TaskConnectionRepository, TaskSourceSettingsRecord, TaskSourceSettingsRepository, TaskRecord, TaskRef, TaskRepository, } from './task-repositories.js';
58
61
  export type { FragmentAppliesTo, PromptFragmentRecord, PromptFragmentRepository, FragmentSourceRecord, FragmentSourceRepository, ResolvedCatalogEntry, } from './fragment-repositories.js';
59
62
  export type { FragmentBriefRecord, FragmentBriefRepository, FragmentBriefGeneration, FragmentBriefGenerator, FragmentBriefGeneratorInput, } from './fragment-brief.js';
@@ -90,6 +93,8 @@ export type { ApiKeyScope, ApiKeyProvider, ApiKeyScopeRef, ProviderApiKeyRecord,
90
93
  export type { PublicApiKeyRecord, PublicApiKeyRepository } from './public-api-key-repositories.js';
91
94
  export type { PersonalSubscriptionRecord, PersonalSubscriptionRepository, SubscriptionActivationRecord, SubscriptionActivationRepository, } from './personal-subscription-repositories.js';
92
95
  export type { LocalModelEndpointRecord, LocalModelEndpointRepository, } from './local-model-repositories.js';
96
+ export type { MachineNodeMint, MachineNodeMintOutcome, MachineNodeRecord, MachineNodeRepository, } from './machine-node-repositories.js';
97
+ export type { AuthAttemptRecord, AuthAttemptRepository } from './auth-attempt-repositories.js';
93
98
  export type { UserSecretRecord, UserSecretRepository, ResolveUserGitHubToken, RunCredentialScope, RunInitiatorScope, } from './user-secret-repositories.js';
94
99
  export type { UserRepoAccessRecord, UserRepoAccessRepository, } from './user-repo-access-repositories.js';
95
100
  export type { ProviderModelCatalogRecord, ProviderModelCatalogRepository, } from './provider-model-catalog-repositories.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,oBAAoB,GACrB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EACV,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,YAAY,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,qBAAqB,EACrB,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAA;AACvF,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAC7E,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACxE,YAAY,EACV,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC/E,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;AAC/E,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACrF,YAAY,EACV,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,QAAQ,EACR,UAAU,GACX,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAChF,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAChF,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAA;AAClC,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,KAAK,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACxF,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,6BAA6B,EAC7B,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,eAAe,EACf,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,GAChB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClE,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,MAAM,EACN,aAAa,EACb,YAAY,GACb,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,cAAc,EACd,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACpE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,UAAU,EACV,OAAO,EACP,cAAc,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,+BAA+B,GAChC,MAAM,wCAAwC,CAAA;AAC/C,YAAY,EACV,SAAS,EACT,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC/E,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,gCAAgC,EAChC,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GAChB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAChF,OAAO,EAAE,KAAK,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACvF,YAAY,EACV,2BAA2B,EAC3B,+BAA+B,EAC/B,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAA;AACtC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,gCAAgC,EAChC,+BAA+B,GAChC,MAAM,6BAA6B,CAAA;AACpC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,KAAK,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACjF,YAAY,EACV,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,YAAY,EACV,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AACvF,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,2BAA2B,CAAA;AAClC,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,+BAA+B,CAAA;AACtC,YAAY,EACV,kBAAkB,EAClB,+BAA+B,EAC/B,mCAAmC,GACpC,MAAM,yCAAyC,CAAA;AAChD,YAAY,EACV,WAAW,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAClG,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,EAC9B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,yCAAyC,CAAA;AAChD,YAAY,EACV,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAA;AACtC,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,+BAA+B,CAAA;AACtC,YAAY,EACV,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,0CAA0C,CAAA;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACtF,YAAY,EACV,6BAA6B,EAC7B,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC7F,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC5E,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,0BAA0B,GAC3B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AAC9E,YAAY,EACV,yBAAyB,EACzB,6BAA6B,EAC7B,iCAAiC,EACjC,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EACV,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,kCAAkC,EAClC,sCAAsC,GACvC,MAAM,uCAAuC,CAAA;AAC9C,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,YAAY,EACV,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,yCAAyC,CAAA;AAChD,YAAY,EACV,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,GACpC,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AACpG,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC7E,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAC5E,YAAY,EACV,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,wCAAwC,CAAA;AAC/C,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAClF,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACzE,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAC9F,YAAY,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAA;AACvF,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAC7E,YAAY,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAC3E,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAC3E,YAAY,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAA;AACxF,YAAY,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAA;AACnG,YAAY,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AAC1F,YAAY,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AACnF,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AACpG,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,6BAA6B,EAC7B,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAA;AAC1F,YAAY,EACV,+BAA+B,EAC/B,uBAAuB,EACvB,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,mCAAmC,EAAE,MAAM,0CAA0C,CAAA;AAC9F,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,15 @@ export { createRecordingLogger, noopLogger, } from './logging.js';
3
3
  export { createOperationalMetricsCollector, noopOperationalMetrics, } from './operational-metrics.js';
4
4
  export { inlineModelRef, resolveScopedModelProvider } from './model-provider.js';
5
5
  export { LLM_WARNING_FINISH_REASONS, escapeLikePattern } from './llm-metrics.js';
6
+ export { RUN_DAYS_ROLLUP } from './platform-metrics.js';
7
+ export { noopGateOutcomeRepository } from './gate-outcomes.js';
6
8
  export { INLINE_OBSERVABILITY_NS, CompositeTraceSink, catFactoryObservability, composeTraceSinks, readInlineObservabilityContext, resolveInlineAttribution, } from './llm-trace-sink.js';
7
9
  export { isAsyncAgentExecutor } from './agent-executor.js';
8
10
  export { NoopWorkRunner } from './work-runner.js';
9
11
  export { NoopEventPublisher } from './execution-events.js';
10
12
  export { VcsIdentityError } from './vcs-identity.js';
11
13
  export { createBinaryArtifactStore } from './binary-artifacts.js';
12
- export { TRACKER_WEBHOOK_REPLY_ALLOW_KEY, TRACKER_WEBHOOK_SECRET_KEY, isTaskSourceKind, trackerWebhookSecret, } from './tracker-webhook.js';
14
+ export { BUILTIN_TASK_SOURCE_KINDS, TRACKER_WEBHOOK_REPLY_ALLOW_KEY, TRACKER_WEBHOOK_SECRET_KEY, isTaskSourceKind, trackerWebhookSecret, } from './tracker-webhook.js';
13
15
  export { readCachedWorkspaceSettings, repoFilesCacheGroup } from './caching.js';
14
16
  export { SecretDecryptError, isSecretDecryptError } from './secret-cipher.js';
15
17
  export { STRICT_URL_SAFETY_POLICY } from './url-safety-policy.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AA2C3D,OAAO,EAKL,qBAAqB,EACrB,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,OAAO,EAQL,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,0BAA0B,CAAA;AAsBjC,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAwBhF,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AA6ChF,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAW5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAgC,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAuCxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AA8BpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AA2DjE,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAsD7B,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAW/E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAqC7E,OAAO,EAAwB,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAiCvF,OAAO,EAAwB,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAWjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAOlE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAiBjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAgFvF,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AA8D9E,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AA6ClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAA;AAQ1F,OAAO,EAAE,mCAAmC,EAAE,MAAM,0CAA0C,CAAA;AAC9F,OAAO,EAGL,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AA2C3D,OAAO,EAKL,qBAAqB,EACrB,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,OAAO,EAQL,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,0BAA0B,CAAA;AAsBjC,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAwBhF,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAWhF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAOvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAuC9D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAW5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAgC,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAuCxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AA8BpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AA2DjE,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAsD7B,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAW/E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAqC7E,OAAO,EAAwB,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAiCvF,OAAO,EAAwB,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAWjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAOlE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAiBjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAuFvF,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AA8D9E,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AA6ClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAA;AAQ1F,OAAO,EAAE,mCAAmC,EAAE,MAAM,0CAA0C,CAAA;AAC9F,OAAO,EAGL,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,2BAA2B,CAAA"}
@@ -60,7 +60,7 @@ export interface IssueWritebackProvider {
60
60
  * the block's linked tracker issue(s) so the reporter sees the ask where they filed the
61
61
  * bug. This is an ECHO only: answers to a CLARITY gate still arrive in-app (the clarity
62
62
  * window). The tracker-side reply path built in
63
- * `docs/initiatives/tracker-webhook-intake.md` is scoped to the REQUIREMENTS review — its
63
+ * `backend/docs/adr/0032-tracker-webhook-intake.md` is scoped to the REQUIREMENTS review — its
64
64
  * findings carry the stable ids a reply names ({@link postReviewQuestions}); a clarity
65
65
  * question has none, so a comment answering one is ignored rather than guessed at.
66
66
  * Best-effort like the other hooks (a tracker outage never
@@ -96,7 +96,7 @@ export interface IssueWritebackProvider {
96
96
  * findings has no way to learn that the third is still holding the run, and a reply that named
97
97
  * an unknown id or landed after the review settled looks identical to one that worked. So the
98
98
  * ack always states the disposition — what was applied, what is still outstanding, and what was
99
- * rejected and why (see D6 of `docs/initiatives/tracker-webhook-intake.md`).
99
+ * rejected and why (see D6 of `backend/docs/adr/0032-tracker-webhook-intake.md`).
100
100
  *
101
101
  * Targeted at ONE issue (`source`/`externalId`) rather than the block's whole linked set: the
102
102
  * reply came from a specific thread, and broadcasting the ack to sibling issues would answer
@@ -63,6 +63,71 @@ export interface LlmToolSpanContext {
63
63
  executionId: string | null;
64
64
  agentKind: string;
65
65
  }
66
+ /**
67
+ * A settled run's ROOT span: the ancestor every generation and tool span of that run hangs
68
+ * under. Emitted ONCE, when the run reaches a terminal state, because that is the first
69
+ * moment its boundaries are known — the ordinary OpenTelemetry shape, where a parent always
70
+ * ends (and therefore exports) after its children.
71
+ */
72
+ export interface LlmRunSpan {
73
+ workspaceId: string | null;
74
+ executionId: string;
75
+ /** The pipeline that ran, used to name the span. */
76
+ pipelineName: string;
77
+ /** Epoch ms the run was created. */
78
+ startedAt: number;
79
+ /** Epoch ms the run settled. */
80
+ endedAt: number;
81
+ /** Whether the run reached `done` rather than `failed`. */
82
+ ok: boolean;
83
+ /** A short failure message when {@link ok} is false, else null. */
84
+ errorMessage: string | null;
85
+ }
86
+ /**
87
+ * One `(run, agent kind)` slice of a settled run: the parent of that kind's generations and
88
+ * tool spans.
89
+ *
90
+ * The grain is the agent KIND rather than the step index, because it is the finest grain a
91
+ * generation can NAME — {@link LlmGenerationEvent} carries `agentKind` and no step ordinal, so
92
+ * a per-step parent would be unaddressable from the very spans meant to hang under it. It is
93
+ * also the grain the rest of the LLM telemetry already buckets by (the prompt-chain key and the
94
+ * `(agentKind, phase)` rollup). A pipeline running two steps of one kind therefore folds into
95
+ * one span, which says so via {@link stepCount} rather than leaving a reader to assume one.
96
+ */
97
+ export interface LlmStepSpan {
98
+ workspaceId: string | null;
99
+ executionId: string;
100
+ agentKind: string;
101
+ /**
102
+ * The kind whose span this one hangs under, or undefined to hang directly off the run root.
103
+ *
104
+ * Set for a HELPER: a kind a step dispatched that is not the step's own (a gate escalating to
105
+ * `ci-fixer` / `conflict-resolver` / `on-call`, a Tester handing off to the fixer, a two-phase
106
+ * coder's `fork-proposer`). Those run inside a hosting step, and nesting them says so, where a
107
+ * flat sibling would present an escalation as if it were a pipeline step of its own.
108
+ */
109
+ parentAgentKind?: string;
110
+ /** Epoch ms the earliest folded step started, across ALL of its attempts. */
111
+ startedAt: number;
112
+ /** Epoch ms the latest folded step finished (the run's settle time for one still open). */
113
+ endedAt: number;
114
+ /** How many pipeline steps of this kind folded into the span (≥ 1). */
115
+ stepCount: number;
116
+ /**
117
+ * How many times this kind was DISPATCHED inside the span (≥ 1): a re-run step, a gate's
118
+ * fixer rounds, a Ralph loop's iterations.
119
+ *
120
+ * The span cannot separate those dispatches, because the events that hang under it carry no
121
+ * attempt ordinal to name one by. So the count is stated instead: converging in one round and
122
+ * thrashing through six are the same picture otherwise, and they are the picture an operator
123
+ * is actually looking for.
124
+ */
125
+ attemptCount: number;
126
+ /** False when any folded step failed. */
127
+ ok: boolean;
128
+ /** A short failure message when {@link ok} is false, else null. */
129
+ errorMessage: string | null;
130
+ }
66
131
  export interface LlmTraceSink {
67
132
  /** Emit one completed LLM call as a generation under its run's trace. */
68
133
  recordGeneration(event: LlmGenerationEvent): Promise<void> | void;
@@ -71,6 +136,17 @@ export interface LlmTraceSink {
71
136
  * Optional: a sink that only cares about generations can omit it.
72
137
  */
73
138
  recordToolSpans?(context: LlmToolSpanContext, spans: LlmToolSpan[]): Promise<void> | void;
139
+ /**
140
+ * Emit a settled run's root span together with its per-agent-kind step spans: the PARENTS
141
+ * of everything else this run emitted. One method rather than two, because the two are only
142
+ * meaningful together — a step span with no root is as broken as a generation with no step.
143
+ *
144
+ * Optional: only a sink whose ONLY grouping primitive is span parentage needs it. The
145
+ * Langfuse sink deliberately omits it: a Langfuse trace is a first-class object its
146
+ * generations already attach to by id, so synthesising parent observations there would add
147
+ * a second grouping story for no gain.
148
+ */
149
+ recordRunSpans?(run: LlmRunSpan, steps: LlmStepSpan[]): Promise<void> | void;
74
150
  /**
75
151
  * Flush any buffered telemetry (best-effort). Implemented by sinks that batch before
76
152
  * export (e.g. the OpenTelemetry SDK exporter); a fetch-per-call sink that already
@@ -106,6 +182,7 @@ export declare class CompositeTraceSink implements LlmTraceSink {
106
182
  private isolate;
107
183
  recordGeneration(event: LlmGenerationEvent): Promise<void>;
108
184
  recordToolSpans(context: LlmToolSpanContext, spans: LlmToolSpan[]): Promise<void>;
185
+ recordRunSpans(run: LlmRunSpan, steps: LlmStepSpan[]): Promise<void>;
109
186
  forceFlush(): Promise<void>;
110
187
  shutdown(): Promise<void>;
111
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"llm-trace-sink.d.ts","sourceRoot":"","sources":["../../src/ports/llm-trace-sink.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-trace-sink.d.ts","sourceRoot":"","sources":["../../src/ports/llm-trace-sink.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export class CompositeTraceSink {
48
48
  await sink.recordToolSpans?.(context, spans);
49
49
  })));
50
50
  }
51
+ async recordRunSpans(run, steps) {
52
+ await Promise.all(this.sinks.map((sink) => this.isolate(sink, 'recordRunSpans', async () => {
53
+ await sink.recordRunSpans?.(run, steps);
54
+ })));
55
+ }
51
56
  async forceFlush() {
52
57
  await Promise.all(this.sinks.map((sink) => this.isolate(sink, 'forceFlush', async () => {
53
58
  await sink.forceFlush?.();
@@ -1 +1 @@
1
- {"version":3,"file":"llm-trace-sink.js","sourceRoot":"","sources":["../../src/ports/llm-trace-sink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAA2B,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AA4GxD;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAkB;IAKV,KAAK;IAJP,GAAG,CAAQ;IACX,OAAO,CAAoB;IAE5C,YACmB,KAAqB,EACtC,aAAa,GAA2B,EAAE;qBADzB,KAAK;QAGtB,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,IAAI,UAAU,CAAA;QAC7C,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,kBAAkB,IAAI,sBAAsB,CAAA;IAC3E,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,OAAO,CAAC,IAAkB,EAAE,EAAU,EAAE,GAAwB;QAC5E,IAAI,CAAC;YACH,MAAM,GAAG,EAAE,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;YACrE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACzC,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,EAAE;gBACb,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,SAAS;gBACzC,GAAG,aAAa,CAAC,KAAK,CAAC;aACxB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAyB;QAC9C,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC,CAAC,CACH,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAA2B,EAAE,KAAoB;QACrE,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC,CAAC,CACH,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,CAAA;QAC3B,CAAC,CAAC,CACH,CACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAA;QACzB,CAAC,CAAC,CACH,CACF,CAAA;IACH,CAAC;CACF;AAQD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA4C,EAC5C,aAAsC;IAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAwB,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;IACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,OAAO,GAAG,aAAa,EAAE,MAAM,IAAI,aAAa,EAAE,kBAAkB,CAAA;IAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;IACrD,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,aAAa,IAAI,EAAE,CAAC,CAAA;AAC5D,CAAC;AAED,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,+EAA+E;AAC/E,uEAAuE;AACvE,2EAA2E;AAC3E,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,sCAAsC;AAEtC,4FAA4F;AAC5F,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AAShE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAmC;IAEnC,OAAO;QACL,CAAC,uBAAuB,CAAC,EAAE;YACzB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;KACF,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,8BAA8B,CAAC,MAAe;IAC5D,MAAM,eAAe,GAAI,MAAwD,EAAE,eAAe,CAAA;IAClG,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC,uBAAuB,CAAwC,CAAA;IAC7F,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC/E,MAAM,WAAW,GAAG,OAAO,GAAG,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,MAAM,WAAW,GAAG,OAAO,GAAG,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;AAChD,CAAC;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAe,EACf,KAAyC;IAEzC,MAAM,OAAO,GAAG,8BAA8B,CAAC,MAAM,CAAC,CAAA;IACtD,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,IAAI;QAC9D,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,IAAI;QAC9D,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"llm-trace-sink.js","sourceRoot":"","sources":["../../src/ports/llm-trace-sink.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /** One minted machine node, with its revocation state. */
2
+ export interface MachineNodeRecord {
3
+ /** The node id signed into every machine token minted for this node (`node_*`). */
4
+ nodeId: string;
5
+ /** The user the node was minted for; the only identity allowed to revoke it. */
6
+ userId: string;
7
+ /** The account scope of the most recent mint. */
8
+ accountIds: string[];
9
+ /** Epoch ms of the first mint. */
10
+ createdAt: number;
11
+ /** Epoch ms of the most recent mint. */
12
+ lastMintedAt: number;
13
+ /**
14
+ * The latest `exp` across this node's mints. Past it no token for the node can verify
15
+ * (the signature check enforces `exp` on its own), so the row is prunable.
16
+ */
17
+ expiresAt: number;
18
+ /** Epoch ms the node was revoked, or null while live. A tombstone, never cleared. */
19
+ revokedAt: number | null;
20
+ /** Who revoked it (audit); null while live. */
21
+ revokedByUserId: string | null;
22
+ }
23
+ /** A mint event to fold into the roster. */
24
+ export interface MachineNodeMint {
25
+ nodeId: string;
26
+ userId: string;
27
+ accountIds: string[];
28
+ mintedAt: number;
29
+ /** The signed token's `exp`. */
30
+ expiresAt: number;
31
+ }
32
+ /** What `recordMint` did, so the caller can refuse a mint it could not legitimately record. */
33
+ export type MachineNodeMintOutcome =
34
+ /** Inserted, or refreshed a row this user already owns. */
35
+ 'recorded'
36
+ /** The node id belongs to another user, or carries a revocation tombstone. */
37
+ | 'refused';
38
+ /**
39
+ * Persistence for the machine-node roster. The revocation read (`isRevoked`) sits on
40
+ * every `/internal/*` machine call, so implementations keep it a single indexed point
41
+ * read.
42
+ *
43
+ * Ownership is enforced by `recordMint` ITSELF, not by a read the caller does first: a
44
+ * check-then-write leaves a window where two mints of one node id both see "unknown" and
45
+ * the loser overwrites the winner's scope, leaving a row whose owner cannot see the live
46
+ * node and whose owner-of-record did not mint it. So the write is conflict-targeted and
47
+ * GUARDED, and reports which of the two happened.
48
+ */
49
+ export interface MachineNodeRepository {
50
+ /**
51
+ * Fold a mint into the roster: insert, or refresh `lastMintedAt`/`expiresAt`/`accountIds`
52
+ * for a row the SAME user owns and that is not revoked. `userId` and `createdAt` are never
53
+ * changed, and the revocation columns are never cleared, so a losing race cannot take a
54
+ * node over and a revoked id can never be resurrected. Returns `'refused'` when the row
55
+ * exists but fails that guard, which the caller turns into a refusal to hand out the token.
56
+ */
57
+ recordMint(mint: MachineNodeMint): Promise<MachineNodeMintOutcome>;
58
+ /** The roster row for a node, or null when unknown. */
59
+ get(nodeId: string): Promise<MachineNodeRecord | null>;
60
+ /** Every node minted for a user, newest mint first. */
61
+ listByUser(userId: string): Promise<MachineNodeRecord[]>;
62
+ /**
63
+ * Tombstone a node. Returns false when the node is unknown; revoking an
64
+ * already-revoked node is a no-op that returns true (idempotent kill switch).
65
+ */
66
+ revoke(nodeId: string, revokedAt: number, revokedByUserId: string): Promise<boolean>;
67
+ /** The per-request gate read: true only for an explicitly revoked node. */
68
+ isRevoked(nodeId: string): Promise<boolean>;
69
+ /** Retention: purge rows whose `expiresAt` is before `before`; returns the count removed. */
70
+ deleteExpired(before: number): Promise<number>;
71
+ }
72
+ //# sourceMappingURL=machine-node-repositories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-node-repositories.d.ts","sourceRoot":"","sources":["../../src/ports/machine-node-repositories.ts"],"names":[],"mappings":"AAOA,0DAA0D;AAC1D,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,+CAA+C;IAC/C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,+FAA+F;AAC/F,MAAM,MAAM,sBAAsB;AAChC,2DAA2D;AACzD,UAAU;AACZ,8EAA8E;GAC5E,SAAS,CAAA;AAEb;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAClE,uDAAuD;IACvD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACtD,uDAAuD;IACvD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACxD;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACpF,2EAA2E;IAC3E,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,6FAA6F;IAC7F,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC/C"}
@@ -0,0 +1,8 @@
1
+ // The machine-node roster: one row per `nodeId` a mothership has minted a machine token
2
+ // for, with a revocation tombstone (SEC-5 / security-hardening item 8). The roster exists
3
+ // because revocation needs OWNERSHIP: without a server-side record of who a node was
4
+ // minted for, a revoke endpoint either trusts a caller-supplied nodeId (any user could
5
+ // kill any other tenant's satellite) or cannot exist. Recording the mint is what makes
6
+ // "revoke MY node" checkable.
7
+ export {};
8
+ //# sourceMappingURL=machine-node-repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-node-repositories.js","sourceRoot":"","sources":["../../src/ports/machine-node-repositories.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,0FAA0F;AAC1F,qFAAqF;AACrF,uFAAuF;AACvF,uFAAuF;AACvF,8BAA8B"}
@@ -23,7 +23,18 @@ export type OperationalCounter =
23
23
  /** An app-cache read served from memory. Dimensioned by cache name. */
24
24
  | 'cache.hit'
25
25
  /** An app-cache read that had to run its loader. Dimensioned by cache name. */
26
- | 'cache.miss';
26
+ | 'cache.miss'
27
+ /**
28
+ * A password-endpoint attempt was refused by the throttle (SEC-4). The log line names the
29
+ * bucket; only this answers whether refusals are climbing, which is the difference between
30
+ * one forgetful user and a credential-stuffing sweep.
31
+ */
32
+ | 'auth.throttle.limited'
33
+ /**
34
+ * The durable attempt ledger was unreachable, so the throttle fell back to its per-process
35
+ * window. Silent otherwise, and it degrades every replica's view of an attack at once.
36
+ */
37
+ | 'auth.throttle.store_unavailable';
27
38
  /** The closed set of operational gauges — point-in-time readings, never accumulated. */
28
39
  export type OperationalGauge =
29
40
  /** Jobs waiting in a durable queue right now. Dimensioned by `queue`. */
@@ -1 +1 @@
1
- {"version":3,"file":"operational-metrics.d.ts","sourceRoot":"","sources":["../../src/ports/operational-metrics.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,MAAM,kBAAkB;AAC5B,mFAAmF;AACjF,oBAAoB;AACtB,0FAA0F;GACxF,qBAAqB;AACvB,sFAAsF;GACpF,mBAAmB;AACrB,yFAAyF;GACvF,cAAc;AAChB,wFAAwF;GACtF,2BAA2B;AAC7B,oFAAoF;GAClF,mBAAmB;AACrB,0EAA0E;GACxE,0BAA0B;AAC5B,kEAAkE;GAChE,8BAA8B;AAChC,uEAAuE;GACrE,WAAW;AACb,+EAA+E;GAC7E,YAAY,CAAA;AAUhB,wFAAwF;AACxF,MAAM,MAAM,gBAAgB;AAC1B,yEAAyE;AACzE,aAAa,CAAA;AAEf;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEpE,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,UAAU,EAAE,qBAAqB,CAAA;IACjC,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAA;CACd;AAED,uCAAuC;AACvC,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,gBAAgB,CAAA;IACvB,UAAU,EAAE,qBAAqB,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjG;AAED;;;;;GAKG;AACH,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACrE;;;;;OAKG;IACH,KAAK,IAAI,wBAAwB,EAAE,CAAA;CACpC;AAED,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,EAAE,kBAA4C,CAAA;AAYjF;;;;;GAKG;AACH,wBAAgB,iCAAiC,IAAI,2BAA2B,CA8B/E"}
1
+ {"version":3,"file":"operational-metrics.d.ts","sourceRoot":"","sources":["../../src/ports/operational-metrics.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,MAAM,kBAAkB;AAC5B,mFAAmF;AACjF,oBAAoB;AACtB,0FAA0F;GACxF,qBAAqB;AACvB,sFAAsF;GACpF,mBAAmB;AACrB,yFAAyF;GACvF,cAAc;AAChB,wFAAwF;GACtF,2BAA2B;AAC7B,oFAAoF;GAClF,mBAAmB;AACrB,0EAA0E;GACxE,0BAA0B;AAC5B,kEAAkE;GAChE,8BAA8B;AAChC,uEAAuE;GACrE,WAAW;AACb,+EAA+E;GAC7E,YAAY;AACd;;;;GAIG;GACD,uBAAuB;AACzB;;;GAGG;GACD,iCAAiC,CAAA;AAUrC,wFAAwF;AACxF,MAAM,MAAM,gBAAgB;AAC1B,yEAAyE;AACzE,aAAa,CAAA;AAEf;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAEpE,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,kBAAkB,CAAA;IAC3B,UAAU,EAAE,qBAAqB,CAAA;IACjC,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAA;CACd;AAED,uCAAuC;AACvC,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,gBAAgB,CAAA;IACvB,UAAU,EAAE,qBAAqB,CAAA;IACjC,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjG;AAED;;;;;GAKG;AACH,MAAM,WAAW,2BAA4B,SAAQ,kBAAkB;IACrE;;;;;OAKG;IACH,KAAK,IAAI,wBAAwB,EAAE,CAAA;CACpC;AAED,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,EAAE,kBAA4C,CAAA;AAYjF;;;;;GAKG;AACH,wBAAgB,iCAAiC,IAAI,2BAA2B,CA8B/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"operational-metrics.js","sourceRoot":"","sources":["../../src/ports/operational-metrics.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,0CAA0C;AAC1C,EAAE;AACF,sFAAsF;AACtF,yFAAyF;AACzF,0FAA0F;AAC1F,4FAA4F;AAC5F,2FAA2F;AAC3F,6CAA6C;AAC7C,EAAE;AACF,8DAA8D;AAC9D,yFAAyF;AACzF,4FAA4F;AAC5F,iDAAiD;AACjD,yFAAyF;AACzF,qEAAqE;AACrE,EAAE;AACF,6FAA6F;AAC7F,mFAAmF;AA8FnF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,sBAAsB,GAAuB,EAAE,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA;AAEjF;;;;GAIG;AACH,SAAS,YAAY,CAAC,UAAiC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC;IAC/C,wFAAwF;IACxF,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAGrB,CAAA;IACH,OAAO;QACL,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC;YAC3C,IAAI,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;gBACxB,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;YACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACtC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAA;;gBAChC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;QACzD,CAAC;QACD,KAAK;YACH,MAAM,OAAO,GAA+B,EAAE,CAAA;YAC9C,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC/C,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;oBACpD,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;gBACpD,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,KAAK,EAAE,CAAA;YAChB,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"operational-metrics.js","sourceRoot":"","sources":["../../src/ports/operational-metrics.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,0CAA0C;AAC1C,EAAE;AACF,sFAAsF;AACtF,yFAAyF;AACzF,0FAA0F;AAC1F,4FAA4F;AAC5F,2FAA2F;AAC3F,6CAA6C;AAC7C,EAAE;AACF,8DAA8D;AAC9D,yFAAyF;AACzF,4FAA4F;AAC5F,iDAAiD;AACjD,yFAAyF;AACzF,qEAAqE;AACrE,EAAE;AACF,6FAA6F;AAC7F,mFAAmF;AAyGnF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,sBAAsB,GAAuB,EAAE,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA;AAEjF;;;;GAIG;AACH,SAAS,YAAY,CAAC,UAAiC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC;IAC/C,wFAAwF;IACxF,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAGrB,CAAA;IACH,OAAO;QACL,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC;YAC3C,IAAI,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;gBACxB,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;YACrC,CAAC;YACD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;YACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACtC,IAAI,QAAQ;gBAAE,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAA;;gBAChC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAA;QACzD,CAAC;QACD,KAAK;YACH,MAAM,OAAO,GAA+B,EAAE,CAAA;YAC9C,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC/C,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;oBACpD,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;gBACpD,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,KAAK,EAAE,CAAA;YAChB,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -44,6 +44,40 @@ export interface PlatformDurationStats {
44
44
  p90Ms: number | null;
45
45
  p99Ms: number | null;
46
46
  }
47
+ /**
48
+ * One `(day, status, failureKind)` bucket of the DAILY ROLLUP table: the pre-aggregated
49
+ * counterpart of {@link PlatformRunOutcome} + {@link PlatformRunTrendPoint} +
50
+ * {@link PlatformFailureCount}, which is why a single row shape serves all three folds.
51
+ */
52
+ export interface PlatformDailyRunCount {
53
+ /** UTC-midnight epoch-ms start of the day. */
54
+ dayStart: number;
55
+ status: string;
56
+ /** The `failure.kind` for a `failed` row (`unknown` when absent); null for every other status. */
57
+ failureKind: string | null;
58
+ count: number;
59
+ }
60
+ /** One failed run behind an alert, for the notification card's deep-link. */
61
+ export interface PlatformFailedRunRef {
62
+ workspaceId: string;
63
+ executionId: string;
64
+ blockId: string | null;
65
+ failureKind: string;
66
+ createdAt: number;
67
+ /**
68
+ * How many runs failed in that WORKSPACE's window in total: the denominator the capped
69
+ * sample is a sample OF. Carried on each row (a window function over the same partition)
70
+ * rather than fetched separately, so the cap can state what it dropped without a second
71
+ * query, and so the total can never disagree with the sample it accompanies.
72
+ */
73
+ workspaceFailedTotal: number;
74
+ }
75
+ /**
76
+ * The `platform_rollup_state.rollup` key the daily run rollup records its coverage under. One
77
+ * constant so the two facades cannot write and read different keys, which would present a
78
+ * perfectly healthy sweep as one that has never run.
79
+ */
80
+ export declare const RUN_DAYS_ROLLUP = "run_days";
47
81
  export interface PlatformMetricsRepository {
48
82
  /**
49
83
  * Runs CREATED at or after `sinceEpochMs`, grouped by `(kind, status)`, for the
@@ -72,5 +106,51 @@ export interface PlatformMetricsRepository {
72
106
  * aggregate query (never a second scan to add the percentiles).
73
107
  */
74
108
  durationStatsSince(accountId: string, sinceEpochMs: number): Promise<PlatformDurationStats>;
109
+ /**
110
+ * Materialise the DAILY ROLLUP for every day overlapping `[fromEpochMs, toEpochMs)`, as one
111
+ * `INSERT … SELECT … GROUP BY` per runtime, never a read-into-JS-and-write-back. Returns
112
+ * the number of rolled-up buckets written.
113
+ *
114
+ * IDEMPOTENT by construction: each day is recomputed from `agent_runs` and REPLACES the
115
+ * stored bucket, so re-running the window is free, a sweep that missed passes self-heals by
116
+ * widening nothing, and the current (still-accruing) day is corrected on every pass rather
117
+ * than frozen at whatever it held when it was first written. That is also why the rollup
118
+ * cannot be an append: a day's counts are not final until the day is over, and the
119
+ * "published values must be final" rule applies to a bucket the reader treats as complete.
120
+ */
121
+ rollupRunDays(fromEpochMs: number, toEpochMs: number): Promise<number>;
122
+ /**
123
+ * The account's rolled-up daily buckets at or after `sinceEpochMs`: the long-window
124
+ * (`30d`/`90d`) source for the outcome totals, the trend AND the failure taxonomy, all of
125
+ * which fold from this one read.
126
+ */
127
+ dailyRunTotalsSince(accountId: string, sinceEpochMs: number): Promise<PlatformDailyRunCount[]>;
128
+ /**
129
+ * The newest day the rollup SWEEP has covered (epoch ms, UTC midnight), or null when no pass
130
+ * has ever completed.
131
+ *
132
+ * Read from the sweep's own recorded coverage, NOT `max(dayStart)` over the rows above, and
133
+ * DEPLOYMENT-scoped rather than per account. Both of those are the same point: the question is
134
+ * about the SWEEP and the rows are about the RUNS. An account idle for a fortnight and a
135
+ * wedged pass produce the same newest row; an account created yesterday and a rollup that has
136
+ * never run produce the same absence. Deriving the watermark from data therefore answers a
137
+ * different question than the one the dashboard asks, and answers it in a way that reads as
138
+ * confident. The pass records what it covered, so null means "no pass has run" and a value
139
+ * means "covered through here" whether or not anything happened in between.
140
+ */
141
+ dailyRollupWatermark(): Promise<number | null>;
142
+ /** Prune rolled-up daily buckets older than `cutoff` (epoch ms). Returns rows removed. */
143
+ deleteRunDaysOlderThan(cutoff: number): Promise<number>;
144
+ /**
145
+ * The most recent FAILED execution runs in the window, at most `perWorkspaceLimit` per
146
+ * workspace, for the account: the evidence a `platform_health` card deep-links to.
147
+ *
148
+ * Capped PER WORKSPACE by a window function rather than by one global `LIMIT`, so a single
149
+ * noisy workspace cannot starve every other one's card of its own evidence, and each row
150
+ * carries its workspace's full failed count so the cap can report what it left out. Scoped
151
+ * to `execution` runs because those are the ones a card can open; a bootstrap failure has
152
+ * no run window to link to, and a link that lands nowhere is worse than no link.
153
+ */
154
+ recentFailedRuns(accountId: string, sinceEpochMs: number, perWorkspaceLimit: number): Promise<PlatformFailedRunRef[]>;
75
155
  }
76
156
  //# sourceMappingURL=platform-metrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-metrics.d.ts","sourceRoot":"","sources":["../../src/ports/platform-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAgBtD,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAA;IAClB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,+FAA+F;AAC/F,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,uFAAuF;IACvF,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,4FAA4F;AAC5F,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,gGAAgG;AAChG,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACxF;;;;OAIG;IACH,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAA;IACnC;;;OAGG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;IAC9F;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACrE;;;;OAIG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;CAC5F"}
1
+ {"version":3,"file":"platform-metrics.d.ts","sourceRoot":"","sources":["../../src/ports/platform-metrics.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,7 @@
1
- export {};
1
+ /**
2
+ * The `platform_rollup_state.rollup` key the daily run rollup records its coverage under. One
3
+ * constant so the two facades cannot write and read different keys, which would present a
4
+ * perfectly healthy sweep as one that has never run.
5
+ */
6
+ export const RUN_DAYS_ROLLUP = 'run_days';
2
7
  //# sourceMappingURL=platform-metrics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-metrics.js","sourceRoot":"","sources":["../../src/ports/platform-metrics.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"platform-metrics.js","sourceRoot":"","sources":["../../src/ports/platform-metrics.ts"],"names":[],"mappings":"AAgGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAA"}
@@ -60,11 +60,16 @@ export interface TaskSearchRepoScope {
60
60
  * {@link BugCandidate} rows the bug hunt's ranking model needs.
61
61
  */
62
62
  export interface IssueIntakeQuery {
63
- /** The vendor's "board"/project scope; exactly the field for the provider's source is read. */
63
+ /**
64
+ * The vendor's "board"/project scope; exactly the field for the provider's source is read.
65
+ * `boardId` is the opaque leg a DEPLOYMENT-REGISTERED source reads (see
66
+ * `issueIntakeConfigSchema` for why it is a separate field rather than a reused built-in one).
67
+ */
64
68
  board: {
65
69
  jiraProjectKey?: string;
66
70
  linearTeamId?: string;
67
71
  githubRepo?: string;
72
+ boardId?: string;
68
73
  };
69
74
  /** Substring that must appear in the issue title. */
70
75
  titleFragment?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"task-source.d.ts","sourceRoot":"","sources":["../../src/ports/task-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-source.d.ts","sourceRoot":"","sources":["../../src/ports/task-source.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,19 @@ export interface TrackerIssueEvent {
43
43
  labels: string[];
44
44
  /** Issue type name where the vendor has one (Jira issue type / GitHub issue type); else null. */
45
45
  issueType: string | null;
46
+ /**
47
+ * The vendor board this issue sits on, in exactly the shape the matching
48
+ * `IssueIntakeQuery.board` field carries: a Jira project key, an `owner/repo` slug, a Linear
49
+ * team id, or a registered source's opaque board id. So a schedule's configured scope can be
50
+ * compared against it without any per-source knowledge here.
51
+ *
52
+ * `null` means the DELIVERY did not say, never "no board". The distinction is load-bearing:
53
+ * an intake schedule is scoped to one board, so a null is a predicate the event cannot answer
54
+ * rather than one it fails, and the two dispatch modes dispose of that differently (see
55
+ * `intakeMatch.logic.ts`). All three built-in adapters populate it from the payload they
56
+ * already parse, so a null here is a vendor shape we did not recognise.
57
+ */
58
+ board: string | null;
46
59
  /** Canonical web URL, when the payload carries one. */
47
60
  url: string | null;
48
61
  }
@@ -99,16 +112,14 @@ export declare const TRACKER_WEBHOOK_REPLY_ALLOW_KEY = "webhookReplyAllow";
99
112
  /** Read the inbound webhook secret out of a connection's credential bag (`''` when unset). */
100
113
  export declare function trackerWebhookSecret(credentials: TaskCredentials | undefined): string;
101
114
  /**
102
- * Every task source this build knows about — the runtime companion of the closed
103
- * `taskSourceKindSchema` union, so the webhook receiver can reject an unknown `:source` path
104
- * segment before touching the container.
115
+ * The task-source vocabulary, re-exported from `@cat-factory/contracts` (which owns the schema)
116
+ * rather than re-listed here, because a second copy of a vocabulary is a second thing to forget.
105
117
  *
106
- * Kept in step with `@cat-factory/contracts`' `taskSourceKindSchema` by the `TaskSourceKind` type
107
- * annotation: adding a member there without adding it here fails the typecheck at the
108
- * `readonly TaskSourceKind[]` position. Widening the union for deployment-registered trackers is a
109
- * deliberate follow-up (slice 4 of `docs/initiatives/tracker-webhook-intake.md`).
118
+ * `BUILTIN_TASK_SOURCE_KINDS` is no longer "every source that can exist": a deployment registers
119
+ * its own on the app-owned `TaskSourceRegistry` (D7 of
120
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`), and those never appear in it. Anything
121
+ * deciding what a deployment ACTUALLY serves must ask the registry; the constant answers only "did
122
+ * we ship it", and {@link isTaskSourceKind} answers only "is this a well-formed id".
110
123
  */
111
- export declare const TASK_SOURCE_KINDS: readonly TaskSourceKind[];
112
- /** Type guard: is `value` one of the known {@link TaskSourceKind}s? */
113
- export declare function isTaskSourceKind(value: unknown): value is TaskSourceKind;
124
+ export { BUILTIN_TASK_SOURCE_KINDS, isTaskSourceKind } from '@cat-factory/contracts';
114
125
  //# sourceMappingURL=tracker-webhook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker-webhook.d.ts","sourceRoot":"","sources":["../../src/ports/tracker-webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAgBvD,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;;OAGG;IACH,GAAG,EAAE,WAAW,CAAA;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACnC,sGAAsG;IACtG,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,qGAAqG;IACrG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,oFAAoF;IACpF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;;;OAIG;IACH,GAAG,EAAE,OAAO,CAAA;CACb;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,cAAc,CAAA;IACtB,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iGAAiG;IACjG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,uDAAuD;IACvD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,4FAA4F;IAC5F,SAAS,EAAE,MAAM,CAAA;IACjB,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,oBAAoB,CAAA;CAC7B;AAED,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,mBAAmB,CAAA;AAEzE;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1E;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI,CAAA;CACpE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,kBAAkB,CAAA;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,sBAAsB,CAAA;AAElE,8FAA8F;AAC9F,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAErF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAA0C,CAAA;AAEjG,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE"}
1
+ {"version":3,"file":"tracker-webhook.d.ts","sourceRoot":"","sources":["../../src/ports/tracker-webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAgBvD,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;;OAGG;IACH,GAAG,EAAE,WAAW,CAAA;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACnC,sGAAsG;IACtG,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,qGAAqG;IACrG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,oFAAoF;IACpF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;;;OAIG;IACH,GAAG,EAAE,OAAO,CAAA;CACb;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,cAAc,CAAA;IACtB,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,iGAAiG;IACjG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,uDAAuD;IACvD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,sDAAsD;AACtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,4FAA4F;IAC5F,SAAS,EAAE,MAAM,CAAA;IACjB,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,oBAAoB,CAAA;CAC7B;AAED,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,mBAAmB,CAAA;AAEzE;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1E;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,IAAI,CAAA;CACpE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,kBAAkB,CAAA;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,sBAAsB,CAAA;AAElE,8FAA8F;AAC9F,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAErF;AAED;;;;;;;;;GASG;AACH,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -20,18 +20,14 @@ export function trackerWebhookSecret(credentials) {
20
20
  return credentials?.[TRACKER_WEBHOOK_SECRET_KEY]?.trim() ?? '';
21
21
  }
22
22
  /**
23
- * Every task source this build knows about — the runtime companion of the closed
24
- * `taskSourceKindSchema` union, so the webhook receiver can reject an unknown `:source` path
25
- * segment before touching the container.
23
+ * The task-source vocabulary, re-exported from `@cat-factory/contracts` (which owns the schema)
24
+ * rather than re-listed here, because a second copy of a vocabulary is a second thing to forget.
26
25
  *
27
- * Kept in step with `@cat-factory/contracts`' `taskSourceKindSchema` by the `TaskSourceKind` type
28
- * annotation: adding a member there without adding it here fails the typecheck at the
29
- * `readonly TaskSourceKind[]` position. Widening the union for deployment-registered trackers is a
30
- * deliberate follow-up (slice 4 of `docs/initiatives/tracker-webhook-intake.md`).
26
+ * `BUILTIN_TASK_SOURCE_KINDS` is no longer "every source that can exist": a deployment registers
27
+ * its own on the app-owned `TaskSourceRegistry` (D7 of
28
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`), and those never appear in it. Anything
29
+ * deciding what a deployment ACTUALLY serves must ask the registry; the constant answers only "did
30
+ * we ship it", and {@link isTaskSourceKind} answers only "is this a well-formed id".
31
31
  */
32
- export const TASK_SOURCE_KINDS = ['jira', 'github', 'linear'];
33
- /** Type guard: is `value` one of the known {@link TaskSourceKind}s? */
34
- export function isTaskSourceKind(value) {
35
- return typeof value === 'string' && TASK_SOURCE_KINDS.includes(value);
36
- }
32
+ export { BUILTIN_TASK_SOURCE_KINDS, isTaskSourceKind } from '@cat-factory/contracts';
37
33
  //# sourceMappingURL=tracker-webhook.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker-webhook.js","sourceRoot":"","sources":["../../src/ports/tracker-webhook.ts"],"names":[],"mappings":"AAsGA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,eAAe,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAA;AAElE,8FAA8F;AAC9F,MAAM,UAAU,oBAAoB,CAAC,WAAwC;IAC3E,OAAO,WAAW,EAAE,CAAC,0BAA0B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAChE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAEjG,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC9F,CAAC"}
1
+ {"version":3,"file":"tracker-webhook.js","sourceRoot":"","sources":["../../src/ports/tracker-webhook.ts"],"names":[],"mappings":"AAmHA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,eAAe,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAA;AAElE,8FAA8F;AAC9F,MAAM,UAAU,oBAAoB,CAAC,WAAwC;IAC3E,OAAO,WAAW,EAAE,CAAC,0BAA0B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAChE,CAAC;AAED;;;;;;;;;GASG;AACH,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/kernel",
3
- "version": "0.221.1",
3
+ "version": "0.223.0",
4
4
  "description": "Shared vocabulary, pure logic, and port interfaces for the Agent Architecture Board.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "dependencies": {
27
27
  "ai": "^7.0.47",
28
28
  "yaml": "^2.9.0",
29
- "@cat-factory/contracts": "0.219.0"
29
+ "@cat-factory/contracts": "0.221.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@vitest/coverage-v8": "^4.1.10",