openplanr 3.2.0 → 3.3.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 (231) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cli/commands/spec.d.ts +2 -1
  3. package/dist/cli/commands/spec.d.ts.map +1 -1
  4. package/dist/cli/commands/spec.js +45 -5
  5. package/dist/cli/commands/spec.js.map +1 -1
  6. package/dist/dashboard/.vite/manifest.json +1 -1
  7. package/dist/dashboard/assets/index-B_96uzCl.js +572 -0
  8. package/dist/dashboard/assets/index-B_96uzCl.js.map +1 -0
  9. package/dist/dashboard/dashboard-manifest.json +10 -10
  10. package/dist/dashboard/index.html +1 -1
  11. package/dist/services/claude-plugin-service.d.ts +5 -0
  12. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  13. package/dist/services/claude-plugin-service.js +18 -2
  14. package/dist/services/claude-plugin-service.js.map +1 -1
  15. package/dist/services/codex-plugin-service.d.ts.map +1 -1
  16. package/dist/services/codex-plugin-service.js +11 -3
  17. package/dist/services/codex-plugin-service.js.map +1 -1
  18. package/dist/services/runtime-manager/codex-discovery.d.ts +1 -3
  19. package/dist/services/runtime-manager/codex-discovery.d.ts.map +1 -1
  20. package/dist/services/runtime-manager/codex-discovery.js +3 -16
  21. package/dist/services/runtime-manager/codex-discovery.js.map +1 -1
  22. package/dist/services/runtime-manager/doctor.d.ts +25 -0
  23. package/dist/services/runtime-manager/doctor.d.ts.map +1 -1
  24. package/dist/services/runtime-manager/doctor.js +480 -0
  25. package/dist/services/runtime-manager/doctor.js.map +1 -1
  26. package/dist/services/runtime-manager/errors.d.ts +12 -0
  27. package/dist/services/runtime-manager/errors.d.ts.map +1 -0
  28. package/dist/services/runtime-manager/errors.js +14 -0
  29. package/dist/services/runtime-manager/errors.js.map +1 -0
  30. package/dist/services/runtime-manager/global-state.d.ts +7 -0
  31. package/dist/services/runtime-manager/global-state.d.ts.map +1 -1
  32. package/dist/services/runtime-manager/global-state.js +116 -0
  33. package/dist/services/runtime-manager/global-state.js.map +1 -1
  34. package/dist/services/runtime-manager/host-version-probe.d.ts +8 -0
  35. package/dist/services/runtime-manager/host-version-probe.d.ts.map +1 -0
  36. package/dist/services/runtime-manager/host-version-probe.js +14 -0
  37. package/dist/services/runtime-manager/host-version-probe.js.map +1 -0
  38. package/dist/services/runtime-manager/install-plan.d.ts +25 -0
  39. package/dist/services/runtime-manager/install-plan.d.ts.map +1 -1
  40. package/dist/services/runtime-manager/install-plan.js +305 -0
  41. package/dist/services/runtime-manager/install-plan.js.map +1 -1
  42. package/dist/services/runtime-manager/inventory.d.ts +6 -0
  43. package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
  44. package/dist/services/runtime-manager/inventory.js +16 -1
  45. package/dist/services/runtime-manager/inventory.js.map +1 -1
  46. package/dist/services/runtime-manager/legacy-adapters.d.ts +9 -0
  47. package/dist/services/runtime-manager/legacy-adapters.d.ts.map +1 -0
  48. package/dist/services/runtime-manager/legacy-adapters.js +187 -0
  49. package/dist/services/runtime-manager/legacy-adapters.js.map +1 -0
  50. package/dist/services/runtime-manager/paths.d.ts +18 -0
  51. package/dist/services/runtime-manager/paths.d.ts.map +1 -0
  52. package/dist/services/runtime-manager/paths.js +83 -0
  53. package/dist/services/runtime-manager/paths.js.map +1 -0
  54. package/dist/services/runtime-manager/runtime-package.d.ts +21 -0
  55. package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
  56. package/dist/services/runtime-manager/runtime-package.js +77 -0
  57. package/dist/services/runtime-manager/runtime-package.js.map +1 -1
  58. package/dist/services/runtime-manager/storage.d.ts +47 -0
  59. package/dist/services/runtime-manager/storage.d.ts.map +1 -0
  60. package/dist/services/runtime-manager/storage.js +604 -0
  61. package/dist/services/runtime-manager/storage.js.map +1 -0
  62. package/dist/services/runtime-manager-service.d.ts +7 -17
  63. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  64. package/dist/services/runtime-manager-service.js +32 -1695
  65. package/dist/services/runtime-manager-service.js.map +1 -1
  66. package/dist/services/ship-checks/contract.d.ts +13 -1
  67. package/dist/services/ship-checks/contract.d.ts.map +1 -1
  68. package/dist/services/ship-checks/contract.js +1 -1
  69. package/dist/services/ship-checks/contract.js.map +1 -1
  70. package/dist/services/ship-checks/coverage.d.ts +4 -0
  71. package/dist/services/ship-checks/coverage.d.ts.map +1 -0
  72. package/dist/services/ship-checks/coverage.js +113 -0
  73. package/dist/services/ship-checks/coverage.js.map +1 -0
  74. package/dist/services/ship-checks/discover.d.ts.map +1 -1
  75. package/dist/services/ship-checks/discover.js +3 -0
  76. package/dist/services/ship-checks/discover.js.map +1 -1
  77. package/dist/services/spec-service.d.ts +18 -0
  78. package/dist/services/spec-service.d.ts.map +1 -1
  79. package/dist/services/spec-service.js +174 -9
  80. package/dist/services/spec-service.js.map +1 -1
  81. package/dist/templates/spec/spec-shaped.md.hbs +1 -1
  82. package/dist/templates/spec/spec.md.hbs +2 -2
  83. package/docs/CLI.md +49 -2
  84. package/lib/host-packages/adapter-registry.json +5 -5
  85. package/lib/host-packages/capability-map.json +3 -3
  86. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  87. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  88. package/lib/host-packages/claude/openplanr/.openplanr-content.json +50 -46
  89. package/lib/host-packages/claude/openplanr/README.md +1 -1
  90. package/lib/host-packages/claude/openplanr/agents/planr-qa.md +5 -3
  91. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +87 -2
  92. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  93. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  94. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
  95. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
  96. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +271 -28
  97. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  98. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
  99. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  100. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  101. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  102. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
  103. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  104. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  105. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  106. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  107. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  108. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  109. package/lib/host-packages/{cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
  110. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  111. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
  112. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +30 -2
  113. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  114. package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +17 -2
  115. package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +60 -2
  116. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +11 -1
  117. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +131 -4
  118. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +17 -2
  119. package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +60 -2
  120. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +11 -1
  121. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
  122. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +17 -2
  123. package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +60 -2
  124. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +11 -1
  125. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
  126. package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +1 -1
  127. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +21 -11
  128. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
  129. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +31 -10
  130. package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +6 -0
  131. package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +3 -1
  132. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +48 -44
  133. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  134. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +17 -2
  135. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +60 -2
  136. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +11 -1
  137. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +131 -4
  138. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +17 -2
  139. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +60 -2
  140. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +11 -1
  141. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +131 -4
  142. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +17 -2
  143. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +60 -2
  144. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +11 -1
  145. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +131 -4
  146. package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +1 -1
  147. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +131 -4
  148. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +21 -11
  149. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +31 -10
  150. package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +3 -1
  151. package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +6 -0
  152. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +87 -2
  153. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  154. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  155. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
  156. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
  157. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +271 -28
  158. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  159. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
  160. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  161. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  162. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  163. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
  164. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  165. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  166. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  167. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  168. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  169. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  170. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
  171. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  172. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
  173. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +30 -2
  174. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  175. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  176. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  177. package/lib/host-packages/openai/openplanr/.openplanr-content.json +54 -50
  178. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +87 -2
  179. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +1 -1
  180. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  181. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +102 -9
  182. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +130 -1
  183. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +271 -28
  184. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -32
  185. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +77 -1
  186. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  187. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  188. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  189. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +5 -5
  190. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  191. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  192. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  193. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  194. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  195. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  196. package/lib/host-packages/{claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0 → openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0}/design-document.schema.json +131 -4
  197. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  198. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +78 -1
  199. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +30 -2
  200. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  201. package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +17 -2
  202. package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +60 -2
  203. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +11 -1
  204. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +131 -4
  205. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +17 -2
  206. package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +60 -2
  207. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +11 -1
  208. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
  209. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +17 -2
  210. package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +60 -2
  211. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +11 -1
  212. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
  213. package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +1 -1
  214. package/lib/host-packages/openai/openplanr/skills/investigate/agents/openai.yaml +1 -1
  215. package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +1 -1
  216. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +21 -11
  217. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +1 -1
  218. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
  219. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +31 -10
  220. package/lib/host-packages/openai/openplanr/skills/ship/agents/openai.yaml +1 -1
  221. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +1 -1
  222. package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +6 -0
  223. package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +1 -1
  224. package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +3 -1
  225. package/lib/json-schema.mjs +4 -0
  226. package/package.json +12 -12
  227. package/dist/dashboard/assets/index-L8qtwqv6.js +0 -572
  228. package/dist/dashboard/assets/index-L8qtwqv6.js.map +0 -1
  229. /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
  230. /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
  231. /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-6774fd3d5d02.mjs → design-runtime-support-25485dbf1cb2.mjs} +0 -0
