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
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Node capabilities used by an application host while observing a project.
3
+ * They intentionally do not model a general filesystem: credentials delivery
4
+ * and trusted config-module loading are the two distinct capabilities here.
5
+ */
6
+ import { Context, Effect, Layer } from "effect";
7
+ import type { Config } from "../runner/types.mjs";
8
+ declare const ProjectCredentialsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
9
+ readonly _tag: "ProjectCredentialsError";
10
+ } & Readonly<A>;
11
+ export declare class ProjectCredentialsError extends ProjectCredentialsError_base<{
12
+ readonly cwd: string;
13
+ readonly operation: "read-dotenv";
14
+ readonly cause: unknown;
15
+ }> {
16
+ }
17
+ declare const ProjectCredentialsConflict_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
18
+ readonly _tag: "ProjectCredentialsConflict";
19
+ } & Readonly<A>;
20
+ export declare class ProjectCredentialsConflict extends ProjectCredentialsConflict_base<{
21
+ readonly preparedCwd: string;
22
+ readonly requestedCwd: string;
23
+ }> {
24
+ }
25
+ export type ProjectCredentialsFailure = ProjectCredentialsError | ProjectCredentialsConflict;
26
+ export interface ProjectCredentialsService {
27
+ /** Deliver missing credential variables from this project's .env exactly once. */
28
+ readonly prepare: (cwd: string) => Effect.Effect<void, ProjectCredentialsFailure>;
29
+ }
30
+ declare const ProjectCredentials_base: Context.TagClass<ProjectCredentials, "niceeval/cli/ProjectCredentials", ProjectCredentialsService>;
31
+ export declare class ProjectCredentials extends ProjectCredentials_base {
32
+ }
33
+ /** One Layer-owned state machine; failed preparation deliberately returns to idle. */
34
+ export declare const ProjectCredentialsLive: Layer.Layer<ProjectCredentials, never, never>;
35
+ declare const ConfigModuleLoadError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
36
+ readonly _tag: "ConfigModuleLoadError";
37
+ } & Readonly<A>;
38
+ export declare class ConfigModuleLoadError extends ConfigModuleLoadError_base<{
39
+ readonly cwd: string;
40
+ readonly operation: "loadOnce" | "rebuild";
41
+ readonly cause: unknown;
42
+ }> {
43
+ }
44
+ export interface ConfigModuleLoaderService {
45
+ readonly loadOnce: (cwd: string) => Effect.Effect<Config, ConfigModuleLoadError>;
46
+ readonly rebuild: (cwd: string) => Effect.Effect<Config, ConfigModuleLoadError>;
47
+ }
48
+ declare const ConfigModuleLoader_base: Context.TagClass<ConfigModuleLoader, "niceeval/cli/ConfigModuleLoader", ConfigModuleLoaderService>;
49
+ export declare class ConfigModuleLoader extends ConfigModuleLoader_base {
50
+ }
51
+ /** Serial module loader. A failed rebuild never hands out a previous Config. */
52
+ export declare const ConfigModuleLoaderLive: Layer.Layer<ConfigModuleLoader, never, never>;
53
+ /** The sole CLI application facade fixes the required credentials → config order. */
54
+ export interface ProjectConfigurationService {
55
+ readonly prepare: (cwd: string) => Effect.Effect<void, ProjectCredentialsFailure>;
56
+ readonly load: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
57
+ readonly rebuild: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
58
+ }
59
+ declare const ProjectConfiguration_base: Context.TagClass<ProjectConfiguration, "niceeval/cli/ProjectConfiguration", ProjectConfigurationService>;
60
+ export declare class ProjectConfiguration extends ProjectConfiguration_base {
61
+ }
62
+ /** Application composition only: callers must provide concrete capabilities. */
63
+ export declare const ProjectConfigurationLayer: Layer.Layer<ProjectConfiguration, never, ProjectCredentials | ConfigModuleLoader>;
64
+ export {};
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Node capabilities used by an application host while observing a project.
3
+ * They intentionally do not model a general filesystem: credentials delivery
4
+ * and trusted config-module loading are the two distinct capabilities here.
5
+ */
6
+ import { Context, Effect, Layer } from "effect";
7
+ import type { Config } from "../runner/types.js";
8
+ declare const ProjectCredentialsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
9
+ readonly _tag: "ProjectCredentialsError";
10
+ } & Readonly<A>;
11
+ export declare class ProjectCredentialsError extends ProjectCredentialsError_base<{
12
+ readonly cwd: string;
13
+ readonly operation: "read-dotenv";
14
+ readonly cause: unknown;
15
+ }> {
16
+ }
17
+ declare const ProjectCredentialsConflict_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
18
+ readonly _tag: "ProjectCredentialsConflict";
19
+ } & Readonly<A>;
20
+ export declare class ProjectCredentialsConflict extends ProjectCredentialsConflict_base<{
21
+ readonly preparedCwd: string;
22
+ readonly requestedCwd: string;
23
+ }> {
24
+ }
25
+ export type ProjectCredentialsFailure = ProjectCredentialsError | ProjectCredentialsConflict;
26
+ export interface ProjectCredentialsService {
27
+ /** Deliver missing credential variables from this project's .env exactly once. */
28
+ readonly prepare: (cwd: string) => Effect.Effect<void, ProjectCredentialsFailure>;
29
+ }
30
+ declare const ProjectCredentials_base: Context.TagClass<ProjectCredentials, "niceeval/cli/ProjectCredentials", ProjectCredentialsService>;
31
+ export declare class ProjectCredentials extends ProjectCredentials_base {
32
+ }
33
+ /** One Layer-owned state machine; failed preparation deliberately returns to idle. */
34
+ export declare const ProjectCredentialsLive: Layer.Layer<ProjectCredentials, never, never>;
35
+ declare const ConfigModuleLoadError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
36
+ readonly _tag: "ConfigModuleLoadError";
37
+ } & Readonly<A>;
38
+ export declare class ConfigModuleLoadError extends ConfigModuleLoadError_base<{
39
+ readonly cwd: string;
40
+ readonly operation: "loadOnce" | "rebuild";
41
+ readonly cause: unknown;
42
+ }> {
43
+ }
44
+ export interface ConfigModuleLoaderService {
45
+ readonly loadOnce: (cwd: string) => Effect.Effect<Config, ConfigModuleLoadError>;
46
+ readonly rebuild: (cwd: string) => Effect.Effect<Config, ConfigModuleLoadError>;
47
+ }
48
+ declare const ConfigModuleLoader_base: Context.TagClass<ConfigModuleLoader, "niceeval/cli/ConfigModuleLoader", ConfigModuleLoaderService>;
49
+ export declare class ConfigModuleLoader extends ConfigModuleLoader_base {
50
+ }
51
+ /** Serial module loader. A failed rebuild never hands out a previous Config. */
52
+ export declare const ConfigModuleLoaderLive: Layer.Layer<ConfigModuleLoader, never, never>;
53
+ /** The sole CLI application facade fixes the required credentials → config order. */
54
+ export interface ProjectConfigurationService {
55
+ readonly prepare: (cwd: string) => Effect.Effect<void, ProjectCredentialsFailure>;
56
+ readonly load: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
57
+ readonly rebuild: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
58
+ }
59
+ declare const ProjectConfiguration_base: Context.TagClass<ProjectConfiguration, "niceeval/cli/ProjectConfiguration", ProjectConfigurationService>;
60
+ export declare class ProjectConfiguration extends ProjectConfiguration_base {
61
+ }
62
+ /** Application composition only: callers must provide concrete capabilities. */
63
+ export declare const ProjectConfigurationLayer: Layer.Layer<ProjectConfiguration, never, ProjectCredentials | ConfigModuleLoader>;
64
+ export {};
@@ -0,0 +1,22 @@
1
+ import { createRequire as __niceevalCreateRequire } from "node:module";
2
+ const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
+ const __niceevalCanonical = __niceevalRequire("./project-configuration.cjs");
4
+ const __niceevalExport0 = __niceevalCanonical["ConfigModuleLoadError"];
5
+ export { __niceevalExport0 as ConfigModuleLoadError };
6
+ const __niceevalExport1 = __niceevalCanonical["ConfigModuleLoader"];
7
+ export { __niceevalExport1 as ConfigModuleLoader };
8
+ const __niceevalExport2 = __niceevalCanonical["ConfigModuleLoaderLive"];
9
+ export { __niceevalExport2 as ConfigModuleLoaderLive };
10
+ const __niceevalExport3 = __niceevalCanonical["ProjectConfiguration"];
11
+ export { __niceevalExport3 as ProjectConfiguration };
12
+ const __niceevalExport4 = __niceevalCanonical["ProjectConfigurationLayer"];
13
+ export { __niceevalExport4 as ProjectConfigurationLayer };
14
+ const __niceevalExport5 = __niceevalCanonical["ProjectCredentials"];
15
+ export { __niceevalExport5 as ProjectCredentials };
16
+ const __niceevalExport6 = __niceevalCanonical["ProjectCredentialsConflict"];
17
+ export { __niceevalExport6 as ProjectCredentialsConflict };
18
+ const __niceevalExport7 = __niceevalCanonical["ProjectCredentialsError"];
19
+ export { __niceevalExport7 as ProjectCredentialsError };
20
+ const __niceevalExport8 = __niceevalCanonical["ProjectCredentialsLive"];
21
+ export { __niceevalExport8 as ProjectCredentialsLive };
22
+ //# sourceMappingURL=project-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-configuration.js","sources":[],"names":[],"mappings":""}
@@ -7,7 +7,6 @@ const node_path_1 = require("node:path");
7
7
  const effect_1 = require("effect");
