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
|
@@ -14,12 +14,13 @@
|
|
|
14
14
|
* builds exactly one over its `SeatHealthTracker` and hands the same function everywhere.
|
|
15
15
|
*
|
|
16
16
|
* Standing is read at CALL time (the tracker's live state, the LIVE `WICKED_WORKER_HOME`), never
|
|
17
|
-
* captured — a seat signed in from the
|
|
17
|
+
* captured — a seat signed in from the Agents page is eligible on the very next launch.
|
|
18
18
|
*/
|
|
19
19
|
import type { RosterSeat } from '../core/types.js';
|
|
20
20
|
import { type SeatVersionPinCache } from './diagnostics.js';
|
|
21
21
|
import type { SeatHealthTracker } from './seat-health.js';
|
|
22
22
|
import { SeatProbe } from './seat-probe.js';
|
|
23
|
+
import { type SeatVersionCache } from './seat-version.js';
|
|
23
24
|
/** The accessor: the registry roster WITH crew's standing, freshly read on every call. `ready`
|
|
24
25
|
* (crew#645), awaited by a launch before it reads the roster, waits — bounded — for every seat's
|
|
25
26
|
* missing or stale login check, so an expired login reads `signed_out` before work is routed. */
|
|
@@ -27,7 +28,16 @@ export type RosterWithStanding = (() => RosterSeat[]) & {
|
|
|
27
28
|
ready?: () => Promise<void>;
|
|
28
29
|
/** crew#615: re-run one seat's credential probe now (after a sign-in / sign-out terminal). */
|
|
29
30
|
reprobe?: (seatKey: string) => void;
|
|
31
|
+
/** A3b (`GET /roster?refresh=<key>`): re-run one seat's sign-in check now and wait for it, at most
|
|
32
|
+
* `waitMs`. `probed` — the fresh answer is in; `timed_out` — still running (the read serves the
|
|
33
|
+
* last answer); `not_probed` — the seat has no sign-in check (pi, copilot, opencode). */
|
|
34
|
+
recheck?: (seatKey: string, waitMs: number) => Promise<RecheckOutcome>;
|
|
30
35
|
};
|
|
36
|
+
export type RecheckOutcome = 'probed' | 'timed_out' | 'not_probed';
|
|
37
|
+
/** A3b: how long `GET /roster?refresh=<key>` waits for the seat's sign-in check — the status
|
|
38
|
+
* command (about a second) plus its one live request (a CLI start and a one-word reply). Past it
|
|
39
|
+
* the read answers with the last reading and `timed_out`; the check keeps running. */
|
|
40
|
+
export declare const ROSTER_REFRESH_WAIT_MS: number;
|
|
31
41
|
export interface RosterStandingDeps {
|
|
32
42
|
/** The daemon's per-seat runtime health + council evidence (councilSeatFailed, auth refusals). */
|
|
33
43
|
seatHealth: SeatHealthTracker;
|
|
@@ -46,6 +56,22 @@ export interface RosterStandingDeps {
|
|
|
46
56
|
/** The seats' ACP version-pin readings (core#581, `diagnostics.ts`). Default: the daemon's
|
|
47
57
|
* shared cache under the same rule as `probe`; `null` turns it off. */
|
|
48
58
|
versionPins?: SeatVersionPinCache | null;
|
|
59
|
+
/** (A1) Every seat's `--version` reading (`seat-version.ts`). Default: the daemon's cache under
|
|
60
|
+
* the same rule as `probe`; `null` turns it off. */
|
|
61
|
+
versions?: SeatVersionCache | null;
|
|
62
|
+
/** (A5, core#920) The engine's worktree bench for a bound run: seat key → reason, or `null` when
|
|
63
|
+
* the engine cannot answer (an addon before the predicate). Default: `CoreAdapter.worktreeBenched`
|
|
64
|
+
* under the same rule as `probe`; `null` (or a test that injects a registry) turns it off, and
|
|
65
|
+
* then `work_admission` and `qe_reviewer` are absent. */
|
|
66
|
+
worktreeBench?: ((engineSeats: readonly unknown[]) => Map<string, string> | null) | null;
|
|
67
|
+
/** (A4) The engine's QE reviewer admission for one seat (`Core.qeReviewerAdmitted`), `null` when
|
|
68
|
+
* the engine cannot answer. Default under the same rule as `worktreeBench`; without it (or with
|
|
69
|
+
* `worktreeBench` absent) `qe_reviewer` is absent. */
|
|
70
|
+
qeAdmitted?: ((key: string, invocation: string | undefined) => boolean | null) | null;
|
|
71
|
+
/** (A6) The OS launcher the repository boundary arms with (`hostSandboxLauncher`). */
|
|
72
|
+
hostBoundary?: () => string | null;
|
|
73
|
+
/** (A6) The home directory a command's display writes as `$HOME` (default `os.homedir()`). */
|
|
74
|
+
home?: string;
|
|
49
75
|
}
|
|
50
76
|
/**
|
|
51
77
|
* Build the accessor. Each seat's registry fields ride through verbatim — the spread is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster-standing.d.ts","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"roster-standing.d.ts","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAwC,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWlG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErF;;kGAEkG;AAClG,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,GAAG;IACtD,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,8FAA8F;IAC9F,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;8FAE0F;IAC1F,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC;AAEnE;;uFAEuF;AACvF,eAAO,MAAM,sBAAsB,QAAY,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,kGAAkG;IAClG,UAAU,EAAE,iBAAiB,CAAC;IAC9B;gEAC4D;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IAC1E;iFAC6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC;IAC3B,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;0EAEsE;IACtE,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB;4EACwE;IACxE,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzC;yDACqD;IACrD,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC;;;8DAG0D;IAC1D,aAAa,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,SAAS,OAAO,EAAE,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACzF;;2DAEuD;IACvD,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACtF,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CA0NtF"}
|
|
@@ -14,14 +14,21 @@
|
|
|
14
14
|
* builds exactly one over its `SeatHealthTracker` and hands the same function everywhere.
|
|
15
15
|
*
|
|
16
16
|
* Standing is read at CALL time (the tracker's live state, the LIVE `WICKED_WORKER_HOME`), never
|
|
17
|
-
* captured — a seat signed in from the
|
|
17
|
+
* captured — a seat signed in from the Agents page is eligible on the very next launch.
|
|
18
18
|
*/
|
|
19
19
|
import { CoreAdapter } from '../core/adapter.js';
|
|
20
|
-
import {
|
|
20
|
+
import { defaultLaunchRoster, isOptInSeat } from '../core/opt-in-seats.js';
|
|
21
|
+
import { hostSandboxLauncher, seatVersionPins } from './diagnostics.js';
|
|
22
|
+
import { liveCheckLiftsBench, qeReviewer, recentBenchWire, seatAccount, seatIssues, workAdmission, } from './seat-agents.js';
|
|
21
23
|
import { signedInHeuristic } from './seat-signin.js';
|
|
22
24
|
import { SeatProbe } from './seat-probe.js';
|
|
23
25
|
import { seatGovernanceModes } from './seat-governance.js';
|
|
24
26
|
import { seatStanding, chatSeatAdmission } from './seat-standing.js';
|
|
27
|
+
import { seatVersion, seatVersions } from './seat-version.js';
|
|
28
|
+
/** A3b: how long `GET /roster?refresh=<key>` waits for the seat's sign-in check — the status
|
|
29
|
+
* command (about a second) plus its one live request (a CLI start and a one-word reply). Past it
|
|
30
|
+
* the read answers with the last reading and `timed_out`; the check keeps running. */
|
|
31
|
+
export const ROSTER_REFRESH_WAIT_MS = 20 * 1000;
|
|
25
32
|
/**
|
|
26
33
|
* Build the accessor. Each seat's registry fields ride through verbatim — the spread is
|
|
27
34
|
* deliberately NOT a field whitelist, which is what lets the engine's `login_invocation` pass
|
|
@@ -39,13 +46,28 @@ export function rosterWithStandingFactory(deps) {
|
|
|
39
46
|
: deps.signedIn === undefined && deps.registry === undefined
|
|
40
47
|
? seatVersionPins
|
|
41
48
|
: null;
|
|
49
|
+
const daemon = deps.signedIn === undefined && deps.registry === undefined;
|
|
50
|
+
const versions = deps.versions !== undefined ? deps.versions : daemon ? seatVersions : null;
|
|
51
|
+
const worktreeBench = deps.worktreeBench !== undefined ? deps.worktreeBench : daemon ? (seats) => CoreAdapter.worktreeBenched(seats) : null;
|
|
52
|
+
const qeAdmitted = deps.qeAdmitted !== undefined ? deps.qeAdmitted : daemon ? (key, inv) => CoreAdapter.qeReviewerAdmitted(key, inv) : null;
|
|
53
|
+
const hostBoundary = deps.hostBoundary ?? (() => hostSandboxLauncher());
|
|
42
54
|
const liveRoot = () => {
|
|
43
55
|
const workerRoot = env['WICKED_WORKER_HOME'];
|
|
44
56
|
return workerRoot === '' ? undefined : workerRoot;
|
|
45
57
|
};
|
|
46
58
|
const accessor = () => {
|
|
47
59
|
const root = liveRoot();
|
|
48
|
-
|
|
60
|
+
const seats = registry();
|
|
61
|
+
// A5: one engine call per read — the predicate takes the whole (engine-shaped) registry roster.
|
|
62
|
+
let benchedOnBound = null;
|
|
63
|
+
try {
|
|
64
|
+
benchedOnBound = worktreeBench === null ? null : worktreeBench(seats);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
benchedOnBound = null; // an engine that cannot answer says nothing, never a guessed bench
|
|
68
|
+
}
|
|
69
|
+
const boundary = hostBoundary();
|
|
70
|
+
const decorated = seats.map((seat) => {
|
|
49
71
|
const key = String(seat.key);
|
|
50
72
|
const health = seatHealth.healthFor(key);
|
|
51
73
|
// crew#630: the seat's own auth-status answer (cached; never awaited here). A probed seat
|
|
@@ -53,6 +75,19 @@ export function rosterWithStandingFactory(deps) {
|
|
|
53
75
|
// file is not a working login (a moved worker home keeps `.claude.json` and loses the
|
|
54
76
|
// keychain token) — it reads `unknown` until the probe answers.
|
|
55
77
|
const probed = probe?.read(key, root);
|
|
78
|
+
// A seat's own "no credential" report that its LIVE sign-in check answered AFTER is stale: the
|
|
79
|
+
// operator signed in since (codex r1 on #996 — it otherwise outranked the fresh probe for 30 min).
|
|
80
|
+
if (probed !== undefined && probed.signedIn === true && probed.check === 'live') {
|
|
81
|
+
seatHealth.clearAuthFailureBefore(key, Date.parse(probed.probedAt));
|
|
82
|
+
}
|
|
83
|
+
const authFailure = seatHealth.authFailureFor(key);
|
|
84
|
+
// A3: an account bench (signed out, out of quota) the seat's own LIVE sign-in check disproved
|
|
85
|
+
// after it landed is lifted here, as an ok turn would lift it.
|
|
86
|
+
let recentBench = seatHealth.recentBenchFor(key);
|
|
87
|
+
if (recentBench !== null && liveCheckLiftsBench(recentBench, probed)) {
|
|
88
|
+
seatHealth.clearRecentBench(key);
|
|
89
|
+
recentBench = null;
|
|
90
|
+
}
|
|
56
91
|
const heuristic = signedIn(key, root);
|
|
57
92
|
const signed = probed !== undefined && probed.signedIn !== null
|
|
58
93
|
? probed.signedIn
|
|
@@ -66,11 +101,11 @@ export function rosterWithStandingFactory(deps) {
|
|
|
66
101
|
// F-A45-006: the seat's OWN "no credential" report (a ballot's "No API key found", a
|
|
67
102
|
// worker's 401, an auth ACP fallback) overrides the file probe — `auth` flips, not only
|
|
68
103
|
// `council_eligible`, and the evidence rides on the wire.
|
|
69
|
-
|
|
104
|
+
authFailure, probed ?? (probe?.probes(key) === true ? 'pending' : undefined),
|
|
70
105
|
// The engine's own in-run bench of the seat, carried to this launch for a bounded window
|
|
71
106
|
// (`seatBenched`, SEAT_BENCH_WINDOW_MS): a seat that reads signed in but refused its work
|
|
72
107
|
// in a recent run is benched up front instead of being handed a unit again.
|
|
73
|
-
|
|
108
|
+
recentBench);
|
|
74
109
|
// F-W1-005 (wave-1 P6): the chat admission verdict the daemon itself applies when `POST /chats`
|
|
75
110
|
// picks its default seats — the SAME `chatSeatAdmission` call, for both scope modes — so the
|
|
76
111
|
// studio's picker offers exactly the seats an open would seat, from one source of truth (no
|
|
@@ -89,6 +124,35 @@ export function rosterWithStandingFactory(deps) {
|
|
|
89
124
|
...(versionPin !== undefined ? { version_pin: versionPin } : {}),
|
|
90
125
|
});
|
|
91
126
|
const govSeat = { ...standingSeat, ...(versionPin !== undefined ? { version_pin: versionPin } : {}) };
|
|
127
|
+
const chatAdmission = {
|
|
128
|
+
unscoped: chatSeatAdmission(govSeat, standing.auth, false, 'path'),
|
|
129
|
+
scoped: chatSeatAdmission(govSeat, standing.auth, true, 'path'),
|
|
130
|
+
scoped_bound: chatSeatAdmission(govSeat, standing.auth, true, 'path-bound'),
|
|
131
|
+
};
|
|
132
|
+
// A1: every seat's installed version, beside the pin reading.
|
|
133
|
+
const version = seatVersion(seat, versions?.read(key), versionPin);
|
|
134
|
+
const account = seatAccount(standing.auth, probed?.account);
|
|
135
|
+
// A4: the engine's QE skill admission for this seat (`null` when it cannot answer).
|
|
136
|
+
let skillAdmitted = null;
|
|
137
|
+
try {
|
|
138
|
+
const inv = seat.headless_invocation;
|
|
139
|
+
skillAdmitted = qeAdmitted === null ? null : qeAdmitted(key, typeof inv === 'string' ? inv : undefined);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
skillAdmitted = null;
|
|
143
|
+
}
|
|
144
|
+
// A4 / A5: only when the engine can say whether it benches the seat on a bound run.
|
|
145
|
+
const inputs = benchedOnBound === null
|
|
146
|
+
? null
|
|
147
|
+
: {
|
|
148
|
+
enabled_for_council: seat.enabled_for_council,
|
|
149
|
+
seat_eligible_for_work: seat.seat_eligible_for_work,
|
|
150
|
+
standing,
|
|
151
|
+
recentBench,
|
|
152
|
+
loginPending: probed === undefined && probe?.probes(key) === true && authFailure === null,
|
|
153
|
+
chatAdmission,
|
|
154
|
+
worktreeBench: benchedOnBound.get(key) ?? null,
|
|
155
|
+
};
|
|
92
156
|
return {
|
|
93
157
|
...seat,
|
|
94
158
|
health,
|
|
@@ -99,13 +163,39 @@ export function rosterWithStandingFactory(deps) {
|
|
|
99
163
|
// standing only; `scoped` = the wider-scope rule (several repos / a project); `scoped_bound` =
|
|
100
164
|
// a single-repo ask (bound run — standing only). The picker offers from these.
|
|
101
165
|
governance_mode: governanceMode,
|
|
102
|
-
chat_admission:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
},
|
|
166
|
+
chat_admission: chatAdmission,
|
|
167
|
+
...(version !== undefined ? { version } : {}),
|
|
168
|
+
...(account !== undefined ? { account } : {}),
|
|
169
|
+
...(recentBench !== null ? { recent_bench: recentBenchWire(recentBench) } : {}),
|
|
170
|
+
...(inputs !== null ? { work_admission: workAdmission(inputs) } : {}),
|
|
171
|
+
...(inputs !== null && skillAdmitted !== null ? { qe_reviewer: qeReviewer(inputs, skillAdmitted) } : {}),
|
|
107
172
|
};
|
|
108
173
|
});
|
|
174
|
+
// A6: the issues read the whole roster once — can any seat a DEFAULT launch holds run QE now?
|
|
175
|
+
// The default launch roster leaves opt-in seats out unless they are all it could convene
|
|
176
|
+
// (`defaultLaunchRoster`), so this follows the same rule (codex r1 on #996).
|
|
177
|
+
const qeKnown = decorated.some((s) => s.qe_reviewer !== undefined);
|
|
178
|
+
const rosterQe = !qeKnown ? undefined : defaultLaunchRoster(decorated).some((s) => s.qe_reviewer?.ok === true);
|
|
179
|
+
return decorated.map((s) => ({
|
|
180
|
+
...s,
|
|
181
|
+
issues: seatIssues({
|
|
182
|
+
key: String(s.key),
|
|
183
|
+
display_name: typeof s.display_name === 'string' ? s.display_name : String(s.key),
|
|
184
|
+
binary: typeof s.binary === 'string' ? s.binary : String(s.key),
|
|
185
|
+
...(typeof s.login_invocation === 'string' ? { login_invocation: s.login_invocation } : {}),
|
|
186
|
+
...(typeof s.logout_invocation === 'string' ? { logout_invocation: s.logout_invocation } : {}),
|
|
187
|
+
optIn: isOptInSeat(s.key),
|
|
188
|
+
standing: s,
|
|
189
|
+
...(s.version !== undefined ? { version: s.version } : {}),
|
|
190
|
+
governance: s.governance_mode,
|
|
191
|
+
hostBoundary: boundary,
|
|
192
|
+
recentBench: s.recent_bench,
|
|
193
|
+
...(s.work_admission !== undefined ? { workAdmission: s.work_admission } : {}),
|
|
194
|
+
...(s.qe_reviewer !== undefined ? { qeReviewer: s.qe_reviewer } : {}),
|
|
195
|
+
rosterQe,
|
|
196
|
+
...(deps.home !== undefined ? { home: deps.home } : {}),
|
|
197
|
+
}),
|
|
198
|
+
}));
|
|
109
199
|
};
|
|
110
200
|
if (probe !== null) {
|
|
111
201
|
accessor.ready = async () => {
|
|
@@ -121,6 +211,32 @@ export function rosterWithStandingFactory(deps) {
|
|
|
121
211
|
accessor.reprobe = (seatKey) => {
|
|
122
212
|
void probe.refresh(seatKey, liveRoot());
|
|
123
213
|
};
|
|
214
|
+
accessor.recheck = async (seatKey, waitMs) => {
|
|
215
|
+
if (!probe.probes(seatKey))
|
|
216
|
+
return 'not_probed';
|
|
217
|
+
const deadlineAt = Date.now() + waitMs;
|
|
218
|
+
// `probed` must describe the worker home the answer is READ under: if `worker_config_root`
|
|
219
|
+
// changed while the check ran, check the new home too, inside the same bound (codex r1 #996).
|
|
220
|
+
for (let root = liveRoot();;) {
|
|
221
|
+
const remaining = deadlineAt - Date.now();
|
|
222
|
+
if (remaining <= 0)
|
|
223
|
+
return 'timed_out';
|
|
224
|
+
let timer;
|
|
225
|
+
const deadline = new Promise((resolve) => {
|
|
226
|
+
timer = setTimeout(() => resolve('timed_out'), remaining);
|
|
227
|
+
timer.unref();
|
|
228
|
+
});
|
|
229
|
+
const done = probe.refreshFresh(seatKey, root).then(() => 'probed');
|
|
230
|
+
const outcome = await Promise.race([done, deadline]);
|
|
231
|
+
clearTimeout(timer);
|
|
232
|
+
if (outcome === 'timed_out')
|
|
233
|
+
return outcome;
|
|
234
|
+
const now = liveRoot();
|
|
235
|
+
if (now === root)
|
|
236
|
+
return 'probed';
|
|
237
|
+
root = now;
|
|
238
|
+
}
|
|
239
|
+
};
|
|
124
240
|
}
|
|
125
241
|
// Warm the probe at boot, so the first launch after a restart already routes on the seat's own
|
|
126
242
|
// answer (a probe runs in the background; the roster read itself never waits on one).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roster-standing.js","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"roster-standing.js","sourceRoot":"","sources":["../../src/api/roster-standing.ts"],"names":[],"mappings":"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"}
|
package/dist/api/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAgB,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EAAmD,WAAW,EAAoN,MAAM,oBAAoB,CAAC;AAEpT,OAAO,KAAK,EAEV,aAAa,EACb,SAAS,EAGT,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAiB,KAAK,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAaV,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYrD,OAAO,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/api/routes.js
CHANGED
|
@@ -24,7 +24,7 @@ import { applyCouncilSettings, isCouncilSize, isCouncilStaggerMs } from '../core
|
|
|
24
24
|
import { defaultLaunchRoster, markOptIn } from '../core/opt-in-seats.js';
|
|
25
25
|
import { chatSeatAdmission } from './seat-standing.js';
|
|
26
26
|
import { seatGovernanceDiagnostics, seatGovernanceWarnings, } from './seat-governance.js';
|
|
27
|
-
import { rosterWithStandingFactory } from './roster-standing.js';
|
|
27
|
+
import { ROSTER_REFRESH_WAIT_MS, rosterWithStandingFactory } from './roster-standing.js';
|
|
28
28
|
import { ChatTurnIndex } from './chat-turns.js';
|
|
29
29
|
import { ChatScopeIndex, chatScopeDeps, chatScopeStatement, prepareChatScratch, removeChatScratch, namedKindRefusal, resolveChatScope, } from './chat-scope.js';
|
|
30
30
|
import { ASK_TURN_BUDGET_SECS, AskPathIndex, answerStep, isAskTurn } from './ask-paths.js';
|
|
@@ -1268,7 +1268,20 @@ runtime = {}) {
|
|
|
1268
1268
|
// `POST /chats` seats its defaults through the SAME standing, so the roster and the chat never
|
|
1269
1269
|
// disagree about a seat.
|
|
1270
1270
|
const rosterWithStanding = runtime.rosterWithStanding ?? rosterWithStandingFactory({ seatHealth, signedIn });
|
|
1271
|
-
|
|
1271
|
+
// A3b (DES-seats-page): `?refresh=<key>` re-runs that seat's sign-in check now and waits for it,
|
|
1272
|
+
// bounded, so the Agents page's "I've signed in: check again" reads the seat's fresh answer, not
|
|
1273
|
+
// the probe cache's 30-second-old one. A read with no parameter never waits.
|
|
1274
|
+
app.get(`${V}/roster`, { config: { manifest: { responseType: 'RosterResponse', statusCodes: [200, 400] } } }, async (req, reply) => {
|
|
1275
|
+
const raw = req.query.refresh;
|
|
1276
|
+
if (raw === undefined)
|
|
1277
|
+
return { roster: markOptIn(rosterWithStanding()) };
|
|
1278
|
+
const key = Array.isArray(raw) ? undefined : raw.trim();
|
|
1279
|
+
if (key === undefined || key === '' || !rosterWithStanding().some((s) => s.key === key)) {
|
|
1280
|
+
return reply.code(400).send({ error: `Invalid ?refresh — expected one roster seat key, got ${JSON.stringify(raw)}` });
|
|
1281
|
+
}
|
|
1282
|
+
const outcome = rosterWithStanding.recheck !== undefined ? await rosterWithStanding.recheck(key, ROSTER_REFRESH_WAIT_MS) : 'not_probed';
|
|
1283
|
+
return { roster: markOptIn(rosterWithStanding()), refresh: { key, outcome } };
|
|
1284
|
+
});
|
|
1272
1285
|
/** crew#742: the seats' governance standing, read from the standing roster (empty when the
|
|
1273
1286
|
* roster cannot be read — the roster route reports that failure itself). */
|
|
1274
1287
|
const seatGovernanceNow = () => {
|
|
@@ -2808,7 +2821,7 @@ runtime = {}) {
|
|
|
2808
2821
|
? 'no seat in standing can be held to an ask that reads several repositories (or a project) ' +
|
|
2809
2822
|
'the run cannot bind; scope the ask to one repository, sign a seat in, or open it unscoped'
|
|
2810
2823
|
: 'no seat in the roster can take a turn (every seat is signed out or disabled); sign a seat ' +
|
|
2811
|
-
'in from the
|
|
2824
|
+
'in from the Agents page, or name seats with `clis`') + ' — see refused',
|
|
2812
2825
|
refused,
|
|
2813
2826
|
});
|
|
2814
2827
|
}
|
|
@@ -5058,13 +5071,17 @@ runtime = {}) {
|
|
|
5058
5071
|
return reply.code(400).send({ error: message(err) });
|
|
5059
5072
|
}
|
|
5060
5073
|
});
|
|
5061
|
-
// crew#615: sign a seat
|
|
5062
|
-
// ENGINE's own `
|
|
5063
|
-
//
|
|
5064
|
-
//
|
|
5065
|
-
//
|
|
5066
|
-
//
|
|
5067
|
-
|
|
5074
|
+
// crew#615: sign a seat out without the client composing the command. The daemon runs the
|
|
5075
|
+
// ENGINE's own `logout_invocation` for that seat (already prefixed with the seat's configuration
|
|
5076
|
+
// root; the daemon never synthesizes one) in a governed PTY, and answers the terminal id — the
|
|
5077
|
+
// CLI's output streams over `/ws/terminals/:id`. The seat's credential probe is re-run when the
|
|
5078
|
+
// terminal exits, so the roster's `signed_in` follows the outcome instead of waiting out the
|
|
5079
|
+
// probe's TTL.
|
|
5080
|
+
// DES-seats-page Q3 (operator, 2026-10-12): studio never handles credentials — a sign-in is a
|
|
5081
|
+
// command the operator runs in their own terminal (`RosterSeat.login_invocation`), so the
|
|
5082
|
+
// `POST /seats/:cli/login` PTY route is deleted. This logout route stays only while studio's
|
|
5083
|
+
// Configuration page still calls it; it goes with that page's Log out terminal (studio S2).
|
|
5084
|
+
for (const action of ['logout']) {
|
|
5068
5085
|
app.post(`${V}/seats/:cli/${action}`, { config: { manifest: { requestType: 'SeatSessionBody', responseType: 'SeatSessionResponse', statusCodes: [201, 400, 404] } } }, async (req, reply) => {
|
|
5069
5086
|
const { cli } = req.params;
|
|
5070
5087
|
const parsed = SeatSessionSchema.safeParse(req.body ?? {});
|
|
@@ -5074,7 +5091,7 @@ runtime = {}) {
|
|
|
5074
5091
|
const seat = rosterWithStanding().find((s) => s.key === cli);
|
|
5075
5092
|
if (seat === undefined)
|
|
5076
5093
|
return reply.code(404).send({ error: `unknown seat: ${cli}` });
|
|
5077
|
-
const field =
|
|
5094
|
+
const field = seat.logout_invocation;
|
|
5078
5095
|
const invocation = typeof field === 'string' ? field.trim() : '';
|
|
5079
5096
|
if (invocation === '') {
|
|
5080
5097
|
return reply.code(404).send({
|