@empiricalrun/test-gen 0.51.6 → 0.52.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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # @empiricalrun/test-gen
2
2
 
3
+ ## 0.52.0
4
+
5
+ ### Minor Changes
6
+
7
+ - a399a57: feat: added Gemini support to chat agent
8
+
9
+ ### Patch Changes
10
+
11
+ - 1b8d273: fix: clean up backup files
12
+ - Updated dependencies [a399a57]
13
+ - Updated dependencies [1b8d273]
14
+ - Updated dependencies [99b0826]
15
+ - @empiricalrun/llm@0.12.0
16
+
3
17
  ## 0.51.6
4
18
 
5
19
  ### Patch Changes
@@ -1,5 +1,5 @@
1
1
  export declare function chatAgent({ selectedModel, useDiskForChatState, }: {
2
- selectedModel?: "claude-3-7-sonnet-20250219" | "claude-3-5-sonnet-20241022";
2
+ selectedModel?: "claude-3-7-sonnet-20250219" | "claude-3-5-sonnet-20241022" | "gemini-2.5-pro-exp-03-25";
3
3
  useDiskForChatState?: boolean;
4
4
  }): Promise<string>;
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AAsCA,wBAAsB,SAAS,CAAC,EAC9B,aAA4C,EAC5C,mBAA2B,GAC5B,EAAE;IACD,aAAa,CAAC,EAAE,4BAA4B,GAAG,4BAA4B,CAAC;IAC5E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,mBAqGA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/chat/index.ts"],"names":[],"mappings":"AA4DA,wBAAsB,SAAS,CAAC,EAC9B,aAA4C,EAC5C,mBAA2B,GAC5B,EAAE;IACD,aAAa,CAAC,EACV,4BAA4B,GAC5B,4BAA4B,GAC5B,0BAA0B,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,mBA2FA"}
@@ -27,13 +27,27 @@ function createChatModel(useDiskForChatState, selectedModel) {
27
27
  if (selectedModel.startsWith("claude")) {
28
28
  return new chat_1.ClaudeChatModel(useDiskForChatState);
29
29
  }
30
+ if (selectedModel.startsWith("gemini")) {
31
+ return new chat_1.GeminiChatModel();
32
+ }
30
33
  throw new Error(`Unsupported model: ${selectedModel}`);
31
34
  }
35
+ function getModelName(model) {
36
+ if (model.startsWith("claude"))
37
+ return "Claude";
38
+ if (model.startsWith("gemini"))
39
+ return "Gemini";
40
+ return "AI";
41
+ }
42
+ function concludeAgent(usageSummary) {
43
+ console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + usageSummary)}`);
44
+ (0, chat_1.cleanupBackupFiles)(process.cwd());
45
+ }
32
46
  async function chatAgent({ selectedModel = "claude-3-7-sonnet-20250219", useDiskForChatState = false, }) {
33
47
  let chatModel = createChatModel(useDiskForChatState, selectedModel);
34
48
  let userPrompt = undefined;
35
49
  const handleSigInt = () => {
36
- console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + chatModel.getUsageSummary())}`);
50
+ concludeAgent(chatModel.getUsageSummary());
37
51
  process.exit(0);
38
52
  };
39
53
  process.once("SIGINT", handleSigInt);
