@agentxm/registry-protocol 0.31.1 → 0.33.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/README.md CHANGED
@@ -1,21 +1,70 @@
1
1
  # @agentxm/registry-protocol
2
2
 
3
- The AgentXM Registry wire contracts that the AXM client and the Registry
4
- implementation must interpret identically: extension index and version entry
5
- schemas (`./unstable/registry/schema`), discovery responses
3
+ The AXM client's typed representation of the public AgentXM Registry HTTP
4
+ contract: extension index and version entry schemas
5
+ (`./unstable/registry/schema`), discovery responses
6
6
  (`./unstable/registry/discover-schema`), publication-set preview and
7
7
  validation (`./unstable/registry/publication-set`), publish visibility
8
- (`./unstable/publish`), publish authorization
9
- (`./unstable/publish-authorization`), and the shared suggested-action and
8
+ (`./unstable/publish`), and the shared suggested-action and
10
9
  human-handoff error vocabulary (`./unstable/suggested-action`,
11
10
  `./unstable/human-handoff`).
12
11
 
12
+ ## Batch resolution metadata
13
+
14
+ `./unstable/registry/resolution-metadata` defines the versioned contract for a
15
+ repeat-safe `POST /v1/resolutions/metadata` query. The Registry owns the HTTP
16
+ route and authorization; AXM keeps version selection, release-age policy, and
17
+ dependency graph decisions. A request groups up to 100 items in one trusted
18
+ Registry and credential context. Each item has a unique caller key, extension
19
+ identity, and a `select` or `restore-exact` purpose. Exact restoration supplies
20
+ the accepted version and integrity. The caller may also supply an expected
21
+ publisher binding, a known representation revision, or a continuation bound to
22
+ the previous revision.
23
+
24
+ The response has exactly one outcome per submitted key in request order:
25
+
26
+ | Outcome | Meaning |
27
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
28
+ | `metadata` | An authorized page of version descriptors, dependency and package compatibility data, lifecycle information, and an opaque revision. A `null` continuation means the candidate list is complete. |
29
+ | `unchanged` | Current authorization and lifecycle still admit a matching complete representation already held by the client. A client without that representation repeats the item without `knownRevision`. |
30
+ | `unavailable` | The identity is absent or inaccessible; the response deliberately does not distinguish those cases. |
31
+ | `binding-conflict` | An authorized identity no longer has the expected publisher binding. |
32
+ | `exact-conflict` | An authorized exact version or integrity no longer matches the accepted identity. |
33
+ | `restart-required` | A continued page crossed a representation revision; discard the earlier pages and restart. |
34
+
35
+ A metadata page contains at most 100 versions. Clients must follow every
36
+ continuation and check the revision and result keys before selecting a version;
37
+ truncated pages are never complete selection input. Continuation tokens are
38
+ opaque and must be bound by the Registry to the request identity, credential
39
+ context, and revision. A changed binding, hold, visibility, yank, archival or
40
+ deprecation fact must invalidate an `unchanged` result. Backend failures are
41
+ envelope errors, never invented per-item absence. The query is private and
42
+ non-cacheable across commands; its POST method does not make publish mutations
43
+ retryable.
44
+
45
+ The schema exports the item, version-page, request-body, and response-body
46
+ limits. A server checks encoded body size before decoding and returns the
47
+ declared `request-too-large` error when exceeded. Request keys correlate results
48
+ only; they confer no identity or access.
49
+
50
+ The exported `./unstable/registry/resolution-metadata.vectors.json` records
51
+ selection examples for ordinary and exact yanks, release age, direct and pack
52
+ constraints, package compatibility, and publisher-binding changes. Producer and
53
+ consumer tests can use the same cases without moving selection to the server.
54
+
55
+ The byte-vendorable
56
+ `./unstable/registry/publication-set.vectors.json` export pins digest
57
+ conformance examples for independent implementations of the public protocol.
58
+ Its metadata describes the canonicalization and optional-field rules; changing
59
+ the digest algorithm requires a new contract identifier and vector format
60
+ rather than editing the meaning of existing vectors.
61
+
13
62
  Content parsing, Knowledge inspection, the lint catalog, and archive and
14
63
  manifest validation live in `@agentxm/extension-content`; version selection
15
- and release-age policy live in `@agentxm/extension-resolution`.
64
+ and release-age policy live in `@agentxm/workspace/resolution`.
16
65
 
