niceeval 0.13.2 → 0.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/dist/agents/bub.cjs +4 -4
  2. package/dist/agents/bub.cjs.map +1 -1
  3. package/dist/agents/bub.d.cts +2 -2
  4. package/dist/agents/bub.d.mts +2 -2
  5. package/dist/agents/bub.d.ts +2 -2
  6. package/dist/agents/claude-code-native.cjs +213 -0
  7. package/dist/agents/claude-code-native.cjs.map +1 -0
  8. package/dist/agents/claude-code-native.d.cts +5 -0
  9. package/dist/agents/claude-code-native.d.mts +5 -0
  10. package/dist/agents/claude-code-native.d.ts +5 -0
  11. package/dist/agents/claude-code-native.js +6 -0
  12. package/dist/agents/claude-code-native.js.map +1 -0
  13. package/dist/agents/claude-code.cjs +26 -80
  14. package/dist/agents/claude-code.cjs.map +1 -1
  15. package/dist/agents/codex-app-server.cjs +314 -0
  16. package/dist/agents/codex-app-server.cjs.map +1 -0
  17. package/dist/agents/codex-app-server.d.cts +9 -0
  18. package/dist/agents/codex-app-server.d.mts +9 -0
  19. package/dist/agents/codex-app-server.d.ts +9 -0
  20. package/dist/agents/codex-app-server.js +6 -0
  21. package/dist/agents/codex-app-server.js.map +1 -0
  22. package/dist/agents/codex.cjs +19 -68
  23. package/dist/agents/codex.cjs.map +1 -1
  24. package/dist/agents/codex.d.cts +3 -3
  25. package/dist/agents/codex.d.mts +3 -3
  26. package/dist/agents/codex.d.ts +3 -3
  27. package/dist/agents/index.cjs +3 -1
  28. package/dist/agents/index.cjs.map +1 -1
  29. package/dist/agents/index.d.cts +1 -0
  30. package/dist/agents/index.d.mts +1 -0
  31. package/dist/agents/index.d.ts +1 -0
  32. package/dist/agents/index.js +84 -82
  33. package/dist/agents/index.mjs +84 -82
  34. package/dist/agents/managed-jsonl.cjs +207 -0
  35. package/dist/agents/managed-jsonl.cjs.map +1 -0
  36. package/dist/agents/managed-jsonl.d.cts +39 -0
  37. package/dist/agents/managed-jsonl.d.mts +39 -0
  38. package/dist/agents/managed-jsonl.d.ts +39 -0
  39. package/dist/agents/managed-jsonl.js +6 -0
  40. package/dist/agents/managed-jsonl.js.map +1 -0
  41. package/dist/agents/managed-process.cjs +31 -0
  42. package/dist/agents/managed-process.cjs.map +1 -0
  43. package/dist/agents/managed-process.d.cts +3 -0
  44. package/dist/agents/managed-process.d.mts +3 -0
  45. package/dist/agents/managed-process.d.ts +3 -0
  46. package/dist/agents/managed-process.js +6 -0
  47. package/dist/agents/managed-process.js.map +1 -0
  48. package/dist/agents/omp.cjs +18 -1
  49. package/dist/agents/omp.cjs.map +1 -1
  50. package/dist/agents/sdk-streams.cjs +11 -4
  51. package/dist/agents/sdk-streams.cjs.map +1 -1
  52. package/dist/agents/types.cjs.map +1 -1
  53. package/dist/agents/types.d.cts +8 -0
  54. package/dist/agents/types.d.mts +8 -0
  55. package/dist/agents/types.d.ts +8 -0
  56. package/dist/analysis/bindings.cjs +74 -19
  57. package/dist/analysis/bindings.cjs.map +1 -1
  58. package/dist/analysis/bindings.d.cts +534 -156
  59. package/dist/analysis/bindings.d.mts +534 -156
  60. package/dist/analysis/bindings.d.ts +534 -156
  61. package/dist/analysis/domain-view.cjs.map +1 -1
  62. package/dist/analysis/domain-view.d.cts +137 -8
  63. package/dist/analysis/domain-view.d.mts +137 -8
  64. package/dist/analysis/domain-view.d.ts +137 -8
  65. package/dist/analysis/index.cjs.map +1 -1
  66. package/dist/analysis/index.d.cts +1 -1
  67. package/dist/analysis/index.d.mts +1 -1
  68. package/dist/analysis/index.d.ts +1 -1
  69. package/dist/assertions/api.cjs.map +1 -1
  70. package/dist/assertions/api.d.cts +62 -0
  71. package/dist/assertions/api.d.mts +62 -0
  72. package/dist/assertions/api.d.ts +62 -0
  73. package/dist/assertions/judge.cjs +56 -5
  74. package/dist/assertions/judge.cjs.map +1 -1
  75. package/dist/assertions/match.cjs +66 -42
  76. package/dist/assertions/match.cjs.map +1 -1
  77. package/dist/assertions/match.d.cts +13 -0
  78. package/dist/assertions/match.d.mts +13 -0
  79. package/dist/assertions/match.d.ts +13 -0
  80. package/dist/assertions/record/attachment.cjs +104 -33
  81. package/dist/assertions/record/attachment.cjs.map +1 -1
  82. package/dist/assertions/record/attachment.d.cts +294 -57
  83. package/dist/assertions/record/attachment.d.mts +294 -57
  84. package/dist/assertions/record/attachment.d.ts +294 -57
  85. package/dist/assertions/record/codec.cjs +91 -17
  86. package/dist/assertions/record/codec.cjs.map +1 -1
  87. package/dist/assertions/record/codec.d.cts +280 -52
  88. package/dist/assertions/record/codec.d.mts +280 -52
  89. package/dist/assertions/record/codec.d.ts +280 -52
  90. package/dist/assertions/record/index.js +2 -0
  91. package/dist/assertions/record/model.cjs +16 -0
  92. package/dist/assertions/record/model.cjs.map +1 -1
  93. package/dist/assertions/record/model.d.cts +120 -13
  94. package/dist/assertions/record/model.d.mts +120 -13
  95. package/dist/assertions/record/model.d.ts +120 -13
  96. package/dist/assertions/record/model.js +2 -0
  97. package/dist/assertions/record/producer.cjs +70 -50
  98. package/dist/assertions/record/producer.cjs.map +1 -1
  99. package/dist/assertions/record/producer.d.cts +8 -7
  100. package/dist/assertions/record/producer.d.mts +8 -7
  101. package/dist/assertions/record/producer.d.ts +8 -7
  102. package/dist/assertions/runtime.cjs +49 -7
  103. package/dist/assertions/runtime.cjs.map +1 -1
  104. package/dist/cli/application.cjs +40 -0
  105. package/dist/cli/application.cjs.map +1 -0
  106. package/dist/cli/application.d.cts +129 -0
  107. package/dist/cli/application.d.mts +129 -0
  108. package/dist/cli/application.d.ts +129 -0
  109. package/dist/cli/application.js +24 -0
  110. package/dist/cli/application.js.map +1 -0
  111. package/dist/cli/bootstrap.cjs +10 -4
  112. package/dist/cli/bootstrap.cjs.map +1 -1
  113. package/dist/cli/node-application.cjs +123 -0
  114. package/dist/cli/node-application.cjs.map +1 -0
  115. package/dist/cli/node-application.d.cts +14 -0
  116. package/dist/cli/node-application.d.mts +14 -0
  117. package/dist/cli/node-application.d.ts +14 -0
  118. package/dist/cli/node-application.js +26 -0
  119. package/dist/cli/node-application.js.map +1 -0
  120. package/dist/cli/program.cjs +2807 -0
  121. package/dist/cli/program.cjs.map +1 -0
  122. package/dist/cli/program.d.cts +352 -0
  123. package/dist/cli/program.d.mts +352 -0
  124. package/dist/cli/program.d.ts +352 -0
  125. package/dist/cli/program.js +36 -0
  126. package/dist/cli/program.js.map +1 -0
  127. package/dist/cli/project-configuration.cjs +134 -0
  128. package/dist/cli/project-configuration.cjs.map +1 -0
  129. package/dist/cli/project-configuration.d.cts +64 -0
  130. package/dist/cli/project-configuration.d.mts +64 -0
  131. package/dist/cli/project-configuration.d.ts +64 -0
  132. package/dist/cli/project-configuration.js +22 -0
  133. package/dist/cli/project-configuration.js.map +1 -0
  134. package/dist/cli/record.cjs +20 -4
  135. package/dist/cli/record.cjs.map +1 -1
  136. package/dist/cli/record.d.cts +3 -3
  137. package/dist/cli/record.d.mts +3 -3
  138. package/dist/cli/record.d.ts +3 -3
  139. package/dist/cli.cjs +19 -3130
  140. package/dist/cli.cjs.map +1 -1
  141. package/dist/cli.d.cts +2 -148
  142. package/dist/cli.d.mts +2 -148
  143. package/dist/cli.d.ts +2 -148
  144. package/dist/cli.js +22 -30
  145. package/dist/context/assert-first.cjs +21 -15
  146. package/dist/context/assert-first.cjs.map +1 -1
  147. package/dist/context/assert-first.d.cts +1 -0
  148. package/dist/context/assert-first.d.mts +1 -0
  149. package/dist/context/assert-first.d.ts +1 -0
  150. package/dist/context/attempt-resources.cjs +13 -0
  151. package/dist/context/attempt-resources.cjs.map +1 -0
  152. package/dist/context/attempt-resources.d.cts +3 -0
  153. package/dist/context/attempt-resources.d.mts +3 -0
  154. package/dist/context/attempt-resources.d.ts +3 -0
  155. package/dist/context/attempt-resources.js +8 -0
  156. package/dist/context/attempt-resources.js.map +1 -0
  157. package/dist/context/session.cjs +4 -3
  158. package/dist/context/session.cjs.map +1 -1
  159. package/dist/context/session.d.cts +1 -0
  160. package/dist/context/session.d.mts +1 -0
  161. package/dist/context/session.d.ts +1 -0
  162. package/dist/eval/record/verdict.cjs +3 -2
  163. package/dist/eval/record/verdict.cjs.map +1 -1
  164. package/dist/experiment/host/index.cjs +1 -6
  165. package/dist/experiment/host/index.cjs.map +1 -1
  166. package/dist/experiment/host/index.d.cts +1 -0
  167. package/dist/experiment/host/index.d.mts +1 -0
  168. package/dist/experiment/host/index.d.ts +1 -0
  169. package/dist/load-config.cjs +13 -4
  170. package/dist/load-config.cjs.map +1 -1
  171. package/dist/load-config.d.cts +4 -3
  172. package/dist/load-config.d.mts +4 -3
  173. package/dist/load-config.d.ts +4 -3
  174. package/dist/load-config.js +4 -2
  175. package/dist/o11y/parsers/codex.cjs +29 -7
  176. package/dist/o11y/parsers/codex.cjs.map +1 -1
  177. package/dist/record/codec/core.d.cts +0 -2
  178. package/dist/record/codec/core.d.mts +0 -2
  179. package/dist/record/codec/core.d.ts +0 -2
  180. package/dist/record/codec/identifiers.cjs +2 -3
  181. package/dist/record/codec/identifiers.cjs.map +1 -1
  182. package/dist/record/codec/identifiers.d.cts +1 -2
  183. package/dist/record/codec/identifiers.d.mts +1 -2
  184. package/dist/record/codec/identifiers.d.ts +1 -2
  185. package/dist/record/codec/identifiers.js +10 -12
  186. package/dist/record/codec/index.js +42 -44
  187. package/dist/record/definition/attachment.cjs +1 -0
  188. package/dist/record/definition/attachment.cjs.map +1 -1
  189. package/dist/record/definition/attachment.d.cts +14 -0
  190. package/dist/record/definition/attachment.d.mts +14 -0
  191. package/dist/record/definition/attachment.d.ts +14 -0
  192. package/dist/record/family/assertions-v1.cjs +104 -0
  193. package/dist/record/family/assertions-v1.cjs.map +1 -0
  194. package/dist/record/family/assertions-v1.d.cts +2 -0
  195. package/dist/record/family/assertions-v1.d.mts +2 -0
  196. package/dist/record/family/assertions-v1.d.ts +2 -0
  197. package/dist/record/family/assertions-v1.js +6 -0
  198. package/dist/record/family/assertions-v1.js.map +1 -0
  199. package/dist/record/family/assertions.cjs +16 -5
  200. package/dist/record/family/assertions.cjs.map +1 -1
  201. package/dist/record/family/assertions.d.cts +510 -56
  202. package/dist/record/family/assertions.d.mts +510 -56
  203. package/dist/record/family/assertions.d.ts +510 -56
  204. package/dist/record/family/assertions.js +14 -10
  205. package/dist/record/family/catalog.cjs +17 -1
  206. package/dist/record/family/catalog.cjs.map +1 -1
  207. package/dist/record/family/catalog.d.cts +1292 -104
  208. package/dist/record/family/catalog.d.mts +1292 -104
  209. package/dist/record/family/catalog.d.ts +1292 -104
  210. package/dist/record/family/catalog.js +22 -20
  211. package/dist/record/family/index.js +144 -138
  212. package/dist/record/family/observability-v1.cjs +5 -0
  213. package/dist/record/family/observability-v1.cjs.map +1 -1
  214. package/dist/record/family/observability.cjs +1 -1
  215. package/dist/record/family/observability.cjs.map +1 -1
  216. package/dist/record/host/runtime.cjs +323 -173
  217. package/dist/record/host/runtime.cjs.map +1 -1
  218. package/dist/record/host/types.cjs.map +1 -1
  219. package/dist/record/host/types.d.cts +9 -7
  220. package/dist/record/host/types.d.mts +9 -7
  221. package/dist/record/host/types.d.ts +9 -7
  222. package/dist/record/model/core.cjs.map +1 -1
  223. package/dist/record/model/core.d.cts +1 -2
  224. package/dist/record/model/core.d.mts +1 -2
  225. package/dist/record/model/core.d.ts +1 -2
  226. package/dist/record/model/definition.cjs +1 -2
  227. package/dist/record/model/definition.cjs.map +1 -1
  228. package/dist/record/model/definition.d.cts +1 -7
  229. package/dist/record/model/definition.d.mts +1 -7
  230. package/dist/record/model/definition.d.ts +1 -7
  231. package/dist/record/model/identifiers.cjs +2 -3
  232. package/dist/record/model/identifiers.cjs.map +1 -1
  233. package/dist/record/model/identifiers.d.cts +1 -3
  234. package/dist/record/model/identifiers.d.mts +1 -3
  235. package/dist/record/model/identifiers.d.ts +1 -3
  236. package/dist/record/model/identifiers.js +36 -38
  237. package/dist/record/model/index.js +60 -62
  238. package/dist/record/platform/node.cjs +17 -7
  239. package/dist/record/platform/node.cjs.map +1 -1
  240. package/dist/record/platform/services.cjs.map +1 -1
  241. package/dist/record/platform/services.d.cts +8 -3
  242. package/dist/record/platform/services.d.mts +8 -3
  243. package/dist/record/platform/services.d.ts +8 -3
  244. package/dist/record/reader/format.cjs +16 -65
  245. package/dist/record/reader/format.cjs.map +1 -1
  246. package/dist/record/reader/format.d.cts +5 -9
  247. package/dist/record/reader/format.d.mts +5 -9
  248. package/dist/record/reader/format.d.ts +5 -9
  249. package/dist/record/reader/index.js +10 -8
  250. package/dist/record/reader/runtime.cjs +63 -32
  251. package/dist/record/reader/runtime.cjs.map +1 -1
  252. package/dist/record/reader/runtime.d.cts +40 -4
  253. package/dist/record/reader/runtime.d.mts +40 -4
  254. package/dist/record/reader/runtime.d.ts +40 -4
  255. package/dist/record/reader/runtime.js +6 -4
  256. package/dist/report/assets/enhance.js +5 -5
  257. package/dist/report/assets/styles.css +190 -24
  258. package/dist/report/built-in/result-components.cjs +8 -5
  259. package/dist/report/built-in/result-components.cjs.map +1 -1
  260. package/dist/report/built-in/standard.cjs +3 -0
  261. package/dist/report/built-in/standard.cjs.map +1 -1
  262. package/dist/report/built-in/standard.d.cts +2 -0
  263. package/dist/report/built-in/standard.d.mts +2 -0
  264. package/dist/report/built-in/standard.d.ts +2 -0
  265. package/dist/report/client-dist/app.js +53 -0
  266. package/dist/report/components/attempt-detail/compute.cjs +108 -231
  267. package/dist/report/components/attempt-detail/compute.cjs.map +1 -1
  268. package/dist/report/components/attempt-detail/compute.d.cts +11 -45
  269. package/dist/report/components/attempt-detail/compute.d.mts +11 -45
  270. package/dist/report/components/attempt-detail/compute.d.ts +11 -45
  271. package/dist/report/components/attempt-detail/compute.js +2 -4
  272. package/dist/report/components/attempt-detail/content.cjs +4 -4
  273. package/dist/report/components/attempt-detail/content.cjs.map +1 -1
  274. package/dist/report/components/attempt-detail/validate.cjs +47 -4
  275. package/dist/report/components/attempt-detail/validate.cjs.map +1 -1
  276. package/dist/report/components/entity-lists/compute.cjs +9 -15
  277. package/dist/report/components/entity-lists/compute.cjs.map +1 -1
  278. package/dist/report/components/entity-lists/content.cjs +53 -40
  279. package/dist/report/components/entity-lists/content.cjs.map +1 -1
  280. package/dist/report/components/entity-lists/index.cjs +1 -3
  281. package/dist/report/components/entity-lists/index.cjs.map +1 -1
  282. package/dist/report/components/experiment-detail/compute.cjs +4 -6
  283. package/dist/report/components/experiment-detail/compute.cjs.map +1 -1
  284. package/dist/report/components/summaries/index.cjs +5 -1
  285. package/dist/report/components/summaries/index.cjs.map +1 -1
  286. package/dist/report/definition/cell.cjs +14 -7
  287. package/dist/report/definition/cell.cjs.map +1 -1
  288. package/dist/report/definition/cell.d.cts +4 -0
  289. package/dist/report/definition/cell.d.mts +4 -0
  290. package/dist/report/definition/cell.d.ts +4 -0
  291. package/dist/report/definition/primitives/assertion-evidence.cjs +96 -0
  292. package/dist/report/definition/primitives/assertion-evidence.cjs.map +1 -0
  293. package/dist/report/definition/primitives/assertion-evidence.d.cts +11 -0
  294. package/dist/report/definition/primitives/assertion-evidence.d.mts +11 -0
  295. package/dist/report/definition/primitives/assertion-evidence.d.ts +11 -0
  296. package/dist/report/definition/primitives/assertion-evidence.js +6 -0
  297. package/dist/report/definition/primitives/assertion-evidence.js.map +1 -0
  298. package/dist/report/definition/primitives/conversation.cjs +7 -0
  299. package/dist/report/definition/primitives/conversation.cjs.map +1 -1
  300. package/dist/report/definition/primitives/conversation.d.cts +2 -0
  301. package/dist/report/definition/primitives/conversation.d.mts +2 -0
  302. package/dist/report/definition/primitives/conversation.d.ts +2 -0
  303. package/dist/report/definition/primitives/turn-trace.cjs +53 -3
  304. package/dist/report/definition/primitives/turn-trace.cjs.map +1 -1
  305. package/dist/report/definition/primitives.cjs +14 -1
  306. package/dist/report/definition/primitives.cjs.map +1 -1
  307. package/dist/report/definition/report.cjs +16 -8
  308. package/dist/report/definition/report.cjs.map +1 -1
  309. package/dist/report/definition/report.d.cts +6 -0
  310. package/dist/report/definition/report.d.mts +6 -0
  311. package/dist/report/definition/report.d.ts +6 -0
  312. package/dist/report/definition/table-text.cjs +12 -3
  313. package/dist/report/definition/table-text.cjs.map +1 -1
  314. package/dist/report/definition/table-text.d.cts +6 -1
  315. package/dist/report/definition/table-text.d.mts +6 -1
  316. package/dist/report/definition/table-text.d.ts +6 -1
  317. package/dist/report/execution/model.cjs +6 -14
  318. package/dist/report/execution/model.cjs.map +1 -1
  319. package/dist/report/execution/model.d.cts +5 -10
  320. package/dist/report/execution/model.d.mts +5 -10
  321. package/dist/report/execution/model.d.ts +5 -10
  322. package/dist/report/execution/model.js +6 -6
  323. package/dist/report/execution/paths.cjs +0 -11
  324. package/dist/report/execution/paths.cjs.map +1 -1
  325. package/dist/report/execution/paths.d.cts +0 -1
  326. package/dist/report/execution/paths.d.mts +0 -1
  327. package/dist/report/execution/paths.d.ts +0 -1
  328. package/dist/report/execution/paths.js +6 -8
  329. package/dist/report/host/execute.cjs +13 -22
  330. package/dist/report/host/execute.cjs.map +1 -1
  331. package/dist/report/host/execute.d.cts +1 -4
  332. package/dist/report/host/execute.d.mts +1 -4
  333. package/dist/report/host/execute.d.ts +1 -4
  334. package/dist/report/host/from-record.cjs +3 -0
  335. package/dist/report/host/from-record.cjs.map +1 -1
  336. package/dist/report/host/from-record.d.cts +4 -1
  337. package/dist/report/host/from-record.d.mts +4 -1
  338. package/dist/report/host/from-record.d.ts +4 -1
  339. package/dist/report/host/site-assets.cjs +1 -2
  340. package/dist/report/host/site-assets.cjs.map +1 -1
  341. package/dist/report/host/site-assets.d.cts +0 -1
  342. package/dist/report/host/site-assets.d.mts +0 -1
  343. package/dist/report/host/site-assets.d.ts +0 -1
  344. package/dist/report/host/site-assets.js +2 -4
  345. package/dist/report/host/static.cjs +71 -346
  346. package/dist/report/host/static.cjs.map +1 -1
  347. package/dist/report/host/static.d.cts +1 -3
  348. package/dist/report/host/static.d.mts +1 -3
  349. package/dist/report/host/static.d.ts +1 -3
  350. package/dist/report/host/static.js +2 -2
  351. package/dist/report/host/view-session.cjs.map +1 -1
  352. package/dist/report/host/view-session.d.cts +1 -1
  353. package/dist/report/host/view-session.d.mts +1 -1
  354. package/dist/report/host/view-session.d.ts +1 -1
  355. package/dist/report/model/locale.cjs +1 -1
  356. package/dist/report/model/locale.cjs.map +1 -1
  357. package/dist/report/model/locale.d.cts +1 -1
  358. package/dist/report/model/locale.d.mts +1 -1
  359. package/dist/report/model/locale.d.ts +1 -1
  360. package/dist/report/model/pricing.cjs +2 -2
  361. package/dist/report/model/pricing.cjs.map +1 -1
  362. package/dist/report/react/enhance.js +5 -5
  363. package/dist/report/react/styles.css +190 -24
  364. package/dist/runner/adoption.cjs +4 -7
  365. package/dist/runner/adoption.cjs.map +1 -1
  366. package/dist/runner/attempt-resources.cjs +60 -0
  367. package/dist/runner/attempt-resources.cjs.map +1 -0
  368. package/dist/runner/attempt-resources.d.cts +13 -0
  369. package/dist/runner/attempt-resources.d.mts +13 -0
  370. package/dist/runner/attempt-resources.d.ts +13 -0
  371. package/dist/runner/attempt-resources.js +6 -0
  372. package/dist/runner/attempt-resources.js.map +1 -0
  373. package/dist/runner/attempt.cjs +37 -3
  374. package/dist/runner/attempt.cjs.map +1 -1
  375. package/dist/runner/feedback/failure.cjs +77 -2
  376. package/dist/runner/feedback/failure.cjs.map +1 -1
  377. package/dist/runner/feedback/failure.d.cts +2 -1
  378. package/dist/runner/feedback/failure.d.mts +2 -1
  379. package/dist/runner/feedback/failure.d.ts +2 -1
  380. package/dist/runner/project-current.cjs +2 -13
  381. package/dist/runner/project-current.cjs.map +1 -1
  382. package/dist/runner/project-current.d.cts +4 -2
  383. package/dist/runner/project-current.d.mts +4 -2
  384. package/dist/runner/project-current.d.ts +4 -2
  385. package/dist/runner/reporters/braintrust.cjs +7 -7
  386. package/dist/runner/reporters/braintrust.cjs.map +1 -1
  387. package/dist/runner/reuse-readback.cjs +3 -4
  388. package/dist/runner/reuse-readback.cjs.map +1 -1
  389. package/dist/runner/run.cjs +5 -2
  390. package/dist/runner/run.cjs.map +1 -1
  391. package/dist/sandbox/backend.cjs +32 -2
  392. package/dist/sandbox/backend.cjs.map +1 -1
  393. package/dist/sandbox/backend.d.cts +12 -1
  394. package/dist/sandbox/backend.d.mts +12 -1
  395. package/dist/sandbox/backend.d.ts +12 -1
  396. package/dist/sandbox/backend.js +28 -22
  397. package/dist/sandbox/docker.cjs +140 -0
  398. package/dist/sandbox/docker.cjs.map +1 -1
  399. package/dist/sandbox/docker.d.cts +3 -1
  400. package/dist/sandbox/docker.d.mts +3 -1
  401. package/dist/sandbox/docker.d.ts +3 -1
  402. package/dist/sandbox/e2b.cjs +42 -0
  403. package/dist/sandbox/e2b.cjs.map +1 -1
  404. package/dist/sandbox/e2b.d.cts +2 -0
  405. package/dist/sandbox/e2b.d.mts +2 -0
  406. package/dist/sandbox/e2b.d.ts +2 -0
  407. package/dist/sandbox/local.cjs +64 -0
  408. package/dist/sandbox/local.cjs.map +1 -1
  409. package/dist/sandbox/local.d.cts +3 -1
  410. package/dist/sandbox/local.d.mts +3 -1
  411. package/dist/sandbox/local.d.ts +3 -1
  412. package/dist/sandbox/managed-process.cjs +49 -0
  413. package/dist/sandbox/managed-process.cjs.map +1 -0
  414. package/dist/sandbox/managed-process.d.cts +11 -0
  415. package/dist/sandbox/managed-process.d.mts +11 -0
  416. package/dist/sandbox/managed-process.d.ts +11 -0
  417. package/dist/sandbox/managed-process.js +6 -0
  418. package/dist/sandbox/managed-process.js.map +1 -0
  419. package/dist/sandbox/types.cjs.map +1 -1
  420. package/dist/sandbox/types.d.cts +24 -0
  421. package/dist/sandbox/types.d.mts +24 -0
  422. package/dist/sandbox/types.d.ts +24 -0
  423. package/dist/sandbox/vercel.cjs +1 -0
  424. package/dist/sandbox/vercel.cjs.map +1 -1
  425. package/dist/sandbox/vercel.d.cts +1 -0
  426. package/dist/sandbox/vercel.d.mts +1 -0
  427. package/dist/sandbox/vercel.d.ts +1 -0
  428. package/dist/view/server.cjs +2 -37
  429. package/dist/view/server.cjs.map +1 -1
  430. package/dist/view/server.d.cts +0 -3
  431. package/dist/view/server.d.mts +0 -3
  432. package/dist/view/server.d.ts +0 -3
  433. package/docs-site/zh/reference/builtin-agents.mdx +7 -7
  434. package/docs-site/zh/reference/official-adapters.mdx +4 -4
  435. package/docs-site/zh/reference/report-components.mdx +2 -2
  436. package/docs-site/zh/tutorials/configuration.mdx +2 -2
  437. package/docs-site/zh/tutorials/deploy-report-site.mdx +24 -2
  438. package/docs-site/zh/tutorials/publish-report.mdx +4 -4
  439. package/docs-site/zh/tutorials/sandbox-agent.mdx +5 -5
  440. package/docs-site/zh/tutorials/theming.mdx +2 -2
  441. package/package.json +4 -6
  442. package/dist/record/migration/index.cjs +0 -5
  443. package/dist/record/migration/index.cjs.map +0 -1
  444. package/dist/record/migration/index.d.cts +0 -11
  445. package/dist/record/migration/index.d.mts +0 -11
  446. package/dist/record/migration/index.d.ts +0 -11
  447. package/dist/record/migration/index.js +0 -6
  448. package/dist/record/migration/index.js.map +0 -1
  449. package/dist/report/host/site-runtime.cjs +0 -92
  450. package/dist/report/host/site-runtime.cjs.map +0 -1
  451. package/dist/report/host/site-runtime.d.cts +0 -9
  452. package/dist/report/host/site-runtime.d.mts +0 -9
  453. package/dist/report/host/site-runtime.d.ts +0 -9
  454. package/dist/report/host/site-runtime.js +0 -10
  455. package/dist/report/host/site-runtime.js.map +0 -1
  456. package/dist/view/client-dist/app.css +0 -2
  457. package/dist/view/client-dist/app.js +0 -49
  458. package/dist/view/data.cjs +0 -3
  459. package/dist/view/data.cjs.map +0 -1
  460. package/dist/view/data.d.cts +0 -9
  461. package/dist/view/data.d.mts +0 -9
  462. package/dist/view/data.d.ts +0 -9
  463. package/dist/view/data.js +0 -4
  464. package/dist/view/data.js.map +0 -1
  465. package/dist/view/index.cjs +0 -24
  466. package/dist/view/index.cjs.map +0 -1
  467. package/dist/view/index.d.cts +0 -9
  468. package/dist/view/index.d.mts +0 -9
  469. package/dist/view/index.d.ts +0 -9
  470. package/dist/view/index.js +0 -28
  471. package/dist/view/index.js.map +0 -1
  472. package/dist/view/report-view-cache.cjs +0 -200
  473. package/dist/view/report-view-cache.cjs.map +0 -1
  474. package/dist/view/report-view-cache.d.cts +0 -67
  475. package/dist/view/report-view-cache.d.mts +0 -67
  476. package/dist/view/report-view-cache.d.ts +0 -67
  477. package/dist/view/report-view-cache.js +0 -8
  478. package/dist/view/report-view-cache.js.map +0 -1
  479. package/dist/view/shared/types.cjs +0 -3
  480. package/dist/view/shared/types.cjs.map +0 -1
  481. package/dist/view/shared/types.d.cts +0 -51
  482. package/dist/view/shared/types.d.mts +0 -51
  483. package/dist/view/shared/types.d.ts +0 -51
  484. package/dist/view/shared/types.js +0 -4
  485. package/dist/view/shared/types.js.map +0 -1
  486. package/dist/view/site.cjs +0 -32
  487. package/dist/view/site.cjs.map +0 -1
  488. package/dist/view/site.d.cts +0 -24
  489. package/dist/view/site.d.mts +0 -24
  490. package/dist/view/site.d.ts +0 -24
  491. package/dist/view/site.js +0 -8
  492. package/dist/view/site.js.map +0 -1
  493. package/dist/view/styles.css +0 -170
  494. package/dist/view/template.html +0 -17
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Platform-neutral CLI application contract. Command parsing, selection and
3
+ * presentation consume these capabilities; Node wiring lives only in the
4
+ * bootstrap adapter.
5
+ */
6
+ import { Context, Effect } from "effect";
7
+ import type { Config } from "../runner/types.cjs";
8
+ import type { FeedbackIO } from "../runner/feedback/io.cjs";
9
+ import type { InputGuardStdin } from "../runner/feedback/input-guard.cjs";
10
+ import type { ReportDefinition } from "../report/definition/report.cjs";
11
+ import type { ThemeDefinition } from "../report/theme.cjs";
12
+ import type { ConfigModuleLoadError, ProjectCredentialsFailure } from "./project-configuration.cjs";
13
+ export interface CliInvocation {
14
+ readonly cwd: string;
15
+ readonly argv: readonly string[];
16
+ readonly hostname: string;
17
+ readonly noColor?: string;
18
+ readonly platform: "darwin" | "win32" | "linux" | string;
19
+ readonly stdout: {
20
+ readonly isTTY: boolean;
21
+ readonly columns?: number;
22
+ };
23
+ readonly stderr: {
24
+ readonly isTTY: boolean;
25
+ readonly columns?: number;
26
+ };
27
+ }
28
+ export type CliOptionDefinition = Readonly<{
29
+ type: "string" | "boolean";
30
+ multiple?: true;
31
+ short?: string;
32
+ }>;
33
+ export interface CliParsedTokens {
34
+ readonly values: Record<string, string | boolean | string[] | undefined>;
35
+ readonly positionals: string[];
36
+ readonly tokens: readonly {
37
+ readonly kind: string;
38
+ readonly name?: string;
39
+ }[];
40
+ }
41
+ export interface CliArgumentsService {
42
+ readonly parse: (argv: readonly string[], options: Readonly<Record<string, CliOptionDefinition>>) => CliParsedTokens;
43
+ }
44
+ declare const CliArguments_base: Context.TagClass<CliArguments, "niceeval/cli/CliArguments", CliArgumentsService>;
45
+ export declare class CliArguments extends CliArguments_base {
46
+ }
47
+ declare const CliInvocationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
48
+ readonly _tag: "CliInvocationError";
49
+ } & Readonly<A>;
50
+ export declare class CliInvocationError extends CliInvocationError_base<{
51
+ readonly operation: string;
52
+ readonly cause: unknown;
53
+ }> {
54
+ }
55
+ export interface CliInvocationService {
56
+ readonly facts: Effect.Effect<CliInvocation, CliInvocationError>;
57
+ }
58
+ declare const CliInvocationFacts_base: Context.TagClass<CliInvocationFacts, "niceeval/cli/CliInvocationFacts", CliInvocationService>;
59
+ export declare class CliInvocationFacts extends CliInvocationFacts_base {
60
+ }
61
+ export interface CliOutputService {
62
+ readonly writeStdout: (text: string) => Effect.Effect<void, CliInvocationError>;
63
+ readonly writeStderr: (text: string) => Effect.Effect<void, CliInvocationError>;
64
+ /** Callback bridge for Host observer contracts that cannot return Effect. */
65
+ readonly writeStdoutSync: (text: string) => void;
66
+ readonly writeStderrSync: (text: string) => void;
67
+ }
68
+ declare const CliOutput_base: Context.TagClass<CliOutput, "niceeval/cli/CliOutput", CliOutputService>;
69
+ export declare class CliOutput extends CliOutput_base {
70
+ }
71
+ export interface ProjectInitializerService {
72
+ readonly initialize: (cwd: string) => Effect.Effect<{
73
+ readonly prefersEsm: boolean;
74
+ }, CliInvocationError>;
75
+ }
76
+ declare const ProjectInitializer_base: Context.TagClass<ProjectInitializer, "niceeval/cli/ProjectInitializer", ProjectInitializerService>;
77
+ export declare class ProjectInitializer extends ProjectInitializer_base {
78
+ }
79
+ export interface PackageMetadataService {
80
+ readonly version: Effect.Effect<string, CliInvocationError>;
81
+ }
82
+ declare const PackageMetadata_base: Context.TagClass<PackageMetadata, "niceeval/cli/PackageMetadata", PackageMetadataService>;
83
+ export declare class PackageMetadata extends PackageMetadata_base {
84
+ }
85
+ export interface BrowserLauncherService {
86
+ readonly open: (url: string) => Effect.Effect<boolean, CliInvocationError>;
87
+ }
88
+ declare const BrowserLauncher_base: Context.TagClass<BrowserLauncher, "niceeval/cli/BrowserLauncher", BrowserLauncherService>;
89
+ export declare class BrowserLauncher extends BrowserLauncher_base {
90
+ }
91
+ export interface CliPathService {
92
+ readonly resolve: (...parts: readonly string[]) => string;
93
+ readonly isAbsolute: (path: string) => boolean;
94
+ }
95
+ declare const CliPath_base: Context.TagClass<CliPath, "niceeval/cli/CliPath", CliPathService>;
96
+ export declare class CliPath extends CliPath_base {
97
+ }
98
+ export interface CliTerminalService {
99
+ readonly feedback: FeedbackIO;
100
+ readonly stdin: InputGuardStdin;
101
+ }
102
+ declare const CliTerminal_base: Context.TagClass<CliTerminal, "niceeval/cli/CliTerminal", CliTerminalService>;
103
+ export declare class CliTerminal extends CliTerminal_base {
104
+ }
105
+ export interface CliReportPlatformService {
106
+ readonly loadConfig: (cwd: string) => Effect.Effect<{
107
+ readonly report?: ReportDefinition;
108
+ readonly theme?: ThemeDefinition;
109
+ readonly watchInputs: readonly string[];
110
+ }, CliInvocationError>;
111
+ readonly loadReport: (path: string) => Effect.Effect<{
112
+ readonly report: ReportDefinition;
113
+ readonly watchInputs: readonly string[];
114
+ }, CliInvocationError>;
115
+ readonly loadTheme: (path: string) => Effect.Effect<{
116
+ readonly theme: ThemeDefinition;
117
+ readonly watchInputs: readonly string[];
118
+ }, CliInvocationError>;
119
+ readonly resolveModulePath: (cwd: string, value: string) => string;
120
+ }
121
+ declare const CliReportPlatform_base: Context.TagClass<CliReportPlatform, "niceeval/cli/CliReportPlatform", CliReportPlatformService>;
122
+ export declare class CliReportPlatform extends CliReportPlatform_base {
123
+ }
124
+ /** A narrow application facade; config always follows credential preparation. */
125
+ export interface ProjectConfigurationFacade {
126
+ readonly load: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
127
+ readonly rebuild: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
128
+ }
129
+ export {};
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Platform-neutral CLI application contract. Command parsing, selection and
3
+ * presentation consume these capabilities; Node wiring lives only in the
4
+ * bootstrap adapter.
5
+ */
6
+ import { Context, Effect } from "effect";
7
+ import type { Config } from "../runner/types.mjs";
8
+ import type { FeedbackIO } from "../runner/feedback/io.mjs";
9
+ import type { InputGuardStdin } from "../runner/feedback/input-guard.mjs";
10
+ import type { ReportDefinition } from "../report/definition/report.mjs";
11
+ import type { ThemeDefinition } from "../report/theme.mjs";
12
+ import type { ConfigModuleLoadError, ProjectCredentialsFailure } from "./project-configuration.mjs";
13
+ export interface CliInvocation {
14
+ readonly cwd: string;
15
+ readonly argv: readonly string[];
16
+ readonly hostname: string;
17
+ readonly noColor?: string;
18
+ readonly platform: "darwin" | "win32" | "linux" | string;
19
+ readonly stdout: {
20
+ readonly isTTY: boolean;
21
+ readonly columns?: number;
22
+ };
23
+ readonly stderr: {
24
+ readonly isTTY: boolean;
25
+ readonly columns?: number;
26
+ };
27
+ }
28
+ export type CliOptionDefinition = Readonly<{
29
+ type: "string" | "boolean";
30
+ multiple?: true;
31
+ short?: string;
32
+ }>;
33
+ export interface CliParsedTokens {
34
+ readonly values: Record<string, string | boolean | string[] | undefined>;
35
+ readonly positionals: string[];
36
+ readonly tokens: readonly {
37
+ readonly kind: string;
38
+ readonly name?: string;
39
+ }[];
40
+ }
41
+ export interface CliArgumentsService {
42
+ readonly parse: (argv: readonly string[], options: Readonly<Record<string, CliOptionDefinition>>) => CliParsedTokens;
43
+ }
44
+ declare const CliArguments_base: Context.TagClass<CliArguments, "niceeval/cli/CliArguments", CliArgumentsService>;
45
+ export declare class CliArguments extends CliArguments_base {
46
+ }
47
+ declare const CliInvocationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
48
+ readonly _tag: "CliInvocationError";
49
+ } & Readonly<A>;
50
+ export declare class CliInvocationError extends CliInvocationError_base<{
51
+ readonly operation: string;
52
+ readonly cause: unknown;
53
+ }> {
54
+ }
55
+ export interface CliInvocationService {
56
+ readonly facts: Effect.Effect<CliInvocation, CliInvocationError>;
57
+ }
58
+ declare const CliInvocationFacts_base: Context.TagClass<CliInvocationFacts, "niceeval/cli/CliInvocationFacts", CliInvocationService>;
59
+ export declare class CliInvocationFacts extends CliInvocationFacts_base {
60
+ }
61
+ export interface CliOutputService {
62
+ readonly writeStdout: (text: string) => Effect.Effect<void, CliInvocationError>;
63
+ readonly writeStderr: (text: string) => Effect.Effect<void, CliInvocationError>;
64
+ /** Callback bridge for Host observer contracts that cannot return Effect. */
65
+ readonly writeStdoutSync: (text: string) => void;
66
+ readonly writeStderrSync: (text: string) => void;
67
+ }
68
+ declare const CliOutput_base: Context.TagClass<CliOutput, "niceeval/cli/CliOutput", CliOutputService>;
69
+ export declare class CliOutput extends CliOutput_base {
70
+ }
71
+ export interface ProjectInitializerService {
72
+ readonly initialize: (cwd: string) => Effect.Effect<{
73
+ readonly prefersEsm: boolean;
74
+ }, CliInvocationError>;
75
+ }
76
+ declare const ProjectInitializer_base: Context.TagClass<ProjectInitializer, "niceeval/cli/ProjectInitializer", ProjectInitializerService>;
77
+ export declare class ProjectInitializer extends ProjectInitializer_base {
78
+ }
79
+ export interface PackageMetadataService {
80
+ readonly version: Effect.Effect<string, CliInvocationError>;
81
+ }
82
+ declare const PackageMetadata_base: Context.TagClass<PackageMetadata, "niceeval/cli/PackageMetadata", PackageMetadataService>;
83
+ export declare class PackageMetadata extends PackageMetadata_base {
84
+ }
85
+ export interface BrowserLauncherService {
86
+ readonly open: (url: string) => Effect.Effect<boolean, CliInvocationError>;
87
+ }
88
+ declare const BrowserLauncher_base: Context.TagClass<BrowserLauncher, "niceeval/cli/BrowserLauncher", BrowserLauncherService>;
89
+ export declare class BrowserLauncher extends BrowserLauncher_base {
90
+ }
91
+ export interface CliPathService {
92
+ readonly resolve: (...parts: readonly string[]) => string;
93
+ readonly isAbsolute: (path: string) => boolean;
94
+ }
95
+ declare const CliPath_base: Context.TagClass<CliPath, "niceeval/cli/CliPath", CliPathService>;
96
+ export declare class CliPath extends CliPath_base {
97
+ }
98
+ export interface CliTerminalService {
99
+ readonly feedback: FeedbackIO;
100
+ readonly stdin: InputGuardStdin;
101
+ }
102
+ declare const CliTerminal_base: Context.TagClass<CliTerminal, "niceeval/cli/CliTerminal", CliTerminalService>;
103
+ export declare class CliTerminal extends CliTerminal_base {
104
+ }
105
+ export interface CliReportPlatformService {
106
+ readonly loadConfig: (cwd: string) => Effect.Effect<{
107
+ readonly report?: ReportDefinition;
108
+ readonly theme?: ThemeDefinition;
109
+ readonly watchInputs: readonly string[];
110
+ }, CliInvocationError>;
111
+ readonly loadReport: (path: string) => Effect.Effect<{
112
+ readonly report: ReportDefinition;
113
+ readonly watchInputs: readonly string[];
114
+ }, CliInvocationError>;
115
+ readonly loadTheme: (path: string) => Effect.Effect<{
116
+ readonly theme: ThemeDefinition;
117
+ readonly watchInputs: readonly string[];
118
+ }, CliInvocationError>;
119
+ readonly resolveModulePath: (cwd: string, value: string) => string;
120
+ }
121
+ declare const CliReportPlatform_base: Context.TagClass<CliReportPlatform, "niceeval/cli/CliReportPlatform", CliReportPlatformService>;
122
+ export declare class CliReportPlatform extends CliReportPlatform_base {
123
+ }
124
+ /** A narrow application facade; config always follows credential preparation. */
125
+ export interface ProjectConfigurationFacade {
126
+ readonly load: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
127
+ readonly rebuild: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
128
+ }
129
+ export {};
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Platform-neutral CLI application contract. Command parsing, selection and
3
+ * presentation consume these capabilities; Node wiring lives only in the
4
+ * bootstrap adapter.
5
+ */
6
+ import { Context, Effect } from "effect";
7
+ import type { Config } from "../runner/types.js";
8
+ import type { FeedbackIO } from "../runner/feedback/io.js";
9
+ import type { InputGuardStdin } from "../runner/feedback/input-guard.js";
10
+ import type { ReportDefinition } from "../report/definition/report.js";
11
+ import type { ThemeDefinition } from "../report/theme.js";
12
+ import type { ConfigModuleLoadError, ProjectCredentialsFailure } from "./project-configuration.js";
13
+ export interface CliInvocation {
14
+ readonly cwd: string;
15
+ readonly argv: readonly string[];
16
+ readonly hostname: string;
17
+ readonly noColor?: string;
18
+ readonly platform: "darwin" | "win32" | "linux" | string;
19
+ readonly stdout: {
20
+ readonly isTTY: boolean;
21
+ readonly columns?: number;
22
+ };
23
+ readonly stderr: {
24
+ readonly isTTY: boolean;
25
+ readonly columns?: number;
26
+ };
27
+ }
28
+ export type CliOptionDefinition = Readonly<{
29
+ type: "string" | "boolean";
30
+ multiple?: true;
31
+ short?: string;
32
+ }>;
33
+ export interface CliParsedTokens {
34
+ readonly values: Record<string, string | boolean | string[] | undefined>;
35
+ readonly positionals: string[];
36
+ readonly tokens: readonly {
37
+ readonly kind: string;
38
+ readonly name?: string;
39
+ }[];
40
+ }
41
+ export interface CliArgumentsService {
42
+ readonly parse: (argv: readonly string[], options: Readonly<Record<string, CliOptionDefinition>>) => CliParsedTokens;
43
+ }
44
+ declare const CliArguments_base: Context.TagClass<CliArguments, "niceeval/cli/CliArguments", CliArgumentsService>;
45
+ export declare class CliArguments extends CliArguments_base {
46
+ }
47
+ declare const CliInvocationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
48
+ readonly _tag: "CliInvocationError";
49
+ } & Readonly<A>;
50
+ export declare class CliInvocationError extends CliInvocationError_base<{
51
+ readonly operation: string;
52
+ readonly cause: unknown;
53
+ }> {
54
+ }
55
+ export interface CliInvocationService {
56
+ readonly facts: Effect.Effect<CliInvocation, CliInvocationError>;
57
+ }
58
+ declare const CliInvocationFacts_base: Context.TagClass<CliInvocationFacts, "niceeval/cli/CliInvocationFacts", CliInvocationService>;
59
+ export declare class CliInvocationFacts extends CliInvocationFacts_base {
60
+ }
61
+ export interface CliOutputService {
62
+ readonly writeStdout: (text: string) => Effect.Effect<void, CliInvocationError>;
63
+ readonly writeStderr: (text: string) => Effect.Effect<void, CliInvocationError>;
64
+ /** Callback bridge for Host observer contracts that cannot return Effect. */
65
+ readonly writeStdoutSync: (text: string) => void;
66
+ readonly writeStderrSync: (text: string) => void;
67
+ }
68
+ declare const CliOutput_base: Context.TagClass<CliOutput, "niceeval/cli/CliOutput", CliOutputService>;
69
+ export declare class CliOutput extends CliOutput_base {
70
+ }
71
+ export interface ProjectInitializerService {
72
+ readonly initialize: (cwd: string) => Effect.Effect<{
73
+ readonly prefersEsm: boolean;
74
+ }, CliInvocationError>;
75
+ }
76
+ declare const ProjectInitializer_base: Context.TagClass<ProjectInitializer, "niceeval/cli/ProjectInitializer", ProjectInitializerService>;
77
+ export declare class ProjectInitializer extends ProjectInitializer_base {
78
+ }
79
+ export interface PackageMetadataService {
80
+ readonly version: Effect.Effect<string, CliInvocationError>;
81
+ }
82
+ declare const PackageMetadata_base: Context.TagClass<PackageMetadata, "niceeval/cli/PackageMetadata", PackageMetadataService>;
83
+ export declare class PackageMetadata extends PackageMetadata_base {
84
+ }
85
+ export interface BrowserLauncherService {
86
+ readonly open: (url: string) => Effect.Effect<boolean, CliInvocationError>;
87
+ }
88
+ declare const BrowserLauncher_base: Context.TagClass<BrowserLauncher, "niceeval/cli/BrowserLauncher", BrowserLauncherService>;
89
+ export declare class BrowserLauncher extends BrowserLauncher_base {
90
+ }
91
+ export interface CliPathService {
92
+ readonly resolve: (...parts: readonly string[]) => string;
93
+ readonly isAbsolute: (path: string) => boolean;
94
+ }
95
+ declare const CliPath_base: Context.TagClass<CliPath, "niceeval/cli/CliPath", CliPathService>;
96
+ export declare class CliPath extends CliPath_base {
97
+ }
98
+ export interface CliTerminalService {
99
+ readonly feedback: FeedbackIO;
100
+ readonly stdin: InputGuardStdin;
101
+ }
102
+ declare const CliTerminal_base: Context.TagClass<CliTerminal, "niceeval/cli/CliTerminal", CliTerminalService>;
103
+ export declare class CliTerminal extends CliTerminal_base {
104
+ }
105
+ export interface CliReportPlatformService {
106
+ readonly loadConfig: (cwd: string) => Effect.Effect<{
107
+ readonly report?: ReportDefinition;
108
+ readonly theme?: ThemeDefinition;
109
+ readonly watchInputs: readonly string[];
110
+ }, CliInvocationError>;
111
+ readonly loadReport: (path: string) => Effect.Effect<{
112
+ readonly report: ReportDefinition;
113
+ readonly watchInputs: readonly string[];
114
+ }, CliInvocationError>;
115
+ readonly loadTheme: (path: string) => Effect.Effect<{
116
+ readonly theme: ThemeDefinition;
117
+ readonly watchInputs: readonly string[];
118
+ }, CliInvocationError>;
119
+ readonly resolveModulePath: (cwd: string, value: string) => string;
120
+ }
121
+ declare const CliReportPlatform_base: Context.TagClass<CliReportPlatform, "niceeval/cli/CliReportPlatform", CliReportPlatformService>;
122
+ export declare class CliReportPlatform extends CliReportPlatform_base {
123
+ }
124
+ /** A narrow application facade; config always follows credential preparation. */
125
+ export interface ProjectConfigurationFacade {
126
+ readonly load: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
127
+ readonly rebuild: (cwd: string) => Effect.Effect<Config, ProjectCredentialsFailure | ConfigModuleLoadError>;
128
+ }
129
+ export {};
@@ -0,0 +1,24 @@
1
+ import { createRequire as __niceevalCreateRequire } from "node:module";
2
+ const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
+ const __niceevalCanonical = __niceevalRequire("./application.cjs");
4
+ const __niceevalExport0 = __niceevalCanonical["BrowserLauncher"];
5
+ export { __niceevalExport0 as BrowserLauncher };
6
+ const __niceevalExport1 = __niceevalCanonical["CliArguments"];
7
+ export { __niceevalExport1 as CliArguments };
8
+ const __niceevalExport2 = __niceevalCanonical["CliInvocationError"];
9
+ export { __niceevalExport2 as CliInvocationError };
10
+ const __niceevalExport3 = __niceevalCanonical["CliInvocationFacts"];
11
+ export { __niceevalExport3 as CliInvocationFacts };
12
+ const __niceevalExport4 = __niceevalCanonical["CliOutput"];
13
+ export { __niceevalExport4 as CliOutput };
14
+ const __niceevalExport5 = __niceevalCanonical["CliPath"];
15
+ export { __niceevalExport5 as CliPath };
16
+ const __niceevalExport6 = __niceevalCanonical["CliReportPlatform"];
17
+ export { __niceevalExport6 as CliReportPlatform };
18
+ const __niceevalExport7 = __niceevalCanonical["CliTerminal"];
19
+ export { __niceevalExport7 as CliTerminal };
20
+ const __niceevalExport8 = __niceevalCanonical["PackageMetadata"];
21
+ export { __niceevalExport8 as PackageMetadata };
22
+ const __niceevalExport9 = __niceevalCanonical["ProjectInitializer"];
23
+ export { __niceevalExport9 as ProjectInitializer };
24
+ //# sourceMappingURL=application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application.js","sources":[],"names":[],"mappings":""}
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  // The one application runtime boundary. Library and command modules return
4
4
  // Effect values; this file is the only place NiceEval starts a runtime.
