@agentxm/registry-protocol 0.28.4-bootstrap.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 (137) hide show
  1. package/LICENSE +110 -0
  2. package/README.md +13 -0
  3. package/dist/src/unstable/content/agent-skills-standard.d.ts +17 -0
  4. package/dist/src/unstable/content/agent-skills-standard.js +24 -0
  5. package/dist/src/unstable/content/frontmatter.d.ts +52 -0
  6. package/dist/src/unstable/content/frontmatter.js +115 -0
  7. package/dist/src/unstable/content/index.d.ts +11 -0
  8. package/dist/src/unstable/content/index.js +11 -0
  9. package/dist/src/unstable/content/skill-content.d.ts +43 -0
  10. package/dist/src/unstable/content/skill-content.js +184 -0
  11. package/dist/src/unstable/content/skill-types.d.ts +22 -0
  12. package/dist/src/unstable/content/skill-types.js +9 -0
  13. package/dist/src/unstable/content/subagent-content.d.ts +58 -0
  14. package/dist/src/unstable/content/subagent-content.js +101 -0
  15. package/dist/src/unstable/knowledge/index.d.ts +8 -0
  16. package/dist/src/unstable/knowledge/index.js +8 -0
  17. package/dist/src/unstable/knowledge/knowledge-search.d.ts +32 -0
  18. package/dist/src/unstable/knowledge/knowledge-search.js +147 -0
  19. package/dist/src/unstable/knowledge/okf.d.ts +86 -0
  20. package/dist/src/unstable/knowledge/okf.js +1090 -0
  21. package/dist/src/unstable/lint/catalog/hook/decision-portability.d.ts +4 -0
  22. package/dist/src/unstable/lint/catalog/hook/decision-portability.js +40 -0
  23. package/dist/src/unstable/lint/catalog/hook/entrypoint-exists.d.ts +4 -0
  24. package/dist/src/unstable/lint/catalog/hook/entrypoint-exists.js +39 -0
  25. package/dist/src/unstable/lint/catalog/hook/envelope.d.ts +6 -0
  26. package/dist/src/unstable/lint/catalog/hook/envelope.js +15 -0
  27. package/dist/src/unstable/lint/catalog/hook/matcher-raw-portability.d.ts +4 -0
  28. package/dist/src/unstable/lint/catalog/hook/matcher-raw-portability.js +51 -0
  29. package/dist/src/unstable/lint/catalog/hook.d.ts +4 -0
  30. package/dist/src/unstable/lint/catalog/hook.js +17 -0
  31. package/dist/src/unstable/lint/catalog/knowledge/diagnostics.d.ts +128 -0
  32. package/dist/src/unstable/lint/catalog/knowledge/diagnostics.js +78 -0
  33. package/dist/src/unstable/lint/catalog/knowledge/envelope.d.ts +6 -0
  34. package/dist/src/unstable/lint/catalog/knowledge/envelope.js +15 -0
  35. package/dist/src/unstable/lint/catalog/knowledge.d.ts +5 -0
  36. package/dist/src/unstable/lint/catalog/knowledge.js +11 -0
  37. package/dist/src/unstable/lint/catalog/mcp-server/envelope.d.ts +6 -0
  38. package/dist/src/unstable/lint/catalog/mcp-server/envelope.js +15 -0
  39. package/dist/src/unstable/lint/catalog/mcp-server.d.ts +4 -0
  40. package/dist/src/unstable/lint/catalog/mcp-server.js +6 -0
  41. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.d.ts +28 -0
  42. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js +38 -0
  43. package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts +17 -0
  44. package/dist/src/unstable/lint/catalog/pack/manifest-present.js +24 -0
  45. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.d.ts +25 -0
  46. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js +33 -0
  47. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts +51 -0
  48. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.js +45 -0
  49. package/dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts +60 -0
  50. package/dist/src/unstable/lint/catalog/pack-accessor/vft.js +85 -0
  51. package/dist/src/unstable/lint/catalog/pack.d.ts +37 -0
  52. package/dist/src/unstable/lint/catalog/pack.js +47 -0
  53. package/dist/src/unstable/lint/catalog/rule/envelope.d.ts +6 -0
  54. package/dist/src/unstable/lint/catalog/rule/envelope.js +15 -0
  55. package/dist/src/unstable/lint/catalog/rule.d.ts +4 -0
  56. package/dist/src/unstable/lint/catalog/rule.js +6 -0
  57. package/dist/src/unstable/lint/catalog/shared/envelope-rules.d.ts +93 -0
  58. package/dist/src/unstable/lint/catalog/shared/envelope-rules.js +89 -0
  59. package/dist/src/unstable/lint/catalog/shared/manifest-json.d.ts +18 -0
  60. package/dist/src/unstable/lint/catalog/shared/manifest-json.js +28 -0
  61. package/dist/src/unstable/lint/catalog/shared/manifest-present.d.ts +25 -0
  62. package/dist/src/unstable/lint/catalog/shared/manifest-present.js +37 -0
  63. package/dist/src/unstable/lint/catalog/shared/recommended-packs-rules.d.ts +70 -0
  64. package/dist/src/unstable/lint/catalog/shared/recommended-packs-rules.js +139 -0
  65. package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts +58 -0
  66. package/dist/src/unstable/lint/catalog/shared/schema-rule.js +103 -0
  67. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.d.ts +31 -0
  68. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js +148 -0
  69. package/dist/src/unstable/lint/catalog/skill/frontmatter-standard-valid.d.ts +13 -0
  70. package/dist/src/unstable/lint/catalog/skill/frontmatter-standard-valid.js +61 -0
  71. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.d.ts +26 -0
  72. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js +41 -0
  73. package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts +23 -0
  74. package/dist/src/unstable/lint/catalog/skill/manifest-present.js +32 -0
  75. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.d.ts +21 -0
  76. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js +36 -0
  77. package/dist/src/unstable/lint/catalog/skill/recommended-packs-valid.d.ts +8 -0
  78. package/dist/src/unstable/lint/catalog/skill/recommended-packs-valid.js +12 -0
  79. package/dist/src/unstable/lint/catalog/skill/skill-md-present.d.ts +17 -0
  80. package/dist/src/unstable/lint/catalog/skill/skill-md-present.js +37 -0
  81. package/dist/src/unstable/lint/catalog/skill/standalone-declaration-valid.d.ts +8 -0
  82. package/dist/src/unstable/lint/catalog/skill/standalone-declaration-valid.js +12 -0
  83. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts +61 -0
  84. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.js +55 -0
  85. package/dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts +77 -0
  86. package/dist/src/unstable/lint/catalog/skill-accessor/vft.js +135 -0
  87. package/dist/src/unstable/lint/catalog/skill.d.ts +44 -0
  88. package/dist/src/unstable/lint/catalog/skill.js +64 -0
  89. package/dist/src/unstable/lint/catalog/subagent/envelope.d.ts +6 -0
  90. package/dist/src/unstable/lint/catalog/subagent/envelope.js +15 -0
  91. package/dist/src/unstable/lint/catalog/subagent.d.ts +4 -0
  92. package/dist/src/unstable/lint/catalog/subagent.js +6 -0
  93. package/dist/src/unstable/lint/compose-path.d.ts +28 -0
  94. package/dist/src/unstable/lint/compose-path.js +64 -0
  95. package/dist/src/unstable/lint/config.d.ts +103 -0
  96. package/dist/src/unstable/lint/config.js +140 -0
  97. package/dist/src/unstable/lint/context.d.ts +246 -0
  98. package/dist/src/unstable/lint/context.js +21 -0
  99. package/dist/src/unstable/lint/describe-document.d.ts +31 -0
  100. package/dist/src/unstable/lint/describe-document.js +50 -0
  101. package/dist/src/unstable/lint/evaluate.d.ts +47 -0
  102. package/dist/src/unstable/lint/evaluate.js +82 -0
  103. package/dist/src/unstable/lint/issues-to-findings.d.ts +35 -0
  104. package/dist/src/unstable/lint/issues-to-findings.js +149 -0
  105. package/dist/src/unstable/lint/publish.d.ts +49 -0
  106. package/dist/src/unstable/lint/publish.js +86 -0
  107. package/dist/src/unstable/lint/rule.d.ts +98 -0
  108. package/dist/src/unstable/lint/rule.js +18 -0
  109. package/dist/src/unstable/publish/archive-guardrails.d.ts +39 -0
  110. package/dist/src/unstable/publish/archive-guardrails.js +250 -0
  111. package/dist/src/unstable/publish/filtered-package-validation.d.ts +24 -0
  112. package/dist/src/unstable/publish/filtered-package-validation.js +117 -0
  113. package/dist/src/unstable/publish/index.d.ts +12 -0
  114. package/dist/src/unstable/publish/index.js +12 -0
  115. package/dist/src/unstable/publish/ingest-limits.d.ts +25 -0
  116. package/dist/src/unstable/publish/ingest-limits.js +41 -0
  117. package/dist/src/unstable/publish/input-normalization.d.ts +40 -0
  118. package/dist/src/unstable/publish/input-normalization.js +125 -0
  119. package/dist/src/unstable/publish/manifest-policy.d.ts +611 -0
  120. package/dist/src/unstable/publish/manifest-policy.js +196 -0
  121. package/dist/src/unstable/publish/test-zip-helpers.d.ts +13 -0
  122. package/dist/src/unstable/publish/test-zip-helpers.js +117 -0
  123. package/dist/src/unstable/publish/visibility.d.ts +161 -0
  124. package/dist/src/unstable/publish/visibility.js +124 -0
  125. package/dist/src/unstable/registry/discover-schema.d.ts +68 -0
  126. package/dist/src/unstable/registry/discover-schema.js +35 -0
  127. package/dist/src/unstable/registry/index.d.ts +9 -0
  128. package/dist/src/unstable/registry/index.js +9 -0
  129. package/dist/src/unstable/registry/publication-set.d.ts +303 -0
  130. package/dist/src/unstable/registry/publication-set.js +507 -0
  131. package/dist/src/unstable/registry/release-age-policy.d.ts +57 -0
  132. package/dist/src/unstable/registry/release-age-policy.js +117 -0
  133. package/dist/src/unstable/registry/schema.d.ts +220 -0
  134. package/dist/src/unstable/registry/schema.js +114 -0
  135. package/dist/src/unstable/suggested-action.d.ts +19 -0
  136. package/dist/src/unstable/suggested-action.js +42 -0
  137. package/package.json +214 -0
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Registry layout schemas for extension index and version entries.
3
+ *
4
+ * These schemas define the structure of registry metadata that describes
5
+ * published extensions and their available versions.
6
+ *
7
+ * @experimental This API is unstable and may change without notice.
8
+ */
9
+ import * as Schema from "effect/Schema";
10
+ import * as Option from "effect/Option";
11
+ import { type PackageUrlParts } from "@agentxm/extension-model/unstable/packaging/package-url";
12
+ export declare const DeprecationRevisionSchema: Schema.NonEmptyString;
13
+ export declare const DeprecationReplacementIntentSchema: Schema.Union<readonly [Schema.Struct<{
14
+ readonly kind: Schema.Literal<"clear">;
15
+ }>, Schema.Struct<{
16
+ readonly kind: Schema.Literal<"set">;
17
+ readonly fqn: Schema.String;
18
+ }>, Schema.Struct<{
19
+ readonly kind: Schema.Literal<"preserve">;
20
+ }>]>;
21
+ export declare const DeprecationManagementViewSchema: Schema.Struct<{
22
+ readonly deprecation: Schema.NullOr<Schema.Union<readonly [Schema.Struct<{
23
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
24
+ readonly message: Schema.String;
25
+ readonly replacement: Schema.optional<Schema.Union<readonly [Schema.Struct<{
26
+ readonly status: Schema.Literal<"available">;
27
+ readonly fqn: Schema.String;
28
+ }>, Schema.Struct<{
29
+ readonly status: Schema.Literal<"unavailable">;
30
+ readonly fqn: Schema.optional<Schema.String>;
31
+ }>]>>;
32
+ }>, Schema.Struct<{
33
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
34
+ readonly message: Schema.optional<Schema.String>;
35
+ readonly replacement: Schema.Union<readonly [Schema.Struct<{
36
+ readonly status: Schema.Literal<"available">;
37
+ readonly fqn: Schema.String;
38
+ }>, Schema.Struct<{
39
+ readonly status: Schema.Literal<"unavailable">;
40
+ readonly fqn: Schema.optional<Schema.String>;
41
+ }>]>;
42
+ }>]>>;
43
+ readonly revision: Schema.NonEmptyString;
44
+ }>;
45
+ export declare const DeprecationTransitionSchema: Schema.Struct<{
46
+ readonly target: Schema.String;
47
+ readonly before: Schema.NullOr<Schema.Union<readonly [Schema.Struct<{
48
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
49
+ readonly message: Schema.String;
50
+ readonly replacement: Schema.optional<Schema.Union<readonly [Schema.Struct<{
51
+ readonly status: Schema.Literal<"available">;
52
+ readonly fqn: Schema.String;
53
+ }>, Schema.Struct<{
54
+ readonly status: Schema.Literal<"unavailable">;
55
+ readonly fqn: Schema.optional<Schema.String>;
56
+ }>]>>;
57
+ }>, Schema.Struct<{
58
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
59
+ readonly message: Schema.optional<Schema.String>;
60
+ readonly replacement: Schema.Union<readonly [Schema.Struct<{
61
+ readonly status: Schema.Literal<"available">;
62
+ readonly fqn: Schema.String;
63
+ }>, Schema.Struct<{
64
+ readonly status: Schema.Literal<"unavailable">;
65
+ readonly fqn: Schema.optional<Schema.String>;
66
+ }>]>;
67
+ }>]>>;
68
+ readonly after: Schema.NullOr<Schema.Union<readonly [Schema.Struct<{
69
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
70
+ readonly message: Schema.String;
71
+ readonly replacement: Schema.optional<Schema.Union<readonly [Schema.Struct<{
72
+ readonly status: Schema.Literal<"available">;
73
+ readonly fqn: Schema.String;
74
+ }>, Schema.Struct<{
75
+ readonly status: Schema.Literal<"unavailable">;
76
+ readonly fqn: Schema.optional<Schema.String>;
77
+ }>]>>;
78
+ }>, Schema.Struct<{
79
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
80
+ readonly message: Schema.optional<Schema.String>;
81
+ readonly replacement: Schema.Union<readonly [Schema.Struct<{
82
+ readonly status: Schema.Literal<"available">;
83
+ readonly fqn: Schema.String;
84
+ }>, Schema.Struct<{
85
+ readonly status: Schema.Literal<"unavailable">;
86
+ readonly fqn: Schema.optional<Schema.String>;
87
+ }>]>;
88
+ }>]>>;
89
+ readonly disposition: Schema.Literals<readonly ["created", "edited", "restored", "unchanged"]>;
90
+ readonly revision: Schema.NonEmptyString;
91
+ }>;
92
+ export type DeprecationReplacementIntent = typeof DeprecationReplacementIntentSchema.Type;
93
+ export type DeprecationManagementView = typeof DeprecationManagementViewSchema.Type;
94
+ export type DeprecationTransition = typeof DeprecationTransitionSchema.Type;
95
+ /**
96
+ * A single published version of an extension in the registry.
97
+ *
98
+ * Fields:
99
+ * - version: Semver version string (e.g., "1.2.3")
100
+ * - published: ISO 8601 timestamp of publication
101
+ * - dependencies: Optional map of `@owner/type/name` to semver range
102
+ * - integrity: SRI integrity string in `sha512-<base64>` format
103
+ *
104
+ * @experimental This API is unstable and may change without notice.
105
+ */
106
+ export declare const VersionEntrySchema: Schema.Struct<{
107
+ readonly version: Schema.brand<Schema.String, "Version">;
108
+ readonly published: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
109
+ readonly dependencies: Schema.optional<Schema.$Record<Schema.String, Schema.brand<Schema.NonEmptyString, "VersionRange">>>;
110
+ readonly packages: Schema.optional<Schema.$Array<Schema.Struct<{
111
+ readonly purl: Schema.brand<Schema.NonEmptyString, "PackageIdentityPurl">;
112
+ readonly versionRange: Schema.optional<Schema.brand<Schema.decodeTo<Schema.toType<Schema.Struct<{
113
+ readonly raw: Schema.NonEmptyString;
114
+ readonly scheme: Schema.NonEmptyString;
115
+ readonly constraints: Schema.$Array<Schema.Struct<{
116
+ readonly comparator: Schema.Literals<readonly ["=", "!=", "<", "<=", ">", ">="]>;
117
+ readonly version: Schema.NonEmptyString;
118
+ }>>;
119
+ }>>, Schema.NonEmptyString, never, never>, "VersRange">>;
120
+ }>>>;
121
+ readonly integrity: Schema.String;
122
+ readonly yankedAt: Schema.optional<Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>>;
123
+ readonly yankCategory: Schema.optional<Schema.String>;
124
+ readonly yankNotice: Schema.optional<Schema.String>;
125
+ }>;
126
+ /**
127
+ * Inferred type for VersionEntry schema.
128
+ *
129
+ * @experimental This API is unstable and may change without notice.
130
+ */
131
+ export type VersionEntry = Schema.Schema.Type<typeof VersionEntrySchema>;
132
+ export declare const companionPackageToPackageUrlParts: (companionPackage: NonNullable<VersionEntry["packages"]>[number]) => Option.Option<PackageUrlParts>;
133
+ export declare const packagesToPackageUrlParts: (packages: VersionEntry["packages"]) => ReadonlyArray<PackageUrlParts>;
134
+ /**
135
+ * Extension index metadata describing a published extension in the registry.
136
+ *
137
+ * Fields:
138
+ * - name: Extension name without owner
139
+ * - owner: Owner namespace including `@` prefix (e.g., "@acme")
140
+ * - type: Extension type ("skill", "mcp-server", or "pack")
141
+ * - description: Optional human-readable description
142
+ * - repository: Optional repository URL or object (`{ type?, url, directory? }`)
143
+ * - bugs: Optional bug-tracker URL or object (`{ url?, email? }`)
144
+ * - license: Optional SPDX license identifier
145
+ * - authors: Optional list of authors
146
+ * - versions: Array of version entries, newest first
147
+ *
148
+ * @experimental This API is unstable and may change without notice.
149
+ */
150
+ export declare const ExtensionIndexSchema: Schema.Struct<{
151
+ readonly name: Schema.brand<Schema.NonEmptyString, "ExtensionName">;
152
+ readonly owner: Schema.brand<Schema.String, "Handle">;
153
+ readonly type: Schema.Literals<readonly ("skill" | "mcp-server" | "subagent" | "rule" | "hook" | "knowledge" | "pack")[]>;
154
+ readonly publisherBindingId: Schema.NonEmptyString;
155
+ readonly description: Schema.optional<Schema.String>;
156
+ readonly repository: Schema.optional<Schema.Union<readonly [Schema.String, Schema.Struct<{
157
+ readonly type: Schema.optional<Schema.NonEmptyString>;
158
+ readonly url: Schema.NonEmptyString;
159
+ readonly directory: Schema.optional<Schema.NonEmptyString>;
160
+ }>]>>;
161
+ readonly bugs: Schema.optional<Schema.Union<readonly [Schema.String, Schema.Struct<{
162
+ readonly url: Schema.optional<Schema.NonEmptyString>;
163
+ readonly email: Schema.optional<Schema.NonEmptyString>;
164
+ }>]>>;
165
+ readonly license: Schema.optional<Schema.String>;
166
+ readonly authors: Schema.optional<Schema.$Array<Schema.Struct<{
167
+ readonly name: Schema.String;
168
+ readonly email: Schema.optional<Schema.String>;
169
+ readonly url: Schema.optional<Schema.String>;
170
+ }>>>;
171
+ readonly visibility: Schema.optional<Schema.Literals<readonly ["public", "private"]>>;
172
+ readonly deprecation: Schema.NullOr<Schema.Union<readonly [Schema.Struct<{
173
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
174
+ readonly message: Schema.String;
175
+ readonly replacement: Schema.optional<Schema.Union<readonly [Schema.Struct<{
176
+ readonly status: Schema.Literal<"available">;
177
+ readonly fqn: Schema.String;
178
+ }>, Schema.Struct<{
179
+ readonly status: Schema.Literal<"unavailable">;
180
+ readonly fqn: Schema.optional<Schema.String>;
181
+ }>]>>;
182
+ }>, Schema.Struct<{
183
+ readonly deprecatedAt: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
184
+ readonly message: Schema.optional<Schema.String>;
185
+ readonly replacement: Schema.Union<readonly [Schema.Struct<{
186
+ readonly status: Schema.Literal<"available">;
187
+ readonly fqn: Schema.String;
188
+ }>, Schema.Struct<{
189
+ readonly status: Schema.Literal<"unavailable">;
190
+ readonly fqn: Schema.optional<Schema.String>;
191
+ }>]>;
192
+ }>]>>;
193
+ readonly versions: Schema.$Array<Schema.Struct<{
194
+ readonly version: Schema.brand<Schema.String, "Version">;
195
+ readonly published: Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>;
196
+ readonly dependencies: Schema.optional<Schema.$Record<Schema.String, Schema.brand<Schema.NonEmptyString, "VersionRange">>>;
197
+ readonly packages: Schema.optional<Schema.$Array<Schema.Struct<{
198
+ readonly purl: Schema.brand<Schema.NonEmptyString, "PackageIdentityPurl">;
199
+ readonly versionRange: Schema.optional<Schema.brand<Schema.decodeTo<Schema.toType<Schema.Struct<{
200
+ readonly raw: Schema.NonEmptyString;
201
+ readonly scheme: Schema.NonEmptyString;
202
+ readonly constraints: Schema.$Array<Schema.Struct<{
203
+ readonly comparator: Schema.Literals<readonly ["=", "!=", "<", "<=", ">", ">="]>;
204
+ readonly version: Schema.NonEmptyString;
205
+ }>>;
206
+ }>>, Schema.NonEmptyString, never, never>, "VersRange">>;
207
+ }>>>;
208
+ readonly integrity: Schema.String;
209
+ readonly yankedAt: Schema.optional<Schema.decodeTo<Schema.DateTimeUtc, Schema.String, never, never>>;
210
+ readonly yankCategory: Schema.optional<Schema.String>;
211
+ readonly yankNotice: Schema.optional<Schema.String>;
212
+ }>>;
213
+ }>;
214
+ /**
215
+ * Inferred type for ExtensionIndex schema.
216
+ *
217
+ * @experimental This API is unstable and may change without notice.
218
+ */
219
+ export type ExtensionIndex = Schema.Schema.Type<typeof ExtensionIndexSchema>;
220
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Registry layout schemas for extension index and version entries.
3
+ *
4
+ * These schemas define the structure of registry metadata that describes
5
+ * published extensions and their available versions.
6
+ *
7
+ * @experimental This API is unstable and may change without notice.
8
+ */
9
+ import * as Schema from "effect/Schema";
10
+ import * as Option from "effect/Option";
11
+ import { DateTimeUtcSchema } from "@agentxm/extension-model/unstable/date-time";
12
+ import { AuthorSchema, BugsSchema, ExtensionDependencyConstraintMapSchema, ExtensionFqnSchema, ExtensionNameSchema, ExtensionTypeSchema, RepositorySchema, } from "@agentxm/extension-model/unstable/extensions/common";
13
+ import { HandleSchema } from "@agentxm/extension-model/unstable/extensions/handle";
14
+ import { CompanionPackageSchema } from "@agentxm/extension-model/unstable/package-urls";
15
+ import { PackageUrlSchema, } from "@agentxm/extension-model/unstable/packaging/package-url";
16
+ import { VersionSchema } from "@agentxm/extension-model/unstable/version-constraints";
17
+ import { DeprecationViewSchema } from "@agentxm/extension-model/unstable/extensions/deprecation";
18
+ export const DeprecationRevisionSchema = Schema.NonEmptyString.annotate({
19
+ identifier: "DeprecationRevision",
20
+ description: "Opaque publisher lifecycle revision used for conditional writes.",
21
+ });
22
+ export const DeprecationReplacementIntentSchema = Schema.Union([
23
+ Schema.Struct({ kind: Schema.Literal("clear") }),
24
+ Schema.Struct({ kind: Schema.Literal("set"), fqn: ExtensionFqnSchema }),
25
+ Schema.Struct({ kind: Schema.Literal("preserve") }),
26
+ ]).annotate({ identifier: "DeprecationReplacementIntent" });
27
+ export const DeprecationManagementViewSchema = Schema.Struct({
28
+ deprecation: Schema.NullOr(DeprecationViewSchema),
29
+ revision: DeprecationRevisionSchema,
30
+ }).annotate({ identifier: "DeprecationManagementView" });
31
+ export const DeprecationTransitionSchema = Schema.Struct({
32
+ target: ExtensionFqnSchema,
33
+ before: Schema.NullOr(DeprecationViewSchema),
34
+ after: Schema.NullOr(DeprecationViewSchema),
35
+ disposition: Schema.Literals(["created", "edited", "restored", "unchanged"]),
36
+ revision: DeprecationRevisionSchema,
37
+ }).annotate({ identifier: "DeprecationTransition" });
38
+ // =============================================================================
39
+ // Version Entry
40
+ // =============================================================================
41
+ /**
42
+ * A single published version of an extension in the registry.
43
+ *
44
+ * Fields:
45
+ * - version: Semver version string (e.g., "1.2.3")
46
+ * - published: ISO 8601 timestamp of publication
47
+ * - dependencies: Optional map of `@owner/type/name` to semver range
48
+ * - integrity: SRI integrity string in `sha512-<base64>` format
49
+ *
50
+ * @experimental This API is unstable and may change without notice.
51
+ */
52
+ export const VersionEntrySchema = Schema.Struct({
53
+ version: VersionSchema,
54
+ published: DateTimeUtcSchema,
55
+ dependencies: Schema.optional(ExtensionDependencyConstraintMapSchema),
56
+ packages: Schema.optional(Schema.Array(CompanionPackageSchema)),
57
+ integrity: Schema.String,
58
+ yankedAt: Schema.optional(DateTimeUtcSchema),
59
+ yankCategory: Schema.optional(Schema.String),
60
+ yankNotice: Schema.optional(Schema.String),
61
+ }).annotate({
62
+ identifier: "VersionEntry",
63
+ title: "Version Entry",
64
+ description: "A single published version of an extension in the registry.",
65
+ });
66
+ const decodePackageUrlOption = Schema.decodeUnknownOption(PackageUrlSchema);
67
+ export const companionPackageToPackageUrlParts = (companionPackage) => decodePackageUrlOption(companionPackage.purl);
68
+ export const packagesToPackageUrlParts = (packages) => {
69
+ if (packages === undefined) {
70
+ return [];
71
+ }
72
+ return packages.flatMap((companionPackage) => Option.match(companionPackageToPackageUrlParts(companionPackage), {
73
+ onNone: () => [],
74
+ onSome: (packageUrl) => [packageUrl],
75
+ }));
76
+ };
77
+ // =============================================================================
78
+ // Extension Index
79
+ // =============================================================================
80
+ /**
81
+ * Extension index metadata describing a published extension in the registry.
82
+ *
83
+ * Fields:
84
+ * - name: Extension name without owner
85
+ * - owner: Owner namespace including `@` prefix (e.g., "@acme")
86
+ * - type: Extension type ("skill", "mcp-server", or "pack")
87
+ * - description: Optional human-readable description
88
+ * - repository: Optional repository URL or object (`{ type?, url, directory? }`)
89
+ * - bugs: Optional bug-tracker URL or object (`{ url?, email? }`)
90
+ * - license: Optional SPDX license identifier
91
+ * - authors: Optional list of authors
92
+ * - versions: Array of version entries, newest first
93
+ *
94
+ * @experimental This API is unstable and may change without notice.
95
+ */
96
+ export const ExtensionIndexSchema = Schema.Struct({
97
+ name: ExtensionNameSchema,
98
+ owner: HandleSchema,
99
+ type: ExtensionTypeSchema,
100
+ publisherBindingId: Schema.NonEmptyString,
101
+ description: Schema.optional(Schema.String),
102
+ repository: Schema.optional(RepositorySchema),
103
+ bugs: Schema.optional(BugsSchema),
104
+ license: Schema.optional(Schema.String),
105
+ authors: Schema.optional(Schema.Array(AuthorSchema)),
106
+ visibility: Schema.optional(Schema.Literals(["public", "private"])),
107
+ deprecation: Schema.NullOr(DeprecationViewSchema),
108
+ versions: Schema.Array(VersionEntrySchema),
109
+ }).annotate({
110
+ identifier: "ExtensionIndex",
111
+ title: "Extension Index",
112
+ description: "Registry metadata describing a published extension and its available versions.",
113
+ });
114
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1,19 @@
1
+ import * as Schema from "effect/Schema";
2
+ /**
3
+ * Whether a command-bearing suggestion is one inert AXM invocation.
4
+ *
5
+ * This is deliberately more conservative than a shell parser. Suggested
6
+ * commands are display data, not execution authority, and accepting shell
7
+ * composition here would make copy/paste turn untrusted Registry data into a
8
+ * second command.
9
+ */
10
+ export declare const isSafeSuggestedAxmCommand: (command: string) => boolean;
11
+ /** Retain an action's explanation and URL while removing an unsafe command. */
12
+ export declare const sanitizeSuggestedAction: (suggestion: SuggestedAction) => SuggestedAction;
13
+ export declare const SuggestedActionSchema: Schema.Struct<{
14
+ readonly description: Schema.String;
15
+ readonly cmd: Schema.optional<Schema.String>;
16
+ readonly url: Schema.optional<Schema.String>;
17
+ }>;
18
+ export type SuggestedAction = typeof SuggestedActionSchema.Type;
19
+ //# sourceMappingURL=suggested-action.d.ts.map
@@ -0,0 +1,42 @@
1
+ import * as Schema from "effect/Schema";
2
+ const AxmCommandPattern = /^axm\s+\S/;
3
+ const ShellCompositionPattern = /(?:&&|\|\||[;&|<>`(){}]|\$\(|\$\{)/;
4
+ const hasControlCharacter = (value) => Array.from(value).some((character) => {
5
+ const codePoint = character.codePointAt(0);
6
+ return codePoint !== undefined && (codePoint <= 0x1f || codePoint === 0x7f);
7
+ });
8
+ /**
9
+ * Whether a command-bearing suggestion is one inert AXM invocation.
10
+ *
11
+ * This is deliberately more conservative than a shell parser. Suggested
12
+ * commands are display data, not execution authority, and accepting shell
13
+ * composition here would make copy/paste turn untrusted Registry data into a
14
+ * second command.
15
+ */
16
+ export const isSafeSuggestedAxmCommand = (command) => AxmCommandPattern.test(command) &&
17
+ !hasControlCharacter(command) &&
18
+ !ShellCompositionPattern.test(command);
19
+ /** Retain an action's explanation and URL while removing an unsafe command. */
20
+ export const sanitizeSuggestedAction = (suggestion) => suggestion.cmd === undefined || isSafeSuggestedAxmCommand(suggestion.cmd)
21
+ ? suggestion
22
+ : {
23
+ description: suggestion.description,
24
+ ...(suggestion.url === undefined ? {} : { url: suggestion.url }),
25
+ };
26
+ export const SuggestedActionSchema = Schema.Struct({
27
+ description: Schema.String,
28
+ cmd: Schema.optional(Schema.String),
29
+ url: Schema.optional(Schema.String),
30
+ })
31
+ .check(Schema.makeFilter((suggestion) => suggestion.cmd !== undefined && !isSafeSuggestedAxmCommand(suggestion.cmd)
32
+ ? {
33
+ path: ["cmd"],
34
+ issue: "suggested commands must be one AXM invocation without shell composition",
35
+ }
36
+ : undefined))
37
+ .annotate({
38
+ identifier: "SuggestedAction",
39
+ title: "SuggestedAction",
40
+ description: "Suggested follow-up. Optional inert AXM command or URL.",
41
+ });
42
+ //# sourceMappingURL=suggested-action.js.map
package/package.json ADDED
@@ -0,0 +1,214 @@
1
+ {
2
+ "name": "@agentxm/registry-protocol",
3
+ "version": "0.28.4-bootstrap.0",
4
+ "description": "AgentXM Registry wire contracts and shared publication validation rules. Unstable and unsupported — use the axm.sh CLI.",
5
+ "type": "module",
6
+ "license": "FSL-1.1-MIT",
7
+ "homepage": "https://axm.sh",
8
+ "bugs": {
9
+ "url": "https://github.com/agentxm/axm/issues"
10
+ },
11
+ "author": "AgentXM <hello@agentxm.ai> (https://agentxm.ai)",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/agentxm/axm.git",
15
+ "directory": "packages/registry-protocol"
16
+ },
17
+ "exports": {
18
+ "./unstable/content": {
19
+ "types": "./dist/src/unstable/content/index.d.ts",
20
+ "default": "./dist/src/unstable/content/index.js"
21
+ },
22
+ "./unstable/content/agent-skills-standard": {
23
+ "types": "./dist/src/unstable/content/agent-skills-standard.d.ts",
24
+ "default": "./dist/src/unstable/content/agent-skills-standard.js"
25
+ },
26
+ "./unstable/content/frontmatter": {
27
+ "types": "./dist/src/unstable/content/frontmatter.d.ts",
28
+ "default": "./dist/src/unstable/content/frontmatter.js"
29
+ },
30
+ "./unstable/content/skill-content": {
31
+ "types": "./dist/src/unstable/content/skill-content.d.ts",
32
+ "default": "./dist/src/unstable/content/skill-content.js"
33
+ },
34
+ "./unstable/content/skill-types": {
35
+ "types": "./dist/src/unstable/content/skill-types.d.ts",
36
+ "default": "./dist/src/unstable/content/skill-types.js"
37
+ },
38
+ "./unstable/content/subagent-content": {
39
+ "types": "./dist/src/unstable/content/subagent-content.d.ts",
40
+ "default": "./dist/src/unstable/content/subagent-content.js"
41
+ },
42
+ "./unstable/knowledge": {
43
+ "types": "./dist/src/unstable/knowledge/index.d.ts",
44
+ "default": "./dist/src/unstable/knowledge/index.js"
45
+ },
46
+ "./unstable/knowledge/knowledge-search": {
47
+ "types": "./dist/src/unstable/knowledge/knowledge-search.d.ts",
48
+ "default": "./dist/src/unstable/knowledge/knowledge-search.js"
49
+ },
50
+ "./unstable/knowledge/okf": {
51
+ "types": "./dist/src/unstable/knowledge/okf.d.ts",
52
+ "default": "./dist/src/unstable/knowledge/okf.js"
53
+ },
54
+ "./unstable/lint/catalog/hook": {
55
+ "types": "./dist/src/unstable/lint/catalog/hook.d.ts",
56
+ "default": "./dist/src/unstable/lint/catalog/hook.js"
57
+ },
58
+ "./unstable/lint/catalog/knowledge": {
59
+ "types": "./dist/src/unstable/lint/catalog/knowledge.d.ts",
60
+ "default": "./dist/src/unstable/lint/catalog/knowledge.js"
61
+ },
62
+ "./unstable/lint/catalog/knowledge/diagnostics": {
63
+ "types": "./dist/src/unstable/lint/catalog/knowledge/diagnostics.d.ts",
64
+ "default": "./dist/src/unstable/lint/catalog/knowledge/diagnostics.js"
65
+ },
66
+ "./unstable/lint/catalog/mcp-server": {
67
+ "types": "./dist/src/unstable/lint/catalog/mcp-server.d.ts",
68
+ "default": "./dist/src/unstable/lint/catalog/mcp-server.js"
69
+ },
70
+ "./unstable/lint/catalog/pack": {
71
+ "types": "./dist/src/unstable/lint/catalog/pack.d.ts",
72
+ "default": "./dist/src/unstable/lint/catalog/pack.js"
73
+ },
74
+ "./unstable/lint/catalog/pack-accessor/contexts": {
75
+ "types": "./dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts",
76
+ "default": "./dist/src/unstable/lint/catalog/pack-accessor/contexts.js"
77
+ },
78
+ "./unstable/lint/catalog/pack-accessor/vft": {
79
+ "types": "./dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts",
80
+ "default": "./dist/src/unstable/lint/catalog/pack-accessor/vft.js"
81
+ },
82
+ "./unstable/lint/catalog/rule": {
83
+ "types": "./dist/src/unstable/lint/catalog/rule.d.ts",
84
+ "default": "./dist/src/unstable/lint/catalog/rule.js"
85
+ },
86
+ "./unstable/lint/catalog/shared/manifest-json": {
87
+ "types": "./dist/src/unstable/lint/catalog/shared/manifest-json.d.ts",
88
+ "default": "./dist/src/unstable/lint/catalog/shared/manifest-json.js"
89
+ },
90
+ "./unstable/lint/catalog/skill": {
91
+ "types": "./dist/src/unstable/lint/catalog/skill.d.ts",
92
+ "default": "./dist/src/unstable/lint/catalog/skill.js"
93
+ },
94
+ "./unstable/lint/catalog/skill-accessor/contexts": {
95
+ "types": "./dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts",
96
+ "default": "./dist/src/unstable/lint/catalog/skill-accessor/contexts.js"
97
+ },
98
+ "./unstable/lint/catalog/skill-accessor/vft": {
99
+ "types": "./dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts",
100
+ "default": "./dist/src/unstable/lint/catalog/skill-accessor/vft.js"
101
+ },
102
+ "./unstable/lint/catalog/subagent": {
103
+ "types": "./dist/src/unstable/lint/catalog/subagent.d.ts",
104
+ "default": "./dist/src/unstable/lint/catalog/subagent.js"
105
+ },
106
+ "./unstable/lint/compose-path": {
107
+ "types": "./dist/src/unstable/lint/compose-path.d.ts",
108
+ "default": "./dist/src/unstable/lint/compose-path.js"
109
+ },
110
+ "./unstable/lint/config": {
111
+ "types": "./dist/src/unstable/lint/config.d.ts",
112
+ "default": "./dist/src/unstable/lint/config.js"
113
+ },
114
+ "./unstable/lint/context": {
115
+ "types": "./dist/src/unstable/lint/context.d.ts",
116
+ "default": "./dist/src/unstable/lint/context.js"
117
+ },
118
+ "./unstable/lint/evaluate": {
119
+ "types": "./dist/src/unstable/lint/evaluate.d.ts",
120
+ "default": "./dist/src/unstable/lint/evaluate.js"
121
+ },
122
+ "./unstable/lint/issues-to-findings": {
123
+ "types": "./dist/src/unstable/lint/issues-to-findings.d.ts",
124
+ "default": "./dist/src/unstable/lint/issues-to-findings.js"
125
+ },
126
+ "./unstable/lint/publish": {
127
+ "types": "./dist/src/unstable/lint/publish.d.ts",
128
+ "default": "./dist/src/unstable/lint/publish.js"
129
+ },
130
+ "./unstable/lint/rule": {
131
+ "types": "./dist/src/unstable/lint/rule.d.ts",
132
+ "default": "./dist/src/unstable/lint/rule.js"
133
+ },
134
+ "./unstable/publish": {
135
+ "types": "./dist/src/unstable/publish/index.d.ts",
136
+ "default": "./dist/src/unstable/publish/index.js"
137
+ },
138
+ "./unstable/publish/archive-guardrails": {
139
+ "types": "./dist/src/unstable/publish/archive-guardrails.d.ts",
140
+ "default": "./dist/src/unstable/publish/archive-guardrails.js"
141
+ },
142
+ "./unstable/publish/filtered-package-validation": {
143
+ "types": "./dist/src/unstable/publish/filtered-package-validation.d.ts",
144
+ "default": "./dist/src/unstable/publish/filtered-package-validation.js"
145
+ },
146
+ "./unstable/publish/ingest-limits": {
147
+ "types": "./dist/src/unstable/publish/ingest-limits.d.ts",
148
+ "default": "./dist/src/unstable/publish/ingest-limits.js"
149
+ },
150
+ "./unstable/publish/input-normalization": {
151
+ "types": "./dist/src/unstable/publish/input-normalization.d.ts",
152
+ "default": "./dist/src/unstable/publish/input-normalization.js"
153
+ },
154
+ "./unstable/publish/manifest-policy": {
155
+ "types": "./dist/src/unstable/publish/manifest-policy.d.ts",
156
+ "default": "./dist/src/unstable/publish/manifest-policy.js"
157
+ },
158
+ "./unstable/publish/visibility": {
159
+ "types": "./dist/src/unstable/publish/visibility.d.ts",
160
+ "default": "./dist/src/unstable/publish/visibility.js"
161
+ },
162
+ "./unstable/registry": {
163
+ "types": "./dist/src/unstable/registry/index.d.ts",
164
+ "default": "./dist/src/unstable/registry/index.js"
165
+ },
166
+ "./unstable/registry/discover-schema": {
167
+ "types": "./dist/src/unstable/registry/discover-schema.d.ts",
168
+ "default": "./dist/src/unstable/registry/discover-schema.js"
169
+ },
170
+ "./unstable/registry/publication-set": {
171
+ "types": "./dist/src/unstable/registry/publication-set.d.ts",
172
+ "default": "./dist/src/unstable/registry/publication-set.js"
173
+ },
174
+ "./unstable/registry/release-age-policy": {
175
+ "types": "./dist/src/unstable/registry/release-age-policy.d.ts",
176
+ "default": "./dist/src/unstable/registry/release-age-policy.js"
177
+ },
178
+ "./unstable/registry/schema": {
179
+ "types": "./dist/src/unstable/registry/schema.d.ts",
180
+ "default": "./dist/src/unstable/registry/schema.js"
181
+ },
182
+ "./unstable/suggested-action": {
183
+ "types": "./dist/src/unstable/suggested-action.d.ts",
184
+ "default": "./dist/src/unstable/suggested-action.js"
185
+ }
186
+ },
187
+ "files": [
188
+ "dist/src/",
189
+ "!**/*.map"
190
+ ],
191
+ "publishConfig": {
192
+ "access": "public"
193
+ },
194
+ "engines": {
195
+ "node": ">=22.19.0"
196
+ },
197
+ "nx": {
198
+ "includedScripts": []
199
+ },
200
+ "dependencies": {
201
+ "effect": "4.0.0-rc.112",
202
+ "semver": "^7.8.5",
203
+ "yaml": "^2.9.0",
204
+ "@agentxm/extension-model": "^0.28.4-bootstrap.0"
205
+ },
206
+ "devDependencies": {
207
+ "@effect/platform-node": "4.0.0-rc.112",
208
+ "@effect/vitest": "4.0.0-rc.112",
209
+ "@types/semver": "^7.5.8",
210
+ "@typescript/native": "npm:typescript@^7.0.2",
211
+ "typescript": "npm:@typescript/typescript6@^6.0.2",
212
+ "vitest": "^4.1.10"
213
+ }
214
+ }