@empiricalrun/test-gen 0.71.1 → 0.72.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 (141) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/index.js +0 -6
  4. package/dist/agent/browsing/index.d.ts.map +1 -1
  5. package/dist/agent/browsing/index.js +6 -14
  6. package/dist/agent/chat/agent-loop.d.ts +11 -9
  7. package/dist/agent/chat/agent-loop.d.ts.map +1 -1
  8. package/dist/agent/chat/agent-loop.js +20 -10
  9. package/dist/agent/chat/exports.d.ts +2 -2
  10. package/dist/agent/chat/exports.d.ts.map +1 -1
  11. package/dist/agent/chat/exports.js +6 -1
  12. package/dist/agent/chat/index.d.ts.map +1 -1
  13. package/dist/agent/chat/index.js +48 -13
  14. package/dist/agent/chat/prompt/index.d.ts +2 -2
  15. package/dist/agent/chat/prompt/index.d.ts.map +1 -1
  16. package/dist/agent/chat/prompt/index.js +2 -2
  17. package/dist/agent/chat/prompt/repo.d.ts +2 -2
  18. package/dist/agent/chat/prompt/repo.d.ts.map +1 -1
  19. package/dist/agent/chat/prompt/repo.js +20 -11
  20. package/dist/agent/chat/state.d.ts +2 -2
  21. package/dist/agent/chat/state.d.ts.map +1 -1
  22. package/dist/agent/chat/types.d.ts +0 -6
  23. package/dist/agent/chat/types.d.ts.map +1 -1
  24. package/dist/agent/chat/utils/tool-calls.d.ts +21 -0
  25. package/dist/agent/chat/utils/tool-calls.d.ts.map +1 -0
  26. package/dist/agent/chat/utils/tool-calls.js +64 -0
  27. package/dist/agent/chat/utils.d.ts +2 -4
  28. package/dist/agent/chat/utils.d.ts.map +1 -1
  29. package/dist/agent/chat/utils.js +5 -11
  30. package/dist/agent/codegen/repo-edit.d.ts.map +1 -1
  31. package/dist/agent/codegen/repo-edit.js +0 -4
  32. package/dist/agent/codegen/run.d.ts.map +1 -1
  33. package/dist/agent/codegen/run.js +0 -4
  34. package/dist/agent/codegen/utils.d.ts +1 -3
  35. package/dist/agent/codegen/utils.d.ts.map +1 -1
  36. package/dist/agent/codegen/utils.js +1 -2
  37. package/dist/agent/cua/index.d.ts +2 -1
  38. package/dist/agent/cua/index.d.ts.map +1 -1
  39. package/dist/agent/cua/index.js +4 -4
  40. package/dist/agent/master/browser-tests/index.spec.js +1 -1
  41. package/dist/agent/master/execute-browser-action.d.ts.map +1 -1
  42. package/dist/agent/master/execute-browser-action.js +1 -4
  43. package/dist/agent/master/run.d.ts.map +1 -1
  44. package/dist/agent/master/run.js +0 -19
  45. package/dist/agent/master/scroller.d.ts.map +1 -1
  46. package/dist/agent/master/scroller.js +0 -4
  47. package/dist/auth/api-client.d.ts.map +1 -1
  48. package/dist/auth/api-client.js +6 -2
  49. package/dist/bin/environments.d.ts +1 -1
  50. package/dist/bin/environments.d.ts.map +1 -1
  51. package/dist/bin/environments.js +70 -36
  52. package/dist/bin/index.js +2 -36
  53. package/dist/bin/logger/index.d.ts +0 -1
  54. package/dist/bin/logger/index.d.ts.map +1 -1
  55. package/dist/bin/logger/index.js +0 -16
  56. package/dist/bin/setup.d.ts.map +1 -1
  57. package/dist/bin/setup.js +10 -10
  58. package/dist/dashboard/index.d.ts +21 -0
  59. package/dist/dashboard/index.d.ts.map +1 -0
  60. package/dist/dashboard/index.js +83 -0
  61. package/dist/dashboard/totp.d.ts +2 -0
  62. package/dist/dashboard/totp.d.ts.map +1 -0
  63. package/dist/dashboard/totp.js +18 -0
  64. package/dist/file-info/file-system.d.ts +3 -0
  65. package/dist/file-info/file-system.d.ts.map +1 -0
  66. package/dist/{utils/file-tree.js → file-info/file-system.js} +2 -8
  67. package/dist/file-info/github.d.ts +3 -0
  68. package/dist/file-info/github.d.ts.map +1 -0
  69. package/dist/file-info/github.js +108 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +0 -6
  72. package/dist/tools/commit-and-create-pr.js +2 -2
  73. package/dist/tools/definitions/index.d.ts +22 -0
  74. package/dist/tools/definitions/index.d.ts.map +1 -0
  75. package/dist/tools/definitions/index.js +61 -0
  76. package/dist/tools/definitions/run-test.d.ts +23 -0
  77. package/dist/tools/definitions/run-test.d.ts.map +1 -0
  78. package/dist/tools/definitions/run-test.js +28 -0
  79. package/dist/tools/definitions/str_replace_editor.d.ts +3 -0
  80. package/dist/tools/definitions/str_replace_editor.d.ts.map +1 -0
  81. package/dist/tools/definitions/str_replace_editor.js +74 -0
  82. package/dist/tools/definitions/test-gen-browser.d.ts +26 -0
  83. package/dist/tools/definitions/test-gen-browser.d.ts.map +1 -0
  84. package/dist/tools/definitions/test-gen-browser.js +88 -0
  85. package/dist/{tool-call-service/utils.d.ts → tools/definitions/utils/queue.d.ts} +6 -4
  86. package/dist/tools/definitions/utils/queue.d.ts.map +1 -0
  87. package/dist/{tool-call-service/utils.js → tools/definitions/utils/queue.js} +20 -19
  88. package/dist/tools/diagnosis-fetcher.js +1 -1
  89. package/dist/{tool-call-service → tools/executor}/index.d.ts +2 -7
  90. package/dist/tools/executor/index.d.ts.map +1 -0
  91. package/dist/{tool-call-service → tools/executor}/index.js +16 -30
  92. package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -0
  93. package/dist/tools/executor/utils/git.d.ts.map +1 -0
  94. package/dist/{utils → tools/executor/utils}/git.js +5 -5
  95. package/dist/tools/executor/utils/index.d.ts.map +1 -0
  96. package/dist/tools/list-environments.js +1 -1
  97. package/dist/tools/{test-run.d.ts → run-test.d.ts} +1 -1
  98. package/dist/tools/run-test.d.ts.map +1 -0
  99. package/dist/tools/{test-run.js → run-test.js} +5 -24
  100. package/dist/tools/str_replace_editor.d.ts.map +1 -1
  101. package/dist/tools/str_replace_editor.js +6 -58
  102. package/dist/tools/test-gen-browser.d.ts.map +1 -1
  103. package/dist/tools/test-gen-browser.js +2 -83
  104. package/dist/tools/test-run-fetcher/index.js +1 -1
  105. package/dist/tools/upgrade-packages/index.js +2 -2
  106. package/dist/tools/upgrade-packages/utils.js +1 -1
  107. package/dist/types/index.d.ts +0 -8
  108. package/dist/types/index.d.ts.map +1 -1
  109. package/dist/utils/SQSClient.d.ts +14 -0
  110. package/dist/utils/SQSClient.d.ts.map +1 -0
  111. package/dist/utils/SQSClient.js +116 -0
  112. package/dist/utils/repo-tree.d.ts +1 -1
  113. package/dist/utils/repo-tree.d.ts.map +1 -1
  114. package/dist/utils/repo-tree.js +7 -7
  115. package/package.json +18 -10
  116. package/tsconfig.tsbuildinfo +1 -1
  117. package/dist/reporter/index.d.ts +0 -26
  118. package/dist/reporter/index.d.ts.map +0 -1
  119. package/dist/reporter/index.js +0 -149
  120. package/dist/reporter/lib.d.ts +0 -31
  121. package/dist/reporter/lib.d.ts.map +0 -1
  122. package/dist/reporter/lib.js +0 -71
  123. package/dist/tool-call-service/index.d.ts.map +0 -1
  124. package/dist/tool-call-service/utils.d.ts.map +0 -1
  125. package/dist/tools/test-run.d.ts.map +0 -1
  126. package/dist/tools/utils/index.d.ts.map +0 -1
  127. package/dist/uploader/index.d.ts +0 -26
  128. package/dist/uploader/index.d.ts.map +0 -1
  129. package/dist/uploader/index.js +0 -103
  130. package/dist/uploader/utils.d.ts +0 -8
  131. package/dist/uploader/utils.d.ts.map +0 -1
  132. package/dist/uploader/utils.js +0 -35
  133. package/dist/utils/checkpoint.d.ts.map +0 -1
  134. package/dist/utils/file-tree.d.ts +0 -3
  135. package/dist/utils/file-tree.d.ts.map +0 -1
  136. package/dist/utils/git.d.ts.map +0 -1
  137. /package/dist/{utils → tools/executor/utils}/checkpoint.d.ts +0 -0
  138. /package/dist/{utils → tools/executor/utils}/checkpoint.js +0 -0
  139. /package/dist/{utils → tools/executor/utils}/git.d.ts +0 -0
  140. /package/dist/tools/{utils → executor/utils}/index.d.ts +0 -0
  141. /package/dist/tools/{utils → executor/utils}/index.js +0 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rejectPendingToolCalls = rejectPendingToolCalls;
