niceeval 0.13.2 → 0.13.3

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 (494) hide show
  1. package/dist/agents/bub.cjs +4 -4
  2. package/dist/agents/bub.cjs.map +1 -1
  3. package/dist/agents/bub.d.cts +2 -2
  4. package/dist/agents/bub.d.mts +2 -2
  5. package/dist/agents/bub.d.ts +2 -2
  6. package/dist/agents/claude-code-native.cjs +213 -0
  7. package/dist/agents/claude-code-native.cjs.map +1 -0
  8. package/dist/agents/claude-code-native.d.cts +5 -0
  9. package/dist/agents/claude-code-native.d.mts +5 -0
  10. package/dist/agents/claude-code-native.d.ts +5 -0
  11. package/dist/agents/claude-code-native.js +6 -0
  12. package/dist/agents/claude-code-native.js.map +1 -0
  13. package/dist/agents/claude-code.cjs +26 -80
  14. package/dist/agents/claude-code.cjs.map +1 -1
  15. package/dist/agents/codex-app-server.cjs +314 -0
  16. package/dist/agents/codex-app-server.cjs.map +1 -0
  17. package/dist/agents/codex-app-server.d.cts +9 -0
  18. package/dist/agents/codex-app-server.d.mts +9 -0
  19. package/dist/agents/codex-app-server.d.ts +9 -0
  20. package/dist/agents/codex-app-server.js +6 -0
  21. package/dist/agents/codex-app-server.js.map +1 -0
  22. package/dist/agents/codex.cjs +19 -68
  23. package/dist/agents/codex.cjs.map +1 -1
  24. package/dist/agents/codex.d.cts +3 -3
  25. package/dist/agents/codex.d.mts +3 -3
  26. package/dist/agents/codex.d.ts +3 -3
  27. package/dist/agents/index.cjs +3 -1
  28. package/dist/agents/index.cjs.map +1 -1
  29. package/dist/agents/index.d.cts +1 -0
  30. package/dist/agents/index.d.mts +1 -0
  31. package/dist/agents/index.d.ts +1 -0
  32. package/dist/agents/index.js +84 -82
  33. package/dist/agents/index.mjs +84 -82
  34. package/dist/agents/managed-jsonl.cjs +207 -0
  35. package/dist/agents/managed-jsonl.cjs.map +1 -0
  36. package/dist/agents/managed-jsonl.d.cts +39 -0
  37. package/dist/agents/managed-jsonl.d.mts +39 -0
  38. package/dist/agents/managed-jsonl.d.ts +39 -0
  39. package/dist/agents/managed-jsonl.js +6 -0
  40. package/dist/agents/managed-jsonl.js.map +1 -0
  41. package/dist/agents/managed-process.cjs +31 -0
  42. package/dist/agents/managed-process.cjs.map +1 -0
  43. package/dist/agents/managed-process.d.cts +3 -0
  44. package/dist/agents/managed-process.d.mts +3 -0
  45. package/dist/agents/managed-process.d.ts +3 -0
  46. package/dist/agents/managed-process.js +6 -0
  47. package/dist/agents/managed-process.js.map +1 -0
  48. package/dist/agents/omp.cjs +18 -1
  49. package/dist/agents/omp.cjs.map +1 -1
  50. package/dist/agents/sdk-streams.cjs +11 -4
  51. package/dist/agents/sdk-streams.cjs.map +1 -1
  52. package/dist/agents/types.cjs.map +1 -1
  53. package/dist/agents/types.d.cts +8 -0
  54. package/dist/agents/types.d.mts +8 -0
  55. package/dist/agents/types.d.ts +8 -0
  56. package/dist/analysis/bindings.cjs +74 -19
  57. package/dist/analysis/bindings.cjs.map +1 -1
  58. package/dist/analysis/bindings.d.cts +534 -156
  59. package/dist/analysis/bindings.d.mts +534 -156
  60. package/dist/analysis/bindings.d.ts +534 -156
  61. package/dist/analysis/domain-view.cjs.map +1 -1
  62. package/dist/analysis/domain-view.d.cts +137 -8
  63. package/dist/analysis/domain-view.d.mts +137 -8
  64. package/dist/analysis/domain-view.d.ts +137 -8
  65. package/dist/analysis/index.cjs.map +1 -1
  66. package/dist/analysis/index.d.cts +1 -1
  67. package/dist/analysis/index.d.mts +1 -1
  68. package/dist/analysis/index.d.ts +1 -1
  69. package/dist/assertions/api.cjs.map +1 -1
  70. package/dist/assertions/api.d.cts +62 -0
  71. package/dist/assertions/api.d.mts +62 -0
  72. package/dist/assertions/api.d.ts +62 -0
  73. package/dist/assertions/judge.cjs +56 -5
  74. package/dist/assertions/judge.cjs.map +1 -1
  75. package/dist/assertions/match.cjs +66 -42
  76. package/dist/assertions/match.cjs.map +1 -1
  77. package/dist/assertions/match.d.cts +13 -0
  78. package/dist/assertions/match.d.mts +13 -0
  79. package/dist/assertions/match.d.ts +13 -0
  80. package/dist/assertions/record/attachment.cjs +104 -33
  81. package/dist/assertions/record/attachment.cjs.map +1 -1
  82. package/dist/assertions/record/attachment.d.cts +294 -57
  83. package/dist/assertions/record/attachment.d.mts +294 -57
  84. package/dist/assertions/record/attachment.d.ts +294 -57
  85. package/dist/assertions/record/codec.cjs +91 -17
  86. package/dist/assertions/record/codec.cjs.map +1 -1
  87. package/dist/assertions/record/codec.d.cts +280 -52
  88. package/dist/assertions/record/codec.d.mts +280 -52
  89. package/dist/assertions/record/codec.d.ts +280 -52
  90. package/dist/assertions/record/index.js +2 -0
  91. package/dist/assertions/record/model.cjs +16 -0
  92. package/dist/assertions/record/model.cjs.map +1 -1
  93. package/dist/assertions/record/model.d.cts +120 -13
  94. package/dist/assertions/record/model.d.mts +120 -13
  95. package/dist/assertions/record/model.d.ts +120 -13
  96. package/dist/assertions/record/model.js +2 -0
  97. package/dist/assertions/record/producer.cjs +70 -50
  98. package/dist/assertions/record/producer.cjs.map +1 -1
  99. package/dist/assertions/record/producer.d.cts +8 -7
  100. package/dist/assertions/record/producer.d.mts +8 -7
  101. package/dist/assertions/record/producer.d.ts +8 -7
  102. package/dist/assertions/runtime.cjs +49 -7
  103. package/dist/assertions/runtime.cjs.map +1 -1
  104. package/dist/cli/application.cjs +40 -0
  105. package/dist/cli/application.cjs.map +1 -0
  106. package/dist/cli/application.d.cts +129 -0
  107. package/dist/cli/application.d.mts +129 -0
  108. package/dist/cli/application.d.ts +129 -0
  109. package/dist/cli/application.js +24 -0
  110. package/dist/cli/application.js.map +1 -0
  111. package/dist/cli/bootstrap.cjs +10 -4
  112. package/dist/cli/bootstrap.cjs.map +1 -1
  113. package/dist/cli/node-application.cjs +123 -0
  114. package/dist/cli/node-application.cjs.map +1 -0
  115. package/dist/cli/node-application.d.cts +14 -0
  116. package/dist/cli/node-application.d.mts +14 -0
  117. package/dist/cli/node-application.d.ts +14 -0
  118. package/dist/cli/node-application.js +26 -0
  119. package/dist/cli/node-application.js.map +1 -0
  120. package/dist/cli/program.cjs +2807 -0
  121. package/dist/cli/program.cjs.map +1 -0
  122. package/dist/cli/program.d.cts +352 -0
  123. package/dist/cli/program.d.mts +352 -0
  124. package/dist/cli/program.d.ts +352 -0
  125. package/dist/cli/program.js +36 -0
  126. package/dist/cli/program.js.map +1 -0
  127. package/dist/cli/project-configuration.cjs +134 -0
  128. package/dist/cli/project-configuration.cjs.map +1 -0
  129. package/dist/cli/project-configuration.d.cts +64 -0
  130. package/dist/cli/project-configuration.d.mts +64 -0
  131. package/dist/cli/project-configuration.d.ts +64 -0
  132. package/dist/cli/project-configuration.js +22 -0
  133. package/dist/cli/project-configuration.js.map +1 -0
  134. package/dist/cli/record.cjs +20 -4
  135. package/dist/cli/record.cjs.map +1 -1
  136. package/dist/cli/record.d.cts +3 -3
  137. package/dist/cli/record.d.mts +3 -3
  138. package/dist/cli/record.d.ts +3 -3
  139. package/dist/cli.cjs +19 -3130
  140. package/dist/cli.cjs.map +1 -1
  141. package/dist/cli.d.cts +2 -148
  142. package/dist/cli.d.mts +2 -148
  143. package/dist/cli.d.ts +2 -148
  144. package/dist/cli.js +22 -30
  145. package/dist/context/assert-first.cjs +21 -15
  146. package/dist/context/assert-first.cjs.map +1 -1
  147. package/dist/context/assert-first.d.cts +1 -0
  148. package/dist/context/assert-first.d.mts +1 -0
  149. package/dist/context/assert-first.d.ts +1 -0
  150. package/dist/context/attempt-resources.cjs +13 -0
  151. package/dist/context/attempt-resources.cjs.map +1 -0
  152. package/dist/context/attempt-resources.d.cts +3 -0
  153. package/dist/context/attempt-resources.d.mts +3 -0
  154. package/dist/context/attempt-resources.d.ts +3 -0
  155. package/dist/context/attempt-resources.js +8 -0
  156. package/dist/context/attempt-resources.js.map +1 -0
  157. package/dist/context/session.cjs +4 -3
  158. package/dist/context/session.cjs.map +1 -1
  159. package/dist/context/session.d.cts +1 -0
  160. package/dist/context/session.d.mts +1 -0
  161. package/dist/context/session.d.ts +1 -0
  162. package/dist/eval/record/verdict.cjs +3 -2
  163. package/dist/eval/record/verdict.cjs.map +1 -1
  164. package/dist/experiment/host/index.cjs +1 -6
  165. package/dist/experiment/host/index.cjs.map +1 -1
  166. package/dist/experiment/host/index.d.cts +1 -0
  167. package/dist/experiment/host/index.d.mts +1 -0
  168. package/dist/experiment/host/index.d.ts +1 -0
  169. package/dist/load-config.cjs +13 -4
  170. package/dist/load-config.cjs.map +1 -1
  171. package/dist/load-config.d.cts +4 -3
  172. package/dist/load-config.d.mts +4 -3
  173. package/dist/load-config.d.ts +4 -3
  174. package/dist/load-config.js +4 -2
  175. package/dist/o11y/parsers/codex.cjs +29 -7
  176. package/dist/o11y/parsers/codex.cjs.map +1 -1
  177. package/dist/record/codec/core.d.cts +0 -2
  178. package/dist/record/codec/core.d.mts +0 -2
  179. package/dist/record/codec/core.d.ts +0 -2
  180. package/dist/record/codec/identifiers.cjs +2 -3
  181. package/dist/record/codec/identifiers.cjs.map +1 -1
  182. package/dist/record/codec/identifiers.d.cts +1 -2
  183. package/dist/record/codec/identifiers.d.mts +1 -2
  184. package/dist/record/codec/identifiers.d.ts +1 -2
  185. package/dist/record/codec/identifiers.js +10 -12
  186. package/dist/record/codec/index.js +42 -44
  187. package/dist/record/definition/attachment.cjs +1 -0
  188. package/dist/record/definition/attachment.cjs.map +1 -1
  189. package/dist/record/definition/attachment.d.cts +14 -0
  190. package/dist/record/definition/attachment.d.mts +14 -0
  191. package/dist/record/definition/attachment.d.ts +14 -0
  192. package/dist/record/family/assertions-v1.cjs +104 -0
  193. package/dist/record/family/assertions-v1.cjs.map +1 -0
  194. package/dist/record/family/assertions-v1.d.cts +2 -0
  195. package/dist/record/family/assertions-v1.d.mts +2 -0
  196. package/dist/record/family/assertions-v1.d.ts +2 -0
  197. package/dist/record/family/assertions-v1.js +6 -0
  198. package/dist/record/family/assertions-v1.js.map +1 -0
  199. package/dist/record/family/assertions.cjs +16 -5
  200. package/dist/record/family/assertions.cjs.map +1 -1
  201. package/dist/record/family/assertions.d.cts +510 -56
  202. package/dist/record/family/assertions.d.mts +510 -56
  203. package/dist/record/family/assertions.d.ts +510 -56
  204. package/dist/record/family/assertions.js +14 -10
  205. package/dist/record/family/catalog.cjs +17 -1
  206. package/dist/record/family/catalog.cjs.map +1 -1
  207. package/dist/record/family/catalog.d.cts +1292 -104
  208. package/dist/record/family/catalog.d.mts +1292 -104
  209. package/dist/record/family/catalog.d.ts +1292 -104
  210. package/dist/record/family/catalog.js +22 -20
  211. package/dist/record/family/index.js +144 -138
  212. package/dist/record/family/observability-v1.cjs +5 -0
  213. package/dist/record/family/observability-v1.cjs.map +1 -1
  214. package/dist/record/family/observability.cjs +1 -1
  215. package/dist/record/family/observability.cjs.map +1 -1
  216. package/dist/record/host/runtime.cjs +323 -173
  217. package/dist/record/host/runtime.cjs.map +1 -1
  218. package/dist/record/host/types.cjs.map +1 -1
  219. package/dist/record/host/types.d.cts +9 -7
  220. package/dist/record/host/types.d.mts +9 -7
  221. package/dist/record/host/types.d.ts +9 -7
  222. package/dist/record/model/core.cjs.map +1 -1
  223. package/dist/record/model/core.d.cts +1 -2
  224. package/dist/record/model/core.d.mts +1 -2
  225. package/dist/record/model/core.d.ts +1 -2
  226. package/dist/record/model/definition.cjs +1 -2
  227. package/dist/record/model/definition.cjs.map +1 -1
  228. package/dist/record/model/definition.d.cts +1 -7
  229. package/dist/record/model/definition.d.mts +1 -7
  230. package/dist/record/model/definition.d.ts +1 -7
  231. package/dist/record/model/identifiers.cjs +2 -3
  232. package/dist/record/model/identifiers.cjs.map +1 -1
  233. package/dist/record/model/identifiers.d.cts +1 -3
  234. package/dist/record/model/identifiers.d.mts +1 -3
  235. package/dist/record/model/identifiers.d.ts +1 -3
  236. package/dist/record/model/identifiers.js +36 -38
  237. package/dist/record/model/index.js +60 -62
  238. package/dist/record/platform/node.cjs +17 -7
  239. package/dist/record/platform/node.cjs.map +1 -1
  240. package/dist/record/platform/services.cjs.map +1 -1
  241. package/dist/record/platform/services.d.cts +8 -3
  242. package/dist/record/platform/services.d.mts +8 -3
  243. package/dist/record/platform/services.d.ts +8 -3
  244. package/dist/record/reader/format.cjs +16 -65
  245. package/dist/record/reader/format.cjs.map +1 -1
  246. package/dist/record/reader/format.d.cts +5 -9
  247. package/dist/record/reader/format.d.mts +5 -9
  248. package/dist/record/reader/format.d.ts +5 -9
  249. package/dist/record/reader/index.js +10 -8
  250. package/dist/record/reader/runtime.cjs +63 -32
  251. package/dist/record/reader/runtime.cjs.map +1 -1
  252. package/dist/record/reader/runtime.d.cts +40 -4
  253. package/dist/record/reader/runtime.d.mts +40 -4
  254. package/dist/record/reader/runtime.d.ts +40 -4
  255. package/dist/record/reader/runtime.js +6 -4
  256. package/dist/report/assets/enhance.js +5 -5
  257. package/dist/report/assets/styles.css +190 -24
  258. package/dist/report/built-in/result-components.cjs +8 -5
  259. package/dist/report/built-in/result-components.cjs.map +1 -1
  260. package/dist/report/built-in/standard.cjs +3 -0
  261. package/dist/report/built-in/standard.cjs.map +1 -1
  262. package/dist/report/built-in/standard.d.cts +2 -0
  263. package/dist/report/built-in/standard.d.mts +2 -0
  264. package/dist/report/built-in/standard.d.ts +2 -0
  265. package/dist/report/client-dist/app.js +53 -0
  266. package/dist/report/components/attempt-detail/compute.cjs +108 -231
  267. package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
  268. package/dist/report/components/attempt-detail/compute.d.cts +11 -45
  269. package/dist/report/components/attempt-detail/compute.d.mts +11 -45
  270. package/dist/report/components/attempt-detail/compute.d.ts +11 -45
  271. package/dist/report/components/attempt-detail/compute.js +2 -4
  272. package/dist/report/components/attempt-detail/content.cjs +4 -4
  273. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  274. package/dist/report/components/attempt-detail/validate.cjs +47 -4
  275. package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
  276. package/dist/report/components/entity-lists/compute.cjs +9 -15
  277. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  278. package/dist/report/components/entity-lists/content.cjs +53 -40
  279. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  280. package/dist/report/components/entity-lists/index.cjs +1 -3
  281. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  282. package/dist/report/components/experiment-detail/compute.cjs +4 -6
  283. package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
  284. package/dist/report/components/summaries/index.cjs +5 -1
  285. package/dist/report/components/summaries/index.cjs.map +1 -1
  286. package/dist/report/definition/cell.cjs +14 -7
  287. package/dist/report/definition/cell.cjs.map +1 -1
  288. package/dist/report/definition/cell.d.cts +4 -0
  289. package/dist/report/definition/cell.d.mts +4 -0
  290. package/dist/report/definition/cell.d.ts +4 -0
  291. package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
  292. package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
  293. package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
  294. package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
  295. package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
  296. package/dist/report/definition/primitives/assertion-evidence.js +6 -0
  297. package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
  298. package/dist/report/definition/primitives/conversation.cjs +7 -0
  299. package/dist/report/definition/primitives/conversation.cjs.map +1 -1
  300. package/dist/report/definition/primitives/conversation.d.cts +2 -0
  301. package/dist/report/definition/primitives/conversation.d.mts +2 -0
  302. package/dist/report/definition/primitives/conversation.d.ts +2 -0
  303. package/dist/report/definition/primitives/turn-trace.cjs +53 -3
  304. package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
  305. package/dist/report/definition/primitives.cjs +14 -1
  306. package/dist/report/definition/primitives.cjs.map +1 -1
  307. package/dist/report/definition/report.cjs +16 -8
  308. package/dist/report/definition/report.cjs.map +1 -1
  309. package/dist/report/definition/report.d.cts +6 -0
  310. package/dist/report/definition/report.d.mts +6 -0
  311. package/dist/report/definition/report.d.ts +6 -0
  312. package/dist/report/definition/table-text.cjs +12 -3
  313. package/dist/report/definition/table-text.cjs.map +1 -1
  314. package/dist/report/definition/table-text.d.cts +6 -1
  315. package/dist/report/definition/table-text.d.mts +6 -1
  316. package/dist/report/definition/table-text.d.ts +6 -1
  317. package/dist/report/execution/model.cjs +6 -14
  318. package/dist/report/execution/model.cjs.map +1 -1
  319. package/dist/report/execution/model.d.cts +5 -10
  320. package/dist/report/execution/model.d.mts +5 -10
  321. package/dist/report/execution/model.d.ts +5 -10
  322. package/dist/report/execution/model.js +6 -6
  323. package/dist/report/execution/paths.cjs +0 -11
  324. package/dist/report/execution/paths.cjs.map +1 -1
  325. package/dist/report/execution/paths.d.cts +0 -1
  326. package/dist/report/execution/paths.d.mts +0 -1
  327. package/dist/report/execution/paths.d.ts +0 -1
  328. package/dist/report/execution/paths.js +6 -8
  329. package/dist/report/host/execute.cjs +13 -22
  330. package/dist/report/host/execute.cjs.map +1 -1
  331. package/dist/report/host/execute.d.cts +1 -4
  332. package/dist/report/host/execute.d.mts +1 -4
  333. package/dist/report/host/execute.d.ts +1 -4
  334. package/dist/report/host/from-record.cjs +3 -0
  335. package/dist/report/host/from-record.cjs.map +1 -1
  336. package/dist/report/host/from-record.d.cts +4 -1
  337. package/dist/report/host/from-record.d.mts +4 -1
  338. package/dist/report/host/from-record.d.ts +4 -1
  339. package/dist/report/host/site-assets.cjs +1 -2
  340. package/dist/report/host/site-assets.cjs.map +1 -1
  341. package/dist/report/host/site-assets.d.cts +0 -1
  342. package/dist/report/host/site-assets.d.mts +0 -1
  343. package/dist/report/host/site-assets.d.ts +0 -1
  344. package/dist/report/host/site-assets.js +2 -4
  345. package/dist/report/host/static.cjs +71 -346
  346. package/dist/report/host/static.cjs.map +1 -1
  347. package/dist/report/host/static.d.cts +1 -3
  348. package/dist/report/host/static.d.mts +1 -3
  349. package/dist/report/host/static.d.ts +1 -3
  350. package/dist/report/host/static.js +2 -2
  351. package/dist/report/host/view-session.cjs.map +1 -1
  352. package/dist/report/host/view-session.d.cts +1 -1
  353. package/dist/report/host/view-session.d.mts +1 -1
  354. package/dist/report/host/view-session.d.ts +1 -1
  355. package/dist/report/model/locale.cjs +1 -1
  356. package/dist/report/model/locale.cjs.map +1 -1
  357. package/dist/report/model/locale.d.cts +1 -1
  358. package/dist/report/model/locale.d.mts +1 -1
  359. package/dist/report/model/locale.d.ts +1 -1
  360. package/dist/report/model/pricing.cjs +2 -2
  361. package/dist/report/model/pricing.cjs.map +1 -1
  362. package/dist/report/react/enhance.js +5 -5
  363. package/dist/report/react/styles.css +190 -24
  364. package/dist/runner/adoption.cjs +4 -7
  365. package/dist/runner/adoption.cjs.map +1 -1
  366. package/dist/runner/attempt-resources.cjs +60 -0
  367. package/dist/runner/attempt-resources.cjs.map +1 -0
  368. package/dist/runner/attempt-resources.d.cts +13 -0
  369. package/dist/runner/attempt-resources.d.mts +13 -0
  370. package/dist/runner/attempt-resources.d.ts +13 -0
  371. package/dist/runner/attempt-resources.js +6 -0
  372. package/dist/runner/attempt-resources.js.map +1 -0
  373. package/dist/runner/attempt.cjs +37 -3
  374. package/dist/runner/attempt.cjs.map +1 -1
  375. package/dist/runner/feedback/failure.cjs +77 -2
  376. package/dist/runner/feedback/failure.cjs.map +1 -1
  377. package/dist/runner/feedback/failure.d.cts +2 -1
  378. package/dist/runner/feedback/failure.d.mts +2 -1
  379. package/dist/runner/feedback/failure.d.ts +2 -1
  380. package/dist/runner/project-current.cjs +2 -13
  381. package/dist/runner/project-current.cjs.map +1 -1
  382. package/dist/runner/project-current.d.cts +4 -2
  383. package/dist/runner/project-current.d.mts +4 -2
  384. package/dist/runner/project-current.d.ts +4 -2
  385. package/dist/runner/reporters/braintrust.cjs +7 -7
  386. package/dist/runner/reporters/braintrust.cjs.map +1 -1
  387. package/dist/runner/reuse-readback.cjs +3 -4
  388. package/dist/runner/reuse-readback.cjs.map +1 -1
  389. package/dist/runner/run.cjs +5 -2
  390. package/dist/runner/run.cjs.map +1 -1
  391. package/dist/sandbox/backend.cjs +32 -2
  392. package/dist/sandbox/backend.cjs.map +1 -1
  393. package/dist/sandbox/backend.d.cts +12 -1
  394. package/dist/sandbox/backend.d.mts +12 -1
  395. package/dist/sandbox/backend.d.ts +12 -1
  396. package/dist/sandbox/backend.js +28 -22
  397. package/dist/sandbox/docker.cjs +140 -0
  398. package/dist/sandbox/docker.cjs.map +1 -1
  399. package/dist/sandbox/docker.d.cts +3 -1
  400. package/dist/sandbox/docker.d.mts +3 -1
  401. package/dist/sandbox/docker.d.ts +3 -1
  402. package/dist/sandbox/e2b.cjs +42 -0
  403. package/dist/sandbox/e2b.cjs.map +1 -1
  404. package/dist/sandbox/e2b.d.cts +2 -0
  405. package/dist/sandbox/e2b.d.mts +2 -0
  406. package/dist/sandbox/e2b.d.ts +2 -0
  407. package/dist/sandbox/local.cjs +64 -0
  408. package/dist/sandbox/local.cjs.map +1 -1
  409. package/dist/sandbox/local.d.cts +3 -1
  410. package/dist/sandbox/local.d.mts +3 -1
  411. package/dist/sandbox/local.d.ts +3 -1
  412. package/dist/sandbox/managed-process.cjs +49 -0
  413. package/dist/sandbox/managed-process.cjs.map +1 -0
  414. package/dist/sandbox/managed-process.d.cts +11 -0
  415. package/dist/sandbox/managed-process.d.mts +11 -0
  416. package/dist/sandbox/managed-process.d.ts +11 -0
  417. package/dist/sandbox/managed-process.js +6 -0
  418. package/dist/sandbox/managed-process.js.map +1 -0
  419. package/dist/sandbox/types.cjs.map +1 -1
  420. package/dist/sandbox/types.d.cts +24 -0
  421. package/dist/sandbox/types.d.mts +24 -0
  422. package/dist/sandbox/types.d.ts +24 -0
  423. package/dist/sandbox/vercel.cjs +1 -0
  424. package/dist/sandbox/vercel.cjs.map +1 -1
  425. package/dist/sandbox/vercel.d.cts +1 -0
  426. package/dist/sandbox/vercel.d.mts +1 -0
  427. package/dist/sandbox/vercel.d.ts +1 -0
  428. package/dist/view/server.cjs +2 -37
  429. package/dist/view/server.cjs.map +1 -1
  430. package/dist/view/server.d.cts +0 -3
  431. package/dist/view/server.d.mts +0 -3
  432. package/dist/view/server.d.ts +0 -3
  433. package/docs-site/zh/reference/builtin-agents.mdx +7 -7
  434. package/docs-site/zh/reference/official-adapters.mdx +4 -4
  435. package/docs-site/zh/reference/report-components.mdx +2 -2
  436. package/docs-site/zh/tutorials/configuration.mdx +2 -2
  437. package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
  438. package/docs-site/zh/tutorials/publish-report.mdx +4 -4
  439. package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
  440. package/docs-site/zh/tutorials/theming.mdx +2 -2
  441. package/package.json +4 -6
  442. package/dist/record/migration/index.cjs +0 -5
  443. package/dist/record/migration/index.cjs.map +0 -1
  444. package/dist/record/migration/index.d.cts +0 -11
  445. package/dist/record/migration/index.d.mts +0 -11
  446. package/dist/record/migration/index.d.ts +0 -11
  447. package/dist/record/migration/index.js +0 -6
  448. package/dist/record/migration/index.js.map +0 -1
  449. package/dist/report/host/site-runtime.cjs +0 -92
  450. package/dist/report/host/site-runtime.cjs.map +0 -1
  451. package/dist/report/host/site-runtime.d.cts +0 -9
  452. package/dist/report/host/site-runtime.d.mts +0 -9
  453. package/dist/report/host/site-runtime.d.ts +0 -9
  454. package/dist/report/host/site-runtime.js +0 -10
  455. package/dist/report/host/site-runtime.js.map +0 -1
  456. package/dist/view/client-dist/app.css +0 -2
  457. package/dist/view/client-dist/app.js +0 -49
  458. package/dist/view/data.cjs +0 -3
  459. package/dist/view/data.cjs.map +0 -1
  460. package/dist/view/data.d.cts +0 -9
  461. package/dist/view/data.d.mts +0 -9
  462. package/dist/view/data.d.ts +0 -9
  463. package/dist/view/data.js +0 -4
  464. package/dist/view/data.js.map +0 -1
  465. package/dist/view/index.cjs +0 -24
  466. package/dist/view/index.cjs.map +0 -1
  467. package/dist/view/index.d.cts +0 -9
  468. package/dist/view/index.d.mts +0 -9
  469. package/dist/view/index.d.ts +0 -9
  470. package/dist/view/index.js +0 -28
  471. package/dist/view/index.js.map +0 -1
  472. package/dist/view/report-view-cache.cjs +0 -200
  473. package/dist/view/report-view-cache.cjs.map +0 -1
  474. package/dist/view/report-view-cache.d.cts +0 -67
  475. package/dist/view/report-view-cache.d.mts +0 -67
  476. package/dist/view/report-view-cache.d.ts +0 -67
  477. package/dist/view/report-view-cache.js +0 -8
  478. package/dist/view/report-view-cache.js.map +0 -1
  479. package/dist/view/shared/types.cjs +0 -3
  480. package/dist/view/shared/types.cjs.map +0 -1
  481. package/dist/view/shared/types.d.cts +0 -51
  482. package/dist/view/shared/types.d.mts +0 -51
  483. package/dist/view/shared/types.d.ts +0 -51
  484. package/dist/view/shared/types.js +0 -4
  485. package/dist/view/shared/types.js.map +0 -1
  486. package/dist/view/site.cjs +0 -32
  487. package/dist/view/site.cjs.map +0 -1
  488. package/dist/view/site.d.cts +0 -24
  489. package/dist/view/site.d.mts +0 -24
  490. package/dist/view/site.d.ts +0 -24
  491. package/dist/view/site.js +0 -8
  492. package/dist/view/site.js.map +0 -1
  493. package/dist/view/styles.css +0 -170
  494. package/dist/view/template.html +0 -17
