@telora/daemon 0.20.57 → 0.20.60
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 +2 -2
- package/dist/queries/holds.d.ts +177 -0
- package/dist/queries/holds.d.ts.map +1 -0
- package/dist/queries/holds.js +232 -0
- package/dist/queries/holds.js.map +1 -0
- package/dist/queries/issues.d.ts +3 -99
- package/dist/queries/issues.d.ts.map +1 -1
- package/dist/queries/issues.js +4 -137
- package/dist/queries/issues.js.map +1 -1
- package/dist/stall-detectors.d.ts +33 -4
- package/dist/stall-detectors.d.ts.map +1 -1
- package/dist/stall-detectors.js +64 -5
- package/dist/stall-detectors.js.map +1 -1
- package/package.json +2 -2
package/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"commitSha": "
|
|
3
|
-
"builtAt": "2026-07-
|
|
2
|
+
"commitSha": "a3e485707",
|
|
3
|
+
"builtAt": "2026-07-26T20:34:14.153Z",
|
|
4
4
|
"expectedMigrations": [
|
|
5
5
|
"20250829113330_create_org_nodes_table.sql",
|
|
6
6
|
"20250829113402_fix_function_security_search_path.sql",
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery hold-lookup queries.
|
|
3
|
+
*
|
|
4
|
+
* "Is something holding this delivery out of done, and what?" -- the escalation
|
|
5
|
+
* side of that question. Two disposition-keyed families live here:
|
|
6
|
+
*
|
|
7
|
+
* - OPERATOR holds (needs_operator / external_wait): a human or an external
|
|
8
|
+
* party must act before the declared work counts as real. Fails CLOSED at
|
|
9
|
+
* its call site.
|
|
10
|
+
* - DIRECTED holds (needs_intent / needs_clarification): an unanswered
|
|
11
|
+
* question the daemon reads back to the asking agent. Fails OPEN at its
|
|
12
|
+
* call site.
|
|
13
|
+
*
|
|
14
|
+
* Plus SELF_REPORT_STALL_HOLD_KINDS: the kinds that are machine-filed alarms
|
|
15
|
+
* ABOUT a delivery's own cycling, excluded from the operator predicate so an
|
|
16
|
+
* alarm cannot constitute the condition it reports.
|
|
17
|
+
*
|
|
18
|
+
* Extracted from queries/issues.ts to keep that file under the daemon
|
|
19
|
+
* file-size limit -- the self-referential-alarm fix pushed it to 844. Bodies
|
|
20
|
+
* verbatim; issues.ts re-exports this surface so existing importers are
|
|
21
|
+
* unaffected.
|
|
22
|
+
*
|
|
23
|
+
* @module queries/holds
|
|
24
|
+
*/
|
|
25
|
+
/** Escalation statuses that count as OPEN for every hold lookup here. */
|
|
26
|
+
export declare const OPEN_ESCALATION_STATUSES: ReadonlySet<string>;
|
|
27
|
+
/**
|
|
28
|
+
* The escalation dispositions that mean "a human operator or an external party
|
|
29
|
+
* must act before this delivery's declared work can be considered real":
|
|
30
|
+
* needs_operator (operator/infra/security action) and external_wait (blocked on
|
|
31
|
+
* a third party). Distinct from needs_intent / needs_clarification (a steering
|
|
32
|
+
* question, not a blocked-on-reality signal) and agent_resolvable (no human at
|
|
33
|
+
* all). Keyed on the DISPOSITION axis so ANY escalation kind carrying one of
|
|
34
|
+
* these holds its delivery -- the gate must not enumerate kinds.
|
|
35
|
+
*
|
|
36
|
+
* Declared as daemon-local string literals (not imported from @telora/daemon-core's
|
|
37
|
+
* ESCALATION_DISPOSITIONS) on purpose, mirroring MERGE_CONFLICT_ESCALATION_KIND
|
|
38
|
+
* below: a bare `@telora/*` VALUE import in a query module pulled into a mocked
|
|
39
|
+
* node:test fails to resolve under the module-mock loader (the daemon-local-copy
|
|
40
|
+
* rule). The canonical enum lives in packages/daemon-core/src/disposition.ts and
|
|
41
|
+
* the DB CHECK on agent_escalations.disposition is the real constraint; these
|
|
42
|
+
* strings must stay in sync with it.
|
|
43
|
+
*/
|
|
44
|
+
export declare const OPERATOR_HOLD_DISPOSITIONS: readonly string[];
|
|
45
|
+
/**
|
|
46
|
+
* escalation_kind discriminators that are SELF-REFERENTIAL stall alarms: a
|
|
47
|
+
* machine-filed escalation ABOUT a delivery's own cycling, which must NOT be
|
|
48
|
+
* allowed to satisfy the operator-hold predicate that holds that same delivery.
|
|
49
|
+
*
|
|
50
|
+
* The fixpoint this removes (observed 2026-07-26, delivery 50131436, escalations
|
|
51
|
+
* 96262dfa -> 43c4dade): the verify_failed cap detector files
|
|
52
|
+
* verify_gate_unclearable (disposition needs_operator, anchored to the delivery)
|
|
53
|
+
* when iteration_count exceeds the cap. findOpenOperatorHoldForDelivery matched
|
|
54
|
+
* on disposition ONLY, so that alarm satisfied the very hold predicate it was
|
|
55
|
+
* raised about; the delivery was held out of `done`; `done` is the only
|
|
56
|
+
* non-cancelled terminal that makes exceedsVerifyFailedCap stop firing; and
|
|
57
|
+
* iteration_count is monotonic -- so the alarm blocked the only exit that would
|
|
58
|
+
* silence it, and resolving one let the detector file the next on the following
|
|
59
|
+
* tick.
|
|
60
|
+
*
|
|
61
|
+
* ENUMERATION -- every machine-filed, delivery-anchored needs_operator kind, and
|
|
62
|
+
* whether it is a genuine hold or a self-referential stall alarm. The exclusion
|
|
63
|
+
* criterion is narrow and precise: exclude a kind IFF (a) it re-arms while the
|
|
64
|
+
* delivery is non-terminal AND (b) its ONLY silencing is the delivery reaching
|
|
65
|
+
* the terminal state the hold blocks. A kind that describes external reality an
|
|
66
|
+
* operator must change, or that is filed once and silenced by operator
|
|
67
|
+
* resolution, is a GENUINE hold and stays.
|
|
68
|
+
*
|
|
69
|
+
* verify_gate_unclearable (stall-detectors.ts) -- SELF-REFERENTIAL. Trigger
|
|
70
|
+
* (iteration_count) is monotonic and re-arms every tick while non-terminal;
|
|
71
|
+
* silenced only by done/cancelled, which the hold blocks. EXCLUDE.
|
|
72
|
+
* verify_evidence_unavailable (verification-feedback.ts) -- self-REPORT of an
|
|
73
|
+
* instrument fault, but filed ONCE per delivery (idempotent, never re-armed)
|
|
74
|
+
* and silenced by operator resolution, not by `done`. It also already holds
|
|
75
|
+
* the delivery via its OWN gate_state.blocking guard, so it does not lean on
|
|
76
|
+
* this predicate. Not a fixpoint -> KEEP as a hold.
|
|
77
|
+
* schema_drift_blocked (listener-auto-advance.ts) -- operator must apply a
|
|
78
|
+
* migration (external reality). KEEP.
|
|
79
|
+
* advance_blocked (delivery-advance-block.ts) -- dirty worktree / lockfile
|
|
80
|
+
* state an operator or agent must resolve. KEEP.
|
|
81
|
+
* cd_push_failed (ci-escalation.ts) / ci_run_red (ci-sensor-loop.ts) --
|
|
82
|
+
* external CI/CD state. KEEP.
|
|
83
|
+
* propagation_stale (staleness-sensor.ts) -- external propagation state. KEEP.
|
|
84
|
+
*
|
|
85
|
+
* (Focus-anchored kinds -- merge_conflict, merge_refused_dirty,
|
|
86
|
+
* review_window_stalled, stuck_focus_branch -- are never matched by
|
|
87
|
+
* findOpenOperatorHoldForDelivery, which keys on deliveryId, so they need no
|
|
88
|
+
* exclusion here.)
|
|
89
|
+
*
|
|
90
|
+
* Daemon-local literal for the same reason as OPERATOR_HOLD_DISPOSITIONS above:
|
|
91
|
+
* a bare `@telora/*` value import mis-resolves under the node:test module-mock
|
|
92
|
+
* loader, and importing stall-detectors.VERIFY_GATE_UNCLEARABLE_KIND would also
|
|
93
|
+
* form an import cycle (stall-detectors imports from this module). Keep in sync
|
|
94
|
+
* with stall-detectors.VERIFY_GATE_UNCLEARABLE_KIND and the DB CHECK.
|
|
95
|
+
*/
|
|
96
|
+
export declare const SELF_REPORT_STALL_HOLD_KINDS: readonly string[];
|
|
97
|
+
/** The open operator-hold escalation a delivery is blocked on (for gate_state). */
|
|
98
|
+
export interface OperatorHoldEscalation {
|
|
99
|
+
id: string;
|
|
100
|
+
escalationKind: string | null;
|
|
101
|
+
disposition: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Returns the OPEN (pending|in_review) operator-hold escalation anchored to the
|
|
105
|
+
* given delivery, or null when none is open.
|
|
106
|
+
*
|
|
107
|
+
* DISPOSITION-keyed sibling of hasOpenEscalationForDelivery (which is KIND-keyed):
|
|
108
|
+
* it matches ANY escalation_kind whose disposition is in OPERATOR_HOLD_DISPOSITIONS
|
|
109
|
+
* (needs_operator / external_wait). This is the vocabulary the verify->done gate
|
|
110
|
+
* previously lacked -- an operator blocked ON a delivery (e.g. "the host restore
|
|
111
|
+
* was NOT executed") could not hold that delivery out of done, so a clean review
|
|
112
|
+
* auto-approved it. Returning the matching row (id + kind + disposition), not a
|
|
113
|
+
* bare boolean, lets the gate write the block into the delivery's gate_state.
|
|
114
|
+
*
|
|
115
|
+
* Matches on the typed delivery_id + disposition COLUMNS in preference to the
|
|
116
|
+
* metadata bag, with a metadata fallback (metadata.deliveryId / metadata.disposition)
|
|
117
|
+
* for rows already open at deploy time. The status is re-checked client-side as
|
|
118
|
+
* defense-in-depth against a deploy-lagged edge fn returning resolved rows.
|
|
119
|
+
*
|
|
120
|
+
* escalation_list has NO server-side delivery_id filter, so the delivery match is
|
|
121
|
+
* applied client-side over the org's open rows. Pass `focusId` to narrow the page
|
|
122
|
+
* server-side (the same busy-org paging concern hasOpenWorktreeDirtyEscalation
|
|
123
|
+
* addresses); omit it and the lookup reads the newest 500 open org rows.
|
|
124
|
+
*
|
|
125
|
+
* FAIL-CLOSED is the CALLER's responsibility. This function reports what it finds
|
|
126
|
+
* and THROWS on a hard API error. The verify->done gate that consumes it exists
|
|
127
|
+
* precisely to fail closed, so it must treat a lookup error as "held" -- the
|
|
128
|
+
* opposite of the other escalation lookups (dedup/auto-close), which fail OPEN
|
|
129
|
+
* because a spurious park is worse than a missed dedup. Here a missed hold lets an
|
|
130
|
+
* operator-blocked delivery reach done, which is the failure this gate prevents.
|
|
131
|
+
*/
|
|
132
|
+
export declare function findOpenOperatorHoldForDelivery(deliveryId: string, focusId?: string): Promise<OperatorHoldEscalation | null>;
|
|
133
|
+
/**
|
|
134
|
+
* Boolean convenience over findOpenOperatorHoldForDelivery for call sites that
|
|
135
|
+
* only need to know whether the hold exists (not which escalation it is).
|
|
136
|
+
*/
|
|
137
|
+
export declare function hasOpenOperatorHoldForDelivery(deliveryId: string, focusId?: string): Promise<boolean>;
|
|
138
|
+
/**
|
|
139
|
+
* The escalation dispositions that mean "a human must STEER before this team's
|
|
140
|
+
* work can proceed": needs_intent (scope/direction/priority) and
|
|
141
|
+
* needs_clarification (ambiguity to resolve). These are exactly the two the
|
|
142
|
+
* escalation tool documents as answerable via the `answer` field -- a DIRECTED
|
|
143
|
+
* question the daemon reads back to the asking agent, distinct from the
|
|
144
|
+
* operator-hold dispositions (needs_operator / external_wait, a blocked-on-reality
|
|
145
|
+
* signal) and agent_resolvable (no human at all).
|
|
146
|
+
*
|
|
147
|
+
* Daemon-local literals for the same reason as OPERATOR_HOLD_DISPOSITIONS above:
|
|
148
|
+
* a bare `@telora/*` value import in a query module pulled into a mocked
|
|
149
|
+
* node:test fails to resolve under the module-mock loader. The canonical enum is
|
|
150
|
+
* packages/daemon-core/src/disposition.ts and the DB CHECK on
|
|
151
|
+
* agent_escalations.disposition is the real constraint; these strings must stay
|
|
152
|
+
* in sync with it.
|
|
153
|
+
*/
|
|
154
|
+
export declare const DIRECTED_HOLD_DISPOSITIONS: readonly string[];
|
|
155
|
+
/**
|
|
156
|
+
* Returns the OPEN (pending|in_review) DIRECTED-hold escalation anchored to the
|
|
157
|
+
* given delivery, or null when none is open. Disposition-keyed sibling of
|
|
158
|
+
* findOpenOperatorHoldForDelivery, keyed on DIRECTED_HOLD_DISPOSITIONS
|
|
159
|
+
* (needs_intent / needs_clarification) instead of the operator-hold set.
|
|
160
|
+
*
|
|
161
|
+
* This is the vocabulary the completion-event no-progress guard previously
|
|
162
|
+
* lacked: a team parked on its own unanswered directed question could not be
|
|
163
|
+
* told apart from a team that has stalled, so the scope-coverage guard counted
|
|
164
|
+
* the wait as no-progress, re-engaged the team (real model spend), and
|
|
165
|
+
* eventually filed a team_failure ON TOP of the question.
|
|
166
|
+
*
|
|
167
|
+
* FAIL DIRECTION IS THE OPPOSITE of findOpenOperatorHoldForDelivery. The
|
|
168
|
+
* operator-hold gate's CALLER fails CLOSED (a lookup error => held) because a
|
|
169
|
+
* missed hold lets an operator-blocked delivery reach done. HERE the consuming
|
|
170
|
+
* guard must fail OPEN: a lookup error must NOT suppress a genuine stall
|
|
171
|
+
* escalation, so the caller treats an error as "not blocked". This function
|
|
172
|
+
* still reports what it finds and THROWS on a hard API error; the fail-open
|
|
173
|
+
* decision lives at the call site (completion/event-phases.computeCompletionFacts),
|
|
174
|
+
* which catches and defaults to not-blocked.
|
|
175
|
+
*/
|
|
176
|
+
export declare function findOpenDirectedHoldForDelivery(deliveryId: string, focusId?: string): Promise<OperatorHoldEscalation | null>;
|
|
177
|
+
//# sourceMappingURL=holds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holds.d.ts","sourceRoot":"","sources":["../../src/queries/holds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAAqC,CAAC;AAE/F;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAGvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAEzD,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,+BAA+B,CACnD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CASxC;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAGvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,+BAA+B,CACnD,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAExC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delivery hold-lookup queries.
|
|
3
|
+
*
|
|
4
|
+
* "Is something holding this delivery out of done, and what?" -- the escalation
|
|
5
|
+
* side of that question. Two disposition-keyed families live here:
|
|
6
|
+
*
|
|
7
|
+
* - OPERATOR holds (needs_operator / external_wait): a human or an external
|
|
8
|
+
* party must act before the declared work counts as real. Fails CLOSED at
|
|
9
|
+
* its call site.
|
|
10
|
+
* - DIRECTED holds (needs_intent / needs_clarification): an unanswered
|
|
11
|
+
* question the daemon reads back to the asking agent. Fails OPEN at its
|
|
12
|
+
* call site.
|
|
13
|
+
*
|
|
14
|
+
* Plus SELF_REPORT_STALL_HOLD_KINDS: the kinds that are machine-filed alarms
|
|
15
|
+
* ABOUT a delivery's own cycling, excluded from the operator predicate so an
|
|
16
|
+
* alarm cannot constitute the condition it reports.
|
|
17
|
+
*
|
|
18
|
+
* Extracted from queries/issues.ts to keep that file under the daemon
|
|
19
|
+
* file-size limit -- the self-referential-alarm fix pushed it to 844. Bodies
|
|
20
|
+
* verbatim; issues.ts re-exports this surface so existing importers are
|
|
21
|
+
* unaffected.
|
|
22
|
+
*
|
|
23
|
+
* @module queries/holds
|
|
24
|
+
*/
|
|
25
|
+
import { callApi } from './shared.js';
|
|
26
|
+
/** Escalation statuses that count as OPEN for every hold lookup here. */
|
|
27
|
+
export const OPEN_ESCALATION_STATUSES = new Set(['pending', 'in_review']);
|
|
28
|
+
/**
|
|
29
|
+
* The escalation dispositions that mean "a human operator or an external party
|
|
30
|
+
* must act before this delivery's declared work can be considered real":
|
|
31
|
+
* needs_operator (operator/infra/security action) and external_wait (blocked on
|
|
32
|
+
* a third party). Distinct from needs_intent / needs_clarification (a steering
|
|
33
|
+
* question, not a blocked-on-reality signal) and agent_resolvable (no human at
|
|
34
|
+
* all). Keyed on the DISPOSITION axis so ANY escalation kind carrying one of
|
|
35
|
+
* these holds its delivery -- the gate must not enumerate kinds.
|
|
36
|
+
*
|
|
37
|
+
* Declared as daemon-local string literals (not imported from @telora/daemon-core's
|
|
38
|
+
* ESCALATION_DISPOSITIONS) on purpose, mirroring MERGE_CONFLICT_ESCALATION_KIND
|
|
39
|
+
* below: a bare `@telora/*` VALUE import in a query module pulled into a mocked
|
|
40
|
+
* node:test fails to resolve under the module-mock loader (the daemon-local-copy
|
|
41
|
+
* rule). The canonical enum lives in packages/daemon-core/src/disposition.ts and
|
|
42
|
+
* the DB CHECK on agent_escalations.disposition is the real constraint; these
|
|
43
|
+
* strings must stay in sync with it.
|
|
44
|
+
*/
|
|
45
|
+
export const OPERATOR_HOLD_DISPOSITIONS = [
|
|
46
|
+
'needs_operator',
|
|
47
|
+
'external_wait',
|
|
48
|
+
];
|
|
49
|
+
/**
|
|
50
|
+
* escalation_kind discriminators that are SELF-REFERENTIAL stall alarms: a
|
|
51
|
+
* machine-filed escalation ABOUT a delivery's own cycling, which must NOT be
|
|
52
|
+
* allowed to satisfy the operator-hold predicate that holds that same delivery.
|
|
53
|
+
*
|
|
54
|
+
* The fixpoint this removes (observed 2026-07-26, delivery 50131436, escalations
|
|
55
|
+
* 96262dfa -> 43c4dade): the verify_failed cap detector files
|
|
56
|
+
* verify_gate_unclearable (disposition needs_operator, anchored to the delivery)
|
|
57
|
+
* when iteration_count exceeds the cap. findOpenOperatorHoldForDelivery matched
|
|
58
|
+
* on disposition ONLY, so that alarm satisfied the very hold predicate it was
|
|
59
|
+
* raised about; the delivery was held out of `done`; `done` is the only
|
|
60
|
+
* non-cancelled terminal that makes exceedsVerifyFailedCap stop firing; and
|
|
61
|
+
* iteration_count is monotonic -- so the alarm blocked the only exit that would
|
|
62
|
+
* silence it, and resolving one let the detector file the next on the following
|
|
63
|
+
* tick.
|
|
64
|
+
*
|
|
65
|
+
* ENUMERATION -- every machine-filed, delivery-anchored needs_operator kind, and
|
|
66
|
+
* whether it is a genuine hold or a self-referential stall alarm. The exclusion
|
|
67
|
+
* criterion is narrow and precise: exclude a kind IFF (a) it re-arms while the
|
|
68
|
+
* delivery is non-terminal AND (b) its ONLY silencing is the delivery reaching
|
|
69
|
+
* the terminal state the hold blocks. A kind that describes external reality an
|
|
70
|
+
* operator must change, or that is filed once and silenced by operator
|
|
71
|
+
* resolution, is a GENUINE hold and stays.
|
|
72
|
+
*
|
|
73
|
+
* verify_gate_unclearable (stall-detectors.ts) -- SELF-REFERENTIAL. Trigger
|
|
74
|
+
* (iteration_count) is monotonic and re-arms every tick while non-terminal;
|
|
75
|
+
* silenced only by done/cancelled, which the hold blocks. EXCLUDE.
|
|
76
|
+
* verify_evidence_unavailable (verification-feedback.ts) -- self-REPORT of an
|
|
77
|
+
* instrument fault, but filed ONCE per delivery (idempotent, never re-armed)
|
|
78
|
+
* and silenced by operator resolution, not by `done`. It also already holds
|
|
79
|
+
* the delivery via its OWN gate_state.blocking guard, so it does not lean on
|
|
80
|
+
* this predicate. Not a fixpoint -> KEEP as a hold.
|
|
81
|
+
* schema_drift_blocked (listener-auto-advance.ts) -- operator must apply a
|
|
82
|
+
* migration (external reality). KEEP.
|
|
83
|
+
* advance_blocked (delivery-advance-block.ts) -- dirty worktree / lockfile
|
|
84
|
+
* state an operator or agent must resolve. KEEP.
|
|
85
|
+
* cd_push_failed (ci-escalation.ts) / ci_run_red (ci-sensor-loop.ts) --
|
|
86
|
+
* external CI/CD state. KEEP.
|
|
87
|
+
* propagation_stale (staleness-sensor.ts) -- external propagation state. KEEP.
|
|
88
|
+
*
|
|
89
|
+
* (Focus-anchored kinds -- merge_conflict, merge_refused_dirty,
|
|
90
|
+
* review_window_stalled, stuck_focus_branch -- are never matched by
|
|
91
|
+
* findOpenOperatorHoldForDelivery, which keys on deliveryId, so they need no
|
|
92
|
+
* exclusion here.)
|
|
93
|
+
*
|
|
94
|
+
* Daemon-local literal for the same reason as OPERATOR_HOLD_DISPOSITIONS above:
|
|
95
|
+
* a bare `@telora/*` value import mis-resolves under the node:test module-mock
|
|
96
|
+
* loader, and importing stall-detectors.VERIFY_GATE_UNCLEARABLE_KIND would also
|
|
97
|
+
* form an import cycle (stall-detectors imports from this module). Keep in sync
|
|
98
|
+
* with stall-detectors.VERIFY_GATE_UNCLEARABLE_KIND and the DB CHECK.
|
|
99
|
+
*/
|
|
100
|
+
export const SELF_REPORT_STALL_HOLD_KINDS = [
|
|
101
|
+
'verify_gate_unclearable',
|
|
102
|
+
];
|
|
103
|
+
/**
|
|
104
|
+
* Returns the OPEN (pending|in_review) operator-hold escalation anchored to the
|
|
105
|
+
* given delivery, or null when none is open.
|
|
106
|
+
*
|
|
107
|
+
* DISPOSITION-keyed sibling of hasOpenEscalationForDelivery (which is KIND-keyed):
|
|
108
|
+
* it matches ANY escalation_kind whose disposition is in OPERATOR_HOLD_DISPOSITIONS
|
|
109
|
+
* (needs_operator / external_wait). This is the vocabulary the verify->done gate
|
|
110
|
+
* previously lacked -- an operator blocked ON a delivery (e.g. "the host restore
|
|
111
|
+
* was NOT executed") could not hold that delivery out of done, so a clean review
|
|
112
|
+
* auto-approved it. Returning the matching row (id + kind + disposition), not a
|
|
113
|
+
* bare boolean, lets the gate write the block into the delivery's gate_state.
|
|
114
|
+
*
|
|
115
|
+
* Matches on the typed delivery_id + disposition COLUMNS in preference to the
|
|
116
|
+
* metadata bag, with a metadata fallback (metadata.deliveryId / metadata.disposition)
|
|
117
|
+
* for rows already open at deploy time. The status is re-checked client-side as
|
|
118
|
+
* defense-in-depth against a deploy-lagged edge fn returning resolved rows.
|
|
119
|
+
*
|
|
120
|
+
* escalation_list has NO server-side delivery_id filter, so the delivery match is
|
|
121
|
+
* applied client-side over the org's open rows. Pass `focusId` to narrow the page
|
|
122
|
+
* server-side (the same busy-org paging concern hasOpenWorktreeDirtyEscalation
|
|
123
|
+
* addresses); omit it and the lookup reads the newest 500 open org rows.
|
|
124
|
+
*
|
|
125
|
+
* FAIL-CLOSED is the CALLER's responsibility. This function reports what it finds
|
|
126
|
+
* and THROWS on a hard API error. The verify->done gate that consumes it exists
|
|
127
|
+
* precisely to fail closed, so it must treat a lookup error as "held" -- the
|
|
128
|
+
* opposite of the other escalation lookups (dedup/auto-close), which fail OPEN
|
|
129
|
+
* because a spurious park is worse than a missed dedup. Here a missed hold lets an
|
|
130
|
+
* operator-blocked delivery reach done, which is the failure this gate prevents.
|
|
131
|
+
*/
|
|
132
|
+
export async function findOpenOperatorHoldForDelivery(deliveryId, focusId) {
|
|
133
|
+
return findOpenHoldForDelivery(deliveryId, OPERATOR_HOLD_DISPOSITIONS, focusId,
|
|
134
|
+
// A machine-filed alarm ABOUT this delivery's own cycling must not satisfy
|
|
135
|
+
// the predicate that holds it -- see SELF_REPORT_STALL_HOLD_KINDS.
|
|
136
|
+
new Set(SELF_REPORT_STALL_HOLD_KINDS));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Boolean convenience over findOpenOperatorHoldForDelivery for call sites that
|
|
140
|
+
* only need to know whether the hold exists (not which escalation it is).
|
|
141
|
+
*/
|
|
142
|
+
export async function hasOpenOperatorHoldForDelivery(deliveryId, focusId) {
|
|
143
|
+
return (await findOpenOperatorHoldForDelivery(deliveryId, focusId)) !== null;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The escalation dispositions that mean "a human must STEER before this team's
|
|
147
|
+
* work can proceed": needs_intent (scope/direction/priority) and
|
|
148
|
+
* needs_clarification (ambiguity to resolve). These are exactly the two the
|
|
149
|
+
* escalation tool documents as answerable via the `answer` field -- a DIRECTED
|
|
150
|
+
* question the daemon reads back to the asking agent, distinct from the
|
|
151
|
+
* operator-hold dispositions (needs_operator / external_wait, a blocked-on-reality
|
|
152
|
+
* signal) and agent_resolvable (no human at all).
|
|
153
|
+
*
|
|
154
|
+
* Daemon-local literals for the same reason as OPERATOR_HOLD_DISPOSITIONS above:
|
|
155
|
+
* a bare `@telora/*` value import in a query module pulled into a mocked
|
|
156
|
+
* node:test fails to resolve under the module-mock loader. The canonical enum is
|
|
157
|
+
* packages/daemon-core/src/disposition.ts and the DB CHECK on
|
|
158
|
+
* agent_escalations.disposition is the real constraint; these strings must stay
|
|
159
|
+
* in sync with it.
|
|
160
|
+
*/
|
|
161
|
+
export const DIRECTED_HOLD_DISPOSITIONS = [
|
|
162
|
+
'needs_intent',
|
|
163
|
+
'needs_clarification',
|
|
164
|
+
];
|
|
165
|
+
/**
|
|
166
|
+
* Returns the OPEN (pending|in_review) DIRECTED-hold escalation anchored to the
|
|
167
|
+
* given delivery, or null when none is open. Disposition-keyed sibling of
|
|
168
|
+
* findOpenOperatorHoldForDelivery, keyed on DIRECTED_HOLD_DISPOSITIONS
|
|
169
|
+
* (needs_intent / needs_clarification) instead of the operator-hold set.
|
|
170
|
+
*
|
|
171
|
+
* This is the vocabulary the completion-event no-progress guard previously
|
|
172
|
+
* lacked: a team parked on its own unanswered directed question could not be
|
|
173
|
+
* told apart from a team that has stalled, so the scope-coverage guard counted
|
|
174
|
+
* the wait as no-progress, re-engaged the team (real model spend), and
|
|
175
|
+
* eventually filed a team_failure ON TOP of the question.
|
|
176
|
+
*
|
|
177
|
+
* FAIL DIRECTION IS THE OPPOSITE of findOpenOperatorHoldForDelivery. The
|
|
178
|
+
* operator-hold gate's CALLER fails CLOSED (a lookup error => held) because a
|
|
179
|
+
* missed hold lets an operator-blocked delivery reach done. HERE the consuming
|
|
180
|
+
* guard must fail OPEN: a lookup error must NOT suppress a genuine stall
|
|
181
|
+
* escalation, so the caller treats an error as "not blocked". This function
|
|
182
|
+
* still reports what it finds and THROWS on a hard API error; the fail-open
|
|
183
|
+
* decision lives at the call site (completion/event-phases.computeCompletionFacts),
|
|
184
|
+
* which catches and defaults to not-blocked.
|
|
185
|
+
*/
|
|
186
|
+
export async function findOpenDirectedHoldForDelivery(deliveryId, focusId) {
|
|
187
|
+
return findOpenHoldForDelivery(deliveryId, DIRECTED_HOLD_DISPOSITIONS, focusId);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Shared body for the disposition-keyed open-hold lookups
|
|
191
|
+
* (findOpenOperatorHoldForDelivery / findOpenDirectedHoldForDelivery). Reads the
|
|
192
|
+
* newest 500 open (pending|in_review) escalations -- narrowed server-side by
|
|
193
|
+
* focusId when supplied, the same busy-org paging concern the sibling lookups
|
|
194
|
+
* address -- and returns the first whose delivery matches (typed delivery_id
|
|
195
|
+
* COLUMN preferred, metadata.deliveryId fallback for rows open at deploy time)
|
|
196
|
+
* AND whose disposition (typed column preferred, metadata fallback) is in the
|
|
197
|
+
* given set. Status is re-checked client-side as defense-in-depth against a
|
|
198
|
+
* deploy-lagged edge fn returning resolved rows. THROWS on a hard API error;
|
|
199
|
+
* fail-open/closed is the CALLER's choice.
|
|
200
|
+
*
|
|
201
|
+
* `excludeKinds` (optional) drops any otherwise-matching escalation whose
|
|
202
|
+
* escalation_kind is in the set BEFORE it is returned -- used by the operator-hold
|
|
203
|
+
* lookup to skip self-referential stall alarms (SELF_REPORT_STALL_HOLD_KINDS) so an
|
|
204
|
+
* alarm about a delivery's own cycling cannot hold that delivery. The kind is read
|
|
205
|
+
* from the typed column with a metadata.kind fallback (parity with the disposition
|
|
206
|
+
* fallback), so an excluded kind is dropped regardless of column promotion.
|
|
207
|
+
*/
|
|
208
|
+
async function findOpenHoldForDelivery(deliveryId, dispositions, focusId, excludeKinds) {
|
|
209
|
+
const holdSet = new Set(dispositions);
|
|
210
|
+
const fields = { statuses: ['pending', 'in_review'] };
|
|
211
|
+
if (focusId)
|
|
212
|
+
fields.focusId = focusId;
|
|
213
|
+
const result = await callApi('escalation_list', { fields, limit: 500 });
|
|
214
|
+
for (const e of result.escalations ?? []) {
|
|
215
|
+
if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
|
|
216
|
+
continue;
|
|
217
|
+
const meta = e.metadata ?? null;
|
|
218
|
+
const disposition = (typeof e.disposition === 'string' ? e.disposition : null) ??
|
|
219
|
+
(typeof meta?.disposition === 'string' ? meta.disposition : null);
|
|
220
|
+
const matchedDelivery = e.deliveryId === deliveryId || meta?.deliveryId === deliveryId;
|
|
221
|
+
if (matchedDelivery && disposition !== null && holdSet.has(disposition)) {
|
|
222
|
+
const kind = (typeof e.escalationKind === 'string' ? e.escalationKind : null) ??
|
|
223
|
+
(typeof meta?.kind === 'string' ? meta.kind : null);
|
|
224
|
+
// A self-referential stall alarm about this delivery must not hold it.
|
|
225
|
+
if (excludeKinds && kind !== null && excludeKinds.has(kind))
|
|
226
|
+
continue;
|
|
227
|
+
return { id: e.id, escalationKind: e.escalationKind ?? null, disposition };
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=holds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"holds.js","sourceRoot":"","sources":["../../src/queries/holds.ts"],"names":[],"mappings":"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"}
|
package/dist/queries/issues.d.ts
CHANGED
|
@@ -147,104 +147,9 @@ export declare function hasOpenTeamFailureEscalation(focusId: string): Promise<b
|
|
|
147
147
|
* polls files exactly one open escalation instead of one per tick.
|
|
148
148
|
*/
|
|
149
149
|
export declare function hasOpenEscalationForDelivery(deliveryId: string, escalationKind: string): Promise<boolean>;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
* needs_operator (operator/infra/security action) and external_wait (blocked on
|
|
154
|
-
* a third party). Distinct from needs_intent / needs_clarification (a steering
|
|
155
|
-
* question, not a blocked-on-reality signal) and agent_resolvable (no human at
|
|
156
|
-
* all). Keyed on the DISPOSITION axis so ANY escalation kind carrying one of
|
|
157
|
-
* these holds its delivery -- the gate must not enumerate kinds.
|
|
158
|
-
*
|
|
159
|
-
* Declared as daemon-local string literals (not imported from @telora/daemon-core's
|
|
160
|
-
* ESCALATION_DISPOSITIONS) on purpose, mirroring MERGE_CONFLICT_ESCALATION_KIND
|
|
161
|
-
* below: a bare `@telora/*` VALUE import in a query module pulled into a mocked
|
|
162
|
-
* node:test fails to resolve under the module-mock loader (the daemon-local-copy
|
|
163
|
-
* rule). The canonical enum lives in packages/daemon-core/src/disposition.ts and
|
|
164
|
-
* the DB CHECK on agent_escalations.disposition is the real constraint; these
|
|
165
|
-
* strings must stay in sync with it.
|
|
166
|
-
*/
|
|
167
|
-
export declare const OPERATOR_HOLD_DISPOSITIONS: readonly string[];
|
|
168
|
-
/** The open operator-hold escalation a delivery is blocked on (for gate_state). */
|
|
169
|
-
export interface OperatorHoldEscalation {
|
|
170
|
-
id: string;
|
|
171
|
-
escalationKind: string | null;
|
|
172
|
-
disposition: string;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Returns the OPEN (pending|in_review) operator-hold escalation anchored to the
|
|
176
|
-
* given delivery, or null when none is open.
|
|
177
|
-
*
|
|
178
|
-
* DISPOSITION-keyed sibling of hasOpenEscalationForDelivery (which is KIND-keyed):
|
|
179
|
-
* it matches ANY escalation_kind whose disposition is in OPERATOR_HOLD_DISPOSITIONS
|
|
180
|
-
* (needs_operator / external_wait). This is the vocabulary the verify->done gate
|
|
181
|
-
* previously lacked -- an operator blocked ON a delivery (e.g. "the host restore
|
|
182
|
-
* was NOT executed") could not hold that delivery out of done, so a clean review
|
|
183
|
-
* auto-approved it. Returning the matching row (id + kind + disposition), not a
|
|
184
|
-
* bare boolean, lets the gate write the block into the delivery's gate_state.
|
|
185
|
-
*
|
|
186
|
-
* Matches on the typed delivery_id + disposition COLUMNS in preference to the
|
|
187
|
-
* metadata bag, with a metadata fallback (metadata.deliveryId / metadata.disposition)
|
|
188
|
-
* for rows already open at deploy time. The status is re-checked client-side as
|
|
189
|
-
* defense-in-depth against a deploy-lagged edge fn returning resolved rows.
|
|
190
|
-
*
|
|
191
|
-
* escalation_list has NO server-side delivery_id filter, so the delivery match is
|
|
192
|
-
* applied client-side over the org's open rows. Pass `focusId` to narrow the page
|
|
193
|
-
* server-side (the same busy-org paging concern hasOpenWorktreeDirtyEscalation
|
|
194
|
-
* addresses); omit it and the lookup reads the newest 500 open org rows.
|
|
195
|
-
*
|
|
196
|
-
* FAIL-CLOSED is the CALLER's responsibility. This function reports what it finds
|
|
197
|
-
* and THROWS on a hard API error. The verify->done gate that consumes it exists
|
|
198
|
-
* precisely to fail closed, so it must treat a lookup error as "held" -- the
|
|
199
|
-
* opposite of the other escalation lookups (dedup/auto-close), which fail OPEN
|
|
200
|
-
* because a spurious park is worse than a missed dedup. Here a missed hold lets an
|
|
201
|
-
* operator-blocked delivery reach done, which is the failure this gate prevents.
|
|
202
|
-
*/
|
|
203
|
-
export declare function findOpenOperatorHoldForDelivery(deliveryId: string, focusId?: string): Promise<OperatorHoldEscalation | null>;
|
|
204
|
-
/**
|
|
205
|
-
* Boolean convenience over findOpenOperatorHoldForDelivery for call sites that
|
|
206
|
-
* only need to know whether the hold exists (not which escalation it is).
|
|
207
|
-
*/
|
|
208
|
-
export declare function hasOpenOperatorHoldForDelivery(deliveryId: string, focusId?: string): Promise<boolean>;
|
|
209
|
-
/**
|
|
210
|
-
* The escalation dispositions that mean "a human must STEER before this team's
|
|
211
|
-
* work can proceed": needs_intent (scope/direction/priority) and
|
|
212
|
-
* needs_clarification (ambiguity to resolve). These are exactly the two the
|
|
213
|
-
* escalation tool documents as answerable via the `answer` field -- a DIRECTED
|
|
214
|
-
* question the daemon reads back to the asking agent, distinct from the
|
|
215
|
-
* operator-hold dispositions (needs_operator / external_wait, a blocked-on-reality
|
|
216
|
-
* signal) and agent_resolvable (no human at all).
|
|
217
|
-
*
|
|
218
|
-
* Daemon-local literals for the same reason as OPERATOR_HOLD_DISPOSITIONS above:
|
|
219
|
-
* a bare `@telora/*` value import in a query module pulled into a mocked
|
|
220
|
-
* node:test fails to resolve under the module-mock loader. The canonical enum is
|
|
221
|
-
* packages/daemon-core/src/disposition.ts and the DB CHECK on
|
|
222
|
-
* agent_escalations.disposition is the real constraint; these strings must stay
|
|
223
|
-
* in sync with it.
|
|
224
|
-
*/
|
|
225
|
-
export declare const DIRECTED_HOLD_DISPOSITIONS: readonly string[];
|
|
226
|
-
/**
|
|
227
|
-
* Returns the OPEN (pending|in_review) DIRECTED-hold escalation anchored to the
|
|
228
|
-
* given delivery, or null when none is open. Disposition-keyed sibling of
|
|
229
|
-
* findOpenOperatorHoldForDelivery, keyed on DIRECTED_HOLD_DISPOSITIONS
|
|
230
|
-
* (needs_intent / needs_clarification) instead of the operator-hold set.
|
|
231
|
-
*
|
|
232
|
-
* This is the vocabulary the completion-event no-progress guard previously
|
|
233
|
-
* lacked: a team parked on its own unanswered directed question could not be
|
|
234
|
-
* told apart from a team that has stalled, so the scope-coverage guard counted
|
|
235
|
-
* the wait as no-progress, re-engaged the team (real model spend), and
|
|
236
|
-
* eventually filed a team_failure ON TOP of the question.
|
|
237
|
-
*
|
|
238
|
-
* FAIL DIRECTION IS THE OPPOSITE of findOpenOperatorHoldForDelivery. The
|
|
239
|
-
* operator-hold gate's CALLER fails CLOSED (a lookup error => held) because a
|
|
240
|
-
* missed hold lets an operator-blocked delivery reach done. HERE the consuming
|
|
241
|
-
* guard must fail OPEN: a lookup error must NOT suppress a genuine stall
|
|
242
|
-
* escalation, so the caller treats an error as "not blocked". This function
|
|
243
|
-
* still reports what it finds and THROWS on a hard API error; the fail-open
|
|
244
|
-
* decision lives at the call site (completion/event-phases.computeCompletionFacts),
|
|
245
|
-
* which catches and defaults to not-blocked.
|
|
246
|
-
*/
|
|
247
|
-
export declare function findOpenDirectedHoldForDelivery(deliveryId: string, focusId?: string): Promise<OperatorHoldEscalation | null>;
|
|
150
|
+
import { OPERATOR_HOLD_DISPOSITIONS, SELF_REPORT_STALL_HOLD_KINDS, DIRECTED_HOLD_DISPOSITIONS, findOpenOperatorHoldForDelivery, hasOpenOperatorHoldForDelivery, findOpenDirectedHoldForDelivery, type OperatorHoldEscalation } from './holds.js';
|
|
151
|
+
export { OPERATOR_HOLD_DISPOSITIONS, SELF_REPORT_STALL_HOLD_KINDS, DIRECTED_HOLD_DISPOSITIONS, findOpenOperatorHoldForDelivery, hasOpenOperatorHoldForDelivery, findOpenDirectedHoldForDelivery, };
|
|
152
|
+
export type { OperatorHoldEscalation };
|
|
248
153
|
/**
|
|
249
154
|
* escalation_kind discriminators for the two focus-merge worktree-dirty
|
|
250
155
|
* classes. Declared as daemon-local string constants (not imported from
|
|
@@ -382,5 +287,4 @@ export declare function markEscalationResolved(escalationId: string, resolutionN
|
|
|
382
287
|
* Create an issue on a delivery (for create_issue trigger action).
|
|
383
288
|
*/
|
|
384
289
|
export declare function createIssue(deliveryId: string, title: string, description: string | null, issueType: string, priority: string | null): Promise<string>;
|
|
385
|
-
export {};
|
|
386
290
|
//# sourceMappingURL=issues.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAIL,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,KAAK,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAO/E;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOjF;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtF;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAuB1C;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAqB3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBpF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"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"}
|
package/dist/queries/issues.js
CHANGED
|
@@ -156,141 +156,10 @@ export async function hasOpenEscalationForDelivery(deliveryId, escalationKind) {
|
|
|
156
156
|
return meta?.kind === escalationKind && meta?.deliveryId === deliveryId;
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
* a third party). Distinct from needs_intent / needs_clarification (a steering
|
|
164
|
-
* question, not a blocked-on-reality signal) and agent_resolvable (no human at
|
|
165
|
-
* all). Keyed on the DISPOSITION axis so ANY escalation kind carrying one of
|
|
166
|
-
* these holds its delivery -- the gate must not enumerate kinds.
|
|
167
|
-
*
|
|
168
|
-
* Declared as daemon-local string literals (not imported from @telora/daemon-core's
|
|
169
|
-
* ESCALATION_DISPOSITIONS) on purpose, mirroring MERGE_CONFLICT_ESCALATION_KIND
|
|
170
|
-
* below: a bare `@telora/*` VALUE import in a query module pulled into a mocked
|
|
171
|
-
* node:test fails to resolve under the module-mock loader (the daemon-local-copy
|
|
172
|
-
* rule). The canonical enum lives in packages/daemon-core/src/disposition.ts and
|
|
173
|
-
* the DB CHECK on agent_escalations.disposition is the real constraint; these
|
|
174
|
-
* strings must stay in sync with it.
|
|
175
|
-
*/
|
|
176
|
-
export const OPERATOR_HOLD_DISPOSITIONS = [
|
|
177
|
-
'needs_operator',
|
|
178
|
-
'external_wait',
|
|
179
|
-
];
|
|
180
|
-
/**
|
|
181
|
-
* Returns the OPEN (pending|in_review) operator-hold escalation anchored to the
|
|
182
|
-
* given delivery, or null when none is open.
|
|
183
|
-
*
|
|
184
|
-
* DISPOSITION-keyed sibling of hasOpenEscalationForDelivery (which is KIND-keyed):
|
|
185
|
-
* it matches ANY escalation_kind whose disposition is in OPERATOR_HOLD_DISPOSITIONS
|
|
186
|
-
* (needs_operator / external_wait). This is the vocabulary the verify->done gate
|
|
187
|
-
* previously lacked -- an operator blocked ON a delivery (e.g. "the host restore
|
|
188
|
-
* was NOT executed") could not hold that delivery out of done, so a clean review
|
|
189
|
-
* auto-approved it. Returning the matching row (id + kind + disposition), not a
|
|
190
|
-
* bare boolean, lets the gate write the block into the delivery's gate_state.
|
|
191
|
-
*
|
|
192
|
-
* Matches on the typed delivery_id + disposition COLUMNS in preference to the
|
|
193
|
-
* metadata bag, with a metadata fallback (metadata.deliveryId / metadata.disposition)
|
|
194
|
-
* for rows already open at deploy time. The status is re-checked client-side as
|
|
195
|
-
* defense-in-depth against a deploy-lagged edge fn returning resolved rows.
|
|
196
|
-
*
|
|
197
|
-
* escalation_list has NO server-side delivery_id filter, so the delivery match is
|
|
198
|
-
* applied client-side over the org's open rows. Pass `focusId` to narrow the page
|
|
199
|
-
* server-side (the same busy-org paging concern hasOpenWorktreeDirtyEscalation
|
|
200
|
-
* addresses); omit it and the lookup reads the newest 500 open org rows.
|
|
201
|
-
*
|
|
202
|
-
* FAIL-CLOSED is the CALLER's responsibility. This function reports what it finds
|
|
203
|
-
* and THROWS on a hard API error. The verify->done gate that consumes it exists
|
|
204
|
-
* precisely to fail closed, so it must treat a lookup error as "held" -- the
|
|
205
|
-
* opposite of the other escalation lookups (dedup/auto-close), which fail OPEN
|
|
206
|
-
* because a spurious park is worse than a missed dedup. Here a missed hold lets an
|
|
207
|
-
* operator-blocked delivery reach done, which is the failure this gate prevents.
|
|
208
|
-
*/
|
|
209
|
-
export async function findOpenOperatorHoldForDelivery(deliveryId, focusId) {
|
|
210
|
-
return findOpenHoldForDelivery(deliveryId, OPERATOR_HOLD_DISPOSITIONS, focusId);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Boolean convenience over findOpenOperatorHoldForDelivery for call sites that
|
|
214
|
-
* only need to know whether the hold exists (not which escalation it is).
|
|
215
|
-
*/
|
|
216
|
-
export async function hasOpenOperatorHoldForDelivery(deliveryId, focusId) {
|
|
217
|
-
return (await findOpenOperatorHoldForDelivery(deliveryId, focusId)) !== null;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* The escalation dispositions that mean "a human must STEER before this team's
|
|
221
|
-
* work can proceed": needs_intent (scope/direction/priority) and
|
|
222
|
-
* needs_clarification (ambiguity to resolve). These are exactly the two the
|
|
223
|
-
* escalation tool documents as answerable via the `answer` field -- a DIRECTED
|
|
224
|
-
* question the daemon reads back to the asking agent, distinct from the
|
|
225
|
-
* operator-hold dispositions (needs_operator / external_wait, a blocked-on-reality
|
|
226
|
-
* signal) and agent_resolvable (no human at all).
|
|
227
|
-
*
|
|
228
|
-
* Daemon-local literals for the same reason as OPERATOR_HOLD_DISPOSITIONS above:
|
|
229
|
-
* a bare `@telora/*` value import in a query module pulled into a mocked
|
|
230
|
-
* node:test fails to resolve under the module-mock loader. The canonical enum is
|
|
231
|
-
* packages/daemon-core/src/disposition.ts and the DB CHECK on
|
|
232
|
-
* agent_escalations.disposition is the real constraint; these strings must stay
|
|
233
|
-
* in sync with it.
|
|
234
|
-
*/
|
|
235
|
-
export const DIRECTED_HOLD_DISPOSITIONS = [
|
|
236
|
-
'needs_intent',
|
|
237
|
-
'needs_clarification',
|
|
238
|
-
];
|
|
239
|
-
/**
|
|
240
|
-
* Returns the OPEN (pending|in_review) DIRECTED-hold escalation anchored to the
|
|
241
|
-
* given delivery, or null when none is open. Disposition-keyed sibling of
|
|
242
|
-
* findOpenOperatorHoldForDelivery, keyed on DIRECTED_HOLD_DISPOSITIONS
|
|
243
|
-
* (needs_intent / needs_clarification) instead of the operator-hold set.
|
|
244
|
-
*
|
|
245
|
-
* This is the vocabulary the completion-event no-progress guard previously
|
|
246
|
-
* lacked: a team parked on its own unanswered directed question could not be
|
|
247
|
-
* told apart from a team that has stalled, so the scope-coverage guard counted
|
|
248
|
-
* the wait as no-progress, re-engaged the team (real model spend), and
|
|
249
|
-
* eventually filed a team_failure ON TOP of the question.
|
|
250
|
-
*
|
|
251
|
-
* FAIL DIRECTION IS THE OPPOSITE of findOpenOperatorHoldForDelivery. The
|
|
252
|
-
* operator-hold gate's CALLER fails CLOSED (a lookup error => held) because a
|
|
253
|
-
* missed hold lets an operator-blocked delivery reach done. HERE the consuming
|
|
254
|
-
* guard must fail OPEN: a lookup error must NOT suppress a genuine stall
|
|
255
|
-
* escalation, so the caller treats an error as "not blocked". This function
|
|
256
|
-
* still reports what it finds and THROWS on a hard API error; the fail-open
|
|
257
|
-
* decision lives at the call site (completion/event-phases.computeCompletionFacts),
|
|
258
|
-
* which catches and defaults to not-blocked.
|
|
259
|
-
*/
|
|
260
|
-
export async function findOpenDirectedHoldForDelivery(deliveryId, focusId) {
|
|
261
|
-
return findOpenHoldForDelivery(deliveryId, DIRECTED_HOLD_DISPOSITIONS, focusId);
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Shared body for the disposition-keyed open-hold lookups
|
|
265
|
-
* (findOpenOperatorHoldForDelivery / findOpenDirectedHoldForDelivery). Reads the
|
|
266
|
-
* newest 500 open (pending|in_review) escalations -- narrowed server-side by
|
|
267
|
-
* focusId when supplied, the same busy-org paging concern the sibling lookups
|
|
268
|
-
* address -- and returns the first whose delivery matches (typed delivery_id
|
|
269
|
-
* COLUMN preferred, metadata.deliveryId fallback for rows open at deploy time)
|
|
270
|
-
* AND whose disposition (typed column preferred, metadata fallback) is in the
|
|
271
|
-
* given set. Status is re-checked client-side as defense-in-depth against a
|
|
272
|
-
* deploy-lagged edge fn returning resolved rows. THROWS on a hard API error;
|
|
273
|
-
* fail-open/closed is the CALLER's choice.
|
|
274
|
-
*/
|
|
275
|
-
async function findOpenHoldForDelivery(deliveryId, dispositions, focusId) {
|
|
276
|
-
const holdSet = new Set(dispositions);
|
|
277
|
-
const fields = { statuses: ['pending', 'in_review'] };
|
|
278
|
-
if (focusId)
|
|
279
|
-
fields.focusId = focusId;
|
|
280
|
-
const result = await callApi('escalation_list', { fields, limit: 500 });
|
|
281
|
-
for (const e of result.escalations ?? []) {
|
|
282
|
-
if (e.status && !OPEN_ESCALATION_STATUSES.has(e.status))
|
|
283
|
-
continue;
|
|
284
|
-
const meta = e.metadata ?? null;
|
|
285
|
-
const disposition = (typeof e.disposition === 'string' ? e.disposition : null) ??
|
|
286
|
-
(typeof meta?.disposition === 'string' ? meta.disposition : null);
|
|
287
|
-
const matchedDelivery = e.deliveryId === deliveryId || meta?.deliveryId === deliveryId;
|
|
288
|
-
if (matchedDelivery && disposition !== null && holdSet.has(disposition)) {
|
|
289
|
-
return { id: e.id, escalationKind: e.escalationKind ?? null, disposition };
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
return null;
|
|
293
|
-
}
|
|
159
|
+
import { OPEN_ESCALATION_STATUSES, OPERATOR_HOLD_DISPOSITIONS, SELF_REPORT_STALL_HOLD_KINDS, DIRECTED_HOLD_DISPOSITIONS, findOpenOperatorHoldForDelivery, hasOpenOperatorHoldForDelivery, findOpenDirectedHoldForDelivery, } from './holds.js';
|
|
160
|
+
// The delivery hold-lookup family moved to queries/holds.ts (file-size limit).
|
|
161
|
+
// Re-exported here so every existing importer of queries/issues.js keeps working.
|
|
162
|
+
export { OPERATOR_HOLD_DISPOSITIONS, SELF_REPORT_STALL_HOLD_KINDS, DIRECTED_HOLD_DISPOSITIONS, findOpenOperatorHoldForDelivery, hasOpenOperatorHoldForDelivery, findOpenDirectedHoldForDelivery, };
|
|
294
163
|
/**
|
|
295
164
|
* escalation_kind discriminators for the two focus-merge worktree-dirty
|
|
296
165
|
* classes. Declared as daemon-local string constants (not imported from
|
|
@@ -320,8 +189,6 @@ export const WORKTREE_DIRTY_ESCALATION_KINDS = [
|
|
|
320
189
|
MERGE_CONFLICT_ESCALATION_KIND,
|
|
321
190
|
MERGE_REFUSED_DIRTY_ESCALATION_KIND,
|
|
322
191
|
];
|
|
323
|
-
/** Open escalation statuses (anything not yet resolved/dismissed). */
|
|
324
|
-
const OPEN_ESCALATION_STATUSES = new Set(['pending', 'in_review']);
|
|
325
192
|
/**
|
|
326
193
|
* True when `e` is an OPEN worktree-dirty-class escalation for `focusId` whose
|
|
327
194
|
* kind is in `kindSet`. Shared by hasOpenWorktreeDirtyEscalation (dedup) and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/queries/issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,11 +63,40 @@ export interface VerifyFailedCapDeps {
|
|
|
63
63
|
cap?: number;
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
66
|
+
* True when `gateState.blocking` carries at least one guard verdict -- i.e. a
|
|
67
|
+
* guard is ACTUALLY rejecting the work right now.
|
|
68
|
+
*
|
|
69
|
+
* Only the `blocking` array counts. operatorHold / externalHold / shortfallProposalIds
|
|
70
|
+
* are carried OUTSIDE `blocking` (queries/deliveries.ts DeliveryGateState) because a
|
|
71
|
+
* hold is not a guard verdict. Treating operatorHold as a block here would
|
|
72
|
+
* reintroduce the very fixpoint the sibling operator-hold exclusion removes: the
|
|
73
|
+
* verify_gate_unclearable alarm writes gate_state with `blocking: []` + a populated
|
|
74
|
+
* operatorHold, and if that counted as "still blocking" the detector would keep
|
|
75
|
+
* re-firing on its own alarm. So the guard-verdict array is the sole live-block
|
|
76
|
+
* signal. (verify_evidence_unavailable DOES populate `blocking` with its own guard,
|
|
77
|
+
* but it consumes no iteration_count, so it can never by itself push over the cap.)
|
|
78
|
+
*
|
|
79
|
+
* Defensive over the `unknown` gate_state shape (FocusDeliveryInfo.gateState). Pure
|
|
80
|
+
* -- exported for direct unit testing.
|
|
81
|
+
*/
|
|
82
|
+
export declare function hasLiveBlockingGuard(gateState: unknown): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Pure decision: does this delivery exceed the verify_failed re-code cap AND is a
|
|
85
|
+
* guard still actively rejecting it?
|
|
86
|
+
*
|
|
87
|
+
* iteration_count is a MONOTONIC proxy for "the gate keeps rejecting this work",
|
|
88
|
+
* but the condition it proxies is NOT monotonic: the counter never decreases while
|
|
89
|
+
* the gate can go clear. Keying only on the counter let the detector assert "the
|
|
90
|
+
* gate keeps rejecting the work" at a moment when gate_state.blocking was empty and
|
|
91
|
+
* the gate was rejecting nothing (observed 2026-07-26). So the counter remains the
|
|
92
|
+
* TRIGGER (it is the right bounded-loop signal -- a delivery that has re-coded N
|
|
93
|
+
* times is the thing worth escalating), but the LIVE gate must also show a blocking
|
|
94
|
+
* guard for the claim to be true by construction. A terminal delivery
|
|
95
|
+
* (done/cancelled) is never escalated -- it has stopped cycling.
|
|
96
|
+
*
|
|
97
|
+
* Exported for direct unit testing.
|
|
69
98
|
*/
|
|
70
|
-
export declare function exceedsVerifyFailedCap(delivery: Pick<FocusDeliveryInfo, 'executionStatus' | 'iterationCount'>, cap: number): boolean;
|
|
99
|
+
export declare function exceedsVerifyFailedCap(delivery: Pick<FocusDeliveryInfo, 'executionStatus' | 'iterationCount' | 'gateState'>, cap: number): boolean;
|
|
71
100
|
/**
|
|
72
101
|
* Check ONE focus's ALREADY-FETCHED deliveries for any whose iteration_count
|
|
73
102
|
* exceeds the verify_failed re-code cap, filing a verify_gate_unclearable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../src/stall-detectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAS7B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"stall-detectors.d.ts","sourceRoot":"","sources":["../src/stall-detectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAS7B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,4BAA4B,CAAC;AACtE,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAElE,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAgCD,MAAM,WAAW,mBAAmB;IAClC,4BAA4B,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/F,gBAAgB,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACtG,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAIhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,gBAAgB,GAAG,WAAW,CAAC,EACrF,GAAG,EAAE,MAAM,GACV,OAAO,CAIT;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,iBAAiB,EACtB,UAAU,EAAE,iBAAiB,EAAE,EAC/B,IAAI,GAAE,mBAAgD,GACrD,OAAO,CAAC,IAAI,CAAC,CAgEf;AAID,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,gBAAgB,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACtG,mFAAmF;IACnF,oBAAoB,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,oEAAoE;IACpE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,CAAC,CAMlD;AASD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,eAAe,EAAE,OAAO,EACxB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,iBAAiB,EACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,IAAI,GAAE,gBAA0C,GAC/C,OAAO,CAAC,IAAI,CAAC,CA8Df"}
|
package/dist/stall-detectors.js
CHANGED
|
@@ -64,19 +64,72 @@ function formatGateState(gateState) {
|
|
|
64
64
|
return '(unserializable)';
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* The names of the guards currently in `gate_state.blocking`. Empty when the gate
|
|
69
|
+
* carries no live guard verdict. Used to make the escalation body assert only what
|
|
70
|
+
* the gate actually says (the detector only fires when this is non-empty).
|
|
71
|
+
*/
|
|
72
|
+
function blockingGuardNames(gateState) {
|
|
73
|
+
if (gateState == null || typeof gateState !== 'object')
|
|
74
|
+
return [];
|
|
75
|
+
const blocking = gateState.blocking;
|
|
76
|
+
if (!Array.isArray(blocking))
|
|
77
|
+
return [];
|
|
78
|
+
return blocking
|
|
79
|
+
.map((b) => b && typeof b === 'object' && typeof b.guardName === 'string'
|
|
80
|
+
? b.guardName
|
|
81
|
+
: null)
|
|
82
|
+
.filter((n) => n !== null);
|
|
83
|
+
}
|
|
67
84
|
const defaultVerifyFailedCapDeps = {
|
|
68
85
|
hasOpenEscalationForDelivery: defaultHasOpenEscalationForDelivery,
|
|
69
86
|
createEscalation: defaultCreateEscalation,
|
|
70
87
|
};
|
|
71
88
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
89
|
+
* True when `gateState.blocking` carries at least one guard verdict -- i.e. a
|
|
90
|
+
* guard is ACTUALLY rejecting the work right now.
|
|
91
|
+
*
|
|
92
|
+
* Only the `blocking` array counts. operatorHold / externalHold / shortfallProposalIds
|
|
93
|
+
* are carried OUTSIDE `blocking` (queries/deliveries.ts DeliveryGateState) because a
|
|
94
|
+
* hold is not a guard verdict. Treating operatorHold as a block here would
|
|
95
|
+
* reintroduce the very fixpoint the sibling operator-hold exclusion removes: the
|
|
96
|
+
* verify_gate_unclearable alarm writes gate_state with `blocking: []` + a populated
|
|
97
|
+
* operatorHold, and if that counted as "still blocking" the detector would keep
|
|
98
|
+
* re-firing on its own alarm. So the guard-verdict array is the sole live-block
|
|
99
|
+
* signal. (verify_evidence_unavailable DOES populate `blocking` with its own guard,
|
|
100
|
+
* but it consumes no iteration_count, so it can never by itself push over the cap.)
|
|
101
|
+
*
|
|
102
|
+
* Defensive over the `unknown` gate_state shape (FocusDeliveryInfo.gateState). Pure
|
|
103
|
+
* -- exported for direct unit testing.
|
|
104
|
+
*/
|
|
105
|
+
export function hasLiveBlockingGuard(gateState) {
|
|
106
|
+
if (gateState == null || typeof gateState !== 'object')
|
|
107
|
+
return false;
|
|
108
|
+
const blocking = gateState.blocking;
|
|
109
|
+
return Array.isArray(blocking) && blocking.length > 0;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Pure decision: does this delivery exceed the verify_failed re-code cap AND is a
|
|
113
|
+
* guard still actively rejecting it?
|
|
114
|
+
*
|
|
115
|
+
* iteration_count is a MONOTONIC proxy for "the gate keeps rejecting this work",
|
|
116
|
+
* but the condition it proxies is NOT monotonic: the counter never decreases while
|
|
117
|
+
* the gate can go clear. Keying only on the counter let the detector assert "the
|
|
118
|
+
* gate keeps rejecting the work" at a moment when gate_state.blocking was empty and
|
|
119
|
+
* the gate was rejecting nothing (observed 2026-07-26). So the counter remains the
|
|
120
|
+
* TRIGGER (it is the right bounded-loop signal -- a delivery that has re-coded N
|
|
121
|
+
* times is the thing worth escalating), but the LIVE gate must also show a blocking
|
|
122
|
+
* guard for the claim to be true by construction. A terminal delivery
|
|
123
|
+
* (done/cancelled) is never escalated -- it has stopped cycling.
|
|
124
|
+
*
|
|
125
|
+
* Exported for direct unit testing.
|
|
75
126
|
*/
|
|
76
127
|
export function exceedsVerifyFailedCap(delivery, cap) {
|
|
77
128
|
if (isStatusTerminal(delivery.executionStatus ?? ''))
|
|
78
129
|
return false;
|
|
79
|
-
|
|
130
|
+
if ((delivery.iterationCount ?? 0) <= cap)
|
|
131
|
+
return false;
|
|
132
|
+
return hasLiveBlockingGuard(delivery.gateState);
|
|
80
133
|
}
|
|
81
134
|
/**
|
|
82
135
|
* Check ONE focus's ALREADY-FETCHED deliveries for any whose iteration_count
|
|
@@ -90,6 +143,12 @@ export async function checkVerifyFailedCapForFocus(ctx, deliveries, deps = defau
|
|
|
90
143
|
for (const delivery of deliveries) {
|
|
91
144
|
if (!exceedsVerifyFailedCap(delivery, cap))
|
|
92
145
|
continue;
|
|
146
|
+
// Guaranteed non-empty by exceedsVerifyFailedCap -- the escalation asserts only
|
|
147
|
+
// what the live gate says (AC3), never an unconditional "gate keeps rejecting".
|
|
148
|
+
const guards = blockingGuardNames(delivery.gateState);
|
|
149
|
+
const guardClause = guards.length
|
|
150
|
+
? `The verify gate is currently blocking on: ${guards.join(', ')}.`
|
|
151
|
+
: `The verify gate is currently blocking (see gate_state).`;
|
|
93
152
|
try {
|
|
94
153
|
if (await deps.hasOpenEscalationForDelivery(delivery.id, VERIFY_GATE_UNCLEARABLE_KIND)) {
|
|
95
154
|
continue;
|
|
@@ -105,7 +164,7 @@ export async function checkVerifyFailedCapForFocus(ctx, deliveries, deps = defau
|
|
|
105
164
|
escalationKind: VERIFY_GATE_UNCLEARABLE_KIND,
|
|
106
165
|
description: `Delivery "${delivery.name}" has been through ${delivery.iterationCount ?? 0} ` +
|
|
107
166
|
`verify_failed re-code cycles (cap ${cap}) without clearing the verify gate. ` +
|
|
108
|
-
|
|
167
|
+
`${guardClause} The loop will not converge on its own.\n\n` +
|
|
109
168
|
`**Focus:** ${ctx.focusName}\n` +
|
|
110
169
|
`**Focus ID:** ${ctx.focusId}\n` +
|
|
111
170
|
`**Delivery:** "${delivery.name}" (${delivery.id})\n` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stall-detectors.js","sourceRoot":"","sources":["../src/stall-detectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,IAAI,uBAAuB,EAC3C,4BAA4B,IAAI,mCAAmC,EACnE,sBAAsB,IAAI,6BAA6B,GAExD,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAGxD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AASlE,2DAA2D;AAC3D,SAAS,eAAe,CAAC,SAAkB;IACzC,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,iBAAiB,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,kBAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAWD,MAAM,0BAA0B,GAAwB;IACtD,4BAA4B,EAAE,mCAAmC;IACjE,gBAAgB,EAAE,uBAAuB;CAC1C,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"stall-detectors.js","sourceRoot":"","sources":["../src/stall-detectors.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telora/daemon",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.60",
|
|
4
4
|
"description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"//testRunner": "Uses Node.js built-in test runner (node:test) via tsx for TypeScript support. The root package uses Vitest; this is a deliberate choice for the daemon package to avoid framework dependencies. See src/__tests__/ for test files.",
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@telora/daemon-core": "^0.2.73",
|
|
41
|
-
"@telora/mcp-products": "^0.22.
|
|
41
|
+
"@telora/mcp-products": "^0.22.105",
|
|
42
42
|
"commander": "^14.0.3",
|
|
43
43
|
"yaml": "^2.4.0",
|
|
44
44
|
"zod": "^4.3.6"
|