@titan-design/session-analytics 0.5.0 → 0.6.0
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/dist/index.d.ts +283 -1
- package/dist/index.js +343 -36
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -242,6 +242,7 @@ declare const reviewerSchema: z.ZodObject<{
|
|
|
242
242
|
sessions: z.ZodNumber;
|
|
243
243
|
requestsPerPr: z.ZodNumber;
|
|
244
244
|
requestsFrom: z.ZodString;
|
|
245
|
+
requestsFromSessions: z.ZodNumber;
|
|
245
246
|
costUsd: z.ZodNumber;
|
|
246
247
|
}, z.core.$strip>>;
|
|
247
248
|
standing: z.ZodArray<z.ZodObject<{
|
|
@@ -250,6 +251,7 @@ declare const reviewerSchema: z.ZodObject<{
|
|
|
250
251
|
sessions: z.ZodNumber;
|
|
251
252
|
requestsPerPr: z.ZodNumber;
|
|
252
253
|
requestsFrom: z.ZodString;
|
|
254
|
+
requestsFromSessions: z.ZodNumber;
|
|
253
255
|
costUsd: z.ZodNumber;
|
|
254
256
|
}, z.core.$strip>>;
|
|
255
257
|
}, z.core.$strip>;
|
|
@@ -322,6 +324,7 @@ declare const handoffThresholdSchema: z.ZodObject<{
|
|
|
322
324
|
sessions: z.ZodNumber;
|
|
323
325
|
requestsPerPr: z.ZodNumber;
|
|
324
326
|
requestsFrom: z.ZodString;
|
|
327
|
+
requestsFromSessions: z.ZodNumber;
|
|
325
328
|
costUsd: z.ZodNumber;
|
|
326
329
|
}, z.core.$strip>>;
|
|
327
330
|
standing: z.ZodArray<z.ZodObject<{
|
|
@@ -330,6 +333,7 @@ declare const handoffThresholdSchema: z.ZodObject<{
|
|
|
330
333
|
sessions: z.ZodNumber;
|
|
331
334
|
requestsPerPr: z.ZodNumber;
|
|
332
335
|
requestsFrom: z.ZodString;
|
|
336
|
+
requestsFromSessions: z.ZodNumber;
|
|
333
337
|
costUsd: z.ZodNumber;
|
|
334
338
|
}, z.core.$strip>>;
|
|
335
339
|
}, z.core.$strip>;
|
|
@@ -657,6 +661,7 @@ declare const costReportSchema: z.ZodObject<{
|
|
|
657
661
|
sessions: z.ZodNumber;
|
|
658
662
|
requestsPerPr: z.ZodNumber;
|
|
659
663
|
requestsFrom: z.ZodString;
|
|
664
|
+
requestsFromSessions: z.ZodNumber;
|
|
660
665
|
costUsd: z.ZodNumber;
|
|
661
666
|
}, z.core.$strip>>;
|
|
662
667
|
standing: z.ZodArray<z.ZodObject<{
|
|
@@ -665,6 +670,7 @@ declare const costReportSchema: z.ZodObject<{
|
|
|
665
670
|
sessions: z.ZodNumber;
|
|
666
671
|
requestsPerPr: z.ZodNumber;
|
|
667
672
|
requestsFrom: z.ZodString;
|
|
673
|
+
requestsFromSessions: z.ZodNumber;
|
|
668
674
|
costUsd: z.ZodNumber;
|
|
669
675
|
}, z.core.$strip>>;
|
|
670
676
|
}, z.core.$strip>;
|
|
@@ -1132,11 +1138,15 @@ interface DenialRecord {
|
|
|
1132
1138
|
/** What the refused call was doing, from its tool input; the reason label alone is loose. */
|
|
1133
1139
|
action: string;
|
|
1134
1140
|
tool: string;
|
|
1141
|
+
/** The refused call's id; a forked or resumed transcript repeats it, so it is counted once. */
|
|
1142
|
+
toolUseId?: string;
|
|
1135
1143
|
}
|
|
1136
1144
|
/** Classifies a refused call by what it did; MCP tools keep their own short name. */
|
|
1137
1145
|
declare function classifyDeniedAction(tool: string, input: unknown): string;
|
|
1138
1146
|
/** Scans transcript JSONL for classifier refusals and joins each to the tool call it refused. */
|
|
1139
1147
|
declare function parseDenials(lines: Iterable<string>, seat: string): DenialRecord[];
|
|
1148
|
+
/** One denial per refused call; a record without a tool_use_id cannot be matched and is kept. */
|
|
1149
|
+
declare function dedupeDenials(denials: readonly DenialRecord[]): DenialRecord[];
|
|
1140
1150
|
|
|
1141
1151
|
/** A seat journal line that states its implementer slot count, and why it did not fill a free slot. */
|
|
1142
1152
|
interface SlotTick {
|
|
@@ -1374,4 +1384,276 @@ declare function blockedFlowReport(input: BlockedFlowInput): BlockedFlowReport;
|
|
|
1374
1384
|
/** Each table's title names the JSON field its numbers come from; the sources close the report. */
|
|
1375
1385
|
declare function renderBlockedFlowText(report: BlockedFlowReport): string;
|
|
1376
1386
|
|
|
1377
|
-
|
|
1387
|
+
/** One agent-chat broker.log entry and the 1-based line it came from, so each finding can cite it. */
|
|
1388
|
+
interface BrokerEntry {
|
|
1389
|
+
line: number;
|
|
1390
|
+
ts: string;
|
|
1391
|
+
event: string;
|
|
1392
|
+
fields: Record<string, unknown>;
|
|
1393
|
+
}
|
|
1394
|
+
/** Broker log lines to entries; a line that is not a JSON object with `ts` and `event` is skipped but still counted. */
|
|
1395
|
+
declare function parseBrokerLog(lines: Iterable<string>): BrokerEntry[];
|
|
1396
|
+
|
|
1397
|
+
/**
|
|
1398
|
+
* How a route missed a recipient: `failed` is a `delivered:false` the broker dropped, `partial` reached
|
|
1399
|
+
* others but not this name, and `queued` is a `delivered:false` the broker kept for later delivery.
|
|
1400
|
+
*/
|
|
1401
|
+
type RouteMissKind = "failed" | "partial" | "queued";
|
|
1402
|
+
/** One recipient a routed message did not reach when it was sent. */
|
|
1403
|
+
interface RouteMiss {
|
|
1404
|
+
line: number;
|
|
1405
|
+
at: string;
|
|
1406
|
+
recipient: string;
|
|
1407
|
+
from: string;
|
|
1408
|
+
kind: string;
|
|
1409
|
+
miss: RouteMissKind;
|
|
1410
|
+
}
|
|
1411
|
+
interface RouteFailureRow {
|
|
1412
|
+
recipient: string;
|
|
1413
|
+
failed: number;
|
|
1414
|
+
partial: number;
|
|
1415
|
+
queued: number;
|
|
1416
|
+
first: string;
|
|
1417
|
+
last: string;
|
|
1418
|
+
lines: number[];
|
|
1419
|
+
}
|
|
1420
|
+
/** Each recipient named in `to` that a route did not reach. */
|
|
1421
|
+
declare function routeMisses(entries: readonly BrokerEntry[]): RouteMiss[];
|
|
1422
|
+
/** Misses grouped by recipient, most first. */
|
|
1423
|
+
declare function routeFailureRows(misses: readonly RouteMiss[]): RouteFailureRow[];
|
|
1424
|
+
declare function countMisses(misses: readonly RouteMiss[]): Record<RouteMissKind, number>;
|
|
1425
|
+
|
|
1426
|
+
/** A seat off the broker for longer than this is dark; a teleport hand-off takes seconds. */
|
|
1427
|
+
declare const DARK_MIN = 5;
|
|
1428
|
+
/** A name deregistered from the broker until it registered again, or until asOf if it never did, without exiting in between. */
|
|
1429
|
+
interface DarkGap {
|
|
1430
|
+
seat: string;
|
|
1431
|
+
from: string;
|
|
1432
|
+
to: string | null;
|
|
1433
|
+
minutes: number;
|
|
1434
|
+
/** A teleport of this name started after its last registration and before the gap closed. */
|
|
1435
|
+
teleport: boolean;
|
|
1436
|
+
/** Routes to the seat during the gap logged `delivered:false` and dropped. */
|
|
1437
|
+
failedRoutes: number;
|
|
1438
|
+
/** Routes during the gap that reached other recipients but not the seat. */
|
|
1439
|
+
partialRoutes: number;
|
|
1440
|
+
/** Routes the broker held or queued in the seat's inbox for delivery when it returned. */
|
|
1441
|
+
queuedRoutes: number;
|
|
1442
|
+
/** The deregistered and registered lines, then any teleport lines. */
|
|
1443
|
+
lines: number[];
|
|
1444
|
+
routeLines: number[];
|
|
1445
|
+
}
|
|
1446
|
+
/** Gaps longer than DARK_MIN, skipping a clean exit and later resume; one still open at asOf counts only if a route missed the seat in it. */
|
|
1447
|
+
declare function darkGaps(entries: readonly BrokerEntry[], misses: readonly RouteMiss[], asOf: string): DarkGap[];
|
|
1448
|
+
|
|
1449
|
+
/** An `agent_spawned` row of agent-chat's events table: the agent id and the profile it ran under. */
|
|
1450
|
+
interface SpawnRecord {
|
|
1451
|
+
eventId: number;
|
|
1452
|
+
agentId: string;
|
|
1453
|
+
name: string;
|
|
1454
|
+
profile: string | null;
|
|
1455
|
+
}
|
|
1456
|
+
/** An agent the broker saw exit without reporting to its spawner. */
|
|
1457
|
+
interface UnreportedExit {
|
|
1458
|
+
at: string;
|
|
1459
|
+
line: number;
|
|
1460
|
+
agentId: string;
|
|
1461
|
+
name: string;
|
|
1462
|
+
spawner: string;
|
|
1463
|
+
lastAction: string;
|
|
1464
|
+
/** The `agent_spawned` row the profile came from, or null when none matched the agent id. */
|
|
1465
|
+
spawnEventId: number | null;
|
|
1466
|
+
}
|
|
1467
|
+
interface UnreportedExitRow {
|
|
1468
|
+
profile: string;
|
|
1469
|
+
count: number;
|
|
1470
|
+
exits: UnreportedExit[];
|
|
1471
|
+
}
|
|
1472
|
+
declare const UNKNOWN_PROFILE = "unknown";
|
|
1473
|
+
/** Broker `unreported-exit` lines grouped by the profile the agent was spawned with, most first. */
|
|
1474
|
+
declare function unreportedExitRows(entries: readonly BrokerEntry[], spawns: readonly SpawnRecord[]): UnreportedExitRow[];
|
|
1475
|
+
|
|
1476
|
+
/** A prompt this old with nothing after it from the agent is a hang, not a pause for the owner. */
|
|
1477
|
+
declare const PROMPT_STALE_MIN = 10;
|
|
1478
|
+
/** The newest events-table row an actor wrote before asOf. */
|
|
1479
|
+
interface LastEventRecord {
|
|
1480
|
+
eventId: number;
|
|
1481
|
+
at: string;
|
|
1482
|
+
actor: string;
|
|
1483
|
+
kind: string;
|
|
1484
|
+
/** `meta.tool_name` of an approval request. */
|
|
1485
|
+
tool: string | null;
|
|
1486
|
+
/** A `resolution` row whose `ref` is this request's msg_id, written before asOf. */
|
|
1487
|
+
resolutionEventId: number | null;
|
|
1488
|
+
/** An `agent_exited` or `agent_retired` row for this actor after the request and before asOf. */
|
|
1489
|
+
endEventId: number | null;
|
|
1490
|
+
}
|
|
1491
|
+
interface StalePromptRow {
|
|
1492
|
+
agent: string;
|
|
1493
|
+
at: string;
|
|
1494
|
+
ageMin: number;
|
|
1495
|
+
tool: string | null;
|
|
1496
|
+
eventId: number;
|
|
1497
|
+
resolutionEventId: number | null;
|
|
1498
|
+
}
|
|
1499
|
+
/** Live agents whose last event is an approval request older than PROMPT_STALE_MIN, oldest first; resolved ones included. */
|
|
1500
|
+
declare function stalePromptRows(lastEvents: readonly LastEventRecord[], broker: readonly BrokerEntry[], asOf: string): StalePromptRow[];
|
|
1501
|
+
|
|
1502
|
+
/** Where each section's findings come from: the command that re-reads them and the field it reads. */
|
|
1503
|
+
declare const LIVENESS_SOURCES: {
|
|
1504
|
+
readonly registrations: {
|
|
1505
|
+
readonly command: "grep -nE '\"event\":\"(registered|deregistered|agent_exited|teleport_started|teleport_completed|teleport_failed|teleport_aborted)\"' <broker.log>";
|
|
1506
|
+
readonly field: "ts, event, name; cited as broker.log line numbers; a gap with a clean agent_exited (code 0, not inferred) and no teleport is a resume";
|
|
1507
|
+
};
|
|
1508
|
+
readonly routes: {
|
|
1509
|
+
readonly command: "grep -n '\"event\":\"route\"' <broker.log>";
|
|
1510
|
+
readonly field: "to, delivered, recipients";
|
|
1511
|
+
};
|
|
1512
|
+
readonly exits: {
|
|
1513
|
+
readonly command: "grep -n '\"event\":\"unreported-exit\"' <broker.log>";
|
|
1514
|
+
readonly field: "agentId, name, spawner, lastAction";
|
|
1515
|
+
};
|
|
1516
|
+
readonly spawns: {
|
|
1517
|
+
readonly command: "sqlite3 -readonly <events.db> \"SELECT id, msg_id, target, json_extract(meta,'$.profile') FROM events WHERE kind='agent_spawned'\"";
|
|
1518
|
+
readonly field: "events.msg_id (agent id), events.meta.profile";
|
|
1519
|
+
};
|
|
1520
|
+
readonly prompts: {
|
|
1521
|
+
readonly command: "sqlite3 -readonly <events.db> \"SELECT e.* FROM events e JOIN (SELECT actor, max(id) id FROM events WHERE ts < <asOf> AND kind != 'resolution' GROUP BY actor) l ON e.id = l.id WHERE e.kind='approval_request'\"";
|
|
1522
|
+
readonly field: "events.ts, events.actor, events.meta.tool_name; a resolution row's events.ref; skipped after the actor's agent_exited or agent_retired, or a broker_started it never re-registered after";
|
|
1523
|
+
};
|
|
1524
|
+
};
|
|
1525
|
+
type LivenessSource = keyof typeof LIVENESS_SOURCES;
|
|
1526
|
+
interface LivenessInput {
|
|
1527
|
+
broker: readonly BrokerEntry[];
|
|
1528
|
+
spawns: readonly SpawnRecord[];
|
|
1529
|
+
lastEvents: readonly LastEventRecord[];
|
|
1530
|
+
/** Gaps still open and prompt ages are measured to here; later entries are ignored. */
|
|
1531
|
+
asOf: string;
|
|
1532
|
+
/** A finding is kept when it starts inside the window; a prompt from a live agent still unanswered at asOf is kept however old. */
|
|
1533
|
+
window?: {
|
|
1534
|
+
since?: string;
|
|
1535
|
+
until?: string;
|
|
1536
|
+
};
|
|
1537
|
+
/** Keeps only findings about these names: the dark seat, route recipient, exiting agent or its spawner, prompting agent. */
|
|
1538
|
+
seats?: readonly string[];
|
|
1539
|
+
}
|
|
1540
|
+
declare const livenessSchema: z.ZodObject<{
|
|
1541
|
+
asOf: z.ZodString;
|
|
1542
|
+
window: z.ZodObject<{
|
|
1543
|
+
since: z.ZodOptional<z.ZodString>;
|
|
1544
|
+
until: z.ZodOptional<z.ZodString>;
|
|
1545
|
+
}, z.core.$strip>;
|
|
1546
|
+
thresholds: z.ZodObject<{
|
|
1547
|
+
darkMin: z.ZodNumber;
|
|
1548
|
+
promptStaleMin: z.ZodNumber;
|
|
1549
|
+
}, z.core.$strip>;
|
|
1550
|
+
sources: z.ZodRecord<z.ZodEnum<{
|
|
1551
|
+
exits: "exits";
|
|
1552
|
+
registrations: "registrations";
|
|
1553
|
+
routes: "routes";
|
|
1554
|
+
spawns: "spawns";
|
|
1555
|
+
prompts: "prompts";
|
|
1556
|
+
}>, z.ZodObject<{
|
|
1557
|
+
command: z.ZodString;
|
|
1558
|
+
field: z.ZodString;
|
|
1559
|
+
}, z.core.$strip>>;
|
|
1560
|
+
darkSeats: z.ZodObject<{
|
|
1561
|
+
cites: z.ZodArray<z.ZodEnum<{
|
|
1562
|
+
exits: "exits";
|
|
1563
|
+
registrations: "registrations";
|
|
1564
|
+
routes: "routes";
|
|
1565
|
+
spawns: "spawns";
|
|
1566
|
+
prompts: "prompts";
|
|
1567
|
+
}>>;
|
|
1568
|
+
withTeleport: z.ZodNumber;
|
|
1569
|
+
withoutTeleport: z.ZodNumber;
|
|
1570
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
1571
|
+
seat: z.ZodString;
|
|
1572
|
+
from: z.ZodString;
|
|
1573
|
+
to: z.ZodNullable<z.ZodString>;
|
|
1574
|
+
minutes: z.ZodNumber;
|
|
1575
|
+
teleport: z.ZodBoolean;
|
|
1576
|
+
failedRoutes: z.ZodNumber;
|
|
1577
|
+
partialRoutes: z.ZodNumber;
|
|
1578
|
+
queuedRoutes: z.ZodNumber;
|
|
1579
|
+
lines: z.ZodArray<z.ZodNumber>;
|
|
1580
|
+
routeLines: z.ZodArray<z.ZodNumber>;
|
|
1581
|
+
}, z.core.$strip>>;
|
|
1582
|
+
}, z.core.$strip>;
|
|
1583
|
+
routeFailures: z.ZodObject<{
|
|
1584
|
+
cites: z.ZodArray<z.ZodEnum<{
|
|
1585
|
+
exits: "exits";
|
|
1586
|
+
registrations: "registrations";
|
|
1587
|
+
routes: "routes";
|
|
1588
|
+
spawns: "spawns";
|
|
1589
|
+
prompts: "prompts";
|
|
1590
|
+
}>>;
|
|
1591
|
+
failed: z.ZodNumber;
|
|
1592
|
+
partial: z.ZodNumber;
|
|
1593
|
+
queued: z.ZodNumber;
|
|
1594
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
1595
|
+
recipient: z.ZodString;
|
|
1596
|
+
failed: z.ZodNumber;
|
|
1597
|
+
partial: z.ZodNumber;
|
|
1598
|
+
queued: z.ZodNumber;
|
|
1599
|
+
first: z.ZodString;
|
|
1600
|
+
last: z.ZodString;
|
|
1601
|
+
lines: z.ZodArray<z.ZodNumber>;
|
|
1602
|
+
}, z.core.$strip>>;
|
|
1603
|
+
}, z.core.$strip>;
|
|
1604
|
+
unreportedExits: z.ZodObject<{
|
|
1605
|
+
cites: z.ZodArray<z.ZodEnum<{
|
|
1606
|
+
exits: "exits";
|
|
1607
|
+
registrations: "registrations";
|
|
1608
|
+
routes: "routes";
|
|
1609
|
+
spawns: "spawns";
|
|
1610
|
+
prompts: "prompts";
|
|
1611
|
+
}>>;
|
|
1612
|
+
total: z.ZodNumber;
|
|
1613
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
1614
|
+
profile: z.ZodString;
|
|
1615
|
+
count: z.ZodNumber;
|
|
1616
|
+
exits: z.ZodArray<z.ZodObject<{
|
|
1617
|
+
at: z.ZodString;
|
|
1618
|
+
line: z.ZodNumber;
|
|
1619
|
+
agentId: z.ZodString;
|
|
1620
|
+
name: z.ZodString;
|
|
1621
|
+
spawner: z.ZodString;
|
|
1622
|
+
lastAction: z.ZodString;
|
|
1623
|
+
spawnEventId: z.ZodNullable<z.ZodNumber>;
|
|
1624
|
+
}, z.core.$strip>>;
|
|
1625
|
+
}, z.core.$strip>>;
|
|
1626
|
+
}, z.core.$strip>;
|
|
1627
|
+
stalePrompts: z.ZodObject<{
|
|
1628
|
+
cites: z.ZodArray<z.ZodEnum<{
|
|
1629
|
+
exits: "exits";
|
|
1630
|
+
registrations: "registrations";
|
|
1631
|
+
routes: "routes";
|
|
1632
|
+
spawns: "spawns";
|
|
1633
|
+
prompts: "prompts";
|
|
1634
|
+
}>>;
|
|
1635
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
1636
|
+
agent: z.ZodString;
|
|
1637
|
+
at: z.ZodString;
|
|
1638
|
+
ageMin: z.ZodNumber;
|
|
1639
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
1640
|
+
eventId: z.ZodNumber;
|
|
1641
|
+
resolutionEventId: z.ZodNullable<z.ZodNumber>;
|
|
1642
|
+
}, z.core.$strip>>;
|
|
1643
|
+
resolvedRows: z.ZodArray<z.ZodObject<{
|
|
1644
|
+
agent: z.ZodString;
|
|
1645
|
+
at: z.ZodString;
|
|
1646
|
+
ageMin: z.ZodNumber;
|
|
1647
|
+
tool: z.ZodNullable<z.ZodString>;
|
|
1648
|
+
eventId: z.ZodNumber;
|
|
1649
|
+
resolutionEventId: z.ZodNullable<z.ZodNumber>;
|
|
1650
|
+
}, z.core.$strip>>;
|
|
1651
|
+
}, z.core.$strip>;
|
|
1652
|
+
}, z.core.$strip>;
|
|
1653
|
+
type LivenessReport = z.infer<typeof livenessSchema>;
|
|
1654
|
+
/** Seats dark past DARK_MIN, routes that missed their recipient, unreported exits and agents stuck on a prompt. */
|
|
1655
|
+
declare function livenessReport(input: LivenessInput): LivenessReport;
|
|
1656
|
+
/** Each table's title names the JSON field its rows come from; the sources and the shared caveat close the report. */
|
|
1657
|
+
declare function renderLivenessText(report: LivenessReport): string;
|
|
1658
|
+
|
|
1659
|
+
export { ACTION_CLASSES, AGENT_LIFECYCLE, ALL_REPOS, type ActionCall, type ActionClass, type ActionRule, type AgentNameRow, BLOCKED_FLOW_SOURCES, BOOT_TOOL, type Band, type BlockedFlowInput, type BlockedFlowReport, type BlockedFlowSource, type BrokerEntry, CHANNEL_CLUSTER_MS, CONTEXT_BANDS, CONTEXT_RESET_TOKENS, COORDINATOR_MERGE_DEDUPE_REQUESTS, COORDINATOR_MIN_EPISODE_REQUESTS, COORDINATOR_WAVE_QUIET_REQUESTS, COST_REPORT_SECTIONS, type CacheTtlBucket, type CacheTtlWhatIf, type CostBucket, type CostReport, type CostReportOptions, type CostReportSection, type CycleParams, DARK_MIN, DEFAULT_ACTION_RULES, DEFAULT_CONFIGURED_K, DEFAULT_EPISODE_ROLES, DEFAULT_K_SWEEP, DEFAULT_MECHANICAL_CLASSES, DEFAULT_NO_ACTION_CLASSES, DEFAULT_REVIEWER_PRS, DEFAULT_REVIEWER_ROLE, DEFAULT_STANDING_ROLE, type DarkGap, type DenialRecord, type EpisodeInbound, type EpisodeInput, type EpisodeNames, type EpisodeRequest, type EpisodeRequestRow, type EpisodeSignal, GAP_BANDS, HEURISTIC_VERSIONS, type HandoffCohort, type HandoffOptions, type HandoffRequestRow, type HandoffSession, type HandoffTeleport, type HandoffThreshold, type Heuristic, type HumanRole, IDLE_GAP_MS, type IdleSlotRow, type KSweep, LIST_PRICE_CAVEAT, LIVENESS_SOURCES, type LastEventRecord, type LatencyRow, type LatencyStats, type LivenessInput, type LivenessReport, type LivenessSource, type MechanicalShare, type MergeOutcome, type MergeStatus, POOLED_REVIEWERS, PRICE_TABLE, PRICE_TABLE_VERSION, PROFILE_ROLES, PROMPT_STALE_MIN, type ParsedVerdict, type PriceRow, type PricedRequest, type PullState, REBUILD_GAP_BANDS, type ReportScope, type ReportWindow, type RequestTokens, type ReviewerComparison, type RoleActions, type RouteFailureRow, type RouteMiss, type RouteMissKind, STANDING_PEER_MIN_ASSIGNMENTS, STANDING_PEER_MIN_HOURS, type SeatJournal, type SessionClass, type SessionClassification, type SessionFacts, type SessionOrigin, type SlotTick, type SpawnRecord, type StalePromptRow, TELEPORT_EVENT, TICK_HOLD_MAX_MIN, TOKEN_CLASSES, type TaskInitiative, type TeleportEvent, type TokenClass, type TtlRequestRow, UNKNOWN_PROFILE, UNSTATED_REASON, type UnreportedExit, type UnreportedExitRow, type VerdictRecord, WAKE_FROM_KINDS, type WakeCauseBucket, type WakeCauseEpisodes, type WakeEpisode, type WakeEpisodes, type WakeEventRow, type WakeFromKind, type WakeGapCell, type WakePair, type WorkerFacts, type WorkerRole, type WrittenEpisodes, assignmentCount, bandOf, blockedFlowReport, blockedFlowSchema, buildEpisodes, buildWakeEpisodes, cacheTtlReport, cacheTtlWhatIf, cacheTtlWhatIfSchema, classifyDeniedAction, classifyRequest, classifySession, contextBand, costPerRequest, costReport, costReportSchema, countMisses, darkGaps, dedupeDenials, episodeNames, findPrice, gapBand, handoffThreshold, handoffThresholdSchema, heuristicFor, idleSlotMinutes, initiativeFromCwd, isBootAction, latencyStats, latencyStatsSchema, livenessReport, livenessSchema, mergeOutcomes, parseBrokerLog, parseDenials, parseSeatJournal, parseTeleportEvents, parseVerdict, prKey, priceRequest, readEpisodeInput, readRequestToolCalls, readTtlRows, renderBlockedFlowText, renderCacheTtlText, renderCostReportSections, renderCostReportText, renderLivenessText, roleFromProfile, routeFailureRows, routeMisses, scopeFilter, sessionInitiative, sessionRole, stalePromptRows, summarizeWakeEpisodes, sweepK, unreportedExitRows, wakeEpisodesSchema, workerRole, writeEpisodes };
|