niceeval 0.13.1 → 0.13.2

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 (548) hide show
  1. package/INDEX.md +25 -2
  2. package/README.md +9 -10
  3. package/README.zh.md +9 -10
  4. package/dist/agents/ai-sdk.cjs.map +1 -1
  5. package/dist/agents/ai-sdk.d.cts +1 -1
  6. package/dist/agents/ai-sdk.d.mts +1 -1
  7. package/dist/agents/ai-sdk.d.ts +1 -1
  8. package/dist/agents/bub-install-spec.cjs +19 -5
  9. package/dist/agents/bub-install-spec.cjs.map +1 -1
  10. package/dist/agents/bub-install-spec.d.cts +9 -2
  11. package/dist/agents/bub-install-spec.d.mts +9 -2
  12. package/dist/agents/bub-install-spec.d.ts +9 -2
  13. package/dist/agents/bub-install-spec.js +14 -12
  14. package/dist/agents/bub.cjs +10 -6
  15. package/dist/agents/bub.cjs.map +1 -1
  16. package/dist/agents/bub.d.cts +2 -2
  17. package/dist/agents/bub.d.mts +2 -2
  18. package/dist/agents/bub.d.ts +2 -2
  19. package/dist/agents/claude-code.cjs.map +1 -1
  20. package/dist/agents/claude-code.d.cts +2 -2
  21. package/dist/agents/claude-code.d.mts +2 -2
  22. package/dist/agents/claude-code.d.ts +2 -2
  23. package/dist/agents/codex.cjs +4 -4
  24. package/dist/agents/codex.cjs.map +1 -1
  25. package/dist/agents/codex.d.cts +3 -3
  26. package/dist/agents/codex.d.mts +3 -3
  27. package/dist/agents/codex.d.ts +3 -3
  28. package/dist/agents/coding-cli-versions.cjs +10 -1
  29. package/dist/agents/coding-cli-versions.cjs.map +1 -1
  30. package/dist/agents/coding-cli-versions.d.cts +8 -3
  31. package/dist/agents/coding-cli-versions.d.mts +8 -3
  32. package/dist/agents/coding-cli-versions.d.ts +8 -3
  33. package/dist/agents/coding-cli-versions.js +18 -12
  34. package/dist/agents/deepseek-harness.cjs +151 -0
  35. package/dist/agents/deepseek-harness.cjs.map +1 -0
  36. package/dist/agents/deepseek-harness.d.cts +14 -0
  37. package/dist/agents/deepseek-harness.d.mts +14 -0
  38. package/dist/agents/deepseek-harness.d.ts +14 -0
  39. package/dist/agents/deepseek-harness.js +7 -0
  40. package/dist/agents/deepseek-harness.js.map +1 -0
  41. package/dist/agents/exact-npm-plugins.cjs +28 -0
  42. package/dist/agents/exact-npm-plugins.cjs.map +1 -0
  43. package/dist/agents/exact-npm-plugins.d.cts +10 -0
  44. package/dist/agents/exact-npm-plugins.d.mts +10 -0
  45. package/dist/agents/exact-npm-plugins.d.ts +10 -0
  46. package/dist/agents/exact-npm-plugins.js +8 -0
  47. package/dist/agents/exact-npm-plugins.js.map +1 -0
  48. package/dist/agents/index.cjs +5 -1
  49. package/dist/agents/index.cjs.map +1 -1
  50. package/dist/agents/index.d.cts +4 -0
  51. package/dist/agents/index.d.mts +4 -0
  52. package/dist/agents/index.d.ts +4 -0
  53. package/dist/agents/index.js +54 -50
  54. package/dist/agents/index.mjs +54 -50
  55. package/dist/agents/omp.cjs +170 -0
  56. package/dist/agents/omp.cjs.map +1 -0
  57. package/dist/agents/omp.d.cts +14 -0
  58. package/dist/agents/omp.d.mts +14 -0
  59. package/dist/agents/omp.d.ts +14 -0
  60. package/dist/agents/omp.js +7 -0
  61. package/dist/agents/omp.js.map +1 -0
  62. package/dist/agents/openclaw.cjs +51 -2
  63. package/dist/agents/openclaw.cjs.map +1 -1
  64. package/dist/agents/openclaw.d.cts +2 -0
  65. package/dist/agents/openclaw.d.mts +2 -0
  66. package/dist/agents/openclaw.d.ts +2 -0
  67. package/dist/agents/types.cjs.map +1 -1
  68. package/dist/agents/types.d.cts +4 -4
  69. package/dist/agents/types.d.mts +4 -4
  70. package/dist/agents/types.d.ts +4 -4
  71. package/dist/agents/ui-message-stream.cjs +24 -7
  72. package/dist/agents/ui-message-stream.cjs.map +1 -1
  73. package/dist/analysis/api.cjs +28 -2
  74. package/dist/analysis/api.cjs.map +1 -1
  75. package/dist/analysis/api.d.cts +22 -1
  76. package/dist/analysis/api.d.mts +22 -1
  77. package/dist/analysis/api.d.ts +22 -1
  78. package/dist/analysis/api.js +8 -6
  79. package/dist/analysis/bindings.cjs +11 -18
  80. package/dist/analysis/bindings.cjs.map +1 -1
  81. package/dist/analysis/bindings.d.cts +177 -49
  82. package/dist/analysis/bindings.d.mts +177 -49
  83. package/dist/analysis/bindings.d.ts +177 -49
  84. package/dist/analysis/contracts.cjs +1 -0
  85. package/dist/analysis/contracts.cjs.map +1 -1
  86. package/dist/analysis/contracts.d.cts +43 -3
  87. package/dist/analysis/contracts.d.mts +43 -3
  88. package/dist/analysis/contracts.d.ts +43 -3
  89. package/dist/analysis/cost-projection.cjs +2 -1
  90. package/dist/analysis/cost-projection.cjs.map +1 -1
  91. package/dist/analysis/cost-projection.d.cts +1 -1
  92. package/dist/analysis/cost-projection.d.mts +1 -1
  93. package/dist/analysis/cost-projection.d.ts +1 -1
  94. package/dist/analysis/cost.cjs +13 -3
  95. package/dist/analysis/cost.cjs.map +1 -1
  96. package/dist/analysis/cost.d.cts +10 -3
  97. package/dist/analysis/cost.d.mts +10 -3
  98. package/dist/analysis/cost.d.ts +10 -3
  99. package/dist/analysis/experiment-groups.cjs +96 -0
  100. package/dist/analysis/experiment-groups.cjs.map +1 -0
  101. package/dist/analysis/experiment-groups.d.cts +9 -0
  102. package/dist/analysis/experiment-groups.d.mts +9 -0
  103. package/dist/analysis/experiment-groups.d.ts +9 -0
  104. package/dist/analysis/experiment-groups.js +10 -0
  105. package/dist/analysis/experiment-groups.js.map +1 -0
  106. package/dist/analysis/index.cjs +4 -1
  107. package/dist/analysis/index.cjs.map +1 -1
  108. package/dist/analysis/index.d.cts +4 -2
  109. package/dist/analysis/index.d.mts +4 -2
  110. package/dist/analysis/index.d.ts +4 -2
  111. package/dist/analysis/index.js +40 -36
  112. package/dist/analysis/index.mjs +40 -36
  113. package/dist/assertions/limits.cjs +4 -0
  114. package/dist/assertions/limits.cjs.map +1 -1
  115. package/dist/assertions/limits.d.cts +4 -0
  116. package/dist/assertions/limits.d.mts +4 -0
  117. package/dist/assertions/limits.d.ts +4 -0
  118. package/dist/assertions/match.cjs +63 -25
  119. package/dist/assertions/match.cjs.map +1 -1
  120. package/dist/assertions/match.d.cts +7 -0
  121. package/dist/assertions/match.d.mts +7 -0
  122. package/dist/assertions/match.d.ts +7 -0
  123. package/dist/assertions/record/attachment.cjs +32 -4
  124. package/dist/assertions/record/attachment.cjs.map +1 -1
  125. package/dist/assertions/record/diff.cjs +10 -4
  126. package/dist/assertions/record/diff.cjs.map +1 -1
  127. package/dist/assertions/record/producer.cjs +101 -4
  128. package/dist/assertions/record/producer.cjs.map +1 -1
  129. package/dist/assertions/record/producer.d.cts +4 -1
  130. package/dist/assertions/record/producer.d.mts +4 -1
  131. package/dist/assertions/record/producer.d.ts +4 -1
  132. package/dist/assertions/runtime.cjs +45 -5
  133. package/dist/assertions/runtime.cjs.map +1 -1
  134. package/dist/cli/record.cjs +113 -8
  135. package/dist/cli/record.cjs.map +1 -1
  136. package/dist/cli/record.d.cts +20 -1
  137. package/dist/cli/record.d.mts +20 -1
  138. package/dist/cli/record.d.ts +20 -1
  139. package/dist/cli/record.js +4 -2
  140. package/dist/cli.cjs +386 -31
  141. package/dist/cli.cjs.map +1 -1
  142. package/dist/cli.d.cts +10 -2
  143. package/dist/cli.d.mts +10 -2
  144. package/dist/cli.d.ts +10 -2
  145. package/dist/context/send-retry.cjs +4 -4
  146. package/dist/context/send-retry.cjs.map +1 -1
  147. package/dist/coordination/host/runtime.cjs +8 -30
  148. package/dist/coordination/host/runtime.cjs.map +1 -1
  149. package/dist/coordination/host/runtime.d.cts +3 -3
  150. package/dist/coordination/host/runtime.d.mts +3 -3
  151. package/dist/coordination/host/runtime.d.ts +3 -3
  152. package/dist/coordination/host/types.cjs.map +1 -1
  153. package/dist/coordination/host/types.d.cts +0 -5
  154. package/dist/coordination/host/types.d.mts +0 -5
  155. package/dist/coordination/host/types.d.ts +0 -5
  156. package/dist/coordination/platform/node.cjs +90 -9
  157. package/dist/coordination/platform/node.cjs.map +1 -1
  158. package/dist/define.cjs +25 -1
  159. package/dist/define.cjs.map +1 -1
  160. package/dist/experiment/host/index.cjs +1 -0
  161. package/dist/experiment/host/index.cjs.map +1 -1
  162. package/dist/i18n/en.cjs +26 -8
  163. package/dist/i18n/en.cjs.map +1 -1
  164. package/dist/i18n/en.d.cts +19 -6
  165. package/dist/i18n/en.d.mts +19 -6
  166. package/dist/i18n/en.d.ts +19 -6
  167. package/dist/index.cjs.map +1 -1
  168. package/dist/index.d.cts +1 -1
  169. package/dist/index.d.mts +1 -1
  170. package/dist/index.d.ts +1 -1
  171. package/dist/o11y/parsers/hermes.cjs +1 -1
  172. package/dist/o11y/parsers/hermes.cjs.map +1 -1
  173. package/dist/o11y/prices.json +1 -1
  174. package/dist/o11y/record/families.cjs +12 -3
  175. package/dist/o11y/record/families.cjs.map +1 -1
  176. package/dist/o11y/record/families.d.cts +8 -8
  177. package/dist/o11y/record/families.d.mts +8 -8
  178. package/dist/o11y/record/families.d.ts +8 -8
  179. package/dist/o11y/record/family-projectors.d.cts +66 -18
  180. package/dist/o11y/record/family-projectors.d.mts +66 -18
  181. package/dist/o11y/record/family-projectors.d.ts +66 -18
  182. package/dist/o11y/record/family-writers.d.cts +11 -3
  183. package/dist/o11y/record/family-writers.d.mts +11 -3
  184. package/dist/o11y/record/family-writers.d.ts +11 -3
  185. package/dist/o11y/record/runner-producer.cjs +14 -4
  186. package/dist/o11y/record/runner-producer.cjs.map +1 -1
  187. package/dist/record/codec/core.d.cts +2 -2
  188. package/dist/record/codec/core.d.mts +2 -2
  189. package/dist/record/codec/core.d.ts +2 -2
  190. package/dist/record/family/catalog.d.cts +44 -12
  191. package/dist/record/family/catalog.d.mts +44 -12
  192. package/dist/record/family/catalog.d.ts +44 -12
  193. package/dist/record/family/index.js +128 -124
  194. package/dist/record/family/observability-v1.cjs +35 -0
  195. package/dist/record/family/observability-v1.cjs.map +1 -0
  196. package/dist/record/family/observability-v1.d.cts +3 -0
  197. package/dist/record/family/observability-v1.d.mts +3 -0
  198. package/dist/record/family/observability-v1.d.ts +3 -0
  199. package/dist/record/family/observability-v1.js +6 -0
  200. package/dist/record/family/observability-v1.js.map +1 -0
  201. package/dist/record/family/observability.cjs +58 -9
  202. package/dist/record/family/observability.cjs.map +1 -1
  203. package/dist/record/family/observability.d.cts +1014 -15
  204. package/dist/record/family/observability.d.mts +1014 -15
  205. package/dist/record/family/observability.d.ts +1014 -15
  206. package/dist/record/family/observability.js +22 -18
  207. package/dist/record/host/runtime.cjs +600 -31
  208. package/dist/record/host/runtime.cjs.map +1 -1
  209. package/dist/record/host/types.cjs.map +1 -1
  210. package/dist/record/host/types.d.cts +33 -9
  211. package/dist/record/host/types.d.mts +33 -9
  212. package/dist/record/host/types.d.ts +33 -9
  213. package/dist/record/maintenance/runtime.cjs +1 -2
  214. package/dist/record/maintenance/runtime.cjs.map +1 -1
  215. package/dist/record/model/core.cjs.map +1 -1
  216. package/dist/record/model/core.d.cts +1 -1
  217. package/dist/record/model/core.d.mts +1 -1
  218. package/dist/record/model/core.d.ts +1 -1
  219. package/dist/record/model/definition.d.cts +6 -6
  220. package/dist/record/model/definition.d.mts +6 -6
  221. package/dist/record/model/definition.d.ts +6 -6
  222. package/dist/record/model/identifiers.cjs +1 -1
  223. package/dist/record/model/identifiers.cjs.map +1 -1
  224. package/dist/record/model/identifiers.d.cts +1 -1
  225. package/dist/record/model/identifiers.d.mts +1 -1
  226. package/dist/record/model/identifiers.d.ts +1 -1
  227. package/dist/record/platform/node.cjs +159 -23
  228. package/dist/record/platform/node.cjs.map +1 -1
  229. package/dist/record/platform/services.cjs.map +1 -1
  230. package/dist/record/platform/services.d.cts +15 -2
  231. package/dist/record/platform/services.d.mts +15 -2
  232. package/dist/record/platform/services.d.ts +15 -2
  233. package/dist/record/reader/errors.cjs +37 -1
  234. package/dist/record/reader/errors.cjs.map +1 -1
  235. package/dist/record/reader/errors.d.cts +49 -1
  236. package/dist/record/reader/errors.d.mts +49 -1
  237. package/dist/record/reader/errors.d.ts +49 -1
  238. package/dist/record/reader/errors.js +22 -12
  239. package/dist/record/reader/format.cjs +76 -17
  240. package/dist/record/reader/format.cjs.map +1 -1
  241. package/dist/record/reader/format.d.cts +11 -4
  242. package/dist/record/reader/format.d.mts +11 -4
  243. package/dist/record/reader/format.d.ts +11 -4
  244. package/dist/record/reader/format.js +2 -0
  245. package/dist/record/reader/index.js +32 -18
  246. package/dist/record/reader/runtime.cjs +64 -0
  247. package/dist/record/reader/runtime.cjs.map +1 -1
  248. package/dist/record/reader/runtime.d.cts +15 -0
  249. package/dist/record/reader/runtime.d.mts +15 -0
  250. package/dist/record/reader/runtime.d.ts +15 -0
  251. package/dist/record/reader/runtime.js +2 -0
  252. package/dist/report/assets/styles.css +53 -29
  253. package/dist/report/built-in/analysis-values.cjs +21 -13
  254. package/dist/report/built-in/analysis-values.cjs.map +1 -1
  255. package/dist/report/built-in/analysis-values.d.cts +11 -22
  256. package/dist/report/built-in/analysis-values.d.mts +11 -22
  257. package/dist/report/built-in/analysis-values.d.ts +11 -22
  258. package/dist/report/built-in/analysis-values.js +4 -6
  259. package/dist/report/built-in/index.cjs +1 -3
  260. package/dist/report/built-in/index.cjs.map +1 -1
  261. package/dist/report/built-in/index.d.cts +1 -1
  262. package/dist/report/built-in/index.d.mts +1 -1
  263. package/dist/report/built-in/index.d.ts +1 -1
  264. package/dist/report/built-in/index.js +4 -8
  265. package/dist/report/built-in/index.mjs +4 -8
  266. package/dist/report/built-in/machine.cjs +0 -2
  267. package/dist/report/built-in/machine.cjs.map +1 -1
  268. package/dist/report/built-in/machine.d.cts +0 -2
  269. package/dist/report/built-in/machine.d.mts +0 -2
  270. package/dist/report/built-in/machine.d.ts +0 -2
  271. package/dist/report/built-in/result-components.cjs +49 -51
  272. package/dist/report/built-in/result-components.cjs.map +1 -1
  273. package/dist/report/built-in/result-components.d.cts +16 -17
  274. package/dist/report/built-in/result-components.d.mts +16 -17
  275. package/dist/report/built-in/result-components.d.ts +16 -17
  276. package/dist/report/built-in/result-components.js +0 -4
  277. package/dist/report/built-in/run-membership-overview.cjs +126 -17
  278. package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
  279. package/dist/report/built-in/run-membership-overview.d.cts +14 -0
  280. package/dist/report/built-in/run-membership-overview.d.mts +14 -0
  281. package/dist/report/built-in/run-membership-overview.d.ts +14 -0
  282. package/dist/report/built-in/run-membership-overview.js +4 -2
  283. package/dist/report/built-in/standard.cjs +80 -45
  284. package/dist/report/built-in/standard.cjs.map +1 -1
  285. package/dist/report/built-in/standard.d.cts +19 -41
  286. package/dist/report/built-in/standard.d.mts +19 -41
  287. package/dist/report/built-in/standard.d.ts +19 -41
  288. package/dist/report/built-in/standard.js +6 -6
  289. package/dist/report/components/attempt-detail/compute.cjs +78 -2
  290. package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
  291. package/dist/report/components/attempt-detail/compute.d.cts +1 -1
  292. package/dist/report/components/attempt-detail/compute.d.mts +1 -1
  293. package/dist/report/components/attempt-detail/compute.d.ts +1 -1
  294. package/dist/report/components/attempt-detail/content.cjs +1 -1
  295. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  296. package/dist/report/components/entity-lists/compute.cjs +42 -5
  297. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  298. package/dist/report/components/entity-lists/compute.d.cts +10 -8
  299. package/dist/report/components/entity-lists/compute.d.mts +10 -8
  300. package/dist/report/components/entity-lists/compute.d.ts +10 -8
  301. package/dist/report/components/entity-lists/content.cjs +31 -6
  302. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  303. package/dist/report/components/entity-lists/index.cjs +9 -4
  304. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  305. package/dist/report/components/entity-lists/index.d.cts +4 -7
  306. package/dist/report/components/entity-lists/index.d.mts +4 -7
  307. package/dist/report/components/entity-lists/index.d.ts +4 -7
  308. package/dist/report/components/summaries/compute.cjs +8 -1
  309. package/dist/report/components/summaries/compute.cjs.map +1 -1
  310. package/dist/report/components/summaries/compute.d.cts +9 -1
  311. package/dist/report/components/summaries/compute.d.mts +9 -1
  312. package/dist/report/components/summaries/compute.d.ts +9 -1
  313. package/dist/report/components/summaries/index.cjs +48 -4
  314. package/dist/report/components/summaries/index.cjs.map +1 -1
  315. package/dist/report/components/summaries/index.d.cts +7 -4
  316. package/dist/report/components/summaries/index.d.mts +7 -4
  317. package/dist/report/components/summaries/index.d.ts +7 -4
  318. package/dist/report/definition/cell.cjs +3 -0
  319. package/dist/report/definition/cell.cjs.map +1 -1
  320. package/dist/report/definition/cell.d.cts +2 -0
  321. package/dist/report/definition/cell.d.mts +2 -0
  322. package/dist/report/definition/cell.d.ts +2 -0
  323. package/dist/report/definition/primitives/chart.cjs +8 -5
  324. package/dist/report/definition/primitives/chart.cjs.map +1 -1
  325. package/dist/report/definition/primitives/points-dataset.cjs +1 -0
  326. package/dist/report/definition/primitives/points-dataset.cjs.map +1 -1
  327. package/dist/report/definition/primitives.cjs +15 -2
  328. package/dist/report/definition/primitives.cjs.map +1 -1
  329. package/dist/report/definition/report.cjs +27 -3
  330. package/dist/report/definition/report.cjs.map +1 -1
  331. package/dist/report/definition/report.d.cts +8 -0
  332. package/dist/report/definition/report.d.mts +8 -0
  333. package/dist/report/definition/report.d.ts +8 -0
  334. package/dist/report/execution/machine.cjs +30 -14
  335. package/dist/report/execution/machine.cjs.map +1 -1
  336. package/dist/report/execution/machine.d.cts +20 -10
  337. package/dist/report/execution/machine.d.mts +20 -10
  338. package/dist/report/execution/machine.d.ts +20 -10
  339. package/dist/report/execution/machine.js +6 -6
  340. package/dist/report/host/execute.cjs +25 -16
  341. package/dist/report/host/execute.cjs.map +1 -1
  342. package/dist/report/host/execute.d.cts +4 -0
  343. package/dist/report/host/execute.d.mts +4 -0
  344. package/dist/report/host/execute.d.ts +4 -0
  345. package/dist/report/host/from-record.cjs +22 -5
  346. package/dist/report/host/from-record.cjs.map +1 -1
  347. package/dist/report/host/machine.cjs +53 -11
  348. package/dist/report/host/machine.cjs.map +1 -1
  349. package/dist/report/host/site-runtime.cjs +9 -8
  350. package/dist/report/host/site-runtime.cjs.map +1 -1
  351. package/dist/report/host/site-runtime.d.cts +1 -1
  352. package/dist/report/host/site-runtime.d.mts +1 -1
  353. package/dist/report/host/site-runtime.d.ts +1 -1
  354. package/dist/report/host/static.cjs +56 -9
  355. package/dist/report/host/static.cjs.map +1 -1
  356. package/dist/report/index.cjs.map +1 -1
  357. package/dist/report/index.d.cts +1 -1
  358. package/dist/report/index.d.mts +1 -1
  359. package/dist/report/index.d.ts +1 -1
  360. package/dist/report/model/dataset.cjs +7 -2
  361. package/dist/report/model/dataset.cjs.map +1 -1
  362. package/dist/report/model/locale.cjs +2 -0
  363. package/dist/report/model/locale.cjs.map +1 -1
  364. package/dist/report/model/locale.d.cts +1 -0
  365. package/dist/report/model/locale.d.mts +1 -0
  366. package/dist/report/model/locale.d.ts +1 -0
  367. package/dist/report/model/metrics.cjs +3 -1
  368. package/dist/report/model/metrics.cjs.map +1 -1
  369. package/dist/report/model/pricing.cjs +16 -11
  370. package/dist/report/model/pricing.cjs.map +1 -1
  371. package/dist/report/react/styles.css +53 -29
  372. package/dist/runner/adoption.cjs +1 -0
  373. package/dist/runner/adoption.cjs.map +1 -1
  374. package/dist/runner/attempt.cjs +44 -5
  375. package/dist/runner/attempt.cjs.map +1 -1
  376. package/dist/runner/attempt.d.cts +13 -1
  377. package/dist/runner/attempt.d.mts +13 -1
  378. package/dist/runner/attempt.d.ts +13 -1
  379. package/dist/runner/config-identity.cjs +10 -2
  380. package/dist/runner/config-identity.cjs.map +1 -1
  381. package/dist/runner/config-identity.d.cts +4 -2
  382. package/dist/runner/config-identity.d.mts +4 -2
  383. package/dist/runner/config-identity.d.ts +4 -2
  384. package/dist/runner/feedback/human.cjs +298 -59
  385. package/dist/runner/feedback/human.cjs.map +1 -1
  386. package/dist/runner/feedback/json.cjs +14 -6
  387. package/dist/runner/feedback/json.cjs.map +1 -1
  388. package/dist/runner/feedback/json.d.cts +3 -2
  389. package/dist/runner/feedback/json.d.mts +3 -2
  390. package/dist/runner/feedback/json.d.ts +3 -2
  391. package/dist/runner/feedback/reducer.cjs +2 -0
  392. package/dist/runner/feedback/reducer.cjs.map +1 -1
  393. package/dist/runner/judge-config.cjs +1 -1
  394. package/dist/runner/judge-config.cjs.map +1 -1
  395. package/dist/runner/ledger.cjs +124 -12
  396. package/dist/runner/ledger.cjs.map +1 -1
  397. package/dist/runner/project-current.cjs +13 -5
  398. package/dist/runner/project-current.cjs.map +1 -1
  399. package/dist/runner/run.cjs +564 -256
  400. package/dist/runner/run.cjs.map +1 -1
  401. package/dist/runner/sandbox-pool.cjs +161 -30
  402. package/dist/runner/sandbox-pool.cjs.map +1 -1
  403. package/dist/runner/sandbox-pool.d.cts +34 -2
  404. package/dist/runner/sandbox-pool.d.mts +34 -2
  405. package/dist/runner/sandbox-pool.d.ts +34 -2
  406. package/dist/runner/shared-state-lease.cjs +803 -0
  407. package/dist/runner/shared-state-lease.cjs.map +1 -0
  408. package/dist/runner/shared-state-lease.d.cts +121 -0
  409. package/dist/runner/shared-state-lease.d.mts +121 -0
  410. package/dist/runner/shared-state-lease.d.ts +121 -0
  411. package/dist/runner/shared-state-lease.js +24 -0
  412. package/dist/runner/shared-state-lease.js.map +1 -0
  413. package/dist/runner/teardown-registry.cjs +97 -34
  414. package/dist/runner/teardown-registry.cjs.map +1 -1
  415. package/dist/runner/teardown-registry.d.cts +27 -1
  416. package/dist/runner/teardown-registry.d.mts +27 -1
  417. package/dist/runner/teardown-registry.d.ts +27 -1
  418. package/dist/runner/teardown-registry.js +20 -16
  419. package/dist/runner/types.cjs.map +1 -1
  420. package/dist/runner/types.d.cts +31 -5
  421. package/dist/runner/types.d.mts +31 -5
  422. package/dist/runner/types.d.ts +31 -5
  423. package/dist/sample/analysis.cjs +249 -459
  424. package/dist/sample/analysis.cjs.map +1 -1
  425. package/dist/sample/capability.cjs +138 -7
  426. package/dist/sample/capability.cjs.map +1 -1
  427. package/dist/sample/capability.d.cts +3 -1
  428. package/dist/sample/capability.d.mts +3 -1
  429. package/dist/sample/capability.d.ts +3 -1
  430. package/dist/sample/capability.js +8 -6
  431. package/dist/sandbox/docker-agent-image.cjs +5 -1
  432. package/dist/sandbox/docker-agent-image.cjs.map +1 -1
  433. package/dist/sandbox/docker-agent-image.d.cts +2 -0
  434. package/dist/sandbox/docker-agent-image.d.mts +2 -0
  435. package/dist/sandbox/docker-agent-image.d.ts +2 -0
  436. package/dist/sandbox/docker-agent-image.js +14 -10
  437. package/dist/sandbox/docker-profile/schema.cjs +283 -534
  438. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  439. package/dist/sandbox/docker-profile/schema.d.cts +10 -27
  440. package/dist/sandbox/docker-profile/schema.d.mts +10 -27
  441. package/dist/sandbox/docker-profile/schema.d.ts +10 -27
  442. package/dist/sandbox/e2b-agent-template.cjs +5 -2
  443. package/dist/sandbox/e2b-agent-template.cjs.map +1 -1
  444. package/dist/sandbox/index.cjs +4 -2
  445. package/dist/sandbox/index.cjs.map +1 -1
  446. package/dist/sandbox/index.d.cts +1 -1
  447. package/dist/sandbox/index.d.mts +1 -1
  448. package/dist/sandbox/index.d.ts +1 -1
  449. package/dist/sandbox/index.js +120 -116
  450. package/dist/sandbox/index.mjs +120 -116
  451. package/dist/sandbox/keep-registry.cjs +28 -66
  452. package/dist/sandbox/keep-registry.cjs.map +1 -1
  453. package/dist/sandbox/types.cjs.map +1 -1
  454. package/dist/sandbox/types.d.cts +1 -1
  455. package/dist/sandbox/types.d.mts +1 -1
  456. package/dist/sandbox/types.d.ts +1 -1
  457. package/dist/shared/aggregate.cjs +16 -6
  458. package/dist/shared/aggregate.cjs.map +1 -1
  459. package/dist/shared/aggregate.d.cts +12 -4
  460. package/dist/shared/aggregate.d.mts +12 -4
  461. package/dist/shared/aggregate.d.ts +12 -4
  462. package/dist/shared/turn-label.cjs +20 -2
  463. package/dist/shared/turn-label.cjs.map +1 -1
  464. package/dist/shared/turn-label.d.cts +2 -0
  465. package/dist/shared/turn-label.d.mts +2 -0
  466. package/dist/shared/turn-label.d.ts +2 -0
  467. package/dist/shared/turn-label.js +4 -2
  468. package/dist/vendor/remark/remark-gfm.cjs +7 -7
  469. package/dist/vendor/remark/remark-gfm.cjs.map +1 -1
  470. package/dist/vendor/remark/remark-parse.cjs +12 -12
  471. package/dist/vendor/remark/remark-parse.cjs.map +1 -1
  472. package/dist/vendor/remark/remark.cjs +13 -13
  473. package/dist/vendor/remark/remark.cjs.map +1 -1
  474. package/dist/view/server.cjs +6 -0
  475. package/dist/view/server.cjs.map +1 -1
  476. package/docs-site/images/hitl-handshake-zh.svg +3 -3
  477. package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
  478. package/docs-site/zh/examples/coding-agent-extensions.mdx +1 -1
  479. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +4 -3
  480. package/docs-site/zh/examples/integrations/claude-sdk.mdx +3 -3
  481. package/docs-site/zh/examples/integrations/codex-sdk.mdx +5 -5
  482. package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
  483. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  484. package/docs-site/zh/explanation/adapter.mdx +5 -5
  485. package/docs-site/zh/explanation/assert.mdx +7 -7
  486. package/docs-site/zh/explanation/drive.mdx +4 -2
  487. package/docs-site/zh/explanation/evals.mdx +10 -8
  488. package/docs-site/zh/explanation/experiment.mdx +2 -2
  489. package/docs-site/zh/explanation/hitl.mdx +9 -9
  490. package/docs-site/zh/explanation/judge.mdx +5 -5
  491. package/docs-site/zh/explanation/overview.mdx +3 -3
  492. package/docs-site/zh/explanation/runner.mdx +1 -1
  493. package/docs-site/zh/index.mdx +3 -3
  494. package/docs-site/zh/reference/builtin-agents.mdx +13 -13
  495. package/docs-site/zh/reference/capabilities.mdx +1 -1
  496. package/docs-site/zh/reference/cli.mdx +18 -12
  497. package/docs-site/zh/reference/define-agent.mdx +130 -5
  498. package/docs-site/zh/reference/define-config.mdx +2 -2
  499. package/docs-site/zh/reference/define-eval.mdx +4 -4
  500. package/docs-site/zh/reference/events.mdx +11 -11
  501. package/docs-site/zh/reference/official-adapters.mdx +6 -6
  502. package/docs-site/zh/reference/results-data.mdx +6 -0
  503. package/docs-site/zh/troubleshooting/debugging.mdx +1 -1
  504. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +37 -5
  505. package/docs-site/zh/tutorials/accept-results.mdx +72 -0
  506. package/docs-site/zh/tutorials/agent-onboarding.mdx +6 -6
  507. package/docs-site/zh/tutorials/authoring.mdx +9 -13
  508. package/docs-site/zh/tutorials/ci-integration.mdx +6 -6
  509. package/docs-site/zh/tutorials/compare-runs.mdx +61 -0
  510. package/docs-site/zh/tutorials/concurrency.mdx +13 -12
  511. package/docs-site/zh/tutorials/configuration.mdx +4 -6
  512. package/docs-site/zh/tutorials/connect-your-agent.mdx +1 -1
  513. package/docs-site/zh/tutorials/control-run-cost.mdx +58 -0
  514. package/docs-site/zh/tutorials/criteria-files.mdx +2 -2
  515. package/docs-site/zh/tutorials/custom-reports.mdx +2 -2
  516. package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +46 -0
  517. package/docs-site/zh/tutorials/docker-in-docker.mdx +52 -43
  518. package/docs-site/zh/tutorials/eval-groups.mdx +6 -6
  519. package/docs-site/zh/tutorials/evaluation-kinds.mdx +3 -3
  520. package/docs-site/zh/tutorials/experiments.mdx +2 -3
  521. package/docs-site/zh/tutorials/handle-execution-failures.mdx +18 -10
  522. package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +16 -8
  523. package/docs-site/zh/tutorials/nixos-managed-dind.mdx +160 -0
  524. package/docs-site/zh/tutorials/plugins.mdx +14 -0
  525. package/docs-site/zh/tutorials/rerun-and-cache.mdx +4 -2
  526. package/docs-site/zh/tutorials/sandbox-agent.mdx +17 -11
  527. package/docs-site/zh/tutorials/sandbox-providers.mdx +17 -13
  528. package/docs-site/zh/tutorials/sandbox-reuse.mdx +12 -19
  529. package/docs-site/zh/tutorials/select-and-preview.mdx +65 -0
  530. package/docs-site/zh/tutorials/verify-judge.mdx +78 -0
  531. package/docs-site/zh/tutorials/viewing-results.mdx +38 -1
  532. package/docs-site/zh/tutorials/write-experiment.mdx +7 -5
  533. package/docs-site/zh/tutorials/write-send.mdx +9 -8
  534. package/package.json +9 -5
  535. package/dist/report/built-in/overview.cjs +0 -44
  536. package/dist/report/built-in/overview.cjs.map +0 -1
  537. package/dist/report/built-in/overview.d.cts +0 -6
  538. package/dist/report/built-in/overview.d.mts +0 -6
  539. package/dist/report/built-in/overview.d.ts +0 -6
  540. package/dist/report/built-in/overview.js +0 -9
  541. package/dist/report/built-in/overview.js.map +0 -1
  542. package/dist/runner/gate-lease.cjs +0 -283
  543. package/dist/runner/gate-lease.cjs.map +0 -1
  544. package/dist/runner/gate-lease.d.cts +0 -62
  545. package/dist/runner/gate-lease.d.mts +0 -62
  546. package/dist/runner/gate-lease.d.ts +0 -62
  547. package/dist/runner/gate-lease.js +0 -22
  548. package/dist/runner/gate-lease.js.map +0 -1
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NodeRecordCliLive = void 0;
4
+ exports.ensureAutomaticRecordMigration = ensureAutomaticRecordMigration;
4
5
  exports.runRecordCliCommand = runRecordCliCommand;
