@empiricalrun/test-gen 0.64.2 → 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 +8 -0
- package/dist/agent/cua/computer.js +1 -1
- package/dist/tools/commit-and-create-pr.d.ts.map +1 -1
- package/dist/tools/commit-and-create-pr.js +4 -13
- package/dist/tools/test-run.d.ts.map +1 -1
- package/dist/tools/test-run.js +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +24 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
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
|
+
|
|
3
11
|
## 0.64.2
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -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);
|
|
@@ -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;
|
|
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
|
|
34
|
+
function descriptionWithTimestamp(description) {
|
|
35
35
|
const timestamp = new Date()
|
|
36
36
|
.toISOString()
|
|
37
37
|
.replace("T", " ")
|
|
38
38
|
.replace("Z", " UTC");
|
|
39
|
-
|
|
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:
|
|
96
|
+
body: descriptionWithTimestamp(pullRequestDescription),
|
|
106
97
|
},
|
|
107
98
|
apiKey,
|
|
108
99
|
}));
|
|
@@ -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;
|
|
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"}
|
package/dist/tools/test-run.js
CHANGED
|
@@ -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(
|
|
41
|
+
${JSON.stringify(truncatedSummaryJson)}
|
|
40
42
|
`;
|
|
41
43
|
}
|
|
42
44
|
exports.runTestTool = {
|
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;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -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 @@
|
|
|
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
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/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"}
|