@@ -25,42 +25,40 @@ const __niceevalExport10 = __niceevalCanonical["RECORD_FORMAT_ID_BRAND"];
25
25
  export { __niceevalExport10 as RECORD_FORMAT_ID_BRAND };
26
26
  const __niceevalExport11 = __niceevalCanonical["RECORD_ID_BRAND"];
27
27
  export { __niceevalExport11 as RECORD_ID_BRAND };
28
- const __niceevalExport12 = __niceevalCanonical["RECORD_SCHEMA_VERSION"];
29
- export { __niceevalExport12 as RECORD_SCHEMA_VERSION };
30
- const __niceevalExport13 = __niceevalCanonical["RUN_ID_BRAND"];
31
- export { __niceevalExport13 as RUN_ID_BRAND };
32
- const __niceevalExport14 = __niceevalCanonical["SHA256_DIGEST_BRAND"];
33
- export { __niceevalExport14 as SHA256_DIGEST_BRAND };
34
- const __niceevalExport15 = __niceevalCanonical["SLOT_ID_BRAND"];
35
- export { __niceevalExport15 as SLOT_ID_BRAND };
36
- const __niceevalExport16 = __niceevalCanonical["SOURCE_ITEM_ID_BRAND"];
37
- export { __niceevalExport16 as SOURCE_ITEM_ID_BRAND };
38
- const __niceevalExport17 = __niceevalCanonical["UTC_MILLIS_BRAND"];
39
- export { __niceevalExport17 as UTC_MILLIS_BRAND };
40
- const __niceevalExport18 = __niceevalCanonical["compareCanonicalIdentity"];
41
- export { __niceevalExport18 as compareCanonicalIdentity };
42
- const __niceevalExport19 = __niceevalCanonical["isCanonicalProjectRelativePath"];
43
- export { __niceevalExport19 as isCanonicalProjectRelativePath };
44
- const __niceevalExport20 = __niceevalCanonical["isNiceEvalRecordAttachmentName"];
45
- export { __niceevalExport20 as isNiceEvalRecordAttachmentName };
46
- const __niceevalExport21 = __niceevalCanonical["isPortableSegment"];
47
- export { __niceevalExport21 as isPortableSegment };
48
- const __niceevalExport22 = __niceevalCanonical["isRecordAttachmentName"];
49
- export { __niceevalExport22 as isRecordAttachmentName };
50
- const __niceevalExport23 = __niceevalCanonical["isRecordAttachmentSchemaId"];
51
- export { __niceevalExport23 as isRecordAttachmentSchemaId };
52
- const __niceevalExport24 = __niceevalCanonical["isRecordDomainIdentity"];
53
- export { __niceevalExport24 as isRecordDomainIdentity };
54
- const __niceevalExport25 = __niceevalCanonical["isRecordFormat"];
55
- export { __niceevalExport25 as isRecordFormat };
56
- const __niceevalExport26 = __niceevalCanonical["isRecordFormatId"];
57
- export { __niceevalExport26 as isRecordFormatId };
58
- const __niceevalExport27 = __niceevalCanonical["isSha256Digest"];
59
- export { __niceevalExport27 as isSha256Digest };
60
- const __niceevalExport28 = __niceevalCanonical["isUtcMillis"];
61
- export { __niceevalExport28 as isUtcMillis };
62
- const __niceevalExport29 = __niceevalCanonical["parseRecordAttachmentSchemaId"];
63
- export { __niceevalExport29 as parseRecordAttachmentSchemaId };
64
- const __niceevalExport30 = __niceevalCanonical["recordAttachmentNameTextOfSchemaId"];
65
- export { __niceevalExport30 as recordAttachmentNameTextOfSchemaId };
28
+ const __niceevalExport12 = __niceevalCanonical["RUN_ID_BRAND"];
29
+ export { __niceevalExport12 as RUN_ID_BRAND };
30
+ const __niceevalExport13 = __niceevalCanonical["SHA256_DIGEST_BRAND"];
31
+ export { __niceevalExport13 as SHA256_DIGEST_BRAND };
32
+ const __niceevalExport14 = __niceevalCanonical["SLOT_ID_BRAND"];
33
+ export { __niceevalExport14 as SLOT_ID_BRAND };
34
+ const __niceevalExport15 = __niceevalCanonical["SOURCE_ITEM_ID_BRAND"];
35
+ export { __niceevalExport15 as SOURCE_ITEM_ID_BRAND };
36
+ const __niceevalExport16 = __niceevalCanonical["UTC_MILLIS_BRAND"];
37
+ export { __niceevalExport16 as UTC_MILLIS_BRAND };
38
+ const __niceevalExport17 = __niceevalCanonical["compareCanonicalIdentity"];
39
+ export { __niceevalExport17 as compareCanonicalIdentity };
40
+ const __niceevalExport18 = __niceevalCanonical["isCanonicalProjectRelativePath"];
41
+ export { __niceevalExport18 as isCanonicalProjectRelativePath };
42
+ const __niceevalExport19 = __niceevalCanonical["isNiceEvalRecordAttachmentName"];
43
+ export { __niceevalExport19 as isNiceEvalRecordAttachmentName };
44
+ const __niceevalExport20 = __niceevalCanonical["isPortableSegment"];
45
+ export { __niceevalExport20 as isPortableSegment };
46
+ const __niceevalExport21 = __niceevalCanonical["isRecordAttachmentName"];
47
+ export { __niceevalExport21 as isRecordAttachmentName };
48
+ const __niceevalExport22 = __niceevalCanonical["isRecordAttachmentSchemaId"];
49
+ export { __niceevalExport22 as isRecordAttachmentSchemaId };
50
+ const __niceevalExport23 = __niceevalCanonical["isRecordDomainIdentity"];
51
+ export { __niceevalExport23 as isRecordDomainIdentity };
52
+ const __niceevalExport24 = __niceevalCanonical["isRecordFormat"];
53
+ export { __niceevalExport24 as isRecordFormat };
54
+ const __niceevalExport25 = __niceevalCanonical["isRecordFormatId"];
55
+ export { __niceevalExport25 as isRecordFormatId };
56
+ const __niceevalExport26 = __niceevalCanonical["isSha256Digest"];
57
+ export { __niceevalExport26 as isSha256Digest };
58
+ const __niceevalExport27 = __niceevalCanonical["isUtcMillis"];
59
+ export { __niceevalExport27 as isUtcMillis };
60
+ const __niceevalExport28 = __niceevalCanonical["parseRecordAttachmentSchemaId"];
61
+ export { __niceevalExport28 as parseRecordAttachmentSchemaId };
62
+ const __niceevalExport29 = __niceevalCanonical["recordAttachmentNameTextOfSchemaId"];
63
+ export { __niceevalExport29 as recordAttachmentNameTextOfSchemaId };
66
64
  //# sourceMappingURL=identifiers.js.map
