@agentproto/corpus-cli 0.1.0-alpha.1 → 0.1.0-alpha.2
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/dist/cli.mjs +26 -8
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.mjs +15 -4
- package/dist/index.mjs.map +1 -1
- package/dist/specs/resources/aip-10/draft/KNOWLEDGE.schema.json +457 -0
- package/dist/specs/resources/aip-11/draft/LESSON.schema.json +149 -0
- package/dist/specs/resources/aip-12/draft/PLAYBOOK.schema.json +349 -0
- package/dist/specs/resources/aip-13/draft/WORK_ITEM.schema.json +547 -0
- package/dist/specs/resources/aip-14/draft/TOOL.schema.json +169 -0
- package/dist/specs/resources/aip-15/draft/WORKFLOW.schema.json +356 -0
- package/dist/specs/resources/aip-16/draft/IO.schema.json +64 -0
- package/dist/specs/resources/aip-17/draft/RUNNER.schema.json +81 -0
- package/dist/specs/resources/aip-18/draft/COLLECTION.schema.json +436 -0
- package/dist/specs/resources/aip-19/draft/SECRETS.schema.json +261 -0
- package/dist/specs/resources/aip-20/draft/WORK.schema.json +371 -0
- package/dist/specs/resources/aip-21/draft/AGENCY.schema.json +454 -0
- package/dist/specs/resources/aip-22/draft/OFFICE.schema.json +390 -0
- package/dist/specs/resources/aip-23/draft/IDENTITY.schema.json +358 -0
- package/dist/specs/resources/aip-24/draft/ASSEMBLY.schema.json +411 -0
- package/dist/specs/resources/aip-25/draft/PERSONA.schema.json +257 -0
- package/dist/specs/resources/aip-26/draft/CODE.schema.json +172 -0
- package/dist/specs/resources/aip-28/draft/INTENT.schema.json +215 -0
- package/dist/specs/resources/aip-29/draft/CLI.schema.json +339 -0
- package/dist/specs/resources/aip-3/draft/SKILL.schema.json +206 -0
- package/dist/specs/resources/aip-30/draft/DRIVER.schema.json +237 -0
- package/dist/specs/resources/aip-31/draft/HTTP.schema.json +80 -0
- package/dist/specs/resources/aip-32/draft/MCP.schema.json +88 -0
- package/dist/specs/resources/aip-33/draft/SDK.schema.json +60 -0
- package/dist/specs/resources/aip-34/draft/WORKSPACE.schema.json +252 -0
- package/dist/specs/resources/aip-35/draft/STORAGE.schema.json +237 -0
- package/dist/specs/resources/aip-36/draft/SANDBOX.schema.json +246 -0
- package/dist/specs/resources/aip-38/draft/POLICY.schema.json +217 -0
- package/dist/specs/resources/aip-39/draft/ACTION.schema.json +134 -0
- package/dist/specs/resources/aip-4/draft/DESIGN.schema.json +189 -0
- package/dist/specs/resources/aip-40/draft/EXTENSION.schema.json +116 -0
- package/dist/specs/resources/aip-41/draft/ROUTINE.schema.json +345 -0
- package/dist/specs/resources/aip-42/draft/AGENT.schema.json +268 -0
- package/dist/specs/resources/aip-44/draft/ACP.schema.json +170 -0
- package/dist/specs/resources/aip-45/draft/AGENT-CLI.schema.json +371 -0
- package/dist/specs/resources/aip-47/draft/ROLE.schema.json +199 -0
- package/dist/specs/resources/aip-48/draft/MultiAgentRuntime.schema.json +108 -0
- package/dist/specs/resources/aip-5/draft/TEMPLATE.schema.json +231 -0
- package/dist/specs/resources/aip-6/draft/COMPANY.schema.json +268 -0
- package/dist/specs/resources/aip-7/draft/GOVERNANCE.schema.json +581 -0
- package/dist/specs/resources/aip-8/draft/AGENCY.schema.json +518 -0
- package/dist/specs/resources/aip-9/draft/OPERATOR.schema.json +297 -0
- package/package.json +4 -4
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://agentproto.sh/schemas/aip-23/IDENTITY.schema.json",
|
|
4
|
+
"title": "agentidentity/v1 frontmatter (AIP-23)",
|
|
5
|
+
"description": "Validates the YAML frontmatter portion of an AIP-23 IDENTITY.md (workspace root or per-context view). The single doctype 'identity.workspace/v1' is used in both modes; the host distinguishes by checking whether `extends` is set. Per-layer-kind schemas are delegated to AIP-18 (COLLECTION.md / ITEM.md). Items in any layer collection MUST carry a `confidence` field in 0..1; that requirement is enforced at item-load time by the host, not by this schema (which validates the workspace manifest only).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["schema", "name", "title", "description", "version"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"schema": {
|
|
11
|
+
"const": "identity.workspace/v1",
|
|
12
|
+
"description": "Discriminator for the AIP-23 workspace doctype."
|
|
13
|
+
},
|
|
14
|
+
"name": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"minLength": 2,
|
|
17
|
+
"maxLength": 96,
|
|
18
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
19
|
+
"description": "Stable kebab-case identifier for the identity or view."
|
|
20
|
+
},
|
|
21
|
+
"title": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"minLength": 1,
|
|
24
|
+
"maxLength": 200,
|
|
25
|
+
"description": "Human-readable title of the identity."
|
|
26
|
+
},
|
|
27
|
+
"description": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"minLength": 1,
|
|
30
|
+
"maxLength": 2000,
|
|
31
|
+
"description": "One-paragraph statement of purpose: what this identity captures, who or what it is about."
|
|
32
|
+
},
|
|
33
|
+
"version": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(-[A-Za-z0-9.-]+)?$",
|
|
36
|
+
"description": "Semantic version of the WORKSPACE shape. Bump on collection / artifact-tier / binding / lint / defaults changes. Independent of any individual layer item's version (AIP-18-side)."
|
|
37
|
+
},
|
|
38
|
+
"extends": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"minLength": 1,
|
|
41
|
+
"maxLength": 512,
|
|
42
|
+
"pattern": "^(\\.\\./|\\./)[^\\s]+/IDENTITY\\.md$",
|
|
43
|
+
"description": "OPTIONAL — relative path to a parent IDENTITY.md. Presence makes the manifest a VIEW; absence makes it a WORKSPACE ROOT. Recursive composition; maximum chain depth is 8."
|
|
44
|
+
},
|
|
45
|
+
"appliesTo": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"items": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"pattern": "^(ws://(operators|companies|personas|skills)/[a-z][a-z0-9-]*|\\.\\./[^\\s]+)$",
|
|
50
|
+
"description": "Either a ws:// ref to an AIP-9 operator, AIP-22 company, AIP-25 persona, or AIP-3 skill, or a relative path to a consumer workspace folder."
|
|
51
|
+
},
|
|
52
|
+
"uniqueItems": true,
|
|
53
|
+
"description": "OPTIONAL — list of consumers this VIEW adapts the identity for. Hosts MUST refuse the view if any binding does not resolve. Not inherited; views declare their own scope."
|
|
54
|
+
},
|
|
55
|
+
"executor": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"pattern": "^ws://operators/[a-z][a-z0-9-]*$",
|
|
58
|
+
"description": "OPTIONAL — AIP-9 operator the identity is *about* or activates against. The host loads this operator when the identity is opened."
|
|
59
|
+
},
|
|
60
|
+
"governance": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"minLength": 1,
|
|
63
|
+
"maxLength": 512,
|
|
64
|
+
"description": "OPTIONAL — AIP-7 policy or audit binding. May be a path to an AIP-7 policy file or a ws:// ref. Identity-level approvals (layer mutations, confidence elevation, persona binding) flow through this ref."
|
|
65
|
+
},
|
|
66
|
+
"work": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"pattern": "^ws://workspaces/[a-z][a-z0-9-]*$",
|
|
69
|
+
"description": "OPTIONAL — AIP-20 work tracker the identity participates in (an operator's task queue, a company's program plan)."
|
|
70
|
+
},
|
|
71
|
+
"knowledge": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"pattern": "^ws://wikis/[a-z][a-z0-9-]*(/KNOWLEDGE\\.md)?$",
|
|
74
|
+
"description": "OPTIONAL — AIP-10 KNOWLEDGE.md ref. The identity's narrative wiki, dossier, exemplars."
|
|
75
|
+
},
|
|
76
|
+
"collections": {
|
|
77
|
+
"type": "array",
|
|
78
|
+
"items": {
|
|
79
|
+
"$ref": "#/$defs/collectionEntry"
|
|
80
|
+
},
|
|
81
|
+
"default": [],
|
|
82
|
+
"description": "Layer collections enabled by this identity. Each entry is one AIP-18 collection describing ONE layer kind. Three forms supported: inline (full COLLECTION.md frontmatter), file ref, or registry import. Merge-by-effective-name (alias if set, otherwise the collection's name) across the extends chain."
|
|
83
|
+
},
|
|
84
|
+
"layers": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"additionalProperties": false,
|
|
87
|
+
"properties": {
|
|
88
|
+
"defaultConfidence": {
|
|
89
|
+
"type": "number",
|
|
90
|
+
"minimum": 0,
|
|
91
|
+
"maximum": 1,
|
|
92
|
+
"default": 0,
|
|
93
|
+
"description": "OPTIONAL — minimum confidence (0..1) the workspace will store. New items below the floor are refused with identity_confidence_below_floor (HARD). Default is 0.0 (no floor). Workspaces with strict identity standards SHOULD set this to 0.5 or higher."
|
|
94
|
+
},
|
|
95
|
+
"versioning": {
|
|
96
|
+
"enum": ["enabled", "disabled"],
|
|
97
|
+
"default": "enabled",
|
|
98
|
+
"description": "Whether layer items carry an incrementing version on update. ONE-WAY SWITCH: once 'enabled' at any ancestor, descendants MUST NOT set 'disabled'. Refusal: identity_versioning_disable (HARD)."
|
|
99
|
+
},
|
|
100
|
+
"temporal": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"additionalProperties": false,
|
|
103
|
+
"properties": {
|
|
104
|
+
"enabled": {
|
|
105
|
+
"type": "boolean",
|
|
106
|
+
"default": false,
|
|
107
|
+
"description": "OPTIONAL — whether temporal-entry companion items are supported for layers marked temporal: true on their own collection."
|
|
108
|
+
},
|
|
109
|
+
"field": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"pattern": "^[a-z][a-zA-Z0-9_]*$",
|
|
112
|
+
"default": "validUntil",
|
|
113
|
+
"description": "OPTIONAL — field name on temporal-entry items carrying expiry. Hosts walk this field on read to exclude expired entries."
|
|
114
|
+
},
|
|
115
|
+
"sourceVocabulary": {
|
|
116
|
+
"type": "array",
|
|
117
|
+
"items": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$"
|
|
120
|
+
},
|
|
121
|
+
"uniqueItems": true,
|
|
122
|
+
"default": [
|
|
123
|
+
"configured",
|
|
124
|
+
"observed",
|
|
125
|
+
"inferred",
|
|
126
|
+
"self-reported"
|
|
127
|
+
],
|
|
128
|
+
"description": "Controlled vocabulary for temporal-entry.source. APPEND-ONLY across ancestors: descendants MAY add new values but MUST NOT remove existing ones."
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"description": "Temporal-layer behaviour at the workspace level."
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"description": "Layer behaviour configuration. Confidence floor, versioning posture, temporal-entry contract."
|
|
135
|
+
},
|
|
136
|
+
"artifacts": {
|
|
137
|
+
"type": "object",
|
|
138
|
+
"additionalProperties": false,
|
|
139
|
+
"properties": {
|
|
140
|
+
"enabled": {
|
|
141
|
+
"type": "boolean",
|
|
142
|
+
"default": false,
|
|
143
|
+
"description": "Whether the host generates compression artifacts for layer items."
|
|
144
|
+
},
|
|
145
|
+
"tiers": {
|
|
146
|
+
"type": "array",
|
|
147
|
+
"items": {
|
|
148
|
+
"type": "object",
|
|
149
|
+
"required": ["id", "maxTokens"],
|
|
150
|
+
"additionalProperties": false,
|
|
151
|
+
"properties": {
|
|
152
|
+
"id": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
155
|
+
"description": "Stable kebab-case tier id. Conventional values: short, medium, full. Merge key vs parent."
|
|
156
|
+
},
|
|
157
|
+
"maxTokens": {
|
|
158
|
+
"type": "integer",
|
|
159
|
+
"minimum": 1,
|
|
160
|
+
"maximum": 32768,
|
|
161
|
+
"description": "Target maximum tokens for this tier's artifact. Tiers MUST be MONOTONIC: each tier's maxTokens MUST be strictly greater than the previous tier's. The host re-validates monotonicity after merge."
|
|
162
|
+
},
|
|
163
|
+
"strategy": {
|
|
164
|
+
"type": "string",
|
|
165
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
166
|
+
"description": "OPTIONAL — compression algorithm id. Conventional values: aaak, bullet-list, markdown, or a host-defined string."
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
"default": [],
|
|
171
|
+
"description": "Compression tiers. Merge-by-id vs parent; child tier with same id overrides parent's. Monotonicity (strictly increasing maxTokens) is re-validated after merge."
|
|
172
|
+
},
|
|
173
|
+
"locales": {
|
|
174
|
+
"type": "array",
|
|
175
|
+
"items": {
|
|
176
|
+
"type": "string",
|
|
177
|
+
"pattern": "^[a-z]{2}(-[A-Z]{2})?$"
|
|
178
|
+
},
|
|
179
|
+
"uniqueItems": true,
|
|
180
|
+
"default": [],
|
|
181
|
+
"description": "Locales for which artifacts are generated. ISO 639-1 (e.g. 'en') with optional ISO 3166-1 region (e.g. 'en-US'). When non-empty, the host produces one artifact per (layer, tier, locale) triple."
|
|
182
|
+
},
|
|
183
|
+
"refreshPolicy": {
|
|
184
|
+
"enum": ["on-write", "scheduled", "manual"],
|
|
185
|
+
"default": "on-write",
|
|
186
|
+
"description": "When the host regenerates artifacts. on-write = immediately after layer item mutation (correctness); scheduled = host-defined cadence (cheap, eventually consistent); manual = no auto-refresh."
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"description": "Compression artifact policy. AIP-23's first distinctive contribution."
|
|
190
|
+
},
|
|
191
|
+
"binding": {
|
|
192
|
+
"type": "object",
|
|
193
|
+
"additionalProperties": false,
|
|
194
|
+
"properties": {
|
|
195
|
+
"allowedEntities": {
|
|
196
|
+
"type": "array",
|
|
197
|
+
"items": {
|
|
198
|
+
"enum": ["operator", "company", "persona", "user", "skill"]
|
|
199
|
+
},
|
|
200
|
+
"uniqueItems": true,
|
|
201
|
+
"default": ["operator"],
|
|
202
|
+
"description": "Bearer entity kinds allowed to bind layer items. Workspaces narrow to fit their domain (companion-style: [user, persona]; operator-fleet style: [operator, company]). Cross-references: operator → AIP-9, company → AIP-22, persona → AIP-25, skill → AIP-3, user → host-defined."
|
|
203
|
+
},
|
|
204
|
+
"exclusivity": {
|
|
205
|
+
"enum": ["per-entity-and-layer"],
|
|
206
|
+
"default": "per-entity-and-layer",
|
|
207
|
+
"description": "Binding exclusivity rule. ONE-WAY SWITCH on relaxation: once 'per-entity-and-layer' (or stricter, when added) at any ancestor, descendants MUST NOT replace with a more permissive value. Refusal: identity_binding_loosen (HARD). Currently only 'per-entity-and-layer' is defined; future values may add stricter forms."
|
|
208
|
+
},
|
|
209
|
+
"verifyExistence": {
|
|
210
|
+
"type": "boolean",
|
|
211
|
+
"default": true,
|
|
212
|
+
"description": "Whether the host verifies the bearer entity exists before allowing the binding. ONE-WAY SWITCH on relaxation: once 'true' at any ancestor, descendants MUST NOT set false. Refusal: identity_binding_verify_relax (HARD). Setting false is permitted for ephemeral / sandbox deployments but SHOULD never be used in production."
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"description": "Junction policy. Which bearer entity kinds may bind layer items as their identity, and how exclusively."
|
|
216
|
+
},
|
|
217
|
+
"lints": {
|
|
218
|
+
"type": "array",
|
|
219
|
+
"items": {
|
|
220
|
+
"type": "object",
|
|
221
|
+
"required": ["id", "kind", "severity"],
|
|
222
|
+
"additionalProperties": false,
|
|
223
|
+
"properties": {
|
|
224
|
+
"id": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
227
|
+
"description": "Stable kebab-case lint id. Merge key when composing with extends parent."
|
|
228
|
+
},
|
|
229
|
+
"kind": {
|
|
230
|
+
"enum": [
|
|
231
|
+
"orphan-layer",
|
|
232
|
+
"low-confidence-pinned",
|
|
233
|
+
"stale-temporal",
|
|
234
|
+
"unbound-layer",
|
|
235
|
+
"missing-required-layer",
|
|
236
|
+
"custom"
|
|
237
|
+
],
|
|
238
|
+
"description": "Workspace-spanning lint algorithm. AIP-18 per-collection lints (missing-owner, overdue, required-field, etc.) live on COLLECTION.md and are NOT redeclared here. 'custom' delegates to a host-defined check identified by `id`."
|
|
239
|
+
},
|
|
240
|
+
"severity": {
|
|
241
|
+
"enum": ["error", "warn", "info"],
|
|
242
|
+
"description": "Lint severity. Children may soften; governance policies MAY forbid softening below `error`."
|
|
243
|
+
},
|
|
244
|
+
"params": {
|
|
245
|
+
"type": "object",
|
|
246
|
+
"additionalProperties": true,
|
|
247
|
+
"default": {},
|
|
248
|
+
"description": "Kind-specific parameters. e.g. { layers: [soul, personality] } for missing-required-layer; { days: 30 } for stale-temporal; { threshold: 0.5 } for low-confidence-pinned."
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
"default": [],
|
|
253
|
+
"description": "Workspace-spanning lints. Merge-by-id vs parent."
|
|
254
|
+
},
|
|
255
|
+
"defaults": {
|
|
256
|
+
"type": "object",
|
|
257
|
+
"additionalProperties": false,
|
|
258
|
+
"properties": {
|
|
259
|
+
"approvalClass": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"pattern": "^(auto|always|on-mutate|policy:[A-Za-z0-9_./:-]+)$",
|
|
262
|
+
"description": "Approval class for layer mutations. 'auto' = no gate; 'always' = every mutation requires approval; 'on-mutate' = approval on field-level mutations; 'policy:<ref>' = delegate to an AIP-7 policy."
|
|
263
|
+
},
|
|
264
|
+
"auditMutations": {
|
|
265
|
+
"type": "boolean",
|
|
266
|
+
"default": false,
|
|
267
|
+
"description": "Whether layer mutations are audited. ONE-WAY SWITCH: once true at any ancestor, descendants MUST NOT set false. Refusal: identity_audit_downgrade (HARD)."
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"description": "Default approval and audit posture."
|
|
271
|
+
},
|
|
272
|
+
"display": {
|
|
273
|
+
"type": "object",
|
|
274
|
+
"additionalProperties": false,
|
|
275
|
+
"properties": {
|
|
276
|
+
"homePage": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9_:-]*$",
|
|
279
|
+
"description": "OPTIONAL — id of the layer or item to use as the identity landing page (e.g. SOUL-acme-founder)."
|
|
280
|
+
},
|
|
281
|
+
"defaultGrouping": {
|
|
282
|
+
"enum": ["layer", "entity"],
|
|
283
|
+
"description": "Default grouping for list views. 'layer' = one section per layer kind; 'entity' = one section per bearer entity."
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"description": "Display hints for UIs that render the identity. Runtime-agnostic."
|
|
287
|
+
},
|
|
288
|
+
"metadata": {
|
|
289
|
+
"type": "object",
|
|
290
|
+
"additionalProperties": true,
|
|
291
|
+
"default": {},
|
|
292
|
+
"description": "Vendor-specific extensions, namespaced under <vendor>. Deep-merged across the extends chain. MUST NOT change the meaning of any spec field."
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"allOf": [
|
|
296
|
+
{
|
|
297
|
+
"description": "A view (any manifest with appliesTo set) MUST extend a parent. A workspace-root manifest has neither field.",
|
|
298
|
+
"if": {
|
|
299
|
+
"required": ["appliesTo"],
|
|
300
|
+
"properties": {
|
|
301
|
+
"appliesTo": { "type": "array", "minItems": 1 }
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"then": {
|
|
305
|
+
"required": ["extends"]
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
],
|
|
309
|
+
"$defs": {
|
|
310
|
+
"collectionEntry": {
|
|
311
|
+
"oneOf": [
|
|
312
|
+
{ "$ref": "#/$defs/collectionInline" },
|
|
313
|
+
{ "$ref": "#/$defs/collectionRef" }
|
|
314
|
+
],
|
|
315
|
+
"description": "One layer-collection declaration. Either an inline AIP-18 collection schema, or a ref (path or ws:// URI) optionally aliased and version-pinned."
|
|
316
|
+
},
|
|
317
|
+
"collectionInline": {
|
|
318
|
+
"type": "object",
|
|
319
|
+
"required": ["inline"],
|
|
320
|
+
"additionalProperties": false,
|
|
321
|
+
"properties": {
|
|
322
|
+
"inline": {
|
|
323
|
+
"$ref": "https://agentproto.sh/schemas/aip-18/COLLECTION.schema.json#/$defs/schema",
|
|
324
|
+
"description": "Full AIP-18 collection.schema/v1 frontmatter, parsed in-place. The host registers the layer collection directly via AIP-18's defineCollection without loading a separate file."
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
"description": "Inline layer-collection declaration. Full AIP-18 schema embedded; hosts MUST validate it against the AIP-18 COLLECTION schema before registration."
|
|
328
|
+
},
|
|
329
|
+
"collectionRef": {
|
|
330
|
+
"type": "object",
|
|
331
|
+
"required": ["ref"],
|
|
332
|
+
"additionalProperties": false,
|
|
333
|
+
"properties": {
|
|
334
|
+
"ref": {
|
|
335
|
+
"type": "string",
|
|
336
|
+
"minLength": 1,
|
|
337
|
+
"maxLength": 512,
|
|
338
|
+
"pattern": "^((\\.\\./|\\./)[^\\s]+/COLLECTION\\.md|ws://collections/[a-z][a-z0-9-]*)$",
|
|
339
|
+
"description": "Either a relative path to a COLLECTION.md (file ref) or a ws://collections/<slug> URI (registry import). The host loads the referenced collection via AIP-18 and registers it under its name (or the alias, if set)."
|
|
340
|
+
},
|
|
341
|
+
"alias": {
|
|
342
|
+
"type": "string",
|
|
343
|
+
"pattern": "^[a-z][a-z0-9-]*[a-z0-9]$",
|
|
344
|
+
"minLength": 2,
|
|
345
|
+
"maxLength": 96,
|
|
346
|
+
"description": "OPTIONAL — workspace-local name to expose the layer collection under. Two collections resolving to the same effective name (alias or upstream) is a HARD failure: identity_collection_alias_conflict."
|
|
347
|
+
},
|
|
348
|
+
"version": {
|
|
349
|
+
"type": "string",
|
|
350
|
+
"minLength": 1,
|
|
351
|
+
"maxLength": 64,
|
|
352
|
+
"description": "OPTIONAL — semver range (e.g. \"1.x\", \"^1.2\", \"1.2.0\"). When set, schema bumps outside the range fail with collection_item_schema_pinned_drift (HARD, AIP-18 vocabulary) at item load time."
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
"description": "Layer-collection ref declaration. Either a file path (./.. /COLLECTION.md) or a registry URI (ws://collections/<slug>)."
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|