specguard-mcp 0.1.27 → 0.1.29

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/README.md CHANGED
@@ -328,7 +328,17 @@ newest refusal is newer than the newest *accepted* run, and true when nothing ha
328
328
  accepted, so a repository refused once and quiet since still answers `true`. Read it with
329
329
  `last_rejection_at` and judge recency yourself. Each retained rejection carries the endpoint's own
330
330
  reasons and, where the client reported one, the client
331
- version that sent it. A `latest_run` from days ago beside a live rejection stream is a suite
331
+ version that sent it, plus `served_by` — the build of the SpecGuard deployment that refused it,
332
+ stamped on the row at write time. That stamp answers a question the deployment's live version read
333
+ cannot: `get_server_version` reports which build is answering *now*, while retained refusals
334
+ outlive deploys, so for a past row the two routinely disagree — read `served_by` for which build
335
+ refused *that row*, never the live route. The row's two nulls mean *different* things and must not
336
+ be read as each other: a null `reported_client` means the client sent no `User-Agent` (the row
337
+ knows, and the client said nothing); a null `served_by` means the row carries no build identity, so
338
+ the platform cannot name which build answered it — the write path can land on that null in more
339
+ than one way (for example a row retained from before the stamp existed, a build whose VERSION file
340
+ is missing or unreadable, a column stored blank), so the null says only that no build is named,
341
+ never which way it got there. A `latest_run` from days ago beside a live rejection stream is a suite
332
342
  SpecGuard *stopped accepting*, not a suite nobody ran. `credential_health` covers the break that one
333
343
  structurally **cannot** see: a rejected key resolves no repository and writes no rejection row, so an
334
344
  authentication-broken pipeline is invisible to every rejection figure — it names any key that was
@@ -348,7 +358,25 @@ ranking for the whole set. Where **no** bound sits beside a list, it is everythi
348
358
  a finding and not a disclosure someone forgot.
349
359
 
350
360
  Figures are `null` where CI did not report them. A `null` means *not measured*; it is never a zero,
351
- because a zero would read as a measurement that was taken.
361
+ because a zero would read as a measurement that was taken. That rule is about nulls and does not
362
+ run backwards: a non-null figure is not thereby a measurement — a run that reported zero tests
363
+ serves a real `total_specs: 0` beside `suite_size_measured: false`, so it is that boolean, never
364
+ the nullness, that says whether the row measured a suite.
365
+
366
+ Three more keys ride **every** response, with no parameter to pass, and together they decide whether
367
+ two history rows may be *differenced at all* — which is what the history is for. `suite_size_measured`
368
+ is served on `latest_run` and on every `history[]` row, from the same predicate at both sites so one
369
+ run cannot disagree with itself: `false` means that run reported **no** tests, so its `total_specs`
370
+ is a *report*, not a measurement — never difference across a row where it is false. `shard_count`
371
+ and `timed_shard_count` ride every `history[]` row and are the two denominators: difference
372
+ `total_specs` only across rows of *equal* `shard_count`, because that count is a sum over the shards
373
+ **recorded**; difference `duration_seconds` only across rows of *equal* `timed_shard_count`, because
374
+ that figure is a max over the shards that **reported**. Ignore the second and a run whose four
375
+ shards all reported, differenced against a run whose two slowest were cancelled — identical
376
+ `shard_count`, identical `suite_size_measured`, only `timed_shard_count` differing — reads as a 70%
377
+ speedup produced entirely by telemetry loss. A half-reported run is the **ordinary** state, not an
378
+ exotic one: every sharded run passes through it while its shards are still arriving, and a job
379
+ cancelled after two of four shards leaves a half-sized row in the history permanently.
352
380
 
353
381
  ### `get_server_version`
354
382
 
@@ -667,8 +695,9 @@ nor `credential_health` (findings only — a never-presented replacement is neit
667
695
  presented-revoked) can answer this.
668
696
 
669
697
  **This is the id source for every row this session did not mint.** The mint response carries the
670
- id of the key IT minted (SPGD-993); a key minted in the web panel, or in an earlier session, has
671
- no other bridge-learnable id — list here to name a `key_id` for `revoke_repository_api_key`.
698
+ id of the key IT minted, in its `api_key` block (SPGD-993); a key minted in the web panel, or in
699
+ an earlier session, has no other bridge-learnable id — list here to name a `key_id` for
700
+ `revoke_repository_api_key`.
672
701
 
673
702
  `token_hint` is a hint, never the token — the plaintext existed for exactly one response at mint
674
703
  time and nothing persisted it. There is no regenerate: rotation is mint-and-replace
@@ -984,9 +1013,12 @@ The toolset fills in as more of SpecGuard lands. Adding one is two mechanical ed
984
1013
  There is no third — no third *wiring* edit, at least: every tool also earns a `### ` section above,
985
1014
  and every argument earns a row in that section's table, since this README ships as the package's
986
1015
  published documentation, and `test/readme.test.ts` derives that obligation from the registry so a
987
- missing section or an undocumented parameter fails the suite. A tool that genuinely takes no
988
- arguments (`list_repositories` is the first) still earns the section, and is named in that file's
989
- `ARGUMENT_LESS_TOOLS` — a deliberate line to add, rather than a floor relaxed for everyone.
1016
+ missing section or an undocumented parameter fails the suite — as does a response key the tool's
1017
+ description names that the section never mentions. A tool that genuinely takes no
1018
+ arguments still earns the section, and is named in that file's `ARGUMENT_LESS_TOOLS` — a
1019
+ deliberate line to add, rather than a floor relaxed for everyone. The set tracks the property,
1020
+ not arrival order: an `inputSchema` that declares no `properties`, the shape
1021
+ `registrable_repositories` has.
990
1022
  `src/server.ts` iterates that array and contains no per-tool code — no `switch`, no hard-coded name — and everything a tool
