@empiricalrun/test-gen 0.78.4 → 0.78.6

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.78.6
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [3ee1aec]
8
+ - @empiricalrun/r2-uploader@0.8.0
9
+ - @empiricalrun/test-run@0.13.1
10
+
11
+ ## 0.78.5
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [d270c6d]
16
+ - Updated dependencies [2d9919d]
17
+ - @empiricalrun/test-run@0.13.0
18
+ - @empiricalrun/r2-uploader@0.7.0
19
+
3
20
  ## 0.78.4
4
21
 
5
22
  ### Patch Changes
@@ -2,11 +2,10 @@ import { type IChatModel } from "@empiricalrun/llm/chat";
2
2
  import type { CanonicalMessage, ChatState, ChatStateGeneric, MessageCheckpoint, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, TextMessagePart, TextMessageWithAttachmentsPart, ToolResult, ToolsForLLM } from "@empiricalrun/shared-types/chat-agent";
3
3
  import type { TraceClient } from "@empiricalrun/shared-types/common";
4
4
  import type { FileInfo } from "@empiricalrun/shared-types/test-gen";
5
- import { BaseToolExecutor } from "../../tools/executor/base";
5
+ import type { IToolExecutor } from "../../tools/executor/types";
6
6
  type RunLoopParams<T> = {
7
7
  signal?: AbortSignal;
8
8
  reporter: ReporterFunction<T>;
9
- onPendingToolCall?: (toolCalls: PendingToolCall[]) => Promise<void>;
10
9
  streamingMessageReporter?: StreamingMessageReporterFunc;
11
10
  onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
12
11
  };
