@empiricalrun/test-gen 0.74.2 → 0.75.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 (93) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/agent/base/index.d.ts +36 -0
  3. package/dist/agent/base/index.d.ts.map +1 -0
  4. package/dist/agent/base/index.js +74 -0
  5. package/dist/agent/chat/agent-loop.d.ts +4 -5
  6. package/dist/agent/chat/agent-loop.d.ts.map +1 -1
  7. package/dist/agent/chat/agent-loop.js +2 -9
  8. package/dist/agent/chat/exports.d.ts +3 -3
  9. package/dist/agent/chat/exports.d.ts.map +1 -1
  10. package/dist/agent/chat/exports.js +5 -5
  11. package/dist/agent/chat/index.d.ts.map +1 -1
  12. package/dist/agent/chat/index.js +8 -11
  13. package/dist/agent/chat/state.d.ts +2 -3
  14. package/dist/agent/chat/state.d.ts.map +1 -1
  15. package/dist/agent/chat/state.js +0 -8
  16. package/dist/agent/chat/utils.d.ts +0 -1
  17. package/dist/agent/chat/utils.d.ts.map +1 -1
  18. package/dist/agent/chat/utils.js +1 -14
  19. package/dist/file-info/adapters/github/index.d.ts +2 -2
  20. package/dist/file-info/adapters/github/index.d.ts.map +1 -1
  21. package/dist/file-info/adapters/github/index.js +3 -2
  22. package/dist/file-info/adapters/github/reader.d.ts +3 -3
  23. package/dist/file-info/adapters/github/reader.d.ts.map +1 -1
  24. package/dist/file-info/adapters/github/reader.js +17 -16
  25. package/dist/tools/commit-and-create-pr/index.js +1 -1
  26. package/dist/tools/definitions/fetch-video-analysis.d.ts +28 -0
  27. package/dist/tools/definitions/fetch-video-analysis.d.ts.map +1 -1
  28. package/dist/tools/definitions/fetch-video-analysis.js +39 -4
  29. package/dist/tools/definitions/rename-file.d.ts +3 -0
  30. package/dist/tools/definitions/rename-file.d.ts.map +1 -0
  31. package/dist/tools/definitions/rename-file.js +23 -0
  32. package/dist/tools/delete-file/index.d.ts.map +1 -1
  33. package/dist/tools/delete-file/index.js +13 -1
  34. package/dist/tools/executor/index.d.ts.map +1 -1
  35. package/dist/tools/executor/index.js +4 -3
  36. package/dist/tools/executor/utils/checkpoint.d.ts +1 -3
  37. package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -1
  38. package/dist/tools/executor/utils/checkpoint.js +17 -17
  39. package/dist/tools/executor/utils/git.d.ts +9 -1
  40. package/dist/tools/executor/utils/git.d.ts.map +1 -1
  41. package/dist/tools/executor/utils/git.js +72 -2
  42. package/dist/tools/{fetch-image → fetch-file}/index.d.ts +2 -2
  43. package/dist/tools/fetch-file/index.d.ts.map +1 -0
  44. package/dist/tools/fetch-file/index.js +97 -0
  45. package/dist/tools/fetch-video-analysis/index.d.ts +3 -3
  46. package/dist/tools/fetch-video-analysis/index.d.ts.map +1 -1
  47. package/dist/tools/fetch-video-analysis/index.js +71 -22
  48. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts +8 -9
  49. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts.map +1 -1
  50. package/dist/tools/fetch-video-analysis/local-ffmpeg-client.js +55 -17
  51. package/dist/tools/fetch-video-analysis/open-ai.d.ts +6 -0
  52. package/dist/tools/fetch-video-analysis/open-ai.d.ts.map +1 -0
  53. package/dist/tools/fetch-video-analysis/open-ai.js +37 -0
  54. package/dist/tools/fetch-video-analysis/utils.d.ts +6 -3
  55. package/dist/tools/fetch-video-analysis/utils.d.ts.map +1 -1
  56. package/dist/tools/fetch-video-analysis/utils.js +41 -15
  57. package/dist/tools/fetch-video-analysis/video-analysis.js +1 -1
  58. package/dist/tools/file-operations/create.d.ts.map +1 -1
  59. package/dist/tools/file-operations/create.js +6 -3
  60. package/dist/tools/file-operations/insert.d.ts.map +1 -1
  61. package/dist/tools/file-operations/insert.js +6 -3
  62. package/dist/tools/file-operations/replace.d.ts.map +1 -1
  63. package/dist/tools/file-operations/replace.js +6 -3
  64. package/dist/tools/file-operations/shared/git-helper.d.ts.map +1 -1
  65. package/dist/tools/file-operations/shared/git-helper.js +1 -1
  66. package/dist/tools/file-operations/view/index.d.ts +2 -5
  67. package/dist/tools/file-operations/view/index.d.ts.map +1 -1
  68. package/dist/tools/file-operations/view/index.js +2 -22
  69. package/dist/tools/index.d.ts +1 -1
  70. package/dist/tools/index.d.ts.map +1 -1
  71. package/dist/tools/index.js +14 -4
  72. package/dist/tools/issues/update-issue.d.ts.map +1 -1
  73. package/dist/tools/issues/update-issue.js +16 -9
  74. package/dist/tools/merge-conflicts/index.js +1 -1
  75. package/dist/tools/rename-file/index.d.ts +3 -0
  76. package/dist/tools/rename-file/index.d.ts.map +1 -0
  77. package/dist/tools/rename-file/index.js +88 -0
  78. package/dist/tools/run-test.js +2 -2
  79. package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
  80. package/dist/tools/trace-dot-zip/index.js +2 -1
  81. package/dist/tools/trace-dot-zip/types.d.ts +35 -3
  82. package/dist/tools/trace-dot-zip/types.d.ts.map +1 -1
  83. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts +7 -2
  84. package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -1
  85. package/dist/tools/trace-dot-zip/utils/network-trace.js +130 -10
  86. package/dist/tools/upgrade-packages/index.js +1 -1
  87. package/dist/utils/index.d.ts +0 -1
  88. package/dist/utils/index.d.ts.map +1 -1
  89. package/dist/utils/index.js +1 -3
  90. package/package.json +5 -5
  91. package/tsconfig.tsbuildinfo +1 -1
  92. package/dist/tools/fetch-image/index.d.ts.map +0 -1
  93. package/dist/tools/fetch-image/index.js +0 -63
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.75.0
4
+
5
+ ### Minor Changes
6
+
7
+ - dde3517: feat: trace zip req & res body update from network trace
8
+ - 8668785: feat: enabled params for video analysis tool
9
+
10
+ ### Patch Changes
11
+
12
+ - 8c1935f: chore: feature flag in fetchVideo tool, UI changes to accomodate analysis on click with params
13
+ - ab1be01: chore: introduce agent class
14
+ - 9f1cb66: chore: enable none as flag value, lint changes
15
+ - 1a7f487: fix: truncating the request body before appending to req res content in trace zip tool
16
+ - e3f7028: feat: add ff to allow video analysis in test-gen session (admin only)
17
+ - Updated dependencies [2a06e9b]
18
+ - Updated dependencies [9f1cb66]
19
+ - Updated dependencies [9fb0ba1]
20
+ - Updated dependencies [8668785]
21
+ - @empiricalrun/llm@0.22.0
22
+ - @empiricalrun/test-run@0.11.1
23
+ - @empiricalrun/r2-uploader@0.3.11
24
+
3
25
  ## 0.74.2