991
1023
  touches the world with (config, subprocesses, `fetch`) is injected, so a new tool is testable
992
1024
  without a live deployment for free. The property tests in `test/tools/registry.test.ts` run over
@@ -994,8 +1026,11 @@ whatever the registry holds, so a tool added later is checked by tests written t
994
1026
 
995
1027
  **Only wrap capabilities that exist.** A tool in `tools/list` is a promise an agent acts on; one that
996
1028
  discovers cleanly and fails on use is worse than one that is absent, because the agent has already
997
- committed to a plan by the time it finds out. `/check-intent` and duplicate clustering are therefore
998
- not here, and should arrive when their backing data and engine do.
1029
+ committed to a plan by the time it finds out. Anything whose backing endpoint has not shipped stays
1030
+ out — `/check-intent` is in that state today: the platform's `config/routes.rb` carries it as a
1031
+ comment and nothing more, so there is nothing for a tool to wrap. Duplicate clustering once sat under
1032
+ this same rule; the endpoint it needed shipped, and `near_duplicate_clusters` moved inside. What
1033
+ moved was the platform, not the bar.
999
1034
 
1000
1035
  Transport is chosen in `bin/specguard-mcp.ts` and nowhere else — stdio today, so an HTTP/SSE
1001
1036
  entrypoint is a sibling of that file rather than a change to the server.
@@ -320,7 +320,7 @@ export declare function requireUserOrAgentApiConfig(config: Config): Credentiall
320
320
  *
321
321
  * The fourth sibling, and the first whose answer carries no key and no
322
322
  * `Credential`: the server's root-level `GET /version` (SPGD-1197, specguard
323
- * d434c2a) answers unauthenticated BY DESIGN — the platform's own doctrine
323
+ * 08ab408) answers unauthenticated BY DESIGN — the platform's own doctrine
324
324
  * places it outside the credential seam, at the root where the no-account
325
325
  * reads (`/up`, the schema mirror) already live. Demanding a key here would
326
326
  * invent a requirement the deployment does not have, and the
@@ -188,7 +188,7 @@ export function requireUserOrAgentApiConfig(config) {
188
188
  *
189
189
  * The fourth sibling, and the first whose answer carries no key and no
190
190
  * `Credential`: the server's root-level `GET /version` (SPGD-1197, specguard
191
- * d434c2a) answers unauthenticated BY DESIGN — the platform's own doctrine
191
+ * 08ab408) answers unauthenticated BY DESIGN — the platform's own doctrine
192
192
  * places it outside the credential seam, at the root where the no-account
193
193
  * reads (`/up`, the schema mirror) already live. Demanding a key here would
194
194
  * invent a requirement the deployment does not have, and the
@@ -33,11 +33,16 @@ export declare function createServer(options?: CreateServerOptions): Server;
33
33
  * The literal this replaced was written at bootstrap and never revisited: the
34
34
  * release bot bumps `package.json` alone, so every initialize handshake after
35
35
  * the first release told every client the bridge was still the bootstrap
36
- * version. Nothing caught the drift because the constant has exactly two
37
- * reader cells — this file's `serverInfo` and the `src/index.ts` re-export —
38
- * and no test named it. `SERVER_VERSION` stays a const export with the same
39
- * readers; the ONLY change is that its value now tracks the release instead of
40
- * the bootstrap.
36
+ * version. Nothing caught the drift in that bootstrap era: then, every reader
37
+ * cell of the constant relayed the stale literal unchecked, and no test named
38
+ * it. That era is over. Whatever a reader cell does with `SERVER_VERSION`, it
39
+ * now sees the tracked value — and the suite now names the constant too. The
40
+ * per-request User-Agent (`requestUserAgent()` in
41
+ * `src/support/specguard-api.ts`) stamps `specguard-mcp/<version>` onto every
42
+ * outbound call, and the transport tests assert that header against this very
43
+ * constant. The manifest-walk change kept `SERVER_VERSION` a const export and
44
+ * left every reader cell's access to it untouched; the ONLY change is that
45
+ * its value now tracks the release instead of the bootstrap.
41
46
  *
42
47
  * `SERVER_VERSION`'s module-scope initialization is the single read: the walk
43
48
  * runs once at import, and every later reader cell sees the cached result.