5
5
  const effect_1 = require("effect");
6
- const cli_ts_1 = require("../cli.cjs");
6
+ const program_ts_1 = require("./program.cjs");
7
+ const node_application_ts_1 = require("./node-application.cjs");
8
+ const project_configuration_ts_1 = require("./project-configuration.cjs");
7
9
  const index_ts_1 = require("../record/index.cjs");
8
10
  let signalOwnership = "root";
9
11
  const invocationInterruption = new AbortController();
@@ -19,7 +21,11 @@ const interruption = {
19
21
  // the CLI preserve that Cause rather than start an Invocation underneath it.
20
22
  return signalOwnership !== "root-interrupted";
21
23
  },
24
+ requestInterrupt: () => process.emit("SIGINT"),
22
25
  };
26
+ // This is the only Node composition edge. The application layer itself keeps
27
+ // its two capability requirements visible and portable.
28
+ const NodeCliApplicationLive = project_configuration_ts_1.ProjectConfigurationLayer.pipe(effect_1.Layer.provide(project_configuration_ts_1.ProjectCredentialsLive), effect_1.Layer.provide(project_configuration_ts_1.ConfigModuleLoaderLive));
23
29
  const onInterrupt = (signal) => {
24
30
  if (signalOwnership === "root") {
25
31
  signalOwnership = "root-interrupted";
@@ -41,14 +47,14 @@ const onInterrupt = (signal) => {
41
47
  };
42
48
  process.on("SIGINT", onInterrupt);
43
49
  process.on("SIGTERM", onInterrupt);
44
- const application = effect_1.Effect.scoped((0, cli_ts_1.cliProgram)(interruption)).pipe(
50
+ const application = effect_1.Effect.scoped((0, program_ts_1.cliProgram)(interruption)).pipe(
45
51
  // Application bootstrap is the sole provider of concrete Node services.
46
52
  // Command and library modules retain their real requirements for callers.
47
- effect_1.Effect.provide(index_ts_1.NodeRecordLive),
53
+ effect_1.Effect.provide(index_ts_1.NodeRecordLive), effect_1.Effect.provide(NodeCliApplicationLive), effect_1.Effect.provide(node_application_ts_1.NodeCliPlatformLive),
48
54
  // Typed CLI failures are expected, user-actionable outcomes. They become an
49
55
  // ordinary process status after their message has been written once.
50
56
  effect_1.Effect.catchAll((failure) => effect_1.Effect.sync(() => {
51
- process.stderr.write((0, cli_ts_1.renderCliFailure)(failure));
57
+ process.stderr.write((0, program_ts_1.renderCliFailure)(failure));
52
58
  return failure.exitCode;
53
59
  })),
54
60
  // A normal nonzero command result must flush through Node naturally; do not
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["// The one application runtime boundary. Library and command modules return\n// Effect values; this file is the only place NiceEval starts a runtime.\nimport { Cause, Effect, Exit } from \"effect\";\nimport { cliProgram, renderCliFailure, type CliInterruptionOwnership } from \"../cli.ts\";\nimport { NodeRecordLive } from \"../record/index.ts\";\n// There is exactly one synchronous ownership state for the first signal. Node\n// invokes both signal handlers and Effect continuations serially, so the CLI's\n// hand-off cannot race a SIGINT into an unowned interval:\n//\n// root -> root-interrupted (interrupt the application fiber)\n// root -> graceful-dispatch (CLI is about to call runEvals)\n// graceful-dispatch -> graceful-aborted (abort only the Invocation signal)\n//\n// Graceful ownership is deliberately one-way. Returning it after `runEvals`\n// would create a second boundary where a first signal could miss both the\n// durable closure and root interruption.\ntype SignalOwnership = \"root\" | \"root-interrupted\" | \"graceful-dispatch\" | \"graceful-aborted\";\nlet signalOwnership: SignalOwnership = \"root\";\nconst invocationInterruption = new AbortController();\nlet fiber: ReturnType<typeof Effect.runFork> | undefined;\nconst interruption: CliInterruptionOwnership = {\n invocationSignal: invocationInterruption.signal,\n enterGracefulDispatch: () => {\n if (signalOwnership === \"root\") {\n signalOwnership = \"graceful-dispatch\";\n return true;\n }\n // A root-owned first signal has already scheduled root interruption. Let\n // the CLI preserve that Cause rather than start an Invocation underneath it.\n return signalOwnership !== \"root-interrupted\";\n },\n};\nconst onInterrupt = (signal: NodeJS.Signals): void => {\n if (signalOwnership === \"root\") {\n signalOwnership = \"root-interrupted\";\n fiber?.unsafeInterruptAsFork(fiber.id());\n return;\n }\n if (signalOwnership === \"graceful-dispatch\") {\n signalOwnership = \"graceful-aborted\";\n invocationInterruption.abort();\n return;\n }\n // Keep this listener through the first-signal drain: libuv may already have\n // captured a second signal before the first handler runs. On escalation,\n // remove it and re-raise that exact OS signal so default forced termination\n // cannot become a queued no-op.\n process.removeListener(\"SIGINT\", onInterrupt);\n process.removeListener(\"SIGTERM\", onInterrupt);\n process.kill(process.pid, signal);\n};\nprocess.on(\"SIGINT\", onInterrupt);\nprocess.on(\"SIGTERM\", onInterrupt);\nconst application = Effect.scoped(cliProgram(interruption)).pipe(\n// Application bootstrap is the sole provider of concrete Node services.\n// Command and library modules retain their real requirements for callers.\nEffect.provide(NodeRecordLive), \n// Typed CLI failures are expected, user-actionable outcomes. They become an\n// ordinary process status after their message has been written once.\nEffect.catchAll((failure) => Effect.sync(() => {\n process.stderr.write(renderCliFailure(failure));\n return failure.exitCode;\n})), \n// A normal nonzero command result must flush through Node naturally; do not\n// use process.exit and skip Scope finalizers or piped stdout.\nEffect.tap((exitCode) => Effect.sync(() => {\n process.exitCode = exitCode;\n})), Effect.asVoid, \n// Defects remain defects and interruption remains interruption. Suppress\n// platform's generic logger so the CLI keeps its existing user-facing form.\nEffect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause)\n ? Effect.void\n : Effect.sync(() => process.stderr.write(`niceeval error:\\n${Cause.pretty(cause)}\\n`))));\n// Match NodeRuntime.runMain's liveness contract: an Effect.async boundary may\n// be awaiting a callback that owns no Node event-loop handle of its own.\nconst keepAlive = setInterval(() => { }, 2 ** 31 - 1);\nfiber = Effect.runFork(application);\n// A signal cannot normally interleave with this synchronous bootstrap, but\n// retaining the state makes that startup edge explicit and lossless as well.\nconst interruptRootIfPending = (): void => {\n if (signalOwnership !== \"root-interrupted\" || fiber === undefined)\n return;\n fiber.unsafeInterruptAsFork(fiber.id());\n};\ninterruptRootIfPending();\nfiber.addObserver((exit) => {\n clearInterval(keepAlive);\n process.removeListener(\"SIGINT\", onInterrupt);\n process.removeListener(\"SIGTERM\", onInterrupt);\n if (Exit.isFailure(exit)) {\n // Scope finalizers have settled before an observer sees the Exit. Typed\n // CLI failures already became a successful numeric result above; only a\n // real unhandled interruption receives 130, and defects remain exit 2.\n process.exitCode = Cause.isInterruptedOnly(exit.cause) ? 130 : 2;\n }\n});\n"]}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["bootstrap.ts"],"names":[],"mappings":"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","sourcesContent":["// The one application runtime boundary. Library and command modules return\n// Effect values; this file is the only place NiceEval starts a runtime.\nimport { Cause, Effect, Exit, Layer } from \"effect\";\nimport { cliProgram, renderCliFailure, type CliInterruptionOwnership } from \"./program.ts\";\nimport { NodeCliPlatformLive } from \"./node-application.ts\";\nimport { ConfigModuleLoaderLive, ProjectConfigurationLayer, ProjectCredentialsLive } from \"./project-configuration.ts\";\nimport { NodeRecordLive } from \"../record/index.ts\";\n// There is exactly one synchronous ownership state for the first signal. Node\n// invokes both signal handlers and Effect continuations serially, so the CLI's\n// hand-off cannot race a SIGINT into an unowned interval:\n//\n// root -> root-interrupted (interrupt the application fiber)\n// root -> graceful-dispatch (CLI is about to call runEvals)\n// graceful-dispatch -> graceful-aborted (abort only the Invocation signal)\n//\n// Graceful ownership is deliberately one-way. Returning it after `runEvals`\n// would create a second boundary where a first signal could miss both the\n// durable closure and root interruption.\ntype SignalOwnership = \"root\" | \"root-interrupted\" | \"graceful-dispatch\" | \"graceful-aborted\";\nlet signalOwnership: SignalOwnership = \"root\";\nconst invocationInterruption = new AbortController();\nlet fiber: ReturnType<typeof Effect.runFork> | undefined;\nconst interruption: CliInterruptionOwnership = {\n invocationSignal: invocationInterruption.signal,\n enterGracefulDispatch: () => {\n if (signalOwnership === \"root\") {\n signalOwnership = \"graceful-dispatch\";\n return true;\n }\n // A root-owned first signal has already scheduled root interruption. Let\n // the CLI preserve that Cause rather than start an Invocation underneath it.\n return signalOwnership !== \"root-interrupted\";\n },\n requestInterrupt: () => process.emit(\"SIGINT\"),\n};\n// This is the only Node composition edge. The application layer itself keeps\n// its two capability requirements visible and portable.\nconst NodeCliApplicationLive = ProjectConfigurationLayer.pipe(Layer.provide(ProjectCredentialsLive), Layer.provide(ConfigModuleLoaderLive));\nconst onInterrupt = (signal: NodeJS.Signals): void => {\n if (signalOwnership === \"root\") {\n signalOwnership = \"root-interrupted\";\n fiber?.unsafeInterruptAsFork(fiber.id());\n return;\n }\n if (signalOwnership === \"graceful-dispatch\") {\n signalOwnership = \"graceful-aborted\";\n invocationInterruption.abort();\n return;\n }\n // Keep this listener through the first-signal drain: libuv may already have\n // captured a second signal before the first handler runs. On escalation,\n // remove it and re-raise that exact OS signal so default forced termination\n // cannot become a queued no-op.\n process.removeListener(\"SIGINT\", onInterrupt);\n process.removeListener(\"SIGTERM\", onInterrupt);\n process.kill(process.pid, signal);\n};\nprocess.on(\"SIGINT\", onInterrupt);\nprocess.on(\"SIGTERM\", onInterrupt);\nconst application = Effect.scoped(cliProgram(interruption)).pipe(\n// Application bootstrap is the sole provider of concrete Node services.\n// Command and library modules retain their real requirements for callers.\nEffect.provide(NodeRecordLive), Effect.provide(NodeCliApplicationLive), Effect.provide(NodeCliPlatformLive), \n// Typed CLI failures are expected, user-actionable outcomes. They become an\n// ordinary process status after their message has been written once.\nEffect.catchAll((failure) => Effect.sync(() => {\n process.stderr.write(renderCliFailure(failure));\n return failure.exitCode;\n})), \n// A normal nonzero command result must flush through Node naturally; do not\n// use process.exit and skip Scope finalizers or piped stdout.\nEffect.tap((exitCode) => Effect.sync(() => {\n process.exitCode = exitCode;\n})), Effect.asVoid, \n// Defects remain defects and interruption remains interruption. Suppress\n// platform's generic logger so the CLI keeps its existing user-facing form.\nEffect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause)\n ? Effect.void\n : Effect.sync(() => process.stderr.write(`niceeval error:\\n${Cause.pretty(cause)}\\n`))));\n// Match NodeRuntime.runMain's liveness contract: an Effect.async boundary may\n// be awaiting a callback that owns no Node event-loop handle of its own.\nconst keepAlive = setInterval(() => { }, 2 ** 31 - 1);\nfiber = Effect.runFork(application);\n// A signal cannot normally interleave with this synchronous bootstrap, but\n// retaining the state makes that startup edge explicit and lossless as well.\nconst interruptRootIfPending = (): void => {\n if (signalOwnership !== \"root-interrupted\" || fiber === undefined)\n return;\n fiber.unsafeInterruptAsFork(fiber.id());\n};\ninterruptRootIfPending();\nfiber.addObserver((exit) => {\n clearInterval(keepAlive);\n process.removeListener(\"SIGINT\", onInterrupt);\n process.removeListener(\"SIGTERM\", onInterrupt);\n if (Exit.isFailure(exit)) {\n // Scope finalizers have settled before an observer sees the Exit. Typed\n // CLI failures already became a successful numeric result above; only a\n // real unhandled interruption receives 130, and defects remain exit 2.\n process.exitCode = Cause.isInterruptedOnly(exit.cause) ? 130 : 2;\n }\n});\n"]}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ const { pathToFileURL: __niceevalPathToFileURL } = require("node:url");
3
+ const __niceevalImportMetaUrl = __niceevalPathToFileURL(__filename).href;
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.NodeCliPlatformLive = exports.NodeProjectInitializerLive = exports.NodeBrowserLauncherLive = exports.NodePackageMetadataLive = exports.NodeReportFileSystemLive = exports.NodeCliReportPlatformLive = exports.NodeCliTerminalLive = exports.NodeCliPathLive = exports.NodeCliArgumentsLive = exports.NodeCliOutputLive = exports.NodeInvocationFactsLive = void 0;
6
+ const node_child_process_1 = require("node:child_process");
7
+ const node_fs_1 = require("node:fs");
8
+ const promises_1 = require("node:fs/promises");
9
+ const node_os_1 = require("node:os");
10
+ const node_path_1 = require("node:path");
11
+ const node_util_1 = require("node:util");
12
+ const effect_1 = require("effect");
13
+ const util_ts_1 = require("../util.cjs");
14
+ const application_ts_1 = require("./application.cjs");
15
+ const io_ts_1 = require("../runner/feedback/io.cjs");
16
+ const input_guard_ts_1 = require("../runner/feedback/input-guard.cjs");
17
+ const node_ts_1 = require("../report/host/node.cjs");
18
+ const static_ts_1 = require("../report/host/static.cjs");
19
+ const failure = (operation, cause) => new application_ts_1.CliInvocationError({ operation, cause });
20
+ exports.NodeInvocationFactsLive = effect_1.Layer.succeed(application_ts_1.CliInvocationFacts, {
21
+ facts: effect_1.Effect.sync(() => Object.freeze({
22
+ cwd: process.cwd(), argv: Object.freeze(process.argv.slice(2)), hostname: (0, node_os_1.hostname)(), platform: process.platform,
23
+ noColor: process.env.NO_COLOR,
24
+ stdout: Object.freeze({ isTTY: process.stdout.isTTY === true, columns: process.stdout.columns }),
25
+ stderr: Object.freeze({ isTTY: process.stderr.isTTY === true, columns: process.stderr.columns }),
26
+ })),
27
+ });
28
+ exports.NodeCliOutputLive = effect_1.Layer.succeed(application_ts_1.CliOutput, {
29
+ writeStdout: (text) => effect_1.Effect.try({ try: () => { process.stdout.write(text); }, catch: (cause) => failure("write-stdout", cause) }),
30
+ writeStderr: (text) => effect_1.Effect.try({ try: () => { process.stderr.write(text); }, catch: (cause) => failure("write-stderr", cause) }),
31
+ writeStdoutSync: (text) => { process.stdout.write(text); },
32
+ writeStderrSync: (text) => { process.stderr.write(text); },
33
+ });
34
+ exports.NodeCliArgumentsLive = effect_1.Layer.succeed(application_ts_1.CliArguments, {
35
+ parse: (argv, options) => {
36
+ const parsed = (0, node_util_1.parseArgs)({ args: [...argv], options, allowPositionals: true, strict: true, tokens: true });
37
+ return { values: parsed.values, positionals: parsed.positionals, tokens: parsed.tokens };
38
+ },
39
+ });
40
+ exports.NodeCliPathLive = effect_1.Layer.succeed(application_ts_1.CliPath, { resolve: node_path_1.resolve, isAbsolute: node_path_1.isAbsolute });
41
+ exports.NodeCliTerminalLive = effect_1.Layer.sync(application_ts_1.CliTerminal, () => ({ feedback: (0, io_ts_1.createNodeFeedbackIO)(), stdin: (0, input_guard_ts_1.createNodeInputGuardStdin)() }));
42
+ exports.NodeCliReportPlatformLive = effect_1.Layer.succeed(application_ts_1.CliReportPlatform, {
43
+ loadConfig: (cwd) => (0, node_ts_1.loadTrustedReportConfig)(cwd).pipe(effect_1.Effect.mapError((cause) => failure("load-report-config", cause))),
44
+ loadReport: (path) => (0, node_ts_1.loadTrustedReportModule)(path).pipe(effect_1.Effect.mapError((cause) => failure("load-report-module", cause))),
45
+ loadTheme: (path) => (0, node_ts_1.loadTrustedThemeModule)(path).pipe(effect_1.Effect.mapError((cause) => failure("load-theme-module", cause))),
46
+ resolveModulePath: node_ts_1.resolveTrustedModulePath,
47
+ });
48
+ exports.NodeReportFileSystemLive = effect_1.Layer.succeed(static_ts_1.ReportFileSystem, (0, node_ts_1.makeNodeReportFileSystem)());
49
+ exports.NodePackageMetadataLive = effect_1.Layer.succeed(application_ts_1.PackageMetadata, {
50
+ version: effect_1.Effect.tryPromise({
51
+ try: async () => JSON.parse(await (0, promises_1.readFile)(new URL("../../package.json", __niceevalImportMetaUrl), "utf8")).version,
52
+ catch: (cause) => failure("read-package-metadata", cause),
53
+ }),
54
+ });
55
+ exports.NodeBrowserLauncherLive = effect_1.Layer.succeed(application_ts_1.BrowserLauncher, {
56
+ open: (url) => effect_1.Effect.async((resume) => {
57
+ const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
58
+ const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
59
+ let settled = false;
60
+ const finish = (opened) => {
61
+ if (!settled) {
62
+ settled = true;
63
+ clearTimeout(timer);
64
+ resume(effect_1.Effect.succeed(opened));
65
+ }
66
+ };
67
+ const child = (0, node_child_process_1.spawn)(command, args, { detached: true, stdio: "ignore" });
68
+ const timer = setTimeout(() => finish(true), 1500);
69
+ child.once("error", () => finish(false));
70
+ child.once("exit", (code) => finish(code === 0));
71
+ child.unref();
72
+ }),
73
+ });
74
+ const RULE_BEGIN = "<!-- BEGIN:niceeval-agent-rules -->";
75
+ const RULE_END = "<!-- END:niceeval-agent-rules -->";
76
+ const RULE_CONTENT = [
77
+ "# niceeval is NOT in your training data", "", "Its APIs and conventions may differ from anything you have seen. Start with",
78
+ "`node_modules/niceeval/INDEX.md`, then read the task-specific bundled guides it points", "to before writing any eval, experiment, adapter, or niceeval config. That index and",
79
+ "the bundled Chinese docs are the authoritative version matching this installation.", "After a run, use this repository's package-manager invocation of `niceeval show` for",
80
+ "diagnosis (`pnpm --silent exec niceeval show` in a pnpm project). Pick an `@<locator>`", "from the compact index, then show that locator for an overview, or add",
81
+ "`--source` / `--execution` / `--timing` / `--diff` / `--json` for evidence.", "When diagnosing an existing run, do not inspect raw `.niceeval` files or treat the current",
82
+ "`evals/` or `agents/` source as evidence of what happened in that run. If `niceeval show`", "cannot expose the evidence you need, report that product gap. Reading source remains",
83
+ "appropriate when the task is to author or modify that source.",
84
+ ].join("\n");
85
+ function prefersEsm(cwd) {
86
+ let directory = (0, node_path_1.resolve)(cwd);
87
+ while (true) {
88
+ const manifest = (0, node_path_1.join)(directory, "package.json");
89
+ if ((0, node_fs_1.existsSync)(manifest)) {
90
+ try {
91
+ return JSON.parse((0, node_fs_1.readFileSync)(manifest, "utf8")).type === "module";
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ const parent = (0, node_path_1.dirname)(directory);
98
+ if (parent === directory)
99
+ return false;
100
+ directory = parent;
101
+ }
102
+ }
103
+ exports.NodeProjectInitializerLive = effect_1.Layer.succeed(application_ts_1.ProjectInitializer, {
104
+ initialize: (cwd) => effect_1.Effect.tryPromise({
105
+ try: async () => {
106
+ await (0, promises_1.mkdir)((0, node_path_1.join)(cwd, "evals"), { recursive: true });
107
+ const configPath = (0, node_path_1.join)(cwd, "niceeval.config.ts");
108
+ if (!(0, node_fs_1.existsSync)(configPath))
109
+ await (0, promises_1.writeFile)(configPath, 'import { defineConfig } from "niceeval";\n\nexport default defineConfig({\n // Add experiments/ with defineExperiment(...) to run evals.\n});\n', "utf8");
110
+ const agents = (0, node_path_1.join)(cwd, "AGENTS.md");
111
+ const claude = (0, node_path_1.join)(cwd, "CLAUDE.md");
112
+ const doc = (0, node_fs_1.existsSync)(agents) ? agents : (0, node_fs_1.existsSync)(claude) ? claude : agents;
113
+ const existing = (0, node_fs_1.existsSync)(doc) ? await (0, promises_1.readFile)(doc, "utf8") : "";
114
+ const next = (0, util_ts_1.upsertManagedBlock)(existing, RULE_BEGIN, RULE_END, RULE_CONTENT);
115
+ if (next !== existing)
116
+ await (0, promises_1.writeFile)(doc, next, "utf8");
117
+ return { prefersEsm: prefersEsm(cwd) };
118
+ },
119
+ catch: (cause) => failure("initialize-project", cause),
120
+ }),
121
+ });
122
+ exports.NodeCliPlatformLive = effect_1.Layer.mergeAll(exports.NodeInvocationFactsLive, exports.NodeCliOutputLive, exports.NodeCliArgumentsLive, exports.NodeCliPathLive, exports.NodeCliTerminalLive, exports.NodeCliReportPlatformLive, exports.NodeReportFileSystemLive, exports.NodePackageMetadataLive, exports.NodeBrowserLauncherLive, exports.NodeProjectInitializerLive);
123
+ //# sourceMappingURL=node-application.cjs.map