@@ -57,20 +71,12 @@ async function chatAgent({ selectedModel = "claude-3-7-sonnet-20250219", useDisk
57
71
  catch (e) {
58
72
  // https://github.com/SBoudrias/Inquirer.js/issues/1502#issuecomment-2275991680
59
73
  if (e instanceof Error && e.name === "ExitPromptError") {
60
- console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + chatModel.getUsageSummary())}`);
74
+ concludeAgent(chatModel.getUsageSummary());
61
75
  process.exit(0);
62
76
  }
63
77
  throw e;
64
78
  }
65
- chatModel.pushMessage({
66
- role: "user",
67
- content: [
68
- {
69
- type: "text",
70
- text: userPrompt,
71
- },
72
- ],
73
- });
79
+ chatModel.pushUserMessage(userPrompt);
74
80
  continue;
75
81
  }
76
82
  const toolUse = chatModel.getPendingToolCall();
@@ -100,7 +106,7 @@ async function chatAgent({ selectedModel = "claude-3-7-sonnet-20250219", useDisk
100
106
  });
101
107
  continue;
102
108
  }
103
- const spinner = ora("Claude is working...").start();
109
+ const spinner = ora(`${getModelName(selectedModel)} is working...`).start();
104
110
  const response = await chatModel.getLLMResponse({
105
111
  systemPrompt,
106
112
  tools: tools.map((tool) => (0, zod_schema_1.zodToOpenAITool)(tool.schema)),
@@ -117,7 +123,7 @@ async function chatAgent({ selectedModel = "claude-3-7-sonnet-20250219", useDisk
117
123
  }
118
124
  }
119
125
  const usageSummary = chatModel.getUsageSummary();
120
- console.log(`\n${(0, picocolors_1.gray)("Usage summary -> " + chatModel.getUsageSummary())}`);
126
+ concludeAgent(usageSummary);
121
127
  return usageSummary;
122
128
  }
123
129
  exports.chatAgent = chatAgent;
package/dist/bin/index.js CHANGED
@@ -41,6 +41,7 @@ async function runChatAgent(modelInput, useDiskForChatState) {
41
41
  "3-7": "claude-3-7-sonnet-20250219",
42
42
  "claude-3-5": "claude-3-5-sonnet-20241022",
43
43
  "3-5": "claude-3-5-sonnet-20241022",
44
+ "gemini-2.5-pro-exp-03-25": "gemini-2.5-pro-exp-03-25",
44
45
  };
45
46
  if (modelInput && !MODEL_MAPPING[modelInput]) {
46
47
  throw new Error(`Invalid chat model: ${modelInput}`);
@@ -186,7 +187,7 @@ async function runAgentsWorkflow(testGenConfig, testGenToken) {
186
187
  .option("--suites <suites>", "Comma separated list of describe blocks")
187
188
  .option("--use-chat", "Use chat agent (and not the workflow)")
188
189
  .option("--use-disk-for-chat-state", "Save and load chat state from disk")
189
- .option("--chat-model <model>", "Chat model to use (claude-3-7-sonnet-20250219 or claude-3-5-sonnet-20241022)")
190
+ .option("--chat-model <model>", "Chat model to use (claude-3-7-sonnet-20250219 or claude-3-5-sonnet-20241022 or gemini-2.5-pro-exp-03-25)")
190
191
  .parse(process.argv);
191
192
  const options = program.opts();
192
193
  const completedOptions = await (0, utils_2.validateAndCompleteCliOptions)(options);
@@ -6,7 +6,7 @@ export interface CliOptions {
6
6
  suites?: string;
7
7
  useChat?: boolean;
8
8
  useDiskForChatState?: boolean;
9
- chatModel?: "claude-3-7" | "3-7" | "claude-3-5" | "3-5" | "claude-3-7-sonnet-20250219" | "claude-3-5-sonnet-20241022";
9
+ chatModel?: "claude-3-7" | "3-7" | "claude-3-5" | "3-5" | "claude-3-7-sonnet-20250219" | "claude-3-5-sonnet-20241022" | "gemini-2.5-pro-exp-03-25";
10
10
  }
11
11
  export declare function validateAndCompleteCliOptions(options: CliOptions): Promise<CliOptions>;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/utils/index.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EACN,YAAY,GACZ,KAAK,GACL,YAAY,GACZ,KAAK,GACL,4BAA4B,GAC5B,4BAA4B,CAAC;CAClC;AAQD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC,CAyDrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/utils/index.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EACN,YAAY,GACZ,KAAK,GACL,YAAY,GACZ,KAAK,GACL,4BAA4B,GAC5B,4BAA4B,GAC5B,0BAA0B,CAAC;CAChC;AAQD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,UAAU,CAAC,CAyDrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empiricalrun/test-gen",
3
- "version": "0.51.6",
3
+ "version": "0.52.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -75,7 +75,7 @@
75
75
  "tsx": "^4.16.2",
76
76
  "typescript": "^5.3.3",
77
77
  "zod": "^3.23.8",
78
- "@empiricalrun/llm": "^0.11.5",
78
+ "@empiricalrun/llm": "^0.12.0",
79
79
  "@empiricalrun/r2-uploader": "^0.3.8",
80
80
  "@empiricalrun/test-run": "^0.7.6"
81
81
  },