wicked-crew 0.15.0 → 0.15.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/mcp.d.ts.map +1 -1
- package/dist/api/mcp.js +32 -19
- package/dist/api/mcp.js.map +1 -1
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +8 -6
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +26 -9
- package/dist/api/routes.js.map +1 -1
- package/dist/api/seat-agents.d.ts.map +1 -1
- package/dist/api/seat-agents.js +19 -5
- package/dist/api/seat-agents.js.map +1 -1
- package/dist/api/seat-standing.d.ts +13 -0
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +50 -42
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/seat-version.d.ts +47 -5
- package/dist/api/seat-version.d.ts.map +1 -1
- package/dist/api/seat-version.js +54 -7
- package/dist/api/seat-version.js.map +1 -1
- package/dist/cli/index.js +14 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adapter.d.ts +11 -0
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +15 -0
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/engine-roster.d.ts +12 -6
- package/dist/core/engine-roster.d.ts.map +1 -1
- package/dist/core/engine-roster.js +30 -13
- package/dist/core/engine-roster.js.map +1 -1
- package/dist/core/vault-bin.d.ts +69 -0
- package/dist/core/vault-bin.d.ts.map +1 -0
- package/dist/core/vault-bin.js +101 -0
- package/dist/core/vault-bin.js.map +1 -0
- package/dist/mcp/policies.d.ts +22 -1
- package/dist/mcp/policies.d.ts.map +1 -1
- package/dist/mcp/policies.js +56 -20
- package/dist/mcp/policies.js.map +1 -1
- package/dist/studio/assets/{index-BV1Wz0_j.js → index-BhpoNOI0.js} +214 -214
- package/dist/studio/editors/wicked-deck/editor.json +1 -1
- package/dist/studio/editors/wicked-deck/index.html +1 -1
- package/dist/studio/editors/wicked-doc/editor.json +1 -1
- package/dist/studio/editors/wicked-doc/index.html +1 -1
- package/dist/studio/editors/wicked-page/editor.json +1 -1
- package/dist/studio/editors/wicked-page/index.html +1 -1
- package/dist/studio/editors/wicked-video/editor.json +1 -1
- package/dist/studio/editors/wicked-video/index.html +1 -1
- package/dist/studio/index.html +1 -1
- package/dist/studio/testid-inventory.json +1 -1
- package/endpoint-manifest.json +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-agents.d.ts","sourceRoot":"","sources":["../../src/api/seat-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAmC,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B;mDAC+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB;8FAC0F;IAC1F,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CASvE;AAOD,iFAAiF;AACjF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE;IAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GAC/E,OAAO,CAIT;AAID,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAIhH;AAID,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9D,oEAAoE;AACpE,MAAM,MAAM,cAAc,GACtB,YAAY,GACZ,aAAa,GACb,eAAe,GACf,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjI,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,EAAE,eAAe,GAAG,kBAAkB,CAAC,GAAG,oBAAoB,CAAC;AAExH,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzG,MAAM,WAAW,UAAU;IACzB,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,YAAY,CAAC;IACvB,4FAA4F;IAC5F,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,4FAA4F;IAC5F,YAAY,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IAC1D,wFAAwF;IACxF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;2BACuB;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"seat-agents.d.ts","sourceRoot":"","sources":["../../src/api/seat-agents.ts"],"names":[],"mappings":"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"}
|
package/dist/api/seat-agents.js
CHANGED
|
@@ -68,8 +68,10 @@ function standingRefusal(i, opts) {
|
|
|
68
68
|
if (i.standing.auth === 'signed_out') {
|
|
69
69
|
return { ok: false, reason_code: 'signed_out', source: 'auth', reason: i.standing.council_ineligible_reason ?? 'signed out' };
|
|
70
70
|
}
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
// crew#916 (wicked-core#572): `enabled_for_council` covers the ballot only. A seat is benched for
|
|
72
|
+
// work only when it has neither role; a ballot-only seat is the `reviewer_only` case below.
|
|
73
|
+
if (i.enabled_for_council === false && i.seat_eligible_for_work === false) {
|
|
74
|
+
return { ok: false, reason_code: 'not_enabled', source: 'launcher', reason: 'not enabled for council or for work, so a launch benches it' };
|
|
73
75
|
}
|
|
74
76
|
if (!opts.reviewer && i.seat_eligible_for_work === false) {
|
|
75
77
|
return { ok: false, reason_code: 'reviewer_only', source: 'launcher', reason: 'a reviewer-only seat: it reviews work and is never given a unit' };
|
|
@@ -166,9 +168,21 @@ export function seatIssues(i) {
|
|
|
166
168
|
// Safety: the bound-run mode decides what holds the seat's writes in a job.
|
|
167
169
|
const gov = i.governance.scoped_bound;
|
|
168
170
|
if (i.version?.status === 'unproven') {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
// crew#1004: say which case it is — the pin's check got no answer, answered in a shape it
|
|
172
|
+
// can't confirm, or answered naming another build. That build is the one the pin's check SAW
|
|
173
|
+
// (`observed`), never `installed`: the two readings are cached apart, so for up to one TTL after
|
|
174
|
+
// an upgrade `installed` still reads the pinned build while the check already saw the new one.
|
|
175
|
+
const v = i.version;
|
|
176
|
+
const message = v.why === 'different_build'
|
|
177
|
+
? `${name} ${v.observed} is not the build its safety checks were proven on (${v.proven}), so they switch off`
|
|
178
|
+
: v.why === 'no_answer'
|
|
179
|
+
? `${name}'s version check didn't answer, so its safety checks switch off for now`
|
|
180
|
+
: `${name}'s version check answered in a shape its safety checks can't confirm, so they switch off for now`;
|
|
181
|
+
add('version_unproven', 'warning', message, {
|
|
182
|
+
why: v.why,
|
|
183
|
+
...(v.installed !== null ? { installed: v.installed } : {}),
|
|
184
|
+
proven: v.proven,
|
|
185
|
+
...(v.why === 'different_build' ? { observed: v.observed } : {}),
|
|
172
186
|
}, [{ purpose: 'version', display: `${i.binary} --version` }]);
|
|
173
187
|
}
|
|
174
188
|
else if (gov.mode === 'none') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-agents.js","sourceRoot":"","sources":["../../src/api/seat-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAyC,MAAM,oBAAoB,CAAC;AAuB5G,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,QAAQ,EAAE,KAAK,CAAC,KAAK;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC;AAED;;+DAE+D;AAC/D,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;AAEtG,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CACjC,KAAsB,EACtB,KAAgF;IAEhF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC3F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,mGAAmG;AAEnG,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,IAA0B,EAAE,MAA+B;IACrF,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACrD,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,MAAM,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC;AAyCD,wFAAwF;AACxF,SAAS,gBAAgB,CAAC,CAAa;IACrC,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACjF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;AAC3G,CAAC;AAID,qFAAqF;AACrF,SAAS,eAAe,CAAC,CAAa,EAAE,IAA2B;IACjE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACrC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,yBAAyB,IAAI,YAAY,EAAE,CAAC;IAChI,CAAC;IACD,IAAI,CAAC,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"seat-agents.js","sourceRoot":"","sources":["../../src/api/seat-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,9 @@
|
|
|
23
23
|
* PREDICTION from the daemon's own records, not the engine's verdict — the engine convenes
|
|
24
24
|
* whatever roster it is handed and benches a seat only after it fails (F-4R2-007). `unknown`
|
|
25
25
|
* auth is eligible: refusing a seat the daemon cannot read would bench working keychain seats.
|
|
26
|
+
* - `work_eligible` (crew#916, wicked-core#572) — the same gates read for the seat's OTHER role:
|
|
27
|
+
* `seat_eligible_for_work` not false instead of `enabled_for_council`. The two flags are
|
|
28
|
+
* independent (a ballot-only seat, a work-only seat); neither alone makes the seat unusable.
|
|
26
29
|
* - chat admission ({@link chatSeatAdmission}) — the seats a chat seats BY DEFAULT: the same
|
|
27
30
|
* auth predicate (a `signed_out` seat is refused up front with the reason, instead of failing
|
|
28
31
|
* its first turn), plus the engine's scope rule restated (a SCOPED chat holds only a seat whose
|
|
@@ -75,7 +78,11 @@ export declare function seatAuth(seat: StandingSeat, signedIn: boolean | null):
|
|
|
75
78
|
/** The roster fields standing reads. Structural, so both the wire seat and a test stub satisfy it. */
|
|
76
79
|
export interface StandingSeat {
|
|
77
80
|
key: string;
|
|
81
|
+
/** wicked-core#572: may cast a council ballot — and nothing more. */
|
|
78
82
|
enabled_for_council?: boolean;
|
|
83
|
+
/** wicked-core#572: may be seated for work (routing, failover, reassign, the lead pick, the
|
|
84
|
+
* agent judge). Absent = true. */
|
|
85
|
+
seat_eligible_for_work?: boolean;
|
|
79
86
|
acp?: {
|
|
80
87
|
acp_input_governance?: boolean;
|
|
81
88
|
os_sandbox?: boolean;
|
|
@@ -145,6 +152,12 @@ export interface SeatStanding {
|
|
|
145
152
|
council_eligible: boolean;
|
|
146
153
|
/** Present when `council_eligible` is false: the one reason, in the operator's words. */
|
|
147
154
|
council_ineligible_reason?: string;
|
|
155
|
+
/** crew#916: whether the seat may be seated for WORK as far as the daemon can tell —
|
|
156
|
+
* `seat_eligible_for_work` not false, under the same auth / bench / login gates as
|
|
157
|
+
* `council_eligible`. */
|
|
158
|
+
work_eligible: boolean;
|
|
159
|
+
/** Present when `work_eligible` is false: the one reason, in the operator's words. */
|
|
160
|
+
work_ineligible_reason?: string;
|
|
148
161
|
}
|
|
149
162
|
/** The cause a "no credential" sentence names: `<source>: <its own words>` when they are plain, else the source alone (crew#771). */
|
|
150
163
|
export declare function noCredentialCause(failure: Pick<SeatAuthFailure, 'source' | 'detail'>): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.d.ts","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seat-standing.d.ts","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,9 @@
|
|
|
23
23
|
* PREDICTION from the daemon's own records, not the engine's verdict — the engine convenes
|
|
24
24
|
* whatever roster it is handed and benches a seat only after it fails (F-4R2-007). `unknown`
|
|
25
25
|
* auth is eligible: refusing a seat the daemon cannot read would bench working keychain seats.
|
|
26
|
+
* - `work_eligible` (crew#916, wicked-core#572) — the same gates read for the seat's OTHER role:
|
|
27
|
+
* `seat_eligible_for_work` not false instead of `enabled_for_council`. The two flags are
|
|
28
|
+
* independent (a ballot-only seat, a work-only seat); neither alone makes the seat unusable.
|
|
26
29
|
* - chat admission ({@link chatSeatAdmission}) — the seats a chat seats BY DEFAULT: the same
|
|
27
30
|
* auth predicate (a `signed_out` seat is refused up front with the reason, instead of failing
|
|
28
31
|
* its first turn), plus the engine's scope rule restated (a SCOPED chat holds only a seat whose
|
|
@@ -151,61 +154,63 @@ export function seatStanding(seat, signedIn, authFailure = null, probeInput = un
|
|
|
151
154
|
...(probe.signedIn ? {} : { auth_evidence: homeless(probe.detail) }),
|
|
152
155
|
}
|
|
153
156
|
: seatAuth(seat, signedIn);
|
|
154
|
-
const auth = read.auth;
|
|
155
157
|
const login = loginCheck(seat.key, authFailure, probeInput);
|
|
156
|
-
const
|
|
158
|
+
const gate = standingGate(read, authFailure, probeInput, recentBench);
|
|
159
|
+
// The shared gate leads: a seat that is signed out (benched, login pending) says so in both
|
|
160
|
+
// roles, whatever its role flags; a role flag is the reason only when no gate holds.
|
|
161
|
+
const noRole = seat.enabled_for_council === false && seat.seat_eligible_for_work === false;
|
|
162
|
+
const councilReason = gate ?? (seat.enabled_for_council === false ? 'not enabled for council' : null);
|
|
163
|
+
const workReason = gate ??
|
|
164
|
+
(seat.seat_eligible_for_work === false
|
|
165
|
+
? noRole
|
|
166
|
+
? 'not enabled for council or work'
|
|
167
|
+
: 'not eligible for work (a reviewer-only seat)'
|
|
168
|
+
: null);
|
|
169
|
+
return {
|
|
157
170
|
...read,
|
|
158
171
|
...login,
|
|
159
|
-
council_eligible:
|
|
172
|
+
council_eligible: councilReason === null,
|
|
173
|
+
...(councilReason !== null ? { council_ineligible_reason: councilReason } : {}),
|
|
174
|
+
work_eligible: workReason === null,
|
|
175
|
+
...(workReason !== null ? { work_ineligible_reason: workReason } : {}),
|
|
160
176
|
};
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* The reason a seat can take NO role right now, whatever its role flags say (signed out, an active
|
|
180
|
+
* engine bench, a login check still running), or `null` — the gates `council_eligible` and
|
|
181
|
+
* `work_eligible` share (crew#916).
|
|
182
|
+
*/
|
|
183
|
+
function standingGate(read, authFailure, probeInput, recentBench) {
|
|
184
|
+
if (!authUsable(read.auth)) {
|
|
185
|
+
return authFailure !== null
|
|
186
|
+
? `signed out — the seat itself reported no credential (${noCredentialCause(authFailure)}); sign it in from the Agents page`
|
|
187
|
+
: read.auth_source === 'probe'
|
|
188
|
+
? `signed out — the seat's own auth check says ${probeWords(read.auth_evidence)}; sign it in from the Agents page`
|
|
189
|
+
: 'signed out — a council would bench this seat on its first ballot; sign it in from the Agents page';
|
|
174
190
|
}
|
|
175
191
|
// A seat the ENGINE benched in a recent run on its own refusal (`seatBenched`: out of quota, not
|
|
176
|
-
// installed, signed out at work time) stays out
|
|
177
|
-
//
|
|
178
|
-
//
|
|
179
|
-
//
|
|
192
|
+
// installed, signed out at work time) stays out until the window lifts or it does work again
|
|
193
|
+
// (`SeatHealthTracker.recentBenchFor`). Its sign-in may read fine — that is the case this exists
|
|
194
|
+
// for: since wicked-core#590 S5 no ballot finds such a seat before routing, and every new run
|
|
195
|
+
// handed it a unit. The reason leads with the engine's cause token, so the engine's
|
|
180
196
|
// `degradedReason` names it (`copilot (recent quota_exhausted — launcher)`).
|
|
181
197
|
if (recentBench !== null) {
|
|
182
198
|
const cause = recentBench.reason.split(' (', 1)[0].trim();
|
|
183
199
|
const run = recentBench.run !== undefined ? ` in run ${recentBench.run.slice(0, 8)}` : '';
|
|
184
|
-
return {
|
|
185
|
-
|
|
186
|
-
council_eligible: false,
|
|
187
|
-
council_ineligible_reason: `recent ${cause} — the engine benched it${run} at ${hhmm(recentBench.at)} (${recentBench.source}: ` +
|
|
188
|
-
`${recentBench.reason}); eligible again at ${hhmm(recentBench.until)}, or sooner once it completes a turn`,
|
|
189
|
-
};
|
|
200
|
+
return (`recent ${cause} — the engine benched it${run} at ${hhmm(recentBench.at)} (${recentBench.source}: ` +
|
|
201
|
+
`${recentBench.reason}); eligible again at ${hhmm(recentBench.until)}, or sooner once it completes a turn`);
|
|
190
202
|
}
|
|
191
203
|
// crew#645: a seat that HAS a login check which has not answered is not routed to on the file's
|
|
192
204
|
// word — a launch waits for the check (`SeatProbe.ensureFresh`), and anything that routes before
|
|
193
|
-
// it answers (the seconds after a boot) leaves the seat out
|
|
194
|
-
//
|
|
205
|
+
// it answers (the seconds after a boot) leaves the seat out. `auth` stays `unknown`, so a chat
|
|
206
|
+
// still offers it (a chat is not a council; its first refusal signs it out).
|
|
195
207
|
if (probeInput === 'pending' && authFailure === null) {
|
|
196
|
-
return
|
|
197
|
-
...base,
|
|
198
|
-
council_eligible: false,
|
|
199
|
-
council_ineligible_reason: "login not verified yet — the seat's own auth check is still running; a launch waits for it, so launch again in a few seconds",
|
|
200
|
-
};
|
|
208
|
+
return "login not verified yet — the seat's own auth check is still running; a launch waits for it, so launch again in a few seconds";
|
|
201
209
|
}
|
|
202
|
-
// (R5 / R5b, DES-L3 PR-3D) No `inactive` arm and no crew-classified bench:
|
|
203
|
-
//
|
|
204
|
-
//
|
|
205
|
-
|
|
206
|
-
// to standing: the parameter is gone rather than silenced, so a caller cannot think it still
|
|
207
|
-
// decides something.
|
|
208
|
-
return base;
|
|
210
|
+
// (R5 / R5b, DES-L3 PR-3D) No `inactive` arm and no crew-classified bench: the only bench read
|
|
211
|
+
// here is the ENGINE's own (`recentBench` above), never one crew predicts from its own count of
|
|
212
|
+
// failures. The role flags are the caller's.
|
|
213
|
+
return null;
|
|
209
214
|
}
|
|
210
215
|
/**
|
|
211
216
|
* Whether a chat seats this seat BY DEFAULT — the seat's own auth standing plus, for a SCOPED chat,
|
|
@@ -232,8 +237,11 @@ kind = 'pool') {
|
|
|
232
237
|
reasons.push('signed out — it cannot take a turn until it is signed in from the Agents page');
|
|
233
238
|
source = 'auth';
|
|
234
239
|
}
|
|
235
|
-
|
|
236
|
-
|
|
240
|
+
// crew#916 (wicked-core#572): an ask is a run, so it seats a seat for WORK. `enabled_for_council`
|
|
241
|
+
// only says whether the seat casts a ballot; a work-only seat takes a turn. Only a seat with
|
|
242
|
+
// neither role is refused here.
|
|
243
|
+
if (seat.enabled_for_council === false && seat.seat_eligible_for_work === false) {
|
|
244
|
+
reasons.push('disabled for the council and for work, so it takes no turn');
|
|
237
245
|
}
|
|
238
246
|
// crew#1071: an ask is a run, and a launch already benches a seat the engine benched in a recent
|
|
239
247
|
// run (out of quota, say). Seating it here anyway put an ask on that seat ALONE when the operator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-standing.js","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seat-standing.js","sourceRoot":"","sources":["../../src/api/seat-standing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,mFAAmF;AACnF,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,kBAAkB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,gGAAgG;IAChG,kGAAkG;IAClG,qGAAqG;IACrG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,OAAe,OAAO,EAAE,EAAE,WAAW,GAAG,GAAG;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACrG,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,wBAAwB,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;IACtK,OAAO,GAAG,CAAC;AACb,CAAC;AAKD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqC,MAAM,CAAC,MAAM,CAAC;IAC7E,QAAQ,EAAE,8CAA8C;CACzD,CAAC,CAAC;AAKH,4GAA4G;AAC5G,MAAM,UAAU,QAAQ,CAAC,IAAkB,EAAE,QAAwB;IACnE,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACpD,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAClD,8FAA8F;IAC9F,8FAA8F;IAC9F,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,wCAAwC;YAClI,gBAAgB,EAAE,UAAU;SAC7B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9E,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,CAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACtH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAChC,CAAC;AA+BD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,kGAAkG;IAClG,uFAAuF;IACvF,4DAA4D,CAAC;AAE/D,yFAAyF;AACzF,MAAM,CAAC,MAAM,uBAAuB,GAClC,gGAAgG;IAChG,6EAA6E,CAAC;AAuChF,qIAAqI;AACrI,MAAM,UAAU,iBAAiB,CAAC,OAAmD;IACnF,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;AACzE,CAAC;AAED,sGAAsG;AACtG,SAAS,UAAU,CAAC,QAA4B;IAC9C,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,2BAA2B,KAAK,GAAG,CAAC;AACtF,CAAC;AASD,iGAAiG;AACjG,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO,IAAI,KAAK,YAAY,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,IAAkB,EAClB,QAAwB,EACxB,cAAsC,IAAI,EAC1C,aAAyB,SAAS,EAClC,cAAsC,IAAI;IAE1C,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAChE,6FAA6F;IAC7F,kGAAkG;IAClG,iGAAiG;IACjG,iGAAiG;IACjG,uFAAuF;IACvF,MAAM,IAAI,GACR,WAAW,KAAK,IAAI;QAClB,CAAC,CAAC,EAAE,IAAI,EAAE,YAAqB,EAAE,WAAW,EAAE,aAAsB,EAAE,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;QACnH,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI;YAC9C,CAAC,CAAC;gBACE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,WAAqB,CAAC,CAAC,CAAE,YAAsB;gBACvE,WAAW,EAAE,OAAgB;gBAC7B,SAAS,EAAE,KAAK,CAAC,QAAQ;gBACzB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;aACrE;YACH,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACtE,4FAA4F;IAC5F,qFAAqF;IACrF,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,KAAK,KAAK,IAAI,IAAI,CAAC,sBAAsB,KAAK,KAAK,CAAC;IAC3F,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,KAAK,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtG,MAAM,UAAU,GACd,IAAI;QACJ,CAAC,IAAI,CAAC,sBAAsB,KAAK,KAAK;YACpC,CAAC,CAAC,MAAM;gBACN,CAAC,CAAC,iCAAiC;gBACnC,CAAC,CAAC,8CAA8C;YAClD,CAAC,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO;QACL,GAAG,IAAI;QACP,GAAG,KAAK;QACR,gBAAgB,EAAE,aAAa,KAAK,IAAI;QACxC,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,aAAa,EAAE,UAAU,KAAK,IAAI;QAClC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,IAAkE,EAClE,WAAmC,EACnC,UAAsB,EACtB,WAAmC;IAEnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,WAAW,KAAK,IAAI;YACzB,CAAC,CAAC,wDAAwD,iBAAiB,CAAC,WAAW,CAAC,oCAAoC;YAC5H,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO;gBAC5B,CAAC,CAAC,+CAA+C,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAmC;gBAClH,CAAC,CAAC,mGAAmG,CAAC;IAC5G,CAAC;IACD,iGAAiG;IACjG,6FAA6F;IAC7F,iGAAiG;IACjG,8FAA8F;IAC9F,oFAAoF;IACpF,6EAA6E;IAC7E,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,OAAO,CACL,UAAU,KAAK,2BAA2B,GAAG,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,MAAM,IAAI;YACnG,GAAG,WAAW,CAAC,MAAM,wBAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,sCAAsC,CAC3G,CAAC;IACJ,CAAC;IACD,gGAAgG;IAChG,iGAAiG;IACjG,+FAA+F;IAC/F,6EAA6E;IAC7E,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACrD,OAAO,8HAA8H,CAAC;IACxI,CAAC;IACD,+FAA+F;IAC/F,gGAAgG;IAChG,6CAA6C;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAWD;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAkB,EAClB,IAAc,EACd,MAAe;AACf;;;;;;;iGAOiG;AACjG,OAAuC,MAAM;IAE7C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAsB,OAAO,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC9F,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;IACD,kGAAkG;IAClG,6FAA6F;IAC7F,gCAAgC;IAChC,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,IAAI,IAAI,CAAC,sBAAsB,KAAK,KAAK,EAAE,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC7E,CAAC;IACD,iGAAiG;IACjG,kGAAkG;IAClG,gGAAgG;IAChG,kEAAkE;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,OAAO,CAAC,IAAI,CACV,UAAU,KAAK,6CAA6C,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,KAAK;YACjH,iGAAiG,CACpG,CAAC;QACF,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IACD,gGAAgG;IAChG,gGAAgG;IAChG,+EAA+E;IAC/E,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC;IAC9F,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,IAAI,IAAI,CAAC,kBAAkB,KAAK,EAAE,CAAC;IAClG,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAE,IAAI,CAAC,kBAA6B,CAAC,CAAC;QACxF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClG,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IACjG,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;IAClC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,6FAA6F;QAC7F,8FAA8F;QAC9F,6FAA6F;QAC7F,0CAA0C;QAC1C,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CACV,gDAAgD,GAAG,CAAC,MAAM,wCAAwC;gBAChG,oFAAoF,CACvF,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IACjG,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,sFAAsF;QACtF,8FAA8F;QAC9F,6FAA6F;QAC7F,8EAA8E;QAC9E,OAAO,CAAC,IAAI,CACV,6FAA6F;YAC3F,8CAA8C,CACjD,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,IAAI,GAAG,CAAC,oBAAoB,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAClF,OAAO,CAAC,IAAI,CACV,0FAA0F;YACxF,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;AACjG,CAAC;AAED,iFAAiF;AACjF,SAAS,IAAI,CAAC,GAAW;IACvB,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;AACjC,CAAC;AAED,6EAA6E;AAC7E,SAAS,UAAU,CAAC,GAAW,EAAE,WAAmC,EAAE,KAAiB;IACrF,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,mEAAmE,EAAE,CAAC;IACxH,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,WAAW,EAAE,YAAY;YACzB,UAAU,EAAE,oCAAoC,GAAG,uIAAuI;SAC3L,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,gEAAgE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;IACpI,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC3D,OAAO;QACL,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,8GAA8G,KAAK,CAAC,MAAM,GAAG;KAC1I,CAAC;AACJ,CAAC"}
|
|
@@ -11,11 +11,34 @@
|
|
|
11
11
|
* - `proven` / `status`: from the pin reading when the seat pins a build (`proven` = the pinned
|
|
12
12
|
* build; `status` = `proven` when the pin holds, else `unproven`), `no_pin` otherwise. A pinned
|
|
13
13
|
* seat whose pin has not been probed yet carries no `version` at all, never a guessed status;
|
|
14
|
+
* - `why` (crew#1004, `unproven` only): `no_answer` when the pin's own `--version` probe got no
|
|
15
|
+
* answer; `different_build` when it answered naming another build, which `observed` carries;
|
|
16
|
+
* `invalid_answer` when it answered but the engine's first-line, byte-for-byte check rejected it
|
|
17
|
+
* without naming another build (the pinned build on a later line, in brackets, coloured, after a
|
|
18
|
+
* `v`, or no version at all). A build is named by its id alone, pre-release and build suffixes
|
|
19
|
+
* included, and only as a whole token ({@link buildsNamed}): `1.17.18-beta` is another build,
|
|
20
|
+
* `1.18.31.4` names none; `opencode (1.17.18)`, a coloured `1.17.18` and `v1.17.18,` only
|
|
21
|
+
* present the pinned one;
|
|
14
22
|
* - `install_source`: how the binary on PATH was installed, read off its resolved path (no
|
|
15
23
|
* spawn): under `node_modules` = `npm`, under a Homebrew prefix = `brew`, else `other`; `null`
|
|
16
24
|
* when the binary is not on PATH. It lets the Agents page offer a real update command instead of
|
|
17
25
|
* guessing one. The path itself never reaches the wire.
|
|
18
26
|
*
|
|
27
|
+
* crew#1004, a deliberate choice: `status` comes from the pin reading alone, never from `installed`.
|
|
28
|
+
* The pin reading mirrors the engine's spawn-time check (`probe_resolved_binary_version`: the pin's
|
|
29
|
+
* own binary, its first line byte for byte), and the engine switches the seat's safety checks off
|
|
30
|
+
* when that check gets no answer. So a pin probe with no answer stays `unproven` (fail closed) even
|
|
31
|
+
* when `installed` reads exactly the pinned build: `why: 'no_answer'` says the build was not shown
|
|
32
|
+
* to differ, only not confirmed. Likewise a probe the engine's check rejects although it names the
|
|
33
|
+
* pinned build (`"\n1.17.18\n"`: the check reads the blank first line) stays `unproven` with
|
|
34
|
+
* `why: 'invalid_answer'`, never `different_build`.
|
|
35
|
+
*
|
|
36
|
+
* `installed` and the pin reading are two snapshots from two caches with their own TTLs
|
|
37
|
+
* ({@link SEAT_VERSION_TTL_MS} here, the pin cache's in `diagnostics.ts`), so after an upgrade they
|
|
38
|
+
* disagree for up to one TTL: the pin probe already saw the new build while `installed` still reads
|
|
39
|
+
* the pinned one. So `different_build` carries `observed`, the build the pin's check saw, and the
|
|
40
|
+
* `version_unproven` message names that build, never `installed`.
|
|
41
|
+
*
|
|
19
42
|
* Cost: one bounded `--version` per seat per {@link SEAT_VERSION_TTL_MS}, in the background; the
|
|
20
43
|
* roster read never waits on it. A test-built server spawns nothing (no source under a runner).
|
|
21
44
|
*/
|
|
@@ -35,14 +58,33 @@ export interface SeatVersionReading {
|
|
|
35
58
|
checked_at: string;
|
|
36
59
|
install_source: SeatInstallSource | null;
|
|
37
60
|
}
|
|
38
|
-
/** `
|
|
39
|
-
export
|
|
61
|
+
/** Why a pinned seat reads `unproven` (crew#1004; see the module doc). */
|
|
62
|
+
export type SeatVersionUnprovenWhy = 'no_answer' | 'different_build' | 'invalid_answer';
|
|
63
|
+
/** The builds a `--version` answer names, in order, presentation stripped; `[]` when it names none. */
|
|
64
|
+
export declare function buildsNamed(answer: string): string[];
|
|
65
|
+
/** `RosterSeat.version` (api-types 0.115.0; `why` and `observed` 0.131.0): `why` exactly when
|
|
66
|
+
* `unproven`; `observed` (the build the pin's check saw) exactly when `why` is `different_build`;
|
|
67
|
+
* `proven` is the pinned build, `null` only on `no_pin`. */
|
|
68
|
+
export type SeatVersion = {
|
|
40
69
|
installed: string | null;
|
|
41
|
-
proven: string | null;
|
|
42
|
-
status: 'proven' | 'unproven' | 'no_pin';
|
|
43
70
|
checked_at: string;
|
|
44
71
|
install_source: SeatInstallSource | null;
|
|
45
|
-
}
|
|
72
|
+
} & ({
|
|
73
|
+
status: 'no_pin';
|
|
74
|
+
proven: null;
|
|
75
|
+
} | {
|
|
76
|
+
status: 'proven';
|
|
77
|
+
proven: string;
|
|
78
|
+
} | {
|
|
79
|
+
status: 'unproven';
|
|
80
|
+
proven: string;
|
|
81
|
+
why: 'no_answer' | 'invalid_answer';
|
|
82
|
+
} | {
|
|
83
|
+
status: 'unproven';
|
|
84
|
+
proven: string;
|
|
85
|
+
why: 'different_build';
|
|
86
|
+
observed: string;
|
|
87
|
+
});
|
|
46
88
|
/** Runs one version probe; resolves to its combined output, or `null` when it did not answer. */
|
|
47
89
|
export type VersionExec = (cmd: string, args: string[]) => Promise<string | null>;
|
|
48
90
|
/** Resolves a binary name to its real path on PATH, or `null`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-version.d.ts","sourceRoot":"","sources":["../../src/api/seat-version.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seat-version.d.ts","sourceRoot":"","sources":["../../src/api/seat-version.ts"],"names":[],"mappings":"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"}
|
package/dist/api/seat-version.js
CHANGED
|
@@ -11,11 +11,34 @@
|
|
|
11
11
|
* - `proven` / `status`: from the pin reading when the seat pins a build (`proven` = the pinned
|
|
12
12
|
* build; `status` = `proven` when the pin holds, else `unproven`), `no_pin` otherwise. A pinned
|
|
13
13
|
* seat whose pin has not been probed yet carries no `version` at all, never a guessed status;
|
|
14
|
+
* - `why` (crew#1004, `unproven` only): `no_answer` when the pin's own `--version` probe got no
|
|
15
|
+
* answer; `different_build` when it answered naming another build, which `observed` carries;
|
|
16
|
+
* `invalid_answer` when it answered but the engine's first-line, byte-for-byte check rejected it
|
|
17
|
+
* without naming another build (the pinned build on a later line, in brackets, coloured, after a
|
|
18
|
+
* `v`, or no version at all). A build is named by its id alone, pre-release and build suffixes
|
|
19
|
+
* included, and only as a whole token ({@link buildsNamed}): `1.17.18-beta` is another build,
|
|
20
|
+
* `1.18.31.4` names none; `opencode (1.17.18)`, a coloured `1.17.18` and `v1.17.18,` only
|
|
21
|
+
* present the pinned one;
|
|
14
22
|
* - `install_source`: how the binary on PATH was installed, read off its resolved path (no
|
|
15
23
|
* spawn): under `node_modules` = `npm`, under a Homebrew prefix = `brew`, else `other`; `null`
|
|
16
24
|
* when the binary is not on PATH. It lets the Agents page offer a real update command instead of
|
|
17
25
|
* guessing one. The path itself never reaches the wire.
|
|
18
26
|
*
|
|
27
|
+
* crew#1004, a deliberate choice: `status` comes from the pin reading alone, never from `installed`.
|
|
28
|
+
* The pin reading mirrors the engine's spawn-time check (`probe_resolved_binary_version`: the pin's
|
|
29
|
+
* own binary, its first line byte for byte), and the engine switches the seat's safety checks off
|
|
30
|
+
* when that check gets no answer. So a pin probe with no answer stays `unproven` (fail closed) even
|
|
31
|
+
* when `installed` reads exactly the pinned build: `why: 'no_answer'` says the build was not shown
|
|
32
|
+
* to differ, only not confirmed. Likewise a probe the engine's check rejects although it names the
|
|
33
|
+
* pinned build (`"\n1.17.18\n"`: the check reads the blank first line) stays `unproven` with
|
|
34
|
+
* `why: 'invalid_answer'`, never `different_build`.
|
|
35
|
+
*
|
|
36
|
+
* `installed` and the pin reading are two snapshots from two caches with their own TTLs
|
|
37
|
+
* ({@link SEAT_VERSION_TTL_MS} here, the pin cache's in `diagnostics.ts`), so after an upgrade they
|
|
38
|
+
* disagree for up to one TTL: the pin probe already saw the new build while `installed` still reads
|
|
39
|
+
* the pinned one. So `different_build` carries `observed`, the build the pin's check saw, and the
|
|
40
|
+
* `version_unproven` message names that build, never `installed`.
|
|
41
|
+
*
|
|
19
42
|
* Cost: one bounded `--version` per seat per {@link SEAT_VERSION_TTL_MS}, in the background; the
|
|
20
43
|
* roster read never waits on it. A test-built server spawns nothing (no source under a runner).
|
|
21
44
|
*/
|
|
@@ -36,6 +59,31 @@ export const SEAT_VERSION_RETRY_MS = 2 * 60 * 1000;
|
|
|
36
59
|
export const SEAT_VERSION_KEEP_MS = 60 * 60 * 1000;
|
|
37
60
|
const VERSION_TIMEOUT_MS = 10 * 1000;
|
|
38
61
|
const VERSION_MAX = 80;
|
|
62
|
+
/** The ANSI escapes a `--version` may colour or link its answer with (CSI and OSC sequences). */
|
|
63
|
+
const ANSI_ESCAPE = /\u001b(?:\[[0-?]*[ -/]*[@-~]|\][^\u0007\u001b]*(?:\u0007|\u001b\\))/g;
|
|
64
|
+
/** A build id, as a whole token: a semver core with its pre-release and build suffixes (`1.17.18`,
|
|
65
|
+
* `1.17.18-rc.1`, `1.17.18+build.5`) with no word character or dot on either side, so `1.18.31.4`
|
|
66
|
+
* and `x1.18.31` name none (codex r3 on #1084). One leading `v` (`v1.17.18`) is presentation, like
|
|
67
|
+
* the brackets or comma around an id, and not part of it. */
|
|
68
|
+
const BUILD_ID = /(?<![\w.])v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?)(?![\w.])/g;
|
|
69
|
+
/** The builds a `--version` answer names, in order, presentation stripped; `[]` when it names none. */
|
|
70
|
+
export function buildsNamed(answer) {
|
|
71
|
+
return [...answer.replace(ANSI_ESCAPE, '').matchAll(BUILD_ID)].map((m) => m[1]);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Why a rejected pin reading is rejected (see the module doc); the engine's `matched` decision is
|
|
75
|
+
* kept, this only explains it. The answer names another build when it names some build and none of
|
|
76
|
+
* the builds it names is the pinned one; `observed` is then the first build it names.
|
|
77
|
+
*/
|
|
78
|
+
function unprovenWhy(pinned, observed) {
|
|
79
|
+
if (observed === null || observed === undefined)
|
|
80
|
+
return { why: 'no_answer' };
|
|
81
|
+
const named = buildsNamed(observed);
|
|
82
|
+
const pin = buildsNamed(pinned)[0] ?? pinned;
|
|
83
|
+
if (named.length === 0 || named.includes(pin))
|
|
84
|
+
return { why: 'invalid_answer' };
|
|
85
|
+
return { why: 'different_build', observed: named[0] };
|
|
86
|
+
}
|
|
39
87
|
const execVersion = (cmd, args) => new Promise((resolve) => {
|
|
40
88
|
const child = execFile(cmd, args, { env: childEnvWithBootEstateDb(process.env), cwd: tmpdir(), timeout: VERSION_TIMEOUT_MS, windowsHide: true, maxBuffer: 64 * 1024 }, (err, stdout, stderr) => resolve(err === null ? `${String(stdout ?? '')}\n${String(stderr ?? '')}` : null));
|
|
41
89
|
child.stdin?.on('error', () => undefined);
|
|
@@ -195,12 +243,11 @@ export function seatVersion(seat, reading, pin) {
|
|
|
195
243
|
const pinned = typeof seat.acp?.verified_version === 'string' ? seat.acp.verified_version : null;
|
|
196
244
|
if (pinned !== null && pin === undefined)
|
|
197
245
|
return undefined;
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
proven:
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
};
|
|
246
|
+
const base = { installed: reading.installed, checked_at: reading.checked_at, install_source: reading.install_source };
|
|
247
|
+
if (pinned === null)
|
|
248
|
+
return { ...base, status: 'no_pin', proven: null };
|
|
249
|
+
if (pin?.matched === true)
|
|
250
|
+
return { ...base, status: 'proven', proven: pinned };
|
|
251
|
+
return { ...base, status: 'unproven', proven: pinned, ...unprovenWhy(pinned, pin?.observed) };
|
|
205
252
|
}
|
|
206
253
|
//# sourceMappingURL=seat-version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-version.js","sourceRoot":"","sources":["../../src/api/seat-version.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seat-version.js","sourceRoot":"","sources":["../../src/api/seat-version.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -825,23 +825,27 @@ async function runStatus(args) {
|
|
|
825
825
|
if (!res.ok)
|
|
826
826
|
await failNon2xx('status', res);
|
|
827
827
|
console.log(JSON.stringify(await res.json(), null, 2));
|
|
828
|
+
// `status` says what the daemon's `/health.warnings[]` says, one line each, on stderr so stdout
|
|
829
|
+
// stays the JSON a script parses; exit 0 (the daemon is up; this is its configuration state).
|
|
828
830
|
// F-W1-102: a daemon whose base skill is REQUIRED and not handed (the crew-only install — no
|
|
829
|
-
// wicked-garden) refuses EVERY launch at intake while `/runs` is an honest `[]
|
|
830
|
-
//
|
|
831
|
-
//
|
|
832
|
-
//
|
|
831
|
+
// wicked-garden) refuses EVERY launch at intake while `/runs` is an honest `[]` — its
|
|
832
|
+
// `skills.base-skill` finding is one of those warnings, the same one the 422 launch body names.
|
|
833
|
+
// crew#1068: so is an engine with no wicked-vault CLI (`vault.unresolvable` / `vault.off`).
|
|
834
|
+
// A daemon without warnings says nothing.
|
|
833
835
|
const health = await daemonFetch(port, `${base}/health`);
|
|
834
836
|
if (health.ok) {
|
|
835
|
-
let
|
|
837
|
+
let warnings;
|
|
836
838
|
try {
|
|
837
|
-
|
|
838
|
-
message = body.baseSkill?.finding?.message;
|
|
839
|
+
warnings = (await health.json()).warnings;
|
|
839
840
|
}
|
|
840
841
|
catch {
|
|
841
|
-
|
|
842
|
+
warnings = undefined;
|
|
843
|
+
}
|
|
844
|
+
for (const w of Array.isArray(warnings) ? warnings : []) {
|
|
845
|
+
const message = w?.message;
|
|
846
|
+
if (typeof message === 'string' && message.length > 0)
|
|
847
|
+
console.error(`wicked-crew: ${message}`);
|
|
842
848
|
}
|
|
843
|
-
if (typeof message === 'string' && message.length > 0)
|
|
844
|
-
console.error(`wicked-crew: ${message}`);
|
|
845
849
|
}
|
|
846
850
|
}
|
|
847
851
|
main().catch((err) => {
|