@ggui-ai/registry-core 0.6.3 → 0.8.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 (50) hide show
  1. package/dist/impls/memory-bundle-storage.d.ts.map +1 -1
  2. package/dist/impls/memory-bundle-storage.js +25 -22
  3. package/dist/impls/memory-registry-storage.d.ts.map +1 -1
  4. package/dist/impls/memory-registry-storage.js +47 -4
  5. package/dist/index.d.ts +8 -3
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +8 -2
  8. package/dist/install-command.d.ts +25 -0
  9. package/dist/install-command.d.ts.map +1 -0
  10. package/dist/install-command.js +15 -0
  11. package/dist/interfaces/bundle-storage.d.ts +55 -31
  12. package/dist/interfaces/bundle-storage.d.ts.map +1 -1
  13. package/dist/interfaces/registry-storage.d.ts +106 -1
  14. package/dist/interfaces/registry-storage.d.ts.map +1 -1
  15. package/dist/mcp-tool-filters.d.ts +23 -0
  16. package/dist/mcp-tool-filters.d.ts.map +1 -0
  17. package/dist/mcp-tool-filters.js +14 -0
  18. package/dist/ops/delete-author-key.d.ts +45 -0
  19. package/dist/ops/delete-author-key.d.ts.map +1 -0
  20. package/dist/ops/delete-author-key.js +31 -0
  21. package/dist/ops/list-author-keys.d.ts +34 -0
  22. package/dist/ops/list-author-keys.d.ts.map +1 -0
  23. package/dist/ops/list-author-keys.js +45 -0
  24. package/dist/ops/list-versions.d.ts +19 -10
  25. package/dist/ops/list-versions.d.ts.map +1 -1
  26. package/dist/ops/list-versions.js +43 -8
  27. package/dist/ops/private-read-authz.d.ts +88 -0
  28. package/dist/ops/private-read-authz.d.ts.map +1 -0
  29. package/dist/ops/private-read-authz.js +58 -0
  30. package/dist/ops/publish.d.ts +68 -1
  31. package/dist/ops/publish.d.ts.map +1 -1
  32. package/dist/ops/publish.js +292 -16
  33. package/dist/ops/read.d.ts +28 -6
  34. package/dist/ops/read.d.ts.map +1 -1
  35. package/dist/ops/read.js +47 -7
  36. package/dist/ops/register-author-key.d.ts +13 -0
  37. package/dist/ops/register-author-key.d.ts.map +1 -1
  38. package/dist/ops/register-author-key.js +42 -0
  39. package/dist/ops/search.d.ts +13 -1
  40. package/dist/ops/search.d.ts.map +1 -1
  41. package/dist/ops/search.js +54 -2
  42. package/dist/testing/bundle-storage-contract.d.ts.map +1 -1
  43. package/dist/testing/bundle-storage-contract.js +61 -27
  44. package/dist/testing/registry-storage-contract.d.ts +1 -1
  45. package/dist/testing/registry-storage-contract.d.ts.map +1 -1
  46. package/dist/testing/registry-storage-contract.js +351 -1
  47. package/dist/types.d.ts +257 -17
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/types.js +79 -14
  50. package/package.json +20 -5
