wicked-crew-api-types 0.128.0 → 0.131.0
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/index.d.ts +71 -10
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -1029,7 +1029,11 @@ export interface RosterSeat {
|
|
|
1029
1029
|
key: string;
|
|
1030
1030
|
display_name: string;
|
|
1031
1031
|
binary: string;
|
|
1032
|
+
/** wicked-core#572: may cast a council ballot — and nothing more (see `work_eligible`). */
|
|
1032
1033
|
enabled_for_council: boolean;
|
|
1034
|
+
/** (api-types 0.129.0) wicked-core#572: may be seated for work; absent means true. The engine's
|
|
1035
|
+
* registry field, passed through verbatim. */
|
|
1036
|
+
seat_eligible_for_work?: boolean;
|
|
1033
1037
|
category?: string;
|
|
1034
1038
|
/**
|
|
1035
1039
|
* Runtime health (crew#274). Additive: absent on a daemon predating the field, and safe to
|
|
@@ -1124,6 +1128,18 @@ export interface RosterSeat {
|
|
|
1124
1128
|
council_eligible?: boolean;
|
|
1125
1129
|
/** Present when `council_eligible` is false: the one reason, in the operator's words. */
|
|
1126
1130
|
council_ineligible_reason?: string;
|
|
1131
|
+
/**
|
|
1132
|
+
* (api-types 0.129.0, crew#916, wicked-core#572) Whether the seat may be seated for WORK as far as
|
|
1133
|
+
* the daemon can tell: `seat_eligible_for_work` not false, `auth` not `signed_out`, no active
|
|
1134
|
+
* engine bench, login check answered. Independent of `council_eligible` — `enabled_for_council`
|
|
1135
|
+
* covers the ballot only, so a work-only seat reads `council_eligible: false, work_eligible: true`
|
|
1136
|
+
* and a reviewer-only seat the reverse. Neither false alone benches the seat: a launch benches it
|
|
1137
|
+
* only when both are false. Never handed to the engine (`clisJson` strips it). ABSENT on a daemon
|
|
1138
|
+
* before 0.129.0.
|
|
1139
|
+
*/
|
|
1140
|
+
work_eligible?: boolean;
|
|
1141
|
+
/** (api-types 0.129.0) Present when `work_eligible` is false: the one reason, in the operator's words. */
|
|
1142
|
+
work_ineligible_reason?: string;
|
|
1127
1143
|
/**
|
|
1128
1144
|
* Present when THIS daemon's recent councils benched the seat: the engine's own
|
|
1129
1145
|
* `councilSeatFailed` evidence (`non_zero_exit` / `timed_out`, the derivative `benched` kind
|
|
@@ -1215,21 +1231,45 @@ export interface RosterSeat {
|
|
|
1215
1231
|
[k: string]: unknown;
|
|
1216
1232
|
}
|
|
1217
1233
|
|
|
1218
|
-
/** `
|
|
1219
|
-
|
|
1234
|
+
/** Why a pinned seat reads `unproven` (api-types 0.131.0, crew#1004): `no_answer` — the pin's own
|
|
1235
|
+
* `--version` check got no answer, so nothing confirms the build (it was not shown to differ);
|
|
1236
|
+
* `different_build` — the check answered naming a build other than the pinned one (`observed`);
|
|
1237
|
+
* `invalid_answer` — the check answered, but in a shape it cannot confirm (its first line is not
|
|
1238
|
+
* the pinned build byte for byte) and without naming another build. A build is named by its id
|
|
1239
|
+
* alone, pre-release and build suffixes included (`1.18.31`, `1.17.18-rc.1`), only as a whole
|
|
1240
|
+
* token (`1.18.31.4` names none), never by the presentation around it: `opencode (1.17.18)`, a
|
|
1241
|
+
* colour-coded `1.17.18` and `v1.17.18,` name only the pinned build; `1.17.18-beta` names another. */
|
|
1242
|
+
export type SeatVersionUnprovenWhy = 'no_answer' | 'different_build' | 'invalid_answer';
|
|
1243
|
+
|
|
1244
|
+
/**
|
|
1245
|
+
* `RosterSeat.version` (api-types 0.115.0; `why` and `observed` 0.131.0). `status`: `proven` — the
|
|
1246
|
+
* pin's check answered with the pinned build; `unproven` — it did not, and governance fails closed,
|
|
1247
|
+
* with `why` saying which case and, on `different_build`, `observed` naming the build the check
|
|
1248
|
+
* saw; `no_pin` — the seat pins no build.
|
|
1249
|
+
*
|
|
1250
|
+
* `status` comes from the pin's check alone (it mirrors the engine's spawn-time check), never from
|
|
1251
|
+
* `installed`. The two are separate snapshots: the seat's own `--version` reading (`installed`,
|
|
1252
|
+
* `checked_at`) and the pin's check are cached apart, each with its own TTL, so for up to one TTL
|
|
1253
|
+
* after an upgrade `installed` may still read the pinned build while `why` is already
|
|
1254
|
+
* `different_build`. The build the check saw is `observed`, never `installed`; `installed` equal to
|
|
1255
|
+
* `proven` says nothing about the pin holding (crew#1004).
|
|
1256
|
+
*/
|
|
1257
|
+
export type SeatVersion = {
|
|
1220
1258
|
/** The first non-empty line of the seat's `--version`, home written `~`; `null` when it did not answer. */
|
|
1221
1259
|
installed: string | null;
|
|
1222
|
-
/**
|
|
1223
|
-
proven: string | null;
|
|
1224
|
-
/** `proven` — the installed build is the pinned one; `unproven` — it is not (governance fails
|
|
1225
|
-
* closed); `no_pin` — the seat pins no build. */
|
|
1226
|
-
status: 'proven' | 'unproven' | 'no_pin';
|
|
1227
|
-
/** ISO-8601 of the reading. */
|
|
1260
|
+
/** ISO-8601 of the `installed` reading. */
|
|
1228
1261
|
checked_at: string;
|
|
1229
1262
|
/** How the binary on PATH was installed, from its resolved path: under `node_modules` = `npm`, a
|
|
1230
1263
|
* Homebrew prefix = `brew`, else `other`; `null` when it is not on PATH. */
|
|
1231
1264
|
install_source: 'npm' | 'brew' | 'other' | null;
|
|
1232
|
-
}
|
|
1265
|
+
} & (
|
|
1266
|
+
// `proven`: the build the seat's governance was proven on (`acp.verified_version`), `null` only
|
|
1267
|
+
// when it pins none. `observed`: the build the pin's check saw, on `different_build` only.
|
|
1268
|
+
| { status: 'no_pin'; proven: null }
|
|
1269
|
+
| { status: 'proven'; proven: string }
|
|
1270
|
+
| { status: 'unproven'; proven: string; why: 'no_answer' | 'invalid_answer' }
|
|
1271
|
+
| { status: 'unproven'; proven: string; why: 'different_build'; observed: string }
|
|
1272
|
+
);
|
|
1233
1273
|
|
|
1234
1274
|
/** `RosterSeat.account` (api-types 0.115.0). */
|
|
1235
1275
|
export interface SeatAccount {
|
|
@@ -1288,7 +1328,10 @@ export type SeatQeReviewer =
|
|
|
1288
1328
|
/**
|
|
1289
1329
|
* One `RosterSeat.issues` entry (api-types 0.115.0). Today's codes: `signed_out`, `qe_blocked`
|
|
1290
1330
|
* (problems); `quota`, `usage_limit`, `benched`, `codex_worktree`, `host_floor` and `host_floor_unknown`
|
|
1291
|
-
* (unreleased, wicked-core#976), `version_unproven`,
|
|
1331
|
+
* (unreleased, wicked-core#976), `version_unproven` (`params.why`: `no_answer` | `different_build` | `invalid_answer`,
|
|
1332
|
+
* api-types 0.131.0 — the same as `RosterSeat.version.why`; `params.observed`, on `different_build`
|
|
1333
|
+
* only: the build the pin's check saw, the same as `RosterSeat.version.observed`; `params.proven`;
|
|
1334
|
+
* `params.installed` when the seat's own `--version` answered),
|
|
1292
1335
|
* `unchecked` (`params.why`: `no_governance` | `no_host_boundary`), `fence_scoped`,
|
|
1293
1336
|
* `live_check_failed` (warnings); `opt_in`, `no_qe`, `unverified` (notes). A client must tolerate
|
|
1294
1337
|
* an unknown code.
|
|
@@ -7460,6 +7503,24 @@ export interface DiagnosticsResponse {
|
|
|
7460
7503
|
seatGovernance?: DiagnosticsSeatGovernance;
|
|
7461
7504
|
/** (api-types 0.97.0, crew#740) The memory store this daemon reads and writes. */
|
|
7462
7505
|
memoryStore?: MemoryStoreInfo;
|
|
7506
|
+
/** (api-types 0.130.0, crew#1068) The wicked-vault CLI the engine records held team findings with
|
|
7507
|
+
* — see `DiagnosticsVault`. `null` on a route set booted without an engine adapter; ABSENT on an
|
|
7508
|
+
* older daemon. */
|
|
7509
|
+
vault?: DiagnosticsVault | null;
|
|
7510
|
+
}
|
|
7511
|
+
|
|
7512
|
+
/**
|
|
7513
|
+
* (api-types 0.130.0, crew#1068) `DiagnosticsResponse.vault`: what the daemon exported to the engine
|
|
7514
|
+
* as `WICKED_VAULT_BIN` at boot. `shipped` = crew's own `wicked-vault` dependency's bin (an absolute
|
|
7515
|
+
* path); `operator` = the operator's own value, kept; `off` = the operator set it empty (the vault is
|
|
7516
|
+
* switched off on purpose); `unresolvable` = crew's bin could not be resolved, so nothing was
|
|
7517
|
+
* exported. `finding` is non-null exactly for `off` and `unresolvable` — the same entry
|
|
7518
|
+
* `GET /health.warnings[]` carries (`vault.off` / `vault.unresolvable`) — and names the remedy.
|
|
7519
|
+
*/
|
|
7520
|
+
export interface DiagnosticsVault {
|
|
7521
|
+
bin: string | null;
|
|
7522
|
+
source: 'shipped' | 'operator' | 'off' | 'unresolvable';
|
|
7523
|
+
finding: { kind: 'vault.off' | 'vault.unresolvable'; severity: 'warning'; message: string; remedy: string } | null;
|
|
7463
7524
|
}
|
|
7464
7525
|
|
|
7465
7526
|
/** `DiagnosticsResponse.seatGovernance` (crew#742). Paths are for the local operator. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wicked-crew-api-types",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.131.0",
|
|
4
4
|
"description": "The wire contract of the wicked-crew daemon's /api/v1 REST surface and /ws CoreEvent frames \u2014 types only, zero runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./index.d.ts",
|