17
- Every export lives under an explicit `./unstable/*` subpath: the surface is
18
- unsupported and may change in any release. Ordinary users should use the
19
- [`axm` CLI](https://axm.sh) instead.
66
+ This package is bundled into `axm.sh`; it is not an independently published
67
+ API. Its `./unstable/*` subpaths are workspace-internal boundaries. Ordinary
68
+ users should use the [`axm` CLI](https://axm.sh) instead.
20
69
 
21
70
  FSL-1.1-MIT © 2025-2026 AgentXM, Inc.
@@ -2,7 +2,7 @@ import * as Schema from "effect/Schema";
2
2
  /** Public references describe pending work; they never convey exchange authority. */
3
3
  export declare const HumanHandoffActionSchema: Schema.Struct<{
4
4
  readonly kind: Schema.Literal<"open-url">;
5
- readonly purpose: Schema.Literals<readonly ["login", "step-up", "publish"]>;
5
+ readonly purpose: Schema.Literals<readonly ["login", "step-up"]>;
6
6
  readonly requestRef: Schema.String;
7
7
  readonly registryUrl: Schema.String;
8
8
  readonly url: Schema.String;
@@ -2,7 +2,7 @@ import * as Schema from "effect/Schema";
2
2
  /** Public references describe pending work; they never convey exchange authority. */
3
3
  export const HumanHandoffActionSchema = Schema.Struct({
4
4
  kind: Schema.Literal("open-url"),
5
- purpose: Schema.Literals(["login", "step-up", "publish"]),
5
+ purpose: Schema.Literals(["login", "step-up"]),
6
6
  requestRef: Schema.String,
7
7
  registryUrl: Schema.String,
8
8
  url: Schema.String,
@@ -4,44 +4,289 @@
4
4
  * @experimental This API is unstable and may change without notice.
5
5
  */
6
6
  import * as Schema from "effect/Schema";
7
- export declare const DiscoveryResolvedExtensionSchema: Schema.Struct<{
7
+ /** A normalized recommendation submitted for package-side attestation. */
8
+ export declare const DiscoveryDeclaredExtensionSchema: Schema.Union<readonly [Schema.Struct<{
9
+ readonly ref: Schema.String;
10
+ readonly source: Schema.Struct<{
11
+ readonly type: Schema.Literal<"registry">;
12
+ readonly url: Schema.URLFromString;
13
+ }>;
14
+ readonly versionRange: Schema.optionalKey<Schema.brand<Schema.NonEmptyString, "VersionRange">>;
15
+ }>, Schema.Struct<{
16
+ readonly ref: Schema.String;
17
+ readonly source: Schema.Struct<{
18
+ readonly type: Schema.Literal<"git">;
19
+ readonly url: Schema.URLFromString;
20
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
21
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
22
+ }>;
23
+ }>, Schema.Struct<{
24
+ readonly ref: Schema.String;
25
+ readonly source: Schema.Struct<{
26
+ readonly type: Schema.Literal<"path">;
27
+ readonly path: Schema.NonEmptyString;
28
+ }>;
29
+ }>]>;
30
+ export type DiscoveryDeclaredExtension = Schema.Schema.Type<typeof DiscoveryDeclaredExtensionSchema>;
31
+ export declare const DiscoverPackageInputSchema: Schema.Struct<{
32
+ readonly purl: Schema.String;
33
+ readonly version: Schema.String;
34
+ readonly declaredExtensions: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
35
+ readonly ref: Schema.String;
36
+ readonly source: Schema.Struct<{
37
+ readonly type: Schema.Literal<"registry">;
38
+ readonly url: Schema.URLFromString;
39
+ }>;
40
+ readonly versionRange: Schema.optionalKey<Schema.brand<Schema.NonEmptyString, "VersionRange">>;
41
+ }>, Schema.Struct<{
42
+ readonly ref: Schema.String;
43
+ readonly source: Schema.Struct<{
44
+ readonly type: Schema.Literal<"git">;
45
+ readonly url: Schema.URLFromString;
46
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
47
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
48
+ }>;
49
+ }>, Schema.Struct<{
50
+ readonly ref: Schema.String;
51
+ readonly source: Schema.Struct<{
52
+ readonly type: Schema.Literal<"path">;
53
+ readonly path: Schema.NonEmptyString;
54
+ }>;
55
+ }>]>>;
56
+ }>;
57
+ export type DiscoverPackageInput = Schema.Schema.Type<typeof DiscoverPackageInputSchema>;
58
+ export declare const DiscoverPackagesRequestSchema: Schema.Struct<{
59
+ readonly client: Schema.Struct<{
60
+ readonly axmVersion: Schema.String;
61
+ }>;
62
+ readonly packages: Schema.$Array<Schema.Struct<{
63
+ readonly purl: Schema.String;
64
+ readonly version: Schema.String;
65
+ readonly declaredExtensions: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
66
+ readonly ref: Schema.String;
67
+ readonly source: Schema.Struct<{
68
+ readonly type: Schema.Literal<"registry">;
69
+ readonly url: Schema.URLFromString;
70
+ }>;
71
+ readonly versionRange: Schema.optionalKey<Schema.brand<Schema.NonEmptyString, "VersionRange">>;
72
+ }>, Schema.Struct<{
73
+ readonly ref: Schema.String;
74
+ readonly source: Schema.Struct<{
75
+ readonly type: Schema.Literal<"git">;
76
+ readonly url: Schema.URLFromString;
77
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
78
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
79
+ }>;
80
+ }>, Schema.Struct<{
81
+ readonly ref: Schema.String;
82
+ readonly source: Schema.Struct<{
83
+ readonly type: Schema.Literal<"path">;
84
+ readonly path: Schema.NonEmptyString;
85
+ }>;
86
+ }>]>>;
87
+ }>>;
88
+ }>;
89
+ export type DiscoverPackagesRequest = Schema.Schema.Type<typeof DiscoverPackagesRequestSchema>;
90
+ export declare const DiscoveryRegistryResolutionSchema: Schema.Struct<{
91
+ readonly type: Schema.Literal<"registry">;
92
+ readonly version: Schema.brand<Schema.String, "Version">;
93
+ }>;
94
+ export declare const DiscoveryGitResolutionSchema: Schema.Struct<{
95
+ readonly type: Schema.Literal<"git">;
96
+ readonly url: Schema.URLFromString;
97
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
98
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
99
+ }>;
100
+ export declare const DiscoveryPathResolutionSchema: Schema.Struct<{
101
+ readonly type: Schema.Literal<"path">;
102
+ readonly path: Schema.NonEmptyString;
103
+ }>;
104
+ export declare const DiscoveryRegistryResolvedExtensionSchema: Schema.Struct<{
105
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
106
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
107
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
108
+ readonly resolution: Schema.Struct<{
109
+ readonly type: Schema.Literal<"registry">;
110
+ readonly version: Schema.brand<Schema.String, "Version">;
111
+ }>;
112
+ }>;
113
+ export declare const DiscoveryGitResolvedExtensionSchema: Schema.Struct<{
8
114
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
9
- readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "packs" | "skills" | "mcps" | "subagents" | "rules" | "hooks")[]>;
115
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
10
116
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
11
- readonly installVersion: Schema.brand<Schema.String, "Version">;
117
+ readonly resolution: Schema.Struct<{
118
+ readonly type: Schema.Literal<"git">;
119
+ readonly url: Schema.URLFromString;
120
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
121
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
122
+ }>;
12
123
  }>;
124
+ export declare const DiscoveryPathResolvedExtensionSchema: Schema.Struct<{
125
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
126
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
127
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
128
+ readonly resolution: Schema.Struct<{
129
+ readonly type: Schema.Literal<"path">;
130
+ readonly path: Schema.NonEmptyString;
131
+ }>;
132
+ }>;
133
+ export declare const DiscoveryResolvedExtensionSchema: Schema.Union<readonly [Schema.Struct<{
134
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
135
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
136
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
137
+ readonly resolution: Schema.Struct<{
138
+ readonly type: Schema.Literal<"registry">;
139
+ readonly version: Schema.brand<Schema.String, "Version">;
140
+ }>;
141
+ }>, Schema.Struct<{
142
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
143
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
144
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
145
+ readonly resolution: Schema.Struct<{
146
+ readonly type: Schema.Literal<"git">;
147
+ readonly url: Schema.URLFromString;
148
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
149
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
150
+ }>;
151
+ }>, Schema.Struct<{
152
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
153
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
154
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
155
+ readonly resolution: Schema.Struct<{
156
+ readonly type: Schema.Literal<"path">;
157
+ readonly path: Schema.NonEmptyString;
158
+ }>;
159
+ }>]>;
13
160
  export type DiscoveryResolvedExtension = Schema.Schema.Type<typeof DiscoveryResolvedExtensionSchema>;
14
- export declare const DiscoveryExtensionResultSchema: Schema.Struct<{
161
+ export declare const DiscoveryExtensionResultSchema: Schema.Union<readonly [Schema.Struct<{
162
+ readonly source: Schema.Struct<{
163
+ readonly type: Schema.Literal<"registry">;
164
+ readonly url: Schema.URLFromString;
165
+ }>;
166
+ readonly extension: Schema.optional<Schema.Struct<{
167
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
168
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
169
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
170
+ readonly resolution: Schema.Struct<{
171
+ readonly type: Schema.Literal<"registry">;
172
+ readonly version: Schema.brand<Schema.String, "Version">;
173
+ }>;
174
+ }>>;
175
+ readonly official: Schema.Boolean;
15
176
  readonly ref: Schema.String;
16
177
  readonly resolved: Schema.Boolean;
178
+ readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
179
+ readonly packageVersionInRange: Schema.Boolean;
180
+ }>, Schema.Struct<{
181
+ readonly source: Schema.Struct<{
182
+ readonly type: Schema.Literal<"git">;
183
+ readonly url: Schema.URLFromString;
184
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
185
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
186
+ }>;
17
187
  readonly extension: Schema.optional<Schema.Struct<{
18
188
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
19
- readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "packs" | "skills" | "mcps" | "subagents" | "rules" | "hooks")[]>;
189
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
20
190
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
21
- readonly installVersion: Schema.brand<Schema.String, "Version">;
191
+ readonly resolution: Schema.Struct<{
192
+ readonly type: Schema.Literal<"git">;
193
+ readonly url: Schema.URLFromString;
194
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
195
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
196
+ }>;
22
197
  }>>;
198
+ readonly official: Schema.Literal<false>;
199
+ readonly ref: Schema.String;
200
+ readonly resolved: Schema.Boolean;
23
201
  readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
24
- readonly official: Schema.Boolean;
25
202
  readonly packageVersionInRange: Schema.Boolean;
26
- }>;
203
+ }>, Schema.Struct<{
204
+ readonly source: Schema.Struct<{
205
+ readonly type: Schema.Literal<"path">;
206
+ readonly path: Schema.NonEmptyString;
207
+ }>;
208
+ readonly extension: Schema.optional<Schema.Struct<{
209
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
210
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
211
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
212
+ readonly resolution: Schema.Struct<{
213
+ readonly type: Schema.Literal<"path">;
214
+ readonly path: Schema.NonEmptyString;
215
+ }>;
216
+ }>>;
217
+ readonly official: Schema.Literal<false>;
218
+ readonly ref: Schema.String;
219
+ readonly resolved: Schema.Boolean;
220
+ readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
221
+ readonly packageVersionInRange: Schema.Boolean;
222
+ }>]>;
27
223
  export type DiscoveryExtensionResult = Schema.Schema.Type<typeof DiscoveryExtensionResultSchema>;
