@cat-factory/kernel 0.194.0 → 0.196.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.
@@ -0,0 +1,61 @@
1
+ /** `error.details.reason` for a reference that resolved to a page with no readable content. */
2
+ export declare const CONTEXT_DOCUMENT_UNREADABLE = "context_document_unreadable";
3
+ /** `error.details.reason` for a corpus that overflows the materialised-context byte budget. */
4
+ export declare const CONTEXT_DOCUMENTS_OVER_BUDGET = "context_documents_over_budget";
5
+ /** The little that is needed to NAME a context reference in a refusal. */
6
+ export interface ContextReferenceRef {
7
+ title: string;
8
+ url: string;
9
+ }
10
+ /**
11
+ * Whether a stored document has anything an agent could actually read. The materialised file (and
12
+ * the inline injection) is `body || excerpt`, so a row where BOTH are blank delivers a filename, a
13
+ * URL the agent cannot open, and nothing else.
14
+ *
15
+ * An empty page is not a hypothetical: `import` persists whatever the provider returned, and a
16
+ * permission-limited Confluence page, an empty Notion page and a design node whose extraction
17
+ * yielded nothing all project to a blank body.
18
+ */
19
+ export declare function hasReadableContent(doc: {
20
+ body?: string | null;
21
+ excerpt?: string | null;
22
+ }): boolean;
23
+ /**
24
+ * The readable text an EXCERPT-ONLY caller actually puts in front of its model: the stored
25
+ * excerpt, else one derived from the body. Empty ⇒ that caller has nothing to show.
26
+ *
27
+ * {@link hasReadableContent} is the right test where the RAW body is delivered — a container agent
28
+ * opens the materialised markdown source and can at least see what is in it. A caller with no
29
+ * checkout renders this projection instead, and it can come back empty from a body that is NOT
30
+ * blank: `import` stores `buildExcerpt(body)`, i.e. `markdownToText`, so a body that is pure
31
+ * MARKUP — the empty fenced block an extractor emits for an embed it cannot render — collapses to
32
+ * nothing. Asserting over the body and then rendering this is how such a caller would re-open the
33
+ * very hole this module closes, one field narrower — so it asserts over what it renders.
34
+ */
35
+ export declare function contextExcerptFor(doc: {
36
+ body?: string | null;
37
+ excerpt?: string | null;
38
+ }): string;
39
+ /**
40
+ * Refuse the run when any referenced context document resolved to an unreadable page, naming each
41
+ * one plus the two remedies. Nothing to report ⇒ a no-op, so every caller can assert
42
+ * unconditionally.
43
+ */
44
+ export declare function assertContextDocumentsReadable(unreadable: readonly ContextReferenceRef[]): void;
45
+ /**
46
+ * Refuse the run when the referenced context does not fit the materialised-context byte budget,
47
+ * naming what did not fit and how far over the corpus is. Dropping the overflow instead would put
48
+ * an agent in front of a partial corpus it has no way to notice is partial — and unlike an
49
+ * unreadable page, there is nothing to re-import here: the human has to decide what this task
50
+ * actually needs.
51
+ *
52
+ * The remedy is worded for LINKED CONTEXT rather than for documents, because linked TRACKER ISSUES
53
+ * are sized into the same budget and can be what overflows it: "re-import a shorter page" is
54
+ * nonsense advice about an issue, and the message names the items, so the reader can already see
55
+ * which kind each one is.
56
+ */
57
+ export declare function assertContextReferencesFit(omitted: readonly ContextReferenceRef[], sizes: {
58
+ totalBytes: number;
59
+ budgetBytes: number;
60
+ }): void;
61
+ //# sourceMappingURL=context-references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-references.d.ts","sourceRoot":"","sources":["../../src/domain/context-references.ts"],"names":[],"mappings":"AA6BA,+FAA+F;AAC/F,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AAExE,+FAA+F;AAC/F,eAAO,MAAM,6BAA6B,kCAAkC,CAAA;AAE5E,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AA8BD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB,GAAG,OAAO,CAEV;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CAEhG;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI,CAU/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAgBN"}
@@ -0,0 +1,126 @@
1
+ import { buildExcerpt } from '../shared/markdown.logic.js';
2
+ import { redactSecrets } from '../shared/redact-secrets.logic.js';
3
+ import { ValidationError } from './errors.js';
4
+ // A task's REFERENCED CONTEXT DOCUMENTS — the requirements / RFCs / PRDs a human attached to a
5
+ // block (plus anything its description names outright that resolves against the imported corpus)
6
+ // — carry the intent the agent is supposed to build against. The invariant this module owns:
7
+ //
8
+ // a referenced context document either reaches the agent WHOLE, or the run breaks loudly
9
+ // naming the ones that cannot be delivered.
10
+ //
11
+ // The failure mode it removes is silent: a reference that resolves to an empty page, or a corpus
12
+ // that overflows the job body's byte budget, used to be dropped on the floor. The run then looked
13
+ // completely healthy while the agent worked from a spec nobody noticed it never read — the exact
14
+ // "'absent' and 'zero' must never render the same" hazard, one layer up.
15
+ //
16
+ // Both refusals are `ValidationError`s carrying a machine-readable `reason`, and both land on the
17
+ // run as a `preflight` failure — the honest kind, since no agent ran. They refuse at DIFFERENT
18
+ // depths and are therefore classified by different seams, which must agree:
19
+ // `buildContextFiles` refuses inside `startJob`, so `classifyDispatchFailure` sees the throw;
20
+ // `resolveLinkedContext` refuses earlier, inside the context builder, so the throw leaves
21
+ // `advanceInstance` and the driver's `failureFromAdvanceError` sees it. Both map a `DomainError`
22
+ // to `preflight` + its `details.reason`, so the run's failure record keeps the cause code
23
+ // alongside the prose either way.
24
+ //
25
+ // Both remedies are the human's, and both are named in the message: make the reference readable
26
+ // (re-import the page), or detach it from the task — a task is allowed to proceed without a
27
+ // document, it is just never allowed to do so silently.
28
+ /** `error.details.reason` for a reference that resolved to a page with no readable content. */
29
+ export const CONTEXT_DOCUMENT_UNREADABLE = 'context_document_unreadable';
30
+ /** `error.details.reason` for a corpus that overflows the materialised-context byte budget. */
31
+ export const CONTEXT_DOCUMENTS_OVER_BUDGET = 'context_documents_over_budget';
32
+ /**
33
+ * `"Payments RFC" (https://…)`, or just the title when the reference carries no URL. Both halves
34
+ * are source-authored text landing on a persisted failure record and a rendered surface, and a
35
+ * document URL can legitimately carry a signed/`?token=` query, so it is scrubbed here — at the
36
+ * one site that composes it, before any caller can copy it onward.
37
+ */
38
+ function describeRef(ref) {
39
+ const title = redactSecrets(ref.title.trim()) || 'untitled';
40
+ const url = redactSecrets(ref.url.trim());
41
+ return url ? `"${title}" (${url})` : `"${title}"`;
42
+ }
43
+ /**
44
+ * The machine-readable `details.references` list: the URL where there is one, else the title.
45
+ * TRIMMED on the same rule {@link describeRef} uses, so the prose and the machine-readable list
46
+ * can never disagree about whether a reference carries a URL.
47
+ */
48
+ function referenceIds(refs) {
49
+ return refs.map((r) => redactSecrets(r.url.trim() || r.title.trim()) ?? '');
50
+ }
51
+ /** `a`, `b` and `c` — an oxford-comma-free list for a one-line refusal. */
52
+ function joinRefs(refs) {
53
+ const described = refs.map(describeRef);
54
+ if (described.length <= 1)
55
+ return described.join('');
56
+ return `${described.slice(0, -1).join(', ')} and ${described[described.length - 1]}`;
57
+ }
58
+ /**
59
+ * Whether a stored document has anything an agent could actually read. The materialised file (and
60
+ * the inline injection) is `body || excerpt`, so a row where BOTH are blank delivers a filename, a
61
+ * URL the agent cannot open, and nothing else.
62
+ *
63
+ * An empty page is not a hypothetical: `import` persists whatever the provider returned, and a
64
+ * permission-limited Confluence page, an empty Notion page and a design node whose extraction
65
+ * yielded nothing all project to a blank body.
66
+ */
67
+ export function hasReadableContent(doc) {
68
+ return !!(doc.body?.trim() || doc.excerpt?.trim());
69
+ }
70
+ /**
71
+ * The readable text an EXCERPT-ONLY caller actually puts in front of its model: the stored
72
+ * excerpt, else one derived from the body. Empty ⇒ that caller has nothing to show.
73
+ *
74
+ * {@link hasReadableContent} is the right test where the RAW body is delivered — a container agent
75
+ * opens the materialised markdown source and can at least see what is in it. A caller with no
76
+ * checkout renders this projection instead, and it can come back empty from a body that is NOT
77
+ * blank: `import` stores `buildExcerpt(body)`, i.e. `markdownToText`, so a body that is pure
78
+ * MARKUP — the empty fenced block an extractor emits for an embed it cannot render — collapses to
79
+ * nothing. Asserting over the body and then rendering this is how such a caller would re-open the
80
+ * very hole this module closes, one field narrower — so it asserts over what it renders.
81
+ */
82
+ export function contextExcerptFor(doc) {
83
+ return doc.excerpt?.trim() || buildExcerpt(doc.body ?? '').trim();
84
+ }
85
+ /**
86
+ * Refuse the run when any referenced context document resolved to an unreadable page, naming each
87
+ * one plus the two remedies. Nothing to report ⇒ a no-op, so every caller can assert
88
+ * unconditionally.
89
+ */
90
+ export function assertContextDocumentsReadable(unreadable) {
91
+ if (!unreadable.length)
92
+ return;
93
+ const plural = unreadable.length === 1 ? 'document' : 'documents';
94
+ throw new ValidationError(`This task references ${unreadable.length} context ${plural} with no readable content, so the ` +
95
+ `agent would run without ${unreadable.length === 1 ? 'it' : 'them'}: ${joinRefs(unreadable)}. ` +
96
+ `Re-import the page (its source may have returned an empty body), or detach it from the task ` +
97
+ `to run without it.`, { reason: CONTEXT_DOCUMENT_UNREADABLE, references: referenceIds(unreadable) });
98
+ }
99
+ /**
100
+ * Refuse the run when the referenced context does not fit the materialised-context byte budget,
101
+ * naming what did not fit and how far over the corpus is. Dropping the overflow instead would put
102
+ * an agent in front of a partial corpus it has no way to notice is partial — and unlike an
103
+ * unreadable page, there is nothing to re-import here: the human has to decide what this task
104
+ * actually needs.
105
+ *
106
+ * The remedy is worded for LINKED CONTEXT rather than for documents, because linked TRACKER ISSUES
107
+ * are sized into the same budget and can be what overflows it: "re-import a shorter page" is
108
+ * nonsense advice about an issue, and the message names the items, so the reader can already see
109
+ * which kind each one is.
110
+ */
111
+ export function assertContextReferencesFit(omitted, sizes) {
112
+ if (!omitted.length)
113
+ return;
114
+ const kb = (bytes) => `${Math.ceil(bytes / 1024)} KB`;
115
+ const plural = omitted.length === 1 ? 'item' : 'items';
116
+ throw new ValidationError(`The context attached to this task totals ${kb(sizes.totalBytes)}, over the ` +
117
+ `${kb(sizes.budgetBytes)} an agent's checkout can carry, so ${omitted.length} ${plural} ` +
118
+ `would not reach it: ${joinRefs(omitted)}. Detach the linked context this task does not ` +
119
+ `need to unblock the run.`, {
120
+ reason: CONTEXT_DOCUMENTS_OVER_BUDGET,
121
+ references: referenceIds(omitted),
122
+ totalBytes: sizes.totalBytes,
123
+ budgetBytes: sizes.budgetBytes,
124
+ });
125
+ }
126
+ //# sourceMappingURL=context-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-references.js","sourceRoot":"","sources":["../../src/domain/context-references.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { type ConnectionTestResult, type InfraSetup, type InfraSetupArea, type Notification } from '@cat-factory/contracts';
2
+ /** What one area's live probe reported. `indeterminate` is NOT a verdict — see {@link ProbeOutcome}. */
3
+ export type ProbeVerdict = 'reachable' | 'unreachable' | 'indeterminate' | 'not_configured';
4
+ /**
5
+ * One area's probe result.
6
+ *
7
+ * `indeterminate` is deliberately distinct from `unreachable`: it means the probe never got to
8
+ * ask (the connection could not be resolved, its secret bundle would not decrypt, the provider
9
+ * exposes no connection test). Reporting that as an outage would turn a LOCAL fault — the
10
+ * classic one being a node with no access to the sealing key — into a banner blaming the
11
+ * operator's cluster. An indeterminate area is left exactly as it was recorded, so a genuine
12
+ * outage already on the card survives and a healthy area is never falsely accused.
13
+ *
14
+ * `not_configured` is distinct from BOTH, and the distinction is what stops an outage card
15
+ * outliving the thing it reports on: nothing is registered for the area any more, which is
16
+ * knowably NOT an outage. Collapsing it into `indeterminate` (as "there was nothing to probe"
17
+ * once did) meant an operator who fixed a dead runner pool by UN-REGISTERING it kept the open
18
+ * `infra_unreachable` card forever — no probe could ever clear a record that only a probe
19
+ * clears, and the staleness sweep escalated it red. So it drops the recorded area while
20
+ * announcing NOTHING: the honest live state is the `not_defined` setup gap the snapshot
21
+ * recomputes, never a "recovered" push for a connection that no longer exists.
22
+ */
23
+ export interface ProbeOutcome {
24
+ area: InfraSetupArea;
25
+ verdict: ProbeVerdict;
26
+ /** The probe's operator-facing reason, when it reported one. Never persisted; see {@link InfraSetupTransition}. */
27
+ detail?: string;
28
+ }
29
+ /**
30
+ * What probing a workspace's SAVED connection found, as the connection services report it.
31
+ *
32
+ * Three states, not "a result or null", because the three need three different dispositions and
33
+ * only one of them is an outage. `absent` is a deployment/operator FACT (nothing is registered);
34
+ * `unprobeable` is our own inability to ask (a de-registered backend kind, an unparseable config
35
+ * blob, a provider with no connection test); `answered` carries the provider's verdict. Collapsing
36
+ * the first two — which the `ConnectionTestResult | null` shape forced — is what let an outage card
37
+ * outlive the connection it reported on.
38
+ */
39
+ export type SavedConnectionProbe = {
40
+ state: 'absent';
41
+ } | {
42
+ state: 'unprobeable';
43
+ reason: string;
44
+ } | {
45
+ state: 'answered';
46
+ result: ConnectionTestResult;
47
+ };
48
+ /** One area's reachability transition, as published on the `infraSetup` realtime event. */
49
+ export interface InfraSetupTransition {
50
+ area: InfraSetupArea;
51
+ /** `unreachable` when the area just started failing; `configured` when it recovered. */
52
+ status: 'unreachable' | 'configured';
53
+ detail?: string;
54
+ }
55
+ /** What one sweep pass concluded for a workspace. */
56
+ export interface ReachabilityDecision {
57
+ /** The areas to record on the card, sorted — the card's dedup identity. Empty ⇒ clear the card. */
58
+ unreachableAreas: InfraSetupArea[];
59
+ /** The transitions to publish. Empty ⇒ nothing changed, so nothing is announced. */
60
+ transitions: InfraSetupTransition[];
61
+ /**
62
+ * Whether the recorded set differs from `previous`, i.e. whether the card needs writing.
63
+ *
64
+ * Deliberately NOT derivable from `transitions.length`: a `not_configured` area drops out of the
65
+ * record while announcing nothing, so a pass that short-circuits on "no transitions" would leave
66
+ * the stale card in place — exactly the bug that verdict exists to fix.
67
+ */
68
+ recordChanged: boolean;
69
+ }
70
+ /**
71
+ * The areas recorded as unreachable on a workspace's open `infra_unreachable` card, or an empty
72
+ * list when there is none. Filtered to the known probed areas so a card written by a newer
73
+ * deployment (or a hand-edited payload) can never inject an area this build does not model.
74
+ */
75
+ export declare function recordedUnreachableAreas(card: Notification | null | undefined): InfraSetupArea[];
76
+ /**
77
+ * Decide one workspace's reachability outcome: the set to record and the transitions to announce.
78
+ *
79
+ * `previous` is what the card recorded; `observed` is this pass's probes. An area with no probe in
80
+ * `observed` — or an `indeterminate` one — keeps its previous state, so a pass that could only
81
+ * reach half the areas neither invents a recovery nor drops an ongoing outage.
82
+ */
83
+ export declare function decideReachability(previous: readonly InfraSetupArea[], observed: readonly ProbeOutcome[]): ReachabilityDecision;
84
+ /**
85
+ * Fold the recorded unreachable areas into a setup projection, for the board snapshot.
86
+ *
87
+ * A pure fold over contracts' `applyInfraSetupTransition`, which owns the rule about which prior
88
+ * state a probe verdict may overwrite (only a `configured` area may become `unreachable`). Sharing
89
+ * it with the SPA's live event patch is the point: the two paths render the same banner, so a rule
90
+ * implemented twice is a rule that eventually disagrees with itself.
91
+ */
92
+ export declare function applyInfraReachability(projection: InfraSetup, unreachableAreas: readonly InfraSetupArea[]): InfraSetup;
93
+ //# sourceMappingURL=infra-reachability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infra-reachability.d.ts","sourceRoot":"","sources":["../../src/domain/infra-reachability.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAA;AAmB/B,wGAAwG;AACxG,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,GAAG,gBAAgB,CAAA;AAE3F;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,cAAc,CAAA;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,mHAAmH;IACnH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAEvD,2FAA2F;AAC3F,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAA;IACpB,wFAAwF;IACxF,MAAM,EAAE,aAAa,GAAG,YAAY,CAAA;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qDAAqD;AACrD,MAAM,WAAW,oBAAoB;IACnC,mGAAmG;IACnG,gBAAgB,EAAE,cAAc,EAAE,CAAA;IAClC,oFAAoF;IACpF,WAAW,EAAE,oBAAoB,EAAE,CAAA;IACnC;;;;;;OAMG;IACH,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,EAAE,CAKhG;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAChC,oBAAoB,CA6BtB;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,SAAS,cAAc,EAAE,GAC1C,UAAU,CAKZ"}
@@ -0,0 +1,66 @@
1
+ import { applyInfraSetupTransition, INFRA_SETUP_PROBED_AREAS, } from '@cat-factory/contracts';
2
+ /**
3
+ * The areas recorded as unreachable on a workspace's open `infra_unreachable` card, or an empty
4
+ * list when there is none. Filtered to the known probed areas so a card written by a newer
5
+ * deployment (or a hand-edited payload) can never inject an area this build does not model.
6
+ */
7
+ export function recordedUnreachableAreas(card) {
8
+ const raw = card?.payload?.unreachableAreas;
9
+ if (!raw)
10
+ return [];
11
+ const probed = INFRA_SETUP_PROBED_AREAS;
12
+ return raw.filter((area) => probed.includes(area));
13
+ }
14
+ /**
15
+ * Decide one workspace's reachability outcome: the set to record and the transitions to announce.
16
+ *
17
+ * `previous` is what the card recorded; `observed` is this pass's probes. An area with no probe in
18
+ * `observed` — or an `indeterminate` one — keeps its previous state, so a pass that could only
19
+ * reach half the areas neither invents a recovery nor drops an ongoing outage.
20
+ */
21
+ export function decideReachability(previous, observed) {
22
+ const was = new Set(previous);
23
+ const next = new Set(previous);
24
+ const transitions = [];
25
+ for (const probe of observed) {
26
+ if (probe.verdict === 'indeterminate')
27
+ continue;
28
+ // Nothing is registered for the area any more: forget any recorded outage (so the card clears
29
+ // instead of outliving the connection) but announce NOTHING — see {@link ProbeOutcome}.
30
+ if (probe.verdict === 'not_configured') {
31
+ next.delete(probe.area);
32
+ continue;
33
+ }
34
+ const failing = probe.verdict === 'unreachable';
35
+ if (failing === was.has(probe.area))
36
+ continue;
37
+ if (failing)
38
+ next.add(probe.area);
39
+ else
40
+ next.delete(probe.area);
41
+ transitions.push({
42
+ area: probe.area,
43
+ status: failing ? 'unreachable' : 'configured',
44
+ ...(failing && probe.detail ? { detail: probe.detail } : {}),
45
+ });
46
+ }
47
+ return {
48
+ // Sorted so the recorded set is a STABLE identity: two passes that observe the same outage in
49
+ // a different probe order must not read as a content change and re-deliver the card.
50
+ unreachableAreas: [...next].sort(),
51
+ transitions,
52
+ recordChanged: next.size !== was.size || [...next].some((area) => !was.has(area)),
53
+ };
54
+ }
55
+ /**
56
+ * Fold the recorded unreachable areas into a setup projection, for the board snapshot.
57
+ *
58
+ * A pure fold over contracts' `applyInfraSetupTransition`, which owns the rule about which prior
59
+ * state a probe verdict may overwrite (only a `configured` area may become `unreachable`). Sharing
60
+ * it with the SPA's live event patch is the point: the two paths render the same banner, so a rule
61
+ * implemented twice is a rule that eventually disagrees with itself.
62
+ */
63
+ export function applyInfraReachability(projection, unreachableAreas) {
64
+ return unreachableAreas.reduce((folded, area) => applyInfraSetupTransition(folded, area, 'unreachable'), projection);
65
+ }
66
+ //# sourceMappingURL=infra-reachability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infra-reachability.js","sourceRoot":"","sources":["../../src/domain/infra-reachability.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAEzB,wBAAwB,GAIzB,MAAM,wBAAwB,CAAA;AAuF/B;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAqC;IAC5E,MAAM,GAAG,GAAG,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAA;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IACnB,MAAM,MAAM,GAAsB,wBAAwB,CAAA;IAC1D,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAmC,EACnC,QAAiC;IAEjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC9B,MAAM,WAAW,GAA2B,EAAE,CAAA;IAC9C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe;YAAE,SAAQ;QAC/C,8FAA8F;QAC9F,wFAAwF;QACxF,IAAI,KAAK,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACvB,SAAQ;QACV,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,aAAa,CAAA;QAC/C,IAAI,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC7C,IAAI,OAAO;YAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY;YAC9C,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAA;IACJ,CAAC;IACD,OAAO;QACL,8FAA8F;QAC9F,qFAAqF;QACrF,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE;QAClC,WAAW;QACX,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAClF,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAsB,EACtB,gBAA2C;IAE3C,OAAO,gBAAgB,CAAC,MAAM,CAC5B,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,EACxE,UAAU,CACX,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -33,7 +33,10 @@ export { type VcsHttpErrorContext, describeVcsApiError, VCS_DOC_URLS, GITHUB_SET
33
33
  export { DispatchError, DISPATCH_DOC_URLS, harnessDispatchError, harnessDispatchFailureMessage, isDispatchFailure, } from './domain/dispatch-errors.js';
