@empiricalrun/test-gen 0.79.3 → 0.79.5

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 (180) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/agent/browsing/run.d.ts +1 -1
  3. package/dist/agent/browsing/run.d.ts.map +1 -1
  4. package/dist/agent/browsing/utils.d.ts +0 -7
  5. package/dist/agent/browsing/utils.d.ts.map +1 -1
  6. package/dist/agent/browsing/utils.js +1 -56
  7. package/dist/agent/chat/index.d.ts.map +1 -1
  8. package/dist/agent/chat/index.js +21 -2
  9. package/dist/agent/chat/prompt/pw-utils-docs.d.ts +1 -1
  10. package/dist/agent/chat/prompt/pw-utils-docs.d.ts.map +1 -1
  11. package/dist/agent/chat/prompt/pw-utils-docs.js +1 -1
  12. package/dist/agent/chat/prompt/trace-utils-docs.d.ts +2 -0
  13. package/dist/agent/chat/prompt/trace-utils-docs.d.ts.map +1 -0
  14. package/dist/agent/chat/prompt/trace-utils-docs.js +208 -0
  15. package/dist/agent/code-review/index.d.ts +1 -1
  16. package/dist/agent/code-review/index.d.ts.map +1 -1
  17. package/dist/agent/code-review/index.js +4 -4
  18. package/dist/agent/code-review/{parser.d.ts → xml-parser.d.ts} +1 -1
  19. package/dist/agent/code-review/xml-parser.d.ts.map +1 -0
  20. package/dist/agent/code-review/{parser.js → xml-parser.js} +1 -1
  21. package/dist/agent/fast-triage/index.d.ts.map +1 -1
  22. package/dist/agent/fast-triage/index.js +31 -3
  23. package/dist/agent/master/element-annotation.d.ts.map +1 -1
  24. package/dist/agent/master/element-annotation.js +2 -19
  25. package/dist/agent/master/run.d.ts +1 -1
  26. package/dist/agent/master/run.d.ts.map +1 -1
  27. package/dist/agent/master/run.js +1 -1
  28. package/dist/bin/index.js +0 -2
  29. package/dist/constants/index.d.ts +1 -1
  30. package/dist/constants/index.js +1 -1
  31. package/dist/dashboard/client.d.ts +2 -40
  32. package/dist/dashboard/client.d.ts.map +1 -1
  33. package/dist/dashboard/client.js +4 -206
  34. package/dist/dashboard/index.d.ts +2 -3
  35. package/dist/dashboard/index.d.ts.map +1 -1
  36. package/dist/dashboard/index.js +10 -10
  37. package/dist/dashboard/tool-response-from-sandbox.d.ts +2 -0
  38. package/dist/dashboard/tool-response-from-sandbox.d.ts.map +1 -0
  39. package/dist/dashboard/tool-response-from-sandbox.js +6 -0
  40. package/dist/dashboard/tool-response.d.ts +1 -4
  41. package/dist/dashboard/tool-response.d.ts.map +1 -1
  42. package/dist/dashboard/tool-response.js +5 -86
  43. package/dist/dashboard/types.d.ts +1 -8
  44. package/dist/dashboard/types.d.ts.map +1 -1
  45. package/dist/dashboard/types.js +4 -14
  46. package/dist/file/server.d.ts +1 -1
  47. package/dist/file/server.d.ts.map +1 -1
  48. package/dist/file-info/adapters/github/reader.d.ts.map +1 -1
  49. package/dist/file-info/adapters/github/reader.js +9 -3
  50. package/dist/generate-summary/generate-error-stack-summary.js +1 -4
  51. package/dist/generate-summary/generate-failed-step-screenshot-diff-summary.d.ts.map +1 -1
  52. package/dist/generate-summary/generate-failed-step-screenshot-diff-summary.js +8 -8
  53. package/dist/generate-summary/generate-grouped-summary.js +1 -4
  54. package/dist/generate-summary/merge-summary.js +1 -4
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +3 -3
  57. package/dist/recorder/index.d.ts.map +1 -1
  58. package/dist/recorder/index.js +2 -2
  59. package/dist/telemetry/index.d.ts +3 -3
  60. package/dist/telemetry/index.d.ts.map +1 -1
  61. package/dist/telemetry/index.js +8 -5
  62. package/dist/tools/analyse-video/index.js +1 -1
  63. package/dist/tools/definitions/publish-markdown-report.d.ts +8 -0
  64. package/dist/tools/definitions/publish-markdown-report.d.ts.map +1 -0
  65. package/dist/tools/definitions/publish-markdown-report.js +29 -0
  66. package/dist/tools/diagnosis-fetcher.d.ts +5 -0
  67. package/dist/tools/diagnosis-fetcher.d.ts.map +1 -1
  68. package/dist/tools/diagnosis-fetcher.js +17 -12
  69. package/dist/tools/executor/index.d.ts.map +1 -1
  70. package/dist/tools/executor/index.js +2 -2
  71. package/dist/tools/fetch-file/index.d.ts.map +1 -1
  72. package/dist/tools/fetch-file/index.js +11 -10
  73. package/dist/tools/fetch-file/utils.d.ts +13 -1
  74. package/dist/tools/fetch-file/utils.d.ts.map +1 -1
  75. package/dist/tools/fetch-file/utils.js +44 -118
  76. package/dist/tools/index.d.ts +1 -1
  77. package/dist/tools/index.d.ts.map +1 -1
  78. package/dist/tools/index.js +9 -5
  79. package/dist/tools/issues-v1/index.d.ts +0 -2
  80. package/dist/tools/issues-v1/index.d.ts.map +1 -1
  81. package/dist/tools/issues-v1/index.js +1 -5
  82. package/dist/tools/publish-markdown-report/index.d.ts +3 -0
  83. package/dist/tools/publish-markdown-report/index.d.ts.map +1 -0
  84. package/dist/tools/publish-markdown-report/index.js +196 -0
  85. package/dist/tools/test-gen-browser.d.ts.map +1 -1
  86. package/dist/tools/test-gen-browser.js +4 -4
  87. package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
  88. package/dist/tools/trace-dot-zip/index.js +19 -9
  89. package/dist/utils/model.d.ts.map +1 -1
  90. package/dist/utils/model.js +2 -6
  91. package/package.json +4 -11
  92. package/tsconfig.tsbuildinfo +1 -1
  93. package/dist/agent/code-review/parser.d.ts.map +0 -1
  94. package/dist/agent/cua/computer.d.ts +0 -14
  95. package/dist/agent/cua/computer.d.ts.map +0 -1
  96. package/dist/agent/cua/computer.js +0 -191
  97. package/dist/agent/cua/index.d.ts +0 -22
  98. package/dist/agent/cua/index.d.ts.map +0 -1
  99. package/dist/agent/cua/index.js +0 -254
  100. package/dist/agent/cua/model.d.ts +0 -25
  101. package/dist/agent/cua/model.d.ts.map +0 -1
  102. package/dist/agent/cua/model.js +0 -66
  103. package/dist/agent/cua/pw-codegen/element-from-point.d.ts +0 -10
  104. package/dist/agent/cua/pw-codegen/element-from-point.d.ts.map +0 -1
  105. package/dist/agent/cua/pw-codegen/element-from-point.js +0 -135
  106. package/dist/agent/cua/pw-codegen/factory.d.ts +0 -15
  107. package/dist/agent/cua/pw-codegen/factory.d.ts.map +0 -1
  108. package/dist/agent/cua/pw-codegen/factory.js +0 -59
  109. package/dist/agent/cua/pw-codegen/index.d.ts +0 -7
  110. package/dist/agent/cua/pw-codegen/index.d.ts.map +0 -1
  111. package/dist/agent/cua/pw-codegen/index.js +0 -14
  112. package/dist/agent/cua/pw-codegen/pw-event-sink/index.d.ts +0 -43
  113. package/dist/agent/cua/pw-codegen/pw-event-sink/index.d.ts.map +0 -1
  114. package/dist/agent/cua/pw-codegen/pw-event-sink/index.js +0 -250
  115. package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.d.ts +0 -14
  116. package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.d.ts.map +0 -1
  117. package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.js +0 -88
  118. package/dist/agent/cua/pw-codegen/pw-pause/index.d.ts +0 -17
  119. package/dist/agent/cua/pw-codegen/pw-pause/index.d.ts.map +0 -1
  120. package/dist/agent/cua/pw-codegen/pw-pause/index.js +0 -117
  121. package/dist/agent/cua/pw-codegen/pw-pause/ipc.d.ts +0 -3
  122. package/dist/agent/cua/pw-codegen/pw-pause/ipc.d.ts.map +0 -1
  123. package/dist/agent/cua/pw-codegen/pw-pause/ipc.js +0 -13
  124. package/dist/agent/cua/pw-codegen/pw-pause/patch.d.ts +0 -24
  125. package/dist/agent/cua/pw-codegen/pw-pause/patch.d.ts.map +0 -1
  126. package/dist/agent/cua/pw-codegen/pw-pause/patch.js +0 -197
  127. package/dist/agent/cua/pw-codegen/pw-pause/types.d.ts +0 -14
  128. package/dist/agent/cua/pw-codegen/pw-pause/types.d.ts.map +0 -1
  129. package/dist/agent/cua/pw-codegen/pw-pause/types.js +0 -2
  130. package/dist/agent/cua/pw-codegen/pw-pause/utils.d.ts +0 -2
  131. package/dist/agent/cua/pw-codegen/pw-pause/utils.d.ts.map +0 -1
  132. package/dist/agent/cua/pw-codegen/pw-pause/utils.js +0 -6
  133. package/dist/agent/cua/pw-codegen/types.d.ts +0 -47
  134. package/dist/agent/cua/pw-codegen/types.d.ts.map +0 -1
  135. package/dist/agent/cua/pw-codegen/types.js +0 -2
  136. package/dist/agent/cua/pw-codegen/version.d.ts +0 -25
  137. package/dist/agent/cua/pw-codegen/version.d.ts.map +0 -1
  138. package/dist/agent/cua/pw-codegen/version.js +0 -86
  139. package/dist/agent/master/icon-descriptor/index.d.ts +0 -22
  140. package/dist/agent/master/icon-descriptor/index.d.ts.map +0 -1
  141. package/dist/agent/master/icon-descriptor/index.js +0 -249
  142. package/dist/agent/master/icon-descriptor/normalize-svg.d.ts +0 -2
  143. package/dist/agent/master/icon-descriptor/normalize-svg.d.ts.map +0 -1
  144. package/dist/agent/master/icon-descriptor/normalize-svg.js +0 -247
  145. package/dist/tools/issues-v1/create-issue.d.ts +0 -3
  146. package/dist/tools/issues-v1/create-issue.d.ts.map +0 -1
  147. package/dist/tools/issues-v1/create-issue.js +0 -72
  148. package/dist/tools/issues-v1/update-issue.d.ts +0 -3
  149. package/dist/tools/issues-v1/update-issue.d.ts.map +0 -1
  150. package/dist/tools/issues-v1/update-issue.js +0 -74
  151. package/dist/trace-utils/cli.d.ts +0 -3
  152. package/dist/trace-utils/cli.d.ts.map +0 -1
  153. package/dist/trace-utils/cli.js +0 -302
  154. package/dist/trace-utils/console.d.ts +0 -11
  155. package/dist/trace-utils/console.d.ts.map +0 -1
  156. package/dist/trace-utils/console.js +0 -74
  157. package/dist/trace-utils/dom-snapshot.d.ts +0 -19
  158. package/dist/trace-utils/dom-snapshot.d.ts.map +0 -1
  159. package/dist/trace-utils/dom-snapshot.js +0 -328
  160. package/dist/trace-utils/index.d.ts +0 -12
  161. package/dist/trace-utils/index.d.ts.map +0 -1
  162. package/dist/trace-utils/index.js +0 -28
  163. package/dist/trace-utils/network.d.ts +0 -16
  164. package/dist/trace-utils/network.d.ts.map +0 -1
  165. package/dist/trace-utils/network.js +0 -178
  166. package/dist/trace-utils/normalize-trace-url.d.ts +0 -2
  167. package/dist/trace-utils/normalize-trace-url.d.ts.map +0 -1
  168. package/dist/trace-utils/normalize-trace-url.js +0 -15
  169. package/dist/trace-utils/screenshots.d.ts +0 -24
  170. package/dist/trace-utils/screenshots.d.ts.map +0 -1
  171. package/dist/trace-utils/screenshots.js +0 -197
  172. package/dist/trace-utils/steps.d.ts +0 -10
  173. package/dist/trace-utils/steps.d.ts.map +0 -1
  174. package/dist/trace-utils/steps.js +0 -126
  175. package/dist/trace-utils/types.d.ts +0 -51
  176. package/dist/trace-utils/types.d.ts.map +0 -1
  177. package/dist/trace-utils/types.js +0 -2
  178. package/dist/utils/playwright-report-parser.d.ts +0 -2
  179. package/dist/utils/playwright-report-parser.d.ts.map +0 -1
  180. package/dist/utils/playwright-report-parser.js +0 -10