@@ -12,7 +12,7 @@
12
12
  },
13
13
  {
14
14
  "path": ".claude-plugin/plugin.json",
15
- "digest": "sha256:641d84e753709e3d87b18ae192a7f55d5ea74a3ab74e91378a338eef8a2a3ac0"
15
+ "digest": "sha256:abecdcb3905def14747392b41af4dda02e012506efa5cfc7f5122705b36fd39f"
16
16
  },
17
17
  {
18
18
  "path": "agents/planr-backend.md",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  {
46
46
  "path": "agents/planr-qa.md",
47
- "digest": "sha256:ea6adf72cf5dd7667d31b0dc9501646ed7211d85392efe826beefb52edc0b938"
47
+ "digest": "sha256:d2f56a652c00aed41a6e0d3147ca336975487fc57c5eadc13581cbfe1a9c9739"
48
48
  },
49
49
  {
50
50
  "path": "agents/planr-specification.md",
@@ -60,7 +60,7 @@
60
60
  },
61
61
  {
62
62
  "path": "README.md",
63
- "digest": "sha256:c559dd8b3db999dee9c12a8ea99b3de1f3708f5131880c5f90e9908862cb4843"
63
+ "digest": "sha256:18b9ce013805b09435f1da9f397f966e4b59401cec68f2c31540809c81b85964"
64
64
  },
65
65
  {
66
66
  "path": "references/agents/shared/modes/default/backend.md",
@@ -180,7 +180,7 @@
180
180
  },
181
181
  {
182
182
  "path": "runtime/design/scripts/design-document.mjs",
183
- "digest": "sha256:8cae4875f680ffe897f85fc1b80617666e788f3ed4562b9fdac8169edcba0d37"
183
+ "digest": "sha256:265390be5971cb170bfa3bbe85073d95d3a03fdcad5ad2d6885863ed92636d7c"
184
184
  },
185
185
  {
186
186
  "path": "runtime/design/scripts/design-encrypted-workspace-client.mjs",
@@ -192,7 +192,7 @@
192
192
  },
193
193
  {
194
194
  "path": "runtime/design/scripts/design-handoff.mjs",
195
- "digest": "sha256:8e45824f88347a7a4ab52275892008c100d61c475757237d33b992a4a60dc1b5"
195
+ "digest": "sha256:1d24e4ebd3bff99f3dd5e2fa8cab17971bbc4acb10cc416a0e1a1e4af584f0ee"
196
196
  },
197
197
  {
198
198
  "path": "runtime/design/scripts/design-loopback-server.mjs",
@@ -223,7 +223,7 @@
223
223
  "digest": "sha256:c338765d9f5746bf375377bdd25e94490ac31985bab0b0335e49f9faadb5c08b"
224
224
  },
225
225
  {
226
- "path": "runtime/design/scripts/design-runtime-support-6774fd3d5d02.mjs",
226
+ "path": "runtime/design/scripts/design-runtime-support-25485dbf1cb2.mjs",
227
227
  "digest": "sha256:6fd1b789adf2cfcf742602f1faa6a0d0835f2bc5cc2afa6e153424be68892fa2"
228
228
  },
229
229
  {
@@ -232,11 +232,11 @@
232
232
  },
233
233
  {
234
234
  "path": "runtime/design/scripts/design-share.mjs",
235
- "digest": "sha256:e49918e85add71f33816f9c6ed9a23681e05402653dae2115def9f5b10377c5f"
235
+ "digest": "sha256:9d859c41f2b7a049650f15bc67620a8e9e473dc1dfea57b6b6eae11a47bada6c"
236
236
  },
237
237
  {
238
238
  "path": "runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs",
239
- "digest": "sha256:537ee60fa2074aee17fb4d07da158e703333ecebdcd77d40b8daedba1e112ad3"
239
+ "digest": "sha256:f2e1cd55ff19cb6127d02f3b2cd86fdcc5737432b3f59420707b86181c6963f9"
240
240
  },
241
241
  {
242
242
  "path": "runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs",
@@ -248,7 +248,7 @@
248
248
  },
249
249
  {
250
250
  "path": "runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs",
251
- "digest": "sha256:abad366dbe146014a6e9c536cda124d48c81cfb8f6cc9f2d5d2a411324f2593f"
251
+ "digest": "sha256:93c1762353ebe32d886bbb2fef3f2a72cfbf8e139973eec88f4f6b8f10d8e503"
252
252
  },
253
253
  {
254
254
  "path": "runtime/design/scripts/design-upload-spool.mjs",
@@ -256,11 +256,11 @@
256
256
  },
257
257
  {
258
258
  "path": "runtime/design/scripts/design.mjs",
259
- "digest": "sha256:ae7a24327bf4e277f7630554252b704281061c60ef848a3103deda62556166be"
259
+ "digest": "sha256:6feea162e96236d2392162831e660a2fd5e908b2c67bf64bea89bbcb8dd41467"
260
260
  },
261
261
  {
262
262
  "path": "runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt",
263
- "digest": "sha256:66a4b5b0ce31ce6c5a5ea43c17dea76a48df6a1bcf5c2cd6b187b2b6c210143c"
263
+ "digest": "sha256:c780d6f2609e544d086bc236c27f408fcd736d3a9ea91175c8ed674cfd0a4b0b"
264
264
  },
265
265
  {
266
266
  "path": "runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css",
@@ -268,7 +268,7 @@
268
268
  },
269
269
  {
270
270
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json",
271
- "digest": "sha256:2975ec9e87c3d158949c2608f0aec6251041dfe455e5cd1efe3df1c794097d69"
271
+ "digest": "sha256:d2b6a89cfd25803e4fb266a2747c373f701955519f50e90e0f441fc8c5b10876"
272
272
  },
273
273
  {
274
274
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/01-module-runtime.js",
@@ -280,7 +280,7 @@
280
280
  },
281
281
  {
282
282
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js",
283
- "digest": "sha256:c5ecc1e13bc56b399f69808c609b21f69865ff134e50a8b4898dd8a93bd582ef"
283
+ "digest": "sha256:fbf069e668fecf9519cab318f88033b106b93933ea0788f2c4c8cf8374c35e38"
284
284
  },
285
285
  {
286
286
  "path": "runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js",
@@ -304,7 +304,7 @@
304
304
  },
305
305
  {
306
306
  "path": "runtime/design/scripts/runtime/packages/design/package.json",
307
- "digest": "sha256:95a28ec13aa6fb8fcea651b9916cf260c939dfb443e724d54147e6b255258707"
307
+ "digest": "sha256:f7841eedc349c4011fad6eaa9d571b3508cf867d57d8c4917eee37da45f03715"
308
308
  },
309
309
  {
310
310
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css",
@@ -328,7 +328,7 @@
328
328
  },
329
329
  {
330
330
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json",
331
- "digest": "sha256:0bab5c7c73247098c4636be1ee97c4b6258d0f7bc1517ad4d10a194284dc1f6a"
331
+ "digest": "sha256:883c094162afc18637301227f2093c0582110a798006c5f0ec2884021fca249b"
332
332
  },
333
333
  {
334
334
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/01-module-runtime.js",
@@ -336,7 +336,7 @@
336
336
  },
337
337
  {
338
338
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js",
339
- "digest": "sha256:cb3eafecfffc8532216b7bcd71bac6afea5b3fb7f8b0887da140e11c0006cd11"
339
+ "digest": "sha256:a71e51391e9b730dd958c618d78eca7f08afdba44c6deaec659cc74407f60a62"
340
340
  },
341
341
  {
342
342
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js",
@@ -364,7 +364,7 @@
364
364
  },
365
365
  {
366
366
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js",
367
- "digest": "sha256:8c81399ccb8a52f0c5e3eca3e49c53dda63e3f954e816c8c0ee94f9a3d2d40f6"
367
+ "digest": "sha256:7e5c20997dc0ec69609fa5983db9daf426ab2e4da798969be45bc037cb6285d6"
368
368
  },
369
369
  {
370
370
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/10-react.js",
@@ -376,11 +376,11 @@
376
376
  },
377
377
  {
378
378
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js",
379
- "digest": "sha256:4007bd14b7bddf0b26803697eaf2f107d4f9806acd612c12d24b493d6f265a53"
379
+ "digest": "sha256:b94ce32e28be39b4c0c524039f27302c38402ea16cbb37845d6fbda2e83350ce"
380
380
  },
381
381
  {
382
382
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js",
383
- "digest": "sha256:9f1e3e4bee690452ca512fbfcec4777244bd773cb1177fb19263f54def48722d"
383
+ "digest": "sha256:84f4fe26fdd473a8858766a433986cc60e60639906da15a0f3244c4b5a5adc5f"
384
384
  },
385
385
  {
386
386
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-studio-shell.js",
@@ -388,7 +388,7 @@
388
388
  },
389
389
  {
390
390
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js",
391
- "digest": "sha256:5d29bb88f041c9fad393491becc097198e0ce965a1bbc8cb0b410e17bfad6b70"
391
+ "digest": "sha256:457b785e01410722ba42aa372ac2b1e82f73fdc134a6d1c4d068bd16cd83c230"
392
392
  },
393
393
  {
394
394
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-design-review-experience.js",
@@ -412,11 +412,11 @@
412
412
  },
413
413
  {
414
414
  "path": "runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js",
415
- "digest": "sha256:d99e4aede54009be49bec6d7244b35578469d43330f261cbf0f05dac0ae40bee"
415
+ "digest": "sha256:672d0395a9d1016f511f3b8dd6b23c1015958a97e54a83e51af2f39b53222236"
416
416
  },
417
417
  {
418
418
  "path": "runtime/design/scripts/runtime/packages/protocol/package.json",
419
- "digest": "sha256:e2b8a258f17377977d71366a18abda7e42250d67ff527f2f597c531d500aa312"
419
+ "digest": "sha256:cdb21a973cfb6bcccded6c16893a777022ad3a12ac281f31dbb68f750edfc5e8"
420
420
  },
421
421
  {
422
422
  "path": "runtime/design/scripts/runtime/packages/protocol/registries/artifact-theme.json",
@@ -483,8 +483,12 @@
483
483
  "digest": "sha256:f5616731ad5bb0399514e1cd36f6ffbaf9adaa1b378107b677b857f6312dfa52"
484
484
  },
485
485
  {
486
- "path": "runtime/design/scripts/runtime/packages/protocol/schemas/v1.20.0/design-document.schema.json",
487
- "digest": "sha256:9782c8c130b19f7c47b17ec59a216f4699e3a6f3b81120ecc0442d2576d58fa2"
486
+ "path": "runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-document.schema.json",
487
+ "digest": "sha256:33d74abce73ec6631ee1a4f5037bb49571f81cedaebac5bf37d77d91a170b507"
488
+ },
489
+ {
490
+ "path": "runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json",
491
+ "digest": "sha256:92e42b05c54f7773f89e93de45fad1c6bfc4027160079d52dcabe59fc0612933"
488
492
  },
489
493
  {
490
494
  "path": "runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json",
@@ -524,11 +528,11 @@
524
528
  },
525
529
  {
526
530
  "path": "runtime/plan/scripts/design-protocol-contracts.mjs",
527
- "digest": "sha256:02a346c16d4b088e8381193460809cf8434e3116de8249b9e364de9c43fe974e"
531
+ "digest": "sha256:464568c1e8ab14b139812192519b303f06db5c1ccbcc1e8ad5c0d65ceca98f76"
528
532
  },
529
533
  {
530
534
  "path": "runtime/plan/scripts/design.mjs",
531
- "digest": "sha256:7e1379e8a1f2900f45fb75f8dc30faba06511d2d0eaae9cb9588db3d79de127c"
535
+ "digest": "sha256:6f91123bee5568d9e2ede49e5f90fb7919fddfd8e9f108db8c941a86311890dd"
532
536
  },
533
537
  {
534
538
  "path": "runtime/plan/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt",
@@ -536,7 +540,7 @@
536
540
  },
537
541
  {
538
542
  "path": "runtime/plan/scripts/runtime/packages/protocol/package.json",
539
- "digest": "sha256:e2b8a258f17377977d71366a18abda7e42250d67ff527f2f597c531d500aa312"
543
+ "digest": "sha256:cdb21a973cfb6bcccded6c16893a777022ad3a12ac281f31dbb68f750edfc5e8"
540
544
  },
541
545
  {
542
546
  "path": "runtime/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json",
@@ -784,7 +788,7 @@
784
788
  },
785
789
  {
786
790
  "path": "skills/design-loop/references/design-system.md",
787
- "digest": "sha256:d97ad4aca7c6a21d2e6208620d928beb3e34eac4460c64943b33f5835f9b432f"
791
+ "digest": "sha256:558a165a070b31bba66b81c77eeb86b935a09dcbad9939f37fc580e3f301a1a6"
788
792
  },
789
793
  {
790
794
  "path": "skills/design-loop/references/discovery.md",
@@ -792,7 +796,7 @@
792
796
  },
793
797
  {
794
798
  "path": "skills/design-loop/references/generation.md",
795
- "digest": "sha256:4837ad37da9a028e92b63611f81bb764f5fb7818a8ba25df0b21a5ac276ae71a"
799
+ "digest": "sha256:ad4c1fc6589e4566a8b6ecdf86dd3f0c87db7d663c480d6c6a77d61502975094"
796
800
  },
797
801
  {
798
802
  "path": "skills/design-loop/references/handoff.md",
@@ -808,11 +812,11 @@
808
812
  },
809
813
  {
810
814
  "path": "skills/design-loop/references/utilities.md",
811
- "digest": "sha256:bcb057b0599bf48cee3d2955808c6f3ab6377b8d520f1981782b7353cb22ba6a"
815
+ "digest": "sha256:6f5d0067a9fe75d30994c4bbddec91135d93f3dacb70f43add3b2ad17f1144ad"
812
816
  },
813
817
  {
814
818
  "path": "skills/design-loop/schemas/design-document.schema.json",
815
- "digest": "sha256:9782c8c130b19f7c47b17ec59a216f4699e3a6f3b81120ecc0442d2576d58fa2"
819
+ "digest": "sha256:33d74abce73ec6631ee1a4f5037bb49571f81cedaebac5bf37d77d91a170b507"
816
820
  },
817
821
  {
818
822
  "path": "skills/design-loop/schemas/design-review-context.schema.json",
@@ -840,7 +844,7 @@
840
844
  },
841
845
  {
842
846
  "path": "skills/design-review/references/design-system.md",
843
- "digest": "sha256:d97ad4aca7c6a21d2e6208620d928beb3e34eac4460c64943b33f5835f9b432f"
847
+ "digest": "sha256:558a165a070b31bba66b81c77eeb86b935a09dcbad9939f37fc580e3f301a1a6"
844
848
  },
845
849
  {
846
850
  "path": "skills/design-review/references/discovery.md",
@@ -848,7 +852,7 @@
848
852
  },
849
853
  {
850
854
  "path": "skills/design-review/references/generation.md",
851
- "digest": "sha256:4837ad37da9a028e92b63611f81bb764f5fb7818a8ba25df0b21a5ac276ae71a"
855
+ "digest": "sha256:ad4c1fc6589e4566a8b6ecdf86dd3f0c87db7d663c480d6c6a77d61502975094"
852
856
  },
853
857
  {
854
858
  "path": "skills/design-review/references/handoff.md",
@@ -864,11 +868,11 @@
864
868
  },
865
869
  {
866
870
  "path": "skills/design-review/references/utilities.md",
867
- "digest": "sha256:bcb057b0599bf48cee3d2955808c6f3ab6377b8d520f1981782b7353cb22ba6a"
871
+ "digest": "sha256:6f5d0067a9fe75d30994c4bbddec91135d93f3dacb70f43add3b2ad17f1144ad"
868
872
  },
869
873
  {
870
874
  "path": "skills/design-review/schemas/design-document.schema.json",
871
- "digest": "sha256:9782c8c130b19f7c47b17ec59a216f4699e3a6f3b81120ecc0442d2576d58fa2"
875
+ "digest": "sha256:33d74abce73ec6631ee1a4f5037bb49571f81cedaebac5bf37d77d91a170b507"
872
876
  },
873
877
  {
874
878
  "path": "skills/design-review/schemas/design-review-context.schema.json",
@@ -896,7 +900,7 @@
896
900
  },
897
901
  {
898
902
  "path": "skills/design/references/design-system.md",
899
- "digest": "sha256:d97ad4aca7c6a21d2e6208620d928beb3e34eac4460c64943b33f5835f9b432f"
903
+ "digest": "sha256:558a165a070b31bba66b81c77eeb86b935a09dcbad9939f37fc580e3f301a1a6"
900
904
  },
901
905
  {
902
906
  "path": "skills/design/references/discovery.md",
@@ -904,7 +908,7 @@
904
908
  },
905
909
  {
906
910
  "path": "skills/design/references/generation.md",
907
- "digest": "sha256:4837ad37da9a028e92b63611f81bb764f5fb7818a8ba25df0b21a5ac276ae71a"
911
+ "digest": "sha256:ad4c1fc6589e4566a8b6ecdf86dd3f0c87db7d663c480d6c6a77d61502975094"
908
912
  },
909
913
  {
910
914
  "path": "skills/design/references/handoff.md",
@@ -924,11 +928,11 @@
924
928
  },
925
929
  {
926
930
  "path": "skills/design/references/utilities.md",
927
- "digest": "sha256:bcb057b0599bf48cee3d2955808c6f3ab6377b8d520f1981782b7353cb22ba6a"
931
+ "digest": "sha256:6f5d0067a9fe75d30994c4bbddec91135d93f3dacb70f43add3b2ad17f1144ad"
928
932
  },
929
933
  {
930
934
  "path": "skills/design/schemas/design-document.schema.json",
931
- "digest": "sha256:9782c8c130b19f7c47b17ec59a216f4699e3a6f3b81120ecc0442d2576d58fa2"
935
+ "digest": "sha256:33d74abce73ec6631ee1a4f5037bb49571f81cedaebac5bf37d77d91a170b507"
932
936
  },
933
937
  {
934
938
  "path": "skills/design/schemas/design-review-context.schema.json",
@@ -984,7 +988,7 @@
984
988
  },
985
989
  {
986
990
  "path": "skills/investigate/SKILL.md",
987
- "digest": "sha256:26c361a3851a2d7edb17156546d16e3811925f8d990b8a75643d0995b79f4d05"
991
+ "digest": "sha256:2f3426737579e889e35d4d7c03ca112a268f550ed1290ffa9b6d947f94522b4a"
988
992
  },
989
993
  {
990
994
  "path": "skills/land/SKILL.md",
@@ -1016,7 +1020,7 @@
1016
1020
  },
1017
1021
  {
1018
1022
  "path": "skills/plan/schemas/design-document.schema.json",
1019
- "digest": "sha256:9782c8c130b19f7c47b17ec59a216f4699e3a6f3b81120ecc0442d2576d58fa2"
1023
+ "digest": "sha256:33d74abce73ec6631ee1a4f5037bb49571f81cedaebac5bf37d77d91a170b507"
1020
1024
  },
1021
1025
  {
1022
1026
  "path": "skills/plan/schemas/design-review-context.schema.json",
@@ -1036,7 +1040,7 @@
1036
1040
  },
1037
1041
  {
1038
1042
  "path": "skills/plan/SKILL.md",
1039
- "digest": "sha256:4fa07c960eb441671dbfe40e4a77d89a93acc2215066dc7841ab9e478ba56fe7"
1043
+ "digest": "sha256:64cb23d5e4e7fdd131d1284e18927a8d1dd2fbc34732c797b49ae0ab288bff19"
1040
1044
  },
1041
1045
  {
1042
1046
  "path": "skills/release/assets/changelog-template.md",
@@ -1096,15 +1100,15 @@
1096
1100
  },
1097
1101
  {
1098
1102
  "path": "skills/ship/SKILL.md",
1099
- "digest": "sha256:451319c5f71e05f05927c47e3edcf1fbba1892016d16eb74549b8af0ae5521f9"
1103
+ "digest": "sha256:e5fa1282a415e26c1463ed73c5d88ec69512080395d7fb385463d0bdff0a73ec"
1100
1104
  },
1101
1105
  {
1102
1106
  "path": "skills/spec/references/specification-contract.md",
1103
- "digest": "sha256:55ecc8361256073324d2507097862f6222589e22887dffe5b5e25cdc89199df5"
1107
+ "digest": "sha256:eaaf58e5d2e5cf788856c8d0e156a1ff49111d3578556bfb7c8fe2466df15b15"
1104
1108
  },
1105
1109
  {
1106
1110
  "path": "skills/spec/SKILL.md",
1107
- "digest": "sha256:1ff5c57c86757aaed8693a2bb448099f810d23a532f5ccdfd241e972c7e43d9a"
1111
+ "digest": "sha256:8da00648b861c64b675384fc0524f1c8b48cf5e245e23eb416e35519a44c9eba"
1108
1112
  },
1109
1113
  {
1110
1114
  "path": "skills/sprint/references/connectors.md",
@@ -1163,5 +1167,5 @@
1163
1167
  "digest": "sha256:79cb62f3f8b0c36ef55c9424ca694a37448f90170183d13d0654d500613da414"
1164
1168
  }
1165
1169
  ],