@@ -15,7 +14,7 @@ type AgentParamsWithoutPrompt<T> = {
15
14
  chatState?: ChatStateGeneric<T>;
16
15
  workerEnv?: Record<string, string>;
17
16
  featureFlags?: string[];
18
- toolExecutor?: BaseToolExecutor;
17
+ toolExecutor?: IToolExecutor;
19
18
  systemPrompt?: string;
20
19
  selectedModel: SupportedChatModels;
21
20
  repoInfoBuilder?: () => Promise<FileInfo>;
@@ -25,16 +24,18 @@ export type AgentParams<T> = AgentParamsWithoutPrompt<T> & ({
25
24
  } | {
26
25
  repoInfoBuilder: () => Promise<FileInfo>;
27
26
  });
27
+ export type OnToolResultsProcessedCallback = (newChatState: ChatState) => Promise<void>;
28
28
  export declare abstract class BaseAgent<T> {
29
29
  featureFlags: string[];
30
30
  tools: ToolsForLLM;
31
31
  selectedModel: SupportedChatModels;
32
32
  chatModel: IChatModel<T>;
33
33
  workerEnv?: Record<string, string>;
34
- toolExecutor?: BaseToolExecutor;
34
+ toolExecutor?: IToolExecutor;
35
35
  trace?: TraceClient;
36
36
  systemPrompt: string | undefined;
37
37
  repoInfoBuilder: (() => Promise<FileInfo>) | undefined;
38
+ onToolResultsProcessed?: OnToolResultsProcessedCallback;
38
39
  constructor({ featureFlags, selectedModel, workerEnv, chatState, toolExecutor, trace, systemPrompt, repoInfoBuilder, }: AgentParams<T>);
39
40
  protected abstract getTools(): ToolsForLLM;
40
41
  protected abstract buildSystemPrompt(repoInfoBuilder: () => Promise<FileInfo>): Promise<string>;
@@ -43,6 +44,7 @@ export declare abstract class BaseAgent<T> {
43
44
  get chatState(): ChatStateGeneric<T>;
44
45
  pushUserMessage(parts: Array<TextMessagePart | TextMessageWithAttachmentsPart>): ChatStateGeneric<T>;
45
46
  setChatState(chatState: ChatStateGeneric<T>): void;
47
+ changeModel(newModel: SupportedChatModels): void;
46
48
  stop(): ChatStateGeneric<T>;
47
49
  processToolResults(toolCalls: PendingToolCall[], toolResults: ToolResult[], checkpoint: MessageCheckpoint | null): ChatState | undefined;
48
50
  toolCallHandler(toolCalls: PendingToolCall[]): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/base/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/base/index.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ class BaseAgent {
15
15
  trace;
16
16
  systemPrompt;
17
17
  repoInfoBuilder;
18
+ onToolResultsProcessed;
18
19
  constructor({ featureFlags, selectedModel, workerEnv, chatState, toolExecutor, trace, systemPrompt, repoInfoBuilder, }) {
19
20
  this.featureFlags = featureFlags || [];
20
21
  this.selectedModel = selectedModel;
@@ -54,6 +55,11 @@ class BaseAgent {
54
55
  setChatState(chatState) {
55
56
  this.chatModel = (0, chat_1.createChatModel)(chatState.messages, this.selectedModel, this.workerEnv);
56
57
  }
58
+ changeModel(newModel) {
59
+ this.selectedModel = newModel;
60
+ this.chatModel = (0, chat_1.createChatModel)(this.chatModel.messages, this.selectedModel, this.workerEnv);
61
+ this.chatModel.validateEnvVarsForAuth();
62
+ }
57
63
  stop() {
58
64
  const pendingToolCalls = this.chatModel.getPendingToolCalls();
59
65
  let updatedChatState = {
@@ -98,10 +104,15 @@ class BaseAgent {
98
104
  }
99
105
  async toolCallHandler(toolCalls) {
100
106
  if (!this.toolExecutor) {
101
- throw new Error("No toolExecutor available and no onPendingToolCall provided");
107
+ throw new Error("No toolExecutor configured");
108
+ }
109
+ const result = await this.toolExecutor.execute(toolCalls);
110
+ if (result.status === "completed") {
111
+ const newChatState = this.processToolResults(toolCalls, result.toolResults, result.checkpoint);
112
+ if (newChatState && this.onToolResultsProcessed) {
113
+ await this.onToolResultsProcessed(newChatState);
114
+ }
102
115
  }
103
- const { toolResults, checkpoint } = await this.toolExecutor.execute(toolCalls);
104
- this.processToolResults(toolCalls, toolResults, checkpoint);
105
116
  }
106
117
  async runLoop(params) {
107
118
  let systemPrompt = this.systemPrompt;
@@ -114,6 +125,9 @@ class BaseAgent {
114
125
  throw new Error("Repo info builder is required.");
115
126
  }
116
127
  }
128
+ if (!this.toolExecutor) {
129
+ throw new Error("toolExecutor must be configured before runLoop");
130
+ }
117
131
  await (0, agent_loop_1.chatAgentLoop)({
118
132
  ...params,
119
133
  systemPrompt,
@@ -121,7 +135,7 @@ class BaseAgent {
121
135
  chatModel: this.chatModel,
122
136
  tools: this.getTools(),
123
137
  featureFlags: this.featureFlags,
124
- onPendingToolCall: params.onPendingToolCall || this.toolCallHandler.bind(this),
138
+ onPendingToolCall: this.toolCallHandler.bind(this),
125
139
  });
126
140
  }
127
141
  getHumanReadableLatestMessage() {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/agent/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EAIb,mBAAmB,EACpB,MAAM,uCAAuC,CAAC;AA6B/C,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAkCA;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,EAC1C,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,UAAU,GACX,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,iBA+JA"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/agent/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EAGb,mBAAmB,EACpB,MAAM,uCAAuC,CAAC;AA6B/C,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAkCA;AAED,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,EAC1C,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,UAAU,GACX,EAAE;IACD,aAAa,EAAE,mBAAmB,CAAC;IACnC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,iBA0JA"}
package/dist/agent/cli.js CHANGED
@@ -186,10 +186,6 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
186
186
  }
187
187
  };
188
188
  })(),
189
- onPendingToolCall: async (toolCalls) => {
190
- const { toolResults, checkpoint } = await toolExecutor.execute(toolCalls);
191
- agent.processToolResults(toolCalls, toolResults, checkpoint);
192
- },
193
189
  });
194
190
  }
195
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/create-pull-request/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AA6BlE,eAAO,MAAM,qBAAqB,EAAE,IAwDnC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/create-pull-request/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AA6BlE,eAAO,MAAM,qBAAqB,EAAE,IA6DnC,CAAC"}
@@ -36,7 +36,7 @@ Don't ask the user for this information, just come up with it yourself.
36
36
  try {
37
37
  const valids = await (0, utils_2.validateInputs)({ input, apiClient, chatSession });
38
38
  const { pullRequestTitle, pullRequestDescription, branchName } = valids;
39
- const repo = await (0, utils_2.getRepoName)(chatSession, apiClient);
39
+ const { repoName: repo, createdBy } = await (0, utils_2.getSessionInfo)(chatSession, apiClient);
40
40
  const existingPR = await (0, utils_1.getExistingPR)({
41
41
  owner,
42
42
  repo,
@@ -44,8 +44,8 @@ Don't ask the user for this information, just come up with it yourself.
44
44
  apiClient: apiClient,
45
45
  });
46
46
  const toolResponse = existingPR
47
- ? await (0, utils_2.handleExistingPullRequest)(existingPR, owner, repo, pullRequestDescription, chatSession, apiClient)
48
- : await (0, utils_2.handleNewPullRequest)(owner, repo, pullRequestTitle, branchName, chatSession, pullRequestDescription, apiClient);
47
+ ? await (0, utils_2.handleExistingPullRequest)(existingPR, owner, repo, pullRequestDescription, chatSession, apiClient, createdBy)
48
+ : await (0, utils_2.handleNewPullRequest)(owner, repo, pullRequestTitle, branchName, chatSession, pullRequestDescription, apiClient, createdBy);
49
49
  return toolResponse;
50
50
  }
51
51
  catch (error) {
@@ -6,16 +6,20 @@ export interface ValidatedInputs {
6
6
  branchName: string;
7
7
  }
8
8
  export declare function validateInputs({ input, apiClient, chatSession, }: any): Promise<ValidatedInputs>;
9
- export declare function getRepoName(chatSession: ChatSessionInfo | null | undefined, apiClient: IDashboardAPIClient): Promise<string>;
9
+ export interface SessionInfo {
10
+ repoName: string;
11
+ createdBy: string | null;
12
+ }
13
+ export declare function getSessionInfo(chatSession: ChatSessionInfo | null | undefined, apiClient: IDashboardAPIClient): Promise<SessionInfo>;
10
14
  export declare function getMergeableStateInfo(owner: string, repo: string, pullRequest: any, apiClient: any): Promise<{
11
15
  mergeableState: "unknown" | "clean" | "dirty" | "unstable";
12
16
  stateDescription: string;
13
17
  }>;
14
- export declare function handleExistingPullRequest(pullRequest: any, owner: string, repo: string, pullRequestDescription: string, chatSession: any, apiClient: any): Promise<{
18
+ export declare function handleExistingPullRequest(pullRequest: any, owner: string, repo: string, pullRequestDescription: string, chatSession: any, apiClient: any, createdBy?: string | null): Promise<{
15
19
  isError: boolean;
16
20
  result: string;
17
21
  }>;
18
- export declare function handleNewPullRequest(owner: string, repo: string, pullRequestTitle: string, branchName: string, chatSession: any, pullRequestDescription: string, apiClient: any): Promise<{
22
+ export declare function handleNewPullRequest(owner: string, repo: string, pullRequestTitle: string, branchName: string, chatSession: any, pullRequestDescription: string, apiClient: any, createdBy?: string | null): Promise<{
19
23
  isError: boolean;
20
24
  result: string;
21
25
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/create-pull-request/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAWxE,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,EACnC,KAAK,EACL,SAAS,EACT,WAAW,GACZ,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAehC;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC/C,SAAS,EAAE,mBAAmB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,GAAG;;;GAUf;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,GAAG,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,sBAAsB,EAAE,MAAM,EAC9B,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,GAAG;;;GAqBf;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,GAAG,EAChB,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE,GAAG;;;GAuBf"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/create-pull-request/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAWxE,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,EACnC,KAAK,EACL,SAAS,EACT,WAAW,GACZ,EAAE,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAehC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC/C,SAAS,EAAE,mBAAmB,GAC7B,OAAO,CAAC,WAAW,CAAC,CA+BtB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,GAAG;;;GAUf;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,GAAG,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,sBAAsB,EAAE,MAAM,EAC9B,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,GAAG,EACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;;;GAyB1B;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,GAAG,EAChB,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE,GAAG,EACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;;;GA2B1B"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateInputs = validateInputs;
4
- exports.getRepoName = getRepoName;
4
+ exports.getSessionInfo = getSessionInfo;
5
5
  exports.getMergeableStateInfo = getMergeableStateInfo;
6
6
  exports.handleExistingPullRequest = handleExistingPullRequest;
7
7
  exports.handleNewPullRequest = handleNewPullRequest;
@@ -22,7 +22,7 @@ async function validateInputs({ input, apiClient, chatSession, }) {
22
22
  branchName,
23
23
  };
24
24
  }
25
- async function getRepoName(chatSession, apiClient) {
25
+ async function getSessionInfo(chatSession, apiClient) {
26
26
  if (!chatSession?.id) {
27
27
  throw new Error("Cannot create pull request without repo name or chat session ID.");
28
28
  }
@@ -35,10 +35,14 @@ async function getRepoName(chatSession, apiClient) {
35
35
  if (!sessionDetails.gitPayload?.repoName) {
36
36
  throw new Error("Repository name not found in session details.");
37
37
  }
38
- return sessionDetails.gitPayload.repoName;
38
+ const userDetail = sessionDetails.chatSession?.created_by_user_detail;
39
+ return {
40
+ repoName: sessionDetails.gitPayload.repoName,
41
+ createdBy: userDetail?.name ?? userDetail?.email ?? null,
42
+ };
39
43
  }
40
44
  catch (error) {
41
- throw new Error(`Failed to fetch repository name: ${error instanceof Error ? error.message : String(error)}`);
45
+ throw new Error(`Failed to fetch session info: ${error instanceof Error ? error.message : String(error)}`);
42
46
  }
43
47
  }
44
48
  async function getMergeableStateInfo(owner, repo, pullRequest, apiClient) {
@@ -51,12 +55,12 @@ async function getMergeableStateInfo(owner, repo, pullRequest, apiClient) {
51
55
  const stateDescription = (0, utils_1.getMergeableStateDescription)(mergeableState);
52
56
  return { mergeableState, stateDescription };
53
57
  }
54
- async function handleExistingPullRequest(pullRequest, owner, repo, pullRequestDescription, chatSession, apiClient) {
58
+ async function handleExistingPullRequest(pullRequest, owner, repo, pullRequestDescription, chatSession, apiClient, createdBy) {
55
59
  const updatedPR = await (0, utils_1.updatePullRequest)({
56
60
  owner,
57
61
  repo,
58
62
  prNumber: pullRequest.number,
59
- body: (0, pr_description_1.addMetadataToPRDescription)(pullRequestDescription, chatSession),
63
+ body: (0, pr_description_1.addMetadataToPRDescription)(pullRequestDescription, chatSession, createdBy),
60
64
  apiClient,
61
65
  });
62
66
  const { mergeableState, stateDescription } = await getMergeableStateInfo(owner, repo, updatedPR, apiClient);
@@ -65,14 +69,14 @@ async function handleExistingPullRequest(pullRequest, owner, repo, pullRequestDe
65
69
  result: `Updated existing PR: ${updatedPR.html_url}\n\nMergeable state: ${mergeableState} - ${stateDescription}`,
66
70
  };
67
71
  }
68
- async function handleNewPullRequest(owner, repo, pullRequestTitle, branchName, chatSession, pullRequestDescription, apiClient) {
72
+ async function handleNewPullRequest(owner, repo, pullRequestTitle, branchName, chatSession, pullRequestDescription, apiClient, createdBy) {
69
73
  const newPR = await (0, utils_1.createPullRequest)({
70
74
  owner,
71
75
  repo,
72
76
  title: pullRequestTitle,
73
77
  head: branchName,
74
78
  base: chatSession?.baseBranchName || "main",
75
- body: (0, pr_description_1.addMetadataToPRDescription)(pullRequestDescription, chatSession),
79
+ body: (0, pr_description_1.addMetadataToPRDescription)(pullRequestDescription, chatSession, createdBy),
76
80
  apiClient,
77
81
  });
78
82
  const { mergeableState, stateDescription } = await getMergeableStateInfo(owner, repo, newPR, apiClient);
@@ -1,7 +1,8 @@
1
1
  import type { TraceClient } from "@empiricalrun/llm";
2
- import { PendingToolCall, ToolResult } from "@empiricalrun/llm/chat";
2
+ import { PendingToolCall } from "@empiricalrun/llm/chat";
3
3
  import type { IDashboardAPIClient } from "@empiricalrun/shared-types/api/base";
4
- import type { ChatSessionInfo, Logger, MessageCheckpoint, Tool, ToolExecute } from "@empiricalrun/shared-types/chat-agent";
4
+ import type { ChatSessionInfo, Logger, Tool, ToolExecute } from "@empiricalrun/shared-types/chat-agent";
5
+ import type { IToolExecutor, ToolExecutionResult } from "./types";
5
6
  export type BaseToolExecutorProps = {
6
7
  tools: Array<Tool>;
7
8
  chatSession: ChatSessionInfo | {
@@ -14,20 +15,17 @@ export type BaseToolExecutorProps = {
14
15
  environmentOverrides?: Record<string, string>;
15
16
  logger?: Logger;
16
17
  };
17
- export declare class BaseToolExecutor {
18
+ export declare class BaseToolExecutor implements IToolExecutor {
18
19
  toolExecutors: Record<string, Tool | ToolExecute>;
19
- featureFlags: string[];
20
20
  chatSession: ChatSessionInfo | null;
21
21
  branchName: string | null;
22
22
  repoPath: string;
23
23
  apiClient: IDashboardAPIClient | undefined;
24
- trace?: TraceClient;
24
+ featureFlags: string[];
25
25
  environmentOverrides: Record<string, string>;
26
26
  logger: Logger;
27
+ trace?: TraceClient;
27
28
  constructor({ tools, chatSession, repoPath, apiClient, trace, featureFlags, environmentOverrides, logger, }: BaseToolExecutorProps);
28
- execute(toolCalls: PendingToolCall[]): Promise<{
29
- toolResults: ToolResult[];
30
- checkpoint: MessageCheckpoint | null;
31
- }>;
29
+ execute(toolCalls: PendingToolCall[]): Promise<ToolExecutionResult>;
32
30
  }
33
31
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/tools/executor/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EACV,eAAe,EAEf,MAAM,EACN,iBAAiB,EACjB,IAAI,EACJ,WAAW,EACZ,MAAM,uCAAuC,CAAC;AAc/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,eAAe,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,gBAAgB;IAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC,CAAM;IACvD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;gBAEH,EACV,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,MAAM,GACP,EAAE,qBAAqB;IAuBlB,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACnD,WAAW,EAAE,UAAU,EAAE,CAAC;QAC1B,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;KACtC,CAAC;CAsGH"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/tools/executor/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAc,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EACV,eAAe,EAEf,MAAM,EAEN,IAAI,EACJ,WAAW,EACZ,MAAM,uCAAuC,CAAC;AAK/C,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAUlE,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,eAAe,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,gBAAiB,YAAW,aAAa;IACpD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC,CAAM;IACvD,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC3C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,CAAC;gBAER,EACV,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,KAAK,EACL,YAAY,EACZ,oBAAoB,EACpB,MAAM,GACP,EAAE,qBAAqB;IAuBlB,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAsG1E"}
@@ -13,14 +13,14 @@ const LOGGER = {
13
13
  };
14
14
  class BaseToolExecutor {
15
15
  toolExecutors = {};
16
- featureFlags;
17
16
  chatSession;
18
17
  branchName;
19
18
  repoPath;
20
19
  apiClient;
21
- trace;
20
+ featureFlags;
22
21
  environmentOverrides;
23
22
  logger;
23
+ trace;
24
24
  constructor({ tools, chatSession, repoPath, apiClient, trace, featureFlags, environmentOverrides, logger, }) {
25
25
  this.chatSession = chatSession && "id" in chatSession ? chatSession : null;
26
26
  this.branchName = chatSession?.branchName || null;
@@ -122,7 +122,7 @@ class BaseToolExecutor {
122
122
  }
123
123
  }
124
124
  executeSpan?.end({ output: { toolResults, checkpoint } });
125
- return { toolResults, checkpoint };
125
+ return { status: "completed", toolResults, checkpoint };
126
126
  }
127
127
  }
128
128
  exports.BaseToolExecutor = BaseToolExecutor;
@@ -1,6 +1,7 @@
1
1
  import { BaseToolExecutor, BaseToolExecutorProps } from "./base";
2
2
  export type { BaseToolExecutorProps } from "./base";
3
3
  export { BaseToolExecutor } from "./base";
4
+ export type { IToolExecutor, ToolExecutionCompleted, ToolExecutionPending, ToolExecutionResult, } from "./types";
4
5
  export { gitPushChanges } from "./utils/git";
5
6
  export declare class ToolExecutor extends BaseToolExecutor {
6
7
  constructor(params: Omit<BaseToolExecutorProps, "tools">);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/executor/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAEjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC;CA+BzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/executor/index.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAEjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,YAAa,SAAQ,gBAAgB;gBACpC,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC;CA+BzD"}
@@ -0,0 +1,14 @@
1
+ import type { MessageCheckpoint, PendingToolCall, ToolResult } from "@empiricalrun/shared-types/chat-agent";
2
+ export type ToolExecutionCompleted = {
3
+ status: "completed";
4
+ toolResults: ToolResult[];
5
+ checkpoint: MessageCheckpoint | null;
6
+ };
7
+ export type ToolExecutionPending = {
8
+ status: "pending";
9
+ };
10
+ export type ToolExecutionResult = ToolExecutionCompleted | ToolExecutionPending;
11
+ export interface IToolExecutor {
12
+ execute(toolCalls: PendingToolCall[]): Promise<ToolExecutionResult>;
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/executor/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,UAAU,EACX,MAAM,uCAAuC,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAEhF,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrE"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,4 @@
1
1
  import type { ChatSessionInfo } from "@empiricalrun/shared-types/chat-agent";
2
- export declare function generateSessionMetadata(chatSession: ChatSessionInfo | null): string;
3
- export declare function addMetadataToPRDescription(description: string, chatSession: ChatSessionInfo | null | undefined): string;
2
+ export declare function generateSessionMetadata(chatSession: ChatSessionInfo | null, createdBy?: string | null): string;
3
+ export declare function addMetadataToPRDescription(description: string, chatSession: ChatSessionInfo | null | undefined, createdBy?: string | null): string;
4
4
  //# sourceMappingURL=pr-description.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-description.d.ts","sourceRoot":"","sources":["../../../../src/tools/executor/utils/pr-description.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7E,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,GAAG,IAAI,GAClC,MAAM,CASR;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,GAC9C,MAAM,CAWR"}
1
+ {"version":3,"file":"pr-description.d.ts","sourceRoot":"","sources":["../../../../src/tools/executor/utils/pr-description.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7E,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,eAAe,GAAG,IAAI,EACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,CAMR;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC/C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,CAWR"}
@@ -2,23 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateSessionMetadata = generateSessionMetadata;
4
4
  exports.addMetadataToPRDescription = addMetadataToPRDescription;
5
- function generateSessionMetadata(chatSession) {
5
+ function generateSessionMetadata(chatSession, createdBy) {
6
6
  if (!chatSession) {
7
7
  return "";
8
8
  }
9
- let userInfo = "";
10
- if (chatSession.createdBy) {
11
- userInfo = ` by ${chatSession.createdBy}`;
12
- }
9
+ const userInfo = createdBy ? ` by ${createdBy}` : "";
13
10
  return `PR created from [session #${chatSession.id}](${chatSession.url})${userInfo}`;
14
11
  }
15
- function addMetadataToPRDescription(description, chatSession) {
12
+ function addMetadataToPRDescription(description, chatSession, createdBy) {
16
13
  const timestamp = new Date()
17
14
  .toISOString()
18
15
  .replace("T", " ")
19
16
  .replace("Z", " UTC");
20
17
  const sessionInfo = chatSession
21
- ? `\n\n${generateSessionMetadata(chatSession)}`
18
+ ? `\n\n${generateSessionMetadata(chatSession, createdBy)}`
22
19
  : "";
23
20
  return `${description}${sessionInfo}\n\n<sup>Updated at ${timestamp}</sup>`;
24
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-gen",
3
- "version": "0.78.4",
3
+ "version": "0.78.6",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -89,8 +89,8 @@
89
89
  "zod": "^4.0.1",
90
90
  "@empiricalrun/ast-parser": "^0.0.10",
91
91
  "@empiricalrun/llm": "^0.25.1",
92
- "@empiricalrun/r2-uploader": "^0.6.0",
93
- "@empiricalrun/test-run": "^0.12.0",
92
+ "@empiricalrun/r2-uploader": "^0.8.0",
93
+ "@empiricalrun/test-run": "^0.13.1",
94
94
  "videostil": "0.3.3"
95
95
  },
96
96
  "devDependencies": {
@@ -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/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/index.ts","./src/agent/cli.ts","./src/agent/index.ts","./src/agent/base/index.ts","./src/agent/browsing/index.ts","./src/agent/browsing/run.ts","./src/agent/browsing/utils.ts","./src/agent/chat/agent-loop.ts","./src/agent/chat/exports.ts","./src/agent/chat/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/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/chat/prompt/test-case-def.ts","./src/agent/code-review/index.ts","./src/agent/code-review/parser.ts","./src/agent/code-review/types.ts","./src/agent/code-review/executor/index.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/factory.ts","./src/agent/cua/pw-codegen/index.ts","./src/agent/cua/pw-codegen/types.ts","./src/agent/cua/pw-codegen/version.ts","./src/agent/cua/pw-codegen/pw-event-sink/index.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/master/action-tool-calls.ts","./src/agent/master/element-annotation.ts","./src/agent/master/execute-browser-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/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/agent/triage/index.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/tool-response.ts","./src/dashboard/totp.ts","./src/dashboard/types.ts","./src/errors/index.ts","./src/file/client.ts","./src/file/server.ts","./src/file-info/index.ts","./src/file-info/adapters/file-system/index.ts","./src/file-info/adapters/file-system/reader.ts","./src/file-info/adapters/github/index.ts","./src/file-info/adapters/github/reader.ts","./src/human-in-the-loop/cli.ts","./src/human-in-the-loop/index.ts","./src/human-in-the-loop/ipc.ts","./src/page/index.ts","./src/prompts/lib/ts-transformer.ts","./src/recorder/env-variables.ts","./src/recorder/index.ts","./src/recorder/request.ts","./src/recorder/temp-files.ts","./src/recorder/upload.ts","./src/recorder/validation.ts","./src/test-build/index.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/index.ts","./src/tools/list-environments.ts","./src/tools/run-test.ts","./src/tools/test-gen-browser.ts","./src/tools/analyse-video/index.ts","./src/tools/create-pull-request/index.ts","./src/tools/create-pull-request/utils.ts","./src/tools/definitions/analyse-video.ts","./src/tools/definitions/delete-file.ts","./src/tools/definitions/download-build.ts","./src/tools/definitions/grep.ts","./src/tools/definitions/list-tests-and-projects.ts","./src/tools/definitions/merge-conflicts.ts","./src/tools/definitions/rename-file.ts","./src/tools/definitions/review-pull-request.ts","./src/tools/definitions/run-test.ts","./src/tools/definitions/safe-bash.ts","./src/tools/definitions/str_replace_editor.ts","./src/tools/definitions/test-gen-browser.ts","./src/tools/definitions/upgrade-packages.ts","./src/tools/definitions/utils.ts","./src/tools/delete-file/index.ts","./src/tools/download-build/index.ts","./src/tools/executor/base.ts","./src/tools/executor/index.ts","./src/tools/executor/utils/checkpoint.ts","./src/tools/executor/utils/git.ts","./src/tools/executor/utils/index.ts","./src/tools/executor/utils/pr-description.ts","./src/tools/fetch-file/index.ts","./src/tools/fetch-file/utils.ts","./src/tools/fetch-session-diff/index.ts","./src/tools/file-operations/create.ts","./src/tools/file-operations/index.ts","./src/tools/file-operations/insert.ts","./src/tools/file-operations/replace.ts","./src/tools/file-operations/shared/helpers.ts","./src/tools/file-operations/view/index.ts","./src/tools/firecrawl-scrape/index.ts","./src/tools/grep/index.ts","./src/tools/grep/types.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/issues-v1/create-issue.ts","./src/tools/issues-v1/index.ts","./src/tools/issues-v1/list-issues.ts","./src/tools/issues-v1/update-issue.ts","./src/tools/issues-v1/utils.ts","./src/tools/issues-v2/create-issue.ts","./src/tools/issues-v2/set-issue-description.ts","./src/tools/issues-v2/update-issue.ts","./src/tools/list-tests-and-projects/index.ts","./src/tools/merge-conflicts/index.ts","./src/tools/rename-file/index.ts","./src/tools/review-pull-request/index.ts","./src/tools/safe-bash/index.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/trace-dot-zip/index.ts","./src/tools/trace-dot-zip/types.ts","./src/tools/trace-dot-zip/utils/console-trace.ts","./src/tools/trace-dot-zip/utils/extract-zip.ts","./src/tools/trace-dot-zip/utils/network-trace.ts","./src/tools/triage-summary/index.ts","./src/tools/triage-summary/types.ts","./src/tools/triage-summary/utils.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/queue.ts","./src/tools/utils/validate-schema.ts","./src/trace-utils/index.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/hash.ts","./src/utils/html.ts","./src/utils/index.ts","./src/utils/json.ts","./src/utils/model.ts","./src/utils/playwright-report-parser.ts","./src/utils/playwright-test-id.ts","./src/utils/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.ts","./src/utils/url-validation.ts","./src/utils/dedup/dedup-image.ts","./src/utils/dedup/find-threshold.ts","./src/video-core/index.ts","./src/video-core/model-limits.ts","./src/video-core/storage-manager.ts","./src/video-core/types.ts","./src/video-core/utils.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/text-content.ts","./src/actions/constants/index.ts","./src/actions/utils/index.ts","./src/agent/cli.ts","./src/agent/index.ts","./src/agent/base/index.ts","./src/agent/browsing/index.ts","./src/agent/browsing/run.ts","./src/agent/browsing/utils.ts","./src/agent/chat/agent-loop.ts","./src/agent/chat/exports.ts","./src/agent/chat/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/pw-utils-docs.ts","./src/agent/chat/prompt/repo.ts","./src/agent/chat/prompt/test-case-def.ts","./src/agent/code-review/index.ts","./src/agent/code-review/parser.ts","./src/agent/code-review/types.ts","./src/agent/code-review/executor/index.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/factory.ts","./src/agent/cua/pw-codegen/index.ts","./src/agent/cua/pw-codegen/types.ts","./src/agent/cua/pw-codegen/version.ts","./src/agent/cua/pw-codegen/pw-event-sink/index.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/master/action-tool-calls.ts","./src/agent/master/element-annotation.ts","./src/agent/master/execute-browser-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/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/agent/triage/index.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/tool-response.ts","./src/dashboard/totp.ts","./src/dashboard/types.ts","./src/errors/index.ts","./src/file/client.ts","./src/file/server.ts","./src/file-info/index.ts","./src/file-info/adapters/file-system/index.ts","./src/file-info/adapters/file-system/reader.ts","./src/file-info/adapters/github/index.ts","./src/file-info/adapters/github/reader.ts","./src/human-in-the-loop/cli.ts","./src/human-in-the-loop/index.ts","./src/human-in-the-loop/ipc.ts","./src/page/index.ts","./src/prompts/lib/ts-transformer.ts","./src/recorder/env-variables.ts","./src/recorder/index.ts","./src/recorder/request.ts","./src/recorder/temp-files.ts","./src/recorder/upload.ts","./src/recorder/validation.ts","./src/test-build/index.ts","./src/tools/diagnosis-fetcher.ts","./src/tools/index.ts","./src/tools/list-environments.ts","./src/tools/run-test.ts","./src/tools/test-gen-browser.ts","./src/tools/analyse-video/index.ts","./src/tools/create-pull-request/index.ts","./src/tools/create-pull-request/utils.ts","./src/tools/definitions/analyse-video.ts","./src/tools/definitions/delete-file.ts","./src/tools/definitions/download-build.ts","./src/tools/definitions/grep.ts","./src/tools/definitions/list-tests-and-projects.ts","./src/tools/definitions/merge-conflicts.ts","./src/tools/definitions/rename-file.ts","./src/tools/definitions/review-pull-request.ts","./src/tools/definitions/run-test.ts","./src/tools/definitions/safe-bash.ts","./src/tools/definitions/str_replace_editor.ts","./src/tools/definitions/test-gen-browser.ts","./src/tools/definitions/upgrade-packages.ts","./src/tools/definitions/utils.ts","./src/tools/delete-file/index.ts","./src/tools/download-build/index.ts","./src/tools/executor/base.ts","./src/tools/executor/index.ts","./src/tools/executor/types.ts","./src/tools/executor/utils/checkpoint.ts","./src/tools/executor/utils/git.ts","./src/tools/executor/utils/index.ts","./src/tools/executor/utils/pr-description.ts","./src/tools/fetch-file/index.ts","./src/tools/fetch-file/utils.ts","./src/tools/fetch-session-diff/index.ts","./src/tools/file-operations/create.ts","./src/tools/file-operations/index.ts","./src/tools/file-operations/insert.ts","./src/tools/file-operations/replace.ts","./src/tools/file-operations/shared/helpers.ts","./src/tools/file-operations/view/index.ts","./src/tools/firecrawl-scrape/index.ts","./src/tools/grep/index.ts","./src/tools/grep/types.ts","./src/tools/grep/ripgrep/index.ts","./src/tools/issues-v1/create-issue.ts","./src/tools/issues-v1/index.ts","./src/tools/issues-v1/list-issues.ts","./src/tools/issues-v1/update-issue.ts","./src/tools/issues-v1/utils.ts","./src/tools/issues-v2/create-issue.ts","./src/tools/issues-v2/set-issue-description.ts","./src/tools/issues-v2/update-issue.ts","./src/tools/list-tests-and-projects/index.ts","./src/tools/merge-conflicts/index.ts","./src/tools/rename-file/index.ts","./src/tools/review-pull-request/index.ts","./src/tools/safe-bash/index.ts","./src/tools/test-run-fetcher/index.ts","./src/tools/test-run-fetcher/types.ts","./src/tools/trace-dot-zip/index.ts","./src/tools/trace-dot-zip/types.ts","./src/tools/trace-dot-zip/utils/console-trace.ts","./src/tools/trace-dot-zip/utils/extract-zip.ts","./src/tools/trace-dot-zip/utils/network-trace.ts","./src/tools/triage-summary/index.ts","./src/tools/triage-summary/types.ts","./src/tools/triage-summary/utils.ts","./src/tools/upgrade-packages/index.ts","./src/tools/upgrade-packages/utils.ts","./src/tools/utils/queue.ts","./src/tools/utils/validate-schema.ts","./src/trace-utils/index.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/hash.ts","./src/utils/html.ts","./src/utils/index.ts","./src/utils/json.ts","./src/utils/model.ts","./src/utils/playwright-report-parser.ts","./src/utils/playwright-test-id.ts","./src/utils/repo-tree.ts","./src/utils/slug.ts","./src/utils/string.ts","./src/utils/stripAnsi.ts","./src/utils/url-validation.ts","./src/utils/dedup/dedup-image.ts","./src/utils/dedup/find-threshold.ts","./src/video-core/index.ts","./src/video-core/model-limits.ts","./src/video-core/storage-manager.ts","./src/video-core/types.ts","./src/video-core/utils.ts"],"version":"5.8.3"}