@empiricalrun/test-gen 0.74.2 → 0.76.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.
Files changed (155) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/agent/base/index.d.ts +43 -0
  3. package/dist/agent/base/index.d.ts.map +1 -0
  4. package/dist/agent/base/index.js +106 -0
  5. package/dist/agent/chat/agent-loop.d.ts +7 -7
  6. package/dist/agent/chat/agent-loop.d.ts.map +1 -1
  7. package/dist/agent/chat/agent-loop.js +5 -18
  8. package/dist/agent/chat/exports.d.ts +6 -4
  9. package/dist/agent/chat/exports.d.ts.map +1 -1
  10. package/dist/agent/chat/exports.js +9 -8
  11. package/dist/agent/chat/index.d.ts +6 -10
  12. package/dist/agent/chat/index.d.ts.map +1 -1
  13. package/dist/agent/chat/index.js +130 -200
  14. package/dist/agent/chat/prompt/index.d.ts +5 -4
  15. package/dist/agent/chat/prompt/index.d.ts.map +1 -1
  16. package/dist/agent/chat/prompt/index.js +79 -68
  17. package/dist/agent/chat/state.d.ts +3 -5
  18. package/dist/agent/chat/state.d.ts.map +1 -1
  19. package/dist/agent/chat/state.js +2 -10
  20. package/dist/agent/chat/utils.d.ts +2 -4
  21. package/dist/agent/chat/utils.d.ts.map +1 -1
  22. package/dist/agent/chat/utils.js +2 -16
  23. package/dist/agent/cli.d.ts +11 -0
  24. package/dist/agent/cli.d.ts.map +1 -0
  25. package/dist/agent/cli.js +209 -0
  26. package/dist/agent/code-review/index.d.ts +7 -0
  27. package/dist/agent/code-review/index.d.ts.map +1 -0
  28. package/dist/agent/code-review/index.js +65 -0
  29. package/dist/agent/code-review/prompt.d.ts +1 -1
  30. package/dist/agent/code-review/prompt.d.ts.map +1 -1
  31. package/dist/agent/code-review/prompt.js +52 -16
  32. package/dist/agent/index.d.ts +10 -0
  33. package/dist/agent/index.d.ts.map +1 -0
  34. package/dist/agent/index.js +19 -0
  35. package/dist/agent/triage/index.d.ts +7 -0
  36. package/dist/agent/triage/index.d.ts.map +1 -0
  37. package/dist/agent/triage/index.js +102 -0
  38. package/dist/agent/video-analysis/index.d.ts +7 -0
  39. package/dist/agent/video-analysis/index.d.ts.map +1 -0
  40. package/dist/agent/video-analysis/index.js +35 -0
  41. package/dist/bin/index.js +6 -6
  42. package/dist/file-info/adapters/github/index.d.ts +2 -2
  43. package/dist/file-info/adapters/github/index.d.ts.map +1 -1
  44. package/dist/file-info/adapters/github/index.js +4 -4
  45. package/dist/file-info/adapters/github/reader.d.ts +5 -10
  46. package/dist/file-info/adapters/github/reader.d.ts.map +1 -1
  47. package/dist/file-info/adapters/github/reader.js +168 -138
  48. package/dist/tools/create-pull-request/index.d.ts.map +1 -0
  49. package/dist/tools/{definitions/commit-and-create-pr.js → create-pull-request/index.js} +30 -1
  50. package/dist/tools/create-pull-request/utils.d.ts +21 -0
  51. package/dist/tools/create-pull-request/utils.d.ts.map +1 -0
  52. package/dist/tools/create-pull-request/utils.js +83 -0
  53. package/dist/tools/definitions/extract-frames-from-video.d.ts +39 -0
  54. package/dist/tools/definitions/extract-frames-from-video.d.ts.map +1 -0
  55. package/dist/tools/definitions/extract-frames-from-video.js +60 -0
  56. package/dist/tools/definitions/fetch-video-analysis.d.ts +28 -0
  57. package/dist/tools/definitions/fetch-video-analysis.d.ts.map +1 -1
  58. package/dist/tools/definitions/fetch-video-analysis.js +39 -4
  59. package/dist/tools/definitions/rename-file.d.ts +3 -0
  60. package/dist/tools/definitions/rename-file.d.ts.map +1 -0
  61. package/dist/tools/definitions/rename-file.js +23 -0
  62. package/dist/tools/delete-file/index.d.ts.map +1 -1
  63. package/dist/tools/delete-file/index.js +13 -1
  64. package/dist/tools/executor/index.d.ts +1 -1
  65. package/dist/tools/executor/index.d.ts.map +1 -1
  66. package/dist/tools/executor/index.js +22 -7
  67. package/dist/tools/executor/utils/checkpoint.d.ts +1 -3
  68. package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -1
  69. package/dist/tools/executor/utils/checkpoint.js +17 -17
  70. package/dist/tools/executor/utils/git.d.ts +9 -1
  71. package/dist/tools/executor/utils/git.d.ts.map +1 -1
  72. package/dist/tools/executor/utils/git.js +72 -2
  73. package/dist/tools/extract-frames-from-video/index.d.ts +7 -0
  74. package/dist/tools/extract-frames-from-video/index.d.ts.map +1 -0
  75. package/dist/tools/extract-frames-from-video/index.js +145 -0
  76. package/dist/tools/{fetch-image → fetch-file}/index.d.ts +2 -2
  77. package/dist/tools/fetch-file/index.d.ts.map +1 -0
  78. package/dist/tools/fetch-file/index.js +97 -0
  79. package/dist/tools/fetch-session-diff/index.d.ts +3 -0
  80. package/dist/tools/fetch-session-diff/index.d.ts.map +1 -0
  81. package/dist/tools/fetch-session-diff/index.js +46 -0
  82. package/dist/tools/fetch-video-analysis/index.d.ts +3 -3
  83. package/dist/tools/fetch-video-analysis/index.d.ts.map +1 -1
  84. package/dist/tools/fetch-video-analysis/index.js +84 -24
  85. package/dist/tools/fetch-video-analysis/open-ai.d.ts +6 -0
  86. package/dist/tools/fetch-video-analysis/open-ai.d.ts.map +1 -0
  87. package/dist/tools/fetch-video-analysis/open-ai.js +37 -0
  88. package/dist/tools/fetch-video-analysis/utils.d.ts +9 -3
  89. package/dist/tools/fetch-video-analysis/utils.d.ts.map +1 -1
  90. package/dist/tools/fetch-video-analysis/utils.js +64 -15
  91. package/dist/tools/fetch-video-analysis/video-analysis.d.ts +2 -2
  92. package/dist/tools/fetch-video-analysis/video-analysis.d.ts.map +1 -1
  93. package/dist/tools/fetch-video-analysis/video-analysis.js +24 -8
  94. package/dist/tools/file-operations/create.d.ts.map +1 -1
  95. package/dist/tools/file-operations/create.js +6 -3
  96. package/dist/tools/file-operations/insert.d.ts.map +1 -1
  97. package/dist/tools/file-operations/insert.js +6 -3
  98. package/dist/tools/file-operations/replace.d.ts.map +1 -1
  99. package/dist/tools/file-operations/replace.js +6 -3
  100. package/dist/tools/file-operations/shared/git-helper.d.ts.map +1 -1
  101. package/dist/tools/file-operations/shared/git-helper.js +1 -1
  102. package/dist/tools/file-operations/view/index.d.ts +2 -5
  103. package/dist/tools/file-operations/view/index.d.ts.map +1 -1
  104. package/dist/tools/file-operations/view/index.js +2 -22
  105. package/dist/tools/index.d.ts +28 -2
  106. package/dist/tools/index.d.ts.map +1 -1
  107. package/dist/tools/index.js +50 -22
  108. package/dist/tools/issues/update-issue.d.ts.map +1 -1
  109. package/dist/tools/issues/update-issue.js +16 -9
  110. package/dist/tools/merge-conflicts/index.js +1 -1
  111. package/dist/tools/rename-file/index.d.ts +3 -0
  112. package/dist/tools/rename-file/index.d.ts.map +1 -0
  113. package/dist/tools/rename-file/index.js +88 -0
  114. package/dist/tools/review-pull-request/index.d.ts +3 -0
  115. package/dist/tools/review-pull-request/index.d.ts.map +1 -0
  116. package/dist/tools/review-pull-request/index.js +103 -0
  117. package/dist/tools/run-test.js +2 -2
  118. package/dist/tools/test-run-fetcher/index.d.ts.map +1 -1
  119. package/dist/tools/test-run-fetcher/index.js +4 -14
  120. package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
  121. package/dist/tools/trace-dot-zip/index.js +2 -1
  122. package/dist/tools/trace-dot-zip/types.d.ts +35 -3
  123. package/dist/tools/trace-dot-zip/types.d.ts.map +1 -1
  124. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts +7 -2
  125. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -1
  126. package/dist/tools/trace-dot-zip/utils/network-trace.js +130 -10
  127. package/dist/tools/upgrade-packages/index.js +1 -1
  128. package/dist/tools/utils/urls.d.ts +5 -0
  129. package/dist/tools/utils/urls.d.ts.map +1 -0
  130. package/dist/tools/utils/urls.js +19 -0
  131. package/dist/tools/view-failed-test-run-report/index.d.ts.map +1 -1
  132. package/dist/tools/view-failed-test-run-report/index.js +3 -15
  133. package/dist/utils/file.d.ts +1 -0
  134. package/dist/utils/file.d.ts.map +1 -1
  135. package/dist/utils/file.js +45 -1
  136. package/dist/utils/index.d.ts +0 -1
  137. package/dist/utils/index.d.ts.map +1 -1
  138. package/dist/utils/index.js +1 -3
  139. package/dist/utils/local-ffmpeg-client.d.ts +27 -0
  140. package/dist/utils/local-ffmpeg-client.d.ts.map +1 -0
  141. package/dist/{tools/fetch-video-analysis → utils}/local-ffmpeg-client.js +117 -27
  142. package/package.json +5 -5
  143. package/tsconfig.tsbuildinfo +1 -1
  144. package/dist/agent/chat/utils/tool-calls.d.ts +0 -21
  145. package/dist/agent/chat/utils/tool-calls.d.ts.map +0 -1
  146. package/dist/agent/chat/utils/tool-calls.js +0 -64
  147. package/dist/tools/commit-and-create-pr/index.d.ts.map +0 -1
  148. package/dist/tools/commit-and-create-pr/index.js +0 -83
  149. package/dist/tools/definitions/commit-and-create-pr.d.ts +0 -3
  150. package/dist/tools/definitions/commit-and-create-pr.d.ts.map +0 -1
  151. package/dist/tools/fetch-image/index.d.ts.map +0 -1
  152. package/dist/tools/fetch-image/index.js +0 -63
  153. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts +0 -24
  154. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts.map +0 -1
  155. /package/dist/tools/{commit-and-create-pr → create-pull-request}/index.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.76.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 9c9d6e5: feat: code review basic agent
