wicked-crew-api-types 0.96.0 → 0.98.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.
Files changed (2) hide show
  1. package/index.d.ts +133 -2
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -227,6 +227,8 @@ export interface HealthCapabilities {
227
227
  /**
228
228
  * `LaunchRunBody.revisesPr` is accepted (crew#550; crew ≥ 0.7.36). ABSENT on a daemon before
229
229
  * the field — read as `false`: do not send `revisesPr` to such a daemon.
230
+ * NOTE (crew#662): this CAPABILITY flag is a boolean; the LAUNCH field of the same name,
231
+ * `LaunchRunBody.revisesPr`, is the pull request NUMBER (a positive integer) — never `true`.
230
232
  */
231
233
  revisesPr?: boolean;
232
234
  /**
@@ -246,6 +248,12 @@ export interface HealthCapabilities {
246
248
  * as `false`: group such a daemon's runs one session per run.
247
249
  */
248
250
  runChatId?: boolean;
251
+ /**
252
+ * (crew#825; additive) `LaunchRunBody.excludeLinkedIssues` is accepted and
253
+ * `POST /linked-issues/preview` is served. ABSENT on an older daemon — read as `false`: do not
254
+ * send the field (its strict launch schema 400s on it) and do not call the preview.
255
+ */
256
+ linkedIssuesExclude?: boolean;
249
257
  /**
250
258
  * Repo-bound runs get an EVIDENCE ROOT for walkthroughs (WT-W1, api-types 0.74.0): the engine
251
259
  * addon takes `LaunchOptions.evidenceRoot` (wicked-core-ts ≥ 0.7.35), so a walkthrough step on a
@@ -902,9 +910,46 @@ export interface RosterSeat {
902
910
  * fails the seat's ACP governance closed at every spawn.
903
911
  */
904
912
  version_pin?: SeatVersionPin;
913
+ /**
914
+ * (IG1-core-3, wicked-core-ts 0.7.41) The engine's governance class for the seat, derived from
915
+ * its record — passed through verbatim. `null`/absent on an engine before the field.
916
+ */
917
+ governance_class?: EngineGovernanceClass | null;
918
+ /**
919
+ * (api-types 0.97.0, IG1-crew-1) The governance mode the seat runs under per scope kind (the
920
+ * keys of `chat_admission`): what fences its tool calls. A crew reading — never handed to the
921
+ * engine (`clisJson` strips it).
922
+ */
923
+ governance_mode?: Record<GovernanceScopeKind, SeatGovernanceMode>;
905
924
  [k: string]: unknown;
906
925
  }
907
926
 
927
+ /** The engine's governance class names (IG1-core-3). */
928
+ export type EngineGovernanceClass = 'acp_input_governance' | 'os_sandbox' | 'none';
929
+
930
+ /** `unscoped` — no repository; `scoped` — several repositories or a project (the run binds none);
931
+ * `scoped_bound` — one repository (the run is bound to its worktree; every build run). */
932
+ export type GovernanceScopeKind = 'unscoped' | 'scoped' | 'scoped_bound';
933
+
934
+ /**
935
+ * (api-types 0.97.0, IG1-crew-1) The governance MODE a seat runs under — what fences its tool
936
+ * calls. `admitted`: an ACP adapter sends every tool call through the engine's per-call gate (and
937
+ * a pinned build verified); `os_sandbox`: an OS write floor contains it — `source` names the floor
938
+ * (`seat_record` = `acp.os_sandbox`, `self` = codex's own `--sandbox`, `repo_boundary` = the
939
+ * engine's boundary around a run bound to one repository) — not a per-call gate, not a read or
940
+ * network jail; `none`: only the command-text fences. `reason` says why in the operator's words
941
+ * (codex: no per-call adapter exists to admit).
942
+ */
943
+ export interface SeatGovernanceMode {
944
+ mode: 'admitted' | 'os_sandbox' | 'none';
945
+ class: EngineGovernanceClass | null;
946
+ source: 'acp_input_governance' | 'seat_record' | 'self' | 'repo_boundary' | 'none';
947
+ reason: string;
948
+ /** The roots the mode holds writes/reads to. On the roster these are labels (`<run worktree>`);
949
+ * on a run's record, paths. */
950
+ fence: { write_roots: string[]; read_roots: string[]; network: 'open' };
951
+ }
952
+
908
953
  /**
909
954
  * One pinned seat's `--version` reading (core#581): `RosterSeat.version_pin` and
910
955
  * `AcpCliDiagnostics.versionPin`. Read the way the engine's spawn-time check reads it: the pin
@@ -4026,6 +4071,8 @@ export interface LaunchRunBody {
4026
4071
  * `deliver: 'none'` is a 400), and the PR must be OPEN and not from a fork (409 naming why).
4027
4072
  * Send it ONLY when `GET /health.capabilities.revisesPr === true` — an older daemon's strict
4028
4073
  * launch schema rejects the key with a 400.
4074
+ * NOTE (crew#662): a positive integer PR number — not the boolean capability flag
4075
+ * `HealthCapabilities.revisesPr` of the same name. A 400 names the field and what it expected.
4029
4076
  */