28
224
  export declare const DiscoveryPackageResultSchema: Schema.Struct<{
29
225
  readonly purl: Schema.String;
30
226
  readonly version: Schema.String;
31
227
  readonly status: Schema.Literals<readonly ["resolved", "invalid_purl"]>;
32
- readonly extensions: Schema.$Array<Schema.Struct<{
228
+ readonly extensions: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
229
+ readonly source: Schema.Struct<{
230
+ readonly type: Schema.Literal<"registry">;
231
+ readonly url: Schema.URLFromString;
232
+ }>;
233
+ readonly extension: Schema.optional<Schema.Struct<{
234
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
235
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
236
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
237
+ readonly resolution: Schema.Struct<{
238
+ readonly type: Schema.Literal<"registry">;
239
+ readonly version: Schema.brand<Schema.String, "Version">;
240
+ }>;
241
+ }>>;
242
+ readonly official: Schema.Boolean;
33
243
  readonly ref: Schema.String;
34
244
  readonly resolved: Schema.Boolean;
245
+ readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
246
+ readonly packageVersionInRange: Schema.Boolean;
247
+ }>, Schema.Struct<{
248
+ readonly source: Schema.Struct<{
249
+ readonly type: Schema.Literal<"git">;
250
+ readonly url: Schema.URLFromString;
251
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
252
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
253
+ }>;
35
254
  readonly extension: Schema.optional<Schema.Struct<{
36
255
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
37
- readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "packs" | "skills" | "mcps" | "subagents" | "rules" | "hooks")[]>;
256
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
38
257
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
39
- readonly installVersion: Schema.brand<Schema.String, "Version">;
258
+ readonly resolution: Schema.Struct<{
259
+ readonly type: Schema.Literal<"git">;
260
+ readonly url: Schema.URLFromString;
261
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
262
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
263
+ }>;
40
264
  }>>;
265
+ readonly official: Schema.Literal<false>;
266
+ readonly ref: Schema.String;
267
+ readonly resolved: Schema.Boolean;
41
268
  readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
42
- readonly official: Schema.Boolean;
43
269
  readonly packageVersionInRange: Schema.Boolean;
44
- }>>;
270
+ }>, Schema.Struct<{
271
+ readonly source: Schema.Struct<{
272
+ readonly type: Schema.Literal<"path">;
273
+ readonly path: Schema.NonEmptyString;
274
+ }>;
275
+ readonly extension: Schema.optional<Schema.Struct<{
276
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
277
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
278
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
279
+ readonly resolution: Schema.Struct<{
280
+ readonly type: Schema.Literal<"path">;
281
+ readonly path: Schema.NonEmptyString;
282
+ }>;
283
+ }>>;
284
+ readonly official: Schema.Literal<false>;
285
+ readonly ref: Schema.String;
286
+ readonly resolved: Schema.Boolean;
287
+ readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
288
+ readonly packageVersionInRange: Schema.Boolean;
289
+ }>]>>;
45
290
  }>;
