@mnstry/atelier 0.2.0-alpha.14 → 0.2.0-alpha.16

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 (236) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +80 -47
  3. package/SECURITY.md +1 -1
  4. package/TRADEMARKS.md +2 -2
  5. package/contracts/atelier-extension-manifest.v1.schema.json +412 -0
  6. package/contracts/atelier-graph-view.v1.schema.json +1085 -0
  7. package/contracts/public-api-baseline.json +298 -19
  8. package/docs/README.md +90 -0
  9. package/docs/blocks/claims.md +2 -2
  10. package/docs/blocks/conformance-admission.md +1 -1
  11. package/docs/{atelier-sync.md → guides/atelier-sync.md} +20 -14
  12. package/docs/guides/co-authoring.md +113 -0
  13. package/docs/{distributions.md → guides/distributions.md} +13 -8
  14. package/docs/guides/extensions.md +189 -0
  15. package/docs/guides/graph-refresh.md +152 -0
  16. package/docs/guides/graph-workspace.md +76 -0
  17. package/docs/{ingestion.md → guides/ingestion.md} +13 -12
  18. package/docs/{knowledge-workspace.md → guides/knowledge-workspace.md} +2 -2
  19. package/docs/{learning.md → guides/learning.md} +12 -5
  20. package/docs/{obsidian.md → guides/obsidian.md} +134 -47
  21. package/docs/guides/ontology-guide.md +111 -0
  22. package/docs/{personal-workspace.md → guides/personal-workspace.md} +7 -4
  23. package/docs/{research-starter.md → guides/research-starter.md} +1 -1
  24. package/docs/{tenant-readiness.md → guides/tenant-readiness.md} +39 -0
  25. package/docs/{upgrade.md → guides/upgrade.md} +40 -9
  26. package/docs/knowledge-health/assessment/capabilities.md +6 -15
  27. package/docs/knowledge-health/facilitator.md +15 -4
  28. package/docs/knowledge-health/{devday/participant-response.md → participant-response.md} +4 -2
  29. package/docs/knowledge-health/quickstart.md +97 -75
  30. package/docs/knowledge-health/readme.md +13 -5
  31. package/docs/maintainers/describing-the-atelier.md +173 -0
  32. package/docs/{release-engineering.md → maintainers/release-engineering.md} +5 -5
  33. package/docs/{announcements.md → reference/announcements.md} +1 -1
  34. package/docs/{architecture.md → reference/architecture.md} +31 -5
  35. package/docs/{atelier-runtime.md → reference/atelier-runtime.md} +1 -1
  36. package/docs/{connected-composition.md → reference/connected-composition.md} +7 -10
  37. package/docs/{coordination.md → reference/coordination.md} +1 -1
  38. package/docs/{decisions.md → reference/decisions.md} +3 -3
  39. package/docs/{design.md → reference/design.md} +1 -1
  40. package/docs/reference/edge-policy.md +151 -0
  41. package/docs/reference/graph-view-structured.md +119 -0
  42. package/docs/reference/graph-view.md +139 -0
  43. package/docs/reference/graph-workspace.md +37 -0
  44. package/docs/{intake-and-guides.md → reference/intake-and-guides.md} +3 -4
  45. package/docs/{knowledge-graph.md → reference/knowledge-graph.md} +120 -6
  46. package/docs/{local-services.md → reference/local-services.md} +1 -1
  47. package/docs/{obsidian-contract.md → reference/obsidian-contract.md} +6 -4
  48. package/docs/{obsidian-plugin.md → reference/obsidian-plugin.md} +5 -66
  49. package/docs/{practical-judgment.md → reference/phronesis.md} +12 -3
  50. package/docs/reference/portability.md +92 -0
  51. package/docs/{portable-presentation.md → reference/portable-presentation.md} +2 -2
  52. package/docs/{presentation-consumer-boundaries.md → reference/presentation-consumer-boundaries.md} +5 -0
  53. package/docs/{project-options.md → reference/project-options.md} +17 -0
  54. package/docs/{repo-boundary-guard.md → reference/repo-boundary-guard.md} +27 -4
  55. package/docs/{review-portability.md → reference/review-portability.md} +4 -0
  56. package/docs/{template-profile.md → reference/template-profile.md} +1 -1
  57. package/docs/{trackables.md → reference/trackables.md} +2 -2
  58. package/docs/start/independent-start.md +89 -0
  59. package/docs/{install.md → start/install.md} +6 -6
  60. package/docs/{knowledge-setup.md → start/knowledge-setup.md} +5 -5
  61. package/docs/{research-starter-quickstart.md → start/research-starter-quickstart.md} +6 -6
  62. package/fixtures/atelier-architecture/catalog/invalid/document.json +2 -2
  63. package/fixtures/atelier-architecture/catalog/valid/document.json +2 -2
  64. package/fixtures/graph-view/synthetic-authorized-input.v1.json +437 -0
  65. package/fixtures/graph-view/synthetic-view.v1.json +1 -0
  66. package/fixtures/knowledge-health/workshop/README.md +1 -1
  67. package/fixtures/templates/local-library.v1.json +3 -1
  68. package/package.json +21 -8
  69. package/skills/claude/atelier-guided-upgrade/SKILL.md +1 -1
  70. package/skills/claude/atelier-knowledge-setup/SKILL.md +2 -2
  71. package/skills/claude/atelier-local-service/SKILL.md +1 -1
  72. package/skills/claude/atelier-practical-judgment/SKILL.md +7 -2
  73. package/skills/claude/atelier-skill-steward/SKILL.md +1 -1
  74. package/skills/claude/mnstry-readiness/SKILL.md +2 -2
  75. package/skills/codex/atelier-guided-upgrade/SKILL.md +1 -1
  76. package/skills/codex/atelier-knowledge-setup/SKILL.md +2 -2
  77. package/skills/codex/atelier-local-service/SKILL.md +1 -1
  78. package/skills/codex/atelier-practical-judgment/SKILL.md +7 -2
  79. package/skills/codex/atelier-skill-steward/SKILL.md +1 -1
  80. package/skills/codex/mnstry-readiness/SKILL.md +2 -2
  81. package/src/architecture/catalog.mjs +2 -2
  82. package/src/attestation/sign.mjs +1 -1
  83. package/src/boundary/content-rules.mjs +5 -4
  84. package/src/boundary/policy.mjs +60 -12
  85. package/src/cli/run.mjs +24 -8
  86. package/src/commands/distribution.mjs +1 -1
  87. package/src/commands/extension.mjs +27 -0
  88. package/src/commands/ingest.mjs +1 -1
  89. package/src/commands/learn.mjs +1 -1
  90. package/src/commands/obsidian.mjs +28 -16
  91. package/src/commands/review.mjs +3 -0
  92. package/src/edge-policy/contract.mjs +69 -0
  93. package/src/edge-policy/policy.mjs +142 -0
  94. package/src/edge-policy/source-citation-adapter.mjs +43 -0
  95. package/src/extension-packs/loader.mjs +4 -3
  96. package/src/extensions/admission.mjs +83 -0
  97. package/src/extensions/client.d.mts +23 -0
  98. package/src/extensions/client.mjs +99 -0
  99. package/src/extensions/contracts.d.mts +29 -0
  100. package/src/extensions/contracts.mjs +163 -0
  101. package/src/extensions/convex.d.mts +24 -0
  102. package/src/extensions/convex.mjs +189 -0
  103. package/src/extensions/delegation.mjs +54 -0
  104. package/src/extensions/drizzle.d.mts +11 -0
  105. package/src/extensions/drizzle.mjs +33 -0
  106. package/src/extensions/postgres.d.mts +7 -0
  107. package/src/extensions/postgres.mjs +66 -0
  108. package/src/extensions/prisma.d.mts +13 -0
  109. package/src/extensions/prisma.mjs +63 -0
  110. package/src/extensions/project.mjs +432 -0
  111. package/src/extensions/scaffold-convex.mjs +130 -0
  112. package/src/extensions/scaffold-sql.mjs +144 -0
  113. package/src/extensions/server.d.mts +20 -0
  114. package/src/extensions/server.mjs +102 -0
  115. package/src/extensions/sql-scope.mjs +22 -0
  116. package/src/graph/knowledge-graph.mjs +1 -1
  117. package/src/graph/repo-contribution.mjs +405 -0
  118. package/src/graph/repo-contribution.types.mjs +32 -0
  119. package/src/graph-access/edge-decision-adapter.mjs +41 -0
  120. package/src/graph-access/edge-record-adapter.mjs +73 -0
  121. package/src/graph-access/index.mjs +253 -0
  122. package/src/graph-access/multi-contribution-record-adapter.mjs +101 -0
  123. package/src/graph-access/multi-record-projection-adapter.mjs +74 -0
  124. package/src/graph-access/source-adapter.mjs +81 -0
  125. package/src/graph-refresh/compare.mjs +110 -0
  126. package/src/graph-refresh/controller.mjs +324 -0
  127. package/src/graph-refresh/index.mjs +3 -0
  128. package/src/graph-refresh/local.mjs +78 -0
  129. package/src/graph-view/babylon/babylon-scene-port.mjs +64 -0
  130. package/src/graph-view/babylon/index.mjs +2 -0
  131. package/src/graph-view/babylon/navigator.mjs +312 -0
  132. package/src/graph-view/babylon/provenance.mjs +36 -0
  133. package/src/graph-view/babylon/scene-controller.mjs +131 -0
  134. package/src/graph-view/babylon/semantic-picking.mjs +35 -0
  135. package/src/graph-view/babylon/web-host.mjs +188 -0
  136. package/src/graph-view/cli.mjs +3 -0
  137. package/src/graph-view/command.mjs +34 -0
  138. package/src/graph-view/contracts.mjs +79 -0
  139. package/src/graph-view/errors.mjs +5 -0
  140. package/src/graph-view/index.mjs +4 -0
  141. package/src/graph-view/intents.mjs +30 -0
  142. package/src/graph-view/query.mjs +213 -0
  143. package/src/graph-view/refs.mjs +2 -0
  144. package/src/graph-view/structured/browser.mjs +262 -0
  145. package/src/graph-view/structured/styles.mjs +8 -0
  146. package/src/graph-workspace/authoring.mjs +185 -0
  147. package/src/graph-workspace/browser/dom.mjs +23 -0
  148. package/src/graph-workspace/browser/index.mjs +6 -0
  149. package/src/graph-workspace/browser/map.mjs +374 -0
  150. package/src/graph-workspace/browser/review.mjs +55 -0
  151. package/src/graph-workspace/browser/styles.mjs +11 -0
  152. package/src/graph-workspace/browser/workbench.mjs +351 -0
  153. package/src/graph-workspace/browser/workspace.mjs +433 -0
  154. package/src/graph-workspace/disclosure.mjs +39 -0
  155. package/src/graph-workspace/geometry.mjs +78 -0
  156. package/src/graph-workspace/index.mjs +11 -0
  157. package/src/graph-workspace/labels.mjs +50 -0
  158. package/src/graph-workspace/model.mjs +109 -0
  159. package/src/graph-workspace/recipes.mjs +100 -0
  160. package/src/graph-workspace/scale.mjs +98 -0
  161. package/src/graph-workspace/theme.mjs +156 -0
  162. package/src/knowledge/ontology-guide.mjs +152 -0
  163. package/src/knowledge-health/proof/installed-check.mjs +2 -2
  164. package/src/knowledge-health/rule-identity.mjs +7 -7
  165. package/src/knowledge-health/workshop.mjs +22 -2
  166. package/src/personal-workspace/selection.mjs +17 -2
  167. package/src/project/config.mjs +1 -1
  168. package/src/project/providers/github.mjs +24 -0
  169. package/src/project/repo-identity.mjs +3 -22
  170. package/src/projection/obsidian/contracts.mjs +1 -1
  171. package/src/projection/obsidian/materialize/path-registry.mjs +1 -1
  172. package/src/projection/obsidian/materialize/prepare-view.mjs +1 -1
  173. package/src/projection/obsidian/materialize/redaction.mjs +1 -1
  174. package/src/projection/obsidian/personal-workspace.mjs +24 -28
  175. package/src/projection/obsidian/plugin-bridge/channel.mjs +1 -1
  176. package/src/projection/obsidian/publication/publisher.mjs +25 -4
  177. package/src/projection/project.mjs +18 -14
  178. package/src/readiness/readiness.mjs +20 -11
  179. package/src/readiness-protocols/bundled-pack.mjs +14 -766
  180. package/src/readiness-protocols/bundled-selection.mjs +32 -0
  181. package/src/readiness-protocols/evidence.mjs +2 -1
  182. package/src/readiness-protocols/packs/mnstry.mjs +766 -0
  183. package/src/readiness-protocols/runtime.mjs +43 -6
  184. package/src/runtime/obsidian/engine.mjs +99 -26
  185. package/src/runtime/obsidian/lifecycle.mjs +3 -3
  186. package/src/runtime/obsidian/login-item.mjs +2 -2
  187. package/src/runtime/obsidian/machine-settings.mjs +52 -8
  188. package/src/runtime/obsidian/opening.mjs +2 -2
  189. package/src/runtime/obsidian/personal-selection.mjs +88 -26
  190. package/src/runtime/obsidian/pipeline.mjs +75 -7
  191. package/src/runtime/obsidian/private-lock.mjs +11 -2
  192. package/src/runtime/obsidian/selection-continuity.mjs +124 -0
  193. package/src/runtime/obsidian/service-main.mjs +15 -9
  194. package/src/runtime/obsidian/service.mjs +14 -0
  195. package/src/runtime/obsidian/unheld-evidence.mjs +1 -1
  196. package/src/runtime/obsidian/view-permission.mjs +2 -1
  197. package/src/upgrade/upgrade.mjs +23 -4
  198. package/templates/distribution-workspace/README.md +2 -2
  199. package/templates/external-project-workspace/atelier.project.json +3 -0
  200. package/templates/external-project-workspace/pack-lifecycle.json +3 -1
  201. package/templates/knowledge-workspace/README.md +2 -2
  202. package/docs/integration-and-review-plan.md +0 -409
  203. package/docs/integration-contract-decisions.md +0 -44
  204. package/docs/knowledge-health/devday/facilitator.md +0 -16
  205. package/docs/knowledge-health/devday/public-default.md +0 -107
  206. package/docs/knowledge-health/devday/quickstart.md +0 -18
  207. package/docs/knowledge-health/devday/support.md +0 -22
  208. package/docs/knowledge-health/exercise.md +0 -17
  209. package/docs/knowledge-health/support.md +0 -34
  210. package/docs/presentation-review-disposition.md +0 -47
  211. package/docs/progressive-ingestion-acceptance.md +0 -89
  212. package/docs/progressive-ingestion.md +0 -235
  213. /package/docs/{capability-stewardship.md → guides/capability-stewardship.md} +0 -0
  214. /package/docs/{exact-upgrades.md → guides/exact-upgrades.md} +0 -0
  215. /package/docs/{guided-upgrades.md → guides/guided-upgrades.md} +0 -0
  216. /package/docs/{inquiry-harnesses.md → guides/inquiry-harnesses.md} +0 -0
  217. /package/docs/{learning-harnesses.md → guides/learning-harnesses.md} +0 -0
  218. /package/docs/{local-review.md → guides/local-review.md} +0 -0
  219. /package/docs/{skill-steward.md → guides/skill-steward.md} +0 -0
  220. /package/docs/{template-upgrades.md → guides/template-upgrades.md} +0 -0
  221. /package/docs/{assurance-controls.md → maintainers/assurance-controls.md} +0 -0
  222. /package/docs/{attestation.md → reference/attestation.md} +0 -0
  223. /package/docs/{coauthor-session.md → reference/coauthor-session.md} +0 -0
  224. /package/docs/{continuity.md → reference/continuity.md} +0 -0
  225. /package/docs/{contract-stability.md → reference/contract-stability.md} +0 -0
  226. /package/docs/{decision-practices.md → reference/decision-practices.md} +0 -0
  227. /package/docs/{evidence-navigation.md → reference/evidence-navigation.md} +0 -0
  228. /package/docs/{extension-pack-lifecycle.md → reference/extension-pack-lifecycle.md} +0 -0
  229. /package/docs/{interaction-and-reflection.md → reference/interaction-and-reflection.md} +0 -0
  230. /package/docs/{local-state.md → reference/local-state.md} +0 -0
  231. /package/docs/{ontology.md → reference/ontology.md} +0 -0
  232. /package/docs/{optional-ingestion.md → reference/optional-ingestion.md} +0 -0
  233. /package/docs/{project-command-inventory.md → reference/project-command-inventory.md} +0 -0
  234. /package/docs/{semantic-ingestion.md → reference/semantic-ingestion.md} +0 -0
  235. /package/docs/{semantic-operation.md → reference/semantic-operation.md} +0 -0
  236. /package/docs/{vault-service.md → reference/vault-service.md} +0 -0
