wicked-crew 0.9.13 → 0.10.1
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/job-title.d.ts +24 -0
- package/dist/api/job-title.d.ts.map +1 -0
- package/dist/api/job-title.js +97 -0
- package/dist/api/job-title.js.map +1 -0
- package/dist/api/mcp.d.ts +26 -6
- package/dist/api/mcp.d.ts.map +1 -1
- package/dist/api/mcp.js +87 -10
- package/dist/api/mcp.js.map +1 -1
- 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 +60 -13
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +23 -1
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +66 -1
- package/dist/api/run-timing-index.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 +22 -0
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +53 -6
- 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-record.d.ts +1 -1
- package/dist/api/seat-record.js +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 +2 -2
- package/dist/api/server.js.map +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 +13 -13
- package/dist/editors/registry.d.ts.map +1 -1
- package/dist/editors/registry.js +1 -0
- package/dist/editors/registry.js.map +1 -1
- package/dist/editors/routes.d.ts +19 -1
- package/dist/editors/routes.d.ts.map +1 -1
- package/dist/editors/routes.js +85 -7
- package/dist/editors/routes.js.map +1 -1
- package/dist/interactive/council-outcome.js +1 -1
- package/dist/mcp/broker.d.ts.map +1 -1
- package/dist/mcp/broker.js +17 -0
- package/dist/mcp/broker.js.map +1 -1
- package/dist/mcp/classify.d.ts +12 -2
- package/dist/mcp/classify.d.ts.map +1 -1
- package/dist/mcp/classify.js +5 -2
- package/dist/mcp/classify.js.map +1 -1
- package/dist/mcp/policies.d.ts +10 -1
- package/dist/mcp/policies.d.ts.map +1 -1
- package/dist/mcp/policies.js +16 -4
- package/dist/mcp/policies.js.map +1 -1
- package/dist/mcp/probe.d.ts +2 -0
- package/dist/mcp/probe.d.ts.map +1 -1
- package/dist/mcp/probe.js.map +1 -1
- package/dist/mcp/registry-store.d.ts +6 -0
- package/dist/mcp/registry-store.d.ts.map +1 -1
- package/dist/mcp/registry-store.js.map +1 -1
- package/dist/mcp/registry.d.ts +83 -7
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +213 -24
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/rest.d.ts +29 -2
- package/dist/mcp/rest.d.ts.map +1 -1
- package/dist/mcp/rest.js +123 -2
- package/dist/mcp/rest.js.map +1 -1
- package/dist/mcp-inspect/routes.d.ts +55 -0
- package/dist/mcp-inspect/routes.d.ts.map +1 -0
- package/dist/mcp-inspect/routes.js +268 -0
- package/dist/mcp-inspect/routes.js.map +1 -0
- package/dist/mcp-inspect/session.d.ts +153 -0
- package/dist/mcp-inspect/session.d.ts.map +1 -0
- package/dist/mcp-inspect/session.js +487 -0
- package/dist/mcp-inspect/session.js.map +1 -0
- package/dist/projects/state-home.d.ts +2 -1
- package/dist/projects/state-home.d.ts.map +1 -1
- package/dist/projects/state-home.js +34 -4
- package/dist/projects/state-home.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 +61 -15
- package/package.json +3 -3
- package/dist/studio/assets/index-DlZl1q2Q.js +0 -593
- package/dist/studio/assets/index-eLCOoPWX.css +0 -32
|
@@ -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';
|
|
@@ -82,6 +82,7 @@ import { UsageError, replayOutboxInto } from '../cli/governance.js';
|
|
|
82
82
|
import { foldDeadletters } from './governance-health.js';
|
|
83
83
|
import { RetryIndex } from './retry-index.js';
|
|
84
84
|
import { SEAT_RECORD_DEFAULT_DAYS, SEAT_RECORD_MAX_DAYS, seatRecord } from './seat-record.js';
|
|
85
|
+
import { jobTitle } from './job-title.js';
|
|
85
86
|
import { DeliveryFreeze, frozenRefusal, isDeliverUnit, registerDeliveryFreezeRoutes } from './delivery-freeze.js';
|
|
86
87
|
import { GroupIndex } from './group-index.js';
|
|
87
88
|
import { RunTimingIndex, recordRunLaunched } from './run-timing-index.js';
|
|
@@ -103,6 +104,7 @@ import { ConsiderationService } from '../decisions/consider.js';
|
|
|
103
104
|
import { gardenConformance, gardenPackCheck } from '../editors/pack-install.js';
|
|
104
105
|
import { EditorRegistry } from '../editors/registry.js';
|
|
105
106
|
import { registerEditorRoutes } from '../editors/routes.js';
|
|
107
|
+
import { registerMcpInspectRoutes } from '../mcp-inspect/routes.js';
|
|
106
108
|
import { discoverLivePlugin } from '../skills/plugin-source.js';
|
|
107
109
|
import { resolveDecisionsMode } from '../decisions/types.js';
|
|
108
110
|
const V = API_PREFIX;
|
|
@@ -744,6 +746,13 @@ runtime = {}) {
|
|
|
744
746
|
return;
|
|
745
747
|
await deliveryResolver.settle(views, runtime.deliverySettleMs);
|
|
746
748
|
};
|
|
749
|
+
// crew#985: terminal runs with no `run.ended` entry are dated from the engine's event log before
|
|
750
|
+
// the DTO is assembled (read-only, once per run per process; see `backfillEndedFromEvents`).
|
|
751
|
+
const backfillEndedAt = async (views) => {
|
|
752
|
+
if (typeof adapter.runEvents !== 'function')
|
|
753
|
+
return;
|
|
754
|
+
await runTimingIndex.backfillEndedFromEvents(views, (id) => adapter.runEvents(id));
|
|
755
|
+
};
|
|
747
756
|
const deliveryCache = runtime.deliveryCache ??
|
|
748
757
|
new DeliveryDerivationCache({
|
|
749
758
|
listViews: () => adapter.sessionsDetail(),
|
|
@@ -925,6 +934,9 @@ runtime = {}) {
|
|
|
925
934
|
// Wave 6 (F-4R2-006): the interactive document this run answered, from the seams' handoff
|
|
926
935
|
// ledgers — `null` = genuinely not a document run, so the field is ALWAYS present on served runs.
|
|
927
936
|
view.session.document_id = docRuns.documentOf(view.session.id) ?? null;
|
|
937
|
+
// api-types 0.113.0 (operator ruling 2026-10-12): the run's short job title, derived here from its
|
|
938
|
+
// own problem (pure, `job-title.ts`) so every skin shows the same one; the full text stays `problem`.
|
|
939
|
+
view.session.title = jobTitle(view.session.problem);
|
|
928
940
|
const retryOf = retryIndex.retryOfFor(view.session.id);
|
|
929
941
|
if (retryOf !== undefined)
|
|
930
942
|
view.session.retry_of = retryOf;
|
|
@@ -1256,7 +1268,20 @@ runtime = {}) {
|
|
|
1256
1268
|
// `POST /chats` seats its defaults through the SAME standing, so the roster and the chat never
|
|
1257
1269
|
// disagree about a seat.
|
|
1258
1270
|
const rosterWithStanding = runtime.rosterWithStanding ?? rosterWithStandingFactory({ seatHealth, signedIn });
|
|
1259
|
-
|
|
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
|
+
});
|
|
1260
1285
|
/** crew#742: the seats' governance standing, read from the standing roster (empty when the
|
|
1261
1286
|
* roster cannot be read — the roster route reports that failure itself). */
|
|
1262
1287
|
const seatGovernanceNow = () => {
|
|
@@ -1281,7 +1306,17 @@ runtime = {}) {
|
|
|
1281
1306
|
}
|
|
1282
1307
|
days = n;
|
|
1283
1308
|
}
|
|
1284
|
-
|
|
1309
|
+
// api-types 0.113.0: `?project=<id>` folds only that project's runs (the dashboards' spend);
|
|
1310
|
+
// the answer echoes it, so a skin can tell a scoped answer from an older daemon's global one.
|
|
1311
|
+
const rawProject = req.query.project;
|
|
1312
|
+
if (rawProject !== undefined && (Array.isArray(rawProject) || rawProject.trim() === '')) {
|
|
1313
|
+
return reply.code(400).send({ error: 'Invalid ?project — expected one project id' });
|
|
1314
|
+
}
|
|
1315
|
+
const project = rawProject?.trim();
|
|
1316
|
+
const detail = await adapter.sessionsDetail();
|
|
1317
|
+
await backfillEndedAt(detail);
|
|
1318
|
+
const all = detail.map(decorateRun);
|
|
1319
|
+
const views = project === undefined ? all : all.filter((v) => v.session.project_id === project);
|
|
1285
1320
|
const out = await seatRecord(views, async (id) => {
|
|
1286
1321
|
const engine = await adapter.runEvents(id);
|
|
1287
1322
|
if (engine === null)
|
|
@@ -1292,7 +1327,7 @@ runtime = {}) {
|
|
|
1292
1327
|
if (out === null) {
|
|
1293
1328
|
return reply.code(503).send({ error: 'Seat records are unavailable: this wicked-core build has no event-log read binding' });
|
|
1294
1329
|
}
|
|
1295
|
-
return out;
|
|
1330
|
+
return project === undefined ? out : { ...out, project };
|
|
1296
1331
|
});
|
|
1297
1332
|
// Open a file/folder with the OS default application (crew#273) — the studio Files tab's
|
|
1298
1333
|
// click-to-open. The open MUST happen daemon-side (the SPA cannot spawn a process), which is
|
|
@@ -2174,6 +2209,7 @@ runtime = {}) {
|
|
|
2174
2209
|
const ordered = sortActionableFirst(visible);
|
|
2175
2210
|
const served = cap !== undefined ? ordered.slice(0, cap) : ordered;
|
|
2176
2211
|
await settleDeliveries(served);
|
|
2212
|
+
await backfillEndedAt(served);
|
|
2177
2213
|
return { runs: served.map(decorateRun) };
|
|
2178
2214
|
});
|
|
2179
2215
|
// ── Run archival (crew#265) — write-off, not delete ────────────────────────
|
|
@@ -2235,6 +2271,7 @@ runtime = {}) {
|
|
|
2235
2271
|
if (!run)
|
|
2236
2272
|
return reply.code(404).send({ error: 'Run not found' });
|
|
2237
2273
|
await settleDeliveries([run]);
|
|
2274
|
+
await backfillEndedAt([run]);
|
|
2238
2275
|
return { run: decorateRun(run) };
|
|
2239
2276
|
});
|
|
2240
2277
|
// ── Inventory claims (crew#721) — whether each enumerating step's list is complete ──
|
|
@@ -2784,7 +2821,7 @@ runtime = {}) {
|
|
|
2784
2821
|
? 'no seat in standing can be held to an ask that reads several repositories (or a project) ' +
|
|
2785
2822
|
'the run cannot bind; scope the ask to one repository, sign a seat in, or open it unscoped'
|
|
2786
2823
|
: 'no seat in the roster can take a turn (every seat is signed out or disabled); sign a seat ' +
|
|
2787
|
-
'in from the
|
|
2824
|
+
'in from the Agents page, or name seats with `clis`') + ' — see refused',
|
|
2788
2825
|
refused,
|
|
2789
2826
|
});
|
|
2790
2827
|
}
|
|
@@ -5034,13 +5071,17 @@ runtime = {}) {
|
|
|
5034
5071
|
return reply.code(400).send({ error: message(err) });
|
|
5035
5072
|
}
|
|
5036
5073
|
});
|
|
5037
|
-
// crew#615: sign a seat
|
|
5038
|
-
// ENGINE's own `
|
|
5039
|
-
//
|
|
5040
|
-
//
|
|
5041
|
-
//
|
|
5042
|
-
//
|
|
5043
|
-
|
|
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']) {
|
|
5044
5085
|
app.post(`${V}/seats/:cli/${action}`, { config: { manifest: { requestType: 'SeatSessionBody', responseType: 'SeatSessionResponse', statusCodes: [201, 400, 404] } } }, async (req, reply) => {
|
|
5045
5086
|
const { cli } = req.params;
|
|
5046
5087
|
const parsed = SeatSessionSchema.safeParse(req.body ?? {});
|
|
@@ -5050,7 +5091,7 @@ runtime = {}) {
|
|
|
5050
5091
|
const seat = rosterWithStanding().find((s) => s.key === cli);
|
|
5051
5092
|
if (seat === undefined)
|
|
5052
5093
|
return reply.code(404).send({ error: `unknown seat: ${cli}` });
|
|
5053
|
-
const field =
|
|
5094
|
+
const field = seat.logout_invocation;
|
|
5054
5095
|
const invocation = typeof field === 'string' ? field.trim() : '';
|
|
5055
5096
|
if (invocation === '') {
|
|
5056
5097
|
return reply.code(404).send({
|
|
@@ -5939,6 +5980,12 @@ runtime = {}) {
|
|
|
5939
5980
|
previewCalls: (json) => adapter.previewMcpCalls(json),
|
|
5940
5981
|
})
|
|
5941
5982
|
: undefined;
|
|
5983
|
+
// The MCP inspector bridge (DES-MCP-INSPECTOR-001): live sessions to MCP servers for studio's
|
|
5984
|
+
// `mcp-server` editor host; registry servers resolve through the same registry and secrets.
|
|
5985
|
+
registerMcpInspectRoutes(app, {
|
|
5986
|
+
...(runtime.mcp !== undefined ? { registry: runtime.mcp } : {}),
|
|
5987
|
+
log: (m) => app.log.info(m),
|
|
5988
|
+
});
|
|
5942
5989
|
registerMcpRoutes(app, {
|
|
5943
5990
|
...(runtime.mcp !== undefined ? { registry: runtime.mcp, toolLister: () => CoreAdapter.mcpToolLister() } : {}),
|
|
5944
5991
|
...(runtime.mcpBroker !== undefined ? { broker: runtime.mcpBroker } : {}),
|