@empiricalrun/test-gen 0.64.3 → 0.65.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.
- package/CHANGELOG.md +24 -0
- package/dist/agent/browsing/run.d.ts +6 -4
- package/dist/agent/browsing/run.d.ts.map +1 -1
- package/dist/agent/browsing/run.js +9 -9
- package/dist/agent/chat/agent-loop.d.ts +2 -1
- package/dist/agent/chat/agent-loop.d.ts.map +1 -1
- package/dist/agent/chat/exports.d.ts +2 -2
- package/dist/agent/chat/exports.d.ts.map +1 -1
- package/dist/agent/chat/index.d.ts +1 -1
- package/dist/agent/chat/index.d.ts.map +1 -1
- package/dist/agent/chat/index.js +16 -1
- package/dist/agent/chat/models.d.ts +1 -1
- package/dist/agent/chat/models.d.ts.map +1 -1
- package/dist/agent/chat/state.d.ts +2 -2
- package/dist/agent/chat/state.d.ts.map +1 -1
- package/dist/agent/chat/utils.d.ts +2 -1
- package/dist/agent/chat/utils.d.ts.map +1 -1
- package/dist/agent/cua/index.d.ts +10 -3
- package/dist/agent/cua/index.d.ts.map +1 -1
- package/dist/agent/cua/index.js +61 -29
- package/dist/agent/cua/model.d.ts +7 -0
- package/dist/agent/cua/model.d.ts.map +1 -1
- package/dist/agent/cua/model.js +10 -0
- package/dist/bin/index.js +2 -2
- package/dist/bin/utils/index.d.ts +1 -1
- package/dist/bin/utils/index.d.ts.map +1 -1
- package/dist/bin/utils/index.js +3 -3
- package/dist/file/client.d.ts +2 -8
- package/dist/file/client.d.ts.map +1 -1
- package/dist/file/client.js +2 -23
- package/dist/file/server.d.ts +15 -3
- package/dist/file/server.d.ts.map +1 -1
- package/dist/file/server.js +17 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -13
- package/dist/tool-call-service/index.d.ts +3 -3
- package/dist/tool-call-service/index.d.ts.map +1 -1
- package/dist/tool-call-service/index.js +4 -3
- package/dist/tool-call-service/utils.d.ts +3 -10
- package/dist/tool-call-service/utils.d.ts.map +1 -1
- package/dist/tool-call-service/utils.js +21 -5
- package/dist/tools/commit-and-create-pr.d.ts.map +1 -1
- package/dist/tools/commit-and-create-pr.js +1 -0
- package/dist/tools/diagnosis-fetcher.d.ts.map +1 -1
- package/dist/tools/diagnosis-fetcher.js +1 -0
- package/dist/tools/download-build.d.ts.map +1 -1
- package/dist/tools/download-build.js +1 -0
- package/dist/tools/grep/index.d.ts.map +1 -1
- package/dist/tools/grep/index.js +1 -0
- package/dist/tools/list-environments.d.ts +3 -0
- package/dist/tools/list-environments.d.ts.map +1 -0
- package/dist/tools/list-environments.js +49 -0
- package/dist/tools/str_replace_editor.d.ts.map +1 -1
- package/dist/tools/str_replace_editor.js +4 -0
- package/dist/tools/test-gen-browser.d.ts +1 -1
- package/dist/tools/test-gen-browser.d.ts.map +1 -1
- package/dist/tools/test-gen-browser.js +50 -12
- package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
- package/dist/tools/test-run-fetcher/index.js +1 -0
- package/dist/tools/test-run.d.ts.map +1 -1
- package/dist/tools/test-run.js +1 -0
- package/package.json +3 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/tools/environment-crud.d.ts +0 -4
- package/dist/tools/environment-crud.d.ts.map +0 -1
- package/dist/tools/environment-crud.js +0 -100
package/dist/file/server.d.ts
CHANGED
|
@@ -1,20 +1,32 @@
|
|
|
1
|
-
import { ArtifactInput } from "@empiricalrun/shared-types";
|
|
1
|
+
import { ArtifactInput, Usage } from "@empiricalrun/shared-types";
|
|
2
|
+
import { BrowserAgentResult } from "../agent/cua";
|
|
3
|
+
export type BrowserAgentIPCPayload = {
|
|
4
|
+
task: string;
|
|
5
|
+
result: BrowserAgentResult;
|
|
6
|
+
usage: Usage;
|
|
7
|
+
generatedCode: string;
|
|
8
|
+
importPaths: string[];
|
|
9
|
+
};
|
|
2
10
|
export declare class FileServiceServer {
|
|
3
11
|
private port;
|
|
4
12
|
private filePath;
|
|
5
13
|
private repoDir;
|
|
6
14
|
private server;
|
|
7
|
-
private actionsSummary;
|
|
8
15
|
private updateFile;
|
|
9
16
|
private onComplete?;
|
|
10
17
|
private artifactsInputs;
|
|
18
|
+
private result;
|
|
19
|
+
private usage;
|
|
11
20
|
constructor({ port, repoDir, updateFile, onComplete, }: {
|
|
12
21
|
port: number;
|
|
13
22
|
repoDir: string;
|
|
14
23
|
updateFile: boolean;
|
|
15
24
|
onComplete?: () => void;
|
|
16
25
|
});
|
|
17
|
-
|
|
26
|
+
getResultAndUsage(): {
|
|
27
|
+
result: BrowserAgentResult | undefined;
|
|
28
|
+
usage: Usage | undefined;
|
|
29
|
+
};
|
|
18
30
|
getArtifactInputsFromServer(): ArtifactInput[];
|
|
19
31
|
setFilePath(filePath: string): void;
|
|
20
32
|
startFileService(): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/file/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/file/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAKlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAQlD,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAoB;gBAErB,EACV,IAAI,EACJ,OAAO,EACP,UAAU,EACV,UAAU,GACX,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;KACzB;IAOD,iBAAiB;;;;IAIjB,2BAA2B;IAI3B,WAAW,CAAC,QAAQ,EAAE,MAAM;IAItB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IA4DnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB5B"}
|
package/dist/file/server.js
CHANGED
|
@@ -14,18 +14,19 @@ class FileServiceServer {
|
|
|
14
14
|
filePath = "";
|
|
15
15
|
repoDir = "";
|
|
16
16
|
server;
|
|
17
|
-
actionsSummary;
|
|
18
17
|
updateFile = false;
|
|
19
18
|
onComplete;
|
|
20
19
|
artifactsInputs = [];
|
|
20
|
+
result;
|
|
21
|
+
usage;
|
|
21
22
|
constructor({ port, repoDir, updateFile, onComplete, }) {
|
|
22
23
|
this.port = port;
|
|
23
24
|
this.repoDir = repoDir;
|
|
24
25
|
this.updateFile = updateFile;
|
|
25
26
|
this.onComplete = onComplete;
|
|
26
27
|
}
|
|
27
|
-
|
|
28
|
-
return this.
|
|
28
|
+
getResultAndUsage() {
|
|
29
|
+
return { result: this.result, usage: this.usage };
|
|
29
30
|
}
|
|
30
31
|
getArtifactInputsFromServer() {
|
|
31
32
|
return this.artifactsInputs;
|
|
@@ -37,9 +38,19 @@ class FileServiceServer {
|
|
|
37
38
|
const app = (0, express_1.default)();
|
|
38
39
|
app.use(express_1.default.json({ limit: "50mb" }));
|
|
39
40
|
(0, ipc_1.humanLoopRoute)(app);
|
|
40
|
-
app.post("/
|
|
41
|
-
const { generatedCode, importPaths,
|
|
42
|
-
this.
|
|
41
|
+
app.post("/agent-results", async (req, res) => {
|
|
42
|
+
const { generatedCode, importPaths, result, usage } = req.body;
|
|
43
|
+
this.result = result;
|
|
44
|
+
this.usage = usage;
|
|
45
|
+
this.artifactsInputs = this.result
|
|
46
|
+
.filter((item) => item.type === "screenshot")
|
|
47
|
+
.map((item) => item.screenshot)
|
|
48
|
+
.map((artifact) => ({
|
|
49
|
+
...artifact,
|
|
50
|
+
data: Buffer.isBuffer(artifact.data)
|
|
51
|
+
? artifact.data
|
|
52
|
+
: Buffer.from(artifact.data),
|
|
53
|
+
}));
|
|
43
54
|
if (!this.updateFile) {
|
|
44
55
|
// Not updating the file in this scenario
|
|
45
56
|
if (this.onComplete)
|
|
@@ -64,28 +75,6 @@ class FileServiceServer {
|
|
|
64
75
|
}
|
|
65
76
|
return res.send({ success: false });
|
|
66
77
|
});
|
|
67
|
-
app.post("/artifact", async (req, res) => {
|
|
68
|
-
const artifactInputs = Array.isArray(req.body) ? req.body : [req.body];
|
|
69
|
-
for (const artifactInput of artifactInputs) {
|
|
70
|
-
const { name, contentType, data } = artifactInput;
|
|
71
|
-
if (!data) {
|
|
72
|
-
console.error("No data in artifact", artifactInput);
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
// Passing buffer data to the server
|
|
76
|
-
// Serialises the buffer data to an obbject
|
|
77
|
-
// Which needs to be converted back to a buffer
|
|
78
|
-
const bufferData = Buffer.isBuffer(data)
|
|
79
|
-
? data
|
|
80
|
-
: Buffer.from(data.data);
|
|
81
|
-
this.artifactsInputs.push({
|
|
82
|
-
name,
|
|
83
|
-
contentType,
|
|
84
|
-
data: bufferData,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
return res.send({ success: true });
|
|
88
|
-
});
|
|
89
78
|
return new Promise((resolve) => {
|
|
90
79
|
this.server = app.listen(this.port, () => resolve(this.port));
|
|
91
80
|
});
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAWhD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsB7C,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,GAAG,YAAY,EAC5B,KAAK,CAAC,EAAE,SAAS,iBAwElB"}
|
package/dist/index.js
CHANGED
|
@@ -78,21 +78,14 @@ async function createTest(task, pageRef, scope) {
|
|
|
78
78
|
scopeVars: scope,
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
if (artifacts && artifacts.length > 0) {
|
|
83
|
-
await fileServiceClient.sendArtifactInputsToServer(artifacts);
|
|
84
|
-
}
|
|
85
|
-
await fileServiceClient.updateTest({
|
|
81
|
+
await fileServiceClient.sendAgentResult({
|
|
86
82
|
task,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
span?.end({
|
|
92
|
-
output: {
|
|
93
|
-
actionsSummary,
|
|
94
|
-
},
|
|
83
|
+
result: agentResult.result,
|
|
84
|
+
usage: agentResult.usage,
|
|
85
|
+
generatedCode: agentResult.code,
|
|
86
|
+
importPaths: agentResult.importPaths,
|
|
95
87
|
});
|
|
88
|
+
span?.end({ output: { agentResult } });
|
|
96
89
|
}
|
|
97
90
|
finally {
|
|
98
91
|
// Ensure listeners are removed even if an error occurs
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { TraceClient } from "@empiricalrun/llm";
|
|
2
|
-
import { PendingToolCall,
|
|
3
|
-
import { Tool, ToolExecute } from "@empiricalrun/shared-types";
|
|
4
|
-
export type { SupportedChatModels };
|
|
2
|
+
import { PendingToolCall, ToolResult } from "@empiricalrun/llm/chat";
|
|
3
|
+
import { SupportedChatModels, Tool, ToolExecute } from "@empiricalrun/shared-types";
|
|
5
4
|
type ToolExecutors = {
|
|
6
5
|
[key: string]: ToolExecute;
|
|
7
6
|
};
|
|
@@ -29,4 +28,5 @@ export declare class ToolCallService {
|
|
|
29
28
|
sendToQueue(toolCalls: PendingToolCall[]): Promise<void>;
|
|
30
29
|
execute(toolCalls: PendingToolCall[]): Promise<ToolResult[]>;
|
|
31
30
|
}
|
|
31
|
+
export {};
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,
|
|
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,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,mBAAmB,EACnB,IAAI,EACJ,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAkBpC,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;gBAEjC,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;CAwEnE"}
|
|
@@ -6,8 +6,8 @@ const artifacts_1 = require("../artifacts");
|
|
|
6
6
|
const commit_and_create_pr_1 = require("../tools/commit-and-create-pr");
|
|
7
7
|
const diagnosis_fetcher_1 = require("../tools/diagnosis-fetcher");
|
|
8
8
|
const download_build_1 = require("../tools/download-build");
|
|
9
|
-
const environment_crud_1 = require("../tools/environment-crud");
|
|
10
9
|
const grep_1 = require("../tools/grep");
|
|
10
|
+
const list_environments_1 = require("../tools/list-environments");
|
|
11
11
|
const str_replace_editor_1 = require("../tools/str_replace_editor");
|
|
12
12
|
const test_gen_browser_1 = require("../tools/test-gen-browser");
|
|
13
13
|
const test_run_1 = require("../tools/test-run");
|
|
@@ -41,7 +41,7 @@ class ToolCallService {
|
|
|
41
41
|
diagnosis_fetcher_1.fetchDiagnosisReportTool,
|
|
42
42
|
test_gen_browser_1.generateTestWithBrowserAgent,
|
|
43
43
|
commit_and_create_pr_1.createPullRequestTool,
|
|
44
|
-
|
|
44
|
+
list_environments_1.listEnvironmentsTool,
|
|
45
45
|
download_build_1.downloadBuildTool,
|
|
46
46
|
];
|
|
47
47
|
if ((0, chat_1.getProviderForModel)(this.selectedModel) !== "claude") {
|
|
@@ -64,7 +64,7 @@ class ToolCallService {
|
|
|
64
64
|
if (!requestId) {
|
|
65
65
|
throw new Error("Could not find an id for the tool call.");
|
|
66
66
|
}
|
|
67
|
-
const queueUrl = (0, utils_1.getQueueUrl)(this.
|
|
67
|
+
const queueUrl = (0, utils_1.getQueueUrl)(toolCalls, this.tools);
|
|
68
68
|
if (!queueUrl) {
|
|
69
69
|
throw new Error(`queueUrl is required for remote execution.`);
|
|
70
70
|
}
|
|
@@ -116,6 +116,7 @@ class ToolCallService {
|
|
|
116
116
|
trace: this.trace,
|
|
117
117
|
collectArtifacts: collectArtifactsFn,
|
|
118
118
|
environmentOverrides: this.environmentOverrides,
|
|
119
|
+
featureFlags: this.featureFlags,
|
|
119
120
|
});
|
|
120
121
|
const artifacts = await uploadArtifactsQueue.waitForCompletion();
|
|
121
122
|
toolResults.push({ ...result, artifacts });
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function sendToolRequestToRemoteQueue(queueUrl: string, payload: {
|
|
5
|
-
toolCalls: PendingToolCall[];
|
|
6
|
-
requestId: string;
|
|
7
|
-
chatSessionId: number;
|
|
8
|
-
selectedModel: SupportedChatModels;
|
|
9
|
-
branchName: string;
|
|
10
|
-
}): Promise<void>;
|
|
1
|
+
import { PendingToolCall, ServicePayload, Tool } from "@empiricalrun/shared-types";
|
|
2
|
+
export declare function getQueueUrl(toolCalls: PendingToolCall[], tools: Tool[]): string;
|
|
3
|
+
export declare function sendToolRequestToRemoteQueue(queueUrl: string, payload: ServicePayload): Promise<void>;
|
|
11
4
|
//# 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,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tool-call-service/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,cAAc,EACd,IAAI,EACL,MAAM,4BAA4B,CAAC;AAUpC,wBAAgB,WAAW,CACzB,SAAS,EAAE,eAAe,EAAE,EAC5B,KAAK,EAAE,IAAI,EAAE,GACZ,MAAM,CAwBR;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,iBAiBxB"}
|
|
@@ -3,12 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getQueueUrl = getQueueUrl;
|
|
4
4
|
exports.sendToolRequestToRemoteQueue = sendToolRequestToRemoteQueue;
|
|
5
5
|
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return process.env.TOOL_EXECUTION_SQS_URL_ECS;
|
|
6
|
+
function appendPrefixToQueueUrl(queueUrl, prefix) {
|
|
7
|
+
if (!queueUrl || !prefix) {
|
|
8
|
+
throw new Error("queueUrl and prefix must be set");
|
|
10
9
|
}
|
|
11
|
-
|
|
10
|
+
const parts = queueUrl.split("/");
|
|
11
|
+
return `${parts.slice(0, -1).join("/")}/${prefix}-${parts.pop()}`;
|
|
12
|
+
}
|
|
13
|
+
function getQueueUrl(toolCalls, tools) {
|
|
14
|
+
const needsBrowser = toolCalls.some((toolCall) => tools.find((t) => t.schema.name === toolCall.name)?.needsBrowser);
|
|
15
|
+
const baseQueueUrl = needsBrowser
|
|
16
|
+
? process.env.TOOL_EXECUTION_SQS_URL_BROWSER
|
|
17
|
+
: process.env.TOOL_EXECUTION_SQS_URL;
|
|
18
|
+
if (process.env.VERCEL_ENV !== "preview") {
|
|
19
|
+
return baseQueueUrl;
|
|
20
|
+
}
|
|
21
|
+
const branch = process.env.VERCEL_GIT_COMMIT_REF;
|
|
22
|
+
if (!branch) {
|
|
23
|
+
throw new Error("VERCEL_GIT_COMMIT_REF is not set");
|
|
24
|
+
}
|
|
25
|
+
const queueUrl = appendPrefixToQueueUrl(baseQueueUrl, `gh-branch-${branch.replace(/\//g, "-")}`);
|
|
26
|
+
console.log("queueUrl", queueUrl);
|
|
27
|
+
return queueUrl;
|
|
12
28
|
}
|
|
13
29
|
async function sendToolRequestToRemoteQueue(queueUrl, payload) {
|
|
14
30
|
const sqs = new client_sqs_1.SQSClient({
|
|
@@ -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,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,
|
|
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,IAmFnC,CAAC"}
|
|
@@ -51,6 +51,7 @@ Don't ask the user for this information, just come up with it yourself.
|
|
|
51
51
|
`,
|
|
52
52
|
parameters: createPullRequestSchema,
|
|
53
53
|
},
|
|
54
|
+
needsBrowser: false,
|
|
54
55
|
execute: async ({ input, repoPath, apiKey, }) => {
|
|
55
56
|
try {
|
|
56
57
|
const { pullRequestTitle, pullRequestDescription } = input;
|
|
@@ -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;AAepE,eAAO,MAAM,wBAAwB,EAAE,
|
|
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,IAsFtC,CAAC"}
|
|
@@ -19,6 +19,7 @@ exports.fetchDiagnosisReportTool = {
|
|
|
19
19
|
description: "Fetch details about a test case diagnosis using its URL or slug",
|
|
20
20
|
parameters: DiagnosisSchema,
|
|
21
21
|
},
|
|
22
|
+
needsBrowser: false,
|
|
22
23
|
execute: async (params) => {
|
|
23
24
|
const { input } = params;
|
|
24
25
|
const { repoPath, apiKey } = params;
|
|
@@ -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;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,
|
|
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,IAmC/B,CAAC"}
|
|
@@ -14,6 +14,7 @@ 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
|
+
needsBrowser: false,
|
|
17
18
|
execute: async (params) => {
|
|
18
19
|
const { input } = params;
|
|
19
20
|
const { repoPath, apiKey } = params;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,IA4BtB,CAAC"}
|
package/dist/tools/grep/index.js
CHANGED
|
@@ -124,6 +124,7 @@ If ripgrep is not available, it will fall back to using system grep.
|
|
|
124
124
|
Search is case insensitive and regex patterns are not supported.`,
|
|
125
125
|
parameters: GrepInputSchema,
|
|
126
126
|
},
|
|
127
|
+
needsBrowser: false,
|
|
127
128
|
execute: async ({ input, repoPath, }) => {
|
|
128
129
|
if ((0, ripgrep_1.isRgAvailable)()) {
|
|
129
130
|
return usingRipgrep(input, repoPath);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-environments.d.ts","sourceRoot":"","sources":["../../src/tools/list-environments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEL,MAAM,4BAA4B,CAAC;AAKpC,eAAO,MAAM,oBAAoB,EAAE,IAsDlC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listEnvironmentsTool = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
exports.listEnvironmentsTool = {
|
|
7
|
+
schema: {
|
|
8
|
+
name: "listEnvironments",
|
|
9
|
+
description: "List all environments and their latest builds for this repository.",
|
|
10
|
+
parameters: zod_1.z.object({}),
|
|
11
|
+
},
|
|
12
|
+
needsBrowser: false,
|
|
13
|
+
execute: async ({ apiKey, }) => {
|
|
14
|
+
let response;
|
|
15
|
+
try {
|
|
16
|
+
response = await (0, utils_1.makeDashboardRequest)({
|
|
17
|
+
path: `/api/environments/list`,
|
|
18
|
+
method: "GET",
|
|
19
|
+
apiKey,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return {
|
|
24
|
+
isError: true,
|
|
25
|
+
result: `Failed to make API request to fetch environments: ${error instanceof Error ? error.message : String(error)}`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const data = response;
|
|
30
|
+
if (data.error) {
|
|
31
|
+
return {
|
|
32
|
+
isError: true,
|
|
33
|
+
result: `API error while fetching environments: ${data.error.message}`,
|
|
34
|
+
data: data.error,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
result: JSON.stringify(data.data),
|
|
39
|
+
isError: false,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return {
|
|
44
|
+
isError: true,
|
|
45
|
+
result: `Failed to parse or validate environment response data: ${error instanceof Error ? error.message : String(error)}`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
};
|
|
@@ -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;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;
|
|
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;AAkID,eAAO,MAAM,eAAe,EAAE,IAAI,EAKjC,CAAC"}
|
|
@@ -340,6 +340,7 @@ 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
|
+
needsBrowser: false,
|
|
343
344
|
execute: async (params) => {
|
|
344
345
|
const { input } = params;
|
|
345
346
|
const { repoPath } = params;
|
|
@@ -364,6 +365,7 @@ directories "tests", "tests/example", and "tests/example/foo.spec.ts".`,
|
|
|
364
365
|
file_text: zod_1.z.string().describe("The contents of the new file."),
|
|
365
366
|
}),
|
|
366
367
|
},
|
|
368
|
+
needsBrowser: false,
|
|
367
369
|
execute: async (params) => {
|
|
368
370
|
const { input } = params;
|
|
369
371
|
const { repoPath } = params;
|
|
@@ -388,6 +390,7 @@ in the file. If old_str is not unique, the tool will return an error.`,
|
|
|
388
390
|
new_str: zod_1.z.string().describe("The string to replace old_str with."),
|
|
389
391
|
}),
|
|
390
392
|
},
|
|
393
|
+
needsBrowser: false,
|
|
391
394
|
execute: async (params) => {
|
|
392
395
|
const { input } = params;
|
|
393
396
|
const { repoPath } = params;
|
|
@@ -418,6 +421,7 @@ To insert a string at the end of the file, you should use insert_line = (total l
|
|
|
418
421
|
new_str: zod_1.z.string().describe("The string to insert."),
|
|
419
422
|
}),
|
|
420
423
|
},
|
|
424
|
+
needsBrowser: false,
|
|
421
425
|
execute: async (params) => {
|
|
422
426
|
const { input } = params;
|
|
423
427
|
const { repoPath } = params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-gen-browser.d.ts","sourceRoot":"","sources":["../../src/tools/test-gen-browser.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"test-gen-browser.d.ts","sourceRoot":"","sources":["../../src/tools/test-gen-browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAGL,MAAM,4BAA4B,CAAC;AAoGpC,eAAO,MAAM,4BAA4B,EAAE,IA2L1C,CAAC"}
|
|
@@ -95,7 +95,8 @@ exports.generateTestWithBrowserAgent = {
|
|
|
95
95
|
description: BROWSER_AGENT_DESCRIPTION,
|
|
96
96
|
parameters: BrowserAgentSchema,
|
|
97
97
|
},
|
|
98
|
-
|
|
98
|
+
needsBrowser: true,
|
|
99
|
+
execute: async ({ input, repoPath, trace, collectArtifacts, environmentOverrides = {}, featureFlags, }) => {
|
|
99
100
|
const { filePath, project } = input;
|
|
100
101
|
const absoluteFilePath = path_1.default.join(repoPath, filePath);
|
|
101
102
|
if (!fs_1.default.existsSync(absoluteFilePath)) {
|
|
@@ -161,7 +162,7 @@ exports.generateTestWithBrowserAgent = {
|
|
|
161
162
|
}
|
|
162
163
|
const testGenToken = (0, scenarios_1.buildTokenFromOptions)({ name: testName, file: filePath, prompt: input.changeToMake }, { useComputerUseAgent: true });
|
|
163
164
|
console.log("[generateTestWithBrowserAgent] Validations passed, starting agent");
|
|
164
|
-
const
|
|
165
|
+
const agentResult = await (0, run_1.runBrowsingAgent)({
|
|
165
166
|
testCaseName: testName,
|
|
166
167
|
testCaseSuites: testSuites,
|
|
167
168
|
testFilePath: filePath,
|
|
@@ -176,27 +177,64 @@ exports.generateTestWithBrowserAgent = {
|
|
|
176
177
|
// Cleanup: Undo the TODO -> createTest changes
|
|
177
178
|
await (0, pw_pause_1.revertToOriginalPwCode)(repoPath);
|
|
178
179
|
fs_1.default.writeFileSync(absoluteFilePath, fileBackup, "utf-8");
|
|
179
|
-
const { isError, error,
|
|
180
|
+
const { isError, error, result: toolResult, artifacts, usage, } = agentResult;
|
|
180
181
|
if (artifacts) {
|
|
181
182
|
void collectArtifacts?.(artifacts);
|
|
182
183
|
}
|
|
183
|
-
if (!
|
|
184
|
+
if (isError || !toolResult) {
|
|
184
185
|
return {
|
|
185
186
|
isError,
|
|
186
|
-
result: `Browser agent
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
${actionsSummary}
|
|
187
|
+
result: `Browser agent failed to run successfully. Here is the error:
|
|
188
|
+
${error}
|
|
190
189
|
`,
|
|
191
190
|
};
|
|
192
191
|
}
|
|
192
|
+
let result = [
|
|
193
|
+
{
|
|
194
|
+
type: "text",
|
|
195
|
+
text: "Browser agent has finished running. Here is the summary of actions it took, and the generated Playwright code:",
|
|
196
|
+
},
|
|
197
|
+
...toolResult.map((item) => {
|
|
198
|
+
if (item.type === "text") {
|
|
199
|
+
return {
|
|
200
|
+
type: "text",
|
|
201
|
+
text: item.text,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
else if (item.type === "screenshot") {
|
|
205
|
+
const bufferData = Buffer.isBuffer(item.screenshot.data)
|
|
206
|
+
? item.screenshot.data
|
|
207
|
+
: Buffer.from(item.screenshot.data);
|
|
208
|
+
return {
|
|
209
|
+
type: "image/png",
|
|
210
|
+
base64Data: `${bufferData.toString("base64")}`,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
return {
|
|
215
|
+
type: "text",
|
|
216
|
+
text: `Unknown item type: ${item}`,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
}),
|
|
220
|
+
];
|
|
221
|
+
const isMultiModalEnabled = featureFlags.includes("multi_modal_tool_result_from_browser_agent");
|
|
222
|
+
if (isMultiModalEnabled) {
|
|
223
|
+
return {
|
|
224
|
+
isError,
|
|
225
|
+
result,
|
|
226
|
+
usage,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
193
229
|
else {
|
|
230
|
+
const textOnlyResult = result
|
|
231
|
+
.filter((item) => item.type === "text")
|
|
232
|
+
.map((item) => item.text)
|
|
233
|
+
.join("\n");
|
|
194
234
|
return {
|
|
195
235
|
isError,
|
|
196
|
-
result:
|
|
197
|
-
|
|
198
|
-
${error}
|
|
199
|
-
`,
|
|
236
|
+
result: textOnlyResult,
|
|
237
|
+
usage,
|
|
200
238
|
};
|
|
201
239
|
}
|
|
202
240
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/test-run-fetcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAcvD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOnE;AAED,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/test-run-fetcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAcvD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOnE;AAED,eAAO,MAAM,sBAAsB,EAAE,IAgIpC,CAAC"}
|
|
@@ -24,6 +24,7 @@ exports.fetchTestRunReportTool = {
|
|
|
24
24
|
description: "Fetch details about a test run using its URL",
|
|
25
25
|
parameters: TestRunSchema,
|
|
26
26
|
},
|
|
27
|
+
needsBrowser: false,
|
|
27
28
|
execute: async ({ input, apiKey, }) => {
|
|
28
29
|
const { testRunUrl } = input;
|
|
29
30
|
// Remove query parameters if they exist
|
|
@@ -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;AAwDnE,eAAO,MAAM,WAAW,EAAE,
|
|
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,IAqFzB,CAAC"}
|
package/dist/tools/test-run.js
CHANGED
|
@@ -47,6 +47,7 @@ exports.runTestTool = {
|
|
|
47
47
|
description: "Run a test",
|
|
48
48
|
parameters: RunTestSchema,
|
|
49
49
|
},
|
|
50
|
+
needsBrowser: true,
|
|
50
51
|
execute: async ({ input, repoPath, collectArtifacts, environmentOverrides = {}, }) => {
|
|
51
52
|
let reportUrl = undefined;
|
|
52
53
|
let envOverrides = { ...environmentOverrides };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/test-gen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.65.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"tsx": "^4.16.2",
|
|
63
63
|
"typescript": "^5.3.3",
|
|
64
64
|
"zod": "^3.23.8",
|
|
65
|
-
"@empiricalrun/llm": "^0.
|
|
65
|
+
"@empiricalrun/llm": "^0.18.0",
|
|
66
66
|
"@empiricalrun/r2-uploader": "^0.3.9",
|
|
67
67
|
"@empiricalrun/test-run": "^0.10.1"
|
|
68
68
|
},
|
|
@@ -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.
|
|
82
|
+
"@empiricalrun/shared-types": "0.5.0"
|
|
83
83
|
},
|
|
84
84
|
"scripts": {
|
|
85
85
|
"dev": "tspc --build --watch",
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -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/
|
|
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/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/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"}
|