1166
- "contentDigest": "sha256:a3a9b5716043985b1aacf2294202f9c119d4b9beceb1dcdde29ffd5dfd8aa392"
1170
+ "contentDigest": "sha256:946a491afa3ce8a60b1ceb10e5fc9edf1b0cf9c576357c7207d8de2ce264301a"
1167
1171
  }
@@ -17,7 +17,7 @@ Follow with `/planr:plan` to decompose the specification into stories and tasks,
17
17
  ## Install the CLI
18
18
 
19
19
  Several skills call the deterministic `openplanr` CLI from the `openplanr` npm package, which ships
20
- this plugin at the same version (3.2.0):
20
+ this plugin at the same version (3.3.0):
21
21
 
22
22
  ```bash
23
23
  npm install -g openplanr
@@ -7,9 +7,11 @@ disallowedTools: Edit, Write, NotebookEdit
7
7
  # QA Agent
8
8
 
9
9
  Review the implementation the user placed in scope. Source and planning files are
10
- read-only for this role: the host removes the file-editing tools from this agent,
11
- and every shell command it runs follows the session's permission rules, so run
12
- only read-only checks. The default outcome is useful engineering feedback, not
10
+ read-only by role policy. The host removes the file-editing tools, but inherited
11
+ shell and connector tools can still write; this is not complete technical write
12
+ isolation. Run verification under the session's permissions without editing source
13
+ or planning files, and use only read-only checks outside disposable test outputs.
14
+ The default outcome is useful engineering feedback, not
13
15
  workflow bookkeeping. A machine-readable response is used only when an explicit
14
16
  release-certification runtime invokes the compatibility path below.
15
17
 
@@ -18,6 +18,7 @@ import {
18
18
  currentDesign,
19
19
  designSpecPath,
20
20
  hash,
21
+ inspectLocalDocumentBody,
21
22
  json,
22
23
  loadReviewContext,
23
24
  parse,
@@ -44,7 +45,8 @@ import {
44
45
  import {
45
46
  DESIGN_DOCUMENT_SCHEMA,
46
47
  assertDesignDocument,
47
- initialFrameHeight
48
+ initialFrameHeight,
49
+ validateDesignProps
48
50
  } from "./design-shared-protocol-contracts-b5f28f94.mjs";
49
51
 
50
52
  // packages/design/lib/design/frame-size.mjs
@@ -1620,6 +1622,15 @@ function lintDesign(html, opts = {}) {
1620
1622
  const { designSystem = null } = opts;
1621
1623
  const errors = [];
1622
1624
  const warnings = [];
1625
+ if (opts.screen) {
1626
+ const values = Object.hasOwn(opts.variant?.props ?? {}, opts.screen.id) ? opts.variant.props[opts.screen.id] : {};
1627
+ errors.push(
1628
+ ...validateDesignProps({
1629
+ screens: [opts.screen],
1630
+ variants: [{ props: { [opts.screen.id]: values } }]
1631
+ }).map((message) => ({ rule: "invalid-instance-prop", level: "error", message }))
1632
+ );
1633
+ }
1623
1634
  const decls = [...styleBlockDecls(html), ...inlineStyleDecls(html)];
1624
1635
  for (const d of decls) {
1625
1636
  if (SPACING_PROP.test(d.prop)) {
@@ -1693,6 +1704,57 @@ function lintDesign(html, opts = {}) {
1693
1704
  summary: `${errors.length} error(s), ${warnings.length} warning(s)`
1694
1705
  };
1695
1706
  }
1707
+ function withoutRootTheme(html) {
1708
+ if (!/theme-(?:light|dark)|data-theme/iu.test(html)) return null;
1709
+ const body = inspectLocalDocumentBody(html);
1710
+ if (!body) return null;
1711
+ const edits = [];
1712
+ for (const { name, value } of body.attrs) {
1713
+ const location = body.location.attrs?.[name];
1714
+ if (!location) continue;
1715
+ let replacement;
1716
+ if (name === "data-theme" && ["light", "dark"].includes(value)) replacement = "";
1717
+ if (name === "class") {
1718
+ const raw = html.slice(location.startOffset, location.endOffset);
1719
+ const quoted = /^(class\s*=\s*)(["'])([\s\S]*)\2$/iu.exec(raw);
1720
+ if (quoted) {
1721
+ const kept = quoted[3].replace(/(^|\s)theme-(?:light|dark)(?=\s|$)/gu, "$1");
1722
+ if (kept !== quoted[3]) replacement = `${quoted[1]}${quoted[2]}${kept}${quoted[2]}`;
1723
+ } else if (/^class\s*=\s*theme-(?:light|dark)$/iu.test(raw)) replacement = "";
1724
+ }
1725
+ if (replacement !== void 0) edits.push({ ...location, replacement });
1726
+ }
1727
+ if (!edits.length) return null;
1728
+ let normalized = html;
1729
+ for (const { startOffset, endOffset, replacement } of edits.sort(
1730
+ (a, b) => b.startOffset - a.startOffset
1731
+ ))
1732
+ normalized = normalized.slice(0, startOffset) + replacement + normalized.slice(endOffset);
1733
+ return normalized;
1734
+ }
1735
+ function lintThemeOnlySources(sources) {
1736
+ const warnings = [];
1737
+ const seen = /* @__PURE__ */ new Map();
1738
+ for (const { screenId, source, html } of sources) {
1739
+ const normalized = withoutRootTheme(html);
1740
+ if (normalized === null) continue;
1741
+ const key = JSON.stringify({
1742
+ html: normalized,
1743
+ styles: source.styles ?? [],
1744
+ scripts: source.scripts ?? []
1745
+ });
1746
+ const previous = seen.get(key);
1747
+ if (previous && previous.screenId !== screenId && previous.source !== source.html && previous.html !== html)
1748
+ warnings.push({
1749
+ rule: "theme-only-source",
1750
+ level: "warn",
1751
+ screenId,
1752
+ message: `Screens ${previous.screenId} (${previous.source}) and ${screenId} (${source.html}) differ only by a root theme marker; declare a theme prop and share one source.`
1753
+ });
1754
+ else seen.set(key, { screenId, source: source.html, html });
1755
+ }
1756
+ return warnings;
1757
+ }
1696
1758
  function lintCanvasData(data, { frames } = {}) {
1697
1759
  const errors = [];
1698
1760
  for (const section of data?.sections || []) {
@@ -2434,8 +2496,19 @@ function prepareDesignDocument(file, { readSource, passive = false, maxBytes } =
2434
2496
  ])
2435
2497
  );
2436
2498
  for (const variant of document2.variants.filter((item) => item.status === "ready")) {
2499
+ const themeWarnings = lintThemeOnlySources(
2500
+ document2.screens.map((screen) => {
2501
+ const source = variant.sources?.[screen.id] ?? screen.source;
2502
+ return {
2503
+ screenId: screen.id,
2504
+ source,
2505
+ html: sourceContents.get(source.html).toString("utf8")
2506
+ };
2507
+ })
2508
+ );
2437
2509
  for (const screenId of document2.screenOrder) {
2438
2510
  const screen = document2.screens.find((item) => item.id === screenId);
2511
+ const values = Object.hasOwn(variant.props ?? {}, screenId) ? variant.props[screenId] : {};
2439
2512
  const bundled = bundleLocalDocument({
2440
2513
  root,
2441
2514
  source: variant.sources?.[screenId] ?? screen.source,
@@ -2443,6 +2516,14 @@ function prepareDesignDocument(file, { readSource, passive = false, maxBytes } =
2443
2516
  screenId,
2444
2517
  readSource,
2445
2518
  passive,
2519
+ ...screen.props ? {
2520
+ screenProps: Object.fromEntries(
2521
+ Object.entries(screen.props).map(([name, declaration]) => [
2522
+ name,
2523
+ Object.hasOwn(values, name) ? values[name] : declaration.default
2524
+ ])
2525
+ )
2526
+ } : {},
2446
2527
  ...maxBytes === void 0 ? {} : { maxBytes }
2447
2528
  });
2448
2529
  if (document2.frames.some(({ height }) => height === "auto"))
@@ -2465,8 +2546,12 @@ function prepareDesignDocument(file, { readSource, passive = false, maxBytes } =
2465
2546
  );
2466
2547
  }
2467
2548
  const report = lintDesign(bundled.html, {
2468
- designSystem: document2.designSystem
2549
+ designSystem: document2.designSystem,
2550
+ screen,
2551
+ variant
2469
2552
  });
2553
+ report.warnings.push(...themeWarnings.filter((item) => item.screenId === screenId));
2554
+ report.summary = `${report.errors.length} error(s), ${report.warnings.length} warning(s)`;
2470
2555
  lint.push({ variantId: variant.id, screenId, ...report });
2471
2556
  for (const anchor of screen.anchors ?? []) {
2472
2557
  if (!bundled.html.includes(`data-planr-id="${anchor}"`) && !bundled.html.includes(`id="${anchor}"`))
@@ -654,7 +654,7 @@ function compileDesignHandoffReadiness(input) {
654
654
  if (input === null || input === void 0) return designHandoffReadinessAbsence();
655
655
  const source = plainClone(input);
656
656
  const document = source.document;
657
- if (!document || document.kind !== "openplanr-design-document" || document.schemaVersion !== "1.0.0" || typeof document.id !== "string" || !document.id)
657
+ if (!document || document.kind !== "openplanr-design-document" || !["1.0.0", "1.1.0"].includes(document.schemaVersion) || typeof document.id !== "string" || !document.id)
658
658
  throw new TypeError("Readiness requires one supported design document.");
659
659
  const revision = source.sourceRevision === null || source.sourceRevision === void 0 ? null : normalizeDigest(source.sourceRevision, "design revision");
660
660
  const direction = selectedDirection(document, source.studioState);
@@ -1807,7 +1807,7 @@ async function importDesignShareRecovery(file, { input, ...options } = {}) {
1807
1807
  const pending = custody.pendingCreate ?? custody.pendingMutation.body;
1808
1808
  const destination = join3(root, "uploads", custody.id, pending.operationId);
1809
1809
  if (existsSync4(destination)) {
1810
- const { spoolChunkReader: spoolChunkReader2 } = await import("./design-runtime-support-6774fd3d5d02.mjs");
1810
+ const { spoolChunkReader: spoolChunkReader2 } = await import("./design-runtime-support-25485dbf1cb2.mjs");
1811
1811
  const reader = spoolChunkReader2(destination, pending);
1812
1812
  for (const part of pending.manifest.chunks) await reader(part.index);
1813
1813
  } else await copyUploadSpool(custody, destination);