package/dist/types.d.ts CHANGED
@@ -14,7 +14,7 @@
14
14
  * 'blueprint'` as the discriminator. The field name `artifactId`
15
15
  * matches what the field actually contains.
16
16
  */
17
- import type { ArtifactManifest } from '@ggui-ai/artifact-manifest';
17
+ import type { ArtifactManifest, McpToolBinding, McpToolBindingSource } from '@ggui-ai/artifact-manifest';
18
18
  import type { GadgetSignature } from '@ggui-ai/gadget-signing';
19
19
  import type { ConformanceFailureCode } from './ops/conformance.js';
20
20
  /**
@@ -54,6 +54,15 @@ export interface ArtifactsMetadataRow {
54
54
  readonly tags?: readonly string[];
55
55
  readonly visibility: Visibility;
56
56
  readonly hook?: string;
57
+ /**
58
+ * Denormalized MCP tool bindings of the latest version — stamped at
59
+ * publish from the manifest's declared `mcpTools`, or derived from a
60
+ * blueprint contract's tool names, so registry search can filter by
61
+ * tool without reading version rows.
62
+ */
63
+ readonly mcpTools?: ReadonlyArray<McpToolBinding>;
64
+ /** How the denormalized bindings were produced: declared on the manifest, or derived from the contract. */
65
+ readonly mcpToolsSource?: McpToolBindingSource;
57
66
  readonly authorName?: string;
58
67
  readonly publishedAt: string;
59
68
  readonly publishedBy: string;
@@ -183,12 +192,111 @@ export interface CompiledBlobRow {
183
192
  * Author signing-key row. One per `(subject, keyId)` pair. The key is
184
193
  * stored base64 — verification re-decodes + invokes
185
194
  * {@link verifyBundleEd25519}.
195
+ *
196
+ * `createdAt` + `label` ([E], 2026-08-10) are display enrichment for
197
+ * key-management surfaces (the list endpoint and whatever UI a
198
+ * deployment builds on it). Both are
199
+ * optional: rows written before the enrichment carry neither, and
200
+ * consumers MUST render the absence honestly (an em dash, not a
201
+ * fabricated date). `createdAt` is stamped by {@link registerAuthorKey}
202
+ * on first write; `label` is caller-supplied free text.
186
203
  */
187
204
  export interface AuthorKeyRow {
188
205
  readonly subject: string;
189
206
  readonly keyId: string;
190
207
  readonly publicKeyBase64: string;
208
+ /** ISO timestamp stamped by the register op on first write. */
209
+ readonly createdAt?: string;
210
+ /** Optional human-readable name (`ggui keys register --label …`). */
211
+ readonly label?: string;
191
212
  }
213
+ /**
214
+ * Verification state of a claimed scope.
215
+ *
216
+ * - `unverified` — the default: the scope was claimed by first
217
+ * publish and nobody has proven a matching domain/brand.
218
+ * - `verified` — a registry operator confirmed the owner controls
219
+ * the matching domain or brand (out-of-band check today; a
220
+ * self-serve DNS flow is a future enhancement).
221
+ */
222
+ export declare const SCOPE_VERIFICATIONS: readonly ["unverified", "verified"];
223
+ export type ScopeVerification = (typeof SCOPE_VERIFICATIONS)[number];
224
+ /**
225
+ * Scope-ownership row. One per claimed scope (`@acme`). Created by the
226
+ * FIRST authenticated publish into an unclaimed scope
227
+ * ({@link RegistryStorage.claimScope} — atomic first-writer-wins) and
228
+ * enforced on every subsequent publish: only `ownerSubject` may publish
229
+ * under `scope`.
230
+ *
231
+ * `ownerSubject` is the same subject namespace as
232
+ * {@link ArtifactVersionRow.publishedBy} — whatever the deployment's
233
+ * auth layer stamps into `AuthnContext.subject`.
234
+ *
235
+ * An `unverified` row is reclaimable by the registry operator in favor
236
+ * of a caller who proves ownership of the matching domain/brand; a
237
+ * `verified` row records that proof (`verifiedDomain`, `verifiedAt`).
238
+ */
239
+ export interface ScopeOwnerRow {
240
+ /** PK. The npm-style scope, including the leading `@` (e.g. `@acme`). */
241
+ readonly scope: string;
242
+ /** Subject that owns publishes under this scope. */
243
+ readonly ownerSubject: string;
244
+ /** ISO timestamp of the claim (first publish or operator seed/transfer). */
245
+ readonly claimedAt: string;
246
+ readonly verification: ScopeVerification;
247
+ /** Domain whose control was proven, present when `verification: 'verified'`. */
248
+ readonly verifiedDomain?: string;
249
+ /** ISO timestamp of the verification, present when `verification: 'verified'`. */
250
+ readonly verifiedAt?: string;
251
+ /**
252
+ * F4 identity binding — per-scope allowlist of sigstore certificate
253
+ * identities (the Fulcio cert's SubjectAlternativeName) permitted to
254
+ * publish under this scope. Entries are EXACT literal identity
255
+ * strings — an email (`release@acme.com`) or a CI workflow identity
256
+ * URI (`https://github.com/acme/app/.github/workflows/publish.yml@refs/heads/main`).
257
+ * Regex/glob patterns are deliberately NOT stored server-side: an
258
+ * allowlist is a finite set of named signers, and pattern semantics
259
+ * would make the authorization decision unauditable.
260
+ *
261
+ * Case rule: ONE rule for every identity comparison — the publish
262
+ * gate matches entries against certificate SANs CASE-INSENSITIVELY
263
+ * (mirroring the verified-email rule), and the operator tooling
264
+ * lowercase-normalizes entries at write time.
265
+ *
266
+ * Enforcement (publish gate, sigstore-signed publishes only): when
267
+ * present and non-empty, one of the bundle certificate's SANs MUST
268
+ * match one of these entries. When absent, the deployment's default
269
+ * identity rule applies — a SAN must equal the publishing account's
270
+ * verified email where the deployment provides a resolver;
271
+ * deployments without one enforce identity only through this
272
+ * allowlist.
273
+ *
274
+ * Fail-closed corruption handling: a storage adapter that finds a
275
+ * MALFORMED value in this column (anything but an array of strings)
276
+ * MUST project it as {@link SAN_ALLOWLIST_INVALID}, never as absent
277
+ * — projecting corrupt policy data as "no allowlist" would silently
278
+ * downgrade the scope to the weaker default rule. The publish gate
279
+ * rejects sigstore publishes into such a scope with a
280
+ * storage-inconsistency error until an operator rewrites the column
281
+ * (set or clear). Writers MUST only ever write string arrays.
282
+ *
283
+ * Managed by the registry operator (never by publish); a first-
284
+ * publish claim always lands without one, and an ownership transfer
285
+ * drops it (the previous owner's signer identities must not survive
286
+ * into the new owner's scope).
287
+ */
288
+ readonly sanAllowlist?: readonly string[] | SanAllowlistInvalid;
289
+ }
290
+ /**
291
+ * Fail-closed marker a storage adapter projects when the
292
+ * {@link ScopeOwnerRow.sanAllowlist} column holds malformed data (see
293
+ * that field's docstring). Chosen as a bare string precisely because a
294
+ * string is itself a malformed value for the column — the marker
295
+ * round-trips as invalid through every storage impl, so corruption can
296
+ * never launder itself back into a valid policy.
297
+ */
298
+ export declare const SAN_ALLOWLIST_INVALID: "invalid";
299
+ export type SanAllowlistInvalid = typeof SAN_ALLOWLIST_INVALID;
192
300
  /**
193
301
  * `GET /pkg/{scope}/{name}/{version}` body.
194
302
  *
@@ -215,6 +323,14 @@ export interface ReadPkgResponse {
215
323
  readonly authorPublicKey?: string;
216
324
  readonly publishedAt: string;
217
325
  readonly publishedBy: string;
326
+ /**
327
+ * Verification state of the package's scope. Present only when the
328
+ * scope-ownership row was read; ABSENT when the scope state is
329
+ * unknown — absence is not `'unverified'`.
330
+ */
331
+ readonly scopeVerification?: ScopeVerification;
332
+ /** Domain whose control was proven — present only when `scopeVerification: 'verified'`. */
333
+ readonly verifiedDomain?: string;
218
334
  }