34
34
  export { HARNESS_FAILURE_CAUSES, type HarnessFailureCause, isHarnessFailureCause, failureKindFromHarnessCause, } from './domain/harness-failure.js';
35
35
  export { CI_AGENT_KIND, CI_FIXER_AGENT_KIND, CONFLICTS_AGENT_KIND, CONFLICT_RESOLVER_AGENT_KIND, POST_RELEASE_HEALTH_AGENT_KIND, ON_CALL_AGENT_KIND, HUMAN_REVIEW_AGENT_KIND, FIXER_AGENT_KIND, DOC_QUALITY_AGENT_KIND, DOC_FIXER_AGENT_KIND, type CiVerdict, type ReleaseGateVerdict, aggregateCi, aggregateRepoCi, headFields, isCiGreen, listFailingChecks, listFailingChecksAcrossRepos, describeFailingChecks, describeFailingRepos, classifyReleaseHealth, describeRegressedSignals, renderReleaseEvidence, } from './domain/gate-logic.js';
36
+ export type { InfraSetupTransition, ProbeOutcome, ProbeVerdict, ReachabilityDecision, SavedConnectionProbe, } from './domain/infra-reachability.js';
37
+ export { applyInfraReachability, decideReachability, recordedUnreachableAreas, } from './domain/infra-reachability.js';
36
38
  export { normalizeComposeFileRef, normalizeComposeFileRefs, composePathDir, composeProjectDir, composeBaseDepth, materializedComposePath, composeSourcesNeedPrimaryRepo, describeComposeSource, } from './domain/compose-sources.js';
