@empiricalrun/test-gen 0.73.1 → 0.74.1

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 +94 -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 +13 -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 +1 -0
  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,99 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.74.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [6f2aa95]
8
+ - @empiricalrun/ast-parser@0.0.10
9
+
10
+ ## 0.74.0
11
+
12
+ ### Minor Changes
13
+
14
+ - de7be1a: feat: added console traces to trace.zip tool
15
+ - 5fc3b85: feat: add fetchLastSuccessfulTestRun tool & api endpoint
16
+ - 8956b5c: refactor: simplify default model selection by delegating to a single function
17
+ - 7c4057e: feat: Made the listIssues tool call inline
18
+ - 17fa058: feat: add model mode, mode based tool & system prompt
19
+ - b52ec03: feat: triage summary tool with slack messages
20
+ - 3613b5f: feat: updated tool defs, runtTest, fetchLastSuccessfulTestRun, viewFailedTestRunReport, updated last-successful-run endpoint
21
+ - c0c97cf: feat: add chunking and dedup fs to avoid memory issues, add LLM usage to toolResponse
22
+ - a03391a: feat: upload unique frames to video-analysis bucket with video hash
23
+ - b404912: feat: added trace.zip tool for network traces (based on existing approach from inngest)
24
+ - 1d90369: feat: permalink support in issues, updated IDashboardClient to getBaseUrl
25
+ - 4b45e85: feat: split upload b/w frames and summary to decrease wait
26
+ - cbaf687: feat: Added auto option in CLI (empty --model results in default fallback)
27
+ - 5a8af12: feat: tools array based on agent mode or env
28
+ - ce54ca8: feat: video analysis working in CLI & UI minor cleanup
29
+ - 565a820: refactor: converted PUT calls to PATCH in update issue api
30
+ - 681aebb: fix: moving trace dot zip tool to not be inline so it gets executed on tool execute
31
+ - 773d1f8: feat: issue queries & tools update with new test metadata fields
32
+ - 6585338: feat: added inline viewTestRunReport tool for triage
33
+ - c0931db: feat: add issue(s) list & add tools
34
+ - 2718944: fix: trim viewTestRunReportTool result size by removing steps from results array
35
+ - aa14384: feat: add updateIssue tool
36
+ - c112011: feat: add reset-chat flag to cli
37
+ - 50c05ff: feat: added send triage summary tool
38
+ - 9635632: feat: issues with health stats
39
+ - 8eeb121: fix: project id filter fix, use-triage in cli
40
+
41
+ ### Patch Changes
42
+
43
+ - 1600c5d: feat: improvements to tool call telemetry
44
+ - 01b693e: feat: moved file view commands to inline exec
45
+ - 63a7b56: chore: remove some default model indirection
46
+ - af74c99: fix: rm codeframes, steps, snippet from the test viewTestRunReport output
47
+ - 9f33a7a: chore: fetch r2 files with suffix, add created_at to summary
48
+ - 04940d6: fix: fix chunking error in ffmpeg local client with error handling
49
+ - 028d845: chore: Added more tools to the inline execution roster
50
+ - 01b693e: fix: added branch name field to the GitHub API and minor refactors in the test-gen package
51
+ - 035febd: feat: runTest tool is now a common tool
52
+ - 7fecf0a: feat: enable streaming on openai chat models
53
+ - 4f598eb: feat: add gpt-5
54
+ - 4c8249a: test: fix agent-worker tests for parallel execution
55
+ - ad91c42: fix: allow insert_text in str_replace_editor tool for claude 4
56
+ - 68ce1d1: fix: fetchVideoAnalysis error handling, minor cleanup
57
+ - 2de74d0: chore: bump openai to 5.x
58
+ - 41816c3: chore: enabled inline tool execution for fetch diagnosis.
59
+ - 5651643: feat: recorder can pause before failing line when given a report url
60
+ - 3d738f4: chore: split text editor tool call telemetry for commands
61
+ - de01455: fix: moved project filter before inngest event send, added project id to log, separate test-gen utils exports
62
+ - 40ef060: fix: support dir paths in inline file view
63
+ - 5da0a60: feat: internal openai model supports multi-modal tool responses
64
+ - 6d80d21: feat: video analysis review UI under admin route
65
+ - fdc2ee8: feat: working video analysis with gemini-2.5-flash
66
+ - 612e383: fix: parallel tool calling claude chat model
67
+ - fe95cd7: chore: update prompts for triage session
68
+ - 4b898bd: fix: elevate usage summary to agent loop
69
+ - 7b3c12b: chore: simplify agent loop interface
70
+ - 91d856c: fix: mode in agent-loop mandatroy, and being used
71
+ - 5c91897: chore: Completed TODOs and refactored the inline tool identification logic"
72
+ - ac01228: chore: upgrade to eslint 9
73
+ - Updated dependencies [cb503a6]
74
+ - Updated dependencies [29eb6fb]
75
+ - Updated dependencies [a6e6141]
76
+ - Updated dependencies [63271bd]
77
+ - Updated dependencies [9f33a7a]
78
+ - Updated dependencies [c0c97cf]
79
+ - Updated dependencies [7fecf0a]
80
+ - Updated dependencies [4f598eb]
81
+ - Updated dependencies [ad91c42]
82
+ - Updated dependencies [ce54ca8]
83
+ - Updated dependencies [2de74d0]
84
+ - Updated dependencies [5651643]
85
+ - Updated dependencies [5da0a60]
86
+ - Updated dependencies [fdc2ee8]
87
+ - Updated dependencies [612e383]
88
+ - Updated dependencies [4b898bd]
89
+ - Updated dependencies [89858b4]
90
+ - Updated dependencies [f83a0b0]
91
+ - Updated dependencies [7b3c12b]
92
+ - Updated dependencies [98853ca]
93
+ - @empiricalrun/llm@0.21.0
94
+ - @empiricalrun/r2-uploader@0.3.10
95
+ - @empiricalrun/ast-parser@0.0.9
96
+
3
97
  ## 0.73.1
4
98
 
5
99
  ### Patch 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,CAoEhB"}
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,32 +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,
41
34
  hasInterleavedThinkingEnabled: featureFlags.includes("interleavedThinkingClaude"),
42
35
  });
43
36
  if (!response) {
44
37
  throw new Error("Error getting response from LLM");
45
38
  }
46
39
  chatModel.pushMessage(response);
40
+ if (onLLMResponse) {
41
+ await onLLMResponse(response, selectedModel);
42
+ }
47
43
  const latest = chatModel.getHumanReadableLatestMessage();
48
44
  if (signal?.aborted) {
49
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
  }
@@ -1,4 +1,5 @@
1
1
  import { SupportedChatModels } from "@empiricalrun/shared-types";
2
- export declare const defaultModel: SupportedChatModels;
2
+ export declare function getDefaultChatModelId(): SupportedChatModels;
3
+ export declare const resolveChatModelBasedOnInput: (requestedModel?: string) => SupportedChatModels;
3
4
  export declare const modelLabels: Record<SupportedChatModels, string>;
4
5
  //# sourceMappingURL=models.d.ts.map