8
+ - ee8ce00: feat: fetchVideoAnalysis multi modal tool response
9
+ - 86a1549: feat: code review agent v1 with workflow as an ad hoc tool call
10
+ - 5339d2c: feat: VideoAnalysisAgent working in CLI with extractFrames tool
11
+
12
+ ### Patch Changes
13
+
14
+ - a6aa6d8: fix: bug where video analysis was set to empty string
15
+ - @empiricalrun/llm@0.22.0
16
+ - @empiricalrun/test-run@0.11.1
17
+
18
+ ## 0.75.0
19
+
20
+ ### Minor Changes
21
+
22
+ - dde3517: feat: trace zip req & res body update from network trace
23
+ - 8668785: feat: enabled params for video analysis tool
24
+
25
+ ### Patch Changes
26
+
27
+ - 8c1935f: chore: feature flag in fetchVideo tool, UI changes to accomodate analysis on click with params
28
+ - ab1be01: chore: introduce agent class
29
+ - 9f1cb66: chore: enable none as flag value, lint changes
30
+ - 1a7f487: fix: truncating the request body before appending to req res content in trace zip tool
31
+ - e3f7028: feat: add ff to allow video analysis in test-gen session (admin only)
32
+ - Updated dependencies [2a06e9b]
33
+ - Updated dependencies [9f1cb66]
34
+ - Updated dependencies [9fb0ba1]
35
+ - Updated dependencies [8668785]
36
+ - @empiricalrun/llm@0.22.0
37
+ - @empiricalrun/test-run@0.11.1
38
+ - @empiricalrun/r2-uploader@0.3.11
39
+
3
40
  ## 0.74.2
