@empiricalrun/test-gen 0.77.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 (402) hide show
  1. package/CHANGELOG.md +25 -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 +30 -17
  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 -11
  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 +13 -25
  28. package/dist/agent/chat/state.d.ts.map +1 -1
  29. package/dist/agent/chat/state.js +10 -60
  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 +17 -31
  35. package/dist/agent/code-review/index.d.ts +5 -4
  36. package/dist/agent/code-review/index.d.ts.map +1 -1
  37. package/dist/agent/code-review/index.js +13 -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 +35 -29
  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 -57
  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 +28 -15
  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 +13 -26
  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 +4 -3
  150. package/dist/tools/executor/base.d.ts.map +1 -1
  151. package/dist/tools/executor/base.js +16 -2
  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 +4 -3
  161. package/dist/tools/executor/utils/index.d.ts.map +1 -1
  162. package/dist/tools/executor/utils/index.js +2 -1
  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 +20 -22
  183. package/dist/tools/file-operations/shared/helpers.d.ts +3 -5
  184. package/dist/tools/file-operations/shared/helpers.d.ts.map +1 -1
  185. package/dist/tools/file-operations/shared/helpers.js +1 -5
  186. package/dist/tools/file-operations/view/index.d.ts +2 -1
  187. package/dist/tools/file-operations/view/index.d.ts.map +1 -1
  188. package/dist/tools/grep/index.d.ts +1 -1
  189. package/dist/tools/grep/index.d.ts.map +1 -1
  190. package/dist/tools/grep/index.js +15 -12
  191. package/dist/tools/index.d.ts +3 -24
  192. package/dist/tools/index.d.ts.map +1 -1
  193. package/dist/tools/index.js +13 -42
  194. package/dist/tools/issues-v1/create-issue.d.ts +3 -0
  195. package/dist/tools/issues-v1/create-issue.d.ts.map +1 -0
  196. package/dist/tools/{issues → issues-v1}/create-issue.js +5 -9
  197. package/dist/tools/issues-v1/index.d.ts.map +1 -0
  198. package/dist/tools/issues-v1/list-issues.d.ts +3 -0
  199. package/dist/tools/issues-v1/list-issues.d.ts.map +1 -0
  200. package/dist/tools/issues-v1/update-issue.d.ts +3 -0
  201. package/dist/tools/issues-v1/update-issue.d.ts.map +1 -0
  202. package/dist/tools/{issues → issues-v1}/update-issue.js +1 -9
  203. package/dist/tools/{issues → issues-v1}/utils.d.ts +2 -1
  204. package/dist/tools/issues-v1/utils.d.ts.map +1 -0
  205. package/dist/tools/issues-v2/create-issue.d.ts +3 -0
  206. package/dist/tools/issues-v2/create-issue.d.ts.map +1 -0
  207. package/dist/tools/issues-v2/create-issue.js +86 -0
  208. package/dist/tools/issues-v2/update-issue.d.ts +3 -0
  209. package/dist/tools/issues-v2/update-issue.d.ts.map +1 -0
  210. package/dist/tools/issues-v2/update-issue.js +87 -0
  211. package/dist/tools/list-environments.d.ts +1 -1
  212. package/dist/tools/list-environments.d.ts.map +1 -1
  213. package/dist/tools/list-tests-and-projects/index.d.ts +1 -1
  214. package/dist/tools/list-tests-and-projects/index.d.ts.map +1 -1
  215. package/dist/tools/list-tests-and-projects/index.js +14 -4
  216. package/dist/tools/merge-conflicts/index.d.ts +1 -1
  217. package/dist/tools/merge-conflicts/index.d.ts.map +1 -1
  218. package/dist/tools/merge-conflicts/index.js +23 -10
  219. package/dist/tools/rename-file/index.d.ts +1 -1
  220. package/dist/tools/rename-file/index.d.ts.map +1 -1
  221. package/dist/tools/rename-file/index.js +0 -1
  222. package/dist/tools/review-pull-request/index.d.ts +1 -1
  223. package/dist/tools/review-pull-request/index.d.ts.map +1 -1
  224. package/dist/tools/review-pull-request/index.js +9 -15
  225. package/dist/tools/run-test.d.ts +1 -1
  226. package/dist/tools/run-test.d.ts.map +1 -1
  227. package/dist/tools/test-gen-browser.d.ts +1 -1
  228. package/dist/tools/test-gen-browser.d.ts.map +1 -1
  229. package/dist/tools/test-gen-browser.js +55 -19
  230. package/dist/tools/test-run-fetcher/index.d.ts +2 -2
  231. package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
  232. package/dist/tools/test-run-fetcher/index.js +67 -66
  233. package/dist/tools/trace-dot-zip/index.d.ts +1 -1
  234. package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
  235. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -1
  236. package/dist/tools/trace-dot-zip/utils/network-trace.js +5 -10
  237. package/dist/tools/triage-summary/index.d.ts +1 -1
  238. package/dist/tools/triage-summary/index.d.ts.map +1 -1
  239. package/dist/tools/triage-summary/index.js +5 -2
  240. package/dist/tools/triage-summary/utils.d.ts +1 -1
  241. package/dist/tools/triage-summary/utils.d.ts.map +1 -1
  242. package/dist/tools/upgrade-packages/index.d.ts +1 -1
  243. package/dist/tools/upgrade-packages/index.d.ts.map +1 -1
  244. package/dist/tools/upgrade-packages/index.js +18 -8
  245. package/dist/tools/upgrade-packages/utils.d.ts +10 -5
  246. package/dist/tools/upgrade-packages/utils.d.ts.map +1 -1
  247. package/dist/tools/upgrade-packages/utils.js +57 -16
  248. package/dist/tools/utils/queue.d.ts +1 -1
  249. package/dist/tools/utils/queue.d.ts.map +1 -1
  250. package/dist/tools/utils/validate-schema.d.ts +3 -0
  251. package/dist/tools/utils/validate-schema.d.ts.map +1 -0
  252. package/dist/tools/utils/validate-schema.js +22 -0
  253. package/dist/trace-utils/index.d.ts +1 -1
  254. package/dist/trace-utils/index.d.ts.map +1 -1
  255. package/dist/trace-utils/index.js +1 -1
  256. package/dist/utils/SQSClient.d.ts +1 -1
  257. package/dist/utils/SQSClient.d.ts.map +1 -1
  258. package/dist/utils/dedup/dedup-image.d.ts +22 -0
  259. package/dist/utils/dedup/dedup-image.d.ts.map +1 -0
  260. package/dist/utils/dedup/dedup-image.js +26 -0
  261. package/dist/utils/dedup/find-threshold.d.ts +2 -0
  262. package/dist/utils/dedup/find-threshold.d.ts.map +1 -0
  263. package/dist/utils/{find-threshold.js → dedup/find-threshold.js} +2 -15
  264. package/dist/utils/model.d.ts +1 -1
  265. package/dist/utils/model.d.ts.map +1 -1
  266. package/dist/utils/model.js +4 -3
  267. package/dist/utils/playwright-report-parser.d.ts +1 -1
  268. package/dist/utils/playwright-report-parser.d.ts.map +1 -1
  269. package/dist/utils/playwright-test-id.d.ts +8 -0
  270. package/dist/utils/playwright-test-id.d.ts.map +1 -0
  271. package/dist/utils/playwright-test-id.js +21 -0
  272. package/dist/utils/repo-tree.d.ts +1 -1
  273. package/dist/utils/repo-tree.d.ts.map +1 -1
  274. package/dist/utils/slug.d.ts.map +1 -1
  275. package/dist/utils/slug.js +15 -4
  276. package/dist/utils/url-validation.d.ts +2 -0
  277. package/dist/utils/url-validation.d.ts.map +1 -0
  278. package/dist/utils/url-validation.js +16 -0
  279. package/dist/video-core/index.d.ts +14 -36
  280. package/dist/video-core/index.d.ts.map +1 -1
  281. package/dist/video-core/index.js +118 -181
  282. package/dist/video-core/model-limits.d.ts +2 -2
  283. package/dist/video-core/model-limits.d.ts.map +1 -1
  284. package/dist/video-core/model-limits.js +16 -20
  285. package/dist/video-core/storage-manager.d.ts +2 -1
  286. package/dist/video-core/storage-manager.d.ts.map +1 -1
  287. package/dist/video-core/storage-manager.js +13 -6
  288. package/dist/video-core/types.d.ts +1 -1
  289. package/dist/video-core/types.d.ts.map +1 -1
  290. package/dist/video-core/utils.d.ts +5 -17
  291. package/dist/video-core/utils.d.ts.map +1 -1
  292. package/dist/video-core/utils.js +39 -149
  293. package/package.json +10 -5
  294. package/tsconfig.tsbuildinfo +1 -1
  295. package/dist/actions/skill.d.ts +0 -21
  296. package/dist/actions/skill.d.ts.map +0 -1
  297. package/dist/actions/skill.js +0 -127
  298. package/dist/agent/chat/filesystem-cache.d.ts +0 -12
  299. package/dist/agent/chat/filesystem-cache.d.ts.map +0 -1
  300. package/dist/agent/chat/filesystem-cache.js +0 -101
  301. package/dist/agent/codegen/create-test-block.d.ts +0 -8
  302. package/dist/agent/codegen/create-test-block.d.ts.map +0 -1
  303. package/dist/agent/codegen/create-test-block.js +0 -47
  304. package/dist/agent/codegen/fix-ts-errors.d.ts +0 -12
  305. package/dist/agent/codegen/fix-ts-errors.d.ts.map +0 -1
  306. package/dist/agent/codegen/fix-ts-errors.js +0 -78
  307. package/dist/agent/codegen/lexical-scoped-vars.d.ts +0 -9
  308. package/dist/agent/codegen/lexical-scoped-vars.d.ts.map +0 -1
  309. package/dist/agent/codegen/lexical-scoped-vars.js +0 -55
  310. package/dist/agent/codegen/skills-retriever.d.ts +0 -26
  311. package/dist/agent/codegen/skills-retriever.d.ts.map +0 -1
  312. package/dist/agent/codegen/skills-retriever.js +0 -93
  313. package/dist/agent/codegen/test-update-feedback.d.ts +0 -12
  314. package/dist/agent/codegen/test-update-feedback.d.ts.map +0 -1
  315. package/dist/agent/codegen/test-update-feedback.js +0 -49
  316. package/dist/agent/codegen/types.d.ts +0 -25
  317. package/dist/agent/codegen/types.d.ts.map +0 -1
  318. package/dist/agent/codegen/types.js +0 -8
  319. package/dist/agent/codegen/update-flow.d.ts +0 -36
  320. package/dist/agent/codegen/update-flow.d.ts.map +0 -1
  321. package/dist/agent/codegen/update-flow.js +0 -259
  322. package/dist/agent/codegen/use-skill.d.ts +0 -11
  323. package/dist/agent/codegen/use-skill.d.ts.map +0 -1
  324. package/dist/agent/codegen/use-skill.js +0 -53
  325. package/dist/agent/codegen/utils.d.ts +0 -110
  326. package/dist/agent/codegen/utils.d.ts.map +0 -1
  327. package/dist/agent/codegen/utils.js +0 -376
  328. package/dist/agent/master/browser-tests/skills.spec.d.ts +0 -2
  329. package/dist/agent/master/browser-tests/skills.spec.d.ts.map +0 -1
  330. package/dist/agent/master/browser-tests/skills.spec.js +0 -112
  331. package/dist/agent/master/execute-skill-action.d.ts +0 -11
  332. package/dist/agent/master/execute-skill-action.d.ts.map +0 -1
  333. package/dist/agent/master/execute-skill-action.js +0 -23
  334. package/dist/agent/video-analysis/executor/index.d.ts +0 -5
  335. package/dist/agent/video-analysis/executor/index.d.ts.map +0 -1
  336. package/dist/agent/video-analysis/executor/index.js +0 -10
  337. package/dist/agent/video-analysis/index.d.ts +0 -7
  338. package/dist/agent/video-analysis/index.d.ts.map +0 -1
  339. package/dist/agent/video-analysis/index.js +0 -60
  340. package/dist/evals/append-create-test-agent.evals.d.ts +0 -4
  341. package/dist/evals/append-create-test-agent.evals.d.ts.map +0 -1
  342. package/dist/evals/append-create-test-agent.evals.js +0 -117
  343. package/dist/evals/fetch-pom-skills-agent.evals.d.ts +0 -4
  344. package/dist/evals/fetch-pom-skills-agent.evals.d.ts.map +0 -1
  345. package/dist/evals/fetch-pom-skills-agent.evals.js +0 -36
  346. package/dist/evals/master-agent.evals.d.ts +0 -4
  347. package/dist/evals/master-agent.evals.d.ts.map +0 -1
  348. package/dist/evals/master-agent.evals.js +0 -35
  349. package/dist/evals/type.d.ts +0 -12
  350. package/dist/evals/type.d.ts.map +0 -1
  351. package/dist/evals/type.js +0 -2
  352. package/dist/evals/update-scenario-agent.evals.d.ts +0 -4
  353. package/dist/evals/update-scenario-agent.evals.d.ts.map +0 -1
  354. package/dist/evals/update-scenario-agent.evals.js +0 -47
  355. package/dist/tools/fetch-last-successful-test-run/index.d.ts +0 -3
  356. package/dist/tools/fetch-last-successful-test-run/index.d.ts.map +0 -1
  357. package/dist/tools/fetch-last-successful-test-run/index.js +0 -60
  358. package/dist/tools/issues/create-issue.d.ts +0 -3
  359. package/dist/tools/issues/create-issue.d.ts.map +0 -1
  360. package/dist/tools/issues/index.d.ts.map +0 -1
  361. package/dist/tools/issues/list-issues.d.ts +0 -3
  362. package/dist/tools/issues/list-issues.d.ts.map +0 -1
  363. package/dist/tools/issues/metadata-schema.d.ts +0 -24
  364. package/dist/tools/issues/metadata-schema.d.ts.map +0 -1
  365. package/dist/tools/issues/metadata-schema.js +0 -22
  366. package/dist/tools/issues/update-issue.d.ts +0 -3
  367. package/dist/tools/issues/update-issue.d.ts.map +0 -1
  368. package/dist/tools/issues/utils.d.ts.map +0 -1
  369. package/dist/tools/utils/urls.d.ts +0 -5
  370. package/dist/tools/utils/urls.d.ts.map +0 -1
  371. package/dist/tools/utils/urls.js +0 -19
  372. package/dist/tools/view-failed-test-run-report/index.d.ts +0 -12
  373. package/dist/tools/view-failed-test-run-report/index.d.ts.map +0 -1
  374. package/dist/tools/view-failed-test-run-report/index.js +0 -151
  375. package/dist/utils/artifact-paths.d.ts +0 -20
  376. package/dist/utils/artifact-paths.d.ts.map +0 -1
  377. package/dist/utils/artifact-paths.js +0 -16
  378. package/dist/utils/dedup-image-fs.d.ts +0 -13
  379. package/dist/utils/dedup-image-fs.d.ts.map +0 -1
  380. package/dist/utils/dedup-image-fs.js +0 -84
  381. package/dist/utils/dedup-image.d.ts +0 -12
  382. package/dist/utils/dedup-image.d.ts.map +0 -1
  383. package/dist/utils/dedup-image.js +0 -25
  384. package/dist/utils/ffmpeg/index.d.ts +0 -26
  385. package/dist/utils/ffmpeg/index.d.ts.map +0 -1
  386. package/dist/utils/ffmpeg/index.js +0 -415
  387. package/dist/utils/find-threshold.d.ts +0 -8
  388. package/dist/utils/find-threshold.d.ts.map +0 -1
  389. package/dist/video-core/agent-orchestrator.d.ts +0 -14
  390. package/dist/video-core/agent-orchestrator.d.ts.map +0 -1
  391. package/dist/video-core/agent-orchestrator.js +0 -78
  392. package/dist/video-core/analysis-server.d.ts +0 -24
  393. package/dist/video-core/analysis-server.d.ts.map +0 -1
  394. package/dist/video-core/analysis-server.js +0 -398
  395. package/dist/video-core/analysis-viewer.html +0 -1374
  396. package/dist/video-core/xml-parser.d.ts +0 -3
  397. package/dist/video-core/xml-parser.d.ts.map +0 -1
  398. package/dist/video-core/xml-parser.js +0 -27
  399. /package/dist/tools/{issues → issues-v1}/index.d.ts +0 -0
  400. /package/dist/tools/{issues → issues-v1}/index.js +0 -0
  401. /package/dist/tools/{issues → issues-v1}/list-issues.js +0 -0
  402. /package/dist/tools/{issues → issues-v1}/utils.js +0 -0
