@empiricalrun/test-gen 0.78.0 → 0.78.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 (375) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/actions/index.d.ts +0 -1
  3. package/dist/actions/index.d.ts.map +1 -1
  4. package/dist/actions/index.js +0 -10
  5. package/dist/agent/base/index.d.ts +28 -19
  6. package/dist/agent/base/index.d.ts.map +1 -1
  7. package/dist/agent/base/index.js +25 -14
  8. package/dist/agent/browsing/run.d.ts +1 -1
  9. package/dist/agent/browsing/run.d.ts.map +1 -1
  10. package/dist/agent/chat/agent-loop.d.ts +5 -5
  11. package/dist/agent/chat/agent-loop.d.ts.map +1 -1
  12. package/dist/agent/chat/exports.d.ts +3 -3
  13. package/dist/agent/chat/exports.d.ts.map +1 -1
  14. package/dist/agent/chat/exports.js +5 -9
  15. package/dist/agent/chat/index.d.ts +4 -3
  16. package/dist/agent/chat/index.d.ts.map +1 -1
  17. package/dist/agent/chat/index.js +10 -5
  18. package/dist/agent/chat/models.d.ts +1 -1
  19. package/dist/agent/chat/models.d.ts.map +1 -1
  20. package/dist/agent/chat/models.js +3 -3
  21. package/dist/agent/chat/prompt/pw-utils-docs.d.ts +1 -1
  22. package/dist/agent/chat/prompt/pw-utils-docs.d.ts.map +1 -1
  23. package/dist/agent/chat/prompt/pw-utils-docs.js +42 -0
  24. package/dist/agent/chat/prompt/repo.d.ts +2 -2
  25. package/dist/agent/chat/prompt/repo.d.ts.map +1 -1
  26. package/dist/agent/chat/prompt/repo.js +2 -2
  27. package/dist/agent/chat/state.d.ts +14 -19
  28. package/dist/agent/chat/state.d.ts.map +1 -1
  29. package/dist/agent/chat/state.js +10 -45
  30. package/dist/agent/chat/utils.d.ts +5 -5
  31. package/dist/agent/chat/utils.d.ts.map +1 -1
  32. package/dist/agent/cli.d.ts +2 -2
  33. package/dist/agent/cli.d.ts.map +1 -1
  34. package/dist/agent/cli.js +5 -6
  35. package/dist/agent/code-review/index.d.ts +4 -3
  36. package/dist/agent/code-review/index.d.ts.map +1 -1
  37. package/dist/agent/code-review/index.js +10 -4
  38. package/dist/agent/code-review/types.d.ts +2 -35
  39. package/dist/agent/code-review/types.d.ts.map +1 -1
  40. package/dist/agent/code-review/types.js +4 -11
  41. package/dist/agent/cua/index.d.ts +1 -1
  42. package/dist/agent/cua/index.d.ts.map +1 -1
  43. package/dist/agent/cua/index.js +13 -5
  44. package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.d.ts.map +1 -1
  45. package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.js +0 -3
  46. package/dist/agent/cua/pw-codegen/pw-pause/index.js +1 -1
  47. package/dist/agent/index.d.ts +1 -5
  48. package/dist/agent/index.d.ts.map +1 -1
  49. package/dist/agent/index.js +1 -11
  50. package/dist/agent/master/element-annotation.d.ts +1 -1
  51. package/dist/agent/master/element-annotation.d.ts.map +1 -1
  52. package/dist/agent/master/next-action.d.ts +1 -1
  53. package/dist/agent/master/next-action.d.ts.map +1 -1
  54. package/dist/agent/master/next-action.js +1 -6
  55. package/dist/agent/master/run.d.ts +3 -2
  56. package/dist/agent/master/run.d.ts.map +1 -1
  57. package/dist/agent/master/run.js +0 -26
  58. package/dist/agent/triage/index.d.ts +4 -3
  59. package/dist/agent/triage/index.d.ts.map +1 -1
  60. package/dist/agent/triage/index.js +31 -20
  61. package/dist/artifacts/index.d.ts +1 -1
  62. package/dist/artifacts/index.d.ts.map +1 -1
  63. package/dist/artifacts/utils.d.ts +1 -1
  64. package/dist/artifacts/utils.d.ts.map +1 -1
  65. package/dist/bin/environments.d.ts +1 -1
  66. package/dist/bin/environments.d.ts.map +1 -1
  67. package/dist/bin/index.js +2 -2
  68. package/dist/bin/setup.d.ts +1 -1
  69. package/dist/bin/setup.d.ts.map +1 -1
  70. package/dist/bin/utils/fs/index.d.ts +1 -1
  71. package/dist/bin/utils/fs/index.d.ts.map +1 -1
  72. package/dist/bin/utils/platform/web/index.d.ts +2 -2
  73. package/dist/bin/utils/platform/web/index.d.ts.map +1 -1
  74. package/dist/bin/utils/platform/web/index.js +1 -1
  75. package/dist/bin/utils/scenarios/index.d.ts +1 -1
  76. package/dist/bin/utils/scenarios/index.d.ts.map +1 -1
  77. package/dist/constants/index.d.ts +0 -4
  78. package/dist/constants/index.d.ts.map +1 -1
  79. package/dist/constants/index.js +0 -6
  80. package/dist/dashboard/client.d.ts +1 -1
  81. package/dist/dashboard/client.d.ts.map +1 -1
  82. package/dist/dashboard/index.d.ts +1 -0
  83. package/dist/dashboard/index.d.ts.map +1 -1
  84. package/dist/dashboard/index.js +4 -1
  85. package/dist/dashboard/tool-response.d.ts +5 -0
  86. package/dist/dashboard/tool-response.d.ts.map +1 -0
  87. package/dist/dashboard/tool-response.js +88 -0
  88. package/dist/dashboard/totp.js +1 -1
  89. package/dist/file/server.d.ts +1 -1
  90. package/dist/file/server.d.ts.map +1 -1
  91. package/dist/file/server.js +2 -1
  92. package/dist/file-info/adapters/file-system/index.d.ts +1 -1
  93. package/dist/file-info/adapters/file-system/index.d.ts.map +1 -1
  94. package/dist/file-info/adapters/file-system/reader.d.ts +1 -1
  95. package/dist/file-info/adapters/file-system/reader.d.ts.map +1 -1
  96. package/dist/file-info/adapters/github/index.d.ts +2 -1
  97. package/dist/file-info/adapters/github/index.d.ts.map +1 -1
  98. package/dist/file-info/adapters/github/reader.d.ts +2 -1
  99. package/dist/file-info/adapters/github/reader.d.ts.map +1 -1
  100. package/dist/recorder/index.d.ts.map +1 -1
  101. package/dist/recorder/index.js +2 -1
  102. package/dist/recorder/upload.d.ts +1 -1
  103. package/dist/recorder/upload.d.ts.map +1 -1
  104. package/dist/tools/analyse-video/index.d.ts +1 -1
  105. package/dist/tools/analyse-video/index.d.ts.map +1 -1
  106. package/dist/tools/analyse-video/index.js +20 -13
  107. package/dist/tools/create-pull-request/index.d.ts +1 -1
  108. package/dist/tools/create-pull-request/index.d.ts.map +1 -1
  109. package/dist/tools/create-pull-request/utils.d.ts +2 -1
  110. package/dist/tools/create-pull-request/utils.d.ts.map +1 -1
  111. package/dist/tools/definitions/analyse-video.d.ts +9 -19
  112. package/dist/tools/definitions/analyse-video.d.ts.map +1 -1
  113. package/dist/tools/definitions/analyse-video.js +12 -25
  114. package/dist/tools/definitions/delete-file.d.ts +9 -1
  115. package/dist/tools/definitions/delete-file.d.ts.map +1 -1
  116. package/dist/tools/definitions/delete-file.js +3 -3
  117. package/dist/tools/definitions/download-build.d.ts +1 -1
  118. package/dist/tools/definitions/download-build.d.ts.map +1 -1
  119. package/dist/tools/definitions/grep.d.ts +1 -1
  120. package/dist/tools/definitions/grep.d.ts.map +1 -1
  121. package/dist/tools/definitions/list-tests-and-projects.d.ts +1 -1
  122. package/dist/tools/definitions/list-tests-and-projects.d.ts.map +1 -1
  123. package/dist/tools/definitions/list-tests-and-projects.js +1 -1
  124. package/dist/tools/definitions/merge-conflicts.d.ts +1 -1
  125. package/dist/tools/definitions/merge-conflicts.d.ts.map +1 -1
  126. package/dist/tools/definitions/merge-conflicts.js +2 -2
  127. package/dist/tools/definitions/rename-file.d.ts +1 -1
  128. package/dist/tools/definitions/rename-file.d.ts.map +1 -1
  129. package/dist/tools/definitions/review-pull-request.d.ts +1 -1
  130. package/dist/tools/definitions/review-pull-request.d.ts.map +1 -1
  131. package/dist/tools/definitions/review-pull-request.js +1 -1
  132. package/dist/tools/definitions/run-test.d.ts +1 -1
  133. package/dist/tools/definitions/run-test.d.ts.map +1 -1
  134. package/dist/tools/definitions/str_replace_editor.d.ts +1 -1
  135. package/dist/tools/definitions/str_replace_editor.d.ts.map +1 -1
  136. package/dist/tools/definitions/test-gen-browser.d.ts +1 -1
  137. package/dist/tools/definitions/test-gen-browser.d.ts.map +1 -1
  138. package/dist/tools/definitions/upgrade-packages.d.ts +1 -1
  139. package/dist/tools/definitions/upgrade-packages.d.ts.map +1 -1
  140. package/dist/tools/definitions/utils.js +1 -1
  141. package/dist/tools/delete-file/index.d.ts +1 -1
  142. package/dist/tools/delete-file/index.d.ts.map +1 -1
  143. package/dist/tools/delete-file/index.js +6 -2
  144. package/dist/tools/diagnosis-fetcher.d.ts +1 -1
  145. package/dist/tools/diagnosis-fetcher.d.ts.map +1 -1
  146. package/dist/tools/diagnosis-fetcher.js +92 -47
  147. package/dist/tools/download-build/index.d.ts +1 -1
  148. package/dist/tools/download-build/index.d.ts.map +1 -1
  149. package/dist/tools/executor/base.d.ts +3 -2
  150. package/dist/tools/executor/base.d.ts.map +1 -1
  151. package/dist/tools/executor/base.js +5 -8
  152. package/dist/tools/executor/index.d.ts +3 -0
  153. package/dist/tools/executor/index.d.ts.map +1 -1
  154. package/dist/tools/executor/index.js +10 -10
  155. package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -1
  156. package/dist/tools/executor/utils/checkpoint.js +0 -4
  157. package/dist/tools/executor/utils/git.d.ts +7 -1
  158. package/dist/tools/executor/utils/git.d.ts.map +1 -1
  159. package/dist/tools/executor/utils/git.js +10 -3
  160. package/dist/tools/executor/utils/index.d.ts +1 -2
  161. package/dist/tools/executor/utils/index.d.ts.map +1 -1
  162. package/dist/tools/executor/utils/index.js +0 -20
  163. package/dist/tools/executor/utils/pr-description.d.ts +1 -1
  164. package/dist/tools/executor/utils/pr-description.d.ts.map +1 -1
  165. package/dist/tools/fetch-file/index.d.ts +1 -1
  166. package/dist/tools/fetch-file/index.d.ts.map +1 -1
  167. package/dist/tools/fetch-file/index.js +53 -13
  168. package/dist/tools/fetch-file/utils.d.ts +3 -0
  169. package/dist/tools/fetch-file/utils.d.ts.map +1 -0
  170. package/dist/tools/fetch-file/utils.js +136 -0
  171. package/dist/tools/fetch-session-diff/index.d.ts +1 -1
  172. package/dist/tools/fetch-session-diff/index.d.ts.map +1 -1
  173. package/dist/tools/fetch-session-diff/index.js +26 -2
  174. package/dist/tools/file-operations/create.d.ts +1 -1
  175. package/dist/tools/file-operations/create.d.ts.map +1 -1
  176. package/dist/tools/file-operations/index.d.ts +2 -1
  177. package/dist/tools/file-operations/index.d.ts.map +1 -1
  178. package/dist/tools/file-operations/insert.d.ts +1 -1
  179. package/dist/tools/file-operations/insert.d.ts.map +1 -1
  180. package/dist/tools/file-operations/replace.d.ts +1 -1
  181. package/dist/tools/file-operations/replace.d.ts.map +1 -1
  182. package/dist/tools/file-operations/replace.js +0 -1
  183. package/dist/tools/file-operations/view/index.d.ts +2 -1
  184. package/dist/tools/file-operations/view/index.d.ts.map +1 -1
  185. package/dist/tools/grep/index.d.ts +1 -1
  186. package/dist/tools/grep/index.d.ts.map +1 -1
  187. package/dist/tools/grep/index.js +15 -12
  188. package/dist/tools/index.d.ts +3 -24
  189. package/dist/tools/index.d.ts.map +1 -1
  190. package/dist/tools/index.js +13 -42
  191. package/dist/tools/issues-v1/create-issue.d.ts +3 -0
  192. package/dist/tools/issues-v1/create-issue.d.ts.map +1 -0
  193. package/dist/tools/{issues → issues-v1}/create-issue.js +5 -9
  194. package/dist/tools/issues-v1/index.d.ts.map +1 -0
  195. package/dist/tools/issues-v1/list-issues.d.ts +3 -0
  196. package/dist/tools/issues-v1/list-issues.d.ts.map +1 -0
  197. package/dist/tools/issues-v1/update-issue.d.ts +3 -0
  198. package/dist/tools/issues-v1/update-issue.d.ts.map +1 -0
  199. package/dist/tools/{issues → issues-v1}/update-issue.js +1 -9
  200. package/dist/tools/{issues → issues-v1}/utils.d.ts +2 -1
  201. package/dist/tools/issues-v1/utils.d.ts.map +1 -0
  202. package/dist/tools/issues-v2/create-issue.d.ts +3 -0
  203. package/dist/tools/issues-v2/create-issue.d.ts.map +1 -0
  204. package/dist/tools/issues-v2/create-issue.js +86 -0
  205. package/dist/tools/issues-v2/update-issue.d.ts +3 -0
  206. package/dist/tools/issues-v2/update-issue.d.ts.map +1 -0
  207. package/dist/tools/issues-v2/update-issue.js +87 -0
  208. package/dist/tools/list-environments.d.ts +1 -1
  209. package/dist/tools/list-environments.d.ts.map +1 -1
  210. package/dist/tools/list-tests-and-projects/index.d.ts +1 -1
  211. package/dist/tools/list-tests-and-projects/index.d.ts.map +1 -1
  212. package/dist/tools/list-tests-and-projects/index.js +14 -4
  213. package/dist/tools/merge-conflicts/index.d.ts +1 -1
  214. package/dist/tools/merge-conflicts/index.d.ts.map +1 -1
  215. package/dist/tools/merge-conflicts/index.js +23 -10
  216. package/dist/tools/rename-file/index.d.ts +1 -1
  217. package/dist/tools/rename-file/index.d.ts.map +1 -1
  218. package/dist/tools/rename-file/index.js +0 -1
  219. package/dist/tools/review-pull-request/index.d.ts +1 -1
  220. package/dist/tools/review-pull-request/index.d.ts.map +1 -1
  221. package/dist/tools/review-pull-request/index.js +5 -4
  222. package/dist/tools/run-test.d.ts +1 -1
  223. package/dist/tools/run-test.d.ts.map +1 -1
  224. package/dist/tools/test-gen-browser.d.ts +1 -1
  225. package/dist/tools/test-gen-browser.d.ts.map +1 -1
  226. package/dist/tools/test-gen-browser.js +55 -19
  227. package/dist/tools/test-run-fetcher/index.d.ts +2 -2
  228. package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
  229. package/dist/tools/test-run-fetcher/index.js +67 -66
  230. package/dist/tools/trace-dot-zip/index.d.ts +1 -1
  231. package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
  232. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -1
  233. package/dist/tools/trace-dot-zip/utils/network-trace.js +5 -10
  234. package/dist/tools/triage-summary/index.d.ts +1 -1
  235. package/dist/tools/triage-summary/index.d.ts.map +1 -1
  236. package/dist/tools/triage-summary/index.js +5 -2
  237. package/dist/tools/triage-summary/utils.d.ts +1 -1
  238. package/dist/tools/triage-summary/utils.d.ts.map +1 -1
  239. package/dist/tools/upgrade-packages/index.d.ts +1 -1
  240. package/dist/tools/upgrade-packages/index.d.ts.map +1 -1
  241. package/dist/tools/upgrade-packages/index.js +14 -8
  242. package/dist/tools/upgrade-packages/utils.d.ts +9 -5
  243. package/dist/tools/upgrade-packages/utils.d.ts.map +1 -1
  244. package/dist/tools/upgrade-packages/utils.js +56 -16
  245. package/dist/tools/utils/queue.d.ts +1 -1
  246. package/dist/tools/utils/queue.d.ts.map +1 -1
  247. package/dist/tools/utils/validate-schema.d.ts +3 -0
  248. package/dist/tools/utils/validate-schema.d.ts.map +1 -0
  249. package/dist/tools/utils/validate-schema.js +22 -0
  250. package/dist/utils/SQSClient.d.ts +1 -1
  251. package/dist/utils/SQSClient.d.ts.map +1 -1
  252. package/dist/utils/dedup/dedup-image.js +2 -2
  253. package/dist/utils/dedup/find-threshold.d.ts +1 -1
  254. package/dist/utils/dedup/find-threshold.d.ts.map +1 -1
  255. package/dist/utils/dedup/find-threshold.js +2 -2
  256. package/dist/utils/model.d.ts +1 -1
  257. package/dist/utils/model.d.ts.map +1 -1
  258. package/dist/utils/model.js +4 -3
  259. package/dist/utils/playwright-report-parser.d.ts +1 -1
  260. package/dist/utils/playwright-report-parser.d.ts.map +1 -1
  261. package/dist/utils/playwright-test-id.d.ts +8 -0
  262. package/dist/utils/playwright-test-id.d.ts.map +1 -0
  263. package/dist/utils/playwright-test-id.js +21 -0
  264. package/dist/utils/repo-tree.d.ts +1 -1
  265. package/dist/utils/repo-tree.d.ts.map +1 -1
  266. package/dist/utils/slug.d.ts.map +1 -1
  267. package/dist/utils/slug.js +15 -4
  268. package/dist/utils/url-validation.d.ts +2 -0
  269. package/dist/utils/url-validation.d.ts.map +1 -0
  270. package/dist/utils/url-validation.js +16 -0
  271. package/dist/video-core/index.d.ts +7 -24
  272. package/dist/video-core/index.d.ts.map +1 -1
  273. package/dist/video-core/index.js +32 -25
  274. package/dist/video-core/model-limits.d.ts +2 -2
  275. package/dist/video-core/model-limits.d.ts.map +1 -1
  276. package/dist/video-core/model-limits.js +9 -19
  277. package/dist/video-core/storage-manager.d.ts +2 -1
  278. package/dist/video-core/storage-manager.d.ts.map +1 -1
  279. package/dist/video-core/types.d.ts +1 -1
  280. package/dist/video-core/types.d.ts.map +1 -1
  281. package/dist/video-core/utils.d.ts +5 -7
  282. package/dist/video-core/utils.d.ts.map +1 -1
  283. package/dist/video-core/utils.js +39 -132
  284. package/package.json +8 -4
  285. package/tsconfig.tsbuildinfo +1 -1
  286. package/dist/actions/skill.d.ts +0 -21
  287. package/dist/actions/skill.d.ts.map +0 -1
  288. package/dist/actions/skill.js +0 -127
  289. package/dist/agent/chat/filesystem-cache.d.ts +0 -12
  290. package/dist/agent/chat/filesystem-cache.d.ts.map +0 -1
  291. package/dist/agent/chat/filesystem-cache.js +0 -101
  292. package/dist/agent/codegen/create-test-block.d.ts +0 -8
  293. package/dist/agent/codegen/create-test-block.d.ts.map +0 -1
  294. package/dist/agent/codegen/create-test-block.js +0 -47
  295. package/dist/agent/codegen/fix-ts-errors.d.ts +0 -12
  296. package/dist/agent/codegen/fix-ts-errors.d.ts.map +0 -1
  297. package/dist/agent/codegen/fix-ts-errors.js +0 -78
  298. package/dist/agent/codegen/lexical-scoped-vars.d.ts +0 -9
  299. package/dist/agent/codegen/lexical-scoped-vars.d.ts.map +0 -1
  300. package/dist/agent/codegen/lexical-scoped-vars.js +0 -55
  301. package/dist/agent/codegen/skills-retriever.d.ts +0 -26
  302. package/dist/agent/codegen/skills-retriever.d.ts.map +0 -1
  303. package/dist/agent/codegen/skills-retriever.js +0 -93
  304. package/dist/agent/codegen/test-update-feedback.d.ts +0 -12
  305. package/dist/agent/codegen/test-update-feedback.d.ts.map +0 -1
  306. package/dist/agent/codegen/test-update-feedback.js +0 -49
  307. package/dist/agent/codegen/types.d.ts +0 -25
  308. package/dist/agent/codegen/types.d.ts.map +0 -1
  309. package/dist/agent/codegen/types.js +0 -8
  310. package/dist/agent/codegen/update-flow.d.ts +0 -36
  311. package/dist/agent/codegen/update-flow.d.ts.map +0 -1
  312. package/dist/agent/codegen/update-flow.js +0 -259
  313. package/dist/agent/codegen/use-skill.d.ts +0 -11
  314. package/dist/agent/codegen/use-skill.d.ts.map +0 -1
  315. package/dist/agent/codegen/use-skill.js +0 -53
  316. package/dist/agent/codegen/utils.d.ts +0 -110
  317. package/dist/agent/codegen/utils.d.ts.map +0 -1
  318. package/dist/agent/codegen/utils.js +0 -376
  319. package/dist/agent/master/browser-tests/skills.spec.d.ts +0 -2
  320. package/dist/agent/master/browser-tests/skills.spec.d.ts.map +0 -1
  321. package/dist/agent/master/browser-tests/skills.spec.js +0 -112
  322. package/dist/agent/master/execute-skill-action.d.ts +0 -11
  323. package/dist/agent/master/execute-skill-action.d.ts.map +0 -1
  324. package/dist/agent/master/execute-skill-action.js +0 -23
  325. package/dist/agent/video-analysis/executor/index.d.ts +0 -5
  326. package/dist/agent/video-analysis/executor/index.d.ts.map +0 -1
  327. package/dist/agent/video-analysis/executor/index.js +0 -10
  328. package/dist/agent/video-analysis/index.d.ts +0 -7
  329. package/dist/agent/video-analysis/index.d.ts.map +0 -1
  330. package/dist/agent/video-analysis/index.js +0 -60
  331. package/dist/evals/append-create-test-agent.evals.d.ts +0 -4
  332. package/dist/evals/append-create-test-agent.evals.d.ts.map +0 -1
  333. package/dist/evals/append-create-test-agent.evals.js +0 -117
  334. package/dist/evals/fetch-pom-skills-agent.evals.d.ts +0 -4
  335. package/dist/evals/fetch-pom-skills-agent.evals.d.ts.map +0 -1
  336. package/dist/evals/fetch-pom-skills-agent.evals.js +0 -36
  337. package/dist/evals/master-agent.evals.d.ts +0 -4
  338. package/dist/evals/master-agent.evals.d.ts.map +0 -1
  339. package/dist/evals/master-agent.evals.js +0 -35
  340. package/dist/evals/type.d.ts +0 -12
  341. package/dist/evals/type.d.ts.map +0 -1
  342. package/dist/evals/type.js +0 -2
  343. package/dist/evals/update-scenario-agent.evals.d.ts +0 -4
  344. package/dist/evals/update-scenario-agent.evals.d.ts.map +0 -1
  345. package/dist/evals/update-scenario-agent.evals.js +0 -47
  346. package/dist/tools/fetch-last-successful-test-run/index.d.ts +0 -3
  347. package/dist/tools/fetch-last-successful-test-run/index.d.ts.map +0 -1
  348. package/dist/tools/fetch-last-successful-test-run/index.js +0 -60
  349. package/dist/tools/issues/create-issue.d.ts +0 -3
  350. package/dist/tools/issues/create-issue.d.ts.map +0 -1
  351. package/dist/tools/issues/index.d.ts.map +0 -1
  352. package/dist/tools/issues/list-issues.d.ts +0 -3
  353. package/dist/tools/issues/list-issues.d.ts.map +0 -1
  354. package/dist/tools/issues/metadata-schema.d.ts +0 -24
  355. package/dist/tools/issues/metadata-schema.d.ts.map +0 -1
  356. package/dist/tools/issues/metadata-schema.js +0 -22
  357. package/dist/tools/issues/update-issue.d.ts +0 -3
  358. package/dist/tools/issues/update-issue.d.ts.map +0 -1
  359. package/dist/tools/issues/utils.d.ts.map +0 -1
  360. package/dist/tools/utils/urls.d.ts +0 -5
  361. package/dist/tools/utils/urls.d.ts.map +0 -1
  362. package/dist/tools/utils/urls.js +0 -19
  363. package/dist/tools/view-failed-test-run-report/index.d.ts +0 -12
  364. package/dist/tools/view-failed-test-run-report/index.d.ts.map +0 -1
  365. package/dist/tools/view-failed-test-run-report/index.js +0 -151
  366. package/dist/video-core/agent-orchestrator.d.ts +0 -13
  367. package/dist/video-core/agent-orchestrator.d.ts.map +0 -1
  368. package/dist/video-core/agent-orchestrator.js +0 -59
  369. package/dist/video-core/xml-parser.d.ts +0 -3
  370. package/dist/video-core/xml-parser.d.ts.map +0 -1
  371. package/dist/video-core/xml-parser.js +0 -27
  372. /package/dist/tools/{issues → issues-v1}/index.d.ts +0 -0
  373. /package/dist/tools/{issues → issues-v1}/index.js +0 -0
  374. /package/dist/tools/{issues → issues-v1}/list-issues.js +0 -0
  375. /package/dist/tools/{issues → issues-v1}/utils.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.78.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 29eaffb: feat: added videostil as internal package
