mewkit 1.14.1 → 1.16.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 (739) hide show
  1. package/NOTICE +24 -0
  2. package/README.md +36 -70
  3. package/dist/commands/capabilities.d.ts +13 -0
  4. package/dist/commands/capabilities.d.ts.map +1 -0
  5. package/dist/commands/capabilities.js +230 -0
  6. package/dist/commands/capabilities.js.map +1 -0
  7. package/dist/commands/context.d.ts +10 -0
  8. package/dist/commands/context.d.ts.map +1 -0
  9. package/dist/commands/context.js +125 -0
  10. package/dist/commands/context.js.map +1 -0
  11. package/dist/commands/doctor.d.ts +27 -0
  12. package/dist/commands/doctor.d.ts.map +1 -1
  13. package/dist/commands/doctor.js +123 -0
  14. package/dist/commands/doctor.js.map +1 -1
  15. package/dist/commands/providers.d.ts +2 -0
  16. package/dist/commands/providers.d.ts.map +1 -1
  17. package/dist/commands/providers.js +77 -0
  18. package/dist/commands/providers.js.map +1 -1
  19. package/dist/commands/task-state.d.ts +13 -0
  20. package/dist/commands/task-state.d.ts.map +1 -0
  21. package/dist/commands/task-state.js +106 -0
  22. package/dist/commands/task-state.js.map +1 -0
  23. package/dist/commands/validate.d.ts +48 -1
  24. package/dist/commands/validate.d.ts.map +1 -1
  25. package/dist/commands/validate.js +97 -24
  26. package/dist/commands/validate.js.map +1 -1
  27. package/dist/commands/visual-plan.d.ts +23 -0
  28. package/dist/commands/visual-plan.d.ts.map +1 -0
  29. package/dist/commands/visual-plan.js +26 -0
  30. package/dist/commands/visual-plan.js.map +1 -0
  31. package/dist/core/availability.d.ts +40 -0
  32. package/dist/core/availability.d.ts.map +1 -0
  33. package/dist/core/availability.js +47 -0
  34. package/dist/core/availability.js.map +1 -0
  35. package/dist/core/bootstrap.d.ts +19 -0
  36. package/dist/core/bootstrap.d.ts.map +1 -0
  37. package/dist/core/bootstrap.js +42 -0
  38. package/dist/core/bootstrap.js.map +1 -0
  39. package/dist/core/build-capabilities.d.ts +9 -0
  40. package/dist/core/build-capabilities.d.ts.map +1 -0
  41. package/dist/core/build-capabilities.js +123 -0
  42. package/dist/core/build-capabilities.js.map +1 -0
  43. package/dist/core/build-inventory.d.ts +2 -0
  44. package/dist/core/build-inventory.d.ts.map +1 -1
  45. package/dist/core/build-inventory.js +1 -1
  46. package/dist/core/build-inventory.js.map +1 -1
  47. package/dist/core/capability-authored.d.ts +26 -0
  48. package/dist/core/capability-authored.d.ts.map +1 -0
  49. package/dist/core/capability-authored.js +117 -0
  50. package/dist/core/capability-authored.js.map +1 -0
  51. package/dist/core/capability-snapshot.d.ts +13 -0
  52. package/dist/core/capability-snapshot.d.ts.map +1 -0
  53. package/dist/core/capability-snapshot.js +53 -0
  54. package/dist/core/capability-snapshot.js.map +1 -0
  55. package/dist/core/capability.d.ts +519 -0
  56. package/dist/core/capability.d.ts.map +1 -0
  57. package/dist/core/capability.js +114 -0
  58. package/dist/core/capability.js.map +1 -0
  59. package/dist/core/compute-checksums.d.ts.map +1 -1
  60. package/dist/core/compute-checksums.js +8 -2
  61. package/dist/core/compute-checksums.js.map +1 -1
  62. package/dist/core/consolidation-ledger.d.ts +30 -0
  63. package/dist/core/consolidation-ledger.d.ts.map +1 -0
  64. package/dist/core/consolidation-ledger.js +147 -0
  65. package/dist/core/consolidation-ledger.js.map +1 -0
  66. package/dist/core/generate-capability-view.d.ts +21 -0
  67. package/dist/core/generate-capability-view.d.ts.map +1 -0
  68. package/dist/core/generate-capability-view.js +48 -0
  69. package/dist/core/generate-capability-view.js.map +1 -0
  70. package/dist/core/install-metadata.d.ts +20 -3
  71. package/dist/core/install-metadata.d.ts.map +1 -1
  72. package/dist/core/install-metadata.js +49 -9
  73. package/dist/core/install-metadata.js.map +1 -1
  74. package/dist/core/provider-adapter.d.ts +28 -0
  75. package/dist/core/provider-adapter.d.ts.map +1 -0
  76. package/dist/core/provider-adapter.js +31 -0
  77. package/dist/core/provider-adapter.js.map +1 -0
  78. package/dist/core/provider-invocation.d.ts +14 -0
  79. package/dist/core/provider-invocation.d.ts.map +1 -0
  80. package/dist/core/provider-invocation.js +56 -0
  81. package/dist/core/provider-invocation.js.map +1 -0
  82. package/dist/core/provider-lifecycle.d.ts +35 -0
  83. package/dist/core/provider-lifecycle.d.ts.map +1 -0
  84. package/dist/core/provider-lifecycle.js +101 -0
  85. package/dist/core/provider-lifecycle.js.map +1 -0
  86. package/dist/core/provider-projection.d.ts +29 -0
  87. package/dist/core/provider-projection.d.ts.map +1 -0
  88. package/dist/core/provider-projection.js +47 -0
  89. package/dist/core/provider-projection.js.map +1 -0
  90. package/dist/core/release-metadata.d.ts +7 -0
  91. package/dist/core/release-metadata.d.ts.map +1 -1
  92. package/dist/core/release-metadata.js +13 -0
  93. package/dist/core/release-metadata.js.map +1 -1
  94. package/dist/core/repo-context-adapter.d.ts +23 -0
  95. package/dist/core/repo-context-adapter.d.ts.map +1 -0
  96. package/dist/core/repo-context-adapter.js +44 -0
  97. package/dist/core/repo-context-adapter.js.map +1 -0
  98. package/dist/core/repo-context.d.ts +147 -0
  99. package/dist/core/repo-context.d.ts.map +1 -0
  100. package/dist/core/repo-context.js +204 -0
  101. package/dist/core/repo-context.js.map +1 -0
  102. package/dist/core/resolve-capabilities.d.ts +70 -0
  103. package/dist/core/resolve-capabilities.d.ts.map +1 -0
  104. package/dist/core/resolve-capabilities.js +124 -0
  105. package/dist/core/resolve-capabilities.js.map +1 -0
  106. package/dist/core/smart-update.d.ts.map +1 -1
  107. package/dist/core/smart-update.js +13 -12
  108. package/dist/core/smart-update.js.map +1 -1
  109. package/dist/core/task-record.d.ts +252 -0
  110. package/dist/core/task-record.d.ts.map +1 -0
  111. package/dist/core/task-record.js +252 -0
  112. package/dist/core/task-record.js.map +1 -0
  113. package/dist/core/validate-capabilities.d.ts +12 -0
  114. package/dist/core/validate-capabilities.d.ts.map +1 -0
  115. package/dist/core/validate-capabilities.js +138 -0
  116. package/dist/core/validate-capabilities.js.map +1 -0
  117. package/dist/index.js +99 -25
  118. package/dist/index.js.map +1 -1
  119. package/dist/local-web/atomic-write.d.ts +15 -0
  120. package/dist/local-web/atomic-write.d.ts.map +1 -0
  121. package/dist/local-web/atomic-write.js +69 -0
  122. package/dist/local-web/atomic-write.js.map +1 -0
  123. package/dist/local-web/constants.d.ts +13 -0
  124. package/dist/local-web/constants.d.ts.map +1 -0
  125. package/dist/local-web/constants.js +13 -0
  126. package/dist/local-web/constants.js.map +1 -0
  127. package/dist/local-web/etag.d.ts +19 -0
  128. package/dist/local-web/etag.d.ts.map +1 -0
  129. package/dist/local-web/etag.js +32 -0
  130. package/dist/local-web/etag.js.map +1 -0
  131. package/dist/local-web/host-guard.d.ts +12 -0
  132. package/dist/local-web/host-guard.d.ts.map +1 -0
  133. package/dist/local-web/host-guard.js +18 -0
  134. package/dist/local-web/host-guard.js.map +1 -0
  135. package/dist/local-web/index.d.ts +23 -0
  136. package/dist/local-web/index.d.ts.map +1 -0
  137. package/dist/local-web/index.js +23 -0
  138. package/dist/local-web/index.js.map +1 -0
  139. package/dist/local-web/local-server.d.ts +37 -0
  140. package/dist/local-web/local-server.d.ts.map +1 -0
  141. package/dist/local-web/local-server.js +85 -0
  142. package/dist/local-web/local-server.js.map +1 -0
  143. package/dist/local-web/open-browser.d.ts +12 -0
  144. package/dist/local-web/open-browser.d.ts.map +1 -0
  145. package/dist/{orchviz/open-url.js → local-web/open-browser.js} +9 -8
  146. package/dist/local-web/open-browser.js.map +1 -0
  147. package/dist/local-web/origin-guard.d.ts +11 -0
  148. package/dist/local-web/origin-guard.d.ts.map +1 -0
  149. package/dist/local-web/origin-guard.js +15 -0
  150. package/dist/local-web/origin-guard.js.map +1 -0
  151. package/dist/local-web/path-boundary.d.ts +20 -0
  152. package/dist/local-web/path-boundary.d.ts.map +1 -0
  153. package/dist/local-web/path-boundary.js +39 -0
  154. package/dist/local-web/path-boundary.js.map +1 -0
  155. package/dist/local-web/request-body.d.ts +24 -0
  156. package/dist/local-web/request-body.d.ts.map +1 -0
  157. package/dist/local-web/request-body.js +68 -0
  158. package/dist/local-web/request-body.js.map +1 -0
  159. package/dist/local-web/static-handler.d.ts +14 -0
  160. package/dist/local-web/static-handler.d.ts.map +1 -0
  161. package/dist/{orchviz/server → local-web}/static-handler.js +11 -6
  162. package/dist/local-web/static-handler.js.map +1 -0
  163. package/dist/migrate/capability-bootstrap-projection.d.ts +11 -0
  164. package/dist/migrate/capability-bootstrap-projection.d.ts.map +1 -0
  165. package/dist/migrate/capability-bootstrap-projection.js +48 -0
  166. package/dist/migrate/capability-bootstrap-projection.js.map +1 -0
  167. package/dist/migrate/migrate-orchestrator.d.ts.map +1 -1
  168. package/dist/migrate/migrate-orchestrator.js +22 -0
  169. package/dist/migrate/migrate-orchestrator.js.map +1 -1
  170. package/dist/migrate/reconcile/portable-manifest.d.ts +12 -12
  171. package/dist/migrate/reconcile/portable-registry.d.ts +30 -30
  172. package/dist/migrate/types.d.ts +10 -10
  173. package/dist/{orchviz/token-estimator.d.ts → token-estimator/index.d.ts} +6 -1
  174. package/dist/token-estimator/index.d.ts.map +1 -0
  175. package/dist/{orchviz/token-estimator.js → token-estimator/index.js} +11 -2
  176. package/dist/token-estimator/index.js.map +1 -0
  177. package/dist/visual-plan/__fixtures__/valid-plan.d.ts +15 -0
  178. package/dist/visual-plan/__fixtures__/valid-plan.d.ts.map +1 -0
  179. package/dist/visual-plan/__fixtures__/valid-plan.js +79 -0
  180. package/dist/visual-plan/__fixtures__/valid-plan.js.map +1 -0
  181. package/dist/visual-plan/application/apply-feedback.d.ts +31 -0
  182. package/dist/visual-plan/application/apply-feedback.d.ts.map +1 -0
  183. package/dist/visual-plan/application/apply-feedback.js +85 -0
  184. package/dist/visual-plan/application/apply-feedback.js.map +1 -0
  185. package/dist/visual-plan/application/apply-patch-op.d.ts +13 -0
  186. package/dist/visual-plan/application/apply-patch-op.d.ts.map +1 -0
  187. package/dist/visual-plan/application/apply-patch-op.js +72 -0
  188. package/dist/visual-plan/application/apply-patch-op.js.map +1 -0
  189. package/dist/visual-plan/application/approve.d.ts +24 -0
  190. package/dist/visual-plan/application/approve.d.ts.map +1 -0
  191. package/dist/visual-plan/application/approve.js +53 -0
  192. package/dist/visual-plan/application/approve.js.map +1 -0
  193. package/dist/visual-plan/application/clock.d.ts +8 -0
  194. package/dist/visual-plan/application/clock.d.ts.map +1 -0
  195. package/dist/visual-plan/application/clock.js +10 -0
  196. package/dist/visual-plan/application/clock.js.map +1 -0
  197. package/dist/visual-plan/application/export-plan.d.ts +19 -0
  198. package/dist/visual-plan/application/export-plan.d.ts.map +1 -0
  199. package/dist/visual-plan/application/export-plan.js +59 -0
  200. package/dist/visual-plan/application/export-plan.js.map +1 -0
  201. package/dist/visual-plan/application/patch-plan.d.ts +26 -0
  202. package/dist/visual-plan/application/patch-plan.d.ts.map +1 -0
  203. package/dist/visual-plan/application/patch-plan.js +48 -0
  204. package/dist/visual-plan/application/patch-plan.js.map +1 -0
  205. package/dist/visual-plan/application/prepare-feedback.d.ts +24 -0
  206. package/dist/visual-plan/application/prepare-feedback.d.ts.map +1 -0
  207. package/dist/visual-plan/application/prepare-feedback.js +70 -0
  208. package/dist/visual-plan/application/prepare-feedback.js.map +1 -0
  209. package/dist/visual-plan/application/rehash.d.ts +19 -0
  210. package/dist/visual-plan/application/rehash.d.ts.map +1 -0
  211. package/dist/visual-plan/application/rehash.js +43 -0
  212. package/dist/visual-plan/application/rehash.js.map +1 -0
  213. package/dist/visual-plan/application/status.d.ts +20 -0
  214. package/dist/visual-plan/application/status.d.ts.map +1 -0
  215. package/dist/visual-plan/application/status.js +27 -0
  216. package/dist/visual-plan/application/status.js.map +1 -0
  217. package/dist/visual-plan/application/validate-plan.d.ts +30 -0
  218. package/dist/visual-plan/application/validate-plan.d.ts.map +1 -0
  219. package/dist/visual-plan/application/validate-plan.js +59 -0
  220. package/dist/visual-plan/application/validate-plan.js.map +1 -0
  221. package/dist/visual-plan/domain/coverage.d.ts +35 -0
  222. package/dist/visual-plan/domain/coverage.d.ts.map +1 -0
  223. package/dist/visual-plan/domain/coverage.js +99 -0
  224. package/dist/visual-plan/domain/coverage.js.map +1 -0
  225. package/dist/visual-plan/domain/cross-refs.d.ts +20 -0
  226. package/dist/visual-plan/domain/cross-refs.d.ts.map +1 -0
  227. package/dist/visual-plan/domain/cross-refs.js +92 -0
  228. package/dist/visual-plan/domain/cross-refs.js.map +1 -0
  229. package/dist/visual-plan/domain/errors.d.ts +43 -0
  230. package/dist/visual-plan/domain/errors.d.ts.map +1 -0
  231. package/dist/visual-plan/domain/errors.js +33 -0
  232. package/dist/visual-plan/domain/errors.js.map +1 -0
  233. package/dist/visual-plan/domain/feedback-schemas.d.ts +160 -0
  234. package/dist/visual-plan/domain/feedback-schemas.d.ts.map +1 -0
  235. package/dist/visual-plan/domain/feedback-schemas.js +71 -0
  236. package/dist/visual-plan/domain/feedback-schemas.js.map +1 -0
  237. package/dist/visual-plan/domain/ids.d.ts +21 -0
  238. package/dist/visual-plan/domain/ids.d.ts.map +1 -0
  239. package/dist/visual-plan/domain/ids.js +25 -0
  240. package/dist/visual-plan/domain/ids.js.map +1 -0
  241. package/dist/visual-plan/domain/patches.d.ts +176 -0
  242. package/dist/visual-plan/domain/patches.d.ts.map +1 -0
  243. package/dist/visual-plan/domain/patches.js +41 -0
  244. package/dist/visual-plan/domain/patches.js.map +1 -0
  245. package/dist/visual-plan/domain/sanitizer-config.d.ts +61 -0
  246. package/dist/visual-plan/domain/sanitizer-config.d.ts.map +1 -0
  247. package/dist/visual-plan/domain/sanitizer-config.js +70 -0
  248. package/dist/visual-plan/domain/sanitizer-config.js.map +1 -0
  249. package/dist/visual-plan/domain/schemas.d.ts +1492 -0
  250. package/dist/visual-plan/domain/schemas.d.ts.map +1 -0
  251. package/dist/visual-plan/domain/schemas.js +166 -0
  252. package/dist/visual-plan/domain/schemas.js.map +1 -0
  253. package/dist/visual-plan/infrastructure/atomic-write.d.ts +11 -0
  254. package/dist/visual-plan/infrastructure/atomic-write.d.ts.map +1 -0
  255. package/dist/visual-plan/infrastructure/atomic-write.js +44 -0
  256. package/dist/visual-plan/infrastructure/atomic-write.js.map +1 -0
  257. package/dist/visual-plan/infrastructure/feedback-repository.d.ts +18 -0
  258. package/dist/visual-plan/infrastructure/feedback-repository.d.ts.map +1 -0
  259. package/dist/visual-plan/infrastructure/feedback-repository.js +59 -0
  260. package/dist/visual-plan/infrastructure/feedback-repository.js.map +1 -0
  261. package/dist/visual-plan/infrastructure/hashing.d.ts +37 -0
  262. package/dist/visual-plan/infrastructure/hashing.d.ts.map +1 -0
  263. package/dist/visual-plan/infrastructure/hashing.js +81 -0
  264. package/dist/visual-plan/infrastructure/hashing.js.map +1 -0
  265. package/dist/visual-plan/infrastructure/plan-state.d.ts +32 -0
  266. package/dist/visual-plan/infrastructure/plan-state.d.ts.map +1 -0
  267. package/dist/visual-plan/infrastructure/plan-state.js +58 -0
  268. package/dist/visual-plan/infrastructure/plan-state.js.map +1 -0
  269. package/dist/visual-plan/infrastructure/receipt-repository.d.ts +17 -0
  270. package/dist/visual-plan/infrastructure/receipt-repository.d.ts.map +1 -0
  271. package/dist/visual-plan/infrastructure/receipt-repository.js +59 -0
  272. package/dist/visual-plan/infrastructure/receipt-repository.js.map +1 -0
  273. package/dist/visual-plan/infrastructure/visual-plan-repository.d.ts +38 -0
  274. package/dist/visual-plan/infrastructure/visual-plan-repository.d.ts.map +1 -0
  275. package/dist/visual-plan/infrastructure/visual-plan-repository.js +97 -0
  276. package/dist/visual-plan/infrastructure/visual-plan-repository.js.map +1 -0
  277. package/dist/visual-plan/infrastructure/wireframe-sanitizer.d.ts +41 -0
  278. package/dist/visual-plan/infrastructure/wireframe-sanitizer.d.ts.map +1 -0
  279. package/dist/visual-plan/infrastructure/wireframe-sanitizer.js +72 -0
  280. package/dist/visual-plan/infrastructure/wireframe-sanitizer.js.map +1 -0
  281. package/dist/visual-plan/interface/cli.d.ts +29 -0
  282. package/dist/visual-plan/interface/cli.d.ts.map +1 -0
  283. package/dist/visual-plan/interface/cli.js +280 -0
  284. package/dist/visual-plan/interface/cli.js.map +1 -0
  285. package/dist/visual-plan/interface/studio.d.ts +20 -0
  286. package/dist/visual-plan/interface/studio.d.ts.map +1 -0
  287. package/dist/visual-plan/interface/studio.js +74 -0
  288. package/dist/visual-plan/interface/studio.js.map +1 -0
  289. package/dist/visual-plan/server/csp.d.ts +13 -0
  290. package/dist/visual-plan/server/csp.d.ts.map +1 -0
  291. package/dist/visual-plan/server/csp.js +17 -0
  292. package/dist/visual-plan/server/csp.js.map +1 -0
  293. package/dist/visual-plan/server/edit-lock.d.ts +28 -0
  294. package/dist/visual-plan/server/edit-lock.d.ts.map +1 -0
  295. package/dist/visual-plan/server/edit-lock.js +71 -0
  296. package/dist/visual-plan/server/edit-lock.js.map +1 -0
  297. package/dist/visual-plan/server/routes/feedback.d.ts +12 -0
  298. package/dist/visual-plan/server/routes/feedback.d.ts.map +1 -0
  299. package/dist/visual-plan/server/routes/feedback.js +63 -0
  300. package/dist/visual-plan/server/routes/feedback.js.map +1 -0
  301. package/dist/visual-plan/server/routes/get-plan.d.ts +14 -0
  302. package/dist/visual-plan/server/routes/get-plan.d.ts.map +1 -0
  303. package/dist/visual-plan/server/routes/get-plan.js +38 -0
  304. package/dist/visual-plan/server/routes/get-plan.js.map +1 -0
  305. package/dist/visual-plan/server/routes/patch.d.ts +10 -0
  306. package/dist/visual-plan/server/routes/patch.d.ts.map +1 -0
  307. package/dist/visual-plan/server/routes/patch.js +66 -0
  308. package/dist/visual-plan/server/routes/patch.js.map +1 -0
  309. package/dist/visual-plan/server/visual-plan-server.d.ts +30 -0
  310. package/dist/visual-plan/server/visual-plan-server.d.ts.map +1 -0
  311. package/dist/visual-plan/server/visual-plan-server.js +79 -0
  312. package/dist/visual-plan/server/visual-plan-server.js.map +1 -0
  313. package/dist/visual-plan-web/architects-daughter-latin-400-normal.woff +0 -0
  314. package/dist/visual-plan-web/architects-daughter-latin-400-normal.woff2 +0 -0
  315. package/dist/visual-plan-web/architects-daughter-latin-ext-400-normal.woff +0 -0
  316. package/dist/visual-plan-web/architects-daughter-latin-ext-400-normal.woff2 +0 -0
  317. package/dist/visual-plan-web/index.css +1 -0
  318. package/dist/visual-plan-web/index.html +17 -0
  319. package/dist/visual-plan-web/index.js +51 -0
  320. package/package.json +14 -17
  321. package/dist/commands/evolve.d.ts +0 -11
  322. package/dist/commands/evolve.d.ts.map +0 -1
  323. package/dist/commands/evolve.js +0 -63
  324. package/dist/commands/evolve.js.map +0 -1
  325. package/dist/commands/health.d.ts +0 -14
  326. package/dist/commands/health.d.ts.map +0 -1
  327. package/dist/commands/health.js +0 -193
  328. package/dist/commands/health.js.map +0 -1
  329. package/dist/commands/orchviz.d.ts +0 -12
  330. package/dist/commands/orchviz.d.ts.map +0 -1
  331. package/dist/commands/orchviz.js +0 -157
  332. package/dist/commands/orchviz.js.map +0 -1
  333. package/dist/commands/policy.d.ts +0 -8
  334. package/dist/commands/policy.d.ts.map +0 -1
  335. package/dist/commands/policy.js +0 -65
  336. package/dist/commands/policy.js.map +0 -1
  337. package/dist/commands/portability.d.ts +0 -7
  338. package/dist/commands/portability.d.ts.map +0 -1
  339. package/dist/commands/portability.js +0 -50
  340. package/dist/commands/portability.js.map +0 -1
  341. package/dist/commands/reflect.d.ts +0 -14
  342. package/dist/commands/reflect.d.ts.map +0 -1
  343. package/dist/commands/reflect.js +0 -135
  344. package/dist/commands/reflect.js.map +0 -1
  345. package/dist/commands/simulate.d.ts +0 -14
  346. package/dist/commands/simulate.d.ts.map +0 -1
  347. package/dist/commands/simulate.js +0 -86
  348. package/dist/commands/simulate.js.map +0 -1
  349. package/dist/core/event-log.d.ts +0 -44
  350. package/dist/core/event-log.d.ts.map +0 -1
  351. package/dist/core/event-log.js +0 -169
  352. package/dist/core/event-log.js.map +0 -1
  353. package/dist/core/evolution/event-clusters.d.ts +0 -4
  354. package/dist/core/evolution/event-clusters.d.ts.map +0 -1
  355. package/dist/core/evolution/event-clusters.js +0 -82
  356. package/dist/core/evolution/event-clusters.js.map +0 -1
  357. package/dist/core/evolution/recommendation-renderer.d.ts +0 -3
  358. package/dist/core/evolution/recommendation-renderer.d.ts.map +0 -1
  359. package/dist/core/evolution/recommendation-renderer.js +0 -24
  360. package/dist/core/evolution/recommendation-renderer.js.map +0 -1
  361. package/dist/core/evolution/review-failure-clusters.d.ts +0 -10
  362. package/dist/core/evolution/review-failure-clusters.d.ts.map +0 -1
  363. package/dist/core/evolution/review-failure-clusters.js +0 -30
  364. package/dist/core/evolution/review-failure-clusters.js.map +0 -1
  365. package/dist/core/evolution/suggestions.d.ts +0 -24
  366. package/dist/core/evolution/suggestions.d.ts.map +0 -1
  367. package/dist/core/evolution/suggestions.js +0 -11
  368. package/dist/core/evolution/suggestions.js.map +0 -1
  369. package/dist/core/gate-policy.d.ts +0 -20
  370. package/dist/core/gate-policy.d.ts.map +0 -1
  371. package/dist/core/gate-policy.js +0 -64
  372. package/dist/core/gate-policy.js.map +0 -1
  373. package/dist/core/portability-matrix.d.ts +0 -17
  374. package/dist/core/portability-matrix.d.ts.map +0 -1
  375. package/dist/core/portability-matrix.js +0 -31
  376. package/dist/core/portability-matrix.js.map +0 -1
  377. package/dist/core/simulation-runner.d.ts +0 -93
  378. package/dist/core/simulation-runner.d.ts.map +0 -1
  379. package/dist/core/simulation-runner.js +0 -161
  380. package/dist/core/simulation-runner.js.map +0 -1
  381. package/dist/core/usage/usage-analyzer.d.ts +0 -18
  382. package/dist/core/usage/usage-analyzer.d.ts.map +0 -1
  383. package/dist/core/usage/usage-analyzer.js +0 -41
  384. package/dist/core/usage/usage-analyzer.js.map +0 -1
  385. package/dist/memory/archive.d.ts +0 -9
  386. package/dist/memory/archive.d.ts.map +0 -1
  387. package/dist/memory/archive.js +0 -42
  388. package/dist/memory/archive.js.map +0 -1
  389. package/dist/memory/compact.d.ts +0 -9
  390. package/dist/memory/compact.d.ts.map +0 -1
  391. package/dist/memory/compact.js +0 -33
  392. package/dist/memory/compact.js.map +0 -1
  393. package/dist/memory/conflicts.d.ts +0 -8
  394. package/dist/memory/conflicts.d.ts.map +0 -1
  395. package/dist/memory/conflicts.js +0 -28
  396. package/dist/memory/conflicts.js.map +0 -1
  397. package/dist/memory/promote.d.ts +0 -8
  398. package/dist/memory/promote.d.ts.map +0 -1
  399. package/dist/memory/promote.js +0 -10
  400. package/dist/memory/promote.js.map +0 -1
  401. package/dist/memory/store-utils.d.ts +0 -14
  402. package/dist/memory/store-utils.d.ts.map +0 -1
  403. package/dist/memory/store-utils.js +0 -44
  404. package/dist/memory/store-utils.js.map +0 -1
  405. package/dist/migrate/__tests__/frontmatter-parser.test.d.ts +0 -2
  406. package/dist/migrate/__tests__/frontmatter-parser.test.d.ts.map +0 -1
  407. package/dist/migrate/__tests__/frontmatter-parser.test.js +0 -73
  408. package/dist/migrate/__tests__/frontmatter-parser.test.js.map +0 -1
  409. package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts +0 -2
  410. package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts.map +0 -1
  411. package/dist/migrate/__tests__/md-strip-mewkit.test.js +0 -55
  412. package/dist/migrate/__tests__/md-strip-mewkit.test.js.map +0 -1
  413. package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts +0 -2
  414. package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts.map +0 -1
  415. package/dist/migrate/__tests__/migrate-scope-resolver.test.js +0 -53
  416. package/dist/migrate/__tests__/migrate-scope-resolver.test.js.map +0 -1
  417. package/dist/migrate/__tests__/process-lock.test.d.ts +0 -2
  418. package/dist/migrate/__tests__/process-lock.test.d.ts.map +0 -1
  419. package/dist/migrate/__tests__/process-lock.test.js +0 -63
  420. package/dist/migrate/__tests__/process-lock.test.js.map +0 -1
  421. package/dist/migrate/__tests__/provider-registry.test.d.ts +0 -2
  422. package/dist/migrate/__tests__/provider-registry.test.d.ts.map +0 -1
  423. package/dist/migrate/__tests__/provider-registry.test.js +0 -53
  424. package/dist/migrate/__tests__/provider-registry.test.js.map +0 -1
  425. package/dist/migrate/__tests__/reconciler.test.d.ts +0 -2
  426. package/dist/migrate/__tests__/reconciler.test.d.ts.map +0 -1
  427. package/dist/migrate/__tests__/reconciler.test.js +0 -180
  428. package/dist/migrate/__tests__/reconciler.test.js.map +0 -1
  429. package/dist/migrate/__tests__/skill-id-utils.test.d.ts +0 -2
  430. package/dist/migrate/__tests__/skill-id-utils.test.d.ts.map +0 -1
  431. package/dist/migrate/__tests__/skill-id-utils.test.js +0 -78
  432. package/dist/migrate/__tests__/skill-id-utils.test.js.map +0 -1
  433. package/dist/migrate/converters/md-to-codex-rules.d.ts +0 -10
  434. package/dist/migrate/converters/md-to-codex-rules.d.ts.map +0 -1
  435. package/dist/migrate/converters/md-to-codex-rules.js +0 -133
  436. package/dist/migrate/converters/md-to-codex-rules.js.map +0 -1
  437. package/dist/orchviz/constants.d.ts +0 -72
  438. package/dist/orchviz/constants.d.ts.map +0 -1
  439. package/dist/orchviz/constants.js +0 -105
  440. package/dist/orchviz/constants.js.map +0 -1
  441. package/dist/orchviz/fs-utils.d.ts +0 -24
  442. package/dist/orchviz/fs-utils.d.ts.map +0 -1
  443. package/dist/orchviz/fs-utils.js +0 -49
  444. package/dist/orchviz/fs-utils.js.map +0 -1
  445. package/dist/orchviz/index.d.ts +0 -29
  446. package/dist/orchviz/index.d.ts.map +0 -1
  447. package/dist/orchviz/index.js +0 -28
  448. package/dist/orchviz/index.js.map +0 -1
  449. package/dist/orchviz/log-persister.d.ts +0 -22
  450. package/dist/orchviz/log-persister.d.ts.map +0 -1
  451. package/dist/orchviz/log-persister.js +0 -96
  452. package/dist/orchviz/log-persister.js.map +0 -1
  453. package/dist/orchviz/logger.d.ts +0 -13
  454. package/dist/orchviz/logger.d.ts.map +0 -1
  455. package/dist/orchviz/logger.js +0 -47
  456. package/dist/orchviz/logger.js.map +0 -1
  457. package/dist/orchviz/open-url.d.ts +0 -11
  458. package/dist/orchviz/open-url.d.ts.map +0 -1
  459. package/dist/orchviz/open-url.js.map +0 -1
  460. package/dist/orchviz/overlay/collector.d.ts +0 -29
  461. package/dist/orchviz/overlay/collector.d.ts.map +0 -1
  462. package/dist/orchviz/overlay/collector.js +0 -38
  463. package/dist/orchviz/overlay/collector.js.map +0 -1
  464. package/dist/orchviz/overlay/gate-readers.d.ts +0 -18
  465. package/dist/orchviz/overlay/gate-readers.d.ts.map +0 -1
  466. package/dist/orchviz/overlay/gate-readers.js +0 -111
  467. package/dist/orchviz/overlay/gate-readers.js.map +0 -1
  468. package/dist/orchviz/overlay/session-state-readers.d.ts +0 -18
  469. package/dist/orchviz/overlay/session-state-readers.d.ts.map +0 -1
  470. package/dist/orchviz/overlay/session-state-readers.js +0 -78
  471. package/dist/orchviz/overlay/session-state-readers.js.map +0 -1
  472. package/dist/orchviz/parser/handle-progress.d.ts +0 -9
  473. package/dist/orchviz/parser/handle-progress.d.ts.map +0 -1
  474. package/dist/orchviz/parser/handle-progress.js +0 -38
  475. package/dist/orchviz/parser/handle-progress.js.map +0 -1
  476. package/dist/orchviz/parser/handle-system.d.ts +0 -22
  477. package/dist/orchviz/parser/handle-system.d.ts.map +0 -1
  478. package/dist/orchviz/parser/handle-system.js +0 -99
  479. package/dist/orchviz/parser/handle-system.js.map +0 -1
  480. package/dist/orchviz/parser/handle-text.d.ts +0 -10
  481. package/dist/orchviz/parser/handle-text.d.ts.map +0 -1
  482. package/dist/orchviz/parser/handle-text.js +0 -83
  483. package/dist/orchviz/parser/handle-text.js.map +0 -1
  484. package/dist/orchviz/parser/handle-thinking.d.ts +0 -10
  485. package/dist/orchviz/parser/handle-thinking.d.ts.map +0 -1
  486. package/dist/orchviz/parser/handle-thinking.js +0 -35
  487. package/dist/orchviz/parser/handle-thinking.js.map +0 -1
  488. package/dist/orchviz/parser/handle-tool-result.d.ts +0 -10
  489. package/dist/orchviz/parser/handle-tool-result.d.ts.map +0 -1
  490. package/dist/orchviz/parser/handle-tool-result.js +0 -130
  491. package/dist/orchviz/parser/handle-tool-result.js.map +0 -1
  492. package/dist/orchviz/parser/handle-tool-use.d.ts +0 -11
  493. package/dist/orchviz/parser/handle-tool-use.d.ts.map +0 -1
  494. package/dist/orchviz/parser/handle-tool-use.js +0 -120
  495. package/dist/orchviz/parser/handle-tool-use.js.map +0 -1
  496. package/dist/orchviz/parser/index.d.ts +0 -38
  497. package/dist/orchviz/parser/index.d.ts.map +0 -1
  498. package/dist/orchviz/parser/index.js +0 -144
  499. package/dist/orchviz/parser/index.js.map +0 -1
  500. package/dist/orchviz/parser/label-helpers.d.ts +0 -9
  501. package/dist/orchviz/parser/label-helpers.d.ts.map +0 -1
  502. package/dist/orchviz/parser/label-helpers.js +0 -44
  503. package/dist/orchviz/parser/label-helpers.js.map +0 -1
  504. package/dist/orchviz/parser/strip-ansi.d.ts +0 -6
  505. package/dist/orchviz/parser/strip-ansi.d.ts.map +0 -1
  506. package/dist/orchviz/parser/strip-ansi.js +0 -14
  507. package/dist/orchviz/parser/strip-ansi.js.map +0 -1
  508. package/dist/orchviz/parser/utils.d.ts +0 -20
  509. package/dist/orchviz/parser/utils.d.ts.map +0 -1
  510. package/dist/orchviz/parser/utils.js +0 -54
  511. package/dist/orchviz/parser/utils.js.map +0 -1
  512. package/dist/orchviz/permission-detection.d.ts +0 -32
  513. package/dist/orchviz/permission-detection.d.ts.map +0 -1
  514. package/dist/orchviz/permission-detection.js +0 -104
  515. package/dist/orchviz/permission-detection.js.map +0 -1
  516. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.d.ts +0 -15
  517. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.d.ts.map +0 -1
  518. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.js +0 -165
  519. package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.js.map +0 -1
  520. package/dist/orchviz/plan/__tests__/atomic-write.test.d.ts +0 -11
  521. package/dist/orchviz/plan/__tests__/atomic-write.test.d.ts.map +0 -1
  522. package/dist/orchviz/plan/__tests__/atomic-write.test.js +0 -89
  523. package/dist/orchviz/plan/__tests__/atomic-write.test.js.map +0 -1
  524. package/dist/orchviz/plan/__tests__/end-to-end.test.d.ts +0 -10
  525. package/dist/orchviz/plan/__tests__/end-to-end.test.d.ts.map +0 -1
  526. package/dist/orchviz/plan/__tests__/end-to-end.test.js +0 -132
  527. package/dist/orchviz/plan/__tests__/end-to-end.test.js.map +0 -1
  528. package/dist/orchviz/plan/__tests__/etag.test.d.ts +0 -11
  529. package/dist/orchviz/plan/__tests__/etag.test.d.ts.map +0 -1
  530. package/dist/orchviz/plan/__tests__/etag.test.js +0 -92
  531. package/dist/orchviz/plan/__tests__/etag.test.js.map +0 -1
  532. package/dist/orchviz/plan/__tests__/list-plans.test.d.ts +0 -14
  533. package/dist/orchviz/plan/__tests__/list-plans.test.d.ts.map +0 -1
  534. package/dist/orchviz/plan/__tests__/list-plans.test.js +0 -154
  535. package/dist/orchviz/plan/__tests__/list-plans.test.js.map +0 -1
  536. package/dist/orchviz/plan/apply-todo-toggle.d.ts +0 -29
  537. package/dist/orchviz/plan/apply-todo-toggle.d.ts.map +0 -1
  538. package/dist/orchviz/plan/apply-todo-toggle.js +0 -129
  539. package/dist/orchviz/plan/apply-todo-toggle.js.map +0 -1
  540. package/dist/orchviz/plan/atomic-write.d.ts +0 -25
  541. package/dist/orchviz/plan/atomic-write.d.ts.map +0 -1
  542. package/dist/orchviz/plan/atomic-write.js +0 -85
  543. package/dist/orchviz/plan/atomic-write.js.map +0 -1
  544. package/dist/orchviz/plan/collector.d.ts +0 -49
  545. package/dist/orchviz/plan/collector.d.ts.map +0 -1
  546. package/dist/orchviz/plan/collector.js +0 -169
  547. package/dist/orchviz/plan/collector.js.map +0 -1
  548. package/dist/orchviz/plan/etag.d.ts +0 -24
  549. package/dist/orchviz/plan/etag.d.ts.map +0 -1
  550. package/dist/orchviz/plan/etag.js +0 -58
  551. package/dist/orchviz/plan/etag.js.map +0 -1
  552. package/dist/orchviz/plan/find-active-plan.d.ts +0 -9
  553. package/dist/orchviz/plan/find-active-plan.d.ts.map +0 -1
  554. package/dist/orchviz/plan/find-active-plan.js +0 -90
  555. package/dist/orchviz/plan/find-active-plan.js.map +0 -1
  556. package/dist/orchviz/plan/index.d.ts +0 -23
  557. package/dist/orchviz/plan/index.d.ts.map +0 -1
  558. package/dist/orchviz/plan/index.js +0 -91
  559. package/dist/orchviz/plan/index.js.map +0 -1
  560. package/dist/orchviz/plan/list-plans.d.ts +0 -19
  561. package/dist/orchviz/plan/list-plans.d.ts.map +0 -1
  562. package/dist/orchviz/plan/list-plans.js +0 -143
  563. package/dist/orchviz/plan/list-plans.js.map +0 -1
  564. package/dist/orchviz/plan/parse-phase-file.d.ts +0 -13
  565. package/dist/orchviz/plan/parse-phase-file.d.ts.map +0 -1
  566. package/dist/orchviz/plan/parse-phase-file.js +0 -134
  567. package/dist/orchviz/plan/parse-phase-file.js.map +0 -1
  568. package/dist/orchviz/plan/parse-plan-file.d.ts +0 -19
  569. package/dist/orchviz/plan/parse-plan-file.d.ts.map +0 -1
  570. package/dist/orchviz/plan/parse-plan-file.js +0 -62
  571. package/dist/orchviz/plan/parse-plan-file.js.map +0 -1
  572. package/dist/orchviz/plan/plan-constants.d.ts +0 -17
  573. package/dist/orchviz/plan/plan-constants.d.ts.map +0 -1
  574. package/dist/orchviz/plan/plan-constants.js +0 -19
  575. package/dist/orchviz/plan/plan-constants.js.map +0 -1
  576. package/dist/orchviz/plan/plan-lifecycle.d.ts +0 -17
  577. package/dist/orchviz/plan/plan-lifecycle.d.ts.map +0 -1
  578. package/dist/orchviz/plan/plan-lifecycle.js +0 -97
  579. package/dist/orchviz/plan/plan-lifecycle.js.map +0 -1
  580. package/dist/orchviz/plan/types.d.ts +0 -46
  581. package/dist/orchviz/plan/types.d.ts.map +0 -1
  582. package/dist/orchviz/plan/types.js +0 -6
  583. package/dist/orchviz/plan/types.js.map +0 -1
  584. package/dist/orchviz/protocol.d.ts +0 -171
  585. package/dist/orchviz/protocol.d.ts.map +0 -1
  586. package/dist/orchviz/protocol.js +0 -23
  587. package/dist/orchviz/protocol.js.map +0 -1
  588. package/dist/orchviz/redact.d.ts +0 -10
  589. package/dist/orchviz/redact.d.ts.map +0 -1
  590. package/dist/orchviz/redact.js +0 -38
  591. package/dist/orchviz/redact.js.map +0 -1
  592. package/dist/orchviz/sanitize.d.ts +0 -11
  593. package/dist/orchviz/sanitize.d.ts.map +0 -1
  594. package/dist/orchviz/sanitize.js +0 -38
  595. package/dist/orchviz/sanitize.js.map +0 -1
  596. package/dist/orchviz/server/__tests__/security-smoke.test.d.ts +0 -13
  597. package/dist/orchviz/server/__tests__/security-smoke.test.d.ts.map +0 -1
  598. package/dist/orchviz/server/__tests__/security-smoke.test.js +0 -207
  599. package/dist/orchviz/server/__tests__/security-smoke.test.js.map +0 -1
  600. package/dist/orchviz/server/__tests__/write-handlers.test.d.ts +0 -24
  601. package/dist/orchviz/server/__tests__/write-handlers.test.d.ts.map +0 -1
  602. package/dist/orchviz/server/__tests__/write-handlers.test.js +0 -347
  603. package/dist/orchviz/server/__tests__/write-handlers.test.js.map +0 -1
  604. package/dist/orchviz/server/api-handlers.d.ts +0 -55
  605. package/dist/orchviz/server/api-handlers.d.ts.map +0 -1
  606. package/dist/orchviz/server/api-handlers.js +0 -112
  607. package/dist/orchviz/server/api-handlers.js.map +0 -1
  608. package/dist/orchviz/server/index.d.ts +0 -36
  609. package/dist/orchviz/server/index.d.ts.map +0 -1
  610. package/dist/orchviz/server/index.js +0 -144
  611. package/dist/orchviz/server/index.js.map +0 -1
  612. package/dist/orchviz/server/sse-handler.d.ts +0 -28
  613. package/dist/orchviz/server/sse-handler.d.ts.map +0 -1
  614. package/dist/orchviz/server/sse-handler.js +0 -217
  615. package/dist/orchviz/server/sse-handler.js.map +0 -1
  616. package/dist/orchviz/server/static-handler.d.ts +0 -9
  617. package/dist/orchviz/server/static-handler.d.ts.map +0 -1
  618. package/dist/orchviz/server/static-handler.js.map +0 -1
  619. package/dist/orchviz/server/write-handlers.d.ts +0 -20
  620. package/dist/orchviz/server/write-handlers.d.ts.map +0 -1
  621. package/dist/orchviz/server/write-handlers.js +0 -184
  622. package/dist/orchviz/server/write-handlers.js.map +0 -1
  623. package/dist/orchviz/server/write-utils.d.ts +0 -59
  624. package/dist/orchviz/server/write-utils.d.ts.map +0 -1
  625. package/dist/orchviz/server/write-utils.js +0 -161
  626. package/dist/orchviz/server/write-utils.js.map +0 -1
  627. package/dist/orchviz/session-discovery.d.ts +0 -19
  628. package/dist/orchviz/session-discovery.d.ts.map +0 -1
  629. package/dist/orchviz/session-discovery.js +0 -104
  630. package/dist/orchviz/session-discovery.js.map +0 -1
  631. package/dist/orchviz/session-manager.d.ts +0 -17
  632. package/dist/orchviz/session-manager.d.ts.map +0 -1
  633. package/dist/orchviz/session-manager.js +0 -63
  634. package/dist/orchviz/session-manager.js.map +0 -1
  635. package/dist/orchviz/session-runtime.d.ts +0 -21
  636. package/dist/orchviz/session-runtime.d.ts.map +0 -1
  637. package/dist/orchviz/session-runtime.js +0 -135
  638. package/dist/orchviz/session-runtime.js.map +0 -1
  639. package/dist/orchviz/session-watcher.d.ts +0 -33
  640. package/dist/orchviz/session-watcher.d.ts.map +0 -1
  641. package/dist/orchviz/session-watcher.js +0 -135
  642. package/dist/orchviz/session-watcher.js.map +0 -1
  643. package/dist/orchviz/subagent-meta.d.ts +0 -12
  644. package/dist/orchviz/subagent-meta.d.ts.map +0 -1
  645. package/dist/orchviz/subagent-meta.js +0 -34
  646. package/dist/orchviz/subagent-meta.js.map +0 -1
  647. package/dist/orchviz/subagent-scanner.d.ts +0 -15
  648. package/dist/orchviz/subagent-scanner.d.ts.map +0 -1
  649. package/dist/orchviz/subagent-scanner.js +0 -27
  650. package/dist/orchviz/subagent-scanner.js.map +0 -1
  651. package/dist/orchviz/subagent-watcher.d.ts +0 -20
  652. package/dist/orchviz/subagent-watcher.d.ts.map +0 -1
  653. package/dist/orchviz/subagent-watcher.js +0 -160
  654. package/dist/orchviz/subagent-watcher.js.map +0 -1
  655. package/dist/orchviz/test-server-boot.d.ts +0 -28
  656. package/dist/orchviz/test-server-boot.d.ts.map +0 -1
  657. package/dist/orchviz/test-server-boot.js +0 -64
  658. package/dist/orchviz/test-server-boot.js.map +0 -1
  659. package/dist/orchviz/token-estimator.d.ts.map +0 -1
  660. package/dist/orchviz/token-estimator.js.map +0 -1
  661. package/dist/orchviz/tool-input-data.d.ts +0 -11
  662. package/dist/orchviz/tool-input-data.d.ts.map +0 -1
  663. package/dist/orchviz/tool-input-data.js +0 -74
  664. package/dist/orchviz/tool-input-data.js.map +0 -1
  665. package/dist/orchviz/tool-summarizer.d.ts +0 -16
  666. package/dist/orchviz/tool-summarizer.d.ts.map +0 -1
  667. package/dist/orchviz/tool-summarizer.js +0 -129
  668. package/dist/orchviz/tool-summarizer.js.map +0 -1
  669. package/dist/orchviz-web/fira-code-cyrillic-400-normal.woff +0 -0
  670. package/dist/orchviz-web/fira-code-cyrillic-400-normal.woff2 +0 -0
  671. package/dist/orchviz-web/fira-code-cyrillic-500-normal.woff +0 -0
  672. package/dist/orchviz-web/fira-code-cyrillic-500-normal.woff2 +0 -0
  673. package/dist/orchviz-web/fira-code-cyrillic-ext-400-normal.woff +0 -0
  674. package/dist/orchviz-web/fira-code-cyrillic-ext-400-normal.woff2 +0 -0
  675. package/dist/orchviz-web/fira-code-cyrillic-ext-500-normal.woff +0 -0
  676. package/dist/orchviz-web/fira-code-cyrillic-ext-500-normal.woff2 +0 -0
  677. package/dist/orchviz-web/fira-code-greek-400-normal.woff +0 -0
  678. package/dist/orchviz-web/fira-code-greek-400-normal.woff2 +0 -0
  679. package/dist/orchviz-web/fira-code-greek-500-normal.woff +0 -0
  680. package/dist/orchviz-web/fira-code-greek-500-normal.woff2 +0 -0
  681. package/dist/orchviz-web/fira-code-greek-ext-400-normal.woff +0 -0
  682. package/dist/orchviz-web/fira-code-greek-ext-400-normal.woff2 +0 -0
  683. package/dist/orchviz-web/fira-code-greek-ext-500-normal.woff +0 -0
  684. package/dist/orchviz-web/fira-code-greek-ext-500-normal.woff2 +0 -0
  685. package/dist/orchviz-web/fira-code-latin-400-normal.woff +0 -0
  686. package/dist/orchviz-web/fira-code-latin-400-normal.woff2 +0 -0
  687. package/dist/orchviz-web/fira-code-latin-500-normal.woff +0 -0
  688. package/dist/orchviz-web/fira-code-latin-500-normal.woff2 +0 -0
  689. package/dist/orchviz-web/fira-code-latin-ext-400-normal.woff +0 -0
  690. package/dist/orchviz-web/fira-code-latin-ext-400-normal.woff2 +0 -0
  691. package/dist/orchviz-web/fira-code-latin-ext-500-normal.woff +0 -0
  692. package/dist/orchviz-web/fira-code-latin-ext-500-normal.woff2 +0 -0
  693. package/dist/orchviz-web/fira-code-symbols2-400-normal.woff +0 -0
  694. package/dist/orchviz-web/fira-code-symbols2-500-normal.woff +0 -0
  695. package/dist/orchviz-web/index.css +0 -1
  696. package/dist/orchviz-web/index.html +0 -18
  697. package/dist/orchviz-web/index.js +0 -53
  698. package/dist/orchviz-web/inter-cyrillic-400-normal.woff +0 -0
  699. package/dist/orchviz-web/inter-cyrillic-400-normal.woff2 +0 -0
  700. package/dist/orchviz-web/inter-cyrillic-500-normal.woff +0 -0
  701. package/dist/orchviz-web/inter-cyrillic-500-normal.woff2 +0 -0
  702. package/dist/orchviz-web/inter-cyrillic-600-normal.woff +0 -0
  703. package/dist/orchviz-web/inter-cyrillic-600-normal.woff2 +0 -0
  704. package/dist/orchviz-web/inter-cyrillic-ext-400-normal.woff +0 -0
  705. package/dist/orchviz-web/inter-cyrillic-ext-400-normal.woff2 +0 -0
  706. package/dist/orchviz-web/inter-cyrillic-ext-500-normal.woff +0 -0
  707. package/dist/orchviz-web/inter-cyrillic-ext-500-normal.woff2 +0 -0
  708. package/dist/orchviz-web/inter-cyrillic-ext-600-normal.woff +0 -0
  709. package/dist/orchviz-web/inter-cyrillic-ext-600-normal.woff2 +0 -0
  710. package/dist/orchviz-web/inter-greek-400-normal.woff +0 -0
  711. package/dist/orchviz-web/inter-greek-400-normal.woff2 +0 -0
  712. package/dist/orchviz-web/inter-greek-500-normal.woff +0 -0
  713. package/dist/orchviz-web/inter-greek-500-normal.woff2 +0 -0
  714. package/dist/orchviz-web/inter-greek-600-normal.woff +0 -0
  715. package/dist/orchviz-web/inter-greek-600-normal.woff2 +0 -0
  716. package/dist/orchviz-web/inter-greek-ext-400-normal.woff +0 -0
  717. package/dist/orchviz-web/inter-greek-ext-400-normal.woff2 +0 -0
  718. package/dist/orchviz-web/inter-greek-ext-500-normal.woff +0 -0
  719. package/dist/orchviz-web/inter-greek-ext-500-normal.woff2 +0 -0
  720. package/dist/orchviz-web/inter-greek-ext-600-normal.woff +0 -0
  721. package/dist/orchviz-web/inter-greek-ext-600-normal.woff2 +0 -0
  722. package/dist/orchviz-web/inter-latin-400-normal.woff +0 -0
  723. package/dist/orchviz-web/inter-latin-400-normal.woff2 +0 -0
  724. package/dist/orchviz-web/inter-latin-500-normal.woff +0 -0
  725. package/dist/orchviz-web/inter-latin-500-normal.woff2 +0 -0
  726. package/dist/orchviz-web/inter-latin-600-normal.woff +0 -0
  727. package/dist/orchviz-web/inter-latin-600-normal.woff2 +0 -0
  728. package/dist/orchviz-web/inter-latin-ext-400-normal.woff +0 -0
  729. package/dist/orchviz-web/inter-latin-ext-400-normal.woff2 +0 -0
  730. package/dist/orchviz-web/inter-latin-ext-500-normal.woff +0 -0
  731. package/dist/orchviz-web/inter-latin-ext-500-normal.woff2 +0 -0
  732. package/dist/orchviz-web/inter-latin-ext-600-normal.woff +0 -0
  733. package/dist/orchviz-web/inter-latin-ext-600-normal.woff2 +0 -0
  734. package/dist/orchviz-web/inter-vietnamese-400-normal.woff +0 -0
  735. package/dist/orchviz-web/inter-vietnamese-400-normal.woff2 +0 -0
  736. package/dist/orchviz-web/inter-vietnamese-500-normal.woff +0 -0
  737. package/dist/orchviz-web/inter-vietnamese-500-normal.woff2 +0 -0
  738. package/dist/orchviz-web/inter-vietnamese-600-normal.woff +0 -0
  739. package/dist/orchviz-web/inter-vietnamese-600-normal.woff2 +0 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Resolution-receipt storage under `<plan-dir>/visual-plan/resolutions/`.
