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
@@ -25,7 +25,7 @@ export interface RecordReadFileInput {
25
25
  export interface RecordReadFileStreamInput extends RecordReadFileInput {
26
26
  readonly chunkBytes?: number;
27
27
  }
28
- export type RecordFileWriteMode = "exclusive" | "replace";
28
+ export type RecordFileWriteMode = "exclusive" | "replace" | "replace-no-follow";
29
29
  export interface RecordWriteFileInput {
30
30
  readonly file: RecordPortablePath;
31
31
  readonly bytes: Uint8Array;
@@ -69,8 +69,15 @@ export interface RecordFileSystemService {
69
69
  readonly root: RecordRoot;
70
70
  readonly runId: string;
71
71
  }) => Effect.Effect<void, RecordFileSystemError>;
72
+ /** True only for the zero-byte regular file created by `createCompleteMarker`. */
73
+ readonly isCompleteMarker: (input: {
74
+ readonly root: RecordRoot;
75
+ readonly runId: string;
76
+ }) => Effect.Effect<boolean, RecordFileSystemError>;
72
77
  readonly migrationSentinelPresent: (root: RecordRoot) => Effect.Effect<boolean, RecordFileSystemError>;
73
- readonly createMigrationSentinel: (root: RecordRoot) => Effect.Effect<void, RecordFileSystemError>;
78
+ readonly createMigrationSentinel: (root: RecordRoot, restoreCommit: string) => Effect.Effect<void, RecordFileSystemError>;
79
+ /** Returns the bounded restore commit recorded by a current migration sentinel. */
80
+ readonly readMigrationSentinelRestoreCommit: (root: RecordRoot) => Effect.Effect<string | undefined, RecordFileSystemError>;
74
81
  readonly removeMigrationSentinel: (root: RecordRoot) => Effect.Effect<void, RecordFileSystemError>;
75
82
  /** The caller already owns the exclusive maintenance lease before deletion. */
76
83
  readonly deleteIncompleteRun: (input: {
@@ -105,6 +112,12 @@ export type RecordBackupState = {
105
112
  };
106
113
  export interface RecordGitService {
107
114
  readonly inspectBackupState: (root: RecordRoot) => Effect.Effect<RecordBackupState, RecordGitError>;
115
+ /** Proves HEAD is unchanged and every dirty path is an expected migration write. */
116
+ readonly recoveryChangesAreExpected: (input: {
117
+ readonly root: RecordRoot;
118
+ readonly restoreCommit: string;
119
+ readonly expectedPaths: readonly RecordPortablePath[];
120
+ }) => Effect.Effect<boolean, RecordGitError | RecordFileSystemError>;
108
121
  }
109
122
  declare const RecordGit_base: Context.TagClass<RecordGit, "@niceeval/record/RecordGit", RecordGitService>;
110
123
  export declare class RecordGit extends RecordGit_base {
@@ -25,7 +25,7 @@ export interface RecordReadFileInput {
25
25
  export interface RecordReadFileStreamInput extends RecordReadFileInput {
26
26
  readonly chunkBytes?: number;
27
27
  }
28
- export type RecordFileWriteMode = "exclusive" | "replace";
28
+ export type RecordFileWriteMode = "exclusive" | "replace" | "replace-no-follow";
29
29
  export interface RecordWriteFileInput {
30
30
  readonly file: RecordPortablePath;
31
31
  readonly bytes: Uint8Array;
@@ -69,8 +69,15 @@ export interface RecordFileSystemService {
69
69
  readonly root: RecordRoot;
70
70
  readonly runId: string;
71
71
  }) => Effect.Effect<void, RecordFileSystemError>;
72
+ /** True only for the zero-byte regular file created by `createCompleteMarker`. */
73
+ readonly isCompleteMarker: (input: {
74
+ readonly root: RecordRoot;
75
+ readonly runId: string;
76
+ }) => Effect.Effect<boolean, RecordFileSystemError>;
72
77
  readonly migrationSentinelPresent: (root: RecordRoot) => Effect.Effect<boolean, RecordFileSystemError>;
73
- readonly createMigrationSentinel: (root: RecordRoot) => Effect.Effect<void, RecordFileSystemError>;
78
+ readonly createMigrationSentinel: (root: RecordRoot, restoreCommit: string) => Effect.Effect<void, RecordFileSystemError>;
79
+ /** Returns the bounded restore commit recorded by a current migration sentinel. */
80
+ readonly readMigrationSentinelRestoreCommit: (root: RecordRoot) => Effect.Effect<string | undefined, RecordFileSystemError>;
74
81
  readonly removeMigrationSentinel: (root: RecordRoot) => Effect.Effect<void, RecordFileSystemError>;
75
82
  /** The caller already owns the exclusive maintenance lease before deletion. */
76
83
  readonly deleteIncompleteRun: (input: {
@@ -105,6 +112,12 @@ export type RecordBackupState = {
105
112
  };
106
113
  export interface RecordGitService {
107
114
  readonly inspectBackupState: (root: RecordRoot) => Effect.Effect<RecordBackupState, RecordGitError>;
115
+ /** Proves HEAD is unchanged and every dirty path is an expected migration write. */
116
+ readonly recoveryChangesAreExpected: (input: {
117
+ readonly root: RecordRoot;
118
+ readonly restoreCommit: string;
119
+ readonly expectedPaths: readonly RecordPortablePath[];
120
+ }) => Effect.Effect<boolean, RecordGitError | RecordFileSystemError>;
108
121
  }
109
122
  declare const RecordGit_base: Context.TagClass<RecordGit, "@niceeval/record/RecordGit", RecordGitService>;
110
123
  export declare class RecordGit extends RecordGit_base {
@@ -25,7 +25,7 @@ export interface RecordReadFileInput {
25
25
  export interface RecordReadFileStreamInput extends RecordReadFileInput {
26
26
  readonly chunkBytes?: number;
27
27
  }
28
- export type RecordFileWriteMode = "exclusive" | "replace";
28
+ export type RecordFileWriteMode = "exclusive" | "replace" | "replace-no-follow";
29
29
  export interface RecordWriteFileInput {
30
30
  readonly file: RecordPortablePath;
31
31
  readonly bytes: Uint8Array;
@@ -69,8 +69,15 @@ export interface RecordFileSystemService {
69
69
  readonly root: RecordRoot;
70
70
  readonly runId: string;
71
71
  }) => Effect.Effect<void, RecordFileSystemError>;
72
+ /** True only for the zero-byte regular file created by `createCompleteMarker`. */
73
+ readonly isCompleteMarker: (input: {
74
+ readonly root: RecordRoot;
75
+ readonly runId: string;
76
+ }) => Effect.Effect<boolean, RecordFileSystemError>;
72
77
  readonly migrationSentinelPresent: (root: RecordRoot) => Effect.Effect<boolean, RecordFileSystemError>;
73
- readonly createMigrationSentinel: (root: RecordRoot) => Effect.Effect<void, RecordFileSystemError>;
78
+ readonly createMigrationSentinel: (root: RecordRoot, restoreCommit: string) => Effect.Effect<void, RecordFileSystemError>;
79
+ /** Returns the bounded restore commit recorded by a current migration sentinel. */
80
+ readonly readMigrationSentinelRestoreCommit: (root: RecordRoot) => Effect.Effect<string | undefined, RecordFileSystemError>;
74
81
  readonly removeMigrationSentinel: (root: RecordRoot) => Effect.Effect<void, RecordFileSystemError>;
75
82
  /** The caller already owns the exclusive maintenance lease before deletion. */
76
83
  readonly deleteIncompleteRun: (input: {
@@ -105,6 +112,12 @@ export type RecordBackupState = {
105
112
  };
106
113
  export interface RecordGitService {
107
114
  readonly inspectBackupState: (root: RecordRoot) => Effect.Effect<RecordBackupState, RecordGitError>;
115
+ /** Proves HEAD is unchanged and every dirty path is an expected migration write. */
116
+ readonly recoveryChangesAreExpected: (input: {
117
+ readonly root: RecordRoot;
118
+ readonly restoreCommit: string;
119
+ readonly expectedPaths: readonly RecordPortablePath[];
120
+ }) => Effect.Effect<boolean, RecordGitError | RecordFileSystemError>;
108
121
  }
109
122
  declare const RecordGit_base: Context.TagClass<RecordGit, "@niceeval/record/RecordGit", RecordGitService>;
110
123
  export declare class RecordGit extends RecordGit_base {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RecordHandleInvalid = exports.RecordReaderClosed = exports.RecordMigrationInterruptedState = exports.RecordFormatUnsupported = exports.RecordMigrationRequired = exports.RecordBootstrapInvalid = void 0;
3
+ exports.RecordHandleInvalid = exports.RecordReaderClosed = exports.RecordMigrationRecoveryRequired = exports.RecordMigrationInvalid = exports.RecordAutoMigrationGitSaveRequired = exports.RecordMigrationGitRestoreRequired = exports.RecordMigrationPlanStale = exports.RecordMigrationInterruptedState = exports.RecordFormatUnsupported = exports.RecordMigrationRequired = exports.RecordBootstrapInvalid = void 0;
4
4
  const effect_1 = require("effect");
5
5
  /** `record.json` could not be safely recognized as a usable Record root. */
6
6
  class RecordBootstrapInvalid extends effect_1.Schema.TaggedError("@niceeval/record/RecordBootstrapInvalid")("RecordBootstrapInvalid", {
@@ -28,9 +28,45 @@ exports.RecordFormatUnsupported = RecordFormatUnsupported;
28
28
  /** An existing sentinel means a migration was interrupted or cannot be proven complete. */
29
29
  class RecordMigrationInterruptedState extends effect_1.Schema.TaggedError("@niceeval/record/RecordMigrationInterruptedState")("RecordMigrationInterruptedState", {
30
30
  code: effect_1.Schema.Literal("record-migration-interrupted"),
31
+ restoreCommit: effect_1.Schema.optional(effect_1.Schema.String),
32
+ restoreSafe: effect_1.Schema.optional(effect_1.Schema.Boolean),
31
33
  }) {
32
34
  }
33
35
  exports.RecordMigrationInterruptedState = RecordMigrationInterruptedState;
36
+ /** A previously shown migration plan no longer matches the leased Record. */
37
+ class RecordMigrationPlanStale extends effect_1.Schema.TaggedError("@niceeval/record/RecordMigrationPlanStale")("RecordMigrationPlanStale", {
38
+ code: effect_1.Schema.Literal("record-migration-plan-stale"),
39
+ }) {
40
+ }
41
+ exports.RecordMigrationPlanStale = RecordMigrationPlanStale;
42
+ /** In-place migration is permitted only with a clean Git restore point. */
43
+ class RecordMigrationGitRestoreRequired extends effect_1.Schema.TaggedError("@niceeval/record/RecordMigrationGitRestoreRequired")("RecordMigrationGitRestoreRequired", {
44
+ code: effect_1.Schema.Literal("record-migration-git-restore-required"),
45
+ }) {
46
+ }
47
+ exports.RecordMigrationGitRestoreRequired = RecordMigrationGitRestoreRequired;
48
+ /** Automatic migration requires every portable byte to be saved at clean HEAD. */
49
+ class RecordAutoMigrationGitSaveRequired extends effect_1.Schema.TaggedError("@niceeval/record/RecordAutoMigrationGitSaveRequired")("RecordAutoMigrationGitSaveRequired", {
50
+ code: effect_1.Schema.Literal("record-auto-migration-git-save-required"),
51
+ }) {
52
+ }
53
+ exports.RecordAutoMigrationGitSaveRequired = RecordAutoMigrationGitSaveRequired;
54
+ /** A known historical attachment cannot be proven safe to advance in place. */
55
+ class RecordMigrationInvalid extends effect_1.Schema.TaggedError("@niceeval/record/RecordMigrationInvalid")("RecordMigrationInvalid", {
56
+ code: effect_1.Schema.Literal("record-migration-invalid"),
57
+ family: effect_1.Schema.String,
58
+ }) {
59
+ }
60
+ exports.RecordMigrationInvalid = RecordMigrationInvalid;
61
+ /** The migration sentinel exists, so the Record must be restored before reuse. */
62
+ class RecordMigrationRecoveryRequired extends effect_1.Schema.TaggedError("@niceeval/record/RecordMigrationRecoveryRequired")("RecordMigrationRecoveryRequired", {
63
+ code: effect_1.Schema.Literal("record-migration-recovery-required"),
64
+ causeCode: effect_1.Schema.String,
65
+ restoreCommit: effect_1.Schema.String,
66
+ restoreSafe: effect_1.Schema.Boolean,
67
+ }) {
68
+ }
69
+ exports.RecordMigrationRecoveryRequired = RecordMigrationRecoveryRequired;
34
70
  /** A live frozen capability escaped its Effect Scope. */
35
71
  class RecordReaderClosed extends effect_1.Schema.TaggedError("@niceeval/record/RecordReaderClosed")("RecordReaderClosed", {
36
72
  code: effect_1.Schema.Literal("record-reader-closed"),
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAGhC,4EAA4E;AAC5E,MAAa,sBAAuB,SAAQ,eAAM,CAAC,WAAW,CAAyB,yCAAyC,CAAC,CAAC,wBAAwB,EAAE;IACxJ,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAChD,MAAM,EAAE,eAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;CAC7F,CAAC;CACD;AAJD,wDAIC;AACD,2EAA2E;AAC3E,MAAa,uBAAwB,SAAQ,eAAM,CAAC,WAAW,CAA0B,0CAA0C,CAAC,CAAC,yBAAyB,EAAE;IAC5J,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACjD,MAAM,EAAE,eAAM,CAAC,MAAM;IACrB,MAAM,EAAE,eAAM,CAAC,MAAM;IACrB,OAAO,EAAE,eAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;CAC9C,CAAC;CACD;AAND,0DAMC;AACD,gFAAgF;AAChF,MAAa,uBAAwB,SAAQ,eAAM,CAAC,WAAW,CAA0B,0CAA0C,CAAC,CAAC,yBAAyB,EAAE;IAC5J,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACjD,MAAM,EAAE,eAAM,CAAC,MAAM;CACxB,CAAC;CACD;AAJD,0DAIC;AACD,2FAA2F;AAC3F,MAAa,+BAAgC,SAAQ,eAAM,CAAC,WAAW,CAAkC,kDAAkD,CAAC,CAAC,iCAAiC,EAAE;IAC5L,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC;CACvD,CAAC;CACD;AAHD,0EAGC;AACD,yDAAyD;AACzD,MAAa,kBAAmB,SAAQ,eAAM,CAAC,WAAW,CAAqB,qCAAqC,CAAC,CAAC,oBAAoB,EAAE;IACxI,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC;CAC/C,CAAC;CACD;AAHD,gDAGC;AACD,sFAAsF;AACtF,MAAa,mBAAoB,SAAQ,eAAM,CAAC,WAAW,CAAsB,sCAAsC,CAAC,CAAC,qBAAqB,EAAE;IAC5I,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC;CAChD,CAAC;CACD;AAHD,kDAGC","sourcesContent":["import { Schema } from \"effect\";\nimport type { RecordCoordinationError } from \"../../coordination/record-leases.ts\";\nimport type { RecordFileSystemError, } from \"../platform/errors.ts\";\n/** `record.json` could not be safely recognized as a usable Record root. */\nexport class RecordBootstrapInvalid extends Schema.TaggedError<RecordBootstrapInvalid>(\"@niceeval/record/RecordBootstrapInvalid\")(\"RecordBootstrapInvalid\", {\n code: Schema.Literal(\"record-bootstrap-invalid\"),\n reason: Schema.Literal(\"record-document-invalid\", \"record-format-document-limit-exceeded\"),\n}) {\n}\n/** A known, older major is never opened through a compatibility reader. */\nexport class RecordMigrationRequired extends Schema.TaggedError<RecordMigrationRequired>(\"@niceeval/record/RecordMigrationRequired\")(\"RecordMigrationRequired\", {\n code: Schema.Literal(\"record-migration-required\"),\n source: Schema.String,\n target: Schema.String,\n command: Schema.Literal(\"niceeval migrate\"),\n}) {\n}\n/** Future, foreign, or malformed format identities are not migration inputs. */\nexport class RecordFormatUnsupported extends Schema.TaggedError<RecordFormatUnsupported>(\"@niceeval/record/RecordFormatUnsupported\")(\"RecordFormatUnsupported\", {\n code: Schema.Literal(\"record-format-unsupported\"),\n format: Schema.String,\n}) {\n}\n/** An existing sentinel means a migration was interrupted or cannot be proven complete. */\nexport class RecordMigrationInterruptedState extends Schema.TaggedError<RecordMigrationInterruptedState>(\"@niceeval/record/RecordMigrationInterruptedState\")(\"RecordMigrationInterruptedState\", {\n code: Schema.Literal(\"record-migration-interrupted\"),\n}) {\n}\n/** A live frozen capability escaped its Effect Scope. */\nexport class RecordReaderClosed extends Schema.TaggedError<RecordReaderClosed>(\"@niceeval/record/RecordReaderClosed\")(\"RecordReaderClosed\", {\n code: Schema.Literal(\"record-reader-closed\"),\n}) {\n}\n/** A forged, copied, cross-snapshot, or wrong-kind frozen capability was supplied. */\nexport class RecordHandleInvalid extends Schema.TaggedError<RecordHandleInvalid>(\"@niceeval/record/RecordHandleInvalid\")(\"RecordHandleInvalid\", {\n code: Schema.Literal(\"record-handle-invalid\"),\n}) {\n}\nexport type RecordReaderOpenError = RecordCoordinationError | RecordBootstrapInvalid | RecordMigrationRequired | RecordFormatUnsupported | RecordMigrationInterruptedState;\nexport type RecordReaderReadError = RecordFileSystemError | RecordReaderClosed | RecordHandleInvalid;\n"]}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAGhC,4EAA4E;AAC5E,MAAa,sBAAuB,SAAQ,eAAM,CAAC,WAAW,CAAyB,yCAAyC,CAAC,CAAC,wBAAwB,EAAE;IACxJ,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAChD,MAAM,EAAE,eAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;CAC7F,CAAC;CACD;AAJD,wDAIC;AACD,2EAA2E;AAC3E,MAAa,uBAAwB,SAAQ,eAAM,CAAC,WAAW,CAA0B,0CAA0C,CAAC,CAAC,yBAAyB,EAAE;IAC5J,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACjD,MAAM,EAAE,eAAM,CAAC,MAAM;IACrB,MAAM,EAAE,eAAM,CAAC,MAAM;IACrB,OAAO,EAAE,eAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;CAC9C,CAAC;CACD;AAND,0DAMC;AACD,gFAAgF;AAChF,MAAa,uBAAwB,SAAQ,eAAM,CAAC,WAAW,CAA0B,0CAA0C,CAAC,CAAC,yBAAyB,EAAE;IAC5J,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACjD,MAAM,EAAE,eAAM,CAAC,MAAM;CACxB,CAAC;CACD;AAJD,0DAIC;AACD,2FAA2F;AAC3F,MAAa,+BAAgC,SAAQ,eAAM,CAAC,WAAW,CAAkC,kDAAkD,CAAC,CAAC,iCAAiC,EAAE;IAC5L,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC;IACpD,aAAa,EAAE,eAAM,CAAC,QAAQ,CAAC,eAAM,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,eAAM,CAAC,QAAQ,CAAC,eAAM,CAAC,OAAO,CAAC;CAC/C,CAAC;CACD;AALD,0EAKC;AACD,6EAA6E;AAC7E,MAAa,wBAAyB,SAAQ,eAAM,CAAC,WAAW,CAA2B,2CAA2C,CAAC,CAAC,0BAA0B,EAAE;IAChK,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC;CACtD,CAAC;CACD;AAHD,4DAGC;AACD,2EAA2E;AAC3E,MAAa,iCAAkC,SAAQ,eAAM,CAAC,WAAW,CAAoC,oDAAoD,CAAC,CAAC,mCAAmC,EAAE;IACpM,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC;CAChE,CAAC;CACD;AAHD,8EAGC;AACD,kFAAkF;AAClF,MAAa,kCAAmC,SAAQ,eAAM,CAAC,WAAW,CAAqC,qDAAqD,CAAC,CAAC,oCAAoC,EAAE;IACxM,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,yCAAyC,CAAC;CAClE,CAAC;CACD;AAHD,gFAGC;AACD,+EAA+E;AAC/E,MAAa,sBAAuB,SAAQ,eAAM,CAAC,WAAW,CAAyB,yCAAyC,CAAC,CAAC,wBAAwB,EAAE;IACxJ,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC;IAChD,MAAM,EAAE,eAAM,CAAC,MAAM;CACxB,CAAC;CACD;AAJD,wDAIC;AACD,kFAAkF;AAClF,MAAa,+BAAgC,SAAQ,eAAM,CAAC,WAAW,CAAkC,kDAAkD,CAAC,CAAC,iCAAiC,EAAE;IAC5L,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC;IAC1D,SAAS,EAAE,eAAM,CAAC,MAAM;IACxB,aAAa,EAAE,eAAM,CAAC,MAAM;IAC5B,WAAW,EAAE,eAAM,CAAC,OAAO;CAC9B,CAAC;CACD;AAND,0EAMC;AACD,yDAAyD;AACzD,MAAa,kBAAmB,SAAQ,eAAM,CAAC,WAAW,CAAqB,qCAAqC,CAAC,CAAC,oBAAoB,EAAE;IACxI,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC;CAC/C,CAAC;CACD;AAHD,gDAGC;AACD,sFAAsF;AACtF,MAAa,mBAAoB,SAAQ,eAAM,CAAC,WAAW,CAAsB,sCAAsC,CAAC,CAAC,qBAAqB,EAAE;IAC5I,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC;CAChD,CAAC;CACD;AAHD,kDAGC","sourcesContent":["import { Schema } from \"effect\";\nimport type { RecordCoordinationError } from \"../../coordination/record-leases.ts\";\nimport type { RecordFileSystemError, RecordGitError, } from \"../platform/errors.ts\";\n/** `record.json` could not be safely recognized as a usable Record root. */\nexport class RecordBootstrapInvalid extends Schema.TaggedError<RecordBootstrapInvalid>(\"@niceeval/record/RecordBootstrapInvalid\")(\"RecordBootstrapInvalid\", {\n code: Schema.Literal(\"record-bootstrap-invalid\"),\n reason: Schema.Literal(\"record-document-invalid\", \"record-format-document-limit-exceeded\"),\n}) {\n}\n/** A known, older major is never opened through a compatibility reader. */\nexport class RecordMigrationRequired extends Schema.TaggedError<RecordMigrationRequired>(\"@niceeval/record/RecordMigrationRequired\")(\"RecordMigrationRequired\", {\n code: Schema.Literal(\"record-migration-required\"),\n source: Schema.String,\n target: Schema.String,\n command: Schema.Literal(\"niceeval migrate\"),\n}) {\n}\n/** Future, foreign, or malformed format identities are not migration inputs. */\nexport class RecordFormatUnsupported extends Schema.TaggedError<RecordFormatUnsupported>(\"@niceeval/record/RecordFormatUnsupported\")(\"RecordFormatUnsupported\", {\n code: Schema.Literal(\"record-format-unsupported\"),\n format: Schema.String,\n}) {\n}\n/** An existing sentinel means a migration was interrupted or cannot be proven complete. */\nexport class RecordMigrationInterruptedState extends Schema.TaggedError<RecordMigrationInterruptedState>(\"@niceeval/record/RecordMigrationInterruptedState\")(\"RecordMigrationInterruptedState\", {\n code: Schema.Literal(\"record-migration-interrupted\"),\n restoreCommit: Schema.optional(Schema.String),\n restoreSafe: Schema.optional(Schema.Boolean),\n}) {\n}\n/** A previously shown migration plan no longer matches the leased Record. */\nexport class RecordMigrationPlanStale extends Schema.TaggedError<RecordMigrationPlanStale>(\"@niceeval/record/RecordMigrationPlanStale\")(\"RecordMigrationPlanStale\", {\n code: Schema.Literal(\"record-migration-plan-stale\"),\n}) {\n}\n/** In-place migration is permitted only with a clean Git restore point. */\nexport class RecordMigrationGitRestoreRequired extends Schema.TaggedError<RecordMigrationGitRestoreRequired>(\"@niceeval/record/RecordMigrationGitRestoreRequired\")(\"RecordMigrationGitRestoreRequired\", {\n code: Schema.Literal(\"record-migration-git-restore-required\"),\n}) {\n}\n/** Automatic migration requires every portable byte to be saved at clean HEAD. */\nexport class RecordAutoMigrationGitSaveRequired extends Schema.TaggedError<RecordAutoMigrationGitSaveRequired>(\"@niceeval/record/RecordAutoMigrationGitSaveRequired\")(\"RecordAutoMigrationGitSaveRequired\", {\n code: Schema.Literal(\"record-auto-migration-git-save-required\"),\n}) {\n}\n/** A known historical attachment cannot be proven safe to advance in place. */\nexport class RecordMigrationInvalid extends Schema.TaggedError<RecordMigrationInvalid>(\"@niceeval/record/RecordMigrationInvalid\")(\"RecordMigrationInvalid\", {\n code: Schema.Literal(\"record-migration-invalid\"),\n family: Schema.String,\n}) {\n}\n/** The migration sentinel exists, so the Record must be restored before reuse. */\nexport class RecordMigrationRecoveryRequired extends Schema.TaggedError<RecordMigrationRecoveryRequired>(\"@niceeval/record/RecordMigrationRecoveryRequired\")(\"RecordMigrationRecoveryRequired\", {\n code: Schema.Literal(\"record-migration-recovery-required\"),\n causeCode: Schema.String,\n restoreCommit: Schema.String,\n restoreSafe: Schema.Boolean,\n}) {\n}\n/** A live frozen capability escaped its Effect Scope. */\nexport class RecordReaderClosed extends Schema.TaggedError<RecordReaderClosed>(\"@niceeval/record/RecordReaderClosed\")(\"RecordReaderClosed\", {\n code: Schema.Literal(\"record-reader-closed\"),\n}) {\n}\n/** A forged, copied, cross-snapshot, or wrong-kind frozen capability was supplied. */\nexport class RecordHandleInvalid extends Schema.TaggedError<RecordHandleInvalid>(\"@niceeval/record/RecordHandleInvalid\")(\"RecordHandleInvalid\", {\n code: Schema.Literal(\"record-handle-invalid\"),\n}) {\n}\nexport type RecordReaderOpenError = RecordCoordinationError | RecordBootstrapInvalid | RecordMigrationRequired | RecordFormatUnsupported | RecordMigrationInterruptedState;\nexport type RecordMaintenanceOpenError = RecordReaderOpenError;\nexport type RecordMaintenanceError = RecordMaintenanceOpenError | RecordMigrationPlanStale | RecordMigrationGitRestoreRequired | RecordMigrationInvalid | RecordMigrationRecoveryRequired | RecordGitError;\nexport type RecordReaderReadError = RecordFileSystemError | RecordReaderClosed | RecordHandleInvalid;\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Schema } from "effect";
2
2
  import type { RecordCoordinationError } from "../../coordination/record-leases.cjs";
3
- import type { RecordFileSystemError } from "../platform/errors.cjs";
3
+ import type { RecordFileSystemError, RecordGitError } from "../platform/errors.cjs";
4
4
  declare const RecordBootstrapInvalid_base: Schema.TaggedErrorClass<RecordBootstrapInvalid, "RecordBootstrapInvalid", {
5
5
  readonly _tag: Schema.tag<"RecordBootstrapInvalid">;
6
6
  } & {
@@ -34,10 +34,56 @@ declare const RecordMigrationInterruptedState_base: Schema.TaggedErrorClass<Reco
34
34
  readonly _tag: Schema.tag<"RecordMigrationInterruptedState">;
35
35
  } & {
36
36
  code: Schema.Literal<["record-migration-interrupted"]>;
37
+ restoreCommit: Schema.optional<typeof Schema.String>;
38
+ restoreSafe: Schema.optional<typeof Schema.Boolean>;
37
39
  }>;
38
40
  /** An existing sentinel means a migration was interrupted or cannot be proven complete. */
39
41
  export declare class RecordMigrationInterruptedState extends RecordMigrationInterruptedState_base {
40
42
  }
43
+ declare const RecordMigrationPlanStale_base: Schema.TaggedErrorClass<RecordMigrationPlanStale, "RecordMigrationPlanStale", {
44
+ readonly _tag: Schema.tag<"RecordMigrationPlanStale">;
45
+ } & {
46
+ code: Schema.Literal<["record-migration-plan-stale"]>;
47
+ }>;
48
+ /** A previously shown migration plan no longer matches the leased Record. */
49
+ export declare class RecordMigrationPlanStale extends RecordMigrationPlanStale_base {
50
+ }
51
+ declare const RecordMigrationGitRestoreRequired_base: Schema.TaggedErrorClass<RecordMigrationGitRestoreRequired, "RecordMigrationGitRestoreRequired", {
52
+ readonly _tag: Schema.tag<"RecordMigrationGitRestoreRequired">;
53
+ } & {
54
+ code: Schema.Literal<["record-migration-git-restore-required"]>;
55
+ }>;
56
+ /** In-place migration is permitted only with a clean Git restore point. */
57
+ export declare class RecordMigrationGitRestoreRequired extends RecordMigrationGitRestoreRequired_base {
58
+ }
59
+ declare const RecordAutoMigrationGitSaveRequired_base: Schema.TaggedErrorClass<RecordAutoMigrationGitSaveRequired, "RecordAutoMigrationGitSaveRequired", {
60
+ readonly _tag: Schema.tag<"RecordAutoMigrationGitSaveRequired">;
61
+ } & {
62
+ code: Schema.Literal<["record-auto-migration-git-save-required"]>;
63
+ }>;
64
+ /** Automatic migration requires every portable byte to be saved at clean HEAD. */
65
+ export declare class RecordAutoMigrationGitSaveRequired extends RecordAutoMigrationGitSaveRequired_base {
66
+ }
67
+ declare const RecordMigrationInvalid_base: Schema.TaggedErrorClass<RecordMigrationInvalid, "RecordMigrationInvalid", {
68
+ readonly _tag: Schema.tag<"RecordMigrationInvalid">;
69
+ } & {
70
+ code: Schema.Literal<["record-migration-invalid"]>;
71
+ family: typeof Schema.String;
72
+ }>;
73
+ /** A known historical attachment cannot be proven safe to advance in place. */
74
+ export declare class RecordMigrationInvalid extends RecordMigrationInvalid_base {
75
+ }
76
+ declare const RecordMigrationRecoveryRequired_base: Schema.TaggedErrorClass<RecordMigrationRecoveryRequired, "RecordMigrationRecoveryRequired", {
77
+ readonly _tag: Schema.tag<"RecordMigrationRecoveryRequired">;
78
+ } & {
79
+ code: Schema.Literal<["record-migration-recovery-required"]>;
80
+ causeCode: typeof Schema.String;
81
+ restoreCommit: typeof Schema.String;
82
+ restoreSafe: typeof Schema.Boolean;
83
+ }>;
84
+ /** The migration sentinel exists, so the Record must be restored before reuse. */
85
+ export declare class RecordMigrationRecoveryRequired extends RecordMigrationRecoveryRequired_base {
86
+ }
41
87
  declare const RecordReaderClosed_base: Schema.TaggedErrorClass<RecordReaderClosed, "RecordReaderClosed", {
42
88
  readonly _tag: Schema.tag<"RecordReaderClosed">;
43
89
  } & {
@@ -55,5 +101,7 @@ declare const RecordHandleInvalid_base: Schema.TaggedErrorClass<RecordHandleInva
55
101
  export declare class RecordHandleInvalid extends RecordHandleInvalid_base {
56
102
  }
57
103
  export type RecordReaderOpenError = RecordCoordinationError | RecordBootstrapInvalid | RecordMigrationRequired | RecordFormatUnsupported | RecordMigrationInterruptedState;
104
+ export type RecordMaintenanceOpenError = RecordReaderOpenError;
105
+ export type RecordMaintenanceError = RecordMaintenanceOpenError | RecordMigrationPlanStale | RecordMigrationGitRestoreRequired | RecordMigrationInvalid | RecordMigrationRecoveryRequired | RecordGitError;
58
106
  export type RecordReaderReadError = RecordFileSystemError | RecordReaderClosed | RecordHandleInvalid;
59
107
  export {};
@@ -1,6 +1,6 @@
1
1
  import { Schema } from "effect";
2
2
  import type { RecordCoordinationError } from "../../coordination/record-leases.mjs";
3
- import type { RecordFileSystemError } from "../platform/errors.mjs";
3
+ import type { RecordFileSystemError, RecordGitError } from "../platform/errors.mjs";
4
4
  declare const RecordBootstrapInvalid_base: Schema.TaggedErrorClass<RecordBootstrapInvalid, "RecordBootstrapInvalid", {
5
5
  readonly _tag: Schema.tag<"RecordBootstrapInvalid">;
6
6
  } & {
@@ -34,10 +34,56 @@ declare const RecordMigrationInterruptedState_base: Schema.TaggedErrorClass<Reco
34
34
  readonly _tag: Schema.tag<"RecordMigrationInterruptedState">;
35
35
  } & {
36
36
  code: Schema.Literal<["record-migration-interrupted"]>;
37
+ restoreCommit: Schema.optional<typeof Schema.String>;
38
+ restoreSafe: Schema.optional<typeof Schema.Boolean>;
37
39
  }>;
38
40
  /** An existing sentinel means a migration was interrupted or cannot be proven complete. */
39
41
  export declare class RecordMigrationInterruptedState extends RecordMigrationInterruptedState_base {
40
42
  }
43
+ declare const RecordMigrationPlanStale_base: Schema.TaggedErrorClass<RecordMigrationPlanStale, "RecordMigrationPlanStale", {
44
+ readonly _tag: Schema.tag<"RecordMigrationPlanStale">;
45
+ } & {
46
+ code: Schema.Literal<["record-migration-plan-stale"]>;
47
+ }>;
48
+ /** A previously shown migration plan no longer matches the leased Record. */
49
+ export declare class RecordMigrationPlanStale extends RecordMigrationPlanStale_base {
50
+ }
51
+ declare const RecordMigrationGitRestoreRequired_base: Schema.TaggedErrorClass<RecordMigrationGitRestoreRequired, "RecordMigrationGitRestoreRequired", {
52
+ readonly _tag: Schema.tag<"RecordMigrationGitRestoreRequired">;
53
+ } & {
54
+ code: Schema.Literal<["record-migration-git-restore-required"]>;
55
+ }>;
56
+ /** In-place migration is permitted only with a clean Git restore point. */
57
+ export declare class RecordMigrationGitRestoreRequired extends RecordMigrationGitRestoreRequired_base {
58
+ }
59
+ declare const RecordAutoMigrationGitSaveRequired_base: Schema.TaggedErrorClass<RecordAutoMigrationGitSaveRequired, "RecordAutoMigrationGitSaveRequired", {
60
+ readonly _tag: Schema.tag<"RecordAutoMigrationGitSaveRequired">;
61
+ } & {
62
+ code: Schema.Literal<["record-auto-migration-git-save-required"]>;
63
+ }>;
64
+ /** Automatic migration requires every portable byte to be saved at clean HEAD. */
65
+ export declare class RecordAutoMigrationGitSaveRequired extends RecordAutoMigrationGitSaveRequired_base {
66
+ }
67
+ declare const RecordMigrationInvalid_base: Schema.TaggedErrorClass<RecordMigrationInvalid, "RecordMigrationInvalid", {
68
+ readonly _tag: Schema.tag<"RecordMigrationInvalid">;
69
+ } & {
70
+ code: Schema.Literal<["record-migration-invalid"]>;
71
+ family: typeof Schema.String;
72
+ }>;
73
+ /** A known historical attachment cannot be proven safe to advance in place. */
74
+ export declare class RecordMigrationInvalid extends RecordMigrationInvalid_base {
75
+ }
76
+ declare const RecordMigrationRecoveryRequired_base: Schema.TaggedErrorClass<RecordMigrationRecoveryRequired, "RecordMigrationRecoveryRequired", {
77
+ readonly _tag: Schema.tag<"RecordMigrationRecoveryRequired">;
78
+ } & {
79
+ code: Schema.Literal<["record-migration-recovery-required"]>;
80
+ causeCode: typeof Schema.String;
81
+ restoreCommit: typeof Schema.String;
82
+ restoreSafe: typeof Schema.Boolean;
83
+ }>;
84
+ /** The migration sentinel exists, so the Record must be restored before reuse. */
85
+ export declare class RecordMigrationRecoveryRequired extends RecordMigrationRecoveryRequired_base {
86
+ }
41
87
  declare const RecordReaderClosed_base: Schema.TaggedErrorClass<RecordReaderClosed, "RecordReaderClosed", {
42
88
  readonly _tag: Schema.tag<"RecordReaderClosed">;
43
89
  } & {
@@ -55,5 +101,7 @@ declare const RecordHandleInvalid_base: Schema.TaggedErrorClass<RecordHandleInva
55
101
  export declare class RecordHandleInvalid extends RecordHandleInvalid_base {
56
102
  }
57
103
  export type RecordReaderOpenError = RecordCoordinationError | RecordBootstrapInvalid | RecordMigrationRequired | RecordFormatUnsupported | RecordMigrationInterruptedState;
104
+ export type RecordMaintenanceOpenError = RecordReaderOpenError;
105
+ export type RecordMaintenanceError = RecordMaintenanceOpenError | RecordMigrationPlanStale | RecordMigrationGitRestoreRequired | RecordMigrationInvalid | RecordMigrationRecoveryRequired | RecordGitError;
58
106
  export type RecordReaderReadError = RecordFileSystemError | RecordReaderClosed | RecordHandleInvalid;
59
107
  export {};
@@ -1,6 +1,6 @@
1
1
  import { Schema } from "effect";
2
2
  import type { RecordCoordinationError } from "../../coordination/record-leases.js";
3
- import type { RecordFileSystemError } from "../platform/errors.js";
3
+ import type { RecordFileSystemError, RecordGitError } from "../platform/errors.js";
4
4
  declare const RecordBootstrapInvalid_base: Schema.TaggedErrorClass<RecordBootstrapInvalid, "RecordBootstrapInvalid", {
5
5
  readonly _tag: Schema.tag<"RecordBootstrapInvalid">;
6
6
  } & {
@@ -34,10 +34,56 @@ declare const RecordMigrationInterruptedState_base: Schema.TaggedErrorClass<Reco
34
34
  readonly _tag: Schema.tag<"RecordMigrationInterruptedState">;
35
35
  } & {
36
36
  code: Schema.Literal<["record-migration-interrupted"]>;
37
+ restoreCommit: Schema.optional<typeof Schema.String>;
38
+ restoreSafe: Schema.optional<typeof Schema.Boolean>;
37
39
  }>;
38
40
  /** An existing sentinel means a migration was interrupted or cannot be proven complete. */
39
41
  export declare class RecordMigrationInterruptedState extends RecordMigrationInterruptedState_base {
40
42
  }
43
+ declare const RecordMigrationPlanStale_base: Schema.TaggedErrorClass<RecordMigrationPlanStale, "RecordMigrationPlanStale", {
44
+ readonly _tag: Schema.tag<"RecordMigrationPlanStale">;
45
+ } & {
46
+ code: Schema.Literal<["record-migration-plan-stale"]>;
47
+ }>;
48
+ /** A previously shown migration plan no longer matches the leased Record. */
49
+ export declare class RecordMigrationPlanStale extends RecordMigrationPlanStale_base {
50
+ }
51
+ declare const RecordMigrationGitRestoreRequired_base: Schema.TaggedErrorClass<RecordMigrationGitRestoreRequired, "RecordMigrationGitRestoreRequired", {
52
+ readonly _tag: Schema.tag<"RecordMigrationGitRestoreRequired">;
53
+ } & {
54
+ code: Schema.Literal<["record-migration-git-restore-required"]>;
55
+ }>;
56
+ /** In-place migration is permitted only with a clean Git restore point. */
57
+ export declare class RecordMigrationGitRestoreRequired extends RecordMigrationGitRestoreRequired_base {
58
+ }
59
+ declare const RecordAutoMigrationGitSaveRequired_base: Schema.TaggedErrorClass<RecordAutoMigrationGitSaveRequired, "RecordAutoMigrationGitSaveRequired", {
60
+ readonly _tag: Schema.tag<"RecordAutoMigrationGitSaveRequired">;
61
+ } & {
62
+ code: Schema.Literal<["record-auto-migration-git-save-required"]>;
63
+ }>;
64
+ /** Automatic migration requires every portable byte to be saved at clean HEAD. */
65
+ export declare class RecordAutoMigrationGitSaveRequired extends RecordAutoMigrationGitSaveRequired_base {
66
+ }
67
+ declare const RecordMigrationInvalid_base: Schema.TaggedErrorClass<RecordMigrationInvalid, "RecordMigrationInvalid", {
68
+ readonly _tag: Schema.tag<"RecordMigrationInvalid">;
69
+ } & {
70
+ code: Schema.Literal<["record-migration-invalid"]>;
71
+ family: typeof Schema.String;
72
+ }>;
73
+ /** A known historical attachment cannot be proven safe to advance in place. */
74
+ export declare class RecordMigrationInvalid extends RecordMigrationInvalid_base {
75
+ }
76
+ declare const RecordMigrationRecoveryRequired_base: Schema.TaggedErrorClass<RecordMigrationRecoveryRequired, "RecordMigrationRecoveryRequired", {
77
+ readonly _tag: Schema.tag<"RecordMigrationRecoveryRequired">;
78
+ } & {
79
+ code: Schema.Literal<["record-migration-recovery-required"]>;
80
+ causeCode: typeof Schema.String;
81
+ restoreCommit: typeof Schema.String;
82
+ restoreSafe: typeof Schema.Boolean;
83
+ }>;
84
+ /** The migration sentinel exists, so the Record must be restored before reuse. */
85
+ export declare class RecordMigrationRecoveryRequired extends RecordMigrationRecoveryRequired_base {
86
+ }
41
87
  declare const RecordReaderClosed_base: Schema.TaggedErrorClass<RecordReaderClosed, "RecordReaderClosed", {
42
88
  readonly _tag: Schema.tag<"RecordReaderClosed">;
43
89
  } & {
@@ -55,5 +101,7 @@ declare const RecordHandleInvalid_base: Schema.TaggedErrorClass<RecordHandleInva
55
101
  export declare class RecordHandleInvalid extends RecordHandleInvalid_base {
56
102
  }
57
103
  export type RecordReaderOpenError = RecordCoordinationError | RecordBootstrapInvalid | RecordMigrationRequired | RecordFormatUnsupported | RecordMigrationInterruptedState;
104
+ export type RecordMaintenanceOpenError = RecordReaderOpenError;
105
+ export type RecordMaintenanceError = RecordMaintenanceOpenError | RecordMigrationPlanStale | RecordMigrationGitRestoreRequired | RecordMigrationInvalid | RecordMigrationRecoveryRequired | RecordGitError;
58
106
  export type RecordReaderReadError = RecordFileSystemError | RecordReaderClosed | RecordHandleInvalid;
59
107
  export {};
@@ -1,16 +1,26 @@
1
1
  import { createRequire as __niceevalCreateRequire } from "node:module";
2
2
  const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
3
  const __niceevalCanonical = __niceevalRequire("./errors.cjs");
4
- const __niceevalExport0 = __niceevalCanonical["RecordBootstrapInvalid"];
5
- export { __niceevalExport0 as RecordBootstrapInvalid };
6
- const __niceevalExport1 = __niceevalCanonical["RecordFormatUnsupported"];
7
- export { __niceevalExport1 as RecordFormatUnsupported };
8
- const __niceevalExport2 = __niceevalCanonical["RecordHandleInvalid"];
9
- export { __niceevalExport2 as RecordHandleInvalid };
10
- const __niceevalExport3 = __niceevalCanonical["RecordMigrationInterruptedState"];
11
- export { __niceevalExport3 as RecordMigrationInterruptedState };
12
- const __niceevalExport4 = __niceevalCanonical["RecordMigrationRequired"];
13
- export { __niceevalExport4 as RecordMigrationRequired };
14
- const __niceevalExport5 = __niceevalCanonical["RecordReaderClosed"];
15
- export { __niceevalExport5 as RecordReaderClosed };
4
+ const __niceevalExport0 = __niceevalCanonical["RecordAutoMigrationGitSaveRequired"];
5
+ export { __niceevalExport0 as RecordAutoMigrationGitSaveRequired };
6
+ const __niceevalExport1 = __niceevalCanonical["RecordBootstrapInvalid"];
7
+ export { __niceevalExport1 as RecordBootstrapInvalid };
8
+ const __niceevalExport2 = __niceevalCanonical["RecordFormatUnsupported"];
9
+ export { __niceevalExport2 as RecordFormatUnsupported };
10
+ const __niceevalExport3 = __niceevalCanonical["RecordHandleInvalid"];
11
+ export { __niceevalExport3 as RecordHandleInvalid };
12
+ const __niceevalExport4 = __niceevalCanonical["RecordMigrationGitRestoreRequired"];
13
+ export { __niceevalExport4 as RecordMigrationGitRestoreRequired };
14
+ const __niceevalExport5 = __niceevalCanonical["RecordMigrationInterruptedState"];
15
+ export { __niceevalExport5 as RecordMigrationInterruptedState };
16
+ const __niceevalExport6 = __niceevalCanonical["RecordMigrationInvalid"];
17
+ export { __niceevalExport6 as RecordMigrationInvalid };
18
+ const __niceevalExport7 = __niceevalCanonical["RecordMigrationPlanStale"];
19
+ export { __niceevalExport7 as RecordMigrationPlanStale };
20
+ const __niceevalExport8 = __niceevalCanonical["RecordMigrationRecoveryRequired"];
21
+ export { __niceevalExport8 as RecordMigrationRecoveryRequired };
22
+ const __niceevalExport9 = __niceevalCanonical["RecordMigrationRequired"];
23
+ export { __niceevalExport9 as RecordMigrationRequired };
24
+ const __niceevalExport10 = __niceevalCanonical["RecordReaderClosed"];
25
+ export { __niceevalExport10 as RecordReaderClosed };
16
26
  //# sourceMappingURL=errors.js.map
@@ -2,9 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RECORD_FORMAT_DOCUMENT_MAXIMUM_BYTES = void 0;
4
4
  exports.readCurrentRecordFormat = readCurrentRecordFormat;
5
+ exports.readRecordFormatForMaintenance = readRecordFormatForMaintenance;
5
6
  const effect_1 = require("effect");
6
7
  const core_ts_1 = require("../codec/core.cjs");
7
- const identifiers_ts_1 = require("../model/identifiers.cjs");
8
+ const identifiers_ts_1 = require("../codec/identifiers.cjs");
9
+ const identifiers_ts_2 = require("../model/identifiers.cjs");
8
10
  const services_ts_1 = require("../platform/services.cjs");
9
11
  const errors_ts_1 = require("./errors.cjs");
10
12
  /** `record.json` contains only root identity, so its read has a hard small cap. */
@@ -43,15 +45,19 @@ function classifyRecordDocument(value) {
43
45
  const format = formatOf(value);
44
46
  if (format === undefined)
45
47
  return effect_1.Either.left(bootstrapInvalid("record-document-invalid"));
46
- if (format !== identifiers_ts_1.RECORD_FORMAT) {
48
+ if (format !== identifiers_ts_2.RECORD_FORMAT) {
47
49
  return effect_1.Either.left(new errors_ts_1.RecordFormatUnsupported({ code: "record-format-unsupported", format }));
48
50
  }
49
- // A same-format numeric header is not automatically a reverse migration.
50
- // This package currently declares no adjacent root chain, so both a future
51
- // root and a hypothetical older root are unsupported rather than a fake
52
- // `N -> current` migration-required result.
53
51
  const schemaVersion = schemaVersionOf(value);
54
- if (schemaVersion !== undefined && schemaVersion !== identifiers_ts_1.RECORD_SCHEMA_VERSION) {
52
+ if (schemaVersion === 1) {
53
+ return effect_1.Either.left(new errors_ts_1.RecordMigrationRequired({
54
+ code: "record-migration-required",
55
+ source: `${identifiers_ts_2.RECORD_FORMAT}@1`,
56
+ target: `${identifiers_ts_2.RECORD_FORMAT}@${identifiers_ts_2.RECORD_SCHEMA_VERSION}`,
57
+ command: "niceeval migrate",
58
+ }));
59
+ }
60
+ if (schemaVersion !== identifiers_ts_2.RECORD_SCHEMA_VERSION) {
55
61
  return effect_1.Either.left(new errors_ts_1.RecordFormatUnsupported({ code: "record-format-unsupported", format }));
56
62
  }
57
63
  const decoded = (0, core_ts_1.decodeRecordDocument)(value);
@@ -59,23 +65,76 @@ function classifyRecordDocument(value) {
59
65
  ? effect_1.Either.left(bootstrapInvalid("record-document-invalid"))
60
66
  : effect_1.Either.right(Object.freeze({ document: decoded.right }));
61
67
  }
62
- /**
63
- * Reads only the bounded current root header. Migration-required is emitted
64
- * only by an actually declared adjacent chain; this current root has none.
65
- */
66
- function readCurrentRecordFormat(fileSystem, root) {
67
- const readDocument = fileSystem.readFile({
68
+ function legacyRecordDocument(value) {
69
+ if (typeof value !== "object" || value === null || Array.isArray(value))
70
+ return undefined;
71
+ const record = value;
72
+ if (Object.keys(record).length !== 3 ||
73
+ record.format !== identifiers_ts_2.RECORD_FORMAT ||
74
+ record.schemaVersion !== 1)
75
+ return undefined;
76
+ const recordId = effect_1.Schema.decodeUnknownEither(identifiers_ts_1.RecordIdSchema, core_ts_1.RecordExactParseOptions)(record.recordId);
77
+ return effect_1.Either.isLeft(recordId) ? undefined : Object.freeze({
78
+ format: identifiers_ts_2.RECORD_FORMAT,
79
+ schemaVersion: identifiers_ts_2.RECORD_SCHEMA_VERSION,
80
+ recordId: recordId.right,
81
+ });
82
+ }
83
+ function readFormatBytes(fileSystem, root) {
84
+ return fileSystem.readFile({
68
85
  file: (0, services_ts_1.recordPortablePath)(root, "record.json"),
69
86
  maximumBytes: exports.RECORD_FORMAT_DOCUMENT_MAXIMUM_BYTES,
70
87
  }).pipe(effect_1.Effect.catchTag("RecordResourceLimitExceeded", () => effect_1.Effect.fail(bootstrapInvalid("record-format-document-limit-exceeded"))));
71
- return effect_1.Effect.flatMap(readDocument, (bytes) => {
88
+ }
89
+ /**
90
+ * Reads only the bounded exact-current root header. The one published
91
+ * predecessor is reported as migration-required but is never decoded as current.
92
+ */
93
+ function readCurrentRecordFormat(fileSystem, root) {
94
+ return effect_1.Effect.gen(function* () {
95
+ const bytes = yield* readFormatBytes(fileSystem, root);
72
96
  if (bytes === undefined)
73
- return effect_1.Effect.fail(bootstrapInvalid("record-document-invalid"));
97
+ return yield* effect_1.Effect.fail(bootstrapInvalid("record-document-invalid"));
74
98
  const parsed = parseRecordJson(bytes);
75
99
  if (effect_1.Either.isLeft(parsed))
76
- return effect_1.Effect.fail(parsed.left);
100
+ return yield* effect_1.Effect.fail(parsed.left);
77
101
  const classified = classifyRecordDocument(parsed.right);
78
- return effect_1.Either.isLeft(classified) ? effect_1.Effect.fail(classified.left) : effect_1.Effect.succeed(classified.right);
102
+ if (effect_1.Either.isLeft(classified))
103
+ return yield* effect_1.Effect.fail(classified.left);
104
+ return classified.right;
105
+ });
106
+ }
107
+ /** Maintenance-only exact recognition of the one published root predecessor. */
108
+ function readRecordFormatForMaintenance(fileSystem, root) {
109
+ return effect_1.Effect.gen(function* () {
110
+ const bytes = yield* readFormatBytes(fileSystem, root);
111
+ if (bytes === undefined)
112
+ return yield* effect_1.Effect.fail(bootstrapInvalid("record-document-invalid"));
113
+ const parsed = parseRecordJson(bytes);
114
+ if (effect_1.Either.isLeft(parsed))
115
+ return yield* effect_1.Effect.fail(parsed.left);
116
+ const version = schemaVersionOf(parsed.right);
117
+ if (version === identifiers_ts_2.RECORD_SCHEMA_VERSION) {
118
+ const decoded = (0, core_ts_1.decodeRecordDocument)(parsed.right);
119
+ if (effect_1.Either.isLeft(decoded))
120
+ return yield* effect_1.Effect.fail(bootstrapInvalid("record-document-invalid"));
121
+ return Object.freeze({
122
+ document: decoded.right,
123
+ sourceSchemaVersion: identifiers_ts_2.RECORD_SCHEMA_VERSION,
124
+ sourceBytes: bytes,
125
+ });
126
+ }
127
+ if (version === 1) {
128
+ const document = legacyRecordDocument(parsed.right);
129
+ if (document === undefined)
130
+ return yield* effect_1.Effect.fail(bootstrapInvalid("record-document-invalid"));
131
+ return Object.freeze({ document, sourceSchemaVersion: 1, sourceBytes: bytes });
132
+ }
133
+ const format = formatOf(parsed.right);
134
+ return yield* effect_1.Effect.fail(new errors_ts_1.RecordFormatUnsupported({
135
+ code: "record-format-unsupported",
136
+ format: format ?? "unknown",
137
+ }));
79
138
  });
80
139
  }
81
140
  //# sourceMappingURL=format.cjs.map