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.
Files changed (55) hide show
  1. package/dist/api/roster-standing.d.ts +27 -1
  2. package/dist/api/roster-standing.d.ts.map +1 -1
  3. package/dist/api/roster-standing.js +126 -10
  4. package/dist/api/roster-standing.js.map +1 -1
  5. package/dist/api/routes.d.ts.map +1 -1
  6. package/dist/api/routes.js +28 -11
  7. package/dist/api/routes.js.map +1 -1
  8. package/dist/api/seat-agents.d.ts +135 -0
  9. package/dist/api/seat-agents.d.ts.map +1 -0
  10. package/dist/api/seat-agents.js +186 -0
  11. package/dist/api/seat-agents.js.map +1 -0
  12. package/dist/api/seat-health.d.ts +23 -0
  13. package/dist/api/seat-health.d.ts.map +1 -1
  14. package/dist/api/seat-health.js +70 -8
  15. package/dist/api/seat-health.js.map +1 -1
  16. package/dist/api/seat-probe.d.ts +11 -2
  17. package/dist/api/seat-probe.d.ts.map +1 -1
  18. package/dist/api/seat-probe.js +28 -9
  19. package/dist/api/seat-probe.js.map +1 -1
  20. package/dist/api/seat-scrub.d.ts +65 -0
  21. package/dist/api/seat-scrub.d.ts.map +1 -0
  22. package/dist/api/seat-scrub.js +193 -0
  23. package/dist/api/seat-scrub.js.map +1 -0
  24. package/dist/api/seat-standing.d.ts +3 -2
  25. package/dist/api/seat-standing.d.ts.map +1 -1
  26. package/dist/api/seat-standing.js +8 -7
  27. package/dist/api/seat-standing.js.map +1 -1
  28. package/dist/api/seat-version.d.ts +81 -0
  29. package/dist/api/seat-version.d.ts.map +1 -0
  30. package/dist/api/seat-version.js +174 -0
  31. package/dist/api/seat-version.js.map +1 -0
  32. package/dist/api/server.js +1 -1
  33. package/dist/core/adapter.d.ts +12 -0
  34. package/dist/core/adapter.d.ts.map +1 -1
  35. package/dist/core/adapter.js +25 -0
  36. package/dist/core/adapter.js.map +1 -1
  37. package/dist/core/engine-roster.d.ts.map +1 -1
  38. package/dist/core/engine-roster.js +8 -0
  39. package/dist/core/engine-roster.js.map +1 -1
  40. package/dist/editors/registry.d.ts +2 -2
  41. package/dist/interactive/council-outcome.d.ts +5 -1
  42. package/dist/interactive/council-outcome.d.ts.map +1 -1
  43. package/dist/interactive/council-outcome.js +11 -2
  44. package/dist/interactive/council-outcome.js.map +1 -1
  45. package/dist/standing-orders/parse.js +1 -1
  46. package/dist/studio/assets/index-C6DLorst.css +32 -0
  47. package/dist/studio/assets/index-CAhuFWeA.js +609 -0
  48. package/dist/studio/editors/wicked-page/editor.json +1 -1
  49. package/dist/studio/editors/wicked-page/index.html +1 -1
  50. package/dist/studio/index.html +2 -2
  51. package/dist/studio/testid-inventory.json +553 -144
  52. package/endpoint-manifest.json +6 -14
  53. package/package.json +4 -4
  54. package/dist/studio/assets/index-DlZl1q2Q.js +0 -593
  55. 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;AAmC3B;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAuBzC,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;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;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,CAAuF;IACrH,+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;IA4K9B,oFAAoF;IACpF,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAa,GAAG,IAAI;IAWhD,uFAAuF;IACvF,OAAO,CAAC,iBAAiB;IAgBzB,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;IAgBvE,iGAAiG;IACjG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;CAGnC"}
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"}
@@ -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/i,
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] ?? 'not logged in', 'ballot', at, session);
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
- this.recentBenches.set(cli, { at, reason, source, ...(session !== undefined ? { session } : {}) });
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 === 'session_died' && this.opts.signalLog !== undefined) {
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
- detail: excerpt(detail),
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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"}