@empiricalrun/test-gen 0.72.0 → 0.73.1
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 +28 -0
- package/dist/agent/chat/agent-loop.d.ts.map +1 -1
- package/dist/agent/chat/agent-loop.js +1 -0
- package/dist/agent/chat/index.d.ts.map +1 -1
- package/dist/agent/chat/index.js +12 -22
- package/dist/agent/chat/prompt/index.d.ts.map +1 -1
- package/dist/agent/chat/prompt/index.js +3 -2
- package/dist/agent/code-review/prompt.d.ts +2 -0
- package/dist/agent/code-review/prompt.d.ts.map +1 -0
- package/dist/agent/code-review/prompt.js +19 -0
- package/dist/agent/codegen/create-test-block.d.ts.map +1 -1
- package/dist/agent/codegen/create-test-block.js +0 -10
- package/dist/agent/diagnosis-agent/index.d.ts.map +1 -1
- package/dist/agent/diagnosis-agent/index.js +0 -9
- package/dist/agent/master/execute-browser-action.d.ts +1 -1
- package/dist/agent/master/execute-browser-action.d.ts.map +1 -1
- package/dist/agent/master/execute-skill-action.d.ts +1 -1
- package/dist/agent/master/execute-skill-action.d.ts.map +1 -1
- package/dist/agent/master/run.d.ts.map +1 -1
- package/dist/agent/master/run.js +0 -74
- package/dist/artifacts/index.d.ts.map +1 -1
- package/dist/artifacts/index.js +18 -6
- package/dist/artifacts/utils.d.ts +2 -2
- package/dist/artifacts/utils.d.ts.map +1 -1
- package/dist/artifacts/utils.js +16 -5
- package/dist/auth/cli-auth.d.ts.map +1 -1
- package/dist/auth/cli-auth.js +3 -7
- package/dist/auth/index.d.ts +1 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -4
- package/dist/auth/token-store.d.ts +1 -1
- package/dist/auth/token-store.d.ts.map +1 -1
- package/dist/auth/token-store.js +3 -3
- package/dist/bin/environments.d.ts +5 -1
- package/dist/bin/environments.d.ts.map +1 -1
- package/dist/bin/environments.js +9 -11
- package/dist/bin/index.js +33 -74
- package/dist/bin/setup.d.ts +3 -1
- package/dist/bin/setup.d.ts.map +1 -1
- package/dist/bin/setup.js +6 -10
- package/dist/dashboard/client.d.ts +26 -0
- package/dist/dashboard/client.d.ts.map +1 -0
- package/dist/dashboard/client.js +185 -0
- package/dist/dashboard/index.d.ts +2 -20
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +7 -81
- package/dist/dashboard/totp.d.ts +1 -1
- package/dist/dashboard/totp.d.ts.map +1 -1
- package/dist/dashboard/totp.js +2 -6
- package/dist/dashboard/types.d.ts +9 -0
- package/dist/dashboard/types.d.ts.map +1 -0
- package/dist/dashboard/types.js +17 -0
- package/dist/file-info/github.d.ts +2 -2
- package/dist/file-info/github.d.ts.map +1 -1
- package/dist/file-info/github.js +9 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -9
- package/dist/recorder/env-variables.d.ts.map +1 -1
- package/dist/recorder/env-variables.js +3 -7
- package/dist/recorder/index.js +5 -5
- package/dist/recorder/request.js +4 -9
- package/dist/recorder/upload.d.ts +3 -2
- package/dist/recorder/upload.d.ts.map +1 -1
- package/dist/recorder/upload.js +20 -22
- package/dist/tools/commit-and-create-pr.d.ts.map +1 -1
- package/dist/tools/commit-and-create-pr.js +42 -35
- package/dist/tools/delete-file.d.ts +3 -0
- package/dist/tools/delete-file.d.ts.map +1 -0
- package/dist/tools/delete-file.js +83 -0
- package/dist/tools/diagnosis-fetcher.d.ts.map +1 -1
- package/dist/tools/diagnosis-fetcher.js +3 -7
- package/dist/tools/executor/index.d.ts +6 -9
- package/dist/tools/executor/index.d.ts.map +1 -1
- package/dist/tools/executor/index.js +23 -29
- package/dist/tools/executor/utils/checkpoint.d.ts +2 -2
- package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -1
- package/dist/tools/executor/utils/checkpoint.js +6 -5
- package/dist/tools/executor/utils/git.d.ts +7 -12
- package/dist/tools/executor/utils/git.d.ts.map +1 -1
- package/dist/tools/executor/utils/git.js +11 -36
- package/dist/tools/executor/utils/index.d.ts +37 -21
- package/dist/tools/executor/utils/index.d.ts.map +1 -1
- package/dist/tools/executor/utils/index.js +57 -58
- package/dist/tools/executor/utils/pr-description.d.ts +4 -0
- package/dist/tools/executor/utils/pr-description.d.ts.map +1 -0
- package/dist/tools/executor/utils/pr-description.js +24 -0
- package/dist/tools/fetch-image/index.d.ts +3 -0
- package/dist/tools/fetch-image/index.d.ts.map +1 -0
- package/dist/tools/fetch-image/index.js +62 -0
- package/dist/tools/grep/index.d.ts.map +1 -1
- package/dist/tools/grep/index.js +1 -1
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +60 -0
- package/dist/tools/list-environments.d.ts.map +1 -1
- package/dist/tools/list-environments.js +2 -5
- package/dist/tools/merge-conflicts.d.ts +3 -0
- package/dist/tools/merge-conflicts.d.ts.map +1 -0
- package/dist/tools/merge-conflicts.js +107 -0
- package/dist/tools/run-test.d.ts.map +1 -1
- package/dist/tools/run-test.js +2 -2
- package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
- package/dist/tools/test-run-fetcher/index.js +2 -6
- package/dist/tools/upgrade-packages/index.d.ts.map +1 -1
- package/dist/tools/upgrade-packages/index.js +10 -11
- package/dist/tools/upgrade-packages/utils.d.ts +3 -2
- package/dist/tools/upgrade-packages/utils.d.ts.map +1 -1
- package/dist/tools/upgrade-packages/utils.js +5 -8
- package/dist/tools/utils/queue.d.ts +5 -0
- package/dist/tools/utils/queue.d.ts.map +1 -0
- package/dist/tools/utils/queue.js +41 -0
- package/package.json +5 -5
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/auth/api-client.d.ts +0 -13
- package/dist/auth/api-client.d.ts.map +0 -1
- package/dist/auth/api-client.js +0 -107
- package/dist/session/index.d.ts +0 -20
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/index.js +0 -104
- package/dist/tools/definitions/index.d.ts +0 -22
- package/dist/tools/definitions/index.d.ts.map +0 -1
- package/dist/tools/definitions/index.js +0 -61
- package/dist/tools/definitions/utils/queue.d.ts +0 -8
- package/dist/tools/definitions/utils/queue.d.ts.map +0 -1
- package/dist/tools/definitions/utils/queue.js +0 -58
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IDashboardAPIClient } from "@empiricalrun/shared-types";
|
|
1
2
|
export declare function getLatestVersion(packageName: string): Promise<any>;
|
|
2
3
|
export declare function parsePackageJsonDiff({ diff, }: {
|
|
3
4
|
diff: string;
|
|
@@ -5,10 +6,10 @@ export declare function parsePackageJsonDiff({ diff, }: {
|
|
|
5
6
|
old?: string;
|
|
6
7
|
new?: string;
|
|
7
8
|
}>;
|
|
8
|
-
export declare function shouldMergePR({ repoName, prNumber,
|
|
9
|
+
export declare function shouldMergePR({ repoName, prNumber, apiClient, }: {
|
|
9
10
|
repoName: string;
|
|
10
11
|
prNumber: number;
|
|
11
|
-
|
|
12
|
+
apiClient: IDashboardAPIClient;
|
|
12
13
|
}): Promise<boolean>;
|
|
13
14
|
export declare function upgradeAndStagePackage({ repoPath, pkgName, version, isDevDep, }: {
|
|
14
15
|
repoPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/upgrade-packages/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/upgrade-packages/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAmBjE,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,gBAkBzD;AA4BD,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,GACL,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBjD;AAED,wBAAsB,aAAa,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,mBAAmB,CAAC;CAChC,oBA8BA;AAED,wBAAsB,sBAAsB,CAAC,EAC3C,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;;;GAcA"}
|
|
@@ -5,7 +5,6 @@ exports.parsePackageJsonDiff = parsePackageJsonDiff;
|
|
|
5
5
|
exports.shouldMergePR = shouldMergePR;
|
|
6
6
|
exports.upgradeAndStagePackage = upgradeAndStagePackage;
|
|
7
7
|
const child_process_1 = require("child_process");
|
|
8
|
-
const utils_1 = require("../executor/utils");
|
|
9
8
|
function isPatchUpdate(currentVersion, newVersion) {
|
|
10
9
|
if (!currentVersion || !newVersion) {
|
|
11
10
|
// If current is undefined, we might be installing a new package
|
|
@@ -35,12 +34,10 @@ async function getLatestVersion(packageName) {
|
|
|
35
34
|
throw error;
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
|
-
async function getGitDiffForPackageJson({ repoName, prNumber,
|
|
39
|
-
const
|
|
40
|
-
const files = await (0, utils_1.callGitHubProxy)({
|
|
37
|
+
async function getGitDiffForPackageJson({ repoName, prNumber, apiClient, }) {
|
|
38
|
+
const files = await apiClient.callGitHubProxy({
|
|
41
39
|
method: "GET",
|
|
42
|
-
url:
|
|
43
|
-
apiKey,
|
|
40
|
+
url: `/repos/empirical-run/${repoName}/pulls/${prNumber}/files`,
|
|
44
41
|
});
|
|
45
42
|
if (!files) {
|
|
46
43
|
throw new Error("Failed to fetch PR files via proxy");
|
|
@@ -74,11 +71,11 @@ function parsePackageJsonDiff({ diff, }) {
|
|
|
74
71
|
}
|
|
75
72
|
return changes;
|
|
76
73
|
}
|
|
77
|
-
async function shouldMergePR({ repoName, prNumber,
|
|
74
|
+
async function shouldMergePR({ repoName, prNumber, apiClient, }) {
|
|
78
75
|
const gitDiff = await getGitDiffForPackageJson({
|
|
79
76
|
repoName,
|
|
80
77
|
prNumber,
|
|
81
|
-
|
|
78
|
+
apiClient,
|
|
82
79
|
});
|
|
83
80
|
if (!gitDiff) {
|
|
84
81
|
console.log("No package.json changes found, skipping merge");
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PendingToolCall } from "@empiricalrun/shared-types";
|
|
2
|
+
export declare function appendSuffixToQueueUrl(queueUrl: string, suffix: string): string;
|
|
3
|
+
export declare function replaceRegionInUrl(url: string, newRegion: string): string;
|
|
4
|
+
export declare function getQueueUrl(toolCalls: PendingToolCall[], needsBrowser: boolean): string;
|
|
5
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/tools/utils/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOzE;AAkBD,wBAAgB,WAAW,CACzB,SAAS,EAAE,eAAe,EAAE,EAC5B,YAAY,EAAE,OAAO,GACpB,MAAM,CAeR"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appendSuffixToQueueUrl = appendSuffixToQueueUrl;
|
|
4
|
+
exports.replaceRegionInUrl = replaceRegionInUrl;
|
|
5
|
+
exports.getQueueUrl = getQueueUrl;
|
|
6
|
+
function appendSuffixToQueueUrl(queueUrl, suffix) {
|
|
7
|
+
const parts = queueUrl.split("/");
|
|
8
|
+
const queueName = parts.pop();
|
|
9
|
+
const queueNameWithoutFifo = queueName?.replace(/\.fifo$/, "");
|
|
10
|
+
return `${parts.join("/")}/${queueNameWithoutFifo}-${suffix}.fifo`;
|
|
11
|
+
}
|
|
12
|
+
function replaceRegionInUrl(url, newRegion) {
|
|
13
|
+
const parsedUrl = new URL(url);
|
|
14
|
+
parsedUrl.hostname = parsedUrl.hostname.replace(/\.([a-z0-9-]+)\.amazonaws\.com$/, `.${newRegion}.amazonaws.com`);
|
|
15
|
+
return parsedUrl.toString();
|
|
16
|
+
}
|
|
17
|
+
function buildQueueUrlsForPreview(baseQueueUrl) {
|
|
18
|
+
const buildHash = process.env.TOOL_EXECUTION_SERVICE_BUILD_HASH;
|
|
19
|
+
if (!buildHash) {
|
|
20
|
+
throw new Error("TOOL_EXECUTION_SERVICE_BUILD_HASH is not set");
|
|
21
|
+
}
|
|
22
|
+
const updatedRegionForQueue = replaceRegionInUrl(baseQueueUrl, process.env.AWS_REGION);
|
|
23
|
+
const queueUrl = appendSuffixToQueueUrl(updatedRegionForQueue, buildHash);
|
|
24
|
+
console.log("queueUrl for preview", queueUrl);
|
|
25
|
+
return queueUrl;
|
|
26
|
+
}
|
|
27
|
+
function getQueueUrl(toolCalls, needsBrowser) {
|
|
28
|
+
const browserSqsQueueUrl = process.env.TOOL_EXECUTION_SQS_URL_BROWSER;
|
|
29
|
+
const baseSqsQueueUrl = process.env.TOOL_EXECUTION_SQS_URL;
|
|
30
|
+
const queueUrl = needsBrowser ? browserSqsQueueUrl : baseSqsQueueUrl;
|
|
31
|
+
if (!queueUrl) {
|
|
32
|
+
throw new Error("No queue URL found");
|
|
33
|
+
}
|
|
34
|
+
const vercelEnv = process.env.VERCEL_ENV || "";
|
|
35
|
+
if (vercelEnv !== "preview") {
|
|
36
|
+
return queueUrl;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return buildQueueUrlsForPreview(queueUrl);
|
|
40
|
+
}
|
|
41
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/test-gen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.73.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"default": "./dist/index.js"
|
|
28
28
|
},
|
|
29
29
|
"./tool-caller": {
|
|
30
|
-
"types": "./dist/tools/
|
|
31
|
-
"default": "./dist/tools/
|
|
30
|
+
"types": "./dist/tools/index.d.ts",
|
|
31
|
+
"default": "./dist/tools/index.js"
|
|
32
32
|
},
|
|
33
33
|
"./tool-executor": {
|
|
34
34
|
"types": "./dist/tools/executor/index.d.ts",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"tsx": "^4.16.2",
|
|
73
73
|
"typescript": "^5.3.3",
|
|
74
74
|
"zod": "^3.23.8",
|
|
75
|
-
"@empiricalrun/llm": "^0.20.
|
|
75
|
+
"@empiricalrun/llm": "^0.20.2",
|
|
76
76
|
"@empiricalrun/r2-uploader": "^0.3.9",
|
|
77
77
|
"@empiricalrun/test-run": "^0.10.9"
|
|
78
78
|
},
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"playwright": "1.53.2",
|
|
91
91
|
"serve-handler": "^6.1.6",
|
|
92
92
|
"ts-patch": "^3.3.0",
|
|
93
|
-
"@empiricalrun/shared-types": "0.
|
|
93
|
+
"@empiricalrun/shared-types": "0.8.0"
|
|
94
94
|
},
|
|
95
95
|
"scripts": {
|
|
96
96
|
"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/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/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/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/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/auth/
|
|
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/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/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/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/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/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/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/file-info/file-system.ts","./src/file-info/github.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/commit-and-create-pr.ts","./src/tools/delete-file.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/download-build.ts","./src/tools/index.ts","./src/tools/list-environments.ts","./src/tools/merge-conflicts.ts","./src/tools/run-test.ts","./src/tools/str_replace_editor.ts","./src/tools/test-gen-browser.ts","./src/tools/definitions/run-test.ts","./src/tools/definitions/str_replace_editor.ts","./src/tools/definitions/test-gen-browser.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-image/index.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/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/queue.ts","./src/types/handlebars.d.ts","./src/types/index.ts","./src/utils/SQSClient.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/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.ts"],"version":"5.8.3"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
declare class APIClient {
|
|
2
|
-
private appUrl;
|
|
3
|
-
constructor();
|
|
4
|
-
request<T>(endpoint: string, options?: RequestInit): Promise<Response & {
|
|
5
|
-
json(): Promise<T>;
|
|
6
|
-
}>;
|
|
7
|
-
private makeRequest;
|
|
8
|
-
ensureAuthenticated(): Promise<void>;
|
|
9
|
-
private refreshToken;
|
|
10
|
-
}
|
|
11
|
-
export declare const apiClient: APIClient;
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/auth/api-client.ts"],"names":[],"mappings":"AAQA,cAAM,SAAS;IACb,OAAO,CAAC,MAAM,CAAS;;IAMjB,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,GAAG;QAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;YA+B/B,WAAW;IAuBnB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;YAiB5B,YAAY;CA4C3B;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
package/dist/auth/api-client.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.apiClient = void 0;
|
|
4
|
-
const logger_1 = require("../logger");
|
|
5
|
-
const token_store_1 = require("./token-store");
|
|
6
|
-
class APIClient {
|
|
7
|
-
appUrl;
|
|
8
|
-
constructor() {
|
|
9
|
-
this.appUrl = process.env.DASHBOARD_DOMAIN || "https://dash.empirical.run";
|
|
10
|
-
}
|
|
11
|
-
async request(endpoint, options = {}) {
|
|
12
|
-
const apiKey = process.env.EMPIRICALRUN_API_KEY;
|
|
13
|
-
if (apiKey) {
|
|
14
|
-
return this.makeRequest(endpoint, options, apiKey);
|
|
15
|
-
}
|
|
16
|
-
await this.ensureAuthenticated();
|
|
17
|
-
const tokens = await (0, token_store_1.getStoredTokens)();
|
|
18
|
-
if (!tokens) {
|
|
19
|
-
throw new Error("Not authenticated. Please run the login command first.");
|
|
20
|
-
}
|
|
21
|
-
const response = await this.makeRequest(endpoint, options, tokens.access_token);
|
|
22
|
-
if (response.status === 401) {
|
|
23
|
-
logger_1.logger.debug("Access token expired, attempting to refresh...");
|
|
24
|
-
const refreshed = await this.refreshToken();
|
|
25
|
-
if (refreshed) {
|
|
26
|
-
const newTokens = await (0, token_store_1.getStoredTokens)();
|
|
27
|
-
if (newTokens) {
|
|
28
|
-
return this.makeRequest(endpoint, options, newTokens.access_token);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
throw new Error("Authentication failed. Please run the login command again.");
|
|
32
|
-
}
|
|
33
|
-
return response;
|
|
34
|
-
}
|
|
35
|
-
async makeRequest(endpoint, options, authToken) {
|
|
36
|
-
const url = endpoint.startsWith("http")
|
|
37
|
-
? endpoint
|
|
38
|
-
: `${this.appUrl}${endpoint}`;
|
|
39
|
-
// Don't set Content-Type for FormData (let browser set it automatically)
|
|
40
|
-
const headers = {
|
|
41
|
-
Authorization: `Bearer ${authToken}`,
|
|
42
|
-
...options.headers,
|
|
43
|
-
};
|
|
44
|
-
// Only set Content-Type to application/json if body is not FormData
|
|
45
|
-
if (!(options.body instanceof FormData)) {
|
|
46
|
-
headers["Content-Type"] = "application/json";
|
|
47
|
-
}
|
|
48
|
-
return fetch(url, {
|
|
49
|
-
...options,
|
|
50
|
-
headers,
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
async ensureAuthenticated() {
|
|
54
|
-
if (!(await (0, token_store_1.isAuthenticated)())) {
|
|
55
|
-
const tokens = await (0, token_store_1.getStoredTokens)();
|
|
56
|
-
if (!tokens) {
|
|
57
|
-
throw new Error("Not authenticated. Please run the login command first.");
|
|
58
|
-
}
|
|
59
|
-
// Token exists but is expired, try to refresh
|
|
60
|
-
const refreshed = await this.refreshToken();
|
|
61
|
-
if (!refreshed) {
|
|
62
|
-
throw new Error("Session expired. Please run the login command again.");
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
async refreshToken() {
|
|
67
|
-
const tokens = await (0, token_store_1.getStoredTokens)();
|
|
68
|
-
if (!tokens || !tokens.refresh_token) {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
// Use dashboard refresh endpoint instead of Supabase directly
|
|
73
|
-
const response = await fetch(`${this.appUrl}/api/cli/refresh`, {
|
|
74
|
-
method: "POST",
|
|
75
|
-
headers: {
|
|
76
|
-
"Content-Type": "application/json",
|
|
77
|
-
},
|
|
78
|
-
body: JSON.stringify({
|
|
79
|
-
refresh_token: tokens.refresh_token,
|
|
80
|
-
}),
|
|
81
|
-
});
|
|
82
|
-
if (!response.ok) {
|
|
83
|
-
const errorText = await response.text();
|
|
84
|
-
console.error("Token refresh failed:", errorText);
|
|
85
|
-
await (0, token_store_1.clearTokens)();
|
|
86
|
-
return false;
|
|
87
|
-
}
|
|
88
|
-
const data = await response.json();
|
|
89
|
-
// Store the new tokens (refresh token rotation means we get a new refresh token)
|
|
90
|
-
await (0, token_store_1.storeTokens)({
|
|
91
|
-
access_token: data.access_token,
|
|
92
|
-
refresh_token: data.refresh_token,
|
|
93
|
-
expires_at: data.expires_at,
|
|
94
|
-
user_id: data.user?.id || tokens.user_id,
|
|
95
|
-
user_email: data.user?.email || tokens.user_email,
|
|
96
|
-
});
|
|
97
|
-
logger_1.logger.debug("Access token refreshed successfully via dashboard");
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
console.error("Token refresh error:", error);
|
|
102
|
-
await (0, token_store_1.clearTokens)();
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
exports.apiClient = new APIClient();
|
package/dist/session/index.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
declare function getSessionDetails(): {
|
|
2
|
-
generationId: number | undefined;
|
|
3
|
-
sessionId: number | undefined;
|
|
4
|
-
testUrl: string | undefined;
|
|
5
|
-
version: string;
|
|
6
|
-
};
|
|
7
|
-
export declare function setSessionDetails({ sessionId, generationId, testCaseId, projectRepoName, }: {
|
|
8
|
-
sessionId: number;
|
|
9
|
-
generationId: number;
|
|
10
|
-
testCaseId: number;
|
|
11
|
-
projectRepoName: string;
|
|
12
|
-
}): void;
|
|
13
|
-
export declare function shouldStopSession(): Promise<boolean>;
|
|
14
|
-
export declare function getSessionState(): Promise<"started" | "completed" | "request_complete">;
|
|
15
|
-
export declare function endSession(): Promise<void>;
|
|
16
|
-
export { getSessionDetails };
|
|
17
|
-
export declare function updateSessionStatus(sessionId: number, payload: {
|
|
18
|
-
status: string;
|
|
19
|
-
}): Promise<void>;
|
|
20
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAmBA,iBAAS,iBAAiB;;;;;EAOzB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,GAChB,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,QAIA;AAED,wBAAsB,iBAAiB,qBAItC;AAED,wBAAsB,eAAe,0DA0BpC;AAED,wBAAsB,UAAU,kBAyB/B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;CAChB,iBAmBF"}
|
package/dist/session/index.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.setSessionDetails = setSessionDetails;
|
|
7
|
-
exports.shouldStopSession = shouldStopSession;
|
|
8
|
-
exports.getSessionState = getSessionState;
|
|
9
|
-
exports.endSession = endSession;
|
|
10
|
-
exports.getSessionDetails = getSessionDetails;
|
|
11
|
-
exports.updateSessionStatus = updateSessionStatus;
|
|
12
|
-
const package_json_1 = __importDefault(require("../../package.json"));
|
|
13
|
-
const env_1 = require("../utils/env");
|
|
14
|
-
const sessionDetails = {
|
|
15
|
-
sessionId: undefined,
|
|
16
|
-
version: package_json_1.default.version,
|
|
17
|
-
generationId: undefined,
|
|
18
|
-
testUrl: undefined,
|
|
19
|
-
};
|
|
20
|
-
const DASHBOARD_DOMAIN = process.env.DASHBOARD_DOMAIN ||
|
|
21
|
-
((0, env_1.isRunningOnCloud)() ? "https://dash.empirical.run" : "");
|
|
22
|
-
function getSessionDetails() {
|
|
23
|
-
return {
|
|
24
|
-
generationId: sessionDetails.generationId,
|
|
25
|
-
sessionId: sessionDetails.sessionId,
|
|
26
|
-
testUrl: sessionDetails.testUrl,
|
|
27
|
-
version: package_json_1.default.version,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function setSessionDetails({ sessionId, generationId, testCaseId, projectRepoName, }) {
|
|
31
|
-
sessionDetails.sessionId = sessionId;
|
|
32
|
-
sessionDetails.generationId = generationId;
|
|
33
|
-
sessionDetails.testUrl = `${process.env.DASHBOARD_DOMAIN ?? ""}/${projectRepoName}/test-cases/${testCaseId}`;
|
|
34
|
-
}
|
|
35
|
-
async function shouldStopSession() {
|
|
36
|
-
const sessionState = await getSessionState();
|
|
37
|
-
const shouldStopSession = sessionState !== "started";
|
|
38
|
-
return shouldStopSession;
|
|
39
|
-
}
|
|
40
|
-
async function getSessionState() {
|
|
41
|
-
// if there is no dashboard domain to connect to or session details missing, then continue the generation session.
|
|
42
|
-
if (!DASHBOARD_DOMAIN ||
|
|
43
|
-
!sessionDetails.sessionId ||
|
|
44
|
-
!sessionDetails.generationId) {
|
|
45
|
-
return "started";
|
|
46
|
-
}
|
|
47
|
-
const apiPath = `${DASHBOARD_DOMAIN}/api/sessions/${sessionDetails.sessionId}/generations/${sessionDetails.generationId}/state`;
|
|
48
|
-
const response = await fetch(apiPath, {
|
|
49
|
-
method: "GET",
|
|
50
|
-
headers: {
|
|
51
|
-
"Content-Type": "application/json",
|
|
52
|
-
Authorization: `Bearer ${process.env.EMPIRICALRUN_API_KEY}`,
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
const generationStateData = (await response.json());
|
|
56
|
-
// TODO: fix this heirarchy
|
|
57
|
-
return generationStateData.data.state.state;
|
|
58
|
-
}
|
|
59
|
-
async function endSession() {
|
|
60
|
-
if (!DASHBOARD_DOMAIN) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if (!sessionDetails.sessionId || !sessionDetails.generationId) {
|
|
64
|
-
console.warn("Session details missing, skipping session end");
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
const apiPath = `${DASHBOARD_DOMAIN}/api/sessions/${sessionDetails.sessionId}/generations/${sessionDetails.generationId}/state`;
|
|
68
|
-
try {
|
|
69
|
-
await fetch(apiPath, {
|
|
70
|
-
method: "POST",
|
|
71
|
-
headers: {
|
|
72
|
-
"Content-Type": "application/json",
|
|
73
|
-
Authorization: `Bearer ${process.env.EMPIRICALRUN_API_KEY}`,
|
|
74
|
-
},
|
|
75
|
-
body: JSON.stringify({
|
|
76
|
-
state: {
|
|
77
|
-
state: "completed",
|
|
78
|
-
},
|
|
79
|
-
}),
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
console.error("Failed to end session:", error);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
async function updateSessionStatus(sessionId, payload) {
|
|
87
|
-
if (!DASHBOARD_DOMAIN) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
try {
|
|
91
|
-
const body = JSON.stringify(payload);
|
|
92
|
-
await fetch(`${DASHBOARD_DOMAIN}/api/sessions/${sessionId}`, {
|
|
93
|
-
method: "PATCH",
|
|
94
|
-
headers: {
|
|
95
|
-
"Content-Type": "application/json",
|
|
96
|
-
Authorization: `Bearer ${process.env.EMPIRICALRUN_API_KEY}`,
|
|
97
|
-
},
|
|
98
|
-
body,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
console.error("Failed to update session status:", error);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { PendingToolCall } from "@empiricalrun/llm/chat";
|
|
2
|
-
import { SupportedChatModels, ToolDefinition } from "@empiricalrun/shared-types";
|
|
3
|
-
export declare class ToolCaller {
|
|
4
|
-
tools: ToolDefinition[];
|
|
5
|
-
selectedModel: SupportedChatModels;
|
|
6
|
-
branchName: string;
|
|
7
|
-
chatSessionId: number | null;
|
|
8
|
-
workerEnv?: Record<string, string>;
|
|
9
|
-
constructor({ chatSessionId, selectedModel, branchName, workerEnv, }: {
|
|
10
|
-
chatSessionId: number | null;
|
|
11
|
-
selectedModel: SupportedChatModels;
|
|
12
|
-
branchName: string;
|
|
13
|
-
workerEnv?: Record<string, string>;
|
|
14
|
-
});
|
|
15
|
-
schemas(): {
|
|
16
|
-
name: string;
|
|
17
|
-
description: string;
|
|
18
|
-
parameters: import("zod").ZodType;
|
|
19
|
-
}[];
|
|
20
|
-
sendToQueue(requestId: string, toolCalls: PendingToolCall[]): Promise<void>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EACL,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAcpC,qBAAa,UAAU;IACrB,KAAK,EAAE,cAAc,EAAE,CAAM;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACvB,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,SAAS,GACV,EAAE;QACD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,aAAa,EAAE,mBAAmB,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC;IAsBD,OAAO;;;;;IAID,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,EAAE,GAC3B,OAAO,CAAC,IAAI,CAAC;CAcjB"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ToolCaller = void 0;
|
|
4
|
-
const chat_1 = require("@empiricalrun/llm/chat");
|
|
5
|
-
const commit_and_create_pr_1 = require("../commit-and-create-pr");
|
|
6
|
-
const diagnosis_fetcher_1 = require("../diagnosis-fetcher");
|
|
7
|
-
const download_build_1 = require("../download-build");
|
|
8
|
-
const grep_1 = require("../grep");
|
|
9
|
-
const list_environments_1 = require("../list-environments");
|
|
10
|
-
const test_run_fetcher_1 = require("../test-run-fetcher");
|
|
11
|
-
const upgrade_packages_1 = require("../upgrade-packages");
|
|
12
|
-
const run_test_1 = require("./run-test");
|
|
13
|
-
const str_replace_editor_1 = require("./str_replace_editor");
|
|
14
|
-
const test_gen_browser_1 = require("./test-gen-browser");
|
|
15
|
-
const queue_1 = require("./utils/queue");
|
|
16
|
-
class ToolCaller {
|
|
17
|
-
tools = [];
|
|
18
|
-
selectedModel;
|
|
19
|
-
branchName;
|
|
20
|
-
chatSessionId;
|
|
21
|
-
workerEnv;
|
|
22
|
-
constructor({ chatSessionId, selectedModel, branchName, workerEnv, }) {
|
|
23
|
-
this.chatSessionId = chatSessionId;
|
|
24
|
-
this.selectedModel = selectedModel;
|
|
25
|
-
this.branchName = branchName;
|
|
26
|
-
this.workerEnv = workerEnv;
|
|
27
|
-
// TODO: Keep this list in sync with the ToolExecutor
|
|
28
|
-
this.tools = [
|
|
29
|
-
run_test_1.runTestTool,
|
|
30
|
-
test_gen_browser_1.generateTestWithBrowserAgent,
|
|
31
|
-
grep_1.grepTool,
|
|
32
|
-
test_run_fetcher_1.fetchTestRunReportTool,
|
|
33
|
-
diagnosis_fetcher_1.fetchDiagnosisReportTool,
|
|
34
|
-
commit_and_create_pr_1.createPullRequestTool,
|
|
35
|
-
list_environments_1.listEnvironmentsTool,
|
|
36
|
-
download_build_1.downloadBuildTool,
|
|
37
|
-
upgrade_packages_1.upgradePackagesTool,
|
|
38
|
-
];
|
|
39
|
-
if ((0, chat_1.getProviderForModel)(this.selectedModel) !== "claude") {
|
|
40
|
-
this.tools.push(...Object.values(str_replace_editor_1.textEditorTools));
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
schemas() {
|
|
44
|
-
return this.tools.map((tool) => tool.schema);
|
|
45
|
-
}
|
|
46
|
-
async sendToQueue(requestId, toolCalls) {
|
|
47
|
-
const queueUrl = (0, queue_1.getQueueUrl)(toolCalls, this.tools, this.workerEnv);
|
|
48
|
-
if (!queueUrl) {
|
|
49
|
-
throw new Error(`queueUrl is required for remote execution.`);
|
|
50
|
-
}
|
|
51
|
-
await (0, queue_1.sendToolRequestToRemoteQueue)(queueUrl, {
|
|
52
|
-
toolCalls,
|
|
53
|
-
requestId,
|
|
54
|
-
chatSessionId: this.chatSessionId,
|
|
55
|
-
selectedModel: this.selectedModel,
|
|
56
|
-
branchName: this.branchName,
|
|
57
|
-
workerEnv: this.workerEnv,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.ToolCaller = ToolCaller;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { PendingToolCall, ServicePayload, ToolDefinition } from "@empiricalrun/shared-types";
|
|
2
|
-
export declare function appendBranchNameToQueueUrl(queueUrl: string, branchName: string): string;
|
|
3
|
-
export declare function replaceRegionInUrl(url: string, newRegion: string): string;
|
|
4
|
-
export declare function getQueueUrl(toolCalls: PendingToolCall[], tools: ToolDefinition[], workerEnv?: Record<string, string>): string;
|
|
5
|
-
export declare function sendToolRequestToRemoteQueue(queueUrl: string, payload: ServicePayload & {
|
|
6
|
-
workerEnv?: Record<string, string>;
|
|
7
|
-
}): Promise<void>;
|
|
8
|
-
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/tools/definitions/utils/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACf,MAAM,4BAA4B,CAAC;AAIpC,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAOR;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOzE;AAgBD,wBAAgB,WAAW,CACzB,SAAS,EAAE,eAAe,EAAE,EAC5B,KAAK,EAAE,cAAc,EAAE,EACvB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,CAyBR;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,iBAiBjE"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.appendBranchNameToQueueUrl = appendBranchNameToQueueUrl;
|
|
4
|
-
exports.replaceRegionInUrl = replaceRegionInUrl;
|
|
5
|
-
exports.getQueueUrl = getQueueUrl;
|
|
6
|
-
exports.sendToolRequestToRemoteQueue = sendToolRequestToRemoteQueue;
|
|
7
|
-
const SQSClient_1 = require("../../../utils/SQSClient");
|
|
8
|
-
function appendBranchNameToQueueUrl(queueUrl, branchName) {
|
|
9
|
-
const cleanBranchName = branchName.replace(/[/.]/g, "-");
|
|
10
|
-
const suffix = cleanBranchName.slice(0, 50);
|
|
11
|
-
const parts = queueUrl.split("/");
|
|
12
|
-
const queueName = parts.pop();
|
|
13
|
-
const queueNameWithoutFifo = queueName?.replace(/\.fifo$/, "");
|
|
14
|
-
return `${parts.join("/")}/${queueNameWithoutFifo}-${suffix}.fifo`;
|
|
15
|
-
}
|
|
16
|
-
function replaceRegionInUrl(url, newRegion) {
|
|
17
|
-
const parsedUrl = new URL(url);
|
|
18
|
-
parsedUrl.hostname = parsedUrl.hostname.replace(/\.([a-z0-9-]+)\.amazonaws\.com$/, `.${newRegion}.amazonaws.com`);
|
|
19
|
-
return parsedUrl.toString();
|
|
20
|
-
}
|
|
21
|
-
function buildQueueUrlsForPreview(baseQueueUrl) {
|
|
22
|
-
const branch = process.env.VERCEL_GIT_COMMIT_REF;
|
|
23
|
-
if (!branch) {
|
|
24
|
-
throw new Error("VERCEL_GIT_COMMIT_REF is not set");
|
|
25
|
-
}
|
|
26
|
-
const updatedRegionForQueue = replaceRegionInUrl(baseQueueUrl, process.env.AWS_REGION);
|
|
27
|
-
const queueUrl = appendBranchNameToQueueUrl(updatedRegionForQueue, branch);
|
|
28
|
-
console.log("queueUrl for preview", queueUrl);
|
|
29
|
-
return queueUrl;
|
|
30
|
-
}
|
|
31
|
-
function getQueueUrl(toolCalls, tools, workerEnv) {
|
|
32
|
-
const needsBrowser = toolCalls.some((toolCall) => tools.find((t) => t.schema.name === toolCall.name)?.needsBrowser);
|
|
33
|
-
const browserSwsQueueUrl = workerEnv?.TOOL_EXECUTION_SQS_URL_BROWSER ||
|
|
34
|
-
process.env.TOOL_EXECUTION_SQS_URL_BROWSER;
|
|
35
|
-
const baseSqsQueueUrl = workerEnv?.TOOL_EXECUTION_SQS_URL || process.env.TOOL_EXECUTION_SQS_URL;
|
|
36
|
-
const baseQueueUrl = needsBrowser ? browserSwsQueueUrl : baseSqsQueueUrl;
|
|
37
|
-
if (!baseQueueUrl) {
|
|
38
|
-
throw new Error("No queue URL found");
|
|
39
|
-
}
|
|
40
|
-
const vercelEnv = workerEnv?.VERCEL_ENV || process.env.VERCEL_ENV || "";
|
|
41
|
-
if (vercelEnv !== "preview") {
|
|
42
|
-
return baseQueueUrl;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
return buildQueueUrlsForPreview(baseQueueUrl);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
async function sendToolRequestToRemoteQueue(queueUrl, payload) {
|
|
49
|
-
const { workerEnv } = payload;
|
|
50
|
-
const region = workerEnv?.AWS_REGION || process.env.AWS_REGION;
|
|
51
|
-
const accessKeyId = workerEnv?.AWS_ACCESS_KEY_ID || process.env.AWS_ACCESS_KEY_ID;
|
|
52
|
-
const secretAccessKey = workerEnv?.AWS_SECRET_ACCESS_KEY || process.env.AWS_SECRET_ACCESS_KEY;
|
|
53
|
-
if (!region || !accessKeyId || !secretAccessKey) {
|
|
54
|
-
throw new Error("AWS_REGION, AWS_ACCESS_KEY_ID, and AWS_SECRET_ACCESS_KEY must be set");
|
|
55
|
-
}
|
|
56
|
-
const sqs = new SQSClient_1.SQSClient(region, accessKeyId, secretAccessKey);
|
|
57
|
-
await sqs.sendMessage(queueUrl, payload);
|
|
58
|
-
}
|