8
8
  const index_ts_1 = require("../record/index.cjs");
9
9
  const index_ts_2 = require("../record/host/index.cjs");
10
- const identifiers_ts_1 = require("../record/model/identifiers.cjs");
11
10
  const errors_ts_1 = require("../record/reader/errors.cjs");
12
11
  const services_ts_1 = require("../record/platform/services.cjs");
13
12
  function output(input) {
@@ -48,12 +47,12 @@ function ensureAutomaticRecordMigration(input) {
48
47
  code: "record-auto-migration-git-save-required",
49
48
  }));
50
49
  }
51
- yield* session.applyMigrate(plan).pipe(effect_1.Effect.catchTag("RecordMigrationGitRestoreRequired", () => effect_1.Effect.fail(new errors_ts_1.RecordAutoMigrationGitSaveRequired({
50
+ const receipt = yield* session.applyMigrate(plan).pipe(effect_1.Effect.catchTag("RecordMigrationGitRestoreRequired", () => effect_1.Effect.fail(new errors_ts_1.RecordAutoMigrationGitSaveRequired({
52
51
  code: "record-auto-migration-git-save-required",
53
52
  }))));
54
53
  return Object.freeze({
55
54
  restoreCommit: plan.backup.commit,
56
- targetSchemaVersion: identifiers_ts_1.RECORD_SCHEMA_VERSION,
55
+ attachments: receipt.state === "migrated" ? receipt.attachments : Object.freeze([]),
57
56
  });
58
57
  }));
59
58
  });