4030
4077
  revisesPr?: number;
4031
4078
  /**
@@ -4083,6 +4130,30 @@ export interface LaunchRunBody {
4083
4130
  * guard as `channel` above.
4084
4131
  */
4085
4132
  actor?: string;
4133
+ /**
4134
+ * (crew#825; additive) Issue refs the intent names that the daemon must NOT read and append to
4135
+ * the problem (`"541"`, `"#541"`, `"owner/repo#541"`; at most 50) — a reference in passing is not
4136
+ * a request to inline the issue. Answered as `LaunchRunResponse.linkedIssues[]` entries with
4137
+ * `excluded: true`. Send only when `GET /health.capabilities.linkedIssuesExclude === true`.
4138
+ */
4139
+ excludeLinkedIssues?: string[];
4140
+ }
4141
+
4142
+ /** `POST /linked-issues/preview` (crew#825): what a workflow launch of `problem` WOULD append. */
4143
+ export interface LinkedIssuesPreviewBody {
4144
+ problem: string;
4145
+ repoRef?: string;
4146
+ excludeLinkedIssues?: string[];
4147
+ }
4148
+
4149
+ /** The `POST /linked-issues/preview` 200 body: the same reading `POST /runs` does, nothing launched. */
4150
+ export interface LinkedIssuesPreviewResponse {
4151
+ issues: LinkedIssue[];
4152
+ /** Characters the block would add to the problem; `0` when nothing would be appended. */
4153
+ appendedChars: number;
4154
+ /** Present when the reading itself failed (the repo list or gh unreadable): a launch now runs on
4155
+ * the intent alone, exactly as `POST /runs` does on the same fault. */
4156
+ error?: string;
4086
4157
  }
4087
4158
 
4088
4159
  /**
@@ -4099,6 +4170,10 @@ export interface LinkedIssue {
4099
4170
  title?: string;
4100
4171
  /** Present when not `resolved`: why, in one line. */
4101
4172
  error?: string;
4173
+ /** (crew#825; additive) Present when `resolved`: characters this issue adds to the problem. */
4174
+ chars?: number;
4175
+ /** (crew#825; additive) `true` when the launch left this ref out (`excludeLinkedIssues`). */
4176
+ excluded?: true;
4102
4177
  }
4103
4178
 
4104
4179
  /** The `POST /runs` 201 body. `linkedIssues` (crew#627, additive) is present when the intent of a
@@ -4112,6 +4187,12 @@ export interface LaunchRunResponse {
4112
4187
  * delivery), and `notice` says so in words a composer can show. ABSENT on every other launch.
4113
4188
  */
4114
4189
  freeText?: { notice: string };
4190
+ /**
4191
+ * (crew#874) PRESENT when the installed wicked-garden is not the one the published skills
4192
+ * generation was built from: the run executes the PUBLISHED generation, and this says so — the
4193
+ * same `skills.installed-ahead` finding `GET /diagnostics.skills.findings` carries.
4194
+ */
4195
+ skillsWarning?: { kind: 'skills.installed-ahead'; severity: 'warning'; message: string };
4115
4196
  }
4116
4197
 
4117
4198
  /**
@@ -5653,6 +5734,12 @@ export interface ChatPathView {
5653
5734
  helpers: string[];
5654
5735
  /** The answer step the last message added (`answer-N`). */
5655
5736
  stepId: string;
5737
+ /**
5738
+ * (api-types 0.97.0, IG1-crew-1) The PA's governance mode for the ask's scope — what fences its
5739
+ * tool calls — derived from the engine's class as the run reports it (`path.started.governance`,
5740
+ * `member.joined.governance_class`). Absent until the PA is known, and on a daemon before it.
5741
+ */
5742
+ governance_mode?: SeatGovernanceMode;
5656
5743
  }
5657
5744
 
5658
5745
  // ── Project code graph (DES-PROJECT-001; the co-located multi-repo graph) ──────