219
335
  /**
220
336
  * One row of `GET /search?…` results — a lightweight per-artifactId
@@ -228,6 +344,19 @@ export interface SearchResultEntry {
228
344
  readonly description?: string;
229
345
  readonly tags?: readonly string[];
230
346
  readonly publishedAt: string;
347
+ /** MCP tool bindings of the latest version, when the artifact declares or derives any. */
348
+ readonly mcpTools?: ReadonlyArray<McpToolBinding>;
349
+ /** How the bindings were produced: declared on the manifest, or derived from a blueprint contract. */
350
+ readonly mcpToolsSource?: McpToolBindingSource;
351
+ /**
352
+ * Verification state of the artifact's scope. Present only when the
353
+ * scope-ownership row was read; ABSENT when the scope state is
354
+ * unknown (unclaimed scope or a failed lookup) — absence is not
355
+ * `'unverified'`.
356
+ */
357
+ readonly scopeVerification?: ScopeVerification;
358
+ /** Domain whose control was proven — present only when `scopeVerification: 'verified'`. */
359
+ readonly verifiedDomain?: string;
231
360
  }
232
361
  /**
233
362
  * `GET /search?…` body. `nextCursor` is opaque (impl-defined: a
@@ -239,8 +368,8 @@ export interface SearchResponse {
239
368
  readonly nextCursor?: string;
240
369
  }
241
370
  /**
242
- * `GET /search` sort options. Supports a registry-web "Recent" view
243
- * that needs `publishedAt`-DESC ordering.
371
+ * `GET /search` sort options. Supports registry browse UIs that need
372
+ * a "Recent" view with `publishedAt`-DESC ordering.
244
373
  *
245
374
  * - `recent` — order by {@link ArtifactsMetadataRow.publishedAt} DESC.
246
375
  *
@@ -331,7 +460,7 @@ export interface PublishResponseBody {
331
460
  * propagates to both the wire and the runtime membership check used
332
461
  * by downstream guards.
333
462
  */
