wicked-crew 0.10.0 → 0.10.2
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/api/roster-standing.d.ts +27 -1
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +126 -10
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +28 -11
- package/dist/api/routes.js.map +1 -1
- package/dist/api/seat-agents.d.ts +135 -0
- package/dist/api/seat-agents.d.ts.map +1 -0
- package/dist/api/seat-agents.js +186 -0
- package/dist/api/seat-agents.js.map +1 -0
- package/dist/api/seat-health.d.ts +23 -0
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +70 -8
- package/dist/api/seat-health.js.map +1 -1
- package/dist/api/seat-probe.d.ts +11 -2
- package/dist/api/seat-probe.d.ts.map +1 -1
- package/dist/api/seat-probe.js +28 -9
- package/dist/api/seat-probe.js.map +1 -1
- package/dist/api/seat-scrub.d.ts +65 -0
- package/dist/api/seat-scrub.d.ts.map +1 -0
- package/dist/api/seat-scrub.js +193 -0
- package/dist/api/seat-scrub.js.map +1 -0
- package/dist/api/seat-standing.d.ts +3 -2
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +8 -7
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/seat-version.d.ts +81 -0
- package/dist/api/seat-version.d.ts.map +1 -0
- package/dist/api/seat-version.js +174 -0
- package/dist/api/seat-version.js.map +1 -0
- package/dist/api/server.js +1 -1
- package/dist/core/adapter.d.ts +12 -0
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +25 -0
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/engine-roster.d.ts.map +1 -1
- package/dist/core/engine-roster.js +8 -0
- package/dist/core/engine-roster.js.map +1 -1
- package/dist/editors/registry.d.ts +2 -2
- package/dist/interactive/council-outcome.d.ts +5 -1
- package/dist/interactive/council-outcome.d.ts.map +1 -1
- package/dist/interactive/council-outcome.js +11 -2
- package/dist/interactive/council-outcome.js.map +1 -1
- package/dist/standing-orders/parse.js +1 -1
- package/dist/studio/assets/index-C6DLorst.css +32 -0
- package/dist/studio/assets/index-CAhuFWeA.js +609 -0
- package/dist/studio/editors/wicked-page/editor.json +1 -1
- package/dist/studio/editors/wicked-page/index.html +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +553 -144
- package/endpoint-manifest.json +6 -14
- package/package.json +4 -4
- package/dist/studio/assets/index-DlZl1q2Q.js +0 -593
- package/dist/studio/assets/index-eLCOoPWX.css +0 -32
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Agents page's readings per seat (DES-seats-page §7, asks A2–A6): what crew can say about a
|
|
3
|
+
* seat's readiness as FACTS and CODES, so studio owns every word (one copy table per code) and
|
|
4
|
+
* never re-derives an engine or crew rule.
|
|
5
|
+
*
|
|
6
|
+
* - `account` (A2): the account KIND only, never an identifier (`seat-scrub.ts`);
|
|
7
|
+
* - `recent_bench` (A3): the engine's bench of the seat that is ACTIVE now, not the week's history
|
|
8
|
+
* (`/roster/record` keeps that);
|
|
9
|
+
* - `work_admission` (A5): per scope kind, whether a job would give the seat work, with ONE reason
|
|
10
|
+
* code and where the refusal comes from (`auth`, `launcher`, `scope`). It reads the same standing
|
|
11
|
+
* the launch does, plus the engine's own worktree bench through `Core.worktreeBenched` (core#920).
|
|
12
|
+
* Without that predicate (an older addon) it is ABSENT: crew does not restate the engine's rule;
|
|
13
|
+
* - `qe_reviewer` (A4): whether the seat can run the isolated QE review. Since wicked-core#917 the
|
|
14
|
+
* engine starts the reviewer as a fresh session on ANY run seat it ADMITS, so the rule is: signed
|
|
15
|
+
* in, kept by a run bound to one repository (QE runs only there), and admitted by the host's skill
|
|
16
|
+
* routing to the QE skill (`Core.qeReviewerAdmitted`, wicked-core#923: a Claude-only skills root admits claude
|
|
17
|
+
* seats only). A reviewer-only seat counts: the engine's reviewer pool is the run's seats, not
|
|
18
|
+
* its workers. Absent unless the engine answers both predicates;
|
|
19
|
+
* - `issues` (A6): one entry per thing the page shows, most important first.
|
|
20
|
+
*
|
|
21
|
+
* Pure: no IO, no clock.
|
|
22
|
+
*/
|
|
23
|
+
import type { SeatRecentBench } from './seat-health.js';
|
|
24
|
+
import type { GovernanceScopeKind, SeatGovernanceMode } from './seat-governance.js';
|
|
25
|
+
import type { SeatAccount } from './seat-scrub.js';
|
|
26
|
+
import { type ChatAdmission, type SeatStanding } from './seat-standing.js';
|
|
27
|
+
import type { SeatVersion } from './seat-version.js';
|
|
28
|
+
/** `RosterSeat.recent_bench` (api-types 0.115.0). */
|
|
29
|
+
export interface RecentBenchWire {
|
|
30
|
+
/** The engine's cause token (`quota_exhausted`, `not_logged_in`, `not_installed`,
|
|
31
|
+
* `approval_unavailable`, `timed_out`, …). */
|
|
32
|
+
kind: string;
|
|
33
|
+
/** Runs that benched the seat while this bench was active. */
|
|
34
|
+
runs: number;
|
|
35
|
+
/** ISO-8601 of the latest bench. */
|
|
36
|
+
last_at: string;
|
|
37
|
+
/** ISO-8601 of when crew stops carrying the bench to new launches (sooner on an ok turn). This is
|
|
38
|
+
* crew's window, not a provider reset time: no provider states one on the wire today. */
|
|
39
|
+
lifts_at: string;
|
|
40
|
+
/** Who benched it in the run: `worker` or `judge`. */
|
|
41
|
+
source: string;
|
|
42
|
+
/** The engine's own reason, verbatim (Technical details). */
|
|
43
|
+
reason: string;
|
|
44
|
+
}
|
|
45
|
+
/** The engine's cause token: the reason up to its first parenthesis. */
|
|
46
|
+
export declare function benchKind(reason: string): string;
|
|
47
|
+
export declare function recentBenchWire(bench: SeatRecentBench): RecentBenchWire;
|
|
48
|
+
/** Whether the seat's live sign-in check, answered AFTER the bench, lifts it. */
|
|
49
|
+
export declare function liveCheckLiftsBench(bench: SeatRecentBench, probe: {
|
|
50
|
+
signedIn: boolean | null;
|
|
51
|
+
check: string;
|
|
52
|
+
probedAt: string;
|
|
53
|
+
} | undefined): boolean;
|
|
54
|
+
/** `RosterSeat.account`: absent unless the seat can take a turn on its sign-in. */
|
|
55
|
+
export declare function seatAccount(auth: SeatStanding['auth'], stated: SeatAccount | undefined): SeatAccount | undefined;
|
|
56
|
+
export type WorkRefusalSource = 'auth' | 'launcher' | 'scope';
|
|
57
|
+
/** One reason code per refusal (studio's copy table keys on it). */
|
|
58
|
+
export type WorkReasonCode = 'signed_out' | 'not_enabled' | 'reviewer_only' | 'recent_bench' | 'login_pending' | 'worktree_bench' | 'scope_ungoverned';
|
|
59
|
+
export type WorkAdmission = {
|
|
60
|
+
ok: true;
|
|
61
|
+
} | {
|
|
62
|
+
ok: false;
|
|
63
|
+
reason_code: WorkReasonCode;
|
|
64
|
+
source: WorkRefusalSource;
|
|
65
|
+
reason: string;
|
|
66
|
+
};
|
|
67
|
+
/** `RosterSeat.qe_reviewer` (api-types 0.115.0). */
|
|
68
|
+
export type QeReviewerReasonCode = Exclude<WorkReasonCode, 'reviewer_only' | 'scope_ungoverned'> | 'skill_not_admitted';
|
|
69
|
+
export type QeReviewer = {
|
|
70
|
+
ok: true;
|
|
71
|
+
} | {
|
|
72
|
+
ok: false;
|
|
73
|
+
reason_code: QeReviewerReasonCode;
|
|
74
|
+
reason: string;
|
|
75
|
+
};
|
|
76
|
+
export interface WorkInputs {
|
|
77
|
+
enabled_for_council?: boolean | undefined;
|
|
78
|
+
seat_eligible_for_work?: boolean | undefined;
|
|
79
|
+
standing: SeatStanding;
|
|
80
|
+
/** The engine's bench crew carries to new launches (`SeatHealthTracker.recentBenchFor`). */
|
|
81
|
+
recentBench: SeatRecentBench | null;
|
|
82
|
+
/** The seat's login check has not answered yet (a launch would wait, then leave it out). */
|
|
83
|
+
loginPending: boolean;
|
|
84
|
+
/** The chat admission per scope kind the roster already serves (ASK-C2). */
|
|
85
|
+
chatAdmission: Record<GovernanceScopeKind, ChatAdmission>;
|
|
86
|
+
/** The engine's worktree bench reason for THIS seat on a bound run, `null` for none. */
|
|
87
|
+
worktreeBench: string | null;
|
|
88
|
+
}
|
|
89
|
+
/** `RosterSeat.work_admission` (see the module doc). */
|
|
90
|
+
export declare function workAdmission(i: WorkInputs): Record<GovernanceScopeKind, WorkAdmission>;
|
|
91
|
+
/** `RosterSeat.qe_reviewer` (see the module doc). `skillAdmitted` is the engine's answer. */
|
|
92
|
+
export declare function qeReviewer(i: WorkInputs, skillAdmitted: boolean): QeReviewer;
|
|
93
|
+
export type IssueSeverity = 'problem' | 'warning' | 'note';
|
|
94
|
+
export interface SeatIssueCommand {
|
|
95
|
+
purpose: 'sign_in' | 'sign_out' | 'version';
|
|
96
|
+
/** The safe rendering: the home directory written `$HOME` (it expands inside the double quotes
|
|
97
|
+
* the engine puts around the seat's root; `~` would not). The command to RUN stays the roster's
|
|
98
|
+
* `login_invocation` / `logout_invocation`. */
|
|
99
|
+
display: string;
|
|
100
|
+
}
|
|
101
|
+
export interface SeatIssue {
|
|
102
|
+
code: string;
|
|
103
|
+
severity: IssueSeverity;
|
|
104
|
+
/** Only names, versions, counts and ISO times — never free text from a CLI. */
|
|
105
|
+
params: Record<string, string | number>;
|
|
106
|
+
/** Crew's own one line, for a client that does not know the code (Technical details). */
|
|
107
|
+
message: string;
|
|
108
|
+
commands?: SeatIssueCommand[];
|
|
109
|
+
}
|
|
110
|
+
/** Everything the issue list reads, all already computed by the roster accessor. */
|
|
111
|
+
export interface IssueInputs {
|
|
112
|
+
key: string;
|
|
113
|
+
display_name: string;
|
|
114
|
+
binary: string;
|
|
115
|
+
login_invocation?: string;
|
|
116
|
+
logout_invocation?: string;
|
|
117
|
+
optIn: boolean;
|
|
118
|
+
standing: SeatStanding;
|
|
119
|
+
version?: SeatVersion;
|
|
120
|
+
governance: Record<GovernanceScopeKind, SeatGovernanceMode>;
|
|
121
|
+
/** `/diagnostics.seatGovernance.hostBoundary`: the OS launcher the repository boundary arms
|
|
122
|
+
* with, `null` when the host has none. */
|
|
123
|
+
hostBoundary: string | null;
|
|
124
|
+
recentBench: RecentBenchWire | undefined;
|
|
125
|
+
workAdmission?: Record<GovernanceScopeKind, WorkAdmission>;
|
|
126
|
+
qeReviewer?: QeReviewer;
|
|
127
|
+
/** Whether ANY seat on the roster can run QE now (`undefined` when that is not known). */
|
|
128
|
+
rosterQe: boolean | undefined;
|
|
129
|
+
home?: string;
|
|
130
|
+
}
|
|
131
|
+
/** A command for display: the home directory as `$HOME`. */
|
|
132
|
+
export declare function displayCommand(cmd: string, home?: string): string;
|
|
133
|
+
/** `RosterSeat.issues` (A6), most important first. */
|
|
134
|
+
export declare function seatIssues(i: IssueInputs): SeatIssue[];
|
|
135
|
+
//# sourceMappingURL=seat-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-agents.d.ts","sourceRoot":"","sources":["../../src/api/seat-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Agents page's readings per seat (DES-seats-page §7, asks A2–A6): what crew can say about a
|
|
3
|
+
* seat's readiness as FACTS and CODES, so studio owns every word (one copy table per code) and
|
|
4
|
+
* never re-derives an engine or crew rule.
|
|
5
|
+
*
|
|
6
|
+
* - `account` (A2): the account KIND only, never an identifier (`seat-scrub.ts`);
|
|
7
|
+
* - `recent_bench` (A3): the engine's bench of the seat that is ACTIVE now, not the week's history
|
|
8
|
+
* (`/roster/record` keeps that);
|
|
9
|
+
* - `work_admission` (A5): per scope kind, whether a job would give the seat work, with ONE reason
|
|
10
|
+
* code and where the refusal comes from (`auth`, `launcher`, `scope`). It reads the same standing
|
|
11
|
+
* the launch does, plus the engine's own worktree bench through `Core.worktreeBenched` (core#920).
|
|
12
|
+
* Without that predicate (an older addon) it is ABSENT: crew does not restate the engine's rule;
|
|
13
|
+
* - `qe_reviewer` (A4): whether the seat can run the isolated QE review. Since wicked-core#917 the
|
|
14
|
+
* engine starts the reviewer as a fresh session on ANY run seat it ADMITS, so the rule is: signed
|
|
15
|
+
* in, kept by a run bound to one repository (QE runs only there), and admitted by the host's skill
|
|
16
|
+
* routing to the QE skill (`Core.qeReviewerAdmitted`, wicked-core#923: a Claude-only skills root admits claude
|
|
17
|
+
* seats only). A reviewer-only seat counts: the engine's reviewer pool is the run's seats, not
|
|
18
|
+
* its workers. Absent unless the engine answers both predicates;
|
|
19
|
+
* - `issues` (A6): one entry per thing the page shows, most important first.
|
|
20
|
+
*
|
|
21
|
+
* Pure: no IO, no clock.
|
|
22
|
+
*/
|
|
23
|
+
import { homeless } from './seat-standing.js';
|
|
24
|
+
/** The engine's cause token: the reason up to its first parenthesis. */
|
|
25
|
+
export function benchKind(reason) {
|
|
26
|
+
return reason.split(' (', 1)[0].trim();
|
|
27
|
+
}
|
|
28
|
+
export function recentBenchWire(bench) {
|
|
29
|
+
return {
|
|
30
|
+
kind: benchKind(bench.reason),
|
|
31
|
+
runs: bench.runs,
|
|
32
|
+
last_at: bench.at,
|
|
33
|
+
lifts_at: bench.until,
|
|
34
|
+
source: bench.source,
|
|
35
|
+
reason: bench.reason,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Bench kinds a LIVE sign-in answer disproves: the seat answered an authenticated request, so it is
|
|
39
|
+
* signed in and has quota. Other kinds (`approval_unavailable`, `not_installed`, `timed_out`) are
|
|
40
|
+
* about doing work, which a one-word reply does not prove. */
|
|
41
|
+
const LIVE_CLEARS = new Set(['not_logged_in', 'quota_exhausted', 'usage_limit']);
|
|
42
|
+
/** Whether the seat's live sign-in check, answered AFTER the bench, lifts it. */
|
|
43
|
+
export function liveCheckLiftsBench(bench, probe) {
|
|
44
|
+
if (probe === undefined || probe.signedIn !== true || probe.check !== 'live')
|
|
45
|
+
return false;
|
|
46
|
+
if (!LIVE_CLEARS.has(benchKind(bench.reason)))
|
|
47
|
+
return false;
|
|
48
|
+
return Date.parse(probe.probedAt) > Date.parse(bench.at);
|
|
49
|
+
}
|
|
50
|
+
// ── A2 ──────────────────────────────────────────────────────────────────────────────────────────
|
|
51
|
+
/** `RosterSeat.account`: absent unless the seat can take a turn on its sign-in. */
|
|
52
|
+
export function seatAccount(auth, stated) {
|
|
53
|
+
if (auth === 'not_required')
|
|
54
|
+
return { kind: 'free' };
|
|
55
|
+
if (auth !== 'signed_in')
|
|
56
|
+
return undefined;
|
|
57
|
+
return stated ?? { kind: 'unknown' };
|
|
58
|
+
}
|
|
59
|
+
/** The refusals every scope shares, in order: the first one is the seat's reason. */
|
|
60
|
+
function standingRefusal(i, opts) {
|
|
61
|
+
if (i.standing.auth === 'signed_out') {
|
|
62
|
+
return { ok: false, reason_code: 'signed_out', source: 'auth', reason: i.standing.council_ineligible_reason ?? 'signed out' };
|
|
63
|
+
}
|
|
64
|
+
if (i.enabled_for_council === false) {
|
|
65
|
+
return { ok: false, reason_code: 'not_enabled', source: 'launcher', reason: 'not enabled for council, so a launch benches it' };
|
|
66
|
+
}
|
|
67
|
+
if (!opts.reviewer && i.seat_eligible_for_work === false) {
|
|
68
|
+
return { ok: false, reason_code: 'reviewer_only', source: 'launcher', reason: 'a reviewer-only seat: it reviews work and is never given a unit' };
|
|
69
|
+
}
|
|
70
|
+
if (i.recentBench !== null) {
|
|
71
|
+
return { ok: false, reason_code: 'recent_bench', source: 'launcher', reason: i.standing.council_ineligible_reason ?? i.recentBench.reason };
|
|
72
|
+
}
|
|
73
|
+
if (i.loginPending) {
|
|
74
|
+
return { ok: false, reason_code: 'login_pending', source: 'launcher', reason: i.standing.council_ineligible_reason ?? 'login not verified yet' };
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
/** `RosterSeat.work_admission` (see the module doc). */
|
|
79
|
+
export function workAdmission(i) {
|
|
80
|
+
const base = standingRefusal(i, { reviewer: false });
|
|
81
|
+
const scope = (kind) => {
|
|
82
|
+
if (base !== null)
|
|
83
|
+
return base;
|
|
84
|
+
if (kind === 'scoped_bound' && i.worktreeBench !== null) {
|
|
85
|
+
return { ok: false, reason_code: 'worktree_bench', source: 'launcher', reason: i.worktreeBench };
|
|
86
|
+
}
|
|
87
|
+
const chat = i.chatAdmission[kind];
|
|
88
|
+
if (!chat.ok && chat.source === 'scope')
|
|
89
|
+
return { ok: false, reason_code: 'scope_ungoverned', source: 'scope', reason: chat.reason };
|
|
90
|
+
return { ok: true };
|
|
91
|
+
};
|
|
92
|
+
return { unscoped: scope('unscoped'), scoped: scope('scoped'), scoped_bound: scope('scoped_bound') };
|
|
93
|
+
}
|
|
94
|
+
/** `RosterSeat.qe_reviewer` (see the module doc). `skillAdmitted` is the engine's answer. */
|
|
95
|
+
export function qeReviewer(i, skillAdmitted) {
|
|
96
|
+
const r = standingRefusal(i, { reviewer: true });
|
|
97
|
+
if (r !== null)
|
|
98
|
+
return { ok: false, reason_code: r.reason_code, reason: r.reason };
|
|
99
|
+
if (i.worktreeBench !== null)
|
|
100
|
+
return { ok: false, reason_code: 'worktree_bench', reason: i.worktreeBench };
|
|
101
|
+
if (!skillAdmitted) {
|
|
102
|
+
return {
|
|
103
|
+
ok: false,
|
|
104
|
+
reason_code: 'skill_not_admitted',
|
|
105
|
+
reason: "this host's skills root admits only a claude seat to the QE skill (no published portability verdict, or the skill is not portable)",
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
return { ok: true };
|
|
109
|
+
}
|
|
110
|
+
const SEVERITY_ORDER = { problem: 0, warning: 1, note: 2 };
|
|
111
|
+
/** Within a severity: safety before availability (DES-seats-page §4, codex HIER r7). */
|
|
112
|
+
const SAFETY_CODES = new Set(['unchecked', 'version_unproven', 'fence_scoped']);
|
|
113
|
+
/** A command for display: the home directory as `$HOME`. */
|
|
114
|
+
export function displayCommand(cmd, home) {
|
|
115
|
+
return homeless(cmd, home, '$HOME');
|
|
116
|
+
}
|
|
117
|
+
/** `RosterSeat.issues` (A6), most important first. */
|
|
118
|
+
export function seatIssues(i) {
|
|
119
|
+
const out = [];
|
|
120
|
+
const name = i.display_name;
|
|
121
|
+
const signIn = typeof i.login_invocation === 'string' && i.login_invocation.trim() !== ''
|
|
122
|
+
? [{ purpose: 'sign_in', display: displayCommand(i.login_invocation.trim(), i.home) }]
|
|
123
|
+
: [];
|
|
124
|
+
const signOut = typeof i.logout_invocation === 'string' && i.logout_invocation.trim() !== ''
|
|
125
|
+
? [{ purpose: 'sign_out', display: displayCommand(i.logout_invocation.trim(), i.home) }]
|
|
126
|
+
: [];
|
|
127
|
+
const add = (code, severity, message, params = {}, commands = []) => {
|
|
128
|
+
out.push({ code, severity, params, message, ...(commands.length > 0 ? { commands } : {}) });
|
|
129
|
+
};
|
|
130
|
+
const st = i.standing;
|
|
131
|
+
if (st.auth === 'signed_out') {
|
|
132
|
+
add('signed_out', 'problem', `${name} is signed out, so it takes no work until it is signed in`, st.probed_at !== undefined ? { checked_at: st.probed_at } : {}, signIn);
|
|
133
|
+
if (i.rosterQe === false) {
|
|
134
|
+
add('qe_blocked', 'problem', 'no agent can run quality checks now, so jobs that need one wait before delivery', {}, signIn);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const bench = i.recentBench;
|
|
138
|
+
if (bench !== undefined) {
|
|
139
|
+
const code = bench.kind === 'quota_exhausted' ? 'quota' : bench.kind === 'usage_limit' ? 'usage_limit' : 'benched';
|
|
140
|
+
add(code, 'warning', `the engine benched ${name} (${bench.kind}) in ${bench.runs} run(s); new jobs leave it out until ${bench.lifts_at} or its next good turn`, {
|
|
141
|
+
kind: bench.kind,
|
|
142
|
+
runs: bench.runs,
|
|
143
|
+
last_at: bench.last_at,
|
|
144
|
+
lifts_at: bench.lifts_at,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const bound = i.workAdmission?.scoped_bound;
|
|
148
|
+
if (bound !== undefined && !bound.ok && bound.reason_code === 'worktree_bench') {
|
|
149
|
+
add('codex_worktree', 'warning', `${name} is benched on every job bound to a repository on this host`, {}, [...signOut, ...signIn]);
|
|
150
|
+
}
|
|
151
|
+
// Safety: the bound-run mode decides what holds the seat's writes in a job.
|
|
152
|
+
const gov = i.governance.scoped_bound;
|
|
153
|
+
if (i.version?.status === 'unproven') {
|
|
154
|
+
add('version_unproven', 'warning', `${name} ${i.version.installed ?? '(no version answer)'} is not the build its safety checks were proven on, so they switch off`, {
|
|
155
|
+
...(i.version.installed !== null ? { installed: i.version.installed } : {}),
|
|
156
|
+
...(i.version.proven !== null ? { proven: i.version.proven } : {}),
|
|
157
|
+
}, [{ purpose: 'version', display: `${i.binary} --version` }]);
|
|
158
|
+
}
|
|
159
|
+
else if (gov.mode === 'none') {
|
|
160
|
+
add('unchecked', 'warning', `nothing checks ${name}'s actions on this version`, { why: 'no_governance' });
|
|
161
|
+
}
|
|
162
|
+
else if (gov.source === 'repo_boundary' && i.hostBoundary === null) {
|
|
163
|
+
add('unchecked', 'warning', `there is no sandbox tool on this computer, so nothing limits what ${name} writes`, { why: 'no_host_boundary' });
|
|
164
|
+
}
|
|
165
|
+
else if (gov.source === 'repo_boundary' && i.governance.unscoped.mode === 'none') {
|
|
166
|
+
add('fence_scoped', 'warning', `${name}'s writes are kept inside one repository only when the work is bound to it`);
|
|
167
|
+
}
|
|
168
|
+
if (st.auth === 'signed_in' && st.login_check === 'status') {
|
|
169
|
+
add('live_check_failed', 'warning', `${name}'s status command says signed in, but its one live request did not answer`, st.probed_at !== undefined ? { checked_at: st.probed_at } : {}, signIn);
|
|
170
|
+
}
|
|
171
|
+
if (i.optIn)
|
|
172
|
+
add('opt_in', 'note', `${name} is opt-in: it is left out of new work unless you pick it`);
|
|
173
|
+
if (i.qeReviewer !== undefined && !i.qeReviewer.ok && i.qeReviewer.reason_code !== 'signed_out') {
|
|
174
|
+
add('no_qe', 'note', `${name} can't run quality checks now (${i.qeReviewer.reason_code})`, { reason_code: i.qeReviewer.reason_code });
|
|
175
|
+
}
|
|
176
|
+
if (st.auth === 'signed_in' && st.login_check === 'unverified') {
|
|
177
|
+
add('unverified', 'note', `${name}'s sign-in can't be confirmed: it has no status command`, {}, signIn);
|
|
178
|
+
}
|
|
179
|
+
return out
|
|
180
|
+
.map((issue, idx) => ({ issue, idx }))
|
|
181
|
+
.sort((a, b) => SEVERITY_ORDER[a.issue.severity] - SEVERITY_ORDER[b.issue.severity] ||
|
|
182
|
+
Number(!SAFETY_CODES.has(a.issue.code)) - Number(!SAFETY_CODES.has(b.issue.code)) ||
|
|
183
|
+
a.idx - b.idx)
|
|
184
|
+
.map(({ issue }) => issue);
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=seat-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-agents.js","sourceRoot":"","sources":["../../src/api/seat-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CoreEvent, SeatHealth } from '../core/types.js';
|
|
2
2
|
import { DaemonSignalLog } from '../core/daemon-signal-log.js';
|
|
3
3
|
export type { SeatHealth };
|
|
4
|
+
export declare function isSessionDeath(fallbackKind: string | undefined, reason: string | undefined): boolean;
|
|
4
5
|
/**
|
|
5
6
|
* What a seat's OWN output says when it has no credential (F-A45-006, wave 6): the fresh rig's pi
|
|
6
7
|
* failed every ballot with "No API key found" while the roster read `signed_in: true` off a present
|
|
@@ -10,6 +11,14 @@ export type { SeatHealth };
|
|
|
10
11
|
export declare const AUTH_REFUSAL_PATTERNS: RegExp[];
|
|
11
12
|
/** Whether a failure detail / stderr says the seat has no usable credential. */
|
|
12
13
|
export declare function isAuthRefusal(text: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* A8 (DES-seats-page §4.3): what a seat's refusal SAID, in crew's own vocabulary — the words each
|
|
16
|
+
* {@link AUTH_REFUSAL_PATTERNS} entry matched (`No API key`, `Not logged in`, `HTTP/1.1 401`,
|
|
17
|
+
* `OAuth session expired`), deduplicated, joined `; ` — or `null` when none matched. Never the
|
|
18
|
+
* CLI's surrounding prose: a refusal can carry a key, an account or an organisation in any shape,
|
|
19
|
+
* and no mask can know them all, so the roster carries only what crew's patterns name.
|
|
20
|
+
*/
|
|
21
|
+
export declare function refusalSummary(text: string): string | null;
|
|
13
22
|
/** How long a seat's own "no credential" report keeps its `auth` at `signed_out` with no ok output
|
|
14
23
|
* since — the same window as the council bench; an ok unit output clears it at once. */
|
|
15
24
|
export declare const AUTH_FAILURE_WINDOW_MS: number;
|
|
@@ -37,6 +46,8 @@ export interface SeatRecentBench {
|
|
|
37
46
|
source: string;
|
|
38
47
|
/** The run that benched it, when the frame named one. */
|
|
39
48
|
run?: string;
|
|
49
|
+
/** (A3) How many runs benched the seat while this bench was active (at least 1). */
|
|
50
|
+
runs: number;
|
|
40
51
|
}
|
|
41
52
|
/** A seat's own report that it has no credential (`RosterSeat.auth_evidence`). */
|
|
42
53
|
export interface SeatAuthFailure {
|
|
@@ -80,6 +91,18 @@ export declare class SeatHealthTracker {
|
|
|
80
91
|
ingest(event: CoreEvent): void;
|
|
81
92
|
/** Flip a seat ACTIVE: message cleared, `since` updated on a genuine transition. */
|
|
82
93
|
markActive(key: string, atMs?: number): void;
|
|
94
|
+
/**
|
|
95
|
+
* (A3) Lift the seat's recent bench because something else proved it can work again — the roster
|
|
96
|
+
* calls this when the seat's own LIVE sign-in check answered after an account bench (signed out,
|
|
97
|
+
* out of quota). An ok output does the same through {@link markActive}.
|
|
98
|
+
*/
|
|
99
|
+
clearRecentBench(key: string): void;
|
|
100
|
+
/**
|
|
101
|
+
* Drop the seat's own "no credential" report when it is OLDER than `beforeMs` — the roster calls
|
|
102
|
+
* this when the seat's LIVE sign-in check answered after it (the operator signed in since). A
|
|
103
|
+
* report that landed after the check is kept: the seat refused again.
|
|
104
|
+
*/
|
|
105
|
+
clearAuthFailureBefore(key: string, beforeMs: number): void;
|
|
83
106
|
/** Record a seat's own "no credential" report (F-A45-006) — the newest report wins. */
|
|
84
107
|
private recordAuthFailure;
|
|
85
108
|
/** Stamp an OBSERVED error on the seat — `lastErrorAt` only; the status stays `active` (R5). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-health.d.ts","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,eAAe,EAEhB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EAAE,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"seat-health.d.ts","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,eAAe,EAEhB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EAAE,UAAU,EAAE,CAAC;AAuC3B,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIpG;AAMD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAuBzC,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS1D;AAKD;yFACyF;AACzF,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,QAAiB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,gGAAgG;IAChG,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAYhB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0G;IACvI;qDACiD;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqG;IACnI,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;gBAEzB,IAAI,GAAE;QACjC;;;WAGG;QACH,SAAS,CAAC,EAAE,eAAe,CAAC;QAC5B,wEAAwE;QACxE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;KACtB;IAEN,4FAA4F;IAC5F,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAiL9B,oFAAoF;IACpF,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAa,GAAG,IAAI;IAWhD;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAInC;;;;OAIG;IACH,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK3D,uFAAuF;IACvF,OAAO,CAAC,iBAAiB;IAqBzB,gGAAgG;IAChG,OAAO,CAAC,UAAU;IAUlB;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,eAAe,GAAG,IAAI;IAevE;;;;;OAKG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,eAAe,GAAG,IAAI;IAiBvE,iGAAiG;IACjG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;CAGnC"}
|
package/dist/api/seat-health.js
CHANGED
|
@@ -60,6 +60,21 @@ const CLI_IN_DETAIL = /\(cli `([^`]+)` exited /;
|
|
|
60
60
|
* an `executes_code: false` unit on an ACP seat not admitted to input governance is routed to the
|
|
61
61
|
* wrapped carrier before any ACP turn, where the read-only lever is an argv fact). */
|
|
62
62
|
const BENIGN_FALLBACK_KINDS = new Set(['governance_requires_wrapped', 'read_only_requires_wrapped']);
|
|
63
|
+
/**
|
|
64
|
+
* A worker's ACP session died mid-turn (crew#411's correlation subject). Since wicked-core#925 a
|
|
65
|
+
* GOVERNED unit's death on an ACP-admitted non-claude seat is emitted as `governed_requires_acp`
|
|
66
|
+
* (nothing fell back, so the cause's `session_died` slug is not used); its reason still opens with
|
|
67
|
+
* the engine's session-death cause, which is what tells it apart from the other refusal causes
|
|
68
|
+
* (startup failure, workdir, transport, version pin).
|
|
69
|
+
*/
|
|
70
|
+
const SESSION_DEATH_CAUSES = ['[wicked-core] ACP session exited for ', '[wicked-core] ACP error for '];
|
|
71
|
+
export function isSessionDeath(fallbackKind, reason) {
|
|
72
|
+
if (fallbackKind === 'session_died')
|
|
73
|
+
return true;
|
|
74
|
+
if (fallbackKind !== 'governed_requires_acp' || reason === undefined)
|
|
75
|
+
return false;
|
|
76
|
+
return SESSION_DEATH_CAUSES.some((c) => reason.startsWith(c));
|
|
77
|
+
}
|
|
63
78
|
function str(v) {
|
|
64
79
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
65
80
|
}
|
|
@@ -70,7 +85,7 @@ function str(v) {
|
|
|
70
85
|
* `auth` must flip to `signed_out` (not only `council_eligible`), and the evidence rides with it.
|
|
71
86
|
*/
|
|
72
87
|
export const AUTH_REFUSAL_PATTERNS = [
|
|
73
|
-
/no api key
|
|
88
|
+
/no api key(?: found)?/i,
|
|
74
89
|
/not logged in/i,
|
|
75
90
|
/\bunauthenticated\b/i,
|
|
76
91
|
/\bunauthori[sz]ed\b/i,
|
|
@@ -97,6 +112,25 @@ export const AUTH_REFUSAL_PATTERNS = [
|
|
|
97
112
|
export function isAuthRefusal(text) {
|
|
98
113
|
return AUTH_REFUSAL_PATTERNS.some((re) => re.test(text));
|
|
99
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* A8 (DES-seats-page §4.3): what a seat's refusal SAID, in crew's own vocabulary — the words each
|
|
117
|
+
* {@link AUTH_REFUSAL_PATTERNS} entry matched (`No API key`, `Not logged in`, `HTTP/1.1 401`,
|
|
118
|
+
* `OAuth session expired`), deduplicated, joined `; ` — or `null` when none matched. Never the
|
|
119
|
+
* CLI's surrounding prose: a refusal can carry a key, an account or an organisation in any shape,
|
|
120
|
+
* and no mask can know them all, so the roster carries only what crew's patterns name.
|
|
121
|
+
*/
|
|
122
|
+
export function refusalSummary(text) {
|
|
123
|
+
const hits = [];
|
|
124
|
+
for (const re of AUTH_REFUSAL_PATTERNS) {
|
|
125
|
+
const m = re.exec(text);
|
|
126
|
+
if (m === null)
|
|
127
|
+
continue;
|
|
128
|
+
const phrase = m[0].replace(/\s+/g, ' ').trim();
|
|
129
|
+
if (!hits.some((h) => h.toLowerCase() === phrase.toLowerCase()))
|
|
130
|
+
hits.push(phrase);
|
|
131
|
+
}
|
|
132
|
+
return hits.length > 0 ? hits.join('; ') : null;
|
|
133
|
+
}
|
|
100
134
|
/** `acpFallback.fallbackKind` values that mean the seat's ACCOUNT refused (wave 6 adds two). */
|
|
101
135
|
const AUTH_FALLBACK_KINDS = new Set(['auth_required', 'auth_failed', 'unauthenticated']);
|
|
102
136
|
/** How long a seat's own "no credential" report keeps its `auth` at `signed_out` with no ok output
|
|
@@ -211,7 +245,7 @@ export class SeatHealthTracker {
|
|
|
211
245
|
// F-A45-006: a ballot the seat lost to its own missing credential (`not_logged_in`, or
|
|
212
246
|
// its own words saying "No API key found") flips `auth`, whatever the file probe read.
|
|
213
247
|
if (cli !== undefined && (kind === 'not_logged_in' || reason === 'not_logged_in' || said !== undefined)) {
|
|
214
|
-
this.recordAuthFailure(cli, said ?? texts[0] ?? '
|
|
248
|
+
this.recordAuthFailure(cli, said ?? texts[0] ?? '', 'ballot', at, session, 'not logged in');
|
|
215
249
|
}
|
|
216
250
|
// (R5b) An observed error — stamped, never counted: the engine benches the seat for the
|
|
217
251
|
// run at its own ballot threshold and says so in `unitDistributed.degradedReason`; crew
|
|
@@ -243,7 +277,12 @@ export class SeatHealthTracker {
|
|
|
243
277
|
// neither may bench a seat for the window.
|
|
244
278
|
if (cli === undefined || reason === undefined || (source !== 'worker' && source !== 'judge'))
|
|
245
279
|
return;
|
|
246
|
-
|
|
280
|
+
// A3: a bench that lands while the last one is still active counts one more run (the same
|
|
281
|
+
// run benching twice — its worker, then its judge — counts once).
|
|
282
|
+
const prev = this.recentBenches.get(cli);
|
|
283
|
+
const active = prev !== undefined && at - prev.at < SEAT_BENCH_WINDOW_MS;
|
|
284
|
+
const runs = !active ? 1 : session !== undefined && session === prev.session ? prev.runs : prev.runs + 1;
|
|
285
|
+
this.recentBenches.set(cli, { at, reason, source, runs, ...(session !== undefined ? { session } : {}) });
|
|
247
286
|
this.stampError(cli, at);
|
|
248
287
|
// The run moves its units OFF the benched seat: the refusing unit fails over (a
|
|
249
288
|
// `stepFailed` naming the new seat, no `unitReassigned`) and a later one is re-seated
|
|
@@ -270,7 +309,7 @@ export class SeatHealthTracker {
|
|
|
270
309
|
// `unauthenticated`) is the seat's account refusing — `auth` flips, with the engine's reason.
|
|
271
310
|
if (fallbackKind !== undefined && AUTH_FALLBACK_KINDS.has(fallbackKind)) {
|
|
272
311
|
const why = str(event.reason) ?? fallbackKind;
|
|
273
|
-
this.recordAuthFailure(cliKey, why, 'acp', at, session);
|
|
312
|
+
this.recordAuthFailure(cliKey, why, 'acp', at, session, fallbackKind);
|
|
274
313
|
}
|
|
275
314
|
// (R5) A fallback — one or many — is an observed error, never a status flip: the unit
|
|
276
315
|
// still runs on the wrapped carrier, and the seat's next turn is the engine's call.
|
|
@@ -279,9 +318,9 @@ export class SeatHealthTracker {
|
|
|
279
318
|
// A session_died fallback is a silent bridge exit-0; whether the daemon was
|
|
280
319
|
// also signalled at the same time determines the likely cause. Both branches
|
|
281
320
|
// always log when the signal log is wired so post-mortems have the evidence.
|
|
282
|
-
if (fallbackKind
|
|
321
|
+
if (isSessionDeath(fallbackKind, str(event.reason)) && this.opts.signalLog !== undefined) {
|
|
283
322
|
const match = this.opts.signalLog.findInWindow(at);
|
|
284
|
-
const who = `acpFallback(session_died) for ${cliKey} on run ${session ?? 'unknown'}`;
|
|
323
|
+
const who = `acpFallback(${fallbackKind ?? 'session_died'}) for ${cliKey} on run ${session ?? 'unknown'}`;
|
|
285
324
|
// The correlation is the whole point of crew#411 — never silently dropped when a
|
|
286
325
|
// caller wired a signalLog but no log sink; fall back to console.warn.
|
|
287
326
|
const emit = this.opts.log ?? ((m) => console.warn(m));
|
|
@@ -323,11 +362,33 @@ export class SeatHealthTracker {
|
|
|
323
362
|
this.authFailures.delete(key); // …and the seat's own "no credential" report (F-A45-006)
|
|
324
363
|
this.recentBenches.delete(key); // …and a run's bench of it: the seat just did work
|
|
325
364
|
}
|
|
365
|
+
/**
|
|
366
|
+
* (A3) Lift the seat's recent bench because something else proved it can work again — the roster
|
|
367
|
+
* calls this when the seat's own LIVE sign-in check answered after an account bench (signed out,
|
|
368
|
+
* out of quota). An ok output does the same through {@link markActive}.
|
|
369
|
+
*/
|
|
370
|
+
clearRecentBench(key) {
|
|
371
|
+
this.recentBenches.delete(key);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Drop the seat's own "no credential" report when it is OLDER than `beforeMs` — the roster calls
|
|
375
|
+
* this when the seat's LIVE sign-in check answered after it (the operator signed in since). A
|
|
376
|
+
* report that landed after the check is kept: the seat refused again.
|
|
377
|
+
*/
|
|
378
|
+
clearAuthFailureBefore(key, beforeMs) {
|
|
379
|
+
const rec = this.authFailures.get(key);
|
|
380
|
+
if (rec !== undefined && rec.at < beforeMs)
|
|
381
|
+
this.authFailures.delete(key);
|
|
382
|
+
}
|
|
326
383
|
/** Record a seat's own "no credential" report (F-A45-006) — the newest report wins. */
|
|
327
|
-
recordAuthFailure(key, detail, source, atMs, session) {
|
|
384
|
+
recordAuthFailure(key, detail, source, atMs, session, fallback = 'no credential') {
|
|
328
385
|
this.authFailures.set(key, {
|
|
329
386
|
at: atMs,
|
|
330
|
-
|
|
387
|
+
// A8: a seat's own words can carry a key or name its account, so only crew's own vocabulary
|
|
388
|
+
// for them is kept (`refusalSummary`); every reader — the roster, a chat refusal, a bench
|
|
389
|
+
// reason — gets that, never the CLI's prose. A refusal no pattern names keeps its source's
|
|
390
|
+
// controlled word (the caller's `fallback`).
|
|
391
|
+
detail: excerpt(refusalSummary(detail) ?? fallback),
|
|
331
392
|
source,
|
|
332
393
|
...(session !== undefined ? { session } : {}),
|
|
333
394
|
});
|
|
@@ -383,6 +444,7 @@ export class SeatHealthTracker {
|
|
|
383
444
|
reason: rec.reason,
|
|
384
445
|
source: rec.source,
|
|
385
446
|
...(rec.session !== undefined ? { run: rec.session } : {}),
|
|
447
|
+
runs: rec.runs,
|
|
386
448
|
};
|
|
387
449
|
}
|
|
388
450
|
/** The seat's health — a seat never seen in an event is ACTIVE with no message (the default). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-health.js","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seat-health.js","sourceRoot":"","sources":["../../src/api/seat-health.ts"],"names":[],"mappings":"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"}
|