4
26
 
5
27
  ### Patch Changes
@@ -0,0 +1,36 @@
1
+ import { IChatModel } from "@empiricalrun/llm/chat";
2
+ import { FileInfo, PendingToolCall, ReporterFunction, StreamingMessageReporterFunc, SupportedChatModels, ToolDefinition, TraceClient } from "@empiricalrun/shared-types";
3
+ type RunLoopParams<T> = {
4
+ chatModel: IChatModel<T>;
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
+ };
12
+ export declare const getChatAgentMode: (source: string | undefined) => "triage" | "test_generation";
13
+ type AgentParams = {
14
+ featureFlags: string[];
15
+ selectedModel: SupportedChatModels;
16
+ repoInfo: FileInfo;
17
+ };
18
+ export declare function getAgentForMode(isTriage: boolean, params: AgentParams): TriageAgent | ChatAgent;
19
+ export declare class ChatAgent {
20
+ featureFlags: string[];
21
+ tools: ToolDefinition[];
22
+ selectedModel: SupportedChatModels;
23
+ repoInfo: FileInfo;
24
+ constructor({ featureFlags, selectedModel, repoInfo }: AgentParams);
25
+ runLoop(params: RunLoopParams<any>): Promise<void>;
26
+ }
27
+ export declare class TriageAgent {
28
+ featureFlags: string[];
29
+ tools: ToolDefinition[];
30
+ selectedModel: SupportedChatModels;
31
+ repoInfo: FileInfo;
32
+ constructor({ featureFlags, selectedModel, repoInfo }: AgentParams);
33
+ runLoop(params: RunLoopParams<any>): Promise<void>;
34
+ }
35
+ export {};
36
+ //# 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,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,4BAA4B,EAC5B,mBAAmB,EACnB,cAAc,EACd,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAMpC,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,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,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;CACpB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,GAAG,SAAS,iCAW1D,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,2BAMrE;AAED,qBAAa,SAAS;IACpB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAM;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,QAAQ,CAAC;gBAEP,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW;IAO5D,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;CAUzC;AAED,qBAAa,WAAW;IACtB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAM;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,QAAQ,CAAC;gBAEP,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,WAAW;IAO5D,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;CAUzC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TriageAgent = exports.ChatAgent = exports.getChatAgentMode = void 0;
4
+ exports.getAgentForMode = getAgentForMode;
5
+ const tools_1 = require("../../tools");
6
+ const agent_loop_1 = require("../chat/agent-loop");
7
+ const prompt_1 = require("../chat/prompt");
8
+ const getChatAgentMode = (source) => {
9
+ switch (source) {
10
+ case "triage":
11
+ return "triage";
12
+ case "dashboard":
13
+ return "test_generation";
14
+ case "manual":
15
+ return "test_generation";
16
+ default:
17
+ return "test_generation";
18
+ }
19
+ };
20
+ exports.getChatAgentMode = getChatAgentMode;
21
+ function getAgentForMode(isTriage, params) {
22
+ if (isTriage) {
23
+ return new TriageAgent(params);
24
+ }
25
+ else {
26
+ return new ChatAgent(params);
27
+ }
28
+ }
29
+ class ChatAgent {
30
+ featureFlags = [];
31
+ tools = [];
32
+ selectedModel;
33
+ repoInfo;
34
+ constructor({ featureFlags, selectedModel, repoInfo }) {
35
+ this.featureFlags = featureFlags;
36
+ this.tools = (0, tools_1.availableTools)(selectedModel, false, []);
37
+ this.selectedModel = selectedModel;
38
+ this.repoInfo = repoInfo;
39
+ }
40
+ async runLoop(params) {
41
+ const mode = (0, exports.getChatAgentMode)("test_generation");
42
+ return (0, agent_loop_1.chatAgentLoop)({
43
+ ...params,
44
+ tools: this.tools,
45
+ selectedModel: this.selectedModel,
46
+ systemPrompt: await (0, prompt_1.getSystemPrompt)(this.repoInfo, mode),
47
+ featureFlags: this.featureFlags,
48
+ });
49
+ }
50
+ }
51
+ exports.ChatAgent = ChatAgent;
52
+ class TriageAgent {
53
+ featureFlags = [];
54
+ tools = [];
55
+ selectedModel;
56
+ repoInfo;
57
+ constructor({ featureFlags, selectedModel, repoInfo }) {
58
+ this.featureFlags = featureFlags;
59
+ this.tools = (0, tools_1.availableTools)(selectedModel, true, []);
60
+ this.selectedModel = selectedModel;
61
+ this.repoInfo = repoInfo;
62
+ }
63
+ async runLoop(params) {
64
+ const mode = (0, exports.getChatAgentMode)("triage");
65
+ return (0, agent_loop_1.chatAgentLoop)({
66
+ ...params,
67
+ tools: this.tools,
68
+ selectedModel: this.selectedModel,
69
+ systemPrompt: await (0, prompt_1.getSystemPrompt)(this.repoInfo, mode),
70
+ featureFlags: this.featureFlags,
71
+ });
72
+ }
73
+ }
74
+ exports.TriageAgent = TriageAgent;
@@ -1,18 +1,17 @@
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
+ export declare function chatAgentLoop<T = CanonicalMessage>({ chatModel, selectedModel, reporter, streamingMessageReporter, trace, signal, featureFlags, tools, onPendingToolCall, onLLMResponse, systemPrompt, }: {
5
5
  chatModel: IChatModel<T>;
6
6
  selectedModel: SupportedChatModels;
7
7
  reporter: ReporterFunction;
8
8
  streamingMessageReporter?: StreamingMessageReporterFunc;
9
9
  trace?: TraceClient;
10
- repoInfo: FileInfo;
11
10
  signal?: AbortSignal;
12
11
  featureFlags: string[];
13
- tools?: ToolDefinition[];
12
+ tools: ToolDefinition[];
14
13
  onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
15
14
  onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
16
- mode: string;
15
+ systemPrompt: string;
17
16
  }): Promise<void>;