334
- export declare const PUBLISH_ERROR_CODES: readonly ["unauthorized", "manifest_invalid", "bundle_required", "bundle_too_large", "conformance_failed", "bundle_hash_mismatch", "unknown_key", "signature_invalid", "version_exists", "internal"];
463
+ export declare const PUBLISH_ERROR_CODES: readonly ["unauthorized", "manifest_invalid", "bundle_required", "bundle_too_large", "conformance_failed", "bundle_hash_mismatch", "visibility_algorithm_mismatch", "scope_forbidden", "identity_mismatch", "unknown_key", "signature_invalid", "version_exists", "internal"];
335
464
  export type PublishErrorCode = (typeof PUBLISH_ERROR_CODES)[number];
336
465
  /**
337
466
  * Closed enum for `GET /pkg/:scope/:name[/version]` read responses.
@@ -339,16 +468,21 @@ export type PublishErrorCode = (typeof PUBLISH_ERROR_CODES)[number];
339
468
  * `yanked` is the 410-Gone path — the version exists in metadata but
340
469
  * the publisher revoked it. Clients SHOULD treat this as a hard
341
470
  * failure (don't fall back to a different version automatically).
471
+ *
472
+ * There is deliberately NO `forbidden` code: an unauthorized read of
473
+ * a private row answers with the SAME `not_found` shape as a true
474
+ * miss, so the wire never confirms a private artifact exists.
342
475
  */
343
- export declare const READ_ERROR_CODES: readonly ["not_found", "forbidden", "invalid_request", "yanked", "server_error"];
476
+ export declare const READ_ERROR_CODES: readonly ["not_found", "invalid_request", "yanked", "server_error"];
344
477
  export type ReadErrorCode = (typeof READ_ERROR_CODES)[number];
345
478
  /**
346
- * Closed enum for `GET /search` responses. Same posture as
347
- * {@link ReadErrorCode} minus the `yanked` path (search filters
348
- * yanked rows out of the result set; it never surfaces as a top-level
349
- * error).
479
+ * Closed enum for `GET /search` responses. Search serves only public
480
+ * metadata rows and takes no caller identity, so the surface has no
481
+ * authorization failure at all — just request validation and adapter
482
+ * faults. (`yanked` likewise never surfaces: search filters yanked
483
+ * rows out of the result set.)
350
484
  */
351
- export declare const SEARCH_ERROR_CODES: readonly ["forbidden", "invalid_request", "server_error"];
485
+ export declare const SEARCH_ERROR_CODES: readonly ["invalid_request", "server_error"];
352
486
  export type SearchErrorCode = (typeof SEARCH_ERROR_CODES)[number];
353
487
  /**
354
488
  * Closed enum for `POST /author-keys` register responses. An operator
@@ -377,16 +511,23 @@ export type RegisterAuthorKeyErrorCode = (typeof REGISTER_AUTHOR_KEY_ERROR_CODES
377
511
  */
378
512
  export interface RegisterAuthorKeyRequestBody {
379
513
  readonly publicKeyBase64: string;
514
+ /** Optional human-readable name for the key (`--label`). */
515
+ readonly label?: string;
380
516
  }