@@ -176,11 +175,28 @@ function migrateCommand(input) {
176
175
  return effect_1.Effect.scoped(effect_1.Effect.gen(function* () {
177
176
  const session = yield* index_ts_2.recordHost.maintenance.open({ root: input.root });
178
177
  const plan = yield* session.planMigrate();
178
+ const impactText = plan.state !== "migration-required"
179
+ ? ""
180
+ : [...new Map(plan.attachments.map((attachment) => {
181
+ const key = `${attachment.family}@${attachment.fromSchemaVersion}->${attachment.toSchemaVersion}`;
182
+ return [key, attachment];
183
+ })).values()].map((attachment) => {
184
+ const retention = attachment.retention;
185
+ const lines = [
186
+ `impact ${attachment.family}@${attachment.fromSchemaVersion}->${attachment.toSchemaVersion}:`,
187
+ ` retained facts: ${retention.retainedFacts.length === 0 ? "none" : retention.retainedFacts.join(", ")}`,
188
+ ` dropped facts: ${retention.droppedFacts.length === 0 ? "none" : retention.droppedFacts.join(", ")}`,
189
+ ];
190
+ if (retention.rerunRecommendation !== null) {
191
+ lines.push(` rerun recommendation: ${retention.rerunRecommendation}`);
192
+ }
193
+ return lines.join("\n");
194
+ }).join("\n");
179
195
  const planText = plan.state === "already-current"
180
196
  ? `Record migration plan: already-current\nformat: ${plan.format}\n`
181
197
  : plan.state === "unsupported-format"
182
198
  ? `Record migration plan: unsupported-format\nformat: ${plan.format}\n`
183
- : `Record migration plan: migration-required\nformat: ${plan.format}\nroot: ${plan.root === null ? "current" : `${plan.root.fromSchemaVersion} -> ${plan.root.toSchemaVersion}`}\nattachments: ${plan.attachments.length}\nbackup: ${plan.backup.state}${plan.backup.state === "git-restore-point" ? `\nrestore commit: ${plan.backup.commit}` : ""}\n`;
199
+ : `Record migration plan: migration-required\nformat: ${plan.format}\nattachments: ${plan.attachments.length}\n${impactText === "" ? "" : `${impactText}\n`}backup: ${plan.backup.state}${plan.backup.state === "git-restore-point" ? `\nrestore commit: ${plan.backup.commit}` : ""}\n`;
184
200
  if (plan.state === "unsupported-format") {
185
201
  return output({
186
202
  exitCode: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["record.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport { Either, Effect, Layer } from \"effect\";\nimport { cleanIncompleteRuns, inspectIncompleteRuns, makeRecordRoot, NodeRecordLive, type RecordRoot, } from \"../record/index.ts\";\nimport { recordHost } from \"../record/host/index.ts\";\nimport { RECORD_SCHEMA_VERSION } from \"../record/model/identifiers.ts\";\nimport { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired, } from \"../record/reader/errors.ts\";\nimport { RecordFileSystem, recordPortablePath } from \"../record/platform/services.ts\";\nexport type RecordCliCommand = \"clean\" | \"migrate\";\nexport interface RunRecordCliCommandInput {\n readonly command: RecordCliCommand;\n readonly cwd: string;\n /** An actual Record root, never a `.niceeval` parent directory. */\n readonly record?: string;\n readonly yes: boolean;\n}\n/** The outer CLI owns process streams and exit; this value is its pure receipt. */\nexport interface RecordCliCommandOutput {\n readonly exitCode: 0 | 1;\n readonly stdout: string;\n readonly stderr: string;\n}\nfunction output(input: {\n readonly exitCode: 0 | 1;\n readonly stdout?: string;\n readonly stderr?: string;\n}): RecordCliCommandOutput {\n return Object.freeze({\n exitCode: input.exitCode,\n stdout: input.stdout ?? \"\",\n stderr: input.stderr ?? \"\",\n });\n}\nexport const NodeRecordCliLive = NodeRecordLive;\nexport interface AutomaticRecordMigrationReceipt {\n readonly restoreCommit: string;\n readonly targetSchemaVersion: typeof RECORD_SCHEMA_VERSION;\n}\n/**\n * Preflight for ordinary CLI entry points. Every Scope is closed before the\n * next lease kind is acquired: read check -> exclusive maintenance -> caller's\n * fresh ordinary open.\n */\nexport function ensureAutomaticRecordMigration(input: {\n readonly cwd: string;\n readonly record?: string;\n}) {\n const root = makeRecordRoot(resolve(input.cwd, input.record ?? \".niceeval/record\"));\n if (Either.isLeft(root))\n return Effect.fail(root.left);\n return Effect.gen(function* () {\n const fileSystem = yield* RecordFileSystem;\n if ((yield* fileSystem.pathKind(recordPortablePath(root.right, \"record.json\"))) === \"missing\") {\n return null;\n }\n const checked = yield* Effect.either(Effect.scoped(recordHost.current.openRead({ root: root.right })));\n if (Either.isRight(checked))\n return null;\n if (!(checked.left instanceof RecordMigrationRequired))\n return yield* Effect.fail(checked.left);\n return yield* Effect.scoped(Effect.gen(function* () {\n const session = yield* recordHost.maintenance.open({ root: root.right });\n const plan = yield* session.planMigrate();\n if (plan.state !== \"migration-required\") {\n return yield* Effect.fail(checked.left);\n }\n if (plan.backup.state !== \"git-restore-point\") {\n return yield* Effect.fail(new RecordAutoMigrationGitSaveRequired({\n code: \"record-auto-migration-git-save-required\",\n }));\n }\n yield* session.applyMigrate(plan).pipe(Effect.catchTag(\"RecordMigrationGitRestoreRequired\", () => Effect.fail(new RecordAutoMigrationGitSaveRequired({\n code: \"record-auto-migration-git-save-required\",\n }))));\n return Object.freeze({\n restoreCommit: plan.backup.commit,\n targetSchemaVersion: RECORD_SCHEMA_VERSION,\n });\n }));\n });\n}\nfunction resolveRecordRoot(input: RunRecordCliCommandInput): Either.Either<RecordRoot, RecordCliCommandOutput> {\n const root = makeRecordRoot(resolve(input.cwd, input.record ?? \".niceeval/record\"));\n return Either.isLeft(root)\n ? Either.left(output({\n exitCode: 1,\n stderr: `${root.left.code}\\n`,\n }))\n : Either.right(root.right);\n}\nfunction recordErrorCode(error: unknown): string {\n if (typeof error !== \"object\" || error === null)\n return \"record-command-failed\";\n const candidate = Reflect.get(error, \"code\");\n return typeof candidate === \"string\" ? candidate : \"record-command-failed\";\n}\nfunction recordErrorNextStep(code: string): string | undefined {\n switch (code) {\n case \"record-migration-required\":\n return \"Run: niceeval migrate\";\n case \"record-migration-interrupted\":\n return \"Restore the complete Record from the recorded Git commit; do not rerun migrate on mixed bytes.\";\n case \"record-migration-recovery-required\":\n return \"Restore the complete Record from Git before retrying migration.\";\n case \"record-migration-plan-stale\":\n return \"Review the new migration plan and rerun migrate.\";\n case \"record-migration-git-restore-required\":\n return \"Commit, restore, or otherwise obtain a clean Git restore point for this Record before migrating.\";\n case \"record-migration-invalid\":\n return \"Restore the Record from Git before retrying migration.\";\n case \"record-format-unsupported\":\n return \"Install a NiceEval version that supports this Record format.\";\n case \"record-maintenance-busy\":\n case \"record-writer-busy\":\n return \"Close the Record command holding the lock, then retry.\";\n default:\n return undefined;\n }\n}\nfunction shellQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\"'\"'`)}'`;\n}\nfunction recoveryCommands(restoreCommit: string, recordPath: string): string {\n const root = shellQuote(recordPath);\n const commit = shellQuote(restoreCommit);\n const sentinel = shellQuote(resolve(recordPath, \"migration.in-progress\"));\n return [\n `Restore command: git -C ${root} restore --source=${commit} --staged --worktree -- .`,\n `Verify command: git -C ${root} diff --quiet ${commit} -- . && git -C ${root} diff --cached --quiet ${commit} -- .`,\n `Clear sentinel after verification: rm -f -- ${sentinel}`,\n ].join(\"\\n\") + \"\\n\";\n}\nfunction interruptedRecovery(error: unknown, recordPath: string | undefined): string {\n if (typeof error !== \"object\" || error === null || recordPath === undefined)\n return \"\";\n const restoreCommit = Reflect.get(error, \"restoreCommit\");\n return Reflect.get(error, \"restoreSafe\") === true &&\n typeof restoreCommit === \"string\" && /^[0-9a-f]{40,64}$/.test(restoreCommit)\n ? recoveryCommands(restoreCommit, recordPath)\n : \"\";\n}\nfunction recordErrorOutput(error: unknown, stdout = \"\", recordPath?: string): RecordCliCommandOutput {\n const code = recordErrorCode(error);\n const automaticRestoreUnsafe = (code === \"record-migration-interrupted\" || code === \"record-migration-recovery-required\") &&\n (typeof error !== \"object\" || error === null || Reflect.get(error, \"restoreSafe\") !== true);\n const next = automaticRestoreUnsafe\n ? \"Inspect and preserve concurrent Record edits before choosing a manual recovery; no automatic Git restore command is safe.\"\n : recordErrorNextStep(code);\n const causeCode = typeof error === \"object\" && error !== null &&\n typeof Reflect.get(error, \"causeCode\") === \"string\"\n ? String(Reflect.get(error, \"causeCode\"))\n : undefined;\n return output({\n exitCode: 1,\n stdout,\n stderr: `${code}\\n${next === undefined ? \"\" : `${next}\\n`}${causeCode === undefined ? \"\" : `Cause: ${causeCode}\\n`}${code === \"record-migration-interrupted\" || code === \"record-migration-recovery-required\"\n ? interruptedRecovery(error, recordPath)\n : \"\"}`,\n });\n}\nfunction cleanCommand(input: {\n readonly root: RecordRoot;\n readonly yes: boolean;\n}) {\n return Effect.gen(function* () {\n const incomplete = yield* inspectIncompleteRuns({ root: input.root });\n if (incomplete.length === 0) {\n return output({\n exitCode: 0,\n stdout: \"No incomplete Runs found.\\n\",\n });\n }\n const listed = incomplete.map((entry) => ` ${entry.runId}`).join(\"\\n\");\n if (!input.yes) {\n return output({\n exitCode: 1,\n stdout: `Incomplete Runs:\\n${listed}\\n`,\n stderr: \"record-clean-confirmation-required\\nReview the listed Runs and rerun with --yes.\\n\",\n });\n }\n const cleaned = yield* Effect.either(cleanIncompleteRuns({\n root: input.root,\n runIds: incomplete.map((entry) => entry.runId),\n }));\n if (Either.isLeft(cleaned)) {\n return recordErrorOutput(cleaned.left, `Incomplete Runs:\\n${listed}\\n`);\n }\n const lines = [\"Cleaned incomplete Runs:\"];\n if (cleaned.right.deleted.length === 0)\n lines.push(\" deleted: none\");\n else\n lines.push(...cleaned.right.deleted.map((runId) => ` deleted: ${runId}`));\n if (cleaned.right.skipped.length > 0) {\n lines.push(...cleaned.right.skipped.map((runId) => ` skipped complete: ${runId}`));\n }\n return output({ exitCode: 0, stdout: `${lines.join(\"\\n\")}\\n` });\n });\n}\nfunction migrateCommand(input: {\n readonly root: RecordRoot;\n readonly recordPath: string;\n readonly yes: boolean;\n}) {\n return Effect.scoped(Effect.gen(function* () {\n const session = yield* recordHost.maintenance.open({ root: input.root });\n const plan = yield* session.planMigrate();\n const planText = plan.state === \"already-current\"\n ? `Record migration plan: already-current\\nformat: ${plan.format}\\n`\n : plan.state === \"unsupported-format\"\n ? `Record migration plan: unsupported-format\\nformat: ${plan.format}\\n`\n : `Record migration plan: migration-required\\nformat: ${plan.format}\\nroot: ${plan.root === null ? \"current\" : `${plan.root.fromSchemaVersion} -> ${plan.root.toSchemaVersion}`}\\nattachments: ${plan.attachments.length}\\nbackup: ${plan.backup.state}${plan.backup.state === \"git-restore-point\" ? `\\nrestore commit: ${plan.backup.commit}` : \"\"}\\n`;\n if (plan.state === \"unsupported-format\") {\n return output({\n exitCode: 1,\n stdout: planText,\n stderr: \"record-format-unsupported\\nInstall a NiceEval version that supports this Record format.\\n\",\n });\n }\n if (plan.state === \"migration-required\" && plan.backup.state !== \"git-restore-point\") {\n return output({\n exitCode: 1,\n stdout: planText,\n stderr: \"record-migration-git-restore-required\\nA clean Git restore point is required; --yes cannot bypass this preflight.\\n\",\n });\n }\n if (plan.state === \"migration-required\" && !input.yes) {\n return output({\n exitCode: 1,\n stdout: planText,\n stderr: \"record-migration-confirmation-required\\nReview the migration plan and rerun with --yes.\\n\",\n });\n }\n const migrated = yield* Effect.either(session.applyMigrate(plan));\n if (Either.isLeft(migrated)) {\n return recordErrorOutput(migrated.left, planText, input.recordPath);\n }\n const receipt = migrated.right;\n return output({\n exitCode: 0,\n stdout: `${planText}Record migration ${receipt.state}.\\n`,\n });\n }));\n}\n/**\n * Effect-native command handling for the Record maintenance surface. The\n * CLI owns the one Promise adaptation at its actual process boundary.\n */\nexport function runRecordCliCommand(input: RunRecordCliCommandInput): Effect.Effect<RecordCliCommandOutput> {\n const root = resolveRecordRoot(input);\n if (Either.isLeft(root))\n return Effect.succeed(root.left);\n if (input.command === \"clean\") {\n return cleanCommand({ root: root.right, yes: input.yes }).pipe(Effect.provide(NodeRecordCliLive), Effect.catchAll((error) => Effect.succeed(recordErrorOutput(error))));\n }\n const recordPath = resolve(input.cwd, input.record ?? \".niceeval/record\");\n return migrateCommand({ root: root.right, recordPath, yes: input.yes }).pipe(Effect.provide(NodeRecordCliLive), Effect.catchAll((error) => Effect.succeed(recordErrorOutput(error, \"\", recordPath))));\n}\n"]}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["record.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport { Either, Effect, Layer } from \"effect\";\nimport { cleanIncompleteRuns, inspectIncompleteRuns, makeRecordRoot, NodeRecordLive, type RecordRoot, } from \"../record/index.ts\";\nimport { recordHost } from \"../record/host/index.ts\";\nimport type { RecordAttachmentMigrationTarget } from \"../record/host/types.ts\";\nimport { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired, } from \"../record/reader/errors.ts\";\nimport { RecordFileSystem, recordPortablePath } from \"../record/platform/services.ts\";\nexport type RecordCliCommand = \"clean\" | \"migrate\";\nexport interface RunRecordCliCommandInput {\n readonly command: RecordCliCommand;\n readonly cwd: string;\n /** An actual Record root, never a `.niceeval` parent directory. */\n readonly record?: string;\n readonly yes: boolean;\n}\n/** The outer CLI owns process streams and exit; this value is its pure receipt. */\nexport interface RecordCliCommandOutput {\n readonly exitCode: 0 | 1;\n readonly stdout: string;\n readonly stderr: string;\n}\nfunction output(input: {\n readonly exitCode: 0 | 1;\n readonly stdout?: string;\n readonly stderr?: string;\n}): RecordCliCommandOutput {\n return Object.freeze({\n exitCode: input.exitCode,\n stdout: input.stdout ?? \"\",\n stderr: input.stderr ?? \"\",\n });\n}\nexport const NodeRecordCliLive = NodeRecordLive;\nexport interface AutomaticRecordMigrationReceipt {\n readonly restoreCommit: string;\n readonly attachments: readonly RecordAttachmentMigrationTarget[];\n}\n/**\n * Preflight for ordinary CLI entry points. Every Scope is closed before the\n * next lease kind is acquired: read check -> exclusive maintenance -> caller's\n * fresh ordinary open.\n */\nexport function ensureAutomaticRecordMigration(input: {\n readonly cwd: string;\n readonly record?: string;\n}) {\n const root = makeRecordRoot(resolve(input.cwd, input.record ?? \".niceeval/record\"));\n if (Either.isLeft(root))\n return Effect.fail(root.left);\n return Effect.gen(function* () {\n const fileSystem = yield* RecordFileSystem;\n if ((yield* fileSystem.pathKind(recordPortablePath(root.right, \"record.json\"))) === \"missing\") {\n return null;\n }\n const checked = yield* Effect.either(Effect.scoped(recordHost.current.openRead({ root: root.right })));\n if (Either.isRight(checked))\n return null;\n if (!(checked.left instanceof RecordMigrationRequired))\n return yield* Effect.fail(checked.left);\n return yield* Effect.scoped(Effect.gen(function* () {\n const session = yield* recordHost.maintenance.open({ root: root.right });\n const plan = yield* session.planMigrate();\n if (plan.state !== \"migration-required\") {\n return yield* Effect.fail(checked.left);\n }\n if (plan.backup.state !== \"git-restore-point\") {\n return yield* Effect.fail(new RecordAutoMigrationGitSaveRequired({\n code: \"record-auto-migration-git-save-required\",\n }));\n }\n const receipt = yield* session.applyMigrate(plan).pipe(Effect.catchTag(\"RecordMigrationGitRestoreRequired\", () => Effect.fail(new RecordAutoMigrationGitSaveRequired({\n code: \"record-auto-migration-git-save-required\",\n }))));\n return Object.freeze({\n restoreCommit: plan.backup.commit,\n attachments: receipt.state === \"migrated\" ? receipt.attachments : Object.freeze([]),\n });\n }));\n });\n}\nfunction resolveRecordRoot(input: RunRecordCliCommandInput): Either.Either<RecordRoot, RecordCliCommandOutput> {\n const root = makeRecordRoot(resolve(input.cwd, input.record ?? \".niceeval/record\"));\n return Either.isLeft(root)\n ? Either.left(output({\n exitCode: 1,\n stderr: `${root.left.code}\\n`,\n }))\n : Either.right(root.right);\n}\nfunction recordErrorCode(error: unknown): string {\n if (typeof error !== \"object\" || error === null)\n return \"record-command-failed\";\n const candidate = Reflect.get(error, \"code\");\n return typeof candidate === \"string\" ? candidate : \"record-command-failed\";\n}\nfunction recordErrorNextStep(code: string): string | undefined {\n switch (code) {\n case \"record-migration-required\":\n return \"Run: niceeval migrate\";\n case \"record-migration-interrupted\":\n return \"Restore the complete Record from the recorded Git commit; do not rerun migrate on mixed bytes.\";\n case \"record-migration-recovery-required\":\n return \"Restore the complete Record from Git before retrying migration.\";\n case \"record-migration-plan-stale\":\n return \"Review the new migration plan and rerun migrate.\";\n case \"record-migration-git-restore-required\":\n return \"Commit, restore, or otherwise obtain a clean Git restore point for this Record before migrating.\";\n case \"record-migration-invalid\":\n return \"Restore the Record from Git before retrying migration.\";\n case \"record-format-unsupported\":\n return \"Install a NiceEval version that supports this Record format.\";\n case \"record-maintenance-busy\":\n case \"record-writer-busy\":\n return \"Close the Record command holding the lock, then retry.\";\n default:\n return undefined;\n }\n}\nfunction shellQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\"'\"'`)}'`;\n}\nfunction recoveryCommands(restoreCommit: string, recordPath: string): string {\n const root = shellQuote(recordPath);\n const commit = shellQuote(restoreCommit);\n const sentinel = shellQuote(resolve(recordPath, \"migration.in-progress\"));\n return [\n `Restore command: git -C ${root} restore --source=${commit} --staged --worktree -- .`,\n `Verify command: git -C ${root} diff --quiet ${commit} -- . && git -C ${root} diff --cached --quiet ${commit} -- .`,\n `Clear sentinel after verification: rm -f -- ${sentinel}`,\n ].join(\"\\n\") + \"\\n\";\n}\nfunction interruptedRecovery(error: unknown, recordPath: string | undefined): string {\n if (typeof error !== \"object\" || error === null || recordPath === undefined)\n return \"\";\n const restoreCommit = Reflect.get(error, \"restoreCommit\");\n return Reflect.get(error, \"restoreSafe\") === true &&\n typeof restoreCommit === \"string\" && /^[0-9a-f]{40,64}$/.test(restoreCommit)\n ? recoveryCommands(restoreCommit, recordPath)\n : \"\";\n}\nfunction recordErrorOutput(error: unknown, stdout = \"\", recordPath?: string): RecordCliCommandOutput {\n const code = recordErrorCode(error);\n const automaticRestoreUnsafe = (code === \"record-migration-interrupted\" || code === \"record-migration-recovery-required\") &&\n (typeof error !== \"object\" || error === null || Reflect.get(error, \"restoreSafe\") !== true);\n const next = automaticRestoreUnsafe\n ? \"Inspect and preserve concurrent Record edits before choosing a manual recovery; no automatic Git restore command is safe.\"\n : recordErrorNextStep(code);\n const causeCode = typeof error === \"object\" && error !== null &&\n typeof Reflect.get(error, \"causeCode\") === \"string\"\n ? String(Reflect.get(error, \"causeCode\"))\n : undefined;\n return output({\n exitCode: 1,\n stdout,\n stderr: `${code}\\n${next === undefined ? \"\" : `${next}\\n`}${causeCode === undefined ? \"\" : `Cause: ${causeCode}\\n`}${code === \"record-migration-interrupted\" || code === \"record-migration-recovery-required\"\n ? interruptedRecovery(error, recordPath)\n : \"\"}`,\n });\n}\nfunction cleanCommand(input: {\n readonly root: RecordRoot;\n readonly yes: boolean;\n}) {\n return Effect.gen(function* () {\n const incomplete = yield* inspectIncompleteRuns({ root: input.root });\n if (incomplete.length === 0) {\n return output({\n exitCode: 0,\n stdout: \"No incomplete Runs found.\\n\",\n });\n }\n const listed = incomplete.map((entry) => ` ${entry.runId}`).join(\"\\n\");\n if (!input.yes) {\n return output({\n exitCode: 1,\n stdout: `Incomplete Runs:\\n${listed}\\n`,\n stderr: \"record-clean-confirmation-required\\nReview the listed Runs and rerun with --yes.\\n\",\n });\n }\n const cleaned = yield* Effect.either(cleanIncompleteRuns({\n root: input.root,\n runIds: incomplete.map((entry) => entry.runId),\n }));\n if (Either.isLeft(cleaned)) {\n return recordErrorOutput(cleaned.left, `Incomplete Runs:\\n${listed}\\n`);\n }\n const lines = [\"Cleaned incomplete Runs:\"];\n if (cleaned.right.deleted.length === 0)\n lines.push(\" deleted: none\");\n else\n lines.push(...cleaned.right.deleted.map((runId) => ` deleted: ${runId}`));\n if (cleaned.right.skipped.length > 0) {\n lines.push(...cleaned.right.skipped.map((runId) => ` skipped complete: ${runId}`));\n }\n return output({ exitCode: 0, stdout: `${lines.join(\"\\n\")}\\n` });\n });\n}\nfunction migrateCommand(input: {\n readonly root: RecordRoot;\n readonly recordPath: string;\n readonly yes: boolean;\n}) {\n return Effect.scoped(Effect.gen(function* () {\n const session = yield* recordHost.maintenance.open({ root: input.root });\n const plan = yield* session.planMigrate();\n const impactText = plan.state !== \"migration-required\"\n ? \"\"\n : [...new Map(plan.attachments.map((attachment) => {\n const key = `${attachment.family}@${attachment.fromSchemaVersion}->${attachment.toSchemaVersion}`;\n return [key, attachment] as const;\n })).values()].map((attachment) => {\n const retention = attachment.retention;\n const lines = [\n `impact ${attachment.family}@${attachment.fromSchemaVersion}->${attachment.toSchemaVersion}:`,\n ` retained facts: ${retention.retainedFacts.length === 0 ? \"none\" : retention.retainedFacts.join(\", \")}`,\n ` dropped facts: ${retention.droppedFacts.length === 0 ? \"none\" : retention.droppedFacts.join(\", \")}`,\n ];\n if (retention.rerunRecommendation !== null) {\n lines.push(` rerun recommendation: ${retention.rerunRecommendation}`);\n }\n return lines.join(\"\\n\");\n }).join(\"\\n\");\n const planText = plan.state === \"already-current\"\n ? `Record migration plan: already-current\\nformat: ${plan.format}\\n`\n : plan.state === \"unsupported-format\"\n ? `Record migration plan: unsupported-format\\nformat: ${plan.format}\\n`\n : `Record migration plan: migration-required\\nformat: ${plan.format}\\nattachments: ${plan.attachments.length}\\n${impactText === \"\" ? \"\" : `${impactText}\\n`}backup: ${plan.backup.state}${plan.backup.state === \"git-restore-point\" ? `\\nrestore commit: ${plan.backup.commit}` : \"\"}\\n`;\n if (plan.state === \"unsupported-format\") {\n return output({\n exitCode: 1,\n stdout: planText,\n stderr: \"record-format-unsupported\\nInstall a NiceEval version that supports this Record format.\\n\",\n });\n }\n if (plan.state === \"migration-required\" && plan.backup.state !== \"git-restore-point\") {\n return output({\n exitCode: 1,\n stdout: planText,\n stderr: \"record-migration-git-restore-required\\nA clean Git restore point is required; --yes cannot bypass this preflight.\\n\",\n });\n }\n if (plan.state === \"migration-required\" && !input.yes) {\n return output({\n exitCode: 1,\n stdout: planText,\n stderr: \"record-migration-confirmation-required\\nReview the migration plan and rerun with --yes.\\n\",\n });\n }\n const migrated = yield* Effect.either(session.applyMigrate(plan));\n if (Either.isLeft(migrated)) {\n return recordErrorOutput(migrated.left, planText, input.recordPath);\n }\n const receipt = migrated.right;\n return output({\n exitCode: 0,\n stdout: `${planText}Record migration ${receipt.state}.\\n`,\n });\n }));\n}\n/**\n * Effect-native command handling for the Record maintenance surface. The\n * CLI owns the one Promise adaptation at its actual process boundary.\n */\nexport function runRecordCliCommand(input: RunRecordCliCommandInput): Effect.Effect<RecordCliCommandOutput> {\n const root = resolveRecordRoot(input);\n if (Either.isLeft(root))\n return Effect.succeed(root.left);\n if (input.command === \"clean\") {\n return cleanCommand({ root: root.right, yes: input.yes }).pipe(Effect.provide(NodeRecordCliLive), Effect.catchAll((error) => Effect.succeed(recordErrorOutput(error))));\n }\n const recordPath = resolve(input.cwd, input.record ?? \".niceeval/record\");\n return migrateCommand({ root: root.right, recordPath, yes: input.yes }).pipe(Effect.provide(NodeRecordCliLive), Effect.catchAll((error) => Effect.succeed(recordErrorOutput(error, \"\", recordPath))));\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Effect, Layer } from "effect";
2
- import { RECORD_SCHEMA_VERSION } from "../record/model/identifiers.cjs";
2
+ import type { RecordAttachmentMigrationTarget } from "../record/host/types.cjs";
3
3
  import { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired } from "../record/reader/errors.cjs";
4
4
  import { RecordFileSystem } from "../record/platform/services.cjs";
5
5
  export type RecordCliCommand = "clean" | "migrate";
@@ -19,7 +19,7 @@ export interface RecordCliCommandOutput {
19
19
  export declare const NodeRecordCliLive: Layer.Layer<import("../coordination/record-leases.cjs").RecordCoordination | RecordFileSystem | import("../record/platform/services.cjs").RecordEntropy | import("../record/platform/services.cjs").RecordGit, never, never>;
20
20
  export interface AutomaticRecordMigrationReceipt {
21
21
  readonly restoreCommit: string;
22
- readonly targetSchemaVersion: typeof RECORD_SCHEMA_VERSION;
22
+ readonly attachments: readonly RecordAttachmentMigrationTarget[];
23
23
  }
24
24
  /**
25
25
  * Preflight for ordinary CLI entry points. Every Scope is closed before the
@@ -31,7 +31,7 @@ export declare function ensureAutomaticRecordMigration(input: {
31
31
  readonly record?: string;
32
32
  }): Effect.Effect<never, import("../record/index.cjs").RecordRootConstructionError, never> | Effect.Effect<Readonly<{
33
33
  restoreCommit: string;
34
- targetSchemaVersion: 2;
34
+ attachments: readonly RecordAttachmentMigrationTarget[];
35
35
  }> | null, import("../record/platform/errors.cjs").RecordMaintenanceBusy | import("../record/platform/errors.cjs").RecordGitCommandError | import("../record/platform/errors.cjs").RecordFileSystemError | import("../coordination/record-leases.cjs").RecordCoordinationIdentityMismatch | import("../record/reader/errors.cjs").RecordBootstrapInvalid | RecordMigrationRequired | import("../record/reader/errors.cjs").RecordFormatUnsupported | import("../record/reader/errors.cjs").RecordMigrationInterruptedState | import("../record/reader/errors.cjs").RecordMigrationPlanStale | import("../record/reader/errors.cjs").RecordMigrationGitRestoreRequired | RecordAutoMigrationGitSaveRequired | import("../record/reader/errors.cjs").RecordMigrationInvalid | import("../record/reader/errors.cjs").RecordMigrationRecoveryRequired, import("../coordination/record-leases.cjs").RecordCoordination | RecordFileSystem | import("../record/platform/services.cjs").RecordGit>;
36
36
  /**
37
37
  * Effect-native command handling for the Record maintenance surface. The
@@ -1,5 +1,5 @@
1
1
  import { Effect, Layer } from "effect";
2
- import { RECORD_SCHEMA_VERSION } from "../record/model/identifiers.mjs";
2
+ import type { RecordAttachmentMigrationTarget } from "../record/host/types.mjs";
3
3
  import { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired } from "../record/reader/errors.mjs";
4
4
  import { RecordFileSystem } from "../record/platform/services.mjs";
5
5
  export type RecordCliCommand = "clean" | "migrate";
@@ -19,7 +19,7 @@ export interface RecordCliCommandOutput {
19
19
  export declare const NodeRecordCliLive: Layer.Layer<import("../coordination/record-leases.mjs").RecordCoordination | RecordFileSystem | import("../record/platform/services.mjs").RecordEntropy | import("../record/platform/services.mjs").RecordGit, never, never>;
20
20
  export interface AutomaticRecordMigrationReceipt {
21
21
  readonly restoreCommit: string;
22
- readonly targetSchemaVersion: typeof RECORD_SCHEMA_VERSION;
22
+ readonly attachments: readonly RecordAttachmentMigrationTarget[];
23
23
  }
24
24
  /**
25
25
  * Preflight for ordinary CLI entry points. Every Scope is closed before the
@@ -31,7 +31,7 @@ export declare function ensureAutomaticRecordMigration(input: {
31
31
  readonly record?: string;
32
32
  }): Effect.Effect<never, import("../record/index.mjs").RecordRootConstructionError, never> | Effect.Effect<Readonly<{
33
33
  restoreCommit: string;
34
- targetSchemaVersion: 2;
34
+ attachments: readonly RecordAttachmentMigrationTarget[];
35
35
  }> | null, import("../record/platform/errors.mjs").RecordMaintenanceBusy | import("../record/platform/errors.mjs").RecordGitCommandError | import("../record/platform/errors.mjs").RecordFileSystemError | import("../coordination/record-leases.mjs").RecordCoordinationIdentityMismatch | import("../record/reader/errors.mjs").RecordBootstrapInvalid | RecordMigrationRequired | import("../record/reader/errors.mjs").RecordFormatUnsupported | import("../record/reader/errors.mjs").RecordMigrationInterruptedState | import("../record/reader/errors.mjs").RecordMigrationPlanStale | import("../record/reader/errors.mjs").RecordMigrationGitRestoreRequired | RecordAutoMigrationGitSaveRequired | import("../record/reader/errors.mjs").RecordMigrationInvalid | import("../record/reader/errors.mjs").RecordMigrationRecoveryRequired, import("../coordination/record-leases.mjs").RecordCoordination | RecordFileSystem | import("../record/platform/services.mjs").RecordGit>;
36
36
  /**
37
37
  * Effect-native command handling for the Record maintenance surface. The
@@ -1,5 +1,5 @@
1
1
  import { Effect, Layer } from "effect";
2
- import { RECORD_SCHEMA_VERSION } from "../record/model/identifiers.js";
2
+ import type { RecordAttachmentMigrationTarget } from "../record/host/types.js";
3
3
  import { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired } from "../record/reader/errors.js";
4
4
  import { RecordFileSystem } from "../record/platform/services.js";
5
5
  export type RecordCliCommand = "clean" | "migrate";
@@ -19,7 +19,7 @@ export interface RecordCliCommandOutput {
19
19
  export declare const NodeRecordCliLive: Layer.Layer<import("../coordination/record-leases.js").RecordCoordination | RecordFileSystem | import("../record/platform/services.js").RecordEntropy | import("../record/platform/services.js").RecordGit, never, never>;
20
20
  export interface AutomaticRecordMigrationReceipt {
21
21
  readonly restoreCommit: string;
22
- readonly targetSchemaVersion: typeof RECORD_SCHEMA_VERSION;
22
+ readonly attachments: readonly RecordAttachmentMigrationTarget[];
23
23
  }
24
24
  /**
25
25
  * Preflight for ordinary CLI entry points. Every Scope is closed before the
@@ -31,7 +31,7 @@ export declare function ensureAutomaticRecordMigration(input: {
31
31
  readonly record?: string;
32
32
  }): Effect.Effect<never, import("../record/index.js").RecordRootConstructionError, never> | Effect.Effect<Readonly<{
33
33
  restoreCommit: string;
34
- targetSchemaVersion: 2;
34
+ attachments: readonly RecordAttachmentMigrationTarget[];
35
35
  }> | null, import("../record/platform/errors.js").RecordMaintenanceBusy | import("../record/platform/errors.js").RecordGitCommandError | import("../record/platform/errors.js").RecordFileSystemError | import("../coordination/record-leases.js").RecordCoordinationIdentityMismatch | import("../record/reader/errors.js").RecordBootstrapInvalid | RecordMigrationRequired | import("../record/reader/errors.js").RecordFormatUnsupported | import("../record/reader/errors.js").RecordMigrationInterruptedState | import("../record/reader/errors.js").RecordMigrationPlanStale | import("../record/reader/errors.js").RecordMigrationGitRestoreRequired | RecordAutoMigrationGitSaveRequired | import("../record/reader/errors.js").RecordMigrationInvalid | import("../record/reader/errors.js").RecordMigrationRecoveryRequired, import("../coordination/record-leases.js").RecordCoordination | RecordFileSystem | import("../record/platform/services.js").RecordGit>;
36
36
  /**
37
37
  * Effect-native command handling for the Record maintenance surface. The