@cat-factory/gates 0.1.6 → 0.1.8
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/gates.d.ts +1 -1
- package/dist/gates.d.ts.map +1 -1
- package/dist/gates.js +20 -14
- package/dist/gates.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +12 -6
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +33 -24
- package/dist/providers.js.map +1 -1
- package/package.json +3 -3
package/dist/gates.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export declare const ciGate: (ctx: GateContext) => GateDefinition;
|
|
|
8
8
|
* Conflicts gate: check PR mergeability; escalate to a `conflict-resolver` on conflict. A
|
|
9
9
|
* pass-through until {@link wireMergeabilityProvider} supplies a provider.
|
|
10
10
|
*/
|
|
11
|
-
export declare const conflictsGate: (
|
|
11
|
+
export declare const conflictsGate: (ctx: GateContext) => GateDefinition;
|
|
12
12
|
/**
|
|
13
13
|
* Post-release-health gate: after deploy, watch the release's Datadog monitors/SLOs over a
|
|
14
14
|
* window; escalate to the `on-call` agent on a regression. The on-call agent INVESTIGATES
|
package/dist/gates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../src/gates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAKf,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../src/gates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EAKf,MAAM,qBAAqB,CAAA;AAyC5B;;;GAGG;AACH,eAAO,MAAM,MAAM,QAAS,WAAW,KAAG,cA+CxC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAS,WAAW,KAAG,cA+B/C,CAAA;AAkEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAS,WAAW,KAAG,cA4IvD,CAAA"}
|
package/dist/gates.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { aggregateCi, CI_AGENT_KIND, CI_FIXER_AGENT_KIND, classifyReleaseHealth, CONFLICT_RESOLVER_AGENT_KIND, CONFLICTS_AGENT_KIND, DEFAULT_MERGE_PRESET, describeFailingChecks, describeRegressedSignals, isCiGreen, listFailingChecks, ON_CALL_AGENT_KIND, POST_RELEASE_HEALTH_AGENT_KIND, renderReleaseEvidence, } from '@cat-factory/kernel';
|
|
1
|
+
import { aggregateCi, CI_AGENT_KIND, CI_FIXER_AGENT_KIND, classifyReleaseHealth, CONFLICT_RESOLVER_AGENT_KIND, CONFLICTS_AGENT_KIND, DEFAULT_MERGE_PRESET, describeFailingChecks, describeRegressedSignals, isCiGreen, isProviderWired, listFailingChecks, ON_CALL_AGENT_KIND, POST_RELEASE_HEALTH_AGENT_KIND, renderReleaseEvidence, } from '@cat-factory/kernel';
|
|
2
2
|
import { parseOnCallAssessment } from '@cat-factory/contracts';
|
|
3
|
-
import {
|
|
3
|
+
import { CI_STATUS_PROVIDER, INCIDENT_ENRICHMENT_PROVIDER, MERGEABILITY_PROVIDER, RELEASE_HEALTH_PROVIDER, } from './providers.js';
|
|
4
4
|
/**
|
|
5
5
|
* Conflict-resolver attempt cap. Unlike CI (where each fixer round gets fresh red-check
|
|
6
6
|
* output to act on), a conflict retry re-merges the SAME base and gets no new signal, so a
|
|
@@ -20,10 +20,10 @@ function pct(score) {
|
|
|
20
20
|
export const ciGate = (ctx) => ({
|
|
21
21
|
kind: CI_AGENT_KIND,
|
|
22
22
|
helperKind: CI_FIXER_AGENT_KIND,
|
|
23
|
-
wired: () =>
|
|
23
|
+
wired: () => isProviderWired(CI_STATUS_PROVIDER),
|
|
24
24
|
unwiredOutput: 'CI gate skipped (no CI status provider configured).',
|
|
25
25
|
probe: async (workspaceId, blockId) => {
|
|
26
|
-
const report = await
|
|
26
|
+
const report = await ctx.requireProvider(CI_STATUS_PROVIDER).getStatus(workspaceId, blockId);
|
|
27
27
|
const verdict = aggregateCi(report.checks);
|
|
28
28
|
if (isCiGreen(verdict)) {
|
|
29
29
|
return {
|
|
@@ -68,14 +68,16 @@ export const ciGate = (ctx) => ({
|
|
|
68
68
|
* Conflicts gate: check PR mergeability; escalate to a `conflict-resolver` on conflict. A
|
|
69
69
|
* pass-through until {@link wireMergeabilityProvider} supplies a provider.
|
|
70
70
|
*/
|
|
71
|
-
export const conflictsGate = (
|
|
71
|
+
export const conflictsGate = (ctx) => ({
|
|
72
72
|
kind: CONFLICTS_AGENT_KIND,
|
|
73
73
|
helperKind: CONFLICT_RESOLVER_AGENT_KIND,
|
|
74
|
-
wired: () =>
|
|
74
|
+
wired: () => isProviderWired(MERGEABILITY_PROVIDER),
|
|
75
75
|
unwiredOutput: 'Conflict gate skipped (no mergeability provider configured).',
|
|
76
76
|
attemptBudget: () => CONFLICT_RESOLVER_MAX_ATTEMPTS,
|
|
77
77
|
probe: async (workspaceId, blockId) => {
|
|
78
|
-
const report = await
|
|
78
|
+
const report = await ctx
|
|
79
|
+
.requireProvider(MERGEABILITY_PROVIDER)
|
|
80
|
+
.getMergeability(workspaceId, blockId);
|
|
79
81
|
// No PR resolved, or it merges cleanly → nothing to do; advance.
|
|
80
82
|
if (report.headSha === null || report.verdict === 'mergeable') {
|
|
81
83
|
return {
|
|
@@ -125,8 +127,8 @@ async function raiseReleaseRegression(ctx, workspaceId, args, assessment, signal
|
|
|
125
127
|
* monitors/SLOs) with the on-call investigation. NOT alerting — those systems already
|
|
126
128
|
* paged. A no-op when no provider is wired or no matching incident exists.
|
|
127
129
|
*/
|
|
128
|
-
async function enrichIncident(workspaceId, args, assessment, signals, since) {
|
|
129
|
-
const incidentEnrichment =
|
|
130
|
+
async function enrichIncident(ctx, workspaceId, args, assessment, signals, since) {
|
|
131
|
+
const incidentEnrichment = ctx.getProvider(INCIDENT_ENRICHMENT_PROVIDER);
|
|
130
132
|
if (!incidentEnrichment)
|
|
131
133
|
return;
|
|
132
134
|
const { block } = args;
|
|
@@ -154,7 +156,7 @@ async function enrichIncident(workspaceId, args, assessment, signals, since) {
|
|
|
154
156
|
export const postReleaseHealthGate = (ctx) => ({
|
|
155
157
|
kind: POST_RELEASE_HEALTH_AGENT_KIND,
|
|
156
158
|
helperKind: ON_CALL_AGENT_KIND,
|
|
157
|
-
wired: () =>
|
|
159
|
+
wired: () => isProviderWired(RELEASE_HEALTH_PROVIDER),
|
|
158
160
|
unwiredOutput: 'Post-release health gate skipped (no release-health provider configured).',
|
|
159
161
|
attemptBudget: (preset) => preset.releaseMaxAttempts,
|
|
160
162
|
// Running out of poll budget while still watching means the window outlasted the driver's
|
|
@@ -175,7 +177,9 @@ export const postReleaseHealthGate = (ctx) => ({
|
|
|
175
177
|
};
|
|
176
178
|
}
|
|
177
179
|
const since = gateState.watchSince ?? ctx.clock.now();
|
|
178
|
-
const report = await
|
|
180
|
+
const report = await ctx
|
|
181
|
+
.requireProvider(RELEASE_HEALTH_PROVIDER)
|
|
182
|
+
.probe(workspaceId, blockId, since);
|
|
179
183
|
// No signals configured for this block → nothing to watch; advance immediately (don't
|
|
180
184
|
// park for the whole window on an unmapped release).
|
|
181
185
|
if (report.signals.length === 0) {
|
|
@@ -210,7 +214,9 @@ export const postReleaseHealthGate = (ctx) => ({
|
|
|
210
214
|
// gathered fresh at dispatch.
|
|
211
215
|
gatherHelperPriorOutputs: async (workspaceId, blockId, gateState) => {
|
|
212
216
|
const since = gateState.watchSince ?? ctx.clock.now();
|
|
213
|
-
const evidence = await
|
|
217
|
+
const evidence = await ctx
|
|
218
|
+
.requireProvider(RELEASE_HEALTH_PROVIDER)
|
|
219
|
+
.gatherEvidence(workspaceId, blockId, since);
|
|
214
220
|
// Stash the regressed signals on the gate state so the on-call COMPLETION handler
|
|
215
221
|
// (resolveHelperCompletion) builds the notification + incident enrichment from the SAME
|
|
216
222
|
// evidence the agent investigated — rather than re-reading Datadog a third time. The
|
|
@@ -249,7 +255,7 @@ export const postReleaseHealthGate = (ctx) => ({
|
|
|
249
255
|
// persisted (e.g. an older parked run).
|
|
250
256
|
const since = step.gate?.watchSince ?? ctx.clock.now();
|
|
251
257
|
let regressedSignals = step.gate?.regressedSignals ?? [];
|
|
252
|
-
const provider =
|
|
258
|
+
const provider = ctx.getProvider(RELEASE_HEALTH_PROVIDER);
|
|
253
259
|
if (regressedSignals.length === 0 && provider) {
|
|
254
260
|
try {
|
|
255
261
|
const evidence = await provider.gatherEvidence(workspaceId, block.id, since);
|
|
@@ -264,7 +270,7 @@ export const postReleaseHealthGate = (ctx) => ({
|
|
|
264
270
|
? `${baseSummary} The automated on-call investigation could not complete, so no culprit assessment is available — investigate manually.`.trim()
|
|
265
271
|
: baseSummary;
|
|
266
272
|
await raiseReleaseRegression(ctx, workspaceId, { instance, block }, assessment, regressedSignals, summary);
|
|
267
|
-
await enrichIncident(workspaceId, { block }, assessment, regressedSignals, since);
|
|
273
|
+
await enrichIncident(ctx, workspaceId, { block }, assessment, regressedSignals, since);
|
|
268
274
|
const output = assessment
|
|
269
275
|
? `On-call investigation: ${assessment.recommendation} (culprit confidence ${pct(assessment.culpritConfidence)}). ${assessment.rationale}`
|
|
270
276
|
: investigationFailed
|
package/dist/gates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../src/gates.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../src/gates.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { wireCiStatusProvider, wireMergeabilityProvider, wireReleaseHealthProvider, wireIncidentEnrichment, clearGateProviders, applyGateProviders, type GateProviderOverrides, } from './providers.js';
|
|
1
|
+
export { CI_STATUS_PROVIDER, MERGEABILITY_PROVIDER, RELEASE_HEALTH_PROVIDER, INCIDENT_ENRICHMENT_PROVIDER, wireCiStatusProvider, wireMergeabilityProvider, wireReleaseHealthProvider, wireIncidentEnrichment, clearGateProviders, applyGateProviders, type GateProviderOverrides, } from './providers.js';
|
|
2
2
|
export { ciGate, conflictsGate, postReleaseHealthGate } from './gates.js';
|
|
3
3
|
/**
|
|
4
4
|
* Register the built-in gate suite. Idempotent (the registry replaces by kind), so importing
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEzE;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEzE;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ import { ciGate, conflictsGate, postReleaseHealthGate } from './gates.js';
|
|
|
19
19
|
//
|
|
20
20
|
// Until a gate's provider is wired it is a harmless pass-through, so a bare import is safe.
|
|
21
21
|
// ---------------------------------------------------------------------------
|
|
22
|
-
export { wireCiStatusProvider, wireMergeabilityProvider, wireReleaseHealthProvider, wireIncidentEnrichment, clearGateProviders, applyGateProviders, } from './providers.js';
|
|
22
|
+
export { CI_STATUS_PROVIDER, MERGEABILITY_PROVIDER, RELEASE_HEALTH_PROVIDER, INCIDENT_ENRICHMENT_PROVIDER, wireCiStatusProvider, wireMergeabilityProvider, wireReleaseHealthProvider, wireIncidentEnrichment, clearGateProviders, applyGateProviders, } from './providers.js';
|
|
23
23
|
export { ciGate, conflictsGate, postReleaseHealthGate } from './gates.js';
|
|
24
24
|
/**
|
|
25
25
|
* Register the built-in gate suite. Idempotent (the registry replaces by kind), so importing
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,8BAA8B,EAC9B,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEzE,8EAA8E;AAC9E,sFAAsF;AACtF,0FAA0F;AAC1F,kFAAkF;AAClF,gFAAgF;AAChF,mFAAmF;AACnF,uEAAuE;AACvE,EAAE;AACF,4FAA4F;AAC5F,8BAA8B;AAC9B,EAAE;AACF,gCAAgC;AAChC,0DAA0D;AAC1D,kEAAkE;AAClE,sEAAsE;AACtE,yEAAyE;AACzE,EAAE;AACF,4FAA4F;AAC5F,8EAA8E;AAE9E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEzE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACnC,YAAY,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAA;IACjD,YAAY,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAA;AACrE,CAAC;AAED,qEAAqE;AACrE,oBAAoB,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,8BAA8B,EAC9B,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEzE,8EAA8E;AAC9E,sFAAsF;AACtF,0FAA0F;AAC1F,kFAAkF;AAClF,gFAAgF;AAChF,mFAAmF;AACnF,uEAAuE;AACvE,EAAE;AACF,4FAA4F;AAC5F,8BAA8B;AAC9B,EAAE;AACF,gCAAgC;AAChC,0DAA0D;AAC1D,kEAAkE;AAClE,sEAAsE;AACtE,yEAAyE;AACzE,EAAE;AACF,4FAA4F;AAC5F,8EAA8E;AAE9E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEzE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IACnC,YAAY,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAA;IACjD,YAAY,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAA;AACrE,CAAC;AAED,qEAAqE;AACrE,oBAAoB,EAAE,CAAA"}
|
package/dist/providers.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type CiStatusProvider, type IncidentEnrichmentProvider, type ProviderToken, type PullRequestMergeabilityProvider, type ReleaseHealthProvider } from '@cat-factory/kernel';
|
|
2
|
+
/** Token for the CI check-runs source the `ci` gate probes. */
|
|
3
|
+
export declare const CI_STATUS_PROVIDER: ProviderToken<CiStatusProvider>;
|
|
4
|
+
/** Token for the PR-mergeability source the `conflicts` gate probes. */
|
|
5
|
+
export declare const MERGEABILITY_PROVIDER: ProviderToken<PullRequestMergeabilityProvider>;
|
|
6
|
+
/** Token for the release-health source the `post-release-health` gate probes. */
|
|
7
|
+
export declare const RELEASE_HEALTH_PROVIDER: ProviderToken<ReleaseHealthProvider>;
|
|
8
|
+
/** Token for the incident-enrichment source the on-call escalation annotates. */
|
|
9
|
+
export declare const INCIDENT_ENRICHMENT_PROVIDER: ProviderToken<IncidentEnrichmentProvider>;
|
|
2
10
|
/** Wire (or clear, with `undefined`) the CI check-runs source the `ci` gate probes. */
|
|
3
11
|
export declare function wireCiStatusProvider(provider: CiStatusProvider | undefined): void;
|
|
4
12
|
/** Wire (or clear) the PR-mergeability source the `conflicts` gate probes. */
|
|
@@ -7,12 +15,10 @@ export declare function wireMergeabilityProvider(provider: PullRequestMergeabili
|
|
|
7
15
|
export declare function wireReleaseHealthProvider(provider: ReleaseHealthProvider | undefined): void;
|
|
8
16
|
/** Wire (or clear) the incident-enrichment source the on-call escalation annotates. */
|
|
9
17
|
export declare function wireIncidentEnrichment(provider: IncidentEnrichmentProvider | undefined): void;
|
|
10
|
-
|
|
11
|
-
export declare const getMergeabilityProvider: () => PullRequestMergeabilityProvider | undefined;
|
|
12
|
-
export declare const getReleaseHealthProvider: () => ReleaseHealthProvider | undefined;
|
|
13
|
-
export declare const getIncidentEnrichment: () => IncidentEnrichmentProvider | undefined;
|
|
14
|
-
/** Clear every wired provider. Intended for tests that exercise the gates in isolation. */
|
|
18
|
+
/** Clear every built-in gate provider (the four tokens above). Intended for tests. */
|
|
15
19
|
export declare function clearGateProviders(): void;
|
|
20
|
+
/** Whether the CI status provider is wired (the `ci` gate's `wired()`). */
|
|
21
|
+
export declare const isCiStatusProviderWired: () => boolean;
|
|
16
22
|
/** The built-in gates' providers as one optional bag, for wiring through a build step. */
|
|
17
23
|
export interface GateProviderOverrides {
|
|
18
24
|
ciStatus?: CiStatusProvider;
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAe5B,+DAA+D;AAC/D,eAAO,MAAM,kBAAkB,iCAAqD,CAAA;AACpF,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,gDACoC,CAAA;AACtE,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,sCAA+D,CAAA;AACnG,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,2CAC+B,CAAA;AAExE,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAEjF;AAED,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,+BAA+B,GAAG,SAAS,GACpD,IAAI,CAEN;AAED,uFAAuF;AACvF,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAE3F;AAED,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,SAAS,GAAG,IAAI,CAE7F;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,QAAO,OAA8C,CAAA;AAEzF,0FAA0F;AAC1F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,YAAY,CAAC,EAAE,+BAA+B,CAAA;IAC9C,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACrC,kBAAkB,CAAC,EAAE,0BAA0B,CAAA;CAChD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,GAAG,IAAI,CAMrF"}
|
package/dist/providers.js
CHANGED
|
@@ -1,44 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
1
|
+
import { defineProviderToken, isProviderWired, wireProvider, } from '@cat-factory/kernel';
|
|
2
|
+
// The data sources the built-in gates probe are wired into the typed kernel provider
|
|
3
|
+
// registry at startup (exactly like a custom gate wires its own provider — see
|
|
4
|
+
// `@cat-factory/example-custom-agent`'s `LICENSE_PROVIDER`). The gates read them back through
|
|
5
|
+
// their `GateContext` (`ctx.getProvider`/`ctx.requireProvider`); until a provider is wired its
|
|
6
|
+
// gate is a harmless pass-through (`wired()` returns false), so a bare `import
|
|
7
|
+
// '@cat-factory/gates'` is always safe.
|
|
6
8
|
//
|
|
7
9
|
// This is the whole point of the externalization: the engine no longer holds these
|
|
8
10
|
// providers. A facade constructs its impl (GitHubCiStatusProvider, RegistryReleaseHealth…)
|
|
9
|
-
// and hands it here, instead of threading it through the engine's constructor.
|
|
10
|
-
|
|
11
|
-
let
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
// and hands it here, instead of threading it through the engine's constructor. The
|
|
12
|
+
// `wireX`/`clearGateProviders`/`applyGateProviders` public surface is unchanged — only the
|
|
13
|
+
// storage moved from four module-level `let`s to the shared token registry.
|
|
14
|
+
/** Token for the CI check-runs source the `ci` gate probes. */
|
|
15
|
+
export const CI_STATUS_PROVIDER = defineProviderToken('ci-status');
|
|
16
|
+
/** Token for the PR-mergeability source the `conflicts` gate probes. */
|
|
17
|
+
export const MERGEABILITY_PROVIDER = defineProviderToken('mergeability');
|
|
18
|
+
/** Token for the release-health source the `post-release-health` gate probes. */
|
|
19
|
+
export const RELEASE_HEALTH_PROVIDER = defineProviderToken('release-health');
|
|
20
|
+
/** Token for the incident-enrichment source the on-call escalation annotates. */
|
|
21
|
+
export const INCIDENT_ENRICHMENT_PROVIDER = defineProviderToken('incident-enrichment');
|
|
14
22
|
/** Wire (or clear, with `undefined`) the CI check-runs source the `ci` gate probes. */
|
|
15
23
|
export function wireCiStatusProvider(provider) {
|
|
16
|
-
|
|
24
|
+
wireProvider(CI_STATUS_PROVIDER, provider);
|
|
17
25
|
}
|
|
18
26
|
/** Wire (or clear) the PR-mergeability source the `conflicts` gate probes. */
|
|
19
27
|
export function wireMergeabilityProvider(provider) {
|
|
20
|
-
|
|
28
|
+
wireProvider(MERGEABILITY_PROVIDER, provider);
|
|
21
29
|
}
|
|
22
30
|
/** Wire (or clear) the release-health source the `post-release-health` gate probes. */
|
|
23
31
|
export function wireReleaseHealthProvider(provider) {
|
|
24
|
-
|
|
32
|
+
wireProvider(RELEASE_HEALTH_PROVIDER, provider);
|
|
25
33
|
}
|
|
26
34
|
/** Wire (or clear) the incident-enrichment source the on-call escalation annotates. */
|
|
27
35
|
export function wireIncidentEnrichment(provider) {
|
|
28
|
-
|
|
36
|
+
wireProvider(INCIDENT_ENRICHMENT_PROVIDER, provider);
|
|
29
37
|
}
|
|
30
|
-
|
|
31
|
-
export const getCiStatusProvider = () => ciStatusProvider;
|
|
32
|
-
export const getMergeabilityProvider = () => mergeabilityProvider;
|
|
33
|
-
export const getReleaseHealthProvider = () => releaseHealthProvider;
|
|
34
|
-
export const getIncidentEnrichment = () => incidentEnrichment;
|
|
35
|
-
/** Clear every wired provider. Intended for tests that exercise the gates in isolation. */
|
|
38
|
+
/** Clear every built-in gate provider (the four tokens above). Intended for tests. */
|
|
36
39
|
export function clearGateProviders() {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
for (const token of [
|
|
41
|
+
CI_STATUS_PROVIDER,
|
|
42
|
+
MERGEABILITY_PROVIDER,
|
|
43
|
+
RELEASE_HEALTH_PROVIDER,
|
|
44
|
+
INCIDENT_ENRICHMENT_PROVIDER,
|
|
45
|
+
]) {
|
|
46
|
+
wireProvider(token, undefined);
|
|
47
|
+
}
|
|
41
48
|
}
|
|
49
|
+
/** Whether the CI status provider is wired (the `ci` gate's `wired()`). */
|
|
50
|
+
export const isCiStatusProviderWired = () => isProviderWired(CI_STATUS_PROVIDER);
|
|
42
51
|
/**
|
|
43
52
|
* Wire any provided gate providers (leaving the rest untouched). A facade build runs
|
|
44
53
|
* `clearGateProviders()` then re-wires from its config; this is the seam by which a test
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,GAMb,MAAM,qBAAqB,CAAA;AAE5B,qFAAqF;AACrF,+EAA+E;AAC/E,8FAA8F;AAC9F,+FAA+F;AAC/F,+EAA+E;AAC/E,wCAAwC;AACxC,EAAE;AACF,mFAAmF;AACnF,2FAA2F;AAC3F,mFAAmF;AACnF,2FAA2F;AAC3F,4EAA4E;AAE5E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAmB,WAAW,CAAC,CAAA;AACpF,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAChC,mBAAmB,CAAkC,cAAc,CAAC,CAAA;AACtE,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAwB,gBAAgB,CAAC,CAAA;AACnG,iFAAiF;AACjF,MAAM,CAAC,MAAM,4BAA4B,GACvC,mBAAmB,CAA6B,qBAAqB,CAAC,CAAA;AAExE,uFAAuF;AACvF,MAAM,UAAU,oBAAoB,CAAC,QAAsC;IACzE,YAAY,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,wBAAwB,CACtC,QAAqD;IAErD,YAAY,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,yBAAyB,CAAC,QAA2C;IACnF,YAAY,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAA;AACjD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,sBAAsB,CAAC,QAAgD;IACrF,YAAY,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;AACtD,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,kBAAkB;IAChC,KAAK,MAAM,KAAK,IAAI;QAClB,kBAAkB;QAClB,qBAAqB;QACrB,uBAAuB;QACvB,4BAA4B;KACD,EAAE,CAAC;QAC9B,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAChC,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAY,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAA;AAUzF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA4C;IAC7E,IAAI,CAAC,SAAS;QAAE,OAAM;IACtB,IAAI,SAAS,CAAC,QAAQ;QAAE,oBAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAChE,IAAI,SAAS,CAAC,YAAY;QAAE,wBAAwB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAC5E,IAAI,SAAS,CAAC,aAAa;QAAE,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IAC/E,IAAI,SAAS,CAAC,kBAAkB;QAAE,sBAAsB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;AACxF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/gates",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "The built-in polling-gate suite (CI, merge-conflicts, post-release health + the on-call escalation) for the Agent Architecture Board, authored entirely through the public gate-registry seam — depends only on @cat-factory/kernel + @cat-factory/contracts, never the engine. A deployment imports it for side effect and wires each gate's provider via the exported wireX handles.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@cat-factory/contracts": "0.
|
|
28
|
-
"@cat-factory/kernel": "0.
|
|
27
|
+
"@cat-factory/contracts": "0.28.0",
|
|
28
|
+
"@cat-factory/kernel": "0.31.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"typescript": "7.0.1-rc",
|