@cat-factory/contracts 0.197.0 → 0.198.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/events.d.ts CHANGED
@@ -3,6 +3,7 @@ import type { ExecutionInstance } from './execution.js';
3
3
  import type { BootstrapJob } from './bootstrap.js';
4
4
  import type { EnvConfigRepairJob } from './env-config-repair.js';
5
5
  import type { EnvironmentTestRun } from './environment-test.js';
6
+ import type { InfraSetupArea, InfraSetupStatus } from './infra-setup.js';
6
7
  import type { Notification } from './notifications.js';
7
8
  import type { LlmCallActivity } from './observability.js';
8
9
  import type { RequirementReview } from './requirements.js';
@@ -68,6 +69,33 @@ export type WorkspaceEvent =
68
69
  run: EnvironmentTestRun;
69
70
  at: number;
70
71
  }
72
+ /**
73
+ * One infrastructure area's reachability changed, so the client patches its `infraSetup`
74
+ * projection in place and the setup banner appears or clears IMMEDIATELY.
75
+ *
76
+ * Without this the projection is only recomputed when a workspace snapshot (re)loads, which is
77
+ * fine for the operator-decision states — nobody un-configures a runner pool behind your back —
78
+ * but useless for `unreachable`: a cluster that dies mid-session would stay invisible until
79
+ * somebody happened to reload the app, which in practice means the next day. A dead environment
80
+ * provider silently fails every testing agent in the meantime, so it has to push.
81
+ *
82
+ * Published on TRANSITION only, never per probe: the watcher polls on a sweep cadence, so
83
+ * re-announcing an ongoing outage every pass would turn this into a standing event storm on the
84
+ * workspace bus.
85
+ *
86
+ * `detail` is the probe's own operator-facing reason (a refused connection reads very
87
+ * differently from a rejected token) and is deliberately NOT persisted on the notification the
88
+ * watcher raises: it varies between passes, and the card re-delivers whenever its content
89
+ * changes, so carrying it there would re-toast the inbox for the whole outage. It therefore
90
+ * rides the live transition only — which is exactly when someone is looking.
91
+ */
92
+ | {
93
+ type: 'infraSetup';
94
+ area: InfraSetupArea;
95
+ status: InfraSetupStatus;
96
+ detail?: string;
97
+ at: number;
98
+ }
71
99
  /**
72
100
  * A human-actionable notification was raised or resolved (a PR needs review, a
73
101
  * pipeline finished and wants confirmation, CI fixing gave up). The client
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -6,22 +6,44 @@ import * as v from 'valibot';
6
6
  * - `configured` — a connection / backend is defined.
7
7
  * - `not_applicable` — this runtime doesn't need it (the integration isn't wired),
8
8
  * so there is nothing to nag about.
9
+ * - `unreachable` — it IS configured, but a live probe could not reach it.
10
+ *
11
+ * `unreachable` is deliberately carried by this SETUP projection even though it reports runtime
12
+ * health, because the consequence is identical to `not_defined` — a whole class of agents cannot
13
+ * run — and the operator surface that fixes it is the same one. Sharing the projection means
14
+ * sharing the banner, its deep-link and its i18n instead of growing a second "your infra is
15
+ * broken" surface.
16
+ *
17
+ * It is NOT interchangeable with the other three in one respect, and consumers MUST honour the
18
+ * difference: those are stable operator decisions, so the banner offers a PERMANENT per-user
19
+ * "don't notify me again" dismissal. Applying that to `unreachable` would let one click
20
+ * permanently silence every future outage, so a health state is dismissible for the SESSION
21
+ * only and must re-nag when it recurs. See {@link isInfraSetupHealthStatus} and
22
+ * `InfraSetupBanner.vue`.
9
23
  */
10
- export declare const infraSetupStatusSchema: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
24
+ export declare const infraSetupStatusSchema: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
11
25
  export type InfraSetupStatus = v.InferOutput<typeof infraSetupStatusSchema>;
26
+ /**
27
+ * The {@link InfraSetupStatus} values describing a live-HEALTH problem rather than an operator
28
+ * decision. Exported so the SPA's dismissal fork keys off ONE definition instead of re-listing
29
+ * the literal at each site.
30
+ */
31
+ export declare const INFRA_SETUP_HEALTH_STATUSES: readonly ['unreachable'];
32
+ /** Whether a status is a transient health failure (session-only dismissal, re-nag on recurrence). */
33
+ export declare function isInfraSetupHealthStatus(status: InfraSetupStatus): boolean;
12
34
  /** The per-area infrastructure-setup status projection carried on the snapshot. */
13
35
  export declare const infraSetupSchema: v.ObjectSchema<{
14
36
  /** Ephemeral test environments (deployer / provisioning). Relevant on every runtime. */
15
- readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
37
+ readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
16
38
  /** The container agent executor (self-hosted runner pool). Relevant only on remote Node. */
17
- readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
39
+ readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
18
40
  /**
19
41
  * Binary/object storage for UI screenshots + reference images. Every facade wires an
20
42
  * artifact-store resolver, so this is `configured`/`not_defined` on every runtime — not just
21
43
  * remote Node: a Cloudflare deployment WITHOUT an `ARTIFACT_BUCKET` binding (or any account
22
44
  * that selected no backend) reads `not_defined` too.
23
45
  */
24
- readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
46
+ readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
25
47
  }, undefined>;
26
48
  export type InfraSetup = v.InferOutput<typeof infraSetupSchema>;
27
49
  /** The infrastructure areas the setup banner surfaces (leaf names mirror {@link infraSetupSchema}). */