8
+ - Updated dependencies [2187966]
9
+ - Updated dependencies [897486a]
10
+ - Updated dependencies [758c41a]
11
+ - videostil@0.3.2
12
+ - @empiricalrun/llm@0.25.0
13
+
3
14
  ## 0.78.0
4
15
 
5
16
  ### Minor Changes
@@ -9,7 +9,6 @@ export declare class PlaywrightActions {
9
9
  constructor(page: TestGenPage, stateVariables?: Record<string, any>);
10
10
  executeAction(name: string | undefined, args: ActionArgs, trace?: TraceClient): Promise<string | undefined>;
11
11
  getBrowsingActionSchemas(): ActionSchema[];
12
- getSkillsActionSchemas(): ActionSchema[];
13
12
  generateCode(): {
14
13
  code: string;
15
14
  importPaths: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,UAAU,EACV,YAAY,EAEb,MAAM,UAAU,CAAC;AAWlB,qBAAa,iBAAiB;IAQ1B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,cAAc;IARxB,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,eAAe,CAInB;gBAEM,IAAI,EAAE,WAAW,EACjB,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAgB5C,aAAa,CACjB,IAAI,EAAE,MAAM,YAAK,EACjB,IAAI,EAAE,UAAU,EAChB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAqD9B,wBAAwB,IAAI,YAAY,EAAE;IAoB1C,sBAAsB,IAAI,YAAY,EAAE;IAWxC,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IAUD,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAK9B;;;;;;OAMG;IACH,aAAa,IAAI,OAAO;IAQxB,UAAU;IAWV,iBAAiB;IAIjB,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAItD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,UAAU,EACV,YAAY,EAEb,MAAM,UAAU,CAAC;AAUlB,qBAAa,iBAAiB;IAQ1B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,cAAc;IARxB,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,eAAe,CAInB;gBAEM,IAAI,EAAE,WAAW,EACjB,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAe5C,aAAa,CACjB,IAAI,EAAE,MAAM,YAAK,EACjB,IAAI,EAAE,UAAU,EAChB,KAAK,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAqD9B,wBAAwB,IAAI,YAAY,EAAE;IAoB1C,YAAY,IAAI;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IAUD,gBAAgB,CAAC,KAAK,EAAE,MAAM;IAK9B;;;;;;OAMG;IACH,aAAa,IAAI,OAAO;IAQxB,UAAU;IAWV,iBAAiB;IAIjB,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAItD"}
@@ -10,7 +10,6 @@ const fill_1 = require("./fill");
10
10
  const goto_1 = require("./goto");
11
11
  const hover_1 = require("./hover");
12
12
  const press_1 = require("./press");
13
- const skill_1 = require("./skill");
14
13
  const text_content_1 = require("./text-content");
15
14
  class PlaywrightActions {
16
15
  page;
@@ -29,7 +28,6 @@ class PlaywrightActions {
29
28
  done_1.doneActionGenerator,
30
29
  assert_1.assertTextVisibilityActionGenerator,
31
30
  text_content_1.textContentActionGenerator,
32
- skill_1.skillActionGenerator,
33
31
  ];
34
32
  this.recordedActions = [];
35
33
  }
@@ -102,14 +100,6 @@ class PlaywrightActions {
102
100
  }))
