@mnstry/atelier 0.2.0-alpha.6 → 0.2.0-alpha.8

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 (374) hide show
  1. package/CHANGELOG.md +176 -0
  2. package/README.md +59 -15
  3. package/SECURITY.md +6 -1
  4. package/contracts/atelier-adoption-policy.v1.schema.json +49 -0
  5. package/contracts/atelier-coauthor.v1.schema.json +163 -0
  6. package/contracts/atelier-decision-request.v1.schema.json +476 -0
  7. package/contracts/atelier-decision-result.v1.schema.json +500 -0
  8. package/contracts/atelier-guide.v1.schema.json +227 -0
  9. package/contracts/atelier-intake.v1.schema.json +151 -0
  10. package/contracts/atelier-migration.v2.schema.json +61 -0
  11. package/contracts/atelier-obsidian-acceptance-receipt.v1.schema.json +211 -0
  12. package/contracts/atelier-obsidian-apply-policy.v1.schema.json +298 -0
  13. package/contracts/atelier-obsidian-corpus-profile.v1.schema.json +98 -0
  14. package/contracts/atelier-obsidian-edit-operation.v1.schema.json +138 -0
  15. package/contracts/atelier-obsidian-ext-settings.v1.schema.json +287 -0
  16. package/contracts/atelier-obsidian-generation-manifest.v1.schema.json +353 -0
  17. package/contracts/atelier-obsidian-proposal-receipt.v1.schema.json +110 -0
  18. package/contracts/atelier-obsidian-publication-journal.v1.schema.json +167 -0
  19. package/contracts/atelier-obsidian-scope.v1.schema.json +264 -0
  20. package/contracts/atelier-obsidian-service-state.v1.schema.json +149 -0
  21. package/contracts/atelier-obsidian-source-snapshot.v1.schema.json +179 -0
  22. package/contracts/atelier-pane-presentation.v1.schema.json +76 -0
  23. package/contracts/atelier-presentation.v1.schema.json +1293 -0
  24. package/contracts/atelier-review.v1.schema.json +1601 -0
  25. package/contracts/atelier-skill-steward.v1.schema.json +692 -0
  26. package/contracts/atelier-upgrade-plan.v2.schema.json +398 -0
  27. package/contracts/atelier-upgrade-receipt.v1.schema.json +99 -0
  28. package/contracts/atelier-vault-publication.v1.schema.json +58 -0
  29. package/docs/assurance-controls.md +9 -1
  30. package/docs/atelier-sync.md +5 -4
  31. package/docs/blocks/claims.md +15 -10
  32. package/docs/blocks/will-not-do.md +4 -1
  33. package/docs/coauthor-session.md +57 -0
  34. package/docs/connected-composition.md +75 -0
  35. package/docs/decisions.md +167 -0
  36. package/docs/exact-upgrades.md +159 -0
  37. package/docs/extension-pack-lifecycle.md +33 -0
  38. package/docs/guided-upgrades.md +99 -0
  39. package/docs/install.md +65 -9
  40. package/docs/intake-and-guides.md +65 -0
  41. package/docs/integration-and-review-plan.md +409 -0
  42. package/docs/integration-contract-decisions.md +22 -0
  43. package/docs/local-review.md +84 -0
  44. package/docs/local-services.md +227 -0
  45. package/docs/local-state.md +107 -0
  46. package/docs/obsidian-contract.md +687 -0
  47. package/docs/obsidian.md +387 -0
  48. package/docs/portable-presentation.md +328 -0
  49. package/docs/presentation-consumer-boundaries.md +75 -0
  50. package/docs/presentation-review-disposition.md +47 -0
  51. package/docs/project-command-inventory.md +38 -0
  52. package/docs/project-options.md +53 -0
  53. package/docs/release-engineering.md +88 -0
  54. package/docs/review-portability.md +55 -0
  55. package/docs/skill-steward.md +156 -0
  56. package/docs/upgrade.md +55 -2
  57. package/docs/vault-service.md +292 -0
  58. package/fixtures/atelier-coauthor/invalid/authority.v1.json +5 -0
  59. package/fixtures/atelier-coauthor/valid/config.v1.json +12 -0
  60. package/fixtures/atelier-guide/invalid/authority.v1.json +11 -0
  61. package/fixtures/atelier-guide/valid/capability.v1.json +10 -0
  62. package/fixtures/atelier-guide/valid/consent.v1.json +11 -0
  63. package/fixtures/atelier-guide/valid/engagement.v1.json +7 -0
  64. package/fixtures/atelier-guide/valid/offer.v1.json +10 -0
  65. package/fixtures/atelier-intake/invalid/authority.v1.json +9 -0
  66. package/fixtures/atelier-intake/valid/attempt.v1.json +8 -0
  67. package/fixtures/atelier-intake/valid/completion.v1.json +9 -0
  68. package/fixtures/atelier-intake/valid/source.v1.json +7 -0
  69. package/fixtures/atelier-review/invalid/authenticated-identity.v1.json +22 -0
  70. package/fixtures/atelier-review/valid/bound.v1.json +229 -0
  71. package/fixtures/atelier-review/valid/bundle.v1.json +267 -0
  72. package/fixtures/atelier-review/valid/contribution.v1.json +22 -0
  73. package/fixtures/atelier-review/valid/lifecycle.v1.json +14 -0
  74. package/fixtures/atelier-skill-steward/audit/invalid/source-mutation.v1.json +26 -0
  75. package/fixtures/atelier-skill-steward/audit/valid/clean.v1.json +26 -0
  76. package/fixtures/atelier-skill-steward/candidates/invalid/workflow-key.v1.json +37 -0
  77. package/fixtures/atelier-skill-steward/candidates/valid/create.v1.json +37 -0
  78. package/fixtures/atelier-skill-steward/lock/invalid/bad-digest.v1.json +18 -0
  79. package/fixtures/atelier-skill-steward/lock/valid/installed.v1.json +23 -0
  80. package/fixtures/atelier-skill-steward/plan/invalid/delete-action.v1.json +33 -0
  81. package/fixtures/atelier-skill-steward/plan/valid/add.v1.json +33 -0
  82. package/fixtures/atelier-upgrade-transaction/adoption-policy/invalid/example.json +12 -0
  83. package/fixtures/atelier-upgrade-transaction/adoption-policy/valid/example.json +11 -0
  84. package/fixtures/atelier-upgrade-transaction/migration/invalid/example.json +20 -0
  85. package/fixtures/atelier-upgrade-transaction/migration/valid/example.json +19 -0
  86. package/fixtures/atelier-upgrade-transaction/upgrade-plan/invalid/example.json +58 -0
  87. package/fixtures/atelier-upgrade-transaction/upgrade-plan/valid/example.json +57 -0
  88. package/fixtures/atelier-upgrade-transaction/upgrade-receipt/invalid/example.json +15 -0
  89. package/fixtures/atelier-upgrade-transaction/upgrade-receipt/valid/example.json +14 -0
  90. package/fixtures/atelier-vault-publication/invalid/publication.json +5 -0
  91. package/fixtures/atelier-vault-publication/valid/publication.json +11 -0
  92. package/fixtures/decisions/request/invalid/unknown-authority.v1.json +61 -0
  93. package/fixtures/decisions/request/valid/triage.v1.json +60 -0
  94. package/fixtures/decisions/result/invalid/execution-authority.v1.json +50 -0
  95. package/fixtures/decisions/result/valid/abstained.v1.json +23 -0
  96. package/fixtures/decisions/result/valid/assessed.v1.json +50 -0
  97. package/fixtures/obsidian/acceptance/ap05-extra-notes.json +14 -0
  98. package/fixtures/obsidian/acceptance/receipts/G07.valid.v1.json +63 -0
  99. package/fixtures/obsidian/acceptance/receipts/G13.valid.v1.json +69 -0
  100. package/fixtures/obsidian/acceptance/receipts/G14.valid.v1.json +62 -0
  101. package/fixtures/obsidian/acceptance/receipts/G15.valid.v1.json +56 -0
  102. package/fixtures/obsidian/acceptance/receipts/G16.valid.v1.json +73 -0
  103. package/fixtures/obsidian/acceptance/receipts/G17.valid.v1.json +75 -0
  104. package/fixtures/obsidian/acceptance/receipts/G18.valid.v1.json +64 -0
  105. package/fixtures/obsidian/acceptance/service-sentinels.json +10 -0
  106. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/duplicate-evidence-name.v1.json +39 -0
  107. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/evidence-by-absolute-path.v1.json +34 -0
  108. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/missing-candidate-tree.v1.json +33 -0
  109. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/no-evidence.v1.json +28 -0
  110. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-outcome.v1.json +34 -0
  111. package/fixtures/obsidian/contracts/acceptance-receipt/invalid/unknown-top-level-field.v1.json +35 -0
  112. package/fixtures/obsidian/contracts/acceptance-receipt/valid/node-gate.v1.json +34 -0
  113. package/fixtures/obsidian/contracts/apply-policy/invalid/automatic-without-edit-class.v1.json +27 -0
  114. package/fixtures/obsidian/contracts/apply-policy/invalid/conflict-overwrite.v1.json +29 -0
  115. package/fixtures/obsidian/contracts/apply-policy/invalid/missing-policy-digest.v1.json +28 -0
  116. package/fixtures/obsidian/contracts/apply-policy/invalid/unbounded-batch.v1.json +29 -0
  117. package/fixtures/obsidian/contracts/apply-policy/invalid/unimplemented-edit-class.v1.json +30 -0
  118. package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-mode.v1.json +29 -0
  119. package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-selector-operator.v1.json +22 -0
  120. package/fixtures/obsidian/contracts/apply-policy/invalid/unknown-top-level-field.v1.json +30 -0
  121. package/fixtures/obsidian/contracts/apply-policy/valid/automatic-scoped.v1.json +29 -0
  122. package/fixtures/obsidian/contracts/apply-policy/valid/manual-default.v1.json +20 -0
  123. package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-path-in-ext.v1.json +30 -0
  124. package/fixtures/obsidian/contracts/corpus-profile/invalid/absolute-repository-root.v1.json +27 -0
  125. package/fixtures/obsidian/contracts/corpus-profile/invalid/duplicate-repository-id.v1.json +27 -0
  126. package/fixtures/obsidian/contracts/corpus-profile/invalid/overlapping-managed-roots.v1.json +27 -0
  127. package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-enrollment.v1.json +27 -0
  128. package/fixtures/obsidian/contracts/corpus-profile/invalid/unknown-top-level-field.v1.json +28 -0
  129. package/fixtures/obsidian/contracts/corpus-profile/valid/three-repositories.v1.json +27 -0
  130. package/fixtures/obsidian/contracts/edit-operation/invalid/absolute-recovery-ref.v1.json +21 -0
  131. package/fixtures/obsidian/contracts/edit-operation/invalid/inline-observed-bytes.v1.json +22 -0
  132. package/fixtures/obsidian/contracts/edit-operation/invalid/missing-base-digest.v1.json +20 -0
  133. package/fixtures/obsidian/contracts/edit-operation/invalid/short-idempotency-key.v1.json +21 -0
  134. package/fixtures/obsidian/contracts/edit-operation/invalid/unknown-kind.v1.json +21 -0
  135. package/fixtures/obsidian/contracts/edit-operation/valid/pending-body-replacement.v1.json +21 -0
  136. package/fixtures/obsidian/contracts/ext-settings/invalid/absolute-path-prefix.v1.json +28 -0
  137. package/fixtures/obsidian/contracts/ext-settings/invalid/apply-policy-in-portable-settings.v1.json +30 -0
  138. package/fixtures/obsidian/contracts/ext-settings/invalid/duplicate-scope-id.v1.json +27 -0
  139. package/fixtures/obsidian/contracts/ext-settings/invalid/machine-local-vault-path.v1.json +28 -0
  140. package/fixtures/obsidian/contracts/ext-settings/invalid/service-port-in-portable-settings.v1.json +28 -0
  141. package/fixtures/obsidian/contracts/ext-settings/invalid/unknown-default-scope.v1.json +27 -0
  142. package/fixtures/obsidian/contracts/ext-settings/valid/disabled.v1.json +5 -0
  143. package/fixtures/obsidian/contracts/ext-settings/valid/enabled-with-scopes.v1.json +27 -0
  144. package/fixtures/obsidian/contracts/generation-manifest/invalid/absolute-note-path.v1.json +114 -0
  145. package/fixtures/obsidian/contracts/generation-manifest/invalid/complete-with-unwritten-notes.v1.json +114 -0
  146. package/fixtures/obsidian/contracts/generation-manifest/invalid/derived-link-claimed-declared.v1.json +114 -0
  147. package/fixtures/obsidian/contracts/generation-manifest/invalid/duplicate-note-identity.v1.json +114 -0
  148. package/fixtures/obsidian/contracts/generation-manifest/invalid/in-scope-endpoint-missing.v1.json +114 -0
  149. package/fixtures/obsidian/contracts/generation-manifest/invalid/title-only-note-path.v1.json +114 -0
  150. package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-note-field.v1.json +115 -0
  151. package/fixtures/obsidian/contracts/generation-manifest/invalid/unknown-relation-type.v1.json +114 -0
  152. package/fixtures/obsidian/contracts/generation-manifest/invalid/withheld-endpoint.v1.json +114 -0
  153. package/fixtures/obsidian/contracts/generation-manifest/valid/two-notes.v1.json +114 -0
  154. package/fixtures/obsidian/contracts/oracles/scope-cases.json +412 -0
  155. package/fixtures/obsidian/contracts/proposal-receipt/invalid/accepted-without-proposal-id.v1.json +12 -0
  156. package/fixtures/obsidian/contracts/proposal-receipt/invalid/missing-adapter-operation-id.v1.json +11 -0
  157. package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-backpressure-outcome.v1.json +12 -0
  158. package/fixtures/obsidian/contracts/proposal-receipt/invalid/unknown-top-level-field.v1.json +13 -0
  159. package/fixtures/obsidian/contracts/proposal-receipt/valid/accepted-new.v1.json +12 -0
  160. package/fixtures/obsidian/contracts/proposal-receipt/valid/deferred.v1.json +12 -0
  161. package/fixtures/obsidian/contracts/publication-journal/invalid/absolute-recovery-ref.v1.json +47 -0
  162. package/fixtures/obsidian/contracts/publication-journal/invalid/duplicate-sequence.v1.json +47 -0
  163. package/fixtures/obsidian/contracts/publication-journal/invalid/empty-protocol-id.v1.json +47 -0
  164. package/fixtures/obsidian/contracts/publication-journal/invalid/missing-protocol-id.v1.json +46 -0
  165. package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-entry-field.v1.json +48 -0
  166. package/fixtures/obsidian/contracts/publication-journal/invalid/unknown-state.v1.json +47 -0
  167. package/fixtures/obsidian/contracts/publication-journal/valid/committed.v1.json +47 -0
  168. package/fixtures/obsidian/contracts/publication-journal/valid/updating-after-restart.v1.json +22 -0
  169. package/fixtures/obsidian/contracts/scope/invalid/absolute-path-prefix.v1.json +15 -0
  170. package/fixtures/obsidian/contracts/scope/invalid/duplicate-ids.v1.json +18 -0
  171. package/fixtures/obsidian/contracts/scope/invalid/expansion-without-node-budget.v1.json +40 -0
  172. package/fixtures/obsidian/contracts/scope/invalid/full-mode-with-subset.v1.json +8 -0
  173. package/fixtures/obsidian/contracts/scope/invalid/unknown-mode.v1.json +41 -0
  174. package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-key.v1.json +15 -0
  175. package/fixtures/obsidian/contracts/scope/invalid/unknown-selector-operator.v1.json +14 -0
  176. package/fixtures/obsidian/contracts/scope/invalid/unknown-top-level-field.v1.json +42 -0
  177. package/fixtures/obsidian/contracts/scope/valid/explicit-empty.v1.json +8 -0
  178. package/fixtures/obsidian/contracts/scope/valid/focus.v1.json +11 -0
  179. package/fixtures/obsidian/contracts/scope/valid/full.v1.json +8 -0
  180. package/fixtures/obsidian/contracts/scope/valid/scoped-set-expression.v1.json +41 -0
  181. package/fixtures/obsidian/contracts/service-state/invalid/hostname-instead-of-literal-loopback.v1.json +23 -0
  182. package/fixtures/obsidian/contracts/service-state/invalid/missing-consent.v1.json +18 -0
  183. package/fixtures/obsidian/contracts/service-state/invalid/privileged-port.v1.json +23 -0
  184. package/fixtures/obsidian/contracts/service-state/invalid/unknown-top-level-field.v1.json +24 -0
  185. package/fixtures/obsidian/contracts/service-state/invalid/wildcard-bind.v1.json +23 -0
  186. package/fixtures/obsidian/contracts/service-state/valid/healthy.v1.json +23 -0
  187. package/fixtures/obsidian/contracts/source-snapshot/invalid/absolute-file-path.v1.json +48 -0
  188. package/fixtures/obsidian/contracts/source-snapshot/invalid/duplicate-repository-id.v1.json +48 -0
  189. package/fixtures/obsidian/contracts/source-snapshot/invalid/mixed-read.v1.json +48 -0
  190. package/fixtures/obsidian/contracts/source-snapshot/invalid/parent-traversal-path.v1.json +48 -0
  191. package/fixtures/obsidian/contracts/source-snapshot/invalid/unknown-file-field.v1.json +49 -0
  192. package/fixtures/obsidian/contracts/source-snapshot/valid/two-repositories.v1.json +48 -0
  193. package/fixtures/obsidian/edits/workspace.json +65 -0
  194. package/fixtures/obsidian/materialization/expected-full.json +99 -0
  195. package/fixtures/obsidian/materialization/expected-scoped.json +39 -0
  196. package/fixtures/obsidian/materialization/workspace.json +54 -0
  197. package/fixtures/obsidian/proposals/expected-shapes.json +11 -0
  198. package/fixtures/ui/presentation/pane.v1.json +7 -0
  199. package/fixtures/ui/presentation/reference.v1.json +293 -0
  200. package/package.json +57 -6
  201. package/skills/claude/atelier-guided-coauthor/SKILL.md +49 -0
  202. package/skills/claude/atelier-guided-upgrade/SKILL.md +97 -0
  203. package/skills/claude/atelier-open/SKILL.md +5 -0
  204. package/skills/claude/atelier-skill-steward/SKILL.md +62 -0
  205. package/skills/claude/mnstry-readiness/SKILL.md +5 -0
  206. package/skills/codex/atelier-guided-coauthor/SKILL.md +49 -0
  207. package/skills/codex/atelier-guided-upgrade/SKILL.md +97 -0
  208. package/skills/codex/atelier-open/SKILL.md +5 -0
  209. package/skills/codex/atelier-skill-steward/SKILL.md +62 -0
  210. package/skills/codex/mnstry-readiness/SKILL.md +5 -0
  211. package/src/access/preview-enforcer.mjs +84 -0
  212. package/src/boundary/policy.mjs +57 -25
  213. package/src/cli/project-options.mjs +58 -0
  214. package/src/cli/run.mjs +43 -3
  215. package/src/coauthor/session.mjs +161 -0
  216. package/src/coauthor/store.mjs +173 -0
  217. package/src/collaboration/event-ledger.mjs +16 -33
  218. package/src/collaboration/inspection-bundle.mjs +223 -0
  219. package/src/collaboration/review-contracts.mjs +25 -0
  220. package/src/collaboration/review-store.mjs +305 -0
  221. package/src/commands/coauthor.mjs +26 -0
  222. package/src/commands/config.mjs +6 -1
  223. package/src/commands/extension-pack.mjs +15 -8
  224. package/src/commands/init.mjs +44 -5
  225. package/src/commands/obsidian.mjs +368 -0
  226. package/src/commands/review.mjs +147 -0
  227. package/src/commands/setup.mjs +51 -14
  228. package/src/commands/skills.mjs +199 -0
  229. package/src/commands/sync.mjs +8 -1
  230. package/src/composition/registry.mjs +27 -0
  231. package/src/composition/wire.mjs +122 -0
  232. package/src/contracts/corpus.mjs +29 -0
  233. package/src/decisions/contracts.d.mts +96 -0
  234. package/src/decisions/contracts.mjs +321 -0
  235. package/src/disclosure/content-scan.mjs +13 -0
  236. package/src/export/atelier-export-contract.mjs +16 -1
  237. package/src/extension-packs/lifecycle.mjs +154 -0
  238. package/src/graph/graph.mjs +64 -2
  239. package/src/graph/knowledge-graph.mjs +548 -24
  240. package/src/guides/contracts.mjs +54 -0
  241. package/src/intake/store.mjs +119 -0
  242. package/src/preview/channel.mjs +89 -0
  243. package/src/project/config.mjs +26 -27
  244. package/src/project/durable-state.mjs +161 -0
  245. package/src/project/file-class.mjs +166 -0
  246. package/src/project/private-state.mjs +11 -1
  247. package/src/projection/obsidian/contracts.mjs +571 -0
  248. package/src/projection/obsidian/edits/align.mjs +169 -0
  249. package/src/projection/obsidian/edits/apply.mjs +889 -0
  250. package/src/projection/obsidian/edits/arbitrate.mjs +414 -0
  251. package/src/projection/obsidian/edits/contribution.mjs +108 -0
  252. package/src/projection/obsidian/edits/index.mjs +19 -0
  253. package/src/projection/obsidian/edits/object-identity.mjs +61 -0
  254. package/src/projection/obsidian/edits/object-store.mjs +517 -0
  255. package/src/projection/obsidian/edits/observe.mjs +123 -0
  256. package/src/projection/obsidian/edits/policy.mjs +123 -0
  257. package/src/projection/obsidian/edits/regions.mjs +648 -0
  258. package/src/projection/obsidian/materialize/byte-lens.mjs +98 -0
  259. package/src/projection/obsidian/materialize/index.mjs +7 -0
  260. package/src/projection/obsidian/materialize/path-registry.mjs +105 -0
  261. package/src/projection/obsidian/materialize/prepare-view.mjs +746 -0
  262. package/src/projection/obsidian/materialize/settings.mjs +57 -0
  263. package/src/projection/obsidian/materialize/stage.mjs +27 -0
  264. package/src/projection/obsidian/proposals/adapter.mjs +572 -0
  265. package/src/projection/obsidian/proposals/backpressure.mjs +113 -0
  266. package/src/projection/obsidian/proposals/contribution.mjs +55 -0
  267. package/src/projection/obsidian/proposals/index.mjs +23 -0
  268. package/src/projection/obsidian/proposals/observation.mjs +216 -0
  269. package/src/projection/obsidian/proposals/queue.mjs +277 -0
  270. package/src/projection/obsidian/proposals/router.mjs +168 -0
  271. package/src/projection/obsidian/publication/bridge-script.mjs +266 -0
  272. package/src/projection/obsidian/publication/exchange.mjs +117 -0
  273. package/src/projection/obsidian/publication/index.mjs +5 -0
  274. package/src/projection/obsidian/publication/publisher.mjs +588 -0
  275. package/src/projection/obsidian/publication/test-seam.mjs +16 -0
  276. package/src/projection/obsidian/publication/transport.mjs +139 -0
  277. package/src/projection/obsidian/recovery/index.mjs +6 -0
  278. package/src/projection/obsidian/recovery/journal.mjs +134 -0
  279. package/src/projection/obsidian/recovery/late-writer.mjs +46 -0
  280. package/src/projection/obsidian/recovery/restart.mjs +316 -0
  281. package/src/projection/obsidian/recovery/store.mjs +234 -0
  282. package/src/projection/obsidian/selection-ui/conflict-view.mjs +91 -0
  283. package/src/projection/obsidian/selection-ui/contribution.mjs +141 -0
  284. package/src/projection/obsidian/selection-ui/focus.mjs +82 -0
  285. package/src/projection/obsidian/selection-ui/index.mjs +12 -0
  286. package/src/projection/obsidian/selection-ui/policy-setup.mjs +107 -0
  287. package/src/projection/obsidian/selection-ui/receipt.mjs +173 -0
  288. package/src/projection/obsidian/selection-ui/selection-state.mjs +122 -0
  289. package/src/projection/obsidian/selection-ui/selection.mjs +109 -0
  290. package/src/projection/project.mjs +28 -19
  291. package/src/readiness-protocols/evidence.mjs +282 -0
  292. package/src/readiness-protocols/runtime.mjs +4 -3
  293. package/src/readiness-protocols/source-read.mjs +39 -0
  294. package/src/runtime/obsidian/app-capability.mjs +110 -0
  295. package/src/runtime/obsidian/app-production-seams.mjs +96 -0
  296. package/src/runtime/obsidian/contributions/proposal-adapter.mjs +4 -0
  297. package/src/runtime/obsidian/contributions/selection-ui.mjs +4 -0
  298. package/src/runtime/obsidian/contributions/source-apply.mjs +4 -0
  299. package/src/runtime/obsidian/contributions.mjs +27 -0
  300. package/src/runtime/obsidian/documents.mjs +37 -0
  301. package/src/runtime/obsidian/enablement.mjs +53 -0
  302. package/src/runtime/obsidian/engine.mjs +532 -0
  303. package/src/runtime/obsidian/errors.mjs +14 -0
  304. package/src/runtime/obsidian/extension-points.mjs +103 -0
  305. package/src/runtime/obsidian/index.mjs +34 -0
  306. package/src/runtime/obsidian/lifecycle.mjs +258 -0
  307. package/src/runtime/obsidian/machine-settings.mjs +260 -0
  308. package/src/runtime/obsidian/observation.mjs +158 -0
  309. package/src/runtime/obsidian/opening.mjs +243 -0
  310. package/src/runtime/obsidian/pending-edits.mjs +141 -0
  311. package/src/runtime/obsidian/pipeline.mjs +122 -0
  312. package/src/runtime/obsidian/private-lock.mjs +156 -0
  313. package/src/runtime/obsidian/process-identity.mjs +58 -0
  314. package/src/runtime/obsidian/service-client.mjs +66 -0
  315. package/src/runtime/obsidian/service-main.mjs +89 -0
  316. package/src/runtime/obsidian/service-record.mjs +169 -0
  317. package/src/runtime/obsidian/service-server.mjs +121 -0
  318. package/src/runtime/obsidian/service.mjs +216 -0
  319. package/src/runtime/obsidian/startup-adapters.mjs +87 -0
  320. package/src/runtime/obsidian/state-store.mjs +180 -0
  321. package/src/runtime/obsidian/sync-notice.mjs +33 -0
  322. package/src/runtime/obsidian/tick-loop.mjs +84 -0
  323. package/src/runtime/obsidian/watchers.mjs +36 -0
  324. package/src/runtime/supervisor.mjs +16 -1
  325. package/src/server/local-sidecar.mjs +44 -0
  326. package/src/server/server.mjs +1 -0
  327. package/src/skills/steward.mjs +780 -0
  328. package/src/ui/presentation/browser.mjs +278 -0
  329. package/src/ui/presentation/contract.mjs +116 -0
  330. package/src/ui/presentation/index.mjs +7 -0
  331. package/src/ui/presentation/native.mjs +153 -0
  332. package/src/ui/presentation/proof.mjs +57 -0
  333. package/src/ui/presentation/schema-check.mjs +30 -0
  334. package/src/ui/presentation/schema.generated.mjs +1371 -0
  335. package/src/ui/presentation/state.mjs +43 -0
  336. package/src/ui/presentation/styles.mjs +67 -0
  337. package/src/ui/presentation/tokens.mjs +74 -0
  338. package/src/ui/presentation/web.mjs +85 -0
  339. package/src/ui/review-page.mjs +32 -0
  340. package/src/upgrade/explanation.mjs +33 -0
  341. package/src/upgrade/provenance.mjs +338 -0
  342. package/src/upgrade/transaction-files.mjs +103 -0
  343. package/src/upgrade/transaction.mjs +475 -0
  344. package/src/upgrade/upgrade.mjs +63 -28
  345. package/src/vault/hosts.mjs +21 -0
  346. package/src/vault/identity.mjs +19 -0
  347. package/src/vault/index.mjs +7 -0
  348. package/src/vault/interface.mjs +11 -0
  349. package/src/vault/metadata.mjs +31 -0
  350. package/src/vault/privacy.mjs +148 -0
  351. package/src/vault/probe.mjs +89 -0
  352. package/src/vault/service.mjs +131 -0
  353. package/src/vault/source.mjs +45 -0
  354. package/src/vault/storage.mjs +23 -0
  355. package/templates/distribution-workspace/.claude/launch.json +6 -2
  356. package/templates/distribution-workspace/gitignore +1 -0
  357. package/templates/distribution-workspace/project/README.md +2 -2
  358. package/templates/external-project-workspace/README.md +45 -0
  359. package/templates/external-project-workspace/answers.example.json +4 -0
  360. package/templates/external-project-workspace/atelier.project.json +40 -0
  361. package/templates/external-project-workspace/boundary-policy.v1.json +60 -0
  362. package/templates/external-project-workspace/gitignore +8 -0
  363. package/templates/external-project-workspace/pack-lifecycle.json +14 -0
  364. package/templates/external-project-workspace/packs/protocols/contract-gate.v1.json +109 -0
  365. package/templates/external-project-workspace/packs/sample-pack.v1.json +48 -0
  366. package/templates/external-project-workspace/repo-access.v1.json +9 -0
  367. package/templates/external-project-workspace/source/README.md +11 -0
  368. package/templates/launch.json +6 -2
  369. package/templates/private-domain-workspace/.claude/launch.json +6 -2
  370. package/templates/private-domain-workspace/domain/README.md +2 -2
  371. package/templates/private-domain-workspace/gitignore +1 -0
  372. package/templates/shared-project-workspace/.claude/launch.json +6 -2
  373. package/templates/shared-project-workspace/gitignore +1 -0
  374. package/templates/shared-project-workspace/project/README.md +2 -2
