openplanr 1.25.3 → 2.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 (1738) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/CONTRIBUTING.md +33 -0
  3. package/README.md +154 -131
  4. package/dist/cli/commands/artifact.d.ts.map +1 -1
  5. package/dist/cli/commands/artifact.js +214 -30
  6. package/dist/cli/commands/artifact.js.map +1 -1
  7. package/dist/cli/commands/backlog.d.ts +1 -21
  8. package/dist/cli/commands/backlog.d.ts.map +1 -1
  9. package/dist/cli/commands/backlog.js +1 -428
  10. package/dist/cli/commands/backlog.js.map +1 -1
  11. package/dist/cli/commands/company.d.ts +3 -0
  12. package/dist/cli/commands/company.d.ts.map +1 -0
  13. package/dist/cli/commands/company.js +173 -0
  14. package/dist/cli/commands/company.js.map +1 -0
  15. package/dist/cli/commands/config-deterministic.d.ts +3 -0
  16. package/dist/cli/commands/config-deterministic.d.ts.map +1 -0
  17. package/dist/cli/commands/config-deterministic.js +88 -0
  18. package/dist/cli/commands/config-deterministic.js.map +1 -0
  19. package/dist/cli/commands/dashboard.d.ts +3 -0
  20. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  21. package/dist/cli/commands/dashboard.js +36 -0
  22. package/dist/cli/commands/dashboard.js.map +1 -0
  23. package/dist/cli/commands/diagram/index.d.ts +3 -0
  24. package/dist/cli/commands/diagram/index.d.ts.map +1 -0
  25. package/dist/cli/commands/diagram/index.js +73 -0
  26. package/dist/cli/commands/diagram/index.js.map +1 -0
  27. package/dist/cli/commands/diagram/presentation.d.ts +4 -0
  28. package/dist/cli/commands/diagram/presentation.d.ts.map +1 -0
  29. package/dist/cli/commands/diagram/presentation.js +38 -0
  30. package/dist/cli/commands/diagram/presentation.js.map +1 -0
  31. package/dist/cli/commands/doctor.d.ts.map +1 -1
  32. package/dist/cli/commands/doctor.js +1 -11
  33. package/dist/cli/commands/doctor.js.map +1 -1
  34. package/dist/cli/commands/epic.d.ts +1 -9
  35. package/dist/cli/commands/epic.d.ts.map +1 -1
  36. package/dist/cli/commands/epic.js +1 -259
  37. package/dist/cli/commands/epic.js.map +1 -1
  38. package/dist/cli/commands/feature.d.ts +1 -8
  39. package/dist/cli/commands/feature.d.ts.map +1 -1
  40. package/dist/cli/commands/feature.js +1 -220
  41. package/dist/cli/commands/feature.js.map +1 -1
  42. package/dist/cli/commands/groups/delivery.d.ts +3 -0
  43. package/dist/cli/commands/groups/delivery.d.ts.map +1 -0
  44. package/dist/cli/commands/groups/delivery.js +13 -0
  45. package/dist/cli/commands/groups/delivery.js.map +1 -0
  46. package/dist/cli/commands/groups/foundation.d.ts +3 -0
  47. package/dist/cli/commands/groups/foundation.d.ts.map +1 -0
  48. package/dist/cli/commands/groups/foundation.js +11 -0
  49. package/dist/cli/commands/groups/foundation.js.map +1 -0
  50. package/dist/cli/commands/groups/intelligence.d.ts +3 -0
  51. package/dist/cli/commands/groups/intelligence.d.ts.map +1 -0
  52. package/dist/cli/commands/groups/intelligence.js +19 -0
  53. package/dist/cli/commands/groups/intelligence.js.map +1 -0
  54. package/dist/cli/commands/groups/operations.d.ts +3 -0
  55. package/dist/cli/commands/groups/operations.d.ts.map +1 -0
  56. package/dist/cli/commands/groups/operations.js +17 -0
  57. package/dist/cli/commands/groups/operations.js.map +1 -0
  58. package/dist/cli/commands/groups/planning.d.ts +3 -0
  59. package/dist/cli/commands/groups/planning.d.ts.map +1 -0
  60. package/dist/cli/commands/groups/planning.js +25 -0
  61. package/dist/cli/commands/groups/planning.js.map +1 -0
  62. package/dist/cli/commands/index.d.ts +4 -0
  63. package/dist/cli/commands/index.d.ts.map +1 -0
  64. package/dist/cli/commands/index.js +14 -0
  65. package/dist/cli/commands/index.js.map +1 -0
  66. package/dist/cli/commands/init-deterministic.d.ts +3 -0
  67. package/dist/cli/commands/init-deterministic.d.ts.map +1 -0
  68. package/dist/cli/commands/init-deterministic.js +40 -0
  69. package/dist/cli/commands/init-deterministic.js.map +1 -0
  70. package/dist/cli/commands/land.d.ts +15 -0
  71. package/dist/cli/commands/land.d.ts.map +1 -0
  72. package/dist/cli/commands/land.js +176 -0
  73. package/dist/cli/commands/land.js.map +1 -0
  74. package/dist/cli/commands/operate/input.d.ts +54 -0
  75. package/dist/cli/commands/operate/input.d.ts.map +1 -0
  76. package/dist/cli/commands/operate/input.js +98 -0
  77. package/dist/cli/commands/operate/input.js.map +1 -0
  78. package/dist/cli/commands/operate/registrars/assignments.d.ts +5 -0
  79. package/dist/cli/commands/operate/registrars/assignments.d.ts.map +1 -0
  80. package/dist/cli/commands/operate/registrars/assignments.js +167 -0
  81. package/dist/cli/commands/operate/registrars/assignments.js.map +1 -0
  82. package/dist/cli/commands/operate/registrars/catalog.d.ts +4 -0
  83. package/dist/cli/commands/operate/registrars/catalog.d.ts.map +1 -0
  84. package/dist/cli/commands/operate/registrars/catalog.js +12 -0
  85. package/dist/cli/commands/operate/registrars/catalog.js.map +1 -0
  86. package/dist/cli/commands/operate/registrars/contracts.d.ts +41 -0
  87. package/dist/cli/commands/operate/registrars/contracts.d.ts.map +1 -0
  88. package/dist/cli/commands/operate/registrars/contracts.js +2 -0
  89. package/dist/cli/commands/operate/registrars/contracts.js.map +1 -0
  90. package/dist/cli/commands/operate/registrars/dashboard.d.ts +4 -0
  91. package/dist/cli/commands/operate/registrars/dashboard.d.ts.map +1 -0
  92. package/dist/cli/commands/operate/registrars/dashboard.js +26 -0
  93. package/dist/cli/commands/operate/registrars/dashboard.js.map +1 -0
  94. package/dist/cli/commands/operate/registrars/dispatch.d.ts +7 -0
  95. package/dist/cli/commands/operate/registrars/dispatch.d.ts.map +1 -0
  96. package/dist/cli/commands/operate/registrars/dispatch.js +55 -0
  97. package/dist/cli/commands/operate/registrars/dispatch.js.map +1 -0
  98. package/dist/cli/commands/operate/registrars/experience.d.ts +4 -0
  99. package/dist/cli/commands/operate/registrars/experience.d.ts.map +1 -0
  100. package/dist/cli/commands/operate/registrars/experience.js +93 -0
  101. package/dist/cli/commands/operate/registrars/experience.js.map +1 -0
  102. package/dist/cli/commands/operate/registrars/index.d.ts +5 -0
  103. package/dist/cli/commands/operate/registrars/index.d.ts.map +1 -0
  104. package/dist/cli/commands/operate/registrars/index.js +28 -0
  105. package/dist/cli/commands/operate/registrars/index.js.map +1 -0
  106. package/dist/cli/commands/operate/registrars/lifecycle.d.ts +4 -0
  107. package/dist/cli/commands/operate/registrars/lifecycle.d.ts.map +1 -0
  108. package/dist/cli/commands/operate/registrars/lifecycle.js +46 -0
  109. package/dist/cli/commands/operate/registrars/lifecycle.js.map +1 -0
  110. package/dist/cli/commands/operate/registrars/measurement.d.ts +4 -0
  111. package/dist/cli/commands/operate/registrars/measurement.d.ts.map +1 -0
  112. package/dist/cli/commands/operate/registrars/measurement.js +122 -0
  113. package/dist/cli/commands/operate/registrars/measurement.js.map +1 -0
  114. package/dist/cli/commands/operate/registrars/note-validation.d.ts +6 -0
  115. package/dist/cli/commands/operate/registrars/note-validation.d.ts.map +1 -0
  116. package/dist/cli/commands/operate/registrars/note-validation.js +103 -0
  117. package/dist/cli/commands/operate/registrars/note-validation.js.map +1 -0
  118. package/dist/cli/commands/operate/registrars/planning.d.ts +4 -0
  119. package/dist/cli/commands/operate/registrars/planning.d.ts.map +1 -0
  120. package/dist/cli/commands/operate/registrars/planning.js +41 -0
  121. package/dist/cli/commands/operate/registrars/planning.js.map +1 -0
  122. package/dist/cli/commands/operate/registrars/recovery.d.ts +4 -0
  123. package/dist/cli/commands/operate/registrars/recovery.d.ts.map +1 -0
  124. package/dist/cli/commands/operate/registrars/recovery.js +65 -0
  125. package/dist/cli/commands/operate/registrars/recovery.js.map +1 -0
  126. package/dist/cli/commands/operate/registrars/reviews.d.ts +4 -0
  127. package/dist/cli/commands/operate/registrars/reviews.d.ts.map +1 -0
  128. package/dist/cli/commands/operate/registrars/reviews.js +83 -0
  129. package/dist/cli/commands/operate/registrars/reviews.js.map +1 -0
  130. package/dist/cli/commands/operate/registration.d.ts +4 -0
  131. package/dist/cli/commands/operate/registration.d.ts.map +1 -0
  132. package/dist/cli/commands/operate/registration.js +3 -0
  133. package/dist/cli/commands/operate/registration.js.map +1 -0
  134. package/dist/cli/commands/operate/render.d.ts +19 -0
  135. package/dist/cli/commands/operate/render.d.ts.map +1 -0
  136. package/dist/cli/commands/operate/render.js +201 -0
  137. package/dist/cli/commands/operate/render.js.map +1 -0
  138. package/dist/cli/commands/operate.d.ts +58 -13
  139. package/dist/cli/commands/operate.d.ts.map +1 -1
  140. package/dist/cli/commands/operate.js +169 -984
  141. package/dist/cli/commands/operate.js.map +1 -1
  142. package/dist/cli/commands/planning-artifacts.d.ts +10 -0
  143. package/dist/cli/commands/planning-artifacts.d.ts.map +1 -0
  144. package/dist/cli/commands/planning-artifacts.js +350 -0
  145. package/dist/cli/commands/planning-artifacts.js.map +1 -0
  146. package/dist/cli/commands/quick/interaction.d.ts +8 -0
  147. package/dist/cli/commands/quick/interaction.d.ts.map +1 -0
  148. package/dist/cli/commands/quick/interaction.js +8 -0
  149. package/dist/cli/commands/quick/interaction.js.map +1 -0
  150. package/dist/cli/commands/quick/project.d.ts +8 -0
  151. package/dist/cli/commands/quick/project.d.ts.map +1 -0
  152. package/dist/cli/commands/quick/project.js +8 -0
  153. package/dist/cli/commands/quick/project.js.map +1 -0
  154. package/dist/cli/commands/quick.d.ts +1 -29
  155. package/dist/cli/commands/quick.d.ts.map +1 -1
  156. package/dist/cli/commands/quick.js +1 -337
  157. package/dist/cli/commands/quick.js.map +1 -1
  158. package/dist/cli/commands/rules.js +1 -1
  159. package/dist/cli/commands/rules.js.map +1 -1
  160. package/dist/cli/commands/setup.d.ts.map +1 -1
  161. package/dist/cli/commands/setup.js +40 -18
  162. package/dist/cli/commands/setup.js.map +1 -1
  163. package/dist/cli/commands/spec.d.ts +6 -4
  164. package/dist/cli/commands/spec.d.ts.map +1 -1
  165. package/dist/cli/commands/spec.js +166 -174
  166. package/dist/cli/commands/spec.js.map +1 -1
  167. package/dist/cli/commands/sprint.d.ts +1 -8
  168. package/dist/cli/commands/sprint.d.ts.map +1 -1
  169. package/dist/cli/commands/sprint.js +1 -522
  170. package/dist/cli/commands/sprint.js.map +1 -1
  171. package/dist/cli/commands/story/interaction.d.ts +7 -0
  172. package/dist/cli/commands/story/interaction.d.ts.map +1 -0
  173. package/dist/cli/commands/story/interaction.js +7 -0
  174. package/dist/cli/commands/story/interaction.js.map +1 -0
  175. package/dist/cli/commands/story/project.d.ts +10 -0
  176. package/dist/cli/commands/story/project.d.ts.map +1 -0
  177. package/dist/cli/commands/story/project.js +10 -0
  178. package/dist/cli/commands/story/project.js.map +1 -0
  179. package/dist/cli/commands/story.d.ts +1 -8
  180. package/dist/cli/commands/story.d.ts.map +1 -1
  181. package/dist/cli/commands/story.js +1 -358
  182. package/dist/cli/commands/story.js.map +1 -1
  183. package/dist/cli/commands/task.d.ts +1 -9
  184. package/dist/cli/commands/task.d.ts.map +1 -1
  185. package/dist/cli/commands/task.js +1 -351
  186. package/dist/cli/commands/task.js.map +1 -1
  187. package/dist/cli/error-boundary.d.ts +29 -0
  188. package/dist/cli/error-boundary.d.ts.map +1 -0
  189. package/dist/cli/error-boundary.js +103 -0
  190. package/dist/cli/error-boundary.js.map +1 -0
  191. package/dist/cli/helpers/bulk-checkbox-update.d.ts +1 -1
  192. package/dist/cli/helpers/bulk-checkbox-update.js +1 -1
  193. package/dist/cli/index.js +38 -113
  194. package/dist/cli/index.js.map +1 -1
  195. package/dist/dashboard/.vite/manifest.json +68 -0
  196. package/dist/dashboard/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
  197. package/dist/dashboard/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
  198. package/dist/dashboard/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
  199. package/dist/dashboard/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
  200. package/dist/dashboard/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
  201. package/dist/dashboard/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
  202. package/dist/dashboard/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
  203. package/dist/dashboard/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
  204. package/dist/dashboard/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
  205. package/dist/dashboard/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
  206. package/dist/dashboard/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
  207. package/dist/dashboard/assets/index-Bk8DyO_2.css +1 -0
  208. package/dist/dashboard/assets/index-zeygL5iu.js +557 -0
  209. package/dist/dashboard/assets/index-zeygL5iu.js.map +1 -0
  210. package/dist/dashboard/dashboard-manifest.json +84 -0
  211. package/dist/dashboard/index.html +13 -0
  212. package/dist/generators/base-generator.d.ts +2 -0
  213. package/dist/generators/base-generator.d.ts.map +1 -1
  214. package/dist/generators/base-generator.js +8 -0
  215. package/dist/generators/base-generator.js.map +1 -1
  216. package/dist/generators/claude-generator.d.ts.map +1 -1
  217. package/dist/generators/claude-generator.js +12 -14
  218. package/dist/generators/claude-generator.js.map +1 -1
  219. package/dist/generators/codex-generator.d.ts.map +1 -1
  220. package/dist/generators/codex-generator.js +7 -7
  221. package/dist/generators/codex-generator.js.map +1 -1
  222. package/dist/generators/cursor-generator.d.ts.map +1 -1
  223. package/dist/generators/cursor-generator.js +11 -30
  224. package/dist/generators/cursor-generator.js.map +1 -1
  225. package/dist/models/schema.d.ts +0 -23
  226. package/dist/models/schema.d.ts.map +1 -1
  227. package/dist/models/schema.js +0 -7
  228. package/dist/models/schema.js.map +1 -1
  229. package/dist/models/types.d.ts +3 -14
  230. package/dist/models/types.d.ts.map +1 -1
  231. package/dist/services/artifact-pipeline-service.d.ts +99 -1
  232. package/dist/services/artifact-pipeline-service.d.ts.map +1 -1
  233. package/dist/services/artifact-pipeline-service.js +681 -4
  234. package/dist/services/artifact-pipeline-service.js.map +1 -1
  235. package/dist/services/canonical-json.d.ts +3 -0
  236. package/dist/services/canonical-json.d.ts.map +1 -0
  237. package/dist/services/canonical-json.js +71 -0
  238. package/dist/services/canonical-json.js.map +1 -0
  239. package/dist/services/claude-plugin-service.d.ts +6 -1
  240. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  241. package/dist/services/claude-plugin-service.js +184 -12
  242. package/dist/services/claude-plugin-service.js.map +1 -1
  243. package/dist/services/codex-plugin-service.d.ts +30 -0
  244. package/dist/services/codex-plugin-service.d.ts.map +1 -0
  245. package/dist/services/codex-plugin-service.js +195 -0
  246. package/dist/services/codex-plugin-service.js.map +1 -0
  247. package/dist/services/company-auth-service.d.ts +70 -0
  248. package/dist/services/company-auth-service.d.ts.map +1 -0
  249. package/dist/services/company-auth-service.js +720 -0
  250. package/dist/services/company-auth-service.js.map +1 -0
  251. package/dist/services/company-auth-store.d.ts +22 -0
  252. package/dist/services/company-auth-store.d.ts.map +1 -0
  253. package/dist/services/company-auth-store.js +158 -0
  254. package/dist/services/company-auth-store.js.map +1 -0
  255. package/dist/services/company-common.d.ts +9 -0
  256. package/dist/services/company-common.d.ts.map +1 -0
  257. package/dist/services/company-common.js +35 -0
  258. package/dist/services/company-common.js.map +1 -0
  259. package/dist/services/company-sync-service.d.ts +214 -0
  260. package/dist/services/company-sync-service.d.ts.map +1 -0
  261. package/dist/services/company-sync-service.js +1299 -0
  262. package/dist/services/company-sync-service.js.map +1 -0
  263. package/dist/services/connectors/adapters/business-metrics.d.ts +5 -0
  264. package/dist/services/connectors/adapters/business-metrics.d.ts.map +1 -0
  265. package/dist/services/connectors/adapters/business-metrics.js +41 -0
  266. package/dist/services/connectors/adapters/business-metrics.js.map +1 -0
  267. package/dist/services/connectors/adapters/deployment-health.d.ts +18 -0
  268. package/dist/services/connectors/adapters/deployment-health.d.ts.map +1 -0
  269. package/dist/services/connectors/adapters/deployment-health.js +67 -0
  270. package/dist/services/connectors/adapters/deployment-health.js.map +1 -0
  271. package/dist/services/connectors/adapters/github.d.ts +5 -0
  272. package/dist/services/connectors/adapters/github.d.ts.map +1 -0
  273. package/dist/services/connectors/adapters/github.js +31 -0
  274. package/dist/services/connectors/adapters/github.js.map +1 -0
  275. package/dist/services/connectors/adapters/linear-jira.d.ts +5 -0
  276. package/dist/services/connectors/adapters/linear-jira.d.ts.map +1 -0
  277. package/dist/services/connectors/adapters/linear-jira.js +26 -0
  278. package/dist/services/connectors/adapters/linear-jira.js.map +1 -0
  279. package/dist/services/connectors/adapters/posthog.d.ts +5 -0
  280. package/dist/services/connectors/adapters/posthog.d.ts.map +1 -0
  281. package/dist/services/connectors/adapters/posthog.js +31 -0
  282. package/dist/services/connectors/adapters/posthog.js.map +1 -0
  283. package/dist/services/connectors/adapters/sentry.d.ts +5 -0
  284. package/dist/services/connectors/adapters/sentry.d.ts.map +1 -0
  285. package/dist/services/connectors/adapters/sentry.js +31 -0
  286. package/dist/services/connectors/adapters/sentry.js.map +1 -0
  287. package/dist/services/connectors/checkpoint-custody.d.ts +45 -0
  288. package/dist/services/connectors/checkpoint-custody.d.ts.map +1 -0
  289. package/dist/services/connectors/checkpoint-custody.js +496 -0
  290. package/dist/services/connectors/checkpoint-custody.js.map +1 -0
  291. package/dist/services/connectors/connector-registry.d.ts +144 -0
  292. package/dist/services/connectors/connector-registry.d.ts.map +1 -0
  293. package/dist/services/connectors/connector-registry.js +423 -0
  294. package/dist/services/connectors/connector-registry.js.map +1 -0
  295. package/dist/services/connectors/connector-runtime.d.ts +200 -0
  296. package/dist/services/connectors/connector-runtime.d.ts.map +1 -0
  297. package/dist/services/connectors/connector-runtime.js +1297 -0
  298. package/dist/services/connectors/connector-runtime.js.map +1 -0
  299. package/dist/services/connectors/credential-custody.d.ts +96 -0
  300. package/dist/services/connectors/credential-custody.d.ts.map +1 -0
  301. package/dist/services/connectors/credential-custody.js +390 -0
  302. package/dist/services/connectors/credential-custody.js.map +1 -0
  303. package/dist/services/credential-backends.d.ts +11 -1
  304. package/dist/services/credential-backends.d.ts.map +1 -1
  305. package/dist/services/credential-backends.js +104 -21
  306. package/dist/services/credential-backends.js.map +1 -1
  307. package/dist/services/credential-write-lock.d.ts +8 -0
  308. package/dist/services/credential-write-lock.d.ts.map +1 -0
  309. package/dist/services/credential-write-lock.js +104 -0
  310. package/dist/services/credential-write-lock.js.map +1 -0
  311. package/dist/services/credentials-service.d.ts +8 -2
  312. package/dist/services/credentials-service.d.ts.map +1 -1
  313. package/dist/services/credentials-service.js +66 -21
  314. package/dist/services/credentials-service.js.map +1 -1
  315. package/dist/services/deprecation-notices.d.ts +2 -2
  316. package/dist/services/deprecation-notices.d.ts.map +1 -1
  317. package/dist/services/deprecation-notices.js +2 -2
  318. package/dist/services/deprecation-notices.js.map +1 -1
  319. package/dist/services/design-artifact-service.d.ts +37 -0
  320. package/dist/services/design-artifact-service.d.ts.map +1 -0
  321. package/dist/services/design-artifact-service.js +94 -0
  322. package/dist/services/design-artifact-service.js.map +1 -0
  323. package/dist/services/diagram-artifact-service.d.ts +12 -0
  324. package/dist/services/diagram-artifact-service.d.ts.map +1 -0
  325. package/dist/services/diagram-artifact-service.js +41 -0
  326. package/dist/services/diagram-artifact-service.js.map +1 -0
  327. package/dist/services/diagram-pipeline-service.d.ts +125 -0
  328. package/dist/services/diagram-pipeline-service.d.ts.map +1 -0
  329. package/dist/services/diagram-pipeline-service.js +329 -0
  330. package/dist/services/diagram-pipeline-service.js.map +1 -0
  331. package/dist/services/gherkin-service.d.ts +3 -0
  332. package/dist/services/gherkin-service.d.ts.map +1 -0
  333. package/dist/services/gherkin-service.js +9 -0
  334. package/dist/services/gherkin-service.js.map +1 -0
  335. package/dist/services/graph-service.d.ts.map +1 -1
  336. package/dist/services/graph-service.js +6 -4
  337. package/dist/services/graph-service.js.map +1 -1
  338. package/dist/services/landing/landing-service.d.ts +42 -0
  339. package/dist/services/landing/landing-service.d.ts.map +1 -0
  340. package/dist/services/landing/landing-service.js +197 -0
  341. package/dist/services/landing/landing-service.js.map +1 -0
  342. package/dist/services/landing/operation-registry.d.ts +56 -0
  343. package/dist/services/landing/operation-registry.d.ts.map +1 -0
  344. package/dist/services/landing/operation-registry.js +165 -0
  345. package/dist/services/landing/operation-registry.js.map +1 -0
  346. package/dist/services/landing/receipt-custody.d.ts +48 -0
  347. package/dist/services/landing/receipt-custody.d.ts.map +1 -0
  348. package/dist/services/landing/receipt-custody.js +375 -0
  349. package/dist/services/landing/receipt-custody.js.map +1 -0
  350. package/dist/services/linear/constants.d.ts.map +1 -1
  351. package/dist/services/linear/constants.js +2 -6
  352. package/dist/services/linear/constants.js.map +1 -1
  353. package/dist/services/linear/task-status-aggregation.d.ts +1 -1
  354. package/dist/services/linear/task-status-aggregation.js +1 -1
  355. package/dist/services/linear-pull-service.d.ts.map +1 -1
  356. package/dist/services/linear-pull-service.js +7 -30
  357. package/dist/services/linear-pull-service.js.map +1 -1
  358. package/dist/services/linear-push-service.d.ts.map +1 -1
  359. package/dist/services/linear-push-service.js +4 -5
  360. package/dist/services/linear-push-service.js.map +1 -1
  361. package/dist/services/migration-registry.d.ts +0 -19
  362. package/dist/services/migration-registry.d.ts.map +1 -1
  363. package/dist/services/migration-registry.js +18 -32
  364. package/dist/services/migration-registry.js.map +1 -1
  365. package/dist/services/operate/assignment-lifecycle-service.d.ts +135 -0
  366. package/dist/services/operate/assignment-lifecycle-service.d.ts.map +1 -0
  367. package/dist/services/operate/assignment-lifecycle-service.js +113 -0
  368. package/dist/services/operate/assignment-lifecycle-service.js.map +1 -0
  369. package/dist/services/operate/assignment-packet-service.d.ts +79 -0
  370. package/dist/services/operate/assignment-packet-service.d.ts.map +1 -0
  371. package/dist/services/operate/assignment-packet-service.js +1030 -0
  372. package/dist/services/operate/assignment-packet-service.js.map +1 -0
  373. package/dist/services/operate/client/governance.d.ts +4 -0
  374. package/dist/services/operate/client/governance.d.ts.map +1 -0
  375. package/dist/services/operate/client/governance.js +3 -0
  376. package/dist/services/operate/client/governance.js.map +1 -0
  377. package/dist/services/operate/client/lifecycle.d.ts +18 -0
  378. package/dist/services/operate/client/lifecycle.d.ts.map +1 -0
  379. package/dist/services/operate/client/lifecycle.js +15 -0
  380. package/dist/services/operate/client/lifecycle.js.map +1 -0
  381. package/dist/services/operate/client/runtime.d.ts +13 -0
  382. package/dist/services/operate/client/runtime.d.ts.map +1 -0
  383. package/dist/services/operate/client/runtime.js +11 -0
  384. package/dist/services/operate/client/runtime.js.map +1 -0
  385. package/dist/services/operate/client-error.d.ts +9 -0
  386. package/dist/services/operate/client-error.d.ts.map +1 -0
  387. package/dist/services/operate/client-error.js +14 -0
  388. package/dist/services/operate/client-error.js.map +1 -0
  389. package/dist/services/operate/client.d.ts +415 -0
  390. package/dist/services/operate/client.d.ts.map +1 -0
  391. package/dist/services/operate/client.js +2432 -0
  392. package/dist/services/operate/client.js.map +1 -0
  393. package/dist/services/operate/command-gateway.d.ts +152 -0
  394. package/dist/services/operate/command-gateway.d.ts.map +1 -0
  395. package/dist/services/operate/command-gateway.js +883 -0
  396. package/dist/services/operate/command-gateway.js.map +1 -0
  397. package/dist/services/operate/composition.d.ts +421 -0
  398. package/dist/services/operate/composition.d.ts.map +1 -0
  399. package/dist/services/operate/composition.js +394 -0
  400. package/dist/services/operate/composition.js.map +1 -0
  401. package/dist/services/operate/cycle-lifecycle-service.d.ts +35 -0
  402. package/dist/services/operate/cycle-lifecycle-service.d.ts.map +1 -0
  403. package/dist/services/operate/cycle-lifecycle-service.js +427 -0
  404. package/dist/services/operate/cycle-lifecycle-service.js.map +1 -0
  405. package/dist/services/operate/delivery-evidence.d.ts +34 -0
  406. package/dist/services/operate/delivery-evidence.d.ts.map +1 -0
  407. package/dist/services/operate/delivery-evidence.js +666 -0
  408. package/dist/services/operate/delivery-evidence.js.map +1 -0
  409. package/dist/services/operate/domain-catalog-service.d.ts +24 -0
  410. package/dist/services/operate/domain-catalog-service.d.ts.map +1 -0
  411. package/dist/services/operate/domain-catalog-service.js +99 -0
  412. package/dist/services/operate/domain-catalog-service.js.map +1 -0
  413. package/dist/services/operate/experience-read-service.d.ts +64 -0
  414. package/dist/services/operate/experience-read-service.d.ts.map +1 -0
  415. package/dist/services/operate/experience-read-service.js +109 -0
  416. package/dist/services/operate/experience-read-service.js.map +1 -0
  417. package/dist/services/operate/governed-action-service.d.ts +80 -0
  418. package/dist/services/operate/governed-action-service.d.ts.map +1 -0
  419. package/dist/services/operate/governed-action-service.js +497 -0
  420. package/dist/services/operate/governed-action-service.js.map +1 -0
  421. package/dist/services/operate/identity-contract.d.ts +3 -0
  422. package/dist/services/operate/identity-contract.d.ts.map +1 -0
  423. package/dist/services/operate/identity-contract.js +6 -0
  424. package/dist/services/operate/identity-contract.js.map +1 -0
  425. package/dist/services/operate/measurement-schedule-service.d.ts +81 -0
  426. package/dist/services/operate/measurement-schedule-service.d.ts.map +1 -0
  427. package/dist/services/operate/measurement-schedule-service.js +461 -0
  428. package/dist/services/operate/measurement-schedule-service.js.map +1 -0
  429. package/dist/services/operate/path-custody.d.ts +16 -0
  430. package/dist/services/operate/path-custody.d.ts.map +1 -0
  431. package/dist/services/operate/path-custody.js +120 -0
  432. package/dist/services/operate/path-custody.js.map +1 -0
  433. package/dist/services/operate/pinned-legacy-replay-runner.d.ts +9 -0
  434. package/dist/services/operate/pinned-legacy-replay-runner.d.ts.map +1 -0
  435. package/dist/services/operate/pinned-legacy-replay-runner.js +441 -0
  436. package/dist/services/operate/pinned-legacy-replay-runner.js.map +1 -0
  437. package/dist/services/operate/planning-bridge.d.ts +28 -0
  438. package/dist/services/operate/planning-bridge.d.ts.map +1 -0
  439. package/dist/services/operate/planning-bridge.js +341 -0
  440. package/dist/services/operate/planning-bridge.js.map +1 -0
  441. package/dist/services/operate/planning-handoff-gateway.d.ts +47 -0
  442. package/dist/services/operate/planning-handoff-gateway.d.ts.map +1 -0
  443. package/dist/services/operate/planning-handoff-gateway.js +169 -0
  444. package/dist/services/operate/planning-handoff-gateway.js.map +1 -0
  445. package/dist/services/operate/planning-handoff-service.d.ts +38 -0
  446. package/dist/services/operate/planning-handoff-service.d.ts.map +1 -0
  447. package/dist/services/operate/planning-handoff-service.js +304 -0
  448. package/dist/services/operate/planning-handoff-service.js.map +1 -0
  449. package/dist/services/operate/project-transaction-lock.d.ts +6 -0
  450. package/dist/services/operate/project-transaction-lock.d.ts.map +1 -0
  451. package/dist/services/operate/project-transaction-lock.js +146 -0
  452. package/dist/services/operate/project-transaction-lock.js.map +1 -0
  453. package/dist/services/operate/recovery-service.d.ts +16 -0
  454. package/dist/services/operate/recovery-service.d.ts.map +1 -0
  455. package/dist/services/operate/recovery-service.js +59 -0
  456. package/dist/services/operate/recovery-service.js.map +1 -0
  457. package/dist/services/operate/replay-safe-retry-service.d.ts +21 -0
  458. package/dist/services/operate/replay-safe-retry-service.d.ts.map +1 -0
  459. package/dist/services/operate/replay-safe-retry-service.js +66 -0
  460. package/dist/services/operate/replay-safe-retry-service.js.map +1 -0
  461. package/dist/services/operate/repository-read-service.d.ts +13 -0
  462. package/dist/services/operate/repository-read-service.d.ts.map +1 -0
  463. package/dist/services/operate/repository-read-service.js +153 -0
  464. package/dist/services/operate/repository-read-service.js.map +1 -0
  465. package/dist/services/operate/review-lifecycle-service.d.ts +50 -0
  466. package/dist/services/operate/review-lifecycle-service.d.ts.map +1 -0
  467. package/dist/services/operate/review-lifecycle-service.js +63 -0
  468. package/dist/services/operate/review-lifecycle-service.js.map +1 -0
  469. package/dist/services/operate/review-read-gateway.d.ts +21 -0
  470. package/dist/services/operate/review-read-gateway.d.ts.map +1 -0
  471. package/dist/services/operate/review-read-gateway.js +119 -0
  472. package/dist/services/operate/review-read-gateway.js.map +1 -0
  473. package/dist/services/operate/screened-evidence-service.d.ts +24 -0
  474. package/dist/services/operate/screened-evidence-service.d.ts.map +1 -0
  475. package/dist/services/operate/screened-evidence-service.js +186 -0
  476. package/dist/services/operate/screened-evidence-service.js.map +1 -0
  477. package/dist/services/operate/search-hit-contract.d.ts +11 -0
  478. package/dist/services/operate/search-hit-contract.d.ts.map +1 -0
  479. package/dist/services/operate/search-hit-contract.js +29 -0
  480. package/dist/services/operate/search-hit-contract.js.map +1 -0
  481. package/dist/services/operate/session-capability.d.ts +61 -0
  482. package/dist/services/operate/session-capability.d.ts.map +1 -0
  483. package/dist/services/operate/session-capability.js +124 -0
  484. package/dist/services/operate/session-capability.js.map +1 -0
  485. package/dist/services/operate/spec-operating-origin-service.d.ts +60 -0
  486. package/dist/services/operate/spec-operating-origin-service.d.ts.map +1 -0
  487. package/dist/services/operate/spec-operating-origin-service.js +401 -0
  488. package/dist/services/operate/spec-operating-origin-service.js.map +1 -0
  489. package/dist/services/operate/storage-layout.d.ts +82 -0
  490. package/dist/services/operate/storage-layout.d.ts.map +1 -0
  491. package/dist/services/operate/storage-layout.js +1244 -0
  492. package/dist/services/operate/storage-layout.js.map +1 -0
  493. package/dist/services/operate/storage-migration-service.d.ts +15 -0
  494. package/dist/services/operate/storage-migration-service.d.ts.map +1 -0
  495. package/dist/services/operate/storage-migration-service.js +27 -0
  496. package/dist/services/operate/storage-migration-service.js.map +1 -0
  497. package/dist/services/operate/store.d.ts +132 -0
  498. package/dist/services/operate/store.d.ts.map +1 -0
  499. package/dist/services/operate/store.js +1344 -0
  500. package/dist/services/operate/store.js.map +1 -0
  501. package/dist/services/pipeline-package-service.d.ts +93 -2
  502. package/dist/services/pipeline-package-service.d.ts.map +1 -1
  503. package/dist/services/pipeline-package-service.js +867 -7
  504. package/dist/services/pipeline-package-service.js.map +1 -1
  505. package/dist/services/planning-id-service.d.ts +8 -0
  506. package/dist/services/planning-id-service.d.ts.map +1 -0
  507. package/dist/services/planning-id-service.js +114 -0
  508. package/dist/services/planning-id-service.js.map +1 -0
  509. package/dist/services/provenance-service.d.ts +33 -1
  510. package/dist/services/provenance-service.d.ts.map +1 -1
  511. package/dist/services/provenance-service.js +104 -8
  512. package/dist/services/provenance-service.js.map +1 -1
  513. package/dist/services/runtime-manager/doctor.d.ts +22 -0
  514. package/dist/services/runtime-manager/doctor.d.ts.map +1 -0
  515. package/dist/services/runtime-manager/doctor.js +74 -0
  516. package/dist/services/runtime-manager/doctor.js.map +1 -0
  517. package/dist/services/runtime-manager/global-state.d.ts +47 -0
  518. package/dist/services/runtime-manager/global-state.d.ts.map +1 -0
  519. package/dist/services/runtime-manager/global-state.js +59 -0
  520. package/dist/services/runtime-manager/global-state.js.map +1 -0
  521. package/dist/services/runtime-manager/install-plan.d.ts +37 -0
  522. package/dist/services/runtime-manager/install-plan.d.ts.map +1 -0
  523. package/dist/services/runtime-manager/install-plan.js +91 -0
  524. package/dist/services/runtime-manager/install-plan.js.map +1 -0
  525. package/dist/services/runtime-manager/inventory.d.ts +29 -0
  526. package/dist/services/runtime-manager/inventory.d.ts.map +1 -0
  527. package/dist/services/runtime-manager/inventory.js +46 -0
  528. package/dist/services/runtime-manager/inventory.js.map +1 -0
  529. package/dist/services/runtime-manager-service.d.ts +16 -71
  530. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  531. package/dist/services/runtime-manager-service.js +1288 -505
  532. package/dist/services/runtime-manager-service.js.map +1 -1
  533. package/dist/services/spec-service.d.ts +213 -39
  534. package/dist/services/spec-service.d.ts.map +1 -1
  535. package/dist/services/spec-service.js +938 -171
  536. package/dist/services/spec-service.js.map +1 -1
  537. package/dist/services/template-service.d.ts.map +1 -1
  538. package/dist/services/template-service.js +1 -0
  539. package/dist/services/template-service.js.map +1 -1
  540. package/dist/templates/quick/quick-task.md.hbs +6 -0
  541. package/dist/templates/rules/claude/CLAUDE.md.hbs +3 -111
  542. package/dist/templates/rules/codex/AGENTS.md.hbs +2 -92
  543. package/dist/templates/rules/cursor/create-task-list.mdc.hbs +1 -1
  544. package/dist/templates/rules/cursor/implement-task-list.mdc.hbs +5 -83
  545. package/dist/templates/rules/cursor/openplanr.mdc.hbs +12 -0
  546. package/dist/templates/rules/shared/host-native-guidance.md.hbs +12 -0
  547. package/dist/templates/rules/shared/implementation-guidance.md.hbs +44 -0
  548. package/dist/templates/spec/spec-shaped.md.hbs +66 -22
  549. package/dist/templates/spec/spec.md.hbs +46 -23
  550. package/dist/templates/spec/story.md.hbs +15 -4
  551. package/dist/templates/spec/task.md.hbs +53 -5
  552. package/dist/utils/constants.d.ts +1 -1
  553. package/dist/utils/constants.js +1 -1
  554. package/dist/utils/logger.d.ts +0 -3
  555. package/dist/utils/logger.d.ts.map +1 -1
  556. package/dist/utils/logger.js +0 -6
  557. package/dist/utils/logger.js.map +1 -1
  558. package/docs/ARTIFACT_REVIEW.md +110 -0
  559. package/docs/CLI.md +1216 -0
  560. package/docs/CROSS_RUNTIME_SETUP.md +168 -0
  561. package/docs/TROUBLESHOOTING.md +227 -0
  562. package/lib/dashboard-verifier.d.mts +29 -0
  563. package/lib/dashboard-verifier.mjs +307 -0
  564. package/lib/host-packages/adapter-registry.json +44 -0
  565. package/lib/host-packages/claude/.claude-plugin/marketplace.json +20 -0
  566. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +9 -0
  567. package/lib/host-packages/claude/openplanr/.openplanr-content.json +1179 -0
  568. package/lib/host-packages/claude/openplanr/agents/planr-backend.md +66 -0
  569. package/lib/host-packages/claude/openplanr/agents/planr-database.md +165 -0
  570. package/lib/host-packages/claude/openplanr/agents/planr-designer.md +57 -0
  571. package/lib/host-packages/claude/openplanr/agents/planr-devops.md +57 -0
  572. package/lib/host-packages/claude/openplanr/agents/planr-documentation.md +63 -0
  573. package/lib/host-packages/claude/openplanr/agents/planr-entity-scaffold.md +29 -0
  574. package/lib/host-packages/claude/openplanr/agents/planr-frontend.md +69 -0
  575. package/lib/host-packages/claude/openplanr/agents/planr-qa.md +162 -0
  576. package/lib/host-packages/claude/openplanr/agents/planr-specification.md +124 -0
  577. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/backend.md +93 -0
  578. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/designer.md +90 -0
  579. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/devops.md +55 -0
  580. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/doc-gen.md +67 -0
  581. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/frontend.md +94 -0
  582. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/qa.md +17 -0
  583. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/default/specification.md +111 -0
  584. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/contract-create-modify-preserve.md +17 -0
  585. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/design-craft-rubric.md +51 -0
  586. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/design-principles.md +43 -0
  587. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/design-spec-template.md +88 -0
  588. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/task-context-resolution.md +60 -0
  589. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/verification-and-recovery-backend.md +26 -0
  590. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/shared/verification-and-recovery-frontend.md +27 -0
  591. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/backend.md +96 -0
  592. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/designer.md +83 -0
  593. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/devops.md +55 -0
  594. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/doc-gen.md +67 -0
  595. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/frontend.md +96 -0
  596. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/qa.md +17 -0
  597. package/lib/host-packages/claude/openplanr/references/agents/shared/modes/spec-driven/specification.md +112 -0
  598. package/lib/host-packages/claude/openplanr/references/pipeline/stacks/backend/nestjs.md +130 -0
  599. package/lib/host-packages/claude/openplanr/references/pipeline/stacks/database/mongodb.md +122 -0
  600. package/lib/host-packages/claude/openplanr/references/pipeline/stacks/database/prisma.md +155 -0
  601. package/lib/host-packages/claude/openplanr/references/pipeline/stacks/devops/docker-compose.md +140 -0
  602. package/lib/host-packages/claude/openplanr/references/pipeline/stacks/frontend/nextjs.md +123 -0
  603. package/lib/host-packages/claude/openplanr/skills/artifact/SKILL.md +54 -0
  604. package/lib/host-packages/claude/openplanr/skills/artifact/openplanr.skill.json +48 -0
  605. package/lib/host-packages/claude/openplanr/skills/artifact/references/company-review.md +18 -0
  606. package/lib/host-packages/claude/openplanr/skills/artifact/references/design-sharing.md +51 -0
  607. package/lib/host-packages/claude/openplanr/skills/browser-qa/SKILL.md +34 -0
  608. package/lib/host-packages/claude/openplanr/skills/browser-qa/openplanr.skill.json +26 -0
  609. package/lib/host-packages/claude/openplanr/skills/ceo-review/SKILL.md +47 -0
  610. package/lib/host-packages/claude/openplanr/skills/ceo-review/openplanr.skill.json +81 -0
  611. package/lib/host-packages/claude/openplanr/skills/ceo-review/references/operate-advisor-contract.md +111 -0
  612. package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/errors.mjs +8 -0
  613. package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/operate-review-contract.mjs +438 -0
  614. package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/operate-review-note.mjs +595 -0
  615. package/lib/host-packages/claude/openplanr/skills/ceo-review/scripts/validate-note.mjs +31 -0
  616. package/lib/host-packages/claude/openplanr/skills/chair-review/SKILL.md +101 -0
  617. package/lib/host-packages/claude/openplanr/skills/chair-review/openplanr.skill.json +70 -0
  618. package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/errors.mjs +8 -0
  619. package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/operate-review-contract.mjs +438 -0
  620. package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/operate-review-note.mjs +595 -0
  621. package/lib/host-packages/claude/openplanr/skills/chair-review/scripts/validate-note.mjs +31 -0
  622. package/lib/host-packages/claude/openplanr/skills/challenger-review/SKILL.md +86 -0
  623. package/lib/host-packages/claude/openplanr/skills/challenger-review/openplanr.skill.json +70 -0
  624. package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/errors.mjs +8 -0
  625. package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/operate-review-contract.mjs +438 -0
  626. package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/operate-review-note.mjs +595 -0
  627. package/lib/host-packages/claude/openplanr/skills/challenger-review/scripts/validate-note.mjs +31 -0
  628. package/lib/host-packages/claude/openplanr/skills/cmo-review/SKILL.md +46 -0
  629. package/lib/host-packages/claude/openplanr/skills/cmo-review/openplanr.skill.json +81 -0
  630. package/lib/host-packages/claude/openplanr/skills/cmo-review/references/operate-advisor-contract.md +111 -0
  631. package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/errors.mjs +8 -0
  632. package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/operate-review-contract.mjs +438 -0
  633. package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/operate-review-note.mjs +595 -0
  634. package/lib/host-packages/claude/openplanr/skills/cmo-review/scripts/validate-note.mjs +31 -0
  635. package/lib/host-packages/claude/openplanr/skills/coo-review/SKILL.md +45 -0
  636. package/lib/host-packages/claude/openplanr/skills/coo-review/openplanr.skill.json +81 -0
  637. package/lib/host-packages/claude/openplanr/skills/coo-review/references/operate-advisor-contract.md +111 -0
  638. package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/errors.mjs +8 -0
  639. package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/operate-review-contract.mjs +438 -0
  640. package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/operate-review-note.mjs +595 -0
  641. package/lib/host-packages/claude/openplanr/skills/coo-review/scripts/validate-note.mjs +31 -0
  642. package/lib/host-packages/claude/openplanr/skills/cpo-review/SKILL.md +48 -0
  643. package/lib/host-packages/claude/openplanr/skills/cpo-review/openplanr.skill.json +81 -0
  644. package/lib/host-packages/claude/openplanr/skills/cpo-review/references/operate-advisor-contract.md +111 -0
  645. package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/errors.mjs +8 -0
  646. package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/operate-review-contract.mjs +438 -0
  647. package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/operate-review-note.mjs +595 -0
  648. package/lib/host-packages/claude/openplanr/skills/cpo-review/scripts/validate-note.mjs +31 -0
  649. package/lib/host-packages/claude/openplanr/skills/cto-review/SKILL.md +47 -0
  650. package/lib/host-packages/claude/openplanr/skills/cto-review/openplanr.skill.json +81 -0
  651. package/lib/host-packages/claude/openplanr/skills/cto-review/references/operate-advisor-contract.md +111 -0
  652. package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/errors.mjs +8 -0
  653. package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/operate-review-contract.mjs +438 -0
  654. package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/operate-review-note.mjs +595 -0
  655. package/lib/host-packages/claude/openplanr/skills/cto-review/scripts/validate-note.mjs +31 -0
  656. package/lib/host-packages/claude/openplanr/skills/dashboard/SKILL.md +20 -0
  657. package/lib/host-packages/claude/openplanr/skills/dashboard/openplanr.skill.json +26 -0
  658. package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +73 -0
  659. package/lib/host-packages/claude/openplanr/skills/design/openplanr.skill.json +466 -0
  660. package/lib/host-packages/claude/openplanr/skills/design/references/craft.md +68 -0
  661. package/lib/host-packages/claude/openplanr/skills/design/references/design-spec-template.md +88 -0
  662. package/lib/host-packages/claude/openplanr/skills/design/references/design-system.md +33 -0
  663. package/lib/host-packages/claude/openplanr/skills/design/references/discovery.md +53 -0
  664. package/lib/host-packages/claude/openplanr/skills/design/references/generation.md +105 -0
  665. package/lib/host-packages/claude/openplanr/skills/design/references/handoff.md +47 -0
  666. package/lib/host-packages/claude/openplanr/skills/design/references/review.md +88 -0
  667. package/lib/host-packages/claude/openplanr/skills/design/references/team-review.md +131 -0
  668. package/lib/host-packages/claude/openplanr/skills/design/references/utilities.md +93 -0
  669. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-document.schema.json +306 -0
  670. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-review-context.schema.json +191 -0
  671. package/lib/host-packages/claude/openplanr/skills/design/schemas/design-review-handoff.schema.json +407 -0
  672. package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +17323 -0
  673. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/notices/entities.txt +13 -0
  674. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/notices/parse5.txt +21 -0
  675. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  676. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  677. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  678. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  679. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  680. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  681. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  682. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +115 -0
  683. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  684. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  685. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  686. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  687. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  688. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  689. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  690. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  691. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  692. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  693. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  694. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  695. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  696. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  697. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  698. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  699. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  700. package/lib/host-packages/claude/openplanr/skills/design-loop/SKILL.md +58 -0
  701. package/lib/host-packages/claude/openplanr/skills/design-loop/openplanr.skill.json +466 -0
  702. package/lib/host-packages/claude/openplanr/skills/design-loop/references/craft.md +68 -0
  703. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-spec-template.md +88 -0
  704. package/lib/host-packages/claude/openplanr/skills/design-loop/references/design-system.md +33 -0
  705. package/lib/host-packages/claude/openplanr/skills/design-loop/references/discovery.md +53 -0
  706. package/lib/host-packages/claude/openplanr/skills/design-loop/references/generation.md +105 -0
  707. package/lib/host-packages/claude/openplanr/skills/design-loop/references/handoff.md +47 -0
  708. package/lib/host-packages/claude/openplanr/skills/design-loop/references/review.md +88 -0
  709. package/lib/host-packages/claude/openplanr/skills/design-loop/references/team-review.md +131 -0
  710. package/lib/host-packages/claude/openplanr/skills/design-loop/references/utilities.md +93 -0
  711. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-document.schema.json +306 -0
  712. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-review-context.schema.json +191 -0
  713. package/lib/host-packages/claude/openplanr/skills/design-loop/schemas/design-review-handoff.schema.json +407 -0
  714. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +17323 -0
  715. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/notices/entities.txt +13 -0
  716. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/notices/parse5.txt +21 -0
  717. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  718. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  719. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  720. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  721. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  722. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  723. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  724. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +115 -0
  725. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  726. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  727. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  728. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  729. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  730. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  731. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  732. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  733. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  734. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  735. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  736. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  737. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  738. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  739. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  740. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  741. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  742. package/lib/host-packages/claude/openplanr/skills/design-review/SKILL.md +54 -0
  743. package/lib/host-packages/claude/openplanr/skills/design-review/openplanr.skill.json +466 -0
  744. package/lib/host-packages/claude/openplanr/skills/design-review/references/craft.md +68 -0
  745. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-spec-template.md +88 -0
  746. package/lib/host-packages/claude/openplanr/skills/design-review/references/design-system.md +33 -0
  747. package/lib/host-packages/claude/openplanr/skills/design-review/references/discovery.md +53 -0
  748. package/lib/host-packages/claude/openplanr/skills/design-review/references/generation.md +105 -0
  749. package/lib/host-packages/claude/openplanr/skills/design-review/references/handoff.md +47 -0
  750. package/lib/host-packages/claude/openplanr/skills/design-review/references/review.md +88 -0
  751. package/lib/host-packages/claude/openplanr/skills/design-review/references/team-review.md +131 -0
  752. package/lib/host-packages/claude/openplanr/skills/design-review/references/utilities.md +93 -0
  753. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-document.schema.json +306 -0
  754. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-review-context.schema.json +191 -0
  755. package/lib/host-packages/claude/openplanr/skills/design-review/schemas/design-review-handoff.schema.json +407 -0
  756. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +17323 -0
  757. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/notices/entities.txt +13 -0
  758. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/notices/parse5.txt +21 -0
  759. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  760. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  761. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  762. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  763. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  764. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  765. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  766. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +115 -0
  767. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  768. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  769. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  770. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  771. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  772. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  773. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  774. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  775. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  776. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  777. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  778. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  779. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  780. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  781. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  782. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  783. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  784. package/lib/host-packages/claude/openplanr/skills/diagram/SKILL.md +65 -0
  785. package/lib/host-packages/claude/openplanr/skills/diagram/openplanr.skill.json +59 -0
  786. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-document.md +86 -0
  787. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-fidelity.md +19 -0
  788. package/lib/host-packages/claude/openplanr/skills/diagram/references/diagram-intent-to-ir.md +22 -0
  789. package/lib/host-packages/claude/openplanr/skills/doctor/SKILL.md +40 -0
  790. package/lib/host-packages/claude/openplanr/skills/doctor/openplanr.skill.json +37 -0
  791. package/lib/host-packages/claude/openplanr/skills/doctor/references/upgrade.md +106 -0
  792. package/lib/host-packages/claude/openplanr/skills/investigate/SKILL.md +31 -0
  793. package/lib/host-packages/claude/openplanr/skills/investigate/openplanr.skill.json +26 -0
  794. package/lib/host-packages/claude/openplanr/skills/land/SKILL.md +33 -0
  795. package/lib/host-packages/claude/openplanr/skills/land/openplanr.skill.json +26 -0
  796. package/lib/host-packages/claude/openplanr/skills/operate/SKILL.md +181 -0
  797. package/lib/host-packages/claude/openplanr/skills/operate/openplanr.skill.json +70 -0
  798. package/lib/host-packages/claude/openplanr/skills/operate/scripts/errors.mjs +8 -0
  799. package/lib/host-packages/claude/openplanr/skills/operate/scripts/operate-review-contract.mjs +438 -0
  800. package/lib/host-packages/claude/openplanr/skills/operate/scripts/operate-review-note.mjs +595 -0
  801. package/lib/host-packages/claude/openplanr/skills/operate/scripts/validate-note.mjs +31 -0
  802. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +106 -0
  803. package/lib/host-packages/claude/openplanr/skills/plan/openplanr.skill.json +389 -0
  804. package/lib/host-packages/claude/openplanr/skills/plan/references/artifact-contract.md +39 -0
  805. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-document.schema.json +306 -0
  806. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-review-context.schema.json +191 -0
  807. package/lib/host-packages/claude/openplanr/skills/plan/schemas/design-review-handoff.schema.json +407 -0
  808. package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +17323 -0
  809. package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +120 -0
  810. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/notices/entities.txt +13 -0
  811. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/notices/parse5.txt +21 -0
  812. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  813. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  814. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  815. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  816. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  817. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  818. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  819. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +115 -0
  820. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  821. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  822. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  823. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  824. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  825. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  826. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  827. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  828. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  829. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  830. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  831. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  832. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  833. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  834. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  835. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  836. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  837. package/lib/host-packages/claude/openplanr/skills/plan-review/SKILL.md +39 -0
  838. package/lib/host-packages/claude/openplanr/skills/plan-review/openplanr.skill.json +26 -0
  839. package/lib/host-packages/claude/openplanr/skills/release/SKILL.md +180 -0
  840. package/lib/host-packages/claude/openplanr/skills/release/assets/changelog-template.md +18 -0
  841. package/lib/host-packages/claude/openplanr/skills/release/assets/profile-template.md +45 -0
  842. package/lib/host-packages/claude/openplanr/skills/release/openplanr.skill.json +92 -0
  843. package/lib/host-packages/claude/openplanr/skills/release/references/cadence.md +92 -0
  844. package/lib/host-packages/claude/openplanr/skills/release/references/release-notes.md +127 -0
  845. package/lib/host-packages/claude/openplanr/skills/release/references/schemes.md +103 -0
  846. package/lib/host-packages/claude/openplanr/skills/release/scripts/collect_changes.sh +85 -0
  847. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +80 -0
  848. package/lib/host-packages/claude/openplanr/skills/ship/openplanr.skill.json +48 -0
  849. package/lib/host-packages/claude/openplanr/skills/ship/references/result-contract.md +14 -0
  850. package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +107 -0
  851. package/lib/host-packages/claude/openplanr/skills/spec/SKILL.md +53 -0
  852. package/lib/host-packages/claude/openplanr/skills/spec/openplanr.skill.json +37 -0
  853. package/lib/host-packages/claude/openplanr/skills/spec/references/specification-contract.md +32 -0
  854. package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +21 -0
  855. package/lib/host-packages/claude/openplanr/skills/status/openplanr.skill.json +26 -0
  856. package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +30 -0
  857. package/lib/host-packages/claude/openplanr/skills/sync/openplanr.skill.json +37 -0
  858. package/lib/host-packages/claude/openplanr/skills/sync/scripts/sync.mjs +230 -0
  859. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +939 -0
  860. package/lib/host-packages/cursor/openplanr/manifest.json +32 -0
  861. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/company-review.md +18 -0
  862. package/lib/host-packages/cursor/openplanr/rules/planr-artifact/references/design-sharing.md +51 -0
  863. package/lib/host-packages/cursor/openplanr/rules/planr-artifact.mdc +53 -0
  864. package/lib/host-packages/cursor/openplanr/rules/planr-browser-qa.mdc +34 -0
  865. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/references/operate-advisor-contract.md +111 -0
  866. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/errors.mjs +8 -0
  867. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/operate-review-contract.mjs +438 -0
  868. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/operate-review-note.mjs +595 -0
  869. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review/scripts/validate-note.mjs +31 -0
  870. package/lib/host-packages/cursor/openplanr/rules/planr-ceo-review.mdc +45 -0
  871. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/errors.mjs +8 -0
  872. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/operate-review-contract.mjs +438 -0
  873. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/operate-review-note.mjs +595 -0
  874. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review/scripts/validate-note.mjs +31 -0
  875. package/lib/host-packages/cursor/openplanr/rules/planr-chair-review.mdc +99 -0
  876. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/errors.mjs +8 -0
  877. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/operate-review-contract.mjs +438 -0
  878. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/operate-review-note.mjs +595 -0
  879. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review/scripts/validate-note.mjs +31 -0
  880. package/lib/host-packages/cursor/openplanr/rules/planr-challenger-review.mdc +84 -0
  881. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/references/operate-advisor-contract.md +111 -0
  882. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/errors.mjs +8 -0
  883. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/operate-review-contract.mjs +438 -0
  884. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/operate-review-note.mjs +595 -0
  885. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review/scripts/validate-note.mjs +31 -0
  886. package/lib/host-packages/cursor/openplanr/rules/planr-cmo-review.mdc +44 -0
  887. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/references/operate-advisor-contract.md +111 -0
  888. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/errors.mjs +8 -0
  889. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/operate-review-contract.mjs +438 -0
  890. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/operate-review-note.mjs +595 -0
  891. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review/scripts/validate-note.mjs +31 -0
  892. package/lib/host-packages/cursor/openplanr/rules/planr-coo-review.mdc +43 -0
  893. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/references/operate-advisor-contract.md +111 -0
  894. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/errors.mjs +8 -0
  895. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/operate-review-contract.mjs +438 -0
  896. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/operate-review-note.mjs +595 -0
  897. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review/scripts/validate-note.mjs +31 -0
  898. package/lib/host-packages/cursor/openplanr/rules/planr-cpo-review.mdc +46 -0
  899. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/references/operate-advisor-contract.md +111 -0
  900. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/errors.mjs +8 -0
  901. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/operate-review-contract.mjs +438 -0
  902. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/operate-review-note.mjs +595 -0
  903. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review/scripts/validate-note.mjs +31 -0
  904. package/lib/host-packages/cursor/openplanr/rules/planr-cto-review.mdc +45 -0
  905. package/lib/host-packages/cursor/openplanr/rules/planr-dashboard.mdc +19 -0
  906. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/craft.md +68 -0
  907. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-spec-template.md +88 -0
  908. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/design-system.md +33 -0
  909. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/discovery.md +53 -0
  910. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/generation.md +105 -0
  911. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/handoff.md +47 -0
  912. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/review.md +88 -0
  913. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/team-review.md +131 -0
  914. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/utilities.md +93 -0
  915. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-document.schema.json +306 -0
  916. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-review-context.schema.json +191 -0
  917. package/lib/host-packages/cursor/openplanr/rules/planr-design/schemas/design-review-handoff.schema.json +407 -0
  918. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +17323 -0
  919. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/notices/entities.txt +13 -0
  920. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/notices/parse5.txt +21 -0
  921. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  922. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  923. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  924. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  925. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  926. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  927. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  928. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +115 -0
  929. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  930. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  931. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  932. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  933. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  934. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  935. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  936. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  937. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  938. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  939. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  940. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  941. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  942. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  943. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  944. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  945. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  946. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/craft.md +68 -0
  947. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-spec-template.md +88 -0
  948. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/design-system.md +33 -0
  949. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/discovery.md +53 -0
  950. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/generation.md +105 -0
  951. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/handoff.md +47 -0
  952. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/review.md +88 -0
  953. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/team-review.md +131 -0
  954. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/utilities.md +93 -0
  955. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-document.schema.json +306 -0
  956. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-review-context.schema.json +191 -0
  957. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/schemas/design-review-handoff.schema.json +407 -0
  958. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +17323 -0
  959. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/notices/entities.txt +13 -0
  960. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/notices/parse5.txt +21 -0
  961. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  962. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  963. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  964. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  965. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  966. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  967. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  968. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +115 -0
  969. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  970. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  971. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  972. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  973. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  974. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  975. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  976. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  977. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  978. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  979. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  980. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  981. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  982. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  983. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  984. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  985. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  986. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop.mdc +57 -0
  987. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/craft.md +68 -0
  988. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-spec-template.md +88 -0
  989. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/design-system.md +33 -0
  990. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/discovery.md +53 -0
  991. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/generation.md +105 -0
  992. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/handoff.md +47 -0
  993. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/review.md +88 -0
  994. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/team-review.md +131 -0
  995. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/utilities.md +93 -0
  996. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-document.schema.json +306 -0
  997. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-review-context.schema.json +191 -0
  998. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/schemas/design-review-handoff.schema.json +407 -0
  999. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +17323 -0
  1000. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/notices/entities.txt +13 -0
  1001. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/notices/parse5.txt +21 -0
  1002. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  1003. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  1004. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  1005. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  1006. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  1007. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  1008. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  1009. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +115 -0
  1010. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  1011. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  1012. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  1013. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  1014. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  1015. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  1016. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  1017. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  1018. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  1019. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  1020. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  1021. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  1022. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  1023. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  1024. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  1025. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  1026. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  1027. package/lib/host-packages/cursor/openplanr/rules/planr-design-review.mdc +53 -0
  1028. package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +72 -0
  1029. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-document.md +86 -0
  1030. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-fidelity.md +19 -0
  1031. package/lib/host-packages/cursor/openplanr/rules/planr-diagram/references/diagram-intent-to-ir.md +22 -0
  1032. package/lib/host-packages/cursor/openplanr/rules/planr-diagram.mdc +64 -0
  1033. package/lib/host-packages/cursor/openplanr/rules/planr-doctor/references/upgrade.md +106 -0
  1034. package/lib/host-packages/cursor/openplanr/rules/planr-doctor.mdc +39 -0
  1035. package/lib/host-packages/cursor/openplanr/rules/planr-investigate.mdc +31 -0
  1036. package/lib/host-packages/cursor/openplanr/rules/planr-land.mdc +32 -0
  1037. package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/errors.mjs +8 -0
  1038. package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/operate-review-contract.mjs +438 -0
  1039. package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/operate-review-note.mjs +595 -0
  1040. package/lib/host-packages/cursor/openplanr/rules/planr-operate/scripts/validate-note.mjs +31 -0
  1041. package/lib/host-packages/cursor/openplanr/rules/planr-operate.mdc +180 -0
  1042. package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/artifact-contract.md +39 -0
  1043. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-document.schema.json +306 -0
  1044. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-review-context.schema.json +191 -0
  1045. package/lib/host-packages/cursor/openplanr/rules/planr-plan/schemas/design-review-handoff.schema.json +407 -0
  1046. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +17323 -0
  1047. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +120 -0
  1048. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/notices/entities.txt +13 -0
  1049. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/notices/parse5.txt +21 -0
  1050. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  1051. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  1052. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  1053. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  1054. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  1055. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  1056. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  1057. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +115 -0
  1058. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  1059. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  1060. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  1061. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  1062. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  1063. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  1064. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  1065. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  1066. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  1067. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  1068. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  1069. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  1070. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  1071. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  1072. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  1073. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  1074. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  1075. package/lib/host-packages/cursor/openplanr/rules/planr-plan-review.mdc +38 -0
  1076. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +105 -0
  1077. package/lib/host-packages/cursor/openplanr/rules/planr-release/assets/changelog-template.md +18 -0
  1078. package/lib/host-packages/cursor/openplanr/rules/planr-release/assets/profile-template.md +45 -0
  1079. package/lib/host-packages/cursor/openplanr/rules/planr-release/references/cadence.md +92 -0
  1080. package/lib/host-packages/cursor/openplanr/rules/planr-release/references/release-notes.md +127 -0
  1081. package/lib/host-packages/cursor/openplanr/rules/planr-release/references/schemes.md +103 -0
  1082. package/lib/host-packages/cursor/openplanr/rules/planr-release/scripts/collect_changes.sh +85 -0
  1083. package/lib/host-packages/cursor/openplanr/rules/planr-release.mdc +179 -0
  1084. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/result-contract.md +14 -0
  1085. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +107 -0
  1086. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +79 -0
  1087. package/lib/host-packages/cursor/openplanr/rules/planr-spec/references/specification-contract.md +32 -0
  1088. package/lib/host-packages/cursor/openplanr/rules/planr-spec.mdc +52 -0
  1089. package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +20 -0
  1090. package/lib/host-packages/cursor/openplanr/rules/planr-sync/scripts/sync.mjs +230 -0
  1091. package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +29 -0
  1092. package/lib/host-packages/openai/.claude-plugin/marketplace.json +19 -0
  1093. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +10 -0
  1094. package/lib/host-packages/openai/openplanr/.openplanr-content.json +1139 -0
  1095. package/lib/host-packages/openai/openplanr/skills/artifact/SKILL.md +54 -0
  1096. package/lib/host-packages/openai/openplanr/skills/artifact/agents/openai.yaml +6 -0
  1097. package/lib/host-packages/openai/openplanr/skills/artifact/openplanr.skill.json +48 -0
  1098. package/lib/host-packages/openai/openplanr/skills/artifact/references/company-review.md +18 -0
  1099. package/lib/host-packages/openai/openplanr/skills/artifact/references/design-sharing.md +51 -0
  1100. package/lib/host-packages/openai/openplanr/skills/browser-qa/SKILL.md +34 -0
  1101. package/lib/host-packages/openai/openplanr/skills/browser-qa/agents/openai.yaml +6 -0
  1102. package/lib/host-packages/openai/openplanr/skills/browser-qa/openplanr.skill.json +26 -0
  1103. package/lib/host-packages/openai/openplanr/skills/ceo-review/SKILL.md +47 -0
  1104. package/lib/host-packages/openai/openplanr/skills/ceo-review/agents/openai.yaml +6 -0
  1105. package/lib/host-packages/openai/openplanr/skills/ceo-review/openplanr.skill.json +81 -0
  1106. package/lib/host-packages/openai/openplanr/skills/ceo-review/references/operate-advisor-contract.md +111 -0
  1107. package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/errors.mjs +8 -0
  1108. package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/operate-review-contract.mjs +438 -0
  1109. package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/operate-review-note.mjs +595 -0
  1110. package/lib/host-packages/openai/openplanr/skills/ceo-review/scripts/validate-note.mjs +31 -0
  1111. package/lib/host-packages/openai/openplanr/skills/chair-review/SKILL.md +101 -0
  1112. package/lib/host-packages/openai/openplanr/skills/chair-review/agents/openai.yaml +6 -0
  1113. package/lib/host-packages/openai/openplanr/skills/chair-review/openplanr.skill.json +70 -0
  1114. package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/errors.mjs +8 -0
  1115. package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/operate-review-contract.mjs +438 -0
  1116. package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/operate-review-note.mjs +595 -0
  1117. package/lib/host-packages/openai/openplanr/skills/chair-review/scripts/validate-note.mjs +31 -0
  1118. package/lib/host-packages/openai/openplanr/skills/challenger-review/SKILL.md +86 -0
  1119. package/lib/host-packages/openai/openplanr/skills/challenger-review/agents/openai.yaml +6 -0
  1120. package/lib/host-packages/openai/openplanr/skills/challenger-review/openplanr.skill.json +70 -0
  1121. package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/errors.mjs +8 -0
  1122. package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/operate-review-contract.mjs +438 -0
  1123. package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/operate-review-note.mjs +595 -0
  1124. package/lib/host-packages/openai/openplanr/skills/challenger-review/scripts/validate-note.mjs +31 -0
  1125. package/lib/host-packages/openai/openplanr/skills/cmo-review/SKILL.md +46 -0
  1126. package/lib/host-packages/openai/openplanr/skills/cmo-review/agents/openai.yaml +6 -0
  1127. package/lib/host-packages/openai/openplanr/skills/cmo-review/openplanr.skill.json +81 -0
  1128. package/lib/host-packages/openai/openplanr/skills/cmo-review/references/operate-advisor-contract.md +111 -0
  1129. package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/errors.mjs +8 -0
  1130. package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/operate-review-contract.mjs +438 -0
  1131. package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/operate-review-note.mjs +595 -0
  1132. package/lib/host-packages/openai/openplanr/skills/cmo-review/scripts/validate-note.mjs +31 -0
  1133. package/lib/host-packages/openai/openplanr/skills/coo-review/SKILL.md +45 -0
  1134. package/lib/host-packages/openai/openplanr/skills/coo-review/agents/openai.yaml +6 -0
  1135. package/lib/host-packages/openai/openplanr/skills/coo-review/openplanr.skill.json +81 -0
  1136. package/lib/host-packages/openai/openplanr/skills/coo-review/references/operate-advisor-contract.md +111 -0
  1137. package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/errors.mjs +8 -0
  1138. package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/operate-review-contract.mjs +438 -0
  1139. package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/operate-review-note.mjs +595 -0
  1140. package/lib/host-packages/openai/openplanr/skills/coo-review/scripts/validate-note.mjs +31 -0
  1141. package/lib/host-packages/openai/openplanr/skills/cpo-review/SKILL.md +48 -0
  1142. package/lib/host-packages/openai/openplanr/skills/cpo-review/agents/openai.yaml +6 -0
  1143. package/lib/host-packages/openai/openplanr/skills/cpo-review/openplanr.skill.json +81 -0
  1144. package/lib/host-packages/openai/openplanr/skills/cpo-review/references/operate-advisor-contract.md +111 -0
  1145. package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/errors.mjs +8 -0
  1146. package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/operate-review-contract.mjs +438 -0
  1147. package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/operate-review-note.mjs +595 -0
  1148. package/lib/host-packages/openai/openplanr/skills/cpo-review/scripts/validate-note.mjs +31 -0
  1149. package/lib/host-packages/openai/openplanr/skills/cto-review/SKILL.md +47 -0
  1150. package/lib/host-packages/openai/openplanr/skills/cto-review/agents/openai.yaml +6 -0
  1151. package/lib/host-packages/openai/openplanr/skills/cto-review/openplanr.skill.json +81 -0
  1152. package/lib/host-packages/openai/openplanr/skills/cto-review/references/operate-advisor-contract.md +111 -0
  1153. package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/errors.mjs +8 -0
  1154. package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/operate-review-contract.mjs +438 -0
  1155. package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/operate-review-note.mjs +595 -0
  1156. package/lib/host-packages/openai/openplanr/skills/cto-review/scripts/validate-note.mjs +31 -0
  1157. package/lib/host-packages/openai/openplanr/skills/dashboard/SKILL.md +20 -0
  1158. package/lib/host-packages/openai/openplanr/skills/dashboard/agents/openai.yaml +6 -0
  1159. package/lib/host-packages/openai/openplanr/skills/dashboard/openplanr.skill.json +26 -0
  1160. package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +73 -0
  1161. package/lib/host-packages/openai/openplanr/skills/design/agents/openai.yaml +6 -0
  1162. package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +466 -0
  1163. package/lib/host-packages/openai/openplanr/skills/design/references/craft.md +68 -0
  1164. package/lib/host-packages/openai/openplanr/skills/design/references/design-spec-template.md +88 -0
  1165. package/lib/host-packages/openai/openplanr/skills/design/references/design-system.md +33 -0
  1166. package/lib/host-packages/openai/openplanr/skills/design/references/discovery.md +53 -0
  1167. package/lib/host-packages/openai/openplanr/skills/design/references/generation.md +105 -0
  1168. package/lib/host-packages/openai/openplanr/skills/design/references/handoff.md +47 -0
  1169. package/lib/host-packages/openai/openplanr/skills/design/references/review.md +88 -0
  1170. package/lib/host-packages/openai/openplanr/skills/design/references/team-review.md +131 -0
  1171. package/lib/host-packages/openai/openplanr/skills/design/references/utilities.md +93 -0
  1172. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-document.schema.json +306 -0
  1173. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-review-context.schema.json +191 -0
  1174. package/lib/host-packages/openai/openplanr/skills/design/schemas/design-review-handoff.schema.json +407 -0
  1175. package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +17323 -0
  1176. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/notices/entities.txt +13 -0
  1177. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/notices/parse5.txt +21 -0
  1178. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  1179. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  1180. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  1181. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  1182. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  1183. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  1184. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  1185. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +115 -0
  1186. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  1187. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  1188. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  1189. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  1190. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  1191. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  1192. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  1193. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  1194. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  1195. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  1196. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  1197. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  1198. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  1199. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  1200. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  1201. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  1202. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  1203. package/lib/host-packages/openai/openplanr/skills/design-loop/SKILL.md +58 -0
  1204. package/lib/host-packages/openai/openplanr/skills/design-loop/agents/openai.yaml +6 -0
  1205. package/lib/host-packages/openai/openplanr/skills/design-loop/openplanr.skill.json +466 -0
  1206. package/lib/host-packages/openai/openplanr/skills/design-loop/references/craft.md +68 -0
  1207. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-spec-template.md +88 -0
  1208. package/lib/host-packages/openai/openplanr/skills/design-loop/references/design-system.md +33 -0
  1209. package/lib/host-packages/openai/openplanr/skills/design-loop/references/discovery.md +53 -0
  1210. package/lib/host-packages/openai/openplanr/skills/design-loop/references/generation.md +105 -0
  1211. package/lib/host-packages/openai/openplanr/skills/design-loop/references/handoff.md +47 -0
  1212. package/lib/host-packages/openai/openplanr/skills/design-loop/references/review.md +88 -0
  1213. package/lib/host-packages/openai/openplanr/skills/design-loop/references/team-review.md +131 -0
  1214. package/lib/host-packages/openai/openplanr/skills/design-loop/references/utilities.md +93 -0
  1215. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-document.schema.json +306 -0
  1216. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-review-context.schema.json +191 -0
  1217. package/lib/host-packages/openai/openplanr/skills/design-loop/schemas/design-review-handoff.schema.json +407 -0
  1218. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +17323 -0
  1219. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/notices/entities.txt +13 -0
  1220. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/notices/parse5.txt +21 -0
  1221. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  1222. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  1223. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  1224. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  1225. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  1226. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  1227. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  1228. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +115 -0
  1229. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  1230. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  1231. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  1232. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  1233. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  1234. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  1235. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  1236. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  1237. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  1238. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  1239. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  1240. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  1241. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  1242. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  1243. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  1244. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  1245. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  1246. package/lib/host-packages/openai/openplanr/skills/design-review/SKILL.md +54 -0
  1247. package/lib/host-packages/openai/openplanr/skills/design-review/agents/openai.yaml +6 -0
  1248. package/lib/host-packages/openai/openplanr/skills/design-review/openplanr.skill.json +466 -0
  1249. package/lib/host-packages/openai/openplanr/skills/design-review/references/craft.md +68 -0
  1250. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-spec-template.md +88 -0
  1251. package/lib/host-packages/openai/openplanr/skills/design-review/references/design-system.md +33 -0
  1252. package/lib/host-packages/openai/openplanr/skills/design-review/references/discovery.md +53 -0
  1253. package/lib/host-packages/openai/openplanr/skills/design-review/references/generation.md +105 -0
  1254. package/lib/host-packages/openai/openplanr/skills/design-review/references/handoff.md +47 -0
  1255. package/lib/host-packages/openai/openplanr/skills/design-review/references/review.md +88 -0
  1256. package/lib/host-packages/openai/openplanr/skills/design-review/references/team-review.md +131 -0
  1257. package/lib/host-packages/openai/openplanr/skills/design-review/references/utilities.md +93 -0
  1258. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-document.schema.json +306 -0
  1259. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-review-context.schema.json +191 -0
  1260. package/lib/host-packages/openai/openplanr/skills/design-review/schemas/design-review-handoff.schema.json +407 -0
  1261. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +17323 -0
  1262. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/notices/entities.txt +13 -0
  1263. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/notices/parse5.txt +21 -0
  1264. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  1265. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  1266. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  1267. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  1268. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  1269. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  1270. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  1271. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +115 -0
  1272. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  1273. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  1274. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  1275. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  1276. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  1277. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  1278. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  1279. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  1280. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  1281. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  1282. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  1283. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  1284. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  1285. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  1286. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  1287. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  1288. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  1289. package/lib/host-packages/openai/openplanr/skills/diagram/SKILL.md +65 -0
  1290. package/lib/host-packages/openai/openplanr/skills/diagram/agents/openai.yaml +6 -0
  1291. package/lib/host-packages/openai/openplanr/skills/diagram/openplanr.skill.json +59 -0
  1292. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-document.md +86 -0
  1293. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-fidelity.md +19 -0
  1294. package/lib/host-packages/openai/openplanr/skills/diagram/references/diagram-intent-to-ir.md +22 -0
  1295. package/lib/host-packages/openai/openplanr/skills/doctor/SKILL.md +40 -0
  1296. package/lib/host-packages/openai/openplanr/skills/doctor/agents/openai.yaml +6 -0
  1297. package/lib/host-packages/openai/openplanr/skills/doctor/openplanr.skill.json +37 -0
  1298. package/lib/host-packages/openai/openplanr/skills/doctor/references/upgrade.md +106 -0
  1299. package/lib/host-packages/openai/openplanr/skills/investigate/SKILL.md +31 -0
  1300. package/lib/host-packages/openai/openplanr/skills/investigate/agents/openai.yaml +6 -0
  1301. package/lib/host-packages/openai/openplanr/skills/investigate/openplanr.skill.json +26 -0
  1302. package/lib/host-packages/openai/openplanr/skills/land/SKILL.md +33 -0
  1303. package/lib/host-packages/openai/openplanr/skills/land/agents/openai.yaml +6 -0
  1304. package/lib/host-packages/openai/openplanr/skills/land/openplanr.skill.json +26 -0
  1305. package/lib/host-packages/openai/openplanr/skills/operate/SKILL.md +181 -0
  1306. package/lib/host-packages/openai/openplanr/skills/operate/agents/openai.yaml +6 -0
  1307. package/lib/host-packages/openai/openplanr/skills/operate/openplanr.skill.json +70 -0
  1308. package/lib/host-packages/openai/openplanr/skills/operate/scripts/errors.mjs +8 -0
  1309. package/lib/host-packages/openai/openplanr/skills/operate/scripts/operate-review-contract.mjs +438 -0
  1310. package/lib/host-packages/openai/openplanr/skills/operate/scripts/operate-review-note.mjs +595 -0
  1311. package/lib/host-packages/openai/openplanr/skills/operate/scripts/validate-note.mjs +31 -0
  1312. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +106 -0
  1313. package/lib/host-packages/openai/openplanr/skills/plan/agents/openai.yaml +6 -0
  1314. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +389 -0
  1315. package/lib/host-packages/openai/openplanr/skills/plan/references/artifact-contract.md +39 -0
  1316. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-document.schema.json +306 -0
  1317. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-review-context.schema.json +191 -0
  1318. package/lib/host-packages/openai/openplanr/skills/plan/schemas/design-review-handoff.schema.json +407 -0
  1319. package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +17323 -0
  1320. package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +120 -0
  1321. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/notices/entities.txt +13 -0
  1322. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/notices/parse5.txt +21 -0
  1323. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/artifact/templates/artifact-review-stage.js +3994 -0
  1324. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.css +378 -0
  1325. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +805 -0
  1326. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.css +1 -0
  1327. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/share.js +132 -0
  1328. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.css +1103 -0
  1329. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/studio.js +1775 -0
  1330. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +115 -0
  1331. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/registry/artifact-theme.json +60 -0
  1332. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.0.0/design-manifest.schema.json +90 -0
  1333. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-envelope.schema.json +142 -0
  1334. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-paste.schema.json +49 -0
  1335. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-review.schema.json +97 -0
  1336. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.1.0/artifact-theme.schema.json +139 -0
  1337. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-bundle.schema.json +584 -0
  1338. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-context.schema.json +191 -0
  1339. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-handoff.schema.json +407 -0
  1340. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.10.0/design-review-metadata-payload.schema.json +106 -0
  1341. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-review-metadata-payload.schema.json +107 -0
  1342. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-document.schema.json +306 -0
  1343. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-bundle.schema.json +346 -0
  1344. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-review-workspace.schema.json +108 -0
  1345. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-create.schema.json +170 -0
  1346. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-event.schema.json +97 -0
  1347. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.9.0/design-workspace-revision.schema.json +56 -0
  1348. package/lib/host-packages/openai/openplanr/skills/plan-review/SKILL.md +39 -0
  1349. package/lib/host-packages/openai/openplanr/skills/plan-review/agents/openai.yaml +6 -0
  1350. package/lib/host-packages/openai/openplanr/skills/plan-review/openplanr.skill.json +26 -0
  1351. package/lib/host-packages/openai/openplanr/skills/release/SKILL.md +180 -0
  1352. package/lib/host-packages/openai/openplanr/skills/release/agents/openai.yaml +6 -0
  1353. package/lib/host-packages/openai/openplanr/skills/release/assets/changelog-template.md +18 -0
  1354. package/lib/host-packages/openai/openplanr/skills/release/assets/profile-template.md +45 -0
  1355. package/lib/host-packages/openai/openplanr/skills/release/openplanr.skill.json +92 -0
  1356. package/lib/host-packages/openai/openplanr/skills/release/references/cadence.md +92 -0
  1357. package/lib/host-packages/openai/openplanr/skills/release/references/release-notes.md +127 -0
  1358. package/lib/host-packages/openai/openplanr/skills/release/references/schemes.md +103 -0
  1359. package/lib/host-packages/openai/openplanr/skills/release/scripts/collect_changes.sh +85 -0
  1360. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +80 -0
  1361. package/lib/host-packages/openai/openplanr/skills/ship/agents/openai.yaml +6 -0
  1362. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +48 -0
  1363. package/lib/host-packages/openai/openplanr/skills/ship/references/result-contract.md +14 -0
  1364. package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +107 -0
  1365. package/lib/host-packages/openai/openplanr/skills/spec/SKILL.md +53 -0
  1366. package/lib/host-packages/openai/openplanr/skills/spec/agents/openai.yaml +6 -0
  1367. package/lib/host-packages/openai/openplanr/skills/spec/openplanr.skill.json +37 -0
  1368. package/lib/host-packages/openai/openplanr/skills/spec/references/specification-contract.md +32 -0
  1369. package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +21 -0
  1370. package/lib/host-packages/openai/openplanr/skills/status/agents/openai.yaml +6 -0
  1371. package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +26 -0
  1372. package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +30 -0
  1373. package/lib/host-packages/openai/openplanr/skills/sync/agents/openai.yaml +6 -0
  1374. package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +37 -0
  1375. package/lib/host-packages/openai/openplanr/skills/sync/scripts/sync.mjs +230 -0
  1376. package/lib/integrations.d.mts +43 -0
  1377. package/lib/integrations.mjs +230 -0
  1378. package/lib/skill-runtime/errors.mjs +8 -0
  1379. package/lib/skill-runtime/operate-review-contract.mjs +438 -0
  1380. package/lib/skill-runtime/operate-review-note.mjs +595 -0
  1381. package/package.json +56 -18
  1382. package/dist/ai/codebase/context-builder.d.ts +0 -50
  1383. package/dist/ai/codebase/context-builder.d.ts.map +0 -1
  1384. package/dist/ai/codebase/context-builder.js +0 -281
  1385. package/dist/ai/codebase/context-builder.js.map +0 -1
  1386. package/dist/ai/codebase/file-reader.d.ts +0 -22
  1387. package/dist/ai/codebase/file-reader.d.ts.map +0 -1
  1388. package/dist/ai/codebase/file-reader.js +0 -144
  1389. package/dist/ai/codebase/file-reader.js.map +0 -1
  1390. package/dist/ai/codebase/index.d.ts +0 -7
  1391. package/dist/ai/codebase/index.d.ts.map +0 -1
  1392. package/dist/ai/codebase/index.js +0 -7
  1393. package/dist/ai/codebase/index.js.map +0 -1
  1394. package/dist/ai/codebase/pattern-rules.d.ts +0 -28
  1395. package/dist/ai/codebase/pattern-rules.d.ts.map +0 -1
  1396. package/dist/ai/codebase/pattern-rules.js +0 -186
  1397. package/dist/ai/codebase/pattern-rules.js.map +0 -1
  1398. package/dist/ai/codebase/rules-reader.d.ts +0 -14
  1399. package/dist/ai/codebase/rules-reader.d.ts.map +0 -1
  1400. package/dist/ai/codebase/rules-reader.js +0 -25
  1401. package/dist/ai/codebase/rules-reader.js.map +0 -1
  1402. package/dist/ai/codebase/stack-detector.d.ts +0 -18
  1403. package/dist/ai/codebase/stack-detector.d.ts.map +0 -1
  1404. package/dist/ai/codebase/stack-detector.js +0 -173
  1405. package/dist/ai/codebase/stack-detector.js.map +0 -1
  1406. package/dist/ai/codebase/tree-generator.d.ts +0 -8
  1407. package/dist/ai/codebase/tree-generator.d.ts.map +0 -1
  1408. package/dist/ai/codebase/tree-generator.js +0 -84
  1409. package/dist/ai/codebase/tree-generator.js.map +0 -1
  1410. package/dist/ai/errors.d.ts +0 -22
  1411. package/dist/ai/errors.d.ts.map +0 -1
  1412. package/dist/ai/errors.js +0 -72
  1413. package/dist/ai/errors.js.map +0 -1
  1414. package/dist/ai/index.d.ts +0 -11
  1415. package/dist/ai/index.d.ts.map +0 -1
  1416. package/dist/ai/index.js +0 -10
  1417. package/dist/ai/index.js.map +0 -1
  1418. package/dist/ai/prompts/prompt-builder.d.ts +0 -134
  1419. package/dist/ai/prompts/prompt-builder.d.ts.map +0 -1
  1420. package/dist/ai/prompts/prompt-builder.js +0 -295
  1421. package/dist/ai/prompts/prompt-builder.js.map +0 -1
  1422. package/dist/ai/prompts/system-prompts.d.ts +0 -41
  1423. package/dist/ai/prompts/system-prompts.d.ts.map +0 -1
  1424. package/dist/ai/prompts/system-prompts.js +0 -512
  1425. package/dist/ai/prompts/system-prompts.js.map +0 -1
  1426. package/dist/ai/provider-factory.d.ts +0 -10
  1427. package/dist/ai/provider-factory.d.ts.map +0 -1
  1428. package/dist/ai/provider-factory.js +0 -49
  1429. package/dist/ai/provider-factory.js.map +0 -1
  1430. package/dist/ai/providers/anthropic-provider.d.ts +0 -24
  1431. package/dist/ai/providers/anthropic-provider.d.ts.map +0 -1
  1432. package/dist/ai/providers/anthropic-provider.js +0 -97
  1433. package/dist/ai/providers/anthropic-provider.js.map +0 -1
  1434. package/dist/ai/providers/ollama-provider.d.ts +0 -13
  1435. package/dist/ai/providers/ollama-provider.d.ts.map +0 -1
  1436. package/dist/ai/providers/ollama-provider.js +0 -16
  1437. package/dist/ai/providers/ollama-provider.js.map +0 -1
  1438. package/dist/ai/providers/openai-provider.d.ts +0 -19
  1439. package/dist/ai/providers/openai-provider.d.ts.map +0 -1
  1440. package/dist/ai/providers/openai-provider.js +0 -84
  1441. package/dist/ai/providers/openai-provider.js.map +0 -1
  1442. package/dist/ai/schemas/ai-response-schemas.d.ts +0 -340
  1443. package/dist/ai/schemas/ai-response-schemas.d.ts.map +0 -1
  1444. package/dist/ai/schemas/ai-response-schemas.js +0 -278
  1445. package/dist/ai/schemas/ai-response-schemas.js.map +0 -1
  1446. package/dist/ai/types.d.ts +0 -76
  1447. package/dist/ai/types.d.ts.map +0 -1
  1448. package/dist/ai/types.js +0 -49
  1449. package/dist/ai/types.js.map +0 -1
  1450. package/dist/ai/validation/index.d.ts +0 -2
  1451. package/dist/ai/validation/index.d.ts.map +0 -1
  1452. package/dist/ai/validation/index.js +0 -2
  1453. package/dist/ai/validation/index.js.map +0 -1
  1454. package/dist/ai/validation/task-validator.d.ts +0 -37
  1455. package/dist/ai/validation/task-validator.d.ts.map +0 -1
  1456. package/dist/ai/validation/task-validator.js +0 -81
  1457. package/dist/ai/validation/task-validator.js.map +0 -1
  1458. package/dist/cli/commands/config.d.ts +0 -8
  1459. package/dist/cli/commands/config.d.ts.map +0 -1
  1460. package/dist/cli/commands/config.js +0 -224
  1461. package/dist/cli/commands/config.js.map +0 -1
  1462. package/dist/cli/commands/estimate.d.ts +0 -3
  1463. package/dist/cli/commands/estimate.d.ts.map +0 -1
  1464. package/dist/cli/commands/estimate.js +0 -368
  1465. package/dist/cli/commands/estimate.js.map +0 -1
  1466. package/dist/cli/commands/init.d.ts +0 -9
  1467. package/dist/cli/commands/init.d.ts.map +0 -1
  1468. package/dist/cli/commands/init.js +0 -166
  1469. package/dist/cli/commands/init.js.map +0 -1
  1470. package/dist/cli/commands/pipeline.d.ts +0 -3
  1471. package/dist/cli/commands/pipeline.d.ts.map +0 -1
  1472. package/dist/cli/commands/pipeline.js +0 -59
  1473. package/dist/cli/commands/pipeline.js.map +0 -1
  1474. package/dist/cli/commands/plan.d.ts +0 -15
  1475. package/dist/cli/commands/plan.d.ts.map +0 -1
  1476. package/dist/cli/commands/plan.js +0 -444
  1477. package/dist/cli/commands/plan.js.map +0 -1
  1478. package/dist/cli/commands/refine.d.ts +0 -10
  1479. package/dist/cli/commands/refine.d.ts.map +0 -1
  1480. package/dist/cli/commands/refine.js +0 -226
  1481. package/dist/cli/commands/refine.js.map +0 -1
  1482. package/dist/cli/commands/revise.d.ts +0 -24
  1483. package/dist/cli/commands/revise.d.ts.map +0 -1
  1484. package/dist/cli/commands/revise.js +0 -572
  1485. package/dist/cli/commands/revise.js.map +0 -1
  1486. package/dist/cli/helpers/task-creation.d.ts +0 -89
  1487. package/dist/cli/helpers/task-creation.d.ts.map +0 -1
  1488. package/dist/cli/helpers/task-creation.js +0 -139
  1489. package/dist/cli/helpers/task-creation.js.map +0 -1
  1490. package/dist/services/ai-service.d.ts +0 -77
  1491. package/dist/services/ai-service.d.ts.map +0 -1
  1492. package/dist/services/ai-service.js +0 -241
  1493. package/dist/services/ai-service.js.map +0 -1
  1494. package/dist/services/artifact-gathering.d.ts +0 -55
  1495. package/dist/services/artifact-gathering.d.ts.map +0 -1
  1496. package/dist/services/artifact-gathering.js +0 -147
  1497. package/dist/services/artifact-gathering.js.map +0 -1
  1498. package/dist/services/operate/advisors.d.ts +0 -625
  1499. package/dist/services/operate/advisors.d.ts.map +0 -1
  1500. package/dist/services/operate/advisors.js +0 -1545
  1501. package/dist/services/operate/advisors.js.map +0 -1
  1502. package/dist/services/operate/artifact-route-generation.d.ts +0 -111
  1503. package/dist/services/operate/artifact-route-generation.d.ts.map +0 -1
  1504. package/dist/services/operate/artifact-route-generation.js +0 -460
  1505. package/dist/services/operate/artifact-route-generation.js.map +0 -1
  1506. package/dist/services/operate/artifacts.d.ts +0 -66
  1507. package/dist/services/operate/artifacts.d.ts.map +0 -1
  1508. package/dist/services/operate/artifacts.js +0 -336
  1509. package/dist/services/operate/artifacts.js.map +0 -1
  1510. package/dist/services/operate/cadence.d.ts +0 -50
  1511. package/dist/services/operate/cadence.d.ts.map +0 -1
  1512. package/dist/services/operate/cadence.js +0 -56
  1513. package/dist/services/operate/cadence.js.map +0 -1
  1514. package/dist/services/operate/canonical.d.ts +0 -18
  1515. package/dist/services/operate/canonical.d.ts.map +0 -1
  1516. package/dist/services/operate/canonical.js +0 -157
  1517. package/dist/services/operate/canonical.js.map +0 -1
  1518. package/dist/services/operate/citation-resolution.d.ts +0 -161
  1519. package/dist/services/operate/citation-resolution.d.ts.map +0 -1
  1520. package/dist/services/operate/citation-resolution.js +0 -593
  1521. package/dist/services/operate/citation-resolution.js.map +0 -1
  1522. package/dist/services/operate/completion.d.ts +0 -80
  1523. package/dist/services/operate/completion.d.ts.map +0 -1
  1524. package/dist/services/operate/completion.js +0 -279
  1525. package/dist/services/operate/completion.js.map +0 -1
  1526. package/dist/services/operate/config.d.ts +0 -154
  1527. package/dist/services/operate/config.d.ts.map +0 -1
  1528. package/dist/services/operate/config.js +0 -791
  1529. package/dist/services/operate/config.js.map +0 -1
  1530. package/dist/services/operate/consolidation.d.ts +0 -18
  1531. package/dist/services/operate/consolidation.d.ts.map +0 -1
  1532. package/dist/services/operate/consolidation.js +0 -539
  1533. package/dist/services/operate/consolidation.js.map +0 -1
  1534. package/dist/services/operate/context-research.d.ts +0 -84
  1535. package/dist/services/operate/context-research.d.ts.map +0 -1
  1536. package/dist/services/operate/context-research.js +0 -448
  1537. package/dist/services/operate/context-research.js.map +0 -1
  1538. package/dist/services/operate/decision-brief.d.ts +0 -237
  1539. package/dist/services/operate/decision-brief.d.ts.map +0 -1
  1540. package/dist/services/operate/decision-brief.js +0 -368
  1541. package/dist/services/operate/decision-brief.js.map +0 -1
  1542. package/dist/services/operate/doctor.d.ts +0 -85
  1543. package/dist/services/operate/doctor.d.ts.map +0 -1
  1544. package/dist/services/operate/doctor.js +0 -1070
  1545. package/dist/services/operate/doctor.js.map +0 -1
  1546. package/dist/services/operate/drafts.d.ts +0 -48
  1547. package/dist/services/operate/drafts.d.ts.map +0 -1
  1548. package/dist/services/operate/drafts.js +0 -398
  1549. package/dist/services/operate/drafts.js.map +0 -1
  1550. package/dist/services/operate/engine.d.ts +0 -151
  1551. package/dist/services/operate/engine.d.ts.map +0 -1
  1552. package/dist/services/operate/engine.js +0 -1896
  1553. package/dist/services/operate/engine.js.map +0 -1
  1554. package/dist/services/operate/event-store.d.ts +0 -113
  1555. package/dist/services/operate/event-store.d.ts.map +0 -1
  1556. package/dist/services/operate/event-store.js +0 -384
  1557. package/dist/services/operate/event-store.js.map +0 -1
  1558. package/dist/services/operate/evidence-cache.d.ts +0 -41
  1559. package/dist/services/operate/evidence-cache.d.ts.map +0 -1
  1560. package/dist/services/operate/evidence-cache.js +0 -193
  1561. package/dist/services/operate/evidence-cache.js.map +0 -1
  1562. package/dist/services/operate/evidence-import.d.ts +0 -40
  1563. package/dist/services/operate/evidence-import.d.ts.map +0 -1
  1564. package/dist/services/operate/evidence-import.js +0 -340
  1565. package/dist/services/operate/evidence-import.js.map +0 -1
  1566. package/dist/services/operate/evidence.d.ts +0 -21
  1567. package/dist/services/operate/evidence.d.ts.map +0 -1
  1568. package/dist/services/operate/evidence.js +0 -20
  1569. package/dist/services/operate/evidence.js.map +0 -1
  1570. package/dist/services/operate/ids.d.ts +0 -7
  1571. package/dist/services/operate/ids.d.ts.map +0 -1
  1572. package/dist/services/operate/ids.js +0 -23
  1573. package/dist/services/operate/ids.js.map +0 -1
  1574. package/dist/services/operate/index.d.ts +0 -16
  1575. package/dist/services/operate/index.d.ts.map +0 -1
  1576. package/dist/services/operate/index.js +0 -1864
  1577. package/dist/services/operate/index.js.map +0 -1
  1578. package/dist/services/operate/integrity.d.ts +0 -81
  1579. package/dist/services/operate/integrity.d.ts.map +0 -1
  1580. package/dist/services/operate/integrity.js +0 -152
  1581. package/dist/services/operate/integrity.js.map +0 -1
  1582. package/dist/services/operate/interaction/action-service.d.ts +0 -34
  1583. package/dist/services/operate/interaction/action-service.d.ts.map +0 -1
  1584. package/dist/services/operate/interaction/action-service.js +0 -103
  1585. package/dist/services/operate/interaction/action-service.js.map +0 -1
  1586. package/dist/services/operate/interaction/answer-service.d.ts +0 -40
  1587. package/dist/services/operate/interaction/answer-service.d.ts.map +0 -1
  1588. package/dist/services/operate/interaction/answer-service.js +0 -317
  1589. package/dist/services/operate/interaction/answer-service.js.map +0 -1
  1590. package/dist/services/operate/interaction/charter-suggestions.d.ts +0 -29
  1591. package/dist/services/operate/interaction/charter-suggestions.d.ts.map +0 -1
  1592. package/dist/services/operate/interaction/charter-suggestions.js +0 -104
  1593. package/dist/services/operate/interaction/charter-suggestions.js.map +0 -1
  1594. package/dist/services/operate/interaction/confirmation-service.d.ts +0 -30
  1595. package/dist/services/operate/interaction/confirmation-service.d.ts.map +0 -1
  1596. package/dist/services/operate/interaction/confirmation-service.js +0 -78
  1597. package/dist/services/operate/interaction/confirmation-service.js.map +0 -1
  1598. package/dist/services/operate/interaction/initialization-replay.d.ts +0 -9
  1599. package/dist/services/operate/interaction/initialization-replay.d.ts.map +0 -1
  1600. package/dist/services/operate/interaction/initialization-replay.js +0 -64
  1601. package/dist/services/operate/interaction/initialization-replay.js.map +0 -1
  1602. package/dist/services/operate/interaction/question-engine.d.ts +0 -41
  1603. package/dist/services/operate/interaction/question-engine.d.ts.map +0 -1
  1604. package/dist/services/operate/interaction/question-engine.js +0 -434
  1605. package/dist/services/operate/interaction/question-engine.js.map +0 -1
  1606. package/dist/services/operate/interaction/question-registry.d.ts +0 -52
  1607. package/dist/services/operate/interaction/question-registry.d.ts.map +0 -1
  1608. package/dist/services/operate/interaction/question-registry.js +0 -305
  1609. package/dist/services/operate/interaction/question-registry.js.map +0 -1
  1610. package/dist/services/operate/interaction/session-service.d.ts +0 -55
  1611. package/dist/services/operate/interaction/session-service.d.ts.map +0 -1
  1612. package/dist/services/operate/interaction/session-service.js +0 -304
  1613. package/dist/services/operate/interaction/session-service.js.map +0 -1
  1614. package/dist/services/operate/interaction/terminal-renderer.d.ts +0 -19
  1615. package/dist/services/operate/interaction/terminal-renderer.d.ts.map +0 -1
  1616. package/dist/services/operate/interaction/terminal-renderer.js +0 -124
  1617. package/dist/services/operate/interaction/terminal-renderer.js.map +0 -1
  1618. package/dist/services/operate/journal.d.ts +0 -34
  1619. package/dist/services/operate/journal.d.ts.map +0 -1
  1620. package/dist/services/operate/journal.js +0 -235
  1621. package/dist/services/operate/journal.js.map +0 -1
  1622. package/dist/services/operate/legacy-import-service.d.ts +0 -58
  1623. package/dist/services/operate/legacy-import-service.d.ts.map +0 -1
  1624. package/dist/services/operate/legacy-import-service.js +0 -922
  1625. package/dist/services/operate/legacy-import-service.js.map +0 -1
  1626. package/dist/services/operate/lifecycle-driver.d.ts +0 -309
  1627. package/dist/services/operate/lifecycle-driver.d.ts.map +0 -1
  1628. package/dist/services/operate/lifecycle-driver.js +0 -434
  1629. package/dist/services/operate/lifecycle-driver.js.map +0 -1
  1630. package/dist/services/operate/lifecycle.d.ts +0 -96
  1631. package/dist/services/operate/lifecycle.d.ts.map +0 -1
  1632. package/dist/services/operate/lifecycle.js +0 -596
  1633. package/dist/services/operate/lifecycle.js.map +0 -1
  1634. package/dist/services/operate/lock-service.d.ts +0 -37
  1635. package/dist/services/operate/lock-service.d.ts.map +0 -1
  1636. package/dist/services/operate/lock-service.js +0 -215
  1637. package/dist/services/operate/lock-service.js.map +0 -1
  1638. package/dist/services/operate/maintenance.d.ts +0 -139
  1639. package/dist/services/operate/maintenance.d.ts.map +0 -1
  1640. package/dist/services/operate/maintenance.js +0 -2200
  1641. package/dist/services/operate/maintenance.js.map +0 -1
  1642. package/dist/services/operate/migration.d.ts +0 -68
  1643. package/dist/services/operate/migration.d.ts.map +0 -1
  1644. package/dist/services/operate/migration.js +0 -243
  1645. package/dist/services/operate/migration.js.map +0 -1
  1646. package/dist/services/operate/mission-dispatch.d.ts +0 -271
  1647. package/dist/services/operate/mission-dispatch.d.ts.map +0 -1
  1648. package/dist/services/operate/mission-dispatch.js +0 -590
  1649. package/dist/services/operate/mission-dispatch.js.map +0 -1
  1650. package/dist/services/operate/outcomes.d.ts +0 -48
  1651. package/dist/services/operate/outcomes.d.ts.map +0 -1
  1652. package/dist/services/operate/outcomes.js +0 -312
  1653. package/dist/services/operate/outcomes.js.map +0 -1
  1654. package/dist/services/operate/pipeline-handoff.d.ts +0 -138
  1655. package/dist/services/operate/pipeline-handoff.d.ts.map +0 -1
  1656. package/dist/services/operate/pipeline-handoff.js +0 -175
  1657. package/dist/services/operate/pipeline-handoff.js.map +0 -1
  1658. package/dist/services/operate/profile-migration.d.ts +0 -69
  1659. package/dist/services/operate/profile-migration.d.ts.map +0 -1
  1660. package/dist/services/operate/profile-migration.js +0 -462
  1661. package/dist/services/operate/profile-migration.js.map +0 -1
  1662. package/dist/services/operate/projection-persistence.d.ts +0 -126
  1663. package/dist/services/operate/projection-persistence.d.ts.map +0 -1
  1664. package/dist/services/operate/projection-persistence.js +0 -752
  1665. package/dist/services/operate/projection-persistence.js.map +0 -1
  1666. package/dist/services/operate/projection.d.ts +0 -37
  1667. package/dist/services/operate/projection.d.ts.map +0 -1
  1668. package/dist/services/operate/projection.js +0 -209
  1669. package/dist/services/operate/projection.js.map +0 -1
  1670. package/dist/services/operate/protocol.d.ts +0 -86
  1671. package/dist/services/operate/protocol.d.ts.map +0 -1
  1672. package/dist/services/operate/protocol.js +0 -76
  1673. package/dist/services/operate/protocol.js.map +0 -1
  1674. package/dist/services/operate/read-only-providers.d.ts +0 -76
  1675. package/dist/services/operate/read-only-providers.d.ts.map +0 -1
  1676. package/dist/services/operate/read-only-providers.js +0 -421
  1677. package/dist/services/operate/read-only-providers.js.map +0 -1
  1678. package/dist/services/operate/redaction.d.ts +0 -74
  1679. package/dist/services/operate/redaction.d.ts.map +0 -1
  1680. package/dist/services/operate/redaction.js +0 -406
  1681. package/dist/services/operate/redaction.js.map +0 -1
  1682. package/dist/services/operate/reducer.d.ts +0 -10
  1683. package/dist/services/operate/reducer.d.ts.map +0 -1
  1684. package/dist/services/operate/reducer.js +0 -11
  1685. package/dist/services/operate/reducer.js.map +0 -1
  1686. package/dist/services/operate/report-html.d.ts +0 -32
  1687. package/dist/services/operate/report-html.d.ts.map +0 -1
  1688. package/dist/services/operate/report-html.js +0 -289
  1689. package/dist/services/operate/report-html.js.map +0 -1
  1690. package/dist/services/operate/reports.d.ts +0 -72
  1691. package/dist/services/operate/reports.d.ts.map +0 -1
  1692. package/dist/services/operate/reports.js +0 -481
  1693. package/dist/services/operate/reports.js.map +0 -1
  1694. package/dist/services/operate/routes.d.ts +0 -133
  1695. package/dist/services/operate/routes.d.ts.map +0 -1
  1696. package/dist/services/operate/routes.js +0 -1577
  1697. package/dist/services/operate/routes.js.map +0 -1
  1698. package/dist/services/operate/scratch.d.ts +0 -81
  1699. package/dist/services/operate/scratch.d.ts.map +0 -1
  1700. package/dist/services/operate/scratch.js +0 -190
  1701. package/dist/services/operate/scratch.js.map +0 -1
  1702. package/dist/services/operate/shipment-observer.d.ts +0 -14
  1703. package/dist/services/operate/shipment-observer.d.ts.map +0 -1
  1704. package/dist/services/operate/shipment-observer.js +0 -320
  1705. package/dist/services/operate/shipment-observer.js.map +0 -1
  1706. package/dist/services/operate/stalled-item-service.d.ts +0 -18
  1707. package/dist/services/operate/stalled-item-service.d.ts.map +0 -1
  1708. package/dist/services/operate/stalled-item-service.js +0 -121
  1709. package/dist/services/operate/stalled-item-service.js.map +0 -1
  1710. package/dist/services/operate/subprocess-env.d.ts +0 -4
  1711. package/dist/services/operate/subprocess-env.d.ts.map +0 -1
  1712. package/dist/services/operate/subprocess-env.js +0 -45
  1713. package/dist/services/operate/subprocess-env.js.map +0 -1
  1714. package/dist/services/operate/types.d.ts +0 -1064
  1715. package/dist/services/operate/types.d.ts.map +0 -1
  1716. package/dist/services/operate/types.js +0 -27
  1717. package/dist/services/operate/types.js.map +0 -1
  1718. package/dist/services/operate/workspace.d.ts +0 -76
  1719. package/dist/services/operate/workspace.d.ts.map +0 -1
  1720. package/dist/services/operate/workspace.js +0 -350
  1721. package/dist/services/operate/workspace.js.map +0 -1
  1722. package/dist/services/revise-service.d.ts +0 -115
  1723. package/dist/services/revise-service.d.ts.map +0 -1
  1724. package/dist/services/revise-service.js +0 -294
  1725. package/dist/services/revise-service.js.map +0 -1
  1726. package/dist/templates/rules/claude/planr-pipeline.md.hbs +0 -69
  1727. package/dist/templates/rules/codex/_pipeline-section.md.hbs +0 -154
  1728. package/dist/templates/rules/cursor/agents/backend-agent.md +0 -299
  1729. package/dist/templates/rules/cursor/agents/db-agent.md +0 -163
  1730. package/dist/templates/rules/cursor/agents/designer-agent.md +0 -219
  1731. package/dist/templates/rules/cursor/agents/devops-agent.md +0 -197
  1732. package/dist/templates/rules/cursor/agents/doc-gen-agent.md +0 -203
  1733. package/dist/templates/rules/cursor/agents/frontend-agent.md +0 -220
  1734. package/dist/templates/rules/cursor/agents/qa-agent.md +0 -170
  1735. package/dist/templates/rules/cursor/agents/specification-agent.md +0 -282
  1736. package/dist/templates/rules/cursor/planr-pipeline-plan.mdc.hbs +0 -196
  1737. package/dist/templates/rules/cursor/planr-pipeline-ship.mdc.hbs +0 -246
  1738. package/dist/templates/rules/cursor/planr-pipeline.mdc.hbs +0 -134
