@empiricalrun/test-gen 0.73.0 → 0.74.0

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 (313) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/dist/actions/utils/index.d.ts.map +1 -1
  3. package/dist/actions/utils/index.js +1 -2
  4. package/dist/agent/browsing/index.d.ts.map +1 -1
  5. package/dist/agent/browsing/index.js +9 -7
  6. package/dist/agent/browsing/utils.d.ts.map +1 -1
  7. package/dist/agent/browsing/utils.js +3 -4
  8. package/dist/agent/chat/agent-loop.d.ts +7 -8
  9. package/dist/agent/chat/agent-loop.d.ts.map +1 -1
  10. package/dist/agent/chat/agent-loop.js +14 -17
  11. package/dist/agent/chat/exports.d.ts +5 -4
  12. package/dist/agent/chat/exports.d.ts.map +1 -1
  13. package/dist/agent/chat/exports.js +9 -4
  14. package/dist/agent/chat/filesystem-cache.d.ts +12 -0
  15. package/dist/agent/chat/filesystem-cache.d.ts.map +1 -0
  16. package/dist/agent/chat/filesystem-cache.js +101 -0
  17. package/dist/agent/chat/index.d.ts +4 -1
  18. package/dist/agent/chat/index.d.ts.map +1 -1
  19. package/dist/agent/chat/index.js +44 -22
  20. package/dist/agent/chat/models.d.ts +2 -1
  21. package/dist/agent/chat/models.d.ts.map +1 -1
  22. package/dist/agent/chat/models.js +25 -3
  23. package/dist/agent/chat/prompt/index.d.ts +3 -1
  24. package/dist/agent/chat/prompt/index.d.ts.map +1 -1
  25. package/dist/agent/chat/prompt/index.js +77 -2
  26. package/dist/agent/chat/prompt/repo.d.ts.map +1 -1
  27. package/dist/agent/chat/prompt/repo.js +1 -0
  28. package/dist/agent/chat/state.d.ts +6 -5
  29. package/dist/agent/chat/state.d.ts.map +1 -1
  30. package/dist/agent/chat/state.js +35 -5
  31. package/dist/agent/chat/utils.d.ts +1 -0
  32. package/dist/agent/chat/utils.d.ts.map +1 -1
  33. package/dist/agent/chat/utils.js +16 -3
  34. package/dist/agent/cua/index.js +1 -1
  35. package/dist/agent/cua/model.js +1 -1
  36. package/dist/agent/cua/pw-codegen/pw-pause/index.d.ts.map +1 -1
  37. package/dist/agent/cua/pw-codegen/pw-pause/index.js +0 -1
  38. package/dist/agent/master/browser-tests/fixtures.d.ts.map +1 -1
  39. package/dist/agent/master/browser-tests/fixtures.js +0 -1
  40. package/dist/agent/master/element-annotation.d.ts.map +1 -1
  41. package/dist/agent/master/element-annotation.js +1 -2
  42. package/dist/agent/master/execute-browser-action.d.ts.map +1 -1
  43. package/dist/agent/master/execute-browser-action.js +8 -6
  44. package/dist/agent/master/icon-descriptor/index.js +2 -2
  45. package/dist/agent/master/next-action.js +1 -1
  46. package/dist/agent/master/planner.js +1 -1
  47. package/dist/agent/master/scroller.js +2 -2
  48. package/dist/agent/master/with-hints.d.ts.map +1 -1
  49. package/dist/agent/master/with-hints.js +6 -5
  50. package/dist/agent/planner/run-time-planner.js +1 -1
  51. package/dist/agent/planner/run.d.ts.map +1 -1
  52. package/dist/agent/planner/run.js +4 -2
  53. package/dist/auth/cli-auth.js +1 -1
  54. package/dist/auth/token-store.d.ts.map +1 -1
  55. package/dist/auth/token-store.js +4 -6
  56. package/dist/bin/index.js +30 -163
  57. package/dist/bin/utils/context.js +1 -1
  58. package/dist/bin/utils/index.d.ts +0 -12
  59. package/dist/bin/utils/index.d.ts.map +1 -1
  60. package/dist/bin/utils/index.js +0 -70
  61. package/dist/bin/utils/platform/web/index.d.ts +2 -2
  62. package/dist/bin/utils/platform/web/index.d.ts.map +1 -1
  63. package/dist/bin/utils/platform/web/index.js +7 -5
  64. package/dist/bin/utils/scenarios/index.d.ts +11 -3
  65. package/dist/bin/utils/scenarios/index.d.ts.map +1 -1
  66. package/dist/browser-injected-scripts/annotate-elements.spec.js +0 -5
  67. package/dist/browser-injected-scripts/annotate-elements.spec.ts +0 -5
  68. package/dist/dashboard/client.d.ts +2 -2
  69. package/dist/dashboard/client.d.ts.map +1 -1
  70. package/dist/dashboard/client.js +4 -1
  71. package/dist/file-info/adapters/file-system/index.d.ts +9 -0
  72. package/dist/file-info/adapters/file-system/index.d.ts.map +1 -0
  73. package/dist/file-info/adapters/file-system/index.js +25 -0
  74. package/dist/file-info/adapters/file-system/reader.d.ts +6 -0
  75. package/dist/file-info/adapters/file-system/reader.d.ts.map +1 -0
  76. package/dist/file-info/{file-system.js → adapters/file-system/reader.js} +16 -0
  77. package/dist/file-info/adapters/github/index.d.ts +11 -0
  78. package/dist/file-info/adapters/github/index.d.ts.map +1 -0
  79. package/dist/file-info/adapters/github/index.js +29 -0
  80. package/dist/file-info/adapters/github/reader.d.ts +16 -0
  81. package/dist/file-info/adapters/github/reader.d.ts.map +1 -0
  82. package/dist/file-info/adapters/github/reader.js +185 -0
  83. package/dist/file-info/index.d.ts +4 -0
  84. package/dist/file-info/index.d.ts.map +1 -0
  85. package/dist/file-info/index.js +10 -0
  86. package/dist/index.d.ts +2 -0
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +6 -1
  89. package/dist/recorder/index.d.ts +7 -3
  90. package/dist/recorder/index.d.ts.map +1 -1
  91. package/dist/recorder/index.js +181 -64
  92. package/dist/recorder/temp-files.d.ts +1 -1
  93. package/dist/recorder/temp-files.d.ts.map +1 -1
  94. package/dist/recorder/temp-files.js +2 -2
  95. package/dist/recorder/upload.d.ts +1 -1
  96. package/dist/recorder/upload.d.ts.map +1 -1
  97. package/dist/recorder/upload.js +3 -3
  98. package/dist/tools/{commit-and-create-pr.d.ts → commit-and-create-pr/index.d.ts} +1 -1
  99. package/dist/tools/commit-and-create-pr/index.d.ts.map +1 -0
  100. package/dist/tools/{commit-and-create-pr.js → commit-and-create-pr/index.js} +8 -28
  101. package/dist/tools/definitions/commit-and-create-pr.d.ts +3 -0
  102. package/dist/tools/definitions/commit-and-create-pr.d.ts.map +1 -0
  103. package/dist/tools/definitions/commit-and-create-pr.js +31 -0
  104. package/dist/tools/definitions/delete-file.d.ts +3 -0
  105. package/dist/tools/definitions/delete-file.d.ts.map +1 -0
  106. package/dist/tools/definitions/delete-file.js +20 -0
  107. package/dist/tools/{download-build.d.ts → definitions/download-build.d.ts} +2 -2
  108. package/dist/tools/definitions/download-build.d.ts.map +1 -0
  109. package/dist/tools/definitions/download-build.js +18 -0
  110. package/dist/tools/definitions/fetch-video-analysis.d.ts +11 -0
  111. package/dist/tools/definitions/fetch-video-analysis.d.ts.map +1 -0
  112. package/dist/tools/definitions/fetch-video-analysis.js +26 -0
  113. package/dist/tools/definitions/grep.d.ts +3 -0
  114. package/dist/tools/definitions/grep.d.ts.map +1 -0
  115. package/dist/tools/definitions/grep.js +29 -0
  116. package/dist/tools/definitions/merge-conflicts.d.ts +3 -0
  117. package/dist/tools/definitions/merge-conflicts.d.ts.map +1 -0
  118. package/dist/tools/definitions/merge-conflicts.js +24 -0
  119. package/dist/tools/definitions/run-test.d.ts +2 -2
  120. package/dist/tools/definitions/run-test.d.ts.map +1 -1
  121. package/dist/tools/definitions/run-test.js +4 -7
  122. package/dist/tools/definitions/str_replace_editor.d.ts.map +1 -1
  123. package/dist/tools/definitions/str_replace_editor.js +9 -5
  124. package/dist/tools/definitions/test-gen-browser.d.ts +5 -5
  125. package/dist/tools/definitions/test-gen-browser.d.ts.map +1 -1
  126. package/dist/tools/definitions/test-gen-browser.js +4 -7
  127. package/dist/tools/definitions/upgrade-packages.d.ts +36 -0
  128. package/dist/tools/definitions/upgrade-packages.d.ts.map +1 -0
  129. package/dist/tools/definitions/upgrade-packages.js +21 -0
  130. package/dist/tools/definitions/utils.d.ts +15 -0
  131. package/dist/tools/definitions/utils.d.ts.map +1 -0
  132. package/dist/tools/definitions/utils.js +16 -0
  133. package/dist/tools/{delete-file.d.ts → delete-file/index.d.ts} +1 -1
  134. package/dist/tools/delete-file/index.d.ts.map +1 -0
  135. package/dist/tools/{delete-file.js → delete-file/index.js} +4 -16
  136. package/dist/tools/diagnosis-fetcher.d.ts.map +1 -1
  137. package/dist/tools/diagnosis-fetcher.js +13 -11
  138. package/dist/tools/download-build/index.d.ts +3 -0
  139. package/dist/tools/download-build/index.d.ts.map +1 -0
  140. package/dist/tools/{download-build.js → download-build/index.js} +4 -14
  141. package/dist/tools/executor/index.d.ts.map +1 -1
  142. package/dist/tools/executor/index.js +19 -4
  143. package/dist/tools/executor/utils/git.js +1 -1
  144. package/dist/tools/executor/utils/pr-description.d.ts +1 -1
  145. package/dist/tools/executor/utils/pr-description.d.ts.map +1 -1
  146. package/dist/tools/fetch-image/index.d.ts +10 -1
  147. package/dist/tools/fetch-image/index.d.ts.map +1 -1
  148. package/dist/tools/fetch-image/index.js +8 -1
  149. package/dist/tools/fetch-last-successful-test-run/index.d.ts +3 -0
  150. package/dist/tools/fetch-last-successful-test-run/index.d.ts.map +1 -0
  151. package/dist/tools/fetch-last-successful-test-run/index.js +60 -0
  152. package/dist/tools/fetch-video-analysis/index.d.ts +5 -0
  153. package/dist/tools/fetch-video-analysis/index.d.ts.map +1 -0
  154. package/dist/tools/fetch-video-analysis/index.js +89 -0
  155. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts +24 -0
  156. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts.map +1 -0
  157. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.js +209 -0
  158. package/dist/tools/fetch-video-analysis/utils.d.ts +10 -0
  159. package/dist/tools/fetch-video-analysis/utils.d.ts.map +1 -0
  160. package/dist/tools/fetch-video-analysis/utils.js +72 -0
  161. package/dist/tools/fetch-video-analysis/video-analysis.d.ts +7 -0
  162. package/dist/tools/fetch-video-analysis/video-analysis.d.ts.map +1 -0
  163. package/dist/tools/fetch-video-analysis/video-analysis.js +54 -0
  164. package/dist/tools/file-operations/create.d.ts +11 -0
  165. package/dist/tools/file-operations/create.d.ts.map +1 -0
  166. package/dist/tools/file-operations/create.js +60 -0
  167. package/dist/tools/file-operations/index.d.ts +15 -0
  168. package/dist/tools/file-operations/index.d.ts.map +1 -0
  169. package/dist/tools/file-operations/index.js +143 -0
  170. package/dist/tools/file-operations/insert.d.ts +11 -0
  171. package/dist/tools/file-operations/insert.d.ts.map +1 -0
  172. package/dist/tools/file-operations/insert.js +61 -0
  173. package/dist/tools/file-operations/replace.d.ts +11 -0
  174. package/dist/tools/file-operations/replace.d.ts.map +1 -0
  175. package/dist/tools/file-operations/replace.js +80 -0
  176. package/dist/tools/file-operations/shared/git-helper.d.ts +4 -0
  177. package/dist/tools/file-operations/shared/git-helper.d.ts.map +1 -0
  178. package/dist/tools/file-operations/shared/git-helper.js +29 -0
  179. package/dist/tools/file-operations/shared/helpers.d.ts +19 -0
  180. package/dist/tools/file-operations/shared/helpers.d.ts.map +1 -0
  181. package/dist/tools/file-operations/shared/helpers.js +133 -0
  182. package/dist/tools/file-operations/view/index.d.ts +14 -0
  183. package/dist/tools/file-operations/view/index.d.ts.map +1 -0
  184. package/dist/tools/file-operations/view/index.js +56 -0
  185. package/dist/tools/grep/index.d.ts.map +1 -1
  186. package/dist/tools/grep/index.js +2 -9
  187. package/dist/tools/grep/ripgrep/index.d.ts +2 -2
  188. package/dist/tools/grep/ripgrep/index.d.ts.map +1 -1
  189. package/dist/tools/grep/ripgrep/index.js +3 -3
  190. package/dist/tools/grep/types.d.ts.map +1 -0
  191. package/dist/tools/index.d.ts +7 -2
  192. package/dist/tools/index.d.ts.map +1 -1
  193. package/dist/tools/index.js +66 -22
  194. package/dist/tools/issues/create-issue.d.ts +3 -0
  195. package/dist/tools/issues/create-issue.d.ts.map +1 -0
  196. package/dist/tools/issues/create-issue.js +76 -0
  197. package/dist/tools/issues/index.d.ts +4 -0
  198. package/dist/tools/issues/index.d.ts.map +1 -0
  199. package/dist/tools/issues/index.js +9 -0
  200. package/dist/tools/issues/list-issues.d.ts +3 -0
  201. package/dist/tools/issues/list-issues.d.ts.map +1 -0
  202. package/dist/tools/issues/list-issues.js +32 -0
  203. package/dist/tools/issues/metadata-schema.d.ts +24 -0
  204. package/dist/tools/issues/metadata-schema.d.ts.map +1 -0
  205. package/dist/tools/issues/metadata-schema.js +22 -0
  206. package/dist/tools/issues/update-issue.d.ts +3 -0
  207. package/dist/tools/issues/update-issue.d.ts.map +1 -0
  208. package/dist/tools/issues/update-issue.js +75 -0
  209. package/dist/tools/issues/utils.d.ts +5 -0
  210. package/dist/tools/issues/utils.d.ts.map +1 -0
  211. package/dist/tools/issues/utils.js +26 -0
  212. package/dist/tools/list-environments.d.ts.map +1 -1
  213. package/dist/tools/list-environments.js +4 -0
  214. package/dist/tools/{merge-conflicts.d.ts → merge-conflicts/index.d.ts} +1 -1
  215. package/dist/tools/merge-conflicts/index.d.ts.map +1 -0
  216. package/dist/tools/{merge-conflicts.js → merge-conflicts/index.js} +3 -19
  217. package/dist/tools/test-gen-browser.js +4 -4
  218. package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
  219. package/dist/tools/test-run-fetcher/index.js +4 -0
  220. package/dist/tools/trace-dot-zip/index.d.ts +3 -0
  221. package/dist/tools/trace-dot-zip/index.d.ts.map +1 -0
  222. package/dist/tools/trace-dot-zip/index.js +48 -0
  223. package/dist/tools/trace-dot-zip/types.d.ts +86 -0
  224. package/dist/tools/trace-dot-zip/types.d.ts.map +1 -0
  225. package/dist/tools/trace-dot-zip/types.js +2 -0
  226. package/dist/tools/trace-dot-zip/utils/console-trace.d.ts +7 -0
  227. package/dist/tools/trace-dot-zip/utils/console-trace.d.ts.map +1 -0
  228. package/dist/tools/trace-dot-zip/utils/console-trace.js +34 -0
  229. package/dist/tools/trace-dot-zip/utils/extract-zip.d.ts +21 -0
  230. package/dist/tools/trace-dot-zip/utils/extract-zip.d.ts.map +1 -0
  231. package/dist/tools/trace-dot-zip/utils/extract-zip.js +174 -0
  232. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts +21 -0
  233. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -0
  234. package/dist/tools/trace-dot-zip/utils/network-trace.js +189 -0
  235. package/dist/tools/triage-summary/index.d.ts +3 -0
  236. package/dist/tools/triage-summary/index.d.ts.map +1 -0
  237. package/dist/tools/triage-summary/index.js +51 -0
  238. package/dist/tools/triage-summary/types.d.ts +5 -0
  239. package/dist/tools/triage-summary/types.d.ts.map +1 -0
  240. package/dist/tools/triage-summary/types.js +2 -0
  241. package/dist/tools/triage-summary/utils.d.ts +4 -0
  242. package/dist/tools/triage-summary/utils.d.ts.map +1 -0
  243. package/dist/tools/triage-summary/utils.js +16 -0
  244. package/dist/tools/upgrade-packages/index.d.ts.map +1 -1
  245. package/dist/tools/upgrade-packages/index.js +5 -15
  246. package/dist/tools/view-failed-test-run-report/index.d.ts +12 -0
  247. package/dist/tools/view-failed-test-run-report/index.d.ts.map +1 -0
  248. package/dist/tools/view-failed-test-run-report/index.js +163 -0
  249. package/dist/trace-utils/index.d.ts +4 -0
  250. package/dist/trace-utils/index.d.ts.map +1 -0
  251. package/dist/trace-utils/index.js +10 -0
  252. package/dist/utils/dedup-image-fs.d.ts +27 -0
  253. package/dist/utils/dedup-image-fs.d.ts.map +1 -0
  254. package/dist/utils/dedup-image-fs.js +88 -0
  255. package/dist/utils/dedup-image.d.ts +25 -0
  256. package/dist/utils/dedup-image.d.ts.map +1 -0
  257. package/dist/utils/dedup-image.js +80 -0
  258. package/dist/utils/env.d.ts.map +1 -1
  259. package/dist/utils/env.js +0 -1
  260. package/dist/utils/json.js +1 -1
  261. package/dist/utils/model.d.ts +3 -0
  262. package/dist/utils/model.d.ts.map +1 -0
  263. package/dist/utils/model.js +18 -0
  264. package/dist/utils/playwright-report-parser.d.ts +13 -0
  265. package/dist/utils/playwright-report-parser.d.ts.map +1 -0
  266. package/dist/utils/playwright-report-parser.js +138 -0
  267. package/dist/utils/slug.d.ts +1 -0
  268. package/dist/utils/slug.d.ts.map +1 -1
  269. package/dist/utils/slug.js +9 -1
  270. package/dist/utils/stripAnsi.d.ts.map +1 -1
  271. package/dist/utils/stripAnsi.js +1 -3
  272. package/eslint.config.mjs +43 -0
  273. package/package.json +22 -6
  274. package/tsconfig.tsbuildinfo +1 -1
  275. package/dist/agent/codegen/generate-code-apply-changes.d.ts +0 -13
  276. package/dist/agent/codegen/generate-code-apply-changes.d.ts.map +0 -1
  277. package/dist/agent/codegen/generate-code-apply-changes.js +0 -379
  278. package/dist/agent/codegen/repo-edit.d.ts +0 -23
  279. package/dist/agent/codegen/repo-edit.d.ts.map +0 -1
  280. package/dist/agent/codegen/repo-edit.js +0 -81
  281. package/dist/agent/codegen/run.d.ts +0 -20
  282. package/dist/agent/codegen/run.d.ts.map +0 -1
  283. package/dist/agent/codegen/run.js +0 -116
  284. package/dist/agent/enrich-prompt/index.d.ts +0 -12
  285. package/dist/agent/enrich-prompt/index.d.ts.map +0 -1
  286. package/dist/agent/enrich-prompt/index.js +0 -80
  287. package/dist/agent/enrich-prompt/utils.d.ts +0 -6
  288. package/dist/agent/enrich-prompt/utils.d.ts.map +0 -1
  289. package/dist/agent/enrich-prompt/utils.js +0 -11
  290. package/dist/agent/infer-agent/index.d.ts +0 -10
  291. package/dist/agent/infer-agent/index.d.ts.map +0 -1
  292. package/dist/agent/infer-agent/index.js +0 -60
  293. package/dist/evals/add-scenario-agent.evals.d.ts +0 -4
  294. package/dist/evals/add-scenario-agent.evals.d.ts.map +0 -1
  295. package/dist/evals/add-scenario-agent.evals.js +0 -44
  296. package/dist/evals/infer-master-or-code-agent.evals.d.ts +0 -4
  297. package/dist/evals/infer-master-or-code-agent.evals.d.ts.map +0 -1
  298. package/dist/evals/infer-master-or-code-agent.evals.js +0 -22
  299. package/dist/file-info/file-system.d.ts +0 -3
  300. package/dist/file-info/file-system.d.ts.map +0 -1
  301. package/dist/file-info/github.d.ts +0 -3
  302. package/dist/file-info/github.d.ts.map +0 -1
  303. package/dist/file-info/github.js +0 -107
  304. package/dist/tools/commit-and-create-pr.d.ts.map +0 -1
  305. package/dist/tools/delete-file.d.ts.map +0 -1
  306. package/dist/tools/download-build.d.ts.map +0 -1
  307. package/dist/tools/grep/ripgrep/types.d.ts.map +0 -1
  308. package/dist/tools/merge-conflicts.d.ts.map +0 -1
  309. package/dist/tools/str_replace_editor.d.ts +0 -22
  310. package/dist/tools/str_replace_editor.d.ts.map +0 -1
  311. package/dist/tools/str_replace_editor.js +0 -429
  312. /package/dist/tools/grep/{ripgrep/types.d.ts → types.d.ts} +0 -0
  313. /package/dist/tools/grep/{ripgrep/types.js → types.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,101 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.74.0
4
+
5
+ ### Minor Changes
6
+
7
+ - de7be1a: feat: added console traces to trace.zip tool
8
+ - 5fc3b85: feat: add fetchLastSuccessfulTestRun tool & api endpoint
9
+ - 8956b5c: refactor: simplify default model selection by delegating to a single function
10
+ - 7c4057e: feat: Made the listIssues tool call inline
11
+ - 17fa058: feat: add model mode, mode based tool & system prompt
12
+ - b52ec03: feat: triage summary tool with slack messages
13
+ - 3613b5f: feat: updated tool defs, runtTest, fetchLastSuccessfulTestRun, viewFailedTestRunReport, updated last-successful-run endpoint
14
+ - c0c97cf: feat: add chunking and dedup fs to avoid memory issues, add LLM usage to toolResponse
15
+ - a03391a: feat: upload unique frames to video-analysis bucket with video hash
16
+ - b404912: feat: added trace.zip tool for network traces (based on existing approach from inngest)
17
+ - 1d90369: feat: permalink support in issues, updated IDashboardClient to getBaseUrl
18
+ - 4b45e85: feat: split upload b/w frames and summary to decrease wait
19
+ - cbaf687: feat: Added auto option in CLI (empty --model results in default fallback)
20
+ - 5a8af12: feat: tools array based on agent mode or env
21
+ - ce54ca8: feat: video analysis working in CLI & UI minor cleanup
22
+ - 565a820: refactor: converted PUT calls to PATCH in update issue api
23
+ - 681aebb: fix: moving trace dot zip tool to not be inline so it gets executed on tool execute
24
+ - 773d1f8: feat: issue queries & tools update with new test metadata fields
25
+ - 6585338: feat: added inline viewTestRunReport tool for triage
26
+ - c0931db: feat: add issue(s) list & add tools
27
+ - 2718944: fix: trim viewTestRunReportTool result size by removing steps from results array
28
+ - aa14384: feat: add updateIssue tool
29
+ - c112011: feat: add reset-chat flag to cli
30
+ - 50c05ff: feat: added send triage summary tool
31
+ - 9635632: feat: issues with health stats
32
+ - 8eeb121: fix: project id filter fix, use-triage in cli
33
+
34
+ ### Patch Changes
35
+
36
+ - 1600c5d: feat: improvements to tool call telemetry
37
+ - 01b693e: feat: moved file view commands to inline exec
38
+ - 63a7b56: chore: remove some default model indirection
39
+ - af74c99: fix: rm codeframes, steps, snippet from the test viewTestRunReport output
40
+ - 9f33a7a: chore: fetch r2 files with suffix, add created_at to summary
41
+ - 04940d6: fix: fix chunking error in ffmpeg local client with error handling
42
+ - 028d845: chore: Added more tools to the inline execution roster
43
+ - 01b693e: fix: added branch name field to the GitHub API and minor refactors in the test-gen package
44
+ - 035febd: feat: runTest tool is now a common tool
45
+ - 7fecf0a: feat: enable streaming on openai chat models
46
+ - 4f598eb: feat: add gpt-5
47
+ - 4c8249a: test: fix agent-worker tests for parallel execution
48
+ - ad91c42: fix: allow insert_text in str_replace_editor tool for claude 4
49
+ - 68ce1d1: fix: fetchVideoAnalysis error handling, minor cleanup
50
+ - 2de74d0: chore: bump openai to 5.x
51
+ - 41816c3: chore: enabled inline tool execution for fetch diagnosis.
52
+ - 5651643: feat: recorder can pause before failing line when given a report url
53
+ - 3d738f4: chore: split text editor tool call telemetry for commands
54
+ - de01455: fix: moved project filter before inngest event send, added project id to log, separate test-gen utils exports
55
+ - 40ef060: fix: support dir paths in inline file view
56
+ - 5da0a60: feat: internal openai model supports multi-modal tool responses
57
+ - 6d80d21: feat: video analysis review UI under admin route
58
+ - fdc2ee8: feat: working video analysis with gemini-2.5-flash
59
+ - 612e383: fix: parallel tool calling claude chat model
60
+ - fe95cd7: chore: update prompts for triage session
61
+ - 4b898bd: fix: elevate usage summary to agent loop
62
+ - 7b3c12b: chore: simplify agent loop interface
63
+ - 91d856c: fix: mode in agent-loop mandatroy, and being used
64
+ - 5c91897: chore: Completed TODOs and refactored the inline tool identification logic"
65
+ - ac01228: chore: upgrade to eslint 9
66
+ - Updated dependencies [cb503a6]
67
+ - Updated dependencies [29eb6fb]
68
+ - Updated dependencies [a6e6141]
69
+ - Updated dependencies [63271bd]
70
+ - Updated dependencies [9f33a7a]
71
+ - Updated dependencies [c0c97cf]
72
+ - Updated dependencies [7fecf0a]
73
+ - Updated dependencies [4f598eb]
74
+ - Updated dependencies [ad91c42]
75
+ - Updated dependencies [ce54ca8]
76
+ - Updated dependencies [2de74d0]
77
+ - Updated dependencies [5651643]
78
+ - Updated dependencies [5da0a60]
79
+ - Updated dependencies [fdc2ee8]
80
+ - Updated dependencies [612e383]
81
+ - Updated dependencies [4b898bd]
82
+ - Updated dependencies [89858b4]
83
+ - Updated dependencies [f83a0b0]
84
+ - Updated dependencies [7b3c12b]
85
+ - Updated dependencies [98853ca]
86
+ - @empiricalrun/llm@0.21.0
87
+ - @empiricalrun/r2-uploader@0.3.10
88
+ - @empiricalrun/ast-parser@0.0.9
89
+
90
+ ## 0.73.1
91
+
92
+ ### Patch Changes
93
+
94
+ - a9b79d2: feat: auto-capture screenshots on test runs
95
+ - a1b9060: feat: add interleaved thinking to claude
96
+ - Updated dependencies [a1b9060]
97
+ - @empiricalrun/llm@0.20.2
98
+
3
99
  ## 0.73.0
4
100
 
5
101
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,EAAE,GAAG,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAED,wBAAsB,oCAAoC,CACxD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,iBAAiB,CAAC,EAAE,MAAM,gBAkH3B;AAED,wBAAgB,cAAc,WAG7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,EAAE,GAAG,CAAC;QAChB,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAED,wBAAsB,oCAAoC,CACxD,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,iBAAiB,CAAC,EAAE,MAAM,gBAkH3B;AAED,wBAAgB,cAAc,WAE7B"}
@@ -71,7 +71,7 @@ async function getPlaywrightLocatorUsingCssSelector(cssSelector, xpath, page, el
71
71
  });
