@aigne/cli 1.60.0-beta → 1.74.0-beta

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 (360) hide show
  1. package/README.md +12 -12
  2. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  3. package/dist/bunwrapper.cjs +22 -0
  4. package/dist/bunwrapper.d.cts +1 -0
  5. package/dist/bunwrapper.d.mts +1 -0
  6. package/dist/bunwrapper.mjs +23 -0
  7. package/dist/bunwrapper.mjs.map +1 -0
  8. package/dist/cli.cjs +42 -0
  9. package/dist/cli.d.cts +9 -0
  10. package/dist/cli.d.cts.map +1 -0
  11. package/dist/cli.d.mts +10 -0
  12. package/dist/cli.d.mts.map +1 -0
  13. package/dist/cli.mjs +41 -0
  14. package/dist/cli.mjs.map +1 -0
  15. package/dist/commands/aigne.cjs +23 -0
  16. package/dist/commands/aigne.mjs +22 -0
  17. package/dist/commands/aigne.mjs.map +1 -0
  18. package/dist/commands/app/agent.cjs +117 -0
  19. package/dist/commands/app/agent.mjs +113 -0
  20. package/dist/commands/app/agent.mjs.map +1 -0
  21. package/dist/commands/app/app.cjs +92 -0
  22. package/dist/commands/app/app.mjs +90 -0
  23. package/dist/commands/app/app.mjs.map +1 -0
  24. package/dist/commands/app/cli.cjs +6 -0
  25. package/dist/commands/app/cli.d.cts +1 -0
  26. package/dist/commands/app/cli.d.mts +1 -0
  27. package/dist/commands/app/cli.mjs +8 -0
  28. package/dist/commands/app/cli.mjs.map +1 -0
  29. package/dist/commands/app/upgrade.cjs +243 -0
  30. package/dist/commands/app/upgrade.mjs +240 -0
  31. package/dist/commands/app/upgrade.mjs.map +1 -0
  32. package/dist/commands/app.cjs +53 -0
  33. package/dist/commands/app.mjs +53 -0
  34. package/dist/commands/app.mjs.map +1 -0
  35. package/dist/commands/create.cjs +66 -0
  36. package/dist/commands/create.mjs +65 -0
  37. package/dist/commands/create.mjs.map +1 -0
  38. package/dist/commands/deploy.cjs +237 -0
  39. package/dist/commands/deploy.mjs +237 -0
  40. package/dist/commands/deploy.mjs.map +1 -0
  41. package/dist/commands/eval.cjs +88 -0
  42. package/dist/commands/eval.mjs +88 -0
  43. package/dist/commands/eval.mjs.map +1 -0
  44. package/dist/commands/hub.cjs +297 -0
  45. package/dist/commands/hub.mjs +294 -0
  46. package/dist/commands/hub.mjs.map +1 -0
  47. package/dist/commands/observe.cjs +49 -0
  48. package/dist/commands/observe.mjs +46 -0
  49. package/dist/commands/observe.mjs.map +1 -0
  50. package/dist/commands/run-skill.cjs +84 -0
  51. package/dist/commands/run-skill.mjs +81 -0
  52. package/dist/commands/run-skill.mjs.map +1 -0
  53. package/dist/commands/run.cjs +172 -0
  54. package/dist/commands/run.mjs +171 -0
  55. package/dist/commands/run.mjs.map +1 -0
  56. package/dist/commands/serve-mcp.cjs +68 -0
  57. package/dist/commands/serve-mcp.mjs +67 -0
  58. package/dist/commands/serve-mcp.mjs.map +1 -0
  59. package/dist/commands/test.cjs +40 -0
  60. package/dist/commands/test.mjs +39 -0
  61. package/dist/commands/test.mjs.map +1 -0
  62. package/dist/constants.cjs +28 -0
  63. package/dist/constants.d.cts +9 -0
  64. package/dist/constants.d.cts.map +1 -0
  65. package/dist/constants.d.mts +9 -0
  66. package/dist/constants.d.mts.map +1 -0
  67. package/dist/constants.mjs +24 -0
  68. package/dist/constants.mjs.map +1 -0
  69. package/dist/global.d.cjs +0 -0
  70. package/dist/global.d.cts +6 -0
  71. package/dist/global.d.cts.map +1 -0
  72. package/dist/global.d.mts +6 -0
  73. package/dist/global.d.mts.map +1 -0
  74. package/dist/index.cjs +0 -0
  75. package/dist/index.d.cts +2 -0
  76. package/dist/index.d.mts +2 -0
  77. package/dist/index.mjs +1 -0
  78. package/dist/tracer/terminal.cjs +336 -0
  79. package/dist/tracer/terminal.mjs +332 -0
  80. package/dist/tracer/terminal.mjs.map +1 -0
  81. package/dist/type.cjs +0 -0
  82. package/dist/type.d.cts +10 -0
  83. package/dist/type.d.cts.map +1 -0
  84. package/dist/type.d.mts +10 -0
  85. package/dist/type.d.mts.map +1 -0
  86. package/dist/type.mjs +1 -0
  87. package/dist/ui/utils/terminal-input.cjs +145 -0
  88. package/dist/ui/utils/terminal-input.mjs +144 -0
  89. package/dist/ui/utils/terminal-input.mjs.map +1 -0
  90. package/dist/ui/utils/text-buffer.cjs +865 -0
  91. package/dist/ui/utils/text-buffer.mjs +865 -0
  92. package/dist/ui/utils/text-buffer.mjs.map +1 -0
  93. package/dist/ui/utils/text-utils.cjs +85 -0
  94. package/dist/ui/utils/text-utils.mjs +78 -0
  95. package/dist/ui/utils/text-utils.mjs.map +1 -0
  96. package/dist/utils/agent-v1.cjs +180 -0
  97. package/dist/utils/agent-v1.d.cts +138 -0
  98. package/dist/utils/agent-v1.d.cts.map +1 -0
  99. package/dist/utils/agent-v1.d.mts +138 -0
  100. package/dist/utils/agent-v1.d.mts.map +1 -0
  101. package/dist/utils/agent-v1.mjs +179 -0
  102. package/dist/utils/agent-v1.mjs.map +1 -0
  103. package/dist/utils/aigne-hub/constants.cjs +22 -0
  104. package/dist/utils/aigne-hub/constants.mjs +18 -0
  105. package/dist/utils/aigne-hub/constants.mjs.map +1 -0
  106. package/dist/utils/aigne-hub/credential.cjs +179 -0
  107. package/dist/utils/aigne-hub/credential.mjs +175 -0
  108. package/dist/utils/aigne-hub/credential.mjs.map +1 -0
  109. package/dist/utils/aigne-hub/crypto.cjs +41 -0
  110. package/dist/utils/aigne-hub/crypto.mjs +33 -0
  111. package/dist/utils/aigne-hub/crypto.mjs.map +1 -0
  112. package/dist/utils/aigne-hub/model.cjs +112 -0
  113. package/dist/utils/aigne-hub/model.d.cts +19 -0
  114. package/dist/utils/aigne-hub/model.d.cts.map +1 -0
  115. package/dist/utils/aigne-hub/model.d.mts +19 -0
  116. package/dist/utils/aigne-hub/model.d.mts.map +1 -0
  117. package/dist/utils/aigne-hub/model.mjs +106 -0
  118. package/dist/utils/aigne-hub/model.mjs.map +1 -0
  119. package/dist/utils/aigne-hub/store/file.cjs +64 -0
  120. package/dist/utils/aigne-hub/store/file.mjs +64 -0
  121. package/dist/utils/aigne-hub/store/file.mjs.map +1 -0
  122. package/dist/utils/aigne-hub/store/index.cjs +37 -0
  123. package/dist/utils/aigne-hub/store/index.mjs +37 -0
  124. package/dist/utils/aigne-hub/store/index.mjs.map +1 -0
  125. package/dist/utils/aigne-hub/store/keytar.cjs +61 -0
  126. package/dist/utils/aigne-hub/store/keytar.mjs +61 -0
  127. package/dist/utils/aigne-hub/store/keytar.mjs.map +1 -0
  128. package/dist/utils/aigne-hub/store/migrate.cjs +46 -0
  129. package/dist/utils/aigne-hub/store/migrate.mjs +45 -0
  130. package/dist/utils/aigne-hub/store/migrate.mjs.map +1 -0
  131. package/dist/utils/aigne-hub/type.d.cts +18 -0
  132. package/dist/utils/aigne-hub/type.d.cts.map +1 -0
  133. package/dist/utils/aigne-hub/type.d.mts +18 -0
  134. package/dist/utils/aigne-hub/type.d.mts.map +1 -0
  135. package/dist/utils/aigne-hub-user.cjs +11 -0
  136. package/dist/utils/aigne-hub-user.d.cts +23 -0
  137. package/dist/utils/aigne-hub-user.d.cts.map +1 -0
  138. package/dist/utils/aigne-hub-user.d.mts +23 -0
  139. package/dist/utils/aigne-hub-user.d.mts.map +1 -0
  140. package/dist/utils/aigne-hub-user.mjs +11 -0
  141. package/dist/utils/aigne-hub-user.mjs.map +1 -0
  142. package/dist/utils/ascii-logo.cjs +30 -0
  143. package/dist/utils/ascii-logo.d.cts +5 -0
  144. package/dist/utils/ascii-logo.d.cts.map +1 -0
  145. package/dist/utils/ascii-logo.d.mts +5 -0
  146. package/dist/utils/ascii-logo.d.mts.map +1 -0
  147. package/dist/utils/{ascii-logo.js → ascii-logo.mjs} +13 -3
  148. package/dist/utils/ascii-logo.mjs.map +1 -0
  149. package/dist/utils/download.cjs +25 -0
  150. package/dist/utils/download.d.cts +7 -0
  151. package/dist/utils/download.d.cts.map +1 -0
  152. package/dist/utils/download.d.mts +7 -0
  153. package/dist/utils/download.d.mts.map +1 -0
  154. package/dist/utils/download.mjs +25 -0
  155. package/dist/utils/download.mjs.map +1 -0
  156. package/dist/utils/evaluation/core.cjs +84 -0
  157. package/dist/utils/evaluation/core.mjs +84 -0
  158. package/dist/utils/evaluation/core.mjs.map +1 -0
  159. package/dist/utils/evaluation/dataset.cjs +47 -0
  160. package/dist/utils/evaluation/dataset.mjs +46 -0
  161. package/dist/utils/evaluation/dataset.mjs.map +1 -0
  162. package/dist/utils/evaluation/evaluator.cjs +109 -0
  163. package/dist/utils/evaluation/{evaluator.js → evaluator.mjs} +48 -45
  164. package/dist/utils/evaluation/evaluator.mjs.map +1 -0
  165. package/dist/utils/evaluation/reporter.cjs +225 -0
  166. package/dist/utils/evaluation/reporter.mjs +220 -0
  167. package/dist/utils/evaluation/reporter.mjs.map +1 -0
  168. package/dist/utils/evaluation/runner.cjs +85 -0
  169. package/dist/utils/evaluation/runner.mjs +85 -0
  170. package/dist/utils/evaluation/runner.mjs.map +1 -0
  171. package/dist/utils/get-url-origin.cjs +12 -0
  172. package/dist/utils/get-url-origin.d.cts +5 -0
  173. package/dist/utils/get-url-origin.d.cts.map +1 -0
  174. package/dist/utils/get-url-origin.d.mts +5 -0
  175. package/dist/utils/get-url-origin.d.mts.map +1 -0
  176. package/dist/utils/get-url-origin.mjs +12 -0
  177. package/dist/utils/get-url-origin.mjs.map +1 -0
  178. package/dist/utils/inquirer/checkbox.cjs +265 -0
  179. package/dist/utils/inquirer/checkbox.mjs +262 -0
  180. package/dist/utils/inquirer/checkbox.mjs.map +1 -0
  181. package/dist/utils/listr.cjs +226 -0
  182. package/dist/utils/listr.d.cts +71 -0
  183. package/dist/utils/listr.d.cts.map +1 -0
  184. package/dist/utils/listr.d.mts +71 -0
  185. package/dist/utils/listr.d.mts.map +1 -0
  186. package/dist/utils/listr.mjs +222 -0
  187. package/dist/utils/listr.mjs.map +1 -0
  188. package/dist/utils/load-aigne.cjs +77 -0
  189. package/dist/utils/load-aigne.d.cts +29 -0
  190. package/dist/utils/load-aigne.d.cts.map +1 -0
  191. package/dist/utils/load-aigne.d.mts +29 -0
  192. package/dist/utils/load-aigne.d.mts.map +1 -0
  193. package/dist/utils/load-aigne.mjs +74 -0
  194. package/dist/utils/load-aigne.mjs.map +1 -0
  195. package/dist/utils/run-chat-loop.cjs +90 -0
  196. package/dist/utils/run-chat-loop.d.cts +20 -0
  197. package/dist/utils/run-chat-loop.d.cts.map +1 -0
  198. package/dist/utils/run-chat-loop.d.mts +20 -0
  199. package/dist/utils/run-chat-loop.d.mts.map +1 -0
  200. package/dist/utils/run-chat-loop.mjs +89 -0
  201. package/dist/utils/run-chat-loop.mjs.map +1 -0
  202. package/dist/utils/run-with-aigne.cjs +131 -0
  203. package/dist/utils/run-with-aigne.d.cts +46 -0
  204. package/dist/utils/run-with-aigne.d.cts.map +1 -0
  205. package/dist/utils/run-with-aigne.d.mts +46 -0
  206. package/dist/utils/run-with-aigne.d.mts.map +1 -0
  207. package/dist/utils/run-with-aigne.mjs +126 -0
  208. package/dist/utils/run-with-aigne.mjs.map +1 -0
  209. package/dist/utils/serve-mcp.cjs +91 -0
  210. package/dist/utils/serve-mcp.d.cts +20 -0
  211. package/dist/utils/serve-mcp.d.cts.map +1 -0
  212. package/dist/utils/serve-mcp.d.mts +20 -0
  213. package/dist/utils/serve-mcp.d.mts.map +1 -0
  214. package/dist/utils/serve-mcp.mjs +89 -0
  215. package/dist/utils/serve-mcp.mjs.map +1 -0
  216. package/dist/utils/spinner.cjs +19 -0
  217. package/dist/utils/spinner.d.cts +5 -0
  218. package/dist/utils/spinner.d.cts.map +1 -0
  219. package/dist/utils/spinner.d.mts +5 -0
  220. package/dist/utils/spinner.d.mts.map +1 -0
  221. package/dist/utils/spinner.mjs +19 -0
  222. package/dist/utils/spinner.mjs.map +1 -0
  223. package/dist/utils/string-utils.cjs +11 -0
  224. package/dist/utils/string-utils.d.cts +5 -0
  225. package/dist/utils/string-utils.d.cts.map +1 -0
  226. package/dist/utils/string-utils.d.mts +5 -0
  227. package/dist/utils/string-utils.d.mts.map +1 -0
  228. package/dist/utils/string-utils.mjs +10 -0
  229. package/dist/utils/string-utils.mjs.map +1 -0
  230. package/dist/utils/time.cjs +14 -0
  231. package/dist/utils/time.d.cts +5 -0
  232. package/dist/utils/time.d.cts.map +1 -0
  233. package/dist/utils/time.d.mts +5 -0
  234. package/dist/utils/time.d.mts.map +1 -0
  235. package/dist/utils/time.mjs +14 -0
  236. package/dist/utils/time.mjs.map +1 -0
  237. package/dist/utils/url.cjs +8 -0
  238. package/dist/utils/url.d.cts +5 -0
  239. package/dist/utils/url.d.cts.map +1 -0
  240. package/dist/utils/url.d.mts +5 -0
  241. package/dist/utils/url.d.mts.map +1 -0
  242. package/dist/utils/url.mjs +8 -0
  243. package/dist/utils/url.mjs.map +1 -0
  244. package/dist/utils/yargs.cjs +191 -0
  245. package/dist/utils/yargs.d.cts +96 -0
  246. package/dist/utils/yargs.d.cts.map +1 -0
  247. package/dist/utils/yargs.d.mts +96 -0
  248. package/dist/utils/yargs.d.mts.map +1 -0
  249. package/dist/utils/yargs.mjs +186 -0
  250. package/dist/utils/yargs.mjs.map +1 -0
  251. package/package.json +122 -45
  252. package/CHANGELOG.md +0 -5019
  253. package/dist/bunwrapper.d.ts +0 -2
  254. package/dist/bunwrapper.js +0 -18
  255. package/dist/cli.d.ts +0 -7
  256. package/dist/cli.js +0 -42
  257. package/dist/commands/aigne.d.ts +0 -4
  258. package/dist/commands/aigne.js +0 -35
  259. package/dist/commands/app/agent.d.ts +0 -26
  260. package/dist/commands/app/agent.js +0 -122
  261. package/dist/commands/app/app.d.ts +0 -7
  262. package/dist/commands/app/app.js +0 -92
  263. package/dist/commands/app/cli.d.ts +0 -1
  264. package/dist/commands/app/cli.js +0 -2
  265. package/dist/commands/app/upgrade.d.ts +0 -54
  266. package/dist/commands/app/upgrade.js +0 -236
  267. package/dist/commands/app.d.ts +0 -4
  268. package/dist/commands/app.js +0 -54
  269. package/dist/commands/create.d.ts +0 -6
  270. package/dist/commands/create.js +0 -74
  271. package/dist/commands/deploy.d.ts +0 -11
  272. package/dist/commands/deploy.js +0 -255
  273. package/dist/commands/eval.d.ts +0 -11
  274. package/dist/commands/eval.js +0 -110
  275. package/dist/commands/hub.d.ts +0 -3
  276. package/dist/commands/hub.js +0 -323
  277. package/dist/commands/observe.d.ts +0 -7
  278. package/dist/commands/observe.js +0 -41
  279. package/dist/commands/run-skill.d.ts +0 -6
  280. package/dist/commands/run-skill.js +0 -102
  281. package/dist/commands/run.d.ts +0 -9
  282. package/dist/commands/run.js +0 -187
  283. package/dist/commands/serve-mcp.d.ts +0 -20
  284. package/dist/commands/serve-mcp.js +0 -67
  285. package/dist/commands/test.d.ts +0 -9
  286. package/dist/commands/test.js +0 -33
  287. package/dist/constants.d.ts +0 -7
  288. package/dist/constants.js +0 -21
  289. package/dist/index.d.ts +0 -1
  290. package/dist/index.js +0 -1
  291. package/dist/tracer/terminal.d.ts +0 -62
  292. package/dist/tracer/terminal.js +0 -404
  293. package/dist/type.d.ts +0 -5
  294. package/dist/type.js +0 -1
  295. package/dist/ui/utils/terminal-input.d.ts +0 -19
  296. package/dist/ui/utils/terminal-input.js +0 -123
  297. package/dist/ui/utils/text-buffer.d.ts +0 -87
  298. package/dist/ui/utils/text-buffer.js +0 -1059
  299. package/dist/ui/utils/text-utils.d.ts +0 -37
  300. package/dist/ui/utils/text-utils.js +0 -185
  301. package/dist/utils/agent-v1.d.ts +0 -134
  302. package/dist/utils/agent-v1.js +0 -213
  303. package/dist/utils/aigne-hub/constants.d.ts +0 -6
  304. package/dist/utils/aigne-hub/constants.js +0 -12
  305. package/dist/utils/aigne-hub/credential.d.ts +0 -20
  306. package/dist/utils/aigne-hub/credential.js +0 -182
  307. package/dist/utils/aigne-hub/crypto.d.ts +0 -4
  308. package/dist/utils/aigne-hub/crypto.js +0 -30
  309. package/dist/utils/aigne-hub/model.d.ts +0 -13
  310. package/dist/utils/aigne-hub/model.js +0 -122
  311. package/dist/utils/aigne-hub/store/file.d.ts +0 -15
  312. package/dist/utils/aigne-hub/store/file.js +0 -69
  313. package/dist/utils/aigne-hub/store/index.d.ts +0 -5
  314. package/dist/utils/aigne-hub/store/index.js +0 -43
  315. package/dist/utils/aigne-hub/store/keytar.d.ts +0 -15
  316. package/dist/utils/aigne-hub/store/keytar.js +0 -67
  317. package/dist/utils/aigne-hub/store/migrate.d.ts +0 -2
  318. package/dist/utils/aigne-hub/store/migrate.js +0 -57
  319. package/dist/utils/aigne-hub/type.d.ts +0 -38
  320. package/dist/utils/aigne-hub/type.js +0 -1
  321. package/dist/utils/aigne-hub-user.d.ts +0 -16
  322. package/dist/utils/aigne-hub-user.js +0 -10
  323. package/dist/utils/ascii-logo.d.ts +0 -1
  324. package/dist/utils/download.d.ts +0 -3
  325. package/dist/utils/download.js +0 -19
  326. package/dist/utils/evaluation/core.d.ts +0 -8
  327. package/dist/utils/evaluation/core.js +0 -83
  328. package/dist/utils/evaluation/dataset.d.ts +0 -15
  329. package/dist/utils/evaluation/dataset.js +0 -61
  330. package/dist/utils/evaluation/evaluator.d.ts +0 -9
  331. package/dist/utils/evaluation/reporter.d.ts +0 -28
  332. package/dist/utils/evaluation/reporter.js +0 -221
  333. package/dist/utils/evaluation/runner.d.ts +0 -16
  334. package/dist/utils/evaluation/runner.js +0 -129
  335. package/dist/utils/evaluation/type.d.ts +0 -69
  336. package/dist/utils/evaluation/type.js +0 -1
  337. package/dist/utils/get-url-origin.d.ts +0 -1
  338. package/dist/utils/get-url-origin.js +0 -8
  339. package/dist/utils/inquirer/checkbox.d.ts +0 -55
  340. package/dist/utils/inquirer/checkbox.js +0 -319
  341. package/dist/utils/listr.d.ts +0 -64
  342. package/dist/utils/listr.js +0 -265
  343. package/dist/utils/load-aigne.d.ts +0 -18
  344. package/dist/utils/load-aigne.js +0 -80
  345. package/dist/utils/run-chat-loop.d.ts +0 -15
  346. package/dist/utils/run-chat-loop.js +0 -87
  347. package/dist/utils/run-with-aigne.d.ts +0 -27
  348. package/dist/utils/run-with-aigne.js +0 -157
  349. package/dist/utils/serve-mcp.d.ts +0 -9
  350. package/dist/utils/serve-mcp.js +0 -93
  351. package/dist/utils/spinner.d.ts +0 -1
  352. package/dist/utils/spinner.js +0 -14
  353. package/dist/utils/string-utils.d.ts +0 -1
  354. package/dist/utils/string-utils.js +0 -4
  355. package/dist/utils/time.d.ts +0 -1
  356. package/dist/utils/time.js +0 -12
  357. package/dist/utils/url.d.ts +0 -1
  358. package/dist/utils/url.js +0 -3
  359. package/dist/utils/yargs.d.ts +0 -94
  360. package/dist/utils/yargs.js +0 -210