@@ -1 +1 @@
1
- {"root":["./src/index.ts","./src/logger.ts","./src/actions/assert.ts","./src/actions/click.ts","./src/actions/done.ts","./src/actions/fill.ts","./src/actions/goto.ts","./src/actions/hover.ts","./src/actions/index.ts","./src/actions/next-task.ts","./src/actions/press.ts","./src/actions/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/index.ts","./src/agent/cli.ts","./src/agent/index.ts","./src/agent/base/index.ts","./src/agent/browsing/index.ts","./src/agent/browsing/run.ts","./src/agent/browsing/utils.ts","./src/agent/chat/agent-loop.ts","./src/agent/chat/exports.ts","./src/agent/chat/index.ts","./src/agent/chat/models.ts","./src/agent/chat/state.ts","./src/agent/chat/types.ts","./src/agent/chat/utils.ts","./src/agent/chat/prompt/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/chat/prompt/test-case-def.ts","./src/agent/code-review/index.ts","./src/agent/code-review/parser.ts","./src/agent/code-review/types.ts","./src/agent/code-review/executor/index.ts","./src/agent/cua/computer.ts","./src/agent/cua/index.ts","./src/agent/cua/model.ts","./src/agent/cua/pw-codegen/element-from-point.ts","./src/agent/cua/pw-codegen/factory.ts","./src/agent/cua/pw-codegen/index.ts","./src/agent/cua/pw-codegen/types.ts","./src/agent/cua/pw-codegen/version.ts","./src/agent/cua/pw-codegen/pw-event-sink/index.ts","./src/agent/cua/pw-codegen/pw-pause/for-recorder.ts","./src/agent/cua/pw-codegen/pw-pause/index.ts","./src/agent/cua/pw-codegen/pw-pause/ipc.ts","./src/agent/cua/pw-codegen/pw-pause/patch.ts","./src/agent/cua/pw-codegen/pw-pause/types.ts","./src/agent/cua/pw-codegen/pw-pause/utils.ts","./src/agent/fast-triage/index.ts","./src/agent/master/action-tool-calls.ts","./src/agent/master/element-annotation.ts","./src/agent/master/execute-browser-action.ts","./src/agent/master/next-action.ts","./src/agent/master/planner.ts","./src/agent/master/run.ts","./src/agent/master/scroller.ts","./src/agent/master/with-hints.ts","./src/agent/master/browser-tests/cua.spec.ts","./src/agent/master/browser-tests/fixtures.ts","./src/agent/master/browser-tests/index.spec.ts","./src/agent/master/icon-descriptor/index.ts","./src/agent/master/icon-descriptor/normalize-svg.ts","./src/agent/planner/run-time-planner.ts","./src/agent/planner/run.ts","./src/agent/triage/index.ts","./src/artifacts/index.ts","./src/artifacts/utils.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.ts","./src/bin/environments.ts","./src/bin/index.ts","./src/bin/setup.ts","./src/bin/logger/index.ts","./src/bin/utils/context.ts","./src/bin/utils/index.ts","./src/bin/utils/fs/index.ts","./src/bin/utils/platform/web/index.ts","./src/bin/utils/platform/web/test-files/ts-path-import-validate.ts","./src/bin/utils/scenarios/index.ts","./src/browser-injected-scripts/annotate-elements.spec.ts","./src/constants/index.ts","./src/dashboard/client.ts","./src/dashboard/index.ts","./src/dashboard/tool-response.ts","./src/dashboard/totp.ts","./src/dashboard/types.ts","./src/errors/index.ts","./src/file/client.ts","./src/file/server.ts","./src/file-info/index.ts","./src/file-info/adapters/file-system/index.ts","./src/file-info/adapters/file-system/reader.ts","./src/file-info/adapters/github/index.ts","./src/file-info/adapters/github/reader.ts","./src/generate-summary/frame-sampling.ts","./src/generate-summary/generate-error-stack-summary.ts","./src/generate-summary/generate-failed-step-screenshot-diff-summary.ts","./src/generate-summary/generate-grouped-summary.ts","./src/generate-summary/merge-summary.ts","./src/generate-summary/pick-videos-for-comparison.ts","./src/human-in-the-loop/cli.ts","./src/human-in-the-loop/index.ts","./src/human-in-the-loop/ipc.ts","./src/page/index.ts","./src/prompts/lib/ts-transformer.ts","./src/recorder/env-variables.ts","./src/recorder/index.ts","./src/recorder/request.ts","./src/recorder/temp-files.ts","./src/recorder/upload.ts","./src/recorder/validation.ts","./src/telemetry/index.ts","./src/test-build/index.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/index.ts","./src/tools/list-environments.ts","./src/tools/run-test.ts","./src/tools/test-gen-browser.ts","./src/tools/analyse-video/index.ts","./src/tools/create-pull-request/index.ts","./src/tools/create-pull-request/utils.ts","./src/tools/definitions/analyse-video.ts","./src/tools/definitions/delete-file.ts","./src/tools/definitions/download-build.ts","./src/tools/definitions/grep.ts","./src/tools/definitions/list-tests-and-projects.ts","./src/tools/definitions/merge-conflicts.ts","./src/tools/definitions/rename-file.ts","./src/tools/definitions/run-test.ts","./src/tools/definitions/safe-bash.ts","./src/tools/definitions/str_replace_editor.ts","./src/tools/definitions/test-gen-browser.ts","./src/tools/definitions/trace-dot-zip.ts","./src/tools/definitions/upgrade-packages.ts","./src/tools/definitions/utils.ts","./src/tools/delete-file/index.ts","./src/tools/download-build/index.ts","./src/tools/executor/base.ts","./src/tools/executor/index.ts","./src/tools/executor/types.ts","./src/tools/executor/utils/checkpoint.ts","./src/tools/executor/utils/git.ts","./src/tools/executor/utils/index.ts","./src/tools/executor/utils/pr-description.ts","./src/tools/fetch-file/index.ts","./src/tools/fetch-file/utils.ts","./src/tools/fetch-session-diff/index.ts","./src/tools/file-operations/create.ts","./src/tools/file-operations/index.ts","./src/tools/file-operations/insert.ts","./src/tools/file-operations/replace.ts","./src/tools/file-operations/shared/helpers.ts","./src/tools/file-operations/view/index.ts","./src/tools/firecrawl-scrape/index.ts","./src/tools/grep/index.ts","./src/tools/grep/types.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/issues-v1/create-issue.ts","./src/tools/issues-v1/index.ts","./src/tools/issues-v1/list-issues.ts","./src/tools/issues-v1/update-issue.ts","./src/tools/issues-v1/utils.ts","./src/tools/issues-v2/create-issue.ts","./src/tools/issues-v2/set-issue-description.ts","./src/tools/issues-v2/update-issue.ts","./src/tools/list-tests-and-projects/index.ts","./src/tools/merge-conflicts/index.ts","./src/tools/rename-file/index.ts","./src/tools/safe-bash/index.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/trace-dot-zip/index.ts","./src/tools/trace-dot-zip/types.ts","./src/tools/trace-dot-zip/utils/console-trace.ts","./src/tools/trace-dot-zip/utils/extract-screenshots.ts","./src/tools/trace-dot-zip/utils/extract-steps.ts","./src/tools/trace-dot-zip/utils/extract-zip.ts","./src/tools/trace-dot-zip/utils/network-trace.ts","./src/tools/triage-summary/index.ts","./src/tools/triage-summary/types.ts","./src/tools/triage-summary/utils.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/queue.ts","./src/tools/utils/validate-schema.ts","./src/trace-utils/cli.ts","./src/trace-utils/console.ts","./src/trace-utils/dom-snapshot.ts","./src/trace-utils/index.ts","./src/trace-utils/network.ts","./src/trace-utils/normalize-trace-url.ts","./src/trace-utils/screenshots.ts","./src/trace-utils/steps.ts","./src/trace-utils/types.ts","./src/types/handlebars.d.ts","./src/types/index.ts","./src/utils/SQSClient.ts","./src/utils/env.ts","./src/utils/exec.ts","./src/utils/file.ts","./src/utils/hash.ts","./src/utils/html.ts","./src/utils/index.ts","./src/utils/json.ts","./src/utils/model.ts","./src/utils/playwright-report-parser.ts","./src/utils/playwright-test-id.ts","./src/utils/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.ts","./src/utils/url-validation.ts","./src/utils/dedup/dedup-image.ts","./src/utils/dedup/find-threshold.ts","./src/video-core/index.ts","./src/video-core/model-limits.ts","./src/video-core/storage-manager.ts","./src/video-core/types.ts","./src/video-core/utils.ts"],"version":"5.8.3"}
1
+ {"root":["./src/index.ts","./src/logger.ts","./src/actions/assert.ts","./src/actions/click.ts","./src/actions/done.ts","./src/actions/fill.ts","./src/actions/goto.ts","./src/actions/hover.ts","./src/actions/index.ts","./src/actions/next-task.ts","./src/actions/press.ts","./src/actions/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/index.ts","./src/agent/cli.ts","./src/agent/index.ts","./src/agent/base/index.ts","./src/agent/browsing/index.ts","./src/agent/browsing/run.ts","./src/agent/browsing/utils.ts","./src/agent/chat/agent-loop.ts","./src/agent/chat/exports.ts","./src/agent/chat/index.ts","./src/agent/chat/models.ts","./src/agent/chat/state.ts","./src/agent/chat/types.ts","./src/agent/chat/utils.ts","./src/agent/chat/prompt/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/chat/prompt/test-case-def.ts","./src/agent/chat/prompt/trace-utils-docs.ts","./src/agent/code-review/index.ts","./src/agent/code-review/types.ts","./src/agent/code-review/xml-parser.ts","./src/agent/code-review/executor/index.ts","./src/agent/fast-triage/index.ts","./src/agent/master/action-tool-calls.ts","./src/agent/master/element-annotation.ts","./src/agent/master/execute-browser-action.ts","./src/agent/master/next-action.ts","./src/agent/master/planner.ts","./src/agent/master/run.ts","./src/agent/master/scroller.ts","./src/agent/master/with-hints.ts","./src/agent/master/browser-tests/cua.spec.ts","./src/agent/master/browser-tests/fixtures.ts","./src/agent/master/browser-tests/index.spec.ts","./src/agent/planner/run-time-planner.ts","./src/agent/planner/run.ts","./src/agent/triage/index.ts","./src/artifacts/index.ts","./src/artifacts/utils.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.ts","./src/bin/environments.ts","./src/bin/index.ts","./src/bin/setup.ts","./src/bin/logger/index.ts","./src/bin/utils/context.ts","./src/bin/utils/index.ts","./src/bin/utils/fs/index.ts","./src/bin/utils/platform/web/index.ts","./src/bin/utils/platform/web/test-files/ts-path-import-validate.ts","./src/bin/utils/scenarios/index.ts","./src/browser-injected-scripts/annotate-elements.spec.ts","./src/constants/index.ts","./src/dashboard/client.ts","./src/dashboard/index.ts","./src/dashboard/tool-response-from-sandbox.ts","./src/dashboard/tool-response.ts","./src/dashboard/totp.ts","./src/dashboard/types.ts","./src/errors/index.ts","./src/file/client.ts","./src/file/server.ts","./src/file-info/index.ts","./src/file-info/adapters/file-system/index.ts","./src/file-info/adapters/file-system/reader.ts","./src/file-info/adapters/github/index.ts","./src/file-info/adapters/github/reader.ts","./src/generate-summary/frame-sampling.ts","./src/generate-summary/generate-error-stack-summary.ts","./src/generate-summary/generate-failed-step-screenshot-diff-summary.ts","./src/generate-summary/generate-grouped-summary.ts","./src/generate-summary/merge-summary.ts","./src/generate-summary/pick-videos-for-comparison.ts","./src/human-in-the-loop/cli.ts","./src/human-in-the-loop/index.ts","./src/human-in-the-loop/ipc.ts","./src/page/index.ts","./src/prompts/lib/ts-transformer.ts","./src/recorder/env-variables.ts","./src/recorder/index.ts","./src/recorder/request.ts","./src/recorder/temp-files.ts","./src/recorder/upload.ts","./src/recorder/validation.ts","./src/telemetry/index.ts","./src/test-build/index.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/index.ts","./src/tools/list-environments.ts","./src/tools/run-test.ts","./src/tools/test-gen-browser.ts","./src/tools/analyse-video/index.ts","./src/tools/create-pull-request/index.ts","./src/tools/create-pull-request/utils.ts","./src/tools/definitions/analyse-video.ts","./src/tools/definitions/delete-file.ts","./src/tools/definitions/download-build.ts","./src/tools/definitions/grep.ts","./src/tools/definitions/list-tests-and-projects.ts","./src/tools/definitions/merge-conflicts.ts","./src/tools/definitions/publish-markdown-report.ts","./src/tools/definitions/rename-file.ts","./src/tools/definitions/run-test.ts","./src/tools/definitions/safe-bash.ts","./src/tools/definitions/str_replace_editor.ts","./src/tools/definitions/test-gen-browser.ts","./src/tools/definitions/trace-dot-zip.ts","./src/tools/definitions/upgrade-packages.ts","./src/tools/definitions/utils.ts","./src/tools/delete-file/index.ts","./src/tools/download-build/index.ts","./src/tools/executor/base.ts","./src/tools/executor/index.ts","./src/tools/executor/types.ts","./src/tools/executor/utils/checkpoint.ts","./src/tools/executor/utils/git.ts","./src/tools/executor/utils/index.ts","./src/tools/executor/utils/pr-description.ts","./src/tools/fetch-file/index.ts","./src/tools/fetch-file/utils.ts","./src/tools/fetch-session-diff/index.ts","./src/tools/file-operations/create.ts","./src/tools/file-operations/index.ts","./src/tools/file-operations/insert.ts","./src/tools/file-operations/replace.ts","./src/tools/file-operations/shared/helpers.ts","./src/tools/file-operations/view/index.ts","./src/tools/firecrawl-scrape/index.ts","./src/tools/grep/index.ts","./src/tools/grep/types.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/issues-v1/index.ts","./src/tools/issues-v1/list-issues.ts","./src/tools/issues-v1/utils.ts","./src/tools/issues-v2/create-issue.ts","./src/tools/issues-v2/set-issue-description.ts","./src/tools/issues-v2/update-issue.ts","./src/tools/list-tests-and-projects/index.ts","./src/tools/merge-conflicts/index.ts","./src/tools/publish-markdown-report/index.ts","./src/tools/rename-file/index.ts","./src/tools/safe-bash/index.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/trace-dot-zip/index.ts","./src/tools/trace-dot-zip/types.ts","./src/tools/trace-dot-zip/utils/console-trace.ts","./src/tools/trace-dot-zip/utils/extract-screenshots.ts","./src/tools/trace-dot-zip/utils/extract-steps.ts","./src/tools/trace-dot-zip/utils/extract-zip.ts","./src/tools/trace-dot-zip/utils/network-trace.ts","./src/tools/triage-summary/index.ts","./src/tools/triage-summary/types.ts","./src/tools/triage-summary/utils.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/queue.ts","./src/tools/utils/validate-schema.ts","./src/types/handlebars.d.ts","./src/types/index.ts","./src/utils/SQSClient.ts","./src/utils/env.ts","./src/utils/exec.ts","./src/utils/file.ts","./src/utils/hash.ts","./src/utils/html.ts","./src/utils/index.ts","./src/utils/json.ts","./src/utils/model.ts","./src/utils/playwright-test-id.ts","./src/utils/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.ts","./src/utils/url-validation.ts","./src/utils/dedup/dedup-image.ts","./src/utils/dedup/find-threshold.ts","./src/video-core/index.ts","./src/video-core/model-limits.ts","./src/video-core/storage-manager.ts","./src/video-core/types.ts","./src/video-core/utils.ts"],"version":"5.8.3"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/agent/code-review/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAchE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAmFvE"}
@@ -1,14 +0,0 @@
1
- import { ResponseComputerToolCall } from "openai/resources/responses/responses.mjs";
2
- import type { Page } from "playwright";
3
- import { BasePlaywrightCodegen } from "./pw-codegen/types";
4
- type OpenAIComputerAction = ResponseComputerToolCall.Click | ResponseComputerToolCall.DoubleClick | ResponseComputerToolCall.Drag | ResponseComputerToolCall.Keypress | ResponseComputerToolCall.Move | ResponseComputerToolCall.Screenshot | ResponseComputerToolCall.Scroll | ResponseComputerToolCall.Type | ResponseComputerToolCall.Wait;
5
- export declare function getScreenshot(page: Page): Promise<string>;
6
- export declare function executeModelAction(page: Page, action: OpenAIComputerAction | {
7
- type: "goto";
8
- url: string;
9
- }, codegen: BasePlaywrightCodegen): Promise<{
10
- actionSummary: string;
11
- actionCode: string;
12
- }>;
13
- export {};
14
- //# sourceMappingURL=computer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"computer.d.ts","sourceRoot":"","sources":["../../../src/agent/cua/computer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,oBAAoB,GACrB,wBAAwB,CAAC,KAAK,GAC9B,wBAAwB,CAAC,WAAW,GACpC,wBAAwB,CAAC,IAAI,GAC7B,wBAAwB,CAAC,QAAQ,GACjC,wBAAwB,CAAC,IAAI,GAC7B,wBAAwB,CAAC,UAAU,GACnC,wBAAwB,CAAC,MAAM,GAC/B,wBAAwB,CAAC,IAAI,GAC7B,wBAAwB,CAAC,IAAI,CAAC;AAElC,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,mBAO7C;AAgCD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC5D,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IACT,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAoKD"}
@@ -1,191 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getScreenshot = getScreenshot;
4
- exports.executeModelAction = executeModelAction;
5
- async function getScreenshot(page) {
6
- // We override the `scale` option to "css" to ensure the screenshot is
7
- // consistent with the viewport size. Without this, the screenshot dimensions
8
- // are viewport size * device pixel ratio (= 3 on iPhone device emulation).
9
- // Docs: https://playwright.dev/docs/api/class-page#page-screenshot-option-scale
10
- const screenshotBytes = await page.screenshot({ scale: "css" });
11
- return Buffer.from(screenshotBytes).toString("base64");
12
- }
13
- const CUA_KEY_TO_PLAYWRIGHT_KEY = {
14
- "/": "Divide",
15
- "\\": "Backslash",
16
- alt: "Alt",
17
- arrowdown: "ArrowDown",
18
- arrowleft: "ArrowLeft",
19
- arrowright: "ArrowRight",
20
- arrowup: "ArrowUp",
21
- backspace: "Backspace",
22
- capslock: "CapsLock",
23
- // "cmd" and "ctrl" are both mapped to "ControlOrMeta" for platform
24
- // agnostic behavior, as opposed to cmd: "Meta" and ctrl: "Control"
25
- cmd: "ControlOrMeta",
26
- ctrl: "ControlOrMeta",
27
- delete: "Delete",
28
- end: "End",
29
- enter: "Enter",
30
- esc: "Escape",
31
- home: "Home",
32
- insert: "Insert",
33
- option: "Alt",
34
- pagedown: "PageDown",
35
- pageup: "PageUp",
36
- shift: "Shift",
37
- space: " ",
38
- super: "Meta",
39
- tab: "Tab",
40
- win: "Meta",
41
- };
42
- async function executeModelAction(page, action, codegen) {
43
- const actionType = action.type;
44
- let actionCode = "";
45
- let actionSummary = "";
46
- try {
47
- // For every action, this method:
48
- // 1. Record the action in codegen
49
- // -> This allows codegen to find locators for the element
50
- // before the action is executed - execution can be a destructive
51
- // operation that modifies the DOM
52
- // 2. Execute the action
53
- // 3. Add to action summary
54
- // 4. Add to action code
55
- switch (actionType) {
56
- case "goto": {
57
- const { url } = action;
58
- await codegen.recordAction({ type: "goto", url });
59
- await page.goto(url);
60
- actionSummary = `Navigated page to ${url}`;
61
- actionCode = await codegen.getCodeForLastAction();
62
- break;
63
- }
64
- case "click": {
65
- const { x, y, button = "left" } = action;
66
- console.log(`Action: click at (${x}, ${y}) with button '${button}'`);
67
- let pwButton = undefined;
68
- if (button === "left" || button === "right") {
69
- pwButton = button;
70
- }
71
- else if (button === "wheel") {
72
- pwButton = "middle";
73
- }
74
- if (pwButton) {
75
- await codegen.recordAction({ type: "click", x, y });
76
- await page.mouse.click(x, y, { button: pwButton });
77
- actionSummary = `Click at (${x}, ${y}) with button '${button}'`;
78
- actionCode = await codegen.getCodeForLastAction();
79
- }
80
- if (button === "back" || button === "forward") {
81
- if (button === "back") {
82
- await codegen.recordAction({ type: "back" });
83
- await page.goBack();
84
- actionSummary = `Navigated page back`;
85
- actionCode = await codegen.getCodeForLastAction();
86
- }
87
- else if (button === "forward") {
88
- await codegen.recordAction({ type: "forward" });
89
- await page.goForward();
90
- actionSummary = `Navigated page forward`;
91
- actionCode = await codegen.getCodeForLastAction();
92
- }
93
- }
94
- break;
95
- }
96
- case "double_click": {
97
- const { x, y } = action;
98
- console.log(`Action: doubleclick at (${x}, ${y})`);
99
- await codegen.recordAction({ type: "doubleclick", x, y });
100
- await page.mouse.dblclick(x, y, { button: "left" });
101
- actionSummary = `Double click at (${x}, ${y})`;
102
- actionCode = await codegen.getCodeForLastAction();
103
- break;
104
- }
105
- case "type": {
106
- const { text } = action;
107
- console.log(`Action: type text '${text}'`);
108
- await codegen.recordAction({ type: "type", text });
109
- await page.keyboard.type(text);
110
- actionSummary = `Type text '${text}'`;
111
- actionCode = await codegen.getCodeForLastAction();
112
- break;
113
- }
114
- case "move": {
115
- const { x, y } = action;
116
- console.log(`Action: mouse move to (${x}, ${y})`);
117
- await codegen.recordAction({ type: "move", x, y });
118
- await page.mouse.move(x, y);
119
- actionSummary = `Mouse move to (${x}, ${y})`;
120
- actionCode = await codegen.getCodeForLastAction();
121
- break;
122
- }
123
- case "drag": {
124
- const { path } = action;
125
- console.log(`Action: drag along path ${path}`);
126
- actionSummary = `Drag along path ${path}`;
127
- if (!path || path.length === 0) {
128
- break;
129
- }
130
- await codegen.recordAction({ type: "drag", path });
131
- await page.mouse.move(path[0].x, path[0].y);
132
- await page.mouse.down();
133
- for (let i = 1; i < path.length; i++) {
134
- await page.mouse.move(path[i].x, path[i].y);
135
- }
136
- await page.mouse.up();
137
- actionCode = await codegen.getCodeForLastAction();
138
- break;
139
- }
140
- case "scroll": {
141
- const { x, y, scroll_x, scroll_y } = action;
142
- console.log(`Action: scroll at (${x}, ${y}) with offsets (scroll_x=${scroll_x}, scroll_y=${scroll_y})`);
143
- await codegen.recordAction({
144
- type: "scroll",
145
- x,
146
- y,
147
- scroll_x,
148
- scroll_y,
149
- });
150
- await page.mouse.move(x, y);
151
- await page.mouse.wheel(scroll_x, scroll_y);
152
- actionSummary = `Scroll at (${x}, ${y}) with offsets (scroll_x=${scroll_x}, scroll_y=${scroll_y})`;
153
- actionCode = await codegen.getCodeForLastAction();
154
- break;
155
- }
156
- case "keypress": {
157
- const { keys } = action;
158
- const mappedKeys = keys.map((k) => {
159
- return CUA_KEY_TO_PLAYWRIGHT_KEY[k.toLowerCase()] || k;
160
- });
161
- await codegen.recordAction({ type: "keypress", keys: mappedKeys });
162
- const mappedKey = mappedKeys.join("+"); // ["CTRL", "A"] becomes ControlOrMeta+A
163
- console.log(`Action: keypress for keys ${keys} -> '${mappedKey}'`);
164
- await page.keyboard.press(mappedKey);
165
- actionSummary = `Keypress for keys ${keys} (mapped to '${mappedKey}' for Playwright)`;
166
- actionCode = await codegen.getCodeForLastAction();
167
- break;
168
- }
169
- case "wait": {
170
- console.log(`Action: wait`);
171
- await codegen.recordAction({ type: "wait" });
172
- await page.waitForTimeout(2000);
173
- actionSummary = `Wait for 2 seconds`;
174
- actionCode = await codegen.getCodeForLastAction();
175
- break;
176
- }
177
- case "screenshot": {
178
- // Nothing to do as screenshot is taken at each turn
179
- console.log(`Action: screenshot`);
180
- actionSummary = `Screenshot`;
181
- break;
182
- }
183
- default:
184
- console.log("Unrecognized action:", action);
185
- }
186
- }
187
- catch (err) {
188
- console.error(`Error handling action ${action.type}: ${err.message || err.toString()}`);
189
- }
190
- return { actionSummary, actionCode };
191
- }
@@ -1,22 +0,0 @@
1
- import { TraceClient } from "@empiricalrun/llm";
2
- import { ArtifactInputData, Usage } from "@empiricalrun/shared-types/chat-agent";
3
- import { Page } from "playwright";
4
- export type BrowserAgentResult = Array<{
5
- type: "text";
6
- text: string;
7
- } | {
8
- type: "screenshot";
9
- screenshot: ArtifactInputData;
10
- }>;
11
- export declare function createTestUsingComputerUseAgent({ page, task, trace, prefersElementFromPointCodegen, }: {
12
- page: Page;
13
- task: string;
14
- trace?: TraceClient;
15
- prefersElementFromPointCodegen?: boolean;
16
- }): Promise<{
17
- code: string;
18
- importPaths: string[];
19
- result: BrowserAgentResult;
20
- usage: Usage;
21
- }>;
22
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/cua/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,KAAK,EACN,MAAM,uCAAuC,CAAC;AAS/C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAmElC,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAClC;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,iBAAiB,CAAC;CAC/B,CACJ,CAAC;AAEF,wBAAsB,+BAA+B,CAAC,EACpD,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,8BAAsC,GACvC,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C,GAAG,OAAO,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;CACd,CAAC,CAuOD"}
@@ -1,254 +0,0 @@
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.createTestUsingComputerUseAgent = createTestUsingComputerUseAgent;
7
- const llm_1 = require("@empiricalrun/llm");
8
- const openai_1 = __importDefault(require("openai"));
9
- const logger_1 = require("../../logger");
10
- const computer_1 = require("./computer");
11
- const model_1 = require("./model");
12
- const element_from_point_1 = require("./pw-codegen/element-from-point");
13
- const factory_1 = require("./pw-codegen/factory");
14
- const MAX_ITERATIONS = 10;
15
- async function getCodegenInstance(prefersElementFromPoint) {
16
- if (prefersElementFromPoint) {
17
- logger_1.logger.debug("[getCodegen] using ElementFromPointCodegen (preferred)");
18
- return new element_from_point_1.ElementFromPointCodegen();
19
- }
20
- const repoDir = process.cwd();
21
- const { codegen, approach, version } = await (0, factory_1.createPlaywrightCodegen)(repoDir);
22
- logger_1.logger.debug(`[getCodegen] using ${approach} codegen for Playwright ${version.full}`);
23
- // Prepare if needed (patch-based approach requires file modifications)
24
- await (0, factory_1.prepareCodegenIfNeeded)(repoDir, approach);
25
- return codegen;
26
- }
27
- function artifact(screenshot, name) {
28
- return {
29
- name: `${name}`,
30
- contentType: "image/png",
31
- data: Buffer.from(screenshot, "base64"),
32
- };
33
- }
34
- async function tabsSummary(pages) {
35
- let lines = [];
36
- for (const p of pages) {
37
- lines.push(` - ${p.url()} - ${await p.title()}`);
38
- }
39
- return lines.join("\n");
40
- }
41
- async function stateOfTheBrowser(page) {
42
- const browserContext = page.context();
43
- const pages = browserContext.pages();
44
- const allPagesSummary = await tabsSummary(pages);
45
- return `
46
- ## Browser window
47
-
48
- ### Current page (what you are working on)
49
- Current page URL: ${page.url()}
50
- Current page title: ${await page.title()}
51
-
52
- ### All pages
53
- Number of open pages: ${pages.length}
54
-
55
- URLs and titles:
56
- ${allPagesSummary}`;
57
- }
58
- async function createTestUsingComputerUseAgent({ page, task, trace, prefersElementFromPointCodegen = false, }) {
59
- const codegen = await getCodegenInstance(prefersElementFromPointCodegen);
60
- await codegen.initialize(page);
61
- const screenshot = await (0, computer_1.getScreenshot)(page);
62
- const initialArtifact = artifact(screenshot, "Initial screen");
63
- let result = [
64
- { type: "screenshot", screenshot: initialArtifact },
65
- ];
66
- let tokensUsed = {
67
- input_tokens: 0,
68
- output_tokens: 0,
69
- input_tokens_details: { cached_tokens: 0 },
70
- output_tokens_details: { reasoning_tokens: 0 },
71
- };
72
- const viewport = page.viewportSize();
73
- let screenWidth = viewport?.width || 1280;
74
- let screenHeight = viewport?.height || 720;
75
- const openAIClient = trace
76
- ? (0, llm_1.observeOpenAI)(new openai_1.default(), {
77
- generationName: `computer-use-agent`,
78
- parent: trace,
79
- })
80
- : new openai_1.default();
81
- let response = await (0, model_1.callComputerUseModel)({
82
- input: [
83
- {
84
- role: "user",
85
- content: [
86
- {
87
- type: "input_text",
88
- text: `Task to execute: ${task}\n\n${await stateOfTheBrowser(page)}`,
89
- },
90
- {
91
- type: "input_image",
92
- image_url: `data:image/png;base64,${screenshot}`,
93
- detail: "high",
94
- },
95
- ],
96
- },
97
- ],
98
- screenWidth,
99
- screenHeight,
100
- openAIClient,
101
- });
102
- tokensUsed.input_tokens += response.usage?.input_tokens || 0;
103
- tokensUsed.output_tokens += response.usage?.output_tokens || 0;
104
- tokensUsed.input_tokens_details.cached_tokens +=
105
- response.usage?.input_tokens_details?.cached_tokens || 0;
106
- tokensUsed.output_tokens_details.reasoning_tokens +=
107
- response.usage?.output_tokens_details?.reasoning_tokens || 0;
108
- let isTaskDone = false;
109
- let generatedCode = "";
110
- let iterationIndex = 0;
111
- while (!isTaskDone && iterationIndex < MAX_ITERATIONS) {
112
- result.push({
113
- type: "text",
114
- text: `# Agent iteration ${iterationIndex}`,
115
- });
116
- iterationIndex++;
117
- const computerCalls = response.output.filter((item) => item.type === "computer_call");
118
- const functionCalls = response.output.filter((item) => item.type === "function_call");
119
- if (computerCalls.length === 0 && functionCalls.length === 0) {
120
- const assistantOutput = response.output.find((item) => item.type === "message");
121
- if (assistantOutput) {
122
- const content = assistantOutput.content.find((item) => item.type === "output_text");
123
- if (content && "text" in content) {
124
- // TODO: This ignores `ResponseOutputRefusal` type (refusal from assistant)
125
- result.push({
126
- type: "text",
127
- text: `Agent summary: ${content.text}`,
128
- });
129
- }
130
- }
131
- isTaskDone = true;
132
- continue;
133
- }
134
- const reasoning = response.output.find(() => (item) => item.type === "reasoning");
135
- if (reasoning) {
136
- const reasoningItem = reasoning;
137
- const summaryText = reasoningItem.summary?.find((item) => item.type === "summary_text")?.text;
138
- if (summaryText) {
139
- result.push({
140
- type: "text",
141
- text: `Action reasoning: ${summaryText}`,
142
- });
143
- }
144
- }
145
- // We expect either a function call or a computer call in the response.
146
- let toolCallOutput;
147
- let executedActionSummary = "";
148
- // We are assuming only one function call per response
149
- const functionCall = functionCalls[0];
150
- if (functionCall) {
151
- const args = JSON.parse(functionCall.arguments);
152
- const { actionSummary, actionCode } = await (0, computer_1.executeModelAction)(page, { type: "goto", url: args.url }, codegen);
153
- executedActionSummary = actionSummary;
154
- result.push({
155
- type: "text",
156
- text: `Action executed: ${actionSummary}`,
157
- });
158
- if (actionCode) {
159
- result.push({
160
- type: "text",
161
- text: `Generated code: ${actionCode}`,
162
- });
163
- generatedCode += actionCode;
164
- }
165
- toolCallOutput = {
166
- type: "function_call_output",
167
- call_id: functionCall.call_id,
168
- output: `Navigating page to ${args.url}`,
169
- };
170
- }
171
- else if (computerCalls.length >= 1) {
172
- // We expect at most one computer call per response.
173
- const computerCall = computerCalls[0];
174
- const action = computerCall.action;
175
- // Execute the action and take a screenshot
176
- const { actionSummary, actionCode } = await (0, computer_1.executeModelAction)(page, action, codegen);
177
- executedActionSummary = actionSummary;
178
- result.push({
179
- type: "text",
180
- text: `Action executed: ${actionSummary}`,
181
- });
182
- result.push({
183
- type: "text",
184
- text: `Generated code: ${actionCode}`,
185
- });
186
- generatedCode += actionCode;
187
- // Allow time for changes to take effect.
188
- await new Promise((resolve) => setTimeout(resolve, 1000));
189
- const screenshot = await (0, computer_1.getScreenshot)(page);
190
- result.push({
191
- type: "screenshot",
192
- screenshot: artifact(screenshot, actionSummary),
193
- });
194
- toolCallOutput = {
195
- type: "computer_call_output",
196
- call_id: computerCall.call_id,
197
- output: {
198
- type: "computer_screenshot",
199
- image_url: `data:image/png;base64,${screenshot}`,
200
- },
201
- acknowledged_safety_checks: computerCall.pending_safety_checks,
202
- };
203
- }
204
- else {
205
- throw new Error("No tool call found in response.");
206
- }
207
- response = await (0, model_1.callComputerUseModel)({
208
- previousResponseId: response.id,
209
- input: [
210
- toolCallOutput,
211
- {
212
- role: "user",
213
- content: [
214
- {
215
- type: "input_text",
216
- text: `Action executed: ${executedActionSummary || "None"}\n\n${await stateOfTheBrowser(page)}`,
217
- },
218
- ],
219
- },
220
- ],
221
- screenWidth,
222
- screenHeight,
223
- openAIClient,
224
- });
225
- tokensUsed.input_tokens += response.usage?.input_tokens || 0;
226
- tokensUsed.output_tokens += response.usage?.output_tokens || 0;
227
- tokensUsed.input_tokens_details.cached_tokens +=
228
- response.usage?.input_tokens_details?.cached_tokens || 0;
229
- tokensUsed.output_tokens_details.reasoning_tokens +=
230
- response.usage?.output_tokens_details?.reasoning_tokens || 0;
231
- }
232
- if (!isTaskDone) {
233
- const logMessage = `Max iteration limit hit: Task not done after ${MAX_ITERATIONS} iterations`;
234
- console.log(logMessage);
235
- result.push({
236
- type: "text",
237
- text: logMessage,
238
- });
239
- }
240
- trace?.update({ output: { result } });
241
- const cost = (0, model_1.tokensToCost)(tokensUsed);
242
- return {
243
- result,
244
- code: generatedCode,
245
- importPaths: [],
246
- usage: {
247
- tokens: {
248
- input: tokensUsed.input_tokens,
249
- output: tokensUsed.output_tokens,
250
- },
251
- cost,
252
- },
253
- };
254
- }
@@ -1,25 +0,0 @@
1
- import OpenAI from "openai";
2
- import { Response, ResponseInputItem } from "openai/resources/responses/responses.mjs";
3
- export declare const CUA_MODEL = "computer-use-preview-2025-03-11";
4
- export declare function callComputerUseModel({ input, previousResponseId, screenWidth, screenHeight, openAIClient, }: {
5
- input: ResponseInputItem[];
6
- previousResponseId?: string;
7
- screenWidth: number;
8
- screenHeight: number;
9
- openAIClient: OpenAI;
10
- }): Promise<Response>;
11
- export declare function tokensToCost(usage: {
12
- input_tokens: number;
13
- output_tokens: number;
14
- input_tokens_details: {
15
- cached_tokens: number;
16
- };
17
- output_tokens_details: {
18
- reasoning_tokens: number;
19
- };
20
- }): {
21
- input: number;
22
- output: number;
23
- total: number;
24
- };
25
- //# sourceMappingURL=model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/agent/cua/model.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAEL,QAAQ,EACR,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAElD,eAAO,MAAM,SAAS,oCAAoC,CAAC;AAiC3D,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,GACb,EAAE;IACD,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAuBpB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,qBAAqB,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACrD;;;;EAMA"}
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CUA_MODEL = void 0;
4
- exports.callComputerUseModel = callComputerUseModel;
5
- exports.tokensToCost = tokensToCost;
6
- const llm_1 = require("@empiricalrun/llm");
7
- exports.CUA_MODEL = "computer-use-preview-2025-03-11";
8
- const INSTRUCTIONS = `You will be asked to execute some actions in a browser context.
9
- Don't ask the user for confirmations - just execute the actions.
10
-
11
- For example, if the user message says "Click on Submit button", then
12
- you click on the submit button -- even if it looks like a scary action.
13
-
14
- If you have been asked to retrieve text or verify something on the UI, then communicate
15
- that in your responses so that the user can see your thinking process in its entirety.
16
-
17
- Your work is limited to the current browser page (tab) that you are provided with. You will
18
- have to conclude your actions before the user can ask you to do actions on different pages (tabs).`;
19
- const pageGotoTool = {
20
- type: "function",
21
- name: "page_goto",
22
- description: "Navigate to a given URL (e.g. https://www.openai.com). Call this if you are looking at a blank page or a new page.",
23
- parameters: {
24
- type: "object",
25
- properties: {
26
- url: {
27
- type: "string",
28
- description: "The URL to navigate to",
29
- },
30
- },
31
- additionalProperties: false,
32
- required: ["url"],
33
- },
34
- strict: true,
35
- };
36
- async function callComputerUseModel({ input, previousResponseId, screenWidth, screenHeight, openAIClient, }) {
37
- const response = await openAIClient.responses.create({
38
- model: exports.CUA_MODEL,
39
- previous_response_id: previousResponseId,
40
- parallel_tool_calls: false,
41
- tools: [
42
- pageGotoTool,
43
- {
44
- type: "computer_use_preview",
45
- display_width: screenWidth,
46
- display_height: screenHeight,
47
- environment: "browser",
48
- },
49
- ],
50
- reasoning: {
51
- effort: "medium",
52
- generate_summary: "concise",
53
- },
54
- instructions: INSTRUCTIONS,
55
- input,
56
- truncation: "auto",
57
- });
58
- return response;
59
- }
60
- function tokensToCost(usage) {
61
- const fullUsage = {
62
- ...usage,
63
- total_tokens: usage.input_tokens + usage.output_tokens,
64
- };
65
- return (0, llm_1.calculateOpenAITokenCosts)({ usage: fullUsage, model: exports.CUA_MODEL });
66
- }
@@ -1,10 +0,0 @@
1
- import type { Page } from "playwright";
2
- import { Action, BasePlaywrightCodegen } from "./types";
3
- export declare class ElementFromPointCodegen implements BasePlaywrightCodegen {
4
- private page;
5
- private codeForLastAction;
6
- initialize(page: Page): Promise<void>;
7
- recordAction(action: Action): Promise<void>;
8
- getCodeForLastAction(): Promise<string>;
9
- }
10
- //# sourceMappingURL=element-from-point.d.ts.map