103
101
  .map((a) => a.schema);
104
102
  }
105
- getSkillsActionSchemas() {
106
- return [skill_1.skillActionGenerator]
107
- .map((a) => a(this.page, {
108
- stateVariables: this.stateVariables,
109
- setStateVariables: this.setStateVariables.bind(this),
110
- }))
111
- .map((a) => a.schema);
112
- }
113
103
  generateCode() {
114
104
  const importPaths = this.recordedActions
115
105
  .map((a) => a.importPath || "")
@@ -1,40 +1,49 @@
1
- import { type IChatCanonicalModel } from "@empiricalrun/llm/chat";
2
- import type { CanonicalMessage, ChatState, FileInfo, MessageCheckpoint, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, TextMessagePart, TextMessageWithAttachmentsPart, ToolResult, ToolsForLLM, TraceClient } from "@empiricalrun/shared-types";
1
+ import { type IChatModel } from "@empiricalrun/llm/chat";
2
+ import type { CanonicalMessage, ChatState, ChatStateGeneric, MessageCheckpoint, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, TextMessagePart, TextMessageWithAttachmentsPart, ToolResult, ToolsForLLM } from "@empiricalrun/shared-types/chat-agent";
3
+ import type { TraceClient } from "@empiricalrun/shared-types/common";
4
+ import type { FileInfo } from "@empiricalrun/shared-types/test-gen";
3
5
  import { BaseToolExecutor } from "../../tools/executor/base";
4
6
  type RunLoopParams<T> = {
5
- reporter: ReporterFunction;
6
- streamingMessageReporter?: StreamingMessageReporterFunc;
7
- trace?: TraceClient;
8
7
  signal?: AbortSignal;
8
+ reporter: ReporterFunction<T>;
9
9
  onPendingToolCall?: (toolCalls: PendingToolCall[]) => Promise<void>;
10
+ streamingMessageReporter?: StreamingMessageReporterFunc;
10
11
  onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
11
- repoInfoBuilder?: () => Promise<FileInfo>;
12
12
  };
13
- export type AgentParams = {
14
- selectedModel: SupportedChatModels;
15
- chatState?: ChatState;
16
- featureFlags?: string[];
13
+ type AgentParamsWithoutPrompt<T> = {
14
+ trace?: TraceClient;
15
+ chatState?: ChatStateGeneric<T>;
17
16
  workerEnv?: Record<string, string>;
17
+ featureFlags?: string[];
18
18
  toolExecutor?: BaseToolExecutor;
19
- trace?: TraceClient;
19
+ systemPrompt?: string;
20
+ selectedModel: SupportedChatModels;
21
+ repoInfoBuilder?: () => Promise<FileInfo>;
20
22
  };
21
- export declare abstract class BaseAgent {
23
+ export type AgentParams<T> = AgentParamsWithoutPrompt<T> & ({
24
+ systemPrompt: string;
25
+ } | {
26
+ repoInfoBuilder: () => Promise<FileInfo>;
27
+ });
28
+ export declare abstract class BaseAgent<T> {
22
29
  featureFlags: string[];
23
30
  tools: ToolsForLLM;
24
31
  selectedModel: SupportedChatModels;
25
- chatModel: IChatCanonicalModel;
32
+ chatModel: IChatModel<T>;
26
33
  workerEnv?: Record<string, string>;
27
34
  toolExecutor?: BaseToolExecutor;
28
35
  trace?: TraceClient;
29
- constructor({ featureFlags, selectedModel, workerEnv, chatState, toolExecutor, trace, }: AgentParams);
36
+ systemPrompt: string | undefined;
37
+ repoInfoBuilder: (() => Promise<FileInfo>) | undefined;
38
+ constructor({ featureFlags, selectedModel, workerEnv, chatState, toolExecutor, trace, systemPrompt, repoInfoBuilder, }: AgentParams<T>);
30
39
  protected abstract getTools(): ToolsForLLM;
31
- protected abstract buildSystemPrompt(repoContext?: string): Promise<string>;
40
+ protected abstract buildSystemPrompt(repoInfoBuilder: () => Promise<FileInfo>): Promise<string>;
32
41
  get messages(): CanonicalMessage[];
33
42
  get askUserForInput(): boolean;
34
- get chatState(): ChatState;
35
- pushUserMessage(parts: Array<TextMessagePart | TextMessageWithAttachmentsPart>): ChatState;
36
- setChatState(chatState: ChatState): void;
37
- stop(): ChatState;
43
+ get chatState(): ChatStateGeneric<T>;
44
+ pushUserMessage(parts: Array<TextMessagePart | TextMessageWithAttachmentsPart>): ChatStateGeneric<T>;
45
+ setChatState(chatState: ChatStateGeneric<T>): void;
46
+ stop(): ChatStateGeneric<T>;
38
47
  processToolResults(toolCalls: PendingToolCall[], toolResults: ToolResult[], checkpoint: MessageCheckpoint | null): ChatState | undefined;
39
48
  toolCallHandler(toolCalls: PendingToolCall[]): Promise<void>;
40
49
  runLoop(params: RunLoopParams<any>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,eAAe,EACf,8BAA8B,EAC9B,UAAU,EACV,WAAW,EACX,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAO7D,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,mBAAmB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,mBAAmB,CAAC;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,8BAAsB,SAAS;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,aAAa,EAAE,mBAAmB,CAAC;IACnC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;gBAER,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,YAAY,EACZ,KAAK,GACN,EAAE,WAAW;IAgBd,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,WAAW;IAC1C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE3E,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAEjC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,SAAS,IAAI,SAAS,CAQzB;IAED,eAAe,CACb,KAAK,EAAE,KAAK,CAAC,eAAe,GAAG,8BAA8B,CAAC,GAC7D,SAAS;IAKZ,YAAY,CAAC,SAAS,EAAE,SAAS;IAQjC,IAAI,IAAI,SAAS;IA6BjB,kBAAkB,CAChB,SAAS,EAAE,eAAe,EAAE,EAC5B,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,EAAE,iBAAiB,GAAG,IAAI,GACnC,SAAS,GAAG,SAAS;IA4BlB,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;IAmBxC,6BAA6B,IACzB;QACE,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,GACD,SAAS;CAGd"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,eAAe,EACf,8BAA8B,EAC9B,UAAU,EACV,WAAW,EACZ,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAM7D,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,mBAAmB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,CAAC;AAEF,KAAK,wBAAwB,CAAC,CAAC,IAAI;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,GACtD,CAAC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,eAAe,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC,CAAC;AAE5E,8BAAsB,SAAS,CAAC,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,aAAa,EAAE,mBAAmB,CAAC;IACnC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,EAAE,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC;gBAE3C,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,eAAe,GAChB,EAAE,WAAW,CAAC,CAAC,CAAC;IAuBjB,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,WAAW;IAC1C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAClC,eAAe,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,MAAM,CAAC;IAElB,IAAI,QAAQ,IAAI,gBAAgB,EAAE,CAEjC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAKnC;IAED,eAAe,CACb,KAAK,EAAE,KAAK,CAAC,eAAe,GAAG,8BAA8B,CAAC,GAC7D,gBAAgB,CAAC,CAAC,CAAC;IAKtB,YAAY,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAQ3C,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC;IA6B3B,kBAAkB,CAChB,SAAS,EAAE,eAAe,EAAE,EAC5B,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,EAAE,iBAAiB,GAAG,IAAI,GACnC,SAAS,GAAG,SAAS;IA4BlB,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;IAqBxC,6BAA6B,IACzB;QACE,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,GACD,SAAS;CAGd"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseAgent = void 0;
4
4
  const chat_1 = require("@empiricalrun/llm/chat");
5
5
  const agent_loop_1 = require("../chat/agent-loop");
6
- const repo_1 = require("../chat/prompt/repo");
7
6
  const state_1 = require("../chat/state");
8
7
  const REJECTION_RESULT = "This tool call was rejected by the user.";
9
8
  class BaseAgent {
@@ -14,7 +13,9 @@ class BaseAgent {
14
13
  workerEnv;
15
14
  toolExecutor;
16
15
  trace;
17
- constructor({ featureFlags, selectedModel, workerEnv, chatState, toolExecutor, trace, }) {
16
+ systemPrompt;
17
+ repoInfoBuilder;
18
+ constructor({ featureFlags, selectedModel, workerEnv, chatState, toolExecutor, trace, systemPrompt, repoInfoBuilder, }) {
18
19
  this.featureFlags = featureFlags || [];
19
20
  this.selectedModel = selectedModel;
20
21
  this.workerEnv = workerEnv;
@@ -24,6 +25,15 @@ class BaseAgent {
24
25
  this.chatModel = (0, chat_1.createChatModel)(messages, this.selectedModel, this.workerEnv);
25
26
  this.chatModel.validateEnvVarsForAuth();
26
27
  this.trace = trace;
28
+ if (systemPrompt) {
29
+ this.systemPrompt = systemPrompt;
30
+ }
31
+ else if (repoInfoBuilder) {
32
+ this.repoInfoBuilder = repoInfoBuilder;
33
+ }
34
+ else {
35
+ throw new Error("System prompt or repo info builder are both missing.");
36
+ }
27
37
  }
28
38
  get messages() {
29
39
  return this.chatModel.messages;
@@ -32,11 +42,8 @@ class BaseAgent {
32
42
  return this.chatModel.askUserForInput || false;
33
43
  }
34
44
  get chatState() {
35
- return (0, state_1.createChatStateForMessages)({
36
- messages: this.chatModel.messages,
37
- selectedModel: this.selectedModel,
38
- askUserForInput: this.chatModel.askUserForInput,
39
- // TODO: Test out the error scenario
45
+ return (0, state_1.chatStateFromModel)({
46
+ chatModel: this.chatModel,
40
47
  error: null,
41
48
  });
42
49
  }
@@ -97,19 +104,23 @@ class BaseAgent {
97
104
  this.processToolResults(toolCalls, toolResults, checkpoint);
98
105
  }
99
106
  async runLoop(params) {
100
- let repoContext;
101
- if (params.repoInfoBuilder) {
102
- const repoInfo = await params.repoInfoBuilder();
103
- repoContext = await (0, repo_1.getRepoInfoPrompt)(repoInfo);
107
+ let systemPrompt = this.systemPrompt;
108
+ if (!systemPrompt) {
109
+ if (this.repoInfoBuilder) {
110
+ systemPrompt = await this.buildSystemPrompt(this.repoInfoBuilder);
111
+ }
112
+ else {
113
+ throw new Error("Repo info builder is required.");
114
+ }
104
115
  }
105
- const systemPrompt = await this.buildSystemPrompt(repoContext);
106
116
  await (0, agent_loop_1.chatAgentLoop)({
107
117
  ...params,
108
- onPendingToolCall: params.onPendingToolCall || this.toolCallHandler.bind(this),
118
+ systemPrompt,
119
+ trace: this.trace,
109
120
  chatModel: this.chatModel,
110
121
  tools: this.getTools(),
111
- systemPrompt,
112
122
  featureFlags: this.featureFlags,
123
+ onPendingToolCall: params.onPendingToolCall || this.toolCallHandler.bind(this),
113
124
  });
114
125
  }
115
126
  getHumanReadableLatestMessage() {
@@ -1,4 +1,4 @@
1
- import { Usage } from "@empiricalrun/shared-types";
1
+ import { Usage } from "@empiricalrun/shared-types/chat-agent";
2
2
  import { BrowserAgentResult } from "../cua";
3
3
  type GenerateTestsType = {
4
4
  testCaseName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAanD,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAG5C,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB,EAAE,OAAO,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,8BAA8B,CAAC,EACnD,gBAAgB,EAChB,OAAO,EACP,YAAY,GACb,EAAE;IACD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlB;AAED,wBAAsB,gBAAgB,CAAC,EACrC,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,OAAO,EACP,OAAO,EACP,yBAAyB,EACzB,YAAY,GACb,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B,CAAC,CA+FD"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/browsing/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAa9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAG5C,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB,EAAE,OAAO,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,8BAA8B,CAAC,EACnD,gBAAgB,EAChB,OAAO,EACP,YAAY,GACb,EAAE;IACD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlB;AAED,wBAAsB,gBAAgB,CAAC,EACrC,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,OAAO,EACP,OAAO,EACP,yBAAyB,EACzB,YAAY,GACb,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B,CAAC,CA+FD"}
@@ -1,9 +1,9 @@
1
1
  import { TraceClient } from "@empiricalrun/llm";
2
- import { IChatCanonicalModel, IChatModel } from "@empiricalrun/llm/chat";
3
- import { CanonicalMessage, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolsForLLM } from "@empiricalrun/shared-types";
2
+ import { IChatModel } from "@empiricalrun/llm/chat";
3
+ import { CanonicalMessage, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolsForLLM } from "@empiricalrun/shared-types/chat-agent";
4
4
  type AgentLoopParams<T> = {
5
- chatModel: IChatModel<T> | IChatCanonicalModel;
6
- reporter: ReporterFunction;
5
+ chatModel: IChatModel<T>;
6
+ reporter: ReporterFunction<T>;
7
7
  streamingMessageReporter?: StreamingMessageReporterFunc;
8
8
  trace?: TraceClient;
9
9
  signal?: AbortSignal;
@@ -13,6 +13,6 @@ type AgentLoopParams<T> = {
13
13
  onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
14
14
  systemPrompt: string;
15
15
  };
16
- export declare function chatAgentLoop<T extends CanonicalMessage = CanonicalMessage>({ chatModel, reporter, streamingMessageReporter, trace, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, systemPrompt, }: AgentLoopParams<T>): Promise<void>;
16
+ export declare function chatAgentLoop<T = CanonicalMessage>({ chatModel, reporter, streamingMessageReporter, trace, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, systemPrompt, }: AgentLoopParams<T>): Promise<void>;
17
17
  export {};
18
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,mBAAmB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAKpC,KAAK,eAAe,CAAC,CAAC,IAAI;IACxB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;IAC/C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,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,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAsB,aAAa,CACjC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAC7C,EACA,SAAS,EACT,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CpC"}
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,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,WAAW,EACZ,MAAM,uCAAuC,CAAC;AAK/C,KAAK,eAAe,CAAC,CAAC,IAAI;IACxB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,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,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAsB,aAAa,CAAC,CAAC,GAAG,gBAAgB,EAAE,EACxD,SAAS,EACT,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CpC"}
@@ -1,13 +1,13 @@
1
1
  export type { IChatModel } from "@empiricalrun/llm/chat";
2
- export { createChatModel, SUPPORTED_CHAT_MODELS } from "@empiricalrun/llm/chat";
2
+ export { createChatModel } from "@empiricalrun/llm/chat";
3
+ export { SUPPORTED_CHAT_MODELS } from "@empiricalrun/llm/chat/constants";
3
4
  export { getFileInfoFromGitHub, viewFileUsingGitHub, } from "../../file-info/adapters/github";
4
5
  export type { AgentParams } from "../base";
5
6
  export { BaseAgent } from "../base";
6
7
  export type { CodeReviewResultV0, CodeReviewResultV1, CodeReviewResultV2, CodeReviewVersionedResult, } from "../code-review";
7
- export { MODE_TO_AGENT_MAP } from "../index";
8
8
  export { TriageAgent } from "../triage";
9
9
  export { ChatAgent } from "./index";
10
10
  export { resolveChatModelBasedOnInput } from "./models";
11
- export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, fetchToolCallFromId, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, } from "./state";
11
+ export { fetchToolCallFromId, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, } from "./state";
12
12
  export { extractAttachments } from "./utils";
13
13
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,kCAAkC,EAClC,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AAEzC,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
@@ -1,28 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallFromId = exports.chatStateFromModel = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = exports.resolveChatModelBasedOnInput = exports.ChatAgent = exports.TriageAgent = exports.MODE_TO_AGENT_MAP = exports.BaseAgent = exports.viewFileUsingGitHub = exports.getFileInfoFromGitHub = exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = void 0;
3
+ exports.extractAttachments = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallFromId = exports.resolveChatModelBasedOnInput = exports.ChatAgent = exports.TriageAgent = exports.BaseAgent = exports.viewFileUsingGitHub = exports.getFileInfoFromGitHub = exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = void 0;
4
4
  var chat_1 = require("@empiricalrun/llm/chat");
5
5
  Object.defineProperty(exports, "createChatModel", { enumerable: true, get: function () { return chat_1.createChatModel; } });
6
- Object.defineProperty(exports, "SUPPORTED_CHAT_MODELS", { enumerable: true, get: function () { return chat_1.SUPPORTED_CHAT_MODELS; } });
6
+ var constants_1 = require("@empiricalrun/llm/chat/constants");
7
+ Object.defineProperty(exports, "SUPPORTED_CHAT_MODELS", { enumerable: true, get: function () { return constants_1.SUPPORTED_CHAT_MODELS; } });
7
8
  var github_1 = require("../../file-info/adapters/github");
8
9
  Object.defineProperty(exports, "getFileInfoFromGitHub", { enumerable: true, get: function () { return github_1.getFileInfoFromGitHub; } });
9
10
  Object.defineProperty(exports, "viewFileUsingGitHub", { enumerable: true, get: function () { return github_1.viewFileUsingGitHub; } });
10
11
  var base_1 = require("../base");
11
12
  Object.defineProperty(exports, "BaseAgent", { enumerable: true, get: function () { return base_1.BaseAgent; } });
12
- var index_1 = require("../index");
13
- Object.defineProperty(exports, "MODE_TO_AGENT_MAP", { enumerable: true, get: function () { return index_1.MODE_TO_AGENT_MAP; } });
14
13
  var triage_1 = require("../triage");
15
14
  Object.defineProperty(exports, "TriageAgent", { enumerable: true, get: function () { return triage_1.TriageAgent; } });
16
- var index_2 = require("./index");
17
- Object.defineProperty(exports, "ChatAgent", { enumerable: true, get: function () { return index_2.ChatAgent; } });
15
+ var index_1 = require("./index");
16
+ Object.defineProperty(exports, "ChatAgent", { enumerable: true, get: function () { return index_1.ChatAgent; } });
18
17
  var models_1 = require("./models");
19
18
  Object.defineProperty(exports, "resolveChatModelBasedOnInput", { enumerable: true, get: function () { return models_1.resolveChatModelBasedOnInput; } });
20
19
  var state_1 = require("./state");
21
- Object.defineProperty(exports, "CHAT_STATE_VERSIONS_MIGRATIONS_MAP", { enumerable: true, get: function () { return state_1.CHAT_STATE_VERSIONS_MIGRATIONS_MAP; } });
22
- Object.defineProperty(exports, "chatStateFromModel", { enumerable: true, get: function () { return state_1.chatStateFromModel; } });
23
20
  Object.defineProperty(exports, "fetchToolCallFromId", { enumerable: true, get: function () { return state_1.fetchToolCallFromId; } });
24
21
  Object.defineProperty(exports, "getLatestDownloadBuildUrl", { enumerable: true, get: function () { return state_1.getLatestDownloadBuildUrl; } });
25
22
  Object.defineProperty(exports, "LATEST_CHAT_STATE_VERSION", { enumerable: true, get: function () { return state_1.LATEST_CHAT_STATE_VERSION; } });
26
- Object.defineProperty(exports, "migrateChatState", { enumerable: true, get: function () { return state_1.migrateChatState; } });
27
23
  var utils_1 = require("./utils");
28
24
  Object.defineProperty(exports, "extractAttachments", { enumerable: true, get: function () { return utils_1.extractAttachments; } });
@@ -1,7 +1,8 @@
1
- import type { ToolsForLLM } from "@empiricalrun/shared-types";
1
+ import type { ToolsForLLM } from "@empiricalrun/shared-types/chat-agent";
2
+ import type { FileInfo } from "@empiricalrun/shared-types/test-gen";
2
3
  import { BaseAgent } from "../base";
3
- export declare class ChatAgent extends BaseAgent {
4
+ export declare class ChatAgent<T> extends BaseAgent<T> {
4
5
  protected getTools(): ToolsForLLM;
5
- protected buildSystemPrompt(repoContext?: string): Promise<string>;
6
+ buildSystemPrompt(repoInfoBuilder: () => Promise<FileInfo>): Promise<string>;
6
7
  }
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAS9D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,qBAAa,SAAU,SAAQ,SAAS;IACtC,SAAS,CAAC,QAAQ,IAAI,WAAW;cAajB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAuGzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAWpE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKpC,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAC5C,SAAS,CAAC,QAAQ,IAAI,WAAW;IAe3B,iBAAiB,CACrB,eAAe,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GACvC,OAAO,CAAC,MAAM,CAAC;CAsGnB"}
@@ -2,15 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChatAgent = void 0;
4
4
  const tools_1 = require("../../tools");
5
+ const analyse_video_1 = require("../../tools/definitions/analyse-video");
6
+ const diagnosis_fetcher_1 = require("../../tools/diagnosis-fetcher");
7
+ const test_run_fetcher_1 = require("../../tools/test-run-fetcher");
5
8
  const base_1 = require("../base");
6
9
  const pw_utils_docs_1 = require("./prompt/pw-utils-docs");
10
+ const repo_1 = require("./prompt/repo");
7
11
  const test_case_def_1 = require("./prompt/test-case-def");
8
12
  class ChatAgent extends base_1.BaseAgent {
9
13
  getTools() {
10
14
  const custom = [
15
+ analyse_video_1.analyseVideo,
11
16
  ...tools_1.commonTools,
12
17
  ...tools_1.testGenerationTools,
13
- tools_1.analyseVideo,
18
+ test_run_fetcher_1.fetchTestRunDetailsTool,
19
+ diagnosis_fetcher_1.fetchDiagnosisReportTool,
14
20
  ...(0, tools_1.textEditorToolsForModel)(this.selectedModel),
15
21
  ];
16
22
  return {
@@ -18,10 +24,9 @@ class ChatAgent extends base_1.BaseAgent {
18
24
  builtInTextEditor: (0, tools_1.hasBuiltInTextEditor)(this.selectedModel),
19
25
  };
20
26
  }
21
- async buildSystemPrompt(repoContext) {
22
- if (!repoContext) {
23
- throw new Error(`Chat agent needs repo context`);
24
- }
27
+ async buildSystemPrompt(repoInfoBuilder) {
28
+ const repoInfo = await repoInfoBuilder();
29
+ const repoContext = await (0, repo_1.getRepoContextPrompt)(repoInfo);
25
30
  const preamble = `
26
31
  You are a helpful assistant that can answer questions and help with tasks related to writing and maintaining Playwright tests.
27
32
 
@@ -1,3 +1,3 @@
1
- import { SupportedChatModels } from "@empiricalrun/shared-types";
1
+ import { SupportedChatModels } from "@empiricalrun/shared-types/chat-agent";
2
2
  export declare const resolveChatModelBasedOnInput: (requestedModel?: string) => SupportedChatModels;
3
3
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAOjE,eAAO,MAAM,4BAA4B,GACvC,iBAAiB,MAAM,KACtB,mBAsBF,CAAC"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAO5E,eAAO,MAAM,4BAA4B,GACvC,iBAAiB,MAAM,KACtB,mBAsBF,CAAC"}
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveChatModelBasedOnInput = void 0;
4
- const chat_1 = require("@empiricalrun/llm/chat");
4
+ const constants_1 = require("@empiricalrun/llm/chat/constants");
5
5
  const model_1 = require("../../utils/model");
6
- const DEFAULT_AUTO_FALLBACK_MODEL = "claude-sonnet-4-5-20250929";
6
+ const DEFAULT_AUTO_FALLBACK_MODEL = "claude-sonnet-4-5-20250929:vertex";
7
7
  const resolveChatModelBasedOnInput = (requestedModel) => {
8
8
  const sanitizedModelInput = requestedModel?.trim().toLowerCase();
9
9
  if (!sanitizedModelInput || sanitizedModelInput === "auto") {
10
10
  return DEFAULT_AUTO_FALLBACK_MODEL;
11
11
  }
12
12
  // Check for exact match first
13
- const matchedModel = chat_1.SUPPORTED_CHAT_MODELS.find((model) => model.id.toLowerCase() === sanitizedModelInput);
13
+ const matchedModel = constants_1.SUPPORTED_CHAT_MODELS.find((model) => model.id.toLowerCase() === sanitizedModelInput);
14
14
  if (matchedModel) {
15
15
  return matchedModel.id;
16
16
  }
@@ -1,2 +1,2 @@
1
- export declare const playwrightUtilsDocs = "\nYou can refer to the following recipes to learn how to write tests for different scenarios.\n\n<email-automation>\n\n# Email automation\n\n## Example usage\n\n### Dynamic email\n\nThis dynamically generates a random email address that can \nbe used for the test (e.g. invite a new user).\n\n```ts\nimport { EmailClient } from \"@empiricalrun/playwright-utils\";\nimport { expect } from \"@playwright/test\";\n\nconst client = new EmailClient();\nconst address = client.getAddress();\n\n// Input the `address` in the application\n// that sends the email.\n\n// Get email received on the `address`\nconst email = await client.waitForEmail();\nexpect(\n email.links.find((l) => l.text === \"Join your team\")\n).toBeTruthy();\n```\n\n### Static email\n\nThis uses a known (static) email that can be used to login\ninto an application.\n\nThis needs an email id (e.g. `test-login-user`). The email id\nis appended with the domain (managed internally) to get the full\nemail address.\n\n```ts\nimport { EmailClient } from \"@empiricalrun/playwright-utils\";\n\nconst emailId = `test-login-user`;\n\nconst client = new EmailClient({ emailId });\nconst address = client.getAddress(); // Returns full address with domain\n\n// Get email received on the `address`\nconst email = await client.waitForEmail();\n\n// Get login OTP\nconst loginCode = email.codes[0];\n```\n\n</email-automation>\n\n<fixtures>\n\nThe playwright-utils package provides fixtures that wrap around Playwright's built-in\n`page`, `context` fixtures to provide a mouse highlighter (which makes it easier to\nsee actions taken in a video).\n\nTo use this, you can use the `baseTestFixture` and `extendExpect` imports\nin your fixtures file.\n\n```ts\nimport { test as base, expect as baseExpect } from \"@playwright/test\";\nimport { baseTestFixture, extendExpect } from \"@empiricalrun/playwright-utils/test\";\n\nexport const test = baseTestFixture(base);\nexport const expect = extendExpect(baseExpect);\n```\n\n### Get a new browser context\n\nThis package provides a fixture `customContextPageProvider` which is a good way to create\na fresh, new browser context, and a page inside it.\n\nThere are two benefits of using this to create contexts or pages:\n1. Videos get recorded and attached to the test report\n2. Mouse highlights are available\n\n```ts\nimport { test, expect } from \"./fixtures\";\n\ntest(\"Example test\", async ({ page: builtInPage, customContextPageProvider }) => {\n // builtInPage is from default browser context\n const { page: newPage, context } = await customContextPageProvider();\n // newPage is from this other browser context\n});\n```\n\ncustomContextPageProvider can accept options to customize the browser context.\n\n```\n customContextPageProvider: (\n options?: BrowserContextOptions,\n ) => Promise<{ context: BrowserContext; page: Page }>;\n```\n\nFor example, pass { storageState: undefined } to create a new browser context without\nthe auth state of the current browser context. This is useful for multi-user scenarios.\n\n</fixtures>\n\n";
1
+ export declare const playwrightUtilsDocs = "\nYou can refer to the following recipes to learn how to write tests for different scenarios.\n\n<email-automation>\n\n# Email automation\n\n## Example usage\n\n### Dynamic email\n\nThis dynamically generates a random email address that can \nbe used for the test (e.g. invite a new user).\n\n```ts\nimport { EmailClient } from \"@empiricalrun/playwright-utils\";\nimport { expect } from \"@playwright/test\";\n\nconst client = new EmailClient();\nconst address = client.getAddress();\n\n// Input the `address` in the application\n// that sends the email.\n\n// Get email received on the `address`\nconst email = await client.waitForEmail();\nexpect(\n email.links.find((l) => l.text === \"Join your team\")\n).toBeTruthy();\n```\n\n### Static email\n\nThis uses a known (static) email that can be used to login\ninto an application.\n\nThis needs an email id (e.g. `test-login-user`). The email id\nis appended with the domain (managed internally) to get the full\nemail address.\n\n```ts\nimport { EmailClient } from \"@empiricalrun/playwright-utils\";\n\nconst emailId = `test-login-user`;\n\nconst client = new EmailClient({ emailId });\nconst address = client.getAddress(); // Returns full address with domain\n\n// Get email received on the `address`\nconst email = await client.waitForEmail();\n\n// Get login OTP\nconst loginCode = email.codes[0];\n```\n\n</email-automation>\n\n<fixtures>\n\nThe playwright-utils package provides fixtures that wrap around Playwright's built-in\n`page`, `context` fixtures to provide a mouse highlighter (which makes it easier to\nsee actions taken in a video).\n\nTo use this, you can use the `baseTestFixture` and `extendExpect` imports\nin your fixtures file.\n\n```ts\nimport { test as base, expect as baseExpect } from \"@playwright/test\";\nimport { baseTestFixture, extendExpect } from \"@empiricalrun/playwright-utils/test\";\n\nexport const test = baseTestFixture(base);\nexport const expect = extendExpect(baseExpect);\n```\n\n### Get a new browser context\n\nThis package provides a fixture `customContextPageProvider` which is a good way to create\na fresh, new browser context, and a page inside it.\n\nThere are two benefits of using this to create contexts or pages:\n1. Videos get recorded and attached to the test report\n2. Mouse highlights are available\n\n```ts\nimport { test, expect } from \"./fixtures\";\n\ntest(\"Example test\", async ({ page: builtInPage, customContextPageProvider }) => {\n // builtInPage is from default browser context\n const { page: newPage, context } = await customContextPageProvider();\n // newPage is from this other browser context\n});\n```\n\ncustomContextPageProvider can accept options to customize the browser context.\n\n```\n customContextPageProvider: (\n options?: BrowserContextOptions,\n ) => Promise<{ context: BrowserContext; page: Page }>;\n```\n\nFor example, pass { storageState: undefined } to create a new browser context without\nthe auth state of the current browser context. This is useful for multi-user scenarios.\n\n</fixtures>\n\n<video-labels>\n\n# Video Labels\n\nPages generate video recordings after test execution, with 1 page generating 1 video file (webm). \n\nIf your test case relies on multiple pages (e.g. for multi-user or multi-app flows), it can get difficult to\nknow which page does \"video-1.webm\" belong to.\n\nTo solve this, you should set video labels for pages. This will enable you to identify videos faster.\n\n## Usage\n\n```typescript\nimport { setVideoLabel } from '@empiricalrun/playwright-utils/test';\n\ntest('my test', async ({ page }) => {\n setVideoLabel(page, 'checkout-flow');\n // Video will be saved as 'checkout-flow.webm'\n});\n```\n\n## Multiple Contexts\n\n```typescript\ntest('multi-user scenario', async ({ page, customContextPageProvider }) => {\n setVideoLabel(page, 'host-page');\n\n const { page: guestPage } = await customContextPageProvider({ storageState: undefined });\n setVideoLabel(guestPage, 'guest-page');\n // Videos saved as 'guest-page.webm' and 'host-page.webm'\n});\n```\n\n## Notes\n\n- The default behavior is to label videos for multiple pages as: `video-0.webm`, `video-1.webm`, etc.\n- If setVideoLabel is called twice for the same page, the last label will be set\n\n</video-labels>\n\n";
2
2
  //# sourceMappingURL=pw-utils-docs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pw-utils-docs.d.ts","sourceRoot":"","sources":["../../../../src/agent/chat/prompt/pw-utils-docs.ts"],"names":[],"mappings":"AAqGA,eAAO,MAAM,mBAAmB,w/FAW/B,CAAC"}
1
+ {"version":3,"file":"pw-utils-docs.d.ts","sourceRoot":"","sources":["../../../../src/agent/chat/prompt/pw-utils-docs.ts"],"names":[],"mappings":"AA4IA,eAAO,MAAM,mBAAmB,qsIAe/B,CAAC"}
@@ -100,6 +100,44 @@ customContextPageProvider can accept options to customize the browser context.
100
100
  For example, pass { storageState: undefined } to create a new browser context without
101
101
  the auth state of the current browser context. This is useful for multi-user scenarios.
102
102
  `;
103
+ const videoLabelsRecipe = `
104
+ # Video Labels
105
+
106
+ Pages generate video recordings after test execution, with 1 page generating 1 video file (webm).
107
+
108
+ If your test case relies on multiple pages (e.g. for multi-user or multi-app flows), it can get difficult to
109
+ know which page does "video-1.webm" belong to.
110
+
111
+ To solve this, you should set video labels for pages. This will enable you to identify videos faster.
112
+
113
+ ## Usage
114
+
115
+ \`\`\`typescript
116
+ import { setVideoLabel } from '@empiricalrun/playwright-utils/test';
117
+
118
+ test('my test', async ({ page }) => {
119
+ setVideoLabel(page, 'checkout-flow');
120
+ // Video will be saved as 'checkout-flow.webm'
121
+ });
122
+ \`\`\`
123
+
124
+ ## Multiple Contexts
125
+
126
+ \`\`\`typescript
127
+ test('multi-user scenario', async ({ page, customContextPageProvider }) => {
128
+ setVideoLabel(page, 'host-page');
129
+
130
+ const { page: guestPage } = await customContextPageProvider({ storageState: undefined });
131
+ setVideoLabel(guestPage, 'guest-page');
132
+ // Videos saved as 'guest-page.webm' and 'host-page.webm'
133
+ });
134
+ \`\`\`
135
+
136
+ ## Notes
137
+
138
+ - The default behavior is to label videos for multiple pages as: \`video-0.webm\`, \`video-1.webm\`, etc.
139
+ - If setVideoLabel is called twice for the same page, the last label will be set
140
+ `;
103
141
  exports.playwrightUtilsDocs = `
104
142
  You can refer to the following recipes to learn how to write tests for different scenarios.
105
143
 
@@ -111,4 +149,8 @@ ${emailRecipe}
111
149
  ${fixturesRecipe}
112
150
  </fixtures>
113
151
 
152
+ <video-labels>
153
+ ${videoLabelsRecipe}
154
+ </video-labels>
155
+
114
156
  `;
@@ -1,3 +1,3 @@
1
- import { FileInfo } from "@empiricalrun/shared-types";
2
- export declare function getRepoInfoPrompt(repoInfo: FileInfo): Promise<string>;
1
+ import { FileInfo } from "@empiricalrun/shared-types/test-gen";
2
+ export declare function getRepoContextPrompt(repoInfo: FileInfo): Promise<string>;
3
3
  //# sourceMappingURL=repo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../../src/agent/chat/prompt/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAuDtD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,mBA2BzD"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../../src/agent/chat/prompt/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAuD/D,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,mBA2B5D"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRepoInfoPrompt = getRepoInfoPrompt;
6
+ exports.getRepoContextPrompt = getRepoContextPrompt;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const repo_tree_1 = require("../../../utils/repo-tree");
9
9
  async function getAllMarkdownFiles(directory) {
@@ -46,7 +46,7 @@ ${file.content}
46
46
  });
47
47
  return knowledge.join("\n");
48
48
  }
49
- async function getRepoInfoPrompt(repoInfo) {
49
+ async function getRepoContextPrompt(repoInfo) {
50
50
  if (!repoInfo)
51
51
  return "";
52
52
  let REPO_CONTEXT_PROMPT = `
@@ -1,28 +1,23 @@
1
- import { IChatCanonicalModel, IChatModel } from "@empiricalrun/llm/chat";
2
- import { CanonicalMessage, ChatState, ChatStateError, PendingToolCall, SupportedChatModels, ToolResult } from "@empiricalrun/shared-types";
1
+ import { IChatModel } from "@empiricalrun/llm/chat";
2
+ import { CanonicalMessage, ChatStateError, ChatStateGeneric, PendingToolCall, ToolResult } from "@empiricalrun/shared-types/chat-agent";
3
3
  export declare const CHAT_STATE_VERSIONS_MIGRATIONS_MAP: Record<string, (state: any) => any>;
4
4
  export declare const LATEST_CHAT_STATE_VERSION = "0.1";
5
5
  export declare const CHAT_STATE_PATH: string;
6
- export declare function createChatStateForMessages({ messages, selectedModel, askUserForInput, error, }: {
7
- messages: CanonicalMessage[];
8
- selectedModel: SupportedChatModels;
9
- askUserForInput: boolean;
10
- error: ChatStateError | null;
11
- }): ChatState;
12
6
  export declare function chatStateFromModel<T>({ chatModel, error, }: {
13
- chatModel: IChatModel<T> | IChatCanonicalModel;
7
+ chatModel: IChatModel<T>;
14
8
  error: ChatStateError | null;
15
- }): ChatState;
16
- export declare function getUsageSummary(chatState: ChatState): string;
17
- export declare function loadChatState({ resetChat, }: {
9
+ }): {
10
+ version: string;
11
+ model: import("@empiricalrun/shared-types/chat-agent").SupportedChatModels;
12
+ messages: T[];
13
+ askUserForInput: boolean;
14
+ error: ChatStateError | null;
15
+ };
16
+ export declare function getUsageSummary<T = CanonicalMessage>(chatState: ChatStateGeneric<T>): string;
17
+ export declare function loadChatState<T>({ resetChat, }: {
18
18
  resetChat: boolean;
19
- }): ChatState | undefined;
20
- /**
21
- * Migrates a chat state object from an old version to the latest version.
22
- * Add migration logic for each version as needed.
23
- */
24
- export declare function migrateChatState(oldState: any): ChatState;
25
- export declare function saveToDisk(chatState: ChatState): void;
19
+ }): ChatStateGeneric<T> | undefined;
20
+ export declare function saveToDisk<T>(chatState: ChatStateGeneric<T>): void;
26
21
  export declare function getLatestDownloadBuildUrl(messages: CanonicalMessage[]): string | null;
27
22
  export declare function fetchToolCallFromId(toolCallId: String, messages: CanonicalMessage[]): {
28
23
  toolCallQueuedAt: Date | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,eAAe,EACf,mBAAmB,EAEnB,UAAU,EACX,MAAM,4BAA4B,CAAC;AAMpC,eAAO,MAAM,kCAAkC,EAAE,MAAM,CACrD,MAAM,EACN,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAGpB,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,eAAO,MAAM,eAAe,QAI3B,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,aAAa,EACb,eAAe,EACf,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,GAAG,SAAS,CASZ;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EACpC,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;IAC/C,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,aAOA;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CA0B5D;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,GACV,EAAE;IACD,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,SAAS,GAAG,SAAS,CAsBxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,SAAS,CAqBzD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,QAQ9C;AA2BD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B;IACD,gBAAgB,EAAE,IAAI,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;CACpC,CA0BA"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAEf,UAAU,EACX,MAAM,uCAAuC,CAAC;AAM/C,eAAO,MAAM,kCAAkC,EAAE,MAAM,CACrD,MAAM,EACN,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAGpB,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,eAAO,MAAM,eAAe,QAI3B,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EACpC,SAAS,EACT,KAAK,GACN,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B;;;;;;EAQA;AAED,wBAAgB,eAAe,CAAC,CAAC,GAAG,gBAAgB,EAClD,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC7B,MAAM,CA4BR;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,SAAS,GACV,EAAE;IACD,SAAS,EAAE,OAAO,CAAC;CACpB,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,CAoBlC;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAQ3D;AA2BD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B;IACD,gBAAgB,EAAE,IAAI,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;CACpC,CA0BA"}