46
291
  export type DiscoveryPackageResult = Schema.Schema.Type<typeof DiscoveryPackageResultSchema>;
47
292
  export declare const DiscoverPackagesResponseSchema: Schema.Struct<{
@@ -49,19 +294,68 @@ export declare const DiscoverPackagesResponseSchema: Schema.Struct<{
49
294
  readonly purl: Schema.String;
50
295
  readonly version: Schema.String;
51
296
  readonly status: Schema.Literals<readonly ["resolved", "invalid_purl"]>;
52
- readonly extensions: Schema.$Array<Schema.Struct<{
297
+ readonly extensions: Schema.$Array<Schema.Union<readonly [Schema.Struct<{
298
+ readonly source: Schema.Struct<{
299
+ readonly type: Schema.Literal<"registry">;
300
+ readonly url: Schema.URLFromString;
301
+ }>;
302
+ readonly extension: Schema.optional<Schema.Struct<{
303
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
304
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
305
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
306
+ readonly resolution: Schema.Struct<{
307
+ readonly type: Schema.Literal<"registry">;
308
+ readonly version: Schema.brand<Schema.String, "Version">;
309
+ }>;
310
+ }>>;
311
+ readonly official: Schema.Boolean;
312
+ readonly ref: Schema.String;
313
+ readonly resolved: Schema.Boolean;
314
+ readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
315
+ readonly packageVersionInRange: Schema.Boolean;
316
+ }>, Schema.Struct<{
317
+ readonly source: Schema.Struct<{
318
+ readonly type: Schema.Literal<"git">;
319
+ readonly url: Schema.URLFromString;
320
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
321
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
322
+ }>;
323
+ readonly extension: Schema.optional<Schema.Struct<{
324
+ readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
325
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
326
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
327
+ readonly resolution: Schema.Struct<{
328
+ readonly type: Schema.Literal<"git">;
329
+ readonly url: Schema.URLFromString;
330
+ readonly path: Schema.optionalKey<Schema.NonEmptyString>;
331
+ readonly revision: Schema.optionalKey<Schema.NonEmptyString>;
332
+ }>;
333
+ }>>;
334
+ readonly official: Schema.Literal<false>;
53
335
  readonly ref: Schema.String;
54
336
  readonly resolved: Schema.Boolean;
337
+ readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
338
+ readonly packageVersionInRange: Schema.Boolean;
339
+ }>, Schema.Struct<{
340
+ readonly source: Schema.Struct<{
341
+ readonly type: Schema.Literal<"path">;
342
+ readonly path: Schema.NonEmptyString;
343
+ }>;
55
344
  readonly extension: Schema.optional<Schema.Struct<{
56
345
  readonly owner: Schema.Union<readonly [Schema.brand<Schema.String, "Handle">, Schema.brand<Schema.String, "Slug">]>;
57
- readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "packs" | "skills" | "mcps" | "subagents" | "rules" | "hooks")[]>;
346
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack" | "skills" | "mcps" | "subagents" | "rules" | "hooks" | "packs")[]>;
58
347
  readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
59
- readonly installVersion: Schema.brand<Schema.String, "Version">;
348
+ readonly resolution: Schema.Struct<{
349
+ readonly type: Schema.Literal<"path">;
350
+ readonly path: Schema.NonEmptyString;
351
+ }>;
60
352
  }>>;
353
+ readonly official: Schema.Literal<false>;
354
+ readonly ref: Schema.String;
355
+ readonly resolved: Schema.Boolean;
61
356
  readonly attestedBy: Schema.$Array<Schema.Literals<readonly ["package", "extension"]>>;
62
- readonly official: Schema.Boolean;
63
357
  readonly packageVersionInRange: Schema.Boolean;
64
- }>>;
358
+ }>]>>;
65
359
  }>>;
