openplanr 2.2641.1 → 3.0.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 (315) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +1 -1
  3. package/dist/cli/commands/artifact.js +1 -1
  4. package/dist/cli/commands/artifact.js.map +1 -1
  5. package/dist/cli/commands/doctor.d.ts.map +1 -1
  6. package/dist/cli/commands/doctor.js +19 -4
  7. package/dist/cli/commands/doctor.js.map +1 -1
  8. package/dist/cli/commands/github.d.ts.map +1 -1
  9. package/dist/cli/commands/github.js +7 -10
  10. package/dist/cli/commands/github.js.map +1 -1
  11. package/dist/cli/commands/linear.js +1 -1
  12. package/dist/cli/commands/linear.js.map +1 -1
  13. package/dist/cli/commands/report.d.ts.map +1 -1
  14. package/dist/cli/commands/report.js +28 -32
  15. package/dist/cli/commands/report.js.map +1 -1
  16. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  17. package/dist/cli/commands/upgrade.js +12 -10
  18. package/dist/cli/commands/upgrade.js.map +1 -1
  19. package/dist/cli/error-boundary.d.ts.map +1 -1
  20. package/dist/cli/error-boundary.js +2 -1
  21. package/dist/cli/error-boundary.js.map +1 -1
  22. package/dist/dashboard/.vite/manifest.json +1 -1
  23. package/dist/dashboard/assets/{index-DGyC7RDz.js → index-Csby7_ur.js} +2 -2
  24. package/dist/dashboard/assets/{index-DGyC7RDz.js.map → index-Csby7_ur.js.map} +1 -1
  25. package/dist/dashboard/dashboard-manifest.json +8 -8
  26. package/dist/dashboard/index.html +1 -1
  27. package/dist/models/schema.d.ts +0 -4
  28. package/dist/models/schema.d.ts.map +1 -1
  29. package/dist/models/schema.js +0 -2
  30. package/dist/models/schema.js.map +1 -1
  31. package/dist/models/types.d.ts +1 -4
  32. package/dist/models/types.d.ts.map +1 -1
  33. package/dist/services/credentials-service.js +1 -1
  34. package/dist/services/credentials-service.js.map +1 -1
  35. package/dist/services/distribution-service.d.ts +1 -4
  36. package/dist/services/distribution-service.d.ts.map +1 -1
  37. package/dist/services/distribution-service.js +1 -60
  38. package/dist/services/distribution-service.js.map +1 -1
  39. package/dist/services/github-service.d.ts +7 -4
  40. package/dist/services/github-service.d.ts.map +1 -1
  41. package/dist/services/github-service.js +16 -15
  42. package/dist/services/github-service.js.map +1 -1
  43. package/dist/services/linear-push-service.d.ts +3 -4
  44. package/dist/services/linear-push-service.d.ts.map +1 -1
  45. package/dist/services/linear-push-service.js +5 -6
  46. package/dist/services/linear-push-service.js.map +1 -1
  47. package/dist/services/runtime-change-summary.d.ts +4 -0
  48. package/dist/services/runtime-change-summary.d.ts.map +1 -1
  49. package/dist/services/runtime-change-summary.js +7 -0
  50. package/dist/services/runtime-change-summary.js.map +1 -1
  51. package/dist/services/runtime-manager/doctor.js +1 -1
  52. package/dist/services/runtime-manager/doctor.js.map +1 -1
  53. package/dist/services/runtime-manager/runtime-package.d.ts +15 -0
  54. package/dist/services/runtime-manager/runtime-package.d.ts.map +1 -1
  55. package/dist/services/runtime-manager/runtime-package.js +50 -10
  56. package/dist/services/runtime-manager/runtime-package.js.map +1 -1
  57. package/dist/services/runtime-manager-service.d.ts +11 -0
  58. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  59. package/dist/services/runtime-manager-service.js +88 -16
  60. package/dist/services/runtime-manager-service.js.map +1 -1
  61. package/dist/services/spec-service.d.ts.map +1 -1
  62. package/dist/services/spec-service.js +34 -69
  63. package/dist/services/spec-service.js.map +1 -1
  64. package/dist/services/upgrade-report.d.ts +2 -2
  65. package/dist/services/upgrade-report.d.ts.map +1 -1
  66. package/dist/services/upgrade-report.js +11 -2
  67. package/dist/services/upgrade-report.js.map +1 -1
  68. package/dist/services/upgrade-service.d.ts +8 -2
  69. package/dist/services/upgrade-service.d.ts.map +1 -1
  70. package/dist/services/upgrade-service.js +44 -12
  71. package/dist/services/upgrade-service.js.map +1 -1
  72. package/dist/templates/rules/shared/capability-map.md.hbs +1 -1
  73. package/docs/CLI.md +14 -15
  74. package/docs/TROUBLESHOOTING.md +9 -6
  75. package/install.ps1 +3 -3
  76. package/install.sh +3 -3
  77. package/lib/host-packages/adapter-registry.json +5 -5
  78. package/lib/host-packages/capability-map.json +8 -8
  79. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  80. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +2 -2
  81. package/lib/host-packages/claude/openplanr/.openplanr-content.json +91 -75
  82. package/lib/host-packages/claude/openplanr/README.md +8 -12
  83. package/lib/host-packages/claude/openplanr/agents/planr-backend.md +49 -55
  84. package/lib/host-packages/claude/openplanr/agents/planr-database.md +56 -92
  85. package/lib/host-packages/claude/openplanr/agents/planr-designer.md +35 -51
  86. package/lib/host-packages/claude/openplanr/agents/planr-devops.md +37 -51
  87. package/lib/host-packages/claude/openplanr/agents/planr-documentation.md +29 -52
  88. package/lib/host-packages/claude/openplanr/agents/planr-entity-scaffold.md +24 -23
  89. package/lib/host-packages/claude/openplanr/agents/planr-frontend.md +46 -58
  90. package/lib/host-packages/claude/openplanr/agents/planr-qa.md +4 -2
  91. package/lib/host-packages/claude/openplanr/agents/planr-specification.md +54 -51
  92. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/backend.md +21 -65
  93. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/designer.md +5 -6
  94. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/devops.md +2 -3
  95. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/doc-gen.md +3 -4
  96. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/frontend.md +19 -64
  97. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/specification.md +10 -12
  98. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/backend.md +19 -62
  99. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/designer.md +3 -4
  100. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/devops.md +2 -3
  101. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/doc-gen.md +2 -3
  102. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/frontend.md +16 -59
  103. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/specification.md +9 -11
  104. package/lib/host-packages/claude/openplanr/references/pipeline/stacks/database/mongodb.md +4 -4
  105. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-review.mjs +24 -9
  106. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +3 -3
  107. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  108. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  109. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
  110. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +1 -1
  111. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
  112. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
  113. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +105 -27
  114. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
  115. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  116. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design.mjs +1 -1
  117. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  118. package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +2 -2
  119. package/lib/host-packages/claude/openplanr/skills/artifact/references/diagram-sharing.md +1 -1
  120. package/lib/host-packages/claude/openplanr/skills/ceo-review/SKILL.md +0 -1
  121. package/lib/host-packages/claude/openplanr/skills/ceo-review/references/operate-advisor-contract.md +25 -4
  122. package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +6 -2
  123. package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +6 -2
  124. package/lib/host-packages/claude/openplanr/skills/cmo-review/SKILL.md +0 -1
  125. package/lib/host-packages/claude/openplanr/skills/cmo-review/references/operate-advisor-contract.md +25 -4
  126. package/lib/host-packages/claude/openplanr/skills/coo-review/SKILL.md +0 -1
  127. package/lib/host-packages/claude/openplanr/skills/coo-review/references/operate-advisor-contract.md +25 -4
  128. package/lib/host-packages/claude/openplanr/skills/cpo-review/SKILL.md +0 -1
  129. package/lib/host-packages/claude/openplanr/skills/cpo-review/references/operate-advisor-contract.md +25 -4
  130. package/lib/host-packages/claude/openplanr/skills/cto-review/SKILL.md +0 -1
  131. package/lib/host-packages/claude/openplanr/skills/cto-review/references/operate-advisor-contract.md +25 -4
  132. package/lib/host-packages/claude/openplanr/skills/delegate/SKILL.md +8 -1
  133. package/lib/host-packages/claude/openplanr/skills/delegate/references/capsule-contract.md +17 -2
  134. package/lib/host-packages/claude/openplanr/skills/delegate/references/operator-guide.md +7 -5
  135. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/claude.mjs +11 -4
  136. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/adapters/native.mjs +1 -1
  137. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/backend-diagnostics.mjs +14 -48
  138. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/context.mjs +84 -22
  139. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/credentials.mjs +167 -0
  140. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/presentation.mjs +3 -2
  141. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-contract.mjs +5 -7
  142. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-preparation.mjs +5 -3
  143. package/lib/host-packages/claude/openplanr/skills/delegate/scripts/run-record.mjs +2 -3
  144. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +1 -1
  145. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +1 -1
  146. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +1 -1
  147. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-sharing.md +1 -1
  148. package/lib/host-packages/claude/openplanr/skills/doctor/SKILL.md +4 -1
  149. package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +8 -0
  150. package/lib/host-packages/claude/openplanr/skills/operate/SKILL.md +5 -3
  151. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +10 -4
  152. package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +5 -4
  153. package/lib/host-packages/claude/openplanr/skills/sprint/references/tracker-connections.md +70 -0
  154. package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +4 -3
  155. package/lib/host-packages/claude/openplanr/skills/status/references/tracker-connections.md +70 -0
  156. package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +11 -20
  157. package/lib/host-packages/claude/openplanr/skills/sync/references/tracker-connections.md +70 -0
  158. package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +2 -2
  159. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +63 -47
  160. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  161. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/diagram-sharing.md +1 -1
  162. package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +2 -2
  163. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/operate-advisor-contract.md +25 -4
  164. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review.mdc +6 -1
  165. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review.mdc +6 -1
  166. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/operate-advisor-contract.md +25 -4
  167. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/operate-advisor-contract.md +25 -4
  168. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/operate-advisor-contract.md +25 -4
  169. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/operate-advisor-contract.md +25 -4
  170. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/capsule-contract.md +17 -2
  171. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/references/operator-guide.md +7 -5
  172. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/claude.mjs +11 -4
  173. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/adapters/native.mjs +1 -1
  174. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/backend-diagnostics.mjs +14 -48
  175. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/context.mjs +84 -22
  176. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/credentials.mjs +167 -0
  177. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/presentation.mjs +3 -2
  178. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-contract.mjs +5 -7
  179. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-preparation.mjs +5 -3
  180. package/lib/host-packages/cursor/openplanr/rules/planr-delegate/scripts/run-record.mjs +2 -3
  181. package/lib/host-packages/cursor/openplanr/rules/planr-delegate.mdc +8 -1
  182. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +1 -1
  183. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +1 -1
  184. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +1 -1
  185. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-sharing.md +1 -1
  186. package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +8 -0
  187. package/lib/host-packages/cursor/openplanr/rules/planr-doctor.mdc +4 -1
  188. package/lib/host-packages/cursor/openplanr/rules/planr-operate.mdc +5 -3
  189. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +10 -4
  190. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/tracker-connections.md +70 -0
  191. package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +5 -4
  192. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/tracker-connections.md +70 -0
  193. package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +4 -3
  194. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/tracker-connections.md +70 -0
  195. package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +2 -2
  196. package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +11 -20
  197. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-review.mjs +24 -9
  198. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +3 -3
  199. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  200. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  201. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
  202. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +1 -1
  203. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
  204. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
  205. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +105 -27
  206. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
  207. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  208. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design.mjs +1 -1
  209. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  210. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  211. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  212. package/lib/host-packages/openai/openplanr/.openplanr-content.json +72 -56
  213. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-review.mjs +24 -9
  214. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +3 -3
  215. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  216. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +4 -4
  217. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/enhancements.css +14 -4
  218. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/share.js +1 -1
  219. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.css +14 -5
  220. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/12-design-review-experience.js +28 -0
  221. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/16-studio-shell.js +105 -27
  222. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +6 -6
  223. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +2 -2
  224. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design.mjs +1 -1
  225. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +2 -2
  226. package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +2 -2
  227. package/lib/host-packages/openai/openplanr/skills/artifact/references/diagram-sharing.md +1 -1
  228. package/lib/host-packages/openai/openplanr/skills/ceo-review/SKILL.md +0 -1
  229. package/lib/host-packages/openai/openplanr/skills/ceo-review/references/operate-advisor-contract.md +25 -4
  230. package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +6 -2
  231. package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +6 -2
  232. package/lib/host-packages/openai/openplanr/skills/cmo-review/SKILL.md +0 -1
  233. package/lib/host-packages/openai/openplanr/skills/cmo-review/references/operate-advisor-contract.md +25 -4
  234. package/lib/host-packages/openai/openplanr/skills/coo-review/SKILL.md +0 -1
  235. package/lib/host-packages/openai/openplanr/skills/coo-review/references/operate-advisor-contract.md +25 -4
  236. package/lib/host-packages/openai/openplanr/skills/cpo-review/SKILL.md +0 -1
  237. package/lib/host-packages/openai/openplanr/skills/cpo-review/references/operate-advisor-contract.md +25 -4
  238. package/lib/host-packages/openai/openplanr/skills/cto-review/SKILL.md +0 -1
  239. package/lib/host-packages/openai/openplanr/skills/cto-review/references/operate-advisor-contract.md +25 -4
  240. package/lib/host-packages/openai/openplanr/skills/delegate/SKILL.md +8 -1
  241. package/lib/host-packages/openai/openplanr/skills/delegate/openplanr.skill.json +11 -0
  242. package/lib/host-packages/openai/openplanr/skills/delegate/references/capsule-contract.md +17 -2
  243. package/lib/host-packages/openai/openplanr/skills/delegate/references/operator-guide.md +7 -5
  244. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/claude.mjs +11 -4
  245. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/adapters/native.mjs +1 -1
  246. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/backend-diagnostics.mjs +14 -48
  247. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/context.mjs +84 -22
  248. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/credentials.mjs +167 -0
  249. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/presentation.mjs +3 -2
  250. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-contract.mjs +5 -7
  251. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-preparation.mjs +5 -3
  252. package/lib/host-packages/openai/openplanr/skills/delegate/scripts/run-record.mjs +2 -3
  253. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +1 -1
  254. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +1 -1
  255. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +1 -1
  256. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-sharing.md +1 -1
  257. package/lib/host-packages/openai/openplanr/skills/doctor/SKILL.md +4 -1
  258. package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +8 -0
  259. package/lib/host-packages/openai/openplanr/skills/operate/SKILL.md +5 -3
  260. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +10 -4
  261. package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +5 -4
  262. package/lib/host-packages/openai/openplanr/skills/sprint/openplanr.skill.json +11 -0
  263. package/lib/host-packages/openai/openplanr/skills/sprint/references/tracker-connections.md +70 -0
  264. package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +4 -3
  265. package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +11 -0
  266. package/lib/host-packages/openai/openplanr/skills/status/references/tracker-connections.md +70 -0
  267. package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +11 -20
  268. package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
  269. package/lib/host-packages/openai/openplanr/skills/sync/references/tracker-connections.md +70 -0
  270. package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +2 -2
  271. package/lib/integrations.mjs +2 -2
  272. package/lib/node-runtime.d.mts +1 -1
  273. package/lib/node-runtime.mjs +2 -7
  274. package/package.json +4 -5
  275. package/bin/planr.js +0 -7
  276. package/dist/services/connectors/adapters/business-metrics.d.ts +0 -5
  277. package/dist/services/connectors/adapters/business-metrics.d.ts.map +0 -1
  278. package/dist/services/connectors/adapters/business-metrics.js +0 -41
  279. package/dist/services/connectors/adapters/business-metrics.js.map +0 -1
  280. package/dist/services/connectors/adapters/deployment-health.d.ts +0 -18
  281. package/dist/services/connectors/adapters/deployment-health.d.ts.map +0 -1
  282. package/dist/services/connectors/adapters/deployment-health.js +0 -67
  283. package/dist/services/connectors/adapters/deployment-health.js.map +0 -1
  284. package/dist/services/connectors/adapters/github.d.ts +0 -5
  285. package/dist/services/connectors/adapters/github.d.ts.map +0 -1
  286. package/dist/services/connectors/adapters/github.js +0 -31
  287. package/dist/services/connectors/adapters/github.js.map +0 -1
  288. package/dist/services/connectors/adapters/linear-jira.d.ts +0 -5
  289. package/dist/services/connectors/adapters/linear-jira.d.ts.map +0 -1
  290. package/dist/services/connectors/adapters/linear-jira.js +0 -26
  291. package/dist/services/connectors/adapters/linear-jira.js.map +0 -1
  292. package/dist/services/connectors/adapters/posthog.d.ts +0 -5
  293. package/dist/services/connectors/adapters/posthog.d.ts.map +0 -1
  294. package/dist/services/connectors/adapters/posthog.js +0 -31
  295. package/dist/services/connectors/adapters/posthog.js.map +0 -1
  296. package/dist/services/connectors/adapters/sentry.d.ts +0 -5
  297. package/dist/services/connectors/adapters/sentry.d.ts.map +0 -1
  298. package/dist/services/connectors/adapters/sentry.js +0 -31
  299. package/dist/services/connectors/adapters/sentry.js.map +0 -1
  300. package/dist/services/connectors/checkpoint-custody.d.ts +0 -45
  301. package/dist/services/connectors/checkpoint-custody.d.ts.map +0 -1
  302. package/dist/services/connectors/checkpoint-custody.js +0 -499
  303. package/dist/services/connectors/checkpoint-custody.js.map +0 -1
  304. package/dist/services/connectors/connector-registry.d.ts +0 -144
  305. package/dist/services/connectors/connector-registry.d.ts.map +0 -1
  306. package/dist/services/connectors/connector-registry.js +0 -423
  307. package/dist/services/connectors/connector-registry.js.map +0 -1
  308. package/dist/services/connectors/connector-runtime.d.ts +0 -208
  309. package/dist/services/connectors/connector-runtime.d.ts.map +0 -1
  310. package/dist/services/connectors/connector-runtime.js +0 -1305
  311. package/dist/services/connectors/connector-runtime.js.map +0 -1
  312. package/dist/services/connectors/credential-custody.d.ts +0 -96
  313. package/dist/services/connectors/credential-custody.d.ts.map +0 -1
  314. package/dist/services/connectors/credential-custody.js +0 -390
  315. package/dist/services/connectors/credential-custody.js.map +0 -1