@@ -0,0 +1,412 @@
1
+ {
2
+ "type": "object",
3
+ "additionalProperties": false,
4
+ "properties": {
5
+ "schema": {
6
+ "const": "mnstry.extension-manifest/v1"
7
+ },
8
+ "extensionId": {
9
+ "type": "string",
10
+ "minLength": 1,
11
+ "maxLength": 128,
12
+ "pattern": "^[a-z0-9][a-z0-9._-]{2,127}$",
13
+ "allOf": [
14
+ {
15
+ "pattern": "^[^\\u0000-\\u001f]*$"
16
+ }
17
+ ]
18
+ },
19
+ "releaseVersion": {
20
+ "type": "string",
21
+ "minLength": 1,
22
+ "maxLength": 128,
23
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$",
24
+ "allOf": [
25
+ {
26
+ "pattern": "^[^\\u0000-\\u001f]*$"
27
+ }
28
+ ]
29
+ },
30
+ "releaseDigest": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "maxLength": 64,
34
+ "pattern": "^[a-f0-9]{64}$",
35
+ "allOf": [
36
+ {
37
+ "pattern": "^[^\\u0000-\\u001f]*$"
38
+ }
39
+ ]
40
+ },
41
+ "protocol": {
42
+ "const": "mnstry.extension/v1"
43
+ },
44
+ "compatibility": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "properties": {
48
+ "sdkMajor": {
49
+ "const": 1
50
+ },
51
+ "rootContracts": {
52
+ "type": "array",
53
+ "maxItems": 64,
54
+ "uniqueItems": true,
55
+ "items": {
56
+ "type": "string",
57
+ "minLength": 1,
58
+ "maxLength": 256,
59
+ "pattern": "^[^\\u0000-\\u001f]*$"
60
+ }
61
+ },
62
+ "hosts": {
63
+ "type": "array",
64
+ "minItems": 1,
65
+ "maxItems": 2,
66
+ "uniqueItems": true,
67
+ "items": {
68
+ "enum": [
69
+ "web",
70
+ "native"
71
+ ]
72
+ }
73
+ },
74
+ "ext": {
75
+ "type": "object",
76
+ "maxProperties": 0
77
+ }
78
+ },
79
+ "required": [
80
+ "sdkMajor",
81
+ "rootContracts",
82
+ "hosts"
83
+ ]
84
+ },
85
+ "deployment": {
86
+ "type": "object",
87
+ "additionalProperties": false,
88
+ "properties": {
89
+ "profile": {
90
+ "enum": [
91
+ "postgres-sql",
92
+ "drizzle-db-first",
93
+ "drizzle-code-first",
94
+ "prisma-7-postgres",
95
+ "prisma-8-postgres-experimental",
96
+ "convex-native"
97
+ ]
98
+ },
99
+ "bundleDigest": {
100
+ "type": "string",
101
+ "minLength": 1,
102
+ "maxLength": 64,
103
+ "pattern": "^[a-f0-9]{64}$",
104
+ "allOf": [
105
+ {
106
+ "pattern": "^[^\\u0000-\\u001f]*$"
107
+ }
108
+ ]
109
+ },
110
+ "schemaDigest": {
111
+ "type": "string",
112
+ "minLength": 1,
113
+ "maxLength": 64,
114
+ "pattern": "^[a-f0-9]{64}$",
115
+ "allOf": [
116
+ {
117
+ "pattern": "^[^\\u0000-\\u001f]*$"
118
+ }
119
+ ]
120
+ },
121
+ "ext": {
122
+ "type": "object",
123
+ "maxProperties": 0
124
+ }
125
+ },
126
+ "required": [
127
+ "profile",
128
+ "bundleDigest",
129
+ "schemaDigest"
130
+ ]
131
+ },
132
+ "actions": {
133
+ "type": "array",
134
+ "minItems": 1,
135
+ "maxItems": 64,
136
+ "items": {
137
+ "type": "object",
138
+ "additionalProperties": false,
139
+ "properties": {
140
+ "id": {
141
+ "type": "string",
142
+ "minLength": 1,
143
+ "maxLength": 128,
144
+ "pattern": "^[a-z0-9][a-z0-9._-]{2,127}$",
145
+ "not": {
146
+ "pattern": "^(?:lifecycle|installation|extension)\\."
147
+ },
148
+ "allOf": [
149
+ {
150
+ "pattern": "^[^\\u0000-\\u001f]*$"
151
+ }
152
+ ]
153
+ },
154
+ "effect": {
155
+ "enum": [
156
+ "read",
157
+ "write"
158
+ ]
159
+ },
160
+ "scope": {
161
+ "enum": [
162
+ "member",
163
+ "tenant"
164
+ ]
165
+ },
166
+ "inputSchemaRef": {
167
+ "type": "string",
168
+ "minLength": 1,
169
+ "maxLength": 256,
170
+ "pattern": "^schemas/[a-zA-Z0-9._-]+\\.json$",
171
+ "allOf": [
172
+ {
173
+ "pattern": "^[^\\u0000-\\u001f]*$"
174
+ }
175
+ ]
176
+ },
177
+ "outputSchemaRef": {
178
+ "type": "string",
179
+ "minLength": 1,
180
+ "maxLength": 256,
181
+ "pattern": "^schemas/[a-zA-Z0-9._-]+\\.json$",
182
+ "allOf": [
183
+ {
184
+ "pattern": "^[^\\u0000-\\u001f]*$"
185
+ }
186
+ ]
187
+ },
188
+ "timeoutMs": {
189
+ "type": "integer",
190
+ "minimum": 1,
191
+ "maximum": 30000
192
+ },
193
+ "ext": {
194
+ "type": "object",
195
+ "maxProperties": 0
196
+ }
197
+ },
198
+ "required": [
199
+ "id",
200
+ "effect",
201
+ "scope",
202
+ "inputSchemaRef",
203
+ "outputSchemaRef",
204
+ "timeoutMs"
205
+ ]
206
+ },
207
+ "uniqueItems": true
208
+ },
209
+ "recovery": {
210
+ "type": "object",
211
+ "additionalProperties": false,
212
+ "properties": {
213
+ "lookupActionId": {
214
+ "type": "string",
215
+ "minLength": 1,
216
+ "maxLength": 128,
217
+ "pattern": "^[a-z0-9][a-z0-9._-]{2,127}$",
218
+ "allOf": [
219
+ {
220
+ "pattern": "^[^\\u0000-\\u001f]*$"
221
+ }
222
+ ]
223
+ },
224
+ "ext": {
225
+ "type": "object",
226
+ "maxProperties": 0
227
+ }
228
+ },
229
+ "required": [
230
+ "lookupActionId"
231
+ ]
232
+ },
233
+ "permissions": {
234
+ "type": "object",
235
+ "additionalProperties": false,
236
+ "properties": {
237
+ "rootReads": {
238
+ "type": "array",
239
+ "maxItems": 64,
240
+ "uniqueItems": true,
241
+ "items": {
242
+ "type": "string",
243
+ "minLength": 1,
244
+ "maxLength": 256,
245
+ "pattern": "^[^\\u0000-\\u001f]*$"
246
+ }
247
+ },
248
+ "rootWrites": {
249
+ "type": "array",
250
+ "maxItems": 64,
251
+ "uniqueItems": true,
252
+ "items": {
253
+ "type": "string",
254
+ "minLength": 1,
255
+ "maxLength": 256,
256
+ "pattern": "^[^\\u0000-\\u001f]*$"
257
+ }
258
+ },
259
+ "egress": {
260
+ "type": "array",
261
+ "maxItems": 64,
262
+ "uniqueItems": true,
263
+ "items": {
264
+ "type": "string",
265
+ "minLength": 1,
266
+ "maxLength": 256,
267
+ "pattern": "^[^\\u0000-\\u001f]*$"
268
+ }
269
+ },
270
+ "ext": {
271
+ "type": "object",
272
+ "maxProperties": 0
273
+ }
274
+ },
275
+ "required": [
276
+ "rootReads",
277
+ "rootWrites",
278
+ "egress"
279
+ ]
280
+ },
281
+ "surfaces": {
282
+ "type": "array",
283
+ "maxItems": 32,
284
+ "items": {
285
+ "type": "object",
286
+ "additionalProperties": false,
287
+ "properties": {
288
+ "id": {
289
+ "type": "string",
290
+ "minLength": 1,
291
+ "maxLength": 128,
292
+ "pattern": "^[a-z0-9][a-z0-9._-]{2,127}$",
293
+ "allOf": [
294
+ {
295
+ "pattern": "^[^\\u0000-\\u001f]*$"
296
+ }
297
+ ]
298
+ },
299
+ "compositionDigest": {
300
+ "type": "string",
301
+ "minLength": 1,
302
+ "maxLength": 64,
303
+ "pattern": "^[a-f0-9]{64}$",
304
+ "allOf": [
305
+ {
306
+ "pattern": "^[^\\u0000-\\u001f]*$"
307
+ }
308
+ ]
309
+ },
310
+ "actionIds": {
311
+ "type": "array",
312
+ "maxItems": 64,
313
+ "uniqueItems": true,
314
+ "items": {
315
+ "type": "string",
316
+ "minLength": 1,
317
+ "maxLength": 256,
318
+ "pattern": "^[^\\u0000-\\u001f]*$"
319
+ }
320
+ },
321
+ "ext": {
322
+ "type": "object",
323
+ "maxProperties": 0
324
+ }
325
+ },
326
+ "required": [
327
+ "id",
328
+ "compositionDigest",
329
+ "actionIds"
330
+ ]
331
+ },
332
+ "uniqueItems": true
333
+ },
334
+ "data": {
335
+ "type": "object",
336
+ "additionalProperties": false,
337
+ "properties": {
338
+ "classes": {
339
+ "type": "array",
340
+ "maxItems": 64,
341
+ "uniqueItems": true,
342
+ "items": {
343
+ "type": "string",
344
+ "minLength": 1,
345
+ "maxLength": 256,
346
+ "pattern": "^[^\\u0000-\\u001f]*$"
347
+ }
348
+ },
349
+ "retention": {
350
+ "const": "until-user-delete"
351
+ },
352
+ "exportVersion": {
353
+ "const": 1
354
+ },
355
+ "schemaVersion": {
356
+ "type": "string",
357
+ "minLength": 1,
358
+ "maxLength": 128,
359
+ "pattern": "^[^\\u0000-\\u001f]*$"
360
+ },
361
+ "readableSchemaVersions": {
362
+ "type": "array",
363
+ "maxItems": 64,
364
+ "uniqueItems": true,
365
+ "items": {
366
+ "type": "string",
367
+ "minLength": 1,
368
+ "maxLength": 256,
369
+ "pattern": "^[^\\u0000-\\u001f]*$"
370
+ }
371
+ },
372
+ "ext": {
373
+ "type": "object",
374
+ "maxProperties": 0
375
+ }
376
+ },
377
+ "required": [
378
+ "classes",
379
+ "retention",
380
+ "exportVersion",
381
+ "schemaVersion",
382
+ "readableSchemaVersions"
383
+ ]
384
+ },
385
+ "contractVersion": {
386
+ "type": "string",
387
+ "pattern": "^1\\.[0-9]+\\.[0-9]+$",
388
+ "maxLength": 128
389
+ },
390
+ "ext": {
391
+ "type": "object",
392
+ "maxProperties": 0
393
+ }
394
+ },
395
+ "required": [
396
+ "schema",
397
+ "extensionId",
398
+ "releaseVersion",
399
+ "releaseDigest",
400
+ "protocol",
401
+ "compatibility",
402
+ "deployment",
403
+ "actions",
404
+ "permissions",
405
+ "surfaces",
406
+ "data"
407
+ ],
408
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
409
+ "$id": "https://mnstry.ai/schemas/atelier/atelier-extension-manifest.v1.schema.json",
410
+ "$comment": "contract revision 1.0.0; Runtime parseManifest additionally enforces total byte/depth limits, unique action/surface IDs, declared surface action references, recovery read/member binding, current readable schema inclusion and well-formed Unicode. Hosts must apply it after JSON Schema validation.",
411
+ "title": "Portable database extension manifest"
412
+ }