@empiricalrun/test-gen 0.74.1 → 0.75.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 +30 -0
- package/dist/agent/base/index.d.ts +36 -0
- package/dist/agent/base/index.d.ts.map +1 -0
- package/dist/agent/base/index.js +74 -0
- package/dist/agent/chat/agent-loop.d.ts +4 -5
- package/dist/agent/chat/agent-loop.d.ts.map +1 -1
- package/dist/agent/chat/agent-loop.js +2 -9
- package/dist/agent/chat/exports.d.ts +3 -3
- package/dist/agent/chat/exports.d.ts.map +1 -1
- package/dist/agent/chat/exports.js +5 -5
- package/dist/agent/chat/index.d.ts.map +1 -1
- package/dist/agent/chat/index.js +8 -11
- package/dist/agent/chat/state.d.ts +2 -3
- package/dist/agent/chat/state.d.ts.map +1 -1
- package/dist/agent/chat/state.js +0 -8
- package/dist/agent/chat/utils.d.ts +0 -1
- package/dist/agent/chat/utils.d.ts.map +1 -1
- package/dist/agent/chat/utils.js +1 -14
- package/dist/file-info/adapters/github/index.d.ts +2 -2
- package/dist/file-info/adapters/github/index.d.ts.map +1 -1
- package/dist/file-info/adapters/github/index.js +3 -2
- package/dist/file-info/adapters/github/reader.d.ts +3 -3
- package/dist/file-info/adapters/github/reader.d.ts.map +1 -1
- package/dist/file-info/adapters/github/reader.js +17 -16
- package/dist/tools/commit-and-create-pr/index.js +1 -1
- package/dist/tools/definitions/fetch-video-analysis.d.ts +28 -0
- package/dist/tools/definitions/fetch-video-analysis.d.ts.map +1 -1
- package/dist/tools/definitions/fetch-video-analysis.js +39 -4
- package/dist/tools/definitions/list-tests-and-projects.d.ts +12 -0
- package/dist/tools/definitions/list-tests-and-projects.d.ts.map +1 -0
- package/dist/tools/definitions/list-tests-and-projects.js +25 -0
- package/dist/tools/definitions/rename-file.d.ts +3 -0
- package/dist/tools/definitions/rename-file.d.ts.map +1 -0
- package/dist/tools/definitions/rename-file.js +23 -0
- package/dist/tools/delete-file/index.d.ts.map +1 -1
- package/dist/tools/delete-file/index.js +13 -1
- package/dist/tools/executor/index.d.ts.map +1 -1
- package/dist/tools/executor/index.js +6 -3
- package/dist/tools/executor/utils/checkpoint.d.ts +1 -3
- package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -1
- package/dist/tools/executor/utils/checkpoint.js +17 -17
- package/dist/tools/executor/utils/git.d.ts +9 -1
- package/dist/tools/executor/utils/git.d.ts.map +1 -1
- package/dist/tools/executor/utils/git.js +72 -2
- package/dist/tools/{fetch-image → fetch-file}/index.d.ts +2 -2
- package/dist/tools/fetch-file/index.d.ts.map +1 -0
- package/dist/tools/fetch-file/index.js +97 -0
- package/dist/tools/fetch-video-analysis/index.d.ts +3 -3
- package/dist/tools/fetch-video-analysis/index.d.ts.map +1 -1
- package/dist/tools/fetch-video-analysis/index.js +71 -22
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts +8 -9
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts.map +1 -1
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.js +55 -17
- package/dist/tools/fetch-video-analysis/open-ai.d.ts +6 -0
- package/dist/tools/fetch-video-analysis/open-ai.d.ts.map +1 -0
- package/dist/tools/fetch-video-analysis/open-ai.js +37 -0
- package/dist/tools/fetch-video-analysis/utils.d.ts +6 -3
- package/dist/tools/fetch-video-analysis/utils.d.ts.map +1 -1
- package/dist/tools/fetch-video-analysis/utils.js +41 -15
- package/dist/tools/fetch-video-analysis/video-analysis.js +1 -1
- package/dist/tools/file-operations/create.d.ts.map +1 -1
- package/dist/tools/file-operations/create.js +6 -3
- package/dist/tools/file-operations/insert.d.ts.map +1 -1
- package/dist/tools/file-operations/insert.js +6 -3
- package/dist/tools/file-operations/replace.d.ts.map +1 -1
- package/dist/tools/file-operations/replace.js +6 -3
- package/dist/tools/file-operations/shared/git-helper.d.ts.map +1 -1
- package/dist/tools/file-operations/shared/git-helper.js +1 -1
- package/dist/tools/file-operations/view/index.d.ts +2 -5
- package/dist/tools/file-operations/view/index.d.ts.map +1 -1
- package/dist/tools/file-operations/view/index.js +2 -22
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +19 -6
- package/dist/tools/issues/update-issue.d.ts.map +1 -1
- package/dist/tools/issues/update-issue.js +16 -9
- package/dist/tools/list-tests-and-projects/index.d.ts +6 -0
- package/dist/tools/list-tests-and-projects/index.d.ts.map +1 -0
- package/dist/tools/list-tests-and-projects/index.js +57 -0
- package/dist/tools/merge-conflicts/index.js +1 -1
- package/dist/tools/rename-file/index.d.ts +3 -0
- package/dist/tools/rename-file/index.d.ts.map +1 -0
- package/dist/tools/rename-file/index.js +88 -0
- package/dist/tools/run-test.js +2 -2
- package/dist/tools/test-gen-browser.js +1 -1
- package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/index.js +2 -1
- package/dist/tools/trace-dot-zip/types.d.ts +35 -3
- package/dist/tools/trace-dot-zip/types.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/utils/network-trace.d.ts +7 -2
- package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/utils/network-trace.js +130 -10
- package/dist/tools/upgrade-packages/index.js +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -3
- package/package.json +5 -5
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/tools/fetch-image/index.d.ts.map +0 -1
- package/dist/tools/fetch-image/index.js +0 -63
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.stripIrrelevantInfoFromNetworkFailureArray = exports.generateNetworkTraceFromZipUrl = exports.generateNetworkTrace = void 0;
|
|
3
|
+
exports.buildNetworkCallSequence = exports.hydrateSha1Bodies = exports.stripIrrelevantInfoFromNetworkFailureArray = exports.generateNetworkTraceFromZipUrl = exports.generateNetworkTrace = void 0;
|
|
4
4
|
const date_fns_1 = require("date-fns");
|
|
5
|
+
const json_1 = require("../../../utils/json");
|
|
5
6
|
const extract_zip_1 = require("./extract-zip");
|
|
6
7
|
const NON_RELEVANT_NETWORK_CALL_KEYWORDS = [
|
|
7
8
|
"sentry",
|
|
@@ -97,6 +98,7 @@ const generateNetworkTrace = async ({ logPrefix = "network-trace", url, failure,
|
|
|
97
98
|
method: call?.snapshot?.request?.method,
|
|
98
99
|
request: {
|
|
99
100
|
headers: call?.snapshot?.request?.headers ?? [],
|
|
101
|
+
body: call?.snapshot?.request?.postData ?? undefined,
|
|
100
102
|
},
|
|
101
103
|
response: {
|
|
102
104
|
headers: call?.snapshot?.response?.headers ?? [],
|
|
@@ -130,7 +132,8 @@ const generateNetworkTrace = async ({ logPrefix = "network-trace", url, failure,
|
|
|
130
132
|
exports.generateNetworkTrace = generateNetworkTrace;
|
|
131
133
|
const generateNetworkTraceFromZipUrl = async ({ url, }) => {
|
|
132
134
|
try {
|
|
133
|
-
const
|
|
135
|
+
const allNetworkCalls = [];
|
|
136
|
+
const relevantNetworkCalls = [];
|
|
134
137
|
await (0, extract_zip_1.extractFileFromZipFromUrl)({
|
|
135
138
|
zipUrl: url,
|
|
136
139
|
fileNames: ["0-trace.network"],
|
|
@@ -141,23 +144,47 @@ const generateNetworkTraceFromZipUrl = async ({ url, }) => {
|
|
|
141
144
|
let lines = tempBuffer.split("\n");
|
|
142
145
|
lines.slice(0, -1).forEach((line) => {
|
|
143
146
|
const parsedNetworkTrace = JSON.parse(line);
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
const hasValidResponseStatus = !!parsedNetworkTrace?.snapshot?.response?.status;
|
|
148
|
+
const responseStatus = Number(parsedNetworkTrace?.snapshot?.response?.status);
|
|
149
|
+
allNetworkCalls.push(parsedNetworkTrace);
|
|
150
|
+
// only failures & redirects for detailed analysis
|
|
151
|
+
if (hasValidResponseStatus &&
|
|
152
|
+
(responseStatus === 308 ||
|
|
153
|
+
(400 <= responseStatus && responseStatus < 600))) {
|
|
154
|
+
relevantNetworkCalls.push(parsedNetworkTrace);
|
|
149
155
|
}
|
|
150
156
|
});
|
|
151
157
|
tempBuffer = lines[lines.length - 1] || "";
|
|
152
158
|
};
|
|
153
159
|
},
|
|
154
160
|
});
|
|
155
|
-
|
|
161
|
+
const failedCalls = relevantNetworkCalls.filter((c) => {
|
|
162
|
+
const status = c.snapshot.response.status;
|
|
163
|
+
return 400 <= status && status < 600;
|
|
164
|
+
});
|
|
165
|
+
const sequenceCalls = allNetworkCalls.filter((c) => {
|
|
166
|
+
const hasValidResponseStatus = !!c.snapshot.response.status;
|
|
167
|
+
const status = Number(c.snapshot.response.status);
|
|
168
|
+
return (hasValidResponseStatus &&
|
|
169
|
+
((400 <= status && status < 600) ||
|
|
170
|
+
status === 307 ||
|
|
171
|
+
status === 308 ||
|
|
172
|
+
status === 301 ||
|
|
173
|
+
status === 302));
|
|
174
|
+
// excluding: 304 (cached), 2xx success
|
|
175
|
+
});
|
|
176
|
+
const networkCallSequence = (0, exports.buildNetworkCallSequence)(sequenceCalls);
|
|
177
|
+
const formattedFailedCalls = failedCalls.map(formatNetworkFailure);
|
|
178
|
+
const hydratedFailedCalls = await (0, exports.hydrateSha1Bodies)(formattedFailedCalls, url);
|
|
179
|
+
return { hydratedFailedCalls, networkCallSequence };
|
|
156
180
|
}
|
|
157
181
|
catch (error) {
|
|
158
182
|
console.error(`Error fetching or processing the zip file: ${url}`, error);
|
|
159
183
|
}
|
|
160
|
-
return
|
|
184
|
+
return {
|
|
185
|
+
hydratedFailedCalls: [],
|
|
186
|
+
networkCallSequence: [],
|
|
187
|
+
};
|
|
161
188
|
};
|
|
162
189
|
exports.generateNetworkTraceFromZipUrl = generateNetworkTraceFromZipUrl;
|
|
163
190
|
const formatNetworkFailure = (call) => {
|
|
@@ -169,21 +196,114 @@ const formatNetworkFailure = (call) => {
|
|
|
169
196
|
method: call?.snapshot?.request?.method,
|
|
170
197
|
request: {
|
|
171
198
|
headers: call?.snapshot?.request?.headers ?? [],
|
|
199
|
+
body: call?.snapshot?.request?.postData ?? undefined,
|
|
172
200
|
},
|
|
173
201
|
response: {
|
|
174
202
|
headers: call?.snapshot?.response?.headers ?? [],
|
|
203
|
+
body: call?.snapshot?.response?.content ?? undefined,
|
|
175
204
|
},
|
|
176
205
|
};
|
|
177
206
|
};
|
|
178
207
|
const stripIrrelevantInfoFromNetworkFailureArray = (failures) => {
|
|
179
|
-
return failures.map(({ endpoint, status, timestamp, method }) => {
|
|
208
|
+
return failures.map(({ endpoint, status, timestamp, method, request, response }) => {
|
|
180
209
|
const strippedFailureInfo = {
|
|
181
210
|
endpoint,
|
|
182
211
|
status,
|
|
183
212
|
timestamp,
|
|
184
213
|
method,
|
|
214
|
+
request: {
|
|
215
|
+
headers: [],
|
|
216
|
+
body: request.body,
|
|
217
|
+
},
|
|
218
|
+
response: {
|
|
219
|
+
headers: [],
|
|
220
|
+
body: response.body,
|
|
221
|
+
},
|
|
185
222
|
};
|
|
186
223
|
return strippedFailureInfo;
|
|
187
224
|
});
|
|
188
225
|
};
|
|
189
226
|
exports.stripIrrelevantInfoFromNetworkFailureArray = stripIrrelevantInfoFromNetworkFailureArray;
|
|
227
|
+
const resolveSha1File = async (zipUrl, sha1) => {
|
|
228
|
+
if (!sha1)
|
|
229
|
+
return undefined;
|
|
230
|
+
let result;
|
|
231
|
+
const fileName = `resources/${sha1}`; // the _sha1 reference is a filename like abcd.bin or abcd.json
|
|
232
|
+
await (0, extract_zip_1.extractFileFromZipFromUrl)({
|
|
233
|
+
zipUrl,
|
|
234
|
+
fileNames: [fileName],
|
|
235
|
+
chunkProcessor: () => {
|
|
236
|
+
let buffer = "";
|
|
237
|
+
return (chunk) => {
|
|
238
|
+
buffer += chunk.toString("utf-8");
|
|
239
|
+
result = buffer;
|
|
240
|
+
};
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
if (!result)
|
|
244
|
+
return undefined;
|
|
245
|
+
let truncatedContent;
|
|
246
|
+
try {
|
|
247
|
+
const parsedResult = JSON.parse(result);
|
|
248
|
+
truncatedContent = JSON.stringify((0, json_1.truncateJsonValues)(parsedResult));
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
truncatedContent = (0, json_1.truncateJsonValues)(result);
|
|
252
|
+
}
|
|
253
|
+
return truncatedContent;
|
|
254
|
+
};
|
|
255
|
+
const hydrateSha1Bodies = async (failures, zipUrl) => {
|
|
256
|
+
return Promise.all(failures.map(async (failure) => {
|
|
257
|
+
const reqSha1 = failure.request.body?._sha1;
|
|
258
|
+
const reqMimeType = failure.request.body?.mimeType;
|
|
259
|
+
const resSha1 = failure.response.body?._sha1;
|
|
260
|
+
const resMimeType = failure.response.body?.mimeType;
|
|
261
|
+
return {
|
|
262
|
+
...failure,
|
|
263
|
+
request: {
|
|
264
|
+
...failure.request,
|
|
265
|
+
body: reqSha1
|
|
266
|
+
? {
|
|
267
|
+
mimeType: reqMimeType,
|
|
268
|
+
content: await resolveSha1File(zipUrl, reqSha1),
|
|
269
|
+
}
|
|
270
|
+
: failure.request.body,
|
|
271
|
+
},
|
|
272
|
+
response: {
|
|
273
|
+
...failure.response,
|
|
274
|
+
body: resSha1
|
|
275
|
+
? {
|
|
276
|
+
mimeType: resMimeType,
|
|
277
|
+
content: await resolveSha1File(zipUrl, resSha1),
|
|
278
|
+
}
|
|
279
|
+
: failure.response.body,
|
|
280
|
+
},
|
|
281
|
+
};
|
|
282
|
+
}));
|
|
283
|
+
};
|
|
284
|
+
exports.hydrateSha1Bodies = hydrateSha1Bodies;
|
|
285
|
+
const buildNetworkCallSequence = (unformattedFailedNetworkCallsWithHeaders) => {
|
|
286
|
+
return unformattedFailedNetworkCallsWithHeaders.map((trace, idx) => {
|
|
287
|
+
const snap = trace.snapshot;
|
|
288
|
+
const url = new URL(snap.request.url);
|
|
289
|
+
let redirect_to = undefined;
|
|
290
|
+
if (snap.response.redirectURL) {
|
|
291
|
+
try {
|
|
292
|
+
// attempting to make it absolute if relative
|
|
293
|
+
redirect_to = new URL(snap.response.redirectURL, snap.request.url).toString();
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
redirect_to = snap.response.redirectURL; // fallback as-is
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
step: idx + 1,
|
|
301
|
+
method: snap.request.method,
|
|
302
|
+
endpoint: url.pathname,
|
|
303
|
+
status: snap.response.status,
|
|
304
|
+
redirect_to,
|
|
305
|
+
duration_ms: Math.round(snap.time),
|
|
306
|
+
};
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
exports.buildNetworkCallSequence = buildNetworkCallSequence;
|
|
@@ -50,7 +50,7 @@ exports.upgradePackagesTool = {
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
const updateMessage = `upgrade ${changes.length} package${changes.length === 1 ? "" : "s"}`;
|
|
53
|
-
(0, git_1.
|
|
53
|
+
(0, git_1.stageAndCommitFilesAsBotUser)({
|
|
54
54
|
commitMessage: `[upgrade-packages] ${updateMessage}`,
|
|
55
55
|
files: ["package.json", "package-lock.json"],
|
|
56
56
|
repoPath,
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
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; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/test-gen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.75.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
"yauzl": "^3.1.3",
|
|
86
86
|
"zod": "^3.23.8",
|
|
87
87
|
"@empiricalrun/ast-parser": "^0.0.10",
|
|
88
|
-
"@empiricalrun/llm": "^0.
|
|
89
|
-
"@empiricalrun/r2-uploader": "^0.3.
|
|
90
|
-
"@empiricalrun/test-run": "^0.
|
|
88
|
+
"@empiricalrun/llm": "^0.22.0",
|
|
89
|
+
"@empiricalrun/r2-uploader": "^0.3.11",
|
|
90
|
+
"@empiricalrun/test-run": "^0.11.1"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@playwright/test": "1.53.2",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"playwright": "1.53.2",
|
|
107
107
|
"serve-handler": "^6.1.6",
|
|
108
108
|
"ts-patch": "^3.3.0",
|
|
109
|
-
"@empiricalrun/shared-types": "0.
|
|
109
|
+
"@empiricalrun/shared-types": "0.10.1"
|
|
110
110
|
},
|
|
111
111
|
"scripts": {
|
|
112
112
|
"dev": "tspc --build --watch",
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/index.ts","./src/logger.ts","./src/actions/assert.ts","./src/actions/click.ts","./src/actions/done.ts","./src/actions/fill.ts","./src/actions/goto.ts","./src/actions/hover.ts","./src/actions/index.ts","./src/actions/next-task.ts","./src/actions/press.ts","./src/actions/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/filesystem-cache.ts","./src/agent/chat/index.ts","./src/agent/chat/models.ts","./src/agent/chat/state.ts","./src/agent/chat/types.ts","./src/agent/chat/utils.ts","./src/agent/chat/prompt/index.ts","./src/agent/chat/prompt/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/chat/utils/tool-calls.ts","./src/agent/code-review/prompt.ts","./src/agent/codegen/create-test-block.ts","./src/agent/codegen/fix-ts-errors.ts","./src/agent/codegen/lexical-scoped-vars.ts","./src/agent/codegen/skills-retriever.ts","./src/agent/codegen/test-update-feedback.ts","./src/agent/codegen/types.ts","./src/agent/codegen/update-flow.ts","./src/agent/codegen/use-skill.ts","./src/agent/codegen/utils.ts","./src/agent/cua/computer.ts","./src/agent/cua/index.ts","./src/agent/cua/model.ts","./src/agent/cua/pw-codegen/element-from-point.ts","./src/agent/cua/pw-codegen/types.ts","./src/agent/cua/pw-codegen/pw-pause/for-recorder.ts","./src/agent/cua/pw-codegen/pw-pause/index.ts","./src/agent/cua/pw-codegen/pw-pause/ipc.ts","./src/agent/cua/pw-codegen/pw-pause/patch.ts","./src/agent/cua/pw-codegen/pw-pause/types.ts","./src/agent/cua/pw-codegen/pw-pause/utils.ts","./src/agent/diagnosis-agent/index.ts","./src/agent/diagnosis-agent/strict-mode-violation.ts","./src/agent/master/action-tool-calls.ts","./src/agent/master/element-annotation.ts","./src/agent/master/execute-browser-action.ts","./src/agent/master/execute-skill-action.ts","./src/agent/master/next-action.ts","./src/agent/master/planner.ts","./src/agent/master/run.ts","./src/agent/master/scroller.ts","./src/agent/master/with-hints.ts","./src/agent/master/browser-tests/cua.spec.ts","./src/agent/master/browser-tests/fixtures.ts","./src/agent/master/browser-tests/index.spec.ts","./src/agent/master/browser-tests/skills.spec.ts","./src/agent/master/icon-descriptor/index.ts","./src/agent/master/icon-descriptor/normalize-svg.ts","./src/agent/planner/run-time-planner.ts","./src/agent/planner/run.ts","./src/artifacts/index.ts","./src/artifacts/utils.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.ts","./src/bin/environments.ts","./src/bin/index.ts","./src/bin/setup.ts","./src/bin/logger/index.ts","./src/bin/utils/context.ts","./src/bin/utils/index.ts","./src/bin/utils/fs/index.ts","./src/bin/utils/platform/web/index.ts","./src/bin/utils/platform/web/test-files/ts-path-import-validate.ts","./src/bin/utils/scenarios/index.ts","./src/browser-injected-scripts/annotate-elements.spec.ts","./src/constants/index.ts","./src/dashboard/client.ts","./src/dashboard/index.ts","./src/dashboard/totp.ts","./src/dashboard/types.ts","./src/errors/index.ts","./src/evals/append-create-test-agent.evals.ts","./src/evals/fetch-pom-skills-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/file-info/index.ts","./src/file-info/adapters/file-system/index.ts","./src/file-info/adapters/file-system/reader.ts","./src/file-info/adapters/github/index.ts","./src/file-info/adapters/github/reader.ts","./src/human-in-the-loop/cli.ts","./src/human-in-the-loop/index.ts","./src/human-in-the-loop/ipc.ts","./src/page/index.ts","./src/prompts/lib/ts-transformer.ts","./src/recorder/env-variables.ts","./src/recorder/index.ts","./src/recorder/request.ts","./src/recorder/temp-files.ts","./src/recorder/upload.ts","./src/recorder/validation.ts","./src/test-build/index.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/index.ts","./src/tools/list-environments.ts","./src/tools/run-test.ts","./src/tools/test-gen-browser.ts","./src/tools/commit-and-create-pr/index.ts","./src/tools/definitions/commit-and-create-pr.ts","./src/tools/definitions/delete-file.ts","./src/tools/definitions/download-build.ts","./src/tools/definitions/fetch-video-analysis.ts","./src/tools/definitions/grep.ts","./src/tools/definitions/merge-conflicts.ts","./src/tools/definitions/run-test.ts","./src/tools/definitions/str_replace_editor.ts","./src/tools/definitions/test-gen-browser.ts","./src/tools/definitions/upgrade-packages.ts","./src/tools/definitions/utils.ts","./src/tools/delete-file/index.ts","./src/tools/download-build/index.ts","./src/tools/executor/index.ts","./src/tools/executor/utils/checkpoint.ts","./src/tools/executor/utils/git.ts","./src/tools/executor/utils/index.ts","./src/tools/executor/utils/pr-description.ts","./src/tools/fetch-
|
|
1
|
+
{"root":["./src/index.ts","./src/logger.ts","./src/actions/assert.ts","./src/actions/click.ts","./src/actions/done.ts","./src/actions/fill.ts","./src/actions/goto.ts","./src/actions/hover.ts","./src/actions/index.ts","./src/actions/next-task.ts","./src/actions/press.ts","./src/actions/skill.ts","./src/actions/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/index.ts","./src/agent/base/index.ts","./src/agent/browsing/index.ts","./src/agent/browsing/run.ts","./src/agent/browsing/utils.ts","./src/agent/chat/agent-loop.ts","./src/agent/chat/exports.ts","./src/agent/chat/filesystem-cache.ts","./src/agent/chat/index.ts","./src/agent/chat/models.ts","./src/agent/chat/state.ts","./src/agent/chat/types.ts","./src/agent/chat/utils.ts","./src/agent/chat/prompt/index.ts","./src/agent/chat/prompt/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/chat/utils/tool-calls.ts","./src/agent/code-review/prompt.ts","./src/agent/codegen/create-test-block.ts","./src/agent/codegen/fix-ts-errors.ts","./src/agent/codegen/lexical-scoped-vars.ts","./src/agent/codegen/skills-retriever.ts","./src/agent/codegen/test-update-feedback.ts","./src/agent/codegen/types.ts","./src/agent/codegen/update-flow.ts","./src/agent/codegen/use-skill.ts","./src/agent/codegen/utils.ts","./src/agent/cua/computer.ts","./src/agent/cua/index.ts","./src/agent/cua/model.ts","./src/agent/cua/pw-codegen/element-from-point.ts","./src/agent/cua/pw-codegen/types.ts","./src/agent/cua/pw-codegen/pw-pause/for-recorder.ts","./src/agent/cua/pw-codegen/pw-pause/index.ts","./src/agent/cua/pw-codegen/pw-pause/ipc.ts","./src/agent/cua/pw-codegen/pw-pause/patch.ts","./src/agent/cua/pw-codegen/pw-pause/types.ts","./src/agent/cua/pw-codegen/pw-pause/utils.ts","./src/agent/diagnosis-agent/index.ts","./src/agent/diagnosis-agent/strict-mode-violation.ts","./src/agent/master/action-tool-calls.ts","./src/agent/master/element-annotation.ts","./src/agent/master/execute-browser-action.ts","./src/agent/master/execute-skill-action.ts","./src/agent/master/next-action.ts","./src/agent/master/planner.ts","./src/agent/master/run.ts","./src/agent/master/scroller.ts","./src/agent/master/with-hints.ts","./src/agent/master/browser-tests/cua.spec.ts","./src/agent/master/browser-tests/fixtures.ts","./src/agent/master/browser-tests/index.spec.ts","./src/agent/master/browser-tests/skills.spec.ts","./src/agent/master/icon-descriptor/index.ts","./src/agent/master/icon-descriptor/normalize-svg.ts","./src/agent/planner/run-time-planner.ts","./src/agent/planner/run.ts","./src/artifacts/index.ts","./src/artifacts/utils.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.ts","./src/bin/environments.ts","./src/bin/index.ts","./src/bin/setup.ts","./src/bin/logger/index.ts","./src/bin/utils/context.ts","./src/bin/utils/index.ts","./src/bin/utils/fs/index.ts","./src/bin/utils/platform/web/index.ts","./src/bin/utils/platform/web/test-files/ts-path-import-validate.ts","./src/bin/utils/scenarios/index.ts","./src/browser-injected-scripts/annotate-elements.spec.ts","./src/constants/index.ts","./src/dashboard/client.ts","./src/dashboard/index.ts","./src/dashboard/totp.ts","./src/dashboard/types.ts","./src/errors/index.ts","./src/evals/append-create-test-agent.evals.ts","./src/evals/fetch-pom-skills-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/file-info/index.ts","./src/file-info/adapters/file-system/index.ts","./src/file-info/adapters/file-system/reader.ts","./src/file-info/adapters/github/index.ts","./src/file-info/adapters/github/reader.ts","./src/human-in-the-loop/cli.ts","./src/human-in-the-loop/index.ts","./src/human-in-the-loop/ipc.ts","./src/page/index.ts","./src/prompts/lib/ts-transformer.ts","./src/recorder/env-variables.ts","./src/recorder/index.ts","./src/recorder/request.ts","./src/recorder/temp-files.ts","./src/recorder/upload.ts","./src/recorder/validation.ts","./src/test-build/index.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/index.ts","./src/tools/list-environments.ts","./src/tools/run-test.ts","./src/tools/test-gen-browser.ts","./src/tools/commit-and-create-pr/index.ts","./src/tools/definitions/commit-and-create-pr.ts","./src/tools/definitions/delete-file.ts","./src/tools/definitions/download-build.ts","./src/tools/definitions/fetch-video-analysis.ts","./src/tools/definitions/grep.ts","./src/tools/definitions/list-tests-and-projects.ts","./src/tools/definitions/merge-conflicts.ts","./src/tools/definitions/rename-file.ts","./src/tools/definitions/run-test.ts","./src/tools/definitions/str_replace_editor.ts","./src/tools/definitions/test-gen-browser.ts","./src/tools/definitions/upgrade-packages.ts","./src/tools/definitions/utils.ts","./src/tools/delete-file/index.ts","./src/tools/download-build/index.ts","./src/tools/executor/index.ts","./src/tools/executor/utils/checkpoint.ts","./src/tools/executor/utils/git.ts","./src/tools/executor/utils/index.ts","./src/tools/executor/utils/pr-description.ts","./src/tools/fetch-file/index.ts","./src/tools/fetch-last-successful-test-run/index.ts","./src/tools/fetch-video-analysis/index.ts","./src/tools/fetch-video-analysis/local-ffmpeg-client.ts","./src/tools/fetch-video-analysis/open-ai.ts","./src/tools/fetch-video-analysis/utils.ts","./src/tools/fetch-video-analysis/video-analysis.ts","./src/tools/file-operations/create.ts","./src/tools/file-operations/index.ts","./src/tools/file-operations/insert.ts","./src/tools/file-operations/replace.ts","./src/tools/file-operations/shared/git-helper.ts","./src/tools/file-operations/shared/helpers.ts","./src/tools/file-operations/view/index.ts","./src/tools/grep/index.ts","./src/tools/grep/types.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/issues/create-issue.ts","./src/tools/issues/index.ts","./src/tools/issues/list-issues.ts","./src/tools/issues/metadata-schema.ts","./src/tools/issues/update-issue.ts","./src/tools/issues/utils.ts","./src/tools/list-tests-and-projects/index.ts","./src/tools/merge-conflicts/index.ts","./src/tools/rename-file/index.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/trace-dot-zip/index.ts","./src/tools/trace-dot-zip/types.ts","./src/tools/trace-dot-zip/utils/console-trace.ts","./src/tools/trace-dot-zip/utils/extract-zip.ts","./src/tools/trace-dot-zip/utils/network-trace.ts","./src/tools/triage-summary/index.ts","./src/tools/triage-summary/types.ts","./src/tools/triage-summary/utils.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/queue.ts","./src/tools/view-failed-test-run-report/index.ts","./src/trace-utils/index.ts","./src/types/handlebars.d.ts","./src/types/index.ts","./src/utils/SQSClient.ts","./src/utils/dedup-image-fs.ts","./src/utils/dedup-image.ts","./src/utils/env.ts","./src/utils/exec.ts","./src/utils/file.ts","./src/utils/html.ts","./src/utils/index.ts","./src/utils/json.ts","./src/utils/model.ts","./src/utils/playwright-report-parser.ts","./src/utils/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.ts"],"version":"5.8.3"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/fetch-image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA8B,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,gBAAgB;;;;;;EAEpB,CAAC;AAEH,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAuDjE,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchImageTool = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
const SUPPORTED_CONTENT_TYPES = ["image/png", "image/jpeg"];
|
|
6
|
-
const fetchImageSchema = zod_1.z.object({
|
|
7
|
-
url: zod_1.z.string(),
|
|
8
|
-
});
|
|
9
|
-
exports.fetchImageTool = {
|
|
10
|
-
schema: {
|
|
11
|
-
name: "fetchImage",
|
|
12
|
-
description: `Use this tool to fetch image data from any valid URL that responds with a PNG or JPEG image.
|
|
13
|
-
It takes an image URL as input and returns the image in base64 format, for you to view or analyze.
|
|
14
|
-
|
|
15
|
-
## Common scenarios:
|
|
16
|
-
1. Understand a test report (for the runTest tool) by fetching screenshots: test results can have screenshot URLs in the attachments section of the report.
|
|
17
|
-
|
|
18
|
-
2. While adding new tests, if the user message contains image URLs, use this tool to fetch the images, and understand the steps that the user is looking to cover.`,
|
|
19
|
-
parameters: fetchImageSchema,
|
|
20
|
-
},
|
|
21
|
-
needsBrowser: false,
|
|
22
|
-
isInlineTool: true,
|
|
23
|
-
execute: async ({ input }) => {
|
|
24
|
-
const { url } = input;
|
|
25
|
-
try {
|
|
26
|
-
const response = await fetch(url);
|
|
27
|
-
if (!response.ok) {
|
|
28
|
-
console.error(`Failed to fetch image from ${url}: ${response.statusText}`);
|
|
29
|
-
return {
|
|
30
|
-
result: `Failed to fetch image from ${url}: ${response.statusText}`,
|
|
31
|
-
isError: true,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const contentType = response.headers.get("content-type");
|
|
35
|
-
if (!contentType || !SUPPORTED_CONTENT_TYPES.includes(contentType)) {
|
|
36
|
-
const errorMessage = `Invalid content type: ${contentType}. URL must return an image.`;
|
|
37
|
-
console.error(errorMessage);
|
|
38
|
-
return {
|
|
39
|
-
result: errorMessage,
|
|
40
|
-
isError: true,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
const buffer = await response.arrayBuffer();
|
|
44
|
-
const base64 = Buffer.from(buffer).toString("base64");
|
|
45
|
-
return {
|
|
46
|
-
result: [
|
|
47
|
-
{
|
|
48
|
-
type: contentType,
|
|
49
|
-
base64Data: base64,
|
|
50
|
-
},
|
|
51
|
-
],
|
|
52
|
-
isError: false,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
console.error("Error fetching image", error);
|
|
57
|
-
return {
|
|
58
|
-
result: `Error fetching image: ${error}`,
|
|
59
|
-
isError: true,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
};
|