@telora/daemon 0.21.165 → 0.21.178
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/build-info.json +6 -3
- package/dist/completion/completion-decision.d.ts +16 -0
- package/dist/completion/completion-decision.d.ts.map +1 -1
- package/dist/completion/completion-decision.js +15 -0
- package/dist/completion/completion-decision.js.map +1 -1
- package/dist/completion/event-escalations.d.ts +26 -0
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +77 -19
- package/dist/completion/event-escalations.js.map +1 -1
- package/dist/completion/event-phases.d.ts +7 -0
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +19 -0
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +1 -0
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/human-only-act.d.ts +43 -0
- package/dist/completion/human-only-act.d.ts.map +1 -0
- package/dist/completion/human-only-act.js +75 -0
- package/dist/completion/human-only-act.js.map +1 -0
- package/dist/completion/machine-remediable-demotion.d.ts +14 -0
- package/dist/completion/machine-remediable-demotion.d.ts.map +1 -1
- package/dist/completion/machine-remediable-demotion.js +24 -1
- package/dist/completion/machine-remediable-demotion.js.map +1 -1
- package/dist/completion/review-defect-detector.d.ts +9 -0
- package/dist/completion/review-defect-detector.d.ts.map +1 -1
- package/dist/completion/review-defect-detector.js +11 -0
- package/dist/completion/review-defect-detector.js.map +1 -1
- package/dist/completion/review-exit-deps.d.ts +51 -0
- package/dist/completion/review-exit-deps.d.ts.map +1 -0
- package/dist/completion/review-exit-deps.js +46 -0
- package/dist/completion/review-exit-deps.js.map +1 -0
- package/dist/completion/review-exit-escalations.d.ts +28 -0
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +36 -10
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts +2 -38
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +70 -45
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts +5 -1
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +5 -1
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/state-cascade.d.ts +11 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +18 -0
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts +15 -0
- package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler.js +13 -0
- package/dist/delivery/delivery-reconciler.js.map +1 -1
- package/dist/focus/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus/focus-loop-registry.js +12 -0
- package/dist/focus/focus-loop-registry.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +40 -25
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/queries/agent-resolvable-aging.d.ts +88 -0
- package/dist/queries/agent-resolvable-aging.d.ts.map +1 -0
- package/dist/queries/agent-resolvable-aging.js +145 -0
- package/dist/queries/agent-resolvable-aging.js.map +1 -0
- package/dist/queries/agent-resolvable-promotion.d.ts +37 -8
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +77 -18
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts +14 -0
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +15 -0
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/focuses.d.ts +8 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +19 -1
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/routing-measurement.d.ts +65 -0
- package/dist/queries/routing-measurement.d.ts.map +1 -0
- package/dist/queries/routing-measurement.js +109 -0
- package/dist/queries/routing-measurement.js.map +1 -0
- package/dist/queries/routing-quality.d.ts +70 -0
- package/dist/queries/routing-quality.d.ts.map +1 -0
- package/dist/queries/routing-quality.js +66 -0
- package/dist/queries/routing-quality.js.map +1 -0
- package/dist/queries/schemas.d.ts +6 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +6 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/sessions.d.ts +10 -0
- package/dist/queries/sessions.d.ts.map +1 -1
- package/dist/queries/sessions.js +14 -1
- package/dist/queries/sessions.js.map +1 -1
- package/dist/queries/source-reliability.d.ts +60 -0
- package/dist/queries/source-reliability.d.ts.map +1 -0
- package/dist/queries/source-reliability.js +70 -0
- package/dist/queries/source-reliability.js.map +1 -0
- package/dist/shell/control-state.d.ts +23 -7
- package/dist/shell/control-state.d.ts.map +1 -1
- package/dist/shell/control-state.js +41 -16
- package/dist/shell/control-state.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +9 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filing-boundary classifier: does an escalation's stated content name an act
|
|
3
|
+
* only a HUMAN can perform?
|
|
4
|
+
*
|
|
5
|
+
* A filing may claim a human-owning disposition (needs_operator, external_wait)
|
|
6
|
+
* only when it names what a human uniquely supplies -- one of four categories:
|
|
7
|
+
*
|
|
8
|
+
* 1. AUTHORITY the machine lacks (an approval / sign-off / credential a human
|
|
9
|
+
* alone holds).
|
|
10
|
+
* 2. INFORMATION not in the system (a decision or answer only the human has,
|
|
11
|
+
* not recoverable from the repo or the DB).
|
|
12
|
+
* 3. A JUDGMENT about intent (scope / priority / direction / what to build) --
|
|
13
|
+
* the historical `statedCauseNeedsIntent` case, now one facet of four.
|
|
14
|
+
* 4. A PHYSICAL act (hardware, on-site, an external console no execution
|
|
15
|
+
* surface reaches).
|
|
16
|
+
*
|
|
17
|
+
* A filing whose description alone lets a human resolve it by pasting it into an
|
|
18
|
+
* agent session names NONE of these -- the human would act as a message bus, not
|
|
19
|
+
* a regulator. Such a filing must not claim a human-owning disposition.
|
|
20
|
+
*
|
|
21
|
+
* The predicate is intentionally conservative on the POSITIVE side: it fires
|
|
22
|
+
* only on explicit evidence of a human-only act, mirroring `statedCauseNeedsIntent`
|
|
23
|
+
* (absent evidence -> machine ownership). Routing a genuinely human-owned filing
|
|
24
|
+
* to the machine lane once -- where a capable resolver either clears it or the
|
|
25
|
+
* agent-resolvable promotion path re-surfaces it on attempt evidence -- is a
|
|
26
|
+
* recoverable miss; admitting paste-resolvable junk into the human inbox on a
|
|
27
|
+
* vague match is the failure this focus exists to stop.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Category 3: a JUDGMENT about WHAT gets built (scope / intent / priority /
|
|
31
|
+
* product or design direction). This is the exact predicate that used to live
|
|
32
|
+
* inline as `statedCauseNeedsIntent`; it is preserved verbatim so the demotion
|
|
33
|
+
* classifier's behavior does not shift.
|
|
34
|
+
*/
|
|
35
|
+
export function namesIntentJudgment(text) {
|
|
36
|
+
if (!text)
|
|
37
|
+
return false;
|
|
38
|
+
return /\b(re-?scope|rescoping|requirement|intent|priorit|product decision|design decision|what to build|change (?:what|the scope)|which .{0,40}?(?:should|to build))\b/i.test(text);
|
|
39
|
+
}
|
|
40
|
+
/** Category 1: authority / permission / a credential only a human holds. */
|
|
41
|
+
const AUTHORITY_RE = /\b(approv\w*|sign-?off|authoriz\w*|permission|grant\s+\w*\s*access|credential|access\s+token|password|passphrase|secret\b|budget\s+approv\w*|legal\s+review|compliance\s+(?:review|sign))\b/i;
|
|
42
|
+
/** Category 4: a PHYSICAL act / on-site / an external console no agent can reach. */
|
|
43
|
+
const PHYSICAL_RE = /\b(physical\w*|on-?site|hardware|data\s?cent\w*|power\s?cycle|unplug|re-?plug|reboot\s+the\s+\w+|rack\b|cabl\w*|press\s+the\s+\w+\s+button|swap\s+the\s+\w+\s+(?:drive|disk|card|module))\b/i;
|
|
44
|
+
/** External third party the system cannot act on directly (pairs with external_wait). */
|
|
45
|
+
const EXTERNAL_PARTY_RE = /\b(third[-\s]?party|vendor\b|provider['’]?s?\s+(?:support|console|side)|support\s+ticket|reach\s+out\s+to|contact\s+(?:the\s+)?\w+\s+(?:team|support|provider)|escalate\s+to\s+\w+\s+support)\b/i;
|
|
46
|
+
/** Category 2: information/decision only the human holds (not in repo or DB). */
|
|
47
|
+
const HUMAN_INFO_RE = /\b(only\s+(?:you|a\s+human)\s+\w+|human\s+(?:decision|judg(?:e)?ment|input)|business\s+decision|stakeholder\s+\w+|needs?\s+(?:a\s+)?(?:human\s+)?decision)\b/i;
|
|
48
|
+
/**
|
|
49
|
+
* Category 5 (operator authority over the running system): operation of the live
|
|
50
|
+
* daemon, its verify gate, or a delivery's workflow wiring -- state a sandboxed
|
|
51
|
+
* worktree agent cannot reach. This is what the DAEMON's own structural filings
|
|
52
|
+
* name (a gate-stuck delivery's gate_state, a daemon-loop that reports success
|
|
53
|
+
* without advancing status, a delivery with no workflow stage). It is a facet of
|
|
54
|
+
* "authority the machine lacks", scoped to the operator's control plane, so those
|
|
55
|
+
* genuinely operator-owned filings pass the human-only-act test rather than being
|
|
56
|
+
* mis-downgraded into a machine lane that cannot operate the daemon.
|
|
57
|
+
*/
|
|
58
|
+
const OPERATOR_DOMAIN_RE = /\b(gate[_\s-]?state|verify\s+gate|gate-?stuck|daemon[-\s]?loop|workflow\s+stage|execution_status)\b/i;
|
|
59
|
+
/**
|
|
60
|
+
* Whether the given text names an act ONLY a human/operator can perform -- the
|
|
61
|
+
* union of the five categories above. Callers at the filing boundary combine the
|
|
62
|
+
* escalation's description + helpNeeded and pass the result: a human-owning
|
|
63
|
+
* disposition is admissible only when this returns true.
|
|
64
|
+
*/
|
|
65
|
+
export function namesHumanOnlyAct(text) {
|
|
66
|
+
if (!text)
|
|
67
|
+
return false;
|
|
68
|
+
return (namesIntentJudgment(text) ||
|
|
69
|
+
AUTHORITY_RE.test(text) ||
|
|
70
|
+
PHYSICAL_RE.test(text) ||
|
|
71
|
+
EXTERNAL_PARTY_RE.test(text) ||
|
|
72
|
+
HUMAN_INFO_RE.test(text) ||
|
|
73
|
+
OPERATOR_DOMAIN_RE.test(text));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=human-only-act.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-only-act.js","sourceRoot":"","sources":["../../src/completion/human-only-act.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAwB;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,kKAAkK,CAAC,IAAI,CAC5K,IAAI,CACL,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,YAAY,GAChB,8LAA8L,CAAC;AAEjM,qFAAqF;AACrF,MAAM,WAAW,GACf,8LAA8L,CAAC;AAEjM,yFAAyF;AACzF,MAAM,iBAAiB,GACrB,kMAAkM,CAAC;AAErM,iFAAiF;AACjF,MAAM,aAAa,GACjB,+JAA+J,CAAC;AAElK;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GACtB,sGAAsG,CAAC;AAEzG;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAwB;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,CACL,mBAAmB,CAAC,IAAI,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import { type DemotableTeamFailureItem } from '../queries/escalation-consumption.js';
|
|
27
27
|
import { type FileEscalationIdempotentParams, type FileEscalationIdempotentResult } from '../queries/escalation-suppression.js';
|
|
28
|
+
import { type MachineLaneMisRoute } from '../queries/routing-quality.js';
|
|
28
29
|
/** escalation_kind preserved on a demoted (formerly needs_intent) team_failure. */
|
|
29
30
|
export declare const MACHINE_REMEDIABLE_DEMOTED_KIND = "team_failure";
|
|
30
31
|
/** The cause key that makes a demotion refile idempotent (one per source filing). */
|
|
@@ -53,12 +54,25 @@ export declare function buildDemotionRefileParams(item: DemotableTeamFailureItem
|
|
|
53
54
|
export interface MachineRemediableDemotionCounts {
|
|
54
55
|
scanned: number;
|
|
55
56
|
demoted: number;
|
|
57
|
+
/**
|
|
58
|
+
* Machine-remediable filings that were NOT demoted this cycle because the
|
|
59
|
+
* measured machine-lane mis-route rate was over the ceiling (the lane is not
|
|
60
|
+
* clearing what it is handed, so more was withheld from it). Zero in the normal
|
|
61
|
+
* case; > 0 is the feedback firing.
|
|
62
|
+
*/
|
|
63
|
+
held: number;
|
|
56
64
|
}
|
|
57
65
|
/** Injected IO for the demotion sweep (real defaults; tests inject stubs). */
|
|
58
66
|
export interface MachineRemediableDemotionDeps {
|
|
59
67
|
listOpenDemotable: () => Promise<DemotableTeamFailureItem[]>;
|
|
60
68
|
markResolved: (id: string, notes?: string) => Promise<void>;
|
|
61
69
|
file: (params: FileEscalationIdempotentParams) => Promise<FileEscalationIdempotentResult>;
|
|
70
|
+
/** Live machine-lane mis-route measurement -- the routing-quality feedback signal. */
|
|
71
|
+
measureMisRoute: () => Promise<MachineLaneMisRoute>;
|
|
72
|
+
/** Ceiling above which demotion holds (the lane is mis-routing). */
|
|
73
|
+
misRouteCeiling: number;
|
|
74
|
+
/** Minimum judged rows before the rate is trusted to hold. */
|
|
75
|
+
minSample: number;
|
|
62
76
|
}
|
|
63
77
|
/**
|
|
64
78
|
* Sweep the org's OPEN needs_intent team_failures and return ownership to the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-remediable-demotion.d.ts","sourceRoot":"","sources":["../../src/completion/machine-remediable-demotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAkE,KAAK,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrJ,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACpC,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"machine-remediable-demotion.d.ts","sourceRoot":"","sources":["../../src/completion/machine-remediable-demotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAkE,KAAK,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrJ,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACpC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAMvC,mFAAmF;AACnF,eAAO,MAAM,+BAA+B,iBAAiB,CAAC;AAE9D,qFAAqF;AACrF,wBAAgB,iCAAiC,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,wBAAwB,EAAE,GACzC;IAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;IAAC,MAAM,EAAE,wBAAwB,EAAE,CAAA;CAAE,CAW1E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,8BAA8B,CAiChC;AAED,iEAAiE;AACjE,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8EAA8E;AAC9E,MAAM,WAAW,6BAA6B;IAC5C,iBAAiB,EAAE,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC7D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC1F,sFAAsF;IACtF,eAAe,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpD,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAaD;;;;;;;;;GASG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,GAAE,OAAO,CAAC,6BAA6B,CAAM,GAChD,OAAO,CAAC,+BAA+B,CAAC,CAiE1C"}
|
|
@@ -28,6 +28,7 @@ import { markEscalationResolved as defaultMarkEscalationResolved } from '../quer
|
|
|
28
28
|
import { listOpenDemotableTeamFailureForOrg as defaultListOpenDemotable } from '../queries/escalation-consumption.js';
|
|
29
29
|
import { fileEscalationIdempotent as defaultFileEscalationIdempotent, } from '../queries/escalation-suppression.js';
|
|
30
30
|
import { computeCauseKey } from '../queries/cause-key.js';
|
|
31
|
+
import { measureMachineLaneMisRoute as defaultMeasureMisRoute, shouldHoldDemotionForMisRoute, DEFAULT_MACHINE_LANE_MISROUTE_CEILING, DEFAULT_MIN_ROUTING_SAMPLE, } from '../queries/routing-quality.js';
|
|
31
32
|
import { statedCauseNeedsIntent } from './event-escalations.js';
|
|
32
33
|
import { createLogger } from '../shell/log.js';
|
|
33
34
|
const log = createLogger({ module: 'escalations' });
|
|
@@ -97,6 +98,9 @@ function defaultDeps() {
|
|
|
97
98
|
listOpenDemotable: defaultListOpenDemotable,
|
|
98
99
|
markResolved: defaultMarkEscalationResolved,
|
|
99
100
|
file: defaultFileEscalationIdempotent,
|
|
101
|
+
measureMisRoute: () => defaultMeasureMisRoute(),
|
|
102
|
+
misRouteCeiling: DEFAULT_MACHINE_LANE_MISROUTE_CEILING,
|
|
103
|
+
minSample: DEFAULT_MIN_ROUTING_SAMPLE,
|
|
100
104
|
};
|
|
101
105
|
}
|
|
102
106
|
/**
|
|
@@ -113,6 +117,25 @@ export async function sweepMachineRemediableDemotions(deps = {}) {
|
|
|
113
117
|
const d = { ...defaultDeps(), ...deps };
|
|
114
118
|
const open = await d.listOpenDemotable();
|
|
115
119
|
const { demote } = partitionDemotable(open);
|
|
120
|
+
// Routing-quality feedback: measure the machine lane's live mis-route rate and,
|
|
121
|
+
// if it is over the ceiling on sufficient evidence, HOLD -- do not return more
|
|
122
|
+
// filings to a lane that is not clearing what it already holds. The measured
|
|
123
|
+
// rate thereby feeds back into how these filings are classified (kept with the
|
|
124
|
+
// human vs demoted to the machine). Best-effort: a measurement failure never
|
|
125
|
+
// blocks the sweep -- it proceeds as if unmeasured.
|
|
126
|
+
let misRoute = { judged: 0, misRouted: 0, rate: 0 };
|
|
127
|
+
try {
|
|
128
|
+
misRoute = await d.measureMisRoute();
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
log.warn(`[escalations] demotion mis-route measure failed (proceeding unmeasured): ${err.message}`);
|
|
132
|
+
}
|
|
133
|
+
if (demote.length > 0 && shouldHoldDemotionForMisRoute(misRoute, { ceiling: d.misRouteCeiling, minSample: d.minSample })) {
|
|
134
|
+
log.info(`[machine-remediable-demotion] HOLDING ${demote.length} demotion(s): machine-lane mis-route ` +
|
|
135
|
+
`rate ${misRoute.rate.toFixed(2)} > ceiling ${d.misRouteCeiling} over ${misRoute.judged} judged ` +
|
|
136
|
+
`rows -- the machine lane is not clearing what it holds, so more is withheld from it this cycle`);
|
|
137
|
+
return { scanned: open.length, demoted: 0, held: demote.length };
|
|
138
|
+
}
|
|
116
139
|
let demoted = 0;
|
|
117
140
|
for (const item of demote) {
|
|
118
141
|
if (!item.organizationId) {
|
|
@@ -143,6 +166,6 @@ export async function sweepMachineRemediableDemotions(deps = {}) {
|
|
|
143
166
|
// Left open; the next sweep retries.
|
|
144
167
|
}
|
|
145
168
|
}
|
|
146
|
-
return { scanned: open.length, demoted };
|
|
169
|
+
return { scanned: open.length, demoted, held: 0 };
|
|
147
170
|
}
|
|
148
171
|
//# sourceMappingURL=machine-remediable-demotion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-remediable-demotion.js","sourceRoot":"","sources":["../../src/completion/machine-remediable-demotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,sBAAsB,IAAI,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,EAAE,kCAAkC,IAAI,wBAAwB,EAAiC,MAAM,sCAAsC,CAAC;AACrJ,OAAO,EACL,wBAAwB,IAAI,+BAA+B,GAG5D,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AAEpD,mFAAmF;AACnF,MAAM,CAAC,MAAM,+BAA+B,GAAG,cAAc,CAAC;AAE9D,qFAAqF;AACrF,MAAM,UAAU,iCAAiC,CAAC,oBAA4B;IAC5E,OAAO,eAAe,CAAC,sBAAsB,EAAE,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAA0C;IAE1C,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,sDAAsD;QACzE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,sDAAsD;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA8B,EAC9B,GAAqE;IAErE,OAAO;QACL,QAAQ,EAAE,iCAAiC,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,kBAAkB,CAAC,mBAAmB;QAClD,6EAA6E;QAC7E,4EAA4E;QAC5E,0EAA0E;QAC1E,WAAW,EAAE,uBAAuB,CAAC,gBAAgB;QACrD,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;QACnD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,cAAc,EAAE,+BAA+B;QAC/C,WAAW,EACT,yEAAyE;YACzE,yEAAyE;YACzE,sEAAsE;YACtE,iDAAiD;YACjD,wBAAwB,IAAI,CAAC,EAAE,MAAM;YACrC,GAAG,IAAI,CAAC,WAAW,EAAE;QACvB,YAAY,EACV,2EAA2E;YAC3E,8EAA8E;YAC9E,oBAAoB;QACtB,UAAU,EACR,6EAA6E;YAC7E,8EAA8E;QAChF,QAAQ,EAAE;YACR,KAAK,EAAE,+BAA+B;YACtC,WAAW,EAAE,cAAc;YAC3B,oBAAoB,EAAE,IAAI,CAAC,EAAE;SAC9B;KACF,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"machine-remediable-demotion.js","sourceRoot":"","sources":["../../src/completion/machine-remediable-demotion.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,15 @@ export declare function isReviewFiledComplete(issue: Pick<FocusIssueInfo, 'id' |
|
|
|
90
90
|
export declare function reviewFiledIssueExistsComplete(issues: FocusIssueInfo[], reviewFiledIds: ReadonlySet<string>, reviewRequestedAt: string | null): boolean;
|
|
91
91
|
/** Complete-set counterpart of blockingReviewFiledIssueExists. */
|
|
92
92
|
export declare function blockingReviewFiledIssueExistsComplete(issues: FocusIssueInfo[], reviewFiledIds: ReadonlySet<string>, reviewRequestedAt: string | null): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Complete-set counterpart of blockingReviewFiledIssueExists returning the LIST
|
|
95
|
+
* (not just existence): the OPEN, BLOCKING review-filed issues on the focus. Used
|
|
96
|
+
* by the hand-off breaker to ENUMERATE the outstanding findings in its escalation
|
|
97
|
+
* -- so an operator can tell whether the focus carries outstanding review
|
|
98
|
+
* findings without opening the daemon log, rather than reading the breaker's old
|
|
99
|
+
* untested "there was no work left to route" assertion.
|
|
100
|
+
*/
|
|
101
|
+
export declare function filterBlockingReviewFiledComplete(issues: FocusIssueInfo[], reviewFiledIds: ReadonlySet<string>, reviewRequestedAt: string | null): FocusIssueInfo[];
|
|
93
102
|
/** Complete-set counterpart of filterDeferrableReviewNotes. */
|
|
94
103
|
export declare function filterDeferrableReviewNotesComplete(issues: FocusIssueInfo[], reviewFiledIds: ReadonlySet<string>, reviewRequestedAt: string | null): FocusIssueInfo[];
|
|
95
104
|
//# sourceMappingURL=review-defect-detector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-defect-detector.d.ts","sourceRoot":"","sources":["../../src/completion/review-defect-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,MACU,CAAC;AAYlD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,wCAAwC;AACxC,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAID;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,iBAAiB,GAAG,WAAW,GAAG,QAAQ,CAAC,EACvE,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,cAAc,EAAE,CAElB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAUT;AAcD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAG1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,iBAAiB,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC,EACpF,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,cAAc,EAAE,CAElB;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAIT;AAmBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,QAAQ,CAAC,EAC5C,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,GAClC,OAAO,CAET;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,iBAAiB,GAAG,WAAW,GAAG,QAAQ,CAAC,EAC9E,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,EACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAET;AAED,0DAA0D;AAC1D,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,cAAc,EAAE,EACxB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,EACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAET;AAED,kEAAkE;AAClE,wBAAgB,sCAAsC,CACpD,MAAM,EAAE,cAAc,EAAE,EACxB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,EACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAIT;AAED,+DAA+D;AAC/D,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,cAAc,EAAE,EACxB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,EACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,cAAc,EAAE,CAIlB"}
|
|
1
|
+
{"version":3,"file":"review-defect-detector.d.ts","sourceRoot":"","sources":["../../src/completion/review-defect-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,6 +180,17 @@ export function reviewFiledIssueExistsComplete(issues, reviewFiledIds, reviewReq
|
|
|
180
180
|
export function blockingReviewFiledIssueExistsComplete(issues, reviewFiledIds, reviewRequestedAt) {
|
|
181
181
|
return issues.some(i => isReviewFiledComplete(i, reviewFiledIds, reviewRequestedAt) && !isLowPriority(i.priority));
|
|
182
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Complete-set counterpart of blockingReviewFiledIssueExists returning the LIST
|
|
185
|
+
* (not just existence): the OPEN, BLOCKING review-filed issues on the focus. Used
|
|
186
|
+
* by the hand-off breaker to ENUMERATE the outstanding findings in its escalation
|
|
187
|
+
* -- so an operator can tell whether the focus carries outstanding review
|
|
188
|
+
* findings without opening the daemon log, rather than reading the breaker's old
|
|
189
|
+
* untested "there was no work left to route" assertion.
|
|
190
|
+
*/
|
|
191
|
+
export function filterBlockingReviewFiledComplete(issues, reviewFiledIds, reviewRequestedAt) {
|
|
192
|
+
return issues.filter(i => isReviewFiledComplete(i, reviewFiledIds, reviewRequestedAt) && !isLowPriority(i.priority));
|
|
193
|
+
}
|
|
183
194
|
/** Complete-set counterpart of filterDeferrableReviewNotes. */
|
|
184
195
|
export function filterDeferrableReviewNotesComplete(issues, reviewFiledIds, reviewRequestedAt) {
|
|
185
196
|
return issues.filter(i => isReviewFiledComplete(i, reviewFiledIds, reviewRequestedAt) && isLowPriority(i.priority));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-defect-detector.js","sourceRoot":"","sources":["../../src/completion/review-defect-detector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-defect-detector.js","sourceRoot":"","sources":["../../src/completion/review-defect-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency contract + default wiring for the review-exit phase.
|
|
3
|
+
*
|
|
4
|
+
* Split out of review-exit-phase.ts: that module carried both the review-exit
|
|
5
|
+
* routing decision tree and the long concrete-import list that binds
|
|
6
|
+
* ReviewExitDeps to the real query/directive/loop implementations. The contract
|
|
7
|
+
* and its production wiring live here; the phase module imports both and
|
|
8
|
+
* re-exports the type for existing importers. Dependency direction is one-way
|
|
9
|
+
* (phase -> deps), so the completion family stays acyclic under
|
|
10
|
+
* import-x/no-cycle. Bodies verbatim.
|
|
11
|
+
*/
|
|
12
|
+
import { fetchEffectiveWorkflow } from '../queries/workflows.js';
|
|
13
|
+
import { updateDeliveryStatus, markDeliveryAutoApproved } from '../queries/deliveries.js';
|
|
14
|
+
import { getActiveFocuses } from '../queries/focus-discovery.js';
|
|
15
|
+
import { hasPendingSpawnDirective } from '../directive/directive-queue.js';
|
|
16
|
+
import { emitLoopTrigger } from '../loops/index.js';
|
|
17
|
+
import { getFocusDeliveries, getFocusIssues, clearReviewRequestedAt, setReviewedThroughSha, setReviewCycleCount, setReviewHandoffCount, getFocusReviewReportForSession, getFocusReviewFiledIssueIds } from '../queries/focuses.js';
|
|
18
|
+
import { resolveReviewCycleCap, resolveReviewHandoffCap } from '../verify/stall-detector-config.js';
|
|
19
|
+
import { getDeliveryIssues } from '../queries/issues.js';
|
|
20
|
+
import { createEscalation, hasOpenFocusEscalation } from '../queries/escalations.js';
|
|
21
|
+
import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
|
|
22
|
+
import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
23
|
+
/**
|
|
24
|
+
* Dependencies for runReviewExitHandler. Defaults to real implementations;
|
|
25
|
+
* overridable in tests via the optional `deps` argument.
|
|
26
|
+
*/
|
|
27
|
+
export interface ReviewExitDeps {
|
|
28
|
+
getActiveFocuses: typeof getActiveFocuses;
|
|
29
|
+
getFocusDeliveries: typeof getFocusDeliveries;
|
|
30
|
+
getFocusIssues: typeof getFocusIssues;
|
|
31
|
+
getDeliveryIssues: typeof getDeliveryIssues;
|
|
32
|
+
fetchEffectiveWorkflow: typeof fetchEffectiveWorkflow;
|
|
33
|
+
updateDeliveryStatus: typeof updateDeliveryStatus;
|
|
34
|
+
markDeliveryAutoApproved: typeof markDeliveryAutoApproved;
|
|
35
|
+
clearReviewRequestedAt: typeof clearReviewRequestedAt;
|
|
36
|
+
setReviewedThroughSha: typeof setReviewedThroughSha;
|
|
37
|
+
setReviewCycleCount?: typeof setReviewCycleCount;
|
|
38
|
+
resolveReviewCycleCap?: typeof resolveReviewCycleCap;
|
|
39
|
+
setReviewHandoffCount?: typeof setReviewHandoffCount;
|
|
40
|
+
resolveReviewHandoffCap?: typeof resolveReviewHandoffCap;
|
|
41
|
+
hasOpenFocusEscalation?: typeof hasOpenFocusEscalation;
|
|
42
|
+
listOpenShortfallProposalIds?: typeof listOpenShortfallProposalIds;
|
|
43
|
+
findOpenOperatorHoldForDelivery?: typeof findOpenOperatorHoldForDelivery;
|
|
44
|
+
hasPendingSpawnDirective: typeof hasPendingSpawnDirective;
|
|
45
|
+
emitLoopTrigger: typeof emitLoopTrigger;
|
|
46
|
+
getFocusReviewReportForSession: typeof getFocusReviewReportForSession;
|
|
47
|
+
getFocusReviewFiledIssueIds?: typeof getFocusReviewFiledIssueIds;
|
|
48
|
+
createEscalation: typeof createEscalation;
|
|
49
|
+
}
|
|
50
|
+
export declare const defaultReviewExitDeps: ReviewExitDeps;
|
|
51
|
+
//# sourceMappingURL=review-exit-deps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-deps.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-deps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,qBAAqB,EAAE,OAAO,qBAAqB,CAAC;IAGpD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAKrD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC;IAGzD,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IAKvD,4BAA4B,CAAC,EAAE,OAAO,4BAA4B,CAAC;IAMnE,+BAA+B,CAAC,EAAE,OAAO,+BAA+B,CAAC;IACzE,wBAAwB,EAAE,OAAO,wBAAwB,CAAC;IAC1D,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,8BAA8B,EAAE,OAAO,8BAA8B,CAAC;IAMtE,2BAA2B,CAAC,EAAE,OAAO,2BAA2B,CAAC;IACjE,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C;AAED,eAAO,MAAM,qBAAqB,EAAE,cAsBnC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency contract + default wiring for the review-exit phase.
|
|
3
|
+
*
|
|
4
|
+
* Split out of review-exit-phase.ts: that module carried both the review-exit
|
|
5
|
+
* routing decision tree and the long concrete-import list that binds
|
|
6
|
+
* ReviewExitDeps to the real query/directive/loop implementations. The contract
|
|
7
|
+
* and its production wiring live here; the phase module imports both and
|
|
8
|
+
* re-exports the type for existing importers. Dependency direction is one-way
|
|
9
|
+
* (phase -> deps), so the completion family stays acyclic under
|
|
10
|
+
* import-x/no-cycle. Bodies verbatim.
|
|
11
|
+
*/
|
|
12
|
+
import { fetchEffectiveWorkflow } from '../queries/workflows.js';
|
|
13
|
+
import { updateDeliveryStatus, markDeliveryAutoApproved } from '../queries/deliveries.js';
|
|
14
|
+
import { getActiveFocuses } from '../queries/focus-discovery.js';
|
|
15
|
+
import { hasPendingSpawnDirective } from '../directive/directive-queue.js';
|
|
16
|
+
import { emitLoopTrigger } from '../loops/index.js';
|
|
17
|
+
import { getFocusDeliveries, getFocusIssues, clearReviewRequestedAt, setReviewedThroughSha, setReviewCycleCount, setReviewHandoffCount, getFocusReviewReportForSession, getFocusReviewFiledIssueIds, } from '../queries/focuses.js';
|
|
18
|
+
import { resolveReviewCycleCap, resolveReviewHandoffCap } from '../verify/stall-detector-config.js';
|
|
19
|
+
import { getDeliveryIssues } from '../queries/issues.js';
|
|
20
|
+
import { createEscalation, hasOpenFocusEscalation } from '../queries/escalations.js';
|
|
21
|
+
import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
|
|
22
|
+
import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
23
|
+
export const defaultReviewExitDeps = {
|
|
24
|
+
getActiveFocuses,
|
|
25
|
+
getFocusDeliveries,
|
|
26
|
+
getFocusIssues,
|
|
27
|
+
getDeliveryIssues,
|
|
28
|
+
fetchEffectiveWorkflow,
|
|
29
|
+
updateDeliveryStatus,
|
|
30
|
+
markDeliveryAutoApproved,
|
|
31
|
+
clearReviewRequestedAt,
|
|
32
|
+
setReviewedThroughSha,
|
|
33
|
+
setReviewCycleCount,
|
|
34
|
+
resolveReviewCycleCap,
|
|
35
|
+
setReviewHandoffCount,
|
|
36
|
+
resolveReviewHandoffCap,
|
|
37
|
+
hasOpenFocusEscalation,
|
|
38
|
+
listOpenShortfallProposalIds,
|
|
39
|
+
findOpenOperatorHoldForDelivery,
|
|
40
|
+
hasPendingSpawnDirective,
|
|
41
|
+
emitLoopTrigger,
|
|
42
|
+
getFocusReviewReportForSession,
|
|
43
|
+
getFocusReviewFiledIssueIds,
|
|
44
|
+
createEscalation,
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=review-exit-deps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-deps.js","sourceRoot":"","sources":["../../src/completion/review-exit-deps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAoD1E,MAAM,CAAC,MAAM,qBAAqB,GAAmB;IACnD,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,iBAAiB;IACjB,sBAAsB;IACtB,oBAAoB;IACpB,wBAAwB;IACxB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,uBAAuB;IACvB,sBAAsB;IACtB,4BAA4B;IAC5B,+BAA+B;IAC/B,wBAAwB;IACxB,eAAe;IACf,8BAA8B;IAC9B,2BAA2B;IAC3B,gBAAgB;CACjB,CAAC"}
|
|
@@ -33,6 +33,16 @@ export interface ReviewExitEscalationContext {
|
|
|
33
33
|
focusName: string;
|
|
34
34
|
sessionId: string;
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* A compact summary of one open, blocking, review-filed finding on a focus,
|
|
38
|
+
* enumerated in the hand-off-exhausted escalation so an operator can see the
|
|
39
|
+
* outstanding findings without opening the daemon log.
|
|
40
|
+
*/
|
|
41
|
+
export interface ReviewFiledFindingSummary {
|
|
42
|
+
key: string;
|
|
43
|
+
title: string;
|
|
44
|
+
deliveryId: string | null;
|
|
45
|
+
}
|
|
36
46
|
/**
|
|
37
47
|
* Focus-level review-cycle churn METER (NOT a breaker), plus the one escalation
|
|
38
48
|
* it arms.
|
|
@@ -101,6 +111,23 @@ export declare function recordHandoffAndMaybeTerminate(deps: HandoffBoundDeps, c
|
|
|
101
111
|
* (the empty verify->verify_failed round trip).
|
|
102
112
|
*/
|
|
103
113
|
trigger?: 'pending_spawn_handoff' | 'no_delta_cycle';
|
|
114
|
+
/**
|
|
115
|
+
* The EXITING session's type. The hand-off breaker measures ONLY review-pass
|
|
116
|
+
* exits: a coding pass cannot approve a review, so its routes-nothing exit
|
|
117
|
+
* was never a routing candidate and must not advance the cap (2026-08-27:
|
|
118
|
+
* two CODING exits exhausted the cap without one review exit having failed,
|
|
119
|
+
* then the breaker filed an escalation asserting the focus was done while a
|
|
120
|
+
* P1 finding was open). When present and NOT 'review', this is a no-op --
|
|
121
|
+
* the counter does not advance and no escalation is filed. Absent preserves
|
|
122
|
+
* the legacy count-any-exit behavior for callers/tests that predate the gate.
|
|
123
|
+
*/
|
|
124
|
+
sessionType?: 'coding' | 'review';
|
|
125
|
+
/**
|
|
126
|
+
* Open, blocking, review-filed findings on the focus, resolved by the
|
|
127
|
+
* handler. Enumerated in the exhausted escalation (and its metadata) so the
|
|
128
|
+
* escalation states what it MEASURED instead of asserting "nothing to route".
|
|
129
|
+
*/
|
|
130
|
+
openBlockingFindings?: ReviewFiledFindingSummary[];
|
|
104
131
|
}): Promise<void>;
|
|
105
132
|
/**
|
|
106
133
|
* The review hand-off has terminated. The review-exit hand-off branch re-asserts
|
|
@@ -114,6 +141,7 @@ export declare function fileHandoffExhaustedEscalation(deps: ReviewExitEscalatio
|
|
|
114
141
|
handoffCount: number;
|
|
115
142
|
cap: number;
|
|
116
143
|
trigger?: 'pending_spawn_handoff' | 'no_delta_cycle';
|
|
144
|
+
openBlockingFindings?: ReviewFiledFindingSummary[];
|
|
117
145
|
}): Promise<void>;
|
|
118
146
|
/**
|
|
119
147
|
* The routing inconsistency the review-exit gate exists to catch: the review
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-escalations.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAChH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAK7E,sFAAsF;AACtF,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAG1C,sBAAsB,CAAC,EAAE,OAAO,sBAAsB,CAAC;IAGvD,mBAAmB,CAAC,EAAE,OAAO,mBAAmB,CAAC;IACjD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;CACtD;AAED,mEAAmE;AACnE,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsDD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE,2BAA2B,EAChC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;;;GAMG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE,2BAA2B,EAChC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnF,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wGAAwG;AACxG,MAAM,WAAW,gBAAiB,SAAQ,wBAAwB;IAChE,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC;CAC1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,2BAA2B,EAChC,mBAAmB,EAAE,MAAM,EAC3B,IAAI,CAAC,EAAE;IACL;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,uBAAuB,GAAG,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"review-exit-escalations.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,6 +166,13 @@ export async function fileCoverageIncompleteEscalation(deps, ctx, args) {
|
|
|
166
166
|
*/
|
|
167
167
|
export async function recordHandoffAndMaybeTerminate(deps, ctx, currentHandoffCount, opts) {
|
|
168
168
|
const trigger = opts?.trigger ?? 'pending_spawn_handoff';
|
|
169
|
+
// MEASURE, don't assume: the breaker counts only review-pass exits. A
|
|
170
|
+
// non-review exit that routed nothing was never a review routing candidate.
|
|
171
|
+
if (opts?.sessionType && opts.sessionType !== 'review') {
|
|
172
|
+
log.info(`[focus-executor] "${ctx.focusName}" ${opts.sessionType} session exit routed nothing ` +
|
|
173
|
+
`(trigger=${trigger}) -- not a review pass; hand-off counter not advanced.`);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
169
176
|
const handoffCap = (deps.resolveReviewHandoffCap ?? resolveReviewHandoffCap)();
|
|
170
177
|
const nextHandoffCount = currentHandoffCount + 1;
|
|
171
178
|
const persist = async () => {
|
|
@@ -183,7 +190,12 @@ export async function recordHandoffAndMaybeTerminate(deps, ctx, currentHandoffCo
|
|
|
183
190
|
// window, and file one operator escalation (deduped one-open-per-focus).
|
|
184
191
|
await persist();
|
|
185
192
|
await deps.clearReviewRequestedAt(ctx.focusId);
|
|
186
|
-
await fileHandoffExhaustedEscalation(deps, ctx, {
|
|
193
|
+
await fileHandoffExhaustedEscalation(deps, ctx, {
|
|
194
|
+
handoffCount: nextHandoffCount,
|
|
195
|
+
cap: handoffCap,
|
|
196
|
+
trigger,
|
|
197
|
+
openBlockingFindings: opts?.openBlockingFindings ?? [],
|
|
198
|
+
});
|
|
187
199
|
log.warn(`[focus-executor] "${ctx.focusName}" review no-progress bound EXHAUSTED (${nextHandoffCount} >= cap ${handoffCap}, ` +
|
|
188
200
|
`trigger=${trigger}) -- review_requested_at cleared and review_handoff_exhausted escalation filed; no re-assertion.`);
|
|
189
201
|
}
|
|
@@ -209,25 +221,39 @@ export async function recordHandoffAndMaybeTerminate(deps, ctx, currentHandoffCo
|
|
|
209
221
|
* branch) and files THIS escalation instead. One open row per focus.
|
|
210
222
|
*/
|
|
211
223
|
export async function fileHandoffExhaustedEscalation(deps, ctx, args) {
|
|
224
|
+
// ENUMERATE what the breaker measured. The old text asserted "there was no
|
|
225
|
+
// work left to route" and asked the operator to confirm the focus is done --
|
|
226
|
+
// untested, and false in the 2026-08-27 incident (a P1 finding was open the
|
|
227
|
+
// whole time). State the measured open blocking review-filed findings instead,
|
|
228
|
+
// or say there are none as a measured result.
|
|
229
|
+
const findings = args.openBlockingFindings ?? [];
|
|
230
|
+
const findingsBlock = findings.length > 0
|
|
231
|
+
? `\n\nMEASURED: ${findings.length} open blocking review-filed finding(s) remain on this focus ` +
|
|
232
|
+
`-- the focus is NOT clean:\n` +
|
|
233
|
+
findings
|
|
234
|
+
.map(f => ` - ${f.key}: ${f.title}${f.deliveryId ? ` (delivery ${f.deliveryId})` : ''}`)
|
|
235
|
+
.join('\n') +
|
|
236
|
+
`\n\nRoute or descope these findings; do not close the focus while they are open.`
|
|
237
|
+
: `\n\nMEASURED: 0 open blocking review-filed findings on this focus at exit. If the focus is ` +
|
|
238
|
+
`genuinely done, close/descope it; otherwise resolve why the review window kept re-opening ` +
|
|
239
|
+
`with no work to route.`;
|
|
212
240
|
await fileDedupedFocusEscalation(deps, ctx, {
|
|
213
241
|
escalationKind: 'review_handoff_exhausted',
|
|
214
242
|
label: 'handoff-exhausted',
|
|
215
243
|
reasonType: ESCALATION_REASONS.BLOCKED_BY_EXTERNAL,
|
|
216
|
-
description: `Review of "${ctx.focusName}" handed off to an incoming team ${args.handoffCount} time(s) ` +
|
|
217
|
-
`(cap ${args.cap}) without any
|
|
218
|
-
`
|
|
219
|
-
`
|
|
220
|
-
|
|
221
|
-
`re-asserting the hand-off, so the self-perpetuating loop cannot re-create its own ` +
|
|
222
|
-
`precondition.\n\n` +
|
|
223
|
-
`An operator should confirm the focus is genuinely done (nothing left to review) and ` +
|
|
224
|
-
`close/descope it, or resolve why the review window kept re-opening with no work to route.`,
|
|
244
|
+
description: `Review of "${ctx.focusName}" handed off to an incoming review team ${args.handoffCount} time(s) ` +
|
|
245
|
+
`(cap ${args.cap}) without any review session routing a delivery. The daemon has CLOSED the ` +
|
|
246
|
+
`review window (cleared review_requested_at) and stopped re-asserting the hand-off, so the ` +
|
|
247
|
+
`self-perpetuating loop cannot re-create its own precondition.` +
|
|
248
|
+
findingsBlock,
|
|
225
249
|
metadata: {
|
|
226
250
|
session_id: ctx.sessionId,
|
|
227
251
|
handoff_count: args.handoffCount,
|
|
228
252
|
cap: args.cap,
|
|
229
253
|
routed_via: 'handoff_exhausted',
|
|
230
254
|
trigger: args.trigger ?? 'pending_spawn_handoff',
|
|
255
|
+
open_blocking_review_filed_count: findings.length,
|
|
256
|
+
open_blocking_review_filed_findings: findings.map(f => f.key),
|
|
231
257
|
},
|
|
232
258
|
onFiled: () => {
|
|
233
259
|
log.warn(`[focus-executor] review_handoff_exhausted escalation filed for "${ctx.focusName}" ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-escalations.js","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAIlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"review-exit-escalations.js","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,44 +9,8 @@
|
|
|
9
9
|
* from completion/event.ts on a review pass completion. Extracted from
|
|
10
10
|
* completion/team-completion.ts; bodies verbatim.
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
import { getActiveFocuses } from '../queries/focus-discovery.js';
|
|
15
|
-
import { hasPendingSpawnDirective } from '../directive/directive-queue.js';
|
|
16
|
-
import { emitLoopTrigger } from '../loops/index.js';
|
|
17
|
-
import { getFocusDeliveries, getFocusIssues, clearReviewRequestedAt, setReviewedThroughSha, setReviewCycleCount, setReviewHandoffCount, getFocusReviewReportForSession, getFocusReviewFiledIssueIds } from '../queries/focuses.js';
|
|
18
|
-
import { resolveReviewCycleCap, resolveReviewHandoffCap } from '../verify/stall-detector-config.js';
|
|
19
|
-
import { getDeliveryIssues } from '../queries/issues.js';
|
|
20
|
-
import { createEscalation, hasOpenFocusEscalation } from '../queries/escalations.js';
|
|
21
|
-
import { findOpenOperatorHoldForDelivery } from '../queries/holds.js';
|
|
22
|
-
import { listOpenShortfallProposalIds } from '../queries/reality-tree.js';
|
|
23
|
-
/**
|
|
24
|
-
* Dependencies for runReviewExitHandler. Defaults to real implementations;
|
|
25
|
-
* overridable in tests via the optional `deps` argument.
|
|
26
|
-
*/
|
|
27
|
-
export interface ReviewExitDeps {
|
|
28
|
-
getActiveFocuses: typeof getActiveFocuses;
|
|
29
|
-
getFocusDeliveries: typeof getFocusDeliveries;
|
|
30
|
-
getFocusIssues: typeof getFocusIssues;
|
|
31
|
-
getDeliveryIssues: typeof getDeliveryIssues;
|
|
32
|
-
fetchEffectiveWorkflow: typeof fetchEffectiveWorkflow;
|
|
33
|
-
updateDeliveryStatus: typeof updateDeliveryStatus;
|
|
34
|
-
markDeliveryAutoApproved: typeof markDeliveryAutoApproved;
|
|
35
|
-
clearReviewRequestedAt: typeof clearReviewRequestedAt;
|
|
36
|
-
setReviewedThroughSha: typeof setReviewedThroughSha;
|
|
37
|
-
setReviewCycleCount?: typeof setReviewCycleCount;
|
|
38
|
-
resolveReviewCycleCap?: typeof resolveReviewCycleCap;
|
|
39
|
-
setReviewHandoffCount?: typeof setReviewHandoffCount;
|
|
40
|
-
resolveReviewHandoffCap?: typeof resolveReviewHandoffCap;
|
|
41
|
-
hasOpenFocusEscalation?: typeof hasOpenFocusEscalation;
|
|
42
|
-
listOpenShortfallProposalIds?: typeof listOpenShortfallProposalIds;
|
|
43
|
-
findOpenOperatorHoldForDelivery?: typeof findOpenOperatorHoldForDelivery;
|
|
44
|
-
hasPendingSpawnDirective: typeof hasPendingSpawnDirective;
|
|
45
|
-
emitLoopTrigger: typeof emitLoopTrigger;
|
|
46
|
-
getFocusReviewReportForSession: typeof getFocusReviewReportForSession;
|
|
47
|
-
getFocusReviewFiledIssueIds?: typeof getFocusReviewFiledIssueIds;
|
|
48
|
-
createEscalation: typeof createEscalation;
|
|
49
|
-
}
|
|
12
|
+
export type { ReviewExitDeps } from './review-exit-deps.js';
|
|
13
|
+
import type { ReviewExitDeps } from './review-exit-deps.js';
|
|
50
14
|
export interface ReviewExitParams {
|
|
51
15
|
focusId: string;
|
|
52
16
|
focusName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoCH,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD,OAAO,EACL,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAEnC,gGAAgG;AAChG,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE,cAAsC,GAC3C,OAAO,CAAC,IAAI,CAAC,CA6mBf"}
|