66
360
  }>;
67
361
  export type DiscoverPackagesResponse = Schema.Schema.Type<typeof DiscoverPackagesResponseSchema>;
@@ -4,25 +4,89 @@
4
4
  * @experimental This API is unstable and may change without notice.
5
5
  */
6
6
  import * as Schema from "effect/Schema";
7
- import { ExtensionNameSchema, extensionTypePluralSegments, extensionTypes, } from "@agentxm/extension-model/unstable/extensions/common";
7
+ import { ExtensionFqnSchema, ExtensionNameSchema, extensionTypePluralSegments, extensionTypes, } from "@agentxm/extension-model/unstable/extensions/common";
8
8
  import { HandleSchema, SlugSchema } from "@agentxm/extension-model/unstable/extensions/handle";
9
- import { VersionSchema } from "@agentxm/extension-model/unstable/version-constraints";
9
+ import { AgentExtensionGitSourceSchema, AgentExtensionPathSourceSchema, AgentExtensionRegistrySourceSchema, } from "@agentxm/extension-model/unstable/recommendations/agent-extensions";
10
+ import { VersionRangeSchema, VersionSchema, } from "@agentxm/extension-model/unstable/version-constraints";
10
11
  const discoveryExtensionWireTypes = [...extensionTypes, ...extensionTypePluralSegments];