5
6
  const node_path_1 = require("node:path");
6
7
  const effect_1 = require("effect");
7
8
  const index_ts_1 = require("../record/index.cjs");
8
9
  const index_ts_2 = require("../record/host/index.cjs");
10
+ const identifiers_ts_1 = require("../record/model/identifiers.cjs");
11
+ const errors_ts_1 = require("../record/reader/errors.cjs");
12
+ const services_ts_1 = require("../record/platform/services.cjs");
9
13
  function output(input) {
10
14
  return Object.freeze({
11
15
  exitCode: input.exitCode,
@@ -14,6 +18,46 @@ function output(input) {
14
18
  });
15
19
  }
16
20
  exports.NodeRecordCliLive = index_ts_1.NodeRecordLive;
21
+ /**
22
+ * Preflight for ordinary CLI entry points. Every Scope is closed before the
23
+ * next lease kind is acquired: read check -> exclusive maintenance -> caller's
24
+ * fresh ordinary open.
25
+ */
26
+ function ensureAutomaticRecordMigration(input) {
27
+ const root = (0, index_ts_1.makeRecordRoot)((0, node_path_1.resolve)(input.cwd, input.record ?? ".niceeval/record"));
28
+ if (effect_1.Either.isLeft(root))
29
+ return effect_1.Effect.fail(root.left);
30
+ return effect_1.Effect.gen(function* () {
31
+ const fileSystem = yield* services_ts_1.RecordFileSystem;
32
+ if ((yield* fileSystem.pathKind((0, services_ts_1.recordPortablePath)(root.right, "record.json"))) === "missing") {
33
+ return null;
34
+ }
35
+ const checked = yield* effect_1.Effect.either(effect_1.Effect.scoped(index_ts_2.recordHost.current.openRead({ root: root.right })));
36
+ if (effect_1.Either.isRight(checked))
37
+ return null;
38
+ if (!(checked.left instanceof errors_ts_1.RecordMigrationRequired))
39
+ return yield* effect_1.Effect.fail(checked.left);
40
+ return yield* effect_1.Effect.scoped(effect_1.Effect.gen(function* () {
41
+ const session = yield* index_ts_2.recordHost.maintenance.open({ root: root.right });
42
+ const plan = yield* session.planMigrate();
43
+ if (plan.state !== "migration-required") {
44
+ return yield* effect_1.Effect.fail(checked.left);
45
+ }
46
+ if (plan.backup.state !== "git-restore-point") {
47
+ return yield* effect_1.Effect.fail(new errors_ts_1.RecordAutoMigrationGitSaveRequired({
48
+ code: "record-auto-migration-git-save-required",
49
+ }));
50
+ }
51
+ yield* session.applyMigrate(plan).pipe(effect_1.Effect.catchTag("RecordMigrationGitRestoreRequired", () => effect_1.Effect.fail(new errors_ts_1.RecordAutoMigrationGitSaveRequired({
52
+ code: "record-auto-migration-git-save-required",
53
+ }))));
54
+ return Object.freeze({
55
+ restoreCommit: plan.backup.commit,
56
+ targetSchemaVersion: identifiers_ts_1.RECORD_SCHEMA_VERSION,
57
+ });
58
+ }));
59
+ });
60
+ }
17
61
  function resolveRecordRoot(input) {
18
62
  const root = (0, index_ts_1.makeRecordRoot)((0, node_path_1.resolve)(input.cwd, input.record ?? ".niceeval/record"));
19
63
  return effect_1.Either.isLeft(root)
@@ -34,7 +78,15 @@ function recordErrorNextStep(code) {
34
78
  case "record-migration-required":
35
79
  return "Run: niceeval migrate";
36
80
  case "record-migration-interrupted":
37
- return "Restore the Record from Git; do not rerun migrate on mixed bytes.";
81
+ return "Restore the complete Record from the recorded Git commit; do not rerun migrate on mixed bytes.";
82
+ case "record-migration-recovery-required":
83
+ return "Restore the complete Record from Git before retrying migration.";
84
+ case "record-migration-plan-stale":
85
+ return "Review the new migration plan and rerun migrate.";
86
+ case "record-migration-git-restore-required":
87
+ return "Commit, restore, or otherwise obtain a clean Git restore point for this Record before migrating.";
88
+ case "record-migration-invalid":
89
+ return "Restore the Record from Git before retrying migration.";
38
90
  case "record-format-unsupported":
39
91
  return "Install a NiceEval version that supports this Record format.";
40
92
  case "record-maintenance-busy":
@@ -44,13 +96,45 @@ function recordErrorNextStep(code) {
44
96
  return undefined;
45
97
  }
46
98
  }
47
- function recordErrorOutput(error, stdout = "") {
99
+ function shellQuote(value) {
100
+ return `'${value.replaceAll("'", `'"'"'`)}'`;
101
+ }
102
+ function recoveryCommands(restoreCommit, recordPath) {
103
+ const root = shellQuote(recordPath);
104
+ const commit = shellQuote(restoreCommit);
105
+ const sentinel = shellQuote((0, node_path_1.resolve)(recordPath, "migration.in-progress"));
106
+ return [
107
+ `Restore command: git -C ${root} restore --source=${commit} --staged --worktree -- .`,
108
+ `Verify command: git -C ${root} diff --quiet ${commit} -- . && git -C ${root} diff --cached --quiet ${commit} -- .`,
109
+ `Clear sentinel after verification: rm -f -- ${sentinel}`,
110
+ ].join("\n") + "\n";
111
+ }
112
+ function interruptedRecovery(error, recordPath) {
113
+ if (typeof error !== "object" || error === null || recordPath === undefined)
114
+ return "";
115
+ const restoreCommit = Reflect.get(error, "restoreCommit");
116
+ return Reflect.get(error, "restoreSafe") === true &&
117
+ typeof restoreCommit === "string" && /^[0-9a-f]{40,64}$/.test(restoreCommit)
118
+ ? recoveryCommands(restoreCommit, recordPath)
119
+ : "";
120
+ }
121
+ function recordErrorOutput(error, stdout = "", recordPath) {
48
122
  const code = recordErrorCode(error);
49
- const next = recordErrorNextStep(code);
123
+ const automaticRestoreUnsafe = (code === "record-migration-interrupted" || code === "record-migration-recovery-required") &&
124
+ (typeof error !== "object" || error === null || Reflect.get(error, "restoreSafe") !== true);
125
+ const next = automaticRestoreUnsafe
126
+ ? "Inspect and preserve concurrent Record edits before choosing a manual recovery; no automatic Git restore command is safe."
127
+ : recordErrorNextStep(code);
128
+ const causeCode = typeof error === "object" && error !== null &&
129
+ typeof Reflect.get(error, "causeCode") === "string"
130
+ ? String(Reflect.get(error, "causeCode"))
131
+ : undefined;
50
132
  return output({
51
133
  exitCode: 1,
52
134
  stdout,
53
- stderr: `${code}\n${next === undefined ? "" : `${next}\n`}`,
135
+ stderr: `${code}\n${next === undefined ? "" : `${next}\n`}${causeCode === undefined ? "" : `Cause: ${causeCode}\n`}${code === "record-migration-interrupted" || code === "record-migration-recovery-required"
136
+ ? interruptedRecovery(error, recordPath)
137
+ : ""}`,
54
138
  });
55
139
  }
56
140
  function cleanCommand(input) {
@@ -94,15 +178,35 @@ function migrateCommand(input) {
94
178
  const plan = yield* session.planMigrate();
95
179
  const planText = plan.state === "already-current"
96
180
  ? `Record migration plan: already-current\nformat: ${plan.format}\n`
97
- : `Record migration plan: unsupported-format\nformat: ${plan.format}\n`;
98
- if (plan.state !== "already-current") {
181
+ : plan.state === "unsupported-format"
182
+ ? `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`;
184
+ if (plan.state === "unsupported-format") {
99
185
  return output({
100
186
  exitCode: 1,
101
187
  stdout: planText,
102
188
  stderr: "record-format-unsupported\nInstall a NiceEval version that supports this Record format.\n",
103
189
  });
104
190
  }
105
- const receipt = yield* session.applyMigrate(plan);
191
+ if (plan.state === "migration-required" && plan.backup.state !== "git-restore-point") {
192
+ return output({
193
+ exitCode: 1,
194
+ stdout: planText,
195
+ stderr: "record-migration-git-restore-required\nA clean Git restore point is required; --yes cannot bypass this preflight.\n",
196
+ });
197
+ }
198
+ if (plan.state === "migration-required" && !input.yes) {
199
+ return output({
200
+ exitCode: 1,
201
+ stdout: planText,
202
+ stderr: "record-migration-confirmation-required\nReview the migration plan and rerun with --yes.\n",
203
+ });
204
+ }
205
+ const migrated = yield* effect_1.Effect.either(session.applyMigrate(plan));
206
+ if (effect_1.Either.isLeft(migrated)) {
207
+ return recordErrorOutput(migrated.left, planText, input.recordPath);
208
+ }
209
+ const receipt = migrated.right;
106
210
  return output({
107
211
  exitCode: 0,
108
212
  stdout: `${planText}Record migration ${receipt.state}.\n`,
@@ -120,6 +224,7 @@ function runRecordCliCommand(input) {
120
224
  if (input.command === "clean") {
121
225
  return cleanCommand({ root: root.right, yes: input.yes }).pipe(effect_1.Effect.provide(exports.NodeRecordCliLive), effect_1.Effect.catchAll((error) => effect_1.Effect.succeed(recordErrorOutput(error))));
122
226
  }
123
- return migrateCommand({ root: root.right, yes: input.yes }).pipe(effect_1.Effect.provide(exports.NodeRecordCliLive), effect_1.Effect.catchAll((error) => effect_1.Effect.succeed(recordErrorOutput(error))));
227
+ const recordPath = (0, node_path_1.resolve)(input.cwd, input.record ?? ".niceeval/record");
228
+ return migrateCommand({ root: root.right, recordPath, yes: input.yes }).pipe(effect_1.Effect.provide(exports.NodeRecordCliLive), effect_1.Effect.catchAll((error) => effect_1.Effect.succeed(recordErrorOutput(error, "", recordPath))));
124
229
  }
125
230
  //# sourceMappingURL=record.cjs.map
@@ -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\";\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;\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 Record from Git; do not rerun migrate on mixed bytes.\";\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 recordErrorOutput(error: unknown, stdout = \"\"): RecordCliCommandOutput {\n const code = recordErrorCode(error);\n const next = recordErrorNextStep(code);\n return output({\n exitCode: 1,\n stdout,\n stderr: `${code}\\n${next === undefined ? \"\" : `${next}\\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 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 : `Record migration plan: unsupported-format\\nformat: ${plan.format}\\n`;\n if (plan.state !== \"already-current\") {\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 const receipt = yield* session.applyMigrate(plan);\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 return migrateCommand({ root: root.right, yes: input.yes }).pipe(Effect.provide(NodeRecordCliLive), Effect.catchAll((error) => Effect.succeed(recordErrorOutput(error))));\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 { 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,4 +1,7 @@
1
1
  import { Effect, Layer } from "effect";
2
+ import { RECORD_SCHEMA_VERSION } from "../record/model/identifiers.cjs";
3
+ import { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired } from "../record/reader/errors.cjs";
4
+ import { RecordFileSystem } from "../record/platform/services.cjs";
2
5
  export type RecordCliCommand = "clean" | "migrate";
3
6
  export interface RunRecordCliCommandInput {
4
7
  readonly command: RecordCliCommand;
@@ -13,7 +16,23 @@ export interface RecordCliCommandOutput {
13
16
  readonly stdout: string;
14
17
  readonly stderr: string;
15
18
  }
16
- export declare const NodeRecordCliLive: Layer.Layer<import("../coordination/record-leases.cjs").RecordCoordination | import("../record/platform/services.cjs").RecordFileSystem | import("../record/platform/services.cjs").RecordEntropy | import("../record/platform/services.cjs").RecordGit, never, never>;
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
+ export interface AutomaticRecordMigrationReceipt {
21
+ readonly restoreCommit: string;
22
+ readonly targetSchemaVersion: typeof RECORD_SCHEMA_VERSION;
23
+ }
24
+ /**
25
+ * Preflight for ordinary CLI entry points. Every Scope is closed before the
26
+ * next lease kind is acquired: read check -> exclusive maintenance -> caller's
27
+ * fresh ordinary open.
28
+ */
29
+ export declare function ensureAutomaticRecordMigration(input: {
30
+ readonly cwd: string;
31
+ readonly record?: string;
32
+ }): Effect.Effect<never, import("../record/index.cjs").RecordRootConstructionError, never> | Effect.Effect<Readonly<{
33
+ restoreCommit: string;
34
+ targetSchemaVersion: 2;
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>;
17
36
  /**
18
37
  * Effect-native command handling for the Record maintenance surface. The
19
38
  * CLI owns the one Promise adaptation at its actual process boundary.
@@ -1,4 +1,7 @@
1
1
  import { Effect, Layer } from "effect";
2
+ import { RECORD_SCHEMA_VERSION } from "../record/model/identifiers.mjs";
3
+ import { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired } from "../record/reader/errors.mjs";
4
+ import { RecordFileSystem } from "../record/platform/services.mjs";
2
5
  export type RecordCliCommand = "clean" | "migrate";
3
6
  export interface RunRecordCliCommandInput {
4
7
  readonly command: RecordCliCommand;
@@ -13,7 +16,23 @@ export interface RecordCliCommandOutput {
13
16
  readonly stdout: string;
14
17
  readonly stderr: string;
15
18
  }
16
- export declare const NodeRecordCliLive: Layer.Layer<import("../coordination/record-leases.mjs").RecordCoordination | import("../record/platform/services.mjs").RecordFileSystem | import("../record/platform/services.mjs").RecordEntropy | import("../record/platform/services.mjs").RecordGit, never, never>;
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
+ export interface AutomaticRecordMigrationReceipt {
21
+ readonly restoreCommit: string;
22
+ readonly targetSchemaVersion: typeof RECORD_SCHEMA_VERSION;
23
+ }
24
+ /**
25
+ * Preflight for ordinary CLI entry points. Every Scope is closed before the
26
+ * next lease kind is acquired: read check -> exclusive maintenance -> caller's
27
+ * fresh ordinary open.
28
+ */
29
+ export declare function ensureAutomaticRecordMigration(input: {
30
+ readonly cwd: string;
31
+ readonly record?: string;
32
+ }): Effect.Effect<never, import("../record/index.mjs").RecordRootConstructionError, never> | Effect.Effect<Readonly<{
33
+ restoreCommit: string;
34
+ targetSchemaVersion: 2;
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>;
17
36
  /**
18
37
  * Effect-native command handling for the Record maintenance surface. The
19
38
  * CLI owns the one Promise adaptation at its actual process boundary.
@@ -1,4 +1,7 @@
1
1
  import { Effect, Layer } from "effect";
2
+ import { RECORD_SCHEMA_VERSION } from "../record/model/identifiers.js";
3
+ import { RecordAutoMigrationGitSaveRequired, RecordMigrationRequired } from "../record/reader/errors.js";
4
+ import { RecordFileSystem } from "../record/platform/services.js";
2
5
  export type RecordCliCommand = "clean" | "migrate";
3
6
  export interface RunRecordCliCommandInput {
4
7
  readonly command: RecordCliCommand;
@@ -13,7 +16,23 @@ export interface RecordCliCommandOutput {
13
16
  readonly stdout: string;
14
17
  readonly stderr: string;
15
18
  }
16
- export declare const NodeRecordCliLive: Layer.Layer<import("../coordination/record-leases.js").RecordCoordination | import("../record/platform/services.js").RecordFileSystem | import("../record/platform/services.js").RecordEntropy | import("../record/platform/services.js").RecordGit, never, never>;
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
+ export interface AutomaticRecordMigrationReceipt {
21
+ readonly restoreCommit: string;
22
+ readonly targetSchemaVersion: typeof RECORD_SCHEMA_VERSION;
23
+ }
24
+ /**
25
+ * Preflight for ordinary CLI entry points. Every Scope is closed before the
26
+ * next lease kind is acquired: read check -> exclusive maintenance -> caller's
27
+ * fresh ordinary open.
28
+ */
29
+ export declare function ensureAutomaticRecordMigration(input: {
30
+ readonly cwd: string;
31
+ readonly record?: string;
32
+ }): Effect.Effect<never, import("../record/index.js").RecordRootConstructionError, never> | Effect.Effect<Readonly<{
33
+ restoreCommit: string;
34
+ targetSchemaVersion: 2;
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>;
17
36
  /**
18
37
  * Effect-native command handling for the Record maintenance surface. The
19
38
  * CLI owns the one Promise adaptation at its actual process boundary.
@@ -3,6 +3,8 @@ const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
3
  const __niceevalCanonical = __niceevalRequire("./record.cjs");
4
4
  const __niceevalExport0 = __niceevalCanonical["NodeRecordCliLive"];
5
5
  export { __niceevalExport0 as NodeRecordCliLive };
6
- const __niceevalExport1 = __niceevalCanonical["runRecordCliCommand"];
7
- export { __niceevalExport1 as runRecordCliCommand };
6
+ const __niceevalExport1 = __niceevalCanonical["ensureAutomaticRecordMigration"];
7
+ export { __niceevalExport1 as ensureAutomaticRecordMigration };
8
+ const __niceevalExport2 = __niceevalCanonical["runRecordCliCommand"];
9
+ export { __niceevalExport2 as runRecordCliCommand };
8
10
  //# sourceMappingURL=record.js.map