@@ -0,0 +1,1344 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { mkdir, open, readdir, readFile, realpath, rename, rm, unlink, writeFile, } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { performance } from 'node:perf_hooks';
5
+ import { assertOperatePathCustody, assertOperateTreeCustody } from './path-custody.js';
6
+ import { withOperateProjectTransaction } from './project-transaction-lock.js';
7
+ const STORE_FORMAT = 'openplanr-operate-store';
8
+ const STORE_VERSION = 3;
9
+ const CUSTODY_FORMAT = 'openplanr-operate-custody';
10
+ const CUSTODY_VERSION = 2;
11
+ const LOCK_FORMAT = 'openplanr-operate-lock';
12
+ const PROTOCOL_VERSION = '2.0.0';
13
+ const CURRENT_FILENAME = 'CURRENT';
14
+ const CUSTODY_FILENAME = 'CUSTODY.json';
15
+ const GENERATIONS_DIRECTORY = 'generations';
16
+ const LOCK_FILENAME = 'LOCK';
17
+ const RECOVERY_LOCK_FILENAME = 'RECOVERY';
18
+ const HEAD_JOURNAL_FILENAME = 'HEADS.jsonl';
19
+ const STALE_LOCKS_DIRECTORY = 'stale-locks';
20
+ const LOCK_TTL_MS = 120_000;
21
+ const READ_STABILITY_TIMEOUT_MS = 5_000;
22
+ const READ_STABILITY_MAX_ATTEMPTS = 64;
23
+ const READ_STABILITY_POLL_MS = 10;
24
+ const READ_STABILITY_MAX_POLL_MS = 50;
25
+ const GENERATION_PATTERN = /^gen_[a-f0-9]{32}$/u;
26
+ const ARTIFACT_ID_PATTERN = /^[A-Za-z0-9._-]+$/u;
27
+ /**
28
+ * Honest threat boundary for the credential-free project-local store. The
29
+ * application cross-checks these files for coherence, but a process with the
30
+ * same write authority can replace every anchor consistently.
31
+ */
32
+ export const OPERATE_INTEGRITY_BOUNDARY = Object.freeze({
33
+ model: 'project-local-integrity',
34
+ detects: Object.freeze([
35
+ 'accidental-corruption',
36
+ 'partial-or-incoherent-rewrite',
37
+ 'journal-truncation',
38
+ 'foreign-project-copy',
39
+ ]),
40
+ authenticity: 'not-provided',
41
+ outsideBoundary: Object.freeze(['fully-coordinated-same-user-offline-rewrite']),
42
+ futureRequirement: 'externally-anchored-or-signed-custody',
43
+ });
44
+ export class OperateStoreError extends Error {
45
+ code;
46
+ context;
47
+ constructor(code, message, context = {}) {
48
+ super(message);
49
+ this.code = code;
50
+ this.context = context;
51
+ this.name = code;
52
+ }
53
+ }
54
+ function emptyPreferences() {
55
+ return {
56
+ selectedScopeId: null,
57
+ selectedDomainId: null,
58
+ selectedDomainVersion: null,
59
+ lastCycleId: null,
60
+ reviewOwners: {},
61
+ cycleModes: {},
62
+ cycleDeliveryRoutes: {},
63
+ assignmentArtifactIds: {},
64
+ cycleRoleAssignments: {},
65
+ cycleIntelligencePlanIds: {},
66
+ actorMemberships: {},
67
+ };
68
+ }
69
+ function isRecord(value) {
70
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
71
+ }
72
+ function canonical(value) {
73
+ if (Array.isArray(value))
74
+ return `[${value.map((entry) => canonical(entry)).join(',')}]`;
75
+ if (isRecord(value)) {
76
+ return `{${Object.keys(value)
77
+ .sort()
78
+ .map((key) => `${JSON.stringify(key)}:${canonical(value[key])}`)
79
+ .join(',')}}`;
80
+ }
81
+ return JSON.stringify(value);
82
+ }
83
+ function hashBytes(bytes) {
84
+ return `sha256:${createHash('sha256').update(bytes).digest('hex')}`;
85
+ }
86
+ function hashValue(value) {
87
+ return hashBytes(Buffer.from(canonical(value), 'utf8'));
88
+ }
89
+ function safeGeneration(value) {
90
+ const generation = value.trim();
91
+ if (!GENERATION_PATTERN.test(generation)) {
92
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The durable Operate generation pointer is invalid.');
93
+ }
94
+ return generation;
95
+ }
96
+ function stringMap(value, label) {
97
+ if (!isRecord(value)) {
98
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', `The durable ${label} map is invalid.`);
99
+ }
100
+ const result = {};
101
+ for (const [key, entry] of Object.entries(value)) {
102
+ if (!key || typeof entry !== 'string' || !entry) {
103
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', `The durable ${label} binding is invalid.`);
104
+ }
105
+ result[key] = entry;
106
+ }
107
+ return result;
108
+ }
109
+ function safePreferences(value) {
110
+ if (!isRecord(value)) {
111
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The durable Operate preferences are invalid.');
112
+ }
113
+ const nullableString = (field) => {
114
+ const entry = value[field];
115
+ if (entry === null || typeof entry === 'string')
116
+ return entry;
117
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', `The durable Operate preference ${field} is invalid.`);
118
+ };
119
+ const cycleModes = {};
120
+ if (!isRecord(value.cycleModes)) {
121
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Cycle modes are invalid.');
122
+ }
123
+ for (const [cycleId, mode] of Object.entries(value.cycleModes)) {
124
+ if (!cycleId || !['assignment', 'lifecycle'].includes(String(mode))) {
125
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'A cycle mode is invalid.');
126
+ }
127
+ cycleModes[cycleId] = mode;
128
+ }
129
+ const cycleDeliveryRoutes = {};
130
+ if (!isRecord(value.cycleDeliveryRoutes)) {
131
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Delivery routes are invalid.');
132
+ }
133
+ for (const [cycleId, route] of Object.entries(value.cycleDeliveryRoutes)) {
134
+ if (!cycleId ||
135
+ !['contained-execution', 'planning-work', 'human-external', 'observe-only'].includes(String(route))) {
136
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'A delivery route is invalid.');
137
+ }
138
+ cycleDeliveryRoutes[cycleId] = route;
139
+ }
140
+ if (!isRecord(value.cycleRoleAssignments)) {
141
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Cycle role assignments are invalid.');
142
+ }
143
+ const cycleRoleAssignments = {};
144
+ for (const [cycleId, assignments] of Object.entries(value.cycleRoleAssignments)) {
145
+ cycleRoleAssignments[cycleId] = stringMap(assignments, 'role Assignment');
146
+ }
147
+ if (!isRecord(value.actorMemberships)) {
148
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Actor memberships are invalid.');
149
+ }
150
+ const actorMemberships = {};
151
+ for (const [actorId, membership] of Object.entries(value.actorMemberships)) {
152
+ if (!actorId ||
153
+ !isRecord(membership) ||
154
+ membership.actorId !== actorId ||
155
+ membership.role !== 'owner' ||
156
+ ['scopeId', 'domainId', 'domainVersion'].some((field) => typeof membership[field] !== 'string' || !membership[field])) {
157
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'An actor membership is invalid.');
158
+ }
159
+ actorMemberships[actorId] = {
160
+ actorId,
161
+ scopeId: String(membership.scopeId),
162
+ domainId: String(membership.domainId),
163
+ domainVersion: String(membership.domainVersion),
164
+ role: 'owner',
165
+ };
166
+ }
167
+ return {
168
+ selectedScopeId: nullableString('selectedScopeId'),
169
+ selectedDomainId: nullableString('selectedDomainId'),
170
+ selectedDomainVersion: nullableString('selectedDomainVersion'),
171
+ lastCycleId: nullableString('lastCycleId'),
172
+ reviewOwners: stringMap(value.reviewOwners, 'review owner'),
173
+ cycleModes,
174
+ cycleDeliveryRoutes,
175
+ assignmentArtifactIds: stringMap(value.assignmentArtifactIds, 'Assignment Artifact'),
176
+ cycleRoleAssignments,
177
+ cycleIntelligencePlanIds: stringMap(value.cycleIntelligencePlanIds, 'cycle intelligence plan'),
178
+ actorMemberships,
179
+ };
180
+ }
181
+ function safeBindings(value) {
182
+ if (!Array.isArray(value)) {
183
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Scope bindings are invalid.');
184
+ }
185
+ const result = value.map((entry) => {
186
+ if (!isRecord(entry) ||
187
+ ['cycleId', 'scopeId', 'domainId', 'domainVersion'].some((field) => typeof entry[field] !== 'string' || !entry[field])) {
188
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'A scope binding is invalid.');
189
+ }
190
+ return {
191
+ cycleId: String(entry.cycleId),
192
+ scopeId: String(entry.scopeId),
193
+ domainId: String(entry.domainId),
194
+ domainVersion: String(entry.domainVersion),
195
+ };
196
+ });
197
+ return result.sort((left, right) => left.cycleId.localeCompare(right.cycleId));
198
+ }
199
+ function bindingsFromState(state) {
200
+ const cycles = Array.isArray(state.cycles) ? state.cycles : [];
201
+ return safeBindings(cycles.map((cycle) => {
202
+ if (!isRecord(cycle))
203
+ return cycle;
204
+ return {
205
+ cycleId: cycle.cycleId,
206
+ scopeId: cycle.scopeId,
207
+ domainId: cycle.domainId,
208
+ domainVersion: cycle.domainVersion,
209
+ };
210
+ }));
211
+ }
212
+ function replayIndexProjection(state) {
213
+ return Object.fromEntries(Object.entries(state).filter(([key]) => key === 'eventHead' || key === 'eventReplayIndex' || /ReplayIndex$/u.test(key)));
214
+ }
215
+ function manifestProjection(manifest) {
216
+ const { integrityHash: _integrityHash, ...projection } = manifest;
217
+ return projection;
218
+ }
219
+ function journalProjection(record) {
220
+ const { recordHash: _recordHash, ...projection } = record;
221
+ return projection;
222
+ }
223
+ function parseJournalLine(line) {
224
+ let value;
225
+ try {
226
+ value = JSON.parse(line);
227
+ }
228
+ catch {
229
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The head journal is invalid JSON.');
230
+ }
231
+ if (!isRecord(value) ||
232
+ value.format !== 'openplanr-operate-head-journal' ||
233
+ value.journalVersion !== 1 ||
234
+ !Number.isSafeInteger(value.sequence) ||
235
+ Number(value.sequence) < 1 ||
236
+ typeof value.projectIdentity !== 'string' ||
237
+ typeof value.custodyNonce !== 'string' ||
238
+ typeof value.generation !== 'string' ||
239
+ typeof value.integrityHash !== 'string' ||
240
+ typeof value.createdAt !== 'string' ||
241
+ typeof value.recordHash !== 'string' ||
242
+ (value.previousRecordHash !== null && typeof value.previousRecordHash !== 'string')) {
243
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The head journal record is incomplete.');
244
+ }
245
+ const record = {
246
+ format: 'openplanr-operate-head-journal',
247
+ journalVersion: 1,
248
+ sequence: Number(value.sequence),
249
+ projectIdentity: value.projectIdentity,
250
+ custodyNonce: value.custodyNonce,
251
+ generation: safeGeneration(value.generation),
252
+ integrityHash: value.integrityHash,
253
+ bindings: safeBindings(value.bindings),
254
+ previousRecordHash: value.previousRecordHash,
255
+ createdAt: value.createdAt,
256
+ recordHash: value.recordHash,
257
+ };
258
+ if (hashValue(journalProjection(record)) !== record.recordHash) {
259
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The head journal record hash is invalid.');
260
+ }
261
+ return record;
262
+ }
263
+ function parseManifest(text, generation) {
264
+ let value;
265
+ try {
266
+ value = JSON.parse(text);
267
+ }
268
+ catch {
269
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The manifest is not valid JSON.', {
270
+ generation,
271
+ });
272
+ }
273
+ if (!isRecord(value) || value.format !== STORE_FORMAT) {
274
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The manifest format is invalid.', {
275
+ generation,
276
+ });
277
+ }
278
+ if (value.storeVersion !== STORE_VERSION || value.protocolVersion !== PROTOCOL_VERSION) {
279
+ throw new OperateStoreError('OPERATE_STORE_INCOMPATIBLE', 'The durable state uses an incompatible store or protocol version.', { generation });
280
+ }
281
+ if (value.generation !== generation ||
282
+ !isRecord(value.baseState) ||
283
+ !isRecord(value.state) ||
284
+ !Array.isArray(value.artifacts) ||
285
+ !Number.isSafeInteger(value.eventCount) ||
286
+ typeof value.projectIdentity !== 'string' ||
287
+ typeof value.custodyNonce !== 'string' ||
288
+ typeof value.eventsHash !== 'string' ||
289
+ typeof value.replayIndexHash !== 'string' ||
290
+ typeof value.integrityHash !== 'string') {
291
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The manifest is incomplete.', {
292
+ generation,
293
+ });
294
+ }
295
+ const manifest = {
296
+ ...value,
297
+ format: STORE_FORMAT,
298
+ storeVersion: STORE_VERSION,
299
+ protocolVersion: PROTOCOL_VERSION,
300
+ generation,
301
+ parentGeneration: value.parentGeneration === null || typeof value.parentGeneration === 'string'
302
+ ? value.parentGeneration
303
+ : null,
304
+ parentIntegrityHash: value.parentIntegrityHash === null || typeof value.parentIntegrityHash === 'string'
305
+ ? value.parentIntegrityHash
306
+ : null,
307
+ createdAt: typeof value.createdAt === 'string' ? value.createdAt : '',
308
+ eventCount: Number(value.eventCount),
309
+ bindings: safeBindings(value.bindings),
310
+ preferences: safePreferences(value.preferences),
311
+ artifacts: value.artifacts,
312
+ };
313
+ if (hashValue(manifestProjection(manifest)) !== manifest.integrityHash) {
314
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The manifest custody digest does not match its durable content.', { generation });
315
+ }
316
+ return manifest;
317
+ }
318
+ function parseCustody(text) {
319
+ let value;
320
+ try {
321
+ value = JSON.parse(text);
322
+ }
323
+ catch {
324
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The custody anchor is invalid JSON.');
325
+ }
326
+ if (!isRecord(value) ||
327
+ value.format !== CUSTODY_FORMAT ||
328
+ value.custodyVersion !== CUSTODY_VERSION ||
329
+ typeof value.projectIdentity !== 'string' ||
330
+ typeof value.custodyNonce !== 'string' ||
331
+ typeof value.headGeneration !== 'string' ||
332
+ typeof value.headIntegrityHash !== 'string' ||
333
+ !Number.isSafeInteger(value.journalSequence) ||
334
+ Number(value.journalSequence) < 1 ||
335
+ typeof value.journalRecordHash !== 'string') {
336
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The custody anchor is incomplete.');
337
+ }
338
+ return {
339
+ format: CUSTODY_FORMAT,
340
+ custodyVersion: CUSTODY_VERSION,
341
+ projectIdentity: value.projectIdentity,
342
+ custodyNonce: value.custodyNonce,
343
+ headGeneration: safeGeneration(value.headGeneration),
344
+ headIntegrityHash: value.headIntegrityHash,
345
+ bindings: safeBindings(value.bindings),
346
+ journalSequence: Number(value.journalSequence),
347
+ journalRecordHash: value.journalRecordHash,
348
+ updatedAt: typeof value.updatedAt === 'string' ? value.updatedAt : '',
349
+ };
350
+ }
351
+ function custodyFromHead(head) {
352
+ return {
353
+ format: CUSTODY_FORMAT,
354
+ custodyVersion: CUSTODY_VERSION,
355
+ projectIdentity: head.projectIdentity,
356
+ custodyNonce: head.custodyNonce,
357
+ headGeneration: head.generation,
358
+ headIntegrityHash: head.integrityHash,
359
+ bindings: head.bindings,
360
+ journalSequence: head.sequence,
361
+ journalRecordHash: head.recordHash,
362
+ updatedAt: head.createdAt,
363
+ };
364
+ }
365
+ function pidAlive(pid) {
366
+ if (!Number.isSafeInteger(pid) || pid < 1)
367
+ return false;
368
+ try {
369
+ process.kill(pid, 0);
370
+ return true;
371
+ }
372
+ catch (error) {
373
+ return error.code === 'EPERM';
374
+ }
375
+ }
376
+ /** Generation-addressed, project-bound application integrity custody. */
377
+ export class OperateStore {
378
+ root;
379
+ projectDir;
380
+ constructor(projectDir, options = {}) {
381
+ this.projectDir = path.resolve(projectDir);
382
+ this.root = options.root
383
+ ? path.resolve(options.root)
384
+ : path.join(this.projectDir, '.planr', 'operate', 'state');
385
+ const planrRoot = path.join(this.projectDir, '.planr');
386
+ if (this.root !== planrRoot && !this.root.startsWith(`${planrRoot}${path.sep}`)) {
387
+ throw new OperateStoreError('OPERATE_STORE_INCOMPATIBLE', 'Operate storage roots must remain inside the project-local .planr boundary.');
388
+ }
389
+ }
390
+ async assertStorageCustody(requireDirectory = false) {
391
+ const options = {
392
+ code: 'OPERATE_STORE_INCOMPATIBLE',
393
+ message: 'Operate storage custody cannot traverse symbolic links or leave project-local .planr.',
394
+ requireDirectory,
395
+ };
396
+ await assertOperatePathCustody(this.projectDir, this.root, options);
397
+ await assertOperateTreeCustody(this.projectDir, this.root, options);
398
+ }
399
+ async load(replay) {
400
+ await this.assertStorageCustody();
401
+ const startedAt = performance.now();
402
+ const projectIdentity = await this.projectIdentity();
403
+ let quietFailure = null;
404
+ let attempts = 0;
405
+ for (;;) {
406
+ attempts += 1;
407
+ await this.assertStorageCustody();
408
+ const current = await this.currentGeneration();
409
+ try {
410
+ const runtime = await this.loadCurrentGeneration(current, replay);
411
+ if ((await this.currentGeneration()) === current)
412
+ return runtime;
413
+ quietFailure = null;
414
+ }
415
+ catch (error) {
416
+ if (!(error instanceof OperateStoreError) || error.code !== 'OPERATE_STORE_CORRUPT') {
417
+ throw error;
418
+ }
419
+ const [afterCurrent, afterLock] = await Promise.all([
420
+ this.currentGeneration().catch(() => null),
421
+ this.inspectLock(projectIdentity),
422
+ ]);
423
+ if (afterLock.status !== 'live' && afterCurrent === current) {
424
+ const fingerprint = `${current ?? 'null'}\0${error.code}\0${error.message}`;
425
+ if (quietFailure === fingerprint)
426
+ throw error;
427
+ quietFailure = fingerprint;
428
+ }
429
+ else {
430
+ quietFailure = null;
431
+ }
432
+ }
433
+ const elapsedMs = performance.now() - startedAt;
434
+ if (elapsedMs >= READ_STABILITY_TIMEOUT_MS || attempts >= READ_STABILITY_MAX_ATTEMPTS) {
435
+ const lock = await this.inspectLock(projectIdentity);
436
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'The durable Operate Store changed throughout the bounded read window.', {
437
+ expectedGeneration: current,
438
+ currentGeneration: await this.currentGeneration(),
439
+ ownerPid: lock.ownerPid,
440
+ expiresAt: lock.expiresAt,
441
+ attempts,
442
+ elapsedMs: Math.floor(elapsedMs),
443
+ });
444
+ }
445
+ const pollMs = Math.min(READ_STABILITY_POLL_MS * attempts, READ_STABILITY_MAX_POLL_MS);
446
+ await new Promise((resolve) => setTimeout(resolve, pollMs));
447
+ }
448
+ }
449
+ async loadCurrentGeneration(current, replay) {
450
+ const journal = await this.readHeadJournal();
451
+ if (current === null) {
452
+ if ((await this.generationNames()).length === 0 && journal.length === 0)
453
+ return null;
454
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Durable generations exist without an anchored current pointer.');
455
+ }
456
+ const custody = await this.readCustody();
457
+ const head = journal.at(-1);
458
+ if (!custody ||
459
+ !head ||
460
+ custody.headGeneration !== current ||
461
+ head.generation !== current ||
462
+ head.integrityHash !== custody.headIntegrityHash ||
463
+ head.recordHash !== custody.journalRecordHash ||
464
+ head.sequence !== custody.journalSequence) {
465
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The current pointer, custody anchor, and project-local head journal diverge.');
466
+ }
467
+ return await this.loadGeneration(current, replay, custody);
468
+ }
469
+ /**
470
+ * Verify that a pre-change replay receipt still names this exact current,
471
+ * project-bound Store. This deliberately validates only durable custody and
472
+ * byte hashes; it never imports or interprets superseded result contracts.
473
+ */
474
+ async verifyReplayProofCustody(proof) {
475
+ await this.assertStorageCustody(true);
476
+ const journal = await this.readHeadJournal();
477
+ const current = await this.currentGeneration();
478
+ const custody = await this.readCustody();
479
+ const head = journal.at(-1);
480
+ if (current === null ||
481
+ !custody ||
482
+ !head ||
483
+ custody.headGeneration !== current ||
484
+ head.generation !== current ||
485
+ head.integrityHash !== custody.headIntegrityHash ||
486
+ head.recordHash !== custody.journalRecordHash ||
487
+ head.sequence !== custody.journalSequence) {
488
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof custody has no exact anchored current generation.');
489
+ }
490
+ const selected = safeGeneration(current);
491
+ const identity = await this.projectIdentity();
492
+ if (custody.projectIdentity !== identity) {
493
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof custody belongs to a foreign canonical project.');
494
+ }
495
+ await this.assertAnchored(selected, custody);
496
+ const manifest = await this.readManifest(selected);
497
+ if (manifest.projectIdentity !== identity ||
498
+ manifest.custodyNonce !== custody.custodyNonce ||
499
+ canonical(manifest.bindings) !== canonical(bindingsFromState(manifest.baseState))) {
500
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof generation custody is invalid.', { generation: selected });
501
+ }
502
+ this.assertPreferenceBinding(manifest.preferences, manifest.bindings);
503
+ const directory = path.join(this.root, GENERATIONS_DIRECTORY, selected);
504
+ const eventBytes = await readFile(path.join(directory, 'events.jsonl')).catch(() => {
505
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof Event bytes are unavailable.', { generation: selected });
506
+ });
507
+ if (hashBytes(eventBytes) !== manifest.eventsHash) {
508
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof Event bytes failed custody verification.', { generation: selected });
509
+ }
510
+ const eventLines = eventBytes.toString('utf8').split('\n').filter(Boolean);
511
+ if (eventLines.length !== manifest.eventCount) {
512
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof Event count is invalid.', { generation: selected });
513
+ }
514
+ for (const line of eventLines) {
515
+ try {
516
+ if (!isRecord(JSON.parse(line)))
517
+ throw new Error('not an object');
518
+ }
519
+ catch {
520
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof Event ledger contains an invalid record.', { generation: selected });
521
+ }
522
+ }
523
+ if (hashValue(replayIndexProjection(manifest.state)) !== manifest.replayIndexHash) {
524
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof indexes failed custody verification.', { generation: selected });
525
+ }
526
+ const artifactHashes = [];
527
+ const seen = new Set();
528
+ for (const entry of manifest.artifacts) {
529
+ if (!isRecord(entry) ||
530
+ typeof entry.artifactId !== 'string' ||
531
+ !ARTIFACT_ID_PATTERN.test(entry.artifactId) ||
532
+ entry.file !== `${entry.artifactId}.bin` ||
533
+ typeof entry.rawHash !== 'string' ||
534
+ typeof entry.sizeBytes !== 'number' ||
535
+ seen.has(entry.artifactId)) {
536
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof Artifact custody metadata is invalid.', { generation: selected });
537
+ }
538
+ seen.add(entry.artifactId);
539
+ const bytes = await readFile(path.join(directory, 'artifacts', entry.file)).catch(() => {
540
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'A legacy replay proof Artifact is unavailable.', { generation: selected, artifactId: entry.artifactId });
541
+ });
542
+ if (bytes.length !== entry.sizeBytes || hashBytes(bytes) !== entry.rawHash) {
543
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof Artifact bytes failed custody verification.', { generation: selected, artifactId: entry.artifactId });
544
+ }
545
+ artifactHashes.push({ artifactId: entry.artifactId, rawHash: entry.rawHash });
546
+ }
547
+ artifactHashes.sort((left, right) => left.artifactId.localeCompare(right.artifactId));
548
+ const eventHead = manifest.state.eventHead;
549
+ if (!isRecord(eventHead) ||
550
+ !Number.isSafeInteger(eventHead.sequence) ||
551
+ Number(eventHead.sequence) < 0 ||
552
+ (Number(eventHead.sequence) === 0
553
+ ? eventHead.hash !== null
554
+ : typeof eventHead.hash !== 'string')) {
555
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Legacy replay proof state has an invalid Event head.', { generation: selected });
556
+ }
557
+ const actual = {
558
+ currentGeneration: selected,
559
+ stateCanonicalHash: hashValue(manifest.state),
560
+ eventHead: { sequence: Number(eventHead.sequence), hash: eventHead.hash },
561
+ artifactHashes,
562
+ };
563
+ if (canonical(actual) !== canonical(proof)) {
564
+ throw new OperateStoreError('OPERATE_STORE_INCOMPATIBLE', 'The legacy replay proof is stale or does not match current Store custody.', { generation: selected });
565
+ }
566
+ return true;
567
+ }
568
+ async commit(runtime, expectedGeneration) {
569
+ return await withOperateProjectTransaction(this.projectDir, async () => await this.commitUnlocked(runtime, expectedGeneration));
570
+ }
571
+ async commitUnlocked(runtime, expectedGeneration) {
572
+ await this.assertStorageCustody();
573
+ await mkdir(this.root, { recursive: true, mode: 0o700 });
574
+ await this.assertStorageCustody(true);
575
+ const lock = await this.acquireLock();
576
+ try {
577
+ const current = await this.currentGeneration();
578
+ if (current !== expectedGeneration) {
579
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'Durable state changed before this transaction committed.', { expectedGeneration, currentGeneration: current });
580
+ }
581
+ const projectIdentity = await this.projectIdentity();
582
+ const priorCustody = await this.readCustody();
583
+ const journal = await this.readHeadJournal();
584
+ const priorHead = journal.at(-1) ?? null;
585
+ if (expectedGeneration === null && (priorCustody !== null || priorHead !== null)) {
586
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'Existing custody cannot be replaced by a fresh transaction.');
587
+ }
588
+ if (priorCustody && priorCustody.projectIdentity !== projectIdentity) {
589
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Durable custody belongs to another canonical project identity.');
590
+ }
591
+ if ((priorCustody === null) !== (priorHead === null) ||
592
+ (priorHead &&
593
+ (priorHead.generation !== expectedGeneration ||
594
+ priorCustody?.journalSequence !== priorHead.sequence ||
595
+ priorCustody.journalRecordHash !== priorHead.recordHash ||
596
+ priorCustody.headIntegrityHash !== priorHead.integrityHash))) {
597
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The project-local head journal does not match current durable custody.');
598
+ }
599
+ const generation = `gen_${randomUUID().replaceAll('-', '')}`;
600
+ const custodyNonce = priorCustody?.custodyNonce ?? randomUUID().replaceAll('-', '');
601
+ const generationsRoot = path.join(this.root, GENERATIONS_DIRECTORY);
602
+ const staging = path.join(this.root, `.txn-${randomUUID()}`);
603
+ const artifactsDirectory = path.join(staging, 'artifacts');
604
+ await mkdir(artifactsDirectory, { recursive: true });
605
+ const artifactEntries = [];
606
+ for (const [artifactId, value] of [...runtime.artifacts.entries()].sort(([left], [right]) => left.localeCompare(right))) {
607
+ if (!ARTIFACT_ID_PATTERN.test(artifactId)) {
608
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'An Artifact identity cannot be stored safely.');
609
+ }
610
+ const bytes = Buffer.from(value);
611
+ const file = `${artifactId}.bin`;
612
+ await writeFile(path.join(artifactsDirectory, file), bytes, { flag: 'wx' });
613
+ artifactEntries.push({
614
+ artifactId,
615
+ rawHash: hashBytes(bytes),
616
+ sizeBytes: bytes.length,
617
+ file,
618
+ });
619
+ }
620
+ const eventsText = runtime.events.map((event) => JSON.stringify(event)).join('\n');
621
+ const eventBytes = Buffer.from(eventsText ? `${eventsText}\n` : '', 'utf8');
622
+ await writeFile(path.join(staging, 'events.jsonl'), eventBytes, { flag: 'wx' });
623
+ const bindings = bindingsFromState(runtime.baseState);
624
+ this.assertPreferenceBinding(runtime.preferences, bindings);
625
+ const projection = {
626
+ format: STORE_FORMAT,
627
+ storeVersion: STORE_VERSION,
628
+ protocolVersion: PROTOCOL_VERSION,
629
+ projectIdentity,
630
+ custodyNonce,
631
+ generation,
632
+ parentGeneration: expectedGeneration,
633
+ parentIntegrityHash: priorCustody?.headIntegrityHash ?? null,
634
+ createdAt: new Date().toISOString(),
635
+ eventCount: runtime.events.length,
636
+ eventsHash: hashBytes(eventBytes),
637
+ replayIndexHash: hashValue(replayIndexProjection(runtime.state)),
638
+ bindings,
639
+ baseState: runtime.baseState,
640
+ state: runtime.state,
641
+ preferences: safePreferences(runtime.preferences),
642
+ artifacts: artifactEntries,
643
+ };
644
+ const manifest = {
645
+ ...projection,
646
+ integrityHash: hashValue(projection),
647
+ };
648
+ await writeFile(path.join(staging, 'manifest.json'), `${JSON.stringify(manifest, null, 2)}\n`, { flag: 'wx' });
649
+ await mkdir(generationsRoot, { recursive: true });
650
+ await rename(staging, path.join(generationsRoot, generation));
651
+ const journalProjection = {
652
+ format: 'openplanr-operate-head-journal',
653
+ journalVersion: 1,
654
+ sequence: (priorHead?.sequence ?? 0) + 1,
655
+ projectIdentity,
656
+ custodyNonce,
657
+ generation,
658
+ integrityHash: manifest.integrityHash,
659
+ bindings,
660
+ previousRecordHash: priorHead?.recordHash ?? null,
661
+ createdAt: manifest.createdAt,
662
+ };
663
+ const journalRecord = {
664
+ ...journalProjection,
665
+ recordHash: hashValue(journalProjection),
666
+ };
667
+ await this.appendHeadJournal(journalRecord);
668
+ const custody = {
669
+ format: CUSTODY_FORMAT,
670
+ custodyVersion: CUSTODY_VERSION,
671
+ projectIdentity,
672
+ custodyNonce,
673
+ headGeneration: generation,
674
+ headIntegrityHash: manifest.integrityHash,
675
+ bindings,
676
+ journalSequence: journalRecord.sequence,
677
+ journalRecordHash: journalRecord.recordHash,
678
+ updatedAt: manifest.createdAt,
679
+ };
680
+ await this.atomicWrite(path.join(this.root, CUSTODY_FILENAME), `${JSON.stringify(custody, null, 2)}\n`);
681
+ await this.atomicWrite(path.join(this.root, CURRENT_FILENAME), `${generation}\n`);
682
+ return { ...runtime, generation };
683
+ }
684
+ finally {
685
+ await this.releaseLock(lock);
686
+ }
687
+ }
688
+ async inspect(replay) {
689
+ await this.assertStorageCustody();
690
+ return {
691
+ ...(await this.inspectProjectLocal(replay)),
692
+ integrityBoundary: OPERATE_INTEGRITY_BOUNDARY,
693
+ };
694
+ }
695
+ async inspectProjectLocal(replay) {
696
+ const projectIdentity = await this.projectIdentity();
697
+ const lock = await this.inspectLock(projectIdentity);
698
+ const generations = await this.generationNames();
699
+ if (lock.status === 'live') {
700
+ return {
701
+ status: 'locked',
702
+ currentGeneration: await this.currentGeneration().catch(() => null),
703
+ recoverableGeneration: null,
704
+ generationCount: generations.length,
705
+ reason: lock.reason,
706
+ allowedRecovery: 'none',
707
+ lock,
708
+ };
709
+ }
710
+ if (lock.status === 'stale' || lock.status === 'invalid') {
711
+ return {
712
+ status: 'repairable',
713
+ currentGeneration: await this.currentGeneration().catch(() => null),
714
+ recoverableGeneration: null,
715
+ generationCount: generations.length,
716
+ reason: lock.reason,
717
+ allowedRecovery: 'clear-stale-lock',
718
+ lock,
719
+ };
720
+ }
721
+ let current = null;
722
+ try {
723
+ const journal = await this.readHeadJournal();
724
+ const head = journal.at(-1) ?? null;
725
+ try {
726
+ current = await this.currentGeneration();
727
+ }
728
+ catch (pointerError) {
729
+ const custody = await this.readCustody();
730
+ if (!custody || !head || custody.journalRecordHash !== head.recordHash)
731
+ throw pointerError;
732
+ await this.loadGeneration(custody.headGeneration, replay, custody);
733
+ return {
734
+ status: 'repairable',
735
+ currentGeneration: null,
736
+ recoverableGeneration: custody.headGeneration,
737
+ generationCount: generations.length,
738
+ reason: 'The current pointer is invalid, but the custody head verifies exactly.',
739
+ allowedRecovery: 'restore-generation',
740
+ lock,
741
+ };
742
+ }
743
+ if (current === null && generations.length === 0) {
744
+ if (journal.length > 0) {
745
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The project-local head journal names missing durable generations.');
746
+ }
747
+ return {
748
+ status: 'empty',
749
+ currentGeneration: null,
750
+ recoverableGeneration: null,
751
+ generationCount: 0,
752
+ reason: 'No durable Operate state exists yet.',
753
+ allowedRecovery: 'none',
754
+ lock,
755
+ };
756
+ }
757
+ const custody = await this.readCustody();
758
+ if (!custody || !head) {
759
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Custody journal is missing.');
760
+ }
761
+ const interruptedAppend = custody.projectIdentity === head.projectIdentity &&
762
+ custody.custodyNonce === head.custodyNonce &&
763
+ custody.journalSequence + 1 === head.sequence &&
764
+ custody.journalRecordHash === head.previousRecordHash;
765
+ if (interruptedAppend) {
766
+ await this.loadGeneration(head.generation, replay, custodyFromHead(head));
767
+ return {
768
+ status: 'repairable',
769
+ currentGeneration: current,
770
+ recoverableGeneration: head.generation,
771
+ generationCount: generations.length,
772
+ reason: 'A committed journal head is waiting for interrupted pointer/custody finalization.',
773
+ allowedRecovery: 'restore-generation',
774
+ lock,
775
+ };
776
+ }
777
+ if (custody.journalSequence !== head.sequence ||
778
+ custody.journalRecordHash !== head.recordHash ||
779
+ custody.headGeneration !== head.generation ||
780
+ custody.headIntegrityHash !== head.integrityHash) {
781
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The replaceable custody files diverge from the project-local head journal.');
782
+ }
783
+ if (current === head.generation) {
784
+ await this.loadGeneration(current, replay, custody);
785
+ return {
786
+ status: 'healthy',
787
+ currentGeneration: current,
788
+ recoverableGeneration: null,
789
+ generationCount: generations.length,
790
+ reason: 'Current custody, Event replay, and raw bytes verify exactly.',
791
+ allowedRecovery: 'none',
792
+ lock,
793
+ };
794
+ }
795
+ await this.loadGeneration(head.generation, replay, custody);
796
+ return {
797
+ status: 'repairable',
798
+ currentGeneration: current,
799
+ recoverableGeneration: head.generation,
800
+ generationCount: generations.length,
801
+ reason: 'The pointer is interrupted, but the custody head verifies exactly.',
802
+ allowedRecovery: 'restore-generation',
803
+ lock,
804
+ };
805
+ }
806
+ catch (error) {
807
+ if (error instanceof OperateStoreError && error.code === 'OPERATE_STORE_INCOMPATIBLE') {
808
+ return {
809
+ status: 'incompatible',
810
+ currentGeneration: current,
811
+ recoverableGeneration: null,
812
+ generationCount: generations.length,
813
+ reason: error.message,
814
+ allowedRecovery: 'upgrade-required',
815
+ lock,
816
+ };
817
+ }
818
+ return {
819
+ status: 'corrupt',
820
+ currentGeneration: current,
821
+ recoverableGeneration: null,
822
+ generationCount: generations.length,
823
+ reason: error instanceof Error ? error.message : 'Custody verification failed.',
824
+ allowedRecovery: 'inspect-project',
825
+ lock,
826
+ };
827
+ }
828
+ }
829
+ async clearStaleLock() {
830
+ await this.assertStorageCustody(true);
831
+ const identity = await this.projectIdentity();
832
+ const recovery = await this.acquireRecoveryLock(identity);
833
+ try {
834
+ const inspection = await this.inspectLock(identity);
835
+ if (!['stale', 'invalid'].includes(inspection.status)) {
836
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', inspection.status === 'live'
837
+ ? 'A live owner still holds the lock.'
838
+ : 'No stale lock exists.');
839
+ }
840
+ await this.archiveStaleLock(inspection);
841
+ return true;
842
+ }
843
+ finally {
844
+ await this.releaseNamedLock(RECOVERY_LOCK_FILENAME, recovery);
845
+ }
846
+ }
847
+ async restore(generation, replay) {
848
+ const selected = safeGeneration(generation);
849
+ await this.assertStorageCustody();
850
+ await mkdir(this.root, { recursive: true, mode: 0o700 });
851
+ await this.assertStorageCustody(true);
852
+ const lock = await this.acquireLock();
853
+ try {
854
+ const custody = await this.readCustody();
855
+ if (!custody) {
856
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Custody anchor is unavailable.');
857
+ }
858
+ const journal = await this.readHeadJournal();
859
+ const head = journal.at(-1);
860
+ if (!head) {
861
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Head journal custody is invalid.');
862
+ }
863
+ const interruptedAppend = selected === head.generation &&
864
+ custody.projectIdentity === head.projectIdentity &&
865
+ custody.custodyNonce === head.custodyNonce &&
866
+ custody.journalSequence + 1 === head.sequence &&
867
+ custody.journalRecordHash === head.previousRecordHash;
868
+ if (head.recordHash !== custody.journalRecordHash && !interruptedAppend) {
869
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Head journal custody is invalid.');
870
+ }
871
+ const effectiveCustody = interruptedAppend ? custodyFromHead(head) : custody;
872
+ const recovered = await this.loadGeneration(selected, replay, effectiveCustody);
873
+ const manifest = await this.readManifest(selected);
874
+ let nextCustody = effectiveCustody;
875
+ if (selected !== head.generation) {
876
+ const createdAt = new Date().toISOString();
877
+ const projection = {
878
+ format: 'openplanr-operate-head-journal',
879
+ journalVersion: 1,
880
+ sequence: head.sequence + 1,
881
+ projectIdentity: custody.projectIdentity,
882
+ custodyNonce: custody.custodyNonce,
883
+ generation: selected,
884
+ integrityHash: manifest.integrityHash,
885
+ bindings: manifest.bindings,
886
+ previousRecordHash: head.recordHash,
887
+ createdAt,
888
+ };
889
+ const record = { ...projection, recordHash: hashValue(projection) };
890
+ await this.appendHeadJournal(record);
891
+ nextCustody = {
892
+ ...custody,
893
+ headGeneration: selected,
894
+ headIntegrityHash: manifest.integrityHash,
895
+ bindings: manifest.bindings,
896
+ journalSequence: record.sequence,
897
+ journalRecordHash: record.recordHash,
898
+ updatedAt: createdAt,
899
+ };
900
+ }
901
+ await this.atomicWrite(path.join(this.root, CUSTODY_FILENAME), `${JSON.stringify(nextCustody, null, 2)}\n`);
902
+ await this.atomicWrite(path.join(this.root, CURRENT_FILENAME), `${selected}\n`);
903
+ return recovered;
904
+ }
905
+ finally {
906
+ await this.releaseLock(lock);
907
+ }
908
+ }
909
+ async loadGeneration(generation, replay, custody) {
910
+ const selected = safeGeneration(generation);
911
+ const identity = await this.projectIdentity();
912
+ if (custody.projectIdentity !== identity) {
913
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Custody belongs to a foreign canonical project identity.');
914
+ }
915
+ await this.assertAnchored(selected, custody);
916
+ const manifest = await this.readManifest(selected);
917
+ if (manifest.projectIdentity !== identity ||
918
+ manifest.custodyNonce !== custody.custodyNonce ||
919
+ canonical(manifest.bindings) !== canonical(bindingsFromState(manifest.baseState))) {
920
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Generation project/scope/domain custody is invalid.', { generation: selected });
921
+ }
922
+ this.assertPreferenceBinding(manifest.preferences, manifest.bindings);
923
+ const directory = path.join(this.root, GENERATIONS_DIRECTORY, selected);
924
+ const eventBytes = await readFile(path.join(directory, 'events.jsonl')).catch(() => {
925
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The Event ledger is unavailable.', {
926
+ generation: selected,
927
+ });
928
+ });
929
+ if (hashBytes(eventBytes) !== manifest.eventsHash) {
930
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The exact Event JSONL bytes failed custody verification.', { generation: selected });
931
+ }
932
+ const events = [];
933
+ for (const line of eventBytes.toString('utf8').split('\n').filter(Boolean)) {
934
+ try {
935
+ const event = JSON.parse(line);
936
+ if (!isRecord(event))
937
+ throw new Error('not an object');
938
+ events.push(event);
939
+ }
940
+ catch {
941
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The Event ledger contains an invalid record.', { generation: selected });
942
+ }
943
+ }
944
+ if (events.length !== manifest.eventCount) {
945
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The Event count is invalid.', {
946
+ generation: selected,
947
+ });
948
+ }
949
+ if (hashValue(replayIndexProjection(manifest.state)) !== manifest.replayIndexHash) {
950
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Replay indexes failed explicit custody verification.', { generation: selected });
951
+ }
952
+ const artifacts = new Map();
953
+ const seen = new Set();
954
+ for (const entry of manifest.artifacts) {
955
+ if (!isRecord(entry) ||
956
+ typeof entry.artifactId !== 'string' ||
957
+ !ARTIFACT_ID_PATTERN.test(entry.artifactId) ||
958
+ entry.file !== `${entry.artifactId}.bin` ||
959
+ typeof entry.rawHash !== 'string' ||
960
+ typeof entry.sizeBytes !== 'number' ||
961
+ seen.has(entry.artifactId)) {
962
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Artifact custody metadata is invalid.', { generation: selected });
963
+ }
964
+ seen.add(entry.artifactId);
965
+ const bytes = await readFile(path.join(directory, 'artifacts', String(entry.file))).catch(() => {
966
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'A durable Artifact is unavailable.', { generation: selected, artifactId: entry.artifactId });
967
+ });
968
+ if (bytes.length !== entry.sizeBytes || hashBytes(bytes) !== entry.rawHash) {
969
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Artifact raw bytes failed custody verification.', { generation: selected, artifactId: entry.artifactId });
970
+ }
971
+ artifacts.set(entry.artifactId, bytes);
972
+ }
973
+ const replayed = await replay({ baseState: manifest.baseState, events, artifacts });
974
+ if (canonical(replayed) !== canonical(manifest.state)) {
975
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The durable projection does not match exact Event replay.', { generation: selected });
976
+ }
977
+ return {
978
+ generation: selected,
979
+ baseState: manifest.baseState,
980
+ state: replayed,
981
+ events,
982
+ artifacts,
983
+ preferences: manifest.preferences,
984
+ };
985
+ }
986
+ async assertAnchored(generation, custody) {
987
+ let cursor = custody.headGeneration;
988
+ let expectedHash = custody.headIntegrityHash;
989
+ const visited = new Set();
990
+ while (cursor !== null && expectedHash !== null && !visited.has(cursor)) {
991
+ visited.add(cursor);
992
+ const manifest = await this.readManifest(cursor);
993
+ if (manifest.integrityHash !== expectedHash)
994
+ break;
995
+ if (cursor === generation)
996
+ return;
997
+ cursor = manifest.parentGeneration;
998
+ expectedHash = manifest.parentIntegrityHash;
999
+ }
1000
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The selected generation is not anchored by this project custody chain.', { generation });
1001
+ }
1002
+ async readManifest(generation) {
1003
+ try {
1004
+ return parseManifest(await readFile(path.join(this.root, GENERATIONS_DIRECTORY, generation, 'manifest.json'), 'utf8'), generation);
1005
+ }
1006
+ catch (error) {
1007
+ if (error instanceof OperateStoreError)
1008
+ throw error;
1009
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The selected generation manifest is unavailable.', { generation });
1010
+ }
1011
+ }
1012
+ assertPreferenceBinding(preferences, bindings) {
1013
+ const selected = preferences.lastCycleId
1014
+ ? bindings.find((entry) => entry.cycleId === preferences.lastCycleId)
1015
+ : null;
1016
+ if (preferences.lastCycleId !== null &&
1017
+ (!selected ||
1018
+ selected.scopeId !== preferences.selectedScopeId ||
1019
+ selected.domainId !== preferences.selectedDomainId ||
1020
+ selected.domainVersion !== preferences.selectedDomainVersion)) {
1021
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'Selected scope/domain/version preferences do not match canonical cycle custody.');
1022
+ }
1023
+ }
1024
+ async projectIdentity() {
1025
+ const resolved = await realpath(this.projectDir).catch(() => this.projectDir);
1026
+ const configPath = path.join(this.projectDir, '.planr', 'config.json');
1027
+ await assertOperatePathCustody(this.projectDir, configPath, {
1028
+ code: 'OPERATE_STORE_INCOMPATIBLE',
1029
+ message: 'Operate project identity cannot read configuration through symbolic links or outside project-local .planr.',
1030
+ requireFile: true,
1031
+ });
1032
+ let config = null;
1033
+ try {
1034
+ const parsed = JSON.parse(await readFile(configPath, 'utf8'));
1035
+ config = { projectName: parsed.projectName ?? null, createdAt: parsed.createdAt ?? null };
1036
+ }
1037
+ catch {
1038
+ config = null;
1039
+ }
1040
+ return hashValue({ kind: 'openplanr-project-identity', resolved, config });
1041
+ }
1042
+ async readCustody() {
1043
+ try {
1044
+ return parseCustody(await readFile(path.join(this.root, CUSTODY_FILENAME), 'utf8'));
1045
+ }
1046
+ catch (error) {
1047
+ if (error.code === 'ENOENT')
1048
+ return null;
1049
+ throw error;
1050
+ }
1051
+ }
1052
+ async readHeadJournal() {
1053
+ let text;
1054
+ try {
1055
+ text = await readFile(path.join(this.root, HEAD_JOURNAL_FILENAME), 'utf8');
1056
+ }
1057
+ catch (error) {
1058
+ if (error.code === 'ENOENT')
1059
+ return [];
1060
+ throw error;
1061
+ }
1062
+ if (!text.endsWith('\n')) {
1063
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The project-local head journal was truncated.');
1064
+ }
1065
+ const records = text
1066
+ .split('\n')
1067
+ .filter(Boolean)
1068
+ .map((line) => parseJournalLine(line));
1069
+ const identity = await this.projectIdentity();
1070
+ for (let index = 0; index < records.length; index += 1) {
1071
+ const record = records[index];
1072
+ const previous = records[index - 1] ?? null;
1073
+ if (record.sequence !== index + 1 ||
1074
+ record.previousRecordHash !== (previous?.recordHash ?? null) ||
1075
+ record.projectIdentity !== identity ||
1076
+ (previous && record.custodyNonce !== previous.custodyNonce)) {
1077
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The project-local head journal is internally inconsistent, reordered, or bound to another project.');
1078
+ }
1079
+ const manifest = await this.readManifest(record.generation);
1080
+ if (manifest.projectIdentity !== identity ||
1081
+ manifest.custodyNonce !== record.custodyNonce ||
1082
+ manifest.integrityHash !== record.integrityHash ||
1083
+ canonical(manifest.bindings) !== canonical(record.bindings)) {
1084
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'A journal head does not match the exact generation manifest it anchors.');
1085
+ }
1086
+ }
1087
+ return records;
1088
+ }
1089
+ async appendHeadJournal(record) {
1090
+ const current = await this.readHeadJournal();
1091
+ const previous = current.at(-1) ?? null;
1092
+ if (record.sequence !== (previous?.sequence ?? 0) + 1 ||
1093
+ record.previousRecordHash !== (previous?.recordHash ?? null) ||
1094
+ record.recordHash !== hashValue(journalProjection(record))) {
1095
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'The head journal append does not extend the exact current anchor.');
1096
+ }
1097
+ const handle = await open(path.join(this.root, HEAD_JOURNAL_FILENAME), 'a');
1098
+ try {
1099
+ await handle.writeFile(`${JSON.stringify(record)}\n`, 'utf8');
1100
+ await handle.sync();
1101
+ }
1102
+ finally {
1103
+ await handle.close();
1104
+ }
1105
+ const verified = await this.readHeadJournal();
1106
+ if (verified.at(-1)?.recordHash !== record.recordHash) {
1107
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The appended head journal record could not be verified.');
1108
+ }
1109
+ }
1110
+ async currentGeneration() {
1111
+ try {
1112
+ return safeGeneration(await readFile(path.join(this.root, CURRENT_FILENAME), 'utf8'));
1113
+ }
1114
+ catch (error) {
1115
+ if (error.code === 'ENOENT')
1116
+ return null;
1117
+ throw error;
1118
+ }
1119
+ }
1120
+ async generationNames() {
1121
+ try {
1122
+ return (await readdir(path.join(this.root, GENERATIONS_DIRECTORY)))
1123
+ .filter((entry) => GENERATION_PATTERN.test(entry))
1124
+ .sort();
1125
+ }
1126
+ catch (error) {
1127
+ if (error.code === 'ENOENT')
1128
+ return [];
1129
+ throw error;
1130
+ }
1131
+ }
1132
+ async inspectLock(projectIdentity) {
1133
+ return await this.inspectNamedLock(LOCK_FILENAME, projectIdentity);
1134
+ }
1135
+ async inspectNamedLock(filename, projectIdentity) {
1136
+ let value;
1137
+ try {
1138
+ value = JSON.parse(await readFile(path.join(this.root, filename), 'utf8'));
1139
+ }
1140
+ catch (error) {
1141
+ if (error.code === 'ENOENT') {
1142
+ return {
1143
+ status: 'absent',
1144
+ ownerPid: null,
1145
+ nonce: null,
1146
+ expiresAt: null,
1147
+ reason: `No durable ${filename === LOCK_FILENAME ? 'writer' : 'recovery'} lock exists.`,
1148
+ };
1149
+ }
1150
+ return {
1151
+ status: 'invalid',
1152
+ ownerPid: null,
1153
+ nonce: null,
1154
+ expiresAt: null,
1155
+ reason: `The ${filename === LOCK_FILENAME ? 'writer' : 'recovery'} lock is unreadable and may be recovered explicitly.`,
1156
+ };
1157
+ }
1158
+ if (!isRecord(value) ||
1159
+ value.format !== LOCK_FORMAT ||
1160
+ typeof value.nonce !== 'string' ||
1161
+ !/^[a-f0-9]{32}$/u.test(value.nonce) ||
1162
+ !Number.isSafeInteger(value.pid) ||
1163
+ Number(value.pid) < 1 ||
1164
+ typeof value.createdAt !== 'string' ||
1165
+ typeof value.expiresAt !== 'string' ||
1166
+ Number.isNaN(Date.parse(value.createdAt)) ||
1167
+ Number.isNaN(Date.parse(value.expiresAt)) ||
1168
+ Date.parse(value.expiresAt) <= Date.parse(value.createdAt) ||
1169
+ value.projectIdentity !== projectIdentity) {
1170
+ return {
1171
+ status: 'invalid',
1172
+ ownerPid: typeof value?.pid === 'number' ? Number(value.pid) : null,
1173
+ nonce: typeof value?.nonce === 'string'
1174
+ ? String(value.nonce)
1175
+ : null,
1176
+ expiresAt: typeof value?.expiresAt === 'string'
1177
+ ? String(value.expiresAt)
1178
+ : null,
1179
+ reason: `The ${filename === LOCK_FILENAME ? 'writer' : 'recovery'} lock is foreign or malformed.`,
1180
+ };
1181
+ }
1182
+ const ownerPid = Number(value.pid);
1183
+ const stale = Date.parse(value.expiresAt) <= Date.now() || !pidAlive(ownerPid);
1184
+ return {
1185
+ status: stale ? 'stale' : 'live',
1186
+ ownerPid,
1187
+ nonce: value.nonce,
1188
+ expiresAt: value.expiresAt,
1189
+ reason: stale
1190
+ ? `A stale or orphaned ${filename === LOCK_FILENAME ? 'writer' : 'recovery'} lock can be archived safely.`
1191
+ : `Operate ${filename === LOCK_FILENAME ? 'writer' : 'recovery'} process ${ownerPid} holds a live lock until ${value.expiresAt}.`,
1192
+ };
1193
+ }
1194
+ async acquireLock() {
1195
+ const projectIdentity = await this.projectIdentity();
1196
+ await mkdir(this.root, { recursive: true });
1197
+ const recovery = await this.acquireRecoveryLock(projectIdentity);
1198
+ try {
1199
+ const inspection = await this.inspectLock(projectIdentity);
1200
+ if (['stale', 'invalid'].includes(inspection.status)) {
1201
+ await this.archiveStaleLock(inspection);
1202
+ }
1203
+ else if (inspection.status === 'live') {
1204
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', inspection.reason, {
1205
+ ownerPid: inspection.ownerPid,
1206
+ expiresAt: inspection.expiresAt,
1207
+ });
1208
+ }
1209
+ const createdAt = new Date().toISOString();
1210
+ const lock = {
1211
+ format: LOCK_FORMAT,
1212
+ projectIdentity,
1213
+ nonce: randomUUID().replaceAll('-', ''),
1214
+ pid: process.pid,
1215
+ createdAt,
1216
+ expiresAt: new Date(Date.now() + LOCK_TTL_MS).toISOString(),
1217
+ };
1218
+ const handle = await open(path.join(this.root, LOCK_FILENAME), 'wx').catch((error) => {
1219
+ if (error.code === 'EEXIST') {
1220
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'The writer lock changed during recovery mutex custody.');
1221
+ }
1222
+ throw error;
1223
+ });
1224
+ try {
1225
+ await handle.writeFile(`${JSON.stringify(lock, null, 2)}\n`, 'utf8');
1226
+ await handle.sync();
1227
+ }
1228
+ finally {
1229
+ await handle.close();
1230
+ }
1231
+ return lock;
1232
+ }
1233
+ finally {
1234
+ await this.releaseNamedLock(RECOVERY_LOCK_FILENAME, recovery);
1235
+ }
1236
+ }
1237
+ async acquireRecoveryLock(projectIdentity) {
1238
+ for (let attempt = 0; attempt < 2; attempt += 1) {
1239
+ const createdAt = new Date().toISOString();
1240
+ const record = {
1241
+ format: LOCK_FORMAT,
1242
+ projectIdentity,
1243
+ nonce: randomUUID().replaceAll('-', ''),
1244
+ pid: process.pid,
1245
+ createdAt,
1246
+ expiresAt: new Date(Date.now() + LOCK_TTL_MS).toISOString(),
1247
+ };
1248
+ try {
1249
+ const handle = await open(path.join(this.root, RECOVERY_LOCK_FILENAME), 'wx');
1250
+ try {
1251
+ await handle.writeFile(`${JSON.stringify(record, null, 2)}\n`, 'utf8');
1252
+ await handle.sync();
1253
+ }
1254
+ finally {
1255
+ await handle.close();
1256
+ }
1257
+ return record;
1258
+ }
1259
+ catch (error) {
1260
+ if (error.code !== 'EEXIST')
1261
+ throw error;
1262
+ const inspection = await this.inspectNamedLock(RECOVERY_LOCK_FILENAME, projectIdentity);
1263
+ if (!['stale', 'invalid'].includes(inspection.status)) {
1264
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'Another process owns durable stale-lock recovery.', { ownerPid: inspection.ownerPid, expiresAt: inspection.expiresAt });
1265
+ }
1266
+ await this.archiveNamedStaleLock(RECOVERY_LOCK_FILENAME, inspection);
1267
+ }
1268
+ }
1269
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'The recovery lock changed during deterministic orphan recovery.');
1270
+ }
1271
+ async archiveStaleLock(inspection) {
1272
+ await this.archiveNamedStaleLock(LOCK_FILENAME, inspection);
1273
+ }
1274
+ async archiveNamedStaleLock(filename, inspection) {
1275
+ const lockPath = path.join(this.root, filename);
1276
+ const directory = path.join(this.root, STALE_LOCKS_DIRECTORY);
1277
+ await mkdir(directory, { recursive: true });
1278
+ const before = await readFile(lockPath).catch((error) => {
1279
+ if (error.code === 'ENOENT') {
1280
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'The stale lock was already recovered by another process.');
1281
+ }
1282
+ throw error;
1283
+ });
1284
+ const target = path.join(directory, `${filename.toLowerCase()}-${inspection.nonce ?? 'invalid'}-${randomUUID()}.json`);
1285
+ try {
1286
+ await rename(lockPath, target);
1287
+ }
1288
+ catch (error) {
1289
+ if (error.code === 'ENOENT') {
1290
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'The stale lock was already recovered by another process.');
1291
+ }
1292
+ throw error;
1293
+ }
1294
+ const archived = await readFile(target);
1295
+ if (!archived.equals(before)) {
1296
+ throw new OperateStoreError('OPERATE_STORE_CORRUPT', 'The quarantined lock changed during atomic recovery.');
1297
+ }
1298
+ if (inspection.nonce !== null) {
1299
+ const parsed = JSON.parse(archived.toString('utf8'));
1300
+ if (parsed.nonce !== inspection.nonce || parsed.pid !== inspection.ownerPid) {
1301
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'The quarantined lock owner does not match the inspected stale owner.');
1302
+ }
1303
+ }
1304
+ }
1305
+ async releaseLock(lock) {
1306
+ await this.releaseNamedLock(LOCK_FILENAME, lock);
1307
+ }
1308
+ async releaseNamedLock(filename, lock) {
1309
+ try {
1310
+ const current = JSON.parse(await readFile(path.join(this.root, filename), 'utf8'));
1311
+ if (current.nonce === lock.nonce &&
1312
+ current.pid === lock.pid &&
1313
+ current.projectIdentity === lock.projectIdentity) {
1314
+ await unlink(path.join(this.root, filename));
1315
+ }
1316
+ else {
1317
+ throw new OperateStoreError('OPERATE_STORE_CONFLICT', 'Lock ownership changed before deterministic release.');
1318
+ }
1319
+ }
1320
+ catch (error) {
1321
+ if (error.code !== 'ENOENT')
1322
+ throw error;
1323
+ }
1324
+ }
1325
+ async atomicWrite(target, content) {
1326
+ await mkdir(path.dirname(target), { recursive: true });
1327
+ const temporary = `${target}.${process.pid}.${randomUUID()}.tmp`;
1328
+ try {
1329
+ await writeFile(temporary, content, { flag: 'wx' });
1330
+ await rename(temporary, target);
1331
+ }
1332
+ catch (error) {
1333
+ await rm(temporary, { force: true }).catch(() => undefined);
1334
+ throw error;
1335
+ }
1336
+ }
1337
+ }
1338
+ export function createOperateStore(projectDir) {
1339
+ return new OperateStore(projectDir);
1340
+ }
1341
+ export function createEmptyOperatePreferences() {
1342
+ return emptyPreferences();
1343
+ }
1344
+ //# sourceMappingURL=store.js.map