@telora/daemon 0.21.165 → 0.21.178
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +6 -3
- package/dist/completion/completion-decision.d.ts +16 -0
- package/dist/completion/completion-decision.d.ts.map +1 -1
- package/dist/completion/completion-decision.js +15 -0
- package/dist/completion/completion-decision.js.map +1 -1
- package/dist/completion/event-escalations.d.ts +26 -0
- package/dist/completion/event-escalations.d.ts.map +1 -1
- package/dist/completion/event-escalations.js +77 -19
- package/dist/completion/event-escalations.js.map +1 -1
- package/dist/completion/event-phases.d.ts +7 -0
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +19 -0
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +1 -0
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/human-only-act.d.ts +43 -0
- package/dist/completion/human-only-act.d.ts.map +1 -0
- package/dist/completion/human-only-act.js +75 -0
- package/dist/completion/human-only-act.js.map +1 -0
- package/dist/completion/machine-remediable-demotion.d.ts +14 -0
- package/dist/completion/machine-remediable-demotion.d.ts.map +1 -1
- package/dist/completion/machine-remediable-demotion.js +24 -1
- package/dist/completion/machine-remediable-demotion.js.map +1 -1
- package/dist/completion/review-defect-detector.d.ts +9 -0
- package/dist/completion/review-defect-detector.d.ts.map +1 -1
- package/dist/completion/review-defect-detector.js +11 -0
- package/dist/completion/review-defect-detector.js.map +1 -1
- package/dist/completion/review-exit-deps.d.ts +51 -0
- package/dist/completion/review-exit-deps.d.ts.map +1 -0
- package/dist/completion/review-exit-deps.js +46 -0
- package/dist/completion/review-exit-deps.js.map +1 -0
- package/dist/completion/review-exit-escalations.d.ts +28 -0
- package/dist/completion/review-exit-escalations.d.ts.map +1 -1
- package/dist/completion/review-exit-escalations.js +36 -10
- package/dist/completion/review-exit-escalations.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts +2 -38
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +70 -45
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts +5 -1
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +5 -1
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/state-cascade.d.ts +11 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +18 -0
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts +15 -0
- package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler.js +13 -0
- package/dist/delivery/delivery-reconciler.js.map +1 -1
- package/dist/focus/focus-loop-registry.d.ts.map +1 -1
- package/dist/focus/focus-loop-registry.js +12 -0
- package/dist/focus/focus-loop-registry.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +40 -25
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/queries/agent-resolvable-aging.d.ts +88 -0
- package/dist/queries/agent-resolvable-aging.d.ts.map +1 -0
- package/dist/queries/agent-resolvable-aging.js +145 -0
- package/dist/queries/agent-resolvable-aging.js.map +1 -0
- package/dist/queries/agent-resolvable-promotion.d.ts +37 -8
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +77 -18
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts +14 -0
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +15 -0
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/focuses.d.ts +8 -0
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +19 -1
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/routing-measurement.d.ts +65 -0
- package/dist/queries/routing-measurement.d.ts.map +1 -0
- package/dist/queries/routing-measurement.js +109 -0
- package/dist/queries/routing-measurement.js.map +1 -0
- package/dist/queries/routing-quality.d.ts +70 -0
- package/dist/queries/routing-quality.d.ts.map +1 -0
- package/dist/queries/routing-quality.js +66 -0
- package/dist/queries/routing-quality.js.map +1 -0
- package/dist/queries/schemas.d.ts +6 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +6 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/sessions.d.ts +10 -0
- package/dist/queries/sessions.d.ts.map +1 -1
- package/dist/queries/sessions.js +14 -1
- package/dist/queries/sessions.js.map +1 -1
- package/dist/queries/source-reliability.d.ts +60 -0
- package/dist/queries/source-reliability.d.ts.map +1 -0
- package/dist/queries/source-reliability.js +70 -0
- package/dist/queries/source-reliability.js.map +1 -0
- package/dist/shell/control-state.d.ts +23 -7
- package/dist/shell/control-state.d.ts.map +1 -1
- package/dist/shell/control-state.js +41 -16
- package/dist/shell/control-state.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +9 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/package.json +3 -3
|
@@ -11,12 +11,24 @@
|
|
|
11
11
|
* PROMOTED to a human by resolving the machine-routed row and refiling the same
|
|
12
12
|
* content as a needs_operator escalation, which the operator inbox DOES show.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
14
|
+
* Gate: RECORDED ATTEMPT EVIDENCE, not elapsed open-age. Open-age was the
|
|
15
|
+
* original proxy for "it survived N spawn cycles unresolved", but the proxy is
|
|
16
|
+
* inverted in practice: a filing anchored to an un-armed or wedged focus ages
|
|
17
|
+
* past the bound having had ZERO agent sessions, and promoting it hands a human a
|
|
18
|
+
* FIRST attempt dressed up as an exhausted machine. So promotion now gates on the
|
|
19
|
+
* actual count of agent sessions that ran on the filing's focus since it was
|
|
20
|
+
* created (countFocusSessionsSince): a filing with zero recorded attempts NEVER
|
|
21
|
+
* promotes, regardless of age. Open-age is retained only as a cheap CANDIDATE
|
|
22
|
+
* pre-filter (don't even count sessions for a fresh filing, which matters for the
|
|
23
|
+
* org-wide sweep's up-to-500-row scan); the promotion DECISION is the attempt
|
|
24
|
+
* count, and the count is carried into the promoted row's metadata so the human
|
|
25
|
+
* lane shows the evidence of the machine attempts that failed.
|
|
26
|
+
*
|
|
27
|
+
* A filing that cannot accrue attempts -- one with no focus anchor -- therefore
|
|
28
|
+
* does not promote either: it has no machine lane to be attempted in. New
|
|
29
|
+
* anchorless agent_resolvable filings are refused at the filing boundary, and
|
|
30
|
+
* un-taken machine-lane filings are made observable by the aging observer rather
|
|
31
|
+
* than dumped on a human.
|
|
20
32
|
*
|
|
21
33
|
* Promotion is idempotent: the needs_operator refile rides the shared cause-keyed
|
|
22
34
|
* gate keyed on the original escalation id, and the source row is resolved in the
|
|
@@ -24,13 +36,25 @@
|
|
|
24
36
|
*/
|
|
25
37
|
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS, loadEnvConfig, } from '@telora/daemon-core';
|
|
26
38
|
import { markEscalationResolved as defaultMarkEscalationResolved } from './escalations.js';
|
|
39
|
+
import { countFocusSessionsSince as defaultCountFocusSessionsSince } from './sessions.js';
|
|
27
40
|
import { listOpenAgentResolvableForFocus as defaultListOpenAgentResolvableForFocus, listOpenAgentResolvableForOrg as defaultListOpenAgentResolvableForOrg } from './escalation-consumption.js';
|
|
28
41
|
import { fileEscalationIdempotent as defaultFileEscalationIdempotent, } from './escalation-suppression.js';
|
|
29
42
|
import { computeCauseKey } from './cause-key.js';
|
|
30
43
|
import { createLogger } from '../shell/log.js';
|
|
31
44
|
const log = createLogger({ module: 'escalations' });
|
|
32
|
-
/** Default hours an agent_resolvable filing may stay open before promotion. */
|
|
45
|
+
/** Default hours an agent_resolvable filing may stay open before it is a promotion CANDIDATE. */
|
|
33
46
|
export const DEFAULT_AGENT_RESOLVABLE_PROMOTE_HOURS = 24;
|
|
47
|
+
/**
|
|
48
|
+
* Minimum recorded agent sessions on a filing's focus (since it was created)
|
|
49
|
+
* before it may be promoted to a human. The decisive gate: at least this many
|
|
50
|
+
* spawns rode the filing in and none cleared it -- an exhausted machine, not a
|
|
51
|
+
* first attempt. A candidate below this floor is NOT promoted regardless of age.
|
|
52
|
+
*/
|
|
53
|
+
export const DEFAULT_AGENT_RESOLVABLE_PROMOTE_MIN_ATTEMPTS = 1;
|
|
54
|
+
/** Pure: whether a filing's recorded attempts meet the promotion floor. */
|
|
55
|
+
export function meetsAttemptFloor(attempts, minAttempts) {
|
|
56
|
+
return attempts >= minAttempts;
|
|
57
|
+
}
|
|
34
58
|
/**
|
|
35
59
|
* Resolve the promotion threshold (hours -> ms) from the typed, Zod-validated
|
|
36
60
|
* env-config -- the single declaration site for every operational knob
|
|
@@ -83,29 +107,31 @@ export const AGENT_RESOLVABLE_PROMOTED_KIND = 'agent_resolvable_promoted';
|
|
|
83
107
|
* anchorless promotion simply files org-scoped with an empty anchor; a
|
|
84
108
|
* focus-anchored one still stamps the focus for provenance.
|
|
85
109
|
*/
|
|
86
|
-
export function buildAgentResolvablePromotionParams(item, ctx, ageHours) {
|
|
110
|
+
export function buildAgentResolvablePromotionParams(item, ctx, ageHours, attempts) {
|
|
87
111
|
const originalKind = item.escalationKind ?? 'agent_resolvable';
|
|
88
112
|
return {
|
|
89
113
|
causeKey: agentResolvablePromotionCauseKey(item.id),
|
|
90
114
|
organizationId: ctx.organizationId,
|
|
91
115
|
issueId: null,
|
|
92
116
|
reasonType: ESCALATION_REASONS.BLOCKED_BY_EXTERNAL,
|
|
93
|
-
// It was machine-routable, but
|
|
94
|
-
//
|
|
117
|
+
// It was machine-routable, but ${attempts} agent session(s) rode it in over
|
|
118
|
+
// ~${ageHours}h and none cleared it -- an exhausted machine, so a human takes it.
|
|
95
119
|
disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
|
|
96
120
|
// Anchor to the focus only when one exists; an anchorless filing files
|
|
97
121
|
// org-scoped (still visible in the operator inbox, keyed on disposition).
|
|
98
122
|
anchor: ctx.focusId ? { focusId: ctx.focusId } : {},
|
|
99
123
|
...(ctx.productId ? { productId: ctx.productId } : {}),
|
|
100
124
|
escalationKind: AGENT_RESOLVABLE_PROMOTED_KIND,
|
|
101
|
-
description: `A machine-routable (agent_resolvable) filing has
|
|
102
|
-
`
|
|
125
|
+
description: `A machine-routable (agent_resolvable) filing has had ${attempts} agent ` +
|
|
126
|
+
`session(s) on its focus (over ~${ageHours}h) without any of them clearing ` +
|
|
127
|
+
`it, so it is promoted to you.\n\n` +
|
|
103
128
|
`**Original kind:** ${originalKind}\n` +
|
|
104
|
-
`**Original filing:** ${item.id}\n
|
|
129
|
+
`**Original filing:** ${item.id}\n` +
|
|
130
|
+
`**Machine attempts that failed:** ${attempts}\n\n` +
|
|
105
131
|
`${item.description}`,
|
|
106
|
-
whatWasTried: `The filing rode into the focus's coding spawns
|
|
107
|
-
`(disposition agent_resolvable) but was
|
|
108
|
-
`exhausted its autonomous attempts.`,
|
|
132
|
+
whatWasTried: `The filing rode into the focus's coding spawns across ${attempts} recorded ` +
|
|
133
|
+
`agent session(s) over ~${ageHours}h (disposition agent_resolvable) but was ` +
|
|
134
|
+
`never resolved, so the machine has exhausted its autonomous attempts.`,
|
|
109
135
|
helpNeeded: `Resolve the underlying condition manually, or re-file with clearer intent if ` +
|
|
110
136
|
`the machine cannot act on it.`,
|
|
111
137
|
metadata: {
|
|
@@ -113,6 +139,10 @@ export function buildAgentResolvablePromotionParams(item, ctx, ageHours) {
|
|
|
113
139
|
originalEscalationId: item.id,
|
|
114
140
|
originalKind,
|
|
115
141
|
ageHours,
|
|
142
|
+
// Attempt evidence: the recorded agent sessions that failed to clear this
|
|
143
|
+
// filing. This is the proof the human lane carries that the machine was
|
|
144
|
+
// exhausted, not merely that time elapsed.
|
|
145
|
+
spawnsInWindow: attempts,
|
|
116
146
|
},
|
|
117
147
|
};
|
|
118
148
|
}
|
|
@@ -121,8 +151,10 @@ function defaultDeps() {
|
|
|
121
151
|
listOpen: defaultListOpenAgentResolvableForFocus,
|
|
122
152
|
markResolved: defaultMarkEscalationResolved,
|
|
123
153
|
file: defaultFileEscalationIdempotent,
|
|
154
|
+
countSessionsSince: defaultCountFocusSessionsSince,
|
|
124
155
|
now: () => Date.now(),
|
|
125
156
|
thresholdMs: resolveAgentResolvablePromoteMs(),
|
|
157
|
+
minAttempts: DEFAULT_AGENT_RESOLVABLE_PROMOTE_MIN_ATTEMPTS,
|
|
126
158
|
};
|
|
127
159
|
}
|
|
128
160
|
/**
|
|
@@ -142,8 +174,19 @@ export async function reconcileAgentResolvableForFocus(ctx, deps = {}) {
|
|
|
142
174
|
const { ride, promote } = partitionAgentResolvableByAge(open, (d.now ?? Date.now)(), d.thresholdMs);
|
|
143
175
|
for (const item of promote) {
|
|
144
176
|
const ageHours = Math.max(1, Math.floor(((d.now ?? Date.now)() - Date.parse(item.createdAt)) / 3_600_000));
|
|
177
|
+
// Attempt-evidence gate: only promote a candidate the machine actually TRIED
|
|
178
|
+
// and failed to clear. A candidate with zero agent sessions since it was
|
|
179
|
+
// filed is not exhausted -- it rides on (and the aging observer keeps it
|
|
180
|
+
// visible in the machine lane), never dumped on a human as a first attempt.
|
|
181
|
+
const attempts = await d.countSessionsSince(ctx.focusId, item.createdAt);
|
|
182
|
+
if (!meetsAttemptFloor(attempts, d.minAttempts)) {
|
|
183
|
+
log.info(`[escalations] Not promoting agent_resolvable ${item.id} (focus ${ctx.focusId}): ` +
|
|
184
|
+
`${attempts} recorded attempt(s) < floor ${d.minAttempts}; it rides on unattempted`);
|
|
185
|
+
ride.push(item);
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
145
188
|
try {
|
|
146
|
-
const result = await d.file(buildAgentResolvablePromotionParams(item, ctx, ageHours));
|
|
189
|
+
const result = await d.file(buildAgentResolvablePromotionParams(item, ctx, ageHours, attempts));
|
|
147
190
|
// Only retire the machine-routed row once the human-facing refile is in
|
|
148
191
|
// place (filed OR already suppressed by a prior promotion) -- never resolve
|
|
149
192
|
// the source without a landing spot, which would drop the signal entirely.
|
|
@@ -166,8 +209,10 @@ function defaultSweepDeps() {
|
|
|
166
209
|
listOpenForOrg: defaultListOpenAgentResolvableForOrg,
|
|
167
210
|
markResolved: defaultMarkEscalationResolved,
|
|
168
211
|
file: defaultFileEscalationIdempotent,
|
|
212
|
+
countSessionsSince: defaultCountFocusSessionsSince,
|
|
169
213
|
now: () => Date.now(),
|
|
170
214
|
thresholdMs: resolveAgentResolvablePromoteMs(),
|
|
215
|
+
minAttempts: DEFAULT_AGENT_RESOLVABLE_PROMOTE_MIN_ATTEMPTS,
|
|
171
216
|
};
|
|
172
217
|
}
|
|
173
218
|
/**
|
|
@@ -195,6 +240,20 @@ export async function sweepAgentResolvablePromotions(deps = {}) {
|
|
|
195
240
|
`cannot org-scope the refile (skipping)`);
|
|
196
241
|
continue;
|
|
197
242
|
}
|
|
243
|
+
// Attempt-evidence gate. A filing with no focus anchor cannot accrue agent
|
|
244
|
+
// sessions -- there is no machine lane to be attempted in -- so it has zero
|
|
245
|
+
// attempts and is NOT promoted (new anchorless filings are refused at the
|
|
246
|
+
// filing boundary; the aging observer keeps any residue visible). A
|
|
247
|
+
// focus-anchored candidate promotes only once the machine has actually tried
|
|
248
|
+
// and failed it minAttempts times.
|
|
249
|
+
const attempts = item.focusId
|
|
250
|
+
? await d.countSessionsSince(item.focusId, item.createdAt)
|
|
251
|
+
: 0;
|
|
252
|
+
if (!meetsAttemptFloor(attempts, d.minAttempts)) {
|
|
253
|
+
log.info(`[escalations] Org-wide sweep not promoting agent_resolvable ${item.id} ` +
|
|
254
|
+
`(focus ${item.focusId ?? '<none>'}): ${attempts} recorded attempt(s) < floor ${d.minAttempts}`);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
198
257
|
const ageHours = Math.max(1, Math.floor(((d.now ?? Date.now)() - Date.parse(item.createdAt)) / 3_600_000));
|
|
199
258
|
const ctx = {
|
|
200
259
|
organizationId: item.organizationId,
|
|
@@ -202,7 +261,7 @@ export async function sweepAgentResolvablePromotions(deps = {}) {
|
|
|
202
261
|
...(item.productId ? { productId: item.productId } : {}),
|
|
203
262
|
};
|
|
204
263
|
try {
|
|
205
|
-
const result = await d.file(buildAgentResolvablePromotionParams(item, ctx, ageHours));
|
|
264
|
+
const result = await d.file(buildAgentResolvablePromotionParams(item, ctx, ageHours, attempts));
|
|
206
265
|
// Only retire the source once the human-facing refile is in place (filed OR
|
|
207
266
|
// already suppressed by a prior promotion) -- never resolve without a
|
|
208
267
|
// landing spot, which would drop the signal entirely.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-resolvable-promotion.js","sourceRoot":"","sources":["../../src/queries/agent-resolvable-promotion.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-resolvable-promotion.js","sourceRoot":"","sources":["../../src/queries/agent-resolvable-promotion.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export interface AgentResolvableEscalationRow {
|
|
|
22
22
|
id: string;
|
|
23
23
|
status?: string | null;
|
|
24
24
|
disposition?: string | null;
|
|
25
|
+
resolutionClass?: string | null;
|
|
25
26
|
escalationKind?: string | null;
|
|
26
27
|
description?: string | null;
|
|
27
28
|
createdAt?: string | null;
|
|
@@ -29,6 +30,19 @@ export interface AgentResolvableEscalationRow {
|
|
|
29
30
|
focusId?: string | null;
|
|
30
31
|
productId?: string | null;
|
|
31
32
|
}
|
|
33
|
+
/** A resolved filing reduced to the two axes the routing-quality measure differences. */
|
|
34
|
+
export interface RoutingSampleRow {
|
|
35
|
+
disposition: string | null;
|
|
36
|
+
resolutionClass: string | null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sample the org's RESOLVED escalations, reduced to (disposition, resolution_class)
|
|
40
|
+
* -- the live population the routing-quality measure differences to compute the
|
|
41
|
+
* mis-route rate. Both axes ride in the summary base of transformEscalation, so
|
|
42
|
+
* detail:'summary' suffices. A bounded recent page (default 500) is enough for a
|
|
43
|
+
* rate; this is a measurement, not an exhaustive audit.
|
|
44
|
+
*/
|
|
45
|
+
export declare function listResolvedRoutingSample(deps?: CallApiDeps, limit?: number): Promise<RoutingSampleRow[]>;
|
|
32
46
|
/**
|
|
33
47
|
* An open agent_resolvable filing carrying its OWN anchor (org/focus/product).
|
|
34
48
|
* The focus-scoped read (listOpenAgentResolvableForFocus) already knows the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation-consumption.d.ts","sourceRoot":"","sources":["../../src/queries/escalation-consumption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAIxD,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sEAAsE;AACtE,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,4BAA4B,EAAE,GAC5C,mBAAmB,EAAE,CAavB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMrG;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,4BAA4B,EAAE,GAC5C,sBAAsB,EAAE,CAgB1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,6BAA6B,CACjD,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAanC;AAED,wFAAwF;AACxF,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uEAAuE;IACvE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,UAAU,sBAAuB,SAAQ,4BAA4B;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,sBAAsB,EAAE,GACtC,wBAAwB,EAAE,CAqB5B;AAED;;;;;GAKG;AACH,wBAAsB,kCAAkC,CACtD,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAQrC"}
|
|
1
|
+
{"version":3,"file":"escalation-consumption.d.ts","sourceRoot":"","sources":["../../src/queries/escalation-consumption.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,21 @@
|
|
|
12
12
|
import { callApi } from './shared.js';
|
|
13
13
|
import { OPEN_ESCALATION_STATUSES } from './holds.js';
|
|
14
14
|
import { DISPOSITION_AGENT_RESOLVABLE, DISPOSITION_NEEDS_INTENT } from './escalation-dispositions.js';
|
|
15
|
+
/**
|
|
16
|
+
* Sample the org's RESOLVED escalations, reduced to (disposition, resolution_class)
|
|
17
|
+
* -- the live population the routing-quality measure differences to compute the
|
|
18
|
+
* mis-route rate. Both axes ride in the summary base of transformEscalation, so
|
|
19
|
+
* detail:'summary' suffices. A bounded recent page (default 500) is enough for a
|
|
20
|
+
* rate; this is a measurement, not an exhaustive audit.
|
|
21
|
+
*/
|
|
22
|
+
export async function listResolvedRoutingSample(deps = {}, limit = 500) {
|
|
23
|
+
const call = deps.callApi ?? callApi;
|
|
24
|
+
const result = await call('escalation_list', { fields: { status: 'resolved' }, limit, detail: 'summary' });
|
|
25
|
+
return (result.escalations ?? []).map((e) => ({
|
|
26
|
+
disposition: e.disposition ?? null,
|
|
27
|
+
resolutionClass: e.resolutionClass ?? null,
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
15
30
|
/**
|
|
16
31
|
* Pure: keep only the OPEN, agent_resolvable rows and shape them into
|
|
17
32
|
* AgentResolvableItems. The status re-check is defense-in-depth so a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation-consumption.js","sourceRoot":"","sources":["../../src/queries/escalation-consumption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAoB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"escalation-consumption.js","sourceRoot":"","sources":["../../src/queries/escalation-consumption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAoB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AA8BtG;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAoB,EAAE,EACtB,KAAK,GAAG,GAAG;IAEX,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,iBAAiB,EACjB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAC7D,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QAClC,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;KAC3C,CAAC,CAAC,CAAC;AACN,CAAC;AAeD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA6C;IAE7C,OAAO,IAAI;SACR,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,WAAW,KAAK,4BAA4B,CACjD;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QACxC,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;KAC7B,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,OAAe;IACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkD,iBAAiB,EAAE;QAC/F,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE;QACvD,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IACH,OAAO,sBAAsB,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA6C;IAE7C,OAAO,IAAI;SACR,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,WAAW,KAAK,4BAA4B,CACjD;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QACxC,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QACxC,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;KAC/B,CAAC,CAAC,CAAC;AACR,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAoB,EAAE;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAkD,iBAAiB,EAAE;QAC5F,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;QAC9C,KAAK,EAAE,GAAG;QACV,+EAA+E;QAC/E,gFAAgF;QAChF,gFAAgF;QAChF,gFAAgF;QAChF,kEAAkE;QAClE,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IACH,OAAO,yBAAyB,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC;AAmBD;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAuC;IAEvC,OAAO,IAAI;SACR,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,WAAW,KAAK,wBAAwB;QAC1C,CAAC,CAAC,cAAc,KAAK,cAAc,CACtC;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAI,CAAC,CAAC,QAA2C,EAAE,WAAW,CAAC;QAC1E,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;YACxC,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;YAChC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;YAC5B,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;YACxC,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;YAC9B,WAAW,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAC3D,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,OAAoB,EAAE;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAA4C,iBAAiB,EAAE;QACtF,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE;QAC9C,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IACH,OAAO,2BAA2B,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
* can build a complete task DAG.
|
|
6
6
|
*/
|
|
7
7
|
import type { FocusDeliveryInfo, FocusIssueInfo, StageDirective, Workflow } from '../types/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Batch-read the provenance origin of a set of focuses, as a Map
|
|
10
|
+
* focusId -> origin|null. Feeds the machine-owned lane's source-reliability
|
|
11
|
+
* weighting: a filing's producing source is carried by its focus origin. A
|
|
12
|
+
* focusId not returned by the backend is absent from the map (the weighting
|
|
13
|
+
* treats a missing origin as a full-weight source). Empty input short-circuits.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getFocusOrigins(focusIds: readonly string[]): Promise<Map<string, string | null>>;
|
|
8
16
|
/** Result of a scan-all focus_list consumption. */
|
|
9
17
|
export interface ScanAllFocusesResult<F> {
|
|
10
18
|
/** Every focus accumulated across all pages. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focuses.d.ts","sourceRoot":"","sources":["../../src/queries/focuses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAqC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"focuses.d.ts","sourceRoot":"","sources":["../../src/queries/focuses.ts"],"names":[],"mappings":"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"}
|
package/dist/queries/focuses.js
CHANGED
|
@@ -5,9 +5,27 @@
|
|
|
5
5
|
* can build a complete task DAG.
|
|
6
6
|
*/
|
|
7
7
|
import { callApi, callApiValidated } from './shared.js';
|
|
8
|
-
import { FocusDeliveriesResponseSchema, FocusIssuesResponseSchema, } from './schemas.js';
|
|
8
|
+
import { FocusDeliveriesResponseSchema, FocusIssuesResponseSchema, FocusOriginsResponseSchema, } from './schemas.js';
|
|
9
9
|
import { createLogger } from '../shell/log.js';
|
|
10
10
|
const log = createLogger({ module: 'scanAllFocuses' });
|
|
11
|
+
/**
|
|
12
|
+
* Batch-read the provenance origin of a set of focuses, as a Map
|
|
13
|
+
* focusId -> origin|null. Feeds the machine-owned lane's source-reliability
|
|
14
|
+
* weighting: a filing's producing source is carried by its focus origin. A
|
|
15
|
+
* focusId not returned by the backend is absent from the map (the weighting
|
|
16
|
+
* treats a missing origin as a full-weight source). Empty input short-circuits.
|
|
17
|
+
*/
|
|
18
|
+
export async function getFocusOrigins(focusIds) {
|
|
19
|
+
const map = new Map();
|
|
20
|
+
const ids = focusIds.filter((id) => typeof id === 'string' && id.length > 0);
|
|
21
|
+
if (ids.length === 0)
|
|
22
|
+
return map;
|
|
23
|
+
const result = await callApiValidated('daemon_get_focus_origins', FocusOriginsResponseSchema, { focusIds: ids });
|
|
24
|
+
for (const [focusId, origin] of Object.entries(result.origins)) {
|
|
25
|
+
map.set(focusId, origin);
|
|
26
|
+
}
|
|
27
|
+
return map;
|
|
28
|
+
}
|
|
11
29
|
// ---------------------------------------------------------------------------
|
|
12
30
|
// Paginated focus_list consumption
|
|
13
31
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focuses.js","sourceRoot":"","sources":["../../src/queries/focuses.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"focuses.js","sourceRoot":"","sources":["../../src/queries/focuses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing-quality measurement over resolved escalations.
|
|
3
|
+
*
|
|
4
|
+
* The escalation system declares an INTENT for each filing (`disposition`: who
|
|
5
|
+
* should resolve it) and, since the resolution-class delivery, records the
|
|
6
|
+
* REALITY (`resolution_class`: what actually did). This module differences the
|
|
7
|
+
* two into the numbers this focus needs:
|
|
8
|
+
*
|
|
9
|
+
* - mis-route rate: of the filings whose ACTUAL resolver is observable, the
|
|
10
|
+
* share whose declared owner did not match who actually resolved it. A
|
|
11
|
+
* filing filed agent_resolvable but closed by an operator_action was
|
|
12
|
+
* mis-routed to the machine; filed needs_operator but closed by an
|
|
13
|
+
* agent_session was mis-routed to the human.
|
|
14
|
+
* - act-worthy share: of the resolved filings, the share whose resolution was
|
|
15
|
+
* NOT "declined / duplicate" -- i.e. the fraction that was worth acting on
|
|
16
|
+
* at all. This is what separates a LEAKING lane (work that should have been
|
|
17
|
+
* done but was not) from a system CORRECTLY DECLINING junk it should never
|
|
18
|
+
* spend an agent on -- the two readings of the "31% never-attempted" figure.
|
|
19
|
+
*
|
|
20
|
+
* Pure functions over row shapes; no live reads, so they are exercised from
|
|
21
|
+
* fixtures. The disposition + resolution-class string values are the canonical
|
|
22
|
+
* vocabulary defined in @telora/daemon-core (disposition.ts / resolution-class.ts);
|
|
23
|
+
* they are referenced here as local literals rather than imported so this daemon
|
|
24
|
+
* query module stays independent of a daemon-core publish/pin bump. The
|
|
25
|
+
* daemon-core tests pin the enum <-> DB CHECK sync; keep these values aligned
|
|
26
|
+
* with ESCALATION_RESOLUTION_CLASSES / ESCALATION_DISPOSITIONS.
|
|
27
|
+
*/
|
|
28
|
+
/** The minimal row shape these measures read. */
|
|
29
|
+
export interface ResolvedEscalationRow {
|
|
30
|
+
disposition: string | null;
|
|
31
|
+
resolutionClass: string | null;
|
|
32
|
+
}
|
|
33
|
+
export interface MisRouteResult {
|
|
34
|
+
/** Rows where both a declared owner and an actual resolver were observable. */
|
|
35
|
+
judged: number;
|
|
36
|
+
/** Of those, how many had declared owner != actual resolver. */
|
|
37
|
+
misRouted: number;
|
|
38
|
+
/** misRouted / judged, or 0 when judged === 0. */
|
|
39
|
+
rate: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The share of judgeable filings that were routed to the wrong owner.
|
|
43
|
+
*
|
|
44
|
+
* Only rows whose ACTUAL resolver is observable (resolution_class in
|
|
45
|
+
* agent_session / operator_action / external_change) AND whose disposition maps
|
|
46
|
+
* to a declared owner are judged. A row with no resolver signal (e.g. auto_swept,
|
|
47
|
+
* declined_invalid) or no disposition is not counted either way.
|
|
48
|
+
*/
|
|
49
|
+
export declare function computeMisRouteRate(rows: readonly ResolvedEscalationRow[]): MisRouteResult;
|
|
50
|
+
export interface ActWorthyResult {
|
|
51
|
+
/** Rows carrying a recorded resolution_class (the classified population). */
|
|
52
|
+
classified: number;
|
|
53
|
+
/** Of those, how many were worth acting on (not declined / duplicate). */
|
|
54
|
+
actWorthy: number;
|
|
55
|
+
/** actWorthy / classified, or 0 when classified === 0. */
|
|
56
|
+
share: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The share of classified filings that were worth acting on at all -- the
|
|
60
|
+
* complement of the declined/duplicate classes. Rows with no recorded
|
|
61
|
+
* resolution_class are not yet classifiable and are excluded from the
|
|
62
|
+
* denominator (they are neither act-worthy nor declined until closed).
|
|
63
|
+
*/
|
|
64
|
+
export declare function computeActWorthyShare(rows: readonly ResolvedEscalationRow[]): ActWorthyResult;
|
|
65
|
+
//# sourceMappingURL=routing-measurement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-measurement.d.ts","sourceRoot":"","sources":["../../src/queries/routing-measurement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAoDH,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,GAAG,cAAc,CAW1F;AAED,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,qBAAqB,EAAE,GAAG,eAAe,CAS7F"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing-quality measurement over resolved escalations.
|
|
3
|
+
*
|
|
4
|
+
* The escalation system declares an INTENT for each filing (`disposition`: who
|
|
5
|
+
* should resolve it) and, since the resolution-class delivery, records the
|
|
6
|
+
* REALITY (`resolution_class`: what actually did). This module differences the
|
|
7
|
+
* two into the numbers this focus needs:
|
|
8
|
+
*
|
|
9
|
+
* - mis-route rate: of the filings whose ACTUAL resolver is observable, the
|
|
10
|
+
* share whose declared owner did not match who actually resolved it. A
|
|
11
|
+
* filing filed agent_resolvable but closed by an operator_action was
|
|
12
|
+
* mis-routed to the machine; filed needs_operator but closed by an
|
|
13
|
+
* agent_session was mis-routed to the human.
|
|
14
|
+
* - act-worthy share: of the resolved filings, the share whose resolution was
|
|
15
|
+
* NOT "declined / duplicate" -- i.e. the fraction that was worth acting on
|
|
16
|
+
* at all. This is what separates a LEAKING lane (work that should have been
|
|
17
|
+
* done but was not) from a system CORRECTLY DECLINING junk it should never
|
|
18
|
+
* spend an agent on -- the two readings of the "31% never-attempted" figure.
|
|
19
|
+
*
|
|
20
|
+
* Pure functions over row shapes; no live reads, so they are exercised from
|
|
21
|
+
* fixtures. The disposition + resolution-class string values are the canonical
|
|
22
|
+
* vocabulary defined in @telora/daemon-core (disposition.ts / resolution-class.ts);
|
|
23
|
+
* they are referenced here as local literals rather than imported so this daemon
|
|
24
|
+
* query module stays independent of a daemon-core publish/pin bump. The
|
|
25
|
+
* daemon-core tests pin the enum <-> DB CHECK sync; keep these values aligned
|
|
26
|
+
* with ESCALATION_RESOLUTION_CLASSES / ESCALATION_DISPOSITIONS.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* Map a recorded resolution_class to the actor that resolved it, or null when
|
|
30
|
+
* the class carries no actor signal (auto_swept / duplicate / declined_invalid /
|
|
31
|
+
* unknown) -- those rows cannot witness a mis-route and are excluded from the
|
|
32
|
+
* mis-route denominator.
|
|
33
|
+
*/
|
|
34
|
+
function resolverActorOf(resolutionClass) {
|
|
35
|
+
switch (resolutionClass) {
|
|
36
|
+
case 'agent_session':
|
|
37
|
+
return 'machine';
|
|
38
|
+
case 'operator_action':
|
|
39
|
+
return 'human';
|
|
40
|
+
case 'external_change':
|
|
41
|
+
return 'external';
|
|
42
|
+
default:
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Map a filed disposition to the owner it declared, or null when the
|
|
48
|
+
* disposition is absent/unrecognized (excluded from the mis-route denominator).
|
|
49
|
+
*/
|
|
50
|
+
function declaredOwnerOf(disposition) {
|
|
51
|
+
switch (disposition) {
|
|
52
|
+
case 'agent_resolvable':
|
|
53
|
+
return 'machine';
|
|
54
|
+
case 'needs_operator':
|
|
55
|
+
return 'human';
|
|
56
|
+
// needs_intent / needs_clarification are directed HUMAN holds (no longer
|
|
57
|
+
// fileable, but present on historic rows): the human is the declared owner.
|
|
58
|
+
case 'needs_intent':
|
|
59
|
+
case 'needs_clarification':
|
|
60
|
+
return 'human';
|
|
61
|
+
case 'external_wait':
|
|
62
|
+
return 'external';
|
|
63
|
+
default:
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** Resolution classes meaning the filing was NOT worth acting on. */
|
|
68
|
+
const NON_ACTWORTHY_CLASSES = ['declined_invalid', 'duplicate'];
|
|
69
|
+
/**
|
|
70
|
+
* The share of judgeable filings that were routed to the wrong owner.
|
|
71
|
+
*
|
|
72
|
+
* Only rows whose ACTUAL resolver is observable (resolution_class in
|
|
73
|
+
* agent_session / operator_action / external_change) AND whose disposition maps
|
|
74
|
+
* to a declared owner are judged. A row with no resolver signal (e.g. auto_swept,
|
|
75
|
+
* declined_invalid) or no disposition is not counted either way.
|
|
76
|
+
*/
|
|
77
|
+
export function computeMisRouteRate(rows) {
|
|
78
|
+
let judged = 0;
|
|
79
|
+
let misRouted = 0;
|
|
80
|
+
for (const row of rows) {
|
|
81
|
+
const actor = resolverActorOf(row.resolutionClass);
|
|
82
|
+
const declared = declaredOwnerOf(row.disposition);
|
|
83
|
+
if (actor === null || declared === null)
|
|
84
|
+
continue;
|
|
85
|
+
judged += 1;
|
|
86
|
+
if (actor !== declared)
|
|
87
|
+
misRouted += 1;
|
|
88
|
+
}
|
|
89
|
+
return { judged, misRouted, rate: judged === 0 ? 0 : misRouted / judged };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The share of classified filings that were worth acting on at all -- the
|
|
93
|
+
* complement of the declined/duplicate classes. Rows with no recorded
|
|
94
|
+
* resolution_class are not yet classifiable and are excluded from the
|
|
95
|
+
* denominator (they are neither act-worthy nor declined until closed).
|
|
96
|
+
*/
|
|
97
|
+
export function computeActWorthyShare(rows) {
|
|
98
|
+
let classified = 0;
|
|
99
|
+
let actWorthy = 0;
|
|
100
|
+
for (const row of rows) {
|
|
101
|
+
if (row.resolutionClass == null || row.resolutionClass === '')
|
|
102
|
+
continue;
|
|
103
|
+
classified += 1;
|
|
104
|
+
if (!NON_ACTWORTHY_CLASSES.includes(row.resolutionClass))
|
|
105
|
+
actWorthy += 1;
|
|
106
|
+
}
|
|
107
|
+
return { classified, actWorthy, share: classified === 0 ? 0 : actWorthy / classified };
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=routing-measurement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-measurement.js","sourceRoot":"","sources":["../../src/queries/routing-measurement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH;;;;;GAKG;AACH,SAAS,eAAe,CAAC,eAA0C;IACjE,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,eAAe;YAClB,OAAO,SAAS,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO,OAAO,CAAC;QACjB,KAAK,iBAAiB;YACpB,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,WAAsC;IAC7D,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,kBAAkB;YACrB,OAAO,SAAS,CAAC;QACnB,KAAK,gBAAgB;YACnB,OAAO,OAAO,CAAC;QACjB,yEAAyE;QACzE,4EAA4E;QAC5E,KAAK,cAAc,CAAC;QACpB,KAAK,qBAAqB;YACxB,OAAO,OAAO,CAAC;QACjB,KAAK,eAAe;YAClB,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,qBAAqB,GAAsB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AAiBnF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsC;IACxE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI;YAAE,SAAS;QAClD,MAAM,IAAI,CAAC,CAAC;QACZ,IAAI,KAAK,KAAK,QAAQ;YAAE,SAAS,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;AAC5E,CAAC;AAWD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAsC;IAC1E,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,eAAe,IAAI,IAAI,IAAI,GAAG,CAAC,eAAe,KAAK,EAAE;YAAE,SAAS;QACxE,UAAU,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;YAAE,SAAS,IAAI,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;AACzF,CAAC"}
|