11
12
  const DiscoveryExtensionWireTypeSchema = Schema.Literals(discoveryExtensionWireTypes);
12
- export const DiscoveryResolvedExtensionSchema = Schema.Struct({
13
+ const DiscoveryRegistryDeclarationSchema = Schema.Struct({
14
+ ref: ExtensionFqnSchema,
15
+ source: AgentExtensionRegistrySourceSchema,
16
+ versionRange: Schema.optionalKey(VersionRangeSchema),
17
+ });
18
+ const DiscoveryGitDeclarationSchema = Schema.Struct({
19
+ ref: ExtensionFqnSchema,
20
+ source: AgentExtensionGitSourceSchema,
21
+ });
22
+ const DiscoveryPathDeclarationSchema = Schema.Struct({
23
+ ref: ExtensionFqnSchema,
24
+ source: AgentExtensionPathSourceSchema,
25
+ });
26
+ /** A normalized recommendation submitted for package-side attestation. */
27
+ export const DiscoveryDeclaredExtensionSchema = Schema.Union([
28
+ DiscoveryRegistryDeclarationSchema,
29
+ DiscoveryGitDeclarationSchema,
30
+ DiscoveryPathDeclarationSchema,
31
+ ]);
32
+ export const DiscoverPackageInputSchema = Schema.Struct({
33
+ purl: Schema.String,
34
+ version: Schema.String,
35
+ declaredExtensions: Schema.Array(DiscoveryDeclaredExtensionSchema),
36
+ });
37
+ export const DiscoverPackagesRequestSchema = Schema.Struct({
38
+ client: Schema.Struct({ axmVersion: Schema.String }),
39
+ packages: Schema.Array(DiscoverPackageInputSchema),
40
+ });
41
+ export const DiscoveryRegistryResolutionSchema = Schema.Struct({
42
+ type: Schema.Literal("registry"),
43
+ version: VersionSchema,
44
+ });
45
+ export const DiscoveryGitResolutionSchema = AgentExtensionGitSourceSchema;
46
+ export const DiscoveryPathResolutionSchema = AgentExtensionPathSourceSchema;
47
+ const makeResolvedExtensionSchema = (resolution) => Schema.Struct({
13
48
  owner: Schema.Union([HandleSchema, SlugSchema]),
14
49
  type: DiscoveryExtensionWireTypeSchema,
15
50
  name: ExtensionNameSchema,
16
- installVersion: VersionSchema,
51
+ resolution,
17
52
  });
18
- export const DiscoveryExtensionResultSchema = Schema.Struct({
53
+ export const DiscoveryRegistryResolvedExtensionSchema = makeResolvedExtensionSchema(DiscoveryRegistryResolutionSchema);
54
+ export const DiscoveryGitResolvedExtensionSchema = makeResolvedExtensionSchema(DiscoveryGitResolutionSchema);
55
+ export const DiscoveryPathResolvedExtensionSchema = makeResolvedExtensionSchema(DiscoveryPathResolutionSchema);
56
+ export const DiscoveryResolvedExtensionSchema = Schema.Union([
57
+ DiscoveryRegistryResolvedExtensionSchema,
58
+ DiscoveryGitResolvedExtensionSchema,
59
+ DiscoveryPathResolvedExtensionSchema,
60
+ ]);
61
+ const discoveryResultFields = {
19
62
  ref: Schema.String,
20
63
  resolved: Schema.Boolean,
21
- extension: Schema.optional(DiscoveryResolvedExtensionSchema),
22
64
  attestedBy: Schema.Array(Schema.Literals(["package", "extension"])),
23
- official: Schema.Boolean,
24
65
  packageVersionInRange: Schema.Boolean,
66
+ };
67
+ const DiscoveryRegistryExtensionResultSchema = Schema.Struct({
68
+ ...discoveryResultFields,
69
+ source: AgentExtensionRegistrySourceSchema,
70
+ extension: Schema.optional(DiscoveryRegistryResolvedExtensionSchema),
71
+ official: Schema.Boolean,
72
+ });
73
+ const DiscoveryGitExtensionResultSchema = Schema.Struct({
74
+ ...discoveryResultFields,
75
+ source: AgentExtensionGitSourceSchema,
76
+ extension: Schema.optional(DiscoveryGitResolvedExtensionSchema),
77
+ official: Schema.Literal(false),
78
+ });
79
+ const DiscoveryPathExtensionResultSchema = Schema.Struct({
80
+ ...discoveryResultFields,
81
+ source: AgentExtensionPathSourceSchema,
82
+ extension: Schema.optional(DiscoveryPathResolvedExtensionSchema),
83
+ official: Schema.Literal(false),
25
84
  });
85
+ export const DiscoveryExtensionResultSchema = Schema.Union([
86
+ DiscoveryRegistryExtensionResultSchema,
87
+ DiscoveryGitExtensionResultSchema,
88
+ DiscoveryPathExtensionResultSchema,
89
+ ]);
26
90
  export const DiscoveryPackageResultSchema = Schema.Struct({
27
91
  purl: Schema.String,
28
92
  version: Schema.String,
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * @experimental This API is unstable and may change without notice.
5
5
  */
6
- export { type DiscoverPackagesResponse, DiscoverPackagesResponseSchema, type DiscoveryExtensionResult, DiscoveryExtensionResultSchema, type DiscoveryPackageResult, DiscoveryPackageResultSchema, type DiscoveryResolvedExtension, DiscoveryResolvedExtensionSchema, } from "./discover-schema.js";
6
+ export { type DiscoverPackageInput, DiscoverPackageInputSchema, type DiscoverPackagesRequest, DiscoverPackagesRequestSchema, type DiscoverPackagesResponse, DiscoverPackagesResponseSchema, type DiscoveryDeclaredExtension, DiscoveryDeclaredExtensionSchema, type DiscoveryExtensionResult, DiscoveryExtensionResultSchema, DiscoveryGitResolutionSchema, DiscoveryGitResolvedExtensionSchema, type DiscoveryPackageResult, DiscoveryPackageResultSchema, DiscoveryPathResolutionSchema, DiscoveryPathResolvedExtensionSchema, DiscoveryRegistryResolutionSchema, DiscoveryRegistryResolvedExtensionSchema, type DiscoveryResolvedExtension, DiscoveryResolvedExtensionSchema, } from "./discover-schema.js";
7
+ export { MAX_RESOLUTION_METADATA_ITEMS, MAX_RESOLUTION_METADATA_REQUEST_BYTES, MAX_RESOLUTION_METADATA_RESPONSE_BYTES, MAX_RESOLUTION_METADATA_VERSIONS_PER_PAGE, RESOLUTION_METADATA_SCHEMA_VERSION, RESOLUTION_SELECTION_POLICY_VERSION, decodeResolutionMetadataRequestBody, type ResolutionMetadataError, ResolutionMetadataErrorSchema, ResolutionMetadataIdentitySchema, ResolutionMetadataItemSchema, type ResolutionMetadataOutcome, ResolutionMetadataOutcomeSchema, type ResolutionMetadataRequest, ResolutionMetadataRequestSchema, type ResolutionMetadataResponse, ResolutionMetadataResponseSchema, resolutionMetadataResponseMatchesRequest, } from "./resolution-metadata.js";
7
8
  export { MAX_PUBLICATION_SET_CANDIDATES, PUBLICATION_SET_CONTRACT, type PackDependencyDescriptor, type PackDependencyFinding, PackDependencyFindingSchema, type PreviewPublicationSetRequest, PreviewPublicationSetRequestSchema, type PreviewPublicationSetResponse, PreviewPublicationSetResponseSchema, type PublicationCandidateResult, type PublicationDescriptor, type PublicationPackResult, type PublicationTarget, type PublicationVisibilityInput, PublicationVisibilityInputSchema, type Sha256Hex, Sha256HexSchema, archiveSha256Hex, formatPackDependencyFinding, comparePublicationTargets, normalizePublicationDescriptor, normalizePublicationSet, publicationDescriptorDigest, publicationSetDigest, publicationTargetKey, validatePublicationDescriptors, validatePublicationSetResponse, } from "./publication-set.js";
8
- export { type DeprecationManagementView, DeprecationManagementViewSchema, type DeprecationReplacementIntent, DeprecationReplacementIntentSchema, DeprecationRevisionSchema, type DeprecationTransition, DeprecationTransitionSchema, type ExtensionIndex, ExtensionIndexSchema, type VersionEntry, VersionEntrySchema, packagesToPackageUrlParts, } from "./schema.js";
9
+ export { type ArchivalManagementView, ArchivalManagementViewSchema, ArchivalRevisionSchema, type ArchivalTransition, ArchivalTransitionSchema, type DeprecationManagementView, DeprecationManagementViewSchema, type DeprecationReplacementIntent, DeprecationReplacementIntentSchema, DeprecationRevisionSchema, type DeprecationTransition, DeprecationTransitionSchema, type ExtensionIndex, ExtensionIndexSchema, type VersionEntry, VersionEntrySchema, packagesToPackageUrlParts, } from "./schema.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * @experimental This API is unstable and may change without notice.
5
5
  */
6
- export { DiscoverPackagesResponseSchema, DiscoveryExtensionResultSchema, DiscoveryPackageResultSchema, DiscoveryResolvedExtensionSchema, } from "./discover-schema.js";
6
+ export { DiscoverPackageInputSchema, DiscoverPackagesRequestSchema, DiscoverPackagesResponseSchema, DiscoveryDeclaredExtensionSchema, DiscoveryExtensionResultSchema, DiscoveryGitResolutionSchema, DiscoveryGitResolvedExtensionSchema, DiscoveryPackageResultSchema, DiscoveryPathResolutionSchema, DiscoveryPathResolvedExtensionSchema, DiscoveryRegistryResolutionSchema, DiscoveryRegistryResolvedExtensionSchema, DiscoveryResolvedExtensionSchema, } from "./discover-schema.js";
7
+ export { MAX_RESOLUTION_METADATA_ITEMS, MAX_RESOLUTION_METADATA_REQUEST_BYTES, MAX_RESOLUTION_METADATA_RESPONSE_BYTES, MAX_RESOLUTION_METADATA_VERSIONS_PER_PAGE, RESOLUTION_METADATA_SCHEMA_VERSION, RESOLUTION_SELECTION_POLICY_VERSION, decodeResolutionMetadataRequestBody, ResolutionMetadataErrorSchema, ResolutionMetadataIdentitySchema, ResolutionMetadataItemSchema, ResolutionMetadataOutcomeSchema, ResolutionMetadataRequestSchema, ResolutionMetadataResponseSchema, resolutionMetadataResponseMatchesRequest, } from "./resolution-metadata.js";
7
8
  export { MAX_PUBLICATION_SET_CANDIDATES, PUBLICATION_SET_CONTRACT, PackDependencyFindingSchema, PreviewPublicationSetRequestSchema, PreviewPublicationSetResponseSchema, PublicationVisibilityInputSchema, Sha256HexSchema, archiveSha256Hex, formatPackDependencyFinding, comparePublicationTargets, normalizePublicationDescriptor, normalizePublicationSet, publicationDescriptorDigest, publicationSetDigest, publicationTargetKey, validatePublicationDescriptors, validatePublicationSetResponse, } from "./publication-set.js";
8
- export { DeprecationManagementViewSchema, DeprecationReplacementIntentSchema, DeprecationRevisionSchema, DeprecationTransitionSchema, ExtensionIndexSchema, VersionEntrySchema, packagesToPackageUrlParts, } from "./schema.js";
9
+ export { ArchivalManagementViewSchema, ArchivalRevisionSchema, ArchivalTransitionSchema, DeprecationManagementViewSchema, DeprecationReplacementIntentSchema, DeprecationRevisionSchema, DeprecationTransitionSchema, ExtensionIndexSchema, VersionEntrySchema, packagesToPackageUrlParts, } from "./schema.js";
9
10
  //# sourceMappingURL=index.js.map