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,32 @@
1
+ /**
2
+ * SHA-256 ETag + optimistic-concurrency (409-stale) helper.
3
+ *
4
+ * CONSOLIDATES the two prior sources: the standalone per-file SHA-256 ETag
5
+ * (64-char lowercase hex of the file's bytes) and the write pipeline's 409-stale
6
+ * check (`current !== provided ⇒ stale`). One canonical implementation drives
7
+ * both a caller computing an ETag to hand out and a caller comparing a
8
+ * client-supplied ETag before a write. Missing file ⇒ null (caller decides).
9
+ */
10
+ import * as crypto from "node:crypto";
11
+ import * as fs from "node:fs";
12
+ /** 64-char lowercase hex SHA-256 of `content`. */
13
+ export function computeEtag(content) {
14
+ return crypto.createHash("sha256").update(content).digest("hex");
15
+ }
16
+ /** SHA-256 ETag of a file's bytes, or null if it cannot be read. */
17
+ export function etagFromFile(filePath) {
18
+ try {
19
+ return computeEtag(fs.readFileSync(filePath));
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ }
25
+ /**
26
+ * True when a client-supplied ETag no longer matches the current one — the
27
+ * optimistic-concurrency condition a write route answers with HTTP 409.
28
+ */
29
+ export function isStaleEtag(currentEtag, providedEtag) {
30
+ return currentEtag !== providedEtag;
31
+ }
32
+ //# sourceMappingURL=etag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"etag.js","sourceRoot":"","sources":["../../src/local-web/etag.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,kDAAkD;AAClD,MAAM,UAAU,WAAW,CAAC,OAAwB;IACnD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACJ,OAAO,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB,EAAE,YAAoB;IACpE,OAAO,WAAW,KAAK,YAAY,CAAC;AACrC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Host header guard — defense against DNS rebinding.
3
+ *
4
+ * Behavior extracted verbatim from the loopback server's private host check:
5
+ * a request is allowed only when its `Host` header is the loopback/localhost
6
+ * authority (with or without the bound port). The `Host` header may arrive
7
+ * mixed-case from proxies, so this uses a Set of exact expected values plus the
8
+ * bare-host fallback — it does NOT lowercase (that is the Origin guard's job).
9
+ */
10
+ /** True when `host` is an allowed loopback authority for `port`. Missing host ⇒ false. */
11
+ export declare function isHostAllowed(host: string | undefined, port: number): boolean;
12
+ //# sourceMappingURL=host-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-guard.d.ts","sourceRoot":"","sources":["../../src/local-web/host-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI7E"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Host header guard — defense against DNS rebinding.
3
+ *
4
+ * Behavior extracted verbatim from the loopback server's private host check:
5
+ * a request is allowed only when its `Host` header is the loopback/localhost
6
+ * authority (with or without the bound port). The `Host` header may arrive
7
+ * mixed-case from proxies, so this uses a Set of exact expected values plus the
8
+ * bare-host fallback — it does NOT lowercase (that is the Origin guard's job).
9
+ */
10
+ import { LOOPBACK_HOST } from "./constants.js";
11
+ /** True when `host` is an allowed loopback authority for `port`. Missing host ⇒ false. */
12
+ export function isHostAllowed(host, port) {
13
+ if (!host)
14
+ return false;
15
+ const expected = new Set([`${LOOPBACK_HOST}:${port}`, `localhost:${port}`]);
16
+ return expected.has(host) || host === LOOPBACK_HOST || host === "localhost";
17
+ }
18
+ //# sourceMappingURL=host-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-guard.js","sourceRoot":"","sources":["../../src/local-web/host-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,IAAwB,EAAE,IAAY;IACnE,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,IAAI,IAAI,EAAE,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,WAAW,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * local-web — domain-neutral loopback web primitives.
3
+ *
4
+ * Extracted (Phase 2) from the prior local-server implementation so the Visual
5
+ * Plan studio (and any future loopback tool) reuses ONE audited copy of the security- and
6
+ * concurrency-sensitive code: loopback server lifecycle, Host/Origin guards,
7
+ * bounded body reading, realpath containment, atomic writes, SHA-256 ETags,
8
+ * traversal-guarded static serving, and cross-platform browser open.
9
+ *
10
+ * Dependency direction is product-domain → local-web only; this layer imports
11
+ * nothing product-specific.
12
+ */
13
+ export { LOOPBACK_HOST, CLOSE_GRACE_MS } from "./constants.js";
14
+ export { isHostAllowed } from "./host-guard.js";
15
+ export { isOriginAllowed } from "./origin-guard.js";
16
+ export { bufferBody, BodyError } from "./request-body.js";
17
+ export { safeRealpath, isContainedPath, resolveContained } from "./path-boundary.js";
18
+ export { atomicWriteFileSync, cleanOrphanedTmps } from "./atomic-write.js";
19
+ export { computeEtag, etagFromFile, isStaleEtag } from "./etag.js";
20
+ export { serveStatic } from "./static-handler.js";
21
+ export { openBrowser } from "./open-browser.js";
22
+ export { LocalServer, type LocalServerOptions, type RequestHandler } from "./local-server.js";
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/local-web/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * local-web — domain-neutral loopback web primitives.
3
+ *
4
+ * Extracted (Phase 2) from the prior local-server implementation so the Visual
5
+ * Plan studio (and any future loopback tool) reuses ONE audited copy of the security- and
6
+ * concurrency-sensitive code: loopback server lifecycle, Host/Origin guards,
7
+ * bounded body reading, realpath containment, atomic writes, SHA-256 ETags,
8
+ * traversal-guarded static serving, and cross-platform browser open.
9
+ *
10
+ * Dependency direction is product-domain → local-web only; this layer imports
11
+ * nothing product-specific.
12
+ */
13
+ export { LOOPBACK_HOST, CLOSE_GRACE_MS } from "./constants.js";
14
+ export { isHostAllowed } from "./host-guard.js";
15
+ export { isOriginAllowed } from "./origin-guard.js";
16
+ export { bufferBody, BodyError } from "./request-body.js";
17
+ export { safeRealpath, isContainedPath, resolveContained } from "./path-boundary.js";
18
+ export { atomicWriteFileSync, cleanOrphanedTmps } from "./atomic-write.js";
19
+ export { computeEtag, etagFromFile, isStaleEtag } from "./etag.js";
20
+ export { serveStatic } from "./static-handler.js";
21
+ export { openBrowser } from "./open-browser.js";
22
+ export { LocalServer } from "./local-server.js";
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-web/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAgD,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Loopback HTTP server lifecycle — 127.0.0.1 bind + Host guard + port fallback.
3
+ *
4
+ * Server lifecycle ported from patoles/agent-flow @ 59ccf4e (app/src/server.ts).
5
+ * License Apache-2.0 — see the repository NOTICE file.
6
+ *
7
+ * Domain-neutral: it owns ONLY binding, the DNS-rebinding Host guard, port
8
+ * fallback, and graceful shutdown. All routing is delegated to the injected
9
+ * `handler` — this layer has no knowledge of any product's routes or payloads.
10
+ * A request whose `Host` header fails the guard gets 403 before the handler
11
+ * ever sees it.
12
+ */
13
+ import * as http from "node:http";
14
+ export type RequestHandler = (req: http.IncomingMessage, res: http.ServerResponse) => void;
15
+ export interface LocalServerOptions {
16
+ /** Fixed port, or 0/undefined for a random free port. A busy fixed port falls back to random. */
17
+ port?: number;
18
+ /** Routes every Host-allowed request. */
19
+ handler: RequestHandler;
20
+ /** Emit a one-line note to stderr on port fallback. */
21
+ verbose?: boolean;
22
+ }
23
+ export declare class LocalServer {
24
+ private server;
25
+ private actualPort;
26
+ private readonly opts;
27
+ constructor(opts: LocalServerOptions);
28
+ get port(): number;
29
+ get url(): string;
30
+ /** Bind the server and return its URL. Falls back to a random port if the fixed one is busy. */
31
+ start(): Promise<string>;
32
+ /** Gracefully close, allowing in-flight connections a bounded grace period. */
33
+ stop(): Promise<void>;
34
+ private listen;
35
+ private route;
36
+ }
37
+ //# sourceMappingURL=local-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../../src/local-web/local-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;AAE3F,MAAM,WAAW,kBAAkB;IAClC,iGAAiG;IACjG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,EAAE,cAAc,CAAC;IACxB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,WAAW;IACvB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;gBAE9B,IAAI,EAAE,kBAAkB;IAIpC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,gGAAgG;IAC1F,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAgB9B,+EAA+E;IACzE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,KAAK;CAQb"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Loopback HTTP server lifecycle — 127.0.0.1 bind + Host guard + port fallback.
3
+ *
4
+ * Server lifecycle ported from patoles/agent-flow @ 59ccf4e (app/src/server.ts).
5
+ * License Apache-2.0 — see the repository NOTICE file.
6
+ *
7
+ * Domain-neutral: it owns ONLY binding, the DNS-rebinding Host guard, port
8
+ * fallback, and graceful shutdown. All routing is delegated to the injected
9
+ * `handler` — this layer has no knowledge of any product's routes or payloads.
10
+ * A request whose `Host` header fails the guard gets 403 before the handler
11
+ * ever sees it.
12
+ */
13
+ import * as http from "node:http";
14
+ import { LOOPBACK_HOST, CLOSE_GRACE_MS } from "./constants.js";
15
+ import { isHostAllowed } from "./host-guard.js";
16
+ export class LocalServer {
17
+ server = null;
18
+ actualPort = 0;
19
+ opts;
20
+ constructor(opts) {
21
+ this.opts = opts;
22
+ }
23
+ get port() {
24
+ return this.actualPort;
25
+ }
26
+ get url() {
27
+ return `http://${LOOPBACK_HOST}:${this.actualPort}`;
28
+ }
29
+ /** Bind the server and return its URL. Falls back to a random port if the fixed one is busy. */
30
+ async start() {
31
+ const desiredPort = this.opts.port ?? 0;
32
+ try {
33
+ await this.listen(desiredPort);
34
+ }
35
+ catch (err) {
36
+ const e = err;
37
+ if (desiredPort !== 0 && (e.code === "EADDRINUSE" || e.code === "EACCES")) {
38
+ if (this.opts.verbose)
39
+ process.stderr.write(`[local-web] port ${desiredPort} unavailable (${e.code}); falling back to random\n`);
40
+ await this.listen(0);
41
+ }
42
+ else {
43
+ throw err;
44
+ }
45
+ }
46
+ return this.url;
47
+ }
48
+ /** Gracefully close, allowing in-flight connections a bounded grace period. */
49
+ async stop() {
50
+ if (!this.server)
51
+ return;
52
+ const srv = this.server;
53
+ this.server = null;
54
+ await new Promise((resolve) => {
55
+ const timer = setTimeout(() => resolve(), CLOSE_GRACE_MS);
56
+ if (typeof timer.unref === "function")
57
+ timer.unref();
58
+ srv.close(() => {
59
+ clearTimeout(timer);
60
+ resolve();
61
+ });
62
+ });
63
+ }
64
+ listen(port) {
65
+ return new Promise((resolve, reject) => {
66
+ const server = http.createServer((req, res) => this.route(req, res));
67
+ server.on("error", reject); // caller distinguishes EADDRINUSE/EACCES for fallback
68
+ server.listen(port, LOOPBACK_HOST, () => {
69
+ this.server = server;
70
+ const addr = server.address();
71
+ this.actualPort = typeof addr === "object" && addr ? addr.port : port;
72
+ resolve();
73
+ });
74
+ });
75
+ }
76
+ route(req, res) {
77
+ if (!isHostAllowed(req.headers.host, this.actualPort)) {
78
+ res.writeHead(403, { "Content-Type": "text/plain" });
79
+ res.end("Forbidden");
80
+ return;
81
+ }
82
+ this.opts.handler(req, res);
83
+ }
84
+ }
85
+ //# sourceMappingURL=local-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-server.js","sourceRoot":"","sources":["../../src/local-web/local-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Cross-platform browser launcher with no runtime deps.
3
+ *
4
+ * Ported from patoles/agent-flow @ 59ccf4e (app/src/server.ts).
5
+ * License Apache-2.0 — see the repository NOTICE file.
6
+ *
7
+ * macOS/Linux use execFile (no shell). Windows requires `start` (a shell
8
+ * builtin), so it execs a shell — but ONLY with our own URL, never user input.
9
+ */
10
+ /** Open `url` in the platform default browser. `onError` receives any launch error. */
11
+ export declare function openBrowser(url: string, onError?: (err: Error) => void): void;
12
+ //# sourceMappingURL=open-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-browser.d.ts","sourceRoot":"","sources":["../../src/local-web/open-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAa7E"}
@@ -1,14 +1,15 @@
1
1
  /**
2
- * openURL — cross-platform browser launcher with no runtime deps.
2
+ * Cross-platform browser launcher with no runtime deps.
3
3
  *
4
4
  * Ported from patoles/agent-flow @ 59ccf4e (app/src/server.ts).
5
- * License Apache-2.0 (see ../NOTICE).
5
+ * License Apache-2.0 see the repository NOTICE file.
6
6
  *
7
- * macOS/Linux use execFile (no shell). Windows requires `start` (shell builtin),
8
- * so we exec but ONLY with our own printed URL never user input (RT2 #3).
7
+ * macOS/Linux use execFile (no shell). Windows requires `start` (a shell
8
+ * builtin), so it execs a shell — but ONLY with our own URL, never user input.
9
9
  */
10
10
  import { exec, execFile } from "node:child_process";
11
- export function openURL(url, onError) {
11
+ /** Open `url` in the platform default browser. `onError` receives any launch error. */
12
+ export function openBrowser(url, onError) {
12
13
  const cb = (err) => {
13
14
  if (err && onError)
14
15
  onError(err);
@@ -17,12 +18,12 @@ export function openURL(url, onError) {
17
18
  execFile("open", [url], cb);
18
19
  }
19
20
  else if (process.platform === "win32") {
20
- // `start` is a shell builtin; empty title arg is required to avoid
21
- // `start "URL"` being parsed as a window title.
21
+ // `start` is a shell builtin; the empty title arg stops `start "URL"`
22
+ // from being parsed as a window title.
22
23
  exec(`start "" "${url}"`, cb);
23
24
  }
24
25
  else {
25
26
  execFile("xdg-open", [url], cb);
26
27
  }
27
28
  }
28
- //# sourceMappingURL=open-url.js.map
29
+ //# sourceMappingURL=open-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-browser.js","sourceRoot":"","sources":["../../src/local-web/open-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEpD,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAA8B;IACtE,MAAM,EAAE,GAAG,CAAC,GAAiB,EAAQ,EAAE;QACtC,IAAI,GAAG,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzC,sEAAsE;QACtE,uCAAuC;QACvC,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACP,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACjC,CAAC;AACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Origin header guard — exact-match allowlist for cross-origin write requests.
3
+ *
4
+ * Behavior extracted verbatim from the loopback write pipeline: case-insensitive
5
+ * EXACT equality against the two allowed origins. No prefix-match, no contains,
6
+ * no regex. Distinct from the Host guard — the `Origin` header is always
7
+ * lowercase per the browser spec, so this lowercases and compares exact strings.
8
+ */
9
+ /** True when `origin` is exactly the loopback or localhost origin for `port`. */
10
+ export declare function isOriginAllowed(origin: string, port: number): boolean;
11
+ //# sourceMappingURL=origin-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-guard.d.ts","sourceRoot":"","sources":["../../src/local-web/origin-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Origin header guard — exact-match allowlist for cross-origin write requests.
3
+ *
4
+ * Behavior extracted verbatim from the loopback write pipeline: case-insensitive
5
+ * EXACT equality against the two allowed origins. No prefix-match, no contains,
6
+ * no regex. Distinct from the Host guard — the `Origin` header is always
7
+ * lowercase per the browser spec, so this lowercases and compares exact strings.
8
+ */
9
+ import { LOOPBACK_HOST } from "./constants.js";
10
+ /** True when `origin` is exactly the loopback or localhost origin for `port`. */
11
+ export function isOriginAllowed(origin, port) {
12
+ const lower = origin.toLowerCase();
13
+ return lower === `http://${LOOPBACK_HOST}:${port}` || lower === `http://localhost:${port}`;
14
+ }
15
+ //# sourceMappingURL=origin-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-guard.js","sourceRoot":"","sources":["../../src/local-web/origin-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAY;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,KAAK,KAAK,UAAU,aAAa,IAAI,IAAI,EAAE,IAAI,KAAK,KAAK,oBAAoB,IAAI,EAAE,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Realpath-based path containment — fail-closed.
3
+ *
4
+ * Behavior extracted verbatim from the loopback write pipeline's boundary
5
+ * checks: `safeRealpath` resolves symlinks and returns null on ANY error (the
6
+ * caller MUST treat null as denied), and `isContainedPath` verifies a resolved
7
+ * child sits at or strictly inside a resolved parent. Together they stop a
8
+ * symlinked entry from redirecting reads/writes outside an allowed root.
9
+ */
10
+ /** Resolve `p` to a realpath, or null on any failure (fail-closed). */
11
+ export declare function safeRealpath(p: string): string | null;
12
+ /** True when `childRealpath` is `parentRealpath` itself or strictly inside it. */
13
+ export declare function isContainedPath(childRealpath: string, parentRealpath: string): boolean;
14
+ /**
15
+ * Resolve `child` and verify it is contained within `parent` (already-resolved
16
+ * or resolvable). Returns the child's realpath on success, or null when either
17
+ * realpath fails or containment is violated.
18
+ */
19
+ export declare function resolveContained(parent: string, child: string): string | null;
20
+ //# sourceMappingURL=path-boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-boundary.d.ts","sourceRoot":"","sources":["../../src/local-web/path-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMrD;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7E"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Realpath-based path containment — fail-closed.
3
+ *
4
+ * Behavior extracted verbatim from the loopback write pipeline's boundary
5
+ * checks: `safeRealpath` resolves symlinks and returns null on ANY error (the
6
+ * caller MUST treat null as denied), and `isContainedPath` verifies a resolved
7
+ * child sits at or strictly inside a resolved parent. Together they stop a
8
+ * symlinked entry from redirecting reads/writes outside an allowed root.
9
+ */
10
+ import * as fs from "node:fs";
11
+ import * as path from "node:path";
12
+ /** Resolve `p` to a realpath, or null on any failure (fail-closed). */
13
+ export function safeRealpath(p) {
14
+ try {
15
+ return fs.realpathSync(p);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ /** True when `childRealpath` is `parentRealpath` itself or strictly inside it. */
22
+ export function isContainedPath(childRealpath, parentRealpath) {
23
+ return childRealpath === parentRealpath || childRealpath.startsWith(parentRealpath + path.sep);
24
+ }
25
+ /**
26
+ * Resolve `child` and verify it is contained within `parent` (already-resolved
27
+ * or resolvable). Returns the child's realpath on success, or null when either
28
+ * realpath fails or containment is violated.
29
+ */
30
+ export function resolveContained(parent, child) {
31
+ const parentReal = safeRealpath(parent);
32
+ if (!parentReal)
33
+ return null;
34
+ const childReal = safeRealpath(child);
35
+ if (!childReal)
36
+ return null;
37
+ return isContainedPath(childReal, parentReal) ? childReal : null;
38
+ }
39
+ //# sourceMappingURL=path-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-boundary.js","sourceRoot":"","sources":["../../src/local-web/path-boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,CAAS;IACrC,IAAI,CAAC;QACJ,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,aAAqB,EAAE,cAAsB;IAC5E,OAAO,aAAa,KAAK,cAAc,IAAI,aAAa,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,KAAa;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Bounded request-body reader with a socket timeout.
3
+ *
4
+ * Behavior extracted verbatim from the loopback write pipeline: collect the body
5
+ * up to `capBytes`, destroying the socket and rejecting with `BodyError(413)` on
6
+ * overflow or `BodyError(408)` on timeout. The cap + timeout are the DoS guard
7
+ * for any POST/PATCH route; the consumer supplies both (the write pipeline uses
8
+ * a 4096-byte cap).
9
+ */
10
+ import type { IncomingMessage } from "node:http";
11
+ /** Carries the HTTP status + a short tag for a body-read failure. */
12
+ export declare class BodyError extends Error {
13
+ readonly status: number;
14
+ readonly tag: string;
15
+ constructor(status: number, tag: string);
16
+ }
17
+ /**
18
+ * Collect the full request body up to `capBytes`. Destroys the socket if the
19
+ * body exceeds the cap OR if `timeoutMs` elapses first. Rejects with
20
+ * `BodyError(413,"body-too-large")` on overflow, `BodyError(408,"request-timeout")`
21
+ * on timeout.
22
+ */
23
+ export declare function bufferBody(req: IncomingMessage, capBytes: number, timeoutMs: number): Promise<Buffer>;
24
+ //# sourceMappingURL=request-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-body.d.ts","sourceRoot":"","sources":["../../src/local-web/request-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,qEAAqE;AACrE,qBAAa,SAAU,SAAQ,KAAK;aAElB,MAAM,EAAE,MAAM;aACd,GAAG,EAAE,MAAM;gBADX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM;CAK5B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwCrG"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Bounded request-body reader with a socket timeout.
3
+ *
4
+ * Behavior extracted verbatim from the loopback write pipeline: collect the body
5
+ * up to `capBytes`, destroying the socket and rejecting with `BodyError(413)` on
6
+ * overflow or `BodyError(408)` on timeout. The cap + timeout are the DoS guard
7
+ * for any POST/PATCH route; the consumer supplies both (the write pipeline uses
8
+ * a 4096-byte cap).
9
+ */
10
+ /** Carries the HTTP status + a short tag for a body-read failure. */
11
+ export class BodyError extends Error {
12
+ status;
13
+ tag;
14
+ constructor(status, tag) {
15
+ super(tag);
16
+ this.status = status;
17
+ this.tag = tag;
18
+ this.name = "BodyError";
19
+ }
20
+ }
21
+ /**
22
+ * Collect the full request body up to `capBytes`. Destroys the socket if the
23
+ * body exceeds the cap OR if `timeoutMs` elapses first. Rejects with
24
+ * `BodyError(413,"body-too-large")` on overflow, `BodyError(408,"request-timeout")`
25
+ * on timeout.
26
+ */
27
+ export function bufferBody(req, capBytes, timeoutMs) {
28
+ return new Promise((resolve, reject) => {
29
+ const chunks = [];
30
+ let total = 0;
31
+ let settled = false;
32
+ const timer = setTimeout(() => {
33
+ if (settled)
34
+ return;
35
+ settled = true;
36
+ req.socket?.destroy();
37
+ reject(new BodyError(408, "request-timeout"));
38
+ }, timeoutMs);
39
+ req.on("data", (chunk) => {
40
+ total += chunk.length;
41
+ if (total > capBytes) {
42
+ if (settled)
43
+ return;
44
+ settled = true;
45
+ clearTimeout(timer);
46
+ req.socket?.destroy();
47
+ reject(new BodyError(413, "body-too-large"));
48
+ return;
49
+ }
50
+ chunks.push(chunk);
51
+ });
52
+ req.on("end", () => {
53
+ if (settled)
54
+ return;
55
+ settled = true;
56
+ clearTimeout(timer);
57
+ resolve(Buffer.concat(chunks));
58
+ });
59
+ req.on("error", (err) => {
60
+ if (settled)
61
+ return;
62
+ settled = true;
63
+ clearTimeout(timer);
64
+ reject(err);
65
+ });
66
+ });
67
+ }
68
+ //# sourceMappingURL=request-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-body.js","sourceRoot":"","sources":["../../src/local-web/request-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,qEAAqE;AACrE,MAAM,OAAO,SAAU,SAAQ,KAAK;IAElB;IACA;IAFjB,YACiB,MAAc,EACd,GAAW;QAE3B,KAAK,CAAC,GAAG,CAAC,CAAC;QAHK,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAQ;QAG3B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IACzB,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAoB,EAAE,QAAgB,EAAE,SAAiB;IACnF,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC/C,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAChC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACtB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBAC7C,OAAO;YACR,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAClB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Static file serving with a path-traversal guard.
3
+ *
4
+ * Ported from patoles/agent-flow @ 59ccf4e (app/src/static.ts).
5
+ * License Apache-2.0 — see the repository NOTICE file.
6
+ *
7
+ * Two-layer traversal defense: reject any raw URL containing "..", then resolve
8
+ * the candidate and require it to sit at or inside the base directory. Serves
9
+ * GET/HEAD only; long-cache for /assets/, no-cache otherwise.
10
+ */
11
+ import type { IncomingMessage, ServerResponse } from "node:http";
12
+ /** Serve a file from `staticDir` for GET/HEAD, guarding against path traversal. */
13
+ export declare function serveStatic(req: IncomingMessage, res: ServerResponse, staticDir: string): void;
14
+ //# sourceMappingURL=static-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-handler.d.ts","sourceRoot":"","sources":["../../src/local-web/static-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAsBjE,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAgD9F"}
@@ -1,11 +1,16 @@
1
1
  /**
2
- * Static file serving with path-traversal guard.
2
+ * Static file serving with a path-traversal guard.
3
3
  *
4
4
  * Ported from patoles/agent-flow @ 59ccf4e (app/src/static.ts).
5
- * License Apache-2.0 (see ../../NOTICE).
5
+ * License Apache-2.0 see the repository NOTICE file.
6
+ *
7
+ * Two-layer traversal defense: reject any raw URL containing "..", then resolve
8
+ * the candidate and require it to sit at or inside the base directory. Serves
9
+ * GET/HEAD only; long-cache for /assets/, no-cache otherwise.
6
10
  */
7
11
  import * as fs from "node:fs";
8
12
  import * as path from "node:path";
13
+ import { LOOPBACK_HOST } from "./constants.js";
9
14
  const MIME = {
10
15
  ".html": "text/html; charset=utf-8",
11
16
  ".js": "application/javascript; charset=utf-8",
@@ -22,6 +27,7 @@ function send404(res) {
22
27
  res.writeHead(404, { "Content-Type": "text/plain" });
23
28
  res.end("Not Found");
24
29
  }
30
+ /** Serve a file from `staticDir` for GET/HEAD, guarding against path traversal. */
25
31
  export function serveStatic(req, res, staticDir) {
26
32
  if (req.method !== "GET" && req.method !== "HEAD") {
27
33
  res.writeHead(405, { Allow: "GET, HEAD", "Content-Type": "text/plain" });
@@ -34,7 +40,7 @@ export function serveStatic(req, res, staticDir) {
34
40
  send404(res);
35
41
  return;
36
42
  }
37
- const url = new URL(reqUrl, "http://127.0.0.1");
43
+ const url = new URL(reqUrl, `http://${LOOPBACK_HOST}`);
38
44
  let pathname = url.pathname;
39
45
  if (pathname === "/")
40
46
  pathname = "/index.html";
@@ -57,12 +63,11 @@ export function serveStatic(req, res, staticDir) {
57
63
  return;
58
64
  }
59
65
  const isAsset = pathname.startsWith("/assets/");
60
- const headers = {
66
+ res.writeHead(200, {
61
67
  "Content-Type": mimeFor(candidate),
62
68
  "Content-Length": String(stat.size),
63
69
  "Cache-Control": isAsset ? "public, max-age=31536000, immutable" : "no-cache",
64
- };
65
- res.writeHead(200, headers);
70
+ });
66
71
  if (req.method === "HEAD") {
67
72
  res.end();
68
73
  return;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-handler.js","sourceRoot":"","sources":["../../src/local-web/static-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface CapabilityProjectionResult {
2
+ success: boolean;
3
+ agentsPath: string;
4
+ snapshotPath: string;
5
+ error?: string;
6
+ }
7
+ export declare function mergeCodexCapabilityBootstrap(existing: string): string;
8
+ export declare function installCodexCapabilityProjection(sourceClaudeDir: string, options: {
9
+ global: boolean;
10
+ }): Promise<CapabilityProjectionResult>;
11
+ //# sourceMappingURL=capability-bootstrap-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-bootstrap-projection.d.ts","sourceRoot":"","sources":["../../src/migrate/capability-bootstrap-projection.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUtE;AAED,wBAAsB,gCAAgC,CACrD,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,0BAA0B,CAAC,CAmBrC"}