@empiricalrun/test-gen 0.67.0 → 0.69.0

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 (53) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/agent/chat/exports.d.ts +8 -8
  3. package/dist/agent/chat/exports.d.ts.map +1 -1
  4. package/dist/agent/chat/exports.js +10 -7
  5. package/dist/agent/chat/index.d.ts.map +1 -1
  6. package/dist/agent/chat/index.js +5 -2
  7. package/dist/agent/chat/state.d.ts +4 -2
  8. package/dist/agent/chat/state.d.ts.map +1 -1
  9. package/dist/agent/chat/state.js +10 -2
  10. package/dist/agent/chat/utils.d.ts +5 -1
  11. package/dist/agent/chat/utils.d.ts.map +1 -1
  12. package/dist/agent/chat/utils.js +22 -0
  13. package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.d.ts.map +1 -1
  14. package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.js +24 -3
  15. package/dist/agent/cua/pw-codegen/pw-pause/patch.d.ts.map +1 -1
  16. package/dist/agent/cua/pw-codegen/pw-pause/patch.js +4 -6
  17. package/dist/auth/api-client.d.ts +1 -2
  18. package/dist/auth/api-client.d.ts.map +1 -1
  19. package/dist/auth/api-client.js +15 -45
  20. package/dist/auth/index.d.ts +1 -1
  21. package/dist/auth/index.d.ts.map +1 -1
  22. package/dist/auth/index.js +1 -4
  23. package/dist/bin/index.js +104 -108
  24. package/dist/bin/setup.d.ts +4 -0
  25. package/dist/bin/setup.d.ts.map +1 -0
  26. package/dist/bin/setup.js +86 -0
  27. package/dist/bin/utils/index.d.ts +2 -7
  28. package/dist/bin/utils/index.d.ts.map +1 -1
  29. package/dist/bin/utils/index.js +1 -9
  30. package/dist/file/server.js +4 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -1
  33. package/dist/logger.d.ts +3 -0
  34. package/dist/logger.d.ts.map +1 -0
  35. package/dist/logger.js +11 -0
  36. package/dist/recorder/env-variables.d.ts +2 -0
  37. package/dist/recorder/env-variables.d.ts.map +1 -0
  38. package/dist/recorder/env-variables.js +29 -0
  39. package/dist/recorder/index.d.ts.map +1 -1
  40. package/dist/recorder/index.js +25 -34
  41. package/dist/recorder/request.d.ts +2 -1
  42. package/dist/recorder/request.d.ts.map +1 -1
  43. package/dist/recorder/request.js +15 -21
  44. package/dist/recorder/temp-files.d.ts.map +1 -1
  45. package/dist/recorder/temp-files.js +5 -4
  46. package/dist/recorder/upload.d.ts +1 -0
  47. package/dist/recorder/upload.d.ts.map +1 -1
  48. package/dist/recorder/upload.js +23 -11
  49. package/dist/recorder/validation.d.ts +1 -1
  50. package/dist/recorder/validation.d.ts.map +1 -1
  51. package/dist/recorder/validation.js +9 -4
  52. package/package.json +6 -4
  53. package/tsconfig.tsbuildinfo +1 -1
@@ -1,53 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sendToDashboardAsRequest = sendToDashboardAsRequest;
4
- const DASHBOARD_DOMAIN = process.env.DASHBOARD_DOMAIN || "https://dash.empirical.run";
4
+ const api_client_1 = require("../auth/api-client");
5
5
  const title = (name) => `Add a test: ${name}`;
6
6
  function description(codegenResult, attachments) {
7
7
  return [
8
- `To add this test, refer to the following code that was captured using playwright codegen. Make modifications that you need to make to convert this into a test case that sits well with other tests in this repository.`,
8
+ `To add this test, refer to the following code and videos that were captured using playwright codegen. Make modifications that you need to make to convert this into a test case that sits well with other tests in this repository.`,
9
9
  `Codegen result:`,
10
10
  codegenResult,
11
- `Other attachments:`,
12
- ...attachments,
11
+ ...attachments.map((attachment) => `[[${attachment}]]`),
13
12
  ].join("\n\n");
14
13
  }