@@ -29,6 +51,45 @@ export declare const infraSetupAreaSchema: v.PicklistSchema<["ephemeralEnvironme
29
51
  export type InfraSetupArea = v.InferOutput<typeof infraSetupAreaSchema>;
30
52
  /** Every infra-setup area, as a plain readonly tuple (the source of truth for iteration). */
31
53
  export declare const INFRA_SETUP_AREAS: ["ephemeralEnvironments", "agentExecutor", "binaryStorage"];
54
+ /**
55
+ * The areas the reachability watcher can report `unreachable` for — those backed by a connection
56
+ * whose provider exposes a live connection probe. `binaryStorage` is deliberately ABSENT: it
57
+ * resolves an artifact store from account settings and has no cheap reachability probe, so it
58
+ * stays a pure operator-decision area and a dead bucket surfaces where it always did (on the
59
+ * write that needs it). Shared so the watcher, the projection fold and the tests agree on ONE
60
+ * list rather than each re-deriving "which areas can be unreachable".
61
+ */
62
+ export declare const INFRA_SETUP_PROBED_AREAS: readonly ["ephemeralEnvironments", "agentExecutor"];
63
+ /** An area the reachability watcher can report on (a member of {@link INFRA_SETUP_PROBED_AREAS}). */
64
+ export type InfraSetupProbedArea = (typeof INFRA_SETUP_PROBED_AREAS)[number];
65
+ /**
66
+ * Whether an area is one the watcher probes — a TYPE GUARD, so a consumer keyed on the probed
67
+ * subset (the outage copy has a per-area title; `binaryStorage` has none because it can never be
68
+ * unreachable) narrows instead of carrying a dead entry for an area that cannot reach it.
69
+ */
70
+ export declare function isInfraSetupProbedArea(area: InfraSetupArea): area is InfraSetupProbedArea;
71
+ /**
72
+ * Apply ONE observed reachability status to an area of a setup projection.
73
+ *
74
+ * This is the single definition of which prior state a probe verdict may overwrite, and BOTH
75
+ * delivery paths fold through it: the backend's snapshot projection (kernel's
76
+ * `applyInfraReachability`, folding the areas recorded on the open card) and the SPA store's
77
+ * live `infraSetup` event patch. They diverged once — the snapshot guarded the write and the live
78
+ * patch assigned unconditionally — so a pushed `unreachable` rendered a red "check that the
79
+ * service is running" banner for an area the projection called `not_applicable`, which then
80
+ * vanished on the next reload. Live and reloaded state must agree, so the rule lives here.
81
+ *
82
+ * Only a `configured` area may become `unreachable`: the other states OUT-RANK a probe verdict.
83
+ * `not_defined` means the connection is gone (the actionable nag is "set it up", and a lingering
84
+ * outage would report on something that no longer exists) and `not_applicable` means this
85
+ * deployment does not use the area at all. Symmetrically, a recovery only clears an area this
86
+ * projection currently calls `unreachable`, so a stale in-flight push cannot overwrite a
87
+ * freshly-read `not_defined` with `configured`.
88
+ *
89
+ * Returns the projection UNCHANGED (by identity) when the status may not be applied, so a caller
90
+ * can cheaply tell "nothing moved" from a real transition.
91
+ */
92
+ export declare function applyInfraSetupTransition(projection: InfraSetup, area: InfraSetupArea, status: InfraSetupStatus): InfraSetup;
32
93
  /**
33
94
  * The `localStorage` key under which the SPA's `InfraSetupBanner` persists its PERMANENT,
34
95
  * per-user "don't notify me again" dismissals ({@link InfraSetupArea}[] keyed by user id).
@@ -1 +1 @@
1
- {"version":3,"file":"infra-setup.d.ts","sourceRoot":"","sources":["../src/infra-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA4B5B;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,8EAA8D,CAAA;AACjG,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,mFAAmF;AACnF,eAAO,MAAM,gBAAgB;IAC3B,wFAAwF;;IAExF,4FAA4F;;IAE5F;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,0FAI/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,6DAA+B,CAAA;AAE7D;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,sCAAsC,CAAA"}
1
+ {"version":3,"file":"infra-setup.d.ts","sourceRoot":"","sources":["../src/infra-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA4B5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,6FAKjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,YAAI,aAAa,CAAU,CAAA;AAEnE,qGAAqG;AACrG,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE1E;AAED,mFAAmF;AACnF,eAAO,MAAM,gBAAgB;IAC3B,wFAAwF;;IAExF,4FAA4F;;IAE5F;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,0FAI/B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,6DAA+B,CAAA;AAE7D;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,qDAGS,CAAA;AAE9C,qGAAqG;AACrG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5E;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,IAAI,oBAAoB,CAEzF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,gBAAgB,GACvB,UAAU,CAOZ;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,sCAAsC,CAAA"}
@@ -31,8 +31,37 @@ import * as v from 'valibot';
31
31
  * - `configured` — a connection / backend is defined.
32
32
  * - `not_applicable` — this runtime doesn't need it (the integration isn't wired),
33
33
  * so there is nothing to nag about.
34
+ * - `unreachable` — it IS configured, but a live probe could not reach it.
35
+ *
36
+ * `unreachable` is deliberately carried by this SETUP projection even though it reports runtime
37
+ * health, because the consequence is identical to `not_defined` — a whole class of agents cannot
38
+ * run — and the operator surface that fixes it is the same one. Sharing the projection means
39
+ * sharing the banner, its deep-link and its i18n instead of growing a second "your infra is
40
+ * broken" surface.
41
+ *
42
+ * It is NOT interchangeable with the other three in one respect, and consumers MUST honour the
43
+ * difference: those are stable operator decisions, so the banner offers a PERMANENT per-user
44
+ * "don't notify me again" dismissal. Applying that to `unreachable` would let one click
45
+ * permanently silence every future outage, so a health state is dismissible for the SESSION
46
+ * only and must re-nag when it recurs. See {@link isInfraSetupHealthStatus} and
47
+ * `InfraSetupBanner.vue`.
34
48
  */
35
- export const infraSetupStatusSchema = v.picklist(['not_defined', 'configured', 'not_applicable']);
49
+ export const infraSetupStatusSchema = v.picklist([
50
+ 'not_defined',
51
+ 'configured',
52
+ 'not_applicable',
53
+ 'unreachable',
54
+ ]);
55
+ /**
56
+ * The {@link InfraSetupStatus} values describing a live-HEALTH problem rather than an operator
57
+ * decision. Exported so the SPA's dismissal fork keys off ONE definition instead of re-listing
58
+ * the literal at each site.
59
+ */
60
+ export const INFRA_SETUP_HEALTH_STATUSES = ['unreachable'];
61
+ /** Whether a status is a transient health failure (session-only dismissal, re-nag on recurrence). */
62
+ export function isInfraSetupHealthStatus(status) {
63
+ return INFRA_SETUP_HEALTH_STATUSES.includes(status);
64
+ }
36
65
  /** The per-area infrastructure-setup status projection carried on the snapshot. */
37
66
  export const infraSetupSchema = v.object({
38
67
  /** Ephemeral test environments (deployer / provisioning). Relevant on every runtime. */
@@ -55,6 +84,56 @@ export const infraSetupAreaSchema = v.picklist([
55
84
  ]);
56
85
  /** Every infra-setup area, as a plain readonly tuple (the source of truth for iteration). */
57
86
  export const INFRA_SETUP_AREAS = infraSetupAreaSchema.options;
87
+ /**
88
+ * The areas the reachability watcher can report `unreachable` for — those backed by a connection
89
+ * whose provider exposes a live connection probe. `binaryStorage` is deliberately ABSENT: it
90
+ * resolves an artifact store from account settings and has no cheap reachability probe, so it
91
+ * stays a pure operator-decision area and a dead bucket surfaces where it always did (on the
92
+ * write that needs it). Shared so the watcher, the projection fold and the tests agree on ONE
93
+ * list rather than each re-deriving "which areas can be unreachable".
94
+ */
95
+ export const INFRA_SETUP_PROBED_AREAS = [
96
+ 'ephemeralEnvironments',
97
+ 'agentExecutor',
98
+ ];
99
+ /**
100
+ * Whether an area is one the watcher probes — a TYPE GUARD, so a consumer keyed on the probed
101
+ * subset (the outage copy has a per-area title; `binaryStorage` has none because it can never be
102
+ * unreachable) narrows instead of carrying a dead entry for an area that cannot reach it.
103
+ */
104
+ export function isInfraSetupProbedArea(area) {
105
+ return INFRA_SETUP_PROBED_AREAS.includes(area);
106
+ }
107
+ /**
108
+ * Apply ONE observed reachability status to an area of a setup projection.
109
+ *
110
+ * This is the single definition of which prior state a probe verdict may overwrite, and BOTH
111
+ * delivery paths fold through it: the backend's snapshot projection (kernel's
112
+ * `applyInfraReachability`, folding the areas recorded on the open card) and the SPA store's
113
+ * live `infraSetup` event patch. They diverged once — the snapshot guarded the write and the live
114
+ * patch assigned unconditionally — so a pushed `unreachable` rendered a red "check that the
115
+ * service is running" banner for an area the projection called `not_applicable`, which then
116
+ * vanished on the next reload. Live and reloaded state must agree, so the rule lives here.
117
+ *
118
+ * Only a `configured` area may become `unreachable`: the other states OUT-RANK a probe verdict.
119
+ * `not_defined` means the connection is gone (the actionable nag is "set it up", and a lingering
120
+ * outage would report on something that no longer exists) and `not_applicable` means this
121
+ * deployment does not use the area at all. Symmetrically, a recovery only clears an area this
122
+ * projection currently calls `unreachable`, so a stale in-flight push cannot overwrite a
123
+ * freshly-read `not_defined` with `configured`.
124
+ *
125
+ * Returns the projection UNCHANGED (by identity) when the status may not be applied, so a caller
126
+ * can cheaply tell "nothing moved" from a real transition.
127
+ */
128
+ export function applyInfraSetupTransition(projection, area, status) {
129
+ const current = projection[area];
130
+ const allowed = isInfraSetupHealthStatus(status)
131
+ ? current === 'configured'
132
+ : current === 'unreachable';
133
+ if (!allowed || current === status)
134
+ return projection;
135
+ return { ...projection, [area]: status };
136
+ }
58
137
  /**
59
138
  * The `localStorage` key under which the SPA's `InfraSetupBanner` persists its PERMANENT,
60
139
  * per-user "don't notify me again" dismissals ({@link InfraSetupArea}[] keyed by user id).
@@ -1 +1 @@
1
- {"version":3,"file":"infra-setup.js","sourceRoot":"","sources":["../src/infra-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,kFAAkF;AAClF,2DAA2D;AAC3D,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,oFAAoF;AACpF,oFAAoF;AACpF,sFAAsF;AACtF,sFAAsF;AACtF,oFAAoF;AACpF,qFAAqF;AACrF,qFAAqF;AACrF,oFAAoF;AACpF,iEAAiE;AACjE,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAGjG,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,wFAAwF;IACxF,qBAAqB,EAAE,sBAAsB;IAC7C,4FAA4F;IAC5F,aAAa,EAAE,sBAAsB;IACrC;;;;;OAKG;IACH,aAAa,EAAE,sBAAsB;CACtC,CAAC,CAAA;AAGF,uGAAuG;AACvG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC7C,uBAAuB;IACvB,eAAe;IACf,eAAe;CAChB,CAAC,CAAA;AAGF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAA;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA"}
1
+ {"version":3,"file":"infra-setup.js","sourceRoot":"","sources":["../src/infra-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,8EAA8E;AAC9E,iFAAiF;AACjF,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,kFAAkF;AAClF,2DAA2D;AAC3D,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,iFAAiF;AACjF,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,oFAAoF;AACpF,oFAAoF;AACpF,sFAAsF;AACtF,sFAAsF;AACtF,oFAAoF;AACpF,qFAAqF;AACrF,qFAAqF;AACrF,oFAAoF;AACpF,iEAAiE;AACjE,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC/C,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,aAAa;CACd,CAAC,CAAA;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,aAAa,CAAU,CAAA;AAEnE,qGAAqG;AACrG,MAAM,UAAU,wBAAwB,CAAC,MAAwB;IAC/D,OAAQ,2BAAiD,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC5E,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,wFAAwF;IACxF,qBAAqB,EAAE,sBAAsB;IAC7C,4FAA4F;IAC5F,aAAa,EAAE,sBAAsB;IACrC;;;;;OAKG;IACH,aAAa,EAAE,sBAAsB;CACtC,CAAC,CAAA;AAGF,uGAAuG;AACvG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC7C,uBAAuB;IACvB,eAAe;IACf,eAAe;CAChB,CAAC,CAAA;AAGF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAA;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,uBAAuB;IACvB,eAAe;CAC6B,CAAA;AAK9C;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAoB;IACzD,OAAQ,wBAAsD,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC/E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAsB,EACtB,IAAoB,EACpB,MAAwB;IAExB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC;QAC9C,CAAC,CAAC,OAAO,KAAK,YAAY;QAC1B,CAAC,CAAC,OAAO,KAAK,aAAa,CAAA;IAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,UAAU,CAAA;IACrD,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA"}
@@ -8,7 +8,7 @@ export declare const notificationWebhookSchema: v.ObjectSchema<{
8
8
  * headless overseer cares about — rather than "everything", so registering an endpoint can't
9
9
  * accidentally fire-hose every card at an integration that only wanted to hear about parks.
10
10
  */
11
- readonly types: v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>;
11
+ readonly types: v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>;
12
12
  /** Whether deliveries are currently attempted. Registering an endpoint enables it. */
13
13
  readonly enabled: v.BooleanSchema<undefined>;
14
14
  /** Whether a signing secret is set (the secret itself is never returned). */
@@ -24,7 +24,7 @@ export type NotificationWebhook = v.InferOutput<typeof notificationWebhookSchema
24
24
  export declare const putNotificationWebhookSchema: v.ObjectSchema<{
25
25
  readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>, v.StartsWithAction<string, "https://", "The webhook endpoint must be an https:// URL">, v.MaxLengthAction<string, 2000, undefined>]>;
26
26
  /** Omit ⇒ deliver the default parking types. */
27
- readonly types: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>, undefined>;
27
+ readonly types: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>, undefined>;
28
28
  readonly enabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
29
29
  /** New signing secret; omit to keep the current one. */
30
30
  readonly secret: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 16, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
@@ -52,7 +52,7 @@ export declare const notificationWebhookDeliverySchema: v.ObjectSchema<{
52
52
  readonly taskId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
53
53
  readonly notification: v.ObjectSchema<{
54
54
  readonly id: v.StringSchema<undefined>;
55
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
55
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
56
56
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
57
57
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
58
58
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -91,6 +91,7 @@ export declare const notificationWebhookDeliverySchema: v.ObjectSchema<{
91
91
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
92
92
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
93
93
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
94
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
94
95
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
95
96
  readonly source: v.StringSchema<undefined>;
96
97
  readonly id: v.StringSchema<undefined>;
@@ -110,8 +111,10 @@ export type NotificationWebhookDelivery = v.InferOutput<typeof notificationWebho
110
111
  * The notification types delivered when a webhook declares no explicit `types` filter: the
111
112
  * human-parking cards a headless overseer must react to, plus the failure tails it can act on
112
113
  * through the public notification surface. Deliberately NOT every type — the block-less/system
113
- * cards (`platform_health`, `budget_paused`, `key_drift`, `initiative`) are operator concerns with
114
- * no external action, and shipping them by default turns the endpoint into a firehose.
114
+ * cards (`platform_health`, `infra_unreachable`, `budget_paused`, `key_drift`, `initiative`) are
115
+ * operator concerns with no external action, and shipping them by default turns the endpoint into a
116
+ * firehose. A deployment that DOES want an infrastructure outage on its webhook can name it in the
117
+ * per-webhook `types` filter, which is exactly what that filter is for.
115
118
  */
116
119
  export declare const DEFAULT_NOTIFICATION_WEBHOOK_TYPES: readonly ["requirement_review", "clarity_review", "decision_required", "fork_decision_pending", "merge_review", "pipeline_complete", "ci_failed", "test_failed"];
117
120
  //# sourceMappingURL=notification-webhooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-webhooks.d.ts","sourceRoot":"","sources":["../src/notification-webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAmB5B,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB;IACpC,mDAAmD;;IAEnD;;;;OAIG;;IAEH,sFAAsF;;IAEtF,6EAA6E;;;aAG7E,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;IAQvC,gDAAgD;;;IAGhD,wDAAwD;;aAExD,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAE5F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iCAAiC;;IAE5C,kGAAkG;;;IAGlG,4DAA4D;;IAE5D,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAGnE,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iCAAiC,CAAC,CAAA;AAEjG;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,kKAS6B,CAAA"}
1
+ {"version":3,"file":"notification-webhooks.d.ts","sourceRoot":"","sources":["../src/notification-webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAmB5B,+FAA+F;AAC/F,eAAO,MAAM,yBAAyB;IACpC,mDAAmD;;IAEnD;;;;OAIG;;IAEH,sFAAsF;;IAEtF,6EAA6E;;;aAG7E,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;IAQvC,gDAAgD;;;IAGhD,wDAAwD;;aAExD,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAE5F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iCAAiC;;IAE5C,kGAAkG;;;IAGlG,4DAA4D;;IAE5D,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAGnE,CAAA;AACF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,iCAAiC,CAAC,CAAA;AAEjG;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,kKAS6B,CAAA"}
@@ -70,8 +70,10 @@ export const notificationWebhookDeliverySchema = v.object({
70
70
  * The notification types delivered when a webhook declares no explicit `types` filter: the
71
71
  * human-parking cards a headless overseer must react to, plus the failure tails it can act on
72
72
  * through the public notification surface. Deliberately NOT every type — the block-less/system
73
- * cards (`platform_health`, `budget_paused`, `key_drift`, `initiative`) are operator concerns with
74
- * no external action, and shipping them by default turns the endpoint into a firehose.
73
+ * cards (`platform_health`, `infra_unreachable`, `budget_paused`, `key_drift`, `initiative`) are
74
+ * operator concerns with no external action, and shipping them by default turns the endpoint into a
75
+ * firehose. A deployment that DOES want an infrastructure outage on its webhook can name it in the
76
+ * per-webhook `types` filter, which is exactly what that filter is for.
75
77
  */
76
78
  export const DEFAULT_NOTIFICATION_WEBHOOK_TYPES = [
77
79
  'requirement_review',
@@ -1 +1 @@
1
- {"version":3,"file":"notification-webhooks.js","sourceRoot":"","sources":["../src/notification-webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE/E,8EAA8E;AAC9E,iGAAiG;AACjG,8FAA8F;AAC9F,wFAAwF;AACxF,EAAE;AACF,6FAA6F;AAC7F,6FAA6F;AAC7F,6FAA6F;AAC7F,qEAAqE;AACrE,0DAA0D;AAC1D,EAAE;AACF,iGAAiG;AACjG,+FAA+F;AAC/F,uDAAuD;AACvD,8EAA8E;AAE9E,+FAA+F;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,mDAAmD;IACnD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf;;;;OAIG;IACH,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;IACtC,sFAAsF;IACtF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,6EAA6E;IAC7E,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,GAAG,EAAE,CAAC,CAAC,IAAI,CACT,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,GAAG,EAAE,EACP,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,8CAA8C,CAAC,EACxE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAClB;IACD,gDAAgD;IAChD,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAChC,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;CACpF,CAAC,CAAA;AAGF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,kGAAkG;IAClG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,4DAA4D;IAC5D,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,mEAAmE;IACnE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,kBAAkB;CACjC,CAAC,CAAA;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,oBAAoB;IACpB,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,aAAa;CAC6D,CAAA"}
1
+ {"version":3,"file":"notification-webhooks.js","sourceRoot":"","sources":["../src/notification-webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAE/E,8EAA8E;AAC9E,iGAAiG;AACjG,8FAA8F;AAC9F,wFAAwF;AACxF,EAAE;AACF,6FAA6F;AAC7F,6FAA6F;AAC7F,6FAA6F;AAC7F,qEAAqE;AACrE,0DAA0D;AAC1D,EAAE;AACF,iGAAiG;AACjG,+FAA+F;AAC/F,uDAAuD;AACvD,8EAA8E;AAE9E,+FAA+F;AAC/F,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,mDAAmD;IACnD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf;;;;OAIG;IACH,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;IACtC,sFAAsF;IACtF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,6EAA6E;IAC7E,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAA;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,GAAG,EAAE,CAAC,CAAC,IAAI,CACT,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,IAAI,EAAE,EACR,CAAC,CAAC,GAAG,EAAE,EACP,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,8CAA8C,CAAC,EACxE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAClB;IACD,gDAAgD;IAChD,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAChC,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;CACpF,CAAC,CAAA;AAGF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,kGAAkG;IAClG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,4DAA4D;IAC5D,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,mEAAmE;IACnE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,kBAAkB;CACjC,CAAC,CAAA;AAGF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,oBAAoB;IACpB,gBAAgB;IAChB,mBAAmB;IACnB,uBAAuB;IACvB,cAAc;IACd,mBAAmB;IACnB,WAAW;IACX,aAAa;CAC6D,CAAA"}
@@ -4,7 +4,7 @@ import * as v from 'valibot';
4
4
  * the frontend can switch on it to render the right action; extending it is a
5
5
  * one-line change here plus a handler in the worker's `act` route.
6
6
  */
7
- export declare const notificationTypeSchema: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
7
+ export declare const notificationTypeSchema: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
8
8
  export type NotificationType = v.InferOutput<typeof notificationTypeSchema>;
9
9
  /**
10
10
  * The closed set of notification types that count as "a task is waiting on a human review"
@@ -17,10 +17,10 @@ export type NotificationType = v.InferOutput<typeof notificationTypeSchema>;
17
17
  *
18
18
  * Deliberately EXCLUDED: failure-remediation cards (`ci_failed`, `test_failed`,
19
19
  * `release_regression`) — "the machine needs help", not "a human owes a review" — and
20
- * block-less/system cards (`platform_health`, `budget_paused`, `key_drift`, `initiative`) that
21
- * aren't tied to a reviewable task. `merge_tag_request` is excluded too: the PR it concerns has
22
- * ALREADY merged, so it is a post-hoc nudge for one tap — counting it as review debt would
23
- * friction task authoring over work that is finished.
20
+ * block-less/system cards (`platform_health`, `infra_unreachable`, `budget_paused`, `key_drift`,
21
+ * `initiative`) that aren't tied to a reviewable task. `merge_tag_request` is excluded too: the PR
22
+ * it concerns has ALREADY merged, so it is a post-hoc nudge for one tap — counting it as review
23
+ * debt would friction task authoring over work that is finished.
24
24
  */
25
25
  export declare const REVIEW_WAIT_NOTIFICATION_TYPES: readonly ["merge_review", "pipeline_complete", "requirement_review", "clarity_review", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready"];
26
26
  export type ReviewWaitNotificationType = (typeof REVIEW_WAIT_NOTIFICATION_TYPES)[number];
@@ -134,6 +134,18 @@ export declare const notificationPayloadSchema: v.ObjectSchema<{
134
134
  * card links to); the reason set + window are enough to convey "what's wrong, go look".
135
135
  */
136
136
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
137
+ /**
138
+ * On an `infra_unreachable` notification: the configured infrastructure areas whose live probe
139
+ * is currently failing, sorted. Like {@link platformAlerts} this is the card's dedup identity —
140
+ * the watcher re-raises the SAME card every pass and the service only re-delivers when the set
141
+ * changes — AND the record the snapshot projection folds back into `infraSetup`, so a reload
142
+ * mid-outage still renders the banner without re-probing on the board-load path.
143
+ *
144
+ * The per-area probe REASON is deliberately not carried: it varies between passes (a refused
145
+ * connection, then a timeout), and any content change re-delivers the card, so persisting it
146
+ * would re-toast the inbox for the whole outage. It rides the live `infraSetup` event instead.
147
+ */
148
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
137
149
  /**
138
150
  * On a `key_drift` notification: the stored credentials the drift sweep could not decrypt
139
151
  * (never their values). This is the card's dedup identity — the sweep re-raises the SAME card
@@ -173,7 +185,7 @@ export type NotificationPayload = v.InferOutput<typeof notificationPayloadSchema
173
185
  /** A human-actionable item surfaced on the board. */
174
186
  export declare const notificationSchema: v.ObjectSchema<{
175
187
  readonly id: v.StringSchema<undefined>;
176
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
188
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
177
189
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
178
190
  /**
179
191
  * Render urgency (see {@link notificationSeveritySchema}). Absent ⇒ `normal`. Flipped
@@ -251,6 +263,18 @@ export declare const notificationSchema: v.ObjectSchema<{
251
263
  * card links to); the reason set + window are enough to convey "what's wrong, go look".
252
264
  */
253
265
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
266
+ /**
267
+ * On an `infra_unreachable` notification: the configured infrastructure areas whose live probe
268
+ * is currently failing, sorted. Like {@link platformAlerts} this is the card's dedup identity —
269
+ * the watcher re-raises the SAME card every pass and the service only re-delivers when the set
270
+ * changes — AND the record the snapshot projection folds back into `infraSetup`, so a reload
271
+ * mid-outage still renders the banner without re-probing on the board-load path.
272
+ *
273
+ * The per-area probe REASON is deliberately not carried: it varies between passes (a refused
274
+ * connection, then a timeout), and any content change re-delivers the card, so persisting it
275
+ * would re-toast the inbox for the whole outage. It rides the live `infraSetup` event instead.
276
+ */
277
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
254
278
  /**
255
279
  * On a `key_drift` notification: the stored credentials the drift sweep could not decrypt
256
280
  * (never their values). This is the card's dedup identity — the sweep re-raises the SAME card
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as v from 'valibot';
2
2
  import { mergeAssessmentSchema } from './merge.js';
3
+ import { infraSetupAreaSchema } from './infra-setup.js';
3
4
  import { platformAlertReasonSchema, platformObservabilityWindowSchema } from './observability.js';
4
5
  import { changeClassSchema, reviewEffortSchema } from './mergeTrackRecord.js';
5
6
  import { onCallAssessmentSchema, releaseSignalSchema } from './release.js';
@@ -63,6 +64,14 @@ import { onCallAssessmentSchema, releaseSignalSchema } from './release.js';
63
64
  // provider (bypassing the merge card), so the merge track record has
64
65
  // no reviewer-effort tag. A lightweight, dismissible nudge asking for
65
66
  // one tap; it gates nothing and the record stays valid untagged.
67
+ // - `infra_unreachable`— the reachability watcher found a CONFIGURED infrastructure area (the
68
+ // ephemeral-environment provider, the self-hosted runner pool) that no
69
+ // longer answers its connection probe, so a class of agents cannot run.
70
+ // NOT block-scoped: it concerns the whole workspace. It auto-clears when
71
+ // every area answers again, and re-notifies only when the set of
72
+ // unreachable areas changes (not every sweep). The card doubles as the
73
+ // watcher's durable record of the last observed state, which is what lets
74
+ // the sweep publish `infraSetup` on transitions only; `act` marks it read.
66
75
  // - `budget_paused` — one or more runs were paused by the spend safeguard (the workspace,
67
76
  // account, or user budget is exhausted). Workspace-scoped (one card,
68
77
  // not one per run) and purely informational: the sweeper never re-drives
@@ -97,6 +106,7 @@ export const notificationTypeSchema = v.picklist([
97
106
  'pr_review_ready',
98
107
  'initiative',
99
108
  'platform_health',
109
+ 'infra_unreachable',
100
110
  'budget_paused',
101
111
  'key_drift',
102
112
  'merge_tag_request',
@@ -112,10 +122,10 @@ export const notificationTypeSchema = v.picklist([
112
122
  *
113
123
  * Deliberately EXCLUDED: failure-remediation cards (`ci_failed`, `test_failed`,
114
124
  * `release_regression`) — "the machine needs help", not "a human owes a review" — and
115
- * block-less/system cards (`platform_health`, `budget_paused`, `key_drift`, `initiative`) that
116
- * aren't tied to a reviewable task. `merge_tag_request` is excluded too: the PR it concerns has
117
- * ALREADY merged, so it is a post-hoc nudge for one tap — counting it as review debt would
118
- * friction task authoring over work that is finished.
125
+ * block-less/system cards (`platform_health`, `infra_unreachable`, `budget_paused`, `key_drift`,
126
+ * `initiative`) that aren't tied to a reviewable task. `merge_tag_request` is excluded too: the PR
127
+ * it concerns has ALREADY merged, so it is a post-hoc nudge for one tap — counting it as review
128
+ * debt would friction task authoring over work that is finished.
119
129
  */
120
130
  export const REVIEW_WAIT_NOTIFICATION_TYPES = [
121
131
  'merge_review',
@@ -225,6 +235,18 @@ export const notificationPayloadSchema = v.object({
225
235
  * card links to); the reason set + window are enough to convey "what's wrong, go look".
226
236
  */
227
237
  platformAlerts: v.optional(v.array(platformAlertReasonSchema)),
238
+ /**
239
+ * On an `infra_unreachable` notification: the configured infrastructure areas whose live probe
240
+ * is currently failing, sorted. Like {@link platformAlerts} this is the card's dedup identity —
241
+ * the watcher re-raises the SAME card every pass and the service only re-delivers when the set
242
+ * changes — AND the record the snapshot projection folds back into `infraSetup`, so a reload
243
+ * mid-outage still renders the banner without re-probing on the board-load path.
244
+ *
245
+ * The per-area probe REASON is deliberately not carried: it varies between passes (a refused
246
+ * connection, then a timeout), and any content change re-delivers the card, so persisting it
247
+ * would re-toast the inbox for the whole outage. It rides the live `infraSetup` event instead.
248
+ */
249
+ unreachableAreas: v.optional(v.array(infraSetupAreaSchema)),
228
250
  /**
229
251
  * On a `key_drift` notification: the stored credentials the drift sweep could not decrypt
230
252
  * (never their values). This is the card's dedup identity — the sweep re-raises the SAME card
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"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"}
@@ -343,7 +343,7 @@ export type PublicPipelineList = v.InferOutput<typeof publicPipelineListSchema>;
343
343
  export declare const publicNotificationListSchema: v.ObjectSchema<{
344
344
  readonly notifications: v.ArraySchema<v.ObjectSchema<{
345
345
  readonly id: v.StringSchema<undefined>;
346
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
346
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
347
347
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
348
348
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
349
349
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -382,6 +382,7 @@ export declare const publicNotificationListSchema: v.ObjectSchema<{
382
382
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
383
383
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
384
384
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
385
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
385
386
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
386
387
  readonly source: v.StringSchema<undefined>;
387
388
  readonly id: v.StringSchema<undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export declare const getNotificationWebhookContract: {
29
29
  }, undefined>;
30
30
  readonly 200: v.NullableSchema<v.ObjectSchema<{
31
31
  readonly url: v.StringSchema<undefined>;
32
- readonly types: v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>;
32
+ readonly types: v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>;
33
33
  readonly enabled: v.BooleanSchema<undefined>;
34
34
  readonly hasSecret: v.BooleanSchema<undefined>;
35
35
  readonly updatedAt: v.NumberSchema<undefined>;
@@ -42,7 +42,7 @@ export declare const putNotificationWebhookContract: {
42
42
  readonly pathResolver: () => string;
43
43
  readonly requestBodySchema: v.ObjectSchema<{
44
44
  readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.UrlAction<string, undefined>, v.StartsWithAction<string, "https://", "The webhook endpoint must be an https:// URL">, v.MaxLengthAction<string, 2000, undefined>]>;
45
- readonly types: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>, undefined>;
45
+ readonly types: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>, undefined>;
46
46
  readonly enabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
47
47
  readonly secret: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 16, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
48
48
  }, undefined>;
@@ -71,7 +71,7 @@ export declare const putNotificationWebhookContract: {
71
71
  }, undefined>;
72
72
  readonly 200: v.ObjectSchema<{
73
73
  readonly url: v.StringSchema<undefined>;
74
- readonly types: v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>;
74
+ readonly types: v.ArraySchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, undefined>;
75
75
  readonly enabled: v.BooleanSchema<undefined>;
76
76
  readonly hasSecret: v.BooleanSchema<undefined>;
77
77
  readonly updatedAt: v.NumberSchema<undefined>;
@@ -28,7 +28,7 @@ export declare const listNotificationsContract: {
28
28
  }, undefined>;
29
29
  readonly 200: v.ArraySchema<v.ObjectSchema<{
30
30
  readonly id: v.StringSchema<undefined>;
31
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
31
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
32
32
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
33
33
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
34
34
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -67,6 +67,7 @@ export declare const listNotificationsContract: {
67
67
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
68
68
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
69
69
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
70
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
70
71
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
71
72
  readonly source: v.StringSchema<undefined>;
72
73
  readonly id: v.StringSchema<undefined>;
@@ -118,7 +119,7 @@ export declare const actNotificationContract: {
118
119
  }, undefined>;
119
120
  readonly 200: v.ObjectSchema<{
120
121
  readonly id: v.StringSchema<undefined>;
121
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
122
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
122
123
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
123
124
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
124
125
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -157,6 +158,7 @@ export declare const actNotificationContract: {
157
158
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
158
159
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
159
160
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
161
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
160
162
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
161
163
  readonly source: v.StringSchema<undefined>;
162
164
  readonly id: v.StringSchema<undefined>;
@@ -206,7 +208,7 @@ export declare const dismissNotificationContract: {
206
208
  }, undefined>;
207
209
  readonly 200: v.ObjectSchema<{
208
210
  readonly id: v.StringSchema<undefined>;
209
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
211
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
210
212
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
211
213
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
212
214
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -245,6 +247,7 @@ export declare const dismissNotificationContract: {
245
247
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
246
248
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
247
249
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
250
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
248
251
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
249
252
  readonly source: v.StringSchema<undefined>;
250
253
  readonly id: v.StringSchema<undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAa5B,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQlC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA"}
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/routes/notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAa5B,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQlC,CAAA;AAEF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMtC,CAAA"}
@@ -861,7 +861,7 @@ export declare const listPublicNotificationsContract: {
861
861
  readonly 200: import("valibot").ObjectSchema<{
862
862
  readonly notifications: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
863
863
  readonly id: import("valibot").StringSchema<undefined>;
864
- readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
864
+ readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
865
865
  readonly status: import("valibot").PicklistSchema<["open", "acted", "dismissed"], undefined>;
866
866
  readonly severity: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["normal", "urgent"], undefined>, undefined>;
867
867
  readonly blockId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
@@ -900,6 +900,7 @@ export declare const listPublicNotificationsContract: {
900
900
  readonly unmergedRepos: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>, undefined>;
901
901
  readonly platformWindow: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
902
902
  readonly platformAlerts: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
903
+ readonly unreachableAreas: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
903
904
  readonly driftAffected: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
904
905
  readonly source: import("valibot").StringSchema<undefined>;
905
906
  readonly id: import("valibot").StringSchema<undefined>;
@@ -951,7 +952,7 @@ export declare const actPublicNotificationContract: {
951
952
  }, undefined>;
952
953
  readonly 200: import("valibot").ObjectSchema<{
953
954
  readonly id: import("valibot").StringSchema<undefined>;
954
- readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
955
+ readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
955
956
  readonly status: import("valibot").PicklistSchema<["open", "acted", "dismissed"], undefined>;
956
957
  readonly severity: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["normal", "urgent"], undefined>, undefined>;
957
958
  readonly blockId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
@@ -990,6 +991,7 @@ export declare const actPublicNotificationContract: {
990
991
  readonly unmergedRepos: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>, undefined>;
991
992
  readonly platformWindow: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
992
993
  readonly platformAlerts: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
994
+ readonly unreachableAreas: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
993
995
  readonly driftAffected: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
994
996
  readonly source: import("valibot").StringSchema<undefined>;
995
997
  readonly id: import("valibot").StringSchema<undefined>;
@@ -1040,7 +1042,7 @@ export declare const dismissPublicNotificationContract: {
1040
1042
  }, undefined>;
1041
1043
  readonly 200: import("valibot").ObjectSchema<{
1042
1044
  readonly id: import("valibot").StringSchema<undefined>;
1043
- readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
1045
+ readonly type: import("valibot").PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
1044
1046
  readonly status: import("valibot").PicklistSchema<["open", "acted", "dismissed"], undefined>;
1045
1047
  readonly severity: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["normal", "urgent"], undefined>, undefined>;
1046
1048
  readonly blockId: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
@@ -1079,6 +1081,7 @@ export declare const dismissPublicNotificationContract: {
1079
1081
  readonly unmergedRepos: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>, undefined>;
1080
1082
  readonly platformWindow: import("valibot").OptionalSchema<import("valibot").PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
1081
1083
  readonly platformAlerts: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
1084
+ readonly unreachableAreas: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
1082
1085
  readonly driftAffected: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
1083
1086
  readonly source: import("valibot").StringSchema<undefined>;
1084
1087
  readonly id: import("valibot").StringSchema<undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AA4C3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAIF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKjC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAIF,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIrC,CAAA;AAEF,qCAAqC;AACrC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA;AAEF,2BAA2B;AAC3B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,0BAA0B;AAC1B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,yDAAyD;AACzD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF,gGAAgG;AAChG,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMjC,CAAA;AAEF,iCAAiC;AACjC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,yFAAyF;AACzF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA;AAIF,kFAAkF;AAClF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAItC,CAAA;AASF,2DAA2D;AAC3D,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,mGAAmG;AACnG,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAEF,mDAAmD;AACnD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM5C,CAAA"}
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../src/routes/public-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AA4C3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIpC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAEF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKrC,CAAA;AAIF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKjC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAIF,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIrC,CAAA;AAEF,qCAAqC;AACrC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMzC,CAAA;AAEF,2BAA2B;AAC3B,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhC,CAAA;AAEF,0BAA0B;AAC1B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,yDAAyD;AACzD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMnC,CAAA;AAEF,gGAAgG;AAChG,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMjC,CAAA;AAEF,iCAAiC;AACjC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,yFAAyF;AACzF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnC,CAAA;AAIF,kFAAkF;AAClF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAItC,CAAA;AASF,2DAA2D;AAC3D,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI1C,CAAA;AAEF,mGAAmG;AACnG,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMxC,CAAA;AAEF,mDAAmD;AACnD,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM5C,CAAA"}
@@ -200,7 +200,7 @@ export declare const getSlackSettingsContract: {
200
200
  }, undefined>;
201
201
  }, undefined>;
202
202
  readonly 200: v.ObjectSchema<{
203
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
203
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
204
204
  readonly enabled: v.BooleanSchema<undefined>;
205
205
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
206
206
  }, undefined>, undefined>;
@@ -213,7 +213,7 @@ export declare const updateSlackSettingsContract: {
213
213
  readonly method: "put";
214
214
  readonly pathResolver: () => string;
215
215
  readonly requestBodySchema: v.ObjectSchema<{
216
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
216
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
217
217
  readonly enabled: v.BooleanSchema<undefined>;
218
218
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
219
219
  }, undefined>, undefined>;
@@ -243,7 +243,7 @@ export declare const updateSlackSettingsContract: {
243
243
  }, undefined>;
244
244
  }, undefined>;
245
245
  readonly 200: v.ObjectSchema<{
246
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
246
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
247
247
  readonly enabled: v.BooleanSchema<undefined>;
248
248
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
249
249
  }, undefined>, undefined>;
@@ -1613,7 +1613,7 @@ export declare const createWorkspaceContract: {
1613
1613
  }, undefined>, undefined>;
1614
1614
  readonly notifications: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1615
1615
  readonly id: v.StringSchema<undefined>;
1616
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
1616
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
1617
1617
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
1618
1618
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
1619
1619
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -1652,6 +1652,7 @@ export declare const createWorkspaceContract: {
1652
1652
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
1653
1653
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
1654
1654
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
1655
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
1655
1656
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1656
1657
  readonly source: v.StringSchema<undefined>;
1657
1658
  readonly id: v.StringSchema<undefined>;
@@ -2692,9 +2693,9 @@ export declare const createWorkspaceContract: {
2692
2693
  readonly probe: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
2693
2694
  }, undefined>, undefined>, undefined>;
2694
2695
  readonly infraSetup: v.OptionalSchema<v.ObjectSchema<{
2695
- readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
2696
- readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
2697
- readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
2696
+ readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
2697
+ readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
2698
+ readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
2698
2699
  }, undefined>, undefined>;
2699
2700
  readonly skills: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
2700
2701
  readonly id: v.StringSchema<undefined>;
@@ -4267,7 +4268,7 @@ export declare const getWorkspaceContract: {
4267
4268
  }, undefined>, undefined>;
4268
4269
  readonly notifications: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4269
4270
  readonly id: v.StringSchema<undefined>;
4270
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
4271
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
4271
4272
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
4272
4273
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
4273
4274
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -4306,6 +4307,7 @@ export declare const getWorkspaceContract: {
4306
4307
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
4307
4308
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
4308
4309
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
4310
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
4309
4311
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4310
4312
  readonly source: v.StringSchema<undefined>;
4311
4313
  readonly id: v.StringSchema<undefined>;
@@ -5346,9 +5348,9 @@ export declare const getWorkspaceContract: {
5346
5348
  readonly probe: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
5347
5349
  }, undefined>, undefined>, undefined>;
5348
5350
  readonly infraSetup: v.OptionalSchema<v.ObjectSchema<{
5349
- readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
5350
- readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
5351
- readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
5351
+ readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
5352
+ readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
5353
+ readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
5352
5354
  }, undefined>, undefined>;
5353
5355
  readonly skills: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
5354
5356
  readonly id: v.StringSchema<undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;aAGlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAI7E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA"}
1
+ {"version":3,"file":"workspaces.d.ts","sourceRoot":"","sources":["../../src/routes/workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;aAGlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAI7E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIjC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK/B,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMlC,CAAA;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKlC,CAAA"}
package/dist/slack.d.ts CHANGED
@@ -30,7 +30,7 @@ export type SlackRoute = v.InferOutput<typeof slackRouteSchema>;
30
30
  * type absent from `routes`, disabled, or with an empty channel does not post.
31
31
  */
32
32
  export declare const slackNotificationSettingsSchema: v.ObjectSchema<{
33
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
33
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
34
34
  readonly enabled: v.BooleanSchema<undefined>;
35
35
  /** A channel id (`C0123…`) or name (`#general`); empty = unrouted. */
36
36
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
@@ -83,7 +83,7 @@ export declare const connectSlackByTokenSchema: v.ObjectSchema<{
83
83
  export type ConnectSlackByTokenInput = v.InferOutput<typeof connectSlackByTokenSchema>;
84
84
  /** Replace a workspace's Slack notification routing. */
85
85
  export declare const updateSlackSettingsSchema: v.ObjectSchema<{
86
- readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
86
+ readonly routes: v.RecordSchema<v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>, v.ObjectSchema<{
87
87
  readonly enabled: v.BooleanSchema<undefined>;
88
88
  /** A channel id (`C0123…`) or name (`#general`); empty = unrouted. */
89
89
  readonly channel: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 200, undefined>]>;
@@ -1599,7 +1599,7 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
1599
1599
  */
1600
1600
  readonly notifications: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1601
1601
  readonly id: v.StringSchema<undefined>;
1602
- readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
1602
+ readonly type: v.PicklistSchema<["merge_review", "pipeline_complete", "ci_failed", "test_failed", "requirement_review", "clarity_review", "release_regression", "decision_required", "human_test_ready", "visual_confirmation_ready", "human_review", "followup_pending", "fork_decision_pending", "judge_review", "pr_review_ready", "initiative", "platform_health", "infra_unreachable", "budget_paused", "key_drift", "merge_tag_request"], undefined>;
1603
1603
  readonly status: v.PicklistSchema<["open", "acted", "dismissed"], undefined>;
1604
1604
  readonly severity: v.OptionalSchema<v.PicklistSchema<["normal", "urgent"], undefined>, undefined>;
1605
1605
  readonly blockId: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -1638,6 +1638,7 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
1638
1638
  readonly unmergedRepos: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
1639
1639
  readonly platformWindow: v.OptionalSchema<v.PicklistSchema<["1h", "24h", "7d"], undefined>, undefined>;
1640
1640
  readonly platformAlerts: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["failure_rate_high", "duration_p99_high", "backlog_high"], undefined>, undefined>, undefined>;
1641
+ readonly unreachableAreas: v.OptionalSchema<v.ArraySchema<v.PicklistSchema<["ephemeralEnvironments", "agentExecutor", "binaryStorage"], undefined>, undefined>, undefined>;
1641
1642
  readonly driftAffected: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1642
1643
  readonly source: v.StringSchema<undefined>;
1643
1644
  readonly id: v.StringSchema<undefined>;
@@ -2845,9 +2846,9 @@ export declare const workspaceSnapshotSchema: v.ObjectSchema<{
2845
2846
  * wire (absent on an older backend), the SPA then simply shows no banner.
2846
2847
  */
2847
2848
  readonly infraSetup: v.OptionalSchema<v.ObjectSchema<{
2848
- readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
2849
- readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
2850
- readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable"], undefined>;
2849
+ readonly ephemeralEnvironments: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
2850
+ readonly agentExecutor: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
2851
+ readonly binaryStorage: v.PicklistSchema<["not_defined", "configured", "not_applicable", "unreachable"], undefined>;
2851
2852
  }, undefined>, undefined>;
2852
2853
  /**
2853
2854
  * The account's repo-sourced Claude Skills catalog (lightweight `{ id, name, description }`),
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsC5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7E,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;IAGlC;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;;OASG;;;;QAxLH;;;;;WAKG;;;;;;QALH;;;;;WAKG;;;IAsLH;;;;;;;OAOG;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;OAKG;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAsC5B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7E,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB;;;IAGlC;;;;;OAKG;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKlC;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;IAEH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;OAQG;;;;;IAOH;;;OAGG;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;OAGG;;;;;;;;;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;IAGH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;OAIG;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;OAMG;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;;;OASG;;;;QAxLH;;;;;WAKG;;;;;;QALH;;;;;WAKG;;;IAsLH;;;;;;;OAOG;;IAEH;;;;;;;;;;;;;;;OAeG;;;;;IAEH;;;;;;;OAOG;;IAEH;;;;;;;OAOG;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;OAKG;;;;;aAEH,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/contracts",
3
- "version": "0.197.0",
3
+ "version": "0.198.0",
4
4
  "description": "Valibot wire contract shared between the Agent Architecture Board frontend and backend.",
5
5
  "repository": {
6
6
  "type": "git",