ai-agent-test 0.10.3 → 0.11.1

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/README.md CHANGED
@@ -15,8 +15,9 @@ See [TODOs.md](./TODOs.md) for roadmap, features in development, and known bugs.
15
15
  - Extensible Tools: Built-in tools for file operations, bash execution, web search, and more
16
16
  - See [src/tools/](./src/tools/) for all available tools
17
17
  - Interactive CLI: Real-time chat interface with streaming responses
18
- - Session Management: Session logs are stored in `~/.ai/logs/` to track agent behavior and progress. Agent can also restore previous sessions to continue conversations.
18
+ - Session Management: Session messages are stored in `~/.ai/sessions/` and session can be restored for continued conversations
19
19
  - Custom System Prompt: Create `~/.ai/SYSTEM.md` or use `--system` CLI option to provide custom instructions that augment the agent's system prompt
20
+ - One-off Prompt Mode: Run a single prompt loop and exit (ideal for CI/CD pipelines)
20
21
 
21
22
  ## 🛠️ Prerequisites
22
23
 
@@ -104,6 +105,20 @@ ai
104
105
 
105
106
  - `BRAVE_API_KEY`: (Required) API key for Brave Search for the internet search tool
106
107
  - `AI_SYSTEM_PROMPT`: Additional system prompt content (set via `--system` CLI option)
108
+ - `AI_PROMPT`: Single prompt to run and exit (set via `--prompt` CLI option)
109
+
110
+ ### Single Prompt Mode (CI/CD)
111
+
112
+ Run a single task-loop with a prompt and exit immediately. This is useful for CI/CD pipelines and one-off tasks:
113
+
114
+ ```bash
115
+ ai --prompt "Review the code changes in this PR"
116
+ ```
117
+
118
+ Examples:
119
+
120
+ - **Quick refactoring**: `ai --prompt "Extract a reusable hook from these components"`
121
+ - **Documentation**: `ai --prompt "Write README for this module"`
107
122
 
108
123
  ### Session Management
109
124
 
package/SYSTEM.md CHANGED
@@ -29,9 +29,6 @@ Tools and skills:
29
29
  Metadata:
30
30
 
31
31
  - Session (re)start: {date}
32
- - Current project: {pwd}
33
- - ls: {ls}
34
- - ls src: {ls src}
35
- - ls packages: {ls packages}
32
+ {filemeta}
36
33
 
37
34
  (Default system prompt is done here)
package/TODOs.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  - 1. [x] find user's machine's ~/.ai/SYSTEM.md file and concat to ai-agent's system prompt.
4
4
  - 2. [x] add doc retrival tool. To get latest lib info so the agent can solve tasks more effectively. Not just library, it can be doc for technologies like postgres. so approach should be broader not just like npm library. and check internet_search tool if you can extract logic and have shared code. also improve SYSTEM.md once it's done.
5
- - 3. [ ] improve loop with testing tools so the agent can complete tasks in better shape.
5
+ - 3. [ ] improve loop with testing tools so the agent can complete tasks in better shape. basically we need "verify" step on the loop. (improve system prompt or better ideas)
6
6
  - 4. [ ] Compaction-like feature, but not exactly compaction that is in other coding agents. Summarize current conversation and save to a file, then restart a new session with the summary.
7
- - 5. [ ] one-off CLI command to run a task without starting the agent loop. For example, `ai-agent run "write a function to reverse a string in python"`. This may evolve into a sub-agent feature.
7
+ - 5. [x] one-off CLI command to run a task without starting the agent loop. For example, `ai-agent run "write a function to reverse a string in python"`. This may evolve into a sub-agent feature.
8
8
 
9
9
  ## Backlog ideas
10
10
 
@@ -15,3 +15,4 @@
15
15
  - 1. [x] user can backspace to delete even "Prompt: ".
16
16
  - 2. [ ] when user input gets to next line, the cursor can't come back to the first line with backspace. Backspace seems actually deleting but it's not visible to user.
17
17
  - 3. [x] edit tool (or read tool) doesn't work well when there is backslash in the content that they need to handle. for example the codebase had a line like `systemPrompt += "\n\n---\n\nCLI System Prompt\n\" + cliSystemPrompt` and couldn't resolve it because there was a backslash before closing quote.