72
72
  selectedElem = leastNestedElements[0];
73
73
  }
74
- catch (e) {
74
+ catch {
75
75
  // ignore error
76
76
  }
77
77
  }
@@ -103,6 +103,5 @@ async function getPlaywrightLocatorUsingCssSelector(cssSelector, xpath, page, el
103
103
  });
104
104
  }
105
105
  function getPageVarName() {
106
- // eslint-disable-next-line turbo/no-undeclared-env-vars
107
106
  return process.env.PAGE_VAR_NAME || "page";
108
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKlD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAsB,6BAA6B,CAAC,EAClD,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,iBAAiB,CAAC;IAC3B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAwD1C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAKlD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAsB,6BAA6B,CAAC,EAClD,MAAM,EACN,IAAI,EACJ,OAAO,EACP,GAAG,EACH,KAAK,GACN,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,iBAAiB,CAAC;IAC3B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CA0D1C"}
@@ -45,13 +45,15 @@ async function executeTaskUsingBrowsingAgent({ action, page, actions, llm, trace
45
45
  const toolCallsSpan = browsingAgentSpan?.span({ name: "tool-calls" });
46
46
  for (const i in toolCalls) {
47
47
  const toolCall = toolCalls[i];
48
- const args = JSON.parse(toolCall.function.arguments);
49
- const code = await actions.executeAction(toolCall.function.name, JSON.parse(toolCall.function.arguments), toolCallsSpan);
50
- generatedCodeSteps = {
51
- // Passing reason as action, in order to pass the correct action that took place to runtime planner
52
- action: args.reason,
53
- code,
54
- };
48
+ if ("function" in toolCall) {
49
+ const args = JSON.parse(toolCall.function.arguments);
50
+ const code = await actions.executeAction(toolCall.function.name, JSON.parse(toolCall.function.arguments), toolCallsSpan);
51
+ generatedCodeSteps = {
52
+ // Passing reason as action, in order to pass the correct action that took place to runtime planner
53
+ action: args.reason,
54
+ code,
55
+ };
56
+ }
55
57
  }
56
58
  toolCallsSpan?.end({ output: { toolCalls, generatedCodeSteps } });
57
59
  return generatedCodeSteps;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAsBvD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAKhD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,UAIvD;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,iBAgBnB;AAgED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,iBAwBhB;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,iBAoBA;AAED,wBAAsB,yBAAyB,CAAC,EAC9C,QAAQ,EACR,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAyBD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,iBA8HxD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CA2B/B;AAWD,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,oBAAoB,EACtC,gBAAgB,GAAE,MAAM,EAAU,GACjC,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAsBvD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAKhD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,UAIvD;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,iBAgBnB;AAgED,wBAAsB,yBAAyB,CAC7C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,iBAwBhB;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB,iBAoBA;AAED,wBAAsB,yBAAyB,CAAC,EAC9C,QAAQ,EACR,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDlB;AAyBD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,iBA6HxD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CA2B/B;AAWD,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,oBAAoB,GACrC,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,oBAAoB,EACtC,gBAAgB,GAAE,MAAM,EAAU,GACjC,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
@@ -183,7 +183,6 @@ function newContentsWithTestOnly(existingContents, originalTestBlock, updatedTes
183
183
  }
184
184
  async function injectPwLocatorGenerator(page) {
185
185
  let pathToInstalledTestGen = require.resolve(".").split("dist")[0];
186
- // eslint-disable-next-line turbo/no-undeclared-env-vars
187
186
  if (process.env.RUNNING_BROWSER_TESTS_FOR_TEST_GEN) {
188
187
  pathToInstalledTestGen = process.cwd();
189
188
  }
@@ -220,7 +219,7 @@ async function injectPwLocatorGenerator(page) {
220
219
  iframeDoc.head.appendChild(script);
221
220
  });
222
221
  }
223
- catch (e) {
222
+ catch {
224
223
  console.warn("Error injecting script in iframe.");
225
224
  }
226
225
  };
@@ -264,7 +263,7 @@ async function injectPwLocatorGenerator(page) {
264
263
  iframeDoc.head.appendChild(scr);
265
264
  });
266
265
  }