39
+ export { CONTEXT_DOCUMENT_UNREADABLE, CONTEXT_DOCUMENTS_OVER_BUDGET, type ContextReferenceRef, hasReadableContent, contextExcerptFor, assertContextDocumentsReadable, assertContextReferencesFit, } from './domain/context-references.js';
37
40
  export { clearsConsensusBar, consensusGroupBar, selectConsensusGroup, applyConsensusGroup, } from './domain/consensus-groups.js';
38
41
  export { PR_REPORT_MARKER_START, PR_REPORT_MARKER_END, spliceManagedSection, readManagedSection, } from './domain/pr-report.js';
39
42
  export { type DocStructureInput, type DocStructureAnalysis, type Heading, analyzeDocStructure, documentHeadings, hasDocStructureIssues, resolveDocLinkPath, } from './domain/doc-quality-logic.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,GACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EACL,KAAK,WAAW,EAChB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,qBAAqB,EACrB,kCAAkC,GACnC,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACnF,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAClG,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,cAAc,EACnB,uBAAuB,EACvB,kCAAkC,EAClC,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,kCAAkC,EAClC,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gCAAgC,CAAA;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EACL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAG5E,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAIxF,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAMzF,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAM1F,OAAO,EACL,KAAK,4BAA4B,EACjC,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,wCAAwC,CAAA;AAM/C,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,eAAe,GAChB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,oCAAoC,CAAA;AAO3C,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,yBAAyB,CAAA;AAKhC,OAAO,EACL,KAAK,aAAa,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,+BAA+B,CAAA;AAMtC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,KAAK,iBAAiB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,6BAA6B,CAAA;AAKpC,OAAO,EACL,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAA;AAIpC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,WAAW,EACX,eAAe,EACf,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA;AAK/B,YAAY,EACV,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gCAAgC,CAAA;AAKvC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,6BAA6B,CAAA;AAKpC,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAA;AAEtC,cAAc,kBAAkB,CAAA;AAIhC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,oBAAoB,GACrB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAC9F;;;;;;GAMG;AACH,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AACnG,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,iBAAiB,GAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EACL,2BAA2B,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,YAAY,EACZ,mBAAmB,GACpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,sBAAsB,GACvB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,GACjC,MAAM,8BAA8B,CAAA;AAErC,OAAO,EAAE,KAAK,eAAe,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA"}
