@openplanr/protocol 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/lib/dashboard/closed-json-contract.mjs +141 -0
  4. package/lib/dashboard/generated/operate-experience-surface-schema-data.mjs +67 -0
  5. package/lib/dashboard/generated/operate-review-schema-data.mjs +35 -0
  6. package/lib/dashboard/generated/operate-schema-token-codec.mjs +127 -0
  7. package/lib/dashboard/operate-experience-audit-display-contract.d.mts +196 -0
  8. package/lib/dashboard/operate-experience-audit-display-contract.mjs +700 -0
  9. package/lib/dashboard/operate-experience-display-contract.d.mts +572 -0
  10. package/lib/dashboard/operate-experience-display-contract.mjs +1007 -0
  11. package/lib/dashboard/operate-experience-surface-contract.d.mts +157 -0
  12. package/lib/dashboard/operate-experience-surface-contract.mjs +91 -0
  13. package/lib/dashboard/operate-review-contract.d.mts +34 -0
  14. package/lib/dashboard/operate-review-contract.mjs +175 -0
  15. package/lib/dashboard/operate-review-display-workspace-contract.d.mts +54 -0
  16. package/lib/dashboard/operate-review-display-workspace-contract.mjs +258 -0
  17. package/lib/dashboard/operate-review-payload-safety.d.mts +7 -0
  18. package/lib/dashboard/operate-review-payload-safety.mjs +42 -0
  19. package/lib/dashboard/operate-review-workspace-projection-v2.d.mts +218 -0
  20. package/lib/protocol/index.d.ts +2638 -0
  21. package/package.json +115 -0
  22. package/registries/commands.json +1952 -0
  23. package/registries/diagram-grammars.json +2407 -0
  24. package/registries/diagram-semantic-patterns.json +111 -0
  25. package/registries/output-paths.json +40 -0
  26. package/registries/outputs.json +864 -0
  27. package/registries/roles.json +661 -0
  28. package/registries/rules.json +261 -0
  29. package/registries/skill-host-profiles.json +247 -0
  30. package/registries/skill-modules.json +1112 -0
  31. package/registries/skill-routing.json +389 -0
  32. package/registries/skills.json +1545 -0
  33. package/registries/task-kinds.json +220 -0
  34. package/registry/adapters.json +110 -0
  35. package/registry/artifact-theme.json +60 -0
  36. package/registry/evaluation-graders.json +303 -0
  37. package/registry/evaluation-host-profiles.json +131 -0
  38. package/registry/frozen-commands.json +15 -0
  39. package/registry/landing-operations.json +20 -0
  40. package/registry/landing-workflows.json +70 -0
  41. package/registry/live-evidence-providers.json +1 -0
  42. package/registry/operate-v2-contracts.json +5965 -0
  43. package/registry/professional-skills.json +115 -0
  44. package/registry/roles.json +14 -0
  45. package/registry/ship-review-specialists.json +42 -0
  46. package/schemas/v1.0.0/design-approved.schema.json +35 -0
  47. package/schemas/v1.0.0/design-feedback.schema.json +169 -0
  48. package/schemas/v1.0.0/design-manifest.schema.json +90 -0
  49. package/schemas/v1.0.0/design-session.schema.json +73 -0
  50. package/schemas/v1.0.0/graph.schema.json +100 -0
  51. package/schemas/v1.0.0/pipeline-shipped.schema.json +154 -0
  52. package/schemas/v1.0.0/run-manifest.schema.json +81 -0
  53. package/schemas/v1.0.0/spec.schema.json +120 -0
  54. package/schemas/v1.0.0/stack.schema.json +184 -0
  55. package/schemas/v1.0.0/story.schema.json +95 -0
  56. package/schemas/v1.0.0/task.schema.json +171 -0
  57. package/schemas/v1.0.0/taste-profile.schema.json +96 -0
  58. package/schemas/v1.1.0/adapter-registry.schema.json +72 -0
  59. package/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  60. package/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  61. package/schemas/v1.1.0/artifact-review.schema.json +97 -0
  62. package/schemas/v1.1.0/artifact-room-descriptor.schema.json +39 -0
  63. package/schemas/v1.1.0/artifact-room-event.schema.json +184 -0
  64. package/schemas/v1.1.0/artifact-room-signed-event.schema.json +58 -0
  65. package/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  66. package/schemas/v1.1.0/browser-qa-gate.schema.json +21 -0
  67. package/schemas/v1.1.0/browser-qa-result.schema.json +24 -0
  68. package/schemas/v1.1.0/browser-qa-session.schema.json +12 -0
  69. package/schemas/v1.1.0/ecosystem-manifest.schema.json +46 -0
  70. package/schemas/v1.1.0/investigation-diagnosis.schema.json +12 -0
  71. package/schemas/v1.1.0/investigation-event.schema.json +15 -0
  72. package/schemas/v1.1.0/investigation-experiment.schema.json +17 -0
  73. package/schemas/v1.1.0/investigation-fix.schema.json +11 -0
  74. package/schemas/v1.1.0/investigation-hypothesis.schema.json +6 -0
  75. package/schemas/v1.1.0/investigation-observation.schema.json +10 -0
  76. package/schemas/v1.1.0/investigation-receipt.schema.json +7 -0
  77. package/schemas/v1.1.0/investigation-record.schema.json +7 -0
  78. package/schemas/v1.1.0/investigation-request.schema.json +34 -0
  79. package/schemas/v1.1.0/planning-review-event.schema.json +64 -0
  80. package/schemas/v1.1.0/planning-review-receipt.schema.json +19 -0
  81. package/schemas/v1.1.0/planning-review-record.schema.json +176 -0
  82. package/schemas/v1.1.0/planning-review-state.schema.json +19 -0
  83. package/schemas/v1.1.0/professional-skills.schema.json +105 -0
  84. package/schemas/v1.1.0/professional-specification.schema.json +111 -0
  85. package/schemas/v1.1.0/provenance-event.schema.json +82 -0
  86. package/schemas/v1.1.0/role-registry.schema.json +28 -0
  87. package/schemas/v1.1.0/runtime-lock.schema.json +39 -0
  88. package/schemas/v1.1.0/ship-closure.schema.json +353 -0
  89. package/schemas/v1.1.0/ship-review-specialist-registry.schema.json +29 -0
  90. package/schemas/v1.1.0/ship-risk-classification.schema.json +48 -0
  91. package/schemas/v1.1.0/specialist-review-result.schema.json +19 -0
  92. package/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  93. package/schemas/v1.10.0/design-review-context.schema.json +191 -0
  94. package/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  95. package/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  96. package/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  97. package/schemas/v1.12.0/enterprise-access-context.schema.json +217 -0
  98. package/schemas/v1.12.0/enterprise-agent-handoff.schema.json +508 -0
  99. package/schemas/v1.12.0/enterprise-artifact-revision.schema.json +87 -0
  100. package/schemas/v1.12.0/enterprise-change-proposal.schema.json +359 -0
  101. package/schemas/v1.12.0/enterprise-evidence-reference.schema.json +147 -0
  102. package/schemas/v1.12.0/enterprise-review-thread.schema.json +278 -0
  103. package/schemas/v1.12.0/enterprise-sync-state.schema.json +169 -0
  104. package/schemas/v1.2.0/adapter-registry.schema.json +83 -0
  105. package/schemas/v1.2.0/dashboard-bootstrap.schema.json +219 -0
  106. package/schemas/v1.2.0/ecosystem-release-operation.schema.json +90 -0
  107. package/schemas/v1.2.0/ecosystem-saga.schema.json +54 -0
  108. package/schemas/v1.2.0/evidence-diagnostic.schema.json +77 -0
  109. package/schemas/v1.2.0/guided-answer-envelope.schema.json +73 -0
  110. package/schemas/v1.2.0/guided-confirmation.schema.json +128 -0
  111. package/schemas/v1.2.0/guided-question.schema.json +242 -0
  112. package/schemas/v1.2.0/guided-questionnaire.schema.json +278 -0
  113. package/schemas/v1.2.0/guided-session.schema.json +141 -0
  114. package/schemas/v1.2.0/landing-confirmation.schema.json +17 -0
  115. package/schemas/v1.2.0/landing-event.schema.json +12 -0
  116. package/schemas/v1.2.0/landing-operation-registry.schema.json +16 -0
  117. package/schemas/v1.2.0/landing-phase-receipt.schema.json +19 -0
  118. package/schemas/v1.2.0/landing-plan.schema.json +36 -0
  119. package/schemas/v1.2.0/landing-receipt.schema.json +12 -0
  120. package/schemas/v1.2.0/landing-workflow-catalog.schema.json +143 -0
  121. package/schemas/v1.2.0/operate-action-display-workspace.schema.json +119 -0
  122. package/schemas/v1.2.0/operate-cycle-display-workspace.schema.json +109 -0
  123. package/schemas/v1.2.0/operate-executive-board-display-surface.schema.json +72 -0
  124. package/schemas/v1.2.0/operate-experience-audit-display-surface.schema.json +328 -0
  125. package/schemas/v1.2.0/operate-experience-display-surface.schema.json +46 -0
  126. package/schemas/v1.2.0/operate-experience-surface.schema.json +590 -0
  127. package/schemas/v1.2.0/operate-recovery-display-surface.schema.json +85 -0
  128. package/schemas/v1.2.0/structured-action.schema.json +91 -0
  129. package/schemas/v1.3.0/adapter-registry.schema.json +84 -0
  130. package/schemas/v1.3.0/ecosystem-manifest.schema.json +120 -0
  131. package/schemas/v1.3.0/release-compatibility-claim.schema.json +46 -0
  132. package/schemas/v1.3.0/release-ledger-receipt.schema.json +45 -0
  133. package/schemas/v1.3.0/release-ledger.schema.json +60 -0
  134. package/schemas/v1.4.0/adapter-registry.schema.json +62 -0
  135. package/schemas/v1.4.0/evaluation-aggregate-report.schema.json +166 -0
  136. package/schemas/v1.4.0/evaluation-budget.schema.json +49 -0
  137. package/schemas/v1.4.0/evaluation-corpus.schema.json +93 -0
  138. package/schemas/v1.4.0/evaluation-fixture.schema.json +64 -0
  139. package/schemas/v1.4.0/evaluation-gate-policy.schema.json +33 -0
  140. package/schemas/v1.4.0/evaluation-grader-registration.schema.json +141 -0
  141. package/schemas/v1.4.0/evaluation-grader-registry.schema.json +20 -0
  142. package/schemas/v1.4.0/evaluation-host-profile-registry.schema.json +20 -0
  143. package/schemas/v1.4.0/evaluation-host-profile.schema.json +73 -0
  144. package/schemas/v1.4.0/evaluation-observation.schema.json +76 -0
  145. package/schemas/v1.4.0/evaluation-run-result.schema.json +84 -0
  146. package/schemas/v1.4.0/evaluation-scenario.schema.json +231 -0
  147. package/schemas/v1.4.0/evaluation-waiver.schema.json +65 -0
  148. package/schemas/v1.4.0/skill-certification-receipt.schema.json +103 -0
  149. package/schemas/v1.5.0/command-catalog.schema.json +296 -0
  150. package/schemas/v1.5.0/common.schema.json +261 -0
  151. package/schemas/v1.5.0/generated-asset-manifest.schema.json +313 -0
  152. package/schemas/v1.5.0/implementation-result.schema.json +152 -0
  153. package/schemas/v1.5.0/migration-preservation-manifest.schema.json +749 -0
  154. package/schemas/v1.5.0/output-catalog.schema.json +210 -0
  155. package/schemas/v1.5.0/output-path-catalog.schema.json +81 -0
  156. package/schemas/v1.5.0/role-registry.schema.json +261 -0
  157. package/schemas/v1.5.0/rule-catalog.schema.json +130 -0
  158. package/schemas/v1.5.0/skill-catalog.schema.json +303 -0
  159. package/schemas/v1.5.0/task-kind-registry.schema.json +167 -0
  160. package/schemas/v1.5.0/task-manifest.schema.json +373 -0
  161. package/schemas/v1.5.0/task-output-manifest.schema.json +462 -0
  162. package/schemas/v1.6.0/common.schema.json +462 -0
  163. package/schemas/v1.6.0/diagram-consumer-reference.schema.json +167 -0
  164. package/schemas/v1.6.0/diagram-document.schema.json +699 -0
  165. package/schemas/v1.6.0/diagram-fidelity-report.schema.json +137 -0
  166. package/schemas/v1.6.0/diagram-manifest.schema.json +162 -0
  167. package/schemas/v1.6.0/diagram-quality-report.schema.json +148 -0
  168. package/schemas/v1.6.0/diagram-review-binding.schema.json +132 -0
  169. package/schemas/v1.6.0/diagram-semantic-pattern-registry.schema.json +90 -0
  170. package/schemas/v1.6.0/diagram-type-registry.schema.json +373 -0
  171. package/schemas/v1.6.0/generated-asset-manifest.schema.json +103 -0
  172. package/schemas/v1.6.0/skill-catalog.schema.json +84 -0
  173. package/schemas/v1.6.0/skill-completion-receipt.schema.json +72 -0
  174. package/schemas/v1.6.0/skill-consent-record.schema.json +74 -0
  175. package/schemas/v1.6.0/skill-host-profile-registry.schema.json +526 -0
  176. package/schemas/v1.6.0/skill-learning-record.schema.json +116 -0
  177. package/schemas/v1.6.0/skill-module-registry.schema.json +108 -0
  178. package/schemas/v1.6.0/skill-routing-registry.schema.json +93 -0
  179. package/schemas/v1.6.0/skill-session.schema.json +73 -0
  180. package/schemas/v1.6.0/skill-source.schema.json +169 -0
  181. package/schemas/v1.7.0/common.schema.json +464 -0
  182. package/schemas/v1.7.0/generated-asset-manifest.schema.json +103 -0
  183. package/schemas/v1.7.0/planning-id-sequence.schema.json +50 -0
  184. package/schemas/v1.7.0/request-authority.schema.json +71 -0
  185. package/schemas/v1.7.0/skill-catalog.schema.json +84 -0
  186. package/schemas/v1.7.0/skill-completion-receipt.schema.json +72 -0
  187. package/schemas/v1.7.0/skill-consent-record.schema.json +74 -0
  188. package/schemas/v1.7.0/skill-host-profile-registry.schema.json +526 -0
  189. package/schemas/v1.7.0/skill-learning-record.schema.json +116 -0
  190. package/schemas/v1.7.0/skill-module-registry.schema.json +108 -0
  191. package/schemas/v1.7.0/skill-routing-registry.schema.json +93 -0
  192. package/schemas/v1.7.0/skill-session.schema.json +73 -0
  193. package/schemas/v1.7.0/skill-source.schema.json +169 -0
  194. package/schemas/v1.7.0/spec.schema.json +117 -0
  195. package/schemas/v1.7.0/story.schema.json +107 -0
  196. package/schemas/v1.7.0/task.schema.json +217 -0
  197. package/schemas/v1.8.0/common.schema.json +96 -0
  198. package/schemas/v1.8.0/skill-package.schema.json +63 -0
  199. package/schemas/v1.8.0/utility-command-catalog.schema.json +82 -0
  200. package/schemas/v1.9.0/design-document.schema.json +306 -0
  201. package/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  202. package/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  203. package/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  204. package/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  205. package/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  206. package/schemas/v2.0.0/agent-runtime-manifest.schema.json +59 -0
  207. package/schemas/v2.0.0/business-operating-snapshot-projection.schema.json +14 -0
  208. package/schemas/v2.0.0/operate-allowed-action.schema.json +181 -0
  209. package/schemas/v2.0.0/operate-api-envelope.schema.json +225 -0
  210. package/schemas/v2.0.0/operate-capability-provider-registration.schema.json +30 -0
  211. package/schemas/v2.0.0/operate-domain-registration.schema.json +284 -0
  212. package/schemas/v2.0.0/operate-evidence-provider-registration.schema.json +55 -0
  213. package/schemas/v2.0.0/operate-evidence-resolver-registration.schema.json +46 -0
  214. package/schemas/v2.0.0/operate-executor-registration.schema.json +27 -0
  215. package/schemas/v2.0.0/operate-experience-live-patch.schema.json +47 -0
  216. package/schemas/v2.0.0/operate-experience-preview.schema.json +51 -0
  217. package/schemas/v2.0.0/operate-experience-view.schema.json +281 -0
  218. package/schemas/v2.0.0/operate-live-evidence-provider-registration.schema.json +48 -0
  219. package/schemas/v2.0.0/operate-live-evidence-provider-registry.schema.json +17 -0
  220. package/schemas/v2.0.0/operate-metric-provider-registration.schema.json +12 -0
  221. package/schemas/v2.0.0/operate-policy-provider-registration.schema.json +33 -0
  222. package/schemas/v2.0.0/operate-review-bound-submission.schema.json +29 -0
  223. package/schemas/v2.0.0/operate-review-display-workspace.schema.json +390 -0
  224. package/schemas/v2.0.0/operate-snapshot-provider-registration.schema.json +16 -0
  225. package/schemas/v2.0.0/operate-tool-call.schema.json +172 -0
  226. package/schemas/v2.0.0/operate-verification-provider-registration.schema.json +12 -0
  227. package/schemas/v2.0.0/operating-action-policy.schema.json +31 -0
  228. package/schemas/v2.0.0/operating-action-verification-plan.schema.json +13 -0
  229. package/schemas/v2.0.0/operating-action.schema.json +86 -0
  230. package/schemas/v2.0.0/operating-advisor-result.schema.json +394 -0
  231. package/schemas/v2.0.0/operating-approval-record.schema.json +23 -0
  232. package/schemas/v2.0.0/operating-approval-requirement.schema.json +31 -0
  233. package/schemas/v2.0.0/operating-artifact.schema.json +52 -0
  234. package/schemas/v2.0.0/operating-assignment.schema.json +437 -0
  235. package/schemas/v2.0.0/operating-assumption.schema.json +16 -0
  236. package/schemas/v2.0.0/operating-capability-availability.schema.json +15 -0
  237. package/schemas/v2.0.0/operating-capability-grant.schema.json +14 -0
  238. package/schemas/v2.0.0/operating-challenger-review.schema.json +204 -0
  239. package/schemas/v2.0.0/operating-checkpoint.schema.json +43 -0
  240. package/schemas/v2.0.0/operating-claim.schema.json +17 -0
  241. package/schemas/v2.0.0/operating-connector-checkpoint.schema.json +28 -0
  242. package/schemas/v2.0.0/operating-context-capture.schema.json +74 -0
  243. package/schemas/v2.0.0/operating-cycle-input-binding.schema.json +30 -0
  244. package/schemas/v2.0.0/operating-cycle.schema.json +42 -0
  245. package/schemas/v2.0.0/operating-decision-ledger.schema.json +237 -0
  246. package/schemas/v2.0.0/operating-decision.schema.json +137 -0
  247. package/schemas/v2.0.0/operating-delivery-evidence.schema.json +46 -0
  248. package/schemas/v2.0.0/operating-delivery-route.schema.json +43 -0
  249. package/schemas/v2.0.0/operating-delta.schema.json +13 -0
  250. package/schemas/v2.0.0/operating-domain-projection.schema.json +15 -0
  251. package/schemas/v2.0.0/operating-event-trigger.schema.json +11 -0
  252. package/schemas/v2.0.0/operating-event.schema.json +505 -0
  253. package/schemas/v2.0.0/operating-evidence-candidate.schema.json +88 -0
  254. package/schemas/v2.0.0/operating-evidence-edge.schema.json +39 -0
  255. package/schemas/v2.0.0/operating-evidence-graph.schema.json +25 -0
  256. package/schemas/v2.0.0/operating-evidence-observation.schema.json +48 -0
  257. package/schemas/v2.0.0/operating-evidence-ref.schema.json +51 -0
  258. package/schemas/v2.0.0/operating-evidence-resolution.schema.json +54 -0
  259. package/schemas/v2.0.0/operating-execution-result.schema.json +23 -0
  260. package/schemas/v2.0.0/operating-executive-board.schema.json +78 -0
  261. package/schemas/v2.0.0/operating-finding.schema.json +116 -0
  262. package/schemas/v2.0.0/operating-governed-operation.schema.json +54 -0
  263. package/schemas/v2.0.0/operating-intelligence-input-bundle.schema.json +128 -0
  264. package/schemas/v2.0.0/operating-intelligence-plan.schema.json +302 -0
  265. package/schemas/v2.0.0/operating-learning-receipt.schema.json +31 -0
  266. package/schemas/v2.0.0/operating-learning.schema.json +13 -0
  267. package/schemas/v2.0.0/operating-live-evidence-consent-record.schema.json +42 -0
  268. package/schemas/v2.0.0/operating-live-evidence-ingestion.schema.json +31 -0
  269. package/schemas/v2.0.0/operating-measurement-plan.schema.json +18 -0
  270. package/schemas/v2.0.0/operating-measurement-schedule-receipt.schema.json +7 -0
  271. package/schemas/v2.0.0/operating-measurement-schedule.schema.json +16 -0
  272. package/schemas/v2.0.0/operating-metric-observation.schema.json +15 -0
  273. package/schemas/v2.0.0/operating-metric.schema.json +18 -0
  274. package/schemas/v2.0.0/operating-model-state.schema.json +36 -0
  275. package/schemas/v2.0.0/operating-objective.schema.json +21 -0
  276. package/schemas/v2.0.0/operating-origin.schema.json +31 -0
  277. package/schemas/v2.0.0/operating-outcome-evaluation.schema.json +46 -0
  278. package/schemas/v2.0.0/operating-outcome.schema.json +13 -0
  279. package/schemas/v2.0.0/operating-planning-proposal.schema.json +45 -0
  280. package/schemas/v2.0.0/operating-policy-evaluation.schema.json +28 -0
  281. package/schemas/v2.0.0/operating-review-read.schema.json +217 -0
  282. package/schemas/v2.0.0/operating-review-receipt.schema.json +64 -0
  283. package/schemas/v2.0.0/operating-review.schema.json +47 -0
  284. package/schemas/v2.0.0/operating-risk.schema.json +96 -0
  285. package/schemas/v2.0.0/operating-rollback-plan.schema.json +10 -0
  286. package/schemas/v2.0.0/operating-rollback-result.schema.json +20 -0
  287. package/schemas/v2.0.0/operating-runtime-state.schema.json +289 -0
  288. package/schemas/v2.0.0/operating-scenario.schema.json +13 -0
  289. package/schemas/v2.0.0/operating-snapshot.schema.json +38 -0
  290. package/schemas/v2.0.0/operating-submission.schema.json +34 -0
  291. package/schemas/v2.0.0/operating-trace-matrix.schema.json +176 -0
  292. package/schemas/v2.0.0/operating-work-change-set.schema.json +89 -0
  293. package/schemas/v2.0.0/operating-work-ledger.schema.json +40 -0
  294. package/schemas/v2.0.0/software-operating-snapshot-projection.schema.json +14 -0
  295. package/src/browser-contracts.d.mts +5 -0
  296. package/src/browser-contracts.mjs +40 -0
  297. package/src/canonical-json.d.mts +5 -0
  298. package/src/canonical-json.mjs +142 -0
  299. package/src/compat/live-evidence-v2.mjs +1019 -0
  300. package/src/compat/operate-experience-live-patch.mjs +66 -0
  301. package/src/compat/operating-planning-contracts.mjs +114 -0
  302. package/src/contracts.d.mts +42 -0
  303. package/src/contracts.mjs +990 -0
  304. package/src/design-contracts.d.mts +62 -0
  305. package/src/design-contracts.mjs +186 -0
  306. package/src/design-publication-contracts.d.mts +4 -0
  307. package/src/design-publication-contracts.mjs +85 -0
  308. package/src/diagram-contracts.d.mts +19 -0
  309. package/src/diagram-contracts.mjs +28 -0
  310. package/src/enterprise-contracts.d.mts +107 -0
  311. package/src/enterprise-contracts.mjs +463 -0
  312. package/src/errors.d.mts +11 -0
  313. package/src/errors.mjs +109 -0
  314. package/src/generated/canonical-registries.mjs +5554 -0
  315. package/src/generated/contract-catalog-v2.mjs +7076 -0
  316. package/src/generated/diagram-registries.mjs +2529 -0
  317. package/src/index.d.mts +10 -0
  318. package/src/index.mjs +40 -0
  319. package/src/json-schema.d.mts +7 -0
  320. package/src/json-schema.mjs +283 -0
  321. package/src/planning-contracts.d.mts +10 -0
  322. package/src/planning-contracts.mjs +53 -0
  323. package/src/registries.d.mts +40 -0
  324. package/src/registries.mjs +261 -0
  325. package/src/review-experience-contracts.d.mts +11 -0
  326. package/src/review-experience-contracts.mjs +103 -0
  327. package/src/semver.d.mts +2 -0
  328. package/src/semver.mjs +7 -0
  329. package/src/skill-source-contracts.d.mts +25 -0
  330. package/src/skill-source-contracts.mjs +105 -0
  331. package/src/task-contracts.d.mts +7 -0
  332. package/src/task-contracts.mjs +130 -0
  333. package/src/workspace-contracts.d.mts +26 -0
  334. package/src/workspace-contracts.mjs +83 -0
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.0.0/story.schema.json",
4
+ "title": "OpenPlanr User Story frontmatter (v1.0.0)",
5
+ "description": "JSON Schema for the YAML frontmatter of a user story artifact. Accepts both planr-pipeline modes via a top-level `oneOf` over the parent reference: spec-driven user stories (US-NNN-{slug}.md under <SPEC_DIR>/stories/) carry `specId: \"SPEC-NNN\"` and live scoped to a parent SPEC; default-mode user stories (output/feats/feat-{slug}/us-N/us-N.md) carry `featureSlug: \"<slug>\"` and live scoped to a parent feature folder. Exactly one of the two parent-reference fields must be present per story; the other must be absent.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "id",
10
+ "title",
11
+ "slug",
12
+ "schemaVersion",
13
+ "status",
14
+ "created",
15
+ "updated"
16
+ ],
17
+ "properties": {
18
+ "id": {
19
+ "type": "string",
20
+ "pattern": "^US-\\d{3}$",
21
+ "description": "User Story identifier (e.g. US-001). Scoped to the parent SPEC (spec-driven) or parent feature (default mode)."
22
+ },
23
+ "title": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "description": "Human-readable story title."
27
+ },
28
+ "specId": {
29
+ "type": "string",
30
+ "pattern": "^SPEC-\\d{3}$",
31
+ "description": "ID of the parent spec this story belongs to. Spec-driven mode only — must be absent in default mode."
32
+ },
33
+ "featureSlug": {
34
+ "type": "string",
35
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
36
+ "minLength": 1,
37
+ "description": "Slug of the parent feature folder this story belongs to. Default mode only — must be absent in spec-driven mode."
38
+ },
39
+ "slug": {
40
+ "type": "string",
41
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
42
+ "minLength": 1,
43
+ "description": "URL-safe lowercase slug used in the story file name."
44
+ },
45
+ "schemaVersion": {
46
+ "const": "1.0.0",
47
+ "description": "Pinned to the OpenPlanr Protocol reader version."
48
+ },
49
+ "status": {
50
+ "type": "string",
51
+ "enum": ["pending", "implementing", "done", "blocked"],
52
+ "description": "Current lifecycle state of the story."
53
+ },
54
+ "priority": {
55
+ "type": "string",
56
+ "enum": ["P0", "P1", "P2", "P3"],
57
+ "description": "Optional priority tier (inherits from parent spec when absent)."
58
+ },
59
+ "created": {
60
+ "type": "string",
61
+ "format": "date",
62
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
63
+ "description": "ISO date (YYYY-MM-DD) of story creation."
64
+ },
65
+ "updated": {
66
+ "type": "string",
67
+ "format": "date",
68
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
69
+ "description": "ISO date (YYYY-MM-DD) bumped on every edit."
70
+ },
71
+ "kanbanosId": {
72
+ "type": "string",
73
+ "minLength": 8,
74
+ "pattern": "^[A-Za-z0-9_-]{8,128}$",
75
+ "description": "Optional opaque entity id on the kanbanos hosted board, written back by the sync tool after a successful push (the linearId precedent from the OpenPlanr CLI Linear integration). Sync-tool-owned: humans and planning agents never author or edit it by hand. Absent until the artifact is first pushed. See ADR-012."
76
+ },
77
+ "contentHash": {
78
+ "type": "string",
79
+ "pattern": "^sha256:[a-f0-9]{64}$",
80
+ "description": "Optional digest of the artifact content at the last successful board sync, written back by the sync tool alongside kanbanosId so drift between file and board is detectable. Same sha256:<hex> shape as operating-evidence-index-item@1.3.0. Sync-tool-owned: humans and planning agents never author or edit it by hand. See ADR-012."
81
+ }
82
+ },
83
+ "oneOf": [
84
+ {
85
+ "title": "spec-driven story → requires specId, forbids featureSlug",
86
+ "required": ["specId"],
87
+ "not": { "required": ["featureSlug"] }
88
+ },
89
+ {
90
+ "title": "default-mode story → requires featureSlug, forbids specId",
91
+ "required": ["featureSlug"],
92
+ "not": { "required": ["specId"] }
93
+ }
94
+ ]
95
+ }
@@ -0,0 +1,171 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.0.0/task.schema.json",
4
+ "title": "OpenPlanr Task frontmatter (v1.0.0)",
5
+ "description": "JSON Schema for the YAML frontmatter of a task artifact. Encodes two orthogonal correlations via `allOf`: (1) type-to-agent — UI tasks use frontend-agent, Tech tasks use backend-agent or db-agent; (2) parent reference — spec-driven tasks (T-NNN-{slug}.md under <SPEC_DIR>/tasks/) carry `specId: \"SPEC-NNN\"` (with a `storyId` pointing at a US-NNN within that SPEC), default-mode tasks (output/feats/feat-{slug}/us-N/tasks/task-N.md) carry `featureSlug: \"<slug>\"` instead of specId. Exactly one of the two parent-reference fields must be present per task; the other must be absent.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "id",
10
+ "title",
11
+ "storyId",
12
+ "slug",
13
+ "schemaVersion",
14
+ "type",
15
+ "agent",
16
+ "status",
17
+ "created",
18
+ "updated"
19
+ ],
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^T-\\d{3}$",
24
+ "description": "Task identifier (e.g. T-001). Scoped to the parent SPEC (spec-driven) or parent User Story (default mode)."
25
+ },
26
+ "title": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "description": "Human-readable task title."
30
+ },
31
+ "storyId": {
32
+ "type": "string",
33
+ "pattern": "^US-\\d{3}$",
34
+ "description": "ID of the parent User Story this task belongs to."
35
+ },
36
+ "specId": {
37
+ "type": "string",
38
+ "pattern": "^SPEC-\\d{3}$",
39
+ "description": "ID of the grandparent spec this task ultimately belongs to. Spec-driven mode only — must be absent in default mode."
40
+ },
41
+ "featureSlug": {
42
+ "type": "string",
43
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
44
+ "minLength": 1,
45
+ "description": "Slug of the parent feature folder this task ultimately belongs to. Default mode only — must be absent in spec-driven mode."
46
+ },
47
+ "slug": {
48
+ "type": "string",
49
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
50
+ "minLength": 1,
51
+ "description": "URL-safe lowercase slug used in the task file name."
52
+ },
53
+ "schemaVersion": {
54
+ "const": "1.0.0",
55
+ "description": "Pinned to the OpenPlanr Protocol reader version."
56
+ },
57
+ "type": {
58
+ "type": "string",
59
+ "enum": ["UI", "Tech"],
60
+ "description": "UI = frontend-bearing task; Tech = backend / data / infra task."
61
+ },
62
+ "agent": {
63
+ "type": "string",
64
+ "enum": ["frontend-agent", "backend-agent", "db-agent"],
65
+ "description": "DEV agent responsible for executing this task. Must correlate with `type` (see allOf type/agent branch)."
66
+ },
67
+ "status": {
68
+ "type": "string",
69
+ "enum": ["pending", "in-progress", "done", "blocked"],
70
+ "description": "Current lifecycle state of the task."
71
+ },
72
+ "created": {
73
+ "type": "string",
74
+ "format": "date",
75
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
76
+ "description": "ISO date (YYYY-MM-DD) of task creation."
77
+ },
78
+ "updated": {
79
+ "type": "string",
80
+ "format": "date",
81
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
82
+ "description": "ISO date (YYYY-MM-DD) bumped on every edit."
83
+ },
84
+ "rationale": {
85
+ "type": "string",
86
+ "description": "1-3 sentence explanation of why this task exists and why these specific files were chosen. Populated by the specification-agent during decomposition. Read by qa-agent to check implementation drift."
87
+ },
88
+ "dependsOn": {
89
+ "type": "array",
90
+ "items": { "type": "string", "pattern": "^T-\\d{3}$" },
91
+ "uniqueItems": true,
92
+ "default": [],
93
+ "description": "Task IDs (within the same parent) that must reach status done before this task is dispatched. Optional; absent/empty means no declared dependency."
94
+ },
95
+ "preserve": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": ["repositoryKey", "path"],
101
+ "properties": {
102
+ "repositoryKey": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
103
+ "path": { "type": "string", "minLength": 1 }
104
+ }
105
+ },
106
+ "uniqueItems": true,
107
+ "description": "Optional machine-enforceable repository-relative Preserve boundaries. New SHIP closure runs require this property to be explicitly present (an empty array is valid); legacy body prose remains human guidance only."
108
+ },
109
+ "review_risks": {
110
+ "type": "array",
111
+ "items": { "type": "string", "enum": ["security", "performance", "migration", "api-contract", "data-integrity"] },
112
+ "uniqueItems": true,
113
+ "description": "Optional reviewed specialist risk declarations. The deterministic SHIP classifier, not the caller, maps these IDs into the frozen consolidated roster."
114
+ },
115
+ "browser_surfaces": {
116
+ "type": "array",
117
+ "items": { "type": "string", "enum": ["ui", "authentication", "session", "navigation", "network"] },
118
+ "uniqueItems": true,
119
+ "description": "Optional reviewed browser-sensitive surfaces. Any declared entry makes browser QA mandatory for the SHIP candidate."
120
+ },
121
+ "kanbanosId": {
122
+ "type": "string",
123
+ "minLength": 8,
124
+ "pattern": "^[A-Za-z0-9_-]{8,128}$",
125
+ "description": "Optional opaque entity id on the kanbanos hosted board, written back by the sync tool after a successful push (the linearId precedent from the OpenPlanr CLI Linear integration). Sync-tool-owned: humans and planning agents never author or edit it by hand. Absent until the artifact is first pushed. See ADR-012."
126
+ },
127
+ "contentHash": {
128
+ "type": "string",
129
+ "pattern": "^sha256:[a-f0-9]{64}$",
130
+ "description": "Optional digest of the artifact content at the last successful board sync, written back by the sync tool alongside kanbanosId so drift between file and board is detectable. Same sha256:<hex> shape as operating-evidence-index-item@1.3.0. Sync-tool-owned: humans and planning agents never author or edit it by hand. See ADR-012."
131
+ }
132
+ },
133
+ "allOf": [
134
+ {
135
+ "title": "type-to-agent correlation",
136
+ "oneOf": [
137
+ {
138
+ "title": "UI task → frontend-agent",
139
+ "properties": {
140
+ "type": { "const": "UI" },
141
+ "agent": { "const": "frontend-agent" }
142
+ },
143
+ "required": ["type", "agent"]
144
+ },
145
+ {
146
+ "title": "Tech task → backend-agent or db-agent",
147
+ "properties": {
148
+ "type": { "const": "Tech" },
149
+ "agent": { "enum": ["backend-agent", "db-agent"] }
150
+ },
151
+ "required": ["type", "agent"]
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "title": "parent-reference correlation (mode-dependent)",
157
+ "oneOf": [
158
+ {
159
+ "title": "spec-driven task → requires specId, forbids featureSlug",
160
+ "required": ["specId"],
161
+ "not": { "required": ["featureSlug"] }
162
+ },
163
+ {
164
+ "title": "default-mode task → requires featureSlug, forbids specId",
165
+ "required": ["featureSlug"],
166
+ "not": { "required": ["specId"] }
167
+ }
168
+ ]
169
+ }
170
+ ]
171
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.0.0/taste-profile.schema.json",
4
+ "title": "OpenPlanr design taste profile (v1.0.0)",
5
+ "description": "Per-project taste memory at ~/.planr/designs/<project>/taste-profile.json. Updated on BOTH approve and reject. `confidence` is stored raw; the 5%/week decay is computed AT READ TIME by lib/design-engine/taste.mjs (never persisted back as decayed). Conflicts between the profile and a new brief are FLAGGED to the user, never silently resolved. NOTE: each dimension inlines the same entry shape — the conformance validator's schema subset has no $ref.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["schema_version", "profile_version", "dimensions", "sessions"],
9
+ "properties": {
10
+ "schema_version": { "const": "1.0.0", "description": "Schema version pin." },
11
+ "profile_version": { "const": 1, "description": "Taste-profile format generation." },
12
+ "dimensions": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "required": ["fonts", "colors", "layouts", "aesthetics"],
16
+ "properties": {
17
+ "fonts": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "object",
21
+ "additionalProperties": false,
22
+ "required": ["value", "confidence", "approved_count", "rejected_count", "last_seen"],
23
+ "properties": {
24
+ "value": { "type": "string", "minLength": 1 },
25
+ "confidence": { "type": "number", "minimum": 0 },
26
+ "approved_count": { "type": "number", "minimum": 0 },
27
+ "rejected_count": { "type": "number", "minimum": 0 },
28
+ "last_seen": { "type": "string", "minLength": 1 }
29
+ }
30
+ }
31
+ },
32
+ "colors": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": ["value", "confidence", "approved_count", "rejected_count", "last_seen"],
38
+ "properties": {
39
+ "value": { "type": "string", "minLength": 1 },
40
+ "confidence": { "type": "number", "minimum": 0 },
41
+ "approved_count": { "type": "number", "minimum": 0 },
42
+ "rejected_count": { "type": "number", "minimum": 0 },
43
+ "last_seen": { "type": "string", "minLength": 1 }
44
+ }
45
+ }
46
+ },
47
+ "layouts": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "object",
51
+ "additionalProperties": false,
52
+ "required": ["value", "confidence", "approved_count", "rejected_count", "last_seen"],
53
+ "properties": {
54
+ "value": { "type": "string", "minLength": 1 },
55
+ "confidence": { "type": "number", "minimum": 0 },
56
+ "approved_count": { "type": "number", "minimum": 0 },
57
+ "rejected_count": { "type": "number", "minimum": 0 },
58
+ "last_seen": { "type": "string", "minLength": 1 }
59
+ }
60
+ }
61
+ },
62
+ "aesthetics": {
63
+ "type": "array",
64
+ "items": {
65
+ "type": "object",
66
+ "additionalProperties": false,
67
+ "required": ["value", "confidence", "approved_count", "rejected_count", "last_seen"],
68
+ "properties": {
69
+ "value": { "type": "string", "minLength": 1 },
70
+ "confidence": { "type": "number", "minimum": 0 },
71
+ "approved_count": { "type": "number", "minimum": 0 },
72
+ "rejected_count": { "type": "number", "minimum": 0 },
73
+ "last_seen": { "type": "string", "minLength": 1 }
74
+ }
75
+ }
76
+ }
77
+ },
78
+ "description": "Each dimension is an array of attribute entries {value, confidence, approved_count, rejected_count, last_seen}."
79
+ },
80
+ "sessions": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "object",
84
+ "additionalProperties": false,
85
+ "required": ["sessionId", "verdict", "at"],
86
+ "properties": {
87
+ "sessionId": { "type": "string", "minLength": 1 },
88
+ "verdict": { "type": "string", "enum": ["approved", "rejected"] },
89
+ "at": { "type": "string", "minLength": 1, "description": "ISO timestamp." },
90
+ "artifact": { "type": "string", "description": "Path of the judged artifact." }
91
+ }
92
+ },
93
+ "description": "Audit trail of every taste update."
94
+ }
95
+ }
96
+ }
@@ -0,0 +1,72 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.1.0/adapter-registry.schema.json",
4
+ "title": "OpenPlanr runtime adapter registry",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "protocolVersion", "pipelineVersion", "adapters"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "1.0.0" },
10
+ "protocolVersion": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$" },
11
+ "pipelineVersion": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+" },
12
+ "adapters": {
13
+ "type": "array",
14
+ "uniqueItems": true,
15
+ "items": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": ["id", "version", "capabilityLevel", "installScopes", "entrypoints", "capabilities", "assets", "healthChecks", "drivers"],
19
+ "properties": {
20
+ "id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
21
+ "version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+" },
22
+ "capabilityLevel": { "type": "string", "enum": ["artifact", "workflow", "product"] },
23
+ "installScopes": {
24
+ "type": "array",
25
+ "uniqueItems": true,
26
+ "items": { "type": "string", "enum": ["user", "project"] }
27
+ },
28
+ "entrypoints": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": ["plan", "ship", "artifact"],
32
+ "properties": {
33
+ "plan": { "type": "string", "minLength": 1 },
34
+ "design": { "type": "string", "minLength": 1 },
35
+ "ship": { "type": "string", "minLength": 1 },
36
+ "dashboard": { "type": "string", "minLength": 1 },
37
+ "artifact": { "type": "string", "minLength": 1 },
38
+ "sync": { "type": "string", "minLength": 1 },
39
+ "doctor": { "type": "string", "minLength": 1 }
40
+ }
41
+ },
42
+ "capabilities": {
43
+ "type": "object",
44
+ "additionalProperties": false,
45
+ "required": ["subagents", "hooks", "toolIsolation", "parallelDispatch", "headlessLaunch", "artifactReview"],
46
+ "properties": {
47
+ "subagents": { "type": "string", "enum": ["native", "advisory", "sequential", "dynamic"] },
48
+ "hooks": { "type": "boolean" },
49
+ "toolIsolation": { "type": "string", "enum": ["enforced", "advisory"] },
50
+ "parallelDispatch": { "type": "string", "enum": ["native", "host", "sequential", "dynamic"] },
51
+ "headlessLaunch": { "type": "boolean" },
52
+ "artifactReview": { "type": "boolean" }
53
+ }
54
+ },
55
+ "assets": { "type": "array", "items": { "type": "string", "minLength": 1 } },
56
+ "healthChecks": { "type": "array", "items": { "type": "string", "minLength": 1 } },
57
+ "drivers": {
58
+ "type": "object",
59
+ "additionalProperties": false,
60
+ "required": ["install", "migrate", "rollback", "uninstall"],
61
+ "properties": {
62
+ "install": { "type": "string", "minLength": 1 },
63
+ "migrate": { "type": "string", "minLength": 1 },
64
+ "rollback": { "type": "string", "minLength": 1 },
65
+ "uninstall": { "type": "string", "minLength": 1 }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.1.0/artifact-envelope.schema.json",
4
+ "title": "OpenPlanr self-contained HTML artifact envelope",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "artifacts", "viewer"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "1.0.0" },
10
+ "artifacts": {
11
+ "type": "array",
12
+ "minItems": 1,
13
+ "maxItems": 256,
14
+ "items": {
15
+ "type": "object",
16
+ "additionalProperties": false,
17
+ "required": ["id", "kind", "title", "sha256", "html", "viewport", "colorScheme"],
18
+ "properties": {
19
+ "id": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
20
+ "kind": { "const": "html" },
21
+ "title": { "type": "string", "minLength": 1, "maxLength": 512 },
22
+ "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
23
+ "html": { "type": "string", "minLength": 1 },
24
+ "viewport": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": ["width", "height"],
28
+ "properties": {
29
+ "width": { "type": "integer", "minimum": 1, "maximum": 16384 },
30
+ "height": { "type": "integer", "minimum": 1, "maximum": 16384 }
31
+ }
32
+ },
33
+ "colorScheme": { "type": "string", "enum": ["light", "dark"] }
34
+ }
35
+ }
36
+ },
37
+ "viewer": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "required": ["mode", "activeArtifactId"],
41
+ "properties": {
42
+ "mode": { "type": "string", "enum": ["single", "variants"] },
43
+ "activeArtifactId": { "type": "string", "minLength": 1, "maxLength": 128 },
44
+ "presentation": { "type": "string", "enum": ["document", "canvas"] }
45
+ }
46
+ },
47
+ "review": {
48
+ "type": "object",
49
+ "additionalProperties": false,
50
+ "required": ["schemaVersion", "reviewId", "reviewOf", "decision", "overall", "pins"],
51
+ "properties": {
52
+ "schemaVersion": { "const": "1.0.0" },
53
+ "reviewId": { "type": "string", "minLength": 1, "maxLength": 128 },
54
+ "reviewOf": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
55
+ "decision": { "type": "string", "enum": ["pending", "approved", "changes_requested"] },
56
+ "overall": { "type": "string", "maxLength": 65536 },
57
+ "createdAt": { "type": "string", "format": "date-time" },
58
+ "updatedAt": { "type": "string", "format": "date-time" },
59
+ "pins": {
60
+ "type": "array",
61
+ "maxItems": 10000,
62
+ "items": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": ["id", "author", "artifactId", "region", "viewport", "intent", "status", "comment", "replies", "createdAt", "updatedAt"],
66
+ "properties": {
67
+ "id": { "type": "string", "minLength": 1, "maxLength": 128 },
68
+ "author": {
69
+ "type": "object",
70
+ "additionalProperties": false,
71
+ "required": ["name"],
72
+ "properties": {
73
+ "id": { "type": "string", "minLength": 1, "maxLength": 128 },
74
+ "name": { "type": "string", "minLength": 1, "maxLength": 256 }
75
+ }
76
+ },
77
+ "artifactId": { "type": "string", "minLength": 1, "maxLength": 128 },
78
+ "variant": { "type": "string", "minLength": 1, "maxLength": 128 },
79
+ "region": {
80
+ "type": "object",
81
+ "additionalProperties": false,
82
+ "required": ["x", "y", "w", "h"],
83
+ "properties": {
84
+ "x": { "type": "number", "minimum": 0, "maximum": 1 },
85
+ "y": { "type": "number", "minimum": 0, "maximum": 1 },
86
+ "w": { "type": "number", "minimum": 0, "maximum": 1 },
87
+ "h": { "type": "number", "minimum": 0, "maximum": 1 }
88
+ }
89
+ },
90
+ "viewport": {
91
+ "type": "object",
92
+ "additionalProperties": false,
93
+ "required": ["width", "height"],
94
+ "properties": {
95
+ "width": { "type": "integer", "minimum": 1, "maximum": 16384 },
96
+ "height": { "type": "integer", "minimum": 1, "maximum": 262144 }
97
+ }
98
+ },
99
+ "anchor": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "required": ["planrId"],
103
+ "properties": {
104
+ "planrId": { "type": "string", "minLength": 1, "maxLength": 512 },
105
+ "screen": { "type": "string", "minLength": 1, "maxLength": 128 }
106
+ }
107
+ },
108
+ "intent": { "type": "string", "enum": ["fix", "improve", "question"] },
109
+ "status": { "type": "string", "enum": ["open", "addressed", "resolved"] },
110
+ "comment": { "type": "string", "minLength": 1, "maxLength": 65536 },
111
+ "replies": {
112
+ "type": "array",
113
+ "maxItems": 10000,
114
+ "items": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "required": ["id", "author", "comment", "createdAt"],
118
+ "properties": {
119
+ "id": { "type": "string", "minLength": 1, "maxLength": 128 },
120
+ "author": {
121
+ "type": "object",
122
+ "additionalProperties": false,
123
+ "required": ["name"],
124
+ "properties": {
125
+ "id": { "type": "string", "minLength": 1, "maxLength": 128 },
126
+ "name": { "type": "string", "minLength": 1, "maxLength": 256 }
127
+ }
128
+ },
129
+ "comment": { "type": "string", "minLength": 1, "maxLength": 65536 },
130
+ "createdAt": { "type": "string", "format": "date-time" }
131
+ }
132
+ }
133
+ },
134
+ "createdAt": { "type": "string", "format": "date-time" },
135
+ "updatedAt": { "type": "string", "format": "date-time" }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.1.0/artifact-paste.schema.json",
4
+ "title": "OpenPlanr encrypted artifact paste boundary",
5
+ "oneOf": [
6
+ {
7
+ "title": "Create paste request",
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "required": ["schemaVersion", "operation", "iv", "ciphertext", "ttl"],
11
+ "properties": {
12
+ "schemaVersion": { "const": "1.0.0" },
13
+ "operation": { "const": "create" },
14
+ "iv": { "type": "string", "pattern": "^[A-Za-z0-9_-]{16}$" },
15
+ "ciphertext": { "type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$" },
16
+ "ttl": { "type": "string", "enum": ["1d", "7d", "30d"] }
17
+ }
18
+ },
19
+ {
20
+ "title": "Created paste response",
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "required": ["schemaVersion", "operation", "id", "expiresAt", "deletionToken"],
24
+ "properties": {
25
+ "schemaVersion": { "const": "1.0.0" },
26
+ "operation": { "const": "created" },
27
+ "id": { "type": "string", "minLength": 16, "maxLength": 128, "pattern": "^[A-Za-z0-9_-]+$" },
28
+ "expiresAt": { "type": "string", "format": "date-time" },
29
+ "deletionToken": { "type": "string", "minLength": 32, "maxLength": 256, "pattern": "^[A-Za-z0-9_-]+$" }
30
+ }
31
+ },
32
+ {
33
+ "title": "Ciphertext storage record",
34
+ "type": "object",
35
+ "additionalProperties": false,
36
+ "required": ["schemaVersion", "operation", "id", "iv", "ciphertext", "expiresAt", "size", "deletionTokenHash"],
37
+ "properties": {
38
+ "schemaVersion": { "const": "1.0.0" },
39
+ "operation": { "const": "stored" },
40
+ "id": { "type": "string", "minLength": 16, "maxLength": 128, "pattern": "^[A-Za-z0-9_-]+$" },
41
+ "iv": { "type": "string", "pattern": "^[A-Za-z0-9_-]{16}$" },
42
+ "ciphertext": { "type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$" },
43
+ "expiresAt": { "type": "string", "format": "date-time" },
44
+ "size": { "type": "integer", "minimum": 1, "maximum": 5242880 },
45
+ "deletionTokenHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
46
+ }
47
+ }
48
+ ]
49
+ }