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
@@ -1,6 +1,7 @@
1
1
  import type { AttemptLocator } from "../../../attempt-locator.js";
2
2
  import type { VerdictState } from "../../../eval/record/verdict.js";
3
- import type { AttemptEvidenceDomainDetail, ClosedCommandEntry, ClosedCommandsDetail, ClosedConversationDetail, ClosedDiagnosticsDetail, ClosedFileChangesCollection, ClosedSourceFrame, ClosedTimingDetail, ClosedTimingInterval, ClosedTraceCollection, ClosedUsageDetail, ClosedUsageObservation, FileChangesDomainDetail, JsonValue, SourceNavigationDomainDetail } from "../../../analysis/index.js";
3
+ import type { AttemptEvidenceDomainDetail, ClosedCommandEntry, ClosedAssertionSourceSite, ClosedCommandsDetail, ClosedConversationDetail, ClosedDiagnosticsDetail, ClosedFileChangesCollection, ClosedSourceFrame, ClosedTimingDetail, ClosedTimingInterval, ClosedTraceCollection, ClosedUsageDetail, ClosedUsageObservation, FileChangesDomainDetail, SourceNavigationDomainDetail } from "../../../analysis/index.js";
4
+ import type { AssertionEvidenceContent } from "../../definition/primitives/assertion-evidence.js";
4
5
  import type { DiffFile } from "../../definition/primitives/diff-lines.js";
5
6
  /** 不可变身份元组的展示投影。 */
6
7
  export interface AttemptIdentityView {
@@ -51,12 +52,14 @@ export interface AttemptScoreView {
51
52
  export interface AttemptAssertionView {
52
53
  readonly entryId: string;
53
54
  readonly name: string;
54
- /** sealed gate 投影:failed / unavailable 是 gate,其余是 soft。 */
55
- readonly severity: "gate" | "soft";
55
+ /** 展示角色:失败 gate、未计分 recorded、其余带分 soft。 */
56
+ readonly severity: "gate" | "recorded" | "soft";
56
57
  readonly outcome: "passed" | "failed" | "unavailable";
57
58
  readonly groupPath: readonly string[];
58
- /** 展示层预拼好的判定详情(原因 / coverage / limitations / diagnostic)。 */
59
+ /** Table 等紧凑读面的中立判定摘要。 */
59
60
  readonly detail: string;
61
+ /** Source 展开区消费的五段闭合结构。 */
62
+ readonly evidence: AssertionEvidenceContent;
60
63
  /** 得分点贡献;没有 score 贡献时整字段省略。 */
61
64
  readonly score?: AttemptScoreView;
62
65
  }
@@ -265,45 +268,9 @@ export declare function attemptErrorData(input: {
265
268
  readonly diagnostics?: ClosedDiagnosticsDetail;
266
269
  readonly commands?: readonly AttemptCommandCard[];
267
270
  }): AttemptErrorData | null;
268
- /**
269
- * sealed 断言 entry 的结构读取形状。DomainView 边界把整条 entry 声明成 JsonValue,
270
- * 展示层按已知 sealed 形状做最小结构读取( sourceSites 的 siteViewOf 同一条纪律):
271
- * 读不到的字段省略、读不懂的 entry 跳过,前向兼容,不伪造事实。
272
- */
273
- export interface SealedAssertionEntryView {
274
- readonly entryId: string;
275
- readonly display: SealedAssertionDisplayView;
276
- readonly result: SealedAssertionResultView;
277
- readonly coverage: SealedAssertionCoverageView;
278
- readonly limitations: readonly SealedAssertionLimitationView[];
279
- }
280
- export interface SealedAssertionDisplayView {
281
- readonly label?: string;
282
- readonly key?: string;
283
- readonly groupPath: readonly string[];
284
- }
285
- export interface SealedAssertionCoverageView {
286
- readonly state: "complete" | "partial" | "unavailable" | "not-applicable";
287
- readonly reason?: string;
288
- }
289
- export interface SealedAssertionLimitationView {
290
- readonly kind: string;
291
- }
292
- export interface SealedAssertionResultView {
293
- readonly state: "matched" | "mismatched" | "unavailable" | "errored";
294
- readonly reason?: string;
295
- readonly gate: "not-gate" | "satisfied" | "failed" | "unavailable";
296
- readonly score: SealedAssertionScoreView;
297
- readonly diagnostic?: JsonValue;
298
- }
299
- export interface SealedAssertionScoreView {
300
- readonly state: "not-scored" | "earned" | "unavailable";
301
- readonly earned?: number;
302
- readonly points?: number;
303
- }
304
- /** 整条 sealed assertion entry 的结构读取;读不懂(形状不符)返回 undefined,调用方跳过。 */
305
- export declare function assertionEntryViewOf(value: JsonValue): SealedAssertionEntryView | undefined;
306
- /** 展示层预拼的判定详情;字段全闭合,不把 matcher diagnostic tree 当作文案。 */
271
+ export type SealedAssertionEntryView = AttemptEvidenceDomainDetail["entries"][number];
272
+ /** Typed Analysis entry report view. No Record or matcher shape is parsed here. */
273
+ export declare function assertionEntryViewOf(value: SealedAssertionEntryView): SealedAssertionEntryView;
307
274
  export declare function assertionDetailOf(entry: SealedAssertionEntryView): string;
308
275
  export declare function assertionViewOf(entry: SealedAssertionEntryView): AttemptAssertionView;
309
276
  export declare function attemptAssertionsData(detail: AttemptEvidenceDomainDetail | undefined): AttemptAssertionsData | null;
@@ -363,8 +330,7 @@ export declare function attemptSourceData(input: {
363
330
  readonly state: "unavailable" | "binary";
364
331
  };
365
332
  }[];
366
- readonly sourceSites: readonly JsonValue[];
333
+ readonly sourceSites: readonly ClosedAssertionSourceSite[];
367
334
  readonly entries: readonly AttemptAssertionView[];
368
335
  readonly navigation?: SourceNavigationDomainDetail;
369
336
  }): AttemptSourceData | null;
370
- export declare function stableJson(value: JsonValue): string;
@@ -39,8 +39,6 @@ const __niceevalExport17 = __niceevalCanonical["commandInvocationText"];
39
39
  export { __niceevalExport17 as commandInvocationText };
40
40
  const __niceevalExport18 = __niceevalCanonical["observedCostUSD"];