267
- catch (e) {
266
+ catch {
268
267
  console.warn("Error injecting script in iframe.");
269
268
  }
270
269
  };
@@ -284,7 +283,7 @@ async function injectPwLocatorGenerator(page) {
284
283
  }
285
284
  });
286
285
  }
287
- catch (e) {
286
+ catch {
288
287
  console.warn("Error injecting script in iframe.");
289
288
  }
290
289
  }
@@ -1,19 +1,18 @@
1
1
  import { TraceClient } from "@empiricalrun/llm";
2
2
  import { IChatModel } from "@empiricalrun/llm/chat";
3
- import { FileInfo, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition } from "@empiricalrun/shared-types";
4
- import { ToolExecutor } from "../../tools/executor";
5
- export declare function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, isToolExecutionRemote, toolExecutor, repoInfo, tools, onPendingToolCall, signal, featureFlags, }: {
6
- chatModel: IChatModel<any>;
3
+ import { CanonicalMessage, FileInfo, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition } from "@empiricalrun/shared-types";
4
+ export declare function chatAgentLoop<T = CanonicalMessage>({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, repoInfo, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, mode, }: {
5
+ chatModel: IChatModel<T>;
7
6
  selectedModel: SupportedChatModels;
8
- isToolExecutionRemote: boolean;
9
- toolExecutor: ToolExecutor | undefined;
10
7
  reporter: ReporterFunction;
11
8
  streamingMessageReporter?: StreamingMessageReporterFunc;
12
9
  trace?: TraceClient;
13
10
  repoInfo: FileInfo;
14
- tools: ToolDefinition[];
15
- onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
16
11
  signal?: AbortSignal;
17
12
  featureFlags: string[];
13
+ tools?: ToolDefinition[];
14
+ onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
15
+ onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
16
+ mode: string;
18
17
  }): Promise<void>;
19
18
  //# sourceMappingURL=agent-loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAmB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKpD,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,qBAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,MAAM,EACN,YAAY,GACb,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEhB"}
1
+ {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAOpC,wBAAsB,aAAa,CAAC,CAAC,GAAG,gBAAgB,EAAE,EACxD,SAAS,EACT,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,IAAI,GACL,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,mBAAmB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhB"}
@@ -1,15 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.chatAgentLoop = chatAgentLoop;
4
- const chat_1 = require("@empiricalrun/llm/chat");
4
+ const tools_1 = require("../../tools");
5
5
  const prompt_1 = require("./prompt");
6
6
  const state_1 = require("./state");
7
7
  const utils_1 = require("./utils");
8
- async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, isToolExecutionRemote, toolExecutor, repoInfo, tools, onPendingToolCall, signal, featureFlags, }) {
9
- const systemPrompt = await (0, prompt_1.buildSystemPrompt)(repoInfo);
8
+ async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, repoInfo, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, mode, }) {
9
+ const systemPrompt = await (0, prompt_1.getSystemPrompt)(repoInfo, mode);
10
10
  trace?.update({ input: { systemPrompt } });
11
+ if (!mode && !tools) {
12
+ throw new Error("Either mode or tools must be provided");
13
+ }
14
+ const availableToolsData = tools || (0, tools_1.availableTools)(selectedModel, mode === "triage");
11
15
  while (!chatModel.askUserForInput) {
12
- // Abort if signal is set
13
16
  if (signal?.aborted) {
14
17
  (0, utils_1.log)("[chatAgentLoop] Aborted by signal");
15
18
  break;
@@ -18,31 +21,25 @@ async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMess
18
21
  const toolCalls = chatModel.getPendingToolCalls();
19
22
  if (toolCalls.length > 0) {
20
23
  await onPendingToolCall(toolCalls);
21
- if (isToolExecutionRemote) {
22
- (0, utils_1.log)(`Tool call remote execution in progress`);
23
- break;
24
- }
25
- else {
26
- if (!toolExecutor) {
27
- throw new Error("ToolExecutor is required for local execution");
28
- }
29
- const toolResults = await toolExecutor.execute(toolCalls);
30
- chatModel.pushToolResultsMessage(toolCalls, toolResults);
31
- }
24
+ break;
32
25
  }
33
26
  (0, utils_1.log)(`${(0, utils_1.getModelName)(selectedModel)} is working...`);
34
27
  const response = await chatModel.getLLMResponse({
35
28
  systemPrompt,
36
- tools: tools.map((tool) => (0, chat_1.zodToOpenAITool)(tool.schema)),
29
+ tools: availableToolsData.map((t) => t.schema),
37
30
  selectedModel,
38
31
  trace,
39
32
  streamingMessageReporter,
40
- hasThinkingEnabled: featureFlags.includes("extendedThinkingClaude"),
33
+ hasThinkingEnabled: true,
34
+ hasInterleavedThinkingEnabled: featureFlags.includes("interleavedThinkingClaude"),
41
35
  });
42
36
  if (!response) {
43
37
  throw new Error("Error getting response from LLM");
44
38
  }
45
39
  chatModel.pushMessage(response);
40
+ if (onLLMResponse) {
41
+ await onLLMResponse(response, selectedModel);
42
+ }
46
43
  const latest = chatModel.getHumanReadableLatestMessage();
47
44
  if (signal?.aborted) {
48
45
  (0, utils_1.log)("[chatAgentLoop] Aborted by signal");
@@ -1,8 +1,9 @@
1
- export { getFileInfoFromGitHub } from "../../file-info/github";
1
+ export { getFileInfoFromGitHub, viewFileUsingGitHub, } from "../../file-info/adapters/github";
2
+ export { allToolsDefinitions } from "../../tools";
2
3
  export { chatAgentLoop } from "./agent-loop";
3
- export { defaultModel } from "./models";
4
- export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages, fetchToolCallAvailability, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, processAttachments, } from "./state";
5
- export { extractAttachments } from "./utils";
4
+ export { getDefaultChatModelId, resolveChatModelBasedOnInput } from "./models";
5
+ export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages, fetchToolCallFromId, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, processAttachments, } from "./state";
6
+ export { extractAttachments, getChatAgentMode } from "./utils";
6
7
  export { processToolCallsAndUpdateChatState, rejectPendingToolCalls, } from "./utils/tool-calls";
7
8
  export type { IChatModel } from "@empiricalrun/llm/chat";
8
9
  export { createChatModel, SUPPORTED_CHAT_MODELS } from "@empiricalrun/llm/chat";
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EACL,kCAAkC,EAClC,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EACL,kCAAkC,EAClC,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EACL,kCAAkC,EAClC,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,24 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = exports.rejectPendingToolCalls = exports.processToolCallsAndUpdateChatState = exports.extractAttachments = exports.processAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallAvailability = exports.createChatStateForMessages = exports.createChatState = exports.chatStateFromModel = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = exports.defaultModel = exports.chatAgentLoop = exports.getFileInfoFromGitHub = void 0;
4
- var github_1 = require("../../file-info/github");
3
+ exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = exports.rejectPendingToolCalls = exports.processToolCallsAndUpdateChatState = exports.getChatAgentMode = exports.extractAttachments = exports.processAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallFromId = exports.createChatStateForMessages = exports.createChatState = exports.chatStateFromModel = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = exports.resolveChatModelBasedOnInput = exports.getDefaultChatModelId = exports.chatAgentLoop = exports.allToolsDefinitions = exports.viewFileUsingGitHub = exports.getFileInfoFromGitHub = void 0;
4
+ var github_1 = require("../../file-info/adapters/github");
5
5
  Object.defineProperty(exports, "getFileInfoFromGitHub", { enumerable: true, get: function () { return github_1.getFileInfoFromGitHub; } });
6
+ Object.defineProperty(exports, "viewFileUsingGitHub", { enumerable: true, get: function () { return github_1.viewFileUsingGitHub; } });
7
+ var tools_1 = require("../../tools");
8
+ Object.defineProperty(exports, "allToolsDefinitions", { enumerable: true, get: function () { return tools_1.allToolsDefinitions; } });
6
9
  var agent_loop_1 = require("./agent-loop");
7
10
  Object.defineProperty(exports, "chatAgentLoop", { enumerable: true, get: function () { return agent_loop_1.chatAgentLoop; } });
8
11
  var models_1 = require("./models");
9
- Object.defineProperty(exports, "defaultModel", { enumerable: true, get: function () { return models_1.defaultModel; } });
12
+ Object.defineProperty(exports, "getDefaultChatModelId", { enumerable: true, get: function () { return models_1.getDefaultChatModelId; } });
13
+ Object.defineProperty(exports, "resolveChatModelBasedOnInput", { enumerable: true, get: function () { return models_1.resolveChatModelBasedOnInput; } });
10
14
  var state_1 = require("./state");
11
15
  Object.defineProperty(exports, "CHAT_STATE_VERSIONS_MIGRATIONS_MAP", { enumerable: true, get: function () { return state_1.CHAT_STATE_VERSIONS_MIGRATIONS_MAP; } });
12
16
  Object.defineProperty(exports, "chatStateFromModel", { enumerable: true, get: function () { return state_1.chatStateFromModel; } });
13
17
  Object.defineProperty(exports, "createChatState", { enumerable: true, get: function () { return state_1.createChatState; } });
14
18
  Object.defineProperty(exports, "createChatStateForMessages", { enumerable: true, get: function () { return state_1.createChatStateForMessages; } });
15
- Object.defineProperty(exports, "fetchToolCallAvailability", { enumerable: true, get: function () { return state_1.fetchToolCallAvailability; } });
19
+ Object.defineProperty(exports, "fetchToolCallFromId", { enumerable: true, get: function () { return state_1.fetchToolCallFromId; } });
16
20
  Object.defineProperty(exports, "getLatestDownloadBuildUrl", { enumerable: true, get: function () { return state_1.getLatestDownloadBuildUrl; } });
17
21
  Object.defineProperty(exports, "LATEST_CHAT_STATE_VERSION", { enumerable: true, get: function () { return state_1.LATEST_CHAT_STATE_VERSION; } });
18
22
  Object.defineProperty(exports, "migrateChatState", { enumerable: true, get: function () { return state_1.migrateChatState; } });
19
23
  Object.defineProperty(exports, "processAttachments", { enumerable: true, get: function () { return state_1.processAttachments; } });
20
24
  var utils_1 = require("./utils");
21
25
  Object.defineProperty(exports, "extractAttachments", { enumerable: true, get: function () { return utils_1.extractAttachments; } });
26
+ Object.defineProperty(exports, "getChatAgentMode", { enumerable: true, get: function () { return utils_1.getChatAgentMode; } });
22
27
  var tool_calls_1 = require("./utils/tool-calls");
23
28
  Object.defineProperty(exports, "processToolCallsAndUpdateChatState", { enumerable: true, get: function () { return tool_calls_1.processToolCallsAndUpdateChatState; } });
24
29
  Object.defineProperty(exports, "rejectPendingToolCalls", { enumerable: true, get: function () { return tool_calls_1.rejectPendingToolCalls; } });
@@ -0,0 +1,12 @@
1
+ import { LLMCache } from "@empiricalrun/llm/chat";
2
+ export declare class FilesystemLLMCache implements LLMCache {
3
+ private cacheDir;
4
+ constructor(cacheDir?: string);
5
+ private ensureCacheDir;
6
+ private getCacheFilePath;
7
+ get(key: string): Promise<string | null>;
8
+ set(key: string, value: string): Promise<void>;
9
+ clear(): Promise<void>;
10
+ size(): Promise<number>;
11
+ }
12
+ //# sourceMappingURL=filesystem-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-cache.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/filesystem-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAKlD,qBAAa,kBAAmB,YAAW,QAAQ;IACjD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,CAAC,EAAE,MAAM;YAIf,cAAc;IAQ5B,OAAO,CAAC,gBAAgB;IAKlB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;CAS9B"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FilesystemLLMCache = void 0;
37
+ const crypto = __importStar(require("crypto"));
38
+ const fs = __importStar(require("fs/promises"));
39
+ const path = __importStar(require("path"));
40
+ class FilesystemLLMCache {
41
+ cacheDir;
42
+ constructor(cacheDir) {
43
+ this.cacheDir = cacheDir || path.join(process.cwd(), ".llm-cache");
44
+ }
45
+ async ensureCacheDir() {
46
+ try {
47
+ await fs.access(this.cacheDir);
48
+ }
49
+ catch {
50
+ await fs.mkdir(this.cacheDir, { recursive: true });
51
+ }
52
+ }
53
+ getCacheFilePath(key) {
54
+ const hash = crypto.createHash("sha256").update(key).digest("hex");
55
+ return path.join(this.cacheDir, `${hash}.json`);
56
+ }
57
+ async get(key) {
58
+ try {
59
+ await this.ensureCacheDir();
60
+ const filePath = this.getCacheFilePath(key);
61
+ const data = await fs.readFile(filePath, "utf-8");
62
+ return data;
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ async set(key, value) {
69
+ try {
70
+ await this.ensureCacheDir();
71
+ const filePath = this.getCacheFilePath(key);
72
+ await fs.writeFile(filePath, value, "utf-8");
73
+ }
74
+ catch (error) {
75
+ console.warn("Failed to write to LLM cache:", error);
76
+ }
77
+ }
78
+ async clear() {
79
+ try {
80
+ await this.ensureCacheDir();
81
+ const files = await fs.readdir(this.cacheDir);
82
+ await Promise.all(files
83
+ .filter((file) => file.endsWith(".json"))
84
+ .map((file) => fs.unlink(path.join(this.cacheDir, file))));
85
+ }
86
+ catch (error) {
87
+ console.warn("Failed to clear LLM cache:", error);
88
+ }
89
+ }
90
+ async size() {
91
+ try {
92
+ await this.ensureCacheDir();
93
+ const files = await fs.readdir(this.cacheDir);
94
+ return files.filter((file) => file.endsWith(".json")).length;
95
+ }
96
+ catch {
97
+ return 0;
98
+ }
99
+ }
100
+ }
101
+ exports.FilesystemLLMCache = FilesystemLLMCache;
@@ -1,8 +1,11 @@
1
1
  import { SupportedChatModels } from "@empiricalrun/shared-types";
2
2
  export declare function fetchEnvironmentVariables(): Promise<Record<string, string>>;
3
- export declare function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, }: {
3
+ export declare function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, useTriage, resetChat, useFSCache, }: {
4
4
  selectedModel: SupportedChatModels;
5
5
  useDiskForChatState: boolean;
6
6
  initialPromptContent: string | undefined;
7
+ useTriage: boolean;
8
+ useFSCache: boolean;
9
+ resetChat: boolean;
7
10
  }): Promise<void>;
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAkCpC,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAqBA;AAED,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GACrB,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,iBA4JA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAwCpC,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAkCA;AAED,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,UAAU,GACX,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,iBA2KA"}
@@ -6,29 +6,42 @@ const llm_1 = require("@empiricalrun/llm");
6
6
  const chat_1 = require("@empiricalrun/llm/chat");
7
7
  const picocolors_1 = require("picocolors");
8
8
  const client_1 = require("../../dashboard/client");
9
- const file_system_1 = require("../../file-info/file-system");
9
+ const reader_1 = require("../../file-info/adapters/file-system/reader");
10
10
  const human_in_the_loop_1 = require("../../human-in-the-loop");
11
- const tools_1 = require("../../tools");
11
+ const validation_1 = require("../../recorder/validation");
12
12
  const executor_1 = require("../../tools/executor");
13
13
  const git_1 = require("../../tools/executor/utils/git");
14
14
  const agent_loop_1 = require("./agent-loop");
15
+ const filesystem_cache_1 = require("./filesystem-cache");
15
16
  const state_1 = require("./state");
16
17
  const utils_1 = require("./utils");
17
18
  function stopCriteria(userPrompt) {
18
19
  return userPrompt?.toLowerCase() === "stop";
19
20
  }
20
21
  function concludeAgent(chatModel, useDiskForChatState, selectedModel, error) {
21
- console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + chatModel.getUsageSummary())}`);
22
+ console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + (0, state_1.getUsageSummary)(chatModel))}`);
22
23
  if (useDiskForChatState) {
23
24
  (0, state_1.saveToDisk)(chatModel.messages, selectedModel, chatModel.askUserForInput, error);
24
25
  }