3
+ *
4
+ * A receipt records the per-operation outcome of applying a feedback batch
5
+ * (applied | rejected | unresolved). Receipt EXISTENCE is the "batch resolved"
6
+ * marker — the batch file itself stays byte-immutable. `writeReceipt` is
7
+ * write-once (a second apply of the same batch is refused). The batch/receipt id
8
+ * is validated against the strict pattern BEFORE any path join (red-team M8).
9
+ */
10
+ import * as fs from "node:fs";
11
+ import * as path from "node:path";
12
+ import { isValidFeedbackBatchId } from "../domain/ids.js";
13
+ import { ResolutionReceiptSchema } from "../domain/feedback-schemas.js";
14
+ import { atomicWriteFileSync } from "./atomic-write.js";
15
+ const RESOLUTIONS_DIR = path.join("visual-plan", "resolutions");
16
+ /** Receipt path for a batch id, validating the id BEFORE the join. Throws on a bad id. */
17
+ function receiptPath(planDir, batchId) {
18
+ if (!isValidFeedbackBatchId(batchId))
19
+ throw new Error(`invalid batch id: ${JSON.stringify(batchId)}`);
20
+ return path.join(planDir, RESOLUTIONS_DIR, `${batchId}.json`);
21
+ }
22
+ /** True when a resolution receipt already exists for this batch (⇒ already applied). */
23
+ export function receiptExists(planDir, batchId) {
24
+ return fs.existsSync(receiptPath(planDir, batchId));
25
+ }
26
+ /** Persist a receipt write-once. Returns false if a receipt for this batch already exists. */
27
+ export function writeReceipt(planDir, receipt) {
28
+ const file = receiptPath(planDir, receipt.batchId);
29
+ if (fs.existsSync(file))
30
+ return false; // double-apply guard
31
+ fs.mkdirSync(path.dirname(file), { recursive: true });
32
+ atomicWriteFileSync(file, `${JSON.stringify(receipt, null, 2)}\n`);
33
+ return true;
34
+ }
35
+ /** Read + validate every receipt in the plan (for approve's unresolved-check). */
36
+ export function listReceipts(planDir) {
37
+ let entries;
38
+ try {
39
+ entries = fs.readdirSync(path.join(planDir, RESOLUTIONS_DIR));
40
+ }
41
+ catch {
42
+ return [];
43
+ }
44
+ const out = [];
45
+ for (const name of entries) {
46
+ if (!name.endsWith(".json"))
47
+ continue;
48
+ try {
49
+ const parsed = ResolutionReceiptSchema.safeParse(JSON.parse(fs.readFileSync(path.join(planDir, RESOLUTIONS_DIR, name), "utf-8")));
50
+ if (parsed.success)
51
+ out.push(parsed.data);
52
+ }
53
+ catch {
54
+ // skip unreadable/invalid receipt
55
+ }
56
+ }
57
+ return out;
58
+ }
59
+ //# sourceMappingURL=receipt-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-repository.js","sourceRoot":"","sources":["../../../src/visual-plan/infrastructure/receipt-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAA0B,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAEhE,0FAA0F;AAC1F,SAAS,WAAW,CAAC,OAAe,EAAE,OAAe;IACpD,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtG,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAe;IAC7D,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,OAA0B;IACvE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,qBAAqB;IAC5D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,mBAAmB,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC3C,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACJ,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACtC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAY,CAAC,CAAC;YAC7I,IAAI,MAAM,CAAC,OAAO;gBAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACR,kCAAkC;QACnC,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Filesystem gateway for the canonical visual artifact.
3
+ *
4
+ * The artifact always lives at `<plan-dir>/visual-plan/plan.json`. All access
5
+ * goes through realpath containment: the resolved artifact path MUST stay
6
+ * inside the resolved plan directory, so a symlinked `visual-plan/` cannot
7
+ * redirect reads/writes outside the plan (non-functional requirement: no path
8
+ * escapes the plan directory). Writes are atomic (same-dir tmp + rename).
9
+ */
10
+ import { type ValidationError } from "../domain/errors.js";
11
+ /** Artifact location relative to the plan directory. */
12
+ export declare const ARTIFACT_REL_PATH: string;
13
+ /** Thrown when a plan directory or artifact path fails containment/existence checks. */
14
+ export declare class PlanPathError extends Error {
15
+ constructor(message: string);
16
+ }
17
+ /** Resolve `input` to an existing directory's realpath. Throws `PlanPathError` otherwise. */
18
+ export declare function resolvePlanDir(input: string): string;
19
+ /** Absolute artifact path, guaranteed contained within `planDir` (realpath checks). */
20
+ export declare function artifactPath(planDir: string): string;
21
+ /** True when an artifact file exists for this plan directory. */
22
+ export declare function artifactExists(planDir: string): boolean;
23
+ export interface RawArtifactRead {
24
+ raw?: unknown;
25
+ error?: ValidationError;
26
+ }
27
+ /** Read + JSON-parse the artifact. Missing/invalid file yields a typed error, never a throw. */
28
+ export declare function readArtifactRaw(planDir: string): RawArtifactRead;
29
+ /**
30
+ * Canonical on-disk serialization for the artifact (pretty JSON + trailing
31
+ * newline). Exposed so a caller can hash the EXACT bytes a subsequent
32
+ * `writeArtifact` will persist (used by prepare-feedback for a crash-safe
33
+ * batch-then-artifact write order).
34
+ */
35
+ export declare function serializeArtifact(artifact: unknown): string;
36
+ /** Atomically write the artifact as canonical pretty JSON. */
37
+ export declare function writeArtifact(planDir: string, artifact: unknown): void;
38
+ //# sourceMappingURL=visual-plan-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-plan-repository.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/infrastructure/visual-plan-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3E,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,QAAwC,CAAC;AAEvE,wFAAwF;AACxF,qBAAa,aAAc,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI3B;AAED,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYpD;AAQD,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBpD;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,MAAM,WAAW,eAAe;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAchE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Filesystem gateway for the canonical visual artifact.
3
+ *
4
+ * The artifact always lives at `<plan-dir>/visual-plan/plan.json`. All access
5
+ * goes through realpath containment: the resolved artifact path MUST stay
6
+ * inside the resolved plan directory, so a symlinked `visual-plan/` cannot
7
+ * redirect reads/writes outside the plan (non-functional requirement: no path
8
+ * escapes the plan directory). Writes are atomic (same-dir tmp + rename).
9
+ */
10
+ import * as fs from "node:fs";
11
+ import * as path from "node:path";
12
+ import { err, ErrorCode } from "../domain/errors.js";
13
+ import { atomicWriteFileSync } from "./atomic-write.js";
14
+ /** Artifact location relative to the plan directory. */
15
+ export const ARTIFACT_REL_PATH = path.join("visual-plan", "plan.json");
16
+ /** Thrown when a plan directory or artifact path fails containment/existence checks. */
17
+ export class PlanPathError extends Error {
18
+ constructor(message) {
19
+ super(message);
20
+ this.name = "PlanPathError";
21
+ }
22
+ }
23
+ /** Resolve `input` to an existing directory's realpath. Throws `PlanPathError` otherwise. */
24
+ export function resolvePlanDir(input) {
25
+ const abs = path.resolve(input);
26
+ let real;
27
+ try {
28
+ real = fs.realpathSync(abs);
29
+ }
30
+ catch {
31
+ throw new PlanPathError(`plan directory not found: ${abs}`);
32
+ }
33
+ if (!fs.statSync(real).isDirectory()) {
34
+ throw new PlanPathError(`not a directory: ${real}`);
35
+ }
36
+ return real;
37
+ }
38
+ /** True when `candidate`'s realpath is `planDir` itself or strictly inside it. */
39
+ function isContained(candidate, realPlan) {
40
+ const real = fs.realpathSync(candidate);
41
+ return real === realPlan || real.startsWith(realPlan + path.sep);
42
+ }
43
+ /** Absolute artifact path, guaranteed contained within `planDir` (realpath checks). */
44
+ export function artifactPath(planDir) {
45
+ const full = path.resolve(planDir, ARTIFACT_REL_PATH);
46
+ const rel = path.relative(planDir, full);
47
+ if (rel.startsWith("..") || path.isAbsolute(rel)) {
48
+ throw new PlanPathError(`artifact path escapes plan directory: ${full}`);
49
+ }
50
+ const realPlan = fs.realpathSync(planDir);
51
+ // Guard against a symlinked visual-plan/ directory redirecting outside the plan dir.
52
+ const dir = path.dirname(full);
53
+ if (fs.existsSync(dir) && !isContained(dir, realPlan)) {
54
+ throw new PlanPathError(`visual-plan directory resolves outside the plan directory: ${fs.realpathSync(dir)}`);
55
+ }
56
+ // Guard against a symlinked plan.json file redirecting reads outside the plan dir.
57
+ if (fs.existsSync(full) && !isContained(full, realPlan)) {
58
+ throw new PlanPathError(`artifact file resolves outside the plan directory: ${fs.realpathSync(full)}`);
59
+ }
60
+ return full;
61
+ }
62
+ /** True when an artifact file exists for this plan directory. */
63
+ export function artifactExists(planDir) {
64
+ return fs.existsSync(artifactPath(planDir));
65
+ }
66
+ /** Read + JSON-parse the artifact. Missing/invalid file yields a typed error, never a throw. */
67
+ export function readArtifactRaw(planDir) {
68
+ const full = artifactPath(planDir);
69
+ let text;
70
+ try {
71
+ text = fs.readFileSync(full, "utf-8");
72
+ }
73
+ catch {
74
+ return { error: err(ARTIFACT_REL_PATH, ErrorCode.ARTIFACT_MISSING, `no visual artifact at ${ARTIFACT_REL_PATH}`) };
75
+ }
76
+ try {
77
+ return { raw: JSON.parse(text) };
78
+ }
79
+ catch (e) {
80
+ const detail = e instanceof Error ? e.message : String(e);
81
+ return { error: err(ARTIFACT_REL_PATH, ErrorCode.ARTIFACT_INVALID_JSON, `artifact is not valid JSON: ${detail}`) };
82
+ }
83
+ }
84
+ /**
85
+ * Canonical on-disk serialization for the artifact (pretty JSON + trailing
86
+ * newline). Exposed so a caller can hash the EXACT bytes a subsequent
87
+ * `writeArtifact` will persist (used by prepare-feedback for a crash-safe
88
+ * batch-then-artifact write order).
89
+ */
90
+ export function serializeArtifact(artifact) {
91
+ return `${JSON.stringify(artifact, null, 2)}\n`;
92
+ }
93
+ /** Atomically write the artifact as canonical pretty JSON. */
94
+ export function writeArtifact(planDir, artifact) {
95
+ atomicWriteFileSync(artifactPath(planDir), serializeArtifact(artifact));
96
+ }
97
+ //# sourceMappingURL=visual-plan-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visual-plan-repository.js","sourceRoot":"","sources":["../../../src/visual-plan/infrastructure/visual-plan-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAwB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,wDAAwD;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAEvE,wFAAwF;AACxF,MAAM,OAAO,aAAc,SAAQ,KAAK;IACvC,YAAY,OAAe;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC7B,CAAC;CACD;AAED,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,KAAa;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,aAAa,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,aAAa,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,SAAS,WAAW,CAAC,SAAiB,EAAE,QAAgB;IACvD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,aAAa,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1C,qFAAqF;IACrF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,aAAa,CAAC,8DAA8D,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/G,CAAC;IACD,mFAAmF;IACnF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,aAAa,CAAC,sDAAsD,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,cAAc,CAAC,OAAe;IAC7C,OAAO,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC;AAOD,gGAAgG;AAChG,MAAM,UAAU,eAAe,CAAC,OAAe;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,gBAAgB,EAAE,yBAAyB,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACpH,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,qBAAqB,EAAE,+BAA+B,MAAM,EAAE,CAAC,EAAE,CAAC;IACpH,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IAClD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAiB;IAC/D,mBAAmB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Save-time wireframe sanitizer (Node side, jsdom-backed DOMPurify).
3
+ *
4
+ * Engine decision (red-team H2): ONE vetted engine — DOMPurify — on both sides.
5
+ * MeowKit has no HTML parser in runtime deps today; DOMPurify + jsdom are added
6
+ * as runtime deps precisely for this. Regex-only sanitization is forbidden.
7
+ *
8
+ * Reject, not repair: we normalize the input through the DOM (so pure formatting
9
+ * differences — quote style, self-closing, whitespace — do NOT count), then
10
+ * sanitize with the SHARED allowlist config. If the sanitized output differs
11
+ * from the normalized input, the sanitizer removed something unsafe/unlisted and
12
+ * we REJECT with a JSON path. The Phase-4 browser renderer re-runs the identical
13
+ * engine + config; the shared adversarial corpus runs in both environments.
14
+ */
15
+ /** Result of a reject-mode sanitize check. `safe:false` carries a short reason. */
16
+ export interface SanitizeCheck {
17
+ safe: boolean;
18
+ reason?: string;
19
+ }
20
+ /**
21
+ * True when `html` is safe under the shared allowlist. Any content DOMPurify
22
+ * would strip (disallowed tag/attr, unsafe URL scheme, event handler, inline
23
+ * style, SVG/MathML) makes it unsafe — the artifact is rejected, never repaired.
24
+ */
25
+ export declare function checkWireframeHtml(html: string): SanitizeCheck;
26
+ /**
27
+ * Return the SANITIZED wireframe HTML (safe to embed). Used by the HTML export
28
+ * to inline wireframes offline. The artifact was already reject-validated at
29
+ * save time; this re-sanitize is the export's own boundary.
30
+ */
31
+ export declare function sanitizeWireframeHtml(html: string): string;
32
+ /**
33
+ * Replace the TEXT content of a schema-backed wireframe field (Phase 5 edit).
34
+ * The field is targeted by a `wf-field-<fieldId>` class (class is allowlisted, so
35
+ * no sanitizer-config change is needed). `textContent` assignment escapes the
36
+ * new value, so an edit can never introduce markup. `fieldId` is charset-safe
37
+ * (ENTITY_ID_RE) so it is a valid class token. Returns null if the field is
38
+ * absent (the caller rejects the patch).
39
+ */
40
+ export declare function editWireframeField(html: string, fieldId: string, text: string): string | null;
41
+ //# sourceMappingURL=wireframe-sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wireframe-sanitizer.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/infrastructure/wireframe-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAQ9D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO7F"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Save-time wireframe sanitizer (Node side, jsdom-backed DOMPurify).
3
+ *
4
+ * Engine decision (red-team H2): ONE vetted engine — DOMPurify — on both sides.
5
+ * MeowKit has no HTML parser in runtime deps today; DOMPurify + jsdom are added
6
+ * as runtime deps precisely for this. Regex-only sanitization is forbidden.
7
+ *
8
+ * Reject, not repair: we normalize the input through the DOM (so pure formatting
9
+ * differences — quote style, self-closing, whitespace — do NOT count), then
10
+ * sanitize with the SHARED allowlist config. If the sanitized output differs
11
+ * from the normalized input, the sanitizer removed something unsafe/unlisted and
12
+ * we REJECT with a JSON path. The Phase-4 browser renderer re-runs the identical
13
+ * engine + config; the shared adversarial corpus runs in both environments.
14
+ */
15
+ import createDOMPurify from "dompurify";
16
+ import { JSDOM } from "jsdom";
17
+ import { WIREFRAME_SANITIZE_CONFIG } from "../domain/sanitizer-config.js";
18
+ // One jsdom window + DOMPurify instance for the process. jsdom is heavy to
19
+ // construct; reuse is safe because sanitize() is stateless per call.
20
+ const jsdomWindow = new JSDOM("").window;
21
+ const purify = createDOMPurify(jsdomWindow);
22
+ /**
23
+ * DOM-normalize `html` so the reject-diff ignores cosmetic reformatting: set it
24
+ * as innerHTML on a detached element and read it back. Both the normalized input
25
+ * and the DOMPurify output pass through this same DOM serialization path.
26
+ */
27
+ function domNormalize(html) {
28
+ const el = jsdomWindow.document.createElement("div");
29
+ el.innerHTML = html;
30
+ return el.innerHTML;
31
+ }
32
+ /**
33
+ * True when `html` is safe under the shared allowlist. Any content DOMPurify
34
+ * would strip (disallowed tag/attr, unsafe URL scheme, event handler, inline
35
+ * style, SVG/MathML) makes it unsafe — the artifact is rejected, never repaired.
36
+ */
37
+ export function checkWireframeHtml(html) {
38
+ const normalized = domNormalize(html);
39
+ const clean = purify.sanitize(html, WIREFRAME_SANITIZE_CONFIG);
40
+ if (clean === normalized)
41
+ return { safe: true };
42
+ return {
43
+ safe: false,
44
+ reason: "wireframe HTML contains disallowed or unsafe markup (sanitizer would strip content — reject, not repair)",
45
+ };
46
+ }
47
+ /**
48
+ * Return the SANITIZED wireframe HTML (safe to embed). Used by the HTML export
49
+ * to inline wireframes offline. The artifact was already reject-validated at
50
+ * save time; this re-sanitize is the export's own boundary.
51
+ */
52
+ export function sanitizeWireframeHtml(html) {
53
+ return purify.sanitize(html, WIREFRAME_SANITIZE_CONFIG);
54
+ }
55
+ /**
56
+ * Replace the TEXT content of a schema-backed wireframe field (Phase 5 edit).
57
+ * The field is targeted by a `wf-field-<fieldId>` class (class is allowlisted, so
58
+ * no sanitizer-config change is needed). `textContent` assignment escapes the
59
+ * new value, so an edit can never introduce markup. `fieldId` is charset-safe
60
+ * (ENTITY_ID_RE) so it is a valid class token. Returns null if the field is
61
+ * absent (the caller rejects the patch).
62
+ */
63
+ export function editWireframeField(html, fieldId, text) {
64
+ const el = jsdomWindow.document.createElement("div");
65
+ el.innerHTML = html;
66
+ const target = el.querySelector(`.wf-field-${fieldId}`);
67
+ if (!target)
68
+ return null;
69
+ target.textContent = text;
70
+ return el.innerHTML;
71
+ }
72
+ //# sourceMappingURL=wireframe-sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wireframe-sanitizer.js","sourceRoot":"","sources":["../../../src/visual-plan/infrastructure/wireframe-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,eAAe,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,2EAA2E;AAC3E,qEAAqE;AACrE,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACzC,MAAM,MAAM,GAAG,eAAe,CAAC,WAA+D,CAAC,CAAC;AAQhG;;;;GAIG;AACH,SAAS,YAAY,CAAC,IAAY;IACjC,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrD,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,SAAS,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAC/D,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChD,OAAO;QACN,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,0GAA0G;KAClH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IACjD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,OAAe,EAAE,IAAY;IAC7E,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrD,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IACpB,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,CAAC,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * `mewkit visual-plan <subcommand>` dispatch + reporter.
3
+ *
4
+ * Subcommands: validate | status | approve | rehash | export | prepare-feedback
5
+ * (sync) and edit | view (long-running studio). Each resolves
6
+ * the plan directory, runs the matching application function, and reports in
7
+ * human or `--json` form. Exit codes: 0 ok, 1 contract/precondition failure,
8
+ * 2 usage/path error. Sets `process.exitCode` (never calls `process.exit`) so
9
+ * the surface stays unit-testable.
10
+ */
11
+ export interface VisualPlanCliArgs {
12
+ subcommand?: string;
13
+ planDir?: string;
14
+ revision?: string | number;
15
+ json?: boolean;
16
+ open?: boolean;
17
+ noOpen?: boolean;
18
+ force?: boolean;
19
+ port?: number;
20
+ format?: string;
21
+ ops?: string;
22
+ batch?: string;
23
+ check?: boolean;
24
+ receipt?: string;
25
+ op?: string;
26
+ }
27
+ /** Dispatch a `visual-plan` subcommand. Returns a promise for the long-running studio commands. */
28
+ export declare function visualPlanCommand(args: VisualPlanCliArgs): void | Promise<void>;
29
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/interface/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH,MAAM,WAAW,iBAAiB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAoMD,mGAAmG;AACnG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC/E"}
@@ -0,0 +1,280 @@
1
+ /**
2
+ * `mewkit visual-plan <subcommand>` dispatch + reporter.
3
+ *
4
+ * Subcommands: validate | status | approve | rehash | export | prepare-feedback
5
+ * (sync) and edit | view (long-running studio). Each resolves
6
+ * the plan directory, runs the matching application function, and reports in
7
+ * human or `--json` form. Exit codes: 0 ok, 1 contract/precondition failure,
8
+ * 2 usage/path error. Sets `process.exitCode` (never calls `process.exit`) so
9
+ * the surface stays unit-testable.
10
+ */
11
+ import * as fs from "node:fs";
12
+ import * as path from "node:path";
13
+ import pc from "picocolors";
14
+ import { validatePlan } from "../application/validate-plan.js";
15
+ import { planStatus } from "../application/status.js";
16
+ import { approvePlan } from "../application/approve.js";
17
+ import { rehashPlan } from "../application/rehash.js";
18
+ import { exportPlanHtml } from "../application/export-plan.js";
19
+ import { prepareFeedback } from "../application/prepare-feedback.js";
20
+ import { checkBatchFresh, recordResolution } from "../application/apply-feedback.js";
21
+ import { patchPlan } from "../application/patch-plan.js";
22
+ import { PatchOpSchema } from "../domain/patches.js";
23
+ import { runStudio } from "./studio.js";
24
+ import { resolvePlanDir, PlanPathError } from "../infrastructure/visual-plan-repository.js";
25
+ import { atomicWriteFileSync } from "../infrastructure/atomic-write.js";
26
+ const emit = (value) => console.log(JSON.stringify(value, null, 2));
27
+ function printErrors(errors) {
28
+ for (const e of errors)
29
+ console.error(` ${pc.red("✗")} ${pc.bold(e.path)} — ${e.message} ${pc.dim(`[${e.code}]`)}`);
30
+ }
31
+ function runValidate(planDir, json) {
32
+ const r = validatePlan(planDir);
33
+ if (json) {
34
+ emit({ ok: r.ok, coverage: r.coverage ?? null, errors: r.errors });
35
+ }
36
+ else if (r.ok) {
37
+ const c = r.coverage;
38
+ const cov = c ? ` (coverage ${c.resolved} resolved / ${c.planned} planned / ${c.omitted} omitted / ${c.unresolved} unresolved)` : "";
39
+ console.log(`${pc.green("✓")} visual-plan valid${cov}`);
40
+ }
41
+ else {
42
+ console.error(`${pc.red("✗")} visual-plan invalid — ${r.errors.length} error(s):`);
43
+ printErrors(r.errors);
44
+ }
45
+ process.exitCode = r.ok ? 0 : 1;
46
+ }
47
+ function runStatus(planDir, json) {
48
+ const s = planStatus(planDir);
49
+ if (json) {
50
+ emit(s);
51
+ }
52
+ else if (!s.exists) {
53
+ console.log(pc.dim("no visual artifact for this plan"));
54
+ }
55
+ else {
56
+ const c = s.coverage;
57
+ console.log(`${s.valid ? pc.green("valid") : pc.red("invalid")} · rev ${s.revision} · review ${pc.bold(s.reviewStatus ?? "?")}` +
58
+ (c ? ` · coverage ${c.resolved}/${c.planned}/${c.omitted}/${c.unresolved} (R/P/O/U)` : "") +
59
+ (s.errorCount ? ` · ${s.errorCount} error(s)` : ""));
60
+ }
61
+ // Contract violation exits non-zero (phase Requirements). An absent artifact
62
+ // is NOT a violation — nothing to gate on — so it stays 0.
63
+ process.exitCode = s.exists && !s.valid ? 1 : 0;
64
+ }
65
+ function runApprove(planDir, revisionArg, json) {
66
+ const raw = String(revisionArg ?? "");
67
+ // Strict: reject trailing garbage / floats rather than silently coercing
68
+ // (e.g. "3abc" or "3.5"). Approval is pinned to an exact revision.
69
+ if (!/^\d+$/.test(raw)) {
70
+ console.error(pc.red("approve requires --revision <n> (non-negative integer)"));
71
+ process.exitCode = 2;
72
+ return;
73
+ }
74
+ const revision = parseInt(raw, 10);
75
+ const r = approvePlan(planDir, revision);
76
+ if (json) {
77
+ emit(r);
78
+ }
79
+ else if (r.ok) {
80
+ console.log(`${pc.green("✓")} approved revision ${revision}`);
81
+ }
82
+ else {
83
+ console.error(`${pc.red("✗")} approval refused (${r.failedPreconditions.length} precondition(s)):`);
84
+ for (const p of r.failedPreconditions)
85
+ console.error(` ${pc.red("✗")} ${p}`);
86
+ }
87
+ process.exitCode = r.ok ? 0 : 1;
88
+ }
89
+ function runExport(planDir, format, json) {
90
+ if (format !== undefined && format !== "html") {
91
+ console.error(pc.red(`export --format ${format} not supported (only 'html')`));
92
+ process.exitCode = 2;
93
+ return;
94
+ }
95
+ const r = exportPlanHtml(planDir);
96
+ if (!r.ok || !r.html) {
97
+ if (json)
98
+ emit(r);
99
+ else
100
+ console.error(`${pc.red("✗")} export failed — ${r.error ?? "unknown"}`);
101
+ process.exitCode = 1;
102
+ return;
103
+ }
104
+ const out = path.join(planDir, "plan.html");
105
+ atomicWriteFileSync(out, r.html);
106
+ if (json)
107
+ emit({ ok: true, path: out });
108
+ else
109
+ console.log(`${pc.green("✓")} exported ${out}`);
110
+ process.exitCode = 0;
111
+ }
112
+ function readJsonFile(file) {
113
+ return JSON.parse(fs.readFileSync(file, "utf-8"));
114
+ }
115
+ /** `patch <dir> --op <file>` — apply one typed visual op (single-writer; no If-Match). */
116
+ function runPatch(planDir, opFile, json) {
117
+ if (!opFile) {
118
+ console.error(pc.red("patch requires --op <op.json> (a single typed patch op)"));
119
+ process.exitCode = 2;
120
+ return;
121
+ }
122
+ let opJson;
123
+ try {
124
+ opJson = readJsonFile(opFile);
125
+ }
126
+ catch (e) {
127
+ console.error(pc.red(`could not read --op file: ${e instanceof Error ? e.message : String(e)}`));
128
+ process.exitCode = 2;
129
+ return;
130
+ }
131
+ const op = PatchOpSchema.safeParse(opJson);
132
+ if (!op.success) {
133
+ console.error(pc.red(`invalid patch op: ${op.error.issues[0]?.message ?? "schema"}`));
134
+ process.exitCode = 2;
135
+ return;
136
+ }
137
+ const r = patchPlan(planDir, op.data);
138
+ if (json)
139
+ emit(r);
140
+ else if (r.status === "ok")
141
+ console.log(`${pc.green("✓")} patched → revision ${r.revision}`);
142
+ else
143
+ console.error(`${pc.red("✗")} ${r.status}${r.message ? `: ${r.message}` : ""}`);
144
+ process.exitCode = r.status === "ok" ? 0 : 1;
145
+ }
146
+ /** `apply-feedback <dir> --batch <id> [--check | --receipt <file>]` — deterministic loop mechanics. */
147
+ function runApplyFeedback(planDir, args, json) {
148
+ if (!args.batch) {
149
+ console.error(pc.red("apply-feedback requires --batch <batch-id>"));
150
+ process.exitCode = 2;
151
+ return;
152
+ }
153
+ if (args.check) {
154
+ const r = checkBatchFresh(planDir, args.batch);
155
+ if (json)
156
+ emit(r);
157
+ else if (r.ok)
158
+ console.log(`${pc.green("✓")} batch ${args.batch} is fresh — safe to apply`);
159
+ else
160
+ console.error(`${pc.red("✗")} ${r.stale ? "STALE" : "cannot apply"}: ${r.reason}`);
161
+ process.exitCode = r.ok ? 0 : 1;
162
+ return;
163
+ }
164
+ if (args.receipt) {
165
+ let entries;
166
+ try {
167
+ entries = readJsonFile(args.receipt);
168
+ }
169
+ catch (e) {
170
+ console.error(pc.red(`could not read --receipt file: ${e instanceof Error ? e.message : String(e)}`));
171
+ process.exitCode = 2;
172
+ return;
173
+ }
174
+ const r = recordResolution(planDir, args.batch, entries);
175
+ if (json)
176
+ emit(r);
177
+ else if (r.ok) {
178
+ console.log(`${pc.green("✓")} receipt written: ${r.receiptPath}`);
179
+ console.log(` reopen: ${pc.cyan(r.reopenCommand ?? "")}`);
180
+ }
181
+ else
182
+ console.error(`${pc.red("✗")} ${r.error}`);
183
+ process.exitCode = r.ok ? 0 : 1;
184
+ return;
185
+ }
186
+ console.error(pc.red("apply-feedback requires --check (pre-apply gate) or --receipt <file> (record outcomes)"));
187
+ process.exitCode = 2;
188
+ }
189
+ function runPrepareFeedback(planDir, opsFile, json) {
190
+ if (!opsFile) {
191
+ console.error(pc.red("prepare-feedback requires --ops <operations.json> (a JSON array of feedback operations)"));
192
+ process.exitCode = 2;
193
+ return;
194
+ }
195
+ let operations;
196
+ try {
197
+ operations = JSON.parse(fs.readFileSync(opsFile, "utf-8"));
198
+ }
199
+ catch (e) {
200
+ console.error(pc.red(`could not read --ops file: ${e instanceof Error ? e.message : String(e)}`));
201
+ process.exitCode = 2;
202
+ return;
203
+ }
204
+ if (!Array.isArray(operations)) {
205
+ console.error(pc.red("--ops file must contain a JSON array of operations"));
206
+ process.exitCode = 2;
207
+ return;
208
+ }
209
+ const r = prepareFeedback(planDir, operations);
210
+ if (json) {
211
+ emit(r);
212
+ }
213
+ else if (r.ok) {
214
+ console.log(`${pc.green("✓")} feedback batch ${pc.bold(r.batchId ?? "")}`);
215
+ console.log(` copy: ${pc.cyan(r.copyCommand ?? "")}`);
216
+ }
217
+ else {
218
+ console.error(`${pc.red("✗")} ${r.error ?? "prepare failed"}`);
219
+ }
220
+ process.exitCode = r.ok ? 0 : 1;
221
+ }
222
+ function runRehash(planDir, json) {
223
+ const r = rehashPlan(planDir);
224
+ if (json) {
225
+ emit(r);
226
+ }
227
+ else if (r.ok) {
228
+ console.log(`${pc.green("✓")} source hashes refreshed${r.clearedApproval ? pc.yellow(" — prior approval cleared") : ""}`);
229
+ }
230
+ else {
231
+ printErrors(r.errors);
232
+ }
233
+ process.exitCode = r.ok ? 0 : 1;
234
+ }
235
+ /** Dispatch a `visual-plan` subcommand. Returns a promise for the long-running studio commands. */
236
+ export function visualPlanCommand(args) {
237
+ const sub = args.subcommand;
238
+ // Long-running studio commands (own their plan-dir resolution + browser lifecycle).
239
+ if (sub === "edit" || sub === "view") {
240
+ return runStudio({ mode: sub, planDir: args.planDir, open: args.open, noOpen: args.noOpen, force: args.force, port: args.port });
241
+ }
242
+ const known = new Set(["validate", "status", "approve", "rehash", "export", "prepare-feedback", "apply-feedback", "patch"]);
243
+ if (!sub || !known.has(sub)) {
244
+ console.error(pc.red(`visual-plan: expected one of validate|status|approve|rehash|export|prepare-feedback|apply-feedback|patch|edit|view (got ${sub ?? "nothing"})`));
245
+ process.exitCode = 2;
246
+ return;
247
+ }
248
+ if (!args.planDir) {
249
+ console.error(pc.red(`visual-plan ${sub}: missing <plan-dir>`));
250
+ process.exitCode = 2;
251
+ return;
252
+ }
253
+ let planDir;
254
+ try {
255
+ planDir = resolvePlanDir(args.planDir);
256
+ }
257
+ catch (e) {
258
+ console.error(pc.red(e instanceof PlanPathError ? e.message : String(e)));
259
+ process.exitCode = 2;
260
+ return;
261
+ }
262
+ const json = args.json === true;
263
+ if (sub === "validate")
264
+ runValidate(planDir, json);
265
+ else if (sub === "status")
266
+ runStatus(planDir, json);
267
+ else if (sub === "approve")
268
+ runApprove(planDir, args.revision, json);
269
+ else if (sub === "export")
270
+ runExport(planDir, args.format, json);
271
+ else if (sub === "prepare-feedback")
272
+ runPrepareFeedback(planDir, args.ops, json);
273
+ else if (sub === "apply-feedback")
274
+ runApplyFeedback(planDir, args, json);
275
+ else if (sub === "patch")
276
+ runPatch(planDir, args.op, json);
277
+ else
278
+ runRehash(planDir, json);
279
+ }
280
+ //# sourceMappingURL=cli.js.map