18
17
  //# 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,wBAAsB,aAAa,CAAC,CAAC,GAAG,gBAAgB,EAAE,EACxD,SAAS,EACT,aAAa,EACb,QAAQ,EACR,wBAAwB,EACxB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,YAAY,GACb,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,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,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DhB"}
@@ -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, selectedModel, 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");
@@ -26,7 +19,7 @@ async function chatAgentLoop({ chatModel, selectedModel, reporter, streamingMess
26
19
  (0, utils_1.log)(`${(0, utils_1.getModelName)(selectedModel)} is working...`);
27
20
  const response = await chatModel.getLLMResponse({
28
21
  systemPrompt,
29
- tools: availableToolsData.map((t) => t.schema),
22
+ tools: tools.map((t) => t.schema),
30
23
  selectedModel,
31
24
  trace,
32
25
  streamingMessageReporter,
@@ -1,9 +1,9 @@
1
1
  export { getFileInfoFromGitHub, viewFileUsingGitHub, } from "../../file-info/adapters/github";
2
2
  export { allToolsDefinitions } from "../../tools";
3
- export { chatAgentLoop } from "./agent-loop";
3
+ export { ChatAgent, getAgentForMode, TriageAgent } from "../base";
4
4
  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";
5
+ export { CHAT_STATE_VERSIONS_MIGRATIONS_MAP, chatStateFromModel, createChatState, createChatStateForMessages, fetchToolCallFromId, getLatestDownloadBuildUrl, LATEST_CHAT_STATE_VERSION, migrateChatState, } from "./state";
6
+ export { extractAttachments } from "./utils";
7
7
  export { processToolCallsAndUpdateChatState, rejectPendingToolCalls, } from "./utils/tool-calls";
8
8
  export type { IChatModel } from "@empiricalrun/llm/chat";
9
9
  export { createChatModel, SUPPORTED_CHAT_MODELS } from "@empiricalrun/llm/chat";
@@ -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,eAAe,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClE,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,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,13 +1,15 @@
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.rejectPendingToolCalls = exports.processToolCallsAndUpdateChatState = 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.TriageAgent = exports.getAgentForMode = exports.ChatAgent = 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, "ChatAgent", { enumerable: true, get: function () { return base_1.ChatAgent; } });
11
+ Object.defineProperty(exports, "getAgentForMode", { enumerable: true, get: function () { return base_1.getAgentForMode; } });
12
+ Object.defineProperty(exports, "TriageAgent", { enumerable: true, get: function () { return base_1.TriageAgent; } });
11
13
  var models_1 = require("./models");
12
14
  Object.defineProperty(exports, "getDefaultChatModelId", { enumerable: true, get: function () { return models_1.getDefaultChatModelId; } });
13
15
  Object.defineProperty(exports, "resolveChatModelBasedOnInput", { enumerable: true, get: function () { return models_1.resolveChatModelBasedOnInput; } });
@@ -20,10 +22,8 @@ Object.defineProperty(exports, "fetchToolCallFromId", { enumerable: true, get: f
20
22
  Object.defineProperty(exports, "getLatestDownloadBuildUrl", { enumerable: true, get: function () { return state_1.getLatestDownloadBuildUrl; } });
21
23
  Object.defineProperty(exports, "LATEST_CHAT_STATE_VERSION", { enumerable: true, get: function () { return state_1.LATEST_CHAT_STATE_VERSION; } });
22
24
  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
25
  var utils_1 = require("./utils");
25
26
  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
27
  var tool_calls_1 = require("./utils/tool-calls");
28
28
  Object.defineProperty(exports, "processToolCallsAndUpdateChatState", { enumerable: true, get: function () { return tool_calls_1.processToolCallsAndUpdateChatState; } });
29
29
  Object.defineProperty(exports, "rejectPendingToolCalls", { enumerable: true, get: function () { return tool_calls_1.rejectPendingToolCalls; } });
@@ -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":"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,iBAyKA"}
@@ -11,7 +11,7 @@ const human_in_the_loop_1 = require("../../human-in-the-loop");
11
11
  const validation_1 = require("../../recorder/validation");
12
12
  const executor_1 = require("../../tools/executor");
13
13
  const git_1 = require("../../tools/executor/utils/git");
14
- const agent_loop_1 = require("./agent-loop");
14
+ const base_1 = require("../base");
15
15
  const filesystem_cache_1 = require("./filesystem-cache");
16
16
  const state_1 = require("./state");
17
17
  const utils_1 = require("./utils");
@@ -122,6 +122,11 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
122
122
  const apiClient = new client_1.DashboardAPIClient({
123
123
  authType,
124
124
  });
125
+ const fileInfo = await (0, reader_1.getFileInfoFromFS)(process.cwd());
126
+ const agentParams = { featureFlags: [], repoInfo: fileInfo, selectedModel };
127
+ const agent = useTriage
128
+ ? new base_1.TriageAgent(agentParams)
129
+ : new base_1.ChatAgent(agentParams);
125
130
  while (!stopCriteria(userPrompt)) {
126
131
  if (chatModel.askUserForInput) {
127
132
  try {
@@ -144,10 +149,7 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
144
149
  }
145
150
  if (!stopCriteria(userPrompt)) {
146
151
  const { text, attachments } = (0, utils_1.extractAttachments)(userPrompt);
147
- const processed = attachments.length > 0
148
- ? await chatModel.processAttachments(attachments)
149
- : [];
150
- chatModel.pushUserMessage(text, processed);
152
+ chatModel.pushUserMessage(text, attachments);
151
153
  }
152
154
  }
153
155
  else {
@@ -160,10 +162,8 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
160
162
  featureFlags: [],
161
163
  environmentOverrides: await fetchEnvironmentVariables(),
162
164
  });
163
- const fileInfo = await (0, reader_1.getFileInfoFromFS)(process.cwd());
164
- await (0, agent_loop_1.chatAgentLoop)({
165
+ await agent.runLoop({
165
166
  chatModel,
166
- selectedModel,
167
167
  reporter: reporterFunc,
168
168
  streamingMessageReporter: (() => {
169
169
  if (!enableStreaming) {
@@ -190,13 +190,10 @@ async function runChatAgentForCLI({ useDiskForChatState, selectedModel, initialP
190
190
  };
191
191
  })(),
192
192
  trace,
193
- repoInfo: fileInfo,
194
193
  onPendingToolCall: async (toolCalls) => {
195
194
  const toolResults = await toolExecutor.execute(toolCalls);
196
195
  chatModel.pushToolResultsMessage(toolCalls, toolResults);
197
196
  },
198
- featureFlags: [],
199
- mode: (0, utils_1.getChatAgentMode)(useTriage ? "triage" : "test_generation"),
200
197
  });
201
198
  }
202
199
  }
@@ -1,13 +1,12 @@
1
1
  import { IChatModel } from "@empiricalrun/llm/chat";
2
- import { Attachment, CanonicalMessage, ChatState, ChatStateError, PendingToolCall, ProcessedAttachment, SupportedChatModels, ToolResult } from "@empiricalrun/shared-types";
2
+ import { Attachment, CanonicalMessage, ChatState, ChatStateError, PendingToolCall, SupportedChatModels, ToolResult } 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
6
  export declare function clearChatState(): void;
7
- export declare function processAttachments(attachments: Attachment[], selectedModel: SupportedChatModels): Promise<ProcessedAttachment[]>;
8
7
  export declare function createChatState({ userPrompt, attachments, existingState, selectedModel, error, }: {
9
8
  userPrompt: string | undefined;
10
- attachments: ProcessedAttachment[];
9
+ attachments: Attachment[];
11
10
  existingState: ChatState | undefined;
12
11
  selectedModel: SupportedChatModels;
13
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,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EAEnB,UAAU,EACX,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,cAAc,SAQ7B;AAED,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,gBAAgB,EAAE,CAAC;IAC7B,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,eAAe,CAC7B,SAAS,EAAE,UAAU,CAAC,gBAAgB,CAAC,GACtC,MAAM,CA0BR;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,SAAS,CAarD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,SAAS,CAqBzD;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EACjC,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,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B;IACD,gBAAgB,EAAE,IAAI,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;CACpC,CA0BA"}
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,eAAe,EACf,mBAAmB,EAEnB,UAAU,EACX,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,cAAc,SAQ7B;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,UAAU,EAAE,CAAC;IAC1B,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,gBAAgB,EAAE,CAAC;IAC7B,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,eAAe,CAC7B,SAAS,EAAE,UAAU,CAAC,gBAAgB,CAAC,GACtC,MAAM,CA0BR;AAED,wBAAgB,aAAa,IAAI,SAAS,GAAG,SAAS,CAarD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,SAAS,CAqBzD;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,EACjC,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,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B;IACD,gBAAgB,EAAE,IAAI,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;CACpC,CA0BA"}
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
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
7
  exports.clearChatState = clearChatState;
8
- exports.processAttachments = processAttachments;
9
8
  exports.createChatState = createChatState;
10
9
  exports.createChatStateForMessages = createChatStateForMessages;
11
10
  exports.chatStateFromModel = chatStateFromModel;
@@ -55,13 +54,6 @@ function clearChatState() {
55
54
  // Swallow errors to avoid blocking the CLI; deletion is best-effort
56
55
  }
57
56
  }
58
- async function processAttachments(attachments, selectedModel) {
59
- const chatModel = (0, chat_1.createChatModel)([], selectedModel);
60
- if (attachments.length === 0) {
61
- return [];
62
- }
63
- return chatModel.processAttachments(attachments);
64
- }
65
57
  function createChatState({ userPrompt, attachments, existingState, selectedModel, error, }) {
66
58
  const messages = existingState?.messages || [];
67
59
  const chatModel = (0, chat_1.createChatModel)(messages, selectedModel);
@@ -14,5 +14,4 @@ export declare function extractAttachments(userPrompt: string): {
14
14
  text: string;
15
15
  attachments: Attachment[];
16
16
  };
17
- export declare const getChatAgentMode: (source: string | undefined) => "triage" | "test_generation";
18
17
  //# 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,EACL,UAAU,EAEV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAKpC,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,KAAK,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,GACN,EAAE;IACD,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,iBAgBA;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAsBA;AAED,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,GAAG,SAAS,iCAW1D,CAAC"}
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,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAKpC,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,KAAK,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,GACN,EAAE;IACD,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,iBAgBA;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAsBA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getChatAgentMode = exports.log = void 0;
3
+ exports.log = void 0;
4
4
  exports.getModelName = getModelName;
5
5
  exports.handleAgentError = handleAgentError;
6
6
  exports.extractAttachments = extractAttachments;
@@ -64,16 +64,3 @@ function extractAttachments(userPrompt) {
64
64
  attachments,
65
65
  };
66
66
  }
67
- const getChatAgentMode = (source) => {
68
- switch (source) {
69
- case "triage":
70
- return "triage";
71
- case "dashboard":
72
- return "test_generation";
73
- case "manual":
74
- return "test_generation";
75
- default:
76
- return "test_generation";
77
- }
78
- };
79
- exports.getChatAgentMode = getChatAgentMode;
@@ -1,11 +1,11 @@
1
1
  import { IDashboardAPIClient, ToolResult } from "@empiricalrun/shared-types";
2
2
  import { type StrReplaceInputParams } from "../../../tools/file-operations/shared/helpers";
3
3
  export { getFileInfoFromGitHub } from "./reader";
4
- export declare function viewFileUsingGitHub({ input, filePath, repoName, apiClient, branchName, }: {
4
+ export declare function viewFileUsingGitHub({ input, repoName, apiClient, branchName, baseBranch, }: {
5
5
  input: StrReplaceInputParams;
6
- filePath: string;
7
6
  repoName: string;
8
7
  apiClient: IDashboardAPIClient;
9
8
  branchName: string;
9
+ baseBranch: string;
10
10
  }): Promise<ToolResult>;
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/file-info/adapters/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7E,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAIjD,wBAAsB,mBAAmB,CAAC,EACxC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,GACX,EAAE;IACD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/file-info/adapters/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7E,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAIjD,wBAAsB,mBAAmB,CAAC,EACxC,KAAK,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE;IACD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2BtB"}
@@ -7,9 +7,10 @@ const reader_1 = require("./reader");
7
7
  var reader_2 = require("./reader");
8
8
  Object.defineProperty(exports, "getFileInfoFromGitHub", { enumerable: true, get: function () { return reader_2.getFileInfoFromGitHub; } });
9
9
  const REPO_OWNER = "empirical-run";
10
- async function viewFileUsingGitHub({ input, filePath, repoName, apiClient, branchName, }) {
10
+ async function viewFileUsingGitHub({ input, repoName, apiClient, branchName, baseBranch, }) {
11
+ const filePath = input.path;
11
12
  const githubReader = new reader_1.GitHubFileReader(repoName, apiClient, REPO_OWNER);
12
- const fileData = await githubReader.readFile(filePath, branchName);
13
+ const fileData = await githubReader.readFile(filePath, branchName, baseBranch);
13
14
  if (!fileData) {
14
15
  return {
15
16
  result: `Error: File or directory ${filePath} is not found.`,
@@ -7,10 +7,10 @@ export declare class GitHubFileReader {
7
7
  private fetchFileFromGitHub;
8
8
  private fetchTreeFromGitHub;
9
9
  private resolveBranchName;
10
- readFile(filePath: string, branchName: string): Promise<FileReadResult | null>;
10
+ readFile(filePath: string, branchName: string, baseBranch: string): Promise<FileReadResult | null>;
11
11
  private getFileContent;
12
12
  private getContentsForDirectory;
13
- getFileInfo(branchName: string): Promise<FileInfo>;
13
+ getFileInfo(branchName: string, baseBranch: string): Promise<FileInfo>;
14
14
  }
15
- export declare function getFileInfoFromGitHub(repoName: string, apiClient: IDashboardAPIClient, branchName: string): Promise<FileInfo>;
15
+ export declare function getFileInfoFromGitHub(repoName: string, apiClient: IDashboardAPIClient, branchName: string, baseBranch: string): Promise<FileInfo>;
16
16
  //# sourceMappingURL=reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../../src/file-info/adapters/github/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AA4CpC,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;gBAFT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,mBAAmB,EAC9B,SAAS,EAAE,MAAM;YAGb,mBAAmB;YAUnB,mBAAmB;YASnB,iBAAiB;IAkBzB,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YAmCnB,cAAc;YAiBd,uBAAuB;IAuB/B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CA+EzD;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CAGnB"}
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../../src/file-info/adapters/github/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AA4CpC,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;gBAFT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,mBAAmB,EAC9B,SAAS,EAAE,MAAM;YAGb,mBAAmB;YAUnB,mBAAmB;YASnB,iBAAiB;IAqBzB,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YAmCnB,cAAc;YAkBd,uBAAuB;IAwB/B,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAoF7E;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,CAAC,CAGnB"}
@@ -29,9 +29,9 @@ class GitHubFileReader {
29
29
  url: `/repos/${this.repoOwner}/${this.repoName}/git/trees/${branch}?recursive=1`,
30
30
  }));
31
31
  }
32
- async resolveBranchName(branchName) {
33
- if (!branchName || branchName === "main") {
34
- return "main";
32
+ async resolveBranchName(branchName, baseBranch) {
33
+ if (!branchName || branchName === baseBranch) {
34
+ return baseBranch;
35
35
  }
36
36
  try {
37
37
  // Try to fetch the branch to see if it exists
@@ -42,12 +42,12 @@ class GitHubFileReader {
42
42
  return branchName;
43
43
  }
44
44
  catch {
45
- // Branch doesn't exist, fallback to main
46
- return "main";
45
+ // Branch doesn't exist, fallback to base branch
46
+ return baseBranch;
47
47
  }
48
48
  }
49
- async readFile(filePath, branchName) {
50
- const branch = await this.resolveBranchName(branchName);
49
+ async readFile(filePath, branchName, baseBranch) {
50
+ const branch = await this.resolveBranchName(branchName, baseBranch);
51
51
  const normalizedPath = filePath === "" ? "." : filePath;
52
52
  try {
53
53
  const response = await this.fetchFileFromGitHub(normalizedPath, branch);
@@ -76,8 +76,8 @@ class GitHubFileReader {
76
76
  }
77
77
  return null;
78
78
  }
79
- async getFileContent(path, branchName) {
80
- const branch = await this.resolveBranchName(branchName);
79
+ async getFileContent(path, branchName, baseBranch) {
80
+ const branch = await this.resolveBranchName(branchName, baseBranch);
81
81
  const response = await this.fetchFileFromGitHub(path, branch);
82
82
  const isDirectory = Array.isArray(response);
83
83
  if (isDirectory) {
@@ -88,8 +88,8 @@ class GitHubFileReader {
88
88
  }
89
89
  throw new Error(`Unable to fetch file content for ${path}`);
90
90
  }
91
- async getContentsForDirectory(path, branchName) {
92
- const branch = await this.resolveBranchName(branchName);
91
+ async getContentsForDirectory(path, branchName, baseBranch) {
92
+ const branch = await this.resolveBranchName(branchName, baseBranch);
93
93
  const response = await this.fetchTreeFromGitHub(branch);
94
94
  if (response.tree) {
95
95
  // Convert to expected RepoTree format
@@ -106,8 +106,9 @@ class GitHubFileReader {
106
106
  }
107
107
  throw new Error(`Unable to fetch directory contents for ${path}`);
108
108
  }
109
- async getFileInfo(branchName) {
110
- const files = await this.getContentsForDirectory("", branchName);
109
+ async getFileInfo(branchName, baseBranch) {
110
+ const rootPath = "";
111
+ const files = await this.getContentsForDirectory(rootPath, branchName, baseBranch);
111
112
  const root = [];
112
113
  const nodeMap = {};
113
114
  if (!files) {
@@ -131,7 +132,7 @@ class GitHubFileReader {
131
132
  type: "file",
132
133
  path: currentPath,
133
134
  name: fileName,
134
- getContent: async () => this.getFileContent(currentPath, branchName),
135
+ getContent: async () => this.getFileContent(currentPath, branchName, baseBranch),
135
136
  }
136
137
  : {
137
138
  type: "directory",
@@ -179,7 +180,7 @@ class GitHubFileReader {
179
180
  }
180
181
  }
181
182
  exports.GitHubFileReader = GitHubFileReader;
182
- async function getFileInfoFromGitHub(repoName, apiClient, branchName) {
183
+ async function getFileInfoFromGitHub(repoName, apiClient, branchName, baseBranch) {
183
184
  const fileReader = new GitHubFileReader(repoName, apiClient, REPO_OWNER);
184
- return fileReader.getFileInfo(branchName);
185
+ return fileReader.getFileInfo(branchName, baseBranch);
185
186
  }
@@ -56,7 +56,7 @@ exports.createPullRequestTool = {
56
56
  repo,
57
57
  title: pullRequestTitle,
58
58
  head: branchName,
59
- base: "main",
59
+ base: chatSession?.baseBranchName || "main",
60
60
  body: (0, pr_description_1.addMetadataToPRDescription)(pullRequestDescription, chatSession),
61
61
  apiClient,
62
62
  });
@@ -2,10 +2,38 @@ import { ToolDefinition } from "@empiricalrun/shared-types";
2
2
  import z from "zod";
3
3
  export declare const videoAnalysisSchema: z.ZodObject<{
4
4
  videoUrl: z.ZodString;
5
+ params: z.ZodOptional<z.ZodObject<{
6
+ fps: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
7
+ threshold: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
8
+ model: z.ZodOptional<z.ZodDefault<z.ZodString>>;
9
+ featureFlag: z.ZodOptional<z.ZodDefault<z.ZodEnum<["none", "send-all-frames", "separate-threshold", "ai-based-frames"]>>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ model?: string | undefined;
12
+ fps?: number | undefined;
13
+ threshold?: number | undefined;
14
+ featureFlag?: "none" | "send-all-frames" | "separate-threshold" | "ai-based-frames" | undefined;
15
+ }, {
16
+ model?: string | undefined;
17
+ fps?: number | undefined;
18
+ threshold?: number | undefined;
19
+ featureFlag?: "none" | "send-all-frames" | "separate-threshold" | "ai-based-frames" | undefined;
20
+ }>>;
5
21
  }, "strip", z.ZodTypeAny, {
6
22
  videoUrl: string;
23
+ params?: {
24
+ model?: string | undefined;
25
+ fps?: number | undefined;
26
+ threshold?: number | undefined;
27
+ featureFlag?: "none" | "send-all-frames" | "separate-threshold" | "ai-based-frames" | undefined;
28
+ } | undefined;
7
29
  }, {
8
30
  videoUrl: string;
31
+ params?: {
32
+ model?: string | undefined;
33
+ fps?: number | undefined;
34
+ threshold?: number | undefined;
35
+ featureFlag?: "none" | "send-all-frames" | "separate-threshold" | "ai-based-frames" | undefined;
36
+ } | undefined;
9
37
  }>;
10
38
  export declare const fetchVideoAnalysis: ToolDefinition<z.infer<typeof videoAnalysisSchema>>;
11
39
  //# sourceMappingURL=fetch-video-analysis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-video-analysis.d.ts","sourceRoot":"","sources":["../../../src/tools/definitions/fetch-video-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,mBAAmB;;;;;;EAK9B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAC7C,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAapC,CAAC"}
1
+ {"version":3,"file":"fetch-video-analysis.d.ts","sourceRoot":"","sources":["../../../src/tools/definitions/fetch-video-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2C9B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAC7C,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAcpC,CAAC"}