@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.
- package/CHANGELOG.md +22 -0
- package/dist/agent/base/index.d.ts +36 -0
- package/dist/agent/base/index.d.ts.map +1 -0
- package/dist/agent/base/index.js +74 -0
- package/dist/agent/chat/agent-loop.d.ts +4 -5
- package/dist/agent/chat/agent-loop.d.ts.map +1 -1
- package/dist/agent/chat/agent-loop.js +2 -9
- package/dist/agent/chat/exports.d.ts +3 -3
- package/dist/agent/chat/exports.d.ts.map +1 -1
- package/dist/agent/chat/exports.js +5 -5
- package/dist/agent/chat/index.d.ts.map +1 -1
- package/dist/agent/chat/index.js +8 -11
- package/dist/agent/chat/state.d.ts +2 -3
- package/dist/agent/chat/state.d.ts.map +1 -1
- package/dist/agent/chat/state.js +0 -8
- package/dist/agent/chat/utils.d.ts +0 -1
- package/dist/agent/chat/utils.d.ts.map +1 -1
- package/dist/agent/chat/utils.js +1 -14
- package/dist/file-info/adapters/github/index.d.ts +2 -2
- package/dist/file-info/adapters/github/index.d.ts.map +1 -1
- package/dist/file-info/adapters/github/index.js +3 -2
- package/dist/file-info/adapters/github/reader.d.ts +3 -3
- package/dist/file-info/adapters/github/reader.d.ts.map +1 -1
- package/dist/file-info/adapters/github/reader.js +17 -16
- package/dist/tools/commit-and-create-pr/index.js +1 -1
- package/dist/tools/definitions/fetch-video-analysis.d.ts +28 -0
- package/dist/tools/definitions/fetch-video-analysis.d.ts.map +1 -1
- package/dist/tools/definitions/fetch-video-analysis.js +39 -4
- package/dist/tools/definitions/rename-file.d.ts +3 -0
- package/dist/tools/definitions/rename-file.d.ts.map +1 -0
- package/dist/tools/definitions/rename-file.js +23 -0
- package/dist/tools/delete-file/index.d.ts.map +1 -1
- package/dist/tools/delete-file/index.js +13 -1
- package/dist/tools/executor/index.d.ts.map +1 -1
- package/dist/tools/executor/index.js +4 -3
- package/dist/tools/executor/utils/checkpoint.d.ts +1 -3
- package/dist/tools/executor/utils/checkpoint.d.ts.map +1 -1
- package/dist/tools/executor/utils/checkpoint.js +17 -17
- package/dist/tools/executor/utils/git.d.ts +9 -1
- package/dist/tools/executor/utils/git.d.ts.map +1 -1
- package/dist/tools/executor/utils/git.js +72 -2
- package/dist/tools/{fetch-image → fetch-file}/index.d.ts +2 -2
- package/dist/tools/fetch-file/index.d.ts.map +1 -0
- package/dist/tools/fetch-file/index.js +97 -0
- package/dist/tools/fetch-video-analysis/index.d.ts +3 -3
- package/dist/tools/fetch-video-analysis/index.d.ts.map +1 -1
- package/dist/tools/fetch-video-analysis/index.js +71 -22
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts +8 -9
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.d.ts.map +1 -1
- package/dist/tools/fetch-video-analysis/local-ffmpeg-client.js +55 -17
- package/dist/tools/fetch-video-analysis/open-ai.d.ts +6 -0
- package/dist/tools/fetch-video-analysis/open-ai.d.ts.map +1 -0
- package/dist/tools/fetch-video-analysis/open-ai.js +37 -0
- package/dist/tools/fetch-video-analysis/utils.d.ts +6 -3
- package/dist/tools/fetch-video-analysis/utils.d.ts.map +1 -1
- package/dist/tools/fetch-video-analysis/utils.js +41 -15
- package/dist/tools/fetch-video-analysis/video-analysis.js +1 -1
- package/dist/tools/file-operations/create.d.ts.map +1 -1
- package/dist/tools/file-operations/create.js +6 -3
- package/dist/tools/file-operations/insert.d.ts.map +1 -1
- package/dist/tools/file-operations/insert.js +6 -3
- package/dist/tools/file-operations/replace.d.ts.map +1 -1
- package/dist/tools/file-operations/replace.js +6 -3
- package/dist/tools/file-operations/shared/git-helper.d.ts.map +1 -1
- package/dist/tools/file-operations/shared/git-helper.js +1 -1
- package/dist/tools/file-operations/view/index.d.ts +2 -5
- package/dist/tools/file-operations/view/index.d.ts.map +1 -1
- package/dist/tools/file-operations/view/index.js +2 -22
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +14 -4
- package/dist/tools/issues/update-issue.d.ts.map +1 -1
- package/dist/tools/issues/update-issue.js +16 -9
- package/dist/tools/merge-conflicts/index.js +1 -1
- package/dist/tools/rename-file/index.d.ts +3 -0
- package/dist/tools/rename-file/index.d.ts.map +1 -0
- package/dist/tools/rename-file/index.js +88 -0
- package/dist/tools/run-test.js +2 -2
- package/dist/tools/trace-dot-zip/index.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/index.js +2 -1
- package/dist/tools/trace-dot-zip/types.d.ts +35 -3
- package/dist/tools/trace-dot-zip/types.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/utils/network-trace.d.ts +7 -2
- package/dist/tools/trace-dot-zip/utils/network-trace.d.ts.map +1 -1
- package/dist/tools/trace-dot-zip/utils/network-trace.js +130 -10
- package/dist/tools/upgrade-packages/index.js +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -3
- package/package.json +5 -5
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/tools/fetch-image/index.d.ts.map +0 -1
- 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,
|
|
4
|
-
export declare function chatAgentLoop<T = CanonicalMessage>({ chatModel, selectedModel, reporter, streamingMessageReporter, trace,
|
|
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
|
|
12
|
+
tools: ToolDefinition[];
|
|
14
13
|
onPendingToolCall: (toolCalls: PendingToolCall[]) => Promise<void>;
|
|
15
14
|
onLLMResponse?: (response: T, selectedModel: SupportedChatModels) => Promise<void>;
|
|
16
|
-
|
|
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,
|
|
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,
|
|
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:
|
|
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 {
|
|
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,
|
|
6
|
-
export { extractAttachments
|
|
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,
|
|
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.
|
|
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
|
|
10
|
-
Object.defineProperty(exports, "
|
|
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,
|
|
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"}
|
package/dist/agent/chat/index.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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:
|
|
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,
|
|
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"}
|
package/dist/agent/chat/state.js
CHANGED
|
@@ -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);
|
|
@@ -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
|
|
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"}
|
package/dist/agent/chat/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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,
|
|
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,
|
|
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,
|
|
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;
|
|
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 ===
|
|
34
|
-
return
|
|
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
|
|
46
|
-
return
|
|
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
|
|
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
|
|
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"}
|