381
517
  /**
382
518
  * `POST /author-keys` 200/201 response. Echoes the stored row so the
383
519
  * CLI can confirm the (subject, keyId) tuple the registry now knows.
384
- * 201 on first-write; 200 on idempotent re-register of the same row.
520
+ * 201 on first-write; 200 on idempotent re-register of the same row —
521
+ * in which case `createdAt`/`label` are the EXISTING row's values (a
522
+ * retry never rewrites them), and both are absent for rows written
523
+ * before the display enrichment.
385
524
  */
386
525
  export interface RegisterAuthorKeyResponseBody {
387
526
  readonly subject: string;
388
527
  readonly keyId: string;
389
528
  readonly publicKeyBase64: string;
529
+ readonly createdAt?: string;
530
+ readonly label?: string;
390
531
  }
391
532
  /**
392
533
  * `POST /author-keys` error body — same shape as the read/search
@@ -397,6 +538,89 @@ export interface RegisterAuthorKeyErrorBody {
397
538
  readonly message: string;
398
539
  readonly detail?: unknown;
399
540
  }
541
+ /**
542
+ * Closed enum for `GET /author-keys` list responses.
543
+ *
544
+ * - `unauthorized` — missing or invalid caller credentials (the
545
+ * route requires a verified bearer identity;
546
+ * there is no anonymous view of "my keys").
547
+ * - `server_error` — unexpected adapter failure.
548
+ */
549
+ export declare const LIST_AUTHOR_KEYS_ERROR_CODES: readonly ["unauthorized", "server_error"];
550
+ export type ListAuthorKeysErrorCode = (typeof LIST_AUTHOR_KEYS_ERROR_CODES)[number];
551
+ /**
552
+ * One key in the `GET /author-keys` 200 response. The caller's subject
553
+ * is hoisted to the body root ({@link ListAuthorKeysResponseBody}) so
554
+ * entries carry only per-key fields. `createdAt` / `label` are absent
555
+ * on rows registered before the display enrichment — consumers render
556
+ * the absence honestly.
557
+ */
558
+ export interface AuthorKeyListEntry {
559
+ readonly keyId: string;
560
+ readonly publicKeyBase64: string;
561
+ readonly createdAt?: string;
562
+ readonly label?: string;
563
+ }
564
+ /**
565
+ * `GET /author-keys` 200 response — every signing key registered under
566
+ * the verified caller identity, newest first (`createdAt` DESC, rows
567
+ * without `createdAt` last, `keyId` tie-break).
568
+ */
569
+ export interface ListAuthorKeysResponseBody {
570
+ readonly subject: string;
571
+ readonly keys: readonly AuthorKeyListEntry[];
572
+ }
573
+ /**
574
+ * `GET /author-keys` error body. `error` narrowed to
575
+ * {@link ListAuthorKeysErrorCode}.
576
+ */
577
+ export interface ListAuthorKeysErrorBody {
578
+ readonly error: ListAuthorKeysErrorCode;
579
+ readonly message: string;
580
+ readonly detail?: unknown;
581
+ }
582
+ /**
583
+ * Closed enum for `DELETE /author-keys/{keyId}` responses.
584
+ *
585
+ * - `unauthorized` — missing or invalid caller credentials.
586
+ * - `invalid_request` — missing/empty `keyId` path segment.
587
+ * - `server_error` — unexpected adapter failure.
588
+ */
589
+ export declare const DELETE_AUTHOR_KEY_ERROR_CODES: readonly ["unauthorized", "invalid_request", "server_error"];
590
+ export type DeleteAuthorKeyErrorCode = (typeof DELETE_AUTHOR_KEY_ERROR_CODES)[number];
591
+ /**
592
+ * `DELETE /author-keys/{keyId}` 200 response. The delete is idempotent:
593
+ * `deleted: true` when a row existed and was removed, `deleted: false`
594
+ * when nothing existed under the caller's identity — including when the
595
+ * keyId belongs to a DIFFERENT subject, so key existence never leaks
596
+ * across accounts. Removal blocks FUTURE publishes signed with the key;
597
+ * versions already published stay valid (their signing key is pinned
598
+ * per version at publish time).
599
+ */
600
+ export interface DeleteAuthorKeyResponseBody {
601
+ readonly keyId: string;
602
+ readonly deleted: boolean;
603
+ }
604
+ /**
605
+ * `DELETE /author-keys/{keyId}` error body. `error` narrowed to
606
+ * {@link DeleteAuthorKeyErrorCode}.
607
+ */
608
+ export interface DeleteAuthorKeyErrorBody {
609
+ readonly error: DeleteAuthorKeyErrorCode;
610
+ readonly message: string;
611
+ readonly detail?: unknown;
612
+ }
613
+ /**
614
+ * THE 401 body for bearer-required registry routes — one constructor,
615
+ * exported beside the error-code enums, so every transport of this
616
+ * wire contract emits an identical unauthorized shape. Deliberately
617
+ * reason-agnostic: missing vs invalid credentials are distinguished in
618
+ * code paths and logs, never on the wire (less oracle surface).
619
+ */
620
+ export declare function unauthorizedErrorBody(): {
621
+ readonly error: 'unauthorized';
622
+ readonly message: string;
623
+ };
400
624
  /**
401
625
  * Publish-endpoint error body. `error` is narrowed to
402
626
  * {@link PublishErrorCode} so consumers get autocomplete +
@@ -454,6 +678,19 @@ export interface ArtifactScanFilter {
454
678
  readonly hook?: string;
455
679
  readonly tag?: string;
456
680
  readonly author?: string;
681
+ /**
682
+ * Exact MCP tool-name filter. Matches rows whose binding list has an
683
+ * entry with this tool name — with or without a server. Case-sensitive.
684
+ * Shared semantics: `matchesMcpToolFilters` in this package.
685
+ */
686
+ readonly tool?: string;
687
+ /**
688
+ * Exact MCP server-name filter. Matches rows whose binding list has an
689
+ * entry declaring this server; bare (server-less) entries never match.
690
+ * Combined with `tool`, requires a single entry carrying exactly that
691
+ * (server, tool) pair. Case-sensitive.
692
+ */
693
+ readonly server?: string;
457
694
  readonly limit?: number;
