@empiricalrun/test-gen 0.68.0 → 0.69.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 +17 -0
- package/dist/agent/chat/exports.d.ts +8 -8
- package/dist/agent/chat/exports.d.ts.map +1 -1
- package/dist/agent/chat/exports.js +10 -7
- package/dist/agent/chat/index.d.ts.map +1 -1
- package/dist/agent/chat/index.js +5 -2
- package/dist/agent/chat/state.d.ts +4 -2
- package/dist/agent/chat/state.d.ts.map +1 -1
- package/dist/agent/chat/state.js +10 -2
- package/dist/agent/chat/utils.d.ts +5 -1
- package/dist/agent/chat/utils.d.ts.map +1 -1
- package/dist/agent/chat/utils.js +22 -0
- package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.d.ts.map +1 -1
- package/dist/agent/cua/pw-codegen/pw-pause/for-recorder.js +24 -3
- package/dist/agent/cua/pw-codegen/pw-pause/patch.d.ts.map +1 -1
- package/dist/agent/cua/pw-codegen/pw-pause/patch.js +4 -6
- package/dist/auth/api-client.d.ts.map +1 -1
- package/dist/auth/api-client.js +3 -2
- package/dist/bin/index.js +10 -0
- package/dist/bin/setup.d.ts +4 -0
- package/dist/bin/setup.d.ts.map +1 -0
- package/dist/bin/setup.js +86 -0
- package/dist/bin/utils/index.d.ts +1 -0
- package/dist/bin/utils/index.d.ts.map +1 -1
- package/dist/file/server.js +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +11 -0
- package/dist/recorder/index.d.ts.map +1 -1
- package/dist/recorder/index.js +19 -5
- package/dist/recorder/request.d.ts.map +1 -1
- package/dist/recorder/request.js +2 -3
- package/dist/recorder/temp-files.d.ts.map +1 -1
- package/dist/recorder/temp-files.js +5 -4
- package/dist/recorder/upload.d.ts.map +1 -1
- package/dist/recorder/upload.js +0 -1
- package/package.json +6 -4
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @empiricalrun/test-gen
|
|
2
2
|
|
|
3
|
+
## 0.69.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 64fa486: feat: user message can have video/webm attachments
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- a2cb0ab: feat: support video attachments for recorder requests
|
|
12
|
+
- b533712: chore: remove verbose logs, hide pw glass pane
|
|
13
|
+
- b9571e9: feat: cli command to clone and setup repo
|
|
14
|
+
- Updated dependencies [a2cb0ab]
|
|
15
|
+
- Updated dependencies [64fa486]
|
|
16
|
+
- Updated dependencies [b533712]
|
|
17
|
+
- @empiricalrun/llm@0.19.0
|
|
18
|
+
- @empiricalrun/test-run@0.10.4
|
|
19
|
+
|
|
3
20
|
## 0.68.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export {
|
|
8
|
-
export
|
|
1
|
+
export type { FileInfo } from "../../types";
|
|
2
|
+
export { chatAgentLoop } from "./agent-loop";
|
|
3
|
+
export { defaultModel } from "./models";
|
|
4
|
+
export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages, fetchToolCallAvailability, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, processAttachments, } from "./state";
|
|
5
|
+
export type { ReporterFunction } from "./types";
|
|
6
|
+
export { extractAttachments } from "./utils";
|
|
7
|
+
export type { IChatModel } from "@empiricalrun/llm/chat";
|
|
8
|
+
export { createChatModel, SUPPORTED_CHAT_MODELS } from "@empiricalrun/llm/chat";
|
|
9
9
|
//# sourceMappingURL=exports.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EACL,kCAAkC,EAClC,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SUPPORTED_CHAT_MODELS = exports.
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "createChatModel", { enumerable: true, get: function () { return chat_1.createChatModel; } });
|
|
6
|
-
Object.defineProperty(exports, "SUPPORTED_CHAT_MODELS", { enumerable: true, get: function () { return chat_1.SUPPORTED_CHAT_MODELS; } });
|
|
7
|
-
const agent_loop_1 = require("./agent-loop");
|
|
3
|
+
exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = exports.extractAttachments = exports.processAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallAvailability = exports.createChatStateForMessages = exports.createChatState = exports.chatStateFromModel = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = exports.defaultModel = exports.chatAgentLoop = void 0;
|
|
4
|
+
var agent_loop_1 = require("./agent-loop");
|
|
8
5
|
Object.defineProperty(exports, "chatAgentLoop", { enumerable: true, get: function () { return agent_loop_1.chatAgentLoop; } });
|
|
9
|
-
|
|
6
|
+
var models_1 = require("./models");
|
|
10
7
|
Object.defineProperty(exports, "defaultModel", { enumerable: true, get: function () { return models_1.defaultModel; } });
|
|
11
|
-
|
|
8
|
+
var state_1 = require("./state");
|
|
12
9
|
Object.defineProperty(exports, "CHAT_STATE_VERSIONS_MIGRATIONS_MAP", { enumerable: true, get: function () { return state_1.CHAT_STATE_VERSIONS_MIGRATIONS_MAP; } });
|
|
13
10
|
Object.defineProperty(exports, "chatStateFromModel", { enumerable: true, get: function () { return state_1.chatStateFromModel; } });
|
|
14
11
|
Object.defineProperty(exports, "createChatState", { enumerable: true, get: function () { return state_1.createChatState; } });
|
|
@@ -17,3 +14,9 @@ Object.defineProperty(exports, "fetchToolCallAvailability", { enumerable: true,
|
|
|
17
14
|
Object.defineProperty(exports, "getLatestDownloadBuildUrl", { enumerable: true, get: function () { return state_1.getLatestDownloadBuildUrl; } });
|
|
18
15
|
Object.defineProperty(exports, "LATEST_CHAT_STATE_VERSION", { enumerable: true, get: function () { return state_1.LATEST_CHAT_STATE_VERSION; } });
|
|
19
16
|
Object.defineProperty(exports, "migrateChatState", { enumerable: true, get: function () { return state_1.migrateChatState; } });
|
|
17
|
+
Object.defineProperty(exports, "processAttachments", { enumerable: true, get: function () { return state_1.processAttachments; } });
|
|
18
|
+
var utils_1 = require("./utils");
|
|
19
|
+
Object.defineProperty(exports, "extractAttachments", { enumerable: true, get: function () { return utils_1.extractAttachments; } });
|
|
20
|
+
var chat_1 = require("@empiricalrun/llm/chat");
|
|
21
|
+
Object.defineProperty(exports, "createChatModel", { enumerable: true, get: function () { return chat_1.createChatModel; } });
|
|
22
|
+
Object.defineProperty(exports, "SUPPORTED_CHAT_MODELS", { enumerable: true, get: function () { return chat_1.SUPPORTED_CHAT_MODELS; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAyCpC,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAwBA;AAED,wBAAsB,kBAAkB,CAAC,EACvC,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GACrB,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,iBA+HA;AAuBD,wBAAsB,wBAAwB,CAAC,EAC7C,aAAa,EACb,aAAa,GACd,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;CACvB,iBA6DA"}
|
package/dist/agent/chat/index.js
CHANGED
|
@@ -12,6 +12,7 @@ const file_tree_1 = require("../../utils/file-tree");
|
|
|
12
12
|
const git_1 = require("../../utils/git");
|
|
13
13
|
const agent_loop_1 = require("./agent-loop");
|
|
14
14
|
const state_1 = require("./state");
|
|
15
|
+
const utils_1 = require("./utils");
|
|
15
16
|
const DASHBOARD_DOMAIN = process.env.DASHBOARD_DOMAIN || "https://dash.empirical.run";
|
|
16
17
|
function stopCriteria(userPrompt) {
|
|
17
18
|
return userPrompt?.toLowerCase() === "stop";
|
|
@@ -54,7 +55,7 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
|
|
|
54
55
|
let chatModel = (0, chat_1.createChatModel)(messagesLoadedFromDisk, selectedModel);
|
|
55
56
|
chatModel.validateEnvVarsForAuth();
|
|
56
57
|
if (initialPromptContent && chatModel.messages.length === 0) {
|
|
57
|
-
chatModel.pushUserMessage(initialPromptContent);
|
|
58
|
+
chatModel.pushUserMessage(initialPromptContent, []);
|
|
58
59
|
chatModel.askUserForInput = false;
|
|
59
60
|
}
|
|
60
61
|
else if (initialPromptContent && chatModel.messages.length > 0) {
|
|
@@ -116,7 +117,9 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
|
|
|
116
117
|
throw e;
|
|
117
118
|
}
|
|
118
119
|
if (!stopCriteria(userPrompt)) {
|
|
119
|
-
|
|
120
|
+
const { text, attachments } = (0, utils_1.extractAttachments)(userPrompt);
|
|
121
|
+
const processed = await chatModel.processAttachments(attachments);
|
|
122
|
+
chatModel.pushUserMessage(text, processed);
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
125
|
else {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { IChatModel } from "@empiricalrun/llm/chat";
|
|
2
|
-
import { CanonicalMessage, ChatState, ChatStateError, SupportedChatModels } from "@empiricalrun/shared-types";
|
|
2
|
+
import { Attachment, CanonicalMessage, ChatState, ChatStateError, ProcessedAttachment, SupportedChatModels } from "@empiricalrun/shared-types";
|
|
3
3
|
export declare const CHAT_STATE_VERSIONS_MIGRATIONS_MAP: Record<string, (state: any) => any>;
|
|
4
4
|
export declare const LATEST_CHAT_STATE_VERSION = "0.1";
|
|
5
5
|
export declare const CHAT_STATE_PATH: string;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function processAttachments(attachments: Attachment[], selectedModel: SupportedChatModels): Promise<ProcessedAttachment[]>;
|
|
7
|
+
export declare function createChatState({ userPrompt, attachments, existingState, selectedModel, error, }: {
|
|
7
8
|
userPrompt: string | undefined;
|
|
9
|
+
attachments: ProcessedAttachment[];
|
|
8
10
|
existingState: ChatState | undefined;
|
|
9
11
|
selectedModel: SupportedChatModels;
|
|
10
12
|
error: ChatStateError | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AA+BpC,eAAO,MAAM,kCAAkC,EAAE,MAAM,CACrD,MAAM,EACN,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAIpB,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,eAAO,MAAM,eAAe,QAI3B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,aAAa,EACb,aAAa,EACb,KAAK,GACN,EAAE;IACD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,aAYA;AAED,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,aAAa,EACb,eAAe,EACf,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,GAAG,CAAC;IACd,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,GAAG,SAAS,CASZ;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EACpC,SAAS,EACT,aAAa,EACb,KAAK,GACN,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,aAOA;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,SAAS,CAarD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,SAAS,CAqBzD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAClB,aAAa,EAAE,mBAAmB,EAClC,eAAe,EAAE,OAAO,EACxB,KAAK,EAAE,cAAc,GAAG,IAAI,QAgB7B;AA2BD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,gBAAgB,EAAE;;;EAe7B"}
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,UAAU,EACX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AA+BpC,eAAO,MAAM,kCAAkC,EAAE,MAAM,CACrD,MAAM,EACN,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAIpB,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,eAAO,MAAM,eAAe,QAI3B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,UAAU,EAAE,EACzB,aAAa,EAAE,mBAAmB,GACjC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC;AAED,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,KAAK,GACN,EAAE;IACD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,aAYA;AAED,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,aAAa,EACb,eAAe,EACf,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,GAAG,CAAC;IACd,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,GAAG,SAAS,CASZ;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EACpC,SAAS,EACT,aAAa,EACb,KAAK,GACN,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,aAOA;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,SAAS,CAarD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,SAAS,CAqBzD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAClB,aAAa,EAAE,mBAAmB,EAClC,eAAe,EAAE,OAAO,EACxB,KAAK,EAAE,cAAc,GAAG,IAAI,QAgB7B;AA2BD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,gBAAgB,EAAE;;;EAe7B"}
|
package/dist/agent/chat/state.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.CHAT_STATE_PATH = exports.LATEST_CHAT_STATE_VERSION = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = void 0;
|
|
7
|
+
exports.processAttachments = processAttachments;
|
|
7
8
|
exports.createChatState = createChatState;
|
|
8
9
|
exports.createChatStateForMessages = createChatStateForMessages;
|
|
9
10
|
exports.chatStateFromModel = chatStateFromModel;
|
|
@@ -42,11 +43,18 @@ exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = {
|
|
|
42
43
|
};
|
|
43
44
|
exports.LATEST_CHAT_STATE_VERSION = "0.1";
|
|
44
45
|
exports.CHAT_STATE_PATH = path_1.default.join(process.cwd(), ".empiricalrun", "last-chat.json");
|
|
45
|
-
function
|
|
46
|
+
async function processAttachments(attachments, selectedModel) {
|
|
47
|
+
const chatModel = (0, chat_1.createChatModel)([], selectedModel);
|
|
48
|
+
if (attachments.length === 0) {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
return chatModel.processAttachments(attachments);
|
|
52
|
+
}
|
|
53
|
+
function createChatState({ userPrompt, attachments, existingState, selectedModel, error, }) {
|
|
46
54
|
const messages = existingState?.messages || [];
|
|
47
55
|
const chatModel = (0, chat_1.createChatModel)(messages, selectedModel);
|
|
48
56
|
if (userPrompt) {
|
|
49
|
-
chatModel.pushUserMessage(userPrompt);
|
|
57
|
+
chatModel.pushUserMessage(userPrompt, attachments);
|
|
50
58
|
}
|
|
51
59
|
return createChatStateForMessages({
|
|
52
60
|
messages: chatModel.messages,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TraceClient } from "@empiricalrun/llm";
|
|
2
2
|
import { IChatModel } from "@empiricalrun/llm/chat";
|
|
3
|
-
import { SupportedChatModels } from "@empiricalrun/shared-types";
|
|
3
|
+
import { Attachment, SupportedChatModels } from "@empiricalrun/shared-types";
|
|
4
4
|
import { ReporterFunction } from "./types";
|
|
5
5
|
export declare const log: (...args: any[]) => void;
|
|
6
6
|
export declare function getModelName(model: string): string;
|
|
@@ -12,4 +12,8 @@ export declare function handleAgentError({ context, error, chatModel, selectedMo
|
|
|
12
12
|
reporter: ReporterFunction;
|
|
13
13
|
trace?: TraceClient;
|
|
14
14
|
}): Promise<void>;
|
|
15
|
+
export declare function extractAttachments(userPrompt: string): {
|
|
16
|
+
text: string;
|
|
17
|
+
attachments: Attachment[];
|
|
18
|
+
};
|
|
15
19
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAuB,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAuB,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EACL,UAAU,EAEV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,GAAG,EAAE,SAEjC,CAAC;AAcF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,KAAK,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAC3B,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB,iBAsBA;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAsBA"}
|
package/dist/agent/chat/utils.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.log = void 0;
|
|
4
4
|
exports.getModelName = getModelName;
|
|
5
5
|
exports.handleAgentError = handleAgentError;
|
|
6
|
+
exports.extractAttachments = extractAttachments;
|
|
6
7
|
const chat_1 = require("@empiricalrun/llm/chat");
|
|
7
8
|
const picocolors_1 = require("picocolors");
|
|
8
9
|
const state_1 = require("./state");
|
|
@@ -48,3 +49,24 @@ async function handleAgentError({ context, error, chatModel, selectedModel, repo
|
|
|
48
49
|
logError(context, error, trace);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
52
|
+
function extractAttachments(userPrompt) {
|
|
53
|
+
const attachments = [];
|
|
54
|
+
const urlPattern = /\[\[(https?:\/\/[^\]]+)\]\]/g;
|
|
55
|
+
let match;
|
|
56
|
+
while ((match = urlPattern.exec(userPrompt)) !== null) {
|
|
57
|
+
const name = match[1].split("/").pop();
|
|
58
|
+
if (!name || !name.endsWith(".webm")) {
|
|
59
|
+
throw new Error(`Invalid attachment name: ${name}. Only .webm files are supported.`);
|
|
60
|
+
}
|
|
61
|
+
attachments.push({
|
|
62
|
+
contentType: "video/webm",
|
|
63
|
+
name,
|
|
64
|
+
url: match[1],
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const text = userPrompt.replace(urlPattern, "").trim();
|
|
68
|
+
return {
|
|
69
|
+
text,
|
|
70
|
+
attachments,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-recorder.d.ts","sourceRoot":"","sources":["../../../../../src/agent/cua/pw-codegen/pw-pause/for-recorder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"for-recorder.d.ts","sourceRoot":"","sources":["../../../../../src/agent/cua/pw-codegen/pw-pause/for-recorder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,iCAAiC;IAO1C,OAAO,CAAC,eAAe;IANzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,iBAAiB,CAAqB;gBAGpC,eAAe,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC;YAKtD,QAAQ;IAWhB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrC,sBAAsB,CAAC,IAAI,EAAE,IAAI;CAmCxC"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.PlaywrightPauseCodegenForRecorder = void 0;
|
|
7
7
|
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const logger_1 = require("../../../../logger");
|
|
8
9
|
const ipc_1 = require("./ipc");
|
|
9
10
|
class PlaywrightPauseCodegenForRecorder {
|
|
10
11
|
sourcesCallback;
|
|
@@ -19,7 +20,9 @@ class PlaywrightPauseCodegenForRecorder {
|
|
|
19
20
|
async saveCode(code) {
|
|
20
21
|
const generatedCode = code.map((c) => c.actions.join("\n")).join("\n");
|
|
21
22
|
if (generatedCode) {
|
|
22
|
-
console.log(
|
|
23
|
+
// console.log(
|
|
24
|
+
// `[PlaywrightPauseCodegen] Received code from Playwright: ${generatedCode}`,
|
|
25
|
+
// );
|
|
23
26
|
this.codeForLastAction = generatedCode;
|
|
24
27
|
await this.sourcesCallback(code);
|
|
25
28
|
}
|
|
@@ -36,13 +39,20 @@ class PlaywrightPauseCodegenForRecorder {
|
|
|
36
39
|
await new Promise((resolve) => {
|
|
37
40
|
this.server = app.listen(this.port, () => resolve());
|
|
38
41
|
});
|
|
39
|
-
|
|
42
|
+
logger_1.logger.debug(`Server started on port ${this.port}`);
|
|
40
43
|
// Start page.pause experience in the page
|
|
41
44
|
this.page = page;
|
|
42
45
|
await this.startPlaywrightCodegen(page);
|
|
43
46
|
}
|
|
44
47
|
async startPlaywrightCodegen(page) {
|
|
45
48
|
// Similar to the same name method in the main codegen
|
|
49
|
+
/**
|
|
50
|
+
* x-pw-glass
|
|
51
|
+
* # inside shadow DOM (closed)
|
|
52
|
+
* |----> x-pw-overlay (controls)
|
|
53
|
+
* |----> x-pw-highlight (red highlight)
|
|
54
|
+
* |----> x-pw-tooltip
|
|
55
|
+
*/
|
|
46
56
|
const timerPromise = new Promise((resolve) => {
|
|
47
57
|
setTimeout(resolve, 1000);
|
|
48
58
|
});
|
|
@@ -51,11 +61,22 @@ class PlaywrightPauseCodegenForRecorder {
|
|
|
51
61
|
const evaluatePromise = page.evaluate(() => {
|
|
52
62
|
// @ts-ignore
|
|
53
63
|
console.log(window["__pw_recorderSetMode"]("recording"));
|
|
64
|
+
// Remove playwright's glass pane
|
|
54
65
|
const glassPane = document.querySelector("x-pw-glass");
|
|
55
66
|
if (glassPane) {
|
|
56
|
-
glassPane.
|
|
67
|
+
const styles = glassPane.getAttribute("style") || "";
|
|
68
|
+
glassPane.setAttribute("style", styles + "; display: none;");
|
|
57
69
|
}
|
|
58
70
|
});
|
|
71
|
+
await page.addInitScript(() => {
|
|
72
|
+
setInterval(() => {
|
|
73
|
+
const glassPane = document.querySelector("x-pw-glass");
|
|
74
|
+
if (glassPane) {
|
|
75
|
+
const styles = glassPane.getAttribute("style") || "";
|
|
76
|
+
glassPane.setAttribute("style", styles + "; display: none;");
|
|
77
|
+
}
|
|
78
|
+
}, 300);
|
|
79
|
+
});
|
|
59
80
|
await Promise.all([pausePromise, evaluatePromise]);
|
|
60
81
|
}
|
|
61
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../../../src/agent/cua/pw-codegen/pw-pause/patch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../../../src/agent/cua/pw-codegen/pw-pause/patch.ts"],"names":[],"mappings":"AAoBA,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,iBAehE;AAED,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,mBAgB5D;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,+BAgB/C;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,CA8BA;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,gCAkB1D;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,iBAoB3D;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,iBAGxD;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,iBAAiB,EAAE,MAAM,EACzB,IAAI,EAAE,MAAM,iBA2Bb"}
|
|
@@ -14,6 +14,7 @@ exports.patchPwCode = patchPwCode;
|
|
|
14
14
|
const child_process_1 = require("child_process");
|
|
15
15
|
const fs_1 = __importDefault(require("fs"));
|
|
16
16
|
const path_1 = __importDefault(require("path"));
|
|
17
|
+
const logger_1 = require("../../../../logger");
|
|
17
18
|
const ipc_1 = require("./ipc");
|
|
18
19
|
/**
|
|
19
20
|
* Helpful commands for debugging:
|
|
@@ -59,15 +60,12 @@ async function runNpmList(repoDir) {
|
|
|
59
60
|
const output = (0, child_process_1.execSync)("npm ls playwright-core --json --long --production=false", {
|
|
60
61
|
cwd: repoDir,
|
|
61
62
|
encoding: "utf-8",
|
|
63
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
62
64
|
});
|
|
63
65
|
return output;
|
|
64
66
|
}
|
|
65
67
|
catch (error) {
|
|
66
|
-
|
|
67
|
-
console.error("Error code:", error.status);
|
|
68
|
-
console.error("Signal:", error.signal);
|
|
69
|
-
console.error("Stdout:", error.stdout?.toString());
|
|
70
|
-
console.error("Stderr:", error.stderr?.toString());
|
|
68
|
+
logger_1.logger.error(`npm ls failed with error: ${error.message} and status: ${error.status}`);
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
71
|
function getPlaywrightCoreFromNpmList(output) {
|
|
@@ -167,5 +165,5 @@ async function patchPwCode(pwVersion, pathToRecorderApp, port) {
|
|
|
167
165
|
}`;
|
|
168
166
|
const newCode = currentFileContents.replace(original, replacement);
|
|
169
167
|
fs_1.default.writeFileSync(pathToRecorderApp, newCode);
|
|
170
|
-
|
|
168
|
+
logger_1.logger.debug(`Patched Playwright recorder app at ${pathToRecorderApp}`);
|
|
171
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/auth/api-client.ts"],"names":[],"mappings":"
|
|
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,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC;YA2BN,WAAW;YAuBX,mBAAmB;YAiBnB,YAAY;CA4C3B;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
package/dist/auth/api-client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.apiClient = void 0;
|
|
4
|
+
const logger_1 = require("../logger");
|
|
4
5
|
const token_store_1 = require("./token-store");
|
|
5
6
|
class APIClient {
|
|
6
7
|
appUrl;
|
|
@@ -15,7 +16,7 @@ class APIClient {
|
|
|
15
16
|
}
|
|
16
17
|
const response = await this.makeRequest(endpoint, options, tokens.access_token);
|
|
17
18
|
if (response.status === 401) {
|
|
18
|
-
|
|
19
|
+
logger_1.logger.debug("Access token expired, attempting to refresh...");
|
|
19
20
|
const refreshed = await this.refreshToken();
|
|
20
21
|
if (refreshed) {
|
|
21
22
|
const newTokens = await (0, token_store_1.getStoredTokens)();
|
|
@@ -89,7 +90,7 @@ class APIClient {
|
|
|
89
90
|
user_id: data.user?.id || tokens.user_id,
|
|
90
91
|
user_email: data.user?.email || tokens.user_email,
|
|
91
92
|
});
|
|
92
|
-
|
|
93
|
+
logger_1.logger.debug("Access token refreshed successfully via dashboard");
|
|
93
94
|
return true;
|
|
94
95
|
}
|
|
95
96
|
catch (error) {
|
package/dist/bin/index.js
CHANGED
|
@@ -23,6 +23,7 @@ const reporter_1 = require("../reporter");
|
|
|
23
23
|
const session_1 = require("../session");
|
|
24
24
|
const test_build_1 = require("../test-build");
|
|
25
25
|
const logger_1 = require("./logger");
|
|
26
|
+
const setup_1 = require("./setup");
|
|
26
27
|
const utils_2 = require("./utils");
|
|
27
28
|
const scenarios_1 = require("./utils/scenarios");
|
|
28
29
|
dotenv_1.default.config({
|
|
@@ -302,6 +303,15 @@ async function main() {
|
|
|
302
303
|
});
|
|
303
304
|
process.exit(0);
|
|
304
305
|
});
|
|
306
|
+
program
|
|
307
|
+
.command("setup")
|
|
308
|
+
.description("Clone a repository from your projects")
|
|
309
|
+
.option("--repo-name <string>", "Name of the repository to clone")
|
|
310
|
+
.action(async (opts) => {
|
|
311
|
+
const options = await (0, utils_2.validateAndCompleteCliOptions)(opts, ["repoName"]);
|
|
312
|
+
await (0, setup_1.runSetup)({ repoName: options.repoName });
|
|
313
|
+
process.exit(0);
|
|
314
|
+
});
|
|
305
315
|
program
|
|
306
316
|
.command("legacy")
|
|
307
317
|
.description("Run the legacy workflows")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/bin/setup.ts"],"names":[],"mappings":"AA+EA,wBAAsB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,iBA2BhE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
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.runSetup = runSetup;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const util_1 = require("util");
|
|
11
|
+
const api_client_1 = require("../auth/api-client");
|
|
12
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
13
|
+
async function cloneRepository(cloneUrl, repoName) {
|
|
14
|
+
const targetDir = path_1.default.join(process.cwd(), repoName);
|
|
15
|
+
if (fs_1.default.existsSync(targetDir)) {
|
|
16
|
+
console.error(`Directory '${repoName}' already exists in current location`);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
console.log(`📥 Cloning repository to ./${repoName}...`);
|
|
20
|
+
const { stderr } = await execAsync(`git clone ${cloneUrl} ${repoName}`, {
|
|
21
|
+
cwd: process.cwd(),
|
|
22
|
+
});
|
|
23
|
+
if (stderr && !stderr.includes("Cloning into")) {
|
|
24
|
+
console.error(`Git clone error: ${stderr}`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
console.log(`✅ Repository cloned successfully to ./${repoName}`);
|
|
28
|
+
return targetDir;
|
|
29
|
+
}
|
|
30
|
+
async function installDependencies(targetDir) {
|
|
31
|
+
console.log(`📦 Installing dependencies...`);
|
|
32
|
+
try {
|
|
33
|
+
const { stderr: installStderr } = await execAsync(`npm install`, {
|
|
34
|
+
cwd: targetDir,
|
|
35
|
+
});
|
|
36
|
+
if (installStderr && !installStderr.toLowerCase().includes("npm warn")) {
|
|
37
|
+
console.error(`npm install error: ${installStderr}`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
console.log(`✅ Dependencies installed successfully`);
|
|
41
|
+
}
|
|
42
|
+
catch (installError) {
|
|
43
|
+
console.error(`❌ Failed to install dependencies: ${installError.message}`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function installPlaywrightBrowser(targetDir) {
|
|
48
|
+
console.log(`🎭 Installing Playwright browser...`);
|
|
49
|
+
try {
|
|
50
|
+
const { stderr: playwrightStderr } = await execAsync(`npx playwright install chromium --with-deps`, {
|
|
51
|
+
cwd: targetDir,
|
|
52
|
+
});
|
|
53
|
+
if (playwrightStderr && !playwrightStderr.includes("Installing")) {
|
|
54
|
+
console.error(`Playwright install error: ${playwrightStderr}`);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
console.log(`✅ Playwright browser installed successfully`);
|
|
58
|
+
}
|
|
59
|
+
catch (playwrightError) {
|
|
60
|
+
console.error(`❌ Failed to install Playwright browser: ${playwrightError.message}`);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function runSetup({ repoName }) {
|
|
65
|
+
try {
|
|
66
|
+
console.log(`🔍 Fetching details for repository: ${repoName}`);
|
|
67
|
+
const response = await api_client_1.apiClient.request(`/api/projects/clone?project_repo_name=${repoName}`);
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
if (response.status === 404) {
|
|
70
|
+
throw new Error(`Repository '${repoName}' not found in your projects`);
|
|
71
|
+
}
|
|
72
|
+
throw new Error(`Failed to fetch repository details: ${response.statusText}`);
|
|
73
|
+
}
|
|
74
|
+
const { data: repoDetails } = await response.json();
|
|
75
|
+
const { clone_url } = repoDetails;
|
|
76
|
+
console.log(`📂 Clone URL: ${clone_url}`);
|
|
77
|
+
const targetDir = await cloneRepository(clone_url, repoName);
|
|
78
|
+
await installDependencies(targetDir);
|
|
79
|
+
await installPlaywrightBrowser(targetDir);
|
|
80
|
+
console.log(`\n🎉 Setup complete! Repository is ready at ./${repoName}`);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error(`❌ Setup failed: ${error.message}`);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -6,6 +6,7 @@ export interface CLIOptions {
|
|
|
6
6
|
file?: string;
|
|
7
7
|
prompt?: string;
|
|
8
8
|
suites?: string;
|
|
9
|
+
repoName?: string;
|
|
9
10
|
}
|
|
10
11
|
export declare function validateAndCompleteCliOptions(options: CLIOptions, requiredFields?: string[]): Promise<CLIOptions>;
|
|
11
12
|
export declare function printBanner(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKjE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAgBjE,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKjE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAgBjE,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,UAAU,EACnB,cAAc,GAAE,MAAM,EAA+B,GACpD,OAAO,CAAC,UAAU,CAAC,CAqDrB;AAeD,wBAAsB,WAAW,kBAgDhC"}
|
package/dist/file/server.js
CHANGED
|
@@ -45,7 +45,10 @@ class FileServiceServer {
|
|
|
45
45
|
app.post("/codegen-sources", async (req) => {
|
|
46
46
|
const payload = req.body;
|
|
47
47
|
this.codegenSources = payload.map((c) => c.actions.join("\n")).join("\n");
|
|
48
|
-
console.log(
|
|
48
|
+
// console.log(
|
|
49
|
+
// "[FileServiceServer] Received codegen sources",
|
|
50
|
+
// this.codegenSources,
|
|
51
|
+
// );
|
|
49
52
|
});
|
|
50
53
|
app.post("/agent-results", async (req, res) => {
|
|
51
54
|
const { generatedCode, importPaths, result, usage } = req.body;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAchD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsB7C,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,IAAI,GAAG,YAAY,EAC5B,KAAK,CAAC,EAAE,SAAS,iBAwElB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,IAAI,iBAY7C"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ const for_recorder_1 = require("./agent/cua/pw-codegen/pw-pause/for-recorder");
|
|
|
13
13
|
const run_1 = require("./agent/master/run");
|
|
14
14
|
const scenarios_1 = require("./bin/utils/scenarios");
|
|
15
15
|
const client_1 = __importDefault(require("./file/client"));
|
|
16
|
+
const logger_1 = require("./logger");
|
|
16
17
|
const reporter_1 = require("./reporter");
|
|
17
18
|
const session_1 = require("./session");
|
|
18
19
|
var test_build_1 = require("./test-build");
|
|
@@ -104,7 +105,7 @@ async function recordTest(pageRef) {
|
|
|
104
105
|
if (!canUsePwPause) {
|
|
105
106
|
return;
|
|
106
107
|
}
|
|
107
|
-
|
|
108
|
+
logger_1.logger.debug("[getCodegen] using PlaywrightPauseCodegen");
|
|
108
109
|
const codegen = new for_recorder_1.PlaywrightPauseCodegenForRecorder(async (sources) => {
|
|
109
110
|
await fileServiceClient.sendCodegenSources(sources);
|
|
110
111
|
});
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,MAAyB,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,MAAM,eAGjB,CAAC"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
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.logger = void 0;
|
|
7
|
+
const console_log_level_1 = __importDefault(require("console-log-level"));
|
|
8
|
+
exports.logger = (0, console_log_level_1.default)({
|
|
9
|
+
prefix: "test-gen",
|
|
10
|
+
level: process.env.LOG_LEVEL || "info",
|
|
11
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recorder/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recorder/index.ts"],"names":[],"mappings":"AAkBA,wBAAsB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,iBAyF3D"}
|
package/dist/recorder/index.js
CHANGED
|
@@ -10,6 +10,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
10
10
|
const utils_1 = require("../agent/browsing/utils");
|
|
11
11
|
const pw_pause_1 = require("../agent/cua/pw-codegen/pw-pause");
|
|
12
12
|
const server_1 = require("../file/server");
|
|
13
|
+
const logger_1 = require("../logger");
|
|
13
14
|
const display_1 = require("./display");
|
|
14
15
|
const env_variables_1 = require("./env-variables");
|
|
15
16
|
const request_1 = require("./request");
|
|
@@ -20,6 +21,20 @@ async function runRecorder({ name }) {
|
|
|
20
21
|
console.log(`Recording for test name: ${name}`);
|
|
21
22
|
const repoDir = process.cwd();
|
|
22
23
|
let repoName = "";
|
|
24
|
+
let fileServer = null;
|
|
25
|
+
process.on("SIGINT", async () => {
|
|
26
|
+
try {
|
|
27
|
+
await (0, temp_files_1.deleteTempTestFile)();
|
|
28
|
+
await (0, pw_pause_1.revertToOriginalPwCode)(repoDir);
|
|
29
|
+
if (fileServer) {
|
|
30
|
+
await fileServer.stop();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error("Error during cleanup:", error);
|
|
35
|
+
}
|
|
36
|
+
process.exit(0);
|
|
37
|
+
});
|
|
23
38
|
try {
|
|
24
39
|
repoName = await (0, validation_1.validatePackageJson)(repoDir);
|
|
25
40
|
}
|
|
@@ -28,12 +43,11 @@ async function runRecorder({ name }) {
|
|
|
28
43
|
process.exit(1);
|
|
29
44
|
}
|
|
30
45
|
try {
|
|
31
|
-
|
|
32
|
-
console.log("[generateTestWithBrowserAgent] Preparing playwright for codegen");
|
|
46
|
+
logger_1.logger.debug("[generateTestWithBrowserAgent] Preparing playwright for codegen");
|
|
33
47
|
await (0, pw_pause_1.preparePlaywrightForCodegen)(repoDir);
|
|
34
48
|
}
|
|
35
49
|
catch (err) {
|
|
36
|
-
|
|
50
|
+
logger_1.logger.warn("[generateTestWithBrowserAgent] Error preparing playwright for codegen", err);
|
|
37
51
|
}
|
|
38
52
|
const envVariables = await (0, env_variables_1.fetchEnvironmentVariables)(repoName);
|
|
39
53
|
await (0, temp_files_1.createTempTestFile)();
|
|
@@ -41,7 +55,7 @@ async function runRecorder({ name }) {
|
|
|
41
55
|
await (0, utils_1.addImportForMethod)(absFilePath, "recordTest");
|
|
42
56
|
// Start a file service for IPC with the agent (which runs in a different process)
|
|
43
57
|
const availablePort = await (0, detect_port_1.default)(3030);
|
|
44
|
-
|
|
58
|
+
fileServer = new server_1.FileServiceServer({
|
|
45
59
|
port: availablePort,
|
|
46
60
|
repoDir,
|
|
47
61
|
updateFile: false,
|
|
@@ -63,7 +77,7 @@ async function runRecorder({ name }) {
|
|
|
63
77
|
const videoPaths = (0, upload_1.extractVideoAttachments)(repoDir);
|
|
64
78
|
let attachments = [];
|
|
65
79
|
if (videoPaths.length === 0) {
|
|
66
|
-
|
|
80
|
+
logger_1.logger.warn("No video attachments found for temp test");
|
|
67
81
|
}
|
|
68
82
|
else {
|
|
69
83
|
const videoUrls = await (0, upload_1.uploadVideosWithSpinner)(videoPaths, name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/recorder/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/recorder/request.ts"],"names":[],"mappings":"AAaA,wBAAsB,wBAAwB,CAAC,EAC7C,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,iBAMA"}
|
package/dist/recorder/request.js
CHANGED
|
@@ -5,11 +5,10 @@ const api_client_1 = require("../auth/api-client");
|
|
|
5
5
|
const title = (name) => `Add a test: ${name}`;
|
|
6
6
|
function description(codegenResult, attachments) {
|
|
7
7
|
return [
|
|
8
|
-
`To add this test, refer to the following code that
|
|
8
|
+
`To add this test, refer to the following code and videos that were captured using playwright codegen. Make modifications that you need to make to convert this into a test case that sits well with other tests in this repository.`,
|
|
9
9
|
`Codegen result:`,
|
|
10
10
|
codegenResult,
|
|
11
|
-
`
|
|
12
|
-
...attachments,
|
|
11
|
+
...attachments.map((attachment) => `[[${attachment}]]`),
|
|
13
12
|
].join("\n\n");
|
|
14
13
|
}
|
|
15
14
|
async function sendToDashboardAsRequest({ repoName, testName, codegenResult, attachments, }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temp-files.d.ts","sourceRoot":"","sources":["../../src/recorder/temp-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"temp-files.d.ts","sourceRoot":"","sources":["../../src/recorder/temp-files.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,kBAoBvC;AAED,wBAAsB,kBAAkB,kBAUvC"}
|
|
@@ -7,11 +7,12 @@ exports.createTempTestFile = createTempTestFile;
|
|
|
7
7
|
exports.deleteTempTestFile = deleteTempTestFile;
|
|
8
8
|
const fs_1 = __importDefault(require("fs"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const logger_1 = require("../logger");
|
|
10
11
|
async function createTempTestFile() {
|
|
11
12
|
const tempFilePath = path_1.default.join(process.cwd(), "tests", "temp-test.spec.ts");
|
|
12
13
|
// Check if the temp file already exists
|
|
13
14
|
if (fs_1.default.existsSync(tempFilePath)) {
|
|
14
|
-
|
|
15
|
+
logger_1.logger.warn("Temporary test file already exists. Skipping creation.");
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
18
|
// Create a basic test file
|
|
@@ -24,16 +25,16 @@ test('temp test', async ({ page }) => {
|
|
|
24
25
|
});
|
|
25
26
|
`;
|
|
26
27
|
fs_1.default.writeFileSync(tempFilePath, content);
|
|
27
|
-
|
|
28
|
+
logger_1.logger.debug("Temporary test file created:", tempFilePath);
|
|
28
29
|
}
|
|
29
30
|
async function deleteTempTestFile() {
|
|
30
31
|
const tempFilePath = path_1.default.join(process.cwd(), "tests", "temp-test.spec.ts");
|
|
31
32
|
// Check if the temp file exists
|
|
32
33
|
if (fs_1.default.existsSync(tempFilePath)) {
|
|
33
34
|
fs_1.default.unlinkSync(tempFilePath);
|
|
34
|
-
|
|
35
|
+
logger_1.logger.debug("Temporary test file deleted:", tempFilePath);
|
|
35
36
|
}
|
|
36
37
|
else {
|
|
37
|
-
|
|
38
|
+
logger_1.logger.warn("Temporary test file does not exist. Skipping deletion.");
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/recorder/upload.ts"],"names":[],"mappings":"AAcA,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBjE;AA4DD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/recorder/upload.ts"],"names":[],"mappings":"AAcA,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBjE;AA4DD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,CAc1B"}
|
package/dist/recorder/upload.js
CHANGED
|
@@ -79,7 +79,6 @@ async function uploadVideos(videoPaths, testSlug) {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
async function uploadVideosWithSpinner(videoPaths, testName) {
|
|
82
|
-
videoPaths.forEach((videoPath) => console.log(videoPath));
|
|
83
82
|
const uploadSpinner = (0, ora_1.default)("Uploading video recordings...").start();
|
|
84
83
|
try {
|
|
85
84
|
const slugifiedTestName = `${(0, slug_1.slugify)(testName)}-${Math.random().toString(36).substring(2, 8)}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empiricalrun/test-gen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.69.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"@types/sanitize-html": "^2.11.0",
|
|
43
43
|
"async-retry": "^1.3.3",
|
|
44
44
|
"commander": "^12.1.0",
|
|
45
|
+
"console-log-level": "^1.4.1",
|
|
45
46
|
"detect-port": "^1.6.1",
|
|
46
47
|
"dotenv": "^16.4.5",
|
|
47
48
|
"eslint": "^8.57.0",
|
|
@@ -63,13 +64,14 @@
|
|
|
63
64
|
"tsx": "^4.16.2",
|
|
64
65
|
"typescript": "^5.3.3",
|
|
65
66
|
"zod": "^3.23.8",
|
|
66
|
-
"@empiricalrun/llm": "^0.
|
|
67
|
+
"@empiricalrun/llm": "^0.19.0",
|
|
67
68
|
"@empiricalrun/r2-uploader": "^0.3.9",
|
|
68
|
-
"@empiricalrun/test-run": "^0.10.
|
|
69
|
+
"@empiricalrun/test-run": "^0.10.4"
|
|
69
70
|
},
|
|
70
71
|
"devDependencies": {
|
|
71
72
|
"@playwright/test": "1.53.0",
|
|
72
73
|
"@types/async-retry": "^1.4.8",
|
|
74
|
+
"@types/console-log-level": "^1.4.5",
|
|
73
75
|
"@types/detect-port": "^1.3.5",
|
|
74
76
|
"@types/express": "^4.17.21",
|
|
75
77
|
"@types/js-levenshtein": "^1.1.3",
|
|
@@ -80,7 +82,7 @@
|
|
|
80
82
|
"playwright": "1.53.0",
|
|
81
83
|
"serve-handler": "^6.1.6",
|
|
82
84
|
"ts-patch": "^3.3.0",
|
|
83
|
-
"@empiricalrun/shared-types": "0.
|
|
85
|
+
"@empiricalrun/shared-types": "0.6.0"
|
|
84
86
|
},
|
|
85
87
|
"scripts": {
|
|
86
88
|
"dev": "tspc --build --watch",
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/index.ts","./src/actions/assert.ts","./src/actions/click.ts","./src/actions/done.ts","./src/actions/fill.ts","./src/actions/goto.ts","./src/actions/hover.ts","./src/actions/index.ts","./src/actions/next-task.ts","./src/actions/press.ts","./src/actions/skill.ts","./src/actions/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/index.ts","./src/agent/browsing/index.ts","./src/agent/browsing/run.ts","./src/agent/browsing/utils.ts","./src/agent/chat/agent-loop.ts","./src/agent/chat/exports.ts","./src/agent/chat/index.ts","./src/agent/chat/models.ts","./src/agent/chat/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/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/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/api-client.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.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/recorder/display.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/reporter/index.ts","./src/reporter/lib.ts","./src/session/index.ts","./src/test-build/index.ts","./src/tool-call-service/index.ts","./src/tool-call-service/utils.ts","./src/tools/commit-and-create-pr.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/download-build.ts","./src/tools/list-environments.ts","./src/tools/str_replace_editor.ts","./src/tools/test-gen-browser.ts","./src/tools/test-run.ts","./src/tools/grep/index.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/grep/ripgrep/types.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.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"}
|
|
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/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/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/api-client.ts","./src/auth/cli-auth.ts","./src/auth/index.ts","./src/auth/token-store.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/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/recorder/display.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/reporter/index.ts","./src/reporter/lib.ts","./src/session/index.ts","./src/test-build/index.ts","./src/tool-call-service/index.ts","./src/tool-call-service/utils.ts","./src/tools/commit-and-create-pr.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/download-build.ts","./src/tools/list-environments.ts","./src/tools/str_replace_editor.ts","./src/tools/test-gen-browser.ts","./src/tools/test-run.ts","./src/tools/grep/index.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/grep/ripgrep/types.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.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"}
|