openplanr 3.2.0 → 3.4.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 (411) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/cli/commands/artifact-design-share.d.ts +9 -0
  3. package/dist/cli/commands/artifact-design-share.d.ts.map +1 -0
  4. package/dist/cli/commands/artifact-design-share.js +200 -0
  5. package/dist/cli/commands/artifact-design-share.js.map +1 -0
  6. package/dist/cli/commands/artifact.d.ts.map +1 -1
  7. package/dist/cli/commands/artifact.js +5 -18
  8. package/dist/cli/commands/artifact.js.map +1 -1
  9. package/dist/cli/commands/ship.d.ts.map +1 -1
  10. package/dist/cli/commands/ship.js +2 -0
  11. package/dist/cli/commands/ship.js.map +1 -1
  12. package/dist/cli/commands/spec.d.ts +2 -1
  13. package/dist/cli/commands/spec.d.ts.map +1 -1
  14. package/dist/cli/commands/spec.js +45 -5
  15. package/dist/cli/commands/spec.js.map +1 -1
  16. package/dist/dashboard/.vite/manifest.json +2 -2
  17. package/dist/dashboard/assets/index-Cv4Vwhuw.css +2 -0
  18. package/dist/dashboard/assets/index-CvQAlBy3.js +75 -0
  19. package/dist/dashboard/assets/index-CvQAlBy3.js.map +1 -0
  20. package/dist/dashboard/dashboard-manifest.json +14 -14
  21. package/dist/dashboard/index.html +2 -2
  22. package/dist/services/claude-plugin-service.d.ts +5 -0
  23. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  24. package/dist/services/claude-plugin-service.js +18 -2
  25. package/dist/services/claude-plugin-service.js.map +1 -1
  26. package/dist/services/codex-plugin-service.d.ts.map +1 -1
  27. package/dist/services/codex-plugin-service.js +11 -3
  28. package/dist/services/codex-plugin-service.js.map +1 -1
  29. package/dist/services/design-artifact-service.d.ts +20 -1
  30. package/dist/services/design-artifact-service.d.ts.map +1 -1
  31. package/dist/services/design-artifact-service.js +137 -18
  32. package/dist/services/design-artifact-service.js.map +1 -1
  33. package/dist/services/runtime-manager/codex-discovery.d.ts +1 -3
  34. package/dist/services/runtime-manager/codex-discovery.d.ts.map +1 -1
  35. package/dist/services/runtime-manager/codex-discovery.js +3 -16
  36. package/dist/services/runtime-manager/codex-discovery.js.map +1 -1
  37. package/dist/services/runtime-manager/doctor.d.ts +25 -0
  38. package/dist/services/runtime-manager/doctor.d.ts.map +1 -1
  39. package/dist/services/runtime-manager/doctor.js +480 -0
  40. package/dist/services/runtime-manager/doctor.js.map +1 -1
  41. package/dist/services/runtime-manager/errors.d.ts +12 -0
  42. package/dist/services/runtime-manager/errors.d.ts.map +1 -0
  43. package/dist/services/runtime-manager/errors.js +14 -0
  44. package/dist/services/runtime-manager/errors.js.map +1 -0
  45. package/dist/services/runtime-manager/global-state.d.ts +7 -0
  46. package/dist/services/runtime-manager/global-state.d.ts.map +1 -1
  47. package/dist/services/runtime-manager/global-state.js +116 -0
  48. package/dist/services/runtime-manager/global-state.js.map +1 -1
  49. package/dist/services/runtime-manager/host-version-probe.d.ts +8 -0
  50. package/dist/services/runtime-manager/host-version-probe.d.ts.map +1 -0
  51. package/dist/services/runtime-manager/host-version-probe.js +14 -0
  52. package/dist/services/runtime-manager/host-version-probe.js.map +1 -0
  53. package/dist/services/runtime-manager/install-plan.d.ts +25 -0
  54. package/dist/services/runtime-manager/install-plan.d.ts.map +1 -1
  55. package/dist/services/runtime-manager/install-plan.js +305 -0
  56. package/dist/services/runtime-manager/install-plan.js.map +1 -1
  57. package/dist/services/runtime-manager/inventory.d.ts +6 -0
  58. package/dist/services/runtime-manager/inventory.d.ts.map +1 -1
  59. package/dist/services/runtime-manager/inventory.js +16 -1
  60. package/dist/services/runtime-manager/inventory.js.map +1 -1
  61. package/dist/services/runtime-manager/legacy-adapters.d.ts +9 -0
  62. package/dist/services/runtime-manager/legacy-adapters.d.ts.map +1 -0
  63. package/dist/services/runtime-manager/legacy-adapters.js +187 -0
  64. package/dist/services/runtime-manager/legacy-adapters.js.map +1 -0
  65. package/dist/services/runtime-manager/paths.d.ts +18 -0
  66. package/dist/services/runtime-manager/paths.d.ts.map +1 -0
  67. package/dist/services/runtime-manager/paths.js +83 -0
  68. package/dist/services/runtime-manager/paths.js.map +1 -0
  69. package/dist/services/runtime-manager/runtime-package.d.ts +21 -0
  70. package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
  71. package/dist/services/runtime-manager/runtime-package.js +77 -0
  72. package/dist/services/runtime-manager/runtime-package.js.map +1 -1
  73. package/dist/services/runtime-manager/storage.d.ts +47 -0
  74. package/dist/services/runtime-manager/storage.d.ts.map +1 -0
  75. package/dist/services/runtime-manager/storage.js +604 -0
  76. package/dist/services/runtime-manager/storage.js.map +1 -0
  77. package/dist/services/runtime-manager-service.d.ts +7 -17
  78. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  79. package/dist/services/runtime-manager-service.js +32 -1695
  80. package/dist/services/runtime-manager-service.js.map +1 -1
  81. package/dist/services/ship-checks/contract.d.ts +15 -1
  82. package/dist/services/ship-checks/contract.d.ts.map +1 -1
  83. package/dist/services/ship-checks/contract.js +1 -1
  84. package/dist/services/ship-checks/contract.js.map +1 -1
  85. package/dist/services/ship-checks/coverage.d.ts +4 -0
  86. package/dist/services/ship-checks/coverage.d.ts.map +1 -0
  87. package/dist/services/ship-checks/coverage.js +113 -0
  88. package/dist/services/ship-checks/coverage.js.map +1 -0
  89. package/dist/services/ship-checks/discover.d.ts.map +1 -1
  90. package/dist/services/ship-checks/discover.js +5 -1
  91. package/dist/services/ship-checks/discover.js.map +1 -1
  92. package/dist/services/ship-checks/package-contents.d.ts +4 -0
  93. package/dist/services/ship-checks/package-contents.d.ts.map +1 -0
  94. package/dist/services/ship-checks/package-contents.js +91 -0
  95. package/dist/services/ship-checks/package-contents.js.map +1 -0
  96. package/dist/services/ship-checks/packages.d.ts +2 -0
  97. package/dist/services/ship-checks/packages.d.ts.map +1 -1
  98. package/dist/services/ship-checks/packages.js +4 -0
  99. package/dist/services/ship-checks/packages.js.map +1 -1
  100. package/dist/services/ship-checks/scope.js +2 -1
  101. package/dist/services/ship-checks/scope.js.map +1 -1
  102. package/dist/services/spec-service.d.ts +18 -0
  103. package/dist/services/spec-service.d.ts.map +1 -1
  104. package/dist/services/spec-service.js +174 -9
  105. package/dist/services/spec-service.js.map +1 -1
  106. package/dist/templates/spec/spec-shaped.md.hbs +1 -1
  107. package/dist/templates/spec/spec.md.hbs +2 -2
  108. package/dist/utils/splice-managed-block.js +1 -1
  109. package/dist/utils/splice-managed-block.js.map +1 -1
  110. package/docs/CLI.md +86 -2
  111. package/lib/host-packages/adapter-registry.json +5 -5
  112. package/lib/host-packages/capability-map.json +3 -3
  113. package/lib/host-packages/claude/.claude-plugin/marketplace.json +3 -3
  114. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +6 -6
  115. package/lib/host-packages/claude/openplanr/.openplanr-content.json +94 -146
  116. package/lib/host-packages/claude/openplanr/README.md +12 -12
  117. package/lib/host-packages/claude/openplanr/agents/planr-qa.md +5 -3
  118. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/task-context-resolution.md +4 -4
  119. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-artifact-shell.mjs +2 -4
  120. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-document.mjs +110 -25
  121. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-handoff.mjs +851 -57
  122. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review-state-store.mjs +45 -0
  123. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +65 -74
  124. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -1
  125. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +321 -0
  126. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs +1652 -0
  127. package/lib/host-packages/{openai/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs → claude/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-9f6918b0.mjs} +537 -5
  128. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +137 -0
  129. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design.mjs +374 -61
  130. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -59
  131. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +138 -133
  132. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +1 -5608
  133. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +2568 -0
  134. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +10 -74
  135. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  136. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +8 -2
  137. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  138. 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
  139. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  140. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  141. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  142. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  143. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  144. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
  145. package/lib/host-packages/{openai/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
  146. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  147. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +616 -4775
  148. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +219 -424
  149. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
  150. package/lib/host-packages/claude/openplanr/skills/delegate/SKILL.md +2 -1
  151. package/lib/host-packages/claude/openplanr/skills/delegate/references/integration-review.md +26 -20
  152. package/lib/host-packages/claude/openplanr/skills/delegate/references/operator-guide.md +25 -1
  153. package/lib/host-packages/claude/openplanr/skills/delegate/references/run-handoff.md +2 -2
  154. package/lib/host-packages/claude/openplanr/skills/delegate/references/worktree-custody.md +17 -9
  155. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/claude.mjs +15 -3
  156. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/codex.mjs +38 -2
  157. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/native.mjs +5 -0
  158. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/custody.mjs +217 -10
  159. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/handoff.mjs +1080 -0
  160. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/integrate.mjs +96 -201
  161. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/integration-files.mjs +3 -382
  162. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/presentation.mjs +29 -12
  163. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-contract.mjs +11 -0
  164. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-execution.mjs +1 -1
  165. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-lifecycle.mjs +14 -10
  166. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-preparation.mjs +4 -0
  167. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-record.mjs +2 -2
  168. package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +17 -2
  169. package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +60 -2
  170. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +23 -7
  171. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +131 -4
  172. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +17 -2
  173. package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +60 -2
  174. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +23 -7
  175. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
  176. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +17 -2
  177. package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +60 -2
  178. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +23 -7
  179. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
  180. package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +2 -1
  181. package/lib/host-packages/claude/openplanr/skills/investigate/references/fail-first.md +40 -0
  182. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +21 -11
  183. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
  184. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +51 -18
  185. package/lib/host-packages/claude/openplanr/skills/ship/references/fail-first.md +40 -0
  186. package/lib/host-packages/claude/openplanr/skills/ship/references/result-contract.md +7 -3
  187. package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +6 -0
  188. package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +3 -1
  189. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +91 -143
  190. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  191. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/integration-review.md +26 -20
  192. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/operator-guide.md +25 -1
  193. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/run-handoff.md +2 -2
  194. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/worktree-custody.md +17 -9
  195. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/claude.mjs +15 -3
  196. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/codex.mjs +38 -2
  197. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/native.mjs +5 -0
  198. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/custody.mjs +217 -10
  199. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/handoff.mjs +1080 -0
  200. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/integrate.mjs +96 -201
  201. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/integration-files.mjs +3 -382
  202. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/presentation.mjs +29 -12
  203. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-contract.mjs +11 -0
  204. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-execution.mjs +1 -1
  205. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-lifecycle.mjs +14 -10
  206. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-preparation.mjs +4 -0
  207. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-record.mjs +2 -2
  208. package/lib/host-packages/cursor/openplanr/rules/planr-delegate.mdc +2 -1
  209. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +17 -2
  210. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +60 -2
  211. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +23 -7
  212. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +131 -4
  213. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +17 -2
  214. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +60 -2
  215. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +23 -7
  216. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +131 -4
  217. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +17 -2
  218. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +60 -2
  219. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +23 -7
  220. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +131 -4
  221. package/lib/host-packages/cursor/openplanr/rules/planr-investigate/references/fail-first.md +40 -0
  222. package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +2 -1
  223. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +131 -4
  224. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +21 -11
  225. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/fail-first.md +40 -0
  226. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/result-contract.md +7 -3
  227. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +51 -18
  228. package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +3 -1
  229. package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +6 -0
  230. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-artifact-shell.mjs +2 -4
  231. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-document.mjs +110 -25
  232. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-handoff.mjs +851 -57
  233. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review-state-store.mjs +45 -0
  234. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +65 -74
  235. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -1
  236. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +321 -0
  237. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs +1652 -0
  238. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs → design-shared-artifact-support-protocol-contracts-9f6918b0.mjs} +537 -5
  239. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +137 -0
  240. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design.mjs +374 -61
  241. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -59
  242. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +138 -133
  243. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +1 -5608
  244. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +2568 -0
  245. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +10 -74
  246. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  247. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +8 -2
  248. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  249. 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
  250. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  251. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  252. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  253. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  254. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  255. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
  256. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/{v1.20.0 → v1.22.0}/design-document.schema.json +131 -4
  257. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  258. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +616 -4775
  259. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +219 -424
  260. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
  261. package/lib/host-packages/openai/.claude-plugin/marketplace.json +3 -3
  262. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +2 -2
  263. package/lib/host-packages/openai/openplanr/.openplanr-content.json +98 -150
  264. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-artifact-shell.mjs +2 -4
  265. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-document.mjs +110 -25
  266. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-handoff.mjs +851 -57
  267. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review-state-store.mjs +45 -0
  268. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +65 -74
  269. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-runtime-home.mjs +0 -1
  270. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share-cli-bridge.mjs +321 -0
  271. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-d707e49b.mjs +1652 -0
  272. package/lib/host-packages/{claude/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-ea2cd15e.mjs → openai/openplanr/runtime/design/scripts/design-shared-artifact-support-protocol-contracts-9f6918b0.mjs} +537 -5
  273. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-design-support-0bac378d.mjs +137 -0
  274. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design.mjs +374 -61
  275. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +32 -59
  276. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/02-artifact-review-ui.js +138 -133
  277. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +1 -5608
  278. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-artifact-review-ui.js +2568 -0
  279. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +10 -74
  280. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  281. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +8 -2
  282. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +2 -2
  283. 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
  284. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-protocol-contracts.js +72 -2
  285. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/13-design-review-experience.js +14 -7
  286. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-canvas-engine.js +71 -34
  287. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/21-design-studio.js +28 -14
  288. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +12 -12
  289. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +6 -2
  290. 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
  291. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.22.0/design-review-bundle.schema.json +822 -0
  292. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +616 -4775
  293. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +219 -424
  294. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +6 -2
  295. package/lib/host-packages/openai/openplanr/skills/delegate/SKILL.md +2 -1
  296. package/lib/host-packages/openai/openplanr/skills/delegate/openplanr.skill.json +1 -1
  297. package/lib/host-packages/openai/openplanr/skills/delegate/references/integration-review.md +26 -20
  298. package/lib/host-packages/openai/openplanr/skills/delegate/references/operator-guide.md +25 -1
  299. package/lib/host-packages/openai/openplanr/skills/delegate/references/run-handoff.md +2 -2
  300. package/lib/host-packages/openai/openplanr/skills/delegate/references/worktree-custody.md +17 -9
  301. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/claude.mjs +15 -3
  302. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/codex.mjs +38 -2
  303. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/native.mjs +5 -0
  304. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/custody.mjs +217 -10
  305. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/handoff.mjs +1080 -0
  306. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/integrate.mjs +96 -201
  307. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/integration-files.mjs +3 -382
  308. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/presentation.mjs +29 -12
  309. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-contract.mjs +11 -0
  310. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-execution.mjs +1 -1
  311. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-lifecycle.mjs +14 -10
  312. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-preparation.mjs +4 -0
  313. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-record.mjs +2 -2
  314. package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +17 -2
  315. package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +60 -2
  316. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +23 -7
  317. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +131 -4
  318. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +17 -2
  319. package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +60 -2
  320. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +23 -7
  321. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +131 -4
  322. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +17 -2
  323. package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +60 -2
  324. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +23 -7
  325. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +131 -4
  326. package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +2 -1
  327. package/lib/host-packages/openai/openplanr/skills/investigate/agents/openai.yaml +1 -1
  328. package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +12 -1
  329. package/lib/host-packages/openai/openplanr/skills/investigate/references/fail-first.md +40 -0
  330. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +21 -11
  331. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +1 -1
  332. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +131 -4
  333. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +51 -18
  334. package/lib/host-packages/openai/openplanr/skills/ship/agents/openai.yaml +1 -1
  335. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +12 -1
  336. package/lib/host-packages/openai/openplanr/skills/ship/references/fail-first.md +40 -0
  337. package/lib/host-packages/openai/openplanr/skills/ship/references/result-contract.md +7 -3
  338. package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +6 -0
  339. package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +1 -1
  340. package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +3 -1
  341. package/lib/json-schema.mjs +4 -0
  342. package/package.json +16 -16
  343. package/dist/dashboard/assets/index-BU5fzjyz.css +0 -1
  344. package/dist/dashboard/assets/index-L8qtwqv6.js +0 -572
  345. package/dist/dashboard/assets/index-L8qtwqv6.js.map +0 -1
  346. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +0 -555
  347. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-compression.mjs +0 -4180
  348. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-encrypted-workspace-client.mjs +0 -647
  349. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-owner-custody.mjs +0 -129
  350. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-resource-pack.mjs +0 -698
  351. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-runtime-support-6774fd3d5d02.mjs +0 -24
  352. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +0 -1993
  353. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +0 -1020
  354. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-75a938cc.mjs +0 -222
  355. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +0 -5778
  356. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-upload-spool.mjs +0 -198
  357. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js +0 -4175
  358. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/05-artifact-sharing.js +0 -65
  359. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +0 -1755
  360. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/07-artifact-sharing.js +0 -62
  361. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +0 -2633
  362. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +0 -49
  363. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +0 -108
  364. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +0 -170
  365. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +0 -97
  366. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +0 -56
  367. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/integration-transaction.mjs +0 -958
  368. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/integration-transaction.mjs +0 -958
  369. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +0 -555
  370. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-compression.mjs +0 -4180
  371. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-encrypted-workspace-client.mjs +0 -647
  372. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-owner-custody.mjs +0 -129
  373. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-resource-pack.mjs +0 -698
  374. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-runtime-support-6774fd3d5d02.mjs +0 -24
  375. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +0 -1993
  376. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +0 -1020
  377. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-75a938cc.mjs +0 -222
  378. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +0 -5778
  379. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-upload-spool.mjs +0 -198
  380. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js +0 -4175
  381. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/05-artifact-sharing.js +0 -65
  382. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +0 -1755
  383. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/07-artifact-sharing.js +0 -62
  384. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +0 -2633
  385. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +0 -49
  386. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +0 -108
  387. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +0 -170
  388. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +0 -97
  389. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +0 -56
  390. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-chunked-workspace-client.mjs +0 -555
  391. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-compression.mjs +0 -4180
  392. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-encrypted-workspace-client.mjs +0 -647
  393. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-owner-custody.mjs +0 -129
  394. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-resource-pack.mjs +0 -698
  395. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-runtime-support-6774fd3d5d02.mjs +0 -24
  396. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +0 -1993
  397. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-artifact-support-dependencies-design-support-protocol-contracts-3d9b1a86.mjs +0 -1020
  398. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-75a938cc.mjs +0 -222
  399. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-b5f28f94.mjs +0 -5778
  400. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-upload-spool.mjs +0 -198
  401. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/04-compression.js +0 -4175
  402. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/05-artifact-sharing.js +0 -65
  403. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/06-artifact-review-ui.js +0 -1755
  404. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/07-artifact-sharing.js +0 -62
  405. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/08-artifact-review-ui.js +0 -2633
  406. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +0 -49
  407. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +0 -108
  408. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +0 -170
  409. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +0 -97
  410. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +0 -56
  411. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/integration-transaction.mjs +0 -958
