@telora/daemon 0.20.53 → 0.20.57
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/cli/session-state.d.ts +9 -0
- package/dist/cli/session-state.d.ts.map +1 -1
- package/dist/cli/session-state.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +85 -0
- package/dist/completion/review-exit-escalations.d.ts.map +1 -0
- package/dist/completion/review-exit-escalations.js +203 -0
- package/dist/completion/review-exit-escalations.js.map +1 -0
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +43 -135
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery-advance-block.js +8 -1
- package/dist/delivery-advance-block.js.map +1 -1
- package/dist/external-hold.d.ts +104 -0
- package/dist/external-hold.d.ts.map +1 -0
- package/dist/external-hold.js +149 -0
- package/dist/external-hold.js.map +1 -0
- package/dist/heartbeat.d.ts +19 -0
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +29 -70
- package/dist/heartbeat.js.map +1 -1
- package/dist/listener-auto-advance.d.ts.map +1 -1
- package/dist/listener-auto-advance.js +12 -0
- package/dist/listener-auto-advance.js.map +1 -1
- package/dist/listener.d.ts.map +1 -1
- package/dist/listener.js +56 -11
- package/dist/listener.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +25 -23
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/queries/deliveries.d.ts +62 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +1 -0
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/schemas.d.ts +2 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +5 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/resolver-dispatch.d.ts +108 -0
- package/dist/resolver-dispatch.d.ts.map +1 -0
- package/dist/resolver-dispatch.js +83 -0
- package/dist/resolver-dispatch.js.map +1 -0
- package/dist/resolver-reach.d.ts +192 -0
- package/dist/resolver-reach.d.ts.map +1 -0
- package/dist/resolver-reach.js +168 -0
- package/dist/resolver-reach.js.map +1 -0
- package/dist/resolvers/git-diff-against-base.d.ts.map +1 -1
- package/dist/resolvers/git-diff-against-base.js +8 -2
- package/dist/resolvers/git-diff-against-base.js.map +1 -1
- package/dist/resolvers/index.d.ts +1 -1
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/shared/git-diff.d.ts +47 -0
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +103 -15
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/spawn/review-role-fallback.d.ts +37 -3
- package/dist/spawn/review-role-fallback.d.ts.map +1 -1
- package/dist/spawn/review-role-fallback.js +38 -3
- package/dist/spawn/review-role-fallback.js.map +1 -1
- package/dist/verification-engine.d.ts +10 -0
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +142 -96
- package/dist/verification-engine.js.map +1 -1
- package/dist/verification-feedback.d.ts +44 -1
- package/dist/verification-feedback.d.ts.map +1 -1
- package/dist/verification-feedback.js +130 -1
- package/dist/verification-feedback.js.map +1 -1
- package/dist/verify-reconciliation.d.ts +25 -1
- package/dist/verify-reconciliation.d.ts.map +1 -1
- package/dist/verify-reconciliation.js +64 -2
- package/dist/verify-reconciliation.js.map +1 -1
- package/dist/verify-restatement.d.ts +22 -4
- package/dist/verify-restatement.d.ts.map +1 -1
- package/dist/verify-restatement.js +18 -1
- package/dist/verify-restatement.js.map +1 -1
- package/package.json +1 -1
package/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commitSha": "
|
|
3
|
-
"builtAt": "2026-07-
|
|
2
|
+
"commitSha": "96805df9b",
|
|
3
|
+
"builtAt": "2026-07-26T17:35:25.517Z",
|
|
4
4
|
"expectedMigrations": [
|
|
5
5
|
"20250829113330_create_org_nodes_table.sql",
|
|
6
6
|
"20250829113402_fix_function_security_search_path.sql",
|
|
@@ -732,6 +732,9 @@
|
|
|
732
732
|
"20260715220718_drift_proposal_ratification_rationale.sql",
|
|
733
733
|
"20260715225403_drift_proposal_dismissal_provenance.sql",
|
|
734
734
|
"20260715231941_agent_escalations_kind_shortfall_undisposed.sql",
|
|
735
|
-
"20260723215016_add_audit_runs_status.sql"
|
|
735
|
+
"20260723215016_add_audit_runs_status.sql",
|
|
736
|
+
"20260726112530_get_product_issue_counts_drop_iteration_exclusion.sql",
|
|
737
|
+
"20260726125024_agent_escalations_kind_verify_evidence_unavailable.sql",
|
|
738
|
+
"20260726164235_add_operator_stopped_at_to_product_focuses.sql"
|
|
736
739
|
]
|
|
737
740
|
}
|
|
@@ -60,6 +60,15 @@ interface SessionStateResponse {
|
|
|
60
60
|
assignedAgentRoleId: string | null;
|
|
61
61
|
assignedAgentRoleName: string | null;
|
|
62
62
|
pipelineConfig: Record<string, unknown> | null;
|
|
63
|
+
/**
|
|
64
|
+
* Operator-stop visibility (product_focuses.operator_stopped_at). When an
|
|
65
|
+
* operator halts the focus by clearing the role via the update path,
|
|
66
|
+
* operatorStoppedAt is the stamp and held is true -- so "did my stop take
|
|
67
|
+
* effect" is answerable from session-state, not only the daemon log. Absent
|
|
68
|
+
* on backends predating the column.
|
|
69
|
+
*/
|
|
70
|
+
operatorStoppedAt?: string | null;
|
|
71
|
+
held?: boolean;
|
|
63
72
|
};
|
|
64
73
|
deliveryCounts?: Record<string, number>;
|
|
65
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAUH,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,UAAU,iBAAiB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3C,CAAC;CACH;AAED,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,GAAG;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;QACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"session-state.d.ts","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAsB,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAE3B,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"session-state.js","sourceRoot":"","sources":["../../src/cli/session-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escalation tail of the review-exit gate.
|
|
3
|
+
*
|
|
4
|
+
* Every notice in this module fires AFTER routing has already been decided --
|
|
5
|
+
* none of them gate a transition. The delivery has moved toward intent (or been
|
|
6
|
+
* held) by the time any of these file; what they carry is the residue a human
|
|
7
|
+
* has to reconcile: a focus that keeps cycling reviews without converging, a
|
|
8
|
+
* review whose coverage keeps falling behind the branch, a gaps_found verdict
|
|
9
|
+
* with nothing actionable filed, an agent that skipped review_complete.
|
|
10
|
+
*
|
|
11
|
+
* Extracted from review-exit-phase.ts to keep that file under the daemon
|
|
12
|
+
* file-size limit -- sibling of review-exit-shortfall.ts, same seam. Bodies are
|
|
13
|
+
* verbatim; the one piece of new code is `fileDedupedFocusEscalation`, which
|
|
14
|
+
* three of the four filers were hand-rolling identically.
|
|
15
|
+
*
|
|
16
|
+
* @module completion/review-exit-escalations
|
|
17
|
+
*/
|
|
18
|
+
import type { createEscalation, hasOpenFocusEscalation } from '../queries/issues.js';
|
|
19
|
+
import type { setReviewCycleCount } from '../queries/focuses.js';
|
|
20
|
+
import type { resolveReviewCycleCap } from '../stall-detector-config.js';
|
|
21
|
+
/** The slice of ReviewExitDeps this module needs (structural, so no import cycle). */
|
|
22
|
+
export interface ReviewExitEscalationDeps {
|
|
23
|
+
createEscalation: typeof createEscalation;
|
|
24
|
+
hasOpenFocusEscalation?: typeof hasOpenFocusEscalation;
|
|
25
|
+
setReviewCycleCount?: typeof setReviewCycleCount;
|
|
26
|
+
resolveReviewCycleCap?: typeof resolveReviewCycleCap;
|
|
27
|
+
}
|
|
28
|
+
/** Focus/session anchor shared by every review-exit escalation. */
|
|
29
|
+
export interface ReviewExitEscalationContext {
|
|
30
|
+
organizationId: string;
|
|
31
|
+
focusId: string;
|
|
32
|
+
focusName: string;
|
|
33
|
+
sessionId: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Focus-level review-cycle churn meter, plus the one escalation it arms.
|
|
37
|
+
*
|
|
38
|
+
* Increments on EVERY completed review cycle (including auto-approve /
|
|
39
|
+
* no-report cycles the focus_reviews-row meter misses) so the take-turns-failing
|
|
40
|
+
* tail -- deliveries taking turns failing so no single delivery hits its
|
|
41
|
+
* per-delivery iteration cap while the focus cycles reviews forever -- becomes
|
|
42
|
+
* visible. When the count CROSSES the cap, file one needs_operator escalation
|
|
43
|
+
* per focus. Normal verify->review->requeue cycling below the cap is NOT a stall
|
|
44
|
+
* and files nothing.
|
|
45
|
+
*
|
|
46
|
+
* The crossing condition fires exactly once: monotonic and single-writer here,
|
|
47
|
+
* so this is a deterministic one-per-focus escalation without a DB probe (hence
|
|
48
|
+
* no dedup call). Best-effort: a meter/escalation failure never aborts routing.
|
|
49
|
+
* A deps object that omits either half skips the meter entirely.
|
|
50
|
+
*/
|
|
51
|
+
export declare function recordReviewCycleAndMaybeEscalate(deps: ReviewExitEscalationDeps, ctx: ReviewExitEscalationContext, priorCycleCount: number): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Drift persisted after the full-pass respawn -- an operator must look.
|
|
54
|
+
*
|
|
55
|
+
* Raised only on the SECOND consecutive below-coverage clean exit: the focus
|
|
56
|
+
* branch advanced DURING each review pass, so a clean review never covered the
|
|
57
|
+
* exact state it would have approved.
|
|
58
|
+
*/
|
|
59
|
+
export declare function fileCoverageIncompleteEscalation(deps: ReviewExitEscalationDeps, ctx: ReviewExitEscalationContext, args: {
|
|
60
|
+
coveredSha: string | null;
|
|
61
|
+
currentBranchTip: string | null;
|
|
62
|
+
streak: number;
|
|
63
|
+
}): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* The routing inconsistency the review-exit gate exists to catch: the review
|
|
66
|
+
* stamped a gaps_found VERDICT but no verify delivery carried blocking open
|
|
67
|
+
* work, so the coding team has nothing concrete to close.
|
|
68
|
+
*
|
|
69
|
+
* The verdict has already routed the delivery to verify_failed (toward intent,
|
|
70
|
+
* never toward done) by the time this files. Mutually exclusive with the
|
|
71
|
+
* missing-report notice by construction: gaps_found implies reportExists=true,
|
|
72
|
+
* and that notice requires !reportExists.
|
|
73
|
+
*/
|
|
74
|
+
export declare function fileGapsWithoutIssueEscalation(deps: ReviewExitEscalationDeps, ctx: ReviewExitEscalationContext): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Surface that the agent skipped review_complete even though the loop healed.
|
|
77
|
+
*
|
|
78
|
+
* Fires only when routing happened via BLOCKING issue evidence: a review that
|
|
79
|
+
* filed only deferrable low-severity notes converged cleanly (auto-approve), so
|
|
80
|
+
* it neither re-coded nor "skipped" a needed outcome -- raising the notice there
|
|
81
|
+
* would be operator noise. Deliberately NOT deduped: it is a per-exit hygiene
|
|
82
|
+
* notice about one session's behavior, not a standing focus condition.
|
|
83
|
+
*/
|
|
84
|
+
export declare function fileMissingReportNotice(deps: ReviewExitEscalationDeps, ctx: ReviewExitEscalationContext): Promise<void>;
|
|
85
|
+
//# sourceMappingURL=review-exit-escalations.d.ts.map
|
|
@@ -0,0 +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,sBAAsB,CAAC;AACrF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAKzE,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;;;;;;;;;;;;;;;GAeG;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;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escalation tail of the review-exit gate.
|
|
3
|
+
*
|
|
4
|
+
* Every notice in this module fires AFTER routing has already been decided --
|
|
5
|
+
* none of them gate a transition. The delivery has moved toward intent (or been
|
|
6
|
+
* held) by the time any of these file; what they carry is the residue a human
|
|
7
|
+
* has to reconcile: a focus that keeps cycling reviews without converging, a
|
|
8
|
+
* review whose coverage keeps falling behind the branch, a gaps_found verdict
|
|
9
|
+
* with nothing actionable filed, an agent that skipped review_complete.
|
|
10
|
+
*
|
|
11
|
+
* Extracted from review-exit-phase.ts to keep that file under the daemon
|
|
12
|
+
* file-size limit -- sibling of review-exit-shortfall.ts, same seam. Bodies are
|
|
13
|
+
* verbatim; the one piece of new code is `fileDedupedFocusEscalation`, which
|
|
14
|
+
* three of the four filers were hand-rolling identically.
|
|
15
|
+
*
|
|
16
|
+
* @module completion/review-exit-escalations
|
|
17
|
+
*/
|
|
18
|
+
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
|
|
19
|
+
import { createLogger } from '../log.js';
|
|
20
|
+
const log = createLogger({ module: 'focus-executor' });
|
|
21
|
+
/**
|
|
22
|
+
* File a focus-anchored needs_operator escalation, at most one open per
|
|
23
|
+
* (focus, kind).
|
|
24
|
+
*
|
|
25
|
+
* Best-effort throughout: a dedup-probe failure files anyway (a duplicate
|
|
26
|
+
* notice is cheaper than a swallowed one), and a create failure is logged, not
|
|
27
|
+
* thrown -- none of these notices may abort an exit handler that has already
|
|
28
|
+
* written delivery state.
|
|
29
|
+
*
|
|
30
|
+
* `label` names the site in the warn lines so the pre-extraction log text
|
|
31
|
+
* survives verbatim.
|
|
32
|
+
*/
|
|
33
|
+
async function fileDedupedFocusEscalation(deps, ctx, args) {
|
|
34
|
+
const { focusId, focusName, organizationId, sessionId } = ctx;
|
|
35
|
+
let alreadyOpen = false;
|
|
36
|
+
if (deps.hasOpenFocusEscalation) {
|
|
37
|
+
try {
|
|
38
|
+
alreadyOpen = await deps.hasOpenFocusEscalation(focusId, args.escalationKind);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
log.warn(`hasOpenFocusEscalation (${args.label}) failed for "${focusName}": ${err.message}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (alreadyOpen)
|
|
45
|
+
return;
|
|
46
|
+
try {
|
|
47
|
+
await deps.createEscalation({
|
|
48
|
+
organizationId,
|
|
49
|
+
sessionId,
|
|
50
|
+
issueId: null,
|
|
51
|
+
reasonType: args.reasonType ?? ESCALATION_REASONS.DECISION_NEEDED,
|
|
52
|
+
disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
|
|
53
|
+
anchor: { focusId, sessionId },
|
|
54
|
+
description: args.description,
|
|
55
|
+
escalationKind: args.escalationKind,
|
|
56
|
+
metadata: args.metadata,
|
|
57
|
+
});
|
|
58
|
+
args.onFiled?.();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
log.warn(`createEscalation (${args.label}) failed for "${focusName}": ${err.message}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Focus-level review-cycle churn meter, plus the one escalation it arms.
|
|
66
|
+
*
|
|
67
|
+
* Increments on EVERY completed review cycle (including auto-approve /
|
|
68
|
+
* no-report cycles the focus_reviews-row meter misses) so the take-turns-failing
|
|
69
|
+
* tail -- deliveries taking turns failing so no single delivery hits its
|
|
70
|
+
* per-delivery iteration cap while the focus cycles reviews forever -- becomes
|
|
71
|
+
* visible. When the count CROSSES the cap, file one needs_operator escalation
|
|
72
|
+
* per focus. Normal verify->review->requeue cycling below the cap is NOT a stall
|
|
73
|
+
* and files nothing.
|
|
74
|
+
*
|
|
75
|
+
* The crossing condition fires exactly once: monotonic and single-writer here,
|
|
76
|
+
* so this is a deterministic one-per-focus escalation without a DB probe (hence
|
|
77
|
+
* no dedup call). Best-effort: a meter/escalation failure never aborts routing.
|
|
78
|
+
* A deps object that omits either half skips the meter entirely.
|
|
79
|
+
*/
|
|
80
|
+
export async function recordReviewCycleAndMaybeEscalate(deps, ctx, priorCycleCount) {
|
|
81
|
+
if (!deps.setReviewCycleCount || !deps.resolveReviewCycleCap)
|
|
82
|
+
return;
|
|
83
|
+
const { focusId, focusName, organizationId, sessionId } = ctx;
|
|
84
|
+
const newCycleCount = priorCycleCount + 1;
|
|
85
|
+
try {
|
|
86
|
+
await deps.setReviewCycleCount(focusId, newCycleCount);
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
log.warn(`[focus-executor] setReviewCycleCount failed for "${focusName}": ${err.message}`);
|
|
90
|
+
}
|
|
91
|
+
const reviewCycleCap = deps.resolveReviewCycleCap();
|
|
92
|
+
if (!(priorCycleCount < reviewCycleCap && newCycleCount >= reviewCycleCap))
|
|
93
|
+
return;
|
|
94
|
+
try {
|
|
95
|
+
await deps.createEscalation({
|
|
96
|
+
organizationId,
|
|
97
|
+
sessionId,
|
|
98
|
+
issueId: null,
|
|
99
|
+
reasonType: ESCALATION_REASONS.DECISION_NEEDED,
|
|
100
|
+
disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
|
|
101
|
+
anchor: { focusId, sessionId },
|
|
102
|
+
description: `Focus "${focusName}" has completed ${newCycleCount} review cycle(s) ` +
|
|
103
|
+
`(cap: ${reviewCycleCap}) without converging. This counts auto-approve ` +
|
|
104
|
+
`and no-report cycles the focus_reviews meter misses -- the take-turns-` +
|
|
105
|
+
`failing tail. An operator must decide: descope remaining gaps, raise ` +
|
|
106
|
+
`TELORA_REVIEW_CYCLE_CAP, or close the focus.`,
|
|
107
|
+
escalationKind: 'review_cycle_cap_exceeded',
|
|
108
|
+
metadata: { review_cycle_count: newCycleCount, cap: reviewCycleCap },
|
|
109
|
+
});
|
|
110
|
+
log.warn(`[focus-executor] review_cycle_cap_exceeded escalation filed for ` +
|
|
111
|
+
`"${focusName}" (cycles=${newCycleCount}, cap=${reviewCycleCap}).`);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
log.warn(`[focus-executor] createEscalation (review_cycle_cap) failed for "${focusName}": ${err.message}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Drift persisted after the full-pass respawn -- an operator must look.
|
|
119
|
+
*
|
|
120
|
+
* Raised only on the SECOND consecutive below-coverage clean exit: the focus
|
|
121
|
+
* branch advanced DURING each review pass, so a clean review never covered the
|
|
122
|
+
* exact state it would have approved.
|
|
123
|
+
*/
|
|
124
|
+
export async function fileCoverageIncompleteEscalation(deps, ctx, args) {
|
|
125
|
+
await fileDedupedFocusEscalation(deps, ctx, {
|
|
126
|
+
escalationKind: 'review_coverage_incomplete',
|
|
127
|
+
label: 'coverage',
|
|
128
|
+
description: `Focus "${ctx.focusName}" review coverage keeps falling behind the branch tip: ` +
|
|
129
|
+
`the focus branch advanced DURING each of the last ${args.streak} review passes, ` +
|
|
130
|
+
`so a clean review never covered the exact state being approved. A full-pass ` +
|
|
131
|
+
`re-review was already armed once and drift persisted. An operator must decide: ` +
|
|
132
|
+
`pause commits during review, or close/descope the focus.`,
|
|
133
|
+
metadata: {
|
|
134
|
+
covered_sha: args.coveredSha,
|
|
135
|
+
current_tip: args.currentBranchTip,
|
|
136
|
+
drift_streak: args.streak,
|
|
137
|
+
},
|
|
138
|
+
onFiled: () => {
|
|
139
|
+
log.warn(`[focus-executor] review_coverage_incomplete escalation filed for "${ctx.focusName}" (drift streak ${args.streak}).`);
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The routing inconsistency the review-exit gate exists to catch: the review
|
|
145
|
+
* stamped a gaps_found VERDICT but no verify delivery carried blocking open
|
|
146
|
+
* work, so the coding team has nothing concrete to close.
|
|
147
|
+
*
|
|
148
|
+
* The verdict has already routed the delivery to verify_failed (toward intent,
|
|
149
|
+
* never toward done) by the time this files. Mutually exclusive with the
|
|
150
|
+
* missing-report notice by construction: gaps_found implies reportExists=true,
|
|
151
|
+
* and that notice requires !reportExists.
|
|
152
|
+
*/
|
|
153
|
+
export async function fileGapsWithoutIssueEscalation(deps, ctx) {
|
|
154
|
+
await fileDedupedFocusEscalation(deps, ctx, {
|
|
155
|
+
escalationKind: 'review_gaps_without_issue',
|
|
156
|
+
label: 'gaps-without-issue',
|
|
157
|
+
description: `Review of "${ctx.focusName}" stamped outcome=gaps_found but filed no ` +
|
|
158
|
+
`actionable Bug/Task issue for the coding team. The verify delivery ` +
|
|
159
|
+
`was routed to verify_failed (never converged to done), but the coding ` +
|
|
160
|
+
`team has no concrete gap to close. An operator must reconcile: the ` +
|
|
161
|
+
`review directive requires every gap be filed as an open issue on the ` +
|
|
162
|
+
`delivery -- either the gap was real (file it) or the verdict should ` +
|
|
163
|
+
`have been approved.`,
|
|
164
|
+
metadata: { session_id: ctx.sessionId, outcome: 'gaps_found', routed_via: 'gaps_without_issue' },
|
|
165
|
+
onFiled: () => {
|
|
166
|
+
log.warn(`[focus-executor] review_gaps_without_issue escalation filed for "${ctx.focusName}" ` +
|
|
167
|
+
`(gaps_found verdict, no blocking issue).`);
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Surface that the agent skipped review_complete even though the loop healed.
|
|
173
|
+
*
|
|
174
|
+
* Fires only when routing happened via BLOCKING issue evidence: a review that
|
|
175
|
+
* filed only deferrable low-severity notes converged cleanly (auto-approve), so
|
|
176
|
+
* it neither re-coded nor "skipped" a needed outcome -- raising the notice there
|
|
177
|
+
* would be operator noise. Deliberately NOT deduped: it is a per-exit hygiene
|
|
178
|
+
* notice about one session's behavior, not a standing focus condition.
|
|
179
|
+
*/
|
|
180
|
+
export async function fileMissingReportNotice(deps, ctx) {
|
|
181
|
+
const { focusId, focusName, organizationId, sessionId } = ctx;
|
|
182
|
+
try {
|
|
183
|
+
await deps.createEscalation({
|
|
184
|
+
organizationId,
|
|
185
|
+
sessionId,
|
|
186
|
+
issueId: null,
|
|
187
|
+
reasonType: ESCALATION_REASONS.BLOCKED_BY_EXTERNAL,
|
|
188
|
+
// Operator hygiene: tighten the review directive so an outcome is stamped.
|
|
189
|
+
disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
|
|
190
|
+
anchor: { focusId, sessionId },
|
|
191
|
+
description: 'Review session filed issues but did not call focus_review_complete. ' +
|
|
192
|
+
'Deliveries routed via issue evidence; review_requested_at cleared. ' +
|
|
193
|
+
'Tighten the review directive so the agent always stamps an outcome.',
|
|
194
|
+
escalationKind: 'review_missing_report',
|
|
195
|
+
// Evidence only -- focus provenance is on the columns via the anchor.
|
|
196
|
+
metadata: { session_id: sessionId, routed_via: 'issue_evidence' },
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
log.warn(`[focus-executor] createEscalation (issue-evidence notice) failed for "${focusName}": ${err.message}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=review-exit-escalations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-exit-escalations.js","sourceRoot":"","sources":["../../src/completion/review-exit-escalations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"review-exit-phase.d.ts","sourceRoot":"","sources":["../../src/completion/review-exit-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAGjH,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAuB1E;;;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;IAGrD,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;IACtE,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;CAC3C;AAuBD,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;CAClC;AAmBD,4DAA4D;AAC5D,wBAAgB,iCAAiC,IAAI,IAAI,CAGxD;AAED,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,CAsef"}
|