@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
@@ -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 CLI_ARGS_TO_MODEL_MAP: Record<string, SupportedChatModels>;
3
3
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAoBrE,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/utils/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE5E,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAqBrE,CAAC"}
@@ -7,11 +7,12 @@ exports.CLI_ARGS_TO_MODEL_MAP = {
7
7
  "claude-opus-4": "claude-opus-4-20250514",
8
8
  "claude-sonnet-4": "claude-sonnet-4-20250514",
9
9
  "claude-sonnet-4-5": "claude-sonnet-4-5-20250929",
10
- "claude-haiku": "claude-3-5-haiku-20241022",
11
- "claude-haiku-3-5": "claude-3-5-haiku-20241022",
12
- gemini: "gemini-2.5-pro",
10
+ "claude-haiku": "claude-haiku-4-5-20251001",
11
+ "claude-haiku-4-5": "claude-haiku-4-5-20251001",
13
12
  "gemini-2.5": "gemini-2.5-pro",
14
13
  "gemini-2.5-pro": "gemini-2.5-pro",
14
+ "gemini-3": "gemini-3-pro-preview",
15
+ "gemini-3-pro": "gemini-3-pro-preview",
15
16
  o3: "o3-2025-04-16",
16
17
  "o3-2025-04-16": "o3-2025-04-16",
17
18
  "gpt-5": "gpt-5-2025-08-07",
@@ -1,4 +1,4 @@
1
- import { HtmlReportData, HtmlReportFile, HtmlReportTest, PlaywrightMatchingTest, PlaywrightTestReport } from "@empiricalrun/shared-types";
1
+ import { HtmlReportData, HtmlReportFile, HtmlReportTest, PlaywrightMatchingTest, PlaywrightTestReport } from "@empiricalrun/shared-types/playwright-utils";
2
2
  import type { JSONReport } from "playwright/types/testReporter";
3
3
  export declare function parsePlaywrightTestReport(jsonReport: JSONReport): PlaywrightTestReport;
4
4
  export declare const findTestInReport: (reportJson: HtmlReportFile, targetTest: PlaywrightMatchingTest, allFiles: HtmlReportData["files"]) => HtmlReportTest | null;
@@ -1 +1 @@
1
- {"version":3,"file":"playwright-report-parser.d.ts","sourceRoot":"","sources":["../../src/utils/playwright-report-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,UAAU,EAGX,MAAM,+BAA+B,CAAC;AAqEvC,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,GACrB,oBAAoB,CAuBtB;AAED,eAAO,MAAM,gBAAgB,GAC3B,YAAY,cAAc,EAC1B,YAAY,sBAAsB,EAClC,UAAU,cAAc,CAAC,OAAO,CAAC,0BAwBlC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,sBAAsB,EAAE,EAC/B,YAAY,EAAE,YAAY,GACzB,sBAAsB,GAAG,IAAI,CAgB/B;AAED,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAqBjC;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CASxC"}
1
+ {"version":3,"file":"playwright-report-parser.d.ts","sourceRoot":"","sources":["../../src/utils/playwright-report-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EACV,UAAU,EAGX,MAAM,+BAA+B,CAAC;AAqEvC,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,UAAU,GACrB,oBAAoB,CAuBtB;AAED,eAAO,MAAM,gBAAgB,GAC3B,YAAY,cAAc,EAC1B,YAAY,sBAAsB,EAClC,UAAU,cAAc,CAAC,OAAO,CAAC,0BAwBlC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,sBAAsB,EAAE,EAC/B,YAAY,EAAE,YAAY,GACzB,sBAAsB,GAAG,IAAI,CAgB/B;AAED,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAqBjC;AAED,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CASxC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Recreates Playwright test ID
3
+ * @param relativeFilePath - File path relative to project testDir
4
+ * @param projectId - Project ID from playwright config
5
+ * @param titles - Array of test titles [describe1, describe2, ..., testName]
6
+ */
7
+ export declare function generatePlaywrightTestId(relativeFilePath: string, projectId: string, titles: string[]): string;
8
+ //# sourceMappingURL=playwright-test-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-test-id.d.ts","sourceRoot":"","sources":["../../src/utils/playwright-test-id.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EAAE,GACf,MAAM,CAUR"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generatePlaywrightTestId = generatePlaywrightTestId;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ /**
9
+ * Recreates Playwright test ID
10
+ * @param relativeFilePath - File path relative to project testDir
11
+ * @param projectId - Project ID from playwright config
12
+ * @param titles - Array of test titles [describe1, describe2, ..., testName]
13
+ */
14
+ function generatePlaywrightTestId(relativeFilePath, projectId, titles) {
15
+ const toPosix = (filePath) => filePath.split("\\").join("/");
16
+ const sha1 = (input) => crypto_1.default.createHash("sha1").update(input).digest("hex");
17
+ const fileId = sha1(toPosix(relativeFilePath)).slice(0, 20);
18
+ const testIdExpression = `[project=${projectId}]${toPosix(relativeFilePath)}\x1e${titles.join("\x1e")}`;
19
+ const testId = fileId + "-" + sha1(testIdExpression).slice(0, 20);
20
+ return testId;
21
+ }
@@ -1,3 +1,3 @@
1
- import { FileInfo } from "@empiricalrun/shared-types";
1
+ import { FileInfo } from "@empiricalrun/shared-types/test-gen";
2
2
  export declare function generateAsciiTree(root: FileInfo, options?: {}): string;
3
3
  //# sourceMappingURL=repo-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-tree.d.ts","sourceRoot":"","sources":["../../src/utils/repo-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGtD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,UAqF7D"}
1
+ {"version":3,"file":"repo-tree.d.ts","sourceRoot":"","sources":["../../src/utils/repo-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAG/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,UAqF7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/utils/slug.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,uBAAuB,GAAU,MAAM,MAAM,oBAOzD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MASrC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,cAAc,MAAM,KAAG,MAMlE,CAAC"}
1
+ {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/utils/slug.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,uBAAuB,GAAU,MAAM,MAAM,oBAOzD,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MASrC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,cAAc,MAAM,KAAG,MAoBlE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.extractSlugFromDiagnosisUrl = exports.slugify = exports.asyncGenerateRandomSlug = void 0;
4
- // @ts-ignore
4
+ const url_1 = require("url");
5
5
  let customAlphabet;
6
6
  const loadNanoid = async () => {
7
7
  const { customAlphabet: importedCustomAlphabet } = await import("nanoid");
@@ -43,10 +43,21 @@ const slugify = (str) => {
43
43
  };
44
44
  exports.slugify = slugify;
45
45
  const extractSlugFromDiagnosisUrl = (diagnosisUrl) => {
46
+ // New formats (unified list and detail page)
47
+ const parsedUrl = url_1.URL.parse(diagnosisUrl);
48
+ const detailParamValue = parsedUrl?.searchParams.get("detail");
49
+ if (detailParamValue) {
50
+ const slug = detailParamValue.split("--").pop();
51
+ if (slug) {
52
+ return slug;
53
+ }
54
+ }
55
+ // Fallback to old format (/diagnosis/ path)
46
56
  const slug = diagnosisUrl.split("--").pop();
47
- if (!diagnosisUrl.includes("--") || !slug) {
48
- throw new Error("Invalid diagnosis URL - could not extract slug");
57
+ if (slug) {
58
+ return slug;
49
59
  }
50
- return slug;
60
+ // Unknown URL format
61
+ throw new Error("Invalid diagnosis URL - could not extract slug");
51
62
  };
52
63
  exports.extractSlugFromDiagnosisUrl = extractSlugFromDiagnosisUrl;
@@ -0,0 +1,2 @@
1
+ export declare function validateUrlAccess(url: string): Promise<Response>;
2
+ //# sourceMappingURL=url-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-validation.d.ts","sourceRoot":"","sources":["../../src/utils/url-validation.ts"],"names":[],"mappings":"AACA,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAatE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateUrlAccess = validateUrlAccess;
4
+ // Some hosts do not allow HEAD requests, so we fall back to GET.
5
+ async function validateUrlAccess(url) {
6
+ try {
7
+ const headResponse = await fetch(url, { method: "HEAD" });
8
+ if (headResponse.ok) {
9
+ return headResponse;
10
+ }
11
+ return await fetch(url, { method: "GET" });
12
+ }
13
+ catch (error) {
14
+ return new Response(`Network error accessing URL: ${error instanceof Error ? error.message : String(error)}`, { status: 500 });
15
+ }
16
+ }
@@ -1,36 +1,19 @@
1
- import { CanonicalMessage, ToolResultPart, UniqueFrameInfos, VideoAnalysisParams } from "@empiricalrun/shared-types";
2
- export declare function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags, workingDirectory, skipUpload, algo, }: {
3
- videoUrl: string;
4
- videoUrlHash: string;
1
+ import { CanonicalMessage, ToolResultPart } from "@empiricalrun/shared-types/chat-agent";
2
+ import { UniqueFrameInfos, VideoAnalysisParams, VideoAnalysisResultV1 } from "@empiricalrun/shared-types/test-gen";
3
+ export declare function runVideoAnalysis({ url, videoHash, params, workingDirectory, skipUpload, }: {
4
+ url: string;
5
+ videoHash: string;
5
6
  params: VideoAnalysisParams;
6
- featureFlags: string[];
7
7
  workingDirectory: string;
8
8
  skipUpload?: boolean;
9
- algo?: string;
10
9
  }): Promise<{
11
- result: {
12
- total_extracted_frames: number;
13
- video_duration: number;
14
- unique_frames_count: number;
15
- video_url: string;
16
- analysis: string;
17
- analysis_id: string;
18
- params: VideoAnalysisParams;
19
- };
10
+ result: VideoAnalysisResultV1;
20
11
  unique_frames: UniqueFrameInfos[];
21
12
  interleaved_tool_result: ToolResultPart[];
22
13
  chat_messages: CanonicalMessage[];
23
14
  error: null;
24
15
  } | {
25
- result: {
26
- total_extracted_frames: number;
27
- video_duration: number;
28
- unique_frames_count: number;
29
- video_url: string;
30
- analysis: string;
31
- analysis_id: string;
32
- params: VideoAnalysisParams;
33
- };
16
+ result: VideoAnalysisResultV1;
34
17
  unique_frames: UniqueFrameInfos[];
35
18
  interleaved_tool_result: ToolResultPart[];
36
19
  chat_messages: CanonicalMessage[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/video-core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAWpC,wBAAsB,gBAAgB,CAAC,EACrC,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,IAAI,GACL,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkKA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/video-core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,cAAc,EACf,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,qCAAqC,CAAC;AAgB7C,wBAAsB,gBAAgB,CAAC,EACrC,GAAG,EACH,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,UAAU,GACX,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;;;;;;;;;;;;GA2KA"}
@@ -2,19 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runVideoAnalysis = runVideoAnalysis;
4
4
  const videostil_1 = require("videostil");
5
- const agent_orchestrator_1 = require("./agent-orchestrator");
5
+ const constants_1 = require("../constants");
6
6
  const model_limits_1 = require("./model-limits");
7
7
  const storage_manager_1 = require("./storage-manager");
8
8
  const utils_1 = require("./utils");
9
- async function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags, workingDirectory, skipUpload, algo, }) {
9
+ async function runVideoAnalysis({ url, videoHash, params, workingDirectory, skipUpload, }) {
10
10
  const result = {
11
+ version: "1.0",
11
12
  total_extracted_frames: 0,
12
- video_duration: 0,
13
+ video_duration: "",
13
14
  unique_frames_count: 0,
14
- video_url: videoUrl,
15
+ video_url: url,
15
16
  analysis: "",
16
- analysis_id: videoUrlHash,
17
+ analysis_id: videoHash,
17
18
  params,
19
+ is_truncated: false,
20
+ frames_processed: 0,
21
+ last_processed_frame_timestamp: "",
18
22
  };
19
23
  let uniqueFrameInfos = [];
20
24
  let interleavedResults = [];
@@ -24,14 +28,16 @@ async function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags,
24
28
  try {
25
29
  currentStep = "frame_extraction";
26
30
  let extractionResult;
31
+ const startTime = params.startTime
32
+ ? (0, utils_1.formatTimestampToSeconds)(params.startTime)
33
+ : 0;
27
34
  try {
28
35
  extractionResult = await (0, videostil_1.extractUniqueFrames)({
29
- videoUrl,
30
- fps: params.fps,
31
- threshold: params.threshold,
32
- startTime: params.startTime,
36
+ videoUrl: url,
37
+ fps: constants_1.VIDEO_ANALYSIS.DEFAULT_FPS,
38
+ threshold: constants_1.VIDEO_ANALYSIS.DEFAULT_THRESHOLD,
39
+ startTime,
33
40
  duration: params.duration,
34
- algo: algo,
35
41
  workingDir: workingDirectory,
36
42
  });
37
43
  }
@@ -44,12 +50,12 @@ async function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags,
44
50
  index: frame.index,
45
51
  path: frame.path,
46
52
  fileName: frame.fileName,
47
- url: frame.url || `${(0, utils_1.getR2BaseUrlByHash)(videoUrlHash)}${frame.fileName}`,
53
+ url: frame.url || `${(0, utils_1.getR2BaseUrlByHash)(videoHash)}${frame.fileName}`,
48
54
  base64: frame.base64 || "",
49
- timestamp: frame.timestamp || "",
55
+ timestamp: frame.timestamp || 0,
50
56
  }));
51
57
  result.total_extracted_frames = totalFramesCount;
52
- result.video_duration = videoDurationSeconds;
58
+ result.video_duration = (0, utils_1.formatSecondsToTimestamp)(videoDurationSeconds);
53
59
  result.unique_frames_count = uniqueFrameInfos.length;
54
60
  currentStep = "batch_size_calculation";
55
61
  let batchSize;
@@ -68,25 +74,26 @@ async function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags,
68
74
  currentStep = "video_analysis";
69
75
  let analysis, parsedXml;
70
76
  try {
71
- const orchestrationResult = await (0, agent_orchestrator_1.orchestrateVideoAnalysis)({
77
+ const analysisResult = await (0, videostil_1.analyseFrames)({
72
78
  selectedModel: params.model,
73
- featureFlags,
74
- workingDirectory,
75
79
  frameBatch,
76
80
  });
77
- analysis = orchestrationResult.analysis;
78
- allMessages = orchestrationResult.allMessages;
79
- parsedXml = orchestrationResult.parsedXml;
81
+ analysis = analysisResult.analysis;
82
+ allMessages = analysisResult.allMessages;
83
+ parsedXml = analysisResult.parsedXml;
80
84
  }
81
85
  catch (error) {
82
- throw new Error(`Video analysis orchestration failed: ${error instanceof Error ? error.message : String(error)}`);
86
+ throw new Error(`Video analysis failed: ${error instanceof Error ? error.message : String(error)}`);
83
87
  }
84
88
  const allFramesLength = uniqueFrameInfos.length;
85
89
  const isTruncated = allFramesLength !== batchSize;
86
- const finalFrameTimestamp = uniqueFramesBatch[uniqueFramesBatch.length - 1]?.timestamp;
90
+ const finalFrameTimestamp = (0, utils_1.formatSecondsToTimestamp)(uniqueFramesBatch[uniqueFramesBatch.length - 1]?.timestamp || 0);
91
+ result.is_truncated = isTruncated;
92
+ result.frames_processed = batchSize;
93
+ result.last_processed_frame_timestamp = finalFrameTimestamp;
87
94
  result.analysis = isTruncated
88
- ? `NOTE: the unique frames to be processed were truncated to ${batchSize} due to limitations on the number of frames that can be processed in a single batch. The last frame processed was at timestamp ${finalFrameTimestamp}. ${analysis}`
89
- : analysis;
95
+ ? `NOTE: the unique frames to be processed were truncated to ${batchSize} due to limitations on the number of frames that can be processed in a single batch. The last frame processed was at timestamp ${finalFrameTimestamp}.`
96
+ : `Successfully analysed all ${allFramesLength} unique frames from the video without truncation.`;
90
97
  currentStep = "interleaved_results";
91
98
  try {
92
99
  interleavedResults = (0, utils_1.createInterleavedResults)(parsedXml, uniqueFrameInfos);
@@ -97,7 +104,7 @@ async function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags,
97
104
  if (!skipUpload) {
98
105
  currentStep = "upload_all";
99
106
  const uploadPromises = [
100
- (0, storage_manager_1.uploadFramesToR2)(videoUrlHash, uniqueFrameInfos).catch((error) => {
107
+ (0, storage_manager_1.uploadFramesToR2)(videoHash, uniqueFrameInfos).catch((error) => {
101
108
  throw new Error(`Frame upload failed: ${error instanceof Error ? error.message : String(error)}`);
102
109
  }),
103
110
  (0, storage_manager_1.uploadSummaryToR2)({
@@ -106,7 +113,7 @@ async function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags,
106
113
  }).catch((error) => {
107
114
  throw new Error(`Summary upload failed: ${error instanceof Error ? error.message : String(error)}`);
108
115
  }),
109
- (0, storage_manager_1.uploadChatStateToR2)(allMessages, videoUrlHash).catch((error) => {
116
+ (0, storage_manager_1.uploadChatStateToR2)(allMessages, videoHash).catch((error) => {
110
117
  throw new Error(`Chat state upload failed: ${error instanceof Error ? error.message : String(error)}`);
111
118
  }),
112
119
  ];
@@ -1,4 +1,4 @@
1
- import { SupportedChatModels, UniqueFrameInfos } from "@empiricalrun/shared-types";
2
- export declare function calculateActualBatchSize(uniqueFrameInfos: UniqueFrameInfos[]): Promise<number>;
1
+ import { SupportedChatModels } from "@empiricalrun/shared-types/chat-agent";
2
+ import { UniqueFrameInfos } from "@empiricalrun/shared-types/test-gen";
3
3
  export declare function calculateOptimalBatchSize(model: SupportedChatModels, uniqueFrameInfos: UniqueFrameInfos[]): Promise<number>;
4
4
  //# sourceMappingURL=model-limits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-limits.d.ts","sourceRoot":"","sources":["../../src/video-core/model-limits.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAgCpC,wBAAsB,wBAAwB,CAC5C,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,mBAAmB,EAC1B,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
1
+ {"version":3,"file":"model-limits.d.ts","sourceRoot":"","sources":["../../src/video-core/model-limits.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAwDvE,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,mBAAmB,EAC1B,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
@@ -3,29 +3,19 @@ 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.calculateActualBatchSize = calculateActualBatchSize;
7
6
  exports.calculateOptimalBatchSize = calculateOptimalBatchSize;
8
7
  const node_fs_1 = __importDefault(require("node:fs"));
9
- const constants_1 = require("../constants");
10
- function isClaudeModel(model) {
11
- return model.includes("claude") || model.includes("sonnet");
12
- }
13
- function isOpenAIModel(model) {
14
- return model.includes("gpt") || model.includes("openai");
15
- }
8
+ const constants_1 = require("@empiricalrun/llm/chat/constants");
9
+ const constants_2 = require("../constants");
16
10
  function getModelLimits(model) {
17
- if (isClaudeModel(model)) {
18
- return {
19
- maxImages: constants_1.VIDEO_ANALYSIS.CLAUDE_MAX_IMAGES_PER_BATCH,
20
- maxSizeMB: constants_1.VIDEO_ANALYSIS.CLAUDE_MAX_REQUEST_SIZE_MB,
21
- };
22
- }
23
- if (isOpenAIModel(model)) {
11
+ const modelInfo = constants_1.SUPPORTED_CHAT_MODELS.find((m) => m.id === model);
12
+ if (modelInfo) {
24
13
  return {
25
- maxImages: constants_1.VIDEO_ANALYSIS.OPENAI_MAX_IMAGES_PER_BATCH,
26
- maxSizeMB: constants_1.VIDEO_ANALYSIS.OPENAI_MAX_REQUEST_SIZE_MB,
14
+ maxImages: modelInfo.maxImages,
15
+ maxSizeMB: modelInfo.maxRequestSizeMB,
27
16
  };
28
17
  }
18
+ // Default fallback for models not in SUPPORTED_CHAT_MODELS
29
19
  return {
30
20
  maxImages: 20,
31
21
  maxSizeMB: 10,
@@ -49,7 +39,7 @@ async function calculateActualBatchSize(uniqueFrameInfos) {
49
39
  }
50
40
  catch (error) {
51
41
  // Apply same base64 inflation to default calculation
52
- return (uniqueFrameInfos.length * constants_1.VIDEO_ANALYSIS.DEFAULT_FRAME_SIZE_MB * (4 / 3));
42
+ return (uniqueFrameInfos.length * constants_2.VIDEO_ANALYSIS.DEFAULT_FRAME_SIZE_MB * (4 / 3));
53
43
  }
54
44
  }
55
45
  async function calculateOptimalBatchSize(model, uniqueFrameInfos) {
@@ -66,7 +56,7 @@ async function calculateOptimalBatchSize(model, uniqueFrameInfos) {
66
56
  if (actualBatchSizeMB <= limits.maxSizeMB) {
67
57
  return batchSize;
68
58
  }
69
- batchSize = Math.floor(batchSize * constants_1.VIDEO_ANALYSIS.BATCH_SIZE_REDUCTION_FACTOR);
59
+ batchSize = Math.floor(batchSize * constants_2.VIDEO_ANALYSIS.BATCH_SIZE_REDUCTION_FACTOR);
70
60
  console.log("Reduced batch size:", batchSize);
71
61
  }
72
62
  return 1;
@@ -1,4 +1,5 @@
1
- import type { CanonicalMessage, UniqueFrameInfos, VideoAnalysisSummary } from "@empiricalrun/shared-types";
1
+ import type { CanonicalMessage } from "@empiricalrun/shared-types/chat-agent";
2
+ import type { UniqueFrameInfos, VideoAnalysisSummary } from "@empiricalrun/shared-types/test-gen";
2
3
  export declare const uploadFramesToR2: (videoUrlHash: string, frames: UniqueFrameInfos[]) => Promise<void>;
3
4
  export declare const uploadSummaryToR2: (videoInfo: VideoAnalysisSummary) => Promise<void>;
4
5
  export declare function uploadChatStateToR2(allMessages: CanonicalMessage[], videoUrlHash: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../src/video-core/storage-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AAoCpC,eAAO,MAAM,gBAAgB,GAC3B,cAAc,MAAM,EACpB,QAAQ,gBAAgB,EAAE,KACzB,OAAO,CAAC,IAAI,CAiBd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,WAAW,oBAAoB,KAC9B,OAAO,CAAC,IAAI,CAWd,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,gBAAgB,EAAE,EAC/B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../src/video-core/storage-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,qCAAqC,CAAC;AAoC7C,eAAO,MAAM,gBAAgB,GAC3B,cAAc,MAAM,EACpB,QAAQ,gBAAgB,EAAE,KACzB,OAAO,CAAC,IAAI,CAiBd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,WAAW,oBAAoB,KAC9B,OAAO,CAAC,IAAI,CAWd,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,gBAAgB,EAAE,EAC/B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -1,4 +1,4 @@
1
- import type { VideoAnalysisToolResponse } from "@empiricalrun/shared-types";
1
+ import type { VideoAnalysisToolResponse } from "@empiricalrun/shared-types/tool-results";
2
2
  export interface AnalysisProcessingContext {
3
3
  rawAnalysis: string;
4
4
  artifactsPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/video-core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAE5E,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,yBAAyB,EAAE,CAAC;IACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/video-core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEzF,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,yBAAyB,EAAE,CAAC;IACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3E"}
@@ -1,15 +1,13 @@
1
- import { ToolResultPart, UniqueFrameInfos, VideoAnalysisToolResponse } from "@empiricalrun/shared-types";
1
+ import { ToolResultPart } from "@empiricalrun/shared-types/chat-agent";
2
+ import { UniqueFrameInfos } from "@empiricalrun/shared-types/test-gen";
3
+ import { VideoAnalysisToolResponse } from "@empiricalrun/shared-types/tool-results";
4
+ export declare function formatSecondsToTimestamp(seconds: number | undefined): string;
5
+ export declare function formatTimestampToSeconds(timestamp: string): number;
2
6
  export declare const getR2BaseUrlByHash: (videoUrlHash: string) => string;
3
- export declare const parseXmlSummaryToJson: (xmlContent: string) => Array<VideoAnalysisToolResponse>;
4
- export declare function loadKeyFrameImages(keyFrames: string[], extractionArtifactsDir: string): Promise<Map<string, {
5
- type: "image/png";
6
- base64Data: string;
7
- }>>;
8
7
  export declare function createInterleavedResults(parsedAnalysis: VideoAnalysisToolResponse[], uniqueFrameInfos: UniqueFrameInfos[]): ToolResultPart[];
9
8
  export interface VideoValidationResult {
10
9
  isValid: boolean;
11
10
  error?: string;
12
11
  }
13
12
  export declare function validateVideoAccess(videoUrl: string): Promise<VideoValidationResult>;
14
- export declare function downloadVideo(videoUrl: string, outputPath: string): Promise<void>;
15
13
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/video-core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAIpC,eAAO,MAAM,kBAAkB,GAAI,cAAc,MAAM,WAEtD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,KACjB,KAAK,CAAC,yBAAyB,CAyCjC,CAAC;AA0DF,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EAAE,EACnB,sBAAsB,EAAE,MAAM,GAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkBjE;AAED,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,yBAAyB,EAAE,EAC3C,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,cAAc,EAAE,CAwClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC,CAgBhC;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAoDf"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/video-core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAW5E;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA+BlE;AAED,eAAO,MAAM,kBAAkB,GAAI,cAAc,MAAM,WAEtD,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,yBAAyB,EAAE,EAC3C,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,cAAc,EAAE,CAwClB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,CAAC,CAgBhC"}