458
695
  readonly cursor?: string;
459
696
  /**
@@ -470,12 +707,15 @@ export interface ArtifactScanFilter {
470
707
  * Closed enum for `GET /pkg/{scope}/{name}` list-versions responses.
471
708
  *
472
709
  * - `invalid_request` — missing or malformed `artifactId`.
473
- * - `not_found` — no metadata row for `artifactId`. Distinct
474
- * from "metadata present but every version is
475
- * private + caller unauthed" (that path returns
476
- * 200 with `versions: []` — exposing 404 vs
477
- * empty would leak private-row existence).
478
- * - `server_error` — unexpected adapter failure.
710
+ * - `not_found` — no metadata row for `artifactId`, OR no
711
+ * version of it is visible to the caller.
712
+ * The two are DELIBERATELY indistinguishable:
713
+ * any difference between "does not exist" and
714
+ * "exists but you may not see it" is an
715
+ * existence oracle for private artifacts.
716
+ * - `server_error` — unexpected adapter failure. The message is
717
+ * generic by contract — raw storage error text
718
+ * never reaches the wire.
479
719
  */
480
720
  export declare const LIST_VERSIONS_ERROR_CODES: readonly ["invalid_request", "not_found", "server_error"];
481
721
  export type ListVersionsErrorCode = (typeof LIST_VERSIONS_ERROR_CODES)[number];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -8,8 +8,27 @@
8
8
  */
9
9
  export const ARTIFACTS_METADATA_SK = 'metadata#';