@@ -44,6 +44,17 @@
44
44
  ],
45
45
  "executable": false
46
46
  },
47
+ {
48
+ "path": "references/tracker-connections.md",
49
+ "kind": "reference",
50
+ "hosts": [
51
+ "claude-code",
52
+ "codex",
53
+ "chatgpt",
54
+ "cursor"
55
+ ],
56
+ "executable": false
57
+ },
47
58
  {
48
59
  "path": "schemas/refinement.schema.json",
49
60
  "kind": "schema",
@@ -0,0 +1,70 @@
1
+ # GitHub and Linear connections
2
+
3
+ These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
+ connection the host already has; the planning files stay the source of truth.
5
+
6
+ ## Use the host's connection
7
+
8
+ - **Linear:** the host's Linear connection, whose tools read, create and update issues.
9
+ - **GitHub:** the host's GitHub connection, or the GitHub CLI when
10
+ `gh auth status --hostname github.com` succeeds.
11
+
12
+ Never ask the user for a token, read one from the environment or a file, or put one in a
13
+ command, URL or file.
14
+
15
+ ## When a connection is missing
16
+
17
+ Finish the local work first. Then report the remote step as not run and give the one
18
+ line for the current host:
19
+
20
+ | Host | Linear | GitHub |
21
+ | --- | --- | --- |
22
+ | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
+ | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
+ | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
+
26
+ Ask the user to try again once connected; never retry the remote step on your own.
27
+
28
+ ## Status mapping
29
+
30
+ | Local status | Linear workflow state | GitHub issue |
31
+ | --- | --- | --- |
32
+ | `planning`, `pending` | Unstarted (for example Todo) | open |
33
+ | `in-progress` | Started (for example In Progress) | open |
34
+ | `done` | Completed (for example Done) | closed |
35
+ | Backlog `open` | Backlog, else Unstarted | open |
36
+ | Backlog `closed` | Completed | closed |
37
+ | Backlog `promoted` | Leave as it is | Leave as it is |
38
+
39
+ When reading state back, write only a status the item's type allows. A backlog item takes
40
+ `open` or `closed` and keeps `promoted`.
41
+
42
+ - Linear Completed or Canceled sets `done`, or `closed` for a backlog item. Started sets
43
+ `in-progress`, and Triage, Backlog or Unstarted sets `planning` for features and stories
44
+ and `pending` for quick tasks; a backlog item takes `open` from any of these. Epics and
45
+ task files keep their status.
46
+ - A closed GitHub issue sets `done`, or `closed` for a backlog item. An open issue sets
47
+ `in-progress` for a `done` item and `open` for a `closed` backlog item; other statuses
48
+ stay as they are.
49
+
50
+ ## Links
51
+
52
+ A linked item records its tracker identity in frontmatter. Update a linked item through
53
+ that identity instead of creating another, and record the identity of everything you
54
+ create.
55
+
56
+ - **GitHub:** each item is one issue, recorded as `githubIssue`.
57
+ - **Linear:** use the shapes the OpenPlanr CLI uses, so its later pushes reuse what you
58
+ create:
59
+ - An epic is a Linear project (`linearProjectId`, `linearProjectIdentifier`,
60
+ `linearProjectUrl`). When its `linearMappingStrategy` is `milestone-of` or `label-on`,
61
+ it is a milestone in an existing project (`linearMilestoneId`) or a team label
62
+ (`linearLabelId`) instead, and every issue under it carries that milestone
63
+ (`linearProjectMilestoneId`) or label (`linearLabelIds`).
64
+ - A feature, quick task or backlog item is one issue (`linearIssueId`,
65
+ `linearIssueIdentifier`, `linearIssueUrl`). A story is a sub-issue of its feature's
66
+ issue (`linearParentIssueId`).
67
+ - All task files of one feature share one task-list issue: a sub-issue of the feature's
68
+ issue whose checklist merges every task file, recorded in each task file. Its state is
69
+ Completed when every task file is `done`, Unstarted when every one is `pending`, and
70
+ Started otherwise.
@@ -11,9 +11,10 @@ planning artifacts, task statuses, dependency graph, current branch, and relevan
11
11
  runtime markers directly. Use the optional deterministic `openplanr status --json`
12
12
  utility when available, but do not require it or a semantic subprocess.
13
13
 
14
- Add GitHub or Linear lookups only when the user requests live remote state. Keep
15
- local results useful when credentials or connectors are unavailable. Report
16
- counts, ready and blocked work, dependency problems, and the most useful next
14
+ Add GitHub or Linear lookups only when the user requests live remote state, through
15
+ the host's connections as described in [tracker connections](references/tracker-connections.md).
16
+ Keep local results useful when a connection is unavailable, and name the one to add.
17
+ Report counts, ready and blocked work, dependency problems, and the most useful next
17
18
  action. Do not repair artifacts, start Plan or Ship, or change lifecycle state.
18
19
 
19
20
  When the OpenPlanr dashboard is running (`planr-dashboard`), the same delivery
@@ -21,6 +21,17 @@
21
21
  "chatgpt"
22
22
  ],