4
+ exports.filterPendingToolCalls = filterPendingToolCalls;
5
+ exports.processToolCallsAndUpdateChatState = processToolCallsAndUpdateChatState;
6
+ const state_1 = require("../state");
7
+ const TOOL_CALL_REJECTED_BY_USER_ERROR = "This tool call was rejected by the user.";
8
+ function rejectPendingToolCalls({ chatState, chatModel, }) {
9
+ const pendingToolCalls = chatModel.getPendingToolCalls();
10
+ let updatedChatState = {
11
+ ...chatState,
12
+ // When tool calls are rejected, we reset askUserForInput to true
13
+ // so that the user can provide input for the next tool call. The agent
14
+ // loop is not run again until the user provides input.
15
+ askUserForInput: true,
16
+ };
17
+ if (pendingToolCalls.length > 0) {
18
+ const toolResults = pendingToolCalls.map((toolCall) => {
19
+ console.log(`Rejecting pending tool calls with toolCallId: ${toolCall.id} `);
20
+ return {
21
+ isError: true,
22
+ result: TOOL_CALL_REJECTED_BY_USER_ERROR,
23
+ };
24
+ });
25
+ chatModel.pushToolResultsMessage(pendingToolCalls, toolResults);
26
+ return {
27
+ ...updatedChatState,
28
+ messages: chatModel.messages,
29
+ };
30
+ }
31
+ return updatedChatState;
32
+ }
33
+ function filterPendingToolCalls({ toolCalls, toolResults, pendingToolCalls, }) {
34
+ const filteredToolResults = [];
35
+ const filteredToolCalls = toolCalls.filter((call, index) => {
36
+ if (pendingToolCalls.some((p) => p.id === call.id)) {
37
+ filteredToolResults.push(toolResults[index]);
38
+ return true;
39
+ }
40
+ return false;
41
+ });
42
+ return {
43
+ filteredToolCalls,
44
+ filteredToolResults,
45
+ };
46
+ }
47
+ function processToolCallsAndUpdateChatState({ toolCalls, toolResults, chatModel, selectedModel, }) {
48
+ const pendingToolCalls = chatModel.getPendingToolCalls() || [];
49
+ const { filteredToolCalls, filteredToolResults } = filterPendingToolCalls({
50
+ toolCalls,
51
+ toolResults,
52
+ pendingToolCalls,
53
+ });
54
+ if (filteredToolCalls.length > 0) {
55
+ chatModel.pushToolResultsMessage(filteredToolCalls, filteredToolResults);
56
+ const newChatState = (0, state_1.createChatStateForMessages)({
57
+ messages: chatModel.messages || [],
58
+ selectedModel,
59
+ askUserForInput: chatModel.askUserForInput,
60
+ error: null,
61
+ });
62
+ return newChatState;
63
+ }
64
+ }
@@ -1,11 +1,9 @@
1
1
  import { TraceClient } from "@empiricalrun/llm";