@@ -25,66 +25,64 @@ const __niceevalExport10 = __niceevalCanonical["RECORD_FORMAT_ID_BRAND"];
25
25
  export { __niceevalExport10 as RECORD_FORMAT_ID_BRAND };
26
26
  const __niceevalExport11 = __niceevalCanonical["RECORD_ID_BRAND"];
27
27
  export { __niceevalExport11 as RECORD_ID_BRAND };
28
- const __niceevalExport12 = __niceevalCanonical["RECORD_SCHEMA_VERSION"];
29
- export { __niceevalExport12 as RECORD_SCHEMA_VERSION };
30
- const __niceevalExport13 = __niceevalCanonical["RUN_ID_BRAND"];
31
- export { __niceevalExport13 as RUN_ID_BRAND };
32
- const __niceevalExport14 = __niceevalCanonical["RunContextLimits"];
33
- export { __niceevalExport14 as RunContextLimits };
34
- const __niceevalExport15 = __niceevalCanonical["RunContextSchema"];
35
- export { __niceevalExport15 as RunContextSchema };
36
- const __niceevalExport16 = __niceevalCanonical["SHA256_DIGEST_BRAND"];
37
- export { __niceevalExport16 as SHA256_DIGEST_BRAND };
38
- const __niceevalExport17 = __niceevalCanonical["SLOT_ID_BRAND"];
39
- export { __niceevalExport17 as SLOT_ID_BRAND };
40
- const __niceevalExport18 = __niceevalCanonical["SOURCE_ITEM_ID_BRAND"];
41
- export { __niceevalExport18 as SOURCE_ITEM_ID_BRAND };
42
- const __niceevalExport19 = __niceevalCanonical["UTC_MILLIS_BRAND"];
43
- export { __niceevalExport19 as UTC_MILLIS_BRAND };
44
- const __niceevalExport20 = __niceevalCanonical["canonicalizeRunContext"];
45
- export { __niceevalExport20 as canonicalizeRunContext };
46
- const __niceevalExport21 = __niceevalCanonical["compareCanonicalIdentity"];
47
- export { __niceevalExport21 as compareCanonicalIdentity };
48
- const __niceevalExport22 = __niceevalCanonical["isCanonicalProjectRelativePath"];
49
- export { __niceevalExport22 as isCanonicalProjectRelativePath };
50
- const __niceevalExport23 = __niceevalCanonical["isNiceEvalRecordAttachmentName"];
51
- export { __niceevalExport23 as isNiceEvalRecordAttachmentName };
52
- const __niceevalExport24 = __niceevalCanonical["isPortableSegment"];
53
- export { __niceevalExport24 as isPortableSegment };
54
- const __niceevalExport25 = __niceevalCanonical["isRecordAttachmentName"];
55
- export { __niceevalExport25 as isRecordAttachmentName };
56
- const __niceevalExport26 = __niceevalCanonical["isRecordAttachmentSchemaId"];
57
- export { __niceevalExport26 as isRecordAttachmentSchemaId };
58
- const __niceevalExport27 = __niceevalCanonical["isRecordDomainIdentity"];
59
- export { __niceevalExport27 as isRecordDomainIdentity };
60
- const __niceevalExport28 = __niceevalCanonical["isRecordFormat"];
61
- export { __niceevalExport28 as isRecordFormat };
62
- const __niceevalExport29 = __niceevalCanonical["isRecordFormatId"];
63
- export { __niceevalExport29 as isRecordFormatId };
64
- const __niceevalExport30 = __niceevalCanonical["isSha256Digest"];
65
- export { __niceevalExport30 as isSha256Digest };
66
- const __niceevalExport31 = __niceevalCanonical["isUtcMillis"];
67
- export { __niceevalExport31 as isUtcMillis };
68
- const __niceevalExport32 = __niceevalCanonical["nonEmptyRecordIssues"];
69
- export { __niceevalExport32 as nonEmptyRecordIssues };
70
- const __niceevalExport33 = __niceevalCanonical["parseRecordAttachmentSchemaId"];
71
- export { __niceevalExport33 as parseRecordAttachmentSchemaId };
72
- const __niceevalExport34 = __niceevalCanonical["recordAttachmentNameTextOfSchemaId"];
73
- export { __niceevalExport34 as recordAttachmentNameTextOfSchemaId };
74
- const __niceevalExport35 = __niceevalCanonical["recordAttemptReferenceKey"];
75
- export { __niceevalExport35 as recordAttemptReferenceKey };
76
- const __niceevalExport36 = __niceevalCanonical["runContextCanonicalJson"];
77
- export { __niceevalExport36 as runContextCanonicalJson };
78
- const __niceevalExport37 = __niceevalCanonical["validateAttemptDocument"];
79
- export { __niceevalExport37 as validateAttemptDocument };
80
- const __niceevalExport38 = __niceevalCanonical["validateExpectedSlots"];
81
- export { __niceevalExport38 as validateExpectedSlots };
82
- const __niceevalExport39 = __niceevalCanonical["validateMemberDocument"];
83
- export { __niceevalExport39 as validateMemberDocument };
84
- const __niceevalExport40 = __niceevalCanonical["validateRecordCore"];
85
- export { __niceevalExport40 as validateRecordCore };
86
- const __niceevalExport41 = __niceevalCanonical["validateRunContext"];
87
- export { __niceevalExport41 as validateRunContext };
88
- const __niceevalExport42 = __niceevalCanonical["validateRunDocument"];
89
- export { __niceevalExport42 as validateRunDocument };
28
+ const __niceevalExport12 = __niceevalCanonical["RUN_ID_BRAND"];
29
+ export { __niceevalExport12 as RUN_ID_BRAND };
30
+ const __niceevalExport13 = __niceevalCanonical["RunContextLimits"];
31
+ export { __niceevalExport13 as RunContextLimits };
32
+ const __niceevalExport14 = __niceevalCanonical["RunContextSchema"];
33
+ export { __niceevalExport14 as RunContextSchema };
34
+ const __niceevalExport15 = __niceevalCanonical["SHA256_DIGEST_BRAND"];
35
+ export { __niceevalExport15 as SHA256_DIGEST_BRAND };
36
+ const __niceevalExport16 = __niceevalCanonical["SLOT_ID_BRAND"];
37
+ export { __niceevalExport16 as SLOT_ID_BRAND };
38
+ const __niceevalExport17 = __niceevalCanonical["SOURCE_ITEM_ID_BRAND"];
39
+ export { __niceevalExport17 as SOURCE_ITEM_ID_BRAND };
40
+ const __niceevalExport18 = __niceevalCanonical["UTC_MILLIS_BRAND"];
41
+ export { __niceevalExport18 as UTC_MILLIS_BRAND };
42
+ const __niceevalExport19 = __niceevalCanonical["canonicalizeRunContext"];
43
+ export { __niceevalExport19 as canonicalizeRunContext };
44
+ const __niceevalExport20 = __niceevalCanonical["compareCanonicalIdentity"];
45
+ export { __niceevalExport20 as compareCanonicalIdentity };
46
+ const __niceevalExport21 = __niceevalCanonical["isCanonicalProjectRelativePath"];
47
+ export { __niceevalExport21 as isCanonicalProjectRelativePath };
48
+ const __niceevalExport22 = __niceevalCanonical["isNiceEvalRecordAttachmentName"];
49
+ export { __niceevalExport22 as isNiceEvalRecordAttachmentName };
50
+ const __niceevalExport23 = __niceevalCanonical["isPortableSegment"];
51
+ export { __niceevalExport23 as isPortableSegment };
52
+ const __niceevalExport24 = __niceevalCanonical["isRecordAttachmentName"];
53
+ export { __niceevalExport24 as isRecordAttachmentName };
54
+ const __niceevalExport25 = __niceevalCanonical["isRecordAttachmentSchemaId"];
55
+ export { __niceevalExport25 as isRecordAttachmentSchemaId };
56
+ const __niceevalExport26 = __niceevalCanonical["isRecordDomainIdentity"];
57
+ export { __niceevalExport26 as isRecordDomainIdentity };
58
+ const __niceevalExport27 = __niceevalCanonical["isRecordFormat"];
59
+ export { __niceevalExport27 as isRecordFormat };
60
+ const __niceevalExport28 = __niceevalCanonical["isRecordFormatId"];
61
+ export { __niceevalExport28 as isRecordFormatId };
62
+ const __niceevalExport29 = __niceevalCanonical["isSha256Digest"];
63
+ export { __niceevalExport29 as isSha256Digest };
64
+ const __niceevalExport30 = __niceevalCanonical["isUtcMillis"];
65
+ export { __niceevalExport30 as isUtcMillis };
66
+ const __niceevalExport31 = __niceevalCanonical["nonEmptyRecordIssues"];
67
+ export { __niceevalExport31 as nonEmptyRecordIssues };
68
+ const __niceevalExport32 = __niceevalCanonical["parseRecordAttachmentSchemaId"];
69
+ export { __niceevalExport32 as parseRecordAttachmentSchemaId };
70
+ const __niceevalExport33 = __niceevalCanonical["recordAttachmentNameTextOfSchemaId"];
71
+ export { __niceevalExport33 as recordAttachmentNameTextOfSchemaId };
72
+ const __niceevalExport34 = __niceevalCanonical["recordAttemptReferenceKey"];
73
+ export { __niceevalExport34 as recordAttemptReferenceKey };
74
+ const __niceevalExport35 = __niceevalCanonical["runContextCanonicalJson"];
75
+ export { __niceevalExport35 as runContextCanonicalJson };
76
+ const __niceevalExport36 = __niceevalCanonical["validateAttemptDocument"];
77
+ export { __niceevalExport36 as validateAttemptDocument };
78
+ const __niceevalExport37 = __niceevalCanonical["validateExpectedSlots"];
79
+ export { __niceevalExport37 as validateExpectedSlots };
80
+ const __niceevalExport38 = __niceevalCanonical["validateMemberDocument"];
81
+ export { __niceevalExport38 as validateMemberDocument };
82
+ const __niceevalExport39 = __niceevalCanonical["validateRecordCore"];
83
+ export { __niceevalExport39 as validateRecordCore };
84
+ const __niceevalExport40 = __niceevalCanonical["validateRunContext"];
85
+ export { __niceevalExport40 as validateRunContext };
86
+ const __niceevalExport41 = __niceevalCanonical["validateRunDocument"];
87
+ export { __niceevalExport41 as validateRunDocument };
90
88
  //# sourceMappingURL=index.js.map