23
23
  "executable": false
24
+ },
25
+ {
26
+ "path": "references/tracker-connections.md",
27
+ "kind": "reference",
28
+ "hosts": [
29
+ "claude-code",
30
+ "codex",
31
+ "chatgpt",
32
+ "cursor"
33
+ ],
34
+ "executable": false
24
35
  }
25
36
  ]
26
37
  }
@@ -0,0 +1,70 @@
1
+ # GitHub and Linear connections
2
+
3
+ These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
+ connection the host already has; the planning files stay the source of truth.
5
+
6
+ ## Use the host's connection
7
+
8
+ - **Linear:** the host's Linear connection, whose tools read, create and update issues.
9
+ - **GitHub:** the host's GitHub connection, or the GitHub CLI when
10
+ `gh auth status --hostname github.com` succeeds.
11
+
12
+ Never ask the user for a token, read one from the environment or a file, or put one in a
13
+ command, URL or file.
14
+
15
+ ## When a connection is missing
16
+
17
+ Finish the local work first. Then report the remote step as not run and give the one
18
+ line for the current host:
19
+
20
+ | Host | Linear | GitHub |
21
+ | --- | --- | --- |
22
+ | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
+ | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
+ | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
+
26
+ Ask the user to try again once connected; never retry the remote step on your own.
27
+
28
+ ## Status mapping
29
+
30
+ | Local status | Linear workflow state | GitHub issue |
31
+ | --- | --- | --- |
32
+ | `planning`, `pending` | Unstarted (for example Todo) | open |
33
+ | `in-progress` | Started (for example In Progress) | open |
34
+ | `done` | Completed (for example Done) | closed |
35
+ | Backlog `open` | Backlog, else Unstarted | open |
36
+ | Backlog `closed` | Completed | closed |
37
+ | Backlog `promoted` | Leave as it is | Leave as it is |
38
+
39
+ When reading state back, write only a status the item's type allows. A backlog item takes
40
+ `open` or `closed` and keeps `promoted`.
41
+
42
+ - Linear Completed or Canceled sets `done`, or `closed` for a backlog item. Started sets
43
+ `in-progress`, and Triage, Backlog or Unstarted sets `planning` for features and stories
44
+ and `pending` for quick tasks; a backlog item takes `open` from any of these. Epics and
45
+ task files keep their status.
46
+ - A closed GitHub issue sets `done`, or `closed` for a backlog item. An open issue sets
47
+ `in-progress` for a `done` item and `open` for a `closed` backlog item; other statuses
48
+ stay as they are.
49
+
50
+ ## Links
51
+
52
+ A linked item records its tracker identity in frontmatter. Update a linked item through
53
+ that identity instead of creating another, and record the identity of everything you
54
+ create.
55
+
56
+ - **GitHub:** each item is one issue, recorded as `githubIssue`.
57
+ - **Linear:** use the shapes the OpenPlanr CLI uses, so its later pushes reuse what you
58
+ create:
59
+ - An epic is a Linear project (`linearProjectId`, `linearProjectIdentifier`,
60
+ `linearProjectUrl`). When its `linearMappingStrategy` is `milestone-of` or `label-on`,
61
+ it is a milestone in an existing project (`linearMilestoneId`) or a team label
62
+ (`linearLabelId`) instead, and every issue under it carries that milestone
63
+ (`linearProjectMilestoneId`) or label (`linearLabelIds`).
64
+ - A feature, quick task or backlog item is one issue (`linearIssueId`,
65
+ `linearIssueIdentifier`, `linearIssueUrl`). A story is a sub-issue of its feature's
66
+ issue (`linearParentIssueId`).
67
+ - All task files of one feature share one task-list issue: a sub-issue of the feature's
68
+ issue whose checklist merges every task file, recorded in each task file. Its state is
69
+ Completed when every task file is `done`, Unstarted when every one is `pending`, and
70
+ Started otherwise.
@@ -7,31 +7,22 @@ license: MIT
7
7
  # OpenPlanr Sync
