@telora/daemon 0.22.85 → 0.22.91
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 +4 -3
- package/dist/backends/index.d.ts +1 -1
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +1 -1
- package/dist/backends/index.js.map +1 -1
- package/dist/backends/resolve.d.ts +37 -8
- package/dist/backends/resolve.d.ts.map +1 -1
- package/dist/backends/resolve.js +62 -28
- package/dist/backends/resolve.js.map +1 -1
- package/dist/ci/ci-escalation.d.ts +17 -1
- package/dist/ci/ci-escalation.d.ts.map +1 -1
- package/dist/ci/ci-escalation.js +51 -3
- package/dist/ci/ci-escalation.js.map +1 -1
- package/dist/ci/ci-red-attribution.d.ts +85 -0
- package/dist/ci/ci-red-attribution.d.ts.map +1 -0
- package/dist/ci/ci-red-attribution.js +108 -0
- package/dist/ci/ci-red-attribution.js.map +1 -0
- package/dist/ci/ci-sensor-loop.d.ts +84 -80
- package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
- package/dist/ci/ci-sensor-loop.js +132 -129
- package/dist/ci/ci-sensor-loop.js.map +1 -1
- package/dist/cli/connect/config-write.d.ts +7 -4
- package/dist/cli/connect/config-write.d.ts.map +1 -1
- package/dist/cli/connect/config-write.js +13 -7
- package/dist/cli/connect/config-write.js.map +1 -1
- package/dist/cli/connect.d.ts.map +1 -1
- package/dist/cli/connect.js +11 -1
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/update-commands.d.ts.map +1 -1
- package/dist/cli/update-commands.js +2 -1
- package/dist/cli/update-commands.js.map +1 -1
- package/dist/completion/coverage-stabilized.d.ts.map +1 -1
- package/dist/completion/coverage-stabilized.js +1 -1
- package/dist/completion/coverage-stabilized.js.map +1 -1
- package/dist/completion/escalations.d.ts +40 -5
- package/dist/completion/escalations.d.ts.map +1 -1
- package/dist/completion/escalations.js +19 -11
- package/dist/completion/escalations.js.map +1 -1
- package/dist/completion/event-escalations.d.ts +12 -1
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +73 -37
- package/dist/completion/event-escalations.js.map +1 -1
- package/dist/completion/event.d.ts +4 -1
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +1 -1
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/human-only-act.d.ts +1 -1
- package/dist/completion/human-only-act.js +1 -1
- package/dist/completion/machine-remediable-demotion.d.ts +28 -1
- package/dist/completion/machine-remediable-demotion.d.ts.map +1 -1
- package/dist/completion/machine-remediable-demotion.js +9 -6
- package/dist/completion/machine-remediable-demotion.js.map +1 -1
- package/dist/completion/read-only-pristine.d.ts.map +1 -1
- package/dist/completion/read-only-pristine.js +4 -0
- package/dist/completion/read-only-pristine.js.map +1 -1
- package/dist/completion/review-exit-deps.js +1 -1
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-escalations.d.ts +10 -0
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +38 -3
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +8 -7
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-shortfall.d.ts +5 -1
- package/dist/completion/review-exit-shortfall.d.ts.map +1 -1
- package/dist/completion/review-exit-shortfall.js +8 -3
- package/dist/completion/review-exit-shortfall.js.map +1 -1
- package/dist/completion/status-advance-phase.d.ts +2 -0
- package/dist/completion/status-advance-phase.d.ts.map +1 -1
- package/dist/completion/status-advance-phase.js +2 -1
- package/dist/completion/status-advance-phase.js.map +1 -1
- package/dist/completion/terminated-work-reconcile.js +2 -2
- package/dist/completion/terminated-work-reconcile.js.map +1 -1
- package/dist/delivery/delivery-advance-block.d.ts +3 -3
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +13 -8
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/delivery/delivery-lifecycle.d.ts +10 -0
- package/dist/delivery/delivery-lifecycle.d.ts.map +1 -1
- package/dist/delivery/delivery-lifecycle.js +12 -6
- package/dist/delivery/delivery-lifecycle.js.map +1 -1
- package/dist/delivery/delivery-merge-ops.d.ts.map +1 -1
- package/dist/delivery/delivery-merge-ops.js +39 -21
- package/dist/delivery/delivery-merge-ops.js.map +1 -1
- package/dist/delivery/external-hold.d.ts +8 -2
- package/dist/delivery/external-hold.d.ts.map +1 -1
- package/dist/delivery/external-hold.js +12 -5
- package/dist/delivery/external-hold.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts +6 -1
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/operator-hold.js +31 -10
- package/dist/delivery/operator-hold.js.map +1 -1
- package/dist/delivery/paused-revival.d.ts +6 -0
- package/dist/delivery/paused-revival.d.ts.map +1 -1
- package/dist/delivery/paused-revival.js +3 -1
- package/dist/delivery/paused-revival.js.map +1 -1
- package/dist/directive/directive-dispatch.d.ts.map +1 -1
- package/dist/directive/directive-dispatch.js +6 -3
- package/dist/directive/directive-dispatch.js.map +1 -1
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +4 -1
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/drift/staleness-sensor.d.ts +20 -0
- package/dist/drift/staleness-sensor.d.ts.map +1 -1
- package/dist/drift/staleness-sensor.js +54 -21
- package/dist/drift/staleness-sensor.js.map +1 -1
- package/dist/drift/staleness.d.ts +18 -5
- package/dist/drift/staleness.d.ts.map +1 -1
- package/dist/drift/staleness.js +28 -15
- package/dist/drift/staleness.js.map +1 -1
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +6 -8
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus/focus-loop-registry.js +23 -13
- package/dist/focus/focus-loop-registry.js.map +1 -1
- package/dist/focus/focus-respawn-guard.d.ts.map +1 -1
- package/dist/focus/focus-respawn-guard.js +21 -4
- package/dist/focus/focus-respawn-guard.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +10 -6
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +21 -1
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.d.ts.map +1 -1
- package/dist/focus-stage-lifecycle/wedge-watchdog.js +35 -14
- package/dist/focus-stage-lifecycle/wedge-watchdog.js.map +1 -1
- package/dist/loops/index.d.ts.map +1 -1
- package/dist/loops/index.js +2 -1
- package/dist/loops/index.js.map +1 -1
- package/dist/merge/focus-merge.d.ts +1 -1
- package/dist/merge/focus-merge.d.ts.map +1 -1
- package/dist/merge/focus-merge.js +5 -1
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts +2 -1
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +15 -12
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
- package/dist/merge/merge-conflict-escalation.js +4 -0
- package/dist/merge/merge-conflict-escalation.js.map +1 -1
- package/dist/nexus/return.d.ts +14 -15
- package/dist/nexus/return.d.ts.map +1 -1
- package/dist/nexus/return.js +41 -31
- package/dist/nexus/return.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts +13 -5
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +78 -18
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.d.ts +60 -0
- package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -0
- package/dist/prompt-sections/routing-decider-sections.js +197 -0
- package/dist/prompt-sections/routing-decider-sections.js.map +1 -0
- package/dist/queries/agent-resolvable-aging.d.ts +4 -3
- package/dist/queries/agent-resolvable-aging.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-aging.js +5 -4
- package/dist/queries/agent-resolvable-aging.js.map +1 -1
- package/dist/queries/agent-resolvable-promotion.d.ts +172 -124
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +332 -307
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/agent-resolvable-retirement.d.ts +105 -0
- package/dist/queries/agent-resolvable-retirement.d.ts.map +1 -0
- package/dist/queries/agent-resolvable-retirement.js +227 -0
- package/dist/queries/agent-resolvable-retirement.js.map +1 -0
- package/dist/queries/cause-key.d.ts +109 -0
- package/dist/queries/cause-key.d.ts.map +1 -1
- package/dist/queries/cause-key.js +93 -1
- package/dist/queries/cause-key.js.map +1 -1
- package/dist/queries/deliveries.d.ts +14 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +20 -2
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +130 -5
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +111 -2
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts +95 -15
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +162 -24
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalation-dispositions.d.ts +19 -7
- package/dist/queries/escalation-dispositions.d.ts.map +1 -1
- package/dist/queries/escalation-dispositions.js +7 -0
- package/dist/queries/escalation-dispositions.js.map +1 -1
- package/dist/queries/escalation-suppression.d.ts +63 -19
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +64 -35
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.d.ts +127 -70
- package/dist/queries/escalations.d.ts.map +1 -1
- package/dist/queries/escalations.js +170 -188
- package/dist/queries/escalations.js.map +1 -1
- package/dist/queries/filing-observation.d.ts +82 -0
- package/dist/queries/filing-observation.d.ts.map +1 -0
- package/dist/queries/filing-observation.js +157 -0
- package/dist/queries/filing-observation.js.map +1 -0
- package/dist/queries/holds.d.ts +69 -2
- package/dist/queries/holds.d.ts.map +1 -1
- package/dist/queries/holds.js +106 -11
- package/dist/queries/holds.js.map +1 -1
- package/dist/queries/incident-correlation.d.ts +291 -0
- package/dist/queries/incident-correlation.d.ts.map +1 -0
- package/dist/queries/incident-correlation.js +408 -0
- package/dist/queries/incident-correlation.js.map +1 -0
- package/dist/queries/routing-measurement.d.ts +48 -1
- package/dist/queries/routing-measurement.d.ts.map +1 -1
- package/dist/queries/routing-measurement.js +64 -2
- package/dist/queries/routing-measurement.js.map +1 -1
- package/dist/queries/routing-quality.d.ts +8 -0
- package/dist/queries/routing-quality.d.ts.map +1 -1
- package/dist/queries/routing-quality.js +12 -3
- package/dist/queries/routing-quality.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/shell/crash-recovery.d.ts.map +1 -1
- package/dist/shell/crash-recovery.js +6 -6
- package/dist/shell/crash-recovery.js.map +1 -1
- package/dist/shell/heartbeat-metadata.d.ts +18 -0
- package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
- package/dist/shell/heartbeat-metadata.js +24 -0
- package/dist/shell/heartbeat-metadata.js.map +1 -1
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +6 -17
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/install-probe-tick.d.ts.map +1 -1
- package/dist/shell/install-probe-tick.js +3 -1
- package/dist/shell/install-probe-tick.js.map +1 -1
- package/dist/shell/model-resolution.d.ts +9 -4
- package/dist/shell/model-resolution.d.ts.map +1 -1
- package/dist/shell/model-resolution.js +46 -7
- package/dist/shell/model-resolution.js.map +1 -1
- package/dist/shell/unified-init.d.ts +24 -0
- package/dist/shell/unified-init.d.ts.map +1 -1
- package/dist/shell/unified-init.js +22 -17
- package/dist/shell/unified-init.js.map +1 -1
- package/dist/spawn/model-id-guards.d.ts +50 -0
- package/dist/spawn/model-id-guards.d.ts.map +1 -0
- package/dist/spawn/model-id-guards.js +110 -0
- package/dist/spawn/model-id-guards.js.map +1 -0
- package/dist/spawn/model-routing.d.ts +1 -43
- package/dist/spawn/model-routing.d.ts.map +1 -1
- package/dist/spawn/model-routing.js +3 -94
- package/dist/spawn/model-routing.js.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.d.ts +10 -2
- package/dist/spawn/respawn-cycle-escalation.d.ts.map +1 -1
- package/dist/spawn/respawn-cycle-escalation.js +16 -2
- package/dist/spawn/respawn-cycle-escalation.js.map +1 -1
- package/dist/spawn/routing-decider-spawn.d.ts +93 -0
- package/dist/spawn/routing-decider-spawn.d.ts.map +1 -0
- package/dist/spawn/routing-decider-spawn.js +185 -0
- package/dist/spawn/routing-decider-spawn.js.map +1 -0
- package/dist/spawn/routing-decider.d.ts +42 -0
- package/dist/spawn/routing-decider.d.ts.map +1 -0
- package/dist/spawn/routing-decider.js +95 -0
- package/dist/spawn/routing-decider.js.map +1 -0
- package/dist/spawn/shared.d.ts +8 -0
- package/dist/spawn/shared.d.ts.map +1 -1
- package/dist/spawn/shared.js +1 -1
- package/dist/spawn/shared.js.map +1 -1
- package/dist/spawn/spawn-decision.d.ts +24 -16
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +28 -11
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts +23 -7
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +54 -22
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/update/auto-update.d.ts +20 -3
- package/dist/update/auto-update.d.ts.map +1 -1
- package/dist/update/auto-update.js +8 -24
- package/dist/update/auto-update.js.map +1 -1
- package/dist/update/self-update.d.ts +43 -4
- package/dist/update/self-update.d.ts.map +1 -1
- package/dist/update/self-update.js +61 -38
- package/dist/update/self-update.js.map +1 -1
- package/dist/update/version-check.d.ts +29 -45
- package/dist/update/version-check.d.ts.map +1 -1
- package/dist/update/version-check.js +48 -79
- package/dist/update/version-check.js.map +1 -1
- package/dist/verify/failure-signature.d.ts +91 -0
- package/dist/verify/failure-signature.d.ts.map +1 -0
- package/dist/verify/failure-signature.js +233 -0
- package/dist/verify/failure-signature.js.map +1 -0
- package/dist/verify/shortfall-repeat.d.ts +12 -9
- package/dist/verify/shortfall-repeat.d.ts.map +1 -1
- package/dist/verify/shortfall-repeat.js +38 -14
- package/dist/verify/shortfall-repeat.js.map +1 -1
- package/dist/verify/stall-detectors.d.ts +19 -43
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +26 -101
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/unreviewed-settle-detector.d.ts +8 -0
- package/dist/verify/unreviewed-settle-detector.d.ts.map +1 -1
- package/dist/verify/unreviewed-settle-detector.js +15 -1
- package/dist/verify/unreviewed-settle-detector.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +14 -2
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +8 -2
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +62 -14
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +101 -28
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verify-gate-stall.d.ts +116 -0
- package/dist/verify/verify-gate-stall.d.ts.map +1 -0
- package/dist/verify/verify-gate-stall.js +169 -0
- package/dist/verify/verify-gate-stall.js.map +1 -0
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +2 -1
- package/dist/verify/verify-restatement.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,31 +1,94 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The agent_resolvable ROUTING HAND-OFF (formerly the promotion backstop).
|
|
3
|
+
*
|
|
4
|
+
* agent_resolvable filings are machine-owned: hidden from the operator inbox and
|
|
5
|
+
* ridden into the focus's next coding spawn, whose agent resolves or routes each.
|
|
6
|
+
* Every daemon detector files into this lane (the createEscalation chokepoint
|
|
7
|
+
* turns any other disposition into an OBSERVATION, metadata.observation), so the
|
|
8
|
+
* daemon has NO human-facing route of its own. Some observations no coding spawn
|
|
9
|
+
* will ever route: the focus is un-armed or stop-held, the filing has no focus,
|
|
10
|
+
* the condition outlives a converged focus, or spawns rode it in and none cleared
|
|
11
|
+
* it. This module is how those still reach a decision.
|
|
12
|
+
*
|
|
13
|
+
* Only an AGENT makes a filing human-facing. The old backstop refiled such a
|
|
14
|
+
* filing as needs_operator deterministically -- surfacing it to a human with no
|
|
15
|
+
* agent deciding (the verify shortfall this delivery closes). Now the org-wide
|
|
16
|
+
* sweep HANDS each eligible observation to a one-shot ROUTING DECIDER
|
|
17
|
+
* (spawn/routing-decider.ts, injected here as `decide`): an agent that assembles
|
|
18
|
+
* the intent ladder, then resolves the condition itself, declines noise, keeps it
|
|
19
|
+
* in the lane with a recorded decision, or files ONE telora_agent escalate naming
|
|
20
|
+
* the specific act only a human can perform, with sourceEscalationId lineage.
|
|
21
|
+
*
|
|
22
|
+
* ELIGIBILITY (evaluateCandidate):
|
|
23
|
+
* - immediately, with no age bound:
|
|
24
|
+
* stop_held -- anchored to a focus a stop-kind hold blocks (isStopHoldObservation
|
|
25
|
+
* on any open observation of that focus): no coding team spawns there.
|
|
26
|
+
* unreachable -- no focus anchor, or an un-armed focus: no coding spawn reaches it.
|
|
27
|
+
* outlives_focus -- its focus retired but the condition outlives it (agent-resolvable-retirement.ts).
|
|
28
|
+
* - past the age bound (TELORA_AGENT_RESOLVABLE_PROMOTE_HOURS), on RECORDED ATTEMPT
|
|
29
|
+
* EVIDENCE (promotionBasis): 'exhausted' (>= minAttempts agent sessions ran on its
|
|
30
|
+
* focus and none cleared it) or 'unreachable' (a zero-attempt observation). Open-age
|
|
31
|
+
* alone never hands off a plain filing.
|
|
32
|
+
* A focus-scoped candidate on a retired focus is still retired auto_swept.
|
|
33
|
+
*
|
|
34
|
+
* BOUNDS: at most maxPerSweep hand-offs per sweep (ROUTING_DECIDER_MAX_PER_SWEEP),
|
|
35
|
+
* each needing a governor slot inside the decider. Each hand-off whose decider RAN is
|
|
36
|
+
* recorded on the observation (metadata decider_attempts / last_decided_at /
|
|
37
|
+
* last_decider_outcome) and is not re-handed inside the decider window. A decider
|
|
38
|
+
* that cannot run (no slot, spawn error) or fails leaves the observation OPEN in the
|
|
39
|
+
* lane -- there is no deterministic human fallback -- and is counted `undecided` in
|
|
40
|
+
* the sweep counts the loop tick logs.
|
|
41
|
+
*
|
|
42
|
+
* CLOSE THE SOURCE: an open human-lane row whose metadata.originalEscalationId names
|
|
43
|
+
* an open observation means a decider already made it human-facing; the sweep closes
|
|
44
|
+
* the observation auto_swept (no actor, so never judged -- the mis-route measurement
|
|
45
|
+
* judges the decider row's eventual resolver against this source's lane).
|
|
46
|
+
*/
|
|
47
|
+
import { type EscalationResolutionClass } from '@telora/daemon-core';
|
|
48
|
+
import { type FocusRetirementDeps, type PromotionFocusSnapshot } from './agent-resolvable-retirement.js';
|
|
49
|
+
import { type AgentResolvableItem, type LineageCarrier, type OrgAgentResolvableItem } from './escalation-consumption.js';
|
|
50
|
+
import { type CallApiDeps } from './shared.js';
|
|
51
|
+
/** Default hours an agent_resolvable filing may stay open before the attempt-evidence gate applies. */
|
|
4
52
|
export declare const DEFAULT_AGENT_RESOLVABLE_PROMOTE_HOURS = 24;
|
|
5
53
|
/**
|
|
6
54
|
* Minimum recorded agent sessions on a filing's focus (since it was created)
|
|
7
|
-
* before
|
|
8
|
-
* spawns rode
|
|
9
|
-
* first attempt. A candidate below this floor is NOT promoted regardless of age.
|
|
55
|
+
* before an over-age filing is handed to a routing decider on the 'exhausted'
|
|
56
|
+
* basis: at least this many spawns rode it in and none cleared it.
|
|
10
57
|
*/
|
|
11
58
|
export declare const DEFAULT_AGENT_RESOLVABLE_PROMOTE_MIN_ATTEMPTS = 1;
|
|
12
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Hand-offs per sweep. Recorded choice: 2. Each hand-off is an Opus one-shot
|
|
61
|
+
* session (spawn/routing-decider-spawn.ts ROUTING_DECIDER_MODEL); on the 30-minute
|
|
62
|
+
* sweep cadence 2 bounds worst-case decider spend to ~96 sessions/day while a
|
|
63
|
+
* backlog still drains in priority order (stop_held first). Eligible observations
|
|
64
|
+
* past the cap are counted `deferred` and handed on a later sweep.
|
|
65
|
+
*/
|
|
66
|
+
export declare const ROUTING_DECIDER_MAX_PER_SWEEP = 2;
|
|
67
|
+
/** Pure: whether a filing's recorded attempts meet the floor. */
|
|
13
68
|
export declare function meetsAttemptFloor(attempts: number, minAttempts: number): boolean;
|
|
69
|
+
/** Why an observation is handed to a routing decider (see the module ELIGIBILITY). */
|
|
70
|
+
export type HandoffBasis = 'exhausted' | 'unreachable' | 'outlives_focus' | 'stop_held';
|
|
71
|
+
/**
|
|
72
|
+
* Pure: the evidence basis on which an OVER-AGE candidate is handed off, or null
|
|
73
|
+
* (it stays in the machine lane).
|
|
74
|
+
* - 'exhausted': at least minAttempts agent sessions ran on its focus since it
|
|
75
|
+
* was filed and none cleared it.
|
|
76
|
+
* - 'unreachable': it is a detector OBSERVATION and NO agent session has reached it.
|
|
77
|
+
* A plain (non-observation) filing with zero attempts is not handed off.
|
|
78
|
+
*/
|
|
79
|
+
export declare function promotionBasis(attempts: number, minAttempts: number, isObservation: boolean): 'exhausted' | 'unreachable' | null;
|
|
80
|
+
/** Pure: whole hours a filing has been open (>= 1; an unparseable createdAt reads as 1). */
|
|
81
|
+
export declare function openAgeHours(createdAt: string, nowMs: number): number;
|
|
14
82
|
/**
|
|
15
|
-
* Resolve the
|
|
16
|
-
* env-config -- the single declaration site for every operational knob
|
|
83
|
+
* Resolve the age bound (hours -> ms) from the typed, Zod-validated env-config
|
|
17
84
|
* (packages/daemon-core/src/env-config.ts). An unset value yields the schema
|
|
18
|
-
* default
|
|
19
|
-
* at startup rather than silently degrading to a default here.
|
|
20
|
-
*
|
|
21
|
-
* Same shape as resolveStuckBranchThresholdMs in merge-back-loop.ts.
|
|
85
|
+
* default; an invalid one fails loudly at startup.
|
|
22
86
|
*/
|
|
23
87
|
export declare function resolveAgentResolvablePromoteMs(env?: NodeJS.ProcessEnv): number;
|
|
24
88
|
/**
|
|
25
|
-
* Pure: split
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* as fresh (ride) -- promotion must never fire on a missing timestamp.
|
|
89
|
+
* Pure: split open filings into the ones still within the age bound (ride) and
|
|
90
|
+
* the ones past it (promote = over-age candidates). An absent/unparseable
|
|
91
|
+
* createdAt is treated as fresh -- nothing is ever decided on a missing timestamp.
|
|
29
92
|
*/
|
|
30
93
|
export declare function partitionAgentResolvableByAge<T extends {
|
|
31
94
|
createdAt: string;
|
|
@@ -33,140 +96,125 @@ export declare function partitionAgentResolvableByAge<T extends {
|
|
|
33
96
|
ride: T[];
|
|
34
97
|
promote: T[];
|
|
35
98
|
};
|
|
36
|
-
/** The cause key that makes a promotion refile idempotent (one per original filing). */
|
|
37
|
-
export declare function agentResolvablePromotionCauseKey(originalEscalationId: string): string;
|
|
38
|
-
/** escalation_kind for a promoted (formerly agent_resolvable) filing. */
|
|
39
|
-
export declare const AGENT_RESOLVABLE_PROMOTED_KIND = "agent_resolvable_promoted";
|
|
40
99
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* Without this, a candidate filed at exactly the cap (Nexus notifications fit to
|
|
48
|
-
* ESCALATION_DESCRIPTION_MAX with zero headroom) produced a ~5300-char refile the
|
|
49
|
-
* edge rejected on every sweep tick -- the row could never leave the machine
|
|
50
|
-
* lane, and `description` is not writable through product-api to trim in place.
|
|
51
|
-
* Modeled on nexus/return.ts fitNotificationDescription (invariant head kept,
|
|
52
|
-
* variable tail trimmed with a pointer). Pure + exported for direct unit testing.
|
|
53
|
-
*/
|
|
54
|
-
export declare function fitPromotionDescription(head: string, body: string, originalFilingId: string, cap?: number): string;
|
|
55
|
-
/**
|
|
56
|
-
* Pure: build the needs_operator refile params for a filing the machine could
|
|
57
|
-
* not resolve autonomously. Carries the original description + kind so the
|
|
58
|
-
* operator sees what was tried and why it now needs them; anchored to the focus
|
|
59
|
-
* WHEN one is present.
|
|
60
|
-
*
|
|
61
|
-
* focusId is OPTIONAL. The case that most needs the backstop -- a filing from an
|
|
62
|
-
* interactive MCP session -- carries no focus by construction, and the
|
|
63
|
-
* needs_operator refile does not need a focus to be VISIBLE: the operator inbox
|
|
64
|
-
* predicate (isOperatorInboxDisposition, src/lib/escalations.ts) keys on
|
|
65
|
-
* disposition alone, so an unanchored needs_operator promotion is renderable. An
|
|
66
|
-
* anchorless promotion simply files org-scoped with an empty anchor; a
|
|
67
|
-
* focus-anchored one still stamps the focus for provenance.
|
|
100
|
+
* Pure: whether an open filing is a STOP-kind hold observation -- one whose presence
|
|
101
|
+
* blocks the focus's respawn, so no coding team will reach that focus's observations.
|
|
102
|
+
* The rule is the holds contract's ONE definition, isMachineStopObservation
|
|
103
|
+
* (queries/holds.ts: a MACHINE_STOP_KINDS observation carrying its detector's
|
|
104
|
+
* proposed_human_act), plus a review_coverage_incomplete observation, which the
|
|
105
|
+
* respawn guard parks by kind.
|
|
68
106
|
*/
|
|
69
|
-
export declare function
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
export
|
|
107
|
+
export declare function isStopHoldObservation(item: Pick<AgentResolvableItem, 'escalationKind' | 'observation' | 'metadata'>): boolean;
|
|
108
|
+
/** Pure: the focuses a stop-kind hold observation blocks. */
|
|
109
|
+
export declare function stopHeldFocusIds(items: readonly OrgAgentResolvableItem[]): Set<string>;
|
|
110
|
+
/** metadata keys a hand-off writes on the observation (escalation_update shallow-merges them). */
|
|
111
|
+
export declare const DECIDER_ATTEMPTS_KEY = "decider_attempts";
|
|
112
|
+
export declare const LAST_DECIDED_AT_KEY = "last_decided_at";
|
|
113
|
+
export declare const LAST_DECIDER_OUTCOME_KEY = "last_decider_outcome";
|
|
114
|
+
/** The metadata patch one decider attempt records. */
|
|
115
|
+
export interface DeciderAttemptPatch {
|
|
116
|
+
[DECIDER_ATTEMPTS_KEY]: number;
|
|
117
|
+
[LAST_DECIDED_AT_KEY]: string;
|
|
118
|
+
[LAST_DECIDER_OUTCOME_KEY]: string;
|
|
119
|
+
}
|
|
120
|
+
/** Pure: the recorded decider attempts on a row (0 / null when absent or malformed). */
|
|
121
|
+
export declare function readDeciderAttempts(metadata: Record<string, unknown> | undefined): {
|
|
122
|
+
attempts: number;
|
|
123
|
+
lastDecidedAtMs: number | null;
|
|
124
|
+
};
|
|
125
|
+
/** Pure: whether a decider already ran on this row inside the window (do not re-hand it). */
|
|
126
|
+
export declare function withinDeciderWindow(metadata: Record<string, unknown> | undefined, nowMs: number, windowMs: number): boolean;
|
|
127
|
+
/** Record one decider attempt on the observation row (escalation_update merges fields.metadata). */
|
|
128
|
+
export declare function recordDeciderAttempt(escalationId: string, patch: DeciderAttemptPatch, deps?: CallApiDeps): Promise<void>;
|
|
129
|
+
/** What a routing decider is handed for one observation. */
|
|
130
|
+
export interface RoutingDecisionRequest {
|
|
131
|
+
item: OrgAgentResolvableItem;
|
|
132
|
+
basis: HandoffBasis;
|
|
133
|
+
/** Recorded agent sessions on its focus since it was filed (0 when not counted). */
|
|
134
|
+
attempts: number;
|
|
135
|
+
ageHours: number;
|
|
136
|
+
/** Decider attempts already recorded on the row, before this one. */
|
|
137
|
+
deciderAttempts: number;
|
|
138
|
+
/** The live focus's title + arm state, when the retirement read found it. */
|
|
139
|
+
focus?: PromotionFocusSnapshot;
|
|
140
|
+
/** Set on the outlives_focus basis: why the focus retired. */
|
|
141
|
+
retiredFocusReason?: string;
|
|
142
|
+
}
|
|
143
|
+
/** A routing decider's outcome. */
|
|
144
|
+
export interface RoutingDecisionResult {
|
|
145
|
+
/** Whether a decider session actually started (a slot was held and the process spawned). */
|
|
146
|
+
ran: boolean;
|
|
147
|
+
/** Whether it completed cleanly (exit 0, no timeout). A decision it made is on the row, not here. */
|
|
148
|
+
decided: boolean;
|
|
149
|
+
/** Short outcome, recorded as last_decider_outcome and logged. */
|
|
150
|
+
detail: string;
|
|
151
|
+
}
|
|
152
|
+
export type RoutingDecider = (request: RoutingDecisionRequest) => Promise<RoutingDecisionResult>;
|
|
153
|
+
/** The default when no decider is wired: nothing runs, every eligible observation stays in the lane (counted undecided). */
|
|
154
|
+
export declare const NO_ROUTING_DECIDER: RoutingDecider;
|
|
155
|
+
/** Pure: hand-off order -- stop_held, unreachable, outlives_focus, exhausted; oldest first within a basis. */
|
|
156
|
+
export declare function orderHandoffs(requests: readonly RoutingDecisionRequest[]): RoutingDecisionRequest[];
|
|
157
|
+
/** Injected IO for the spawn-time reconcile (real defaults; tests inject stubs). */
|
|
158
|
+
export interface AgentResolvablePromotionDeps extends FocusRetirementDeps {
|
|
76
159
|
listOpen: (focusId: string) => Promise<AgentResolvableItem[]>;
|
|
77
|
-
markResolved: (id: string, notes?: string) => Promise<void>;
|
|
78
|
-
file: (params: FileEscalationIdempotentParams) => Promise<FileEscalationIdempotentResult>;
|
|
79
|
-
/** Count agent sessions on a focus since an ISO timestamp (the attempt evidence). */
|
|
80
|
-
countSessionsSince: (focusId: string, since: string) => Promise<number>;
|
|
81
160
|
now?: () => number;
|
|
82
161
|
thresholdMs: number;
|
|
83
|
-
/** Minimum recorded attempts before a candidate may promote (see meetsAttemptFloor). */
|
|
84
|
-
minAttempts: number;
|
|
85
|
-
/** Whether the candidate's focus has retired (converged / complete / cancelled). */
|
|
86
|
-
focusRetired?: (focusId: string, ctx: {
|
|
87
|
-
organizationId: string;
|
|
88
|
-
productId?: string;
|
|
89
|
-
}) => Promise<{
|
|
90
|
-
retire: boolean;
|
|
91
|
-
reason: string;
|
|
92
|
-
}>;
|
|
93
|
-
/** Retire a stale candidate on a retired focus: resolve auto_swept. */
|
|
94
|
-
retireSwept?: (id: string, notes?: string) => Promise<void>;
|
|
95
162
|
}
|
|
96
163
|
/**
|
|
97
|
-
* Reconcile a focus's open agent_resolvable filings and return the ones that
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* to ride (it will be retried next spawn), never thrown -- reconciling must never
|
|
104
|
-
* block a spawn. This is the single entry point the spawn path calls instead of
|
|
105
|
-
* listOpenAgentResolvableForFocus.
|
|
106
|
-
*/
|
|
107
|
-
/**
|
|
108
|
-
* Whether a candidate's focus has RETIRED -- converged (every delivery done or
|
|
109
|
-
* cancelled) or no longer active (its status is complete/cancelled, so it is
|
|
110
|
-
* absent from the org's active-focus set). A candidate anchored to such a focus
|
|
111
|
-
* describes work that is finished; promoting it to a human would dump a stale row
|
|
112
|
-
* on the operator inbox (2026-09-09: escalation 9465a40e promoted onto a focus
|
|
113
|
-
* closed for hours). Fail-quiet: any read error returns not-retired, so a
|
|
114
|
-
* transient DB blip never wrongly retires a live candidate (it promotes as before).
|
|
164
|
+
* Reconcile a focus's open agent_resolvable filings and return the ones that ride
|
|
165
|
+
* into THIS spawn. The spawned agent is itself a routing authority over what rides
|
|
166
|
+
* in, so nothing is filed here: an over-age focus-scoped filing on a retired focus is
|
|
167
|
+
* retired auto_swept; every other filing rides (a condition outliving the focus rides
|
|
168
|
+
* too -- the org-wide sweep hands it to a routing decider). Best-effort: never throws
|
|
169
|
+
* past the list read. The single entry point the spawn path calls.
|
|
115
170
|
*/
|
|
116
|
-
export declare function defaultFocusRetired(focusId: string, ctx: {
|
|
117
|
-
organizationId: string;
|
|
118
|
-
productId?: string;
|
|
119
|
-
}): Promise<{
|
|
120
|
-
retire: boolean;
|
|
121
|
-
reason: string;
|
|
122
|
-
}>;
|
|
123
171
|
export declare function reconcileAgentResolvableForFocus(ctx: {
|
|
124
172
|
organizationId: string;
|
|
125
173
|
focusId: string;
|
|
126
174
|
productId?: string;
|
|
127
175
|
}, deps?: Partial<AgentResolvablePromotionDeps>): Promise<AgentResolvableItem[]>;
|
|
128
|
-
/** Counts a single org-wide
|
|
176
|
+
/** Counts a single org-wide sweep returns (logged by the loop tick; `undecided` is the exposed state). */
|
|
129
177
|
export interface AgentResolvableSweepCounts {
|
|
130
178
|
scanned: number;
|
|
131
|
-
promoted: number;
|
|
132
179
|
/** Candidates retired auto_swept because their focus had converged/terminated. */
|
|
133
180
|
retired: number;
|
|
181
|
+
/** Observations closed auto_swept because a decider-filed human-lane row carries their lineage. */
|
|
182
|
+
sourcesClosed: number;
|
|
183
|
+
/** Observations handed to a routing decider this sweep (<= maxPerSweep). */
|
|
184
|
+
handed: number;
|
|
185
|
+
/** Hand-offs whose decider completed cleanly. */
|
|
186
|
+
decided: number;
|
|
187
|
+
/** Hand-offs no decider completed (no slot, spawn error, failed run): they stay in the lane. */
|
|
188
|
+
undecided: number;
|
|
189
|
+
/** Eligible observations past the per-sweep cap, handed on a later sweep. */
|
|
190
|
+
deferred: number;
|
|
134
191
|
}
|
|
135
192
|
/** Injected IO for the org-wide sweep (real defaults; tests inject stubs). */
|
|
136
|
-
export interface AgentResolvableSweepDeps {
|
|
193
|
+
export interface AgentResolvableSweepDeps extends FocusRetirementDeps {
|
|
137
194
|
listOpenForOrg: () => Promise<OrgAgentResolvableItem[]>;
|
|
138
|
-
|
|
139
|
-
|
|
195
|
+
/** Open human-lane rows carrying an observation's lineage (metadata.originalEscalationId). */
|
|
196
|
+
listLineageCarriers: () => Promise<LineageCarrier[]>;
|
|
197
|
+
/** Resolve a row with its resolver class (a lineage-closed source is 'auto_swept'). */
|
|
198
|
+
markResolved: (id: string, resolutionClass: EscalationResolutionClass, notes?: string) => Promise<void>;
|
|
199
|
+
/** The routing decider (spawn/routing-decider.ts in production). */
|
|
200
|
+
decide: RoutingDecider;
|
|
201
|
+
recordDeciderAttempt: (id: string, patch: DeciderAttemptPatch) => Promise<void>;
|
|
140
202
|
/** Count agent sessions on a focus since an ISO timestamp (the attempt evidence). */
|
|
141
203
|
countSessionsSince: (focusId: string, since: string) => Promise<number>;
|
|
142
204
|
now?: () => number;
|
|
143
205
|
thresholdMs: number;
|
|
144
|
-
/** Minimum recorded attempts before
|
|
206
|
+
/** Minimum recorded attempts before an over-age candidate is handed off 'exhausted'. */
|
|
145
207
|
minAttempts: number;
|
|
146
|
-
/**
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
productId?: string;
|
|
150
|
-
}) => Promise<{
|
|
151
|
-
retire: boolean;
|
|
152
|
-
reason: string;
|
|
153
|
-
}>;
|
|
154
|
-
/** Retire a stale candidate on a retired focus: resolve auto_swept. */
|
|
155
|
-
retireSwept?: (id: string, notes?: string) => Promise<void>;
|
|
208
|
+
/** Do not re-hand a row a decider ran on within this window. Defaults to thresholdMs (one knob). */
|
|
209
|
+
deciderWindowMs?: number;
|
|
210
|
+
maxPerSweep: number;
|
|
156
211
|
}
|
|
157
212
|
/**
|
|
158
|
-
* Sweep the org's OPEN agent_resolvable filings
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
* The refile is org-scoped, so the ONLY hard requirement is an organizationId; a
|
|
165
|
-
* filing that lacks even that cannot be refiled and is skipped (logged). A focus
|
|
166
|
-
* anchor is NOT required: an interactive-session filing carries no focus by
|
|
167
|
-
* construction, yet its needs_operator promotion is still visible (the operator
|
|
168
|
-
* inbox keys on disposition, not on a focus), so an anchorless over-age filing IS
|
|
169
|
-
* promoted -- it is exactly the write-only-sink case this backstop must drain.
|
|
213
|
+
* Sweep the org's OPEN agent_resolvable filings: close the observations a decider
|
|
214
|
+
* already made human-facing, retire stale ones, and hand every eligible observation
|
|
215
|
+
* (see the module ELIGIBILITY) to the routing decider, bounded by maxPerSweep. The
|
|
216
|
+
* sweep itself never files an escalation. Best-effort per filing: a failure is
|
|
217
|
+
* logged and the filing left open for the next sweep, never thrown.
|
|
170
218
|
*/
|
|
171
219
|
export declare function sweepAgentResolvablePromotions(deps?: Partial<AgentResolvableSweepDeps>): Promise<AgentResolvableSweepCounts>;
|
|
172
220
|
//# sourceMappingURL=agent-resolvable-promotion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-resolvable-promotion.d.ts","sourceRoot":"","sources":["../../src/queries/agent-resolvable-promotion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-resolvable-promotion.d.ts","sourceRoot":"","sources":["../../src/queries/agent-resolvable-promotion.ts"],"names":[],"mappings":"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"}
|