@@ -0,0 +1,1293 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$comment": "contract revision 1.0.0; presentation only, no business or execution authority.",
4
+ "$id": "https://mnstry.ai/schemas/atelier/atelier-presentation.v1.schema.json",
5
+ "title": "Portable presentation model",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema",
10
+ "version",
11
+ "id",
12
+ "title",
13
+ "lang",
14
+ "direction",
15
+ "theme",
16
+ "density",
17
+ "navigation",
18
+ "panes",
19
+ "nodes"
20
+ ],
21
+ "properties": {
22
+ "schema": {
23
+ "const": "atelier.presentation/v1"
24
+ },
25
+ "version": {
26
+ "const": "1.0.0"
27
+ },
28
+ "id": {
29
+ "type": "string",
30
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
31
+ },
32
+ "title": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "maxLength": 4096
36
+ },
37
+ "lang": {
38
+ "type": "string",
39
+ "pattern": "^[a-zA-Z]{2,8}(-[a-zA-Z0-9]{1,8})*$"
40
+ },
41
+ "direction": {
42
+ "enum": [
43
+ "ltr",
44
+ "rtl"
45
+ ]
46
+ },
47
+ "theme": {
48
+ "enum": [
49
+ "light",
50
+ "dark"
51
+ ]
52
+ },
53
+ "density": {
54
+ "enum": [
55
+ "comfortable",
56
+ "compact"
57
+ ]
58
+ },
59
+ "navigation": {
60
+ "type": "array",
61
+ "maxItems": 16,
62
+ "items": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": [
66
+ "id",
67
+ "label",
68
+ "target"
69
+ ],
70
+ "properties": {
71
+ "id": {
72
+ "type": "string",
73
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
74
+ },
75
+ "label": {
76
+ "type": "string",
77
+ "minLength": 1,
78
+ "maxLength": 4096
79
+ },
80
+ "target": {
81
+ "type": "string",
82
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
83
+ },
84
+ "ext": {
85
+ "type": "object"
86
+ }
87
+ }
88
+ }
89
+ },
90
+ "panes": {
91
+ "type": "array",
92
+ "maxItems": 8,
93
+ "items": {
94
+ "type": "object",
95
+ "additionalProperties": false,
96
+ "required": [
97
+ "id",
98
+ "label",
99
+ "role",
100
+ "blocks"
101
+ ],
102
+ "properties": {
103
+ "id": {
104
+ "type": "string",
105
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
106
+ },
107
+ "label": {
108
+ "type": "string",
109
+ "minLength": 1,
110
+ "maxLength": 4096
111
+ },
112
+ "role": {
113
+ "enum": [
114
+ "primary",
115
+ "context",
116
+ "utility"
117
+ ]
118
+ },
119
+ "width": {
120
+ "type": "object",
121
+ "additionalProperties": false,
122
+ "required": [
123
+ "min",
124
+ "max",
125
+ "value"
126
+ ],
127
+ "properties": {
128
+ "min": {
129
+ "type": "number",
130
+ "minimum": 10,
131
+ "maximum": 90
132
+ },
133
+ "max": {
134
+ "type": "number",
135
+ "minimum": 10,
136
+ "maximum": 90
137
+ },
138
+ "value": {
139
+ "type": "number",
140
+ "minimum": 10,
141
+ "maximum": 90
142
+ },
143
+ "ext": {
144
+ "type": "object"
145
+ }
146
+ }
147
+ },
148
+ "blocks": {
149
+ "type": "array",
150
+ "maxItems": 128,
151
+ "items": {
152
+ "type": "string",
153
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
154
+ }
155
+ },
156
+ "contractVersion": {
157
+ "type": "string",
158
+ "pattern": "^1\\.[0-9]+\\.[0-9]+$"
159
+ },
160
+ "ext": {
161
+ "type": "object"
162
+ }
163
+ }
164
+ },
165
+ "minItems": 1
166
+ },
167
+ "nodes": {
168
+ "type": "array",
169
+ "maxItems": 256,
170
+ "items": {
171
+ "oneOf": [
172
+ {
173
+ "type": "object",
174
+ "additionalProperties": false,
175
+ "required": [
176
+ "id",
177
+ "type",
178
+ "label",
179
+ "text"
180
+ ],
181
+ "properties": {
182
+ "id": {
183
+ "type": "string",
184
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
185
+ },
186
+ "type": {
187
+ "const": "text"
188
+ },
189
+ "label": {
190
+ "type": "string",
191
+ "minLength": 1,
192
+ "maxLength": 4096
193
+ },
194
+ "text": {
195
+ "type": "string",
196
+ "maxLength": 32768
197
+ },
198
+ "ext": {
199
+ "type": "object"
200
+ }
201
+ }
202
+ },
203
+ {
204
+ "type": "object",
205
+ "additionalProperties": false,
206
+ "required": [
207
+ "id",
208
+ "type",
209
+ "label",
210
+ "actionRef",
211
+ "disabled"
212
+ ],
213
+ "properties": {
214
+ "id": {
215
+ "type": "string",
216
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
217
+ },
218
+ "type": {
219
+ "const": "action"
220
+ },
221
+ "label": {
222
+ "type": "string",
223
+ "minLength": 1,
224
+ "maxLength": 4096
225
+ },
226
+ "actionRef": {
227
+ "type": "string",
228
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
229
+ },
230
+ "disabled": {
231
+ "type": "boolean"
232
+ },
233
+ "reason": {
234
+ "type": "string",
235
+ "minLength": 1,
236
+ "maxLength": 4096
237
+ },
238
+ "confirmation": {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": [
242
+ "title",
243
+ "description",
244
+ "confirmLabel",
245
+ "cancelLabel"
246
+ ],
247
+ "properties": {
248
+ "title": {
249
+ "type": "string",
250
+ "minLength": 1,
251
+ "maxLength": 4096
252
+ },
253
+ "description": {
254
+ "type": "string",
255
+ "minLength": 1,
256
+ "maxLength": 4096
257
+ },
258
+ "confirmLabel": {
259
+ "type": "string",
260
+ "minLength": 1,
261
+ "maxLength": 4096
262
+ },
263
+ "cancelLabel": {
264
+ "type": "string",
265
+ "minLength": 1,
266
+ "maxLength": 4096
267
+ },
268
+ "ext": {
269
+ "type": "object"
270
+ }
271
+ }
272
+ },
273
+ "shortcut": {
274
+ "type": "object",
275
+ "additionalProperties": false,
276
+ "required": [
277
+ "display",
278
+ "aria"
279
+ ],
280
+ "properties": {
281
+ "display": {
282
+ "type": "string",
283
+ "minLength": 1,
284
+ "maxLength": 4096
285
+ },
286
+ "aria": {
287
+ "type": "string",
288
+ "minLength": 1,
289
+ "maxLength": 4096
290
+ },
291
+ "ext": {
292
+ "type": "object"
293
+ }
294
+ }
295
+ },
296
+ "ext": {
297
+ "type": "object"
298
+ }
299
+ }
300
+ },
301
+ {
302
+ "type": "object",
303
+ "additionalProperties": false,
304
+ "required": [
305
+ "id",
306
+ "type",
307
+ "label",
308
+ "items"
309
+ ],
310
+ "properties": {
311
+ "id": {
312
+ "type": "string",
313
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
314
+ },
315
+ "type": {
316
+ "const": "collection"
317
+ },
318
+ "label": {
319
+ "type": "string",
320
+ "minLength": 1,
321
+ "maxLength": 4096
322
+ },
323
+ "items": {
324
+ "type": "array",
325
+ "maxItems": 128,
326
+ "items": {
327
+ "type": "object",
328
+ "additionalProperties": false,
329
+ "required": [
330
+ "id",
331
+ "label"
332
+ ],
333
+ "properties": {
334
+ "id": {
335
+ "type": "string",
336
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
337
+ },
338
+ "label": {
339
+ "type": "string",
340
+ "minLength": 1,
341
+ "maxLength": 4096
342
+ },
343
+ "detail": {
344
+ "type": "string",
345
+ "maxLength": 32768
346
+ },
347
+ "href": {
348
+ "type": "string",
349
+ "minLength": 1,
350
+ "maxLength": 4096
351
+ },
352
+ "selected": {
353
+ "type": "boolean"
354
+ },
355
+ "ext": {
356
+ "type": "object"
357
+ }
358
+ }
359
+ }
360
+ },
361
+ "ext": {
362
+ "type": "object"
363
+ }
364
+ }
365
+ },
366
+ {
367
+ "type": "object",
368
+ "additionalProperties": false,
369
+ "required": [
370
+ "id",
371
+ "type",
372
+ "label",
373
+ "items"
374
+ ],
375
+ "properties": {
376
+ "id": {
377
+ "type": "string",
378
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
379
+ },
380
+ "type": {
381
+ "const": "sequence"
382
+ },
383
+ "reorderable": {
384
+ "type": "boolean"
385
+ },
386
+ "label": {
387
+ "type": "string",
388
+ "minLength": 1,
389
+ "maxLength": 4096
390
+ },
391
+ "items": {
392
+ "type": "array",
393
+ "maxItems": 128,
394
+ "items": {
395
+ "type": "object",
396
+ "additionalProperties": false,
397
+ "required": [
398
+ "id",
399
+ "label"
400
+ ],
401
+ "properties": {
402
+ "id": {
403
+ "type": "string",
404
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
405
+ },
406
+ "label": {
407
+ "type": "string",
408
+ "minLength": 1,
409
+ "maxLength": 4096
410
+ },
411
+ "detail": {
412
+ "type": "string",
413
+ "maxLength": 32768
414
+ },
415
+ "href": {
416
+ "type": "string",
417
+ "minLength": 1,
418
+ "maxLength": 4096
419
+ },
420
+ "selected": {
421
+ "type": "boolean"
422
+ },
423
+ "ext": {
424
+ "type": "object"
425
+ }
426
+ }
427
+ }
428
+ },
429
+ "ext": {
430
+ "type": "object"
431
+ }
432
+ }
433
+ },
434
+ {
435
+ "type": "object",
436
+ "additionalProperties": false,
437
+ "required": [
438
+ "id",
439
+ "type",
440
+ "label",
441
+ "items",
442
+ "edges"
443
+ ],
444
+ "properties": {
445
+ "id": {
446
+ "type": "string",
447
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
448
+ },
449
+ "type": {
450
+ "const": "graph"
451
+ },
452
+ "label": {
453
+ "type": "string",
454
+ "minLength": 1,
455
+ "maxLength": 4096
456
+ },
457
+ "items": {
458
+ "type": "array",
459
+ "maxItems": 128,
460
+ "items": {
461
+ "type": "object",
462
+ "additionalProperties": false,
463
+ "required": [
464
+ "id",
465
+ "label"
466
+ ],
467
+ "properties": {
468
+ "id": {
469
+ "type": "string",
470
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
471
+ },
472
+ "label": {
473
+ "type": "string",
474
+ "minLength": 1,
475
+ "maxLength": 4096
476
+ },
477
+ "detail": {
478
+ "type": "string",
479
+ "maxLength": 32768
480
+ },
481
+ "href": {
482
+ "type": "string",
483
+ "minLength": 1,
484
+ "maxLength": 4096
485
+ },
486
+ "selected": {
487
+ "type": "boolean"
488
+ },
489
+ "ext": {
490
+ "type": "object"
491
+ }
492
+ }
493
+ }
494
+ },
495
+ "edges": {
496
+ "type": "array",
497
+ "maxItems": 512,
498
+ "items": {
499
+ "type": "object",
500
+ "additionalProperties": false,
501
+ "required": [
502
+ "from",
503
+ "to",
504
+ "label"
505
+ ],
506
+ "properties": {
507
+ "from": {
508
+ "type": "string",
509
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
510
+ },
511
+ "to": {
512
+ "type": "string",
513
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
514
+ },
515
+ "label": {
516
+ "type": "string",
517
+ "minLength": 1,
518
+ "maxLength": 4096
519
+ },
520
+ "ext": {
521
+ "type": "object"
522
+ }
523
+ }
524
+ }
525
+ },
526
+ "ext": {
527
+ "type": "object"
528
+ }
529
+ }
530
+ },
531
+ {
532
+ "type": "object",
533
+ "additionalProperties": false,
534
+ "required": [
535
+ "id",
536
+ "type",
537
+ "label",
538
+ "src",
539
+ "alt"
540
+ ],
541
+ "properties": {
542
+ "id": {
543
+ "type": "string",
544
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
545
+ },
546
+ "type": {
547
+ "const": "media"
548
+ },
549
+ "label": {
550
+ "type": "string",
551
+ "minLength": 1,
552
+ "maxLength": 4096
553
+ },
554
+ "src": {
555
+ "type": "string",
556
+ "minLength": 1,
557
+ "maxLength": 4096
558
+ },
559
+ "alt": {
560
+ "type": "string",
561
+ "minLength": 1,
562
+ "maxLength": 4096
563
+ },
564
+ "caption": {
565
+ "type": "string",
566
+ "maxLength": 32768
567
+ },
568
+ "ext": {
569
+ "type": "object"
570
+ }
571
+ }
572
+ },
573
+ {
574
+ "type": "object",
575
+ "additionalProperties": false,
576
+ "required": [
577
+ "id",
578
+ "type",
579
+ "label",
580
+ "text",
581
+ "tone",
582
+ "details",
583
+ "actions"
584
+ ],
585
+ "properties": {
586
+ "id": {
587
+ "type": "string",
588
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
589
+ },
590
+ "type": {
591
+ "const": "status"
592
+ },
593
+ "label": {
594
+ "type": "string",
595
+ "minLength": 1,
596
+ "maxLength": 4096
597
+ },
598
+ "text": {
599
+ "type": "string",
600
+ "maxLength": 32768
601
+ },
602
+ "tone": {
603
+ "enum": [
604
+ "neutral",
605
+ "info",
606
+ "success",
607
+ "warning",
608
+ "danger"
609
+ ]
610
+ },
611
+ "details": {
612
+ "type": "array",
613
+ "maxItems": 128,
614
+ "items": {
615
+ "type": "object",
616
+ "additionalProperties": false,
617
+ "required": [
618
+ "label",
619
+ "value"
620
+ ],
621
+ "properties": {
622
+ "label": {
623
+ "type": "string",
624
+ "minLength": 1,
625
+ "maxLength": 4096
626
+ },
627
+ "value": {
628
+ "type": "string",
629
+ "maxLength": 32768
630
+ },
631
+ "ext": {
632
+ "type": "object"
633
+ }
634
+ }
635
+ }
636
+ },
637
+ "actions": {
638
+ "type": "array",
639
+ "maxItems": 16,
640
+ "items": {
641
+ "type": "string",
642
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
643
+ }
644
+ },
645
+ "ext": {
646
+ "type": "object"
647
+ }
648
+ }
649
+ },
650
+ {
651
+ "type": "object",
652
+ "additionalProperties": false,
653
+ "required": [
654
+ "id",
655
+ "type",
656
+ "label",
657
+ "text",
658
+ "tone",
659
+ "details",
660
+ "actions"
661
+ ],
662
+ "properties": {
663
+ "id": {
664
+ "type": "string",
665
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
666
+ },
667
+ "type": {
668
+ "const": "refusal"
669
+ },
670
+ "label": {
671
+ "type": "string",
672
+ "minLength": 1,
673
+ "maxLength": 4096
674
+ },
675
+ "text": {
676
+ "type": "string",
677
+ "maxLength": 32768
678
+ },
679
+ "tone": {
680
+ "enum": [
681
+ "neutral",
682
+ "info",
683
+ "success",
684
+ "warning",
685
+ "danger"
686
+ ]
687
+ },
688
+ "details": {
689
+ "type": "array",
690
+ "maxItems": 128,
691
+ "items": {
692
+ "type": "object",
693
+ "additionalProperties": false,
694
+ "required": [
695
+ "label",
696
+ "value"
697
+ ],
698
+ "properties": {
699
+ "label": {
700
+ "type": "string",
701
+ "minLength": 1,
702
+ "maxLength": 4096
703
+ },
704
+ "value": {
705
+ "type": "string",
706
+ "maxLength": 32768
707
+ },
708
+ "ext": {
709
+ "type": "object"
710
+ }
711
+ }
712
+ }
713
+ },
714
+ "actions": {
715
+ "type": "array",
716
+ "maxItems": 16,
717
+ "items": {
718
+ "type": "string",
719
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
720
+ }
721
+ },
722
+ "ext": {
723
+ "type": "object"
724
+ }
725
+ }
726
+ },
727
+ {
728
+ "type": "object",
729
+ "additionalProperties": false,
730
+ "required": [
731
+ "id",
732
+ "type",
733
+ "label",
734
+ "text",
735
+ "tone",
736
+ "details",
737
+ "actions"
738
+ ],
739
+ "properties": {
740
+ "id": {
741
+ "type": "string",
742
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
743
+ },
744
+ "type": {
745
+ "const": "decision"
746
+ },
747
+ "label": {
748
+ "type": "string",
749
+ "minLength": 1,
750
+ "maxLength": 4096
751
+ },
752
+ "text": {
753
+ "type": "string",
754
+ "maxLength": 32768
755
+ },
756
+ "tone": {
757
+ "enum": [
758
+ "neutral",
759
+ "info",
760
+ "success",
761
+ "warning",
762
+ "danger"
763
+ ]
764
+ },
765
+ "details": {
766
+ "type": "array",
767
+ "maxItems": 128,
768
+ "items": {
769
+ "type": "object",
770
+ "additionalProperties": false,
771
+ "required": [
772
+ "label",
773
+ "value"
774
+ ],
775
+ "properties": {
776
+ "label": {
777
+ "type": "string",
778
+ "minLength": 1,
779
+ "maxLength": 4096
780
+ },
781
+ "value": {
782
+ "type": "string",
783
+ "maxLength": 32768
784
+ },
785
+ "ext": {
786
+ "type": "object"
787
+ }
788
+ }
789
+ }
790
+ },
791
+ "actions": {
792
+ "type": "array",
793
+ "maxItems": 16,
794
+ "items": {
795
+ "type": "string",
796
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
797
+ }
798
+ },
799
+ "ext": {
800
+ "type": "object"
801
+ }
802
+ }
803
+ },
804
+ {
805
+ "type": "object",
806
+ "additionalProperties": false,
807
+ "required": [
808
+ "id",
809
+ "type",
810
+ "label",
811
+ "text",
812
+ "tone",
813
+ "details",
814
+ "actions"
815
+ ],
816
+ "properties": {
817
+ "id": {
818
+ "type": "string",
819
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
820
+ },
821
+ "type": {
822
+ "const": "receipt"
823
+ },
824
+ "label": {
825
+ "type": "string",
826
+ "minLength": 1,
827
+ "maxLength": 4096
828
+ },
829
+ "text": {
830
+ "type": "string",
831
+ "maxLength": 32768
832
+ },
833
+ "tone": {
834
+ "enum": [
835
+ "neutral",
836
+ "info",
837
+ "success",
838
+ "warning",
839
+ "danger"
840
+ ]
841
+ },
842
+ "details": {
843
+ "type": "array",
844
+ "maxItems": 128,
845
+ "items": {
846
+ "type": "object",
847
+ "additionalProperties": false,
848
+ "required": [
849
+ "label",
850
+ "value"
851
+ ],
852
+ "properties": {
853
+ "label": {
854
+ "type": "string",
855
+ "minLength": 1,
856
+ "maxLength": 4096
857
+ },
858
+ "value": {
859
+ "type": "string",
860
+ "maxLength": 32768
861
+ },
862
+ "ext": {
863
+ "type": "object"
864
+ }
865
+ }
866
+ }
867
+ },
868
+ "actions": {
869
+ "type": "array",
870
+ "maxItems": 16,
871
+ "items": {
872
+ "type": "string",
873
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
874
+ }
875
+ },
876
+ "ext": {
877
+ "type": "object"
878
+ }
879
+ }
880
+ },
881
+ {
882
+ "type": "object",
883
+ "additionalProperties": false,
884
+ "required": [
885
+ "id",
886
+ "type",
887
+ "label",
888
+ "text",
889
+ "tone",
890
+ "details",
891
+ "actions"
892
+ ],
893
+ "properties": {
894
+ "id": {
895
+ "type": "string",
896
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
897
+ },
898
+ "type": {
899
+ "const": "offer"
900
+ },
901
+ "label": {
902
+ "type": "string",
903
+ "minLength": 1,
904
+ "maxLength": 4096
905
+ },
906
+ "text": {
907
+ "type": "string",
908
+ "maxLength": 32768
909
+ },
910
+ "tone": {
911
+ "enum": [
912
+ "neutral",
913
+ "info",
914
+ "success",
915
+ "warning",
916
+ "danger"
917
+ ]
918
+ },
919
+ "details": {
920
+ "type": "array",
921
+ "maxItems": 128,
922
+ "items": {
923
+ "type": "object",
924
+ "additionalProperties": false,
925
+ "required": [
926
+ "label",
927
+ "value"
928
+ ],
929
+ "properties": {
930
+ "label": {
931
+ "type": "string",
932
+ "minLength": 1,
933
+ "maxLength": 4096
934
+ },
935
+ "value": {
936
+ "type": "string",
937
+ "maxLength": 32768
938
+ },
939
+ "ext": {
940
+ "type": "object"
941
+ }
942
+ }
943
+ }
944
+ },
945
+ "actions": {
946
+ "type": "array",
947
+ "maxItems": 16,
948
+ "items": {
949
+ "type": "string",
950
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
951
+ }
952
+ },
953
+ "ext": {
954
+ "type": "object"
955
+ }
956
+ }
957
+ },
958
+ {
959
+ "type": "object",
960
+ "additionalProperties": false,
961
+ "required": [
962
+ "id",
963
+ "type",
964
+ "label",
965
+ "text",
966
+ "tone",
967
+ "details",
968
+ "actions"
969
+ ],
970
+ "properties": {
971
+ "id": {
972
+ "type": "string",
973
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
974
+ },
975
+ "type": {
976
+ "const": "review"
977
+ },
978
+ "label": {
979
+ "type": "string",
980
+ "minLength": 1,
981
+ "maxLength": 4096
982
+ },
983
+ "text": {
984
+ "type": "string",
985
+ "maxLength": 32768
986
+ },
987
+ "tone": {
988
+ "enum": [
989
+ "neutral",
990
+ "info",
991
+ "success",
992
+ "warning",
993
+ "danger"
994
+ ]
995
+ },
996
+ "details": {
997
+ "type": "array",
998
+ "maxItems": 128,
999
+ "items": {
1000
+ "type": "object",
1001
+ "additionalProperties": false,
1002
+ "required": [
1003
+ "label",
1004
+ "value"
1005
+ ],
1006
+ "properties": {
1007
+ "label": {
1008
+ "type": "string",
1009
+ "minLength": 1,
1010
+ "maxLength": 4096
1011
+ },
1012
+ "value": {
1013
+ "type": "string",
1014
+ "maxLength": 32768
1015
+ },
1016
+ "ext": {
1017
+ "type": "object"
1018
+ }
1019
+ }
1020
+ }
1021
+ },
1022
+ "actions": {
1023
+ "type": "array",
1024
+ "maxItems": 16,
1025
+ "items": {
1026
+ "type": "string",
1027
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
1028
+ }
1029
+ },
1030
+ "ext": {
1031
+ "type": "object"
1032
+ }
1033
+ }
1034
+ },
1035
+ {
1036
+ "type": "object",
1037
+ "additionalProperties": false,
1038
+ "required": [
1039
+ "id",
1040
+ "type",
1041
+ "label",
1042
+ "text",
1043
+ "tone",
1044
+ "details",
1045
+ "actions"
1046
+ ],
1047
+ "properties": {
1048
+ "id": {
1049
+ "type": "string",
1050
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
1051
+ },
1052
+ "type": {
1053
+ "const": "publication"
1054
+ },
1055
+ "label": {
1056
+ "type": "string",
1057
+ "minLength": 1,
1058
+ "maxLength": 4096
1059
+ },
1060
+ "text": {
1061
+ "type": "string",
1062
+ "maxLength": 32768
1063
+ },
1064
+ "tone": {
1065
+ "enum": [
1066
+ "neutral",
1067
+ "info",
1068
+ "success",
1069
+ "warning",
1070
+ "danger"
1071
+ ]
1072
+ },
1073
+ "details": {
1074
+ "type": "array",
1075
+ "maxItems": 128,
1076
+ "items": {
1077
+ "type": "object",
1078
+ "additionalProperties": false,
1079
+ "required": [
1080
+ "label",
1081
+ "value"
1082
+ ],
1083
+ "properties": {
1084
+ "label": {
1085
+ "type": "string",
1086
+ "minLength": 1,
1087
+ "maxLength": 4096
1088
+ },
1089
+ "value": {
1090
+ "type": "string",
1091
+ "maxLength": 32768
1092
+ },
1093
+ "ext": {
1094
+ "type": "object"
1095
+ }
1096
+ }
1097
+ }
1098
+ },
1099
+ "actions": {
1100
+ "type": "array",
1101
+ "maxItems": 16,
1102
+ "items": {
1103
+ "type": "string",
1104
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
1105
+ }
1106
+ },
1107
+ "ext": {
1108
+ "type": "object"
1109
+ }
1110
+ }
1111
+ },
1112
+ {
1113
+ "type": "object",
1114
+ "additionalProperties": false,
1115
+ "required": [
1116
+ "id",
1117
+ "type",
1118
+ "label",
1119
+ "value",
1120
+ "input",
1121
+ "required",
1122
+ "disabled"
1123
+ ],
1124
+ "properties": {
1125
+ "id": {
1126
+ "type": "string",
1127
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
1128
+ },
1129
+ "type": {
1130
+ "const": "field"
1131
+ },
1132
+ "label": {
1133
+ "type": "string",
1134
+ "minLength": 1,
1135
+ "maxLength": 4096
1136
+ },
1137
+ "value": {
1138
+ "type": "string",
1139
+ "maxLength": 32768
1140
+ },
1141
+ "input": {
1142
+ "enum": [
1143
+ "text",
1144
+ "email",
1145
+ "search",
1146
+ "number"
1147
+ ]
1148
+ },
1149
+ "required": {
1150
+ "type": "boolean"
1151
+ },
1152
+ "disabled": {
1153
+ "type": "boolean"
1154
+ },
1155
+ "error": {
1156
+ "type": "string",
1157
+ "maxLength": 32768
1158
+ },
1159
+ "ext": {
1160
+ "type": "object"
1161
+ }
1162
+ }
1163
+ },
1164
+ {
1165
+ "type": "object",
1166
+ "additionalProperties": false,
1167
+ "required": [
1168
+ "id",
1169
+ "type",
1170
+ "label",
1171
+ "value",
1172
+ "disabled"
1173
+ ],
1174
+ "properties": {
1175
+ "id": {
1176
+ "type": "string",
1177
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
1178
+ },
1179
+ "type": {
1180
+ "const": "editor"
1181
+ },
1182
+ "label": {
1183
+ "type": "string",
1184
+ "minLength": 1,
1185
+ "maxLength": 4096
1186
+ },
1187
+ "value": {
1188
+ "type": "string",
1189
+ "maxLength": 32768
1190
+ },
1191
+ "disabled": {
1192
+ "type": "boolean"
1193
+ },
1194
+ "error": {
1195
+ "type": "string",
1196
+ "maxLength": 32768
1197
+ },
1198
+ "ext": {
1199
+ "type": "object"
1200
+ }
1201
+ }
1202
+ },
1203
+ {
1204
+ "type": "object",
1205
+ "additionalProperties": false,
1206
+ "required": [
1207
+ "id",
1208
+ "type",
1209
+ "label",
1210
+ "text"
1211
+ ],
1212
+ "properties": {
1213
+ "id": {
1214
+ "type": "string",
1215
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
1216
+ },
1217
+ "type": {
1218
+ "const": "preview"
1219
+ },
1220
+ "label": {
1221
+ "type": "string",
1222
+ "minLength": 1,
1223
+ "maxLength": 4096
1224
+ },
1225
+ "text": {
1226
+ "type": "string",
1227
+ "maxLength": 32768
1228
+ },
1229
+ "ext": {
1230
+ "type": "object"
1231
+ }
1232
+ }
1233
+ },
1234
+ {
1235
+ "type": "object",
1236
+ "additionalProperties": false,
1237
+ "required": [
1238
+ "id",
1239
+ "type",
1240
+ "label",
1241
+ "before",
1242
+ "after",
1243
+ "beforeLabel",
1244
+ "afterLabel"
1245
+ ],
1246
+ "properties": {
1247
+ "id": {
1248
+ "type": "string",
1249
+ "pattern": "^[a-z][a-z0-9-]{0,63}$"
1250
+ },
1251
+ "type": {
1252
+ "const": "diff"
1253
+ },
1254
+ "label": {
1255
+ "type": "string",
1256
+ "minLength": 1,
1257
+ "maxLength": 4096
1258
+ },
1259
+ "before": {
1260
+ "type": "string",
1261
+ "maxLength": 32768
1262
+ },
1263
+ "after": {
1264
+ "type": "string",
1265
+ "maxLength": 32768
1266
+ },
1267
+ "beforeLabel": {
1268
+ "type": "string",
1269
+ "minLength": 1,
1270
+ "maxLength": 4096
1271
+ },
1272
+ "afterLabel": {
1273
+ "type": "string",
1274
+ "minLength": 1,
1275
+ "maxLength": 4096
1276
+ },
1277
+ "ext": {
1278
+ "type": "object"
1279
+ }
1280
+ }
1281
+ }
1282
+ ]
1283
+ }
1284
+ },
1285
+ "contractVersion": {
1286
+ "type": "string",
1287
+ "pattern": "^1\\.[0-9]+\\.[0-9]+$"
1288
+ },
1289
+ "ext": {
1290
+ "type": "object"
1291
+ }
1292
+ }
1293
+ }