8
8
 
9
9
  Reconcile local planning artifacts and, when requested, GitHub or Linear state.
10
- Reason about conflicts in this active session; deterministic mapping and GitHub
11
- transport may use a host connector or the packaged [sync helper](scripts/sync.mjs).
12
- Local and GitHub work never require the OpenPlanr CLI.
10
+ Reason about conflicts in this active session. Local and GitHub work never require
11
+ the OpenPlanr CLI.
13
12
 
14
- Resolution order:
13
+ Remote steps run through the host's own connections, as described in
14
+ [tracker connections](references/tracker-connections.md), which also holds the status
15
+ mapping and what to tell the user when a connection is missing:
15
16
 
16
- 1. use a host-native GitHub or Linear connector when available;
17
- 2. otherwise, for GitHub, use the packaged deterministic helper;
18
- 3. otherwise, for Linear, use the `openplanr linear` terminal utility when the user has
19
- installed it; `openplanr github` and `openplanr sync` are optional equivalents for the rest.
20
-
21
- Linear through the CLI:
22
-
23
- - the user runs `openplanr linear init` in a terminal once; it prompts for a personal
24
- access token, which the CLI stores;
25
- - audit with `openplanr linear sync --dry-run`, which reads Linear without writing;
26
- - before a real `openplanr linear sync`, ask how conflicts should resolve and pass
27
- `--on-conflict local` or `--on-conflict linear`; without a prompt it favors Linear;
28
- - `openplanr linear push <artifact-id>` creates or updates Linear issues; preview with
29
- `--dry-run`. Quick tasks and backlog items need `linear.standaloneProjectId` in the
30
- project config when no terminal prompt is available.
17
+ - GitHub: the host's GitHub connection, or, when the GitHub CLI is signed in, the
18
+ packaged [sync helper](scripts/sync.mjs), which creates and edits issues through `gh`;
19
+ close or reopen an issue with `gh issue close` or `gh issue reopen`. `openplanr github`
20
+ is an optional equivalent; `openplanr sync` only repairs local cross-references.
21
+ - Linear: the host's Linear connection.
31
22
 