10
10
  /**
11
- * `GET /search` sort options. Supports a registry-web "Recent" view
12
- * that needs `publishedAt`-DESC ordering.
11
+ * Verification state of a claimed scope.
12
+ *
13
+ * - `unverified` — the default: the scope was claimed by first
14
+ * publish and nobody has proven a matching domain/brand.
15
+ * - `verified` — a registry operator confirmed the owner controls
16
+ * the matching domain or brand (out-of-band check today; a
17
+ * self-serve DNS flow is a future enhancement).
18
+ */
19
+ export const SCOPE_VERIFICATIONS = ['unverified', 'verified'];
20
+ /**
21
+ * Fail-closed marker a storage adapter projects when the
22
+ * {@link ScopeOwnerRow.sanAllowlist} column holds malformed data (see
23
+ * that field's docstring). Chosen as a bare string precisely because a
24
+ * string is itself a malformed value for the column — the marker
25
+ * round-trips as invalid through every storage impl, so corruption can
26
+ * never launder itself back into a valid policy.
27
+ */
28
+ export const SAN_ALLOWLIST_INVALID = 'invalid';
29
+ /**
30
+ * `GET /search` sort options. Supports registry browse UIs that need
31
+ * a "Recent" view with `publishedAt`-DESC ordering.
13
32
  *
14
33
  * - `recent` — order by {@link ArtifactsMetadataRow.publishedAt} DESC.
15
34
  *
@@ -40,6 +59,9 @@ export const PUBLISH_ERROR_CODES = [
40
59
  'bundle_too_large',
41
60
  'conformance_failed',
42
61
  'bundle_hash_mismatch',
62
+ 'visibility_algorithm_mismatch',
63
+ 'scope_forbidden',
64
+ 'identity_mismatch',
43
65
  'unknown_key',
44
66
  'signature_invalid',
45
67
  'version_exists',
@@ -51,22 +73,25 @@ export const PUBLISH_ERROR_CODES = [
51
73
  * `yanked` is the 410-Gone path — the version exists in metadata but
52
74
  * the publisher revoked it. Clients SHOULD treat this as a hard
53
75
  * failure (don't fall back to a different version automatically).
76
+ *
77
+ * There is deliberately NO `forbidden` code: an unauthorized read of
78
+ * a private row answers with the SAME `not_found` shape as a true
79
+ * miss, so the wire never confirms a private artifact exists.
54
80
  */
55
81
  export const READ_ERROR_CODES = [
56
82
  'not_found',
57
- 'forbidden',
58
83
  'invalid_request',
59
84
  'yanked',
60
85
  'server_error',
61
86
  ];
62
87
  /**
63
- * Closed enum for `GET /search` responses. Same posture as
64
- * {@link ReadErrorCode} minus the `yanked` path (search filters
65
- * yanked rows out of the result set; it never surfaces as a top-level
66
- * error).
88
+ * Closed enum for `GET /search` responses. Search serves only public
89
+ * metadata rows and takes no caller identity, so the surface has no
90
+ * authorization failure at all — just request validation and adapter
91
+ * faults. (`yanked` likewise never surfaces: search filters yanked
92
+ * rows out of the result set.)
67
93
  */
68
94
  export const SEARCH_ERROR_CODES = [
69
- 'forbidden',
70
95
  'invalid_request',
71
96
  'server_error',
72
97
  ];
@@ -90,16 +115,56 @@ export const REGISTER_AUTHOR_KEY_ERROR_CODES = [
90
115
  'key_conflict',
91
116
  'server_error',
92
117
  ];