@@ -46,35 +46,35 @@
46
46
  function normalized(value) {
47
47
  return Math.round(clamp(value) * 1e6) / 1e6;
48
48
  }
49
- function assertRect(rect2) {
50
- if (!rect2 || !Number.isFinite(rect2.left) || !Number.isFinite(rect2.top) || !Number.isFinite(rect2.width) || !Number.isFinite(rect2.height) || rect2.width <= 0 || rect2.height <= 0) {
49
+ function assertRect(rect) {
50
+ if (!rect || !Number.isFinite(rect.left) || !Number.isFinite(rect.top) || !Number.isFinite(rect.width) || !Number.isFinite(rect.height) || rect.width <= 0 || rect.height <= 0) {
51
51
  throw new RangeError("Artifact bounds must have positive finite dimensions.");
52
52
  }
53
53
  }
54
- function clientSelectionToNormalized(rect2, start, end = start, { dragThreshold = ARTIFACT_ANNOTATION_LIMITS.dragThreshold } = {}) {
55
- assertRect(rect2);
54
+ function clientSelectionToNormalized(rect, start, end = start, { dragThreshold = ARTIFACT_ANNOTATION_LIMITS.dragThreshold } = {}) {
55
+ assertRect(rect);
56
56
  const startX = clamp(
57
- finite(start?.x ?? start?.clientX, rect2.left),
58
- rect2.left,
59
- rect2.left + rect2.width
57
+ finite(start?.x ?? start?.clientX, rect.left),
58
+ rect.left,
59
+ rect.left + rect.width
60
60
  );
61
61
  const startY = clamp(
62
- finite(start?.y ?? start?.clientY, rect2.top),
63
- rect2.top,
64
- rect2.top + rect2.height
62
+ finite(start?.y ?? start?.clientY, rect.top),
63
+ rect.top,
64
+ rect.top + rect.height
65
65
  );
66
- const endX = clamp(finite(end?.x ?? end?.clientX, startX), rect2.left, rect2.left + rect2.width);
67
- const endY = clamp(finite(end?.y ?? end?.clientY, startY), rect2.top, rect2.top + rect2.height);
66
+ const endX = clamp(finite(end?.x ?? end?.clientX, startX), rect.left, rect.left + rect.width);
67
+ const endY = clamp(finite(end?.y ?? end?.clientY, startY), rect.top, rect.top + rect.height);
68
68
  const dragged = Math.hypot(endX - startX, endY - startY) >= Math.max(0, finite(dragThreshold, 4));
69
69
  const left = dragged ? Math.min(startX, endX) : startX;
70
70
  const top = dragged ? Math.min(startY, endY) : startY;
71
71
  const right = dragged ? Math.max(startX, endX) : startX;
72
72
  const bottom = dragged ? Math.max(startY, endY) : startY;
73
73
  return Object.freeze({
74
- x: normalized((left - rect2.left) / rect2.width),
75
- y: normalized((top - rect2.top) / rect2.height),
76
- w: normalized((right - left) / rect2.width),
77
- h: normalized((bottom - top) / rect2.height)
74
+ x: normalized((left - rect.left) / rect.width),
75
+ y: normalized((top - rect.top) / rect.height),
76
+ w: normalized((right - left) / rect.width),
77
+ h: normalized((bottom - top) / rect.height)
78
78
  });
79
79
  }
80
80
  function artifactAnchorPoint(region, viewport) {
@@ -126,11 +126,11 @@
126
126
  }
127
127
  function domToken(value) {
128
128
  const source = String(value);
129
- let token3 = "";
130
- for (let index2 = 0; index2 < source.length; index2 += 1) {
131
- token3 += source.charCodeAt(index2).toString(16).padStart(4, "0");
129
+ let token = "";
130
+ for (let index = 0; index < source.length; index += 1) {
131
+ token += source.charCodeAt(index).toString(16).padStart(4, "0");
132
132
  }
133
- return token3;
133
+ return token;
134
134
  }
135
135
  function annotationDomIds(pinId) {
136
136
  const suffix = domToken(pinId);
@@ -143,26 +143,26 @@
143
143
  return typeof value === "string" ? value.trim().slice(0, max) : "";
144
144
  }
145
145
  function make(document2, tag, { className, textContent, attributes = {} } = {}) {
146
- const node2 = document2.createElement(tag);
147
- if (className) node2.className = className;
148
- if (textContent !== void 0) node2.textContent = textContent;
146
+ const node = document2.createElement(tag);
147
+ if (className) node.className = className;
148
+ if (textContent !== void 0) node.textContent = textContent;
149
149
  for (const [name, value] of Object.entries(attributes)) {
150
- if (value !== void 0 && value !== null) node2.setAttribute(name, String(value));
150
+ if (value !== void 0 && value !== null) node.setAttribute(name, String(value));
151
151
  }
152
- return node2;
152
+ return node;
153
153
  }
154
- function setRegionStyle(node2, region) {
154
+ function setRegionStyle(node, region) {
155
155
  const style = annotationStyle(region);
156
- if (node2.style.left !== style.left) node2.style.left = style.left;
157
- if (node2.style.top !== style.top) node2.style.top = style.top;
156
+ if (node.style.left !== style.left) node.style.left = style.left;
157
+ if (node.style.top !== style.top) node.style.top = style.top;
158
158
  if (region.w > 0 || region.h > 0) {
159
- if (node2.style.width !== style.width) node2.style.width = style.width;
160
- if (node2.style.height !== style.height) node2.style.height = style.height;
159
+ if (node.style.width !== style.width) node.style.width = style.width;
160
+ if (node.style.height !== style.height) node.style.height = style.height;
161
161
  }
162
162
  }
163
163
  function announce(document2, value) {
164
- const node2 = document2.querySelector('[data-planr-slot="review-announcer"]');
165
- if (node2) node2.textContent = value;
164
+ const node = document2.querySelector('[data-planr-slot="review-announcer"]');
165
+ if (node) node.textContent = value;
166
166
  }
167
167
  function identityName(reviewController) {
168
168
  return text(
@@ -175,14 +175,14 @@
175
175
  className: "planr-intent-picker",
176
176
  attributes: { role: "radiogroup", "aria-label": "Feedback intent" }
177
177
  });
178
- for (const [index2, intent] of INTENTS.entries()) {
178
+ for (const [index, intent] of INTENTS.entries()) {
179
179
  const button = make(document2, "button", {
180
180
  textContent: intent[0].toUpperCase() + intent.slice(1),
181
181
  attributes: {
182
182
  type: "button",
183
183
  role: "radio",
184
- "aria-checked": String(index2 === 0),
185
- tabindex: index2 === 0 ? 0 : -1,
184
+ "aria-checked": String(index === 0),
185
+ tabindex: index === 0 ? 0 : -1,
186
186
  "data-planr-intent": intent
187
187
  }
188
188
  });
@@ -218,16 +218,16 @@
218
218
  }
219
219
  function layerFor(artifactId) {
220
220
  return [...document2.querySelectorAll("[data-planr-annotation-layer]")].find(
221
- (node2) => node2.dataset.planrAnnotationLayer === artifactId
221
+ (node) => node.dataset.planrAnnotationLayer === artifactId
222
222
  ) ?? null;
223
223
  }
224
224
  function frameFor(artifactId) {
225
225
  return [...document2.querySelectorAll("[data-planr-artifact-frame]")].find(
226
- (node2) => node2.dataset.planrArtifactFrame === artifactId
226
+ (node) => node.dataset.planrArtifactFrame === artifactId
227
227
  ) ?? null;
228
228
  }
229
229
  function focusThread(pinId) {
230
- const pin = review()?.pins?.find((item2) => item2.id === pinId);
230
+ const pin = review()?.pins?.find((item) => item.id === pinId);
231
231
  if (!pin) return;
232
232
  reviewController.selectPin?.(pinId);
233
233
  const state = stageController.getState();
@@ -238,7 +238,7 @@
238
238
  queueMicrotask(() => document2.getElementById(annotationDomIds(pinId).thread)?.focus());
239
239
  }
240
240
  function focusPin(pinId) {
241
- const pin = review()?.pins?.find((item2) => item2.id === pinId);
241
+ const pin = review()?.pins?.find((item) => item.id === pinId);
242
242
  if (!pin) return;
243
243
  reviewController.selectPin?.(pinId);
244
244
  const state = stageController.getState();
@@ -270,21 +270,21 @@
270
270
  pin.viewport
271
271
  ]);
272
272
  }
273
- function setPinPosition(record2, region) {
274
- const point3 = { x: region.x + region.w / 2, y: region.y + region.h / 2, w: 0, h: 0 };
275
- setRegionStyle(record2.button, point3);
276
- if (record2.region) setRegionStyle(record2.region, region);
277
- if (record2.button.hidden) record2.button.hidden = false;
278
- if (record2.region?.hidden) record2.region.hidden = false;
273
+ function setPinPosition(record, region) {
274
+ const point = { x: region.x + region.w / 2, y: region.y + region.h / 2, w: 0, h: 0 };
275
+ setRegionStyle(record.button, point);
276
+ if (record.region) setRegionStyle(record.region, region);
277
+ if (record.button.hidden) record.button.hidden = false;
278
+ if (record.region?.hidden) record.region.hidden = false;
279
279
  }
280
- function hidePin(record2) {
281
- if (!record2.button.hidden) record2.button.hidden = true;
282
- if (record2.region && !record2.region.hidden) record2.region.hidden = true;
280
+ function hidePin(record) {
281
+ if (!record.button.hidden) record.button.hidden = true;
282
+ if (record.region && !record.region.hidden) record.region.hidden = true;
283
283
  }
284
- function removePin(record2) {
285
- record2.pending = null;
286
- record2.button.remove();
287
- record2.region?.remove();
284
+ function removePin(record) {
285
+ record.pending = null;
286
+ record.button.remove();
287
+ record.region?.remove();
288
288
  }
289
289
  function refreshAnchors() {
290
290
  if (destroyed) return;
@@ -295,40 +295,40 @@
295
295
  frame
296
296
  ])
297
297
  );
298
- const records = [...pinRecords.values()].flatMap((records2) => [...records2.values()]).filter((record2) => record2.pin.anchor?.planrId).sort((a, b) => a.requestedAt - b.requestedAt);
299
- for (const record2 of records) {
300
- if (record2.pending || now - record2.requestedAt < 200 || !record2.button.isConnected) continue;
301
- const frame = frames.get(record2.pin.artifactId);
298
+ const records = [...pinRecords.values()].flatMap((records2) => [...records2.values()]).filter((record) => record.pin.anchor?.planrId).sort((a, b) => a.requestedAt - b.requestedAt);
299
+ for (const record of records) {
300
+ if (record.pending || now - record.requestedAt < 200 || !record.button.isConnected) continue;
301
+ const frame = frames.get(record.pin.artifactId);
302
302
  const bridge = frame?.__openPlanrBridge;
303
303
  if (!bridge?.resolve || frame.closest("[hidden]") || frame.dataset.planrBridgeTrusted === "false" || (anchorRequests.get(frame) ?? 0) >= 8)
304
304
  continue;
305
- const request = {}, key = record2.geometryKey, pin = record2.pin;
306
- record2.pending = request;
307
- record2.requestedAt = now;
305
+ const request = {}, key = record.geometryKey, pin = record.pin;
306
+ record.pending = request;
307
+ record.requestedAt = now;
308
308
  anchorRequests.set(frame, (anchorRequests.get(frame) ?? 0) + 1);
309
- Promise.resolve().then(() => bridge.resolve(pin.anchor.planrId, pin.anchor.screen)).then((anchor2) => {
310
- if (destroyed || record2.pending !== request || record2.geometryKey !== key || !record2.button.isConnected || frame.__openPlanrBridge !== bridge)
309
+ Promise.resolve().then(() => bridge.resolve(pin.anchor.planrId, pin.anchor.screen)).then((anchor) => {
310
+ if (destroyed || record.pending !== request || record.geometryKey !== key || !record.button.isConnected || frame.__openPlanrBridge !== bridge)
311
311
  return;
312
- if (!anchor2 || anchor2.rect.width <= 0 || anchor2.rect.height <= 0) {
313
- hidePin(record2);
314
- if (record2.button.dataset.planrAnchorStatus !== "unavailable")
315
- record2.button.dataset.planrAnchorStatus = "unavailable";
312
+ if (!anchor || anchor.rect.width <= 0 || anchor.rect.height <= 0) {
313
+ hidePin(record);
314
+ if (record.button.dataset.planrAnchorStatus !== "unavailable")
315
+ record.button.dataset.planrAnchorStatus = "unavailable";
316
316
  return;
317
317
  }
318
318
  const projected = anchorRegionToViewportRegion(
319
319
  pin.region,
320
- anchor2.viewport ?? pin.viewport,
321
- anchor2.rect
320
+ anchor.viewport ?? pin.viewport,
321
+ anchor.rect
322
322
  );
323
- setPinPosition(record2, projected);
324
- if (record2.button.dataset.planrAnchorStatus !== "resolved")
325
- record2.button.dataset.planrAnchorStatus = "resolved";
323
+ setPinPosition(record, projected);
324
+ if (record.button.dataset.planrAnchorStatus !== "resolved")
325
+ record.button.dataset.planrAnchorStatus = "resolved";
326
326
  }).catch(() => {
327
327
  }).finally(() => {
328
328
  const remaining = (anchorRequests.get(frame) ?? 1) - 1;
329
329
  if (remaining > 0) anchorRequests.set(frame, remaining);
330
330
  else anchorRequests.delete(frame);
331
- if (record2.pending === request) record2.pending = null;
331
+ if (record.pending === request) record.pending = null;
332
332
  });
333
333
  }
334
334
  }
@@ -338,7 +338,7 @@
338
338
  const layers = new Set(document2.querySelectorAll("[data-planr-annotation-layer]"));
339
339
  for (const [layer, records] of pinRecords) {
340
340
  if (layers.has(layer)) continue;
341
- for (const record2 of records.values()) removePin(record2);
341
+ for (const record of records.values()) removePin(record);
342
342
  pinRecords.delete(layer);
343
343
  }
344
344
  for (const layer of layers) {
@@ -348,24 +348,24 @@
348
348
  pinRecords.set(layer, records);
349
349
  }
350
350
  const current = /* @__PURE__ */ new Set();
351
- for (const [index2, pin] of pins.entries()) {
351
+ for (const [index, pin] of pins.entries()) {
352
352
  if (pin.artifactId !== layer.dataset.planrAnnotationLayer) continue;
353
353
  current.add(pin.id);
354
- const ids2 = annotationDomIds(pin.id), ordinal = index2 + 1;
354
+ const ids = annotationDomIds(pin.id), ordinal = index + 1;
355
355
  const hasRegion = pin.region.w > 0 || pin.region.h > 0;
356
- let record2 = records.get(pin.id);
357
- if (!record2) {
356
+ let record = records.get(pin.id);
357
+ if (!record) {
358
358
  const button = make(document2, "button", {
359
359
  attributes: {
360
360
  type: "button",
361
- id: ids2.pin,
361
+ id: ids.pin,
362
362
  "data-planr-pin-id": pin.id,
363
- "aria-controls": ids2.thread
363
+ "aria-controls": ids.thread
364
364
  }
365
365
  });
366
366
  button.addEventListener("click", () => focusThread(pin.id));
367
367
  layer.append(button);
368
- record2 = {
368
+ record = {
369
369
  button,
370
370
  region: null,
371
371
  pin,
@@ -373,56 +373,56 @@
373
373
  pending: null,
374
374
  requestedAt: -Infinity
375
375
  };
376
- records.set(pin.id, record2);
376
+ records.set(pin.id, record);
377
377
  }
378
- record2.pin = pin;
379
- if (hasRegion && !record2.region) {
380
- record2.region = make(document2, "span", {
378
+ record.pin = pin;
379
+ if (hasRegion && !record.region) {
380
+ record.region = make(document2, "span", {
381
381
  attributes: { "data-planr-pin-region-id": pin.id, "aria-hidden": "true" }
382
382
  });
383
- layer.insertBefore(record2.region, record2.button);
384
- } else if (!hasRegion && record2.region) {
385
- record2.region.remove();
386
- record2.region = null;
383
+ layer.insertBefore(record.region, record.button);
384
+ } else if (!hasRegion && record.region) {
385
+ record.region.remove();
386
+ record.region = null;
387
387
  }
388
- const buttonClass = `planr-pin planr-pin-${pin.intent} planr-pin-${pin.status}${hasRegion ? " planr-pin-region-handle" : ""}${record2.button.classList.contains("planr-pin-highlight") ? " planr-pin-highlight" : ""}`;
389
- if (record2.button.className !== buttonClass) record2.button.className = buttonClass;
390
- if (record2.button.textContent !== String(ordinal))
391
- record2.button.textContent = String(ordinal);
388
+ const buttonClass = `planr-pin planr-pin-${pin.intent} planr-pin-${pin.status}${hasRegion ? " planr-pin-region-handle" : ""}${record.button.classList.contains("planr-pin-highlight") ? " planr-pin-highlight" : ""}`;
389
+ if (record.button.className !== buttonClass) record.button.className = buttonClass;
390
+ if (record.button.textContent !== String(ordinal))
391
+ record.button.textContent = String(ordinal);
392
392
  for (const [name, value] of Object.entries({
393
393
  "data-planr-intent": pin.intent,
394
394
  "data-planr-status": pin.status,
395
395
  "aria-label": `${pin.intent} comment ${ordinal}: ${pin.comment}`
396
396
  })) {
397
- if (record2.button.getAttribute(name) !== value) record2.button.setAttribute(name, value);
397
+ if (record.button.getAttribute(name) !== value) record.button.setAttribute(name, value);
398
398
  }
399
- if (record2.region) {
399
+ if (record.region) {
400
400
  const regionClass = `planr-pin-region planr-pin-region-${pin.intent} planr-pin-region-${pin.status}`;
401
- if (record2.region.className !== regionClass) record2.region.className = regionClass;
401
+ if (record.region.className !== regionClass) record.region.className = regionClass;
402
402
  }
403
403
  const key = pinGeometryKey(pin);
404
- if (record2.geometryKey !== key) {
405
- record2.geometryKey = key;
406
- record2.pending = null;
407
- record2.requestedAt = -Infinity;
408
- if (pin.anchor?.planrId) hidePin(record2);
404
+ if (record.geometryKey !== key) {
405
+ record.geometryKey = key;
406
+ record.pending = null;
407
+ record.requestedAt = -Infinity;
408
+ if (pin.anchor?.planrId) hidePin(record);
409
409
  else {
410
- delete record2.button.dataset.planrAnchorStatus;
411
- setPinPosition(record2, pin.region);
410
+ delete record.button.dataset.planrAnchorStatus;
411
+ setPinPosition(record, pin.region);
412
412
  }
413
413
  }
414
414
  }
415
- for (const [id7, record2] of records) {
416
- if (!current.has(id7)) {
417
- removePin(record2);
418
- records.delete(id7);
415
+ for (const [id, record] of records) {
416
+ if (!current.has(id)) {
417
+ removePin(record);
418
+ records.delete(id);
419
419
  }
420
420
  }
421
421
  }
422
422
  refreshAnchors();
423
423
  }
424
424
  function closeComposer({ restoreFocus = false, preserveDraft = false } = {}) {
425
- const snapshot2 = preserveDraft ? snapshotDraft() : null;
425
+ const snapshot = preserveDraft ? snapshotDraft() : null;
426
426
  draftFieldCleanup?.();
427
427
  draftFieldCleanup = null;
428
428
  composerLayoutCleanup?.();
@@ -435,7 +435,7 @@
435
435
  }
436
436
  composer?.remove();
437
437
  draft = null;
438
- suspendedDraft = snapshot2;
438
+ suspendedDraft = snapshot;
439
439
  draftToken += 1;
440
440
  if (activeLayer && stageController.getState().reviewMode !== "comment") {
441
441
  activeLayer.setAttribute("aria-disabled", "true");
@@ -446,22 +446,22 @@
446
446
  }
447
447
  composerReturnFocus = null;
448
448
  }
449
- async function resolveAnchor(token3, candidate) {
449
+ async function resolveAnchor(token, candidate) {
450
450
  const frame = frameFor(candidate.artifactId);
451
- const point3 = artifactAnchorPoint(candidate.region, candidate.viewport);
451
+ const point = artifactAnchorPoint(candidate.region, candidate.viewport);
452
452
  let result = null;
453
453
  try {
454
- const anchor2 = frame?.__openPlanrBridge?.hitTest?.(point3.x, point3.y);
455
- if (anchor2) {
454
+ const anchor = frame?.__openPlanrBridge?.hitTest?.(point.x, point.y);
455
+ if (anchor) {
456
456
  result = await Promise.race([
457
- anchor2,
457
+ anchor,
458
458
  new Promise((resolve) => window.setTimeout(() => resolve(null), 800))
459
459
  ]);
460
460
  }
461
461
  } catch {
462
462
  result = null;
463
463
  }
464
- if (token3 !== draftToken || !draft || draft.artifactId !== candidate.artifactId) return;
464
+ if (token !== draftToken || !draft || draft.artifactId !== candidate.artifactId) return;
465
465
  if (result?.planrId) {
466
466
  draft.anchor = Object.freeze({
467
467
  planrId: String(result.planrId).slice(0, 512),
@@ -485,16 +485,16 @@
485
485
  const availableWidth = Math.max(1, viewport.width - margin * 2), availableHeight = Math.max(1, viewport.height - margin * 2);
486
486
  composer.style.width = `${Math.min(360, availableWidth)}px`;
487
487
  composer.style.maxHeight = `${Math.min(620, availableHeight)}px`;
488
- const bounds2 = layer.getBoundingClientRect();
489
- const point3 = {
490
- x: bounds2.left + clamp(draft.displayRegion.x + draft.displayRegion.w / 2) * bounds2.width,
491
- y: bounds2.top + clamp(draft.displayRegion.y + draft.displayRegion.h / 2) * bounds2.height
488
+ const bounds = layer.getBoundingClientRect();
489
+ const point = {
490
+ x: bounds.left + clamp(draft.displayRegion.x + draft.displayRegion.w / 2) * bounds.width,
491
+ y: bounds.top + clamp(draft.displayRegion.y + draft.displayRegion.h / 2) * bounds.height
492
492
  };
493
493
  const size = composer.getBoundingClientRect();
494
494
  const width = Math.min(size.width || 360, availableWidth), height = Math.min(size.height || 360, availableHeight);
495
- const left = point3.x + 16 + width <= viewport.x + viewport.width - margin ? point3.x + 16 : point3.x - width - 16;
495
+ const left = point.x + 16 + width <= viewport.x + viewport.width - margin ? point.x + 16 : point.x - width - 16;
496
496
  composer.style.left = `${clamp(left, viewport.x + margin, viewport.x + viewport.width - width - margin)}px`;
497
- composer.style.top = `${clamp(point3.y + 16, viewport.y + margin, viewport.y + viewport.height - height - margin)}px`;
497
+ composer.style.top = `${clamp(point.y + 16, viewport.y + margin, viewport.y + viewport.height - height - margin)}px`;
498
498
  }
499
499
  function openComposer(detail, { restoredDraft = null } = {}) {
500
500
  const opener = document2.activeElement;
@@ -503,7 +503,7 @@
503
503
  const layer = layerFor(detail.artifactId);
504
504
  if (!layer) return;
505
505
  draftToken += 1;
506
- const token3 = draftToken;
506
+ const token = draftToken;
507
507
  draft = {
508
508
  artifactId: detail.artifactId,
509
509
  region: Object.freeze({ ...detail.region }),
@@ -637,7 +637,7 @@
637
637
  return;
638
638
  }
639
639
  reviewController.setIdentity?.({ name: author });
640
- const existingIds = new Set(review()?.pins?.map(({ id: id7 }) => id7) ?? []);
640
+ const existingIds = new Set(review()?.pins?.map(({ id }) => id) ?? []);
641
641
  const action = {
642
642
  type: "add-pin",
643
643
  pin: {
@@ -652,7 +652,7 @@
652
652
  };
653
653
  const next = reviewController.dispatch(action);
654
654
  const nextReview = next?.review ?? next;
655
- const created = nextReview?.pins?.find?.(({ id: id7 }) => !existingIds.has(id7));
655
+ const created = nextReview?.pins?.find?.(({ id }) => !existingIds.has(id));
656
656
  closeComposer();
657
657
  renderPins();
658
658
  announce(document2, `${selectedIntent} comment added.`);
@@ -687,7 +687,7 @@
687
687
  );
688
688
  if (fields.size) {
689
689
  let restoreFields = function() {
690
- if (token3 !== draftToken || !composer.isConnected) {
690
+ if (token !== draftToken || !composer.isConnected) {
691
691
  finish();
692
692
  return;
693
693
  }
@@ -711,7 +711,7 @@
711
711
  draftFieldCleanup = finish;
712
712
  restoreFields();
713
713
  }
714
- } else void resolveAnchor(token3, draft);
714
+ } else void resolveAnchor(token, draft);
715
715
  }
716
716
  function snapshotDraft() {
717
717
  const composer = document2.querySelector("[data-planr-annotation-composer]");
@@ -736,17 +736,17 @@
736
736
  selectionDirection: comment.selectionDirection
737
737
  });
738
738
  }
739
- function restoreDraft(snapshot2) {
740
- if (!snapshot2 || snapshot2.reviewOf !== (reviewController.getReviewOf?.() ?? review()?.reviewOf ?? null))
739
+ function restoreDraft(snapshot) {
740
+ if (!snapshot || snapshot.reviewOf !== (reviewController.getReviewOf?.() ?? review()?.reviewOf ?? null))
741
741
  return false;
742
- const artifact = stageController.getState().artifacts.find((entry) => entry.id === snapshot2.artifactId);
743
- if (!artifact || artifact.viewport.width !== snapshot2.viewport?.width || artifact.viewport.height !== snapshot2.viewport?.height || !["x", "y", "w", "h"].every(
744
- (key) => Number.isFinite(snapshot2.region?.[key]) && snapshot2.region[key] >= 0 && snapshot2.region[key] <= 1
742
+ const artifact = stageController.getState().artifacts.find((entry) => entry.id === snapshot.artifactId);
743
+ if (!artifact || artifact.viewport.width !== snapshot.viewport?.width || artifact.viewport.height !== snapshot.viewport?.height || !["x", "y", "w", "h"].every(
744
+ (key) => Number.isFinite(snapshot.region?.[key]) && snapshot.region[key] >= 0 && snapshot.region[key] <= 1
745
745
  ) || !["x", "y", "w", "h"].every(
746
- (key) => Number.isFinite(snapshot2.displayRegion?.[key]) && snapshot2.displayRegion[key] >= 0 && snapshot2.displayRegion[key] <= 1
747
- ) || typeof snapshot2.comment !== "string" || snapshot2.comment.length > ARTIFACT_ANNOTATION_LIMITS.maxCommentLength || typeof snapshot2.identity !== "string" || snapshot2.identity.length > ARTIFACT_ANNOTATION_LIMITS.maxIdentityLength || !INTENTS.includes(snapshot2.intent) || snapshot2.anchor && (typeof snapshot2.anchor.planrId !== "string" || snapshot2.anchor.planrId.length > 512))
746
+ (key) => Number.isFinite(snapshot.displayRegion?.[key]) && snapshot.displayRegion[key] >= 0 && snapshot.displayRegion[key] <= 1
747
+ ) || typeof snapshot.comment !== "string" || snapshot.comment.length > ARTIFACT_ANNOTATION_LIMITS.maxCommentLength || typeof snapshot.identity !== "string" || snapshot.identity.length > ARTIFACT_ANNOTATION_LIMITS.maxIdentityLength || !INTENTS.includes(snapshot.intent) || snapshot.anchor && (typeof snapshot.anchor.planrId !== "string" || snapshot.anchor.planrId.length > 512))
748
748
  return false;
749
- openComposer(snapshot2, { restoredDraft: snapshot2 });
749
+ openComposer(snapshot, { restoredDraft: snapshot });
750
750
  return Boolean(draft);
751
751
  }
752
752
  listen(window, "resize", positionComposer);
@@ -799,11 +799,16 @@
799
799
  closeComposer();
800
800
  for (const remove of cleanup.splice(0)) remove();
801
801
  for (const records of pinRecords.values())
802
- for (const record2 of records.values()) removePin(record2);
802
+ for (const record of records.values()) removePin(record);
803
803
  pinRecords.clear();
804
804
  anchorRequests.clear();
805
805
  }
806
806
  });
807
807
  window.__openPlanrArtifactAnnotations = controller;
808
808
  return controller;
809
+ }
810
+
811
+ // local-stage-stub:./durable-paste-share.mjs
812
+ function createDurablePasteShare() {
813
+ return null;
809
814
  }