@@ -15,7 +15,7 @@ const services_ts_1 = require("./services.cjs");
15
15
  const DEFAULT_STREAM_CHUNK_BYTES = 64 * 1024;
16
16
  const GIT_MAX_OUTPUT_BYTES = 1024 * 1024;
17
17
  const GIT_MAX_STATUS_ENTRIES = 10000;
18
- const MIGRATION_SENTINEL_MAXIMUM_BYTES = 256;
18
+ const MIGRATION_SENTINEL_MAXIMUM_BYTES = 16 * 1024 * 1024;
19
19
  function nodeErrorCode(cause) {
20
20
  if (typeof cause !== "object" || cause === null) {
21
21
  return undefined;
@@ -491,6 +491,7 @@ const nodeFileSystem = {
491
491
  yield* syncDirectoryAt(parent);
492
492
  })),
493
493
  syncDirectory: (directory) => effect_1.Effect.flatMap(resolvePortablePath(directory, false), (path) => syncDirectoryAt(path)),
494
+ removeFile: (file) => effect_1.Effect.flatMap(resolvePortablePath(file, true), (path) => removeFileIfPresentAt(path, "remove-path")),
494
495
  createRunDirectory: ({ root, runId }) => effect_1.Effect.gen(function* () {
495
496
  yield* nodeFileSystem.ensureDirectory((0, services_ts_1.recordPortablePath)(root, "runs"));
496
497
  yield* nodeFileSystem.createDirectory((0, services_ts_1.recordPortablePath)(root, "runs", runId));
@@ -506,13 +507,13 @@ const nodeFileSystem = {
506
507
  maximumBytes: 0,
507
508
  }).pipe(effect_1.Effect.map((bytes) => bytes !== undefined && bytes.byteLength === 0), effect_1.Effect.catchTag("RecordResourceLimitExceeded", () => effect_1.Effect.succeed(false)), effect_1.Effect.catchTag("RecordPathTypeInvalid", () => effect_1.Effect.succeed(false))),
508
509
  migrationSentinelPresent: (root) => effect_1.Effect.map(nodeFileSystem.pathKind((0, services_ts_1.recordPortablePath)(root, "migration.in-progress")), (kind) => kind !== "missing"),
509
- createMigrationSentinel: (root, restoreCommit) => effect_1.Effect.uninterruptible(nodeFileSystem.writeFile({
510
+ createMigrationSentinel: (root, restoreCommit, expectedRelativePaths) => effect_1.Effect.uninterruptible(nodeFileSystem.writeFile({
510
511
  file: (0, services_ts_1.recordPortablePath)(root, "migration.in-progress"),
511
- bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit })}\n`),
512
+ bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit, expectedRelativePaths })}\n`),
512
513
  maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,
513
514
  mode: "exclusive",
514
515
  })),