package/dist/index.js CHANGED
@@ -70,10 +70,15 @@ export { HARNESS_FAILURE_CAUSES, isHarnessFailureCause, failureKindFromHarnessCa
70
70
  // Pure gate logic + gate/helper agent-kind constants, shared by the built-in gate suite
71
71
  // (`@cat-factory/gates`) and the engine. See `domain/gate-logic.ts`.
72
72
  export { CI_AGENT_KIND, CI_FIXER_AGENT_KIND, CONFLICTS_AGENT_KIND, CONFLICT_RESOLVER_AGENT_KIND, POST_RELEASE_HEALTH_AGENT_KIND, ON_CALL_AGENT_KIND, HUMAN_REVIEW_AGENT_KIND, FIXER_AGENT_KIND, DOC_QUALITY_AGENT_KIND, DOC_FIXER_AGENT_KIND, aggregateCi, aggregateRepoCi, headFields, isCiGreen, listFailingChecks, listFailingChecksAcrossRepos, describeFailingChecks, describeFailingRepos, classifyReleaseHealth, describeRegressedSignals, renderReleaseEvidence, } from './domain/gate-logic.js';
73
+ export { applyInfraReachability, decideReachability, recordedUnreachableAreas, } from './domain/infra-reachability.js';
73
74
  // Where an ordered `-f` compose layer's text comes from (the primary repo, a directly-supplied
74
75
  // document, or another repo), and the pure placement rules both consumers share — the compose
75
76
  // environment provider and the shared-stack bring-up. See `domain/compose-sources.ts`.
76
77
  export { normalizeComposeFileRef, normalizeComposeFileRefs, composePathDir, composeProjectDir, composeBaseDepth, materializedComposePath, composeSourcesNeedPrimaryRepo, describeComposeSource, } from './domain/compose-sources.js';
78
+ // The "a referenced context document reaches the agent whole, or the run breaks loudly naming it"
79
+ // invariant, shared by the engine's resolution path and the container's materialiser. See
80
+ // `domain/context-references.ts`.
81
+ export { CONTEXT_DOCUMENT_UNREADABLE, CONTEXT_DOCUMENTS_OVER_BUDGET, hasReadableContent, contextExcerptFor, assertContextDocumentsReadable, assertContextReferencesFit, } from './domain/context-references.js';
77
82
  // Tiered consensus selection: which of a step's candidate model groups a task's estimate earns.
78
83
  export { clearsConsensusBar, consensusGroupBar, selectConsensusGroup, applyConsensusGroup, } from './domain/consensus-groups.js';
79
84
  // The marker-delimited splice that makes the engine's PR verification report idempotent.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Block, BootstrapJob, BrainstormSession, ConsensusSession, ClarityReview, DocInterviewSession, EnvConfigRepairJob, EnvironmentTestRun, ExecutionInstance, Initiative, KaizenGrading, LlmCallActivity, Notification, RequirementReview } from '../domain/types.js';
2
+ import type { InfraSetupTransition } from '../domain/infra-reachability.js';
2
3
  export interface ExecutionEventPublisher {
3
4
  /** A run advanced: push the updated instance and its rolled-up block. */
4
5
  executionChanged(workspaceId: string, instance: ExecutionInstance, block?: Block | null): Promise<void>;
@@ -40,6 +41,13 @@ export interface ExecutionEventPublisher {
40
41
  * that predate notifications need no change.
41
42
  */
42
43
  notificationChanged?(workspaceId: string, notification: Notification): Promise<void>;
44
+ /**
45
+ * One infrastructure area's reachability changed: push the delta so the setup banner appears
46
+ * (or clears) the moment the reachability watcher notices, instead of on whoever's next reload.
47
+ * Called on TRANSITION only — an outage is announced once, not once per sweep. Optional; a
48
+ * runtime with no real-time transport wired leaves it a no-op.
49
+ */
50
+ infraSetupChanged?(workspaceId: string, change: InfraSetupTransition): Promise<void>;
43
51
  /**
44
52
  * One container-agent LLM call completed at the proxy: push its compact summary
45
53
  * (no prompt/response bodies) so an open "Model activity" view updates live,
@@ -106,13 +114,14 @@ export interface ExecutionEventPublisher {
106
114
  * as before — no events are pushed (tests, and any deployment without the
107
115
  * WORKSPACE_EVENTS binding).
108
116
  */
109
- export declare class NoopEventPublisher implements ExecutionEventPublisher {
117
+ export declare class NoopEventPublisher implements Required<ExecutionEventPublisher> {
110
118
  executionChanged(): Promise<void>;
111
119
  boardChanged(): Promise<void>;
112
120
  bootstrapChanged(): Promise<void>;
113
121
  envConfigRepairChanged(): Promise<void>;
114
122
  envTestChanged(): Promise<void>;
115
123
  notificationChanged(): Promise<void>;
124
+ infraSetupChanged(): Promise<void>;
116
125
  llmCallObserved(): Promise<void>;
117
126
  requirementReviewChanged(): Promise<void>;
118
127
  consensusSessionChanged(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-events.d.ts","sourceRoot":"","sources":["../../src/ports/execution-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-events.d.ts","sourceRoot":"","sources":["../../src/ports/execution-events.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,12 @@
3
3
  * as before — no events are pushed (tests, and any deployment without the
4
4
  * WORKSPACE_EVENTS binding).
5
5
  */
6
+ // `Required<…>` rather than the bare port, and that is load-bearing beyond this class: because
7
+ // every publisher method is OPTIONAL, a new event added to the port compiles fine with no
8
+ // implementation anywhere — and `FanOutEventPublisher` (which delegates method-by-method) would
9
+ // then DROP it silently for every deployment wiring the in-org fan-out. Its drift guard reflects
10
+ // this class's surface, so pinning this one to the port's FULL surface is what makes the next
11
+ // added event fail at compile time here instead of in production.
6
12
  export class NoopEventPublisher {
7
13
  async executionChanged() { }
8
14
  async boardChanged() { }
@@ -10,6 +16,7 @@ export class NoopEventPublisher {
10
16
  async envConfigRepairChanged() { }
11
17
  async envTestChanged() { }
12
18
  async notificationChanged() { }
19
+ async infraSetupChanged() { }
13
20
  async llmCallObserved() { }
14
21
  async requirementReviewChanged() { }
15
22
  async consensusSessionChanged() { }
@@ -1 +1 @@
1
- {"version":3,"file":"execution-events.js","sourceRoot":"","sources":["../../src/ports/execution-events.ts"],"names":[],"mappings":"AA6IA;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,gBAAgB,KAAmB,CAAC;IAC1C,KAAK,CAAC,YAAY,KAAmB,CAAC;IACtC,KAAK,CAAC,gBAAgB,KAAmB,CAAC;IAC1C,KAAK,CAAC,sBAAsB,KAAmB,CAAC;IAChD,KAAK,CAAC,cAAc,KAAmB,CAAC;IACxC,KAAK,CAAC,mBAAmB,KAAmB,CAAC;IAC7C,KAAK,CAAC,eAAe,KAAmB,CAAC;IACzC,KAAK,CAAC,wBAAwB,KAAmB,CAAC;IAClD,KAAK,CAAC,uBAAuB,KAAmB,CAAC;IACjD,KAAK,CAAC,oBAAoB,KAAmB,CAAC;IAC9C,KAAK,CAAC,wBAAwB,KAAmB,CAAC;IAClD,KAAK,CAAC,oBAAoB,KAAmB,CAAC;IAC9C,KAAK,CAAC,iBAAiB,KAAmB,CAAC;IAC3C,KAAK,CAAC,mBAAmB,KAAmB,CAAC;CAC9C"}
1
+ {"version":3,"file":"execution-events.js","sourceRoot":"","sources":["../../src/ports/execution-events.ts"],"names":[],"mappings":"AAqJA;;;;GAIG;AACH,+FAA+F;AAC/F,0FAA0F;AAC1F,gGAAgG;AAChG,iGAAiG;AACjG,8FAA8F;AAC9F,kEAAkE;AAClE,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,gBAAgB,KAAmB,CAAC;IAC1C,KAAK,CAAC,YAAY,KAAmB,CAAC;IACtC,KAAK,CAAC,gBAAgB,KAAmB,CAAC;IAC1C,KAAK,CAAC,sBAAsB,KAAmB,CAAC;IAChD,KAAK,CAAC,cAAc,KAAmB,CAAC;IACxC,KAAK,CAAC,mBAAmB,KAAmB,CAAC;IAC7C,KAAK,CAAC,iBAAiB,KAAmB,CAAC;IAC3C,KAAK,CAAC,eAAe,KAAmB,CAAC;IACzC,KAAK,CAAC,wBAAwB,KAAmB,CAAC;IAClD,KAAK,CAAC,uBAAuB,KAAmB,CAAC;IACjD,KAAK,CAAC,oBAAoB,KAAmB,CAAC;IAC9C,KAAK,CAAC,wBAAwB,KAAmB,CAAC;IAClD,KAAK,CAAC,oBAAoB,KAAmB,CAAC;IAC9C,KAAK,CAAC,iBAAiB,KAAmB,CAAC;IAC3C,KAAK,CAAC,mBAAmB,KAAmB,CAAC;CAC9C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/kernel",
3
- "version": "0.194.0",
3
+ "version": "0.196.0",
4
4
  "description": "Shared vocabulary, pure logic, and port interfaces for the Agent Architecture Board.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "dependencies": {
27
27
  "ai": "^7.0.37",
28
28
  "yaml": "^2.9.0",
29
- "@cat-factory/contracts": "0.197.0"
29
+ "@cat-factory/contracts": "0.198.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@vitest/coverage-v8": "^4.1.10",