41
41
  export { __niceevalExport18 as observedCostUSD };
42
- const __niceevalExport19 = __niceevalCanonical["stableJson"];
43
- export { __niceevalExport19 as stableJson };
44
- const __niceevalExport20 = __niceevalCanonical["usageTableData"];
45
- export { __niceevalExport20 as usageTableData };
42
+ const __niceevalExport19 = __niceevalCanonical["usageTableData"];
43
+ export { __niceevalExport19 as usageTableData };
46
44
  //# sourceMappingURL=compute.js.map
@@ -18,6 +18,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
18
18
  // 输入全部是当前闭合 DomainView 派生的普通值。
19
19
  const primitives_tsx_1 = require("../../definition/primitives.cjs");
20
20
  const tool_evidence_tsx_1 = require("../../definition/primitives/tool-evidence.cjs");
21
+ const assertion_evidence_tsx_1 = require("../../definition/primitives/assertion-evidence.cjs");
21
22
  const format_ts_1 = require("../../model/format.cjs");
22
23
  const locale_ts_1 = require("../../model/locale.cjs");
23
24
  const turn_label_ts_1 = require("../../../shared/turn-label.cjs");
@@ -31,7 +32,7 @@ function assertionToneClass(assertion) {
31
32
  return assertion.severity === "gate" ? "niceeval-tone-bad" : "niceeval-tone-warn";
32
33
  }
33
34
  /**
34
- * 一条 assertion 在展开区里的呈现:一行判定摘要,再接一段详情正文
35
+ * 一条 assertion 在展开区里的呈现:一行判定摘要,再接五段中立结构
35
36
  * (docs/feature/reports/library.md「源码行展开区里有什么」)。
36
37
  */