25
26
  }
26
27
  async function fetchEnvironmentVariables() {
27
- const apiClient = new client_1.DashboardAPIClient({
28
- authType: "project-api-key",
29
- projectApiKey: process.env.EMPIRICALRUN_API_KEY,
30
- });
31
- const data = await apiClient.request("/api/environment-variables", { method: "GET" });
28
+ const projectApiKey = process.env.EMPIRICALRUN_API_KEY;
29
+ let apiClient;
30
+ let queryParams = {};
31
+ if (projectApiKey) {
32
+ apiClient = new client_1.DashboardAPIClient({
33
+ authType: "project-api-key",
34
+ projectApiKey: process.env.EMPIRICALRUN_API_KEY,
35
+ });
36
+ }
37
+ else {
38
+ apiClient = new client_1.DashboardAPIClient({
39
+ authType: "user-access-token",
40
+ });
41
+ const repoName = await (0, validation_1.validatePackageJson)(process.cwd());
42
+ queryParams = { project_repo_name: repoName };
43
+ }
44
+ const data = await apiClient.request("/api/environment-variables", { method: "GET", params: queryParams });
32
45
  if (!data.data || !data.data.environment_variables) {
33
46
  console.error("Failed to fetch environment variables:", data);
34
47
  throw new Error("Failed to fetch environment variables");
@@ -39,9 +52,13 @@ async function fetchEnvironmentVariables() {
39
52
  }, {});
40
53
  return envVars;
41
54
  }