@@ -6268,6 +6355,42 @@ export interface DiagnosticsResponse {
6268
6355
  stateHome?: DiagnosticsStateHome | null;
6269
6356
  /** The studio chat recorder's per-CLI format compliance (api-types 0.84.0, DC-S4b); `null` without the chat host. */
6270
6357
  decisions?: DiagnosticsDecisions | null;
6358
+ /** (api-types 0.97.0, crew#742) Per-seat governance standing before any run. */
6359
+ seatGovernance?: DiagnosticsSeatGovernance;
6360
+ /** (api-types 0.97.0, crew#740) The memory store this daemon reads and writes. */
6361
+ memoryStore?: MemoryStoreInfo;
6362
+ }
6363
+
6364
+ /** `DiagnosticsResponse.seatGovernance` (crew#742). Paths are for the local operator. */
6365
+ export interface DiagnosticsSeatGovernance {
6366
+ /** The engine's user registry overlay (`~/.config/wicked-council/clis.toml`) and whether it exists. */
6367
+ rosterFile: { path: string; present: boolean } | null;
6368
+ /** The OS launcher the repository boundary arms with on this host (`sandbox-exec` | `bwrap`),
6369
+ * found on PATH; `null` = none, so floor seats resting on it run advisory. */
6370
+ hostBoundary: string | null;
6371
+ seats: DiagnosticsSeatGovernanceEntry[];
6372
+ }
6373
+
6374
+ export interface DiagnosticsSeatGovernanceEntry {
6375
+ cli: string;
6376
+ enabled_for_council: boolean;
6377
+ transport: 'acp' | 'wrapped';
6378
+ /** The seat record arms the OS sandbox itself (`acp.os_sandbox`). */
6379
+ os_sandbox: boolean;
6380
+ class: EngineGovernanceClass | null;
6381
+ /** `enforced` — admitted and (if pinned) verified; `claimed` — admitted, pin not yet probed;
6382
+ * `unenforced` — no per-call gate holds the seat. */
6383
+ input_governance: 'enforced' | 'claimed' | 'unenforced';
6384
+ governance_mode: Record<GovernanceScopeKind, SeatGovernanceMode>;
6385
+ }
6386
+
6387
+ /** (api-types 0.97.0, crew#740) The daemon's memory store: `explicit` (`WICKED_MEMORY_DB`),
6388
+ * `state-home` (a non-default state home's own store), `global` (the operator-global one).
6389
+ * `notice` is the isolation notice when this daemon's own store is empty and a global one exists. */
6390
+ export interface MemoryStoreInfo {
6391
+ path: string;
6392
+ source: 'explicit' | 'state-home' | 'global';
6393
+ notice: string | null;
6271
6394
  }
6272
6395
 
6273
6396
  // ── Diagnostics — governance store + dead letters (api-types 0.31.0, crew#495 / F-022) ─────────
@@ -6425,7 +6548,12 @@ export interface DiagnosticsSkillsFinding {
6425
6548
  * generation landed with (a reference the skill's author owns that names nothing in the
6426
6549
  * snapshot — published as found); `message` names the publish finding's kind, `file:line` and
6427
6550
  * evidence. Reported while that generation is current, from the publish that found them until the
6428
- * daemon restarts (a restart re-verifies `current` without re-scanning it). */
6551
+ * daemon restarts (a restart re-verifies `current` without re-scanning it);
6552
+ * `skills.installed-ahead` (`warning`, crew#874) = the installed wicked-garden's content hash is
6553
+ * not the baseline the published generation was built from — runs use the published (older)
6554
+ * skills; `message` names both versions and the remedy (refresh-baseline, then publish). A
6555
+ * daemon boot refreshes and publishes on its own when nothing in the catalog is user-edited
6556
+ * (`WICKED_CREW_SKILLS_AUTO_REFRESH=0` turns that off); when it did not, the message says why. */
6429
6557
  kind:
6430
6558
  | 'skills.fallback'
6431
6559
  | 'skills.blocked'
@@ -6436,7 +6564,8 @@ export interface DiagnosticsSkillsFinding {
6436
6564
  | 'skills.base-skill'
6437
6565
  | 'skills.phase-skill'
6438
6566
  | 'skills.garden'
6439
- | 'skills.publish-warning';
6567
+ | 'skills.publish-warning'
6568
+ | 'skills.installed-ahead';
6440
6569
  severity: 'warning' | 'error';
6441
6570
  message: string;
6442
6571
  }
@@ -7220,6 +7349,8 @@ export interface ListMemoriesQuery {
7220
7349
  /** `GET /memory` → 200. */
7221
7350
  export interface ListMemoriesResponse {
7222
7351
  memories: MemoryItem[];
7352
+ /** (api-types 0.97.0, crew#740) The store the list was read from. Absent on a daemon before it. */
7353
+ store?: MemoryStoreInfo;
7223
7354
  }
7224
7355
 
7225
7356
  /** `GET /memory/coverage` query — an optional subtree filter (`""`/omitted = global totals). */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wicked-crew-api-types",
3
- "version": "0.96.0",
3
+ "version": "0.98.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",