32
23
  Audit is read-only by default. Apply local changes only when the request asks for
33
24
  reconciliation, and push remote changes only when the request asks for external
34
- synchronization. If credentials are unavailable, complete local reconciliation
25
+ synchronization. If a connection is unavailable, complete local reconciliation
35
26
  and report only the external step that could not run.
36
27
 
37
28
  ## Return
@@ -13,6 +13,17 @@
13
13
  ],
14
14
  "execution": "host-agent",
15
15
  "resources": [
16
+ {
17
+ "path": "references/tracker-connections.md",
18
+ "kind": "reference",
19
+ "hosts": [
20
+ "claude-code",
21
+ "codex",
22
+ "chatgpt",
23
+ "cursor"
24
+ ],
25
+ "executable": false
26
+ },
16
27
  {
17
28
  "path": "scripts/sync.mjs",
18
29
  "kind": "script",
@@ -0,0 +1,70 @@
1
+ # GitHub and Linear connections
2
+
3
+ These skills store and read no GitHub or Linear credentials. Remote steps run through a
4
+ connection the host already has; the planning files stay the source of truth.
5
+
6
+ ## Use the host's connection
7
+
8
+ - **Linear:** the host's Linear connection, whose tools read, create and update issues.
9
+ - **GitHub:** the host's GitHub connection, or the GitHub CLI when
10
+ `gh auth status --hostname github.com` succeeds.
11
+
12
+ Never ask the user for a token, read one from the environment or a file, or put one in a
13
+ command, URL or file.
14
+
15
+ ## When a connection is missing
16
+
17
+ Finish the local work first. Then report the remote step as not run and give the one
18
+ line for the current host:
19
+
20
+ | Host | Linear | GitHub |
21
+ | --- | --- | --- |
22
+ | Claude Code | Run `/plugin install linear@claude-plugins-official`, then sign in to Linear from `/mcp`. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
23
+ | Codex | Run `codex mcp add linear --url https://mcp.linear.app/mcp`, then `codex mcp login linear`. | Install the GitHub plugin from `/plugins`, or run `gh auth login`. |
24
+ | Cursor | Add Linear from the Cursor Marketplace and sign in to Linear. | Install the GitHub CLI (cli.github.com) and run `gh auth login`. |
25
+
26
+ Ask the user to try again once connected; never retry the remote step on your own.
27
+
28
+ ## Status mapping
29
+
30
+ | Local status | Linear workflow state | GitHub issue |
31
+ | --- | --- | --- |
32
+ | `planning`, `pending` | Unstarted (for example Todo) | open |
33
+ | `in-progress` | Started (for example In Progress) | open |
34
+ | `done` | Completed (for example Done) | closed |
35
+ | Backlog `open` | Backlog, else Unstarted | open |
36
+ | Backlog `closed` | Completed | closed |
37
+ | Backlog `promoted` | Leave as it is | Leave as it is |
38
+
39
+ When reading state back, write only a status the item's type allows. A backlog item takes
40
+ `open` or `closed` and keeps `promoted`.
41
+
42
+ - Linear Completed or Canceled sets `done`, or `closed` for a backlog item. Started sets
43
+ `in-progress`, and Triage, Backlog or Unstarted sets `planning` for features and stories
44
+ and `pending` for quick tasks; a backlog item takes `open` from any of these. Epics and
45
+ task files keep their status.
46
+ - A closed GitHub issue sets `done`, or `closed` for a backlog item. An open issue sets
47
+ `in-progress` for a `done` item and `open` for a `closed` backlog item; other statuses
48
+ stay as they are.
49
+
50
+ ## Links
51
+
52
+ A linked item records its tracker identity in frontmatter. Update a linked item through
53
+ that identity instead of creating another, and record the identity of everything you
54
+ create.
55
+
56
+ - **GitHub:** each item is one issue, recorded as `githubIssue`.
57
+ - **Linear:** use the shapes the OpenPlanr CLI uses, so its later pushes reuse what you
58
+ create:
59
+ - An epic is a Linear project (`linearProjectId`, `linearProjectIdentifier`,
60
+ `linearProjectUrl`). When its `linearMappingStrategy` is `milestone-of` or `label-on`,
61
+ it is a milestone in an existing project (`linearMilestoneId`) or a team label
62
+ (`linearLabelId`) instead, and every issue under it carries that milestone
63
+ (`linearProjectMilestoneId`) or label (`linearLabelIds`).
64
+ - A feature, quick task or backlog item is one issue (`linearIssueId`,
65
+ `linearIssueIdentifier`, `linearIssueUrl`). A story is a sub-issue of its feature's
66
+ issue (`linearParentIssueId`).
67
+ - All task files of one feature share one task-list issue: a sub-issue of the feature's
68
+ issue whose checklist merges every task file, recorded in each task file. Its state is
69
+ Completed when every task file is `done`, Unstarted when every one is `pending`, and
70
+ Started otherwise.
@@ -5,7 +5,7 @@ import { access, readFile } from 'node:fs/promises';
5
5
  import { resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { promisify } from 'node:util';
8
- import { CLI_COMMAND, PLANNING_FOLDER } from './names.mjs';
8
+ import { PLANNING_FOLDER } from './names.mjs';
9
9
 
10
10
  const execFileAsync = promisify(execFile);
11
11
  const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
@@ -147,7 +147,7 @@ export async function runPortableSync(
147
147
  } else if (args.provider === 'linear') {
148
148
  throw new IntegrationError(
149
149
  'E_SYNC_USAGE',
150
- `Linear synchronization runs through a Linear connector or the ${CLI_COMMAND} CLI (${CLI_COMMAND} linear push, ${CLI_COMMAND} linear sync).`,
150
+ "Linear synchronization runs through the host's Linear connection.",
151
151
  );
152
152
  } else {
153
153
  throw new IntegrationError(
@@ -5,7 +5,7 @@ import { access, readFile } from 'node:fs/promises';
5
5
  import { resolve } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
7
  import { promisify } from 'node:util';
8
- import { CLI_COMMAND, PLANNING_FOLDER } from './names.mjs';
8
+ import { PLANNING_FOLDER } from './names.mjs';
9
9
 
10
10
  const execFileAsync = promisify(execFile);
11
11
  const LINEAR_UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
@@ -147,7 +147,7 @@ export async function runPortableSync(
147
147
  } else if (args.provider === 'linear') {
148
148
  throw new IntegrationError(
149
149
  'E_SYNC_USAGE',
150
- `Linear synchronization runs through a Linear connector or the ${CLI_COMMAND} CLI (${CLI_COMMAND} linear push, ${CLI_COMMAND} linear sync).`,
150
+ "Linear synchronization runs through the host's Linear connection.",
151
151
  );
152
152
  } else {
153
153
  throw new IntegrationError(
@@ -1,4 +1,4 @@
1
- export declare const CLI_NODE_RANGE: '^20.19.0 || ^22.13.0 || >=23.5.0';
1
+ export declare const CLI_NODE_RANGE: '^22.13.0 || >=23.5.0';
2
2
  export declare const CLI_NODE_REMEDIATION: string;
3
3
  export declare function supportsCliNodeVersion(version: unknown): boolean;
4
4
  export declare function cliNodeVersionMessage(version: string): string;
@@ -1,7 +1,7 @@
1
1
  // @ts-check
2
2
  /** Installed CLI dependency support, checked before loading prompt/runtime modules. */
3
3
  /** @type {typeof import('./node-runtime.d.mts').CLI_NODE_RANGE} */
4
- export const CLI_NODE_RANGE = '^20.19.0 || ^22.13.0 || >=23.5.0';
4
+ export const CLI_NODE_RANGE = '^22.13.0 || >=23.5.0';
5
5
  /** @type {typeof import('./node-runtime.d.mts').CLI_NODE_REMEDIATION} */
6
6
  export const CLI_NODE_REMEDIATION =
7
7
  'Install a supported Node.js version, then rerun. OpenPlanr never changes Node.js for you.';
@@ -13,12 +13,7 @@ export function supportsCliNodeVersion(version) {
13
13
  return false;
14
14
  const [major, minor, patch] = version.replace(/^v/u, '').split('.').map(Number);
15
15
  if (![major, minor, patch].every(Number.isSafeInteger)) return false;
16
- return (
17
- (major === 20 && minor >= 19) ||
18
- (major === 22 && minor >= 13) ||
19
- (major === 23 && minor >= 5) ||
20
- major > 23
21
- );
16
+ return (major === 22 && minor >= 13) || (major === 23 && minor >= 5) || major > 23;
22
17
  }
23
18
 
24
19
  /** @type {typeof import('./node-runtime.d.mts').cliNodeVersionMessage} */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openplanr",
3
- "version": "2.2641.1",
3
+ "version": "3.0.0",
4
4
  "description": "Deterministic OpenPlanr utilities for planning storage, validation, rendering, setup, diagnostics, and GitHub/Linear synchronization",
5
5
  "type": "module",
6
6
  "main": "./dist/cli/index.js",
@@ -20,8 +20,7 @@
20
20
  },
21
21
  "bin": {
22
22
  "openplanr": "./bin/openplanr.js",
23
- "opr": "./bin/openplanr.js",
24
- "planr": "./bin/planr.js"
23
+ "opr": "./bin/openplanr.js"
25
24
  },
26
25
  "publishConfig": {
27
26
  "access": "public",
@@ -74,7 +73,7 @@
74
73
  "verify:release-artifact": "node scripts/verify-release-artifact.mjs"
75
74
  },
76
75
  "engines": {
77
- "node": "^20.19.0 || ^22.13.0 || >=23.5.0"
76
+ "node": "^22.13.0 || >=23.5.0"
78
77
  },
79
78
  "keywords": [
80
79
  "agile",
@@ -115,7 +114,7 @@
115
114
  "zod": "^4.3.6"
116
115
  },
117
116
  "optionalDependencies": {
118
- "planr-pipeline": "0.56.0"
117
+ "planr-pipeline": "0.58.0"
119
118
  },
120
119
  "devDependencies": {
121
120
  "@biomejs/biome": "^2.4.9",
package/bin/planr.js DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- import { CLI_COMMAND } from '../lib/names.mjs';
3
-
4
- process.stderr.write(
5
- `planr is now ${CLI_COMMAND} (short alias: opr). The planr command will be removed in the next release.\n`,
6
- );
7
- await import('./openplanr.js');
@@ -1,5 +0,0 @@
1
- export declare const businessMetricsLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- //# sourceMappingURL=business-metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"business-metrics.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/business-metrics.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oCAAoC;;;EAsC/C,CAAC"}
@@ -1,41 +0,0 @@
1
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
2
- export const businessMetricsLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
3
- adapterId: 'openplanr-business-metrics-live-evidence',
4
- adapterVersion: '1.0.0',
5
- provider: { id: 'business-metrics', version: '1.0.0' },
6
- category: 'business-metrics',
7
- operations: [
8
- {
9
- operation: 'csv',
10
- collection: 'csvRecords',
11
- sourceContracts: [
12
- 'capacity-throughput',
13
- 'channel-economics',
14
- 'demand-market',
15
- 'finance-metrics',
16
- ],
17
- },
18
- {
19
- operation: 'http',
20
- collection: 'httpRecords',
21
- sourceContracts: ['objective-metrics', 'operations-customer-health'],
22
- },
23
- {
24
- operation: 'json',
25
- collection: 'jsonRecords',
26
- sourceContracts: [
27
- 'capacity-throughput',
28
- 'channel-economics',
29
- 'demand-market',
30
- 'finance-metrics',
31
- ],
32
- },
33
- ],
34
- supportedDomains: ['business'],
35
- scopes: ['metrics:read'],
36
- allowedMethods: ['GET'],
37
- transport: 'https-or-loopback',
38
- healthMaxAgeSeconds: 300,
39
- unavailableBehavior: 'typed-absence',
40
- });
41
- //# sourceMappingURL=business-metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"business-metrics.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/business-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,oCAAoC,GAAG,wBAAwB,CAAC;IAC3E,SAAS,EAAE,0CAA0C;IACrD,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE;IACtD,QAAQ,EAAE,kBAAkB;IAC5B,UAAU,EAAE;QACV;YACE,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,YAAY;YACxB,eAAe,EAAE;gBACf,qBAAqB;gBACrB,mBAAmB;gBACnB,eAAe;gBACf,iBAAiB;aAClB;SACF;QACD;YACE,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;SACrE;QACD;YACE,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE;gBACf,qBAAqB;gBACrB,mBAAmB;gBACnB,eAAe;gBACf,iBAAiB;aAClB;SACF;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,cAAc,CAAC;IACxB,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC"}
@@ -1,18 +0,0 @@
1
- export declare const deploymentHealthLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- export type DeploymentCommandDescriptorV2 = Readonly<{
6
- kind: 'openplanr-deployment-command-descriptor';
7
- schemaVersion: '1.0.0';
8
- descriptorId: string;
9
- targetIdentityHash: `sha256:${string}`;
10
- operation: 'deploy' | 'rollback';
11
- commandDigest: `sha256:${string}`;
12
- effect: 'descriptor-only';
13
- previewOnly: true;
14
- descriptorHash: `sha256:${string}`;
15
- }>;
16
- /** Validates a non-authoritative command descriptor. It never executes or resolves command bytes. */
17
- export declare function assertDeploymentCommandDescriptorV2(value: unknown): DeploymentCommandDescriptorV2;
18
- //# sourceMappingURL=deployment-health.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deployment-health.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/deployment-health.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qCAAqC;;;EAuBhD,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACnD,IAAI,EAAE,yCAAyC,CAAC;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,UAAU,MAAM,EAAE,CAAC;IACvC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,aAAa,EAAE,UAAU,MAAM,EAAE,CAAC;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,UAAU,MAAM,EAAE,CAAC;CACpC,CAAC,CAAC;AAKH,qGAAqG;AACrG,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,6BAA6B,CAsCjG"}
@@ -1,67 +0,0 @@
1
- import { sha256CanonicalJson } from '../../canonical-json.js';
2
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
3
- export const deploymentHealthLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
4
- adapterId: 'openplanr-deployment-health-live-evidence',
5
- adapterVersion: '1.0.0',
6
- provider: { id: 'deployment-health', version: '1.0.0' },
7
- category: 'deployment',
8
- operations: [
9
- {
10
- operation: 'canary',
11
- collection: 'canary',
12
- sourceContracts: ['ci-test-evidence', 'operations-customer-health'],
13
- },
14
- {
15
- operation: 'health',
16
- collection: 'health',
17
- sourceContracts: ['ci-test-evidence', 'operations-customer-health'],
18
- },
19
- ],
20
- supportedDomains: ['business', 'software'],
21
- scopes: ['deployments:read', 'health:read'],
22
- allowedMethods: ['GET'],
23
- transport: 'https-or-loopback',
24
- healthMaxAgeSeconds: 120,
25
- unavailableBehavior: 'typed-absence',
26
- });
27
- const ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
28
- const HASH = /^sha256:[a-f0-9]{64}$/u;
29
- /** Validates a non-authoritative command descriptor. It never executes or resolves command bytes. */
30
- export function assertDeploymentCommandDescriptorV2(value) {
31
- if (value === null || typeof value !== 'object' || Array.isArray(value)) {
32
- throw new TypeError('Deployment descriptor must be one closed object.');
33
- }
34
- const input = value;
35
- const keys = Object.keys(input).sort();
36
- const expected = [
37
- 'commandDigest',
38
- 'descriptorHash',
39
- 'descriptorId',
40
- 'effect',
41
- 'kind',
42
- 'operation',
43
- 'previewOnly',
44
- 'schemaVersion',
45
- 'targetIdentityHash',
46
- ].sort();
47
- if (JSON.stringify(keys) !== JSON.stringify(expected)) {
48
- throw new TypeError('Deployment descriptor has missing or unsupported fields.');
49
- }
50
- if (input.kind !== 'openplanr-deployment-command-descriptor' ||
51
- input.schemaVersion !== '1.0.0' ||
52
- typeof input.descriptorId !== 'string' ||
53
- !ID.test(input.descriptorId) ||
54
- !HASH.test(String(input.targetIdentityHash)) ||
55
- !['deploy', 'rollback'].includes(String(input.operation)) ||
56
- !HASH.test(String(input.commandDigest)) ||
57
- input.effect !== 'descriptor-only' ||
58
- input.previewOnly !== true) {
59
- throw new TypeError('Deployment descriptor violates the descriptor-only contract.');
60
- }
61
- const { descriptorHash, ...body } = input;
62
- if (descriptorHash !== sha256CanonicalJson(body)) {
63
- throw new TypeError('Deployment descriptor digest does not match its exact bytes.');
64
- }
65
- return Object.freeze(structuredClone(input));
66
- }
67
- //# sourceMappingURL=deployment-health.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deployment-health.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/deployment-health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,qCAAqC,GAAG,wBAAwB,CAAC;IAC5E,SAAS,EAAE,2CAA2C;IACtD,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE;IACvD,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE;QACV;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;SACpE;QACD;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,EAAE,4BAA4B,CAAC;SACpE;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,MAAM,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC;IAC3C,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC;AAcH,MAAM,EAAE,GAAG,sCAAsC,CAAC;AAClD,MAAM,IAAI,GAAG,wBAAwB,CAAC;AAEtC,qGAAqG;AACrG,MAAM,UAAU,mCAAmC,CAAC,KAAc;IAChE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG;QACf,eAAe;QACf,gBAAgB;QAChB,cAAc;QACd,QAAQ;QACR,MAAM;QACN,WAAW;QACX,aAAa;QACb,eAAe;QACf,oBAAoB;KACrB,CAAC,IAAI,EAAE,CAAC;IACT,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;IAClF,CAAC;IACD,IACE,KAAK,CAAC,IAAI,KAAK,yCAAyC;QACxD,KAAK,CAAC,aAAa,KAAK,OAAO;QAC/B,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzD,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvC,KAAK,CAAC,MAAM,KAAK,iBAAiB;QAClC,KAAK,CAAC,WAAW,KAAK,IAAI,EAC1B,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC1C,IAAI,cAAc,KAAK,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAkC,CAAC;AAChF,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare const githubLiveEvidenceAdapterV2: Readonly<{
2
- definition: import("../connector-registry.js").ConnectorAdapterDefinitionV2;
3
- normalize(input: import("../connector-registry.js").ConnectorAdapterNormalizeInputV2): import("../connector-registry.js").ConnectorAdapterResultV2;
4
- }>;
5
- //# sourceMappingURL=github.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/github.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;;;EA4BtC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { defineConnectorAdapterV2 } from '../connector-registry.js';
2
- export const githubLiveEvidenceAdapterV2 = defineConnectorAdapterV2({
3
- adapterId: 'openplanr-github-live-evidence',
4
- adapterVersion: '1.0.0',
5
- provider: { id: 'github-delivery', version: '1.0.0' },
6
- category: 'delivery',
7
- operations: [
8
- {
9
- operation: 'checks',
10
- collection: 'checks',
11
- sourceContracts: ['ci-test-evidence'],
12
- },
13
- {
14
- operation: 'pull-requests',
15
- collection: 'pullRequests',
16
- sourceContracts: ['repository-architecture'],
17
- },
18
- {
19
- operation: 'workflow-runs',
20
- collection: 'workflowRuns',
21
- sourceContracts: ['ci-test-evidence'],
22
- },
23
- ],
24
- supportedDomains: ['software'],
25
- scopes: ['actions:read', 'checks:read', 'contents:read', 'pull-requests:read'],
26
- allowedMethods: ['GET'],
27
- transport: 'https-or-loopback',
28
- healthMaxAgeSeconds: 300,
29
- unavailableBehavior: 'typed-absence',
30
- });
31
- //# sourceMappingURL=github.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/services/connectors/adapters/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;IAClE,SAAS,EAAE,gCAAgC;IAC3C,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE;IACrD,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE;QACV;YACE,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC,kBAAkB,CAAC;SACtC;QACD;YACE,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,CAAC,yBAAyB,CAAC;SAC7C;QACD;YACE,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,cAAc;YAC1B,eAAe,EAAE,CAAC,kBAAkB,CAAC;SACtC;KACF;IACD,gBAAgB,EAAE,CAAC,UAAU,CAAC;IAC9B,MAAM,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,CAAC;IAC9E,cAAc,EAAE,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB;IAC9B,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,eAAe;CACrC,CAAC,CAAC"}