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
package/dist/api/seat-health.js
CHANGED
|
@@ -70,7 +70,7 @@ function str(v) {
|
|
|
70
70
|
* `auth` must flip to `signed_out` (not only `council_eligible`), and the evidence rides with it.
|
|
71
71
|
*/
|
|
72
72
|
export const AUTH_REFUSAL_PATTERNS = [
|
|
73
|
-
/no api key
|
|
73
|
+
/no api key(?: found)?/i,
|
|
74
74
|
/not logged in/i,
|
|
75
75
|
/\bunauthenticated\b/i,
|
|
76
76
|
/\bunauthori[sz]ed\b/i,
|
|
@@ -97,6 +97,25 @@ export const AUTH_REFUSAL_PATTERNS = [
|
|
|
97
97
|
export function isAuthRefusal(text) {
|
|
98
98
|
return AUTH_REFUSAL_PATTERNS.some((re) => re.test(text));
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* A8 (DES-seats-page §4.3): what a seat's refusal SAID, in crew's own vocabulary — the words each
|
|
102
|
+
* {@link AUTH_REFUSAL_PATTERNS} entry matched (`No API key`, `Not logged in`, `HTTP/1.1 401`,
|
|
103
|
+
* `OAuth session expired`), deduplicated, joined `; ` — or `null` when none matched. Never the
|
|
104
|
+
* CLI's surrounding prose: a refusal can carry a key, an account or an organisation in any shape,
|
|
105
|
+
* and no mask can know them all, so the roster carries only what crew's patterns name.
|
|
106
|
+
*/
|
|
107
|
+
export function refusalSummary(text) {
|
|
108
|
+
const hits = [];
|
|
109
|
+
for (const re of AUTH_REFUSAL_PATTERNS) {
|
|
110
|
+
const m = re.exec(text);
|
|
111
|
+
if (m === null)
|
|
112
|
+
continue;
|
|
113
|
+
const phrase = m[0].replace(/\s+/g, ' ').trim();
|
|
114
|
+
if (!hits.some((h) => h.toLowerCase() === phrase.toLowerCase()))
|
|
115
|
+
hits.push(phrase);
|
|
116
|
+
}
|
|
117
|
+
return hits.length > 0 ? hits.join('; ') : null;
|
|
118
|
+
}
|
|
100
119
|
/** `acpFallback.fallbackKind` values that mean the seat's ACCOUNT refused (wave 6 adds two). */
|
|
101
120
|
const AUTH_FALLBACK_KINDS = new Set(['auth_required', 'auth_failed', 'unauthenticated']);
|
|
102
121
|
/** How long a seat's own "no credential" report keeps its `auth` at `signed_out` with no ok output
|
|
@@ -211,7 +230,7 @@ export class SeatHealthTracker {
|
|
|
211
230
|
// F-A45-006: a ballot the seat lost to its own missing credential (`not_logged_in`, or
|
|
212
231
|
// its own words saying "No API key found") flips `auth`, whatever the file probe read.
|
|
213
232
|
if (cli !== undefined && (kind === 'not_logged_in' || reason === 'not_logged_in' || said !== undefined)) {
|
|
214
|
-
this.recordAuthFailure(cli, said ?? texts[0] ?? '
|
|
233
|
+
this.recordAuthFailure(cli, said ?? texts[0] ?? '', 'ballot', at, session, 'not logged in');
|
|
215
234
|
}
|
|
216
235
|
// (R5b) An observed error — stamped, never counted: the engine benches the seat for the
|
|
217
236
|
// run at its own ballot threshold and says so in `unitDistributed.degradedReason`; crew
|
|
@@ -243,7 +262,12 @@ export class SeatHealthTracker {
|
|
|
243
262
|
// neither may bench a seat for the window.
|
|
244
263
|
if (cli === undefined || reason === undefined || (source !== 'worker' && source !== 'judge'))
|
|
245
264
|
return;
|
|
246
|
-
|
|
265
|
+
// A3: a bench that lands while the last one is still active counts one more run (the same
|
|
266
|
+
// run benching twice — its worker, then its judge — counts once).
|
|
267
|
+
const prev = this.recentBenches.get(cli);
|
|
268
|
+
const active = prev !== undefined && at - prev.at < SEAT_BENCH_WINDOW_MS;
|
|
269
|
+
const runs = !active ? 1 : session !== undefined && session === prev.session ? prev.runs : prev.runs + 1;
|
|
270
|
+
this.recentBenches.set(cli, { at, reason, source, runs, ...(session !== undefined ? { session } : {}) });
|
|
247
271
|
this.stampError(cli, at);
|
|
248
272
|
// The run moves its units OFF the benched seat: the refusing unit fails over (a
|
|
249
273
|
// `stepFailed` naming the new seat, no `unitReassigned`) and a later one is re-seated
|
|
@@ -270,7 +294,7 @@ export class SeatHealthTracker {
|
|
|
270
294
|
// `unauthenticated`) is the seat's account refusing — `auth` flips, with the engine's reason.
|
|
271
295
|
if (fallbackKind !== undefined && AUTH_FALLBACK_KINDS.has(fallbackKind)) {
|
|
272
296
|
const why = str(event.reason) ?? fallbackKind;
|
|
273
|
-
this.recordAuthFailure(cliKey, why, 'acp', at, session);
|
|
297
|
+
this.recordAuthFailure(cliKey, why, 'acp', at, session, fallbackKind);
|
|
274
298
|
}
|
|
275
299
|
// (R5) A fallback — one or many — is an observed error, never a status flip: the unit
|
|
276
300
|
// still runs on the wrapped carrier, and the seat's next turn is the engine's call.
|
|
@@ -323,11 +347,33 @@ export class SeatHealthTracker {
|
|
|
323
347
|
this.authFailures.delete(key); // …and the seat's own "no credential" report (F-A45-006)
|
|
324
348
|
this.recentBenches.delete(key); // …and a run's bench of it: the seat just did work
|
|
325
349
|
}
|
|
350
|
+
/**
|
|
351
|
+
* (A3) Lift the seat's recent bench because something else proved it can work again — the roster
|
|
352
|
+
* calls this when the seat's own LIVE sign-in check answered after an account bench (signed out,
|
|
353
|
+
* out of quota). An ok output does the same through {@link markActive}.
|
|
354
|
+
*/
|
|
355
|
+
clearRecentBench(key) {
|
|
356
|
+
this.recentBenches.delete(key);
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Drop the seat's own "no credential" report when it is OLDER than `beforeMs` — the roster calls
|
|
360
|
+
* this when the seat's LIVE sign-in check answered after it (the operator signed in since). A
|
|
361
|
+
* report that landed after the check is kept: the seat refused again.
|
|
362
|
+
*/
|
|
363
|
+
clearAuthFailureBefore(key, beforeMs) {
|
|
364
|
+
const rec = this.authFailures.get(key);
|
|
365
|
+
if (rec !== undefined && rec.at < beforeMs)
|
|
366
|
+
this.authFailures.delete(key);
|
|
367
|
+
}
|
|
326
368
|
/** Record a seat's own "no credential" report (F-A45-006) — the newest report wins. */
|
|
327
|
-
recordAuthFailure(key, detail, source, atMs, session) {
|
|
369
|
+
recordAuthFailure(key, detail, source, atMs, session, fallback = 'no credential') {
|
|
328
370
|
this.authFailures.set(key, {
|
|
329
371
|
at: atMs,
|
|
330
|
-
|
|
372
|
+
// A8: a seat's own words can carry a key or name its account, so only crew's own vocabulary
|
|
373
|
+
// for them is kept (`refusalSummary`); every reader — the roster, a chat refusal, a bench
|
|
374
|
+
// reason — gets that, never the CLI's prose. A refusal no pattern names keeps its source's
|
|
375
|
+
// controlled word (the caller's `fallback`).
|
|
376
|
+
detail: excerpt(refusalSummary(detail) ?? fallback),
|
|
331
377
|
source,
|
|
332
378
|
...(session !== undefined ? { session } : {}),
|
|
333
379
|
});
|
|
@@ -383,6 +429,7 @@ export class SeatHealthTracker {
|
|
|
383
429
|
reason: rec.reason,
|
|
384
430
|
source: rec.source,
|
|
385
431
|
...(rec.session !== undefined ? { run: rec.session } : {}),
|
|
432
|
+
runs: rec.runs,
|
|
386
433
|
};
|
|
387
434
|
}
|
|
388
435
|
/** 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":"AAAA,kGAAkG;AAClG,EAAE;AACF,gGAAgG;AAChG,gGAAgG;AAChG,+FAA+F;AAC/F,kGAAkG;AAClG,2EAA2E;AAC3E,EAAE;AACF,kFAAkF;AAClF,EAAE;AACF,uFAAuF;AACvF,4FAA4F;AAC5F,iGAAiG;AACjG,+FAA+F;AAC/F,+FAA+F;AAC/F,mGAAmG;AACnG,kGAAkG;AAClG,mHAAmH;AACnH,kGAAkG;AAClG,mGAAmG;AACnG,aAAa;AACb,gGAAgG;AAChG,8FAA8F;AAC9F,yFAAyF;AACzF,iGAAiG;AACjG,4FAA4F;AAC5F,iGAAiG;AACjG,6FAA6F;AAC7F,yDAAyD;AACzD,EAAE;AACF,8FAA8F;AAC9F,6FAA6F;AAC7F,+FAA+F;AAC/F,6FAA6F;AAC7F,4FAA4F;AAC5F,0EAA0E;AAG1E,OAAO,EAEL,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE;;;;;;;;;;GAUG;AAEH,oFAAoF;AACpF,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,SAAS,OAAO,CAAC,CAAS;IACxB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC;AAClF,CAAC;AAED,qGAAqG;AACrG,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEhD;;;uFAGuF;AACvF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,6BAA6B,EAAE,4BAA4B,CAAC,CAAC,CAAC;AAErG,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAa;IAC7C,wBAAwB;IACxB,gBAAgB;IAChB,sBAAsB;IACtB,sBAAsB;IACtB,kGAAkG;IAClG,kGAAkG;IAClG,2BAA2B;IAC3B,4BAA4B;IAC5B,uCAAuC;IACvC,iBAAiB;IACjB,uBAAuB;IACvB,kBAAkB;IAClB,mCAAmC;IACnC,sCAAsC;IACtC,kGAAkG;IAClG,kGAAkG;IAClG,gGAAgG;IAChG,4FAA4F;IAC5F,uCAAuC;IACvC,0FAA0F;IAC1F,iFAAiF;IACjF,gCAAgC;CACjC,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,EAAE,IAAI,qBAAqB,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,gGAAgG;AAChG,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAEzF;yFACyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAmCnD;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IAYC;IAXZ,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACzD,oGAAoG;IACnF,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzD,mGAAmG;IAClF,YAAY,GAAG,IAAI,GAAG,EAA+F,CAAC;IACvI;qDACiD;IAChC,aAAa,GAAG,IAAI,GAAG,EAA0F,CAAC;IACnI,+DAA+D;IAC9C,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEtD,YAA6B,OAQzB,EAAE;QARuB,SAAI,GAAJ,IAAI,CAQ3B;IAAG,CAAC;IAEV,4FAA4F;IAC5F,MAAM,CAAC,KAAgB;QACrB,wFAAwF;QACxF,0EAA0E;QAC1E,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAElE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,OAAO,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjD,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,wFAAwF;gBACxF,yFAAyF;gBACzF,yFAAyF;gBACzF,MAAM,MAAM,GAAG,GAAG,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,OAAO,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACvE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,OAAO,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACvE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;gBACpD,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;oBAAE,OAAO;gBACpF,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;gBACvD,IAAI,IAAI,KAAK,SAAS;oBAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,iFAAiF;gBACjF,yFAAyF;gBACzF,mFAAmF;gBACnF,2FAA2F;gBAC3F,2FAA2F;gBAC3F,uFAAuF;gBACvF,+CAA+C;gBAC/C,IAAI,oBAAoB,CAAC,MAAM,CAAC,KAAK,IAAI;oBAAE,OAAO;gBAClD,wFAAwF;gBACxF,wFAAwF;gBACxF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GACZ,OAAO,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;oBACxC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;oBAC3C,CAAC,CAAC,SAAS,CAAC;gBAChB,MAAM,IAAI,GAAG,KAAK,IAAI,QAAQ,CAAC;gBAC/B,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO;gBAC/B,yFAAyF;gBACzF,IAAI,aAAa,CAAC,MAAM,CAAC;oBAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBACvF,sFAAsF;gBACtF,yFAAyF;gBACzF,8EAA8E;;oBACzE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,IAAI,GAAG,GAAG,CAAE,KAA4B,CAAC,IAAI,CAAC,CAAC;gBACrD,yFAAyF;gBACzF,4FAA4F;gBAC5F,2FAA2F;gBAC3F,oFAAoF;gBACpF,MAAM,MAAM,GAAG,GAAG,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,EAAG,KAA8B,CAAC,MAAM,EAAG,KAA8B,CAAC,MAAM,CAAC;qBACzG,GAAG,CAAC,GAAG,CAAC;qBACR,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvC,uFAAuF;gBACvF,uFAAuF;gBACvF,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,MAAM,KAAK,eAAe,IAAI,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;oBACxG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;gBAC9F,CAAC;gBACD,wFAAwF;gBACxF,wFAAwF;gBACxF,+EAA+E;gBAC/E,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;oBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5F,OAAO;YACT,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,uFAAuF;gBACvF,0FAA0F;gBAC1F,8EAA8E;gBAC9E,MAAM,MAAM,GAAG,GAAG,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,MAAM,KAAK,SAAS,IAAK,KAA0B,CAAC,EAAE,KAAK,IAAI;oBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACjG,OAAO;YACT,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,kFAAkF;gBAClF,sFAAsF;gBACtF,yFAAyF;gBACzF,wFAAwF;gBACxF,0FAA0F;gBAC1F,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,GAAG,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,GAAG,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;gBAC3D,0FAA0F;gBAC1F,yFAAyF;gBACzF,2CAA2C;gBAC3C,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,CAAC;oBAAE,OAAO;gBACrG,0FAA0F;gBAC1F,kEAAkE;gBAClE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC;gBACzE,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACzG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACzB,gFAAgF;gBAChF,sFAAsF;gBACtF,yFAAyF;gBACzF,sFAAsF;gBACtF,gFAAgF;gBAChF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC;oBAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;wBAChD,IAAI,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;4BAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3E,CAAC;gBACH,CAAC;gBACD,OAAO;YACT,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,MAAM,MAAM,GAAG,GAAG,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,GAAG,CAAE,KAAoC,CAAC,YAAY,CAAC,CAAC;gBAC7E,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO;gBACjC,IAAI,YAAY,KAAK,SAAS,IAAI,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC;oBAAE,OAAO;gBAClF,kFAAkF;gBAClF,8FAA8F;gBAC9F,IAAI,YAAY,KAAK,SAAS,IAAI,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBACxE,MAAM,GAAG,GAAG,GAAG,CAAE,KAA8B,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC;oBACxE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;gBACxE,CAAC;gBACD,sFAAsF;gBACtF,oFAAoF;gBACpF,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAC5B,0EAA0E;gBAC1E,4EAA4E;gBAC5E,6EAA6E;gBAC7E,6EAA6E;gBAC7E,IAAI,YAAY,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACzE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBACnD,MAAM,GAAG,GAAG,iCAAiC,MAAM,WAAW,OAAO,IAAI,SAAS,EAAE,CAAC;oBACrF,iFAAiF;oBACjF,uEAAuE;oBACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,IAAI,CACF,KAAK;wBACH,CAAC,CAAC,iBAAiB,GAAG,0BAA0B,KAAK,CAAC,MAAM,MAAM;4BAChE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK;4BACrE,4CAA4C;wBAC9C,CAAC,CAAC,iBAAiB,GAAG,4BAA4B;4BAChD,IAAI,4BAA4B,GAAG,IAAI,GAAG;4BAC1C,+DAA+D,CACpE,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YACD,uFAAuF;YACvF,KAAK,kBAAkB,CAAC;YACxB,KAAK,eAAe,CAAC;YACrB,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,IAAI,OAAO,KAAK,SAAS;oBAAE,OAAO;gBAClC,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC;gBAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;wBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3D,CAAC;gBACD,OAAO;YACT,CAAC;YACD;gBACE,OAAO;QACX,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,UAAU,CAAC,GAAW,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YAC5E,GAAG,CAAC,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,yDAAyD;QACxF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD;IACrF,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,GAAW;QAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,GAAW,EAAE,QAAgB;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,GAAG,QAAQ;YAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,uFAAuF;IAC/E,iBAAiB,CACvB,GAAW,EACX,MAAc,EACd,MAAiC,EACjC,IAAY,EACZ,OAA2B,EAC3B,QAAQ,GAAG,eAAe;QAE1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE;YACzB,EAAE,EAAE,IAAI;YACR,4FAA4F;YAC5F,0FAA0F;YAC1F,2FAA2F;YAC3F,6CAA6C;YAC7C,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;YACnD,MAAM;YACN,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,gGAAgG;IACxF,UAAU,CAAC,GAAW,EAAE,IAAY;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,MAAM,EAAE,QAAQ;YAChB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS;YACpC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,GAAW,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,IAAI,sBAAsB,EAAE,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAClC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,GAAW,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,IAAI,oBAAoB,EAAE,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;YAClC,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,oBAAoB,CAAC,CAAC,WAAW,EAAE;YAC5D,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC;IACJ,CAAC;IAED,iGAAiG;IACjG,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9E,CAAC;CACF"}
|
package/dist/api/seat-probe.d.ts
CHANGED
|
@@ -45,10 +45,11 @@
|
|
|
45
45
|
* one refresh in the background (deduplicated per seat, one probe process at a time host-wide
|
|
46
46
|
* for this daemon). A signed-in answer is kept for 5 minutes (so a live check costs at most one
|
|
47
47
|
* one-word request per seat per 5 minutes); a signed-out or unknown one for 30 s, so a seat signed
|
|
48
|
-
* in from the
|
|
48
|
+
* in from the Agents page turns green on the next poll or two. The cache is keyed by (seat, worker
|
|
49
49
|
* home): changing `worker_config_root` discards every answer at once. A launch awaits a missing or
|
|
50
50
|
* stale answer, bounded, before it routes ({@link SeatProbe.ensureFresh}).
|
|
51
51
|
*/
|
|
52
|
+
import { type SeatAccount } from './seat-scrub.js';
|
|
52
53
|
/** A probe process's outcome, as the runner reports it. `error` is set when it never ran to exit
|
|
53
54
|
* (not installed, timed out, killed). */
|
|
54
55
|
export interface ProbeOutput {
|
|
@@ -70,8 +71,11 @@ export interface SeatProbeReading {
|
|
|
70
71
|
check: ProbeCheck;
|
|
71
72
|
/** ISO-8601 of the probe. */
|
|
72
73
|
probedAt: string;
|
|
73
|
-
/** A bounded excerpt of what the CLI said (its own words for a `false`)
|
|
74
|
+
/** A bounded excerpt of what the CLI said (its own words for a `false`), with every account
|
|
75
|
+
* identifier dropped (A8, `seat-scrub.ts`): it rides the roster's `auth_evidence` / `login_note`. */
|
|
74
76
|
detail: string;
|
|
77
|
+
/** (A2) The account KIND the status command stated, when it stated one — never an identifier. */
|
|
78
|
+
account?: SeatAccount;
|
|
75
79
|
}
|
|
76
80
|
/** How long an answer is trusted before a background refresh (the stale answer is served meanwhile). */
|
|
77
81
|
export declare const PROBE_TTL_SIGNED_IN_MS: number;
|
|
@@ -132,6 +136,11 @@ export declare class SeatProbe {
|
|
|
132
136
|
ensureFresh(seatKeys: string[], workerRoot: string | undefined, waitMs?: number): Promise<void>;
|
|
133
137
|
/** Probe now (deduplicated per seat and worker home); resolves to the fresh answer. */
|
|
134
138
|
refresh(seatKey: string, workerRoot: string | undefined): Promise<SeatProbeReading | undefined>;
|
|
139
|
+
/**
|
|
140
|
+
* A3b: probe AGAIN, after any probe already running for this seat has finished. A running probe
|
|
141
|
+
* may have started before the operator signed in, so its answer cannot be the fresh one.
|
|
142
|
+
*/
|
|
143
|
+
refreshFresh(seatKey: string, workerRoot: string | undefined): Promise<SeatProbeReading | undefined>;
|
|
135
144
|
/** The status command, then — when it says signed in — the live check. */
|
|
136
145
|
private probeOnce;
|
|
137
146
|
private reading;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-probe.d.ts","sourceRoot":"","sources":["../../src/api/seat-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;
|
|
1
|
+
{"version":3,"file":"seat-probe.d.ts","sourceRoot":"","sources":["../../src/api/seat-probe.ts"],"names":[],"mappings":"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"}
|
package/dist/api/seat-probe.js
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
* one refresh in the background (deduplicated per seat, one probe process at a time host-wide
|
|
46
46
|
* for this daemon). A signed-in answer is kept for 5 minutes (so a live check costs at most one
|
|
47
47
|
* one-word request per seat per 5 minutes); a signed-out or unknown one for 30 s, so a seat signed
|
|
48
|
-
* in from the
|
|
48
|
+
* in from the Agents page turns green on the next poll or two. The cache is keyed by (seat, worker
|
|
49
49
|
* home): changing `worker_config_root` discards every answer at once. A launch awaits a missing or
|
|
50
50
|
* stale answer, bounded, before it routes ({@link SeatProbe.ensureFresh}).
|
|
51
51
|
*/
|
|
@@ -54,6 +54,7 @@ import { homedir, tmpdir } from 'node:os';
|
|
|
54
54
|
import { join } from 'node:path';
|
|
55
55
|
import { childEnvWithBootEstateDb } from '../core/governance-store.js';
|
|
56
56
|
import { isAuthRefusal } from './seat-health.js';
|
|
57
|
+
import { accountFromStatus, liveSummary, statusSummary } from './seat-scrub.js';
|
|
57
58
|
/** How long an answer is trusted before a background refresh (the stale answer is served meanwhile). */
|
|
58
59
|
export const PROBE_TTL_SIGNED_IN_MS = 5 * 60 * 1000;
|
|
59
60
|
export const PROBE_TTL_OTHER_MS = 30 * 1000;
|
|
@@ -179,7 +180,13 @@ export class SeatProbe {
|
|
|
179
180
|
void this.refresh(seatKey, workerRoot);
|
|
180
181
|
if (hit === undefined)
|
|
181
182
|
return undefined;
|
|
182
|
-
return {
|
|
183
|
+
return {
|
|
184
|
+
signedIn: hit.signedIn,
|
|
185
|
+
check: hit.check,
|
|
186
|
+
probedAt: hit.probedAt,
|
|
187
|
+
detail: hit.detail,
|
|
188
|
+
...(hit.account !== undefined ? { account: hit.account } : {}),
|
|
189
|
+
};
|
|
183
190
|
}
|
|
184
191
|
/**
|
|
185
192
|
* Before a launch routes: probe every probed seat whose answer is missing or stale and wait for
|
|
@@ -227,24 +234,36 @@ export class SeatProbe {
|
|
|
227
234
|
this.inflight.set(key, job);
|
|
228
235
|
return job;
|
|
229
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* A3b: probe AGAIN, after any probe already running for this seat has finished. A running probe
|
|
239
|
+
* may have started before the operator signed in, so its answer cannot be the fresh one.
|
|
240
|
+
*/
|
|
241
|
+
async refreshFresh(seatKey, workerRoot) {
|
|
242
|
+
const running = this.inflight.get(cacheKey(seatKey, workerRoot));
|
|
243
|
+
if (running !== undefined)
|
|
244
|
+
await running.catch(() => undefined);
|
|
245
|
+
return this.refresh(seatKey, workerRoot);
|
|
246
|
+
}
|
|
230
247
|
/** The status command, then — when it says signed in — the live check. */
|
|
231
248
|
async probeOnce(seatKey, status, verify) {
|
|
232
249
|
const out = await this.run(status.cmd, status.args, status.env, PROBE_TIMEOUT_MS);
|
|
233
250
|
const said = classifyProbe(seatKey, out);
|
|
234
|
-
|
|
251
|
+
// A8: only crew's own words for what the CLI said (`seat-scrub.ts`), never its prose.
|
|
252
|
+
const statusWords = excerpt(statusSummary(seatKey, out));
|
|
253
|
+
const account = said === true ? accountFromStatus(seatKey, out.stdout, out.stderr) : undefined;
|
|
235
254
|
if (said !== true || verify === null)
|
|
236
|
-
return this.reading(said, 'status', statusWords);
|
|
255
|
+
return this.reading(said, 'status', statusWords, account);
|
|
237
256
|
const live = await this.run(verify.cmd, verify.args, verify.env, VERIFY_TIMEOUT_MS);
|
|
238
257
|
const verdict = classifyVerify(live);
|
|
239
|
-
const liveWords = excerpt(live
|
|
258
|
+
const liveWords = excerpt(liveSummary(live));
|
|
240
259
|
if (verdict === false)
|
|
241
260
|
return this.reading(false, 'live', liveWords);
|
|
242
261
|
if (verdict === true)
|
|
243
|
-
return this.reading(true, 'live', statusWords);
|
|
244
|
-
return this.reading(true, 'status', `the live check could not tell (${liveWords}); status: ${statusWords}
|
|
262
|
+
return this.reading(true, 'live', statusWords, account);
|
|
263
|
+
return this.reading(true, 'status', `the live check could not tell (${liveWords}); status: ${statusWords}`, account);
|
|
245
264
|
}
|
|
246
|
-
reading(signedIn, check, detail) {
|
|
247
|
-
return { signedIn, check, probedAt: new Date(this.now()).toISOString(), detail };
|
|
265
|
+
reading(signedIn, check, detail, account) {
|
|
266
|
+
return { signedIn, check, probedAt: new Date(this.now()).toISOString(), detail, ...(account !== undefined ? { account } : {}) };
|
|
248
267
|
}
|
|
249
268
|
stale(hit) {
|
|
250
269
|
const ttl = hit.signedIn === true ? PROBE_TTL_SIGNED_IN_MS : PROBE_TTL_OTHER_MS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-probe.js","sourceRoot":"","sources":["../../src/api/seat-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"seat-probe.js","sourceRoot":"","sources":["../../src/api/seat-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAsClG,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5C,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC1C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,aAAa,GAAG,gCAAgC,CAAC;AAEvD,SAAS,OAAO,CAAC,CAAS;IACxB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC;AAChF,CAAC;AAID,2FAA2F;AAC3F,SAAS,OAAO,CAAC,OAAe,EAAE,UAA8B,EAAE,GAAsB,EAAE,IAAY;IACpG,MAAM,IAAI,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACpG,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,8FAA8F;IAC9F,IAAI,GAAG,CAAC,uCAAuC,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;IAClF,MAAM,IAAI,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACvG,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,UAA8B,EAC9B,MAAyB,OAAO,CAAC,GAAG,EACpC,OAAe,OAAO,EAAE;IAExB,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAC/D,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,UAA8B,EAC9B,MAAyB,OAAO,CAAC,GAAG,EACpC,OAAe,OAAO,EAAE;IAExB,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC;YACE,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,CAAC,IAAI,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC;YACjH,GAAG,EAAE,CAAC;SACP;QACH,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,uBAAuB,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAChI,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,GAAgB;IAC7D,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9D,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAA2B,CAAC;YAChE,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,6CAA6C,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3G,CAAC;AAED;8EAC8E;AAC9E,MAAM,UAAU,cAAc,CAAC,GAAgB;IAC7C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,aAAa,CAAC,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;kGACkG;AAClG,MAAM,CAAC,MAAM,SAAS,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAClE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,oGAAoG;IACpG,MAAM,KAAK,GAAG,QAAQ,CACpB,GAAG,EACH,IAAI,EACJ,EAAE,GAAG,EAAE,wBAAwB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,EACnH,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACtB,uFAAuF;QACvF,6DAA6D;QAC7D,MAAM,CAAC,GAAG,GAAmE,CAAC;QAC9E,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;aACxC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;;YACvF,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC,CACF,CAAC;IACF,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1C,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AASL,uDAAuD;AACvD,MAAM,OAAO,SAAS;IACH,KAAK,GAAG,IAAI,GAAG,EAA+C,CAAC;IAC/D,QAAQ,GAAG,IAAI,GAAG,EAAiD,CAAC;IACrF,kEAAkE;IAC1D,KAAK,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IACnC,GAAG,CAAc;IACjB,GAAG,CAAe;IAClB,GAAG,CAAgC;IACnC,IAAI,CAAqB;IAE1C,YAAY,OAAyB,EAAE;QACrC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,OAAe;QACpB,OAAO,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACvF,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,OAAe,EAAE,UAA8B;QAClD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACjF,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACxC,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,QAAkB,EAAE,UAA8B,EAAE,SAAiB,oBAAoB;QACzG,MAAM,IAAI,GAAG,QAAQ;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YACpD,OAAO,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9B,IAAI,KAAiC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC7C,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,uFAAuF;IACvF,OAAO,CAAC,OAAe,EAAE,UAA8B;QACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;aACnB,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACtB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAChG,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACtB,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,UAA8B;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,0EAA0E;IAClE,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,MAAe,EAAE,MAAsB;QAC9E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,sFAAsF;QACtF,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAChG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACrE,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,kCAAkC,SAAS,cAAc,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;IACvH,CAAC;IAEO,OAAO,CAAC,QAAwB,EAAE,KAAiB,EAAE,MAAc,EAAE,OAAqB;QAChG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAClI,CAAC;IAEO,KAAK,CAAC,GAAwC;QACpD,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAChF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;IACtC,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,UAA8B;IAC/D,OAAO,GAAG,OAAO,SAAS,UAAU,IAAI,EAAE,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { RecordedEvent, SeatRecord, SeatRecordResponse, SessionView } from '../core/types.js';
|
|
24
24
|
export declare const SEAT_RECORD_DEFAULT_DAYS = 7;
|
|
25
|
-
export declare const SEAT_RECORD_MAX_DAYS =
|
|
25
|
+
export declare const SEAT_RECORD_MAX_DAYS = 90;
|
|
26
26
|
export declare const SEAT_RECORD_RUN_CAP = 200;
|
|
27
27
|
/** Whether a run can have any event inside the window: it ended in it, or has not ended. */
|
|
28
28
|
export declare function runTouchesWindow(view: SessionView, since: number): boolean;
|
package/dist/api/seat-record.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* answer says when the cap cut.
|
|
22
22
|
*/
|
|
23
23
|
export const SEAT_RECORD_DEFAULT_DAYS = 7;
|
|
24
|
-
export const SEAT_RECORD_MAX_DAYS =
|
|
24
|
+
export const SEAT_RECORD_MAX_DAYS = 90;
|
|
25
25
|
export const SEAT_RECORD_RUN_CAP = 200;
|
|
26
26
|
const emptyPhase = () => ({ units: 0, gated: 0, firstPass: 0, rework: 0, stalls: 0 });
|
|
27
27
|
function emptySeat(cli) {
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account identifiers never reach the wire (DES-seats-page A8 and A2).
|
|
3
|
+
*
|
|
4
|
+
* A seat's own words ride `GET /roster` as `auth_evidence` and inside `login_note`, and those are
|
|
5
|
+
* the CLI's status output. Signed in, `claude auth status --json` prints the account (`email`,
|
|
6
|
+
* `orgId`, `orgName`) beside the fields the roster needs (`loggedIn`, `authMethod`). `codex login
|
|
7
|
+
* status` prints a masked key prefix ("Logged in using an API key - sk-proj-***"). This module is
|
|
8
|
+
* the one place that turns that output into something the roster may carry:
|
|
9
|
+
*
|
|
10
|
+
* - {@link scrubStatusOutput} reads a JSON status object for its ALLOWLISTED fields only, so an
|
|
11
|
+
* account field that a newer CLI adds is dropped too, and a field this module does not know is
|
|
12
|
+
* never carried;
|
|
13
|
+
* - {@link scrubEvidence} is the second guard for free text: email-like, UUID-like and key-shaped
|
|
14
|
+
* strings are masked, wherever they appear;
|
|
15
|
+
* - {@link accountFromStatus} reads the account KIND (and a provider-public plan name) from the
|
|
16
|
+
* raw output BEFORE the scrub. It never returns an identifier.
|
|
17
|
+
*
|
|
18
|
+
* The roster's evidence fields carry ONLY crew's own vocabulary (codex r2 on #996: no mask can know
|
|
19
|
+
* every shape an identifier takes in a CLI's prose): {@link statusSummary} for a status command,
|
|
20
|
+
* {@link liveSummary} for the live check, `refusalSummary` (seat-health.ts) for a seat's refusal.
|
|
21
|
+
* {@link scrubEvidence} stays as the second guard over all of them.
|
|
22
|
+
*
|
|
23
|
+
* Pure: no IO, no clock.
|
|
24
|
+
*/
|
|
25
|
+
/** Mask every account identifier in free text (the second guard; see the module doc). */
|
|
26
|
+
export declare function scrubEvidence(text: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* A CLI's status output reduced to what the roster may carry. JSON objects (claude) keep only the
|
|
29
|
+
* {@link STATUS_ALLOWLIST} fields, re-serialized compactly; anything else goes through
|
|
30
|
+
* {@link scrubEvidence}.
|
|
31
|
+
*/
|
|
32
|
+
export declare function scrubStatusOutput(text: string): string;
|
|
33
|
+
/** `RosterSeat.account.kind` (api-types 0.115.0). */
|
|
34
|
+
export type SeatAccountKind = 'subscription' | 'api_key' | 'free' | 'unknown';
|
|
35
|
+
export interface SeatAccount {
|
|
36
|
+
kind: SeatAccountKind;
|
|
37
|
+
/** A provider-public plan name ("Max", "Pro"), only from the fixed table below. */
|
|
38
|
+
plan?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The account kind a seat's auth-status output states, or `undefined` when it states none (the
|
|
42
|
+
* caller then says `unknown`). Read from the RAW output; returns no identifier.
|
|
43
|
+
*
|
|
44
|
+
* - claude (`auth status --json`): `authMethod: "claude.ai"` is a subscription (plan from
|
|
45
|
+
* `subscriptionType`), `"api_key"` an API key;
|
|
46
|
+
* - codex (`login status`): "Logged in using ChatGPT" is a subscription; an API key, an access
|
|
47
|
+
* token or a Bedrock key is `api_key`.
|
|
48
|
+
*/
|
|
49
|
+
export declare function accountFromStatus(seatKey: string, stdout: string, stderr?: string): SeatAccount | undefined;
|
|
50
|
+
/** A probe process's outcome, as `seat-probe.ts` reports it (structural). */
|
|
51
|
+
export interface ProbeOutputLike {
|
|
52
|
+
code: number | null;
|
|
53
|
+
stdout: string;
|
|
54
|
+
stderr: string;
|
|
55
|
+
error?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A status command's answer, in crew's words only: claude's JSON reduced to its allowlisted
|
|
59
|
+
* fields (stdout alone — a stderr warning never turns the allowlist off; malformed JSON is
|
|
60
|
+
* withheld, never echoed), codex's known phrase, plus any refusal phrase stderr carried.
|
|
61
|
+
*/
|
|
62
|
+
export declare function statusSummary(seatKey: string, out: ProbeOutputLike): string;
|
|
63
|
+
/** The live check's answer, in crew's words only: the refusal phrase, a known blocker, or the exit. */
|
|
64
|
+
export declare function liveSummary(out: ProbeOutputLike): string;
|
|
65
|
+
//# sourceMappingURL=seat-scrub.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seat-scrub.d.ts","sourceRoot":"","sources":["../../src/api/seat-scrub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAwBH,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBtD;AAED,qDAAqD;AACrD,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAUD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,WAAW,GAAG,SAAS,CAsBvG;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,MAAM,CAgB3E;AAWD,uGAAuG;AACvG,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAOxD"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account identifiers never reach the wire (DES-seats-page A8 and A2).
|
|
3
|
+
*
|
|
4
|
+
* A seat's own words ride `GET /roster` as `auth_evidence` and inside `login_note`, and those are
|
|
5
|
+
* the CLI's status output. Signed in, `claude auth status --json` prints the account (`email`,
|
|
6
|
+
* `orgId`, `orgName`) beside the fields the roster needs (`loggedIn`, `authMethod`). `codex login
|
|
7
|
+
* status` prints a masked key prefix ("Logged in using an API key - sk-proj-***"). This module is
|
|
8
|
+
* the one place that turns that output into something the roster may carry:
|
|
9
|
+
*
|
|
10
|
+
* - {@link scrubStatusOutput} reads a JSON status object for its ALLOWLISTED fields only, so an
|
|
11
|
+
* account field that a newer CLI adds is dropped too, and a field this module does not know is
|
|
12
|
+
* never carried;
|
|
13
|
+
* - {@link scrubEvidence} is the second guard for free text: email-like, UUID-like and key-shaped
|
|
14
|
+
* strings are masked, wherever they appear;
|
|
15
|
+
* - {@link accountFromStatus} reads the account KIND (and a provider-public plan name) from the
|
|
16
|
+
* raw output BEFORE the scrub. It never returns an identifier.
|
|
17
|
+
*
|
|
18
|
+
* The roster's evidence fields carry ONLY crew's own vocabulary (codex r2 on #996: no mask can know
|
|
19
|
+
* every shape an identifier takes in a CLI's prose): {@link statusSummary} for a status command,
|
|
20
|
+
* {@link liveSummary} for the live check, `refusalSummary` (seat-health.ts) for a seat's refusal.
|
|
21
|
+
* {@link scrubEvidence} stays as the second guard over all of them.
|
|
22
|
+
*
|
|
23
|
+
* Pure: no IO, no clock.
|
|
24
|
+
*/
|
|
25
|
+
import { refusalSummary } from './seat-health.js';
|
|
26
|
+
/** The fields of a JSON auth-status object the roster may carry. Everything else is dropped. */
|
|
27
|
+
const STATUS_ALLOWLIST = ['loggedIn', 'authMethod', 'apiProvider'];
|
|
28
|
+
const EMAIL_RE = /[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g;
|
|
29
|
+
const UUID_RE = /\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi;
|
|
30
|
+
/** A provider key prefix with whatever follows it (masked or not): `sk-…`, `sk-ant-…`, `ghp_…`,
|
|
31
|
+
* `gho_…`, `github_pat_…`, `xox?-…`, `AKIA…`. */
|
|
32
|
+
const KEY_PREFIX_RE = /\b(?:sk-[A-Za-z0-9_*.-]*|gh[pousr]_[A-Za-z0-9_*]*|github_pat_[A-Za-z0-9_*]*|xox[abprs]-[A-Za-z0-9*-]*|AKIA[A-Z0-9*]*)/g;
|
|
33
|
+
/** A long unbroken token (24+ chars of a key alphabet, holding a digit or a capital): an access
|
|
34
|
+
* token, a bearer, a hash. Version strings never reach this length without a separator, and a
|
|
35
|
+
* snake_case word (`read_only_requires_wrapped`) holds neither. */
|
|
36
|
+
const LONG_TOKEN_RE = /\b(?=[A-Za-z0-9_\-]*[0-9A-Z])[A-Za-z0-9_\-]{24,}\b/g;
|
|
37
|
+
/** `Bearer <token>` / `Basic <token>`: whatever follows the scheme. */
|
|
38
|
+
const AUTH_SCHEME_RE = /\b(Bearer|Basic|Token)\s+[^\s,;)}\]]+/gi;
|
|
39
|
+
/** `key: value` / `key=value` pairs whose key names an account identifier or a secret. The value is
|
|
40
|
+
* masked to the end of its clause — a quoted string, or everything up to `,` `;` `)` `}` `]` or the
|
|
41
|
+
* line's end — so a multi-word name ("organization: Acme Research Ltd") goes whole. */
|
|
42
|
+
const ACCOUNT_PAIR_RE = /("?(?:e-?mail|email_?address|account(?:_?id|_?uuid|_?name)?|org(?:ani[sz]ation)?(?:_?id|_?uuid|_?name)?|team(?:_?id|_?name)?|workspace(?:_?id|_?name)?|tenant(?:_?id)?|user(?:_?id|_?name)?|login|username|(?:access_?|refresh_?|id_?|session_?|auth_?)?token|api_?key|secret|password|passwd|credentials?|authorization|cookie)"?\s*[:=]\s*)("[^"]*"|[^,;)}\]\n]+)/gi;
|
|
43
|
+
/** Mask every account identifier in free text (the second guard; see the module doc). */
|
|
44
|
+
export function scrubEvidence(text) {
|
|
45
|
+
return text
|
|
46
|
+
.replace(ACCOUNT_PAIR_RE, (_m, key, value) => `${key}${value.startsWith('"') ? '"<redacted>"' : '<redacted>'}`)
|
|
47
|
+
.replace(AUTH_SCHEME_RE, (_m, scheme) => `${scheme} <redacted>`)
|
|
48
|
+
.replace(EMAIL_RE, '<email>')
|
|
49
|
+
.replace(UUID_RE, '<id>')
|
|
50
|
+
.replace(KEY_PREFIX_RE, '<key>')
|
|
51
|
+
.replace(LONG_TOKEN_RE, '<redacted>');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A CLI's status output reduced to what the roster may carry. JSON objects (claude) keep only the
|
|
55
|
+
* {@link STATUS_ALLOWLIST} fields, re-serialized compactly; anything else goes through
|
|
56
|
+
* {@link scrubEvidence}.
|
|
57
|
+
*/
|
|
58
|
+
export function scrubStatusOutput(text) {
|
|
59
|
+
const trimmed = text.trim();
|
|
60
|
+
if (trimmed.startsWith('{')) {
|
|
61
|
+
try {
|
|
62
|
+
const parsed = JSON.parse(trimmed);
|
|
63
|
+
if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) {
|
|
64
|
+
const kept = {};
|
|
65
|
+
for (const k of STATUS_ALLOWLIST) {
|
|
66
|
+
const v = parsed[k];
|
|
67
|
+
if (typeof v === 'boolean' || typeof v === 'number' || (typeof v === 'string' && v.length <= 40))
|
|
68
|
+
kept[k] = v;
|
|
69
|
+
}
|
|
70
|
+
return scrubEvidence(JSON.stringify(kept));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
/* not one JSON object: the text guard below */
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return scrubEvidence(text);
|
|
78
|
+
}
|
|
79
|
+
/** Provider-public plan names, by the status output's own token. Anything else is not carried. */
|
|
80
|
+
const CLAUDE_PLANS = Object.freeze({
|
|
81
|
+
max: 'Max',
|
|
82
|
+
pro: 'Pro',
|
|
83
|
+
team: 'Team',
|
|
84
|
+
enterprise: 'Enterprise',
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* The account kind a seat's auth-status output states, or `undefined` when it states none (the
|
|
88
|
+
* caller then says `unknown`). Read from the RAW output; returns no identifier.
|
|
89
|
+
*
|
|
90
|
+
* - claude (`auth status --json`): `authMethod: "claude.ai"` is a subscription (plan from
|
|
91
|
+
* `subscriptionType`), `"api_key"` an API key;
|
|
92
|
+
* - codex (`login status`): "Logged in using ChatGPT" is a subscription; an API key, an access
|
|
93
|
+
* token or a Bedrock key is `api_key`.
|
|
94
|
+
*/
|
|
95
|
+
export function accountFromStatus(seatKey, stdout, stderr = '') {
|
|
96
|
+
if (seatKey === 'claude') {
|
|
97
|
+
try {
|
|
98
|
+
const parsed = JSON.parse(stdout.trim());
|
|
99
|
+
if (parsed.loggedIn !== true)
|
|
100
|
+
return undefined;
|
|
101
|
+
if (parsed.authMethod === 'claude.ai') {
|
|
102
|
+
const plan = typeof parsed.subscriptionType === 'string' ? CLAUDE_PLANS[parsed.subscriptionType.toLowerCase()] : undefined;
|
|
103
|
+
return { kind: 'subscription', ...(plan !== undefined ? { plan } : {}) };
|
|
104
|
+
}
|
|
105
|
+
if (parsed.authMethod === 'api_key')
|
|
106
|
+
return { kind: 'api_key' };
|
|
107
|
+
return { kind: 'unknown' };
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (seatKey === 'codex') {
|
|
114
|
+
const said = `${stdout}\n${stderr}`;
|
|
115
|
+
if (/logged in using chatgpt/i.test(said))
|
|
116
|
+
return { kind: 'subscription' };
|
|
117
|
+
if (/logged in using (?:an api key|amazon bedrock|(?:a )?(?:personal )?access token)/i.test(said))
|
|
118
|
+
return { kind: 'api_key' };
|
|
119
|
+
if (/logged in using/i.test(said))
|
|
120
|
+
return { kind: 'unknown' };
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
/** Why a probe process did not answer, in crew's words. */
|
|
125
|
+
function processFailure(error) {
|
|
126
|
+
if (/ENOENT/.test(error))
|
|
127
|
+
return 'the CLI is not installed (ENOENT)';
|
|
128
|
+
if (/ETIMEDOUT|timed? ?out|SIGTERM|killed/i.test(error))
|
|
129
|
+
return 'timed out';
|
|
130
|
+
return 'the CLI did not run';
|
|
131
|
+
}
|
|
132
|
+
/** codex `login status` phrases (codex 0.16x), the only words carried from its output. */
|
|
133
|
+
const CODEX_STATUS_PHRASES = [
|
|
134
|
+
/Not logged in/i,
|
|
135
|
+
/Logged in using ChatGPT/i,
|
|
136
|
+
/Logged in using an API key/i,
|
|
137
|
+
/Logged in using Amazon Bedrock (?:API key|AWS access keys)/i,
|
|
138
|
+
/Logged in using (?:personal )?access token/i,
|
|
139
|
+
/Logged in using workload identity/i,
|
|
140
|
+
];
|
|
141
|
+
/**
|
|
142
|
+
* A status command's answer, in crew's words only: claude's JSON reduced to its allowlisted
|
|
143
|
+
* fields (stdout alone — a stderr warning never turns the allowlist off; malformed JSON is
|
|
144
|
+
* withheld, never echoed), codex's known phrase, plus any refusal phrase stderr carried.
|
|
145
|
+
*/
|
|
146
|
+
export function statusSummary(seatKey, out) {
|
|
147
|
+
if (out.error !== undefined || out.code === null)
|
|
148
|
+
return processFailure(out.error ?? '');
|
|
149
|
+
let main;
|
|
150
|
+
if (seatKey === 'claude') {
|
|
151
|
+
const stdout = out.stdout.trim();
|
|
152
|
+
main =
|
|
153
|
+
stdout.startsWith('{') && isJsonObject(stdout)
|
|
154
|
+
? scrubStatusOutput(stdout)
|
|
155
|
+
: (refusalSummary(out.stdout) ?? `exit ${out.code}: the status output is not JSON (withheld)`);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
const said = `${out.stdout}\n${out.stderr}`;
|
|
159
|
+
const phrase = CODEX_STATUS_PHRASES.map((re) => re.exec(said)?.[0]).find((p) => p !== undefined);
|
|
160
|
+
main = phrase ?? `exit ${out.code}: the status output is withheld`;
|
|
161
|
+
}
|
|
162
|
+
const refused = refusalSummary(out.stderr);
|
|
163
|
+
return scrubEvidence(refused !== null && !main.toLowerCase().includes(refused.toLowerCase()) ? `${main}; ${refused}` : main);
|
|
164
|
+
}
|
|
165
|
+
/** What stops a live request, beyond a refusal for want of a credential (crew's words). */
|
|
166
|
+
const LIVE_BLOCKERS = [
|
|
167
|
+
[/usage limit/i, 'usage limit'],
|
|
168
|
+
[/rate[ -]?limit/i, 'rate limit'],
|
|
169
|
+
[/quota/i, 'quota'],
|
|
170
|
+
[/overloaded/i, 'overloaded'],
|
|
171
|
+
[/stream disconnected|ECONNRESET|ECONNREFUSED|ENOTFOUND|network/i, 'network'],
|
|
172
|
+
];
|
|
173
|
+
/** The live check's answer, in crew's words only: the refusal phrase, a known blocker, or the exit. */
|
|
174
|
+
export function liveSummary(out) {
|
|
175
|
+
if (out.error !== undefined || out.code === null)
|
|
176
|
+
return processFailure(out.error ?? '');
|
|
177
|
+
const said = `${out.stdout}\n${out.stderr}`;
|
|
178
|
+
const refused = refusalSummary(said);
|
|
179
|
+
if (refused !== null)
|
|
180
|
+
return scrubEvidence(refused);
|
|
181
|
+
const blocker = LIVE_BLOCKERS.find(([re]) => re.test(said))?.[1];
|
|
182
|
+
return blocker !== undefined ? `exit ${out.code}: ${blocker}` : `exit ${out.code}`;
|
|
183
|
+
}
|
|
184
|
+
function isJsonObject(text) {
|
|
185
|
+
try {
|
|
186
|
+
const v = JSON.parse(text);
|
|
187
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=seat-scrub.js.map
|