15
- async function sendToDashboardAsRequest({ testName, codegenResult, attachments, }) {
14
+ async function sendToDashboardAsRequest({ repoName, testName, codegenResult, attachments, }) {
16
15
  return createRequest({
16
+ repoName,
17
17
  title: title(testName),
18
18
  description: description(codegenResult, attachments),
19
19
  });
20
20
  }
21
- async function createRequest({ title, description, }) {
22
- if (!DASHBOARD_DOMAIN) {
23
- console.warn("DASHBOARD_DOMAIN not set, skipping request creation");
24
- return;
25
- }
26
- if (!process.env.EMPIRICALRUN_API_KEY) {
27
- console.warn("EMPIRICALRUN_API_KEY not set, skipping request creation");
28
- return;
29
- }
21
+ async function createRequest({ repoName, title, description, }) {
30
22
  try {
23
+ // TODO: Fix the source and sourceIdentifier
31
24
  const source = "cli";
32
25
  const sourceIdentifier = "random-string";
33
- const response = await fetch(`${DASHBOARD_DOMAIN}/api/requests`, {
26
+ const response = await api_client_1.apiClient.request("/api/requests", {
34
27
  method: "POST",
35
- headers: {
36
- "Content-Type": "application/json",
37
- Authorization: `Bearer ${process.env.EMPIRICALRUN_API_KEY}`,
38
- },
39
28
  body: JSON.stringify({
40
29
  source,
41
30
  source_identifier: sourceIdentifier,
42
31
  title,
43
32
  description,
33
+ project_repo_name: repoName,
44
34
  }),
45
35
  });
46
36
  if (!response.ok) {
47
- throw new Error(`Failed to create request: ${response.statusText}`);
37
+ const errorMessage = await response.text();
38
+ throw new Error(`Failed to create request: ${errorMessage}`);
48
39
  }
49
40
  const data = await response.json();
50
- console.log("Request created successfully:", data);
41
+ const dashboardDomain = process.env.DASHBOARD_DOMAIN || "https://dash.empirical.run";
42
+ const requestUrl = `${dashboardDomain}/${repoName}/requests/${data.data.request.id}`;
43
+ // console.log("Request created successfully:", data);
44
+ console.log(`View request: ${requestUrl}`);
51
45
  }
52
46
  catch (error) {
53
47
  console.error("Failed to create request:", error);
@@ -1 +1 @@
1
- {"version":3,"file":"temp-files.d.ts","sourceRoot":"","sources":["../../src/recorder/temp-files.ts"],"names":[],"mappings":"AAGA,wBAAsB,kBAAkB,kBAoBvC;AAED,wBAAsB,kBAAkB,kBAUvC"}
1
+ {"version":3,"file":"temp-files.d.ts","sourceRoot":"","sources":["../../src/recorder/temp-files.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,kBAoBvC;AAED,wBAAsB,kBAAkB,kBAUvC"}
@@ -7,11 +7,12 @@ exports.createTempTestFile = createTempTestFile;
7
7
  exports.deleteTempTestFile = deleteTempTestFile;
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const path_1 = __importDefault(require("path"));
10
+ const logger_1 = require("../logger");
10
11
  async function createTempTestFile() {
11
12
  const tempFilePath = path_1.default.join(process.cwd(), "tests", "temp-test.spec.ts");
12
13
  // Check if the temp file already exists
13
14
  if (fs_1.default.existsSync(tempFilePath)) {
14
- console.warn("Temporary test file already exists. Skipping creation.");
15
+ logger_1.logger.warn("Temporary test file already exists. Skipping creation.");
15
16
  return;
16
17
  }
17
18
  // Create a basic test file
@@ -24,16 +25,16 @@ test('temp test', async ({ page }) => {
24
25
  });
25
26
  `;
26
27
  fs_1.default.writeFileSync(tempFilePath, content);
27
- console.log("Temporary test file created:", tempFilePath);
28
+ logger_1.logger.debug("Temporary test file created:", tempFilePath);
28
29
  }
29
30
  async function deleteTempTestFile() {
30
31
  const tempFilePath = path_1.default.join(process.cwd(), "tests", "temp-test.spec.ts");
31
32
  // Check if the temp file exists
32
33
  if (fs_1.default.existsSync(tempFilePath)) {
33
34
  fs_1.default.unlinkSync(tempFilePath);
34
- console.log("Temporary test file deleted:", tempFilePath);
35
+ logger_1.logger.debug("Temporary test file deleted:", tempFilePath);
35
36
  }
36
37
  else {
37
- console.warn("Temporary test file does not exist. Skipping deletion.");
38
+ logger_1.logger.warn("Temporary test file does not exist. Skipping deletion.");
38
39
  }
39
40
  }
@@ -1,2 +1,3 @@
1
+ export declare function extractVideoAttachments(repoDir: string): string[];
1
2
  export declare function uploadVideosWithSpinner(videoPaths: string[], testName: string): Promise<void | string[]>;
2
3
  //# sourceMappingURL=upload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/recorder/upload.ts"],"names":[],"mappings":"AAgFA,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAe1B"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/recorder/upload.ts"],"names":[],"mappings":"AAcA,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBjE;AA4DD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAc1B"}
@@ -3,16 +3,38 @@ 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.extractVideoAttachments = extractVideoAttachments;
6
7
  exports.uploadVideosWithSpinner = uploadVideosWithSpinner;
7
8
  const fs_1 = __importDefault(require("fs"));
8
9
  const ora_1 = __importDefault(require("ora"));
9
10
  const path_1 = __importDefault(require("path"));
11
+ const utils_1 = require("../artifacts/utils");
12
+ const api_client_1 = require("../auth/api-client");
10
13
  const slug_1 = require("../utils/slug");
11
14
  const ASSETS_PRODUCTION_BUCKET = "empirical-assets-production";
12
15
  const BUCKET_DOMAINS = {
13
16
  "empirical-assets-staging": "assets-staging.empirical.run",
14
17
  "empirical-assets-production": "assets.empirical.run",
15
18
  };
19
+ function extractVideoAttachments(repoDir) {
20
+ try {
21
+ const summaryPath = path_1.default.join(repoDir, "summary.json");
22
+ if (!fs_1.default.existsSync(summaryPath)) {
23
+ console.log("summary.json not found");
24
+ return [];
25
+ }
26
+ const summaryContent = JSON.parse(fs_1.default.readFileSync(summaryPath, "utf-8"));
27
+ const attachments = (0, utils_1.extractAttachmentsFromPlaywrightJSONReport)(summaryContent, "temp test");
28
+ const videoPaths = attachments
29
+ .filter((attachment) => attachment.contentType === "video/webm")
30
+ .map((attachment) => attachment.path);
31
+ return videoPaths;
32
+ }
33
+ catch (error) {
34
+ console.warn("Error processing summary.json:", error);
35
+ return [];
36
+ }
37
+ }
16
38
  function buildVideoUrl(localPath, directory, bucket) {
17
39
  const domain = BUCKET_DOMAINS[bucket];
18
40
  const fileName = path_1.default.basename(localPath);
@@ -22,12 +44,6 @@ async function uploadVideos(videoPaths, testSlug) {
22
44
  if (videoPaths.length === 0) {
23
45
  return null;
24
46
  }
25
- const DASHBOARD_DOMAIN = process.env.DASHBOARD_DOMAIN || "https://dash.empirical.run";
26
- const API_KEY = process.env.EMPIRICALRUN_API_KEY;
27
- if (!API_KEY) {
28
- console.warn("EMPIRICALRUN_API_KEY not set, skipping video upload");
29
- return null;
30
- }
31
47
  const uploadDestinationDir = `recorder-uploads/${testSlug}`;
32
48
  const bucket = ASSETS_PRODUCTION_BUCKET;
33
49
  try {
@@ -42,11 +58,8 @@ async function uploadVideos(videoPaths, testSlug) {
42
58
  formData.append("files", blob, fileName);
43
59
  }
44
60
  }
45
- const response = await fetch(`${DASHBOARD_DOMAIN}/api/upload`, {
61
+ const response = await api_client_1.apiClient.request("/api/upload", {
46
62
  method: "POST",
47
- headers: {
48
- Authorization: `Bearer ${API_KEY}`,
49
- },
50
63
  body: formData,
51
64
  });
52
65
  if (!response.ok) {
@@ -66,7 +79,6 @@ async function uploadVideos(videoPaths, testSlug) {
66
79
  }
67
80
  }
68
81
  async function uploadVideosWithSpinner(videoPaths, testName) {
69
- videoPaths.forEach((videoPath) => console.log(videoPath));
70
82
  const uploadSpinner = (0, ora_1.default)("Uploading video recordings...").start();
71
83
  try {
72
84
  const slugifiedTestName = `${(0, slug_1.slugify)(testName)}-${Math.random().toString(36).substring(2, 8)}`;
@@ -1,2 +1,2 @@
1
- export declare function validate(repoDir: string): Promise<void>;
1
+ export declare function validatePackageJson(repoDir: string): Promise<any>;
2
2
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/recorder/validation.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,iBAoB7C"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/recorder/validation.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,gBAyBxD"}
@@ -3,16 +3,14 @@ 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.validate = validate;
6
+ exports.validatePackageJson = validatePackageJson;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
- async function validate(repoDir) {
10
- // Check if package.json exists
9
+ async function validatePackageJson(repoDir) {
11
10
  const packageJsonPath = path_1.default.join(repoDir, "package.json");
12
11
  if (!fs_1.default.existsSync(packageJsonPath)) {
13
12
  throw new Error("package.json not found in the repository");
14
13
  }
15
- // Check if playwright is installed
16
14
  const packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath, "utf8"));
17
15
  const hasPlaywright = (packageJson.dependencies &&
18
16
  packageJson.dependencies["@playwright/test"]) ||
@@ -21,4 +19,11 @@ async function validate(repoDir) {
21
19
  if (!hasPlaywright) {
22
20
  throw new Error("Playwright is not installed. Please install @playwright/test");
23
21
  }
22
+ const repoName = packageJson.name;
23
+ if (repoName && repoName.endsWith("-tests")) {
24
+ return repoName;
25
+ }
26
+ else {
27
+ throw new Error(`Invalid repo name in package.json: ${repoName}`);
28
+ }
24
29
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-gen",
3
- "version": "0.67.0",
3
+ "version": "0.69.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -42,6 +42,7 @@
42
42
  "@types/sanitize-html": "^2.11.0",
43
43
  "async-retry": "^1.3.3",
44
44
  "commander": "^12.1.0",
45
+ "console-log-level": "^1.4.1",
45
46
  "detect-port": "^1.6.1",
46
47
  "dotenv": "^16.4.5",
47
48
  "eslint": "^8.57.0",
@@ -63,13 +64,14 @@
63
64
  "tsx": "^4.16.2",
64
65
  "typescript": "^5.3.3",
65
66
  "zod": "^3.23.8",
66
- "@empiricalrun/llm": "^0.18.2",
67
+ "@empiricalrun/llm": "^0.19.0",
67
68
  "@empiricalrun/r2-uploader": "^0.3.9",
68
- "@empiricalrun/test-run": "^0.10.3"
69
+ "@empiricalrun/test-run": "^0.10.4"
69
70
  },
70
71
  "devDependencies": {
71
72
  "@playwright/test": "1.53.0",
72
73
  "@types/async-retry": "^1.4.8",
74
+ "@types/console-log-level": "^1.4.5",
73
75
  "@types/detect-port": "^1.3.5",
74
76
  "@types/express": "^4.17.21",
75
77
  "@types/js-levenshtein": "^1.1.3",
@@ -80,7 +82,7 @@
80
82
  "playwright": "1.53.0",
81
83
  "serve-handler": "^6.1.6",
82
84
  "ts-patch": "^3.3.0",
83
- "@empiricalrun/shared-types": "0.5.2"
85
+ "@empiricalrun/shared-types": "0.6.0"
84
86
  },
85
87
  "scripts": {
86
88
  "dev": "tspc --build --watch",
@@ -1 +1 @@
1
- {"root":["./src/index.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/skill.ts","./src/actions/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/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/index.ts","./src/agent/chat/prompt/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/codegen/create-test-block.ts","./src/agent/codegen/fix-ts-errors.ts","./src/agent/codegen/generate-code-apply-changes.ts","./src/agent/codegen/lexical-scoped-vars.ts","./src/agent/codegen/repo-edit.ts","./src/agent/codegen/run.ts","./src/agent/codegen/skills-retriever.ts","./src/agent/codegen/test-update-feedback.ts","./src/agent/codegen/types.ts","./src/agent/codegen/update-flow.ts","./src/agent/codegen/use-skill.ts","./src/agent/codegen/utils.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/types.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/diagnosis-agent/index.ts","./src/agent/diagnosis-agent/strict-mode-violation.ts","./src/agent/enrich-prompt/index.ts","./src/agent/enrich-prompt/utils.ts","./src/agent/infer-agent/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/execute-skill-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/browser-tests/skills.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/artifacts/index.ts","./src/artifacts/utils.ts","./src/auth/api-client.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.ts","./src/bin/index.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/errors/index.ts","./src/evals/add-scenario-agent.evals.ts","./src/evals/append-create-test-agent.evals.ts","./src/evals/fetch-pom-skills-agent.evals.ts","./src/evals/infer-master-or-code-agent.evals.ts","./src/evals/master-agent.evals.ts","./src/evals/type.ts","./src/evals/update-scenario-agent.evals.ts","./src/file/client.ts","./src/file/server.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/display.ts","./src/recorder/index.ts","./src/recorder/request.ts","./src/recorder/temp-files.ts","./src/recorder/upload.ts","./src/recorder/validation.ts","./src/reporter/index.ts","./src/reporter/lib.ts","./src/session/index.ts","./src/test-build/index.ts","./src/tool-call-service/index.ts","./src/tool-call-service/utils.ts","./src/tools/commit-and-create-pr.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/download-build.ts","./src/tools/list-environments.ts","./src/tools/str_replace_editor.ts","./src/tools/test-gen-browser.ts","./src/tools/test-run.ts","./src/tools/grep/index.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/grep/ripgrep/types.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/index.ts","./src/types/handlebars.d.ts","./src/types/index.ts","./src/uploader/index.ts","./src/uploader/utils.ts","./src/utils/checkpoint.ts","./src/utils/env.ts","./src/utils/exec.ts","./src/utils/file-tree.ts","./src/utils/file.ts","./src/utils/git.ts","./src/utils/html.ts","./src/utils/index.ts","./src/utils/json.ts","./src/utils/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.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/skill.ts","./src/actions/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/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/index.ts","./src/agent/chat/prompt/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/codegen/create-test-block.ts","./src/agent/codegen/fix-ts-errors.ts","./src/agent/codegen/generate-code-apply-changes.ts","./src/agent/codegen/lexical-scoped-vars.ts","./src/agent/codegen/repo-edit.ts","./src/agent/codegen/run.ts","./src/agent/codegen/skills-retriever.ts","./src/agent/codegen/test-update-feedback.ts","./src/agent/codegen/types.ts","./src/agent/codegen/update-flow.ts","./src/agent/codegen/use-skill.ts","./src/agent/codegen/utils.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/types.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/diagnosis-agent/index.ts","./src/agent/diagnosis-agent/strict-mode-violation.ts","./src/agent/enrich-prompt/index.ts","./src/agent/enrich-prompt/utils.ts","./src/agent/infer-agent/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/execute-skill-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/browser-tests/skills.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/artifacts/index.ts","./src/artifacts/utils.ts","./src/auth/api-client.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.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/errors/index.ts","./src/evals/add-scenario-agent.evals.ts","./src/evals/append-create-test-agent.evals.ts","./src/evals/fetch-pom-skills-agent.evals.ts","./src/evals/infer-master-or-code-agent.evals.ts","./src/evals/master-agent.evals.ts","./src/evals/type.ts","./src/evals/update-scenario-agent.evals.ts","./src/file/client.ts","./src/file/server.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/display.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/reporter/index.ts","./src/reporter/lib.ts","./src/session/index.ts","./src/test-build/index.ts","./src/tool-call-service/index.ts","./src/tool-call-service/utils.ts","./src/tools/commit-and-create-pr.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/download-build.ts","./src/tools/list-environments.ts","./src/tools/str_replace_editor.ts","./src/tools/test-gen-browser.ts","./src/tools/test-run.ts","./src/tools/grep/index.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/grep/ripgrep/types.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/index.ts","./src/types/handlebars.d.ts","./src/types/index.ts","./src/uploader/index.ts","./src/uploader/utils.ts","./src/utils/checkpoint.ts","./src/utils/env.ts","./src/utils/exec.ts","./src/utils/file-tree.ts","./src/utils/file.ts","./src/utils/git.ts","./src/utils/html.ts","./src/utils/index.ts","./src/utils/json.ts","./src/utils/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.ts"],"version":"5.8.3"}