@@ -1,204 +1,141 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseVideoAnalysisParams = parseVideoAnalysisParams;
7
- exports.runVideoAnalysisForCli = runVideoAnalysisForCli;
8
3
  exports.runVideoAnalysis = runVideoAnalysis;
9
- const node_fs_1 = __importDefault(require("node:fs"));
10
- const node_path_1 = __importDefault(require("node:path"));
4
+ const videostil_1 = require("videostil");
11
5
  const constants_1 = require("../constants");
12
- const ffmpeg_1 = require("../utils/ffmpeg");
13
- const hash_1 = require("../utils/hash");
14
- const agent_orchestrator_1 = require("./agent-orchestrator");
15
6
  const model_limits_1 = require("./model-limits");
16
7
  const storage_manager_1 = require("./storage-manager");
17
8
  const utils_1 = require("./utils");
18
- function parseVideoAnalysisParams(paramsString) {
19
- const defaults = {
20
- model: constants_1.VIDEO_ANALYSIS.DEFAULT_MODEL,
21
- fps: constants_1.VIDEO_ANALYSIS.DEFAULT_FPS,
22
- threshold: constants_1.VIDEO_ANALYSIS.DEFAULT_THRESHOLD,
9
+ async function runVideoAnalysis({ url, videoHash, params, workingDirectory, skipUpload, }) {
10
+ const result = {
11
+ version: "1.0",
12
+ total_extracted_frames: 0,
13
+ video_duration: "",
14
+ unique_frames_count: 0,
15
+ video_url: url,
16
+ analysis: "",
17
+ analysis_id: videoHash,
18
+ params,
19
+ is_truncated: false,
20
+ frames_processed: 0,
21
+ last_processed_frame_timestamp: "",
23
22
  };
24
- if (!paramsString?.trim())
25
- return defaults;
26
- const result = { ...defaults };
27
- for (const chunk of paramsString.split(",")) {
28
- const [key, value] = chunk.split("=").map((s) => s.trim());
29
- if (!key || !value)
30
- continue;
31
- switch (key.toLowerCase()) {
32
- case "fps":
33
- case "threshold": {
34
- const num = Number(value);
35
- if (Number.isFinite(num))
36
- result[key] = num;
37
- break;
38
- }
39
- case "model":
40
- result.model = value;
41
- break;
42
- case "starttime":
43
- case "start_time":
44
- result.startTime = Number(value);
45
- break;
46
- case "duration":
47
- result.duration = Number(value);
48
- break;
49
- }
50
- }
51
- return result;
52
- }
53
- async function runVideoAnalysisForCli({ url, params, startServer = true, }) {
54
- console.log("🎬 Starting video analysis...");
55
- console.log(`📹 Video URL: ${url}`);
56
- console.log(`⚙️ Parameters: ${params || "default"}`);
57
- const videoAnalysisParams = parseVideoAnalysisParams(params);
58
- const videoUrlHash = (0, hash_1.createHashBasedOnParams)(url, videoAnalysisParams);
59
- const WORKING_DIR = node_path_1.default.join("video-analysis", videoUrlHash);
60
- let result;
61
- const startTime = performance.now();
23
+ let uniqueFrameInfos = [];
24
+ let interleavedResults = [];
25
+ let allMessages = [];
26
+ let currentStep = "initialization";
27
+ let finalError = null;
62
28
  try {
63
- const { result: analysisResult, unique_frames, interleaved_tool_result, chat_messages, } = await runVideoAnalysis({
64
- videoUrl: url,
65
- videoUrlHash,
66
- params: videoAnalysisParams,
67
- featureFlags: [],
68
- workingDirectory: WORKING_DIR,
69
- skipUpload: true,
70
- });
71
- result = {
72
- ...analysisResult,
73
- unique_frames: unique_frames,
74
- interleaved_tool_result: interleaved_tool_result,
75
- chat_messages: chat_messages,
76
- };
77
- const endTime = performance.now();
78
- const durationMs = endTime - startTime;
79
- console.log(`[Performance] Video analysis completed in ${durationMs.toFixed(2)}ms (${(durationMs / 1000).toFixed(2)}s)`);
80
- }
81
- catch (error) {
82
- console.error("Error during video analysis:", error);
83
- throw error;
84
- }
85
- console.log("✅ Video analysis completed!");
86
- console.log(`📊 Found ${result.unique_frames_count} unique frames`);
87
- if (startServer) {
88
- const resultFileName = `analysis-result.json`;
89
- await node_fs_1.default.promises.mkdir(WORKING_DIR, { recursive: true });
90
- const resultFilePath = node_path_1.default.join(WORKING_DIR, resultFileName);
91
- await node_fs_1.default.promises.writeFile(resultFilePath, JSON.stringify({ ...result, workingDir: WORKING_DIR }, null, 2));
92
- console.log(`💾 Analysis result saved to: ${resultFilePath}`);
93
- console.log("🚀 Starting analysis viewer server...");
94
- // Dynamic import to avoid circular dependency
95
- const { startAnalysisServer } = await import("./analysis-server.js");
96
- const handle = await startAnalysisServer("video-analysis");
97
- console.log(`🌐 Analysis viewer available at: ${handle.url}`);
98
- console.log("📋 Press Ctrl+C to stop the server");
99
- let isShuttingDown = false;
100
- const gracefulShutdown = async (signal) => {
101
- if (isShuttingDown)
102
- return;
103
- isShuttingDown = true;
104
- console.log(`\n🛑 Received ${signal}, shutting down server...`);
105
- try {
106
- await handle.close();
107
- process.exit(0);
108
- }
109
- catch (error) {
110
- console.error("Error closing server:", error);
111
- process.exit(1);
112
- }
113
- };
114
- process.once("SIGINT", () => gracefulShutdown("SIGINT"));
115
- process.once("SIGTERM", () => gracefulShutdown("SIGTERM"));
116
- return handle;
117
- }
118
- else {
119
- console.log("🚀 Analysis viewer server not started. Results available in the CLI.");
120
- console.log(result);
121
- process.exit(0);
122
- }
123
- }
124
- async function runVideoAnalysis({ videoUrl, videoUrlHash, params, featureFlags, workingDirectory, skipUpload, }) {
125
- try {
126
- const ffmpegClient = new ffmpeg_1.LocalFFmpegClient();
127
- const extractionResult = await ffmpegClient.extractVideoFrames(videoUrl, videoUrlHash, workingDirectory, {
128
- fps: params.fps,
129
- threshold: params.threshold,
130
- startTime: params.startTime,
131
- duration: params.duration,
132
- });
133
- const { totalFramesCount, uniqueFrameInfos, videoDurationSeconds } = extractionResult;
134
- await (0, storage_manager_1.uploadFramesToR2)(videoUrlHash, uniqueFrameInfos);
135
- const batchSize = await (0, model_limits_1.calculateOptimalBatchSize)(params.model, uniqueFrameInfos);
136
- const frameBatch = uniqueFrameInfos
137
- .map((f) => {
138
- return {
139
- name: f.fileName,
140
- contentType: "image/png",
141
- url: f.url,
142
- };
143
- })
144
- .slice(0, batchSize);
145
- const { analysis, allMessages, parsedXml } = await (0, agent_orchestrator_1.orchestrateVideoAnalysis)({
146
- selectedModel: params.model,
147
- featureFlags,
148
- workingDirectory,
149
- frameBatch,
150
- });
151
- const isTruncated = frameBatch.length !== batchSize;
152
- const finalAnalysis = isTruncated
153
- ? `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. ${analysis}`
154
- : analysis;
155
- const interleavedResults = (0, utils_1.createInterleavedResults)(parsedXml, uniqueFrameInfos);
156
- const videoAnalysisSummary = {
157
- total_extracted_frames: totalFramesCount,
158
- video_duration: videoDurationSeconds,
159
- unique_frames_count: uniqueFrameInfos.length,
160
- video_url: videoUrl,
161
- analysis: finalAnalysis,
162
- analysis_id: videoUrlHash,
163
- params,
164
- interleaved_tool_result: interleavedResults,
165
- };
29
+ currentStep = "frame_extraction";
30
+ let extractionResult;
31
+ const startTime = params.startTime
32
+ ? (0, utils_1.formatTimestampToSeconds)(params.startTime)
33
+ : 0;
34
+ try {
35
+ extractionResult = await (0, videostil_1.extractUniqueFrames)({
36
+ videoUrl: url,
37
+ fps: constants_1.VIDEO_ANALYSIS.DEFAULT_FPS,
38
+ threshold: constants_1.VIDEO_ANALYSIS.DEFAULT_THRESHOLD,
39
+ startTime,
40
+ duration: params.duration,
41
+ workingDir: workingDirectory,
42
+ });
43
+ }
44
+ catch (error) {
45
+ throw new Error(`Frame extraction failed: ${error instanceof Error ? error.message : String(error)}`);
46
+ }
47
+ const { totalFramesCount, uniqueFrames: extractedFrames, videoDurationSeconds, } = extractionResult;
48
+ // Map videostil FrameInfo to test-gen UniqueFrameInfos
49
+ uniqueFrameInfos = extractedFrames.map((frame) => ({
50
+ index: frame.index,
51
+ path: frame.path,
52
+ fileName: frame.fileName,
53
+ url: frame.url || `${(0, utils_1.getR2BaseUrlByHash)(videoHash)}${frame.fileName}`,
54
+ base64: frame.base64 || "",
55
+ timestamp: frame.timestamp || 0,
56
+ }));
57
+ result.total_extracted_frames = totalFramesCount;
58
+ result.video_duration = (0, utils_1.formatSecondsToTimestamp)(videoDurationSeconds);
59
+ result.unique_frames_count = uniqueFrameInfos.length;
60
+ currentStep = "batch_size_calculation";
61
+ let batchSize;
62
+ try {
63
+ batchSize = await (0, model_limits_1.calculateOptimalBatchSize)(params.model, uniqueFrameInfos);
64
+ }
65
+ catch (error) {
66
+ throw new Error(`Batch size calculation failed: ${error instanceof Error ? error.message : String(error)}`);
67
+ }
68
+ const uniqueFramesBatch = uniqueFrameInfos.slice(0, batchSize);
69
+ const frameBatch = uniqueFramesBatch.map((f) => ({
70
+ name: f.fileName,
71
+ contentType: "image/png",
72
+ base64Data: f.base64,
73
+ }));
74
+ currentStep = "video_analysis";
75
+ let analysis, parsedXml;
76
+ try {
77
+ const analysisResult = await (0, videostil_1.analyseFrames)({
78
+ selectedModel: params.model,
79
+ frameBatch,
80
+ });
81
+ analysis = analysisResult.analysis;
82
+ allMessages = analysisResult.allMessages;
83
+ parsedXml = analysisResult.parsedXml;
84
+ }
85
+ catch (error) {
86
+ throw new Error(`Video analysis failed: ${error instanceof Error ? error.message : String(error)}`);
87
+ }
88
+ const allFramesLength = uniqueFrameInfos.length;
89
+ const isTruncated = allFramesLength !== batchSize;
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;
94
+ result.analysis = isTruncated
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.`;
97
+ currentStep = "interleaved_results";
98
+ try {
99
+ interleavedResults = (0, utils_1.createInterleavedResults)(parsedXml, uniqueFrameInfos);
100
+ }
101
+ catch (error) {
102
+ throw new Error(`Interleaved results creation failed: ${error instanceof Error ? error.message : String(error)}`);
103
+ }
166
104
  if (!skipUpload) {
167
- await (0, storage_manager_1.uploadSummaryToR2)(videoAnalysisSummary);
168
- await (0, storage_manager_1.uploadChatStateToR2)(allMessages, videoUrlHash);
105
+ currentStep = "upload_all";
106
+ const uploadPromises = [
107
+ (0, storage_manager_1.uploadFramesToR2)(videoHash, uniqueFrameInfos).catch((error) => {
108
+ throw new Error(`Frame upload failed: ${error instanceof Error ? error.message : String(error)}`);
109
+ }),
110
+ (0, storage_manager_1.uploadSummaryToR2)({
111
+ ...result,
112
+ interleaved_tool_result: interleavedResults,
113
+ }).catch((error) => {
114
+ throw new Error(`Summary upload failed: ${error instanceof Error ? error.message : String(error)}`);
115
+ }),
116
+ (0, storage_manager_1.uploadChatStateToR2)(allMessages, videoHash).catch((error) => {
117
+ throw new Error(`Chat state upload failed: ${error instanceof Error ? error.message : String(error)}`);
118
+ }),
119
+ ];
120
+ await Promise.all(uploadPromises);
169
121
  }
170
- const toolResult = {
171
- total_extracted_frames: totalFramesCount,
172
- video_duration: videoDurationSeconds,
173
- unique_frames_count: uniqueFrameInfos.length,
174
- video_url: videoUrl,
175
- analysis: finalAnalysis,
176
- analysis_id: videoUrlHash,
177
- params,
178
- };
179
122
  return {
180
- result: toolResult,
123
+ result,
181
124
  unique_frames: uniqueFrameInfos,
182
125
  interleaved_tool_result: interleavedResults,
183
126
  chat_messages: allMessages,
184
- isError: false,
127
+ error: finalError,
185
128
  };
186
129
  }
187
130
  catch (error) {
188
131
  const errorMessage = error instanceof Error ? error.message : String(error);
132
+ finalError = `Error at step [${currentStep}]: ${errorMessage}`;
189
133
  return {
190
- result: {
191
- total_extracted_frames: 0,
192
- video_duration: 0,
193
- unique_frames_count: 0,
194
- video_url: videoUrl,
195
- analysis: `Error during video analysis: ${errorMessage}`,
196
- analysis_id: videoUrlHash,
197
- params,
198
- },
199
- interleaved_tool_result: [],
200
- chat_messages: [],
201
- isError: true,
134
+ result,
135
+ unique_frames: uniqueFrameInfos,
136
+ interleaved_tool_result: interleavedResults,
137
+ chat_messages: allMessages,
138
+ error: finalError,
202
139
  };
203
140
  }
204
141
  }
@@ -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,CAwBjB;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,mBAAmB,EAC1B,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
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,
@@ -42,11 +32,14 @@ async function calculateActualBatchSize(uniqueFrameInfos) {
42
32
  return stats.size;
43
33
  }));
44
34
  const totalBytes = sizes.reduce((sum, size) => sum + size, 0);
45
- const totalMB = totalBytes / (1024 * 1024);
35
+ // Base64 encoding inflates size by ~33% (4/3 ratio)
36
+ const base64InflatedBytes = totalBytes * (4 / 3);
37
+ const totalMB = base64InflatedBytes / (1024 * 1024);
46
38
  return totalMB;
47
39
  }
48
40
  catch (error) {
49
- return uniqueFrameInfos.length * constants_1.VIDEO_ANALYSIS.DEFAULT_FRAME_SIZE_MB;
41
+ // Apply same base64 inflation to default calculation
42
+ return (uniqueFrameInfos.length * constants_2.VIDEO_ANALYSIS.DEFAULT_FRAME_SIZE_MB * (4 / 3));
50
43
  }
51
44
  }
52
45
  async function calculateOptimalBatchSize(model, uniqueFrameInfos) {
@@ -57,11 +50,14 @@ async function calculateOptimalBatchSize(model, uniqueFrameInfos) {
57
50
  let batchSize = Math.min(limits.maxImages, uniqueFrameInfos.length);
58
51
  while (batchSize > 0) {
59
52
  const frameBatch = uniqueFrameInfos.slice(0, batchSize);
53
+ console.log("Batch size:", frameBatch.length);
60
54
  const actualBatchSizeMB = await calculateActualBatchSize(frameBatch);
55
+ console.log("Actual batch size in MB:", actualBatchSizeMB);
61
56
  if (actualBatchSizeMB <= limits.maxSizeMB) {
62
57
  return batchSize;
63
58
  }
64
- 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);
60
+ console.log("Reduced batch size:", batchSize);
65
61
  }
66
62
  return 1;
67
63
  }
@@ -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":"AACA,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,CAQd,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"}
@@ -26,12 +26,19 @@ const uploadToR2 = async (files, videoUrlHash) => {
26
26
  }
27
27
  };
28
28
  const uploadFramesToR2 = async (videoUrlHash, frames) => {
29
- const frameFiles = frames.map((f) => ({
30
- buffer: Buffer.from(f.base64, "base64"),
31
- fileName: f.fileName,
32
- mimeType: "image/png",
33
- }));
34
- await uploadToR2(frameFiles, videoUrlHash);
29
+ console.log(`[uploadFramesToR2] queuing ${frames.length} frames for upload`);
30
+ for (const frame of frames) {
31
+ (0, r2_uploader_1.sendTaskToQueue)(async () => {
32
+ const frameFile = {
33
+ buffer: Buffer.from(frame.base64, "base64"),
34
+ fileName: frame.fileName,
35
+ mimeType: "image/png",
36
+ };
37
+ await uploadToR2([frameFile], videoUrlHash);
38
+ });
39
+ }
40
+ await (0, r2_uploader_1.waitForTaskQueueToFinish)();
41
+ console.log(`[uploadFramesToR2] all ${frames.length} frames uploaded`);
35
42
  };
36
43
  exports.uploadFramesToR2 = uploadFramesToR2;
37
44
  const uploadSummaryToR2 = async (videoInfo) => {
@@ -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,25 +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
- export declare function convertFramesForUpload(keyFrameImagesMap: Map<string, {
16
- type: "image/png";
17
- base64Data: string;
18
- }>): {
19
- metadata: {
20
- index: number;
21
- path: string;
22
- };
23
- image: string;
24
- }[];
25
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;AA8DF,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;AAED,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACxE;IACD,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf,EAAE,CAiBF"}
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"}