4
41
 
5
42
  ### Patch Changes
@@ -0,0 +1,43 @@
1
+ import { type IChatModel } from "@empiricalrun/llm/chat";
2
+ import type { CanonicalMessage, ChatState, FileInfo, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition, ToolResult, TraceClient } from "@empiricalrun/shared-types";
3
+ type RunLoopParams<T> = {
4
+ messages: CanonicalMessage[];
5
+ reporter: ReporterFunction;
6
+ streamingMessageReporter?: StreamingMessageReporterFunc;
7
+ trace?: TraceClient;
8
+ signal?: AbortSignal;
9
+ onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
10
+ onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
11
+ repoInfoBuilder?: () => Promise<FileInfo>;
12
+ };
13
+ export type AgentParams = {
14
+ selectedModel: SupportedChatModels;
15
+ featureFlags?: string[];
16
+ workerEnv?: Record<string, string>;
17
+ };
18
+ export declare abstract class BaseAgent {
19
+ featureFlags: string[];
20
+ tools: ToolDefinition[];
21
+ selectedModel: SupportedChatModels;
22
+ protected chatModel?: IChatModel<any>;
23
+ protected workerEnv?: Record<string, string>;
24
+ protected currentChatState?: ChatState;
25
+ constructor({ featureFlags, selectedModel, workerEnv }: AgentParams);
26
+ protected abstract getTools(): ToolDefinition[];
27
+ protected abstract buildSystemPrompt(repoContext?: string): Promise<string>;
28
+ get messages(): CanonicalMessage[] | undefined;
29
+ get askUserForInput(): boolean | undefined;
30
+ private rejectPendingToolCallsAndUpdateState;
31
+ private processValidToolCallsAndUpdateState;
32
+ initializeWithState(chatState: ChatState): void;
33
+ stop(): ChatState;
34
+ processToolCallsFromState({ toolCalls, toolResults, chatState, }: {
35
+ toolCalls: PendingToolCall[];
36
+ toolResults: ToolResult[];
37
+ chatState: ChatState;
38
+ }): ChatState | undefined;
39
+ processToolResults(toolCalls: PendingToolCall[], toolResults: ToolResult[]): ChatState | undefined;
40
+ runLoop(params: RunLoopParams<any>): Promise<void>;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAOpC,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,mBAAmB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,mBAAmB,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC;AAEF,8BAAsB,SAAS;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAM;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;gBAE3B,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,WAAW;IAOnE,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,cAAc,EAAE;IAC/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE3E,IAAI,QAAQ,IAAI,gBAAgB,EAAE,GAAG,SAAS,CAE7C;IAED,IAAI,eAAe,IAAI,OAAO,GAAG,SAAS,CAEzC;IAED,OAAO,CAAC,oCAAoC;IA4B5C,OAAO,CAAC,mCAAmC;IA6B3C,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAS/C,IAAI,IAAI,SAAS;IAWjB,yBAAyB,CAAC,EACxB,SAAS,EACT,WAAW,EACX,SAAS,GACV,EAAE;QACD,SAAS,EAAE,eAAe,EAAE,CAAC;QAC7B,WAAW,EAAE,UAAU,EAAE,CAAC;QAC1B,SAAS,EAAE,SAAS,CAAC;KACtB,GAAG,SAAS,GAAG,SAAS;IAUzB,kBAAkB,CAChB,SAAS,EAAE,eAAe,EAAE,EAC5B,WAAW,EAAE,UAAU,EAAE,GACxB,SAAS,GAAG,SAAS;IAalB,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;CAqBzC"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseAgent = void 0;
4
+ const chat_1 = require("@empiricalrun/llm/chat");
5
+ const agent_loop_1 = require("../chat/agent-loop");
6
+ const repo_1 = require("../chat/prompt/repo");
7
+ const REJECTION_RESULT = "This tool call was rejected by the user.";
8
+ class BaseAgent {
9
+ featureFlags = [];
10
+ tools = [];
11
+ selectedModel;
12
+ chatModel;
13
+ workerEnv;
14
+ currentChatState;
15
+ constructor({ featureFlags, selectedModel, workerEnv }) {
16
+ this.featureFlags = featureFlags || [];
17
+ this.selectedModel = selectedModel;
18
+ this.workerEnv = workerEnv;
19
+ this.tools = this.getTools();
20
+ }
21
+ get messages() {
22
+ return this.chatModel?.messages;
23
+ }
24
+ get askUserForInput() {
25
+ return this.chatModel?.askUserForInput;
26
+ }
27
+ rejectPendingToolCallsAndUpdateState(chatModel, chatState) {
28
+ const pendingToolCalls = chatModel.getPendingToolCalls();
29
+ let updatedChatState = {
30
+ ...chatState,
31
+ messages: chatModel.messages,
32
+ askUserForInput: true,
33
+ };
34
+ if (pendingToolCalls.length > 0) {
35
+ const toolResults = pendingToolCalls.map(() => ({
36
+ isError: true,
37
+ result: REJECTION_RESULT,
38
+ artifacts: null,
39
+ }));
40
+ chatModel.pushToolResultsMessage(pendingToolCalls, toolResults);
41
+ updatedChatState = {
42
+ ...updatedChatState,
43
+ messages: chatModel.messages,
44
+ };
45
+ }
46
+ return updatedChatState;
47
+ }
48
+ processValidToolCallsAndUpdateState(chatModel, chatState, toolCalls, toolResults) {
49
+ const pendingToolCalls = chatModel.getPendingToolCalls() || [];
50
+ // Filter tool calls to only include pending ones
51
+ const filteredToolResults = [];
52
+ const filteredToolCalls = toolCalls.filter((call, index) => {
53
+ if (pendingToolCalls.some((p) => p.id === call.id)) {
54
+ filteredToolResults.push(toolResults[index]);
55
+ return true;
56
+ }
57
+ return false;
58
+ });
59
+ if (filteredToolCalls.length > 0) {
60
+ chatModel.pushToolResultsMessage(filteredToolCalls, filteredToolResults);
61
+ return {
62
+ ...chatState,
63
+ messages: chatModel.messages,
64
+ askUserForInput: chatModel.askUserForInput,
65
+ };
66
+ }
67
+ return undefined;
68
+ }
69
+ initializeWithState(chatState) {
70
+ this.currentChatState = chatState;
71
+ this.chatModel = (0, chat_1.createChatModel)(chatState.messages, this.selectedModel, this.workerEnv);
72
+ }
73
+ stop() {
74
+ if (!this.chatModel || !this.currentChatState) {
75
+ throw new Error("Agent not initialized - call initializeWithState first");
76
+ }
77
+ return this.rejectPendingToolCallsAndUpdateState(this.chatModel, this.currentChatState);
78
+ }
79
+ processToolCallsFromState({ toolCalls, toolResults, chatState, }) {
80
+ const tempChatModel = (0, chat_1.createChatModel)(chatState.messages, chatState.model);
81
+ return this.processValidToolCallsAndUpdateState(tempChatModel, chatState, toolCalls, toolResults);
82
+ }
83
+ processToolResults(toolCalls, toolResults) {
84
+ if (!this.chatModel || !this.currentChatState) {
85
+ throw new Error("Agent not initialized - call initializeWithState first");
86
+ }
87
+ return this.processValidToolCallsAndUpdateState(this.chatModel, this.currentChatState, toolCalls, toolResults);
88
+ }
89
+ async runLoop(params) {
90
+ this.chatModel = (0, chat_1.createChatModel)(params.messages, this.selectedModel, this.workerEnv);
91
+ let repoContext;
92
+ if (params.repoInfoBuilder) {
93
+ const repoInfo = await params.repoInfoBuilder();
94
+ repoContext = await (0, repo_1.getRepoInfoPrompt)(repoInfo);
95
+ }
96
+ const systemPrompt = await this.buildSystemPrompt(repoContext);
97
+ await (0, agent_loop_1.chatAgentLoop)({
98
+ ...params,
99
+ chatModel: this.chatModel,
100
+ tools: this.tools,
101
+ systemPrompt,
102
+ featureFlags: this.featureFlags,
103
+ });
104
+ }
105
+ }
106
+ exports.BaseAgent = BaseAgent;
@@ -1,18 +1,18 @@
1
1
  import { TraceClient } from "@empiricalrun/llm";
2
2
  import { IChatModel } from "@empiricalrun/llm/chat";
3
- import { CanonicalMessage, FileInfo, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition } from "@empiricalrun/shared-types";
4
- export declare function chatAgentLoop<T = CanonicalMessage>({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, repoInfo, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, mode, }: {
3
+ import { CanonicalMessage, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition } from "@empiricalrun/shared-types";
4
+ type AgentLoopParams<T> = {
5
5
  chatModel: IChatModel<T>;
6
- selectedModel: SupportedChatModels;
7
6
  reporter: ReporterFunction;
8
7
  streamingMessageReporter?: StreamingMessageReporterFunc;
9
8
  trace?: TraceClient;
10
- repoInfo: FileInfo;
11
9
  signal?: AbortSignal;
12
10
  featureFlags: string[];
13
- tools?: ToolDefinition[];
11
+ tools: ToolDefinition[];
14
12
  onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
15
13
  onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
16
- mode: string;
17
- }): Promise<void>;
14
+ systemPrompt: string;
15
+ };
16
+ export declare function chatAgentLoop<T = CanonicalMessage>({ chatModel, reporter, streamingMessageReporter, trace, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, systemPrompt, }: AgentLoopParams<T>): Promise<void>;
17
+ export {};
18
18
  //# sourceMappingURL=agent-loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAOpC,wBAAsB,aAAa,CAAC,CAAC,GAAG,gBAAgB,EAAE,EACxD,SAAS,EACT,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,IAAI,GACL,EAAE;IACD,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,mBAAmB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhB"}
1
+ {"version":3,"file":"agent-loop.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAKpC,KAAK,eAAe,CAAC,CAAC,IAAI;IACxB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,wBAAwB,CAAC,EAAE,4BAA4B,CAAC;IACxD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,CACd,QAAQ,EAAE,CAAC,EACX,aAAa,EAAE,mBAAmB,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAsB,aAAa,CAAC,CAAC,GAAG,gBAAgB,EAAE,EACxD,SAAS,EACT,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDpC"}
@@ -1,17 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.chatAgentLoop = chatAgentLoop;
4
- const tools_1 = require("../../tools");
5
- const prompt_1 = require("./prompt");
6
4
  const state_1 = require("./state");
7
5
  const utils_1 = require("./utils");
8
- async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, repoInfo, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, mode, }) {
9
- const systemPrompt = await (0, prompt_1.getSystemPrompt)(repoInfo, mode);
6
+ async function chatAgentLoop({ chatModel, reporter, streamingMessageReporter, trace, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, systemPrompt, }) {
10
7
  trace?.update({ input: { systemPrompt } });
11
- if (!mode && !tools) {
12
- throw new Error("Either mode or tools must be provided");
13
- }
14
- const availableToolsData = tools || (0, tools_1.availableTools)(selectedModel, mode === "triage");
15
8
  while (!chatModel.askUserForInput) {
16
9
  if (signal?.aborted) {
17
10
  (0, utils_1.log)("[chatAgentLoop] Aborted by signal");
@@ -23,11 +16,10 @@ async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMess
23
16
  await onPendingToolCall(toolCalls);
24
17
  break;
25
18
  }
26
- (0, utils_1.log)(`${(0, utils_1.getModelName)(selectedModel)} is working...`);
19
+ (0, utils_1.log)(`${(0, utils_1.getModelName)(chatModel.selectedModel)} is working...`);
27
20
  const response = await chatModel.getLLMResponse({
28
21
  systemPrompt,
29
- tools: availableToolsData.map((t) => t.schema),
30
- selectedModel,
22
+ tools: tools.map((t) => t.schema),
31
23
  trace,
32
24
  streamingMessageReporter,
33
25
  hasThinkingEnabled: true,
@@ -38,24 +30,19 @@ async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMess
38
30
  }
39
31
  chatModel.pushMessage(response);
40
32
  if (onLLMResponse) {
41
- await onLLMResponse(response, selectedModel);
33
+ await onLLMResponse(response, chatModel.selectedModel);
42
34
  }
43
35
  const latest = chatModel.getHumanReadableLatestMessage();
44
36
  if (signal?.aborted) {
45
37
  (0, utils_1.log)("[chatAgentLoop] Aborted by signal");
46
38
  break;
47
39
  }
48
- await reporter((0, state_1.chatStateFromModel)({
49
- chatModel,
50
- selectedModel,
51
- error: null,
52
- }), latest);
40
+ await reporter((0, state_1.chatStateFromModel)({ chatModel, error: null }), latest);
53
41
  }
54
42
  catch (error) {
55
43
  await (0, utils_1.handleAgentError)({
56
44
  error,
57
45
  chatModel,
58
- selectedModel,
59
46
  reporter,
60
47
  trace,
61
48
  });
@@ -1,10 +1,12 @@
1
1
  export { getFileInfoFromGitHub, viewFileUsingGitHub, } from "../../file-info/adapters/github";
2
2
  export { allToolsDefinitions } from "../../tools";
3
- export { chatAgentLoop } from "./agent-loop";
3
+ export { BaseAgent } from "../base";
4
+ export { MODE_TO_AGENT_MAP } from "../index";
5
+ export { TriageAgent } from "../triage";
6
+ export { ChatAgent } from "./index";
4
7
  export { getDefaultChatModelId, resolveChatModelBasedOnInput } from "./models";
5
- export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages, fetchToolCallFromId, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, processAttachments, } from "./state";
6
- export { extractAttachments, getChatAgentMode } from "./utils";
7
- export { processToolCallsAndUpdateChatState, rejectPendingToolCalls, } from "./utils/tool-calls";
8
+ export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages, fetchToolCallFromId, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, } from "./state";
9
+ export { extractAttachments } from "./utils";
8
10
  export type { IChatModel } from "@empiricalrun/llm/chat";
9
11
  export { createChatModel, SUPPORTED_CHAT_MODELS } from "@empiricalrun/llm/chat";
10
12
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EACL,kCAAkC,EAClC,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EACL,kCAAkC,EAClC,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,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,13 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = exports.rejectPendingToolCalls = exports.processToolCallsAndUpdateChatState = exports.getChatAgentMode = exports.extractAttachments = exports.processAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallFromId = exports.createChatStateForMessages = exports.createChatState = exports.chatStateFromModel = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = exports.resolveChatModelBasedOnInput = exports.getDefaultChatModelId = exports.chatAgentLoop = exports.allToolsDefinitions = exports.viewFileUsingGitHub = exports.getFileInfoFromGitHub = void 0;
3
+ exports.SUPPORTED_CHAT_MODELS = exports.createChatModel = exports.extractAttachments = exports.migrateChatState = exports.LATEST_CHAT_STATE_VERSION = exports.getLatestDownloadBuildUrl = exports.fetchToolCallFromId = exports.createChatStateForMessages = exports.createChatState = exports.chatStateFromModel = exports.CHAT_STATE_VERSIONS_MIGRATIONS_MAP = exports.resolveChatModelBasedOnInput = exports.getDefaultChatModelId = exports.ChatAgent = exports.TriageAgent = exports.MODE_TO_AGENT_MAP = exports.BaseAgent = exports.allToolsDefinitions = exports.viewFileUsingGitHub = exports.getFileInfoFromGitHub = void 0;
4
4
  var github_1 = require("../../file-info/adapters/github");
5
5
  Object.defineProperty(exports, "getFileInfoFromGitHub", { enumerable: true, get: function () { return github_1.getFileInfoFromGitHub; } });
6
6
  Object.defineProperty(exports, "viewFileUsingGitHub", { enumerable: true, get: function () { return github_1.viewFileUsingGitHub; } });
7
7
  var tools_1 = require("../../tools");
8
8
  Object.defineProperty(exports, "allToolsDefinitions", { enumerable: true, get: function () { return tools_1.allToolsDefinitions; } });
9
- var agent_loop_1 = require("./agent-loop");
10
- Object.defineProperty(exports, "chatAgentLoop", { enumerable: true, get: function () { return agent_loop_1.chatAgentLoop; } });
9
+ var base_1 = require("../base");
10
+ Object.defineProperty(exports, "BaseAgent", { enumerable: true, get: function () { return base_1.BaseAgent; } });
11
+ var index_1 = require("../index");
12
+ Object.defineProperty(exports, "MODE_TO_AGENT_MAP", { enumerable: true, get: function () { return index_1.MODE_TO_AGENT_MAP; } });
13
+ var triage_1 = require("../triage");
14
+ Object.defineProperty(exports, "TriageAgent", { enumerable: true, get: function () { return triage_1.TriageAgent; } });
15
+ var index_2 = require("./index");
16
+ Object.defineProperty(exports, "ChatAgent", { enumerable: true, get: function () { return index_2.ChatAgent; } });
11
17
  var models_1 = require("./models");
12
18
  Object.defineProperty(exports, "getDefaultChatModelId", { enumerable: true, get: function () { return models_1.getDefaultChatModelId; } });
13
19
  Object.defineProperty(exports, "resolveChatModelBasedOnInput", { enumerable: true, get: function () { return models_1.resolveChatModelBasedOnInput; } });
@@ -20,13 +26,8 @@ Object.defineProperty(exports, "fetchToolCallFromId", { enumerable: true, get: f
20
26
  Object.defineProperty(exports, "getLatestDownloadBuildUrl", { enumerable: true, get: function () { return state_1.getLatestDownloadBuildUrl; } });
21
27
  Object.defineProperty(exports, "LATEST_CHAT_STATE_VERSION", { enumerable: true, get: function () { return state_1.LATEST_CHAT_STATE_VERSION; } });
22
28
  Object.defineProperty(exports, "migrateChatState", { enumerable: true, get: function () { return state_1.migrateChatState; } });
23
- Object.defineProperty(exports, "processAttachments", { enumerable: true, get: function () { return state_1.processAttachments; } });
24
29
  var utils_1 = require("./utils");
25
30
  Object.defineProperty(exports, "extractAttachments", { enumerable: true, get: function () { return utils_1.extractAttachments; } });
26
- Object.defineProperty(exports, "getChatAgentMode", { enumerable: true, get: function () { return utils_1.getChatAgentMode; } });
27
- var tool_calls_1 = require("./utils/tool-calls");
28
- Object.defineProperty(exports, "processToolCallsAndUpdateChatState", { enumerable: true, get: function () { return tool_calls_1.processToolCallsAndUpdateChatState; } });
29
- Object.defineProperty(exports, "rejectPendingToolCalls", { enumerable: true, get: function () { return tool_calls_1.rejectPendingToolCalls; } });
30
31
  var chat_1 = require("@empiricalrun/llm/chat");
31
32
  Object.defineProperty(exports, "createChatModel", { enumerable: true, get: function () { return chat_1.createChatModel; } });
32
33
  Object.defineProperty(exports, "SUPPORTED_CHAT_MODELS", { enumerable: true, get: function () { return chat_1.SUPPORTED_CHAT_MODELS; } });
@@ -1,11 +1,7 @@
1
- import { SupportedChatModels } from "@empiricalrun/shared-types";
2
- export declare function fetchEnvironmentVariables(): Promise<Record<string, string>>;
3
- export declare function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialPromptContent, useTriage, resetChat, useFSCache, }: {
4
- selectedModel: SupportedChatModels;
5
- useDiskForChatState: boolean;
6
- initialPromptContent: string | undefined;
7
- useTriage: boolean;
8
- useFSCache: boolean;
9
- resetChat: boolean;
10
- }): Promise<void>;
1
+ import type { ToolDefinition } from "@empiricalrun/shared-types";
2
+ import { BaseAgent } from "../base";
3
+ export declare class ChatAgent extends BaseAgent {
4
+ protected getTools(): ToolDefinition[];
5
+ protected buildSystemPrompt(repoContext?: string): Promise<string>;
6
+ }
11
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAwCpC,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CACvB,CAkCA;AAED,wBAAsB,kBAAkB,CAAC,EACvC,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,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,iBA2KA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQjE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,qBAAa,SAAU,SAAQ,SAAS;IACtC,SAAS,CAAC,QAAQ,IAAI,cAAc,EAAE;cAmBtB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkHzE"}