niceeval 0.13.2 → 0.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/dist/agents/bub.cjs +4 -4
  2. package/dist/agents/bub.cjs.map +1 -1
  3. package/dist/agents/bub.d.cts +2 -2
  4. package/dist/agents/bub.d.mts +2 -2
  5. package/dist/agents/bub.d.ts +2 -2
  6. package/dist/agents/claude-code-native.cjs +213 -0
  7. package/dist/agents/claude-code-native.cjs.map +1 -0
  8. package/dist/agents/claude-code-native.d.cts +5 -0
  9. package/dist/agents/claude-code-native.d.mts +5 -0
  10. package/dist/agents/claude-code-native.d.ts +5 -0
  11. package/dist/agents/claude-code-native.js +6 -0
  12. package/dist/agents/claude-code-native.js.map +1 -0
  13. package/dist/agents/claude-code.cjs +26 -80
  14. package/dist/agents/claude-code.cjs.map +1 -1
  15. package/dist/agents/codex-app-server.cjs +314 -0
  16. package/dist/agents/codex-app-server.cjs.map +1 -0
  17. package/dist/agents/codex-app-server.d.cts +9 -0
  18. package/dist/agents/codex-app-server.d.mts +9 -0
  19. package/dist/agents/codex-app-server.d.ts +9 -0
  20. package/dist/agents/codex-app-server.js +6 -0
  21. package/dist/agents/codex-app-server.js.map +1 -0
  22. package/dist/agents/codex.cjs +19 -68
  23. package/dist/agents/codex.cjs.map +1 -1
  24. package/dist/agents/codex.d.cts +3 -3
  25. package/dist/agents/codex.d.mts +3 -3
  26. package/dist/agents/codex.d.ts +3 -3
  27. package/dist/agents/index.cjs +3 -1
  28. package/dist/agents/index.cjs.map +1 -1
  29. package/dist/agents/index.d.cts +1 -0
  30. package/dist/agents/index.d.mts +1 -0
  31. package/dist/agents/index.d.ts +1 -0
  32. package/dist/agents/index.js +84 -82
  33. package/dist/agents/index.mjs +84 -82
  34. package/dist/agents/managed-jsonl.cjs +207 -0
  35. package/dist/agents/managed-jsonl.cjs.map +1 -0
  36. package/dist/agents/managed-jsonl.d.cts +39 -0
  37. package/dist/agents/managed-jsonl.d.mts +39 -0
  38. package/dist/agents/managed-jsonl.d.ts +39 -0
  39. package/dist/agents/managed-jsonl.js +6 -0
  40. package/dist/agents/managed-jsonl.js.map +1 -0
  41. package/dist/agents/managed-process.cjs +31 -0
  42. package/dist/agents/managed-process.cjs.map +1 -0
  43. package/dist/agents/managed-process.d.cts +3 -0
  44. package/dist/agents/managed-process.d.mts +3 -0
  45. package/dist/agents/managed-process.d.ts +3 -0
  46. package/dist/agents/managed-process.js +6 -0
  47. package/dist/agents/managed-process.js.map +1 -0
  48. package/dist/agents/omp.cjs +18 -1
  49. package/dist/agents/omp.cjs.map +1 -1
  50. package/dist/agents/sdk-streams.cjs +11 -4
  51. package/dist/agents/sdk-streams.cjs.map +1 -1
  52. package/dist/agents/types.cjs.map +1 -1
  53. package/dist/agents/types.d.cts +8 -0
  54. package/dist/agents/types.d.mts +8 -0
  55. package/dist/agents/types.d.ts +8 -0
  56. package/dist/analysis/bindings.cjs +74 -19
  57. package/dist/analysis/bindings.cjs.map +1 -1
  58. package/dist/analysis/bindings.d.cts +534 -156
  59. package/dist/analysis/bindings.d.mts +534 -156
  60. package/dist/analysis/bindings.d.ts +534 -156
  61. package/dist/analysis/domain-view.cjs.map +1 -1
  62. package/dist/analysis/domain-view.d.cts +137 -8
  63. package/dist/analysis/domain-view.d.mts +137 -8
  64. package/dist/analysis/domain-view.d.ts +137 -8
  65. package/dist/analysis/index.cjs.map +1 -1
  66. package/dist/analysis/index.d.cts +1 -1
  67. package/dist/analysis/index.d.mts +1 -1
  68. package/dist/analysis/index.d.ts +1 -1
  69. package/dist/assertions/api.cjs.map +1 -1
  70. package/dist/assertions/api.d.cts +62 -0
  71. package/dist/assertions/api.d.mts +62 -0
  72. package/dist/assertions/api.d.ts +62 -0
  73. package/dist/assertions/judge.cjs +56 -5
  74. package/dist/assertions/judge.cjs.map +1 -1
  75. package/dist/assertions/match.cjs +66 -42
  76. package/dist/assertions/match.cjs.map +1 -1
  77. package/dist/assertions/match.d.cts +13 -0
  78. package/dist/assertions/match.d.mts +13 -0
  79. package/dist/assertions/match.d.ts +13 -0
  80. package/dist/assertions/record/attachment.cjs +104 -33
  81. package/dist/assertions/record/attachment.cjs.map +1 -1
  82. package/dist/assertions/record/attachment.d.cts +294 -57
  83. package/dist/assertions/record/attachment.d.mts +294 -57
  84. package/dist/assertions/record/attachment.d.ts +294 -57
  85. package/dist/assertions/record/codec.cjs +91 -17
  86. package/dist/assertions/record/codec.cjs.map +1 -1
  87. package/dist/assertions/record/codec.d.cts +280 -52
  88. package/dist/assertions/record/codec.d.mts +280 -52
  89. package/dist/assertions/record/codec.d.ts +280 -52
  90. package/dist/assertions/record/index.js +2 -0
  91. package/dist/assertions/record/model.cjs +16 -0
  92. package/dist/assertions/record/model.cjs.map +1 -1
  93. package/dist/assertions/record/model.d.cts +120 -13
  94. package/dist/assertions/record/model.d.mts +120 -13
  95. package/dist/assertions/record/model.d.ts +120 -13
  96. package/dist/assertions/record/model.js +2 -0
  97. package/dist/assertions/record/producer.cjs +70 -50
  98. package/dist/assertions/record/producer.cjs.map +1 -1
  99. package/dist/assertions/record/producer.d.cts +8 -7
  100. package/dist/assertions/record/producer.d.mts +8 -7
  101. package/dist/assertions/record/producer.d.ts +8 -7
  102. package/dist/assertions/runtime.cjs +49 -7
  103. package/dist/assertions/runtime.cjs.map +1 -1
  104. package/dist/cli/application.cjs +40 -0
  105. package/dist/cli/application.cjs.map +1 -0
  106. package/dist/cli/application.d.cts +129 -0
  107. package/dist/cli/application.d.mts +129 -0
  108. package/dist/cli/application.d.ts +129 -0
  109. package/dist/cli/application.js +24 -0
  110. package/dist/cli/application.js.map +1 -0
  111. package/dist/cli/bootstrap.cjs +10 -4
  112. package/dist/cli/bootstrap.cjs.map +1 -1
  113. package/dist/cli/node-application.cjs +123 -0
  114. package/dist/cli/node-application.cjs.map +1 -0
  115. package/dist/cli/node-application.d.cts +14 -0
  116. package/dist/cli/node-application.d.mts +14 -0
  117. package/dist/cli/node-application.d.ts +14 -0
  118. package/dist/cli/node-application.js +26 -0
  119. package/dist/cli/node-application.js.map +1 -0
  120. package/dist/cli/program.cjs +2807 -0
  121. package/dist/cli/program.cjs.map +1 -0
  122. package/dist/cli/program.d.cts +352 -0
  123. package/dist/cli/program.d.mts +352 -0
  124. package/dist/cli/program.d.ts +352 -0
  125. package/dist/cli/program.js +36 -0
  126. package/dist/cli/program.js.map +1 -0
  127. package/dist/cli/project-configuration.cjs +134 -0
  128. package/dist/cli/project-configuration.cjs.map +1 -0
  129. package/dist/cli/project-configuration.d.cts +64 -0
  130. package/dist/cli/project-configuration.d.mts +64 -0
  131. package/dist/cli/project-configuration.d.ts +64 -0
  132. package/dist/cli/project-configuration.js +22 -0
  133. package/dist/cli/project-configuration.js.map +1 -0
  134. package/dist/cli/record.cjs +20 -4
  135. package/dist/cli/record.cjs.map +1 -1
  136. package/dist/cli/record.d.cts +3 -3
  137. package/dist/cli/record.d.mts +3 -3
  138. package/dist/cli/record.d.ts +3 -3
  139. package/dist/cli.cjs +19 -3130
  140. package/dist/cli.cjs.map +1 -1
  141. package/dist/cli.d.cts +2 -148
  142. package/dist/cli.d.mts +2 -148
  143. package/dist/cli.d.ts +2 -148
  144. package/dist/cli.js +22 -30
  145. package/dist/context/assert-first.cjs +21 -15
  146. package/dist/context/assert-first.cjs.map +1 -1
  147. package/dist/context/assert-first.d.cts +1 -0
  148. package/dist/context/assert-first.d.mts +1 -0
  149. package/dist/context/assert-first.d.ts +1 -0
  150. package/dist/context/attempt-resources.cjs +13 -0
  151. package/dist/context/attempt-resources.cjs.map +1 -0
  152. package/dist/context/attempt-resources.d.cts +3 -0
  153. package/dist/context/attempt-resources.d.mts +3 -0
  154. package/dist/context/attempt-resources.d.ts +3 -0
  155. package/dist/context/attempt-resources.js +8 -0
  156. package/dist/context/attempt-resources.js.map +1 -0
  157. package/dist/context/session.cjs +4 -3
  158. package/dist/context/session.cjs.map +1 -1
  159. package/dist/context/session.d.cts +1 -0
  160. package/dist/context/session.d.mts +1 -0
  161. package/dist/context/session.d.ts +1 -0
  162. package/dist/eval/record/verdict.cjs +3 -2
  163. package/dist/eval/record/verdict.cjs.map +1 -1
  164. package/dist/experiment/host/index.cjs +1 -6
  165. package/dist/experiment/host/index.cjs.map +1 -1
  166. package/dist/experiment/host/index.d.cts +1 -0
  167. package/dist/experiment/host/index.d.mts +1 -0
  168. package/dist/experiment/host/index.d.ts +1 -0
  169. package/dist/load-config.cjs +13 -4
  170. package/dist/load-config.cjs.map +1 -1
  171. package/dist/load-config.d.cts +4 -3
  172. package/dist/load-config.d.mts +4 -3
  173. package/dist/load-config.d.ts +4 -3
  174. package/dist/load-config.js +4 -2
  175. package/dist/o11y/parsers/codex.cjs +29 -7
  176. package/dist/o11y/parsers/codex.cjs.map +1 -1
  177. package/dist/record/codec/core.d.cts +0 -2
  178. package/dist/record/codec/core.d.mts +0 -2
  179. package/dist/record/codec/core.d.ts +0 -2
  180. package/dist/record/codec/identifiers.cjs +2 -3
  181. package/dist/record/codec/identifiers.cjs.map +1 -1
  182. package/dist/record/codec/identifiers.d.cts +1 -2
  183. package/dist/record/codec/identifiers.d.mts +1 -2
  184. package/dist/record/codec/identifiers.d.ts +1 -2
  185. package/dist/record/codec/identifiers.js +10 -12
  186. package/dist/record/codec/index.js +42 -44
  187. package/dist/record/definition/attachment.cjs +1 -0
  188. package/dist/record/definition/attachment.cjs.map +1 -1
  189. package/dist/record/definition/attachment.d.cts +14 -0
  190. package/dist/record/definition/attachment.d.mts +14 -0
  191. package/dist/record/definition/attachment.d.ts +14 -0
  192. package/dist/record/family/assertions-v1.cjs +104 -0
  193. package/dist/record/family/assertions-v1.cjs.map +1 -0
  194. package/dist/record/family/assertions-v1.d.cts +2 -0
  195. package/dist/record/family/assertions-v1.d.mts +2 -0
  196. package/dist/record/family/assertions-v1.d.ts +2 -0
  197. package/dist/record/family/assertions-v1.js +6 -0
  198. package/dist/record/family/assertions-v1.js.map +1 -0
  199. package/dist/record/family/assertions.cjs +16 -5
  200. package/dist/record/family/assertions.cjs.map +1 -1
  201. package/dist/record/family/assertions.d.cts +510 -56
  202. package/dist/record/family/assertions.d.mts +510 -56
  203. package/dist/record/family/assertions.d.ts +510 -56
  204. package/dist/record/family/assertions.js +14 -10
  205. package/dist/record/family/catalog.cjs +17 -1
  206. package/dist/record/family/catalog.cjs.map +1 -1
  207. package/dist/record/family/catalog.d.cts +1292 -104
  208. package/dist/record/family/catalog.d.mts +1292 -104
  209. package/dist/record/family/catalog.d.ts +1292 -104
  210. package/dist/record/family/catalog.js +22 -20
  211. package/dist/record/family/index.js +144 -138
  212. package/dist/record/family/observability-v1.cjs +5 -0
  213. package/dist/record/family/observability-v1.cjs.map +1 -1
  214. package/dist/record/family/observability.cjs +1 -1
  215. package/dist/record/family/observability.cjs.map +1 -1
  216. package/dist/record/host/runtime.cjs +323 -173
  217. package/dist/record/host/runtime.cjs.map +1 -1
  218. package/dist/record/host/types.cjs.map +1 -1
  219. package/dist/record/host/types.d.cts +9 -7
  220. package/dist/record/host/types.d.mts +9 -7
  221. package/dist/record/host/types.d.ts +9 -7
  222. package/dist/record/model/core.cjs.map +1 -1
  223. package/dist/record/model/core.d.cts +1 -2
  224. package/dist/record/model/core.d.mts +1 -2
  225. package/dist/record/model/core.d.ts +1 -2
  226. package/dist/record/model/definition.cjs +1 -2
  227. package/dist/record/model/definition.cjs.map +1 -1
  228. package/dist/record/model/definition.d.cts +1 -7
  229. package/dist/record/model/definition.d.mts +1 -7
  230. package/dist/record/model/definition.d.ts +1 -7
  231. package/dist/record/model/identifiers.cjs +2 -3
  232. package/dist/record/model/identifiers.cjs.map +1 -1
  233. package/dist/record/model/identifiers.d.cts +1 -3
  234. package/dist/record/model/identifiers.d.mts +1 -3
  235. package/dist/record/model/identifiers.d.ts +1 -3
  236. package/dist/record/model/identifiers.js +36 -38
  237. package/dist/record/model/index.js +60 -62
  238. package/dist/record/platform/node.cjs +17 -7
  239. package/dist/record/platform/node.cjs.map +1 -1
  240. package/dist/record/platform/services.cjs.map +1 -1
  241. package/dist/record/platform/services.d.cts +8 -3
  242. package/dist/record/platform/services.d.mts +8 -3
  243. package/dist/record/platform/services.d.ts +8 -3
  244. package/dist/record/reader/format.cjs +16 -65
  245. package/dist/record/reader/format.cjs.map +1 -1
  246. package/dist/record/reader/format.d.cts +5 -9
  247. package/dist/record/reader/format.d.mts +5 -9
  248. package/dist/record/reader/format.d.ts +5 -9
  249. package/dist/record/reader/index.js +10 -8
  250. package/dist/record/reader/runtime.cjs +63 -32
  251. package/dist/record/reader/runtime.cjs.map +1 -1
  252. package/dist/record/reader/runtime.d.cts +40 -4
  253. package/dist/record/reader/runtime.d.mts +40 -4
  254. package/dist/record/reader/runtime.d.ts +40 -4
  255. package/dist/record/reader/runtime.js +6 -4
  256. package/dist/report/assets/enhance.js +5 -5
  257. package/dist/report/assets/styles.css +190 -24
  258. package/dist/report/built-in/result-components.cjs +8 -5
  259. package/dist/report/built-in/result-components.cjs.map +1 -1
  260. package/dist/report/built-in/standard.cjs +3 -0
  261. package/dist/report/built-in/standard.cjs.map +1 -1
  262. package/dist/report/built-in/standard.d.cts +2 -0
  263. package/dist/report/built-in/standard.d.mts +2 -0
  264. package/dist/report/built-in/standard.d.ts +2 -0
  265. package/dist/report/client-dist/app.js +53 -0
  266. package/dist/report/components/attempt-detail/compute.cjs +108 -231
  267. package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
  268. package/dist/report/components/attempt-detail/compute.d.cts +11 -45
  269. package/dist/report/components/attempt-detail/compute.d.mts +11 -45
  270. package/dist/report/components/attempt-detail/compute.d.ts +11 -45
  271. package/dist/report/components/attempt-detail/compute.js +2 -4
  272. package/dist/report/components/attempt-detail/content.cjs +4 -4
  273. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  274. package/dist/report/components/attempt-detail/validate.cjs +47 -4
  275. package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
  276. package/dist/report/components/entity-lists/compute.cjs +9 -15
  277. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  278. package/dist/report/components/entity-lists/content.cjs +53 -40
  279. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  280. package/dist/report/components/entity-lists/index.cjs +1 -3
  281. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  282. package/dist/report/components/experiment-detail/compute.cjs +4 -6
  283. package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
  284. package/dist/report/components/summaries/index.cjs +5 -1
  285. package/dist/report/components/summaries/index.cjs.map +1 -1
  286. package/dist/report/definition/cell.cjs +14 -7
  287. package/dist/report/definition/cell.cjs.map +1 -1
  288. package/dist/report/definition/cell.d.cts +4 -0
  289. package/dist/report/definition/cell.d.mts +4 -0
  290. package/dist/report/definition/cell.d.ts +4 -0
  291. package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
  292. package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
  293. package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
  294. package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
  295. package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
  296. package/dist/report/definition/primitives/assertion-evidence.js +6 -0
  297. package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
  298. package/dist/report/definition/primitives/conversation.cjs +7 -0
  299. package/dist/report/definition/primitives/conversation.cjs.map +1 -1
  300. package/dist/report/definition/primitives/conversation.d.cts +2 -0
  301. package/dist/report/definition/primitives/conversation.d.mts +2 -0
  302. package/dist/report/definition/primitives/conversation.d.ts +2 -0
  303. package/dist/report/definition/primitives/turn-trace.cjs +53 -3
  304. package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
  305. package/dist/report/definition/primitives.cjs +14 -1
  306. package/dist/report/definition/primitives.cjs.map +1 -1
  307. package/dist/report/definition/report.cjs +16 -8
  308. package/dist/report/definition/report.cjs.map +1 -1
  309. package/dist/report/definition/report.d.cts +6 -0
  310. package/dist/report/definition/report.d.mts +6 -0
  311. package/dist/report/definition/report.d.ts +6 -0
  312. package/dist/report/definition/table-text.cjs +12 -3
  313. package/dist/report/definition/table-text.cjs.map +1 -1
  314. package/dist/report/definition/table-text.d.cts +6 -1
  315. package/dist/report/definition/table-text.d.mts +6 -1
  316. package/dist/report/definition/table-text.d.ts +6 -1
  317. package/dist/report/execution/model.cjs +6 -14
  318. package/dist/report/execution/model.cjs.map +1 -1
  319. package/dist/report/execution/model.d.cts +5 -10
  320. package/dist/report/execution/model.d.mts +5 -10
  321. package/dist/report/execution/model.d.ts +5 -10
  322. package/dist/report/execution/model.js +6 -6
  323. package/dist/report/execution/paths.cjs +0 -11
  324. package/dist/report/execution/paths.cjs.map +1 -1
  325. package/dist/report/execution/paths.d.cts +0 -1
  326. package/dist/report/execution/paths.d.mts +0 -1
  327. package/dist/report/execution/paths.d.ts +0 -1
  328. package/dist/report/execution/paths.js +6 -8
  329. package/dist/report/host/execute.cjs +13 -22
  330. package/dist/report/host/execute.cjs.map +1 -1
  331. package/dist/report/host/execute.d.cts +1 -4
  332. package/dist/report/host/execute.d.mts +1 -4
  333. package/dist/report/host/execute.d.ts +1 -4
  334. package/dist/report/host/from-record.cjs +3 -0
  335. package/dist/report/host/from-record.cjs.map +1 -1
  336. package/dist/report/host/from-record.d.cts +4 -1
  337. package/dist/report/host/from-record.d.mts +4 -1
  338. package/dist/report/host/from-record.d.ts +4 -1
  339. package/dist/report/host/site-assets.cjs +1 -2
  340. package/dist/report/host/site-assets.cjs.map +1 -1
  341. package/dist/report/host/site-assets.d.cts +0 -1
  342. package/dist/report/host/site-assets.d.mts +0 -1
  343. package/dist/report/host/site-assets.d.ts +0 -1
  344. package/dist/report/host/site-assets.js +2 -4
  345. package/dist/report/host/static.cjs +71 -346
  346. package/dist/report/host/static.cjs.map +1 -1
  347. package/dist/report/host/static.d.cts +1 -3
  348. package/dist/report/host/static.d.mts +1 -3
  349. package/dist/report/host/static.d.ts +1 -3
  350. package/dist/report/host/static.js +2 -2
  351. package/dist/report/host/view-session.cjs.map +1 -1
  352. package/dist/report/host/view-session.d.cts +1 -1
  353. package/dist/report/host/view-session.d.mts +1 -1
  354. package/dist/report/host/view-session.d.ts +1 -1
  355. package/dist/report/model/locale.cjs +1 -1
  356. package/dist/report/model/locale.cjs.map +1 -1
  357. package/dist/report/model/locale.d.cts +1 -1
  358. package/dist/report/model/locale.d.mts +1 -1
  359. package/dist/report/model/locale.d.ts +1 -1
  360. package/dist/report/model/pricing.cjs +2 -2
  361. package/dist/report/model/pricing.cjs.map +1 -1
  362. package/dist/report/react/enhance.js +5 -5
  363. package/dist/report/react/styles.css +190 -24
  364. package/dist/runner/adoption.cjs +4 -7
  365. package/dist/runner/adoption.cjs.map +1 -1
  366. package/dist/runner/attempt-resources.cjs +60 -0
  367. package/dist/runner/attempt-resources.cjs.map +1 -0
  368. package/dist/runner/attempt-resources.d.cts +13 -0
  369. package/dist/runner/attempt-resources.d.mts +13 -0
  370. package/dist/runner/attempt-resources.d.ts +13 -0
  371. package/dist/runner/attempt-resources.js +6 -0
  372. package/dist/runner/attempt-resources.js.map +1 -0
  373. package/dist/runner/attempt.cjs +37 -3
  374. package/dist/runner/attempt.cjs.map +1 -1
  375. package/dist/runner/feedback/failure.cjs +77 -2
  376. package/dist/runner/feedback/failure.cjs.map +1 -1
  377. package/dist/runner/feedback/failure.d.cts +2 -1
  378. package/dist/runner/feedback/failure.d.mts +2 -1
  379. package/dist/runner/feedback/failure.d.ts +2 -1
  380. package/dist/runner/project-current.cjs +2 -13
  381. package/dist/runner/project-current.cjs.map +1 -1
  382. package/dist/runner/project-current.d.cts +4 -2
  383. package/dist/runner/project-current.d.mts +4 -2
  384. package/dist/runner/project-current.d.ts +4 -2
  385. package/dist/runner/reporters/braintrust.cjs +7 -7
  386. package/dist/runner/reporters/braintrust.cjs.map +1 -1
  387. package/dist/runner/reuse-readback.cjs +3 -4
  388. package/dist/runner/reuse-readback.cjs.map +1 -1
  389. package/dist/runner/run.cjs +5 -2
  390. package/dist/runner/run.cjs.map +1 -1
  391. package/dist/sandbox/backend.cjs +32 -2
  392. package/dist/sandbox/backend.cjs.map +1 -1
  393. package/dist/sandbox/backend.d.cts +12 -1
  394. package/dist/sandbox/backend.d.mts +12 -1
  395. package/dist/sandbox/backend.d.ts +12 -1
  396. package/dist/sandbox/backend.js +28 -22
  397. package/dist/sandbox/docker.cjs +140 -0
  398. package/dist/sandbox/docker.cjs.map +1 -1
  399. package/dist/sandbox/docker.d.cts +3 -1
  400. package/dist/sandbox/docker.d.mts +3 -1
  401. package/dist/sandbox/docker.d.ts +3 -1
  402. package/dist/sandbox/e2b.cjs +42 -0
  403. package/dist/sandbox/e2b.cjs.map +1 -1
  404. package/dist/sandbox/e2b.d.cts +2 -0
  405. package/dist/sandbox/e2b.d.mts +2 -0
  406. package/dist/sandbox/e2b.d.ts +2 -0
  407. package/dist/sandbox/local.cjs +64 -0
  408. package/dist/sandbox/local.cjs.map +1 -1
  409. package/dist/sandbox/local.d.cts +3 -1
  410. package/dist/sandbox/local.d.mts +3 -1
  411. package/dist/sandbox/local.d.ts +3 -1
  412. package/dist/sandbox/managed-process.cjs +49 -0
  413. package/dist/sandbox/managed-process.cjs.map +1 -0
  414. package/dist/sandbox/managed-process.d.cts +11 -0
  415. package/dist/sandbox/managed-process.d.mts +11 -0
  416. package/dist/sandbox/managed-process.d.ts +11 -0
  417. package/dist/sandbox/managed-process.js +6 -0
  418. package/dist/sandbox/managed-process.js.map +1 -0
  419. package/dist/sandbox/types.cjs.map +1 -1
  420. package/dist/sandbox/types.d.cts +24 -0
  421. package/dist/sandbox/types.d.mts +24 -0
  422. package/dist/sandbox/types.d.ts +24 -0
  423. package/dist/sandbox/vercel.cjs +1 -0
  424. package/dist/sandbox/vercel.cjs.map +1 -1
  425. package/dist/sandbox/vercel.d.cts +1 -0
  426. package/dist/sandbox/vercel.d.mts +1 -0
  427. package/dist/sandbox/vercel.d.ts +1 -0
  428. package/dist/view/server.cjs +2 -37
  429. package/dist/view/server.cjs.map +1 -1
  430. package/dist/view/server.d.cts +0 -3
  431. package/dist/view/server.d.mts +0 -3
  432. package/dist/view/server.d.ts +0 -3
  433. package/docs-site/zh/reference/builtin-agents.mdx +7 -7
  434. package/docs-site/zh/reference/official-adapters.mdx +4 -4
  435. package/docs-site/zh/reference/report-components.mdx +2 -2
  436. package/docs-site/zh/tutorials/configuration.mdx +2 -2
  437. package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
  438. package/docs-site/zh/tutorials/publish-report.mdx +4 -4
  439. package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
  440. package/docs-site/zh/tutorials/theming.mdx +2 -2
  441. package/package.json +4 -6
  442. package/dist/record/migration/index.cjs +0 -5
  443. package/dist/record/migration/index.cjs.map +0 -1
  444. package/dist/record/migration/index.d.cts +0 -11
  445. package/dist/record/migration/index.d.mts +0 -11
  446. package/dist/record/migration/index.d.ts +0 -11
  447. package/dist/record/migration/index.js +0 -6
  448. package/dist/record/migration/index.js.map +0 -1
  449. package/dist/report/host/site-runtime.cjs +0 -92
  450. package/dist/report/host/site-runtime.cjs.map +0 -1
  451. package/dist/report/host/site-runtime.d.cts +0 -9
  452. package/dist/report/host/site-runtime.d.mts +0 -9
  453. package/dist/report/host/site-runtime.d.ts +0 -9
  454. package/dist/report/host/site-runtime.js +0 -10
  455. package/dist/report/host/site-runtime.js.map +0 -1
  456. package/dist/view/client-dist/app.css +0 -2
  457. package/dist/view/client-dist/app.js +0 -49
  458. package/dist/view/data.cjs +0 -3
  459. package/dist/view/data.cjs.map +0 -1
  460. package/dist/view/data.d.cts +0 -9
  461. package/dist/view/data.d.mts +0 -9
  462. package/dist/view/data.d.ts +0 -9
  463. package/dist/view/data.js +0 -4
  464. package/dist/view/data.js.map +0 -1
  465. package/dist/view/index.cjs +0 -24
  466. package/dist/view/index.cjs.map +0 -1
  467. package/dist/view/index.d.cts +0 -9
  468. package/dist/view/index.d.mts +0 -9
  469. package/dist/view/index.d.ts +0 -9
  470. package/dist/view/index.js +0 -28
  471. package/dist/view/index.js.map +0 -1
  472. package/dist/view/report-view-cache.cjs +0 -200
  473. package/dist/view/report-view-cache.cjs.map +0 -1
  474. package/dist/view/report-view-cache.d.cts +0 -67
  475. package/dist/view/report-view-cache.d.mts +0 -67
  476. package/dist/view/report-view-cache.d.ts +0 -67
  477. package/dist/view/report-view-cache.js +0 -8
  478. package/dist/view/report-view-cache.js.map +0 -1
  479. package/dist/view/shared/types.cjs +0 -3
  480. package/dist/view/shared/types.cjs.map +0 -1
  481. package/dist/view/shared/types.d.cts +0 -51
  482. package/dist/view/shared/types.d.mts +0 -51
  483. package/dist/view/shared/types.d.ts +0 -51
  484. package/dist/view/shared/types.js +0 -4
  485. package/dist/view/shared/types.js.map +0 -1
  486. package/dist/view/site.cjs +0 -32
  487. package/dist/view/site.cjs.map +0 -1
  488. package/dist/view/site.d.cts +0 -24
  489. package/dist/view/site.d.mts +0 -24
  490. package/dist/view/site.d.ts +0 -24
  491. package/dist/view/site.js +0 -8
  492. package/dist/view/site.js.map +0 -1
  493. package/dist/view/styles.css +0 -170
  494. package/dist/view/template.html +0 -17