515
- readMigrationSentinelRestoreCommit: (root) => effect_1.Effect.map(nodeFileSystem.readFile({
516
+ readMigrationSentinel: (root) => effect_1.Effect.map(nodeFileSystem.readFile({
516
517
  file: (0, services_ts_1.recordPortablePath)(root, "migration.in-progress"),
517
518
  maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,
518
519
  }), (bytes) => {
@@ -524,9 +525,18 @@ const nodeFileSystem = {
524
525
  return undefined;
525
526
  const keys = Object.keys(value);
526
527
  const restoreCommit = Reflect.get(value, "restoreCommit");
527
- return keys.length === 1 && typeof restoreCommit === "string" && /^[0-9a-f]{40,64}$/.test(restoreCommit)
528
- ? restoreCommit
529
- : undefined;
528
+ const expectedRelativePaths = Reflect.get(value, "expectedRelativePaths");
529
+ if (keys.length !== 2 ||
530
+ typeof restoreCommit !== "string" ||
531
+ !/^[0-9a-f]{40,64}$/.test(restoreCommit) ||
532
+ !Array.isArray(expectedRelativePaths) ||
533
+ expectedRelativePaths.some((path) => typeof path !== "string" || path.length === 0 || path.startsWith("/") ||
534
+ path.includes("\\") || path.split("/").some((segment) => segment.length === 0 || segment === "." || segment === "..")))
535
+ return undefined;
536
+ return Object.freeze({
537
+ restoreCommit,
538
+ expectedRelativePaths: Object.freeze([...expectedRelativePaths]),
539
+ });
530
540
  }
531
541
  catch {
532
542
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["node.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, open, opendir, rm, unlink, type FileHandle, } from \"node:fs/promises\";\nimport { constants, type Dir } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative, sep } from \"node:path\";\nimport { Either, Effect, Layer, Stream } from \"effect\";\nimport { NodeRecordCoordinationLive } from \"../../coordination/platform/node.ts\";\nimport { isPortableSegment } from \"../model/identifiers.ts\";\nimport { RecordGitCommandError, RecordIoError, RecordPathAlreadyExists, RecordPathInvalid, RecordPathTypeInvalid, RecordPermissionError, RecordResourceLimitExceeded, RecordResourceLimitInvalid, RecordRootInvalid, type RecordFileSystemError, type RecordGitError, type RecordPathKind, type RecordPlatformOperation, type RecordPlatformResource, } from \"./errors.ts\";\nimport { recordRootPaths } from \"./root.ts\";\nimport { RecordEntropy, RecordFileSystem, RecordGit, recordPortablePath, type RecordBackupState, type RecordDirectoryEntry, type RecordFileSystemService, type RecordIncompleteRunDelete, type RecordPortablePath, type RecordWriteFileStreamInput, } from \"./services.ts\";\nconst DEFAULT_STREAM_CHUNK_BYTES = 64 * 1024;\nconst GIT_MAX_OUTPUT_BYTES = 1024 * 1024;\nconst GIT_MAX_STATUS_ENTRIES = 10000;\nconst MIGRATION_SENTINEL_MAXIMUM_BYTES = 256;\nfunction nodeErrorCode(cause: unknown): string | undefined {\n if (typeof cause !== \"object\" || cause === null) {\n return undefined;\n }\n const code = Reflect.get(cause, \"code\");\n return typeof code === \"string\" ? code : undefined;\n}\nfunction nodeErrorMessage(cause: unknown): string {\n if (typeof cause !== \"object\" || cause === null) {\n return \"\";\n }\n const message = Reflect.get(cause, \"message\");\n return typeof message === \"string\" ? message : \"\";\n}\nfunction isPermissionError(cause: unknown): boolean {\n const code = nodeErrorCode(cause);\n return code === \"EACCES\" || code === \"EPERM\";\n}\nfunction isMissingError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"ENOENT\";\n}\nfunction isAlreadyExistsError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"EEXIST\";\n}\nfunction fileSystemError(operation: RecordPlatformOperation, path: string, cause: unknown): RecordIoError | RecordPermissionError {\n return isPermissionError(cause)\n ? new RecordPermissionError({\n code: \"record-permission-denied\",\n operation,\n path,\n cause,\n })\n : new RecordIoError({\n code: \"record-io-error\",\n operation,\n path,\n cause,\n });\n}\nfunction isFileSystemError(cause: unknown): cause is RecordFileSystemError {\n return (cause instanceof RecordRootInvalid ||\n cause instanceof RecordPathInvalid ||\n cause instanceof RecordPathTypeInvalid ||\n cause instanceof RecordPathAlreadyExists ||\n cause instanceof RecordResourceLimitInvalid ||\n cause instanceof RecordResourceLimitExceeded ||\n cause instanceof RecordIoError ||\n cause instanceof RecordPermissionError);\n}\nfunction isFiniteNonNegativeInteger(value: number): boolean {\n return Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\nfunction validateLimit(resource: RecordPlatformResource, maximum: number): Effect.Effect<void, RecordResourceLimitInvalid> {\n return isFiniteNonNegativeInteger(maximum)\n ? Effect.void\n : Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource,\n maximum,\n }));\n}\nfunction limitExceeded(resource: RecordPlatformResource, maximum: number, observedAtLeast: number, path: string): RecordResourceLimitExceeded {\n return new RecordResourceLimitExceeded({\n code: \"record-resource-limit-exceeded\",\n resource,\n maximum,\n observedAtLeast,\n path,\n });\n}\ntype PathResolutionError = RecordRootInvalid | RecordPathInvalid;\n/**\n * `recordPortablePath` is convenience data only. Every live call reaches this\n * function, so a copied or forged JS object cannot skip portable-segment\n * validation or escape the issued root.\n */\nfunction resolvePortablePath(path: RecordPortablePath, requireFilePath: boolean): Effect.Effect<string, PathResolutionError> {\n const candidate: unknown = path;\n if (typeof candidate !== \"object\" || candidate === null) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const root = Reflect.get(candidate, \"root\");\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const rawSegments = Reflect.get(candidate, \"segments\");\n if (!Array.isArray(rawSegments)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const segments: string[] = [];\n for (const segment of rawSegments) {\n if (typeof segment !== \"string\" || !isPortableSegment(segment)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments,\n }));\n }\n segments.push(segment);\n }\n if (requireFilePath && segments.length === 0) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"file-path-empty\",\n segments,\n }));\n }\n return Effect.succeed(join(paths.portableRoot, ...segments));\n}\n/**\n * Record must classify a symlink as `other` without following it. The platform\n * FileSystem service exposes following `stat` and names-only directory reads,\n * so this intentionally stays the narrow native no-follow adapter.\n */\nasync function nodePathKind(path: string): Promise<RecordPathKind> {\n try {\n const state = await lstat(path);\n if (state.isFile())\n return \"file\";\n if (state.isDirectory())\n return \"directory\";\n return \"other\";\n }\n catch (cause) {\n if (isMissingError(cause))\n return \"missing\";\n throw cause;\n }\n}\nfunction pathKindAt(path: string): Effect.Effect<RecordPathKind, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => nodePathKind(path),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n}\nfunction ensureDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n await mkdir(path, { recursive: true });\n },\n catch: (cause) => fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(path)), Effect.zipRight(dirname(path) === path ? Effect.void : syncDirectoryAt(dirname(path))));\n}\nfunction closeHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => handle.close(),\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.orDie);\n}\nfunction syncHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.sync(),\n catch: (cause) => fileSystemError(operation, path, cause),\n });\n}\nfunction syncDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n // Durable publication requires an explicit directory fsync. High-level\n // platform write helpers do not include this parent-directory commit step.\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"sync-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"sync-directory\", path)).pipe(Effect.flatMap((handle) => syncHandle(handle, \"sync-directory\", path))));\n}\nfunction createDirectoryAt(path: string): Effect.Effect<void, RecordFileSystemError> {\n return Effect.tryPromise({\n try: () => mkdir(path),\n catch: (cause) => isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nfunction writeFileHandle(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.writeFile(bytes),\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction openForWrite(path: string, mode: \"exclusive\" | \"replace\" | \"replace-no-follow\", portableRoot: string): Effect.Effect<FileHandle, RecordFileSystemError> {\n // `wx` + 0600 + fsync is Record's create-exclusive publication primitive;\n // do not replace it with a high-level write that weakens those guarantees.\n return Effect.tryPromise({\n try: async () => {\n if (mode !== \"replace-no-follow\") {\n return open(path, mode === \"exclusive\" ? \"wx\" : \"w\", 0o600);\n }\n const relativePath = relative(portableRoot, path);\n const segments = relativePath.split(sep);\n let current = portableRoot;\n const rootState = await lstat(current);\n if (!rootState.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: rootState.isFile() ? \"file\" : \"other\",\n });\n }\n for (const segment of segments.slice(0, -1)) {\n current = join(current, segment);\n const state = await lstat(current);\n if (!state.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: state.isFile() ? \"file\" : \"other\",\n });\n }\n }\n const expected = await lstat(path);\n if (!expected.isFile() || expected.nlink !== 1) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: expected.isDirectory() ? \"directory\" : \"other\",\n });\n }\n const handle = await open(path, constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);\n try {\n const actual = await handle.stat();\n if (!actual.isFile() || actual.nlink !== 1 ||\n actual.dev !== expected.dev || actual.ino !== expected.ino) {\n throw new Error(\"record replace target identity changed before write\");\n }\n await handle.truncate(0);\n return handle;\n }\n catch (cause) {\n await handle.close().catch(() => { });\n throw cause;\n }\n },\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : mode === \"exclusive\" && isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction writeBytesAt(input: {\n readonly path: string;\n readonly bytes: Uint8Array;\n readonly maximumBytes: number;\n readonly mode: \"exclusive\" | \"replace\" | \"replace-no-follow\";\n readonly portableRoot: string;\n}): Effect.Effect<void, RecordFileSystemError> {\n return Effect.gen(function* () {\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n if (input.bytes.byteLength > input.maximumBytes) {\n return yield* Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, input.bytes.byteLength, input.path));\n }\n const parent = dirname(input.path);\n yield* ensureDirectoryAt(parent);\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(input.path, input.mode, input.portableRoot), (handle) => closeHandle(handle, \"write-file\", input.path)).pipe(Effect.flatMap((handle) => writeFileHandle(handle, input.bytes, input.path).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", input.path))))));\n yield* syncDirectoryAt(parent);\n });\n}\nfunction writeChunk(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n let offset = 0;\n while (offset < bytes.byteLength) {\n const written = await handle.write(bytes, offset, bytes.byteLength - offset);\n if (written.bytesWritten === 0) {\n throw new Error(\"Node wrote zero bytes before the chunk was complete\");\n }\n offset += written.bytesWritten;\n }\n },\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nasync function* readChunks(handle: FileHandle, path: string, maximumBytes: number, chunkBytes: number): AsyncGenerator<Uint8Array, void, undefined> {\n let observed = 0;\n for (;;) {\n // A one-byte probe after the cap distinguishes exact-size data from an\n // over-limit file without materializing its remainder.\n const capacity = observed < maximumBytes\n ? Math.min(chunkBytes, maximumBytes - observed + 1)\n : 1;\n const chunk = new Uint8Array(capacity);\n const result = await handle.read(chunk, 0, chunk.byteLength, null);\n if (result.bytesRead === 0)\n return;\n observed += result.bytesRead;\n if (observed > maximumBytes) {\n throw limitExceeded(\"file-bytes\", maximumBytes, observed, path);\n }\n yield chunk.slice(0, result.bytesRead);\n }\n}\nfunction readStreamAt(path: string, maximumBytes: number, chunkBytes: number): Stream.Stream<Uint8Array, RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n return Stream.unwrapScoped(Effect.map(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"read-file\", path)), (handle) => Stream.fromAsyncIterable(readChunks(handle, path, maximumBytes, chunkBytes), (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"read-file\", path, cause))));\n}\nfunction concatChunks(chunks: readonly Uint8Array[]): Uint8Array {\n let length = 0;\n for (const chunk of chunks) {\n length += chunk.byteLength;\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return result;\n}\nfunction closeDirectory(directory: Dir, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => directory.close(),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n }).pipe(Effect.orDie);\n}\nasync function readDirectoryBounded(directory: Dir, maximumEntries: number, path: string): Promise<readonly RecordDirectoryEntry[]> {\n // Dirent classification preserves the same no-follow policy as lstat above;\n // the platform names-only directory API cannot supply these entry kinds.\n const entries: RecordDirectoryEntry[] = [];\n for (;;) {\n const entry = await directory.read();\n if (entry === null)\n break;\n if (entries.length === maximumEntries) {\n throw limitExceeded(\"directory-entries\", maximumEntries, maximumEntries + 1, path);\n }\n entries.push({\n name: entry.name,\n kind: entry.isFile()\n ? \"file\"\n : entry.isDirectory()\n ? \"directory\"\n : \"other\",\n });\n }\n entries.sort((left, right) => left.name === right.name ? 0 : left.name < right.name ? -1 : 1);\n return Object.freeze(entries);\n}\nfunction directoryEntriesAt(path: string, maximumEntries: number): Effect.Effect<readonly RecordDirectoryEntry[], RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => opendir(path),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (directory) => closeDirectory(directory, path)).pipe(Effect.flatMap((directory) => Effect.tryPromise({\n try: () => readDirectoryBounded(directory, maximumEntries, path),\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"list-directory\", path, cause),\n }))));\n}\nfunction removeFileIfPresentAt(path: string, operation: \"remove-path\"): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n try {\n await unlink(path);\n }\n catch (cause) {\n if (!isMissingError(cause))\n throw cause;\n }\n },\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nconst nodeFileSystem: RecordFileSystemService = {\n pathKind: (path) => Effect.flatMap(resolvePortablePath(path, false), (resolved) => pathKindAt(resolved)),\n ensureDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (resolved) => ensureDirectoryAt(resolved)),\n createDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, true), (resolved) => createDirectoryAt(resolved)),\n listDirectory: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.directory, false);\n yield* validateLimit(\"directory-entries\", input.maximumEntries);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return Object.freeze([]) as readonly RecordDirectoryEntry[];\n if (kind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"directory\",\n actual: kind,\n }));\n }\n return yield* directoryEntriesAt(path, input.maximumEntries);\n }),\n readFile: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return undefined;\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n const chunks = yield* Stream.runFold(readStreamAt(path, input.maximumBytes, DEFAULT_STREAM_CHUNK_BYTES), [] as readonly Uint8Array[], (all, chunk) => [...all, chunk]);\n return concatChunks(chunks);\n }),\n readFileStream: (input) => Stream.unwrap(Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const chunkBytes = input.chunkBytes ?? DEFAULT_STREAM_CHUNK_BYTES;\n yield* validateLimit(\"file-bytes\", chunkBytes);\n if (chunkBytes === 0) {\n return yield* Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource: \"file-bytes\",\n maximum: chunkBytes,\n }));\n }\n const kind = yield* pathKindAt(path);\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n return readStreamAt(path, input.maximumBytes, chunkBytes);\n })),\n writeFile: (input) => Effect.flatMap(resolvePortablePath(input.file, true), (path) => {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n return writeBytesAt({\n path,\n portableRoot: paths.portableRoot,\n bytes: input.bytes,\n maximumBytes: input.maximumBytes,\n mode: input.mode,\n });\n }),\n writeFileStream: <E, R>(input: RecordWriteFileStreamInput<E, R>): Effect.Effect<void, RecordFileSystemError | E, R> => Effect.flatMap(resolvePortablePath(input.file, true), (path) => Effect.gen(function* () {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const parent = dirname(path);\n yield* ensureDirectoryAt(parent);\n let written = 0;\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(path, input.mode, paths.portableRoot), (handle) => closeHandle(handle, \"write-file\", path)).pipe(Effect.flatMap((handle) => {\n const writeOne = (chunk: Uint8Array): Effect.Effect<void, RecordFileSystemError> => {\n const observedAtLeast = written + chunk.byteLength;\n if (observedAtLeast > input.maximumBytes) {\n return Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, observedAtLeast, path));\n }\n return writeChunk(handle, chunk, path).pipe(Effect.tap(() => Effect.sync(() => {\n written = observedAtLeast;\n })));\n };\n return Stream.runForEach(input.stream, writeOne).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", path)));\n })));\n yield* syncDirectoryAt(parent);\n })),\n syncDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (path) => syncDirectoryAt(path)),\n createRunDirectory: ({ root, runId }) => Effect.gen(function* () {\n yield* nodeFileSystem.ensureDirectory(recordPortablePath(root, \"runs\"));\n yield* nodeFileSystem.createDirectory(recordPortablePath(root, \"runs\", runId));\n }),\n createCompleteMarker: ({ root, runId }) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n bytes: new Uint8Array(),\n maximumBytes: 0,\n mode: \"exclusive\",\n })),\n isCompleteMarker: ({ root, runId }) => nodeFileSystem.readFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n maximumBytes: 0,\n }).pipe(Effect.map((bytes) => bytes !== undefined && bytes.byteLength === 0), Effect.catchTag(\"RecordResourceLimitExceeded\", () => Effect.succeed(false)), Effect.catchTag(\"RecordPathTypeInvalid\", () => Effect.succeed(false))),\n migrationSentinelPresent: (root) => Effect.map(nodeFileSystem.pathKind(recordPortablePath(root, \"migration.in-progress\")), (kind) => kind !== \"missing\"),\n createMigrationSentinel: (root, restoreCommit) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit })}\\n`),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n mode: \"exclusive\",\n })),\n readMigrationSentinelRestoreCommit: (root) => Effect.map(nodeFileSystem.readFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n }), (bytes) => {\n if (bytes === undefined)\n return undefined;\n try {\n const value: unknown = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return undefined;\n const keys = Object.keys(value);\n const restoreCommit = Reflect.get(value, \"restoreCommit\");\n return keys.length === 1 && typeof restoreCommit === \"string\" && /^[0-9a-f]{40,64}$/.test(restoreCommit)\n ? restoreCommit\n : undefined;\n }\n catch {\n return undefined;\n }\n }),\n removeMigrationSentinel: (root) => Effect.flatMap(resolvePortablePath(recordPortablePath(root, \"migration.in-progress\"), true), (path) => removeFileIfPresentAt(path, \"remove-path\")),\n deleteIncompleteRun: ({ root, runId }) => Effect.gen(function* () {\n const runPath = yield* resolvePortablePath(recordPortablePath(root, \"runs\", runId), true);\n const runKind = yield* pathKindAt(runPath);\n if (runKind === \"missing\") {\n return { state: \"missing\" } satisfies RecordIncompleteRunDelete;\n }\n if (runKind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: runPath,\n expected: \"directory\",\n actual: runKind,\n }));\n }\n if (yield* nodeFileSystem.isCompleteMarker({ root, runId })) {\n return { state: \"skipped-complete\" } satisfies RecordIncompleteRunDelete;\n }\n yield* Effect.tryPromise({\n try: () => rm(runPath, { recursive: true, force: true }),\n catch: (cause) => fileSystemError(\"remove-path\", runPath, cause),\n });\n yield* syncDirectoryAt(dirname(runPath));\n return { state: \"deleted\" } satisfies RecordIncompleteRunDelete;\n }),\n};\ninterface GitOutput {\n readonly stdout: string;\n readonly stderr: string;\n}\nfunction executeGit(args: readonly string[], cwd: string, signal: AbortSignal): Promise<GitOutput> {\n // Keep the native adapter: Record requires one bounded collection covering\n // stdout and stderr, exact argv execution, and AbortSignal cancellation.\n // CommandExecutor has no single primitive with all of those guarantees.\n return new Promise((resolve, reject) => {\n execFile(\"git\", [...args], { cwd, encoding: \"utf8\", maxBuffer: GIT_MAX_OUTPUT_BYTES, signal }, (error, stdout, stderr) => {\n if (error !== null) {\n reject(error);\n return;\n }\n resolve({ stdout: String(stdout), stderr: String(stderr) });\n });\n });\n}\nfunction gitError(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", cause: unknown): RecordGitError {\n if (nodeErrorCode(cause) === \"ERR_CHILD_PROCESS_STDIO_MAXBUFFER\") {\n return limitExceeded(\"git-output\", GIT_MAX_OUTPUT_BYTES, GIT_MAX_OUTPUT_BYTES, \"git\");\n }\n return new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation,\n cause,\n });\n}\nfunction runGit(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", args: readonly string[], cwd: string): Effect.Effect<GitOutput, RecordGitError> {\n return Effect.tryPromise({\n try: (signal) => executeGit(args, cwd, signal),\n catch: (cause) => gitError(operation, cause),\n });\n}\nfunction isNotGitWorktree(error: RecordGitCommandError): boolean {\n const code = nodeErrorCode(error.cause);\n return code === \"ENOENT\" || nodeErrorMessage(error.cause).includes(\"not a git repository\");\n}\nfunction portablePathWithinWorktree(worktree: string, portableRoot: string): string | undefined {\n const rootRelative = relative(worktree, portableRoot);\n if (rootRelative === \"..\" ||\n rootRelative.startsWith(`..${sep}`) ||\n isAbsolute(rootRelative)) {\n return undefined;\n }\n return rootRelative === \"\" ? \".\" : rootRelative;\n}\ninterface GitStatusEntry {\n readonly status: string;\n readonly path: string;\n}\nfunction statusEntries(stdout: string): readonly GitStatusEntry[] {\n const records = stdout.split(\"\\0\").filter((entry) => entry !== \"\");\n const entries: GitStatusEntry[] = [];\n for (let index = 0; index < records.length; index += 1) {\n const record = records[index]!;\n const status = record.slice(0, 2);\n const path = record.length > 3 ? record.slice(3) : \"\";\n entries.push(Object.freeze({ status, path }));\n if (status.includes(\"R\") || status.includes(\"C\"))\n index += 1;\n }\n return Object.freeze(entries);\n}\nconst nodeGit = {\n inspectBackupState: (root: unknown): Effect.Effect<RecordBackupState, RecordGitError> => Effect.gen(function* () {\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location)) {\n if (location.left instanceof RecordGitCommandError &&\n isNotGitWorktree(location.left)) {\n return { state: \"not-git-worktree\" } satisfies RecordBackupState;\n }\n return yield* Effect.fail(location.left);\n }\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined) {\n return { state: \"root-outside-worktree\" } satisfies RecordBackupState;\n }\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n const commit = head.stdout.trim();\n if (commit === \"\") {\n return yield* Effect.fail(new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation: \"read-head\",\n cause: new Error(\"git returned an empty HEAD\"),\n }));\n }\n const status = yield* runGit(\"inspect-status\", [\n \"status\",\n \"--porcelain=v1\",\n \"-z\",\n \"--ignored\",\n \"--untracked-files=all\",\n \"--\",\n rootRelative,\n ], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length > GIT_MAX_STATUS_ENTRIES) {\n return yield* Effect.fail(limitExceeded(\"git-output\", GIT_MAX_STATUS_ENTRIES, GIT_MAX_STATUS_ENTRIES + 1, \"git status\"));\n }\n return entries.length === 0\n ? ({ state: \"git-restore-point\", commit } satisfies RecordBackupState)\n : ({\n state: \"portable-root-dirty\",\n entries: Object.freeze(entries.map((entry) => `${entry.status} ${entry.path}`)),\n } satisfies RecordBackupState);\n }),\n recoveryChangesAreExpected: (input: {\n readonly root: unknown;\n readonly restoreCommit: string;\n readonly expectedPaths: readonly RecordPortablePath[];\n }): Effect.Effect<boolean, RecordGitError | RecordFileSystemError> => Effect.gen(function* () {\n const paths = recordRootPaths(input.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location))\n return false;\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined)\n return false;\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n if (head.stdout.trim() !== input.restoreCommit)\n return false;\n const expected = new Set<string>();\n for (const path of input.expectedPaths) {\n const resolved = yield* resolvePortablePath(path, true);\n const relativePath = portablePathWithinWorktree(worktree, resolved);\n if (relativePath === undefined)\n return false;\n expected.add(relativePath.split(sep).join(\"/\"));\n }\n const status = yield* runGit(\"inspect-status\", [\"status\", \"--porcelain=v1\", \"-z\", \"--ignored\", \"--untracked-files=all\", \"--\", rootRelative], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length === 0 || entries.length > GIT_MAX_STATUS_ENTRIES)\n return false;\n return entries.every((entry) => {\n const normalized = entry.path.split(sep).join(\"/\");\n if (!expected.has(normalized))\n return false;\n return normalized.endsWith(\"/migration.in-progress\")\n ? entry.status === \"??\" || entry.status === \"!!\"\n : entry.status === \" M\";\n });\n }),\n};\nexport const NodeRecordFileSystemLive = Layer.succeed(RecordFileSystem, nodeFileSystem);\nexport const NodeRecordEntropyLive = Layer.succeed(RecordEntropy, {\n uuid: Effect.sync(randomUUID),\n});\nexport const NodeRecordGitLive = Layer.succeed(RecordGit, nodeGit);\n/**\n * Convenience composition for an application boundary. Consumers still name\n * only the Tags they need in their own Effect requirements.\n */\nexport const NodeRecordLive = Layer.mergeAll(NodeRecordFileSystemLive, NodeRecordCoordinationLive, NodeRecordEntropyLive, NodeRecordGitLive);\n"]}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["node.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, open, opendir, rm, unlink, type FileHandle, } from \"node:fs/promises\";\nimport { constants, type Dir } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative, sep } from \"node:path\";\nimport { Either, Effect, Layer, Stream } from \"effect\";\nimport { NodeRecordCoordinationLive } from \"../../coordination/platform/node.ts\";\nimport { isPortableSegment } from \"../model/identifiers.ts\";\nimport { RecordGitCommandError, RecordIoError, RecordPathAlreadyExists, RecordPathInvalid, RecordPathTypeInvalid, RecordPermissionError, RecordResourceLimitExceeded, RecordResourceLimitInvalid, RecordRootInvalid, type RecordFileSystemError, type RecordGitError, type RecordPathKind, type RecordPlatformOperation, type RecordPlatformResource, } from \"./errors.ts\";\nimport { recordRootPaths } from \"./root.ts\";\nimport { RecordEntropy, RecordFileSystem, RecordGit, recordPortablePath, type RecordBackupState, type RecordDirectoryEntry, type RecordFileSystemService, type RecordIncompleteRunDelete, type RecordPortablePath, type RecordWriteFileStreamInput, } from \"./services.ts\";\nconst DEFAULT_STREAM_CHUNK_BYTES = 64 * 1024;\nconst GIT_MAX_OUTPUT_BYTES = 1024 * 1024;\nconst GIT_MAX_STATUS_ENTRIES = 10000;\nconst MIGRATION_SENTINEL_MAXIMUM_BYTES = 16 * 1024 * 1024;\nfunction nodeErrorCode(cause: unknown): string | undefined {\n if (typeof cause !== \"object\" || cause === null) {\n return undefined;\n }\n const code = Reflect.get(cause, \"code\");\n return typeof code === \"string\" ? code : undefined;\n}\nfunction nodeErrorMessage(cause: unknown): string {\n if (typeof cause !== \"object\" || cause === null) {\n return \"\";\n }\n const message = Reflect.get(cause, \"message\");\n return typeof message === \"string\" ? message : \"\";\n}\nfunction isPermissionError(cause: unknown): boolean {\n const code = nodeErrorCode(cause);\n return code === \"EACCES\" || code === \"EPERM\";\n}\nfunction isMissingError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"ENOENT\";\n}\nfunction isAlreadyExistsError(cause: unknown): boolean {\n return nodeErrorCode(cause) === \"EEXIST\";\n}\nfunction fileSystemError(operation: RecordPlatformOperation, path: string, cause: unknown): RecordIoError | RecordPermissionError {\n return isPermissionError(cause)\n ? new RecordPermissionError({\n code: \"record-permission-denied\",\n operation,\n path,\n cause,\n })\n : new RecordIoError({\n code: \"record-io-error\",\n operation,\n path,\n cause,\n });\n}\nfunction isFileSystemError(cause: unknown): cause is RecordFileSystemError {\n return (cause instanceof RecordRootInvalid ||\n cause instanceof RecordPathInvalid ||\n cause instanceof RecordPathTypeInvalid ||\n cause instanceof RecordPathAlreadyExists ||\n cause instanceof RecordResourceLimitInvalid ||\n cause instanceof RecordResourceLimitExceeded ||\n cause instanceof RecordIoError ||\n cause instanceof RecordPermissionError);\n}\nfunction isFiniteNonNegativeInteger(value: number): boolean {\n return Number.isFinite(value) && Number.isInteger(value) && value >= 0;\n}\nfunction validateLimit(resource: RecordPlatformResource, maximum: number): Effect.Effect<void, RecordResourceLimitInvalid> {\n return isFiniteNonNegativeInteger(maximum)\n ? Effect.void\n : Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource,\n maximum,\n }));\n}\nfunction limitExceeded(resource: RecordPlatformResource, maximum: number, observedAtLeast: number, path: string): RecordResourceLimitExceeded {\n return new RecordResourceLimitExceeded({\n code: \"record-resource-limit-exceeded\",\n resource,\n maximum,\n observedAtLeast,\n path,\n });\n}\ntype PathResolutionError = RecordRootInvalid | RecordPathInvalid;\n/**\n * `recordPortablePath` is convenience data only. Every live call reaches this\n * function, so a copied or forged JS object cannot skip portable-segment\n * validation or escape the issued root.\n */\nfunction resolvePortablePath(path: RecordPortablePath, requireFilePath: boolean): Effect.Effect<string, PathResolutionError> {\n const candidate: unknown = path;\n if (typeof candidate !== \"object\" || candidate === null) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const root = Reflect.get(candidate, \"root\");\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const rawSegments = Reflect.get(candidate, \"segments\");\n if (!Array.isArray(rawSegments)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments: [],\n }));\n }\n const segments: string[] = [];\n for (const segment of rawSegments) {\n if (typeof segment !== \"string\" || !isPortableSegment(segment)) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"segment-invalid\",\n segments,\n }));\n }\n segments.push(segment);\n }\n if (requireFilePath && segments.length === 0) {\n return Effect.fail(new RecordPathInvalid({\n code: \"record-path-invalid\",\n reason: \"file-path-empty\",\n segments,\n }));\n }\n return Effect.succeed(join(paths.portableRoot, ...segments));\n}\n/**\n * Record must classify a symlink as `other` without following it. The platform\n * FileSystem service exposes following `stat` and names-only directory reads,\n * so this intentionally stays the narrow native no-follow adapter.\n */\nasync function nodePathKind(path: string): Promise<RecordPathKind> {\n try {\n const state = await lstat(path);\n if (state.isFile())\n return \"file\";\n if (state.isDirectory())\n return \"directory\";\n return \"other\";\n }\n catch (cause) {\n if (isMissingError(cause))\n return \"missing\";\n throw cause;\n }\n}\nfunction pathKindAt(path: string): Effect.Effect<RecordPathKind, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => nodePathKind(path),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n}\nfunction ensureDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n await mkdir(path, { recursive: true });\n },\n catch: (cause) => fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(path)), Effect.zipRight(dirname(path) === path ? Effect.void : syncDirectoryAt(dirname(path))));\n}\nfunction closeHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => handle.close(),\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.orDie);\n}\nfunction syncHandle(handle: FileHandle, operation: RecordPlatformOperation, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.sync(),\n catch: (cause) => fileSystemError(operation, path, cause),\n });\n}\nfunction syncDirectoryAt(path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n // Durable publication requires an explicit directory fsync. High-level\n // platform write helpers do not include this parent-directory commit step.\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"sync-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"sync-directory\", path)).pipe(Effect.flatMap((handle) => syncHandle(handle, \"sync-directory\", path))));\n}\nfunction createDirectoryAt(path: string): Effect.Effect<void, RecordFileSystemError> {\n return Effect.tryPromise({\n try: () => mkdir(path),\n catch: (cause) => isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"create-directory\", path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nfunction writeFileHandle(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: () => handle.writeFile(bytes),\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction openForWrite(path: string, mode: \"exclusive\" | \"replace\" | \"replace-no-follow\", portableRoot: string): Effect.Effect<FileHandle, RecordFileSystemError> {\n // `wx` + 0600 + fsync is Record's create-exclusive publication primitive;\n // do not replace it with a high-level write that weakens those guarantees.\n return Effect.tryPromise({\n try: async () => {\n if (mode !== \"replace-no-follow\") {\n return open(path, mode === \"exclusive\" ? \"wx\" : \"w\", 0o600);\n }\n const relativePath = relative(portableRoot, path);\n const segments = relativePath.split(sep);\n let current = portableRoot;\n const rootState = await lstat(current);\n if (!rootState.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: rootState.isFile() ? \"file\" : \"other\",\n });\n }\n for (const segment of segments.slice(0, -1)) {\n current = join(current, segment);\n const state = await lstat(current);\n if (!state.isDirectory()) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: current,\n expected: \"directory\",\n actual: state.isFile() ? \"file\" : \"other\",\n });\n }\n }\n const expected = await lstat(path);\n if (!expected.isFile() || expected.nlink !== 1) {\n throw new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: expected.isDirectory() ? \"directory\" : \"other\",\n });\n }\n const handle = await open(path, constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);\n try {\n const actual = await handle.stat();\n if (!actual.isFile() || actual.nlink !== 1 ||\n actual.dev !== expected.dev || actual.ino !== expected.ino) {\n throw new Error(\"record replace target identity changed before write\");\n }\n await handle.truncate(0);\n return handle;\n }\n catch (cause) {\n await handle.close().catch(() => { });\n throw cause;\n }\n },\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : mode === \"exclusive\" && isAlreadyExistsError(cause)\n ? new RecordPathAlreadyExists({\n code: \"record-path-already-exists\",\n path,\n })\n : fileSystemError(\"write-file\", path, cause),\n });\n}\nfunction writeBytesAt(input: {\n readonly path: string;\n readonly bytes: Uint8Array;\n readonly maximumBytes: number;\n readonly mode: \"exclusive\" | \"replace\" | \"replace-no-follow\";\n readonly portableRoot: string;\n}): Effect.Effect<void, RecordFileSystemError> {\n return Effect.gen(function* () {\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n if (input.bytes.byteLength > input.maximumBytes) {\n return yield* Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, input.bytes.byteLength, input.path));\n }\n const parent = dirname(input.path);\n yield* ensureDirectoryAt(parent);\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(input.path, input.mode, input.portableRoot), (handle) => closeHandle(handle, \"write-file\", input.path)).pipe(Effect.flatMap((handle) => writeFileHandle(handle, input.bytes, input.path).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", input.path))))));\n yield* syncDirectoryAt(parent);\n });\n}\nfunction writeChunk(handle: FileHandle, bytes: Uint8Array, path: string): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n let offset = 0;\n while (offset < bytes.byteLength) {\n const written = await handle.write(bytes, offset, bytes.byteLength - offset);\n if (written.bytesWritten === 0) {\n throw new Error(\"Node wrote zero bytes before the chunk was complete\");\n }\n offset += written.bytesWritten;\n }\n },\n catch: (cause) => fileSystemError(\"write-file\", path, cause),\n });\n}\nasync function* readChunks(handle: FileHandle, path: string, maximumBytes: number, chunkBytes: number): AsyncGenerator<Uint8Array, void, undefined> {\n let observed = 0;\n for (;;) {\n // A one-byte probe after the cap distinguishes exact-size data from an\n // over-limit file without materializing its remainder.\n const capacity = observed < maximumBytes\n ? Math.min(chunkBytes, maximumBytes - observed + 1)\n : 1;\n const chunk = new Uint8Array(capacity);\n const result = await handle.read(chunk, 0, chunk.byteLength, null);\n if (result.bytesRead === 0)\n return;\n observed += result.bytesRead;\n if (observed > maximumBytes) {\n throw limitExceeded(\"file-bytes\", maximumBytes, observed, path);\n }\n yield chunk.slice(0, result.bytesRead);\n }\n}\nfunction readStreamAt(path: string, maximumBytes: number, chunkBytes: number): Stream.Stream<Uint8Array, RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => open(path, \"r\"),\n catch: (cause) => fileSystemError(\"read-file\", path, cause),\n });\n return Stream.unwrapScoped(Effect.map(Effect.acquireRelease(acquire, (handle) => closeHandle(handle, \"read-file\", path)), (handle) => Stream.fromAsyncIterable(readChunks(handle, path, maximumBytes, chunkBytes), (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"read-file\", path, cause))));\n}\nfunction concatChunks(chunks: readonly Uint8Array[]): Uint8Array {\n let length = 0;\n for (const chunk of chunks) {\n length += chunk.byteLength;\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return result;\n}\nfunction closeDirectory(directory: Dir, path: string): Effect.Effect<void> {\n return Effect.tryPromise({\n try: () => directory.close(),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n }).pipe(Effect.orDie);\n}\nasync function readDirectoryBounded(directory: Dir, maximumEntries: number, path: string): Promise<readonly RecordDirectoryEntry[]> {\n // Dirent classification preserves the same no-follow policy as lstat above;\n // the platform names-only directory API cannot supply these entry kinds.\n const entries: RecordDirectoryEntry[] = [];\n for (;;) {\n const entry = await directory.read();\n if (entry === null)\n break;\n if (entries.length === maximumEntries) {\n throw limitExceeded(\"directory-entries\", maximumEntries, maximumEntries + 1, path);\n }\n entries.push({\n name: entry.name,\n kind: entry.isFile()\n ? \"file\"\n : entry.isDirectory()\n ? \"directory\"\n : \"other\",\n });\n }\n entries.sort((left, right) => left.name === right.name ? 0 : left.name < right.name ? -1 : 1);\n return Object.freeze(entries);\n}\nfunction directoryEntriesAt(path: string, maximumEntries: number): Effect.Effect<readonly RecordDirectoryEntry[], RecordFileSystemError> {\n const acquire = Effect.tryPromise({\n try: () => opendir(path),\n catch: (cause) => fileSystemError(\"list-directory\", path, cause),\n });\n return Effect.scoped(Effect.acquireRelease(acquire, (directory) => closeDirectory(directory, path)).pipe(Effect.flatMap((directory) => Effect.tryPromise({\n try: () => readDirectoryBounded(directory, maximumEntries, path),\n catch: (cause) => isFileSystemError(cause)\n ? cause\n : fileSystemError(\"list-directory\", path, cause),\n }))));\n}\nfunction removeFileIfPresentAt(path: string, operation: \"remove-path\"): Effect.Effect<void, RecordIoError | RecordPermissionError> {\n return Effect.tryPromise({\n try: async () => {\n try {\n await unlink(path);\n }\n catch (cause) {\n if (!isMissingError(cause))\n throw cause;\n }\n },\n catch: (cause) => fileSystemError(operation, path, cause),\n }).pipe(Effect.zipRight(syncDirectoryAt(dirname(path))));\n}\nconst nodeFileSystem: RecordFileSystemService = {\n pathKind: (path) => Effect.flatMap(resolvePortablePath(path, false), (resolved) => pathKindAt(resolved)),\n ensureDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (resolved) => ensureDirectoryAt(resolved)),\n createDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, true), (resolved) => createDirectoryAt(resolved)),\n listDirectory: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.directory, false);\n yield* validateLimit(\"directory-entries\", input.maximumEntries);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return Object.freeze([]) as readonly RecordDirectoryEntry[];\n if (kind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"directory\",\n actual: kind,\n }));\n }\n return yield* directoryEntriesAt(path, input.maximumEntries);\n }),\n readFile: (input) => Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const kind = yield* pathKindAt(path);\n if (kind === \"missing\")\n return undefined;\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n const chunks = yield* Stream.runFold(readStreamAt(path, input.maximumBytes, DEFAULT_STREAM_CHUNK_BYTES), [] as readonly Uint8Array[], (all, chunk) => [...all, chunk]);\n return concatChunks(chunks);\n }),\n readFileStream: (input) => Stream.unwrap(Effect.gen(function* () {\n const path = yield* resolvePortablePath(input.file, true);\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const chunkBytes = input.chunkBytes ?? DEFAULT_STREAM_CHUNK_BYTES;\n yield* validateLimit(\"file-bytes\", chunkBytes);\n if (chunkBytes === 0) {\n return yield* Effect.fail(new RecordResourceLimitInvalid({\n code: \"record-resource-limit-invalid\",\n resource: \"file-bytes\",\n maximum: chunkBytes,\n }));\n }\n const kind = yield* pathKindAt(path);\n if (kind !== \"file\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path,\n expected: \"file\",\n actual: kind,\n }));\n }\n return readStreamAt(path, input.maximumBytes, chunkBytes);\n })),\n writeFile: (input) => Effect.flatMap(resolvePortablePath(input.file, true), (path) => {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n return writeBytesAt({\n path,\n portableRoot: paths.portableRoot,\n bytes: input.bytes,\n maximumBytes: input.maximumBytes,\n mode: input.mode,\n });\n }),\n writeFileStream: <E, R>(input: RecordWriteFileStreamInput<E, R>): Effect.Effect<void, RecordFileSystemError | E, R> => Effect.flatMap(resolvePortablePath(input.file, true), (path) => Effect.gen(function* () {\n const paths = recordRootPaths(input.file.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n yield* validateLimit(\"file-bytes\", input.maximumBytes);\n const parent = dirname(path);\n yield* ensureDirectoryAt(parent);\n let written = 0;\n yield* Effect.scoped(Effect.acquireRelease(openForWrite(path, input.mode, paths.portableRoot), (handle) => closeHandle(handle, \"write-file\", path)).pipe(Effect.flatMap((handle) => {\n const writeOne = (chunk: Uint8Array): Effect.Effect<void, RecordFileSystemError> => {\n const observedAtLeast = written + chunk.byteLength;\n if (observedAtLeast > input.maximumBytes) {\n return Effect.fail(limitExceeded(\"file-bytes\", input.maximumBytes, observedAtLeast, path));\n }\n return writeChunk(handle, chunk, path).pipe(Effect.tap(() => Effect.sync(() => {\n written = observedAtLeast;\n })));\n };\n return Stream.runForEach(input.stream, writeOne).pipe(Effect.zipRight(syncHandle(handle, \"sync-file\", path)));\n })));\n yield* syncDirectoryAt(parent);\n })),\n syncDirectory: (directory) => Effect.flatMap(resolvePortablePath(directory, false), (path) => syncDirectoryAt(path)),\n removeFile: (file) => Effect.flatMap(resolvePortablePath(file, true), (path) => removeFileIfPresentAt(path, \"remove-path\")),\n createRunDirectory: ({ root, runId }) => Effect.gen(function* () {\n yield* nodeFileSystem.ensureDirectory(recordPortablePath(root, \"runs\"));\n yield* nodeFileSystem.createDirectory(recordPortablePath(root, \"runs\", runId));\n }),\n createCompleteMarker: ({ root, runId }) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n bytes: new Uint8Array(),\n maximumBytes: 0,\n mode: \"exclusive\",\n })),\n isCompleteMarker: ({ root, runId }) => nodeFileSystem.readFile({\n file: recordPortablePath(root, \"runs\", runId, \"complete\"),\n maximumBytes: 0,\n }).pipe(Effect.map((bytes) => bytes !== undefined && bytes.byteLength === 0), Effect.catchTag(\"RecordResourceLimitExceeded\", () => Effect.succeed(false)), Effect.catchTag(\"RecordPathTypeInvalid\", () => Effect.succeed(false))),\n migrationSentinelPresent: (root) => Effect.map(nodeFileSystem.pathKind(recordPortablePath(root, \"migration.in-progress\")), (kind) => kind !== \"missing\"),\n createMigrationSentinel: (root, restoreCommit, expectedRelativePaths) => Effect.uninterruptible(nodeFileSystem.writeFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n bytes: new TextEncoder().encode(`${JSON.stringify({ restoreCommit, expectedRelativePaths })}\\n`),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n mode: \"exclusive\",\n })),\n readMigrationSentinel: (root) => Effect.map(nodeFileSystem.readFile({\n file: recordPortablePath(root, \"migration.in-progress\"),\n maximumBytes: MIGRATION_SENTINEL_MAXIMUM_BYTES,\n }), (bytes) => {\n if (bytes === undefined)\n return undefined;\n try {\n const value: unknown = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n return undefined;\n const keys = Object.keys(value);\n const restoreCommit = Reflect.get(value, \"restoreCommit\");\n const expectedRelativePaths = Reflect.get(value, \"expectedRelativePaths\");\n if (keys.length !== 2 ||\n typeof restoreCommit !== \"string\" ||\n !/^[0-9a-f]{40,64}$/.test(restoreCommit) ||\n !Array.isArray(expectedRelativePaths) ||\n expectedRelativePaths.some((path) => typeof path !== \"string\" || path.length === 0 || path.startsWith(\"/\") ||\n path.includes(\"\\\\\") || path.split(\"/\").some((segment) => segment.length === 0 || segment === \".\" || segment === \"..\")))\n return undefined;\n return Object.freeze({\n restoreCommit,\n expectedRelativePaths: Object.freeze([...expectedRelativePaths]),\n });\n }\n catch {\n return undefined;\n }\n }),\n removeMigrationSentinel: (root) => Effect.flatMap(resolvePortablePath(recordPortablePath(root, \"migration.in-progress\"), true), (path) => removeFileIfPresentAt(path, \"remove-path\")),\n deleteIncompleteRun: ({ root, runId }) => Effect.gen(function* () {\n const runPath = yield* resolvePortablePath(recordPortablePath(root, \"runs\", runId), true);\n const runKind = yield* pathKindAt(runPath);\n if (runKind === \"missing\") {\n return { state: \"missing\" } satisfies RecordIncompleteRunDelete;\n }\n if (runKind !== \"directory\") {\n return yield* Effect.fail(new RecordPathTypeInvalid({\n code: \"record-path-type-invalid\",\n path: runPath,\n expected: \"directory\",\n actual: runKind,\n }));\n }\n if (yield* nodeFileSystem.isCompleteMarker({ root, runId })) {\n return { state: \"skipped-complete\" } satisfies RecordIncompleteRunDelete;\n }\n yield* Effect.tryPromise({\n try: () => rm(runPath, { recursive: true, force: true }),\n catch: (cause) => fileSystemError(\"remove-path\", runPath, cause),\n });\n yield* syncDirectoryAt(dirname(runPath));\n return { state: \"deleted\" } satisfies RecordIncompleteRunDelete;\n }),\n};\ninterface GitOutput {\n readonly stdout: string;\n readonly stderr: string;\n}\nfunction executeGit(args: readonly string[], cwd: string, signal: AbortSignal): Promise<GitOutput> {\n // Keep the native adapter: Record requires one bounded collection covering\n // stdout and stderr, exact argv execution, and AbortSignal cancellation.\n // CommandExecutor has no single primitive with all of those guarantees.\n return new Promise((resolve, reject) => {\n execFile(\"git\", [...args], { cwd, encoding: \"utf8\", maxBuffer: GIT_MAX_OUTPUT_BYTES, signal }, (error, stdout, stderr) => {\n if (error !== null) {\n reject(error);\n return;\n }\n resolve({ stdout: String(stdout), stderr: String(stderr) });\n });\n });\n}\nfunction gitError(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", cause: unknown): RecordGitError {\n if (nodeErrorCode(cause) === \"ERR_CHILD_PROCESS_STDIO_MAXBUFFER\") {\n return limitExceeded(\"git-output\", GIT_MAX_OUTPUT_BYTES, GIT_MAX_OUTPUT_BYTES, \"git\");\n }\n return new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation,\n cause,\n });\n}\nfunction runGit(operation: \"locate-worktree\" | \"read-head\" | \"inspect-status\", args: readonly string[], cwd: string): Effect.Effect<GitOutput, RecordGitError> {\n return Effect.tryPromise({\n try: (signal) => executeGit(args, cwd, signal),\n catch: (cause) => gitError(operation, cause),\n });\n}\nfunction isNotGitWorktree(error: RecordGitCommandError): boolean {\n const code = nodeErrorCode(error.cause);\n return code === \"ENOENT\" || nodeErrorMessage(error.cause).includes(\"not a git repository\");\n}\nfunction portablePathWithinWorktree(worktree: string, portableRoot: string): string | undefined {\n const rootRelative = relative(worktree, portableRoot);\n if (rootRelative === \"..\" ||\n rootRelative.startsWith(`..${sep}`) ||\n isAbsolute(rootRelative)) {\n return undefined;\n }\n return rootRelative === \"\" ? \".\" : rootRelative;\n}\ninterface GitStatusEntry {\n readonly status: string;\n readonly path: string;\n}\nfunction statusEntries(stdout: string): readonly GitStatusEntry[] {\n const records = stdout.split(\"\\0\").filter((entry) => entry !== \"\");\n const entries: GitStatusEntry[] = [];\n for (let index = 0; index < records.length; index += 1) {\n const record = records[index]!;\n const status = record.slice(0, 2);\n const path = record.length > 3 ? record.slice(3) : \"\";\n entries.push(Object.freeze({ status, path }));\n if (status.includes(\"R\") || status.includes(\"C\"))\n index += 1;\n }\n return Object.freeze(entries);\n}\nconst nodeGit = {\n inspectBackupState: (root: unknown): Effect.Effect<RecordBackupState, RecordGitError> => Effect.gen(function* () {\n const paths = recordRootPaths(root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location)) {\n if (location.left instanceof RecordGitCommandError &&\n isNotGitWorktree(location.left)) {\n return { state: \"not-git-worktree\" } satisfies RecordBackupState;\n }\n return yield* Effect.fail(location.left);\n }\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined) {\n return { state: \"root-outside-worktree\" } satisfies RecordBackupState;\n }\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n const commit = head.stdout.trim();\n if (commit === \"\") {\n return yield* Effect.fail(new RecordGitCommandError({\n code: \"record-git-command-failed\",\n operation: \"read-head\",\n cause: new Error(\"git returned an empty HEAD\"),\n }));\n }\n const status = yield* runGit(\"inspect-status\", [\n \"status\",\n \"--porcelain=v1\",\n \"-z\",\n \"--ignored\",\n \"--untracked-files=all\",\n \"--\",\n rootRelative,\n ], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length > GIT_MAX_STATUS_ENTRIES) {\n return yield* Effect.fail(limitExceeded(\"git-output\", GIT_MAX_STATUS_ENTRIES, GIT_MAX_STATUS_ENTRIES + 1, \"git status\"));\n }\n return entries.length === 0\n ? ({ state: \"git-restore-point\", commit } satisfies RecordBackupState)\n : ({\n state: \"portable-root-dirty\",\n entries: Object.freeze(entries.map((entry) => `${entry.status} ${entry.path}`)),\n } satisfies RecordBackupState);\n }),\n recoveryChangesAreExpected: (input: {\n readonly root: unknown;\n readonly restoreCommit: string;\n readonly expectedPaths: readonly RecordPortablePath[];\n }): Effect.Effect<boolean, RecordGitError | RecordFileSystemError> => Effect.gen(function* () {\n const paths = recordRootPaths(input.root);\n if (paths === undefined) {\n return yield* Effect.fail(new RecordRootInvalid({ code: \"record-root-invalid\" }));\n }\n const location = yield* Effect.either(runGit(\"locate-worktree\", [\"rev-parse\", \"--show-toplevel\"], dirname(paths.portableRoot)));\n if (Either.isLeft(location))\n return false;\n const worktree = location.right.stdout.trim();\n const rootRelative = portablePathWithinWorktree(worktree, paths.portableRoot);\n if (rootRelative === undefined)\n return false;\n const head = yield* runGit(\"read-head\", [\"rev-parse\", \"--verify\", \"HEAD\"], worktree);\n if (head.stdout.trim() !== input.restoreCommit)\n return false;\n const expected = new Set<string>();\n for (const path of input.expectedPaths) {\n const resolved = yield* resolvePortablePath(path, true);\n const relativePath = portablePathWithinWorktree(worktree, resolved);\n if (relativePath === undefined)\n return false;\n expected.add(relativePath.split(sep).join(\"/\"));\n }\n const status = yield* runGit(\"inspect-status\", [\"status\", \"--porcelain=v1\", \"-z\", \"--ignored\", \"--untracked-files=all\", \"--\", rootRelative], worktree);\n const entries = statusEntries(status.stdout);\n if (entries.length === 0 || entries.length > GIT_MAX_STATUS_ENTRIES)\n return false;\n return entries.every((entry) => {\n const normalized = entry.path.split(sep).join(\"/\");\n if (!expected.has(normalized))\n return false;\n return normalized.endsWith(\"/migration.in-progress\")\n ? entry.status === \"??\" || entry.status === \"!!\"\n : entry.status === \" M\";\n });\n }),\n};\nexport const NodeRecordFileSystemLive = Layer.succeed(RecordFileSystem, nodeFileSystem);\nexport const NodeRecordEntropyLive = Layer.succeed(RecordEntropy, {\n uuid: Effect.sync(randomUUID),\n});\nexport const NodeRecordGitLive = Layer.succeed(RecordGit, nodeGit);\n/**\n * Convenience composition for an application boundary. Consumers still name\n * only the Tags they need in their own Effect requirements.\n */\nexport const NodeRecordLive = Layer.mergeAll(NodeRecordFileSystemLive, NodeRecordCoordinationLive, NodeRecordEntropyLive, NodeRecordGitLive);\n"]}