@@ -120,11 +120,16 @@ function indexByName(tools) {
120
120
  * The literal this replaced was written at bootstrap and never revisited: the
121
121
  * release bot bumps `package.json` alone, so every initialize handshake after
122
122
  * the first release told every client the bridge was still the bootstrap
123
- * version. Nothing caught the drift because the constant has exactly two
124
- * reader cells — this file's `serverInfo` and the `src/index.ts` re-export —
125
- * and no test named it. `SERVER_VERSION` stays a const export with the same
126
- * readers; the ONLY change is that its value now tracks the release instead of
127
- * the bootstrap.
123
+ * version. Nothing caught the drift in that bootstrap era: then, every reader
124
+ * cell of the constant relayed the stale literal unchecked, and no test named
125
+ * it. That era is over. Whatever a reader cell does with `SERVER_VERSION`, it
126
+ * now sees the tracked value — and the suite now names the constant too. The
127
+ * per-request User-Agent (`requestUserAgent()` in
128
+ * `src/support/specguard-api.ts`) stamps `specguard-mcp/<version>` onto every
129
+ * outbound call, and the transport tests assert that header against this very
130
+ * constant. The manifest-walk change kept `SERVER_VERSION` a const export and
131
+ * left every reader cell's access to it untouched; the ONLY change is that
132
+ * its value now tracks the release instead of the bootstrap.
128
133
  *
129
134
  * `SERVER_VERSION`'s module-scope initialization is the single read: the walk
130
135
  * runs once at import, and every later reader cell sees the cached result.
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { ToolDefinition } from "./types.js";
2
2
  /**
3
3
  * `POST /api/v1/repositories/:repository_id/api_keys` as a tool — shipped in
4
- * the platform (`specguard/config/routes.rb:158`,
4
+ * the platform (`specguard/config/routes.rb`,
5
5
  * `user_repository_api_keys_controller#create`, SPGD-754).
6
6
  *
7
7
  * == Reveal-once, again
@@ -2,7 +2,7 @@ import { postJsonObject, requireUserOrAgentApiConfig } from "../support/specguar
2
2
  import { optionalString, requireString } from "./args.js";
3
3
  /**
4
4
  * `POST /api/v1/repositories/:repository_id/api_keys` as a tool — shipped in
5
- * the platform (`specguard/config/routes.rb:158`,
5
+ * the platform (`specguard/config/routes.rb`,
6
6
  * `user_repository_api_keys_controller#create`, SPGD-754).
7
7
  *
8
8
  * == Reveal-once, again
@@ -1,10 +1,11 @@
1
1
  import type { ToolDefinition } from "./types.js";
2
2
  /**
3
3
  * `GET /version` as a tool — the server's OWN identity, askable at last
4
- * (shipped: SPGD-1197, specguard `d434c2a`, root-level and unauthenticated by
5
- * design — `config/routes.rb` mounts it beside `/up` and the schema mirror,
6
- * exactly because the credential seam under `api/` fails closed and this read
7
- * is the platform's deliberate no-account exception at the root).
4
+ * (shipped: SPGD-1197, specguard `08ab408`; first served by release 0.1.46,
5
+ * `d434c2a` — root-level and unauthenticated by design — `config/routes.rb`
6
+ * mounts it beside `/up` and the schema mirror, exactly because the credential
7
+ * seam under `api/` fails closed and this read is the platform's deliberate
8
+ * no-account exception at the root).
8
9
  *
9
10
  * == What it answers, and the one distinction the whole tool exists to carry
10
11
  *
@@ -1,10 +1,11 @@
1
1
  import { getJsonObject, requireEndpointApiConfig } from "../support/specguard-api.js";
2
2
  /**
3
3
  * `GET /version` as a tool — the server's OWN identity, askable at last
4
- * (shipped: SPGD-1197, specguard `d434c2a`, root-level and unauthenticated by
5
- * design — `config/routes.rb` mounts it beside `/up` and the schema mirror,
6
- * exactly because the credential seam under `api/` fails closed and this read
7
- * is the platform's deliberate no-account exception at the root).
4
+ * (shipped: SPGD-1197, specguard `08ab408`; first served by release 0.1.46,
5
+ * `d434c2a` — root-level and unauthenticated by design — `config/routes.rb`
6
+ * mounts it beside `/up` and the schema mirror, exactly because the credential
7
+ * seam under `api/` fails closed and this read is the platform's deliberate
8
+ * no-account exception at the root).
8
9
  *
9
10
  * == What it answers, and the one distinction the whole tool exists to carry
10
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"get-server-version.js","sourceRoot":"","sources":["../../../src/tools/get-server-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,gBAAgB,GAAmB;IACvC,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,gBAAgB;IACvB,WAAW,EACT,+FAA+F;QAC/F,iGAAiG;QACjG,4FAA4F;QAC5F,2FAA2F;QAC3F,8FAA8F;QAC9F,+FAA+F;QAC/F,iGAAiG;QACjG,0FAA0F;QAC1F,gGAAgG;QAChG,+FAA+F;QAC/F,8FAA8F;QAC9F,iGAAiG;QACjG,gGAAgG;QAChG,gGAAgG;QAChG,iGAAiG;QACjG,+FAA+F;QAC/F,gDAAgD;IAClD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,mDAAmD;QACnD,oBAAoB,EAAE,KAAK;KAC5B;IAED,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO;QACtB,MAAM,GAAG,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEvE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,UAAU,EAAE,MAAM;SACnB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"get-server-version.js","sourceRoot":"","sources":["../../../src/tools/get-server-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,gBAAgB,GAAmB;IACvC,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE,gBAAgB;IACvB,WAAW,EACT,+FAA+F;QAC/F,iGAAiG;QACjG,4FAA4F;QAC5F,2FAA2F;QAC3F,8FAA8F;QAC9F,+FAA+F;QAC/F,iGAAiG;QACjG,0FAA0F;QAC1F,gGAAgG;QAChG,+FAA+F;QAC/F,8FAA8F;QAC9F,iGAAiG;QACjG,gGAAgG;QAChG,gGAAgG;QAChG,iGAAiG;QACjG,+FAA+F;QAC/F,gDAAgD;IAClD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,mDAAmD;QACnD,oBAAoB,EAAE,KAAK;KAC5B;IAED,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO;QACtB,MAAM,GAAG,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEvE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,UAAU,EAAE,MAAM;SACnB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -36,12 +36,12 @@ import type { ToolDefinition } from "./types.js";
36
36
  * == What is deliberately absent
37
37
  *
38
38
  * `/check-intent` is NOT here and must not be added until its backing endpoint
39
- * exists — `specguard/config/routes.rb:113` carries it as a comment only, which
40
- * is the evidence this forbid rests on. A tool advertised in `tools/list` is a
41
- * promise an agent will act on: wrapping an endpoint that does not exist would
42
- * produce a server that discovers cleanly and fails on use, which is worse than
43
- * not offering the tool, because the agent has already committed to a plan by
44
- * the time it finds out.
39
+ * exists — `specguard/config/routes.rb` carries `/check-intent` as a comment
40
+ * only, which is the evidence this forbid rests on. A tool advertised in
41
+ * `tools/list` is a promise an agent will act on: wrapping an endpoint that
42
+ * does not exist would produce a server that discovers cleanly and fails on
43
+ * use, which is worse than not offering the tool, because the agent has
44
+ * already committed to a plan by the time it finds out.
45
45
  *
46
46
  * == The first tool that WRITES
47
47
  *
@@ -67,7 +67,7 @@ import type { ToolDefinition } from "./types.js";
67
67
  * == The read half of the registration gate
68
68
  *
69
69
  * - `registrable_repositories` wraps `GET /api/v1/repositories/registrable`
70
- * (shipped: `specguard/config/routes.rb:117`,
70
+ * (shipped: `specguard/config/routes.rb`,
71
71
  * `Api::V1::UserRepositoriesController#registrable`).
72
72
  *
73
73
  * `list_repositories` says what IS registered; this says what COULD be — the
@@ -107,9 +107,9 @@ import type { ToolDefinition } from "./types.js";
107
107
  * did not mint.
108
108
  *
109
109
  * The standing rule itself is unchanged and still binding — which still keeps
110
- * out `/check-intent`: it has no backing endpoint (`routes.rb:113` mounts it
111
- * as a comment only). A tool advertised in `tools/list` remains a promise an
112
- * agent will act on.
110
+ * out `/check-intent`: it has no backing endpoint (`specguard/config/routes.rb`
111
+ * mounts `/check-intent` as a comment only). A tool advertised in `tools/list`
112
+ * remains a promise an agent will act on.
113
113
  *
114
114
  * == Near-duplicate clusters: the forbid that retired
115
115
  *
@@ -184,7 +184,7 @@ import type { ToolDefinition } from "./types.js";
184
184
  * == The first tool that needs NO credential
185
185
  *
186
186
  * - `get_server_version` wraps the server's root-level `GET /version`
187
- * (shipped: SPGD-1197, specguard `d434c2a`).
187
+ * (shipped: SPGD-1197, specguard `08ab408`).
188
188
  *
189
189
  * The platform's own doctrine placed this read OUTSIDE the credential seam
190
190
  * rather than inside with an exception: every controller under `api/` must
@@ -54,12 +54,12 @@ import updateRepositoryMemberPermissions from "./update-repository-member-permis
54
54
  * == What is deliberately absent
55
55
  *
56
56
  * `/check-intent` is NOT here and must not be added until its backing endpoint
57
- * exists — `specguard/config/routes.rb:113` carries it as a comment only, which
58
- * is the evidence this forbid rests on. A tool advertised in `tools/list` is a
59
- * promise an agent will act on: wrapping an endpoint that does not exist would
60
- * produce a server that discovers cleanly and fails on use, which is worse than
61
- * not offering the tool, because the agent has already committed to a plan by
62
- * the time it finds out.
57
+ * exists — `specguard/config/routes.rb` carries `/check-intent` as a comment
58
+ * only, which is the evidence this forbid rests on. A tool advertised in
59
+ * `tools/list` is a promise an agent will act on: wrapping an endpoint that
60
+ * does not exist would produce a server that discovers cleanly and fails on
61
+ * use, which is worse than not offering the tool, because the agent has
62
+ * already committed to a plan by the time it finds out.
63
63
  *
64
64
  * == The first tool that WRITES
65
65
  *
@@ -85,7 +85,7 @@ import updateRepositoryMemberPermissions from "./update-repository-member-permis
85
85
  * == The read half of the registration gate
86
86
  *
87
87
  * - `registrable_repositories` wraps `GET /api/v1/repositories/registrable`
88
- * (shipped: `specguard/config/routes.rb:117`,
88
+ * (shipped: `specguard/config/routes.rb`,
89
89
  * `Api::V1::UserRepositoriesController#registrable`).
90
90
  *
91
91
  * `list_repositories` says what IS registered; this says what COULD be — the
@@ -125,9 +125,9 @@ import updateRepositoryMemberPermissions from "./update-repository-member-permis
125
125
  * did not mint.
126
126
  *
127
127
  * The standing rule itself is unchanged and still binding — which still keeps
128
- * out `/check-intent`: it has no backing endpoint (`routes.rb:113` mounts it
129
- * as a comment only). A tool advertised in `tools/list` remains a promise an
130
- * agent will act on.
128
+ * out `/check-intent`: it has no backing endpoint (`specguard/config/routes.rb`
129
+ * mounts `/check-intent` as a comment only). A tool advertised in `tools/list`
130
+ * remains a promise an agent will act on.
131
131
  *
132
132
  * == Near-duplicate clusters: the forbid that retired
133
133
  *
@@ -202,7 +202,7 @@ import updateRepositoryMemberPermissions from "./update-repository-member-permis
202
202
  * == The first tool that needs NO credential
203
203
  *
204
204
  * - `get_server_version` wraps the server's root-level `GET /version`
205
- * (shipped: SPGD-1197, specguard `d434c2a`).
205
+ * (shipped: SPGD-1197, specguard `08ab408`).
206
206
  *
207
207
  * The platform's own doctrine placed this read OUTSIDE the credential seam
208
208
  * rather than inside with an exception: every controller under `api/` must
@@ -1,7 +1,7 @@
1
1
  import type { ToolDefinition } from "./types.js";
2
2
  /**
3
3
  * `GET /api/v1/repositories/:repository_id/api_keys` as a tool — shipped in
4
- * the platform (`specguard/config/routes.rb:233`,
4
+ * the platform (`specguard/config/routes.rb`,
5
5
  * `Api::V1::UserRepositoryApiKeysController#index`, SPGD-993).
6
6
  *
7
7
  * == The verify step of the rotation this bridge otherwise cannot see
@@ -2,7 +2,7 @@ import { getJsonObject, requireUserOrAgentApiConfig } from "../support/specguard
2
2
  import { requireString } from "./args.js";
3
3
  /**
4
4
  * `GET /api/v1/repositories/:repository_id/api_keys` as a tool — shipped in
5
- * the platform (`specguard/config/routes.rb:233`,
5
+ * the platform (`specguard/config/routes.rb`,
6
6
  * `Api::V1::UserRepositoryApiKeysController#index`, SPGD-993).
7
7
  *
8
8
  * == The verify step of the rotation this bridge otherwise cannot see
@@ -1,7 +1,7 @@
1
1
  import type { ToolDefinition } from "./types.js";
2
2
  /**
3
3
  * `GET /api/v1/repositories/registrable` as a tool — shipped today in the
4
- * platform (`specguard/config/routes.rb:117`, served by
4
+ * platform (`specguard/config/routes.rb`, served by
5
5
  * `Api::V1::UserRepositoriesController#registrable`).
6
6
  *
7
7
  * == What it answers, and why `list_repositories` does not
@@ -1,7 +1,7 @@
1
1
  import { getJsonObject, requireUserApiConfig } from "../support/specguard-api.js";
2
2
  /**
3
3
  * `GET /api/v1/repositories/registrable` as a tool — shipped today in the
4
- * platform (`specguard/config/routes.rb:117`, served by
4
+ * platform (`specguard/config/routes.rb`, served by
5
5
  * `Api::V1::UserRepositoriesController#registrable`).
6
6
  *
7
7
  * == What it answers, and why `list_repositories` does not
@@ -1,7 +1,7 @@
1
1
  import type { ToolDefinition } from "./types.js";
2
2
  /**
3
3
  * `DELETE /api/v1/repositories/:id` as a tool — shipped in the platform
4
- * (`specguard/config/routes.rb:152`, `Api::V1::UserRepositoriesController#destroy`,
4
+ * (`specguard/config/routes.rb`, `Api::V1::UserRepositoriesController#destroy`,
5
5
  * SPGD-754).
6
6
  *
7
7
  * == The destructive gesture in the whole surface
@@ -2,7 +2,7 @@ import { deleteJson, requireUserOrAgentApiConfig } from "../support/specguard-ap
2
2
  import { requireString } from "./args.js";
3
3
  /**
4
4
  * `DELETE /api/v1/repositories/:id` as a tool — shipped in the platform
5
- * (`specguard/config/routes.rb:152`, `Api::V1::UserRepositoriesController#destroy`,
5
+ * (`specguard/config/routes.rb`, `Api::V1::UserRepositoriesController#destroy`,
6
6
  * SPGD-754).
7
7
  *
8
8
  * == The destructive gesture in the whole surface
@@ -1,7 +1,7 @@
1
1
  import type { ToolDefinition } from "./types.js";
2
2
  /**
3
3
  * `PATCH /api/v1/repositories/:id` as a tool — shipped in the platform
4
- * (`specguard/config/routes.rb:186`, `Api::V1::UserRepositoriesController#update`,
4
+ * (`specguard/config/routes.rb`, `Api::V1::UserRepositoriesController#update`,
5
5
  * SPGD-878, PR #266).
6
6
  *
7
7
  * == Why this tool exists at all
@@ -2,7 +2,7 @@ import { patchJsonObject, requireUserApiConfig } from "../support/specguard-api.
2
2
  import { requireString } from "./args.js";
3
3
  /**
4
4
  * `PATCH /api/v1/repositories/:id` as a tool — shipped in the platform
5
- * (`specguard/config/routes.rb:186`, `Api::V1::UserRepositoriesController#update`,
5
+ * (`specguard/config/routes.rb`, `Api::V1::UserRepositoriesController#update`,
6
6
  * SPGD-878, PR #266).
7
7
  *
8
8
  * == Why this tool exists at all
@@ -516,8 +516,19 @@ const getRepositoryOverview = {
516
516
  "nothing has ever been accepted — so read it with `last_rejection_at` and judge recency " +
517
517
  "yourself, because a repository refused once and quiet since still answers true. Each retained " +
518
518
  "rejection carries the endpoint's own reasons and, where the client reported one, the client " +
519
- "version that sent it. A `latest_run` from days ago beside a live rejection stream is a suite " +
520
- "SpecGuard STOPPED ACCEPTING, not a suite nobody ran. " +
519
+ "version that sent it, plus `served_by` — the build of the SpecGuard deployment that refused it, " +
520
+ "stamped on the row at write time. That stamp answers a question the deployment's live version " +
521
+ "read cannot: `get_server_version` reports which build is answering NOW, while retained " +
522
+ "refusals outlive deploys, so for a past row the two routinely disagree — read `served_by` for " +
523
+ "WHICH BUILD REFUSED THAT ROW, never the live route. The row's two nulls mean DIFFERENT things " +
524
+ "and must not be read as each other: a null `reported_client` means the client sent no " +
525
+ "`User-Agent` (the row knows, and the client said nothing); a null `served_by` means the row " +
526
+ "carries no build identity, so the platform cannot name which build answered it — the write " +
527
+ "path can land on that null in more than one way (for example a row retained from before the " +
528
+ "stamp existed, a build whose VERSION file is missing or unreadable, a column stored blank), " +
529
+ "so the null says only that no build is named, never which way it got there. " +
530
+ "A `latest_run` from days ago beside a live rejection stream is a " +
531
+ "suite SpecGuard STOPPED ACCEPTING, not a suite nobody ran. " +
521
532
  "`credential_health` covers the break that one structurally CANNOT see — a rejected key " +
522
533
  "resolves no repository and writes no rejection row, so an authentication-broken pipeline is " +
523
534
  "invisible to every rejection figure — by naming any key that was ROTATED and has not " +
@@ -1 +1 @@
1
- {"version":3,"file":"repository-overview.js","sourceRoot":"","sources":["../../../src/tools/repository-overview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repository-overview.js","sourceRoot":"","sources":["../../../src/tools/repository-overview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAidG;AACH,MAAM,qBAAqB,GAAmB;IAC5C,IAAI,EAAE,yBAAyB;IAE/B,KAAK,EAAE,mCAAmC;IAE1C,WAAW,EACT,2FAA2F;QAC3F,6FAA6F;QAC7F,yFAAyF;QACzF,+FAA+F;QAC/F,8FAA8F;QAC9F,gEAAgE;QAChE,gGAAgG;QAChG,wFAAwF;QACxF,6FAA6F;QAC7F,4BAA4B;QAC5B,gFAAgF;QAChF,yFAAyF;QACzF,4FAA4F;QAC5F,qFAAqF;QACrF,yFAAyF;QACzF,yDAAyD;QACzD,4FAA4F;QAC5F,6FAA6F;QAC7F,kCAAkC;QAClC,6FAA6F;QAC7F,0FAA0F;QAC1F,wFAAwF;QACxF,yFAAyF;QACzF,4FAA4F;QAC5F,4DAA4D;QAC5D,+FAA+F;QAC/F,2FAA2F;QAC3F,gGAAgG;QAChG,wEAAwE;QACxE,6FAA6F;QAC7F,gGAAgG;QAChG,4EAA4E;QAC5E,+FAA+F;QAC/F,6FAA6F;QAC7F,0FAA0F;QAC1F,oFAAoF;QACpF,iGAAiG;QACjG,8FAA8F;QAC9F,2FAA2F;QAC3F,qEAAqE;QACrE,2FAA2F;QAC3F,kFAAkF;QAClF,iGAAiG;QACjG,gGAAgG;QAChG,yFAAyF;QACzF,gGAAgG;QAChG,8FAA8F;QAC9F,kGAAkG;QAClG,gGAAgG;QAChG,yFAAyF;QACzF,gGAAgG;QAChG,gGAAgG;QAChG,wFAAwF;QACxF,8FAA8F;QAC9F,6FAA6F;QAC7F,8FAA8F;QAC9F,8FAA8F;QAC9F,8EAA8E;QAC9E,mEAAmE;QACnE,6DAA6D;QAC7D,yFAAyF;QACzF,8FAA8F;QAC9F,uFAAuF;QACvF,iEAAiE;QACjE,iGAAiG;QACjG,8FAA8F;QAC9F,eAAe;QACf,8FAA8F;QAC9F,8FAA8F;QAC9F,+FAA+F;QAC/F,4FAA4F;QAC5F,2FAA2F;QAC3F,0FAA0F;QAC1F,yFAAyF;QACzF,yBAAyB;QACzB,wFAAwF;QACxF,6FAA6F;QAC7F,sFAAsF;QACtF,8FAA8F;QAC9F,2FAA2F;QAC3F,4FAA4F;QAC5F,4FAA4F;QAC5F,0DAA0D;QAC1D,wFAAwF;QACxF,iFAAiF;QACjF,8FAA8F;QAC9F,yFAAyF;QACzF,6FAA6F;QAC7F,6FAA6F;QAC7F,qBAAqB;QACrB,mFAAmF;QACnF,+FAA+F;QAC/F,8FAA8F;QAC9F,4FAA4F;QAC5F,8FAA8F;QAC9F,8FAA8F;QAC9F,8FAA8F;QAC9F,yFAAyF;QACzF,+FAA+F;QAC/F,sDAAsD;QACtD,2FAA2F;QAC3F,oFAAoF;QACpF,4FAA4F;QAC5F,sEAAsE;QACtE,yFAAyF;QACzF,0FAA0F;QAC1F,yFAAyF;QACzF,oFAAoF;QACpF,yFAAyF;QACzF,gFAAgF;QAChF,yFAAyF;QACzF,0FAA0F;QAC1F,0FAA0F;QAC1F,4FAA4F;QAC5F,4FAA4F;QAC5F,4FAA4F;QAC5F,6FAA6F;QAC7F,yFAAyF;QACzF,wFAAwF;QACxF,uFAAuF;QACvF,wFAAwF;QACxF,4FAA4F;QAC5F,SAAS;QACT,6FAA6F;QAC7F,qFAAqF;QACrF,oFAAoF;QACpF,wFAAwF;QACxF,4FAA4F;IAE9F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,sFAAsF;oBACtF,+EAA+E;oBAC/E,qFAAqF;oBACrF,wFAAwF;oBACxF,uFAAuF;oBACvF,sBAAsB;oBACtB,wFAAwF;oBACxF,6EAA6E;oBAC7E,+EAA+E;oBAC/E,mFAAmF;oBACnF,iFAAiF;oBACjF,+EAA+E;oBAC/E,oFAAoF;oBACpF,8EAA8E;oBAC9E,iFAAiF;oBACjF,sCAAsC;oBACtC,sFAAsF;oBACtF,iFAAiF;oBACjF,qFAAqF;oBACrF,oFAAoF;oBACpF,uBAAuB;oBACvB,sDAAsD;oBACtD,8EAA8E;oBAC9E,+EAA+E;oBAC/E,oEAAoE;aACvE;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,mFAAmF;oBACnF,uFAAuF;oBACvF,sFAAsF;oBACtF,qFAAqF;oBACrF,iFAAiF;oBACjF,kFAAkF;oBAClF,oFAAoF;oBACpF,yFAAyF;oBACzF,2FAA2F;oBAC3F,0FAA0F;oBAC1F,yEAAyE;aAC5E;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wFAAwF;oBACxF,yFAAyF;oBACzF,iEAAiE;oBACjE,sFAAsF;oBACtF,oFAAoF;oBACpF,sFAAsF;oBACtF,yFAAyF;oBACzF,0FAA0F;oBAC1F,2FAA2F;oBAC3F,qFAAqF;oBACrF,uFAAuF;oBACvF,qFAAqF;oBACrF,oBAAoB;oBACpB,0FAA0F;oBAC1F,0FAA0F;oBAC1F,wFAAwF;oBACxF,0FAA0F;oBAC1F,uFAAuF;oBACvF,qDAAqD;oBACrD,uFAAuF;oBACvF,0FAA0F;oBAC1F,sFAAsF;oBACtF,mDAAmD;aACtD;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wFAAwF;oBACxF,oFAAoF;oBACpF,wDAAwD;oBACxD,uFAAuF;oBACvF,4EAA4E;oBAC5E,6EAA6E;oBAC7E,uFAAuF;oBACvF,sEAAsE;oBACtE,0FAA0F;oBAC1F,0FAA0F;oBAC1F,wCAAwC;oBACxC,uFAAuF;oBACvF,kFAAkF;oBAClF,uCAAuC;aAC1C;YACD,oBAAoB,EAAE;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,sFAAsF;oBACtF,wFAAwF;oBACxF,yDAAyD;oBACzD,mEAAmE;oBACnE,sFAAsF;oBACtF,oFAAoF;oBACpF,qFAAqF;oBACrF,uFAAuF;oBACvF,iFAAiF;oBACjF,oFAAoF;oBACpF,gFAAgF;oBAChF,yCAAyC;oBACzC,sFAAsF;oBACtF,kFAAkF;oBAClF,0CAA0C;aAC7C;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wFAAwF;oBACxF,mFAAmF;oBACnF,sEAAsE;oBACtE,qFAAqF;oBACrF,uFAAuF;oBACvF,oFAAoF;oBACpF,yEAAyE;oBACzE,wFAAwF;oBACxF,iFAAiF;oBACjF,+BAA+B;oBAC/B,qFAAqF;oBACrF,qFAAqF;oBACrF,sFAAsF;oBACtF,mFAAmF;oBACnF,4EAA4E;oBAC5E,sFAAsF;oBACtF,YAAY;oBACZ,wFAAwF;oBACxF,oFAAoF;oBACpF,qFAAqF;oBACrF,uFAAuF;oBACvF,qFAAqF;oBACrF,qFAAqF;oBACrF,sFAAsF;oBACtF,2DAA2D;oBAC3D,sFAAsF;oBACtF,oFAAoF;oBACpF,kFAAkF;oBAClF,+BAA+B;oBAC/B,oFAAoF;oBACpF,uFAAuF;oBACvF,oFAAoF;oBACpF,SAAS;aACZ;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wFAAwF;oBACxF,0FAA0F;oBAC1F,wFAAwF;oBACxF,8DAA8D;oBAC9D,qDAAqD;oBACrD,yDAAyD;oBACzD,sFAAsF;oBACtF,0EAA0E;oBAC1E,uFAAuF;oBACvF,0CAA0C;oBAC1C,mEAAmE;oBACnE,qFAAqF;oBACrF,+EAA+E;oBAC/E,mFAAmF;oBACnF,0FAA0F;oBAC1F,wFAAwF;oBACxF,yFAAyF;oBACzF,+BAA+B;oBAC/B,wFAAwF;oBACxF,yFAAyF;oBACzF,0FAA0F;oBAC1F,yFAAyF;oBACzF,yEAAyE;oBACzE,yFAAyF;oBACzF,yFAAyF;oBACzF,uFAAuF;oBACvF,sFAAsF;oBACtF,yFAAyF;oBACzF,wFAAwF;oBACxF,qFAAqF;oBACrF,uFAAuF;oBACvF,yFAAyF;oBACzF,sFAAsF;oBACtF,sFAAsF;oBACtF,yEAAyE;oBACzE,8EAA8E;oBAC9E,sFAAsF;oBACtF,uFAAuF;oBACvF,uFAAuF;oBACvF,SAAS;aACZ;YACD,oBAAoB,EAAE;gBACpB,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,iFAAiF;oBACjF,sFAAsF;oBACtF,0FAA0F;oBAC1F,iFAAiF;oBACjF,yFAAyF;oBACzF,yFAAyF;oBACzF,6FAA6F;oBAC7F,uFAAuF;oBACvF,+EAA+E;oBAC/E,yFAAyF;oBACzF,0FAA0F;oBAC1F,oDAAoD;oBACpD,kFAAkF;oBAClF,2FAA2F;oBAC3F,0FAA0F;oBAC1F,sFAAsF;oBACtF,iCAAiC;oBACjC,0FAA0F;oBAC1F,2FAA2F;oBAC3F,sFAAsF;oBACtF,0FAA0F;oBAC1F,0FAA0F;oBAC1F,wFAAwF;oBACxF,wFAAwF;oBACxF,kCAAkC;oBAClC,oFAAoF;oBACpF,uFAAuF;oBACvF,0FAA0F;oBAC1F,yFAAyF;oBACzF,gEAAgE;oBAChE,uFAAuF;oBACvF,2DAA2D;oBAC3D,uFAAuF;oBACvF,uFAAuF;oBACvF,uFAAuF;oBACvF,+EAA+E;oBAC/E,wFAAwF;oBACxF,+DAA+D;oBAC/D,kFAAkF;oBAClF,wFAAwF;oBACxF,qFAAqF;oBACrF,uCAAuC;oBACvC,yFAAyF;oBACzF,yFAAyF;oBACzF,yFAAyF;oBACzF,sFAAsF;oBACtF,6CAA6C;oBAC7C,uFAAuF;oBACvF,oFAAoF;oBACpF,2FAA2F;oBAC3F,mGAAmG;oBACnG,wFAAwF;oBACxF,wFAAwF;oBACxF,yFAAyF;oBACzF,qFAAqF;oBACrF,2FAA2F;oBAC3F,2FAA2F;oBAC3F,yGAAyG;oBACzG,qFAAqF;oBACrF,sFAAsF;oBACtF,uFAAuF;oBACvF,wEAAwE;oBACxE,+EAA+E;oBAC/E,cAAc;oBACd,wFAAwF;oBACxF,+DAA+D;oBAC/D,0DAA0D;oBAC1D,uFAAuF;oBACvF,qFAAqF;oBACrF,uFAAuF;oBACvF,uFAAuF;oBACvF,2DAA2D;oBAC3D,0FAA0F;oBAC1F,0FAA0F;oBAC1F,sFAAsF;oBACtF,oFAAoF;oBACpF,0FAA0F;oBAC1F,0FAA0F;oBAC1F,yBAAyB;oBACzB,qFAAqF;oBACrF,6DAA6D;oBAC7D,wFAAwF;oBACxF,qFAAqF;oBACrF,uFAAuF;oBACvF,wFAAwF;oBACxF,0FAA0F;oBAC1F,yFAAyF;oBACzF,mCAAmC;oBACnC,qFAAqF;oBACrF,uFAAuF;oBACvF,gFAAgF;aACnF;SACF;QACD,oBAAoB,EAAE,KAAK;KAC5B;IAED,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO;QACrB,4EAA4E;QAC5E,wEAAwE;QACxE,uDAAuD;QACvD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;QAChE,MAAM,mBAAmB,GAAG,cAAc,CACxC,IAAI,CAAC,sBAAsB,CAAC,EAC5B,sBAAsB,CACvB,CAAC;QACF,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC,CAAC;QAC5E,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;QACnE,2EAA2E;QAC3E,6EAA6E;QAC7E,6EAA6E;QAC7E,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,mBAAmB,GAAG,eAAe,CACzC,IAAI,CAAC,sBAAsB,CAAC,EAC5B,sBAAsB,CACvB,CAAC;QACF,yEAAyE;QACzE,oEAAoE;QACpE,sEAAsE;QACtE,uEAAuE;QACvE,wEAAwE;QACxE,gEAAgE;QAChE,qEAAqE;QACrE,sEAAsE;QACtE,sEAAsE;QACtE,mCAAmC;QACnC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,GAAG,EACH,IAAI,EACJ;YACE,MAAM;YACN,cAAc,EAAE,aAAa;YAC7B,SAAS,EAAE,QAAQ;YACnB,oBAAoB,EAAE,mBAAmB;YACzC,aAAa,EAAE,YAAY;YAC3B,UAAU,EAAE,SAAS;YACrB,oBAAoB,EAAE,mBAAmB,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACxE,EACD,OAAO,CAAC,KAAK,CACd,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC1B,UAAU,EAAE,QAAQ;SACrB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,eAAe,qBAAqB,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,SAAS,UAAU,CAAC,QAAiC;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { ToolDefinition } from "./types.js";
2
2
  /**
3
3
  * `DELETE /api/v1/repositories/:repository_id/api_keys/:id` as a tool —
4
- * shipped in the platform (`specguard/config/routes.rb:159`,
4
+ * shipped in the platform (`specguard/config/routes.rb`,
5
5
  * `user_repository_api_keys_controller#destroy`, SPGD-754).
6
6
  *
7
7
  * == Replacement-mint-then-revoke is the rotation model
@@ -2,7 +2,7 @@ import { deleteJson, requireUserOrAgentApiConfig } from "../support/specguard-ap
2
2
  import { requireString } from "./args.js";
3
3
  /**
4
4
  * `DELETE /api/v1/repositories/:repository_id/api_keys/:id` as a tool —
5
- * shipped in the platform (`specguard/config/routes.rb:159`,
5
+ * shipped in the platform (`specguard/config/routes.rb`,
6
6
  * `user_repository_api_keys_controller#destroy`, SPGD-754).
7
7
  *
8
8
  * == Replacement-mint-then-revoke is the rotation model
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specguard-mcp",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "description": "MCP server exposing SpecGuard suite intelligence to AI coding agents",
5
5
  "license": "ISC",
6
6
  "type": "module",