@@ -37,6 +37,7 @@ declare function list(input: {
37
37
  }): Effect.Effect<ExperimentHostListResult, unknown>;
38
38
  export interface ExperimentHostDebugPlanRequest {
39
39
  readonly cwd: string;
40
+ readonly config: Config;
40
41
  readonly experimentSelector: string;
41
42
  readonly evalSelector: string;
42
43
  }
@@ -37,6 +37,7 @@ declare function list(input: {
37
37
  }): Effect.Effect<ExperimentHostListResult, unknown>;
38
38
  export interface ExperimentHostDebugPlanRequest {
39
39
  readonly cwd: string;
40
+ readonly config: Config;
40
41
  readonly experimentSelector: string;
41
42
  readonly evalSelector: string;
42
43
  }
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  const __niceevalDynamicImport = (specifier) => import(specifier);
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.loadConfigFile = loadConfigFile;
4
+ exports.loadConfigModuleOnce = loadConfigModuleOnce;
5
+ exports.rebuildConfigModule = rebuildConfigModule;
5
6
  // niceeval.config.ts 装载:CLI 与 view 共用。view 本地模式每次重建传 freshImport,
6
7
  // 让 config.report / config.theme 及其整棵 import 图失效(docs/feature/reports/README.md)。
7
8
  const node_fs_1 = require("node:fs");