@@ -0,0 +1,225 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let node_fs = require("node:fs");
3
+ node_fs = require_rolldown_runtime.__toESM(node_fs);
4
+ let chalk = require("chalk");
5
+ chalk = require_rolldown_runtime.__toESM(chalk);
6
+ let node_path = require("node:path");
7
+ node_path = require_rolldown_runtime.__toESM(node_path);
8
+ let _fast_csv_format = require("@fast-csv/format");
9
+ let cli_table3 = require("cli-table3");
10
+ cli_table3 = require_rolldown_runtime.__toESM(cli_table3);
11
+
12
+ //#region src/utils/evaluation/reporter.ts
13
+ const borderColor = chalk.default.green;
14
+ const chars = {
15
+ top: borderColor("─"),
16
+ "top-mid": borderColor("┬"),
17
+ "top-left": borderColor("┌"),
18
+ "top-right": borderColor("┐"),
19
+ bottom: borderColor("─"),
20
+ "bottom-mid": borderColor("┴"),
21
+ "bottom-left": borderColor("└"),
22
+ "bottom-right": borderColor("┘"),
23
+ left: borderColor("│"),
24
+ "left-mid": borderColor("├"),
25
+ mid: borderColor("─"),
26
+ "mid-mid": borderColor("┼"),
27
+ right: borderColor("│"),
28
+ "right-mid": borderColor("┤"),
29
+ middle: borderColor("│")
30
+ };
31
+ const MAX_CELL_LENGTH = 300;
32
+ function renderPagedTable(list, { maxCols = 6, chars }) {
33
+ if (!list.length) return [];
34
+ const tables = [];
35
+ const head = list[0]?.map((h) => h.header) ?? [];
36
+ const widths = list[0]?.map((h) => h.width ?? 20) ?? [];
37
+ for (let i = 0; i < head.length; i += maxCols) {
38
+ const table = new cli_table3.default({
39
+ head: head.slice(i, i + maxCols),
40
+ colWidths: widths.slice(i, i + maxCols),
41
+ wordWrap: true,
42
+ chars
43
+ });
44
+ for (const row of list) table.push(row.slice(i, i + maxCols).map((h) => String(h.value).length > MAX_CELL_LENGTH ? `${String(h.value).slice(0, MAX_CELL_LENGTH)}...` : h.value));
45
+ tables.push(table.toString());
46
+ }
47
+ return tables;
48
+ }
49
+ var BaseReporter = class {
50
+ name = "base";
51
+ async report(_report) {
52
+ throw new Error("Not implemented");
53
+ }
54
+ formatReport(report) {
55
+ return report.results.map((r) => {
56
+ return [
57
+ {
58
+ header: "ID",
59
+ key: "ID",
60
+ width: 10,
61
+ value: r.id
62
+ },
63
+ {
64
+ header: "Input",
65
+ key: "Input",
66
+ width: 40,
67
+ value: JSON.stringify(r.input)
68
+ },
69
+ {
70
+ header: "Output",
71
+ key: "Output",
72
+ width: 40,
73
+ value: r.output ? JSON.stringify(r.output) : "-"
74
+ },
75
+ {
76
+ header: "Expected",
77
+ key: "Expected",
78
+ width: 40,
79
+ value: r.expected ? JSON.stringify(r.expected) : "-"
80
+ },
81
+ {
82
+ header: "Evaluations",
83
+ key: "Evaluations",
84
+ width: 30,
85
+ value: r.evaluations.map((e) => `${e.name}:${e.score}`).join(", ")
86
+ },
87
+ {
88
+ header: "Rating",
89
+ key: "Rating",
90
+ width: 20,
91
+ value: r.evaluations.map((e) => `${e.rating}`).join(", ")
92
+ },
93
+ {
94
+ header: "Error",
95
+ key: "Error",
96
+ width: 20,
97
+ value: r.error ?? "-"
98
+ },
99
+ {
100
+ header: "Reason",
101
+ key: "Reason",
102
+ width: 50,
103
+ value: r.evaluations.map((e) => e.reason ?? "").filter(Boolean).join(" | ")
104
+ },
105
+ {
106
+ header: "Latency",
107
+ key: "Latency",
108
+ width: 15,
109
+ value: r.latency ? `${r.latency.toFixed(2)}s` : "-"
110
+ },
111
+ {
112
+ header: "Tokens",
113
+ key: "Tokens",
114
+ width: 40,
115
+ value: r.usage ? `${(r.usage.inputTokens || 0) + (r.usage.outputTokens || 0)} (input:${r.usage.inputTokens || 0}, output:${r.usage.outputTokens || 0})` : "-"
116
+ }
117
+ ];
118
+ });
119
+ }
120
+ formatSummary(summary) {
121
+ return [
122
+ {
123
+ header: "Total",
124
+ key: "Total",
125
+ width: 10,
126
+ value: summary.total
127
+ },
128
+ {
129
+ header: "Success Rate",
130
+ key: "SuccessRate",
131
+ width: 15,
132
+ value: summary.successRate
133
+ },
134
+ {
135
+ header: "Total Duration",
136
+ key: "Duration",
137
+ width: 15,
138
+ value: summary.duration ? `${summary.duration.toFixed(3)}s` : "-"
139
+ },
140
+ {
141
+ header: "Avg Latency",
142
+ key: "AvgLatency",
143
+ width: 15,
144
+ value: summary.avgLatency ? `${summary.avgLatency.toFixed(3)}s` : "-"
145
+ },
146
+ {
147
+ header: "Total Tokens",
148
+ key: "TotalTokens",
149
+ width: 15,
150
+ value: summary.totalTokens ?? "-"
151
+ },
152
+ {
153
+ header: "Errors",
154
+ key: "Errors",
155
+ width: 8,
156
+ value: summary.errorCount ?? 0
157
+ }
158
+ ];
159
+ }
160
+ };
161
+ var ConsoleReporter = class extends BaseReporter {
162
+ name = "console";
163
+ async report(report) {
164
+ const summary = report.summary;
165
+ console.log("\n=== 📊 Evaluation Summary ===");
166
+ const summaryList = this.formatSummary(summary);
167
+ const summaryTable = new cli_table3.default({
168
+ head: summaryList.map((h) => h.header),
169
+ colWidths: summaryList.map((h) => h.width),
170
+ chars
171
+ });
172
+ summaryTable.push(summaryList.map((h) => h.value));
173
+ console.log(summaryTable.toString());
174
+ const list = this.formatReport(report);
175
+ if (!list.length) return;
176
+ console.log("\n=== 📋 Detailed Results ===");
177
+ const pages = renderPagedTable(list, {
178
+ maxCols: 5,
179
+ chars
180
+ });
181
+ for (const page of pages) console.log(page);
182
+ const failed = report.results.filter((r) => r.error);
183
+ if (failed.length) {
184
+ console.log(chalk.default.red("\n=== ❌ Failed Cases ==="));
185
+ for (const f of failed) console.log(`#${f.id} Input: ${JSON.stringify(f.input)}\n Expected: ${f.expected ? JSON.stringify(f.expected) : "-"}\n Output: ${f.output ? JSON.stringify(f.output) : "-"}\n Error: ${f.error ?? "-"}\n`);
186
+ }
187
+ }
188
+ };
189
+ var CsvReporter = class extends BaseReporter {
190
+ name = "csv";
191
+ constructor(filePath) {
192
+ super();
193
+ this.filePath = filePath;
194
+ }
195
+ async writeCsv(filePath, data, headers) {
196
+ node_fs.default.mkdirSync(node_path.default.dirname(filePath), { recursive: true });
197
+ const stream = (0, _fast_csv_format.format)({ headers });
198
+ const writeStream = node_fs.default.createWriteStream(filePath);
199
+ stream.pipe(writeStream);
200
+ for (const row of data) stream.write(row);
201
+ stream.end();
202
+ await new Promise((resolve, reject) => {
203
+ writeStream.on("finish", resolve);
204
+ writeStream.on("error", reject);
205
+ });
206
+ }
207
+ async report(report) {
208
+ const list = this.formatReport(report);
209
+ if (list.length > 0) {
210
+ const resultsHeaders = list[0]?.map((h) => h.header) ?? [];
211
+ const resultsRows = list.map((row) => {
212
+ const record = {};
213
+ for (const item of row) record[item.header] = item.value;
214
+ return record;
215
+ });
216
+ const outputFile = node_path.default.extname(this.filePath).toLowerCase() ? this.filePath : `${this.filePath}.csv`;
217
+ await this.writeCsv(outputFile, resultsRows, resultsHeaders);
218
+ console.log(`✅ Results CSV saved to ${outputFile}`);
219
+ }
220
+ }
221
+ };
222
+
223
+ //#endregion
224
+ exports.ConsoleReporter = ConsoleReporter;
225
+ exports.CsvReporter = CsvReporter;
@@ -0,0 +1,220 @@
1
+ import fs from "node:fs";
2
+ import chalk from "chalk";
3
+ import path from "node:path";
4
+ import { format } from "@fast-csv/format";
5
+ import Table from "cli-table3";
6
+
7
+ //#region src/utils/evaluation/reporter.ts
8
+ const borderColor = chalk.green;
9
+ const chars = {
10
+ top: borderColor("─"),
11
+ "top-mid": borderColor("┬"),
12
+ "top-left": borderColor("┌"),
13
+ "top-right": borderColor("┐"),
14
+ bottom: borderColor("─"),
15
+ "bottom-mid": borderColor("┴"),
16
+ "bottom-left": borderColor("└"),
17
+ "bottom-right": borderColor("┘"),
18
+ left: borderColor("│"),
19
+ "left-mid": borderColor("├"),
20
+ mid: borderColor("─"),
21
+ "mid-mid": borderColor("┼"),
22
+ right: borderColor("│"),
23
+ "right-mid": borderColor("┤"),
24
+ middle: borderColor("│")
25
+ };
26
+ const MAX_CELL_LENGTH = 300;
27
+ function renderPagedTable(list, { maxCols = 6, chars }) {
28
+ if (!list.length) return [];
29
+ const tables = [];
30
+ const head = list[0]?.map((h) => h.header) ?? [];
31
+ const widths = list[0]?.map((h) => h.width ?? 20) ?? [];
32
+ for (let i = 0; i < head.length; i += maxCols) {
33
+ const table = new Table({
34
+ head: head.slice(i, i + maxCols),
35
+ colWidths: widths.slice(i, i + maxCols),
36
+ wordWrap: true,
37
+ chars
38
+ });
39
+ for (const row of list) table.push(row.slice(i, i + maxCols).map((h) => String(h.value).length > MAX_CELL_LENGTH ? `${String(h.value).slice(0, MAX_CELL_LENGTH)}...` : h.value));
40
+ tables.push(table.toString());
41
+ }
42
+ return tables;
43
+ }
44
+ var BaseReporter = class {
45
+ name = "base";
46
+ async report(_report) {
47
+ throw new Error("Not implemented");
48
+ }
49
+ formatReport(report) {
50
+ return report.results.map((r) => {
51
+ return [
52
+ {
53
+ header: "ID",
54
+ key: "ID",
55
+ width: 10,
56
+ value: r.id
57
+ },
58
+ {
59
+ header: "Input",
60
+ key: "Input",
61
+ width: 40,
62
+ value: JSON.stringify(r.input)
63
+ },
64
+ {
65
+ header: "Output",
66
+ key: "Output",
67
+ width: 40,
68
+ value: r.output ? JSON.stringify(r.output) : "-"
69
+ },
70
+ {
71
+ header: "Expected",
72
+ key: "Expected",
73
+ width: 40,
74
+ value: r.expected ? JSON.stringify(r.expected) : "-"
75
+ },
76
+ {
77
+ header: "Evaluations",
78
+ key: "Evaluations",
79
+ width: 30,
80
+ value: r.evaluations.map((e) => `${e.name}:${e.score}`).join(", ")
81
+ },
82
+ {
83
+ header: "Rating",
84
+ key: "Rating",
85
+ width: 20,
86
+ value: r.evaluations.map((e) => `${e.rating}`).join(", ")
87
+ },
88
+ {
89
+ header: "Error",
90
+ key: "Error",
91
+ width: 20,
92
+ value: r.error ?? "-"
93
+ },
94
+ {
95
+ header: "Reason",
96
+ key: "Reason",
97
+ width: 50,
98
+ value: r.evaluations.map((e) => e.reason ?? "").filter(Boolean).join(" | ")
99
+ },
100
+ {
101
+ header: "Latency",
102
+ key: "Latency",
103
+ width: 15,
104
+ value: r.latency ? `${r.latency.toFixed(2)}s` : "-"
105
+ },
106
+ {
107
+ header: "Tokens",
108
+ key: "Tokens",
109
+ width: 40,
110
+ value: r.usage ? `${(r.usage.inputTokens || 0) + (r.usage.outputTokens || 0)} (input:${r.usage.inputTokens || 0}, output:${r.usage.outputTokens || 0})` : "-"
111
+ }
112
+ ];
113
+ });
114
+ }
115
+ formatSummary(summary) {
116
+ return [
117
+ {
118
+ header: "Total",
119
+ key: "Total",
120
+ width: 10,
121
+ value: summary.total
122
+ },
123
+ {
124
+ header: "Success Rate",
125
+ key: "SuccessRate",
126
+ width: 15,
127
+ value: summary.successRate
128
+ },
129
+ {
130
+ header: "Total Duration",
131
+ key: "Duration",
132
+ width: 15,
133
+ value: summary.duration ? `${summary.duration.toFixed(3)}s` : "-"
134
+ },
135
+ {
136
+ header: "Avg Latency",
137
+ key: "AvgLatency",
138
+ width: 15,
139
+ value: summary.avgLatency ? `${summary.avgLatency.toFixed(3)}s` : "-"
140
+ },
141
+ {
142
+ header: "Total Tokens",
143
+ key: "TotalTokens",
144
+ width: 15,
145
+ value: summary.totalTokens ?? "-"
146
+ },
147
+ {
148
+ header: "Errors",
149
+ key: "Errors",
150
+ width: 8,
151
+ value: summary.errorCount ?? 0
152
+ }
153
+ ];
154
+ }
155
+ };
156
+ var ConsoleReporter = class extends BaseReporter {
157
+ name = "console";
158
+ async report(report) {
159
+ const summary = report.summary;
160
+ console.log("\n=== 📊 Evaluation Summary ===");
161
+ const summaryList = this.formatSummary(summary);
162
+ const summaryTable = new Table({
163
+ head: summaryList.map((h) => h.header),
164
+ colWidths: summaryList.map((h) => h.width),
165
+ chars
166
+ });
167
+ summaryTable.push(summaryList.map((h) => h.value));
168
+ console.log(summaryTable.toString());
169
+ const list = this.formatReport(report);
170
+ if (!list.length) return;
171
+ console.log("\n=== 📋 Detailed Results ===");
172
+ const pages = renderPagedTable(list, {
173
+ maxCols: 5,
174
+ chars
175
+ });
176
+ for (const page of pages) console.log(page);
177
+ const failed = report.results.filter((r) => r.error);
178
+ if (failed.length) {
179
+ console.log(chalk.red("\n=== ❌ Failed Cases ==="));
180
+ for (const f of failed) console.log(`#${f.id} Input: ${JSON.stringify(f.input)}\n Expected: ${f.expected ? JSON.stringify(f.expected) : "-"}\n Output: ${f.output ? JSON.stringify(f.output) : "-"}\n Error: ${f.error ?? "-"}\n`);
181
+ }
182
+ }
183
+ };
184
+ var CsvReporter = class extends BaseReporter {
185
+ name = "csv";
186
+ constructor(filePath) {
187
+ super();
188
+ this.filePath = filePath;
189
+ }
190
+ async writeCsv(filePath, data, headers) {
191
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
192
+ const stream = format({ headers });
193
+ const writeStream = fs.createWriteStream(filePath);
194
+ stream.pipe(writeStream);
195
+ for (const row of data) stream.write(row);
196
+ stream.end();
197
+ await new Promise((resolve$1, reject) => {
198
+ writeStream.on("finish", resolve$1);
199
+ writeStream.on("error", reject);
200
+ });
201
+ }
202
+ async report(report) {
203
+ const list = this.formatReport(report);
204
+ if (list.length > 0) {
205
+ const resultsHeaders = list[0]?.map((h) => h.header) ?? [];
206
+ const resultsRows = list.map((row) => {
207
+ const record = {};
208
+ for (const item of row) record[item.header] = item.value;
209
+ return record;
210
+ });
211
+ const outputFile = path.extname(this.filePath).toLowerCase() ? this.filePath : `${this.filePath}.csv`;
212
+ await this.writeCsv(outputFile, resultsRows, resultsHeaders);
213
+ console.log(`✅ Results CSV saved to ${outputFile}`);
214
+ }
215
+ }
216
+ };
217
+
218
+ //#endregion
219
+ export { ConsoleReporter, CsvReporter };
220
+ //# sourceMappingURL=reporter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.mjs","names":["resolve"],"sources":["../../../src/utils/evaluation/reporter.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { format } from \"@fast-csv/format\";\nimport chalk from \"chalk\";\nimport Table from \"cli-table3\";\nimport type { Report, Reporter } from \"./type.js\";\n\nconst borderColor = chalk.green;\nconst chars = {\n top: borderColor(\"─\"),\n \"top-mid\": borderColor(\"┬\"),\n \"top-left\": borderColor(\"┌\"),\n \"top-right\": borderColor(\"┐\"),\n bottom: borderColor(\"─\"),\n \"bottom-mid\": borderColor(\"┴\"),\n \"bottom-left\": borderColor(\"└\"),\n \"bottom-right\": borderColor(\"┘\"),\n left: borderColor(\"│\"),\n \"left-mid\": borderColor(\"├\"),\n mid: borderColor(\"─\"),\n \"mid-mid\": borderColor(\"┼\"),\n right: borderColor(\"│\"),\n \"right-mid\": borderColor(\"┤\"),\n middle: borderColor(\"│\"),\n};\n\nconst MAX_CELL_LENGTH = 300;\n\nfunction renderPagedTable(\n list: { header: string; width?: number; value: any }[][],\n { maxCols = 6, chars }: { maxCols?: number; chars: Record<string, string> },\n) {\n if (!list.length) return [];\n\n const tables: string[] = [];\n const head = list[0]?.map((h) => h.header) ?? [];\n const widths = list[0]?.map((h) => h.width ?? 20) ?? [];\n\n for (let i = 0; i < head.length; i += maxCols) {\n const subHead = head.slice(i, i + maxCols);\n const subWidths = widths.slice(i, i + maxCols);\n\n const table = new Table({\n head: subHead,\n colWidths: subWidths,\n wordWrap: true,\n chars,\n });\n\n for (const row of list) {\n table.push(\n row\n .slice(i, i + maxCols)\n .map((h) =>\n String(h.value).length > MAX_CELL_LENGTH\n ? `${String(h.value).slice(0, MAX_CELL_LENGTH)}...`\n : h.value,\n ),\n );\n }\n\n tables.push(table.toString());\n }\n\n return tables;\n}\n\nexport class BaseReporter implements Reporter {\n name = \"base\";\n\n async report(_report: Report): Promise<void> {\n throw new Error(\"Not implemented\");\n }\n\n protected formatReport(\n report: Report,\n ): { header: string; key: string; width: number; value: string | number }[][] {\n return report.results.map((r) => {\n return [\n { header: \"ID\", key: \"ID\", width: 10, value: r.id },\n { header: \"Input\", key: \"Input\", width: 40, value: JSON.stringify(r.input) },\n {\n header: \"Output\",\n key: \"Output\",\n width: 40,\n value: r.output ? JSON.stringify(r.output) : \"-\",\n },\n {\n header: \"Expected\",\n key: \"Expected\",\n width: 40,\n value: r.expected ? JSON.stringify(r.expected) : \"-\",\n },\n {\n header: \"Evaluations\",\n key: \"Evaluations\",\n width: 30,\n value: r.evaluations.map((e) => `${e.name}:${e.score}`).join(\", \"),\n },\n {\n header: \"Rating\",\n key: \"Rating\",\n width: 20,\n value: r.evaluations.map((e) => `${e.rating}`).join(\", \"),\n },\n { header: \"Error\", key: \"Error\", width: 20, value: r.error ?? \"-\" },\n {\n header: \"Reason\",\n key: \"Reason\",\n width: 50,\n value: r.evaluations\n .map((e) => e.reason ?? \"\")\n .filter(Boolean)\n .join(\" | \"),\n },\n {\n header: \"Latency\",\n key: \"Latency\",\n width: 15,\n value: r.latency ? `${r.latency.toFixed(2)}s` : \"-\",\n },\n {\n header: \"Tokens\",\n key: \"Tokens\",\n width: 40,\n value: r.usage\n ? `${(r.usage.inputTokens || 0) + (r.usage.outputTokens || 0)} (input:${r.usage.inputTokens || 0}, output:${r.usage.outputTokens || 0})`\n : \"-\",\n },\n ];\n });\n }\n\n protected formatSummary(\n summary: Report[\"summary\"],\n ): { header: string; key: string; width: number; value: string | number }[] {\n return [\n {\n header: \"Total\",\n key: \"Total\",\n width: 10,\n value: summary.total,\n },\n {\n header: \"Success Rate\",\n key: \"SuccessRate\",\n width: 15,\n value: summary.successRate,\n },\n {\n header: \"Total Duration\",\n key: \"Duration\",\n width: 15,\n value: summary.duration ? `${summary.duration.toFixed(3)}s` : \"-\",\n },\n {\n header: \"Avg Latency\",\n key: \"AvgLatency\",\n width: 15,\n value: summary.avgLatency ? `${summary.avgLatency.toFixed(3)}s` : \"-\",\n },\n {\n header: \"Total Tokens\",\n key: \"TotalTokens\",\n width: 15,\n value: summary.totalTokens ?? \"-\",\n },\n {\n header: \"Errors\",\n key: \"Errors\",\n width: 8,\n value: summary.errorCount ?? 0,\n },\n ];\n }\n}\n\nexport class ConsoleReporter extends BaseReporter {\n override name = \"console\";\n\n override async report(report: Report): Promise<void> {\n const summary = report.summary;\n\n console.log(\"\\n=== 📊 Evaluation Summary ===\");\n const summaryList = this.formatSummary(summary);\n const summaryTable = new Table({\n head: summaryList.map((h) => h.header),\n colWidths: summaryList.map((h) => h.width),\n chars,\n });\n\n summaryTable.push(summaryList.map((h) => h.value));\n console.log(summaryTable.toString());\n\n const list = this.formatReport(report);\n if (!list.length) return;\n\n console.log(\"\\n=== 📋 Detailed Results ===\");\n const pages = renderPagedTable(list, { maxCols: 5, chars });\n for (const page of pages) {\n console.log(page);\n }\n\n const failed = report.results.filter((r) => r.error);\n if (failed.length) {\n console.log(chalk.red(\"\\n=== ❌ Failed Cases ===\"));\n for (const f of failed) {\n console.log(\n `#${f.id} Input: ${JSON.stringify(f.input)}\\n Expected: ${\n f.expected ? JSON.stringify(f.expected) : \"-\"\n }\\n Output: ${f.output ? JSON.stringify(f.output) : \"-\"}\\n Error: ${f.error ?? \"-\"}\\n`,\n );\n }\n }\n }\n}\n\nexport class CsvReporter extends BaseReporter {\n override name = \"csv\";\n\n constructor(private filePath: string) {\n super();\n }\n\n private async writeCsv(filePath: string, data: Record<string, any>[], headers: string[]) {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n\n const stream = format({ headers });\n const writeStream = fs.createWriteStream(filePath);\n stream.pipe(writeStream);\n\n for (const row of data) {\n stream.write(row);\n }\n\n stream.end();\n\n await new Promise<void>((resolve, reject) => {\n writeStream.on(\"finish\", resolve);\n writeStream.on(\"error\", reject);\n });\n }\n\n override async report(report: Report): Promise<void> {\n const list = this.formatReport(report);\n if (list.length > 0) {\n const resultsHeaders = list[0]?.map((h) => h.header) ?? [];\n const resultsRows = list.map((row) => {\n const record: Record<string, string | number> = {};\n for (const item of row) {\n record[item.header] = item.value;\n }\n return record;\n });\n\n const ext = path.extname(this.filePath).toLowerCase();\n const outputFile = ext ? this.filePath : `${this.filePath}.csv`;\n\n await this.writeCsv(outputFile, resultsRows, resultsHeaders);\n\n console.log(`✅ Results CSV saved to ${outputFile}`);\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ let _aigne_core = require("@aigne/core");
3
+
4
+ //#region src/utils/evaluation/runner.ts
5
+ function withTimeout(promise, ms, id) {
6
+ return new Promise((resolve, reject) => {
7
+ const timer = setTimeout(() => {
8
+ reject(/* @__PURE__ */ new Error(`Task ${id} timed out after ${ms}ms`));
9
+ }, ms);
10
+ promise.then((res) => {
11
+ clearTimeout(timer);
12
+ resolve(res);
13
+ }).catch((err) => {
14
+ clearTimeout(timer);
15
+ reject(err);
16
+ });
17
+ });
18
+ }
19
+ var DefaultRunnerWithConcurrency = class {
20
+ name = "default-runner-with-concurrency";
21
+ constructor(agent, aigne = new _aigne_core.AIGNE()) {
22
+ this.agent = agent;
23
+ this.aigne = aigne;
24
+ }
25
+ async *run(dataset, options) {
26
+ const concurrency = options?.concurrency ?? 1;
27
+ const timeoutMs = options?.timeoutMs ?? 0;
28
+ let index = 0;
29
+ const yieldQueue = [];
30
+ let waitingResolve = null;
31
+ let activeWorkers = 0;
32
+ const runTask = async (item) => {
33
+ const start = Date.now();
34
+ options?.hooks?.onBeforeRun?.(item);
35
+ try {
36
+ const execPromise = this.aigne.invoke(this.agent, item.input, { returnMetadata: true });
37
+ const result = timeoutMs > 0 ? await withTimeout(execPromise, timeoutMs, item.id) : await execPromise;
38
+ const { $meta, ...output } = result;
39
+ options?.hooks?.onAfterRun?.(result);
40
+ return {
41
+ ...item,
42
+ output,
43
+ latency: (Date.now() - start) / 1e3,
44
+ usage: $meta?.usage || {}
45
+ };
46
+ } catch (err) {
47
+ options?.hooks?.onError?.(err);
48
+ return {
49
+ ...item,
50
+ error: err.message
51
+ };
52
+ }
53
+ };
54
+ const worker = async () => {
55
+ activeWorkers++;
56
+ try {
57
+ while (true) {
58
+ const currentIndex = index++;
59
+ if (currentIndex >= dataset.length) break;
60
+ const item = dataset[currentIndex];
61
+ if (!item) continue;
62
+ const res = await runTask(item);
63
+ yieldQueue.push(res);
64
+ waitingResolve?.();
65
+ }
66
+ } finally {
67
+ activeWorkers--;
68
+ waitingResolve?.();
69
+ }
70
+ };
71
+ Array.from({ length: Math.min(concurrency, dataset.length) }, () => worker());
72
+ while (yieldQueue.length > 0 || activeWorkers > 0) if (yieldQueue.length > 0) {
73
+ const result = yieldQueue.shift();
74
+ if (result) yield result;
75
+ } else {
76
+ await new Promise((resolve) => {
77
+ waitingResolve = resolve;
78
+ });
79
+ waitingResolve = null;
80
+ }
81
+ }
82
+ };
83
+
84
+ //#endregion
85
+ exports.DefaultRunnerWithConcurrency = DefaultRunnerWithConcurrency;
@@ -0,0 +1,85 @@
1
+ import { AIGNE } from "@aigne/core";
2
+
3
+ //#region src/utils/evaluation/runner.ts
4
+ function withTimeout(promise, ms, id) {
5
+ return new Promise((resolve, reject) => {
6
+ const timer = setTimeout(() => {
7
+ reject(/* @__PURE__ */ new Error(`Task ${id} timed out after ${ms}ms`));
8
+ }, ms);
9
+ promise.then((res) => {
10
+ clearTimeout(timer);
11
+ resolve(res);
12
+ }).catch((err) => {
13
+ clearTimeout(timer);
14
+ reject(err);
15
+ });
16
+ });
17
+ }
18
+ var DefaultRunnerWithConcurrency = class {
19
+ name = "default-runner-with-concurrency";
20
+ constructor(agent, aigne = new AIGNE()) {
21
+ this.agent = agent;
22
+ this.aigne = aigne;
23
+ }
24
+ async *run(dataset, options) {
25
+ const concurrency = options?.concurrency ?? 1;
26
+ const timeoutMs = options?.timeoutMs ?? 0;
27
+ let index = 0;
28
+ const yieldQueue = [];
29
+ let waitingResolve = null;
30
+ let activeWorkers = 0;
31
+ const runTask = async (item) => {
32
+ const start = Date.now();
33
+ options?.hooks?.onBeforeRun?.(item);
34
+ try {
35
+ const execPromise = this.aigne.invoke(this.agent, item.input, { returnMetadata: true });
36
+ const result = timeoutMs > 0 ? await withTimeout(execPromise, timeoutMs, item.id) : await execPromise;
37
+ const { $meta, ...output } = result;
38
+ options?.hooks?.onAfterRun?.(result);
39
+ return {
40
+ ...item,
41
+ output,
42
+ latency: (Date.now() - start) / 1e3,
43
+ usage: $meta?.usage || {}
44
+ };
45
+ } catch (err) {
46
+ options?.hooks?.onError?.(err);
47
+ return {
48
+ ...item,
49
+ error: err.message
50
+ };
51
+ }
52
+ };
53
+ const worker = async () => {
54
+ activeWorkers++;
55
+ try {
56
+ while (true) {
57
+ const currentIndex = index++;
58
+ if (currentIndex >= dataset.length) break;
59
+ const item = dataset[currentIndex];
60
+ if (!item) continue;
61
+ const res = await runTask(item);
62
+ yieldQueue.push(res);
63
+ waitingResolve?.();
64
+ }
65
+ } finally {
66
+ activeWorkers--;
67
+ waitingResolve?.();
68
+ }
69
+ };
70
+ Array.from({ length: Math.min(concurrency, dataset.length) }, () => worker());
71
+ while (yieldQueue.length > 0 || activeWorkers > 0) if (yieldQueue.length > 0) {
72
+ const result = yieldQueue.shift();
73
+ if (result) yield result;
74
+ } else {
75
+ await new Promise((resolve) => {
76
+ waitingResolve = resolve;
77
+ });
78
+ waitingResolve = null;
79
+ }
80
+ }
81
+ };
82
+
83
+ //#endregion
84
+ export { DefaultRunnerWithConcurrency };
85
+ //# sourceMappingURL=runner.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.mjs","names":[],"sources":["../../../src/utils/evaluation/runner.ts"],"sourcesContent":["import { type Agent, AIGNE } from \"@aigne/core\";\nimport type { DatasetItem, Runner, RunOptions, RunResult } from \"./type.js\";\n\nexport class DefaultRunner implements Runner {\n name = \"default-runner\";\n\n constructor(\n private agent: Agent,\n private aigne: AIGNE = new AIGNE(),\n ) {}\n\n async *run(dataset: DatasetItem[], options?: RunOptions): AsyncGenerator<RunResult> {\n const timeoutMs = options?.timeoutMs ?? 0;\n\n const runTask = async (item: DatasetItem): Promise<RunResult> => {\n const start = Date.now();\n options?.hooks?.onBeforeRun?.(item);\n\n try {\n const execPromise = this.aigne.invoke(this.agent, item.input, { returnMetadata: true });\n const result =\n timeoutMs > 0 ? await withTimeout(execPromise, timeoutMs, item.id) : await execPromise;\n const { $meta, ...output } = result;\n\n options?.hooks?.onAfterRun?.(result);\n\n return {\n ...item,\n output,\n latency: (Date.now() - start) / 1000,\n usage: $meta?.usage || {},\n };\n } catch (err: any) {\n options?.hooks?.onError?.(err);\n\n return {\n ...item,\n error: err.message,\n };\n }\n };\n\n for (const item of dataset) {\n yield await runTask(item);\n }\n }\n}\n\nfunction withTimeout<T>(promise: Promise<T>, ms: number, id: string | number): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(`Task ${id} timed out after ${ms}ms`));\n }, ms);\n\n promise\n .then((res) => {\n clearTimeout(timer);\n resolve(res);\n })\n .catch((err) => {\n clearTimeout(timer);\n reject(err);\n });\n });\n}\n\nexport class DefaultRunnerWithConcurrency implements Runner {\n name = \"default-runner-with-concurrency\";\n\n constructor(\n private agent: Agent,\n private aigne: AIGNE = new AIGNE(),\n ) {}\n\n async *run(dataset: DatasetItem[], options?: RunOptions): AsyncGenerator<RunResult> {\n const concurrency = options?.concurrency ?? 1;\n const timeoutMs = options?.timeoutMs ?? 0;\n\n let index = 0;\n const yieldQueue: RunResult[] = [];\n let waitingResolve: (() => void) | null = null;\n let activeWorkers = 0;\n\n const runTask = async (item: DatasetItem): Promise<RunResult> => {\n const start = Date.now();\n options?.hooks?.onBeforeRun?.(item);\n\n try {\n const execPromise = this.aigne.invoke(this.agent, item.input, { returnMetadata: true });\n const result =\n timeoutMs > 0 ? await withTimeout(execPromise, timeoutMs, item.id) : await execPromise;\n const { $meta, ...output } = result;\n\n options?.hooks?.onAfterRun?.(result);\n\n return {\n ...item,\n output,\n latency: (Date.now() - start) / 1000,\n usage: $meta?.usage || {},\n };\n } catch (err: any) {\n options?.hooks?.onError?.(err);\n\n return {\n ...item,\n error: err.message,\n };\n }\n };\n\n const worker = async () => {\n activeWorkers++;\n try {\n while (true) {\n const currentIndex = index++;\n if (currentIndex >= dataset.length) break;\n\n const item = dataset[currentIndex];\n if (!item) continue;\n const res = await runTask(item);\n\n yieldQueue.push(res);\n waitingResolve?.();\n }\n } finally {\n activeWorkers--;\n waitingResolve?.();\n }\n };\n\n Array.from({ length: Math.min(concurrency, dataset.length) }, () => worker());\n\n while (yieldQueue.length > 0 || activeWorkers > 0) {\n if (yieldQueue.length > 0) {\n const result = yieldQueue.shift();\n if (result) yield result;\n } else {\n await new Promise<void>((resolve) => {\n waitingResolve = resolve;\n });\n waitingResolve = null;\n }\n }\n }\n}\n"],"mappings":";;;AAgDA,SAAS,YAAe,SAAqB,IAAY,IAAiC;AACxF,QAAO,IAAI,SAAY,SAAS,WAAW;EACzC,MAAM,QAAQ,iBAAiB;AAC7B,0BAAO,IAAI,MAAM,QAAQ,GAAG,mBAAmB,GAAG,IAAI,CAAC;KACtD,GAAG;AAEN,UACG,MAAM,QAAQ;AACb,gBAAa,MAAM;AACnB,WAAQ,IAAI;IACZ,CACD,OAAO,QAAQ;AACd,gBAAa,MAAM;AACnB,UAAO,IAAI;IACX;GACJ;;AAGJ,IAAa,+BAAb,MAA4D;CAC1D,OAAO;CAEP,YACE,AAAQ,OACR,AAAQ,QAAe,IAAI,OAAO,EAClC;EAFQ;EACA;;CAGV,OAAO,IAAI,SAAwB,SAAiD;EAClF,MAAM,cAAc,SAAS,eAAe;EAC5C,MAAM,YAAY,SAAS,aAAa;EAExC,IAAI,QAAQ;EACZ,MAAM,aAA0B,EAAE;EAClC,IAAI,iBAAsC;EAC1C,IAAI,gBAAgB;EAEpB,MAAM,UAAU,OAAO,SAA0C;GAC/D,MAAM,QAAQ,KAAK,KAAK;AACxB,YAAS,OAAO,cAAc,KAAK;AAEnC,OAAI;IACF,MAAM,cAAc,KAAK,MAAM,OAAO,KAAK,OAAO,KAAK,OAAO,EAAE,gBAAgB,MAAM,CAAC;IACvF,MAAM,SACJ,YAAY,IAAI,MAAM,YAAY,aAAa,WAAW,KAAK,GAAG,GAAG,MAAM;IAC7E,MAAM,EAAE,OAAO,GAAG,WAAW;AAE7B,aAAS,OAAO,aAAa,OAAO;AAEpC,WAAO;KACL,GAAG;KACH;KACA,UAAU,KAAK,KAAK,GAAG,SAAS;KAChC,OAAO,OAAO,SAAS,EAAE;KAC1B;YACM,KAAU;AACjB,aAAS,OAAO,UAAU,IAAI;AAE9B,WAAO;KACL,GAAG;KACH,OAAO,IAAI;KACZ;;;EAIL,MAAM,SAAS,YAAY;AACzB;AACA,OAAI;AACF,WAAO,MAAM;KACX,MAAM,eAAe;AACrB,SAAI,gBAAgB,QAAQ,OAAQ;KAEpC,MAAM,OAAO,QAAQ;AACrB,SAAI,CAAC,KAAM;KACX,MAAM,MAAM,MAAM,QAAQ,KAAK;AAE/B,gBAAW,KAAK,IAAI;AACpB,uBAAkB;;aAEZ;AACR;AACA,sBAAkB;;;AAItB,QAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,aAAa,QAAQ,OAAO,EAAE,QAAQ,QAAQ,CAAC;AAE7E,SAAO,WAAW,SAAS,KAAK,gBAAgB,EAC9C,KAAI,WAAW,SAAS,GAAG;GACzB,MAAM,SAAS,WAAW,OAAO;AACjC,OAAI,OAAQ,OAAM;SACb;AACL,SAAM,IAAI,SAAe,YAAY;AACnC,qBAAiB;KACjB;AACF,oBAAiB"}
@@ -0,0 +1,12 @@
1
+
2
+ //#region src/utils/get-url-origin.ts
3
+ const getUrlOrigin = (url) => {
4
+ try {
5
+ return new URL(url).origin;
6
+ } catch {
7
+ return url;
8
+ }
9
+ };
10
+
11
+ //#endregion
12
+ exports.getUrlOrigin = getUrlOrigin;
@@ -0,0 +1,5 @@
1
+ //#region src/utils/get-url-origin.d.ts
2
+ declare const getUrlOrigin: (url: string) => string;
3
+ //#endregion
4
+ export { getUrlOrigin };
5
+ //# sourceMappingURL=get-url-origin.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-url-origin.d.cts","names":[],"sources":["../../src/utils/get-url-origin.ts"],"mappings":";cAAa,YAAA,GAAA,GAAA"}
@@ -0,0 +1,5 @@
1
+ //#region src/utils/get-url-origin.d.ts
2
+ declare const getUrlOrigin: (url: string) => string;
3
+ //#endregion
4
+ export { getUrlOrigin };
5
+ //# sourceMappingURL=get-url-origin.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-url-origin.d.mts","names":[],"sources":["../../src/utils/get-url-origin.ts"],"mappings":";cAAa,YAAA,GAAA,GAAA"}