37
38
  function assertionNodes(assertion, key) {
@@ -42,9 +43,7 @@ function assertionNodes(assertion, key) {
42
43
  const nodes = [
43
44
  (0, jsx_runtime_1.jsx)(primitives_tsx_1.Text, { className: `niceeval-source-assertion ${assertionToneClass(assertion)}`, children: head }, `${key}:head`),
44
45
  ];
45
- if (assertion.detail.length > 0) {
46
- nodes.push((0, jsx_runtime_1.jsx)(primitives_tsx_1.Text, { className: "niceeval-source-assertion-body", children: assertion.detail }, `${key}:body`));
47
- }
46
+ nodes.push((0, jsx_runtime_1.jsx)(assertion_evidence_tsx_1.AssertionEvidence, { content: assertion.evidence }, `${key}:body`));
48
47
  return nodes;
49
48
  }
50
49
  function lineToneOf(assertions) {
@@ -244,6 +243,7 @@ function conversationEntryOf(reply) {
244
243
  raw,
245
244
  callId: reply.callId,
246
245
  callPhase: finished ? "finished" : "started",
246
+ ...(reply.outcome === undefined ? {} : { callOutcome: reply.outcome }),
247
247
  ...(reply.failed === true ? { failed: true } : {}),
248
248
  detail: ((0, jsx_runtime_1.jsx)(tool_evidence_tsx_1.ToolEvidence, { content: {
249
249
  phase: finished ? "finished" : "started",
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["content.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content 投影:compute 领域结果 → 原语 Content 形状。\n// 输入全部是当前闭合 DomainView 派生的普通值。\nimport { Text, TurnTrace } from \"../../definition/primitives.tsx\";\nimport type { ReportNode } from \"../../definition/tree.ts\";\nimport type { CalloutGroup, CalloutItem } from \"../../definition/primitives/callouts-logic.ts\";\nimport type { CopyBlockContent } from \"../../definition/primitives/copy-block.tsx\";\nimport type { CommandEvidenceContent, ConversationContent, ConversationEntry, ConversationTurn } from \"../../definition/primitives/conversation.tsx\";\nimport { ToolEvidence } from \"../../definition/primitives/tool-evidence.tsx\";\nimport type { DiffContent } from \"../../definition/primitives/diff-lines.ts\";\nimport type { SourceBlockContent, SourceContent, SourceLine, SourceLineTone, } from \"../../definition/primitives/source-view.tsx\";\nimport type { WaterfallContent, WaterfallNode } from \"../../definition/primitives/waterfall.tsx\";\nimport type { TableContent, TableContentRow } from \"../../definition/cell.ts\";\nimport type { ClosedTimingInterval } from \"../../../analysis/index.ts\";\nimport { formatDurationMs, formatPointsSuffix } from \"../../model/format.ts\";\nimport { localizedMessage } from \"../../model/locale.ts\";\nimport { normalizeTurnLabel } from \"../../../shared/turn-label.ts\";\nimport type { AttemptAssertionsData, AttemptAssertionView, AttemptCommandEvidenceData, AttemptConversationData, AttemptConversationReply, AttemptDiagnosticsData, AttemptDiffData, AttemptErrorData, AttemptFixPromptData, AttemptSourceData, AttemptSourceItemView, AttemptTimelineData, AttemptTraceData, } from \"./compute.ts\";\n// ───────────────────────── AttemptSource ─────────────────────────\n/** 该行 assertion 的判定摘要行 tone:与源码行状态同一套色。 */\nfunction assertionToneClass(assertion: AttemptAssertionView): string {\n if (assertion.outcome === \"unavailable\")\n return \"niceeval-tone-na\";\n if (assertion.outcome === \"passed\")\n return \"niceeval-tone-good\";\n return assertion.severity === \"gate\" ? \"niceeval-tone-bad\" : \"niceeval-tone-warn\";\n}\n/**\n * 一条 assertion 在展开区里的呈现:一行判定摘要,再接一段详情正文\n * (docs/feature/reports/library.md「源码行展开区里有什么」)。\n */\nfunction assertionNodes(assertion: AttemptAssertionView, key: string): ReportNode[] {\n const points = assertion.outcome !== \"unavailable\" && assertion.score !== undefined\n ? ` ${formatPointsSuffix(assertion.score.state === \"earned\" ? assertion.score.earned ?? 0 : 0)}`\n : \"\";\n const head = `${assertion.name} · ${assertion.severity} ${assertion.outcome}${points}`;\n const nodes: ReportNode[] = [\n <Text key={`${key}:head`} className={`niceeval-source-assertion ${assertionToneClass(assertion)}`}>\n {head}\n </Text>,\n ];\n if (assertion.detail.length > 0) {\n nodes.push(<Text key={`${key}:body`} className=\"niceeval-source-assertion-body\">\n {assertion.detail}\n </Text>);\n }\n return nodes;\n}\nfunction lineToneOf(assertions: readonly AttemptAssertionView[]): SourceLineTone | undefined {\n if (assertions.some((assertion) => assertion.outcome === \"failed\" && assertion.severity === \"gate\"))\n return \"gate-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"failed\"))\n return \"soft-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"unavailable\"))\n return \"unavailable\";\n if (assertions.some((assertion) => assertion.outcome === \"passed\"))\n return \"passed\";\n return undefined;\n}\ninterface SiteLineBinding {\n readonly entry: AttemptAssertionView;\n readonly role: string;\n readonly line: number;\n}\n/** sourceSites → 每行注解绑定:detail 落在起始行,tone 覆盖整个行区间。 */\nfunction siteBindingsOf(data: AttemptSourceData): ReadonlyMap<string, readonly SiteLineBinding[]> {\n const entriesById = new Map(data.entries.map((entry) => [entry.entryId, entry] as const));\n const bindings = new Map<string, SiteLineBinding[]>();\n for (const site of data.sites) {\n const entry = entriesById.get(site.entryId);\n if (entry === undefined)\n continue;\n for (let line = site.startLine; line <= site.endLine; line += 1) {\n const bucket = bindings.get(`${site.sourceItemId}:${line}`) ?? [];\n bucket.push({ entry, role: site.role, line: site.startLine });\n bindings.set(`${site.sourceItemId}:${line}`, bucket);\n }\n }\n return bindings;\n}\nfunction sourceItemBlock(item: AttemptSourceItemView, data: AttemptSourceData, bindings: ReadonlyMap<string, readonly SiteLineBinding[]>): SourceBlockContent {\n const lines: SourceLine[] = item.lines.map((text, index): SourceLine => {\n const line = index + 1;\n const bound = bindings.get(`${item.sourceItemId}:${line}`) ?? [];\n const assertions = bound.filter((binding) => binding.role !== \"score\").map((binding) => binding.entry);\n const details = bound\n .filter((binding) => binding.line === line && binding.role !== \"score\")\n .map((binding, detailIndex) => assertionNodes(binding.entry, `${item.path}:${line}:${detailIndex}`))\n .flat();\n const points = bound\n .filter((binding) => binding.role === \"score\")\n .reduce((sum, binding) => sum + (binding.entry.score?.state === \"earned\" ? binding.entry.score.earned ?? 0 : 0), 0);\n const hasPoints = bound.some((binding) => binding.role === \"score\" && binding.entry.score !== undefined);\n const tone = lineToneOf(assertions);\n const turnIds = (data.navigation?.rows ?? [])\n .filter((row) => row.source.state === \"mapped\" &&\n row.source.sourceItemId === item.sourceItemId &&\n row.source.sha256 === item.sha256 &&\n row.source.start.line === line)\n .sort((left, right) => (left.sourceOrder ?? Number.MAX_SAFE_INTEGER) - (right.sourceOrder ?? Number.MAX_SAFE_INTEGER) ||\n (left.turnId < right.turnId ? -1 : left.turnId > right.turnId ? 1 : 0))\n .map((row) => row.turnId);\n return {\n number: line,\n text,\n ...(turnIds.length > 0 ? { interaction: \"send\" as const, turnIds } : {}),\n ...(tone !== undefined ? { tone } : {}),\n ...(hasPoints ? { pill: formatPointsSuffix(points) } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n });\n return { path: item.path, lines };\n}\n/**\n * 闭合 Sources + sourceSites → SourceView Content。spine 是第一个 source item,\n * 其余是 detached;没有 sourceSite 的 attention 断言进 unmapped 区,不丢弃。\n */\nexport function projectedSourceContent(data: AttemptSourceData | null, locator?: AttemptSourceData[\"locator\"]): SourceContent | null {\n if (data === null)\n return null;\n const bindings = siteBindingsOf(data);\n const referenced = new Set(data.sites.map((site) => site.entryId));\n const unmapped: ReportNode[] = data.entries\n .filter((entry) => !referenced.has(entry.entryId))\n .flatMap((entry, index) => assertionNodes(entry, `unmapped:${index}`));\n const spine = sourceItemBlock(data.items[0]!, data, bindings);\n const detached = data.items.slice(1).map((item) => sourceItemBlock(item, data, bindings));\n return {\n spine,\n detached,\n ...(unmapped.length > 0 ? { unmapped } : {}),\n ...(locator !== undefined ? { locator } : {}),\n };\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\nexport function attemptAssertionsContent(data: AttemptAssertionsData | null): TableContent | null {\n if (data === null || (data.attention.length === 0 && data.passedGroups.length === 0))\n return null;\n const rows: TableContentRow[] = [];\n for (const assertion of data.attention) {\n rows.push({\n key: assertion.entryId,\n cells: {\n name: { kind: \"text\", text: assertion.name },\n severity: { kind: \"text\", text: assertion.severity },\n outcome: { kind: \"verdict\", verdict: assertion.outcome === \"unavailable\" ? \"skipped\" : assertion.outcome },\n detail: assertion.detail.length > 0\n ? { kind: \"text\", text: assertion.detail }\n : { kind: \"notApplicable\" },\n },\n });\n }\n return {\n columns: [\n { key: \"name\", header: localizedMessage(\"attemptAssertions.name\") },\n { key: \"severity\", header: localizedMessage(\"attemptAssertions.severity\") },\n { key: \"outcome\", header: localizedMessage(\"attemptAssertions.outcome\") },\n { key: \"detail\", header: localizedMessage(\"attemptAssertions.detail\") },\n ],\n rows,\n };\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\nfunction timingTree(intervals: readonly ClosedTimingInterval[]): readonly WaterfallNode[] {\n const children = new Map<string | null, ClosedTimingInterval[]>();\n for (const interval of intervals) {\n const siblings = children.get(interval.parentIntervalId) ?? [];\n siblings.push(interval);\n children.set(interval.parentIntervalId, siblings);\n }\n const build = (parent: string | null): WaterfallNode[] => (children.get(parent) ?? [])\n .sort(compareIntervals)\n .map((interval) => {\n const phase = interval.phase;\n return {\n key: interval.intervalId,\n label: interval.label,\n kind: phase,\n startOffsetMs: interval.startOffsetMs,\n durationMs: interval.durationMs,\n ...(interval.outcome === \"failed\" || interval.outcome === \"interrupted\" ? { failed: true as const } : {}),\n // 主干默认展开:直接看到 eval.run 与 agent.send 内部活动。\n ...(phase === \"eval.run\" || phase === \"agent.send\" ? { open: true as const } : {}),\n ...(build(interval.intervalId).length > 0 ? { children: build(interval.intervalId) } : {}),\n };\n });\n return build(null);\n}\nfunction compareIntervals(left: ClosedTimingInterval, right: ClosedTimingInterval): number {\n return left.startOffsetMs - right.startOffsetMs || compareText(left.intervalId, right.intervalId);\n}\nfunction timingSpan(intervals: readonly ClosedTimingInterval[]): number | null {\n if (intervals.length === 0)\n return null;\n const start = Math.min(...intervals.map((interval) => interval.startOffsetMs));\n const end = Math.max(...intervals.map((interval) => interval.startOffsetMs + interval.durationMs));\n return Math.max(0, end - start);\n}\n/** 执行时间树:root 区间是 phase 主链,children 是采集侧层级。 */\nexport function attemptTimelineContent(data: AttemptTimelineData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\nexport function attemptTraceContent(data: AttemptTraceData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\n/** 工具出入参等结构化值:JSON 化后交原语收口成单行预览(Conversation 的 preview 契约)。 */\nfunction jsonPreview(value: string | undefined): string {\n return value === undefined ? \"\" : value;\n}\nfunction conversationEntryOf(reply: AttemptConversationReply): ConversationEntry {\n switch (reply.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n return { kind: reply.kind, preview: reply.text, failed: reply.kind === \"error\" };\n case \"context\":\n return { kind: \"context\", preview: reply.text };\n case \"tool\": {\n const finished = reply.outputSummary !== undefined;\n const raw = finished ? reply.outputSummary : reply.inputSummary;\n return {\n kind: \"tool\",\n preview: finished\n ? `${reply.name} result`\n : `${reply.name}(${jsonPreview(reply.inputSummary)})`,\n raw,\n callId: reply.callId,\n callPhase: finished ? \"finished\" : \"started\",\n ...(reply.failed === true ? { failed: true } : {}),\n detail: (<ToolEvidence content={{\n phase: finished ? \"finished\" : \"started\",\n tool: reply.name,\n callId: reply.callId,\n inputSummary: reply.inputSummary,\n ...(reply.outputSummary === undefined ? {} : { outputSummary: reply.outputSummary }),\n ...(reply.outcome === undefined ? {} : { outcome: reply.outcome }),\n }}/>),\n };\n }\n case \"subagent\":\n return {\n kind: \"subagent\",\n preview: reply.name,\n ...(reply.failed === true ? { failed: true } : {}),\n ...(reply.summary ? { detail: <Text>{reply.summary}</Text> } : {}),\n };\n case \"skill\":\n return { kind: \"skill\", preview: reply.text ? `${reply.skill}: ${reply.text}` : reply.skill };\n case \"input\":\n return {\n kind: \"input\",\n preview: `${reply.request.state} · ${reply.request.promptSummary}`,\n ...(reply.request.responseSummary !== null\n ? { detail: <Text>{reply.request.responseSummary}</Text> }\n : {}),\n };\n case \"compaction\":\n return { kind: \"compaction\", preview: reply.text || \"context compacted\" };\n }\n}\nfunction turnVerdictOf(outcome: AttemptConversationData[\"rounds\"][number][\"outcome\"]): ConversationTurn[\"verdict\"] {\n switch (outcome) {\n case \"completed\":\n return undefined;\n case \"failed\":\n return \"failed\";\n case \"cancelled\":\n return \"skipped\";\n case \"interrupted\":\n return \"errored\";\n }\n}\nexport function attemptConversationContent(data: AttemptConversationData | null): ConversationContent | null {\n if (data === null || data.rounds.length === 0)\n return null;\n const turns: ConversationTurn[] = data.rounds.map((round) => ({\n key: round.turnId,\n label: `Turn ${round.sequence}`,\n ...(round.durationMs === undefined ? {} : { durationMs: round.durationMs }),\n verdict: turnVerdictOf(round.outcome),\n entries: round.replies.map(conversationEntryOf),\n }));\n return { turns, locator: data.locator };\n}\n// ───────────────────────── AttemptCommandEvidence ─────────────────────────\nexport function attemptCommandEvidenceContent(data: AttemptCommandEvidenceData | null): CommandEvidenceContent | null {\n if (data === null || data.commands.length === 0)\n return null;\n return { locator: data.locator, commands: data.commands };\n}\n// ───────────────────────── AttemptDiagnostics / AttemptError ─────────────────────────\nexport const executionEvidenceUnavailableCallouts: readonly CalloutGroup[] = [\n {\n title: \"Execution evidence unavailable\",\n items: [\n {\n level: \"warning\",\n message: \"The events artifact is missing or was not published.\",\n },\n ],\n },\n];\nexport function attemptDiagnosticsContent(data: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return data.groups.map((group) => ({\n title: group.phase,\n items: group.items.map((diagnostic): CalloutItem => ({\n level: diagnostic.level,\n message: `${diagnostic.code}: ${diagnostic.summary}`,\n })),\n }));\n}\nexport function attemptErrorContent(data: AttemptErrorData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return [\n {\n title: data.phase,\n items: [{ level: \"error\", message: `${data.code}: ${data.message}` }],\n },\n ];\n}\nexport function attemptFixPromptContent(data: AttemptFixPromptData | null): CopyBlockContent | null {\n if (data === null)\n return null;\n return { title: { en: \"Fix prompt\", \"zh-CN\": \"修复 prompt\" }, text: data.prompt };\n}\n/** 投影已经是 `DiffFile[]`,这里只把「没有证据」与「没有改动」都收成组件的零输出。 */\nexport function attemptDiffContent(data: AttemptDiffData | null): DiffContent | null {\n if (data === null || data.files.length === 0)\n return null;\n return data.files.map((file) => ({\n ...file,\n windows: file.windows.map((window) => ({\n ...window,\n window: normalizeTurnLabel(window.window),\n })),\n }));\n}\nexport function attemptNoticesContent(error: AttemptErrorData | null, diagnostics: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n const groups = [...(attemptErrorContent(error) ?? []), ...(attemptDiagnosticsContent(diagnostics) ?? [])];\n return groups.length > 0 ? groups : null;\n}\n// ───────────────────────── Conversation 嵌入源码 ─────────────────────────\n/**\n * 只按已验证的 navigation turnId 将 Conversation 轮嵌入源码 send 行;没有\n * mapped row 的轮留在页尾。这里禁止按标签、源码顺序或数组位置补配。\n */\nexport function embedConversationInSource(source: SourceContent | null, conversation: ConversationContent | null): {\n source: SourceContent | null;\n conversation: ConversationContent | null;\n} {\n const turns = conversation?.turns ?? [];\n const turnById = new Map(turns.map((turn) => [turn.key, turn] as const));\n const mappedTurnIds = new Set<string>();\n const cloneLine = (line: SourceLine): SourceLine => {\n const lineTurns = (line.turnIds ?? []).flatMap((turnId) => {\n const turn = turnById.get(turnId);\n if (turn === undefined)\n return [];\n mappedTurnIds.add(turnId);\n return [turn];\n });\n const details = line.details === undefined && lineTurns.length === 0\n ? undefined\n : [\n ...(line.details ?? []),\n ...(lineTurns.length === 0 ? [] : [<TurnTrace data={{ turns: lineTurns }}/>]),\n ];\n return {\n ...line,\n ...(details === undefined ? {} : { details }),\n };\n };\n const cloneBlock = (block: SourceBlockContent): SourceBlockContent => ({\n ...block,\n lines: block.lines.map(cloneLine),\n });\n const embeddedSource = source === null\n ? null\n : {\n ...source,\n spine: cloneBlock(source.spine),\n detached: source.detached.map(cloneBlock),\n };\n const remainingTurns = turns.filter((turn) => !mappedTurnIds.has(turn.key));\n const remainingConversation = conversation === null || remainingTurns.length === 0\n ? null\n : { ...conversation, turns: remainingTurns };\n return { source: embeddedSource, conversation: remainingConversation };\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["content.tsx"],"names":[],"mappings":"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","sourcesContent":["// Attempt 详情 Content 投影:compute 领域结果 → 原语 Content 形状。\n// 输入全部是当前闭合 DomainView 派生的普通值。\nimport { Text, TurnTrace } from \"../../definition/primitives.tsx\";\nimport type { ReportNode } from \"../../definition/tree.ts\";\nimport type { CalloutGroup, CalloutItem } from \"../../definition/primitives/callouts-logic.ts\";\nimport type { CopyBlockContent } from \"../../definition/primitives/copy-block.tsx\";\nimport type { CommandEvidenceContent, ConversationContent, ConversationEntry, ConversationTurn } from \"../../definition/primitives/conversation.tsx\";\nimport { ToolEvidence } from \"../../definition/primitives/tool-evidence.tsx\";\nimport { AssertionEvidence } from \"../../definition/primitives/assertion-evidence.tsx\";\nimport type { DiffContent } from \"../../definition/primitives/diff-lines.ts\";\nimport type { SourceBlockContent, SourceContent, SourceLine, SourceLineTone, } from \"../../definition/primitives/source-view.tsx\";\nimport type { WaterfallContent, WaterfallNode } from \"../../definition/primitives/waterfall.tsx\";\nimport type { TableContent, TableContentRow } from \"../../definition/cell.ts\";\nimport type { ClosedTimingInterval } from \"../../../analysis/index.ts\";\nimport { formatDurationMs, formatPointsSuffix } from \"../../model/format.ts\";\nimport { localizedMessage } from \"../../model/locale.ts\";\nimport { normalizeTurnLabel } from \"../../../shared/turn-label.ts\";\nimport type { AttemptAssertionsData, AttemptAssertionView, AttemptCommandEvidenceData, AttemptConversationData, AttemptConversationReply, AttemptDiagnosticsData, AttemptDiffData, AttemptErrorData, AttemptFixPromptData, AttemptSourceData, AttemptSourceItemView, AttemptTimelineData, AttemptTraceData, } from \"./compute.ts\";\n// ───────────────────────── AttemptSource ─────────────────────────\n/** 该行 assertion 的判定摘要行 tone:与源码行状态同一套色。 */\nfunction assertionToneClass(assertion: AttemptAssertionView): string {\n if (assertion.outcome === \"unavailable\")\n return \"niceeval-tone-na\";\n if (assertion.outcome === \"passed\")\n return \"niceeval-tone-good\";\n return assertion.severity === \"gate\" ? \"niceeval-tone-bad\" : \"niceeval-tone-warn\";\n}\n/**\n * 一条 assertion 在展开区里的呈现:一行判定摘要,再接五段中立结构\n * (docs/feature/reports/library.md「源码行展开区里有什么」)。\n */\nfunction assertionNodes(assertion: AttemptAssertionView, key: string): ReportNode[] {\n const points = assertion.outcome !== \"unavailable\" && assertion.score !== undefined\n ? ` ${formatPointsSuffix(assertion.score.state === \"earned\" ? assertion.score.earned ?? 0 : 0)}`\n : \"\";\n const head = `${assertion.name} · ${assertion.severity} ${assertion.outcome}${points}`;\n const nodes: ReportNode[] = [\n <Text key={`${key}:head`} className={`niceeval-source-assertion ${assertionToneClass(assertion)}`}>\n {head}\n </Text>,\n ];\n nodes.push(<AssertionEvidence key={`${key}:body`} content={assertion.evidence}/>);\n return nodes;\n}\nfunction lineToneOf(assertions: readonly AttemptAssertionView[]): SourceLineTone | undefined {\n if (assertions.some((assertion) => assertion.outcome === \"failed\" && assertion.severity === \"gate\"))\n return \"gate-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"failed\"))\n return \"soft-fail\";\n if (assertions.some((assertion) => assertion.outcome === \"unavailable\"))\n return \"unavailable\";\n if (assertions.some((assertion) => assertion.outcome === \"passed\"))\n return \"passed\";\n return undefined;\n}\ninterface SiteLineBinding {\n readonly entry: AttemptAssertionView;\n readonly role: string;\n readonly line: number;\n}\n/** sourceSites → 每行注解绑定:detail 落在起始行,tone 覆盖整个行区间。 */\nfunction siteBindingsOf(data: AttemptSourceData): ReadonlyMap<string, readonly SiteLineBinding[]> {\n const entriesById = new Map(data.entries.map((entry) => [entry.entryId, entry] as const));\n const bindings = new Map<string, SiteLineBinding[]>();\n for (const site of data.sites) {\n const entry = entriesById.get(site.entryId);\n if (entry === undefined)\n continue;\n for (let line = site.startLine; line <= site.endLine; line += 1) {\n const bucket = bindings.get(`${site.sourceItemId}:${line}`) ?? [];\n bucket.push({ entry, role: site.role, line: site.startLine });\n bindings.set(`${site.sourceItemId}:${line}`, bucket);\n }\n }\n return bindings;\n}\nfunction sourceItemBlock(item: AttemptSourceItemView, data: AttemptSourceData, bindings: ReadonlyMap<string, readonly SiteLineBinding[]>): SourceBlockContent {\n const lines: SourceLine[] = item.lines.map((text, index): SourceLine => {\n const line = index + 1;\n const bound = bindings.get(`${item.sourceItemId}:${line}`) ?? [];\n const assertions = bound.filter((binding) => binding.role !== \"score\").map((binding) => binding.entry);\n const details = bound\n .filter((binding) => binding.line === line && binding.role !== \"score\")\n .map((binding, detailIndex) => assertionNodes(binding.entry, `${item.path}:${line}:${detailIndex}`))\n .flat();\n const points = bound\n .filter((binding) => binding.role === \"score\")\n .reduce((sum, binding) => sum + (binding.entry.score?.state === \"earned\" ? binding.entry.score.earned ?? 0 : 0), 0);\n const hasPoints = bound.some((binding) => binding.role === \"score\" && binding.entry.score !== undefined);\n const tone = lineToneOf(assertions);\n const turnIds = (data.navigation?.rows ?? [])\n .filter((row) => row.source.state === \"mapped\" &&\n row.source.sourceItemId === item.sourceItemId &&\n row.source.sha256 === item.sha256 &&\n row.source.start.line === line)\n .sort((left, right) => (left.sourceOrder ?? Number.MAX_SAFE_INTEGER) - (right.sourceOrder ?? Number.MAX_SAFE_INTEGER) ||\n (left.turnId < right.turnId ? -1 : left.turnId > right.turnId ? 1 : 0))\n .map((row) => row.turnId);\n return {\n number: line,\n text,\n ...(turnIds.length > 0 ? { interaction: \"send\" as const, turnIds } : {}),\n ...(tone !== undefined ? { tone } : {}),\n ...(hasPoints ? { pill: formatPointsSuffix(points) } : {}),\n ...(details.length > 0 ? { details } : {}),\n };\n });\n return { path: item.path, lines };\n}\n/**\n * 闭合 Sources + sourceSites → SourceView Content。spine 是第一个 source item,\n * 其余是 detached;没有 sourceSite 的 attention 断言进 unmapped 区,不丢弃。\n */\nexport function projectedSourceContent(data: AttemptSourceData | null, locator?: AttemptSourceData[\"locator\"]): SourceContent | null {\n if (data === null)\n return null;\n const bindings = siteBindingsOf(data);\n const referenced = new Set(data.sites.map((site) => site.entryId));\n const unmapped: ReportNode[] = data.entries\n .filter((entry) => !referenced.has(entry.entryId))\n .flatMap((entry, index) => assertionNodes(entry, `unmapped:${index}`));\n const spine = sourceItemBlock(data.items[0]!, data, bindings);\n const detached = data.items.slice(1).map((item) => sourceItemBlock(item, data, bindings));\n return {\n spine,\n detached,\n ...(unmapped.length > 0 ? { unmapped } : {}),\n ...(locator !== undefined ? { locator } : {}),\n };\n}\n// ───────────────────────── AttemptAssertions ─────────────────────────\nexport function attemptAssertionsContent(data: AttemptAssertionsData | null): TableContent | null {\n if (data === null || (data.attention.length === 0 && data.passedGroups.length === 0))\n return null;\n const rows: TableContentRow[] = [];\n for (const assertion of data.attention) {\n rows.push({\n key: assertion.entryId,\n cells: {\n name: { kind: \"text\", text: assertion.name },\n severity: { kind: \"text\", text: assertion.severity },\n outcome: { kind: \"verdict\", verdict: assertion.outcome === \"unavailable\" ? \"skipped\" : assertion.outcome },\n detail: assertion.detail.length > 0\n ? { kind: \"text\", text: assertion.detail }\n : { kind: \"notApplicable\" },\n },\n });\n }\n return {\n columns: [\n { key: \"name\", header: localizedMessage(\"attemptAssertions.name\") },\n { key: \"severity\", header: localizedMessage(\"attemptAssertions.severity\") },\n { key: \"outcome\", header: localizedMessage(\"attemptAssertions.outcome\") },\n { key: \"detail\", header: localizedMessage(\"attemptAssertions.detail\") },\n ],\n rows,\n };\n}\n// ───────────────────────── AttemptTimeline / AttemptTrace ─────────────────────────\nfunction timingTree(intervals: readonly ClosedTimingInterval[]): readonly WaterfallNode[] {\n const children = new Map<string | null, ClosedTimingInterval[]>();\n for (const interval of intervals) {\n const siblings = children.get(interval.parentIntervalId) ?? [];\n siblings.push(interval);\n children.set(interval.parentIntervalId, siblings);\n }\n const build = (parent: string | null): WaterfallNode[] => (children.get(parent) ?? [])\n .sort(compareIntervals)\n .map((interval) => {\n const phase = interval.phase;\n return {\n key: interval.intervalId,\n label: interval.label,\n kind: phase,\n startOffsetMs: interval.startOffsetMs,\n durationMs: interval.durationMs,\n ...(interval.outcome === \"failed\" || interval.outcome === \"interrupted\" ? { failed: true as const } : {}),\n // 主干默认展开:直接看到 eval.run 与 agent.send 内部活动。\n ...(phase === \"eval.run\" || phase === \"agent.send\" ? { open: true as const } : {}),\n ...(build(interval.intervalId).length > 0 ? { children: build(interval.intervalId) } : {}),\n };\n });\n return build(null);\n}\nfunction compareIntervals(left: ClosedTimingInterval, right: ClosedTimingInterval): number {\n return left.startOffsetMs - right.startOffsetMs || compareText(left.intervalId, right.intervalId);\n}\nfunction timingSpan(intervals: readonly ClosedTimingInterval[]): number | null {\n if (intervals.length === 0)\n return null;\n const start = Math.min(...intervals.map((interval) => interval.startOffsetMs));\n const end = Math.max(...intervals.map((interval) => interval.startOffsetMs + interval.durationMs));\n return Math.max(0, end - start);\n}\n/** 执行时间树:root 区间是 phase 主链,children 是采集侧层级。 */\nexport function attemptTimelineContent(data: AttemptTimelineData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\nexport function attemptTraceContent(data: AttemptTraceData | null): WaterfallContent | null {\n if (data === null)\n return null;\n return [\n {\n key: data.locator,\n label: data.locator,\n durationMs: timingSpan(data.intervals),\n locator: data.locator,\n nodes: timingTree(data.intervals),\n },\n ];\n}\n// ───────────────────────── AttemptConversation ─────────────────────────\n/** 工具出入参等结构化值:JSON 化后交原语收口成单行预览(Conversation 的 preview 契约)。 */\nfunction jsonPreview(value: string | undefined): string {\n return value === undefined ? \"\" : value;\n}\nfunction conversationEntryOf(reply: AttemptConversationReply): ConversationEntry {\n switch (reply.kind) {\n case \"assistant\":\n case \"user\":\n case \"thinking\":\n case \"error\":\n return { kind: reply.kind, preview: reply.text, failed: reply.kind === \"error\" };\n case \"context\":\n return { kind: \"context\", preview: reply.text };\n case \"tool\": {\n const finished = reply.outputSummary !== undefined;\n const raw = finished ? reply.outputSummary : reply.inputSummary;\n return {\n kind: \"tool\",\n preview: finished\n ? `${reply.name} result`\n : `${reply.name}(${jsonPreview(reply.inputSummary)})`,\n raw,\n callId: reply.callId,\n callPhase: finished ? \"finished\" : \"started\",\n ...(reply.outcome === undefined ? {} : { callOutcome: reply.outcome }),\n ...(reply.failed === true ? { failed: true } : {}),\n detail: (<ToolEvidence content={{\n phase: finished ? \"finished\" : \"started\",\n tool: reply.name,\n callId: reply.callId,\n inputSummary: reply.inputSummary,\n ...(reply.outputSummary === undefined ? {} : { outputSummary: reply.outputSummary }),\n ...(reply.outcome === undefined ? {} : { outcome: reply.outcome }),\n }}/>),\n };\n }\n case \"subagent\":\n return {\n kind: \"subagent\",\n preview: reply.name,\n ...(reply.failed === true ? { failed: true } : {}),\n ...(reply.summary ? { detail: <Text>{reply.summary}</Text> } : {}),\n };\n case \"skill\":\n return { kind: \"skill\", preview: reply.text ? `${reply.skill}: ${reply.text}` : reply.skill };\n case \"input\":\n return {\n kind: \"input\",\n preview: `${reply.request.state} · ${reply.request.promptSummary}`,\n ...(reply.request.responseSummary !== null\n ? { detail: <Text>{reply.request.responseSummary}</Text> }\n : {}),\n };\n case \"compaction\":\n return { kind: \"compaction\", preview: reply.text || \"context compacted\" };\n }\n}\nfunction turnVerdictOf(outcome: AttemptConversationData[\"rounds\"][number][\"outcome\"]): ConversationTurn[\"verdict\"] {\n switch (outcome) {\n case \"completed\":\n return undefined;\n case \"failed\":\n return \"failed\";\n case \"cancelled\":\n return \"skipped\";\n case \"interrupted\":\n return \"errored\";\n }\n}\nexport function attemptConversationContent(data: AttemptConversationData | null): ConversationContent | null {\n if (data === null || data.rounds.length === 0)\n return null;\n const turns: ConversationTurn[] = data.rounds.map((round) => ({\n key: round.turnId,\n label: `Turn ${round.sequence}`,\n ...(round.durationMs === undefined ? {} : { durationMs: round.durationMs }),\n verdict: turnVerdictOf(round.outcome),\n entries: round.replies.map(conversationEntryOf),\n }));\n return { turns, locator: data.locator };\n}\n// ───────────────────────── AttemptCommandEvidence ─────────────────────────\nexport function attemptCommandEvidenceContent(data: AttemptCommandEvidenceData | null): CommandEvidenceContent | null {\n if (data === null || data.commands.length === 0)\n return null;\n return { locator: data.locator, commands: data.commands };\n}\n// ───────────────────────── AttemptDiagnostics / AttemptError ─────────────────────────\nexport const executionEvidenceUnavailableCallouts: readonly CalloutGroup[] = [\n {\n title: \"Execution evidence unavailable\",\n items: [\n {\n level: \"warning\",\n message: \"The events artifact is missing or was not published.\",\n },\n ],\n },\n];\nexport function attemptDiagnosticsContent(data: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return data.groups.map((group) => ({\n title: group.phase,\n items: group.items.map((diagnostic): CalloutItem => ({\n level: diagnostic.level,\n message: `${diagnostic.code}: ${diagnostic.summary}`,\n })),\n }));\n}\nexport function attemptErrorContent(data: AttemptErrorData | null): readonly CalloutGroup[] | null {\n if (data === null)\n return null;\n return [\n {\n title: data.phase,\n items: [{ level: \"error\", message: `${data.code}: ${data.message}` }],\n },\n ];\n}\nexport function attemptFixPromptContent(data: AttemptFixPromptData | null): CopyBlockContent | null {\n if (data === null)\n return null;\n return { title: { en: \"Fix prompt\", \"zh-CN\": \"修复 prompt\" }, text: data.prompt };\n}\n/** 投影已经是 `DiffFile[]`,这里只把「没有证据」与「没有改动」都收成组件的零输出。 */\nexport function attemptDiffContent(data: AttemptDiffData | null): DiffContent | null {\n if (data === null || data.files.length === 0)\n return null;\n return data.files.map((file) => ({\n ...file,\n windows: file.windows.map((window) => ({\n ...window,\n window: normalizeTurnLabel(window.window),\n })),\n }));\n}\nexport function attemptNoticesContent(error: AttemptErrorData | null, diagnostics: AttemptDiagnosticsData | null): readonly CalloutGroup[] | null {\n const groups = [...(attemptErrorContent(error) ?? []), ...(attemptDiagnosticsContent(diagnostics) ?? [])];\n return groups.length > 0 ? groups : null;\n}\n// ───────────────────────── Conversation 嵌入源码 ─────────────────────────\n/**\n * 只按已验证的 navigation turnId 将 Conversation 轮嵌入源码 send 行;没有\n * mapped row 的轮留在页尾。这里禁止按标签、源码顺序或数组位置补配。\n */\nexport function embedConversationInSource(source: SourceContent | null, conversation: ConversationContent | null): {\n source: SourceContent | null;\n conversation: ConversationContent | null;\n} {\n const turns = conversation?.turns ?? [];\n const turnById = new Map(turns.map((turn) => [turn.key, turn] as const));\n const mappedTurnIds = new Set<string>();\n const cloneLine = (line: SourceLine): SourceLine => {\n const lineTurns = (line.turnIds ?? []).flatMap((turnId) => {\n const turn = turnById.get(turnId);\n if (turn === undefined)\n return [];\n mappedTurnIds.add(turnId);\n return [turn];\n });\n const details = line.details === undefined && lineTurns.length === 0\n ? undefined\n : [\n ...(line.details ?? []),\n ...(lineTurns.length === 0 ? [] : [<TurnTrace data={{ turns: lineTurns }}/>]),\n ];\n return {\n ...line,\n ...(details === undefined ? {} : { details }),\n };\n };\n const cloneBlock = (block: SourceBlockContent): SourceBlockContent => ({\n ...block,\n lines: block.lines.map(cloneLine),\n });\n const embeddedSource = source === null\n ? null\n : {\n ...source,\n spine: cloneBlock(source.spine),\n detached: source.detached.map(cloneBlock),\n };\n const remainingTurns = turns.filter((turn) => !mappedTurnIds.has(turn.key));\n const remainingConversation = conversation === null || remainingTurns.length === 0\n ? null\n : { ...conversation, turns: remainingTurns };\n return { source: embeddedSource, conversation: remainingConversation };\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
@@ -42,6 +42,41 @@ function capabilitiesProblem(value, path) {
42
42
  }
43
43
  return null;
44
44
  }
45
+ function assertionFactProblem(value, path) {
46
+ if (!(0, shared_ts_1.isObject)(value) || typeof value.kind !== "string")
47
+ return `"${path}" must be a closed assertion fact`;
48
+ switch (value.kind) {
49
+ case "unavailable":
50
+ return typeof value.reason === "string" ? null : `"${path}.reason" must be a string`;
51
+ case "value":
52
+ return value.value === null || typeof value.value === "string" || typeof value.value === "number" ||
53
+ typeof value.value === "boolean"
54
+ ? null
55
+ : `"${path}.value" must be a JSON scalar`;
56
+ case "text":
57
+ return typeof value.text === "string" ? null : `"${path}.text" must be a string`;
58
+ case "list":
59
+ return (0, shared_ts_1.arrayProblem)(value.items, `${path}.items`, assertionFactProblem);
60
+ case "fields":
61
+ return (0, shared_ts_1.arrayProblem)(value.fields, `${path}.fields`, (field, fieldPath) => {
62
+ if (!(0, shared_ts_1.isObject)(field) || typeof field.label !== "string")
63
+ return `"${fieldPath}.label" must be a string`;
64
+ return assertionFactProblem(field.value, `${fieldPath}.value`);
65
+ });
66
+ default:
67
+ return `"${path}.kind" is unsupported`;
68
+ }
69
+ }
70
+ function assertionEvidenceProblem(value, path) {
71
+ if (!(0, shared_ts_1.isObject)(value))
72
+ return `"${path}" must be an AssertionEvidenceContent object`;
73
+ for (const key of ["source", "check", "observed", "expected", "explanation"]) {
74
+ const problem = assertionFactProblem(value[key], `${path}.${key}`);
75
+ if (problem !== null)
76
+ return problem;
77
+ }
78
+ return null;
79
+ }
45
80
  /** AttemptAssertionView(compute.ts):sealed 断言 entry 的展示投影。 */
46
81
  function assertionViewProblem(value, path) {
47
82
  if (!(0, shared_ts_1.isObject)(value))
@@ -50,13 +85,17 @@ function assertionViewProblem(value, path) {
50
85
  return `"${path}.entryId" must be a string`;
51
86
  if (typeof value.name !== "string")
52
87
  return `"${path}.name" must be a string`;
53
- if (value.severity !== "gate" && value.severity !== "soft")
54
- return `"${path}.severity" must be "gate" or "soft"`;
88
+ if (value.severity !== "gate" && value.severity !== "recorded" && value.severity !== "soft") {
89
+ return `"${path}.severity" must be "gate" | "recorded" | "soft"`;
90
+ }
55
91
  if (value.outcome !== "passed" && value.outcome !== "failed" && value.outcome !== "unavailable") {
56
92
  return `"${path}.outcome" must be "passed" | "failed" | "unavailable"`;
57
93
  }
58
94
  if (typeof value.detail !== "string")
59
95
  return `"${path}.detail" must be a string`;
96
+ const evidenceProblem = assertionEvidenceProblem(value.evidence, `${path}.evidence`);
97
+ if (evidenceProblem !== null)
98
+ return evidenceProblem;
60
99
  if (!Array.isArray(value.groupPath) || !value.groupPath.every((segment) => typeof segment === "string")) {
61
100
  return `"${path}.groupPath" must be an array of strings`;
62
101
  }
@@ -66,10 +105,14 @@ function assertionViewProblem(value, path) {
66
105
  if (value.score.state !== "earned" && value.score.state !== "unavailable") {
67
106
  return `"${path}.score.state" must be "earned" | "unavailable"`;
68
107
  }
69
- if (typeof value.score.earned !== "number")
70
- return `"${path}.score.earned" must be a number`;
71
108
  if (typeof value.score.points !== "number")
72
109
  return `"${path}.score.points" must be a number`;
110
+ if (value.score.state === "earned" && typeof value.score.earned !== "number") {
111
+ return `"${path}.score.earned" must be a number for an earned contribution`;
112
+ }
113
+ if (value.score.state === "unavailable" && value.score.earned !== undefined) {
114
+ return `"${path}.score.earned" must be omitted for an unavailable contribution`;
115
+ }
73
116
  }
74
117
  return null;
75
118
  }