18
+ - 4. [ ] on prompt mode, if the prompt stoped by `ask_user_followup` tool, fill arbitrary message so loop can continue.
package/bin/ai CHANGED
@@ -36,6 +36,11 @@ const args = yargs(hideBin(argv))
36
36
  type: "string",
37
37
  describe: "Additional system prompt content to append",
38
38
  })
39
+ .option("prompt", {
40
+ alias: "p",
41
+ type: "string",
42
+ describe: "Run single task-loop with prompt and exit",
43
+ })
39
44
  .command(
40
45
  "models",
41
46
  "List all available models",
@@ -130,6 +135,11 @@ if (args.system !== undefined) {
130
135
  process.env.AI_SYSTEM_PROMPT = args.system
131
136
  }
132
137
 
138
+ // Handle single prompt from --prompt option
139
+ if (args.prompt !== undefined) {
140
+ process.env.AI_PROMPT = args.prompt
141
+ }
142
+
133
143
  // Load config after setting model index
134
144
  const config = loadConfig()
135
145
  process.env.AI_MODEL_APITYPE = config.modelApiType
package/dist/index.js CHANGED
@@ -84,16 +84,30 @@ const cliSystemPrompt = process.env.AI_SYSTEM_PROMPT || "";
84
84
  if (cliSystemPrompt) {
85
85
  systemPrompt += "\n\n---\n\nCLI System Prompt\n" + cliSystemPrompt;
86
86
  }
87
- systemPrompt = systemPrompt
88
- .replace("{date}", new Date().toLocaleString())
89
- .replace("{pwd}", process.cwd())
90
- .replace("{ls}", fs.readdirSync(process.cwd()).join(", "))
91
- .replace("{ls src}", fs.existsSync(path.join(process.cwd(), "src"))
87
+ // Check for single prompt from --prompt CLI option
88
+ const cliPrompt = process.env.AI_PROMPT || "";
89
+ // Build file metadata for system prompt
90
+ const currentDirName = path.basename(process.cwd());
91
+ const nestedSameNamePath = path.join(process.cwd(), currentDirName);
92
+ const fileMeta = `
93
+ - Current project: ${process.cwd()}
94
+ - ls: ${fs.readdirSync(process.cwd()).join(", ")}
95
+ - ls src: ${fs.existsSync(path.join(process.cwd(), "src"))
92
96
  ? fs.readdirSync(path.join(process.cwd(), "src")).join(", ")
93
- : "not found")
94
- .replace("{ls packages}", fs.existsSync(path.join(process.cwd(), "packages"))
97
+ : "not found"}
98
+ - ls lib: ${fs.existsSync(path.join(process.cwd(), "lib"))
99
+ ? fs.readdirSync(path.join(process.cwd(), "lib")).join(", ")
100
+ : "not found"}
101
+ - ls packages: ${fs.existsSync(path.join(process.cwd(), "packages"))
95
102
  ? fs.readdirSync(path.join(process.cwd(), "packages")).join(", ")
96
- : "not found");
103
+ : "not found"}
104
+ - ls ${currentDirName}: ${fs.existsSync(nestedSameNamePath)
105
+ ? fs.readdirSync(nestedSameNamePath).join(", ")
106
+ : "not found"}
107
+ `;
108
+ systemPrompt = systemPrompt
109
+ .replace("{date}", new Date().toLocaleString())
110
+ .replace("{filemeta}", fileMeta);
97
111
  let interruptRequested = false;
98
112
  // Check for loaded messages from a previous session via env var
99
113
  const messages = [];
@@ -204,13 +218,16 @@ async function runLoop(prompt) {
204
218
  for (const toolCall of toolCallsCollected) {
205
219
  if (!toolResultIds.has(toolCall.toolCallId)) {
206
220
  console.log(chalk.red(`Warning: Missing tool result for call ${toolCall.toolCallId} (${toolCall.toolName})`));
221
+ const message = Object.values(toolNames).includes(toolCall.toolName)
222
+ ? `missing tool result for call ${toolCall.toolCallId} (${toolCall.toolName}).`
223
+ : `the tool call ${toolCall.toolCallId} used an unknown tool (${toolCall.toolName}).`;
207
224
  toolResultContent.push({
208
225
  type: "tool-result",
209
226
  toolCallId: toolCall.toolCallId,
210
227
  toolName: toolCall.toolName,
211
228
  output: {
212
229
  type: "text",
213
- value: `Tool execution failed: missing tool result for call ${toolCall.toolCallId} (${toolCall.toolName}).`,
230
+ value: `Tool execution failed: ${message}`,
214
231
  },
215
232
  });
216
233
  }
@@ -265,16 +282,32 @@ async function runLoop(prompt) {
265
282
  cleanupEscListener();
266
283
  }
267
284
  async function main() {
285
+ // Fetch context length for percentage calculation
286
+ await fetchContextLength();
287
+ if (cliPrompt) {
288
+ // Single prompt mode: run once and exit
289
+ try {
290
+ await runLoop(cliPrompt);
291
+ }
292
+ catch (error) {
293
+ console.error(chalk.red(`Error in single prompt mode: ${error.message}`));
294
+ console.log(JSON.stringify(messages.slice(-10), null, 2));
295
+ process.exit(1);
296
+ }
297
+ process.exit(0);
298
+ }
299
+ // Interactive mode
268
300
  console.log(chalk.cyan(`AI Agent Ready! (${formatPath(process.cwd())})\n`));
269
301
  const helpText = "interrupt: ESC, newline: Shift+Enter";
302
+ let lastLine = helpText;
270
303
  console.log(chalk.cyan(helpText));
271
304
  const updateInfo = await checkNpmUpdate();
272
305
  if (updateInfo?.show) {
273
- console.log(chalk.cyan(`\nNew version available! Run 'ai update' (${updateInfo.currentVersion} -> ${updateInfo.latestVersion})`));
306
+ const updateText = `New version available! Run 'ai update' (${updateInfo.currentVersion} -> ${updateInfo.latestVersion})`;
307
+ lastLine = updateText;
308
+ console.log(chalk.cyan(`\n${updateText}`));
274
309
  }
275
- console.log(chalk.cyan(Array.from({ length: helpText.length }).fill("=").join("") + "\n"));
276
- // Fetch context length for percentage calculation
277
- await fetchContextLength();
310
+ console.log(chalk.cyan(Array.from({ length: lastLine.length }).fill("=").join("") + "\n"));
278
311
  while (true) {
279
312
  console.log("");
280
313
  const userPrompt = await askQuestion("Prompt: ");
@@ -287,7 +320,7 @@ async function main() {
287
320
  catch (error) {
288
321
  console.error(chalk.red(`Error in main loop: ${error.message}`));
289
322
  console.log(JSON.stringify(messages.slice(-10), null, 2));
290
- throw error;
323
+ process.exit(1);
291
324
  }
292
325
  }
293
326
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -9,24 +9,24 @@ export interface LineEdit {
9
9
  endLine?: number;
10
10
  newText: string;
11
11
  }
12
- export type Edit = ReplaceEdit | LineEdit;
12
+ export type Edit = ReplaceEdit[] | LineEdit[];
13
13
  export declare const editTool: {
14
14
  description: string;
15
15
  inputSchema: z.ZodObject<{
16
16
  path: z.ZodString;
17
- edits: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
17
+ edits: z.ZodUnion<readonly [z.ZodArray<z.ZodObject<{
18
18
  oldText: z.ZodString;
19
19
  newText: z.ZodString;
20
20
  useReplaceAll: z.ZodOptional<z.ZodBoolean>;
21
- }, z.core.$strip>, z.ZodObject<{
21
+ }, z.core.$strip>>, z.ZodArray<z.ZodObject<{
22
22
  startLine: z.ZodNumber;
23
23
  endLine: z.ZodOptional<z.ZodNumber>;
24
24
  newText: z.ZodString;
25
- }, z.core.$strip>]>>;
25
+ }, z.core.$strip>>]>;
26
26
  }, z.core.$strip>;
27
- execute: ({ path: filePath, edits, }: {
27
+ execute: ({ path: filePath, edits }: {
28
28
  path: string;
29
- edits: Edit[];
29
+ edits: Edit;
30
30
  }) => Promise<{
31
31
  success: boolean;
32
32
  output: string;
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,IAAI,GAAG,WAAW,GAAG,QAAQ,CAAA;AAiFzC,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;0CAchB;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,IAAI,EAAE,CAAA;KACd;;;;;;;;;;;;;;;CAiFF,CAAA"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,IAAI,GAAG,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAA;AA8H7C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;yCAWwB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE;;;;;;;;;;;;;;;CAyGzE,CAAA"}
@@ -26,30 +26,51 @@ const lineEditSchema = z.object({
26
26
  .string()
27
27
  .describe("The replacement text for the specified line range."),
28
28
  });
29
- const editSchema = z.union([replaceEditSchema, lineEditSchema]);
30
29
  function isReplaceEdit(edit) {
31
30
  return "oldText" in edit;
32
31
  }
32
+ function validateLineRange(totalLines, startLine, endLine) {
33
+ if (endLine < startLine) {
34
+ return `Invalid line range: endLine (${endLine}) must be greater than or equal to startLine (${startLine}).`;
35
+ }
36
+ if (startLine > totalLines) {
37
+ return `Invalid line range: startLine ${startLine} is beyond the end of the file (${totalLines} lines).`;
38
+ }
39
+ if (endLine > totalLines) {
40
+ return `Invalid line range: endLine ${endLine} is beyond the end of the file (${totalLines} lines).`;
41
+ }
42
+ return null;
43
+ }
44
+ function hasOverlappingOriginalRange(edit, appliedLineEdits) {
45
+ const originalEndLine = edit.endLine ?? edit.startLine;
46
+ return appliedLineEdits.some((appliedEdit) => {
47
+ return !(originalEndLine < appliedEdit.originalStartLine ||
48
+ edit.startLine > appliedEdit.originalEndLine);
49
+ });
50
+ }
51
+ function getAdjustedLineRange(edit, appliedLineEdits) {
52
+ const originalEndLine = edit.endLine ?? edit.startLine;
53
+ const lineOffset = appliedLineEdits.reduce((offset, appliedEdit) => {
54
+ if (appliedEdit.originalEndLine < edit.startLine) {
55
+ return offset + appliedEdit.lineDelta;
56
+ }
57
+ return offset;
58
+ }, 0);
59
+ return {
60
+ startLine: edit.startLine + lineOffset,
61
+ endLine: originalEndLine + lineOffset,
62
+ originalEndLine,
63
+ };
64
+ }
33
65
  function applyLineEdit(content, edit) {
34
66
  const lines = content.split("\n");
35
67
  const startLine = edit.startLine;
36
68
  const endLine = edit.endLine ?? startLine;
37
- if (endLine < startLine) {
69
+ const validationError = validateLineRange(lines.length, startLine, endLine);
70
+ if (validationError) {
38
71
  return {
39
72
  success: false,
40
- error: `Invalid line range: endLine (${endLine}) must be greater than or equal to startLine (${startLine}).`,
41
- };
42
- }
43
- if (startLine > lines.length) {
44
- return {
45
- success: false,
46
- error: `Invalid line range: startLine ${startLine} is beyond the end of the file (${lines.length} lines).`,
47
- };
48
- }
49
- if (endLine > lines.length) {
50
- return {
51
- success: false,
52
- error: `Invalid line range: endLine ${endLine} is beyond the end of the file (${lines.length} lines).`,
73
+ error: validationError,
53
74
  };
54
75
  }
55
76
  const replacementLines = edit.newText.split("\n");
@@ -69,10 +90,10 @@ export const editTool = {
69
90
  inputSchema: z.object({
70
91
  path: z.string().describe("The path to the file to edit"),
71
92
  edits: z
72
- .array(editSchema)
73
- .describe("Array of edits to apply. Each edit can be an exact text replacement or a line-range replacement."),
93
+ .union([z.array(replaceEditSchema), z.array(lineEditSchema)])
94
+ .describe("Array of edits to apply. Use either exact text replacements for the whole request or line-range replacements for the whole request."),
74
95
  }),
75
- execute: async ({ path: filePath, edits, }) => {
96
+ execute: async ({ path: filePath, edits }) => {
76
97
  console.log(chalk.yellow(`\n[TOOL - edit] Editing file: ${filePath} (edits: ${edits.length})`));
77
98
  try {
78
99
  const fullPath = path.resolve(filePath);
@@ -84,6 +105,7 @@ export const editTool = {
84
105
  }
85
106
  let content = fs.readFileSync(fullPath, "utf-8");
86
107
  let editsApplied = 0;
108
+ const appliedLineEdits = [];
87
109
  for (const edit of edits) {
88
110
  let newContent = content;
89
111
  if (isReplaceEdit(edit)) {
@@ -95,7 +117,18 @@ export const editTool = {
95
117
  }
96
118
  }
97
119
  else {
98
- const lineEditResult = applyLineEdit(content, edit);
120
+ if (hasOverlappingOriginalRange(edit, appliedLineEdits)) {
121
+ return {
122
+ success: false,
123
+ error: "Overlapping line-based edits are not supported in the same request. Merge them into a single line-range edit.",
124
+ };
125
+ }
126
+ const adjustedRange = getAdjustedLineRange(edit, appliedLineEdits);
127
+ const lineEditResult = applyLineEdit(content, {
128
+ ...edit,
129
+ startLine: adjustedRange.startLine,
130
+ endLine: adjustedRange.endLine,
131
+ });
99
132
  if (!lineEditResult.success) {
100
133
  return {
101
134
  success: false,
@@ -103,6 +136,13 @@ export const editTool = {
103
136
  };
104
137
  }
105
138
  newContent = lineEditResult.content;
139
+ const replacedLineCount = adjustedRange.endLine - adjustedRange.startLine + 1;
140
+ const insertedLineCount = edit.newText.split("\n").length;
141
+ appliedLineEdits.push({
142
+ originalStartLine: edit.startLine,
143
+ originalEndLine: adjustedRange.originalEndLine,
144
+ lineDelta: insertedLineCount - replacedLineCount,
145
+ });
106
146
  }
107
147
  if (newContent !== content) {
108
148
  editsApplied++;
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AAsBzB,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACtD,aAAa,EAAE,CAAC;SACb,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,gEAAgE,CAAC;CAC9E,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CACP,qHAAqH,CACtH;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,gFAAgF,CACjF;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,CAAC,oDAAoD,CAAC;CAClE,CAAC,CAAA;AAEF,SAAS,aAAa,CAAC,IAA4B;IACjD,OAAO,SAAS,IAAI,IAAI,CAAA;AAC1B,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;QACxB,OAAO,gCAAgC,OAAO,iDAAiD,SAAS,IAAI,CAAA;IAC9G,CAAC;IAED,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAC3B,OAAO,iCAAiC,SAAS,mCAAmC,UAAU,UAAU,CAAA;IAC1G,CAAC;IAED,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;QACzB,OAAO,+BAA+B,OAAO,mCAAmC,UAAU,UAAU,CAAA;IACtG,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,2BAA2B,CAClC,IAAc,EACd,gBAAmC;IAEnC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAA;IAEtD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;QAC3C,OAAO,CAAC,CACN,eAAe,GAAG,WAAW,CAAC,iBAAiB;YAC/C,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,eAAe,CAC7C,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAc,EACd,gBAAmC;IAEnC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAA;IACtD,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QACjE,IAAI,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,OAAO,MAAM,GAAG,WAAW,CAAC,SAAS,CAAA;QACvC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,EAAE,CAAC,CAAC,CAAA;IAEL,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,UAAU;QACtC,OAAO,EAAE,eAAe,GAAG,UAAU;QACrC,eAAe;KAChB,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CACpB,OAAe,EACf,IAAc;IAEd,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS,CAAA;IAEzC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAC3E,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,eAAe;SACvB,CAAA;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,MAAM,YAAY,GAAG;QACnB,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;QAChC,GAAG,gBAAgB;QACnB,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;KACxB,CAAA;IACD,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE9C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,cAAc;KACxB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EACT,gLAAgL;IAClL,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACzD,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;aAC5D,QAAQ,CACP,qIAAqI,CACtI;KACJ,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAiC,EAAE,EAAE;QAC1E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,iCAAiC,QAAQ,YAAY,KAAK,CAAC,MAAM,GAAG,CACrE,CACF,CAAA;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAEvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,mBAAmB,QAAQ,EAAE;iBACrC,CAAA;YACH,CAAC;YAED,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAChD,IAAI,YAAY,GAAG,CAAC,CAAA;YACpB,MAAM,gBAAgB,GAAsB,EAAE,CAAA;YAE9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,UAAU,GAAG,OAAO,CAAA;gBAExB,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;wBACvB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC7D,CAAC;yBAAM,CAAC;wBACN,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC1D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC;wBACxD,OAAO;4BACL,OAAO,EAAE,KAAK;4BACd,KAAK,EACH,+GAA+G;yBAClH,CAAA;oBACH,CAAC;oBAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;oBAClE,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,EAAE;wBAC5C,GAAG,IAAI;wBACP,SAAS,EAAE,aAAa,CAAC,SAAS;wBAClC,OAAO,EAAE,aAAa,CAAC,OAAO;qBAC/B,CAAC,CAAA;oBACF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;wBAC5B,OAAO;4BACL,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,cAAc,CAAC,KAAK;yBAC5B,CAAA;oBACH,CAAC;oBACD,UAAU,GAAG,cAAc,CAAC,OAAO,CAAA;oBAEnC,MAAM,iBAAiB,GACrB,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,SAAS,GAAG,CAAC,CAAA;oBACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;oBAEzD,gBAAgB,CAAC,IAAI,CAAC;wBACpB,iBAAiB,EAAE,IAAI,CAAC,SAAS;wBACjC,eAAe,EAAE,aAAa,CAAC,eAAe;wBAC9C,SAAS,EAAE,iBAAiB,GAAG,iBAAiB;qBACjD,CAAC,CAAA;gBACJ,CAAC;gBAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;oBAC3B,YAAY,EAAE,CAAA;oBACd,OAAO,GAAG,UAAU,CAAA;gBACtB,CAAC;qBAAM,CAAC;oBACN,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,+CAA+C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAClF,CACF,CAAA;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,+BAA+B,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,sBAAsB,CACtG,CACF,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAE5C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,SAAS,QAAQ,0CAA0C,YAAY,WAAW,KAAK,CAAC,MAAM,EAAE;gBACxG,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,YAAY;oBACxB,UAAU,EAAE,KAAK,CAAC,MAAM;iBACzB;aACF,CAAA;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CACpE,CAAA;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -155,19 +155,19 @@ export declare const tools: {
155
155
  description: string;
156
156
  inputSchema: import("zod").ZodObject<{
157
157
  path: import("zod").ZodString;
158
- edits: import("zod").ZodArray<import("zod").ZodUnion<readonly [import("zod").ZodObject<{
158
+ edits: import("zod").ZodUnion<readonly [import("zod").ZodArray<import("zod").ZodObject<{
159
159
  oldText: import("zod").ZodString;
160
160
  newText: import("zod").ZodString;
161
161
  useReplaceAll: import("zod").ZodOptional<import("zod").ZodBoolean>;
162
- }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
162
+ }, import("zod/v4/core").$strip>>, import("zod").ZodArray<import("zod").ZodObject<{
163
163
  startLine: import("zod").ZodNumber;
164
164
  endLine: import("zod").ZodOptional<import("zod").ZodNumber>;
165
165
  newText: import("zod").ZodString;
166
- }, import("zod/v4/core").$strip>]>>;
166
+ }, import("zod/v4/core").$strip>>]>;
167
167
  }, import("zod/v4/core").$strip>;
168
- execute: ({ path: filePath, edits, }: {
168
+ execute: ({ path: filePath, edits }: {
169
169
  path: string;
170
- edits: import("./edit.js").Edit[];
170
+ edits: import("./edit.js").Edit;
171
171
  }) => Promise<{
172
172
  success: boolean;
173
173
  output: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-agent-test",
3
- "version": "0.10.3",
3
+ "version": "0.11.1",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "ai": "./bin/ai"
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "scripts": {
18
18
  "build": "tsc",
19
- "test": "echo \"Error: no test specified\" && exit 1",
19
+ "test": "vitest run",
20
20
  "prepare": "husky",
21
21
  "lint": "oxlint . -c .oxlintrc.json --ignore-pattern dist/",
22
22
  "prepack": "rm -rf dist && npm run build"
@@ -46,7 +46,8 @@
46
46
  "oxlint": "^1.57.0",
47
47
  "prettier": "^3.8.1",
48
48
  "tsx": "^4.21.0",
49
- "typescript": "^5.9.3"
49
+ "typescript": "^5.9.3",
50
+ "vitest": "^4.1.4"
50
51
  },
51
52
  "dependencies": {
52
53
  "@ai-sdk/google": "^3.0.58",