@empiricalrun/test-gen 0.64.1 → 0.64.3

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.64.3
4
+
5
+ ### Patch Changes
6
+
7
+ - d8d624d: fix: pass mapped keys to codegen recordAction for proper code generation
8
+ - addd52e: feat: add JSON value truncation to prevent oversized tool responses
9
+ - f8a53b0: fix: PR description should not get concatenated across versions
10
+
11
+ ## 0.64.2
12
+
13
+ ### Patch Changes
14
+
15
+ - f05aac2: feat: add environment overrides for projects in tool calls
16
+ - Updated dependencies [f05aac2]
17
+ - @empiricalrun/test-run@0.10.1
18
+ - @empiricalrun/llm@0.17.3
19
+
3
20
  ## 0.64.1
4
21
 
5
22
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAyChC,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBAuHA;AAuBD,wBAAsB,wBAAwB,CAAC,EAC7C,aAAa,EACb,aAAa,GACd,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB,iBA6DA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAyChC,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBAwHA;AAuBD,wBAAsB,wBAAwB,CAAC,EAC7C,aAAa,EACb,aAAa,GACd,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB,iBA6DA"}
@@ -111,6 +111,7 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
111
111
  apiKey: process.env.EMPIRICALRUN_API_KEY,
112
112
  trace,
113
113
  featureFlags: [],
114
+ environmentOverrides: {},
114
115
  });
115
116
  const fileInfo = await (0, file_tree_1.getFileInfoFromFS)(process.cwd());