42
- async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, }) {
55
+ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, useTriage, resetChat, useFSCache, }) {
43
56
  let chatState;
44
- let enableStreaming = true;
57
+ const enableStreaming = !useFSCache;
58
+ const cache = useFSCache ? new filesystem_cache_1.FilesystemLLMCache() : undefined;
59
+ if (resetChat) {
60
+ (0, state_1.clearChatState)();
61
+ }
45
62
  if (useDiskForChatState) {
46
63
  chatState = (0, state_1.loadChatState)();
47
64
  }
@@ -50,11 +67,10 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
50
67
  const branchName = `branch-${randomId}`;
51
68
  await (0, git_1.checkoutBranch)(branchName, process.cwd());
52
69
  let messagesLoadedFromDisk = chatState?.messages || [];
53
- let chatModel = (0, chat_1.createChatModel)(messagesLoadedFromDisk, selectedModel);
70
+ let chatModel = (0, chat_1.createChatModel)(messagesLoadedFromDisk, selectedModel, undefined, cache);
54
71
  chatModel.validateEnvVarsForAuth();
55
72
  if (initialPromptContent && chatModel.messages.length === 0) {
56
73
  chatModel.pushUserMessage(initialPromptContent, []);
57
- chatModel.askUserForInput = false;
58
74
  }
59
75
  else if (initialPromptContent && chatModel.messages.length > 0) {
60
76
  console.warn(`Ignoring initial prompt because we have existing messages.`);
@@ -99,6 +115,13 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
99
115
  const traceUrl = trace.getTraceUrl();
100
116
  console.log(`Starting ${selectedModel}: ${traceUrl}`);
101
117
  }
118
+ let authType = "user-access-token";
119
+ if (process.env.EMPIRICALRUN_API_KEY) {
120
+ authType = "project-api-key";
121
+ }
122
+ const apiClient = new client_1.DashboardAPIClient({
123
+ authType,
124
+ });
102
125
  while (!stopCriteria(userPrompt)) {
103
126
  if (chatModel.askUserForInput) {
104
127
  try {
@@ -132,14 +155,12 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
132
155
  chatSession: null,
133
156
  branchName,
134
157
  repoPath: process.cwd(),
135
- apiClient: new client_1.DashboardAPIClient({
136
- authType: "user-access-token",
137
- }),
158
+ apiClient,
138
159
  trace,
139
160
  featureFlags: [],
140
161
  environmentOverrides: await fetchEnvironmentVariables(),
141
162
  });
142
- const fileInfo = await (0, file_system_1.getFileInfoFromFS)(process.cwd());
163
+ const fileInfo = await (0, reader_1.getFileInfoFromFS)(process.cwd());
143
164
  await (0, agent_loop_1.chatAgentLoop)({
144
165
  chatModel,
145
166
  selectedModel,
@@ -170,16 +191,17 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
170
191
  })(),
171
192
  trace,
172
193
  repoInfo: fileInfo,
173
- isToolExecutionRemote: false,
174
- toolExecutor,
175
- tools: (0, tools_1.availableTools)(selectedModel),
176
- onPendingToolCall: async () => { },
177
- featureFlags: ["extendedThinkingClaude"],
194
+ onPendingToolCall: async (toolCalls) => {
195
+ const toolResults = await toolExecutor.execute(toolCalls);
196
+ chatModel.pushToolResultsMessage(toolCalls, toolResults);
197
+ },
198
+ featureFlags: [],
199
+ mode: (0, utils_1.getChatAgentMode)(useTriage ? "triage" : "test_generation"),
178
200
  });
179
201
  }
180
202
  }
181
203
  trace?.update({ output: { messages: chatModel.messages } });
182
204
  await llm_1.langfuseInstance?.flushAsync();
183
- const usageSummary = chatModel.getUsageSummary();
205
+ const usageSummary = (0, state_1.getUsageSummary)(chatModel);
184
206
  console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + usageSummary)}`);
185
207
  }