@@ -16,14 +17,14 @@ function needsAdditionalTsxLoader(error) {
16
17
  "code" in error &&
17
18
  error.code === "ERR_UNKNOWN_FILE_EXTENSION");
18
19
  }
19
- async function loadConfigFile(cwd, options) {
20
+ async function loadConfigModule(cwd, rebuild) {
20
21
  const path = (0, node_path_1.join)(cwd, "niceeval.config.ts");
21
22
  if (!(0, node_fs_1.existsSync)(path)) {
22
23
  throw new Error((0, index_ts_1.t)("cli.config.missing"));
23
24
  }
24
25
  let mod;
25
26
  try {
26
- mod = options?.freshImport
27
+ mod = rebuild
27
28
  ? (await (0, fresh_import_ts_1.freshImportModule)(path))
28
29
  : (await __niceevalDynamicImport((0, node_url_1.pathToFileURL)(path).href));
29
30
  }
@@ -33,7 +34,7 @@ async function loadConfigFile(cwd, options) {
33
34
  // ERR_UNKNOWN_FILE_EXTENSION。只对普通一次性装载的能力错误补一层 tsx hook
34
35
  // 重试,用户模块自己抛错时不重放副作用。fresh 装载不能退回 canonical URL:
35
36
  // 它可能已被 view 启动时缓存,从而用上一代成功配置掩盖当前损坏。
36
- if (!options?.freshImport && needsAdditionalTsxLoader(e)) {
37
+ if (!rebuild && needsAdditionalTsxLoader(e)) {
37
38
  const url = (0, node_url_1.pathToFileURL)(path).href;
38
39
  (0, api_1.register)();
39
40
  // 这是一次性 CLI 装载器:保留 hook 到进程结束。不用 namespace——
@@ -49,4 +50,12 @@ async function loadConfigFile(cwd, options) {
49
50
  throw new Error((0, index_ts_1.t)("cli.config.noDefault"));
50
51
  return mod.default;
51
52
  }
53
+ /** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
54
+ function loadConfigModuleOnce(cwd) {
55
+ return loadConfigModule(cwd, false);
56
+ }
57
+ /** Serial callers deliberately request a new module graph rather than a boolean mode. */
58
+ function rebuildConfigModule(cwd) {
59
+ return loadConfigModule(cwd, true);
60
+ }
52
61
  //# sourceMappingURL=load-config.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-config.js","sourceRoot":"","sources":["load-config.ts"],"names":[],"mappings":";;AAiBA,wCA0CC;AA3DD,kEAAkE;AAClE,kFAAkF;AAClF,qCAAqC;AACrC,yCAAiC;AACjC,uCAAyC;AACzC,qCAAuC;AACvC,uDAAsD;AACtD,8CAAoC;AAEpC,SAAS,wBAAwB,CAAC,KAAc;IAC5C,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ;QAC7B,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAEC,CAAC,IAAI,KAAK,4BAA4B,CAAC,CAAC;AAClD,CAAC;AACM,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,OAEjD;IACG,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,IAAA,YAAC,EAAC,oBAAoB,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAEH,CAAC;IACF,IAAI,CAAC;QACD,GAAG,GAAG,OAAO,EAAE,WAAW;YACtB,CAAC,CAAE,CAAC,MAAM,IAAA,mCAAiB,EAAC,IAAI,CAAC,CAE/B;YACF,CAAC,CAAE,CAAC,MAAM,uBAAuB,CAAC,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAEzD,CAAC;IACX,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,sDAAsD;QACtD,uDAAuD;QACvD,wDAAwD;QACxD,iDAAiD;QACjD,qCAAqC;QACrC,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACrC,IAAA,cAAQ,GAAE,CAAC;YACX,6CAA6C;YAC7C,sEAAsE;YACtE,+CAA+C;YAC/C,GAAG,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,GAAG,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAE3E,CAAC;QACN,CAAC;aACI,CAAC;YACF,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO;QACZ,MAAM,IAAI,KAAK,CAAC,IAAA,YAAC,EAAC,sBAAsB,CAAC,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC,OAAO,CAAC;AACvB,CAAC","sourcesContent":["// niceeval.config.ts 装载:CLI 与 view 共用。view 本地模式每次重建传 freshImport,\n// 让 config.report / config.theme 及其整棵 import 图失效(docs/feature/reports/README.md)。\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { register } from \"tsx/esm/api\";\nimport { freshImportModule } from \"./fresh-import.ts\";\nimport { t } from \"./i18n/index.ts\";\nimport type { Config } from \"./runner/types.ts\";\nfunction needsAdditionalTsxLoader(error: unknown): boolean {\n return (typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as {\n code?: unknown;\n }).code === \"ERR_UNKNOWN_FILE_EXTENSION\");\n}\nexport async function loadConfigFile(cwd: string, options?: {\n freshImport?: boolean;\n}): Promise<Config> {\n const path = join(cwd, \"niceeval.config.ts\");\n if (!existsSync(path)) {\n throw new Error(t(\"cli.config.missing\"));\n }\n let mod: {\n default?: Config;\n };\n try {\n mod = options?.freshImport\n ? ((await freshImportModule(path)) as {\n default?: Config;\n })\n : ((await __niceevalDynamicImport(pathToFileURL(path).href)) as {\n default?: Config;\n });\n }\n catch (e) {\n // 全局 tsx hook 能装载 config.ts,但 Node ESM 在某些项目形态下会让它的静态\n // import 回落原生 loader;config 一旦 import 了 Report .tsx 就报\n // ERR_UNKNOWN_FILE_EXTENSION。只对普通一次性装载的能力错误补一层 tsx hook\n // 重试,用户模块自己抛错时不重放副作用。fresh 装载不能退回 canonical URL:\n // 它可能已被 view 启动时缓存,从而用上一代成功配置掩盖当前损坏。\n if (!options?.freshImport && needsAdditionalTsxLoader(e)) {\n const url = pathToFileURL(path).href;\n register();\n // 这是一次性 CLI 装载器:保留 hook 到进程结束。不用 namespace——\n // config 图可能进入 CJS package,tsx 在 Node builtin URL 上传播 namespace query\n // 会把 node:util 误当文件读取。query 只击穿上一次失败的入口 cache。\n mod = (await __niceevalDynamicImport(`${url}?niceeval-config=${Date.now()}`)) as {\n default?: Config;\n };\n }\n else {\n throw e;\n }\n }\n if (!mod.default)\n throw new Error(t(\"cli.config.noDefault\"));\n return mod.default;\n}\n"]}
1
+ {"version":3,"file":"load-config.js","sourceRoot":"","sources":["load-config.ts"],"names":[],"mappings":";;AA2DA,oDAEC;AAED,kDAEC;AAjED,kEAAkE;AAClE,kFAAkF;AAClF,qCAAqC;AACrC,yCAAiC;AACjC,uCAAyC;AACzC,qCAAuC;AACvC,uDAAsD;AACtD,8CAAoC;AAEpC,SAAS,wBAAwB,CAAC,KAAc;IAC5C,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ;QAC7B,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAEC,CAAC,IAAI,KAAK,4BAA4B,CAAC,CAAC;AAClD,CAAC;AACD,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAAgB;IACzD,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,IAAA,YAAC,EAAC,oBAAoB,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAEH,CAAC;IACF,IAAI,CAAC;QACD,GAAG,GAAG,OAAO;YACT,CAAC,CAAE,CAAC,MAAM,IAAA,mCAAiB,EAAC,IAAI,CAAC,CAE/B;YACF,CAAC,CAAE,CAAC,MAAM,uBAAuB,CAAC,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAEzD,CAAC;IACX,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,sDAAsD;QACtD,uDAAuD;QACvD,wDAAwD;QACxD,iDAAiD;QACjD,qCAAqC;QACrC,IAAI,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACrC,IAAA,cAAQ,GAAE,CAAC;YACX,6CAA6C;YAC7C,sEAAsE;YACtE,+CAA+C;YAC/C,GAAG,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,GAAG,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAE3E,CAAC;QACN,CAAC;aACI,CAAC;YACF,MAAM,CAAC,CAAC;QACZ,CAAC;IACL,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO;QACZ,MAAM,IAAI,KAAK,CAAC,IAAA,YAAC,EAAC,sBAAsB,CAAC,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC,OAAO,CAAC;AACvB,CAAC;AACD,qFAAqF;AACrF,SAAgB,oBAAoB,CAAC,GAAW;IAC5C,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AACD,yFAAyF;AACzF,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC","sourcesContent":["// niceeval.config.ts 装载:CLI 与 view 共用。view 本地模式每次重建传 freshImport,\n// 让 config.report / config.theme 及其整棵 import 图失效(docs/feature/reports/README.md)。\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { register } from \"tsx/esm/api\";\nimport { freshImportModule } from \"./fresh-import.ts\";\nimport { t } from \"./i18n/index.ts\";\nimport type { Config } from \"./runner/types.ts\";\nfunction needsAdditionalTsxLoader(error: unknown): boolean {\n return (typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as {\n code?: unknown;\n }).code === \"ERR_UNKNOWN_FILE_EXTENSION\");\n}\nasync function loadConfigModule(cwd: string, rebuild: boolean): Promise<Config> {\n const path = join(cwd, \"niceeval.config.ts\");\n if (!existsSync(path)) {\n throw new Error(t(\"cli.config.missing\"));\n }\n let mod: {\n default?: Config;\n };\n try {\n mod = rebuild\n ? ((await freshImportModule(path)) as {\n default?: Config;\n })\n : ((await __niceevalDynamicImport(pathToFileURL(path).href)) as {\n default?: Config;\n });\n }\n catch (e) {\n // 全局 tsx hook 能装载 config.ts,但 Node ESM 在某些项目形态下会让它的静态\n // import 回落原生 loader;config 一旦 import 了 Report .tsx 就报\n // ERR_UNKNOWN_FILE_EXTENSION。只对普通一次性装载的能力错误补一层 tsx hook\n // 重试,用户模块自己抛错时不重放副作用。fresh 装载不能退回 canonical URL:\n // 它可能已被 view 启动时缓存,从而用上一代成功配置掩盖当前损坏。\n if (!rebuild && needsAdditionalTsxLoader(e)) {\n const url = pathToFileURL(path).href;\n register();\n // 这是一次性 CLI 装载器:保留 hook 到进程结束。不用 namespace——\n // config 图可能进入 CJS package,tsx 在 Node builtin URL 上传播 namespace query\n // 会把 node:util 误当文件读取。query 只击穿上一次失败的入口 cache。\n mod = (await __niceevalDynamicImport(`${url}?niceeval-config=${Date.now()}`)) as {\n default?: Config;\n };\n }\n else {\n throw e;\n }\n }\n if (!mod.default)\n throw new Error(t(\"cli.config.noDefault\"));\n return mod.default;\n}\n/** Canonical trusted module load; callers that need fresh evaluation use rebuild. */\nexport function loadConfigModuleOnce(cwd: string): Promise<Config> {\n return loadConfigModule(cwd, false);\n}\n/** Serial callers deliberately request a new module graph rather than a boolean mode. */\nexport function rebuildConfigModule(cwd: string): Promise<Config> {\n return loadConfigModule(cwd, true);\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { Config } from "./runner/types.cjs";
2
- export declare function loadConfigFile(cwd: string, options?: {
3
- freshImport?: boolean;
4
- }): Promise<Config>;
2
+ /** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
3
+ export declare function loadConfigModuleOnce(cwd: string): Promise<Config>;
4
+ /** Serial callers deliberately request a new module graph rather than a boolean mode. */
5
+ export declare function rebuildConfigModule(cwd: string): Promise<Config>;
@@ -1,4 +1,5 @@
1
1
  import type { Config } from "./runner/types.mjs";
2
- export declare function loadConfigFile(cwd: string, options?: {
3
- freshImport?: boolean;
4
- }): Promise<Config>;
2
+ /** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
3
+ export declare function loadConfigModuleOnce(cwd: string): Promise<Config>;
4
+ /** Serial callers deliberately request a new module graph rather than a boolean mode. */
5
+ export declare function rebuildConfigModule(cwd: string): Promise<Config>;
@@ -1,4 +1,5 @@
1
1
  import type { Config } from "./runner/types.js";
2
- export declare function loadConfigFile(cwd: string, options?: {
3
- freshImport?: boolean;
4
- }): Promise<Config>;
2
+ /** Canonical trusted module load; callers that need fresh evaluation use rebuild. */
3
+ export declare function loadConfigModuleOnce(cwd: string): Promise<Config>;
4
+ /** Serial callers deliberately request a new module graph rather than a boolean mode. */
5
+ export declare function rebuildConfigModule(cwd: string): Promise<Config>;
@@ -1,6 +1,8 @@
1
1
  import { createRequire as __niceevalCreateRequire } from "node:module";
2
2
  const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
3
  const __niceevalCanonical = __niceevalRequire("./load-config.cjs");
4
- const __niceevalExport0 = __niceevalCanonical["loadConfigFile"];
5
- export { __niceevalExport0 as loadConfigFile };
4
+ const __niceevalExport0 = __niceevalCanonical["loadConfigModuleOnce"];
5
+ export { __niceevalExport0 as loadConfigModuleOnce };
6
+ const __niceevalExport1 = __niceevalCanonical["rebuildConfigModule"];
7
+ export { __niceevalExport1 as rebuildConfigModule };
6
8
  //# sourceMappingURL=load-config.js.map
@@ -191,13 +191,27 @@ function parseCodexTranscript(raw) {
191
191
  if (!startedCallIds.has(callId)) {
192
192
  emitCall(callId, "command_execution", { command }, "shell", (0, command_projection_ts_1.opaqueCommandProjection)("unsupported-protocol"));
193
193
  }
194
- const exit = get(item, "exit_code");
194
+ // `codex exec --json` uses snake_case while app-server v2 keeps the
195
+ // protocol's camelCase fields after normalizeItem() rewrites only the
196
+ // tagged-union type. Both are public Codex transports and must close
197
+ // to the same provider-neutral result.
198
+ const exit = get(item, "exit_code") ?? get(item, "exitCode");
199
+ const output = get(item, "aggregated_output") ??
200
+ get(item, "aggregatedOutput") ??
201
+ get(item, "output");
195
202
  const statusStr = get(item, "status");
196
- const success = exit === 0 || (exit == null && statusStr !== "failed" && statusStr !== "error");
197
- emitResult(callId, {
198
- output: (get(item, "aggregated_output") ?? get(item, "output") ?? null),
199
- exit_code: (exit ?? null),
200
- }, success ? "completed" : "failed");
203
+ const status = statusStr === "declined" || statusStr === "rejected"
204
+ ? "rejected"
205
+ : exit === 0 || (exit == null && statusStr !== "failed" && statusStr !== "error")
206
+ ? "completed"
207
+ : "failed";
208
+ const result = output === undefined && exit === undefined
209
+ ? undefined
210
+ : {
211
+ output: (output ?? null),
212
+ exit_code: (exit ?? null),
213
+ };
214
+ emitResult(callId, result, status);
201
215
  return;
202
216
  }
203
217
  case "mcp_tool_call": {
@@ -284,11 +298,19 @@ function parseCodexTranscript(raw) {
284
298
  case "thread.started":
285
299
  case "thread.completed":
286
300
  case "turn.started":
287
- case "turn.completed":
288
301
  case "response.created":
289
302
  case "response.completed":
290
303
  case "response.cancelled":
291
304
  break;
305
+ case "turn.completed": {
306
+ const turn = get(data, "turn");
307
+ if (get(turn, "status") !== "failed")
308
+ break;
309
+ const err = get(turn, "error");
310
+ const msg = get(err, "message") ?? get(data, "message") ?? "turn failed";
311
+ events.push({ type: "error", message: String(msg) });
312
+ break;
313
+ }
292
314
  case "turn.failed":
293
315
  case "response.failed": {
294
316
  const err = get(data, "error");
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["codex.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenAI Codex CLI transcript 解析器(关键路径)。\n// 两类输入都吃:\n// 1. `codex exec --json` 打到 stdout 的事件 JSONL(thread.* / turn.* / item.* / response.*);\n// 2. 磁盘上 session rollout JSONL(ResponseItem:message / function_call / reasoning ...)。\n// 唯一硬活:把这堆五花八门的原始事件归一成 niceeval 的 StreamEvent[]。\nimport type { CommandProjection, StreamEvent, Usage, ToolName, JsonValue } from \"../../types.ts\";\nimport type { ParsedTranscript } from \"./index.ts\";\nimport { GENERIC_VERB_ALIASES, normalizeToolName as normalizeShared } from \"../tool-names.ts\";\nimport { normalizeJsonValue } from \"../../shared/json-value.ts\";\nimport { notCommandProjection, opaqueCommandProjection } from \"../command-projection.ts\";\n// ───────────────────────── 工具名归一 ─────────────────────────\n/** Codex 特有别名 + 裸动词(codex transcript 的工具名由 CLI 控制,裸动词安全);通用别名走基表。 */\nexport const CODEX_TOOL_ALIASES: globalThis.Record<string, ToolName> = {\n ...GENERIC_VERB_ALIASES,\n file_change: \"file_edit\",\n update_plan: \"agent_task\",\n};\nfunction normalizeToolName(name: string): ToolName {\n return normalizeShared(name, CODEX_TOOL_ALIASES);\n}\n// ───────────────────────── 小工具 ─────────────────────────\n/** 宽松取一个对象字段(原始 JSON 尚未验证,这里只做存在性收口)。 */\nfunction get(obj: unknown, key: string): unknown {\n return obj && typeof obj === \"object\" ? (obj as globalThis.Record<string, unknown>)[key] : undefined;\n}\n/** 字符串则尝试 JSON.parse,失败原样返回;对象原样返回。 */\nfunction coerceArgs(value: unknown): JsonValue {\n if (typeof value === \"string\") {\n try {\n const parsed: unknown = JSON.parse(value);\n return normalizeJsonValue(parsed, value);\n }\n catch {\n return value;\n }\n }\n return normalizeJsonValue(value, {});\n}\n/** 从 content(string | block[])里抠出纯文本。 */\nfunction extractText(content: unknown): string {\n if (typeof content === \"string\")\n return content;\n if (Array.isArray(content)) {\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block === \"string\") {\n parts.push(block);\n continue;\n }\n const t = get(block, \"text\") ?? get(block, \"content\") ?? get(block, \"thinking\");\n if (typeof t === \"string\")\n parts.push(t);\n }\n return parts.join(\"\\n\");\n }\n return \"\";\n}\n/** 从 reasoning item 抠文本(text / content / summary[].text)。 */\nfunction extractReasoning(item: unknown): string {\n const direct = get(item, \"text\") ?? get(item, \"content\");\n if (typeof direct === \"string\" && direct)\n return direct;\n const summary = get(item, \"summary\");\n if (Array.isArray(summary))\n return extractText(summary);\n return extractText(direct);\n}\n// ───────────────────────── usage 聚合 ─────────────────────────\n/** 从一个 usage-like 对象读出增量(支持 input/output_tokens 与 prompt/completion_tokens 两套命名)。 */\nfunction readUsage(u: unknown): {\n input: number;\n output: number;\n cacheRead: number;\n reasoning: number;\n} | null {\n if (!u || typeof u !== \"object\")\n return null;\n const o = u as globalThis.Record<string, unknown>;\n const num = (...keys: string[]): number => {\n for (const k of keys) {\n const v = o[k];\n if (typeof v === \"number\" && Number.isFinite(v))\n return v;\n }\n return 0;\n };\n const rawInput = num(\"input_tokens\", \"prompt_tokens\", \"inputTokens\", \"promptTokens\");\n const cacheRead = num(\"cached_input_tokens\", \"cache_read_input_tokens\", \"cache_read_tokens\", \"cacheReadTokens\");\n // codex-rs TokenUsage 的 cached_input_tokens 是 input_tokens 的子集,落互斥桶前扣掉\n // (docs/feature/adapters/sdk/codex-cli/cost.md)\n const input = Math.max(0, rawInput - cacheRead);\n const output = num(\"output_tokens\", \"completion_tokens\", \"outputTokens\", \"completionTokens\");\n // codex-rs TokenUsage 结构体与 Responses API usage.output_tokens_details 都拆出这项:\n // 推理模型(o-series/gpt-5 系列)的思考 token,已计入 output 但值得单列展示。\n const reasoning = num(\"reasoning_output_tokens\", \"reasoning_tokens\", \"reasoningOutputTokens\", \"reasoningTokens\");\n if (input === 0 && output === 0 && cacheRead === 0 && reasoning === 0)\n return null;\n return { input, output, cacheRead, reasoning };\n}\n/** 防御式地从一行事件里找到第一处 usage(优先级顺序,每行至多取一次,避免重复计数)。 */\nfunction pickUsage(data: unknown): unknown {\n return (get(data, \"usage\") ??\n get(get(data, \"payload\"), \"usage\") ??\n get(get(data, \"item\"), \"usage\") ??\n get(get(data, \"turn\"), \"usage\") ??\n get(get(data, \"response\"), \"usage\") ??\n null);\n}\n// ───────────────────────── compaction 标记 ─────────────────────────\n/**\n * 仅在出现可信压缩标记时才认(保守):type / item.type / subtype 含 compact 或 context_truncat。\n * 不再匹配 \"summariz\"——任何名字带 summarize 的工具 / item(如 summarization_tool)都会被\n * 误判成压缩边界并整条吞掉,污染计数且丢事件。命中即吞整条事件,匹配面必须窄。\n */\nfunction isCompactionMarker(eventType: unknown, data: unknown): boolean {\n const candidates = [eventType, get(get(data, \"item\"), \"type\"), get(data, \"subtype\")];\n for (const c of candidates) {\n if (typeof c !== \"string\")\n continue;\n const s = c.toLowerCase();\n if (s.includes(\"compact\") || s.includes(\"context_truncat\"))\n return true;\n }\n return false;\n}\n// ───────────────────────── 主解析 ─────────────────────────\nexport function parseCodexTranscript(raw: string | undefined): ParsedTranscript {\n const events: StreamEvent[] = [];\n let inputTokens = 0;\n let outputTokens = 0;\n let cacheReadTokens = 0;\n let reasoningTokens = 0;\n let requests = 0;\n let compactions = 0;\n let parseSuccess = true;\n if (!raw || !raw.trim()) {\n return { events, usage: {}, compactions: 0, parseSuccess: true };\n }\n // 配对状态:已 started 的 callId(命令类工具的 started/completed 收口),\n // 以及无显式 call_id 时的 FIFO 兜底队列(老式 function_call_output 配对)。\n const startedCallIds = new Set<string>();\n const pendingCallIds: string[] = [];\n let synth = 0;\n const nextSynthId = (prefix: string): string => `${prefix}_${++synth}`;\n const addUsageFrom = (data: unknown): void => {\n const u = readUsage(pickUsage(data));\n if (!u)\n return;\n inputTokens += u.input;\n outputTokens += u.output;\n cacheReadTokens += u.cacheRead;\n reasoningTokens += u.reasoning;\n requests += 1;\n };\n const emitCall = (callId: string, name: string, input: JsonValue, tool: ToolName, command: CommandProjection): void => {\n startedCallIds.add(callId);\n events.push({ type: \"operation.started\", operationId: callId, operation: { kind: \"tool\", name, input, tool, command } });\n };\n const emitResult = (callId: string, output: JsonValue | undefined, status: \"completed\" | \"failed\" | \"rejected\"): void => {\n events.push({ type: \"operation.finished\", operationId: callId, kind: \"tool\", output, status });\n };\n // 处理 item.started / item.completed 里的 item。\n const handleItem = (item: unknown, isCompleted: boolean): void => {\n if (!item || typeof item !== \"object\")\n return;\n const itemType = get(item, \"type\");\n const idRaw = get(item, \"id\");\n const baseId = typeof idRaw === \"string\" || typeof idRaw === \"number\" ? String(idRaw) : \"\";\n switch (itemType) {\n case \"reasoning\":\n case \"thinking\": {\n // 思考只在 completed 落一次,避免 started/completed 重复。\n if (!isCompleted)\n return;\n const text = extractReasoning(item);\n if (text)\n events.push({ type: \"thinking\", text });\n return;\n }\n case \"agent_message\":\n case \"assistant_message\":\n case \"message\": {\n if (!isCompleted)\n return;\n const text = extractText(get(item, \"text\") ?? get(item, \"content\") ?? get(item, \"message\"));\n if (text)\n events.push({ type: \"message\", role: \"assistant\", text });\n return;\n }\n case \"command_execution\":\n case \"local_shell_call\": {\n const callId = baseId || nextSynthId(\"cmd\");\n const command = get(item, \"command\") ?? get(get(item, \"action\"), \"command\");\n if (!isCompleted) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n }\n const exit = get(item, \"exit_code\");\n const statusStr = get(item, \"status\");\n const success = exit === 0 || (exit == null && statusStr !== \"failed\" && statusStr !== \"error\");\n emitResult(callId, {\n output: (get(item, \"aggregated_output\") ?? get(item, \"output\") ?? null) as JsonValue,\n exit_code: (exit ?? null) as JsonValue,\n }, success ? \"completed\" : \"failed\");\n return;\n }\n case \"mcp_tool_call\": {\n const callId = baseId || nextSynthId(\"mcp\");\n const server = get(item, \"server\");\n const toolRaw = get(item, \"tool\") ?? get(item, \"name\") ?? \"unknown\";\n const originalName = typeof server === \"string\" ? `${server}.${String(toolRaw)}` : String(toolRaw);\n const input = coerceArgs(get(item, \"arguments\") ?? get(item, \"input\"));\n if (!isCompleted) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n }\n const statusStr = get(item, \"status\");\n const success = !get(item, \"error\") && statusStr !== \"failed\";\n emitResult(callId, (get(item, \"result\") ?? null) as JsonValue, success ? \"completed\" : \"failed\");\n return;\n }\n case \"web_search\": {\n const callId = baseId || nextSynthId(\"web\");\n const query = get(item, \"query\") ?? get(item, \"search\");\n if (!isCompleted) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n }\n emitResult(callId, (get(item, \"results\") ?? get(item, \"result\") ?? null) as JsonValue, \"completed\");\n return;\n }\n case \"file_change\":\n case \"patch\":\n case \"file_patch\": {\n if (!isCompleted)\n return;\n const changes = get(item, \"changes\");\n const list = Array.isArray(changes) ? changes : [{ path: get(item, \"path\") }];\n list.forEach((ch, i) => {\n const path = get(ch, \"path\") ?? get(ch, \"file\");\n const kindRaw = get(ch, \"kind\") ?? get(ch, \"type\") ?? get(item, \"kind\");\n const kind = typeof kindRaw === \"string\" ? kindRaw.toLowerCase() : \"update\";\n const tool: ToolName = kind === \"add\" || kind === \"delete\" ? \"file_write\" : \"file_edit\";\n const callId = `${baseId || \"patch\"}#${i}`;\n emitCall(callId, \"file_change\", { path, kind } as JsonValue, tool, notCommandProjection());\n emitResult(callId, { path, kind } as JsonValue, \"completed\");\n });\n return;\n }\n case \"error\": {\n const msg = get(item, \"message\") ?? get(item, \"text\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n return;\n }\n default:\n return; // todo_list / 其它 item 类型暂不映射\n }\n };\n const lines = raw.split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed)\n continue;\n let data: unknown;\n try {\n data = JSON.parse(trimmed);\n }\n catch {\n parseSuccess = false;\n continue;\n }\n try {\n addUsageFrom(data);\n const eventType = (get(data, \"type\") ?? get(data, \"event\") ?? get(data, \"kind\")) as unknown;\n if (isCompactionMarker(eventType, data)) {\n events.push({ type: \"compaction\" });\n compactions += 1;\n continue;\n }\n switch (eventType) {\n // ── 控制流:仅在失败时落 error ──\n case \"thread.started\":\n case \"thread.completed\":\n case \"turn.started\":\n case \"turn.completed\":\n case \"response.created\":\n case \"response.completed\":\n case \"response.cancelled\":\n break;\n case \"turn.failed\":\n case \"response.failed\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? \"turn failed\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // ── 主路径:item.* ──\n case \"item.started\":\n handleItem(get(data, \"item\"), false);\n break;\n case \"item.updated\":\n // 中间态忽略,等 completed\n break;\n case \"item.completed\":\n handleItem(get(data, \"item\"), true);\n break;\n // ── 老式 / session rollout ResponseItem ──\n case \"message\":\n case \"chat\": {\n const roleRaw = get(data, \"role\") ?? (get(data, \"from\") === \"assistant\" ? \"assistant\" : \"user\");\n const role = roleRaw === \"user\" ? \"user\" : \"assistant\";\n const text = extractText(get(data, \"content\") ?? get(data, \"text\") ?? get(data, \"message\"));\n if (text)\n events.push({ type: \"message\", role, text });\n break;\n }\n case \"reasoning\":\n case \"thinking\":\n case \"thought\": {\n const text = extractReasoning(data);\n if (text)\n events.push({ type: \"thinking\", text });\n break;\n }\n case \"function_call\":\n case \"tool_call\":\n case \"tool_use\":\n case \"custom_tool_call\":\n case \"action\":\n case \"local_shell_call\": {\n const isShell = eventType === \"local_shell_call\";\n const nameRaw = isShell\n ? \"shell\"\n : (get(data, \"name\") ?? get(get(data, \"function\"), \"name\") ?? get(data, \"tool\") ?? get(data, \"action\") ?? \"unknown\");\n const name = String(nameRaw);\n const rawArgs = isShell\n ? (get(data, \"action\") ?? get(data, \"input\"))\n : (get(get(data, \"function\"), \"arguments\") ?? get(data, \"arguments\") ?? get(data, \"input\") ?? get(data, \"params\"));\n const input = coerceArgs(rawArgs);\n const explicit = get(data, \"call_id\") ?? get(data, \"id\") ?? get(data, \"tool_call_id\");\n const callId = explicit != null ? String(explicit) : nextSynthId(\"call\");\n if (explicit == null)\n pendingCallIds.push(callId);\n emitCall(callId, name, input, normalizeToolName(name), isShell ? opaqueCommandProjection(\"unsupported-protocol\") : notCommandProjection());\n break;\n }\n case \"function_call_output\":\n case \"tool_result\":\n case \"tool_response\":\n case \"action_result\":\n case \"local_shell_call_output\": {\n const explicit = get(data, \"call_id\") ?? get(data, \"tool_call_id\") ?? get(data, \"id\");\n const callId = explicit != null ? String(explicit) : pendingCallIds.shift() ?? nextSynthId(\"result\");\n const rawOut = get(data, \"output\") ?? get(data, \"result\") ?? get(data, \"content\");\n const { output, status } = interpretOutput(rawOut, data);\n emitResult(callId, output, status);\n break;\n }\n case \"error\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? get(data, \"content\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // output_text.delta / output_text.done 是同一条 assistant 文本的流式分片,\n // 最终文本会经 agent_message item / message ResponseItem 落地,这里直接丢弃避免重复。\n case \"output_text.delta\":\n case \"output_text.done\":\n break;\n default: {\n // 兜底:按结构猜。\n const role = get(data, \"role\");\n if (role === \"assistant\" || role === \"user\") {\n const text = extractText(get(data, \"content\") ?? get(data, \"text\"));\n if (text)\n events.push({ type: \"message\", role, text });\n }\n }\n }\n }\n catch {\n // 单行处理异常不应拖垮整条 transcript。\n parseSuccess = false;\n }\n }\n // requests > 0 意味着至少一行真的带回了 usage;整份 transcript 没有任何 usage 行时\n // input/output 也不该垫成 0(见 docs/feature/record/architecture.md#usage)。\n const usage: Usage = requests > 0 ? { inputTokens, outputTokens } : {};\n if (cacheReadTokens > 0)\n usage.cacheReadTokens = cacheReadTokens;\n if (reasoningTokens > 0)\n usage.reasoningTokens = reasoningTokens;\n if (requests > 0)\n usage.requests = requests;\n return { events, usage, compactions, parseSuccess };\n}\n/**\n * 解读一条工具结果输出:显式 success/error → status 字符串 → exit_code,层层找成败证据。\n * 都没有才默认 completed —— 这是乐观兜底:codex 不带任何成败字段的结果会被记成成功,\n * noFailedActions() 这类负断言可能因此假通过。所以证据检查要尽量全,别轻易走到兜底。\n */\nfunction interpretOutput(rawOut: unknown, data: unknown): {\n output: JsonValue | undefined;\n status: \"completed\" | \"failed\" | \"rejected\";\n} {\n // 显式 success / error 优先。\n const explicitSuccess = get(data, \"success\");\n if (explicitSuccess === false)\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n if (get(data, \"error\"))\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n // 事件自带 status 字符串(item/data 两层都看)。\n const statusStr = get(data, \"status\") ?? get(get(data, \"item\"), \"status\");\n if (statusStr === \"failed\" || statusStr === \"error\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n }\n if (statusStr === \"rejected\" || statusStr === \"declined\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"rejected\" };\n }\n // 字符串输出尝试解析 exit_code(codex shell 结果常见)。\n let parsed: unknown = rawOut;\n if (typeof rawOut === \"string\") {\n try {\n parsed = JSON.parse(rawOut);\n }\n catch {\n parsed = rawOut;\n }\n }\n const exit = get(parsed, \"exit_code\") ?? get(parsed, \"exitCode\") ?? get(get(parsed, \"metadata\"), \"exit_code\");\n if (typeof exit === \"number\") {\n return { output: (parsed ?? null) as JsonValue, status: exit === 0 ? \"completed\" : \"failed\" };\n }\n return { output: (parsed ?? null) as JsonValue, status: \"completed\" };\n}\n/** 便捷形态:只要 StreamEvent[]。 */\nexport function parseCodex(raw: string | undefined): StreamEvent[] {\n return parseCodexTranscript(raw).events;\n}\n"]}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["codex.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenAI Codex CLI transcript 解析器(关键路径)。\n// 两类输入都吃:\n// 1. `codex exec --json` 打到 stdout 的事件 JSONL(thread.* / turn.* / item.* / response.*);\n// 2. 磁盘上 session rollout JSONL(ResponseItem:message / function_call / reasoning ...)。\n// 唯一硬活:把这堆五花八门的原始事件归一成 niceeval 的 StreamEvent[]。\nimport type { CommandProjection, StreamEvent, Usage, ToolName, JsonValue } from \"../../types.ts\";\nimport type { ParsedTranscript } from \"./index.ts\";\nimport { GENERIC_VERB_ALIASES, normalizeToolName as normalizeShared } from \"../tool-names.ts\";\nimport { normalizeJsonValue } from \"../../shared/json-value.ts\";\nimport { notCommandProjection, opaqueCommandProjection } from \"../command-projection.ts\";\n// ───────────────────────── 工具名归一 ─────────────────────────\n/** Codex 特有别名 + 裸动词(codex transcript 的工具名由 CLI 控制,裸动词安全);通用别名走基表。 */\nexport const CODEX_TOOL_ALIASES: globalThis.Record<string, ToolName> = {\n ...GENERIC_VERB_ALIASES,\n file_change: \"file_edit\",\n update_plan: \"agent_task\",\n};\nfunction normalizeToolName(name: string): ToolName {\n return normalizeShared(name, CODEX_TOOL_ALIASES);\n}\n// ───────────────────────── 小工具 ─────────────────────────\n/** 宽松取一个对象字段(原始 JSON 尚未验证,这里只做存在性收口)。 */\nfunction get(obj: unknown, key: string): unknown {\n return obj && typeof obj === \"object\" ? (obj as globalThis.Record<string, unknown>)[key] : undefined;\n}\n/** 字符串则尝试 JSON.parse,失败原样返回;对象原样返回。 */\nfunction coerceArgs(value: unknown): JsonValue {\n if (typeof value === \"string\") {\n try {\n const parsed: unknown = JSON.parse(value);\n return normalizeJsonValue(parsed, value);\n }\n catch {\n return value;\n }\n }\n return normalizeJsonValue(value, {});\n}\n/** 从 content(string | block[])里抠出纯文本。 */\nfunction extractText(content: unknown): string {\n if (typeof content === \"string\")\n return content;\n if (Array.isArray(content)) {\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block === \"string\") {\n parts.push(block);\n continue;\n }\n const t = get(block, \"text\") ?? get(block, \"content\") ?? get(block, \"thinking\");\n if (typeof t === \"string\")\n parts.push(t);\n }\n return parts.join(\"\\n\");\n }\n return \"\";\n}\n/** 从 reasoning item 抠文本(text / content / summary[].text)。 */\nfunction extractReasoning(item: unknown): string {\n const direct = get(item, \"text\") ?? get(item, \"content\");\n if (typeof direct === \"string\" && direct)\n return direct;\n const summary = get(item, \"summary\");\n if (Array.isArray(summary))\n return extractText(summary);\n return extractText(direct);\n}\n// ───────────────────────── usage 聚合 ─────────────────────────\n/** 从一个 usage-like 对象读出增量(支持 input/output_tokens 与 prompt/completion_tokens 两套命名)。 */\nfunction readUsage(u: unknown): {\n input: number;\n output: number;\n cacheRead: number;\n reasoning: number;\n} | null {\n if (!u || typeof u !== \"object\")\n return null;\n const o = u as globalThis.Record<string, unknown>;\n const num = (...keys: string[]): number => {\n for (const k of keys) {\n const v = o[k];\n if (typeof v === \"number\" && Number.isFinite(v))\n return v;\n }\n return 0;\n };\n const rawInput = num(\"input_tokens\", \"prompt_tokens\", \"inputTokens\", \"promptTokens\");\n const cacheRead = num(\"cached_input_tokens\", \"cache_read_input_tokens\", \"cache_read_tokens\", \"cacheReadTokens\");\n // codex-rs TokenUsage 的 cached_input_tokens 是 input_tokens 的子集,落互斥桶前扣掉\n // (docs/feature/adapters/sdk/codex-cli/cost.md)\n const input = Math.max(0, rawInput - cacheRead);\n const output = num(\"output_tokens\", \"completion_tokens\", \"outputTokens\", \"completionTokens\");\n // codex-rs TokenUsage 结构体与 Responses API usage.output_tokens_details 都拆出这项:\n // 推理模型(o-series/gpt-5 系列)的思考 token,已计入 output 但值得单列展示。\n const reasoning = num(\"reasoning_output_tokens\", \"reasoning_tokens\", \"reasoningOutputTokens\", \"reasoningTokens\");\n if (input === 0 && output === 0 && cacheRead === 0 && reasoning === 0)\n return null;\n return { input, output, cacheRead, reasoning };\n}\n/** 防御式地从一行事件里找到第一处 usage(优先级顺序,每行至多取一次,避免重复计数)。 */\nfunction pickUsage(data: unknown): unknown {\n return (get(data, \"usage\") ??\n get(get(data, \"payload\"), \"usage\") ??\n get(get(data, \"item\"), \"usage\") ??\n get(get(data, \"turn\"), \"usage\") ??\n get(get(data, \"response\"), \"usage\") ??\n null);\n}\n// ───────────────────────── compaction 标记 ─────────────────────────\n/**\n * 仅在出现可信压缩标记时才认(保守):type / item.type / subtype 含 compact 或 context_truncat。\n * 不再匹配 \"summariz\"——任何名字带 summarize 的工具 / item(如 summarization_tool)都会被\n * 误判成压缩边界并整条吞掉,污染计数且丢事件。命中即吞整条事件,匹配面必须窄。\n */\nfunction isCompactionMarker(eventType: unknown, data: unknown): boolean {\n const candidates = [eventType, get(get(data, \"item\"), \"type\"), get(data, \"subtype\")];\n for (const c of candidates) {\n if (typeof c !== \"string\")\n continue;\n const s = c.toLowerCase();\n if (s.includes(\"compact\") || s.includes(\"context_truncat\"))\n return true;\n }\n return false;\n}\n// ───────────────────────── 主解析 ─────────────────────────\nexport function parseCodexTranscript(raw: string | undefined): ParsedTranscript {\n const events: StreamEvent[] = [];\n let inputTokens = 0;\n let outputTokens = 0;\n let cacheReadTokens = 0;\n let reasoningTokens = 0;\n let requests = 0;\n let compactions = 0;\n let parseSuccess = true;\n if (!raw || !raw.trim()) {\n return { events, usage: {}, compactions: 0, parseSuccess: true };\n }\n // 配对状态:已 started 的 callId(命令类工具的 started/completed 收口),\n // 以及无显式 call_id 时的 FIFO 兜底队列(老式 function_call_output 配对)。\n const startedCallIds = new Set<string>();\n const pendingCallIds: string[] = [];\n let synth = 0;\n const nextSynthId = (prefix: string): string => `${prefix}_${++synth}`;\n const addUsageFrom = (data: unknown): void => {\n const u = readUsage(pickUsage(data));\n if (!u)\n return;\n inputTokens += u.input;\n outputTokens += u.output;\n cacheReadTokens += u.cacheRead;\n reasoningTokens += u.reasoning;\n requests += 1;\n };\n const emitCall = (callId: string, name: string, input: JsonValue, tool: ToolName, command: CommandProjection): void => {\n startedCallIds.add(callId);\n events.push({ type: \"operation.started\", operationId: callId, operation: { kind: \"tool\", name, input, tool, command } });\n };\n const emitResult = (callId: string, output: JsonValue | undefined, status: \"completed\" | \"failed\" | \"rejected\"): void => {\n events.push({ type: \"operation.finished\", operationId: callId, kind: \"tool\", output, status });\n };\n // 处理 item.started / item.completed 里的 item。\n const handleItem = (item: unknown, isCompleted: boolean): void => {\n if (!item || typeof item !== \"object\")\n return;\n const itemType = get(item, \"type\");\n const idRaw = get(item, \"id\");\n const baseId = typeof idRaw === \"string\" || typeof idRaw === \"number\" ? String(idRaw) : \"\";\n switch (itemType) {\n case \"reasoning\":\n case \"thinking\": {\n // 思考只在 completed 落一次,避免 started/completed 重复。\n if (!isCompleted)\n return;\n const text = extractReasoning(item);\n if (text)\n events.push({ type: \"thinking\", text });\n return;\n }\n case \"agent_message\":\n case \"assistant_message\":\n case \"message\": {\n if (!isCompleted)\n return;\n const text = extractText(get(item, \"text\") ?? get(item, \"content\") ?? get(item, \"message\"));\n if (text)\n events.push({ type: \"message\", role: \"assistant\", text });\n return;\n }\n case \"command_execution\":\n case \"local_shell_call\": {\n const callId = baseId || nextSynthId(\"cmd\");\n const command = get(item, \"command\") ?? get(get(item, \"action\"), \"command\");\n if (!isCompleted) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"command_execution\", { command } as JsonValue, \"shell\", opaqueCommandProjection(\"unsupported-protocol\"));\n }\n // `codex exec --json` uses snake_case while app-server v2 keeps the\n // protocol's camelCase fields after normalizeItem() rewrites only the\n // tagged-union type. Both are public Codex transports and must close\n // to the same provider-neutral result.\n const exit = get(item, \"exit_code\") ?? get(item, \"exitCode\");\n const output = get(item, \"aggregated_output\") ??\n get(item, \"aggregatedOutput\") ??\n get(item, \"output\");\n const statusStr = get(item, \"status\");\n const status = statusStr === \"declined\" || statusStr === \"rejected\"\n ? \"rejected\" as const\n : exit === 0 || (exit == null && statusStr !== \"failed\" && statusStr !== \"error\")\n ? \"completed\" as const\n : \"failed\" as const;\n const result = output === undefined && exit === undefined\n ? undefined\n : {\n output: (output ?? null) as JsonValue,\n exit_code: (exit ?? null) as JsonValue,\n };\n emitResult(callId, result, status);\n return;\n }\n case \"mcp_tool_call\": {\n const callId = baseId || nextSynthId(\"mcp\");\n const server = get(item, \"server\");\n const toolRaw = get(item, \"tool\") ?? get(item, \"name\") ?? \"unknown\";\n const originalName = typeof server === \"string\" ? `${server}.${String(toolRaw)}` : String(toolRaw);\n const input = coerceArgs(get(item, \"arguments\") ?? get(item, \"input\"));\n if (!isCompleted) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, originalName, input, normalizeToolName(String(toolRaw)), notCommandProjection());\n }\n const statusStr = get(item, \"status\");\n const success = !get(item, \"error\") && statusStr !== \"failed\";\n emitResult(callId, (get(item, \"result\") ?? null) as JsonValue, success ? \"completed\" : \"failed\");\n return;\n }\n case \"web_search\": {\n const callId = baseId || nextSynthId(\"web\");\n const query = get(item, \"query\") ?? get(item, \"search\");\n if (!isCompleted) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n return;\n }\n if (!startedCallIds.has(callId)) {\n emitCall(callId, \"web_search\", { query } as JsonValue, \"web_search\", notCommandProjection());\n }\n emitResult(callId, (get(item, \"results\") ?? get(item, \"result\") ?? null) as JsonValue, \"completed\");\n return;\n }\n case \"file_change\":\n case \"patch\":\n case \"file_patch\": {\n if (!isCompleted)\n return;\n const changes = get(item, \"changes\");\n const list = Array.isArray(changes) ? changes : [{ path: get(item, \"path\") }];\n list.forEach((ch, i) => {\n const path = get(ch, \"path\") ?? get(ch, \"file\");\n const kindRaw = get(ch, \"kind\") ?? get(ch, \"type\") ?? get(item, \"kind\");\n const kind = typeof kindRaw === \"string\" ? kindRaw.toLowerCase() : \"update\";\n const tool: ToolName = kind === \"add\" || kind === \"delete\" ? \"file_write\" : \"file_edit\";\n const callId = `${baseId || \"patch\"}#${i}`;\n emitCall(callId, \"file_change\", { path, kind } as JsonValue, tool, notCommandProjection());\n emitResult(callId, { path, kind } as JsonValue, \"completed\");\n });\n return;\n }\n case \"error\": {\n const msg = get(item, \"message\") ?? get(item, \"text\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n return;\n }\n default:\n return; // todo_list / 其它 item 类型暂不映射\n }\n };\n const lines = raw.split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed)\n continue;\n let data: unknown;\n try {\n data = JSON.parse(trimmed);\n }\n catch {\n parseSuccess = false;\n continue;\n }\n try {\n addUsageFrom(data);\n const eventType = (get(data, \"type\") ?? get(data, \"event\") ?? get(data, \"kind\")) as unknown;\n if (isCompactionMarker(eventType, data)) {\n events.push({ type: \"compaction\" });\n compactions += 1;\n continue;\n }\n switch (eventType) {\n // ── 控制流:仅在失败时落 error ──\n case \"thread.started\":\n case \"thread.completed\":\n case \"turn.started\":\n case \"response.created\":\n case \"response.completed\":\n case \"response.cancelled\":\n break;\n case \"turn.completed\": {\n const turn = get(data, \"turn\");\n if (get(turn, \"status\") !== \"failed\")\n break;\n const err = get(turn, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? \"turn failed\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n case \"turn.failed\":\n case \"response.failed\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? \"turn failed\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // ── 主路径:item.* ──\n case \"item.started\":\n handleItem(get(data, \"item\"), false);\n break;\n case \"item.updated\":\n // 中间态忽略,等 completed\n break;\n case \"item.completed\":\n handleItem(get(data, \"item\"), true);\n break;\n // ── 老式 / session rollout ResponseItem ──\n case \"message\":\n case \"chat\": {\n const roleRaw = get(data, \"role\") ?? (get(data, \"from\") === \"assistant\" ? \"assistant\" : \"user\");\n const role = roleRaw === \"user\" ? \"user\" : \"assistant\";\n const text = extractText(get(data, \"content\") ?? get(data, \"text\") ?? get(data, \"message\"));\n if (text)\n events.push({ type: \"message\", role, text });\n break;\n }\n case \"reasoning\":\n case \"thinking\":\n case \"thought\": {\n const text = extractReasoning(data);\n if (text)\n events.push({ type: \"thinking\", text });\n break;\n }\n case \"function_call\":\n case \"tool_call\":\n case \"tool_use\":\n case \"custom_tool_call\":\n case \"action\":\n case \"local_shell_call\": {\n const isShell = eventType === \"local_shell_call\";\n const nameRaw = isShell\n ? \"shell\"\n : (get(data, \"name\") ?? get(get(data, \"function\"), \"name\") ?? get(data, \"tool\") ?? get(data, \"action\") ?? \"unknown\");\n const name = String(nameRaw);\n const rawArgs = isShell\n ? (get(data, \"action\") ?? get(data, \"input\"))\n : (get(get(data, \"function\"), \"arguments\") ?? get(data, \"arguments\") ?? get(data, \"input\") ?? get(data, \"params\"));\n const input = coerceArgs(rawArgs);\n const explicit = get(data, \"call_id\") ?? get(data, \"id\") ?? get(data, \"tool_call_id\");\n const callId = explicit != null ? String(explicit) : nextSynthId(\"call\");\n if (explicit == null)\n pendingCallIds.push(callId);\n emitCall(callId, name, input, normalizeToolName(name), isShell ? opaqueCommandProjection(\"unsupported-protocol\") : notCommandProjection());\n break;\n }\n case \"function_call_output\":\n case \"tool_result\":\n case \"tool_response\":\n case \"action_result\":\n case \"local_shell_call_output\": {\n const explicit = get(data, \"call_id\") ?? get(data, \"tool_call_id\") ?? get(data, \"id\");\n const callId = explicit != null ? String(explicit) : pendingCallIds.shift() ?? nextSynthId(\"result\");\n const rawOut = get(data, \"output\") ?? get(data, \"result\") ?? get(data, \"content\");\n const { output, status } = interpretOutput(rawOut, data);\n emitResult(callId, output, status);\n break;\n }\n case \"error\": {\n const err = get(data, \"error\");\n const msg = get(err, \"message\") ?? get(data, \"message\") ?? get(data, \"content\") ?? \"error\";\n events.push({ type: \"error\", message: String(msg) });\n break;\n }\n // output_text.delta / output_text.done 是同一条 assistant 文本的流式分片,\n // 最终文本会经 agent_message item / message ResponseItem 落地,这里直接丢弃避免重复。\n case \"output_text.delta\":\n case \"output_text.done\":\n break;\n default: {\n // 兜底:按结构猜。\n const role = get(data, \"role\");\n if (role === \"assistant\" || role === \"user\") {\n const text = extractText(get(data, \"content\") ?? get(data, \"text\"));\n if (text)\n events.push({ type: \"message\", role, text });\n }\n }\n }\n }\n catch {\n // 单行处理异常不应拖垮整条 transcript。\n parseSuccess = false;\n }\n }\n // requests > 0 意味着至少一行真的带回了 usage;整份 transcript 没有任何 usage 行时\n // input/output 也不该垫成 0(见 docs/feature/record/architecture.md#usage)。\n const usage: Usage = requests > 0 ? { inputTokens, outputTokens } : {};\n if (cacheReadTokens > 0)\n usage.cacheReadTokens = cacheReadTokens;\n if (reasoningTokens > 0)\n usage.reasoningTokens = reasoningTokens;\n if (requests > 0)\n usage.requests = requests;\n return { events, usage, compactions, parseSuccess };\n}\n/**\n * 解读一条工具结果输出:显式 success/error → status 字符串 → exit_code,层层找成败证据。\n * 都没有才默认 completed —— 这是乐观兜底:codex 不带任何成败字段的结果会被记成成功,\n * noFailedActions() 这类负断言可能因此假通过。所以证据检查要尽量全,别轻易走到兜底。\n */\nfunction interpretOutput(rawOut: unknown, data: unknown): {\n output: JsonValue | undefined;\n status: \"completed\" | \"failed\" | \"rejected\";\n} {\n // 显式 success / error 优先。\n const explicitSuccess = get(data, \"success\");\n if (explicitSuccess === false)\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n if (get(data, \"error\"))\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n // 事件自带 status 字符串(item/data 两层都看)。\n const statusStr = get(data, \"status\") ?? get(get(data, \"item\"), \"status\");\n if (statusStr === \"failed\" || statusStr === \"error\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"failed\" };\n }\n if (statusStr === \"rejected\" || statusStr === \"declined\") {\n return { output: (rawOut ?? null) as JsonValue, status: \"rejected\" };\n }\n // 字符串输出尝试解析 exit_code(codex shell 结果常见)。\n let parsed: unknown = rawOut;\n if (typeof rawOut === \"string\") {\n try {\n parsed = JSON.parse(rawOut);\n }\n catch {\n parsed = rawOut;\n }\n }\n const exit = get(parsed, \"exit_code\") ?? get(parsed, \"exitCode\") ?? get(get(parsed, \"metadata\"), \"exit_code\");\n if (typeof exit === \"number\") {\n return { output: (parsed ?? null) as JsonValue, status: exit === 0 ? \"completed\" : \"failed\" };\n }\n return { output: (parsed ?? null) as JsonValue, status: \"completed\" };\n}\n/** 便捷形态:只要 StreamEvent[]。 */\nexport function parseCodex(raw: string | undefined): StreamEvent[] {\n return parseCodexTranscript(raw).events;\n}\n"]}
@@ -27,7 +27,6 @@ export declare const RecordAttemptRefSchema: Schema.Struct<{
27
27
  }>;
28
28
  export declare const RecordDocumentSchema: Schema.Struct<{
29
29
  format: Schema.Schema<import("../model/identifiers.cjs").RecordFormat, "niceeval.record", never>;
30
- schemaVersion: Schema.Schema<2, 2, never>;
31
30
  recordId: Schema.Schema<import("../model/identifiers.cjs").RecordId, string, never>;
32
31
  }>;
33
32
  export declare const RecordSlotIdentitySchema: Schema.Struct<{
@@ -135,7 +134,6 @@ export declare const RunCoreSchema: Schema.Struct<{
135
134
  export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
136
135
  record: Schema.Struct<{
137
136
  format: Schema.Schema<import("../model/identifiers.cjs").RecordFormat, "niceeval.record", never>;
138
- schemaVersion: Schema.Schema<2, 2, never>;
139
137
  recordId: Schema.Schema<import("../model/identifiers.cjs").RecordId, string, never>;
140
138
  }>;
141
139
  runs: Schema.Array$<Schema.Struct<{
@@ -27,7 +27,6 @@ export declare const RecordAttemptRefSchema: Schema.Struct<{
27
27
  }>;
28
28
  export declare const RecordDocumentSchema: Schema.Struct<{
29
29
  format: Schema.Schema<import("../model/identifiers.mjs").RecordFormat, "niceeval.record", never>;
30
- schemaVersion: Schema.Schema<2, 2, never>;
31
30
  recordId: Schema.Schema<import("../model/identifiers.mjs").RecordId, string, never>;
32
31
  }>;
33
32
  export declare const RecordSlotIdentitySchema: Schema.Struct<{
@@ -135,7 +134,6 @@ export declare const RunCoreSchema: Schema.Struct<{
135
134
  export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
136
135
  record: Schema.Struct<{
137
136
  format: Schema.Schema<import("../model/identifiers.mjs").RecordFormat, "niceeval.record", never>;
138
- schemaVersion: Schema.Schema<2, 2, never>;
139
137
  recordId: Schema.Schema<import("../model/identifiers.mjs").RecordId, string, never>;
140
138
  }>;
141
139
  runs: Schema.Array$<Schema.Struct<{
@@ -27,7 +27,6 @@ export declare const RecordAttemptRefSchema: Schema.Struct<{
27
27
  }>;
28
28
  export declare const RecordDocumentSchema: Schema.Struct<{
29
29
  format: Schema.Schema<import("../model/identifiers.js").RecordFormat, "niceeval.record", never>;
30
- schemaVersion: Schema.Schema<2, 2, never>;
31
30
  recordId: Schema.Schema<import("../model/identifiers.js").RecordId, string, never>;
32
31
  }>;
33
32
  export declare const RecordSlotIdentitySchema: Schema.Struct<{
@@ -135,7 +134,6 @@ export declare const RunCoreSchema: Schema.Struct<{
135
134
  export declare const RecordCoreSchema: Schema.filter<Schema.Struct<{
136
135
  record: Schema.Struct<{
137
136
  format: Schema.Schema<import("../model/identifiers.js").RecordFormat, "niceeval.record", never>;
138
- schemaVersion: Schema.Schema<2, 2, never>;
139
137
  recordId: Schema.Schema<import("../model/identifiers.js").RecordId, string, never>;
140
138
  }>;
141
139
  runs: Schema.Array$<Schema.Struct<{
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RecordFormatSchema = exports.RecordSchemaVersionSchema = exports.RecordFormatIdSchema = exports.RecordAttachmentSchemaIdSchema = exports.RecordAttachmentNameSchema = exports.UtcMillisSchema = exports.CanonicalProjectRelativePathSchema = exports.ArtifactIdSchema = exports.FileChangeIdSchema = exports.SourceItemIdSchema = exports.Sha256DigestSchema = exports.ExecutionIdentityDigestSchema = exports.EvalIdSchema = exports.ExperimentIdSchema = exports.AttemptIdSchema = exports.SlotIdSchema = exports.RunIdSchema = exports.RecordIdSchema = void 0;
3
+ exports.RecordFormatSchema = exports.RecordFormatIdSchema = exports.RecordAttachmentSchemaIdSchema = exports.RecordAttachmentNameSchema = exports.UtcMillisSchema = exports.CanonicalProjectRelativePathSchema = exports.ArtifactIdSchema = exports.FileChangeIdSchema = exports.SourceItemIdSchema = exports.Sha256DigestSchema = exports.ExecutionIdentityDigestSchema = exports.EvalIdSchema = exports.ExperimentIdSchema = exports.AttemptIdSchema = exports.SlotIdSchema = exports.RunIdSchema = exports.RecordIdSchema = void 0;
4
4
  const effect_1 = require("effect");
5
5
  const identifiers_ts_1 = require("../model/identifiers.cjs");
6
6
  const PortableSegmentTextSchema = effect_1.Schema.String.pipe(effect_1.Schema.filter(identifiers_ts_1.isPortableSegment, {
@@ -46,8 +46,7 @@ exports.RecordAttachmentSchemaIdSchema = effect_1.Schema.String.pipe(effect_1.Sc
46
46
  }), effect_1.Schema.brand(identifiers_ts_1.RECORD_ATTACHMENT_SCHEMA_ID_BRAND));
47
47
  exports.RecordFormatIdSchema = effect_1.Schema.String.pipe(effect_1.Schema.filter(identifiers_ts_1.isRecordFormatId, {
48
48
  identifier: "RecordFormatId",
49
- description: "a niceeval.record/vN format identity",
49
+ description: "a fixed niceeval.record format identity",
50
50
  }), effect_1.Schema.brand(identifiers_ts_1.RECORD_FORMAT_ID_BRAND));
51
- exports.RecordSchemaVersionSchema = effect_1.Schema.Literal(identifiers_ts_1.RECORD_SCHEMA_VERSION);
52
51
  exports.RecordFormatSchema = effect_1.Schema.Literal(identifiers_ts_1.RECORD_FORMAT).pipe(effect_1.Schema.brand(identifiers_ts_1.RECORD_FORMAT_ID_BRAND));
53
52
  //# sourceMappingURL=identifiers.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\nimport { ATTEMPT_ID_BRAND, ARTIFACT_ID_BRAND, CANONICAL_PROJECT_RELATIVE_PATH_BRAND, EVAL_ID_BRAND, EXECUTION_IDENTITY_DIGEST_BRAND, EXPERIMENT_ID_BRAND, FILE_CHANGE_ID_BRAND, isPortableSegment, isCanonicalProjectRelativePath, isRecordDomainIdentity, isRecordAttachmentName, isRecordAttachmentSchemaId, isRecordFormatId, isSha256Digest, isUtcMillis, RECORD_ATTACHMENT_NAME_BRAND, RECORD_ATTACHMENT_SCHEMA_ID_BRAND, RECORD_FORMAT, RECORD_FORMAT_ID_BRAND, RECORD_SCHEMA_VERSION, RECORD_ID_BRAND, RUN_ID_BRAND, SHA256_DIGEST_BRAND, SLOT_ID_BRAND, SOURCE_ITEM_ID_BRAND, UTC_MILLIS_BRAND, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RecordSchemaVersion, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis, } from \"../model/identifiers.ts\";\nconst PortableSegmentTextSchema = Schema.String.pipe(Schema.filter(isPortableSegment, {\n identifier: \"RecordPortableSegment\",\n description: \"an ASCII portable file-name segment without path separators or reserved device names\",\n}));\nexport const RecordIdSchema: Schema.Schema<RecordId, string> = PortableSegmentTextSchema.pipe(Schema.brand(RECORD_ID_BRAND));\nexport const RunIdSchema: Schema.Schema<RunId, string> = PortableSegmentTextSchema.pipe(Schema.brand(RUN_ID_BRAND));\nexport const SlotIdSchema: Schema.Schema<SlotId, string> = PortableSegmentTextSchema.pipe(Schema.brand(SLOT_ID_BRAND));\nexport const AttemptIdSchema: Schema.Schema<AttemptId, string> = PortableSegmentTextSchema.pipe(Schema.brand(ATTEMPT_ID_BRAND));\nconst RecordDomainIdentitySchema = Schema.String.pipe(Schema.filter(isRecordDomainIdentity, {\n identifier: \"RecordDomainIdentity\",\n description: \"a bounded durable identity without control characters\",\n}));\nexport const ExperimentIdSchema: Schema.Schema<ExperimentId, string> = RecordDomainIdentitySchema.pipe(Schema.brand(EXPERIMENT_ID_BRAND));\nexport const EvalIdSchema: Schema.Schema<EvalId, string> = RecordDomainIdentitySchema.pipe(Schema.brand(EVAL_ID_BRAND));\nexport const ExecutionIdentityDigestSchema: Schema.Schema<ExecutionIdentityDigest, string> = Schema.String.pipe(Schema.filter(isSha256Digest, {\n identifier: \"ExecutionIdentityDigest\",\n description: \"a lowercase hexadecimal SHA-256 execution identity digest\",\n}), Schema.brand(EXECUTION_IDENTITY_DIGEST_BRAND));\nexport const Sha256DigestSchema: Schema.Schema<Sha256Digest, string> = Schema.String.pipe(Schema.filter(isSha256Digest, {\n identifier: \"Sha256Digest\",\n description: \"a lowercase hexadecimal SHA-256 digest\",\n}), Schema.brand(SHA256_DIGEST_BRAND));\nexport const SourceItemIdSchema: Schema.Schema<SourceItemId, string> = PortableSegmentTextSchema.pipe(Schema.brand(SOURCE_ITEM_ID_BRAND));\nexport const FileChangeIdSchema: Schema.Schema<FileChangeId, string> = PortableSegmentTextSchema.pipe(Schema.brand(FILE_CHANGE_ID_BRAND));\nexport const ArtifactIdSchema: Schema.Schema<ArtifactId, string> = PortableSegmentTextSchema.pipe(Schema.brand(ARTIFACT_ID_BRAND));\nexport const CanonicalProjectRelativePathSchema: Schema.Schema<CanonicalProjectRelativePath, string> = Schema.String.pipe(Schema.filter(isCanonicalProjectRelativePath, {\n identifier: \"CanonicalProjectRelativePath\",\n description: \"a slash-separated project-relative path without dot segments\",\n}), Schema.brand(CANONICAL_PROJECT_RELATIVE_PATH_BRAND));\nexport const UtcMillisSchema: Schema.Schema<UtcMillis, number> = Schema.Number.pipe(Schema.filter(isUtcMillis, {\n identifier: \"UtcMillis\",\n description: \"a non-negative JSON-safe Unix-epoch millisecond value\",\n}), Schema.brand(UTC_MILLIS_BRAND));\nexport const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string> = Schema.String.pipe(Schema.filter(isRecordAttachmentName, {\n identifier: \"RecordAttachmentName\",\n description: \"a lowercase reverse-domain portable Attachment name\",\n}), Schema.brand(RECORD_ATTACHMENT_NAME_BRAND));\nexport const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string> = Schema.String.pipe(Schema.filter(isRecordAttachmentSchemaId, {\n identifier: \"RecordAttachmentSchemaId\",\n description: \"a RecordAttachment name followed by /vN\",\n}), Schema.brand(RECORD_ATTACHMENT_SCHEMA_ID_BRAND));\nexport const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string> = Schema.String.pipe(Schema.filter(isRecordFormatId, {\n identifier: \"RecordFormatId\",\n description: \"a niceeval.record/vN format identity\",\n}), Schema.brand(RECORD_FORMAT_ID_BRAND));\nexport const RecordSchemaVersionSchema: Schema.Schema<RecordSchemaVersion, typeof RECORD_SCHEMA_VERSION> = Schema.Literal(RECORD_SCHEMA_VERSION);\nexport const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT> = Schema.Literal(RECORD_FORMAT).pipe(Schema.brand(RECORD_FORMAT_ID_BRAND));\n"]}
1
+ {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["identifiers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Schema } from \"effect\";\nimport { ATTEMPT_ID_BRAND, ARTIFACT_ID_BRAND, CANONICAL_PROJECT_RELATIVE_PATH_BRAND, EVAL_ID_BRAND, EXECUTION_IDENTITY_DIGEST_BRAND, EXPERIMENT_ID_BRAND, FILE_CHANGE_ID_BRAND, isPortableSegment, isCanonicalProjectRelativePath, isRecordDomainIdentity, isRecordAttachmentName, isRecordAttachmentSchemaId, isRecordFormatId, isSha256Digest, isUtcMillis, RECORD_ATTACHMENT_NAME_BRAND, RECORD_ATTACHMENT_SCHEMA_ID_BRAND, RECORD_FORMAT, RECORD_FORMAT_ID_BRAND, RECORD_ID_BRAND, RUN_ID_BRAND, SHA256_DIGEST_BRAND, SLOT_ID_BRAND, SOURCE_ITEM_ID_BRAND, UTC_MILLIS_BRAND, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis, } from \"../model/identifiers.ts\";\nconst PortableSegmentTextSchema = Schema.String.pipe(Schema.filter(isPortableSegment, {\n identifier: \"RecordPortableSegment\",\n description: \"an ASCII portable file-name segment without path separators or reserved device names\",\n}));\nexport const RecordIdSchema: Schema.Schema<RecordId, string> = PortableSegmentTextSchema.pipe(Schema.brand(RECORD_ID_BRAND));\nexport const RunIdSchema: Schema.Schema<RunId, string> = PortableSegmentTextSchema.pipe(Schema.brand(RUN_ID_BRAND));\nexport const SlotIdSchema: Schema.Schema<SlotId, string> = PortableSegmentTextSchema.pipe(Schema.brand(SLOT_ID_BRAND));\nexport const AttemptIdSchema: Schema.Schema<AttemptId, string> = PortableSegmentTextSchema.pipe(Schema.brand(ATTEMPT_ID_BRAND));\nconst RecordDomainIdentitySchema = Schema.String.pipe(Schema.filter(isRecordDomainIdentity, {\n identifier: \"RecordDomainIdentity\",\n description: \"a bounded durable identity without control characters\",\n}));\nexport const ExperimentIdSchema: Schema.Schema<ExperimentId, string> = RecordDomainIdentitySchema.pipe(Schema.brand(EXPERIMENT_ID_BRAND));\nexport const EvalIdSchema: Schema.Schema<EvalId, string> = RecordDomainIdentitySchema.pipe(Schema.brand(EVAL_ID_BRAND));\nexport const ExecutionIdentityDigestSchema: Schema.Schema<ExecutionIdentityDigest, string> = Schema.String.pipe(Schema.filter(isSha256Digest, {\n identifier: \"ExecutionIdentityDigest\",\n description: \"a lowercase hexadecimal SHA-256 execution identity digest\",\n}), Schema.brand(EXECUTION_IDENTITY_DIGEST_BRAND));\nexport const Sha256DigestSchema: Schema.Schema<Sha256Digest, string> = Schema.String.pipe(Schema.filter(isSha256Digest, {\n identifier: \"Sha256Digest\",\n description: \"a lowercase hexadecimal SHA-256 digest\",\n}), Schema.brand(SHA256_DIGEST_BRAND));\nexport const SourceItemIdSchema: Schema.Schema<SourceItemId, string> = PortableSegmentTextSchema.pipe(Schema.brand(SOURCE_ITEM_ID_BRAND));\nexport const FileChangeIdSchema: Schema.Schema<FileChangeId, string> = PortableSegmentTextSchema.pipe(Schema.brand(FILE_CHANGE_ID_BRAND));\nexport const ArtifactIdSchema: Schema.Schema<ArtifactId, string> = PortableSegmentTextSchema.pipe(Schema.brand(ARTIFACT_ID_BRAND));\nexport const CanonicalProjectRelativePathSchema: Schema.Schema<CanonicalProjectRelativePath, string> = Schema.String.pipe(Schema.filter(isCanonicalProjectRelativePath, {\n identifier: \"CanonicalProjectRelativePath\",\n description: \"a slash-separated project-relative path without dot segments\",\n}), Schema.brand(CANONICAL_PROJECT_RELATIVE_PATH_BRAND));\nexport const UtcMillisSchema: Schema.Schema<UtcMillis, number> = Schema.Number.pipe(Schema.filter(isUtcMillis, {\n identifier: \"UtcMillis\",\n description: \"a non-negative JSON-safe Unix-epoch millisecond value\",\n}), Schema.brand(UTC_MILLIS_BRAND));\nexport const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string> = Schema.String.pipe(Schema.filter(isRecordAttachmentName, {\n identifier: \"RecordAttachmentName\",\n description: \"a lowercase reverse-domain portable Attachment name\",\n}), Schema.brand(RECORD_ATTACHMENT_NAME_BRAND));\nexport const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string> = Schema.String.pipe(Schema.filter(isRecordAttachmentSchemaId, {\n identifier: \"RecordAttachmentSchemaId\",\n description: \"a RecordAttachment name followed by /vN\",\n}), Schema.brand(RECORD_ATTACHMENT_SCHEMA_ID_BRAND));\nexport const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string> = Schema.String.pipe(Schema.filter(isRecordFormatId, {\n identifier: \"RecordFormatId\",\n description: \"a fixed niceeval.record format identity\",\n}), Schema.brand(RECORD_FORMAT_ID_BRAND));\nexport const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT> = Schema.Literal(RECORD_FORMAT).pipe(Schema.brand(RECORD_FORMAT_ID_BRAND));\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Schema } from "effect";
2
- import { RECORD_FORMAT, RECORD_SCHEMA_VERSION, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RecordSchemaVersion, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.cjs";
2
+ import { RECORD_FORMAT, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.cjs";
3
3
  export declare const RecordIdSchema: Schema.Schema<RecordId, string>;
4
4
  export declare const RunIdSchema: Schema.Schema<RunId, string>;
5
5
  export declare const SlotIdSchema: Schema.Schema<SlotId, string>;
@@ -16,5 +16,4 @@ export declare const UtcMillisSchema: Schema.Schema<UtcMillis, number>;
16
16
  export declare const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string>;
17
17
  export declare const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string>;
18
18
  export declare const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string>;
19
- export declare const RecordSchemaVersionSchema: Schema.Schema<RecordSchemaVersion, typeof RECORD_SCHEMA_VERSION>;
20
19
  export declare const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT>;
@@ -1,5 +1,5 @@
1
1
  import { Schema } from "effect";
2
- import { RECORD_FORMAT, RECORD_SCHEMA_VERSION, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RecordSchemaVersion, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.mjs";
2
+ import { RECORD_FORMAT, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.mjs";
3
3
  export declare const RecordIdSchema: Schema.Schema<RecordId, string>;
4
4
  export declare const RunIdSchema: Schema.Schema<RunId, string>;
5
5
  export declare const SlotIdSchema: Schema.Schema<SlotId, string>;
@@ -16,5 +16,4 @@ export declare const UtcMillisSchema: Schema.Schema<UtcMillis, number>;
16
16
  export declare const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string>;
17
17
  export declare const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string>;
18
18
  export declare const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string>;
19
- export declare const RecordSchemaVersionSchema: Schema.Schema<RecordSchemaVersion, typeof RECORD_SCHEMA_VERSION>;
20
19
  export declare const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT>;
@@ -1,5 +1,5 @@
1
1
  import { Schema } from "effect";
2
- import { RECORD_FORMAT, RECORD_SCHEMA_VERSION, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RecordSchemaVersion, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.js";
2
+ import { RECORD_FORMAT, type AttemptId, type ArtifactId, type CanonicalProjectRelativePath, type EvalId, type ExecutionIdentityDigest, type ExperimentId, type FileChangeId, type RecordAttachmentName, type RecordAttachmentSchemaId, type RecordFormat, type RecordFormatId, type RecordId, type RunId, type Sha256Digest, type SlotId, type SourceItemId, type UtcMillis } from "../model/identifiers.js";
3
3
  export declare const RecordIdSchema: Schema.Schema<RecordId, string>;
4
4
  export declare const RunIdSchema: Schema.Schema<RunId, string>;
5
5
  export declare const SlotIdSchema: Schema.Schema<SlotId, string>;
@@ -16,5 +16,4 @@ export declare const UtcMillisSchema: Schema.Schema<UtcMillis, number>;
16
16
  export declare const RecordAttachmentNameSchema: Schema.Schema<RecordAttachmentName, string>;
17
17
  export declare const RecordAttachmentSchemaIdSchema: Schema.Schema<RecordAttachmentSchemaId, string>;
18
18
  export declare const RecordFormatIdSchema: Schema.Schema<RecordFormatId, string>;
19
- export declare const RecordSchemaVersionSchema: Schema.Schema<RecordSchemaVersion, typeof RECORD_SCHEMA_VERSION>;
20
19
  export declare const RecordFormatSchema: Schema.Schema<RecordFormat, typeof RECORD_FORMAT>;
@@ -25,16 +25,14 @@ const __niceevalExport10 = __niceevalCanonical["RecordFormatSchema"];
25
25
  export { __niceevalExport10 as RecordFormatSchema };
26
26
  const __niceevalExport11 = __niceevalCanonical["RecordIdSchema"];
27
27
  export { __niceevalExport11 as RecordIdSchema };
28
- const __niceevalExport12 = __niceevalCanonical["RecordSchemaVersionSchema"];
29
- export { __niceevalExport12 as RecordSchemaVersionSchema };
30
- const __niceevalExport13 = __niceevalCanonical["RunIdSchema"];
31
- export { __niceevalExport13 as RunIdSchema };
32
- const __niceevalExport14 = __niceevalCanonical["Sha256DigestSchema"];
33
- export { __niceevalExport14 as Sha256DigestSchema };
34
- const __niceevalExport15 = __niceevalCanonical["SlotIdSchema"];
35
- export { __niceevalExport15 as SlotIdSchema };
36
- const __niceevalExport16 = __niceevalCanonical["SourceItemIdSchema"];
37
- export { __niceevalExport16 as SourceItemIdSchema };
38
- const __niceevalExport17 = __niceevalCanonical["UtcMillisSchema"];
39
- export { __niceevalExport17 as UtcMillisSchema };
28
+ const __niceevalExport12 = __niceevalCanonical["RunIdSchema"];
29
+ export { __niceevalExport12 as RunIdSchema };
30
+ const __niceevalExport13 = __niceevalCanonical["Sha256DigestSchema"];
31
+ export { __niceevalExport13 as Sha256DigestSchema };
32
+ const __niceevalExport14 = __niceevalCanonical["SlotIdSchema"];
33
+ export { __niceevalExport14 as SlotIdSchema };
34
+ const __niceevalExport15 = __niceevalCanonical["SourceItemIdSchema"];
35
+ export { __niceevalExport15 as SourceItemIdSchema };
36
+ const __niceevalExport16 = __niceevalCanonical["UtcMillisSchema"];
37
+ export { __niceevalExport16 as UtcMillisSchema };
40
38
  //# sourceMappingURL=identifiers.js.map