2
2
  import { IChatModel } from "@empiricalrun/llm/chat";
3
- import { Attachment, SupportedChatModels } from "@empiricalrun/shared-types";
4
- import { ReporterFunction } from "./types";
3
+ import { Attachment, ReporterFunction, SupportedChatModels } from "@empiricalrun/shared-types";
5
4
  export declare const log: (...args: any[]) => void;
6
5
  export declare function getModelName(model: string): string;
7
- export declare function handleAgentError({ context, error, chatModel, selectedModel, reporter, trace, }: {
8
- context: string;
6
+ export declare function handleAgentError({ error, chatModel, selectedModel, reporter, trace, }: {
9
7
  error: unknown;
10
8
  chatModel: IChatModel<any>;
11
9
  selectedModel: SupportedChatModels;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAuB,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACL,UAAU,EAEV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,GAAG,EAAE,SAEjC,CAAC;AAcF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,KAAK,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,iBAsBA;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAsBA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAuB,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACL,UAAU,EAEV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAKpC,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,GAAG,EAAE,SAEjC,CAAC;AAcF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,gBAAgB,CAAC,EACrC,KAAK,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,GACN,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,iBAgBA;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAsBA"}
@@ -11,8 +11,8 @@ const log = (...args) => {
11
11
  console.log((0, picocolors_1.gray)(args.join(" ")));
12
12
  };
13
13
  exports.log = log;
14
- function logError(context, error, trace) {
15
- console.error((0, picocolors_1.gray)(`[Error in ${context}]:`), error instanceof Error ? error.stack || error.message : error);
14
+ function logError(error, trace) {
15
+ console.error((0, picocolors_1.gray)(`[Error]:`), error instanceof Error ? error.stack || error.message : error);
16
16
  trace?.update({
17
17
  output: {
18
18
  error: error instanceof Error ? error.message : String(error),
@@ -29,7 +29,7 @@ function getModelName(model) {
29
29
  return "o4";
30
30
  return "AI";
31
31
  }
32
- async function handleAgentError({ context, error, chatModel, selectedModel, reporter, trace, }) {
32
+ async function handleAgentError({ error, chatModel, selectedModel, reporter, trace, }) {
33
33
  const errorObject = {
34
34
  message: error.message,
35
35
  stack: error.stack || "Stack trace not available",
@@ -40,14 +40,8 @@ async function handleAgentError({ context, error, chatModel, selectedModel, repo
40
40
  selectedModel,
41
41
  error: errorObject,
42
42
  }), chatModel.getHumanReadableLatestMessage());
43
- trace?.update({
44
- output: {
45
- error: errorObject,
46
- },
47
- });
48
- if (context) {
49
- logError(context, error, trace);
50
- }
43
+ trace?.update({ output: { error: errorObject } });
44
+ logError(error, trace);
51
45
  }
52
46
  function extractAttachments(userPrompt) {
53
47
  const attachments = [];
@@ -1 +1 @@
1
- {"version":3,"file":"repo-edit.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/repo-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQhD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,wBAAsB,0BAA0B,CAAC,EAC/C,IAAI,EACJ,KAAK,EACL,SAAS,EAET,MAAM,GACP,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CA6CD;AAED,wBAAsB,aAAa,CAAC,EAClC,KAAK,EACL,IAAI,EACJ,MAAM,GACP,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CAqCD"}
1
+ {"version":3,"file":"repo-edit.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/repo-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOhD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,wBAAsB,0BAA0B,CAAC,EAC/C,IAAI,EACJ,KAAK,EACL,SAAS,EAET,MAAM,GACP,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CA6CD;AAED,wBAAsB,aAAa,CAAC,EAClC,KAAK,EACL,IAAI,EACJ,MAAM,GACP,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACrC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC,CA8BD"}
@@ -8,7 +8,6 @@ exports.repoEditAgent = repoEditAgent;
8
8
  const fs_1 = __importDefault(require("fs"));
9
9
  const context_1 = require("../../bin/utils/context");
10
10
  const web_1 = require("../../bin/utils/platform/web");
11
- const reporter_1 = require("../../reporter");
12
11
  const generate_code_apply_changes_1 = require("./generate-code-apply-changes");
13
12
  const utils_1 = require("./utils");
14
13
  async function generateCodeUsingRepoAgent({ task, trace, repoFiles, logger, }) {
@@ -56,8 +55,6 @@ If all the changes are done, respond with "exit" tool call otherwise respond wit
56
55
  };
57
56
  }
58
57
  async function repoEditAgent({ trace, task, logger, }) {
59
- const testgenUpdatesReporter = new reporter_1.TestGenUpdatesReporter();
60
- void testgenUpdatesReporter.sendMessage(`Updating test code as per the task. \n View [trace](${trace?.getTraceUrl()})`);
61
58
  logger?.log(`Starting repo agent: [trace](${trace?.getTraceUrl()})`);
62
59
  const { prompt: repoFiles } = await (0, context_1.generateTxtForRepository)();
63
60
  const repoAgentOutput = await generateCodeUsingRepoAgent({
@@ -80,6 +77,5 @@ async function repoEditAgent({ trace, task, logger, }) {
80
77
  }
81
78
  })();
82
79
  }));
83
- await testgenUpdatesReporter.sendMessage(`Successfully generated code for the given task. \n View [trace](${trace?.getTraceUrl()})`);
84
80
  return repoAgentOutput;
85
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAc5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAQ/C,wBAAsB,uBAAuB,CAAC,EAC5C,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC,CAAC,CAyDD;AAED,wBAAsB,uBAAuB,CAAC,EAC5C,QAAQ,EACR,IAAI,EACJ,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAgE7B"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAa5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAQ/C,wBAAsB,uBAAuB,CAAC,EAC5C,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC,CAAC,CAyDD;AAED,wBAAsB,uBAAuB,CAAC,EAC5C,QAAQ,EACR,IAAI,EACJ,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CA2D7B"}
@@ -12,7 +12,6 @@ const context_1 = require("../../bin/utils/context");
12
12
  const web_1 = require("../../bin/utils/platform/web");
13
13
  const constants_1 = require("../../constants");
14
14
  const promptTemplate_0 = "{{#section \"system\"}}\nYou are a software test engineer who is given a task to write test cases in a Playwright test repository.\nYou will be provided with current test files, fixtures and page object models for you to use and update code as per the\ntask provided to you.\nYou need to respond with file path, the new test code block to be updated in the file and the reason for the change.\n\nHere is the list of files:\n\n{{repoFiles}}\n{{/section}}\n\n{{#section \"user\"}}\nTask: {{task}}\n\n## Follow these instructions before responding with output:\n- Scan the file '{{testFilePath}}' and check whether test case with name '{{testCaseName}}' exists in the file\n- If it exists do not update the file\n- else respond with <file_path></file_path>, <code_block></code_block> and <change></change> as xml tags\n- Only respond with single code_block in the response containing only the test code block to be updated\n{{/section}}";
15
- const reporter_1 = require("../../reporter");
16
15
  const update_flow_1 = require("./update-flow");
17
16
  const utils_1 = require("./utils");
18
17
  async function createTestWithCodeAgent({ testCase, file, repoFiles, trace, }) {
@@ -88,8 +87,6 @@ async function generateTestWithCodegen({ testCase, file, trace, }) {
88
87
  trace,
89
88
  });
90
89
  }
91
- const testgenUpdatesReporter = new reporter_1.TestGenUpdatesReporter();
92
- void testgenUpdatesReporter.sendMessage(`Updating test code as per the task. \n View [trace](${trace?.getTraceUrl()})`);
93
90
  logger?.log(`Creating a new test case '${testCase.name}': [trace](${trace?.getTraceUrl()})`);
94
91
  // Create the test if it doesn't exist
95
92
  const { prompt: repoFiles } = await (0, context_1.generateTxtForRepository)();
@@ -102,7 +99,6 @@ async function generateTestWithCodegen({ testCase, file, trace, }) {
102
99
  await (0, utils_1.applyFileChangesForCreateTest)({
103
100
  trace,
104
101
  fileChanges: updates.fileChanges,
105
- testgenUpdatesReporter,
106
102
  });
107
103
  await (0, utils_1.validateTypesAndFormatCode)({
108
104
  validateTypes: true,
@@ -1,7 +1,6 @@
1
1
  import { TraceClient } from "@empiricalrun/llm";
2
2
  import type { TestCase } from "@empiricalrun/shared-types";
3
3
  import { CustomLogger } from "../../bin/logger";
4
- import { TestGenUpdatesReporter } from "../../reporter";
5
4
  import { CodeUpdate, CreateTestCodeUpdate, FileUpdateResponse } from "./types";
6
5
  /**
7
6
  *
@@ -71,10 +70,9 @@ export declare function applyFileChangesUsingStrReplace({ trace, fileChanges, lo
71
70
  fileChanges: CodeUpdate[];
72
71
  logger?: CustomLogger;
73
72
  }): Promise<FileUpdateResponse[]>;
74
- export declare function applyFileChangesForCreateTest({ trace, fileChanges, testgenUpdatesReporter, }: {
73
+ export declare function applyFileChangesForCreateTest({ trace, fileChanges, }: {
75
74
  trace?: TraceClient;
76
75
  fileChanges: CreateTestCodeUpdate[];
77
- testgenUpdatesReporter?: TestGenUpdatesReporter;
78
76
  }): Promise<void>;
79
77
  export declare function searchAndReplaceCode({ logger, fileChange, }: {
80
78
  fileChange: {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/codegen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAI3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOhD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/E;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAiB9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,GACZ,oBAAoB,EAAE,CAgBxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG;IACvD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,EAAE,CA8BF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CAqCF;AAED,wBAAsB,0BAA0B,CAAC,EAC/C,aAAoB,EACpB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,iBAAiB,GAClB,EAAE;IACD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,iBAyBA;AAED,wBAAsB,+BAA+B,CAAC,EACpD,KAAK,EACL,WAAW,EACX,MAAM,GACP,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA6ChC;AAED,wBAAsB,6BAA6B,CAAC,EAClD,KAAK,EACL,WAAW,GACZ,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC,iBAiDA;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,UAAU,GACX,EAAE;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,CAAC;IACF,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC;IACV,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CA8BD;AAED,wBAAsB,gBAAgB,CAAC,EACrC,KAAK,EACL,QAAQ,EACR,WAAW,EACX,MAAM,GACP,EAAE;IACD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,EAAE,CAAC;IACJ,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAkIxE"}
@@ -199,7 +199,7 @@ async function applyFileChangesUsingStrReplace({ trace, fileChanges, logger, })
199
199
  }
200
200
  return results;
201
201
  }
202
- async function applyFileChangesForCreateTest({ trace, fileChanges, testgenUpdatesReporter, }) {
202
+ async function applyFileChangesForCreateTest({ trace, fileChanges, }) {
203
203
  const repoEditFileChangesSpan = trace?.span({
204
204
  name: "create-test-file-changes",
205
205
  });
@@ -235,7 +235,6 @@ async function applyFileChangesForCreateTest({ trace, fileChanges, testgenUpdate
235
235
  error: e,
236
236
  },
237
237
  });
238
- void testgenUpdatesReporter?.sendMessage(`Error while applying changes to file ${fileChange.filePath}, error: ${e}`);
239
238
  console.error(`Error while applying changes to file ${fileChange.filePath}`, e);
240
239
  }
241
240
  }
@@ -8,10 +8,11 @@ export type BrowserAgentResult = Array<{
8
8
  type: "screenshot";
9
9
  screenshot: ArtifactInputData;
10
10
  }>;
11
- export declare function createTestUsingComputerUseAgent({ page, task, trace, }: {
11
+ export declare function createTestUsingComputerUseAgent({ page, task, trace, prefersElementFromPointCodegen, }: {
12
12
  page: Page;
13
13
  task: string;
14
14
  trace?: TraceClient;
15
+ prefersElementFromPointCodegen?: boolean;
15
16
  }): Promise<{
16
17
  code: string;
17
18
  importPaths: string[];
@@ -1 +1 @@
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,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAStE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAgClC,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,GACN,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,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,CAuND"}
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,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAStE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAmClC,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,CAuND"}
@@ -11,9 +11,9 @@ const model_1 = require("./model");
11
11
  const element_from_point_1 = require("./pw-codegen/element-from-point");
12
12
  const pw_pause_1 = require("./pw-codegen/pw-pause");
13
13
  const MAX_ITERATIONS = 15;
14
- async function getCodegenInstance() {
14
+ async function getCodegenInstance(prefersElementFromPoint) {
15
15
  const repoDir = process.cwd();
16
- const canUsePwPause = await (0, pw_pause_1.canUsePauseCodegen)(repoDir);
16
+ const canUsePwPause = !prefersElementFromPoint && (await (0, pw_pause_1.canUsePauseCodegen)(repoDir));
17
17
  if (canUsePwPause) {
18
18
  console.log("[getCodegen] using PlaywrightPauseCodegen");
19
19
  return new pw_pause_1.PlaywrightPauseCodegen();
@@ -28,8 +28,8 @@ function artifact(screenshot, name) {
28
28
  data: Buffer.from(screenshot, "base64"),
29
29
  };
30
30
  }
31
- async function createTestUsingComputerUseAgent({ page, task, trace, }) {
32
- const codegen = await getCodegenInstance();
31
+ async function createTestUsingComputerUseAgent({ page, task, trace, prefersElementFromPointCodegen = false, }) {
32
+ const codegen = await getCodegenInstance(prefersElementFromPointCodegen);
33
33
  await codegen.initialize(page);
34
34
  const screenshot = await (0, computer_1.getScreenshot)(page);
35
35
  const initialArtifact = artifact(screenshot, "Initial screen");
@@ -72,7 +72,7 @@ fixtures_1.test.skip("master agent can click icons accurately", async ({ page, s
72
72
  // expect(icons.length).toBe(4); // 1 for each unique icon
73
73
  fs_1.default.unlinkSync(iconsRegistryFile);
74
74
  });
75
- (0, fixtures_1.test)("cua agent can click icons accurately", async ({ page, server }) => {
75
+ fixtures_1.test.skip("cua agent can click icons accurately", async ({ page, server }) => {
76
76
  await page.goto(`${server.baseURL}/icons-navbar.html`);
77
77
  await (0, fixtures_1.expect)(page.getByText("select an icon")).toBeVisible();
78
78
  const response = await (0, run_1.createTestUsingComputerUseAgent)({
@@ -1 +1 @@
1
- {"version":3,"file":"execute-browser-action.d.ts","sourceRoot":"","sources":["../../../src/agent/master/execute-browser-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAWlD,wBAAsB,oBAAoB,CAAC,EACzC,IAAI,EACJ,UAAU,EACV,KAAK,EACL,OAAO,EACP,GAAG,EACH,KAAK,GACN,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,EAAE;QACL,4BAA4B,EAAE,OAAO,CAAC;KACvC,CAAC;IACF,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,GAAG,EAAE,GAAG,CAAC;CACV;;;gBAIW,MAAM;gBACN,MAAM;4BACM,MAAM;;GAiI7B"}
1
+ {"version":3,"file":"execute-browser-action.d.ts","sourceRoot":"","sources":["../../../src/agent/master/execute-browser-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,wBAAsB,oBAAoB,CAAC,EACzC,IAAI,EACJ,UAAU,EACV,KAAK,EACL,OAAO,EACP,GAAG,EACH,KAAK,GACN,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,EAAE;QACL,4BAA4B,EAAE,OAAO,CAAC;KACvC,CAAC;IACF,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,GAAG,EAAE,GAAG,CAAC;CACV;;;gBAIW,MAAM;gBACN,MAAM;4BACM,MAAM;;GA8H7B"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.executeBrowserAction = executeBrowserAction;
4
- const reporter_1 = require("../../reporter");
5
4
  const browsing_1 = require("../browsing");
6
5
  const action_tool_calls_1 = require("./action-tool-calls");
7
6
  const element_annotation_1 = require("./element-annotation");
@@ -39,7 +38,7 @@ async function executeBrowserAction({ page, nextAction, flags, actions, llm, tra
39
38
  };
40
39
  }
41
40
  }
42
- let { annotationKeys, annotatedPageScreenshot, annotationBuffer } = await (0, element_annotation_1.getAnnotationKeys)({
41
+ let { annotationKeys, annotatedPageScreenshot } = await (0, element_annotation_1.getAnnotationKeys)({
43
42
  page,
44
43
  preference,
45
44
  trace,
@@ -61,8 +60,6 @@ async function executeBrowserAction({ page, nextAction, flags, actions, llm, tra
61
60
  });
62
61
  output.elementAnnotation = elementAnnotation;
63
62
  console.log("Output: ", output);
64
- const testGenReporter = new reporter_1.TestGenUpdatesReporter();
65
- await testGenReporter.sendCurrentView(annotationBuffer);
66
63
  const triggerHintsFlowSpan = trace?.span({
67
64
  name: "trigger-hints-flow",
68
65
  input: {
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/master/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAelC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUxC,OAAO,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AAKzD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAqB9C,wBAAsB,0BAA0B,CAAC,EAC/C,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,GACV,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;;;GAwRA"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/master/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAclC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAUxC,OAAO,EAAE,+BAA+B,EAAE,MAAM,QAAQ,CAAC;AAKzD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAqB9C,wBAAsB,0BAA0B,CAAC,EAC/C,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,GACV,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;;;GA4PA"}
@@ -10,7 +10,6 @@ const logger_1 = require("../../bin/logger");
10
10
  const constants_1 = require("../../constants");
11
11
  const errors_1 = require("../../errors");
12
12
  const page_1 = require("../../page");
13
- const reporter_1 = require("../../reporter");
14
13
  const session_1 = require("../../session");
15
14
  const utils_2 = require("../browsing/utils");
16
15
  const skills_retriever_1 = require("../codegen/skills-retriever");
@@ -41,7 +40,6 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
41
40
  const useActionSpecificAnnotations = options?.useActionSpecificAnnotations || false;
42
41
  const usePlannerInMaster = options?.usePlannerInMaster || false;
43
42
  const logger = new logger_1.CustomLogger({ useReporter: false });
44
- const testgenUpdatesReporter = new reporter_1.TestGenUpdatesReporter();
45
43
  const session = (0, session_1.getSessionDetails)();
46
44
  const testGenPage = new page_1.TestGenPage(page, (0, utils_1.getPageVarName)());
47
45
  const trace = llm_1.langfuseInstance?.trace({
@@ -58,11 +56,6 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
58
56
  options.metadata?.environment,
59
57
  ].filter((s) => !!s),
60
58
  });
61
- if (trace) {
62
- void testgenUpdatesReporter.sendMessage(`Starting master agent. [view trace](${trace?.getTraceUrl()})`);
63
- logger.log(`Starting master agent: ${trace?.getTraceUrl()}`);
64
- void testgenUpdatesReporter.sendAgentTraceUrl(trace.getTraceUrl());
65
- }
66
59
  const llm = new llm_1.LLM({
67
60
  trace,
68
61
  provider: options.modelProvider || constants_1.DEFAULT_MODEL_PROVIDER,
@@ -82,14 +75,12 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
82
75
  }
83
76
  skill_1.testCaseSkills.updateSkills(skills);
84
77
  if (usePlannerInMaster && testCase && specPath) {
85
- void testgenUpdatesReporter.sendMessage(`Planner is working on task: ${task}`);
86
78
  logger.log(`Planner is working on task: ${task}`);
87
79
  const plan = await (0, run_1.planTask)({
88
80
  task,
89
81
  specPath,
90
82
  trace,
91
83
  });
92
- void testgenUpdatesReporter.sendMessage(`Here is the plan:\n${plan}`);
93
84
  logger.log(`Here is the plan:\n${plan}`);
94
85
  // Will assume this is the task hereon
95
86
  task = plan;
@@ -123,7 +114,6 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
123
114
  });
124
115
  isGivenTaskDone = plannerResp.isDone;
125
116
  if (isGivenTaskDone) {
126
- await testgenUpdatesReporter.sendMessage(`${plannerResp.reason} Marking the task as done.`);
127
117
  break;
128
118
  }
129
119
  if (actions.getStateVariables()[plannerResp.pageName]) {
@@ -135,8 +125,6 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
135
125
  // inject scripts in the page
136
126
  await (0, utils_2.injectPwLocatorGenerator)(testGenPage.pwPageInstance);
137
127
  const buffer = await page.screenshot();
138
- const testGenReporter = new reporter_1.TestGenUpdatesReporter();
139
- await testGenReporter.sendCurrentView(buffer);
140
128
  const pageScreenshot = buffer.toString("base64");
141
129
  let output;
142
130
  let generatedCodeSteps = [];
@@ -163,7 +151,6 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
163
151
  if (nextAction) {
164
152
  if (nextAction.actionType === action_tool_calls_1.ActionType.UNKNOWN) {
165
153
  logger.error("Agent is not able to figure out next action since element is not visible on screen.");
166
- await testgenUpdatesReporter.sendMessage("Agent is not able to figure out next action since element is not visible on screen.");
167
154
  break;
168
155
  }
169
156
  const args = JSON.parse(nextAction.toolCallArgs);
@@ -175,7 +162,6 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
175
162
  reason: args.reason,
176
163
  };
177
164
  try {
178
- void testGenReporter.sendMessage(output.reason);
179
165
  logger.log(`Next Action: ${output.action}`);
180
166
  switch (nextAction.actionType) {
181
167
  case skill_1.SKILL_USAGE: {
@@ -248,7 +234,6 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
248
234
  if (failedActions.length >= MAX_ERROR_COUNT) {
249
235
  const error = "Agent is not able to figure out next action, marking task as done";
250
236
  logger.error(error);
251
- await testgenUpdatesReporter.sendMessage(error);
252
237
  break;
253
238
  }
254
239
  }
@@ -265,11 +250,7 @@ async function createTestUsingMasterAgent({ task, page, testCase, specPath, opti
265
250
  }
266
251
  const { code, importPaths } = actions.generateCode();
267
252
  trace?.update({ input: { task }, output: { code } });
268
- await new reporter_1.TestGenUpdatesReporter().sendCurrentView(await page.screenshot());
269
253
  logger.success("Successfully generated code for the given task");
270
- if (trace) {
271
- await testgenUpdatesReporter.sendMessage(`Successfully generated code for the given task. \n View [trace](${trace.getTraceUrl()})`);
272
- }
273
254
  return {
274
255
  code,
275
256
  importPaths,
@@ -1 +1 @@
1
- {"version":3,"file":"scroller.d.ts","sourceRoot":"","sources":["../../../src/agent/master/scroller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAahD,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AA2ZF,wBAAsB,QAAQ,CAAC,EAC7B,kBAAkB,EAClB,IAAI,EACJ,KAAK,EACL,cAAc,EACd,MAAM,GACP,EAAE;IACD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA6D5B"}
1
+ {"version":3,"file":"scroller.d.ts","sourceRoot":"","sources":["../../../src/agent/master/scroller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYhD,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAoZF,wBAAsB,QAAQ,CAAC,EAC7B,kBAAkB,EAClB,IAAI,EACJ,KAAK,EACL,cAAc,EACd,MAAM,GACP,EAAE;IACD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA6D5B"}
@@ -4,7 +4,6 @@ exports.scroller = scroller;
4
4
  const llm_1 = require("@empiricalrun/llm");
5
5
  const vision_1 = require("@empiricalrun/llm/vision");
6
6
  const constants_1 = require("../../constants");
7
- const reporter_1 = require("../../reporter");
8
7
  const action_tool_calls_1 = require("./action-tool-calls");
9
8
  const element_annotation_1 = require("./element-annotation");
10
9
  let usedAnnotations = [];
@@ -43,9 +42,7 @@ async function isScrollable({ scrollDirection, page, divAnnotation, }) {
43
42
  // If the div annotation is undefined, we scroll the page
44
43
  // else we scroll the element
45
44
  async function scroll({ scrollBy, page, direction, divAnnotation, logger, }) {
46
- const testGenUpdatesReporter = new reporter_1.TestGenUpdatesReporter();
47
45
  if (divAnnotation) {
48
- await testGenUpdatesReporter.sendMessage("Scrolling the div since element is not in view");
49
46
  logger?.log("Scrolling the div since element is not in view");
50
47
  return await page.evaluate(({ scrollBy, direction, divAnnotation }) => {
51
48
  if (
@@ -60,7 +57,6 @@ async function scroll({ scrollBy, page, direction, divAnnotation, logger, }) {
60
57
  return 0;
61
58
  }, { scrollBy, direction, divAnnotation });
62
59
  }
63
- await testGenUpdatesReporter.sendMessage("Scrolling the page since element is not in view");
64
60
  logger?.log("Scrolling the page since element is not in view");
65
61
  return await page.evaluate(({ scrollBy, direction }) => {
66
62
  let scrollHeight = scrollBy || window.innerHeight;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/auth/api-client.ts"],"names":[],"mappings":"AAQA,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAS;;IAMjB,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,GAAG;QAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;YA2B/B,WAAW;IAuBnB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;YAiB5B,YAAY;CA4C3B;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/auth/api-client.ts"],"names":[],"mappings":"AAQA,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAS;;IAMjB,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,GAAG;QAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;YA+B/B,WAAW;IAuBnB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;YAiB5B,YAAY;CA4C3B;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
@@ -9,6 +9,10 @@ class APIClient {
9
9
  this.appUrl = process.env.DASHBOARD_DOMAIN || "https://dash.empirical.run";
10
10
  }
11
11
  async request(endpoint, options = {}) {
12
+ const apiKey = process.env.EMPIRICALRUN_API_KEY;
13
+ if (apiKey) {
14
+ return this.makeRequest(endpoint, options, apiKey);
15
+ }
12
16
  await this.ensureAuthenticated();
13
17
  const tokens = await (0, token_store_1.getStoredTokens)();
14
18
  if (!tokens) {
@@ -28,13 +32,13 @@ class APIClient {
28
32
  }
29
33
  return response;
30
34
  }
31
- async makeRequest(endpoint, options, accessToken) {
35
+ async makeRequest(endpoint, options, authToken) {
32
36
  const url = endpoint.startsWith("http")
33
37
  ? endpoint
34
38
  : `${this.appUrl}${endpoint}`;
35
39
  // Don't set Content-Type for FormData (let browser set it automatically)
36
40
  const headers = {
37
- Authorization: `Bearer ${accessToken}`,
41
+ Authorization: `Bearer ${authToken}`,
38
42
  ...options.headers,
39
43
  };
40
44
  // Only set Content-Type to application/json if body is not FormData
@@ -1,2 +1,2 @@
1
- export declare function listEnvironments(): Promise<void>;
1
+ export declare function listEnvironments(repoDir: string): Promise<void>;
2
2
  //# sourceMappingURL=environments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/bin/environments.ts"],"names":[],"mappings":"AASA,wBAAsB,gBAAgB,kBAiErC"}
1
+ {"version":3,"file":"environments.d.ts","sourceRoot":"","sources":["../../src/bin/environments.ts"],"names":[],"mappings":"AAkEA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,iBAqDrD"}