116
117
  await (0, agent_loop_1.chatAgentLoop)({
@@ -155,10 +155,10 @@ async function executeModelAction(page, action, codegen) {
155
155
  }
156
156
  case "keypress": {
157
157
  const { keys } = action;
158
- await codegen.recordAction({ type: "keypress", keys });
159
158
  const mappedKeys = keys.map((k) => {
160
159
  return CUA_KEY_TO_PLAYWRIGHT_KEY[k.toLowerCase()] || k;
161
160
  });
161
+ await codegen.recordAction({ type: "keypress", keys: mappedKeys });
162
162
  const mappedKey = mappedKeys.join("+"); // ["CTRL", "A"] becomes ControlOrMeta+A
163
163
  console.log(`Action: keypress for keys ${keys} -> '${mappedKey}'`);
164
164
  await page.keyboard.press(mappedKey);
@@ -15,7 +15,8 @@ export declare class ToolCallService {
15
15
  apiKey: string | undefined;
16
16
  trace?: TraceClient;
17
17
  featureFlags: string[];
18
- constructor({ chatSessionId, selectedModel, branchName, repoPath, apiKey, trace, featureFlags, }: {
18
+ environmentOverrides: Record<string, string>;
19
+ constructor({ chatSessionId, selectedModel, branchName, repoPath, apiKey, trace, featureFlags, environmentOverrides, }: {
19
20
  chatSessionId: number | null;
20
21
  selectedModel: SupportedChatModels;
21
22
  branchName: string;
@@ -23,6 +24,7 @@ export declare class ToolCallService {
23
24
  apiKey: string | undefined;
24
25
  trace?: TraceClient;
25
26
  featureFlags: string[];
27
+ environmentOverrides?: Record<string, string>;
26
28
  });
27
29
  sendToQueue(toolCalls: PendingToolCall[]): Promise<void>;
28
30
  execute(toolCalls: PendingToolCall[]): Promise<ToolResult[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tool-call-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAEL,eAAe,EACf,mBAAmB,EACnB,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAiB,IAAI,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAiB9E,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,KAAK,aAAa,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B,CAAC;AAEF,qBAAa,eAAe;IAC1B,KAAK,EAAE,IAAI,EAAE,CAAM;IACnB,aAAa,EAAE,aAAa,CAAM;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;gBACX,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,MAAM,EACN,KAAK,EACL,YAAY,GACb,EAAE;QACD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,aAAa,EAAE,mBAAmB,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB;IAkCK,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAexD,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAsEnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tool-call-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAEL,eAAe,EACf,mBAAmB,EACnB,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAiB,IAAI,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAiB9E,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC,KAAK,aAAa,GAAG;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CAC5B,CAAC;AAEF,qBAAa,eAAe;IAC1B,KAAK,EAAE,IAAI,EAAE,CAAM;IACnB,aAAa,EAAE,aAAa,CAAM;IAClC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACjC,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,MAAM,EACN,KAAK,EACL,YAAY,EACZ,oBAAyB,GAC1B,EAAE;QACD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,aAAa,EAAE,mBAAmB,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/C;IAmCK,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAuEnE"}
@@ -24,7 +24,8 @@ class ToolCallService {
24
24
  apiKey;
25
25
  trace;
26
26
  featureFlags;
27
- constructor({ chatSessionId, selectedModel, branchName, repoPath, apiKey, trace, featureFlags, }) {
27
+ environmentOverrides;
28
+ constructor({ chatSessionId, selectedModel, branchName, repoPath, apiKey, trace, featureFlags, environmentOverrides = {}, }) {
28
29
  this.chatSessionId = chatSessionId;
29
30
  this.selectedModel = selectedModel;
30
31
  this.branchName = branchName;
@@ -32,6 +33,7 @@ class ToolCallService {
32
33
  this.repoPath = repoPath;
33
34
  this.apiKey = apiKey;
34
35
  this.featureFlags = featureFlags;
36
+ this.environmentOverrides = environmentOverrides;
35
37
  this.tools = [
36
38
  grep_1.grepTool,
37
39
  test_run_1.runTestTool,
@@ -62,13 +64,16 @@ class ToolCallService {
62
64
  if (!requestId) {
63
65
  throw new Error("Could not find an id for the tool call.");
64
66
  }
65
- await (0, utils_1.sendToolRequestToRemoteQueue)({
67
+ const queueUrl = (0, utils_1.getQueueUrl)(this.featureFlags);
68
+ if (!queueUrl) {
69
+ throw new Error(`queueUrl is required for remote execution.`);
70
+ }
71
+ await (0, utils_1.sendToolRequestToRemoteQueue)(queueUrl, {
66
72
  toolCalls,
67
73
  requestId,
68
74
  chatSessionId: this.chatSessionId,
69
75
  selectedModel: this.selectedModel,
70
76
  branchName: this.branchName,
71
- featureFlags: this.featureFlags || [],
72
77
  });
73
78
  }
74
79
  async execute(toolCalls) {
@@ -110,6 +115,7 @@ class ToolCallService {
110
115
  apiKey: this.apiKey,
111
116
  trace: this.trace,
112
117
  collectArtifacts: collectArtifactsFn,
118
+ environmentOverrides: this.environmentOverrides,
113
119
  });
114
120
  const artifacts = await uploadArtifactsQueue.waitForCompletion();
115
121
  toolResults.push({ ...result, artifacts });
@@ -1,11 +1,11 @@
1
1
  import { SupportedChatModels } from "@empiricalrun/llm/chat";
2
2
  import { PendingToolCall } from "@empiricalrun/shared-types";
3
- export declare function sendToolRequestToRemoteQueue(payload: {
3
+ export declare function getQueueUrl(featureFlags: string[]): string | undefined;
4
+ export declare function sendToolRequestToRemoteQueue(queueUrl: string, payload: {
4
5
  toolCalls: PendingToolCall[];
5
6
  requestId: string;
6
7
  chatSessionId: number;
7
8
  selectedModel: SupportedChatModels;
8
9
  branchName: string;
9
- featureFlags: string[];
10
10
  }): Promise<void>;
11
11
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tool-call-service/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,iBA4BA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tool-call-service/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,sBAMjD;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE;IACP,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB,iBAiBF"}
@@ -1,8 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getQueueUrl = getQueueUrl;
3
4
  exports.sendToolRequestToRemoteQueue = sendToolRequestToRemoteQueue;
4
5
  const client_sqs_1 = require("@aws-sdk/client-sqs");
5
- async function sendToolRequestToRemoteQueue(payload) {
6
+ function getQueueUrl(featureFlags) {
7
+ const useToolExecutionOnEcs = featureFlags.includes("useToolExecutionOnEcs");
8
+ if (useToolExecutionOnEcs) {
9
+ return process.env.TOOL_EXECUTION_SQS_URL_ECS;
10
+ }
11
+ return process.env.TOOL_EXECUTION_SQS_URL;
12
+ }
13
+ async function sendToolRequestToRemoteQueue(queueUrl, payload) {
6
14
  const sqs = new client_sqs_1.SQSClient({
7
15
  region: process.env.AWS_REGION,
8
16
  credentials: {
@@ -10,14 +18,6 @@ async function sendToolRequestToRemoteQueue(payload) {
10
18
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
11
19
  },
12
20
  });
13
- const useToolExecutionOnEcs = payload.featureFlags.includes("useToolExecutionOnEcs");
14
- let queueUrl = process.env.TOOL_EXECUTION_SQS_URL;
15
- if (useToolExecutionOnEcs) {
16
- queueUrl = process.env.TOOL_EXECUTION_SQS_URL_ECS;
17
- }
18
- if (!queueUrl) {
19
- throw new Error(`${useToolExecutionOnEcs ? "TOOL_EXECUTION_SQS_URL_ECS" : "TOOL_EXECUTION_SQS_URL"} is required for remote execution.`);
20
- }
21
21
  await sqs.send(new client_sqs_1.SendMessageCommand({
22
22
  QueueUrl: queueUrl,
23
23
  MessageBody: JSON.stringify(payload),
@@ -1 +1 @@
1
- {"version":3,"file":"commit-and-create-pr.d.ts","sourceRoot":"","sources":["../../src/tools/commit-and-create-pr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAOvD,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAiB1D;AA2CD,eAAO,MAAM,qBAAqB,EAAE,IA0FnC,CAAC"}
1
+ {"version":3,"file":"commit-and-create-pr.d.ts","sourceRoot":"","sources":["../../src/tools/commit-and-create-pr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEL,MAAM,4BAA4B,CAAC;AAOpC,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAiB1D;AAiCD,eAAO,MAAM,qBAAqB,EAAE,IAkFnC,CAAC"}
@@ -31,16 +31,12 @@ For example, if you used the test run tool, you should include the results (and
31
31
  videos and other artifacts that help the reviewer gain more context and confidence in the changes. If tests pass, reviewer will see the video and merge the PR.
32
32
  If tests fail, reviewer will see the video and the test artifacts, and will be able to help you debug the issue.`),
33
33
  });
34
- function formatDescriptionWithTimestamp(description, existingBody, type = "create") {
34
+ function descriptionWithTimestamp(description) {
35
35
  const timestamp = new Date()
36
36
  .toISOString()
37
37
  .replace("T", " ")
38
38
  .replace("Z", " UTC");
39
- const timestampText = `<sup>${type === "create" ? "Created" : "Updated"} at ${timestamp}</sup>`;
40
- if (existingBody) {
41
- return `${existingBody}\n\n---\n${description}\n\n${timestampText}`;
42
- }
43
- return `${description}\n\n${timestampText}`;
39
+ return `${description}\n\n<sup>Updated at ${timestamp}</sup>`;
44
40
  }
45
41
  exports.createPullRequestTool = {
46
42
  schema: {
@@ -79,14 +75,10 @@ Don't ask the user for this information, just come up with it yourself.
79
75
  });
80
76
  const existingPR = existingPRs?.find((pr) => pr.head.ref === branchName);
81
77
  if (existingPR) {
82
- // Append the new description to the existing PR description
83
- const updatedDescription = formatDescriptionWithTimestamp(pullRequestDescription, existingPR.body, "update");
84
78
  await (0, utils_1.callGitHubProxy)({
85
79
  method: "PATCH",
86
80
  url: `https://api.github.com/repos/${owner}/${repo}/pulls/${existingPR.number}`,
87
- body: {
88
- body: updatedDescription,
89
- },
81
+ body: { body: descriptionWithTimestamp(pullRequestDescription) },
90
82
  apiKey,
91
83
  });
92
84
  return {
@@ -94,7 +86,6 @@ Don't ask the user for this information, just come up with it yourself.
94
86
  result: `Committed and pushed changes to existing PR: ${existingPR.html_url}`,
95
87
  };
96
88
  }
97
- const initialDescription = formatDescriptionWithTimestamp(pullRequestDescription);
98
89
  const pr = (await (0, utils_1.callGitHubProxy)({
99
90
  method: "POST",
100
91
  url: `https://api.github.com/repos/${owner}/${repo}/pulls`,
@@ -102,7 +93,7 @@ Don't ask the user for this information, just come up with it yourself.
102
93
  title: pullRequestTitle,
103
94
  head: branchName,
104
95
  base: "main",
105
- body: initialDescription,
96
+ body: descriptionWithTimestamp(pullRequestDescription),
106
97
  },
107
98
  apiKey,
108
99
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"diagnosis-fetcher.d.ts","sourceRoot":"","sources":["../../src/tools/diagnosis-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAevD,eAAO,MAAM,wBAAwB,EAAE,IAyFtC,CAAC"}
1
+ {"version":3,"file":"diagnosis-fetcher.d.ts","sourceRoot":"","sources":["../../src/tools/diagnosis-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,4BAA4B,CAAC;AAepE,eAAO,MAAM,wBAAwB,EAAE,IAqFtC,CAAC"}
@@ -19,7 +19,9 @@ exports.fetchDiagnosisReportTool = {
19
19
  description: "Fetch details about a test case diagnosis using its URL or slug",
20
20
  parameters: DiagnosisSchema,
21
21
  },
22
- execute: async ({ input, repoPath, apiKey, }) => {
22
+ execute: async (params) => {
23
+ const { input } = params;
24
+ const { repoPath, apiKey } = params;
23
25
  const { diagnosisUrl } = input;
24
26
  // Extract the slug from the URL - it's the part after the last '--'
25
27
  const slug = diagnosisUrl.split("--").pop();
@@ -1 +1 @@
1
- {"version":3,"file":"download-build.d.ts","sourceRoot":"","sources":["../../src/tools/download-build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE7E,eAAO,MAAM,iBAAiB,EAAE,IAsC/B,CAAC"}
1
+ {"version":3,"file":"download-build.d.ts","sourceRoot":"","sources":["../../src/tools/download-build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE7E,eAAO,MAAM,iBAAiB,EAAE,IAkC/B,CAAC"}
@@ -14,7 +14,9 @@ have a build URL, you can try getting the environment details with the getEnviro
14
14
  Environment details will include the build URL.`,
15
15
  parameters: exports.downloadBuildToolSchema,
16
16
  },
17
- execute: async ({ input, repoPath, apiKey, }) => {
17
+ execute: async (params) => {
18
+ const { input } = params;
19
+ const { repoPath, apiKey } = params;
18
20
  if (!(await (0, test_build_1.hasDownloadScript)(repoPath))) {
19
21
  return {
20
22
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"environment-crud.d.ts","sourceRoot":"","sources":["../../src/tools/environment-crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AA6DvD,eAAO,MAAM,kBAAkB,EAAE,IAiFhC,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,IAAI,EAAyB,CAAC"}
1
+ {"version":3,"file":"environment-crud.d.ts","sourceRoot":"","sources":["../../src/tools/environment-crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEL,MAAM,4BAA4B,CAAC;AA6DpC,eAAO,MAAM,kBAAkB,EAAE,IAoFhC,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,IAAI,EAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/grep/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,4BAA4B,CAAC;AA8HnE,eAAO,MAAM,QAAQ,EAAE,IAuBtB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/grep/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAGL,MAAM,4BAA4B,CAAC;AA8HpC,eAAO,MAAM,QAAQ,EAAE,IA2BtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"str_replace_editor.d.ts","sourceRoot":"","sources":["../../src/tools/str_replace_editor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAOnE,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA6UD;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2CtB;AAsID,eAAO,MAAM,eAAe,EAAE,IAAI,EAKjC,CAAC"}
1
+ {"version":3,"file":"str_replace_editor.d.ts","sourceRoot":"","sources":["../../src/tools/str_replace_editor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAe,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAOhF,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA6UD;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2CtB;AA8HD,eAAO,MAAM,eAAe,EAAE,IAAI,EAKjC,CAAC"}
@@ -340,7 +340,9 @@ File contents are returned with line numbers, starting from 1.
340
340
  path: zod_1.z.string().describe("The path to the file or directory to view."),
341
341
  }),
342
342
  },
343
- execute: async ({ input, repoPath, }) => {
343
+ execute: async (params) => {
344
+ const { input } = params;
345
+ const { repoPath } = params;
344
346
  return strReplaceEditorExecutor({
345
347
  input: {
346
348
  command: "view",
@@ -362,7 +364,9 @@ directories "tests", "tests/example", and "tests/example/foo.spec.ts".`,
362
364
  file_text: zod_1.z.string().describe("The contents of the new file."),
363
365
  }),
364
366
  },
365
- execute: async ({ input, repoPath, }) => {
367
+ execute: async (params) => {
368
+ const { input } = params;
369
+ const { repoPath } = params;
366
370
  return strReplaceEditorExecutor({
367
371
  input: {
368
372
  command: "create",
@@ -384,7 +388,9 @@ in the file. If old_str is not unique, the tool will return an error.`,
384
388
  new_str: zod_1.z.string().describe("The string to replace old_str with."),
385
389
  }),
386
390
  },
387
- execute: async ({ input, repoPath, }) => {
391
+ execute: async (params) => {
392
+ const { input } = params;
393
+ const { repoPath } = params;
388
394
  return strReplaceEditorExecutor({
389
395
  input: {
390
396
  command: "str_replace",
@@ -412,7 +418,9 @@ To insert a string at the end of the file, you should use insert_line = (total l
412
418
  new_str: zod_1.z.string().describe("The string to insert."),
413
419
  }),
414
420
  },
415
- execute: async ({ input, repoPath, }) => {
421
+ execute: async (params) => {
422
+ const { input } = params;
423
+ const { repoPath } = params;
416
424
  return strReplaceEditorExecutor({
417
425
  input: {
418
426
  command: "insert",
@@ -1 +1 @@
1
- {"version":3,"file":"test-gen-browser.d.ts","sourceRoot":"","sources":["../../src/tools/test-gen-browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAmGpE,eAAO,MAAM,4BAA4B,EAAE,IAwI1C,CAAC"}
1
+ {"version":3,"file":"test-gen-browser.d.ts","sourceRoot":"","sources":["../../src/tools/test-gen-browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAmGpE,eAAO,MAAM,4BAA4B,EAAE,IA0I1C,CAAC"}
@@ -95,7 +95,7 @@ exports.generateTestWithBrowserAgent = {
95
95
  description: BROWSER_AGENT_DESCRIPTION,
96
96
  parameters: BrowserAgentSchema,
97
97
  },
98
- execute: async ({ input, repoPath, trace, collectArtifacts, }) => {
98
+ execute: async ({ input, repoPath, trace, collectArtifacts, environmentOverrides = {}, }) => {
99
99
  const { filePath, project } = input;
100
100
  const absoluteFilePath = path_1.default.join(repoPath, filePath);
101
101
  if (!fs_1.default.existsSync(absoluteFilePath)) {
@@ -152,7 +152,7 @@ exports.generateTestWithBrowserAgent = {
152
152
  catch (err) {
153
153
  console.warn("[generateTestWithBrowserAgent] Error preparing playwright for codegen", err);
154
154
  }
155
- let envOverrides = {};
155
+ let envOverrides = { ...environmentOverrides };
156
156
  if (input.buildUrl) {
157
157
  envOverrides = {
158
158
  ...envOverrides,
@@ -1 +1 @@
1
- {"version":3,"file":"test-run.d.ts","sourceRoot":"","sources":["../../src/tools/test-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,4BAA4B,CAAC;AAsDnE,eAAO,MAAM,WAAW,EAAE,IAiFzB,CAAC"}
1
+ {"version":3,"file":"test-run.d.ts","sourceRoot":"","sources":["../../src/tools/test-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,4BAA4B,CAAC;AAwDnE,eAAO,MAAM,WAAW,EAAE,IAoFzB,CAAC"}
@@ -10,6 +10,7 @@ const path_1 = __importDefault(require("path"));
10
10
  const zod_1 = require("zod");
11
11
  const artifacts_1 = require("../artifacts");
12
12
  const utils_1 = require("../artifacts/utils");
13
+ const utils_2 = require("../utils");
13
14
  const RunTestSchema = zod_1.z.object({
14
15
  testName: zod_1.z.string().describe("The name of the test to run"),
15
16
  suites: zod_1.z
@@ -30,13 +31,14 @@ function buildReportUrl(projectName, testRunId) {
30
31
  return `https://reports.empirical.run/${projectName}/${testRunId}/index.html`;
31
32
  }
32
33
  function buildResult({ hasTestPassed, summaryJson, reportUrl, }) {
34
+ const truncatedSummaryJson = (0, utils_2.truncateJsonValues)(summaryJson);
33
35
  return `
34
36
  Test run is complete. Result: ${hasTestPassed ? "Passed" : "Failed"}
35
37
 
36
38
  ${reportUrl ? `Report URL: ${reportUrl}` : ""}
37
39
 
38
40
  # Raw result (in Playwright JSON format)
39
- ${JSON.stringify(summaryJson)}
41
+ ${JSON.stringify(truncatedSummaryJson)}
40
42
  `;
41
43
  }
42
44
  exports.runTestTool = {
@@ -45,14 +47,15 @@ exports.runTestTool = {
45
47
  description: "Run a test",
46
48
  parameters: RunTestSchema,
47
49
  },
48
- execute: async ({ input, repoPath, collectArtifacts, }) => {
50
+ execute: async ({ input, repoPath, collectArtifacts, environmentOverrides = {}, }) => {
49
51
  let reportUrl = undefined;
50
- let envOverrides = {};
52
+ let envOverrides = { ...environmentOverrides };
51
53
  if ((0, artifacts_1.isArtifactCollectionEnabled)()) {
52
54
  const projectName = "test-gen-chat-agent";
53
55
  const testRunId = Date.now().toString();
54
56
  reportUrl = buildReportUrl(projectName, testRunId);
55
57
  envOverrides = {
58
+ ...envOverrides,
56
59
  PROJECT_NAME: projectName,
57
60
  TEST_RUN_GITHUB_ACTION_ID: testRunId,
58
61
  };
@@ -1,2 +1,3 @@
1
1
  export { getTypescriptTestBlock } from "../bin/utils/platform/web";
2
+ export { truncateJsonValues } from "./json";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getTypescriptTestBlock = void 0;
3
+ exports.truncateJsonValues = exports.getTypescriptTestBlock = void 0;
4
4
  var web_1 = require("../bin/utils/platform/web");
5
5
  Object.defineProperty(exports, "getTypescriptTestBlock", { enumerable: true, get: function () { return web_1.getTypescriptTestBlock; } });
6
+ var json_1 = require("./json");
7
+ Object.defineProperty(exports, "truncateJsonValues", { enumerable: true, get: function () { return json_1.truncateJsonValues; } });
@@ -0,0 +1,2 @@
1
+ export declare function truncateJsonValues(obj: any, maxLength?: number): any;
2
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,GAAE,MAAa,GAAG,GAAG,CAuB1E"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.truncateJsonValues = truncateJsonValues;
4
+ function truncateJsonValues(obj, maxLength = 1000) {
5
+ if (typeof obj === "string") {
6
+ if (obj.length > maxLength) {
7
+ const suffix = "...[truncated]";
8
+ const truncateAt = maxLength - suffix.length;
9
+ return obj.substring(0, truncateAt) + suffix;
10
+ }
11
+ return obj;
12
+ }
13
+ if (Array.isArray(obj)) {
14
+ return obj.map((item) => truncateJsonValues(item, maxLength));
15
+ }
16
+ if (obj !== null && typeof obj === "object") {
17
+ const truncated = {};
18
+ for (const [key, value] of Object.entries(obj)) {
19
+ truncated[key] = truncateJsonValues(value, maxLength);
20
+ }
21
+ return truncated;
22
+ }
23
+ return obj;
24
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-gen",
3
- "version": "0.64.1",
3
+ "version": "0.64.3",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -64,7 +64,7 @@
64
64
  "zod": "^3.23.8",
65
65
  "@empiricalrun/llm": "^0.17.3",
66
66
  "@empiricalrun/r2-uploader": "^0.3.9",
67
- "@empiricalrun/test-run": "^0.10.0"
67
+ "@empiricalrun/test-run": "^0.10.1"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@playwright/test": "1.47.1",
@@ -79,7 +79,7 @@
79
79
  "playwright": "1.47.1",
80
80
  "serve-handler": "^6.1.6",
81
81
  "ts-patch": "^3.3.0",
82
- "@empiricalrun/shared-types": "0.4.1"
82
+ "@empiricalrun/shared-types": "0.4.2"
83
83
  },
84
84
  "scripts": {
85
85
  "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/prompt.ts","./src/agent/chat/repo.ts","./src/agent/chat/state.ts","./src/agent/chat/types.ts","./src/agent/chat/utils.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/index.ts","./src/agent/cua/pw-codegen/pw-pause/utils.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/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/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/environment-crud.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/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/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/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/prompt.ts","./src/agent/chat/repo.ts","./src/agent/chat/state.ts","./src/agent/chat/types.ts","./src/agent/chat/utils.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/index.ts","./src/agent/cua/pw-codegen/pw-pause/utils.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/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/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/environment-crud.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/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"}