118
+ /**
119
+ * Closed enum for `GET /author-keys` list responses.
120
+ *
121
+ * - `unauthorized` — missing or invalid caller credentials (the
122
+ * route requires a verified bearer identity;
123
+ * there is no anonymous view of "my keys").
124
+ * - `server_error` — unexpected adapter failure.
125
+ */
126
+ export const LIST_AUTHOR_KEYS_ERROR_CODES = [
127
+ 'unauthorized',
128
+ 'server_error',
129
+ ];
130
+ /**
131
+ * Closed enum for `DELETE /author-keys/{keyId}` responses.
132
+ *
133
+ * - `unauthorized` — missing or invalid caller credentials.
134
+ * - `invalid_request` — missing/empty `keyId` path segment.
135
+ * - `server_error` — unexpected adapter failure.
136
+ */
137
+ export const DELETE_AUTHOR_KEY_ERROR_CODES = [
138
+ 'unauthorized',
139
+ 'invalid_request',
140
+ 'server_error',
141
+ ];
142
+ /**
143
+ * THE 401 body for bearer-required registry routes — one constructor,
144
+ * exported beside the error-code enums, so every transport of this
145
+ * wire contract emits an identical unauthorized shape. Deliberately
146
+ * reason-agnostic: missing vs invalid credentials are distinguished in
147
+ * code paths and logs, never on the wire (less oracle surface).
148
+ */
149
+ export function unauthorizedErrorBody() {
150
+ return {
151
+ error: 'unauthorized',
152
+ message: 'a valid bearer credential is required in the Authorization header — missing or invalid token',
153
+ };
154
+ }
93
155
  /**
94
156
  * Closed enum for `GET /pkg/{scope}/{name}` list-versions responses.
95
157
  *
96
158
  * - `invalid_request` — missing or malformed `artifactId`.
97
- * - `not_found` — no metadata row for `artifactId`. Distinct
98
- * from "metadata present but every version is
99
- * private + caller unauthed" (that path returns
100
- * 200 with `versions: []` — exposing 404 vs
101
- * empty would leak private-row existence).
102
- * - `server_error` — unexpected adapter failure.
159
+ * - `not_found` — no metadata row for `artifactId`, OR no
160
+ * version of it is visible to the caller.
161
+ * The two are DELIBERATELY indistinguishable:
162
+ * any difference between "does not exist" and
163
+ * "exists but you may not see it" is an
164
+ * existence oracle for private artifacts.
165
+ * - `server_error` — unexpected adapter failure. The message is
166
+ * generic by contract — raw storage error text
167
+ * never reaches the wire.
103
168
  */
104
169
  export const LIST_VERSIONS_ERROR_CODES = [
105
170
  'invalid_request',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ggui-ai/registry-core",
3
- "version": "0.6.3",
3
+ "version": "0.8.0",
4
4
  "description": "Pure-TypeScript registry operations and storage interfaces for the ggui marketplace. No I/O, no HTTP — operations take typed inputs plus a storage deps bag and return discriminated-union results.",
5
5
  "keywords": [
6
6
  "ggui",
@@ -34,19 +34,29 @@
34
34
  "import": "./dist/types.js",
35
35
  "default": "./dist/types.js"
36
36
  },
37
+ "./install-command": {
38
+ "types": "./dist/install-command.d.ts",
39
+ "import": "./dist/install-command.js",
40
+ "default": "./dist/install-command.js"
41
+ },
37
42
  "./interfaces/registry-storage": {
38
43
  "types": "./dist/interfaces/registry-storage.d.ts",
39
44
  "import": "./dist/interfaces/registry-storage.js",
40
45
  "default": "./dist/interfaces/registry-storage.js"
46
+ },
47
+ "./ops/private-read-authz": {
48
+ "types": "./dist/ops/private-read-authz.d.ts",
49
+ "import": "./dist/ops/private-read-authz.js",
50
+ "default": "./dist/ops/private-read-authz.js"
41
51
  }
42
52
  },
43
53
  "dependencies": {
44
54
  "esbuild": "0.25.12",
45
55
  "oxc-parser": "^0.131.0",
46
56
  "zod": "^4.3.6",
47
- "@ggui-ai/artifact-manifest": "0.6.3",
48
- "@ggui-ai/protocol": "0.6.3",
49
- "@ggui-ai/gadget-signing": "0.6.3"
57
+ "@ggui-ai/artifact-manifest": "0.8.0",
58
+ "@ggui-ai/gadget-signing": "0.8.0",
59
+ "@ggui-ai/protocol": "0.8.0"
50
60
  },
51
61
  "peerDependenciesMeta": {
52
62
  "vitest": {
@@ -54,9 +64,14 @@
54
64
  }
55
65
  },
56
66
  "devDependencies": {
67
+ "@sigstore/mock": "~0.12.1",
68
+ "@sigstore/protobuf-specs": "^0.5.1",
69
+ "@tufjs/repo-mock": "4.0.1",
57
70
  "@types/node": "^24.0.0",
71
+ "nock": "^13.5.6",
58
72
  "typescript": "^5.0.0",
59
- "vitest": "^3.2.6"
73
+ "vitest": "^3.2.6",
74
+ "@ggui-ai/protocol-conformance": "0.8.0"
60
75
  },
61
76
  "repository": {
62
77
  "type": "git",