@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.
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Repeat-safe Registry metadata query contract. Selection stays with the client;
3
+ * each response page is evidence for one authorized identity and revision.
4
+ *
5
+ * @experimental This API is unstable and may change without notice.
6
+ */
7
+ import * as Schema from "effect/Schema";
8
+ import * as Result from "effect/Result";
9
+ import { DateTimeUtcSchema } from "@agentxm/extension-model/unstable/date-time";
10
+ import { AuthorSchema, BugsSchema, ExtensionNameSchema, ExtensionTypeSchema, RepositorySchema, } from "@agentxm/extension-model/unstable/extensions/common";
11
+ import { HandleSchema } from "@agentxm/extension-model/unstable/extensions/handle";
12
+ import { VersionSchema } from "@agentxm/extension-model/unstable/version-constraints";
13
+ import { ArchivalViewSchema } from "@agentxm/extension-model/unstable/extensions/archival";
14
+ import { DeprecationViewSchema } from "@agentxm/extension-model/unstable/extensions/deprecation";
15
+ import { VersionEntrySchema } from "./schema.js";
16
+ export const RESOLUTION_METADATA_SCHEMA_VERSION = 1;
17
+ export const RESOLUTION_SELECTION_POLICY_VERSION = "1";
18
+ export const MAX_RESOLUTION_METADATA_ITEMS = 100;
19
+ export const MAX_RESOLUTION_METADATA_VERSIONS_PER_PAGE = 100;
20
+ export const MAX_RESOLUTION_METADATA_REQUEST_BYTES = 256 * 1024;
21
+ export const MAX_RESOLUTION_METADATA_RESPONSE_BYTES = 1024 * 1024;
22
+ export const ResolutionMetadataIdentitySchema = Schema.Struct({
23
+ owner: HandleSchema,
24
+ type: ExtensionTypeSchema,
25
+ name: ExtensionNameSchema,
26
+ }).annotate({ identifier: "ResolutionMetadataIdentity" });
27
+ const CallerKeySchema = Schema.NonEmptyString.check(Schema.isMaxLength(128)).annotate({
28
+ identifier: "ResolutionMetadataCallerKey",
29
+ description: "Opaque caller correlation key. It grants no identity or authority.",
30
+ });
31
+ const RevisionSchema = Schema.NonEmptyString.check(Schema.isMaxLength(256)).annotate({
32
+ identifier: "ResolutionMetadataRevision",
33
+ });
34
+ const ContinuationSchema = Schema.NonEmptyString.check(Schema.isMaxLength(2048)).annotate({
35
+ identifier: "ResolutionMetadataContinuation",
36
+ description: "Opaque token bound by the server to the request context and revision.",
37
+ });
38
+ const RequestEvidenceSchema = {
39
+ key: CallerKeySchema,
40
+ identity: ResolutionMetadataIdentitySchema,
41
+ expectedPublisherBinding: Schema.optional(Schema.NonEmptyString),
42
+ knownRevision: Schema.optional(RevisionSchema),
43
+ continuation: Schema.optional(Schema.Struct({ token: ContinuationSchema, revision: RevisionSchema })),
44
+ };
45
+ const SelectItemSchema = Schema.Struct({
46
+ ...RequestEvidenceSchema,
47
+ purpose: Schema.Literal("select"),
48
+ });
49
+ const RestoreExactItemSchema = Schema.Struct({
50
+ ...RequestEvidenceSchema,
51
+ purpose: Schema.Literal("restore-exact"),
52
+ accepted: Schema.Struct({
53
+ version: VersionSchema,
54
+ integrity: Schema.NonEmptyString,
55
+ }),
56
+ });
57
+ export const ResolutionMetadataItemSchema = Schema.Union([
58
+ SelectItemSchema,
59
+ RestoreExactItemSchema,
60
+ ]).check(Schema.makeFilter((item) => item.knownRevision === undefined || item.continuation === undefined
61
+ ? true
62
+ : "A continuation cannot also send a conditional revision"));
63
+ export const ResolutionMetadataRequestSchema = Schema.Struct({
64
+ schemaVersion: Schema.Literal(RESOLUTION_METADATA_SCHEMA_VERSION),
65
+ selectionPolicyVersion: Schema.Literal(RESOLUTION_SELECTION_POLICY_VERSION),
66
+ items: Schema.Array(ResolutionMetadataItemSchema).check(Schema.isMinLength(1), Schema.isMaxLength(MAX_RESOLUTION_METADATA_ITEMS), Schema.makeFilter((items) => new Set(items.map((item) => item.key)).size === items.length
67
+ ? true
68
+ : "Caller keys must be unique within a batch")),
69
+ }).annotate({ identifier: "ResolutionMetadataRequest" });
70
+ const CurrentEvidenceFieldsSchema = {
71
+ publisherBindingId: Schema.NonEmptyString,
72
+ visibility: Schema.Literals(["public", "private"]),
73
+ archival: Schema.NullOr(ArchivalViewSchema),
74
+ deprecation: Schema.NullOr(DeprecationViewSchema),
75
+ revision: RevisionSchema,
76
+ observedAt: DateTimeUtcSchema,
77
+ validUntil: DateTimeUtcSchema,
78
+ };
79
+ const MetadataFieldsSchema = {
80
+ ...CurrentEvidenceFieldsSchema,
81
+ description: Schema.optional(Schema.String),
82
+ repository: Schema.optional(RepositorySchema),
83
+ bugs: Schema.optional(BugsSchema),
84
+ license: Schema.optional(Schema.String),
85
+ authors: Schema.optional(Schema.Array(AuthorSchema)),
86
+ };
87
+ const MetadataPageSchema = Schema.Struct({
88
+ ...MetadataFieldsSchema,
89
+ versions: Schema.Array(VersionEntrySchema).check(Schema.isMinLength(1), Schema.isMaxLength(MAX_RESOLUTION_METADATA_VERSIONS_PER_PAGE)),
90
+ continuation: Schema.NullOr(ContinuationSchema),
91
+ }).annotate({ identifier: "ResolutionMetadataPage" });
92
+ const MetadataOutcomeSchema = Schema.Struct({
93
+ key: CallerKeySchema,
94
+ outcome: Schema.Literal("metadata"),
95
+ page: MetadataPageSchema,
96
+ });
97
+ const UnchangedOutcomeSchema = Schema.Struct({
98
+ key: CallerKeySchema,
99
+ outcome: Schema.Literal("unchanged"),
100
+ ...CurrentEvidenceFieldsSchema,
101
+ exactVersion: Schema.optional(VersionSchema),
102
+ });
103
+ const UnavailableOutcomeSchema = Schema.Struct({
104
+ key: CallerKeySchema,
105
+ outcome: Schema.Literal("unavailable"),
106
+ });
107
+ const BindingConflictOutcomeSchema = Schema.Struct({
108
+ key: CallerKeySchema,
109
+ outcome: Schema.Literal("binding-conflict"),
110
+ publisherBindingId: Schema.NonEmptyString,
111
+ });
112
+ const ExactConflictOutcomeSchema = Schema.Struct({
113
+ key: CallerKeySchema,
114
+ outcome: Schema.Literal("exact-conflict"),
115
+ reason: Schema.Literals(["version-unavailable", "integrity-mismatch"]),
116
+ });
117
+ const RestartRequiredOutcomeSchema = Schema.Struct({
118
+ key: CallerKeySchema,
119
+ outcome: Schema.Literal("restart-required"),
120
+ revision: RevisionSchema,
121
+ });
122
+ export const ResolutionMetadataOutcomeSchema = Schema.Union([
123
+ MetadataOutcomeSchema,
124
+ UnchangedOutcomeSchema,
125
+ UnavailableOutcomeSchema,
126
+ BindingConflictOutcomeSchema,
127
+ ExactConflictOutcomeSchema,
128
+ RestartRequiredOutcomeSchema,
129
+ ]);
130
+ export const ResolutionMetadataResponseSchema = Schema.Struct({
131
+ schemaVersion: Schema.Literal(RESOLUTION_METADATA_SCHEMA_VERSION),
132
+ selectionPolicyVersion: Schema.Literal(RESOLUTION_SELECTION_POLICY_VERSION),
133
+ observedAt: DateTimeUtcSchema,
134
+ results: Schema.Array(ResolutionMetadataOutcomeSchema).check(Schema.isMaxLength(MAX_RESOLUTION_METADATA_ITEMS)),
135
+ }).annotate({ identifier: "ResolutionMetadataResponse" });
136
+ /** Validate the response against the submitted keys before consuming any page. */
137
+ export const resolutionMetadataResponseMatchesRequest = (request, response) => response.results.length === request.items.length &&
138
+ response.results.every((result, index) => {
139
+ const item = request.items[index];
140
+ if (item === undefined || result.key !== item.key)
141
+ return false;
142
+ if (item.continuation === undefined)
143
+ return result.outcome !== "restart-required";
144
+ return (result.outcome !== "unchanged" &&
145
+ (result.outcome !== "metadata" || result.page.revision === item.continuation.revision));
146
+ });
147
+ export const ResolutionMetadataErrorSchema = Schema.Struct({
148
+ code: Schema.Literals([
149
+ "invalid-request",
150
+ "unsupported-schema-version",
151
+ "unsupported-selection-policy-version",
152
+ "request-too-large",
153
+ "response-too-large",
154
+ "backend-unavailable",
155
+ ]),
156
+ detail: Schema.String,
157
+ });
158
+ const decodeRequest = Schema.decodeUnknownResult(ResolutionMetadataRequestSchema);
159
+ const strictUtf8 = new TextDecoder("utf-8", { fatal: true });
160
+ /** Apply the encoded body limit before parsing an untrusted request. */
161
+ export const decodeResolutionMetadataRequestBody = (body) => {
162
+ if (body.byteLength > MAX_RESOLUTION_METADATA_REQUEST_BYTES) {
163
+ return Result.fail({
164
+ code: "request-too-large",
165
+ detail: "Resolution metadata request exceeds the encoded body limit.",
166
+ });
167
+ }
168
+ let input;
169
+ try {
170
+ input = JSON.parse(strictUtf8.decode(body));
171
+ }
172
+ catch {
173
+ return Result.fail({
174
+ code: "invalid-request",
175
+ detail: "Resolution metadata request is not valid UTF-8 JSON.",
176
+ });
177
+ }
178
+ if (typeof input === "object" && input !== null) {
179
+ if ("schemaVersion" in input && input.schemaVersion !== RESOLUTION_METADATA_SCHEMA_VERSION) {
180
+ return Result.fail({
181
+ code: "unsupported-schema-version",
182
+ detail: "Resolution metadata schema version is unsupported.",
183
+ });
184
+ }
185
+ if ("selectionPolicyVersion" in input &&
186
+ input.selectionPolicyVersion !== RESOLUTION_SELECTION_POLICY_VERSION) {
187
+ return Result.fail({
188
+ code: "unsupported-selection-policy-version",
189
+ detail: "Resolution selection policy version is unsupported.",
190
+ });
191
+ }
192
+ }
193
+ const decoded = decodeRequest(input, { onExcessProperty: "error" });
194
+ return Result.isFailure(decoded)
195
+ ? Result.fail({ code: "invalid-request", detail: "Resolution metadata request is invalid." })
196
+ : Result.succeed(decoded.success);
197
+ };
198
+ //# sourceMappingURL=resolution-metadata.js.map
@@ -9,6 +9,29 @@
9
9
  import * as Schema from "effect/Schema";
10
10
  import * as Option from "effect/Option";
11
11
  import { type PackageUrlParts } from "@agentxm/extension-model/unstable/packaging/package-url";
12
+ export declare const ArchivalRevisionSchema: Schema.NonEmptyString;
13
+ export declare const ArchivalManagementViewSchema: Schema.Struct<{
14
+ readonly archival: Schema.NullOr<Schema.Struct<{
15
+ readonly archivedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
16
+ readonly reason: Schema.optional<Schema.String>;
17
+ }>>;
18
+ readonly revision: Schema.NonEmptyString;
19
+ }>;
20
+ export declare const ArchivalTransitionSchema: Schema.Struct<{
21
+ readonly target: Schema.String;
22
+ readonly before: Schema.NullOr<Schema.Struct<{
23
+ readonly archivedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
24
+ readonly reason: Schema.optional<Schema.String>;
25
+ }>>;
26
+ readonly after: Schema.NullOr<Schema.Struct<{
27
+ readonly archivedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
28
+ readonly reason: Schema.optional<Schema.String>;
29
+ }>>;
30
+ readonly disposition: Schema.Literals<readonly ["created", "edited", "restored", "unchanged"]>;
31
+ readonly revision: Schema.NonEmptyString;
32
+ }>;
33
+ export type ArchivalManagementView = typeof ArchivalManagementViewSchema.Type;
34
+ export type ArchivalTransition = typeof ArchivalTransitionSchema.Type;
12
35
  export declare const DeprecationRevisionSchema: Schema.NonEmptyString;
13
36
  export declare const DeprecationReplacementIntentSchema: Schema.Union<readonly [Schema.Struct<{
14
37
  readonly kind: Schema.Literal<"clear">;
@@ -169,6 +192,10 @@ export declare const ExtensionIndexSchema: Schema.Struct<{
169
192
  readonly url: Schema.optional<Schema.String>;
170
193
  }>>>;
171
194
  readonly visibility: Schema.optional<Schema.Literals<readonly ["public", "private"]>>;
195
+ readonly archival: Schema.NullOr<Schema.Struct<{
196
+ readonly archivedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
197
+ readonly reason: Schema.optional<Schema.String>;
198
+ }>>;
172
199
  readonly deprecation: Schema.NullOr<Schema.Union<readonly [Schema.Struct<{
173
200
  readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
174
201
  readonly message: Schema.String;
@@ -15,6 +15,22 @@ import { CompanionPackageSchema } from "@agentxm/extension-model/unstable/packag
15
15
  import { PackageUrlSchema, } from "@agentxm/extension-model/unstable/packaging/package-url";
16
16
  import { VersionSchema } from "@agentxm/extension-model/unstable/version-constraints";
17
17
  import { DeprecationViewSchema } from "@agentxm/extension-model/unstable/extensions/deprecation";
18
+ import { ArchivalViewSchema } from "@agentxm/extension-model/unstable/extensions/archival";
19
+ export const ArchivalRevisionSchema = Schema.NonEmptyString.annotate({
20
+ identifier: "ArchivalRevision",
21
+ description: "Opaque publisher lifecycle revision used for conditional archival writes.",
22
+ });
23
+ export const ArchivalManagementViewSchema = Schema.Struct({
24
+ archival: Schema.NullOr(ArchivalViewSchema),
25
+ revision: ArchivalRevisionSchema,
26
+ }).annotate({ identifier: "ArchivalManagementView" });
27
+ export const ArchivalTransitionSchema = Schema.Struct({
28
+ target: ExtensionFqnSchema,
29
+ before: Schema.NullOr(ArchivalViewSchema),
30
+ after: Schema.NullOr(ArchivalViewSchema),
31
+ disposition: Schema.Literals(["created", "edited", "restored", "unchanged"]),
32
+ revision: ArchivalRevisionSchema,
33
+ }).annotate({ identifier: "ArchivalTransition" });
18
34
  export const DeprecationRevisionSchema = Schema.NonEmptyString.annotate({
19
35
  identifier: "DeprecationRevision",
20
36
  description: "Opaque publisher lifecycle revision used for conditional writes.",
@@ -104,6 +120,7 @@ export const ExtensionIndexSchema = Schema.Struct({
104
120
  license: Schema.optional(Schema.String),
105
121
  authors: Schema.optional(Schema.Array(AuthorSchema)),
106
122
  visibility: Schema.optional(Schema.Literals(["public", "private"])),
123
+ archival: Schema.NullOr(ArchivalViewSchema),
107
124
  deprecation: Schema.NullOr(DeprecationViewSchema),
108
125
  versions: Schema.Array(VersionEntrySchema),
109
126
  }).annotate({
package/package.json CHANGED
@@ -4,20 +4,21 @@
4
4
  "url": "https://github.com/agentxm/axm/issues"
5
5
  },
6
6
  "dependencies": {
7
- "@agentxm/extension-model": "^0.31.1",
8
- "effect": "4.0.0-rc.115",
7
+ "@agentxm/extension-model": "^0.33.0",
8
+ "effect": "4.0.0-rc.117",
9
9
  "semver": "^7.8.5"
10
10
  },
11
11
  "description": "AgentXM Registry wire contracts: index, discovery, publication-set, visibility, authorization, and suggested-action schemas. Unstable and unsupported — use the axm.sh CLI.",
12
12
  "devDependencies": {
13
- "@effect/vitest": "4.0.0-rc.115",
13
+ "@agentxm/specification-metadata": "0.33.0",
14
+ "@effect/vitest": "4.0.0-rc.117",
14
15
  "@types/semver": "^7.7.1",
15
16
  "@typescript/native": "npm:typescript@^7.0.2",
16
17
  "typescript": "npm:@typescript/typescript6@^6.0.2",
17
18
  "vitest": "^5.0.0"
18
19
  },
19
20
  "engines": {
20
- "node": ">=22.19.0"
21
+ "node": ">=24.19.0"
21
22
  },
22
23
  "exports": {
23
24
  "./unstable/publish": {
@@ -36,6 +37,12 @@
36
37
  "types": "./dist/src/unstable/registry/publication-set.d.ts",
37
38
  "default": "./dist/src/unstable/registry/publication-set.js"
38
39
  },
40
+ "./unstable/registry/resolution-metadata": {
41
+ "types": "./dist/src/unstable/registry/resolution-metadata.d.ts",
42
+ "default": "./dist/src/unstable/registry/resolution-metadata.js"
43
+ },
44
+ "./unstable/registry/publication-set.vectors.json": "./publication-set.vectors.json",
45
+ "./unstable/registry/resolution-metadata.vectors.json": "./resolution-metadata.vectors.json",
39
46
  "./unstable/registry/schema": {
40
47
  "types": "./dist/src/unstable/registry/schema.d.ts",
41
48
  "default": "./dist/src/unstable/registry/schema.js"
@@ -47,14 +54,12 @@
47
54
  "./unstable/human-handoff": {
48
55
  "types": "./dist/src/unstable/human-handoff.d.ts",
49
56
  "default": "./dist/src/unstable/human-handoff.js"
50
- },
51
- "./unstable/publish-authorization": {
52
- "types": "./dist/src/unstable/publish-authorization.d.ts",
53
- "default": "./dist/src/unstable/publish-authorization.js"
54
57
  }
55
58
  },
56
59
  "files": [
57
60
  "dist/src/",
61
+ "publication-set.vectors.json",
62
+ "resolution-metadata.vectors.json",
58
63
  "!**/*.map"
59
64
  ],
60
65
  "homepage": "https://axm.sh",
@@ -72,5 +77,5 @@
72
77
  "url": "https://github.com/agentxm/axm.git"
73
78
  },
74
79
  "type": "module",
75
- "version": "0.31.1"
80
+ "version": "0.33.0"
76
81
  }
@@ -0,0 +1,212 @@
1
+ {
2
+ "format": "agentxm-publication-set-digest-vectors-v1",
3
+ "contract": "publication-set-v2",
4
+ "canonicalization": {
5
+ "encoding": "Hash the UTF-8 bytes of JSON.stringify over the canonical object described by publication-set-v2.",
6
+ "objectKeys": "Reconstruct descriptor, target, visibility, intent, pack, dependency, and source objects in the contract's declared key order before hashing.",
7
+ "candidateOrder": "Sort candidates by owner, type, name, then version using ascending code-unit order.",
8
+ "dependencyOrder": "Sort pack dependencies by owner, type, name, range, then source URL using ascending code-unit order.",
9
+ "optionalFields": "Omit archiveSha256Hex and pack when absent. null is invalid for either optional field and must be rejected before hashing.",
10
+ "evolution": "A future digest algorithm must mint a new publication-set contract identifier and vector format; do not change these vectors in place."
11
+ },
12
+ "vectors": [
13
+ {
14
+ "name": "optional-fields-omitted",
15
+ "candidates": [
16
+ {
17
+ "descriptor": {
18
+ "target": {
19
+ "owner": "@acme",
20
+ "type": "skill",
21
+ "name": "existing",
22
+ "version": "1.0.0"
23
+ },
24
+ "participation": "verified-existing",
25
+ "visibility": {
26
+ "intent": null,
27
+ "request": null
28
+ }
29
+ },
30
+ "descriptorDigest": "b7aeb666fa2e467bbbf6e28e9b5299e3d3b5f3f9dce5f7a9dc7222df4aa6316a"
31
+ }
32
+ ],
33
+ "publicationSetDigest": "ef0e42506c66afc3d522df6179b3c6c4c12240f3a57c57f9d64ad2bffb19cef5"
34
+ },
35
+ {
36
+ "name": "visibility-input",
37
+ "candidates": [
38
+ {
39
+ "descriptor": {
40
+ "target": {
41
+ "owner": "@acme",
42
+ "type": "rule",
43
+ "name": "guard",
44
+ "version": "2.1.0"
45
+ },
46
+ "participation": "publish",
47
+ "visibility": {
48
+ "intent": {
49
+ "value": "private",
50
+ "source": "workspace",
51
+ "fingerprint": "2222222222222222222222222222222222222222222222222222222222222222"
52
+ },
53
+ "request": "public"
54
+ },
55
+ "archiveSha256Hex": "1111111111111111111111111111111111111111111111111111111111111111"
56
+ },
57
+ "descriptorDigest": "d6934f76c10be57d7ab7099e880ef28a5dfbecfe4eb706b1199e141901176a2b"
58
+ }
59
+ ],
60
+ "publicationSetDigest": "ad643e51e182bc14772ea42c8b6d3805a27d0657aac98ed45274bfa107581106"
61
+ },
62
+ {
63
+ "name": "pack-dependencies-and-candidate-order",
64
+ "candidates": [
65
+ {
66
+ "descriptor": {
67
+ "target": {
68
+ "owner": "@zeta",
69
+ "type": "pack",
70
+ "name": "team",
71
+ "version": "3.0.0"
72
+ },
73
+ "participation": "publish",
74
+ "visibility": {
75
+ "intent": null,
76
+ "request": null
77
+ },
78
+ "archiveSha256Hex": "3333333333333333333333333333333333333333333333333333333333333333",
79
+ "pack": {
80
+ "dependencies": [
81
+ {
82
+ "owner": "@zeta",
83
+ "type": "skill",
84
+ "name": "last",
85
+ "range": "^2.0.0"
86
+ },
87
+ {
88
+ "owner": "@acme",
89
+ "type": "rule",
90
+ "name": "guard",
91
+ "range": "^2.1.0"
92
+ }
93
+ ]
94
+ }
95
+ },
96
+ "descriptorDigest": "34ebd67ef59afc296b921716ca98bbdd48548466896ca636bd16499e333d7273"
97
+ },
98
+ {
99
+ "descriptor": {
100
+ "target": {
101
+ "owner": "@acme",
102
+ "type": "skill",
103
+ "name": "review",
104
+ "version": "1.2.0"
105
+ },
106
+ "participation": "publish",
107
+ "visibility": {
108
+ "intent": null,
109
+ "request": "public"
110
+ },
111
+ "archiveSha256Hex": "4444444444444444444444444444444444444444444444444444444444444444"
112
+ },
113
+ "descriptorDigest": "a480ea68a556dc3e00e8b037c43a97a2ea385a45ab0fad28262d555f1393133b"
114
+ }
115
+ ],
116
+ "publicationSetDigest": "2fd0aa0d5e79a03feceb16307aa87e79d0f8056e87a59678ec9675b638f6016e"
117
+ },
118
+ {
119
+ "name": "explicit-registry-pack-member-source",
120
+ "candidates": [
121
+ {
122
+ "descriptor": {
123
+ "target": {
124
+ "owner": "@acme",
125
+ "type": "pack",
126
+ "name": "sourced",
127
+ "version": "1.0.0"
128
+ },
129
+ "participation": "publish",
130
+ "visibility": {
131
+ "intent": null,
132
+ "request": null
133
+ },
134
+ "archiveSha256Hex": "5555555555555555555555555555555555555555555555555555555555555555",
135
+ "pack": {
136
+ "dependencies": [
137
+ {
138
+ "owner": "@agentxm",
139
+ "type": "skill",
140
+ "name": "axm",
141
+ "range": "^0.30.0",
142
+ "source": {
143
+ "type": "registry",
144
+ "url": "https://registry.agentxm.ai/"
145
+ }
146
+ }
147
+ ]
148
+ }
149
+ },
150
+ "descriptorDigest": "900b5e53eaa7dfb07e67d84d068c31219994ee5c26851a6953f438dbcdd0199d"
151
+ }
152
+ ],
153
+ "publicationSetDigest": "5ca9029cd0220ff349925a7872a6e7a9422fc2f0ab185f7c5d87fecd2e707828"
154
+ },
155
+ {
156
+ "name": "original-publication-set-v2-pins",
157
+ "candidates": [
158
+ {
159
+ "descriptor": {
160
+ "target": {
161
+ "owner": "@acme",
162
+ "type": "pack",
163
+ "name": "team",
164
+ "version": "2.0.0"
165
+ },
166
+ "participation": "publish",
167
+ "visibility": {
168
+ "intent": null,
169
+ "request": null
170
+ },
171
+ "archiveSha256Hex": "4862f447f2c7f272fa2f4aaf89dadb3b1ac09105bd5864f8d1a0c9452bb0a226",
172
+ "pack": {
173
+ "dependencies": [
174
+ {
175
+ "owner": "@zeta",
176
+ "type": "skill",
177
+ "name": "last",
178
+ "range": "^1.0.0"
179
+ },
180
+ {
181
+ "owner": "@acme",
182
+ "type": "skill",
183
+ "name": "review",
184
+ "range": "^1.2.0"
185
+ }
186
+ ]
187
+ }
188
+ },
189
+ "descriptorDigest": "f7ee37ff8488e6b4ef99514496ad85f40153fb6defee0e511f9d5342cb60f50d"
190
+ },
191
+ {
192
+ "descriptor": {
193
+ "target": {
194
+ "owner": "@acme",
195
+ "type": "skill",
196
+ "name": "review",
197
+ "version": "1.2.0"
198
+ },
199
+ "participation": "publish",
200
+ "visibility": {
201
+ "intent": null,
202
+ "request": "public"
203
+ },
204
+ "archiveSha256Hex": "9c53c074d7ac6a2728b638ac1f376c5fa9eb8f71603017c3ea638c2fd40548df"
205
+ },
206
+ "descriptorDigest": "7700a3c2b2ff0caffd0d3da12a4c5c13b338b0adb557979ce9cbceb899670c5b"
207
+ }
208
+ ],
209
+ "publicationSetDigest": "a7d28ff4005c1596cd373060c13279a58469573e49685fe17b8d767b4c210c6c"
210
+ }
211
+ ]
212
+ }