ai-agent-test 0.3.2 → 0.4.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/README.md +25 -0
- package/bin/ai +64 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +50 -0
- package/dist/config.js.map +1 -0
- package/dist/index.js +34 -45
- package/dist/index.js.map +1 -1
- package/dist/utils/system.d.ts +9 -2
- package/dist/utils/system.d.ts.map +1 -1
- package/dist/utils/system.js +117 -24
- package/dist/utils/system.js.map +1 -1
- package/package.json +14 -3
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# AI Agent Test
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/ai-agent-test)
|
|
4
|
+
|
|
3
5
|
A lightweight, extensible agentic workflow system built with TypeScript and the AI SDK. This project serves as a testbed for implementing mini agentic flows with support for small-sized local LLMs (30B-80B parameters) and few tool integrations.
|
|
4
6
|
|
|
5
7
|
## 🌟 Features
|
|
@@ -74,6 +76,18 @@ ai
|
|
|
74
76
|
AI_MODEL_INDEX=1 ai
|
|
75
77
|
```
|
|
76
78
|
|
|
79
|
+
### Using Environment Variables (CI/CD Friendly)
|
|
80
|
+
|
|
81
|
+
Instead of using `~/.ai/models.json`, you can configure the CLI entirely through environment variables. This is especially useful for CI/CD environments:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
export AI_MODEL_APITYPE="openai"
|
|
85
|
+
export AI_MODEL_NAME="gpt-4o"
|
|
86
|
+
export AI_API_BASE_URL="https://api.openai.com/v1"
|
|
87
|
+
export AI_API_KEY="your_api_key_here"
|
|
88
|
+
ai
|
|
89
|
+
```
|
|
90
|
+
|
|
77
91
|
### Additional Environment Variables
|
|
78
92
|
|
|
79
93
|
- `BRAVE_API_KEY`: (Required) API key for Brave Search for the internet search tool
|
|
@@ -86,3 +100,14 @@ When installed globally, run `ai` to start the interactive CLI:
|
|
|
86
100
|
- `exit` or `quit` to terminate the session
|
|
87
101
|
- `debug <n>` to view last n messages (or all if no number provided)
|
|
88
102
|
- ESC key to interrupt the current agent iteration
|
|
103
|
+
|
|
104
|
+
### Session Management
|
|
105
|
+
|
|
106
|
+
View and restore previous sessions:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
ai sessions ls # List last 20 sessions with 0-based indexing
|
|
110
|
+
ai sessions 2 # Load and restart from session 2
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
When loading a session, the conversation history is restored and logged to the current session file.
|
package/bin/ai
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
// Load config first (before any imports that use it)
|
|
4
|
+
import { loadConfig } from '../dist/config.js';
|
|
5
|
+
const config = loadConfig();
|
|
6
|
+
process.env.AI_MODEL_APITYPE = config.modelApiType;
|
|
7
|
+
process.env.AI_MODEL_NAME = config.modelName;
|
|
8
|
+
process.env.AI_API_BASE_URL = config.apiBaseUrl;
|
|
9
|
+
process.env.AI_API_KEY = config.apiKey;
|
|
10
|
+
|
|
3
11
|
// Pass command-line arguments to the main module
|
|
4
12
|
import { argv } from 'process';
|
|
5
13
|
|
|
@@ -21,7 +29,9 @@ if (argv[2] === '--help') {
|
|
|
21
29
|
Usage: ai [options] [model-index]
|
|
22
30
|
|
|
23
31
|
Commands:
|
|
24
|
-
|
|
32
|
+
sessions ls List last 20 sessions
|
|
33
|
+
sessions <idx> Load and restart from session <idx>
|
|
34
|
+
update Update the ai-agent-test package to the latest version
|
|
25
35
|
--version Show version number
|
|
26
36
|
--help Show help message
|
|
27
37
|
|
|
@@ -31,6 +41,8 @@ Arguments:
|
|
|
31
41
|
Examples:
|
|
32
42
|
ai # Run with default model
|
|
33
43
|
ai 1 # Run with second model in config
|
|
44
|
+
ai sessions ls # List last 20 sessions
|
|
45
|
+
ai sessions 2 # Load and restart from session 2
|
|
34
46
|
ai update # Update to latest version
|
|
35
47
|
ai --version # Show version
|
|
36
48
|
ai --help # Show help
|
|
@@ -47,6 +59,57 @@ if (argv[2] === 'update') {
|
|
|
47
59
|
});
|
|
48
60
|
}
|
|
49
61
|
|
|
62
|
+
// Handle sessions command
|
|
63
|
+
if (argv[2] === 'sessions') {
|
|
64
|
+
const subCommand = argv[3];
|
|
65
|
+
|
|
66
|
+
import('../dist/utils/system.js').then(({ listSessions, loadSession, getSessionFileByIndex }) => {
|
|
67
|
+
if (subCommand === 'ls') {
|
|
68
|
+
// List sessions
|
|
69
|
+
const sessions = listSessions(20);
|
|
70
|
+
if (sessions.length === 0) {
|
|
71
|
+
console.log('No sessions found.');
|
|
72
|
+
} else {
|
|
73
|
+
console.log(`Last ${sessions.length} sessions:`);
|
|
74
|
+
sessions.forEach((session, index) => {
|
|
75
|
+
let line = `${index}. ${session.timestamp}`;
|
|
76
|
+
if (session.summary) {
|
|
77
|
+
line += ` - ${session.summary}`;
|
|
78
|
+
}
|
|
79
|
+
console.log(line);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
process.exit(0);
|
|
83
|
+
} else {
|
|
84
|
+
// Load a specific session by index
|
|
85
|
+
const sessionIndex = subCommand ? parseInt(subCommand, 10) : undefined;
|
|
86
|
+
if (sessionIndex !== undefined && !isNaN(sessionIndex)) {
|
|
87
|
+
const sessionFile = getSessionFileByIndex(sessionIndex);
|
|
88
|
+
if (!sessionFile) {
|
|
89
|
+
console.log(`Session ${sessionIndex} not found.`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const messages = loadSession(sessionFile);
|
|
94
|
+
if (!messages) {
|
|
95
|
+
console.log(`Could not load session ${sessionIndex}.`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Set env var to tell index.ts to load this session
|
|
100
|
+
process.env.AI_SESSION_INDEX = sessionIndex.toString();
|
|
101
|
+
process.env.AI_SESSION_FILE = sessionFile;
|
|
102
|
+
|
|
103
|
+
console.log(`Loaded session ${sessionIndex} from ${sessionFile}`);
|
|
104
|
+
// Don't exit here - let the app continue to index.js
|
|
105
|
+
} else {
|
|
106
|
+
console.log('Usage: ai sessions <index> or ai sessions ls');
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
50
113
|
// Set AI_MODEL_INDEX environment variable if provided as first argument
|
|
51
114
|
if (argv[2]) {
|
|
52
115
|
process.env.AI_MODEL_INDEX = argv[2];
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,UAAU,IAAI,WAAW,CAkExC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { homedir } from "os";
|
|
2
|
+
import { join } from "path";
|
|
3
|
+
import { readFileSync } from "fs";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
export function loadConfig() {
|
|
6
|
+
const modelsFile = join(homedir(), ".ai", "models.json");
|
|
7
|
+
// Try to load from models.json first
|
|
8
|
+
try {
|
|
9
|
+
const fileContent = readFileSync(modelsFile, "utf-8");
|
|
10
|
+
const models = JSON.parse(fileContent);
|
|
11
|
+
const modelIndex = parseInt(process.env.AI_MODEL_INDEX || "0", 10);
|
|
12
|
+
return models[modelIndex];
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
// models.json doesn't exist or is invalid
|
|
16
|
+
// Check for environment variables as fallback
|
|
17
|
+
const modelApiType = process.env.AI_MODEL_APITYPE;
|
|
18
|
+
const modelName = process.env.AI_MODEL_NAME;
|
|
19
|
+
const apiBaseUrl = process.env.AI_API_BASE_URL;
|
|
20
|
+
const apiKey = process.env.AI_API_KEY;
|
|
21
|
+
if (modelApiType && modelName && apiBaseUrl && apiKey) {
|
|
22
|
+
console.log(chalk.yellow(`\nUsing environment variables for configuration (no ~/.ai/models.json found)\n`));
|
|
23
|
+
return {
|
|
24
|
+
modelApiType: modelApiType,
|
|
25
|
+
modelName,
|
|
26
|
+
apiBaseUrl,
|
|
27
|
+
apiKey,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// No config available
|
|
31
|
+
console.error(chalk.red(`Failed to load configuration from ${modelsFile}: ${error.message}`));
|
|
32
|
+
const sampleConfig = [
|
|
33
|
+
{
|
|
34
|
+
modelApiType: "openai (openai or google)",
|
|
35
|
+
modelName: "gpt-4o",
|
|
36
|
+
apiBaseUrl: "https://api.openai.com/v1",
|
|
37
|
+
apiKey: "your-api-key-here",
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
console.log(chalk.yellow("\nPlease create a ~/.ai/models.json file with the following format:"));
|
|
41
|
+
console.log(chalk.yellow(JSON.stringify(sampleConfig, null, 2)));
|
|
42
|
+
console.log(chalk.yellow("\nOr set these environment variables:\n"));
|
|
43
|
+
console.log(chalk.yellow(` AI_MODEL_APITYPE - Either "openai" or "google"`));
|
|
44
|
+
console.log(chalk.yellow(` AI_MODEL_NAME - Model name (e.g., "gpt-4o")`));
|
|
45
|
+
console.log(chalk.yellow(` AI_API_BASE_URL - Base URL for the API`));
|
|
46
|
+
console.log(chalk.yellow(` AI_API_KEY - Your API key`));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,UAAU,UAAU;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAEzD,qCAAqC;IACrC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0CAA0C;QAC1C,8CAA8C;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAClD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAEtC,IAAI,YAAY,IAAI,SAAS,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,gFAAgF,CACjF,CACF,CAAC;YACF,OAAO;gBACL,YAAY,EAAE,YAAmC;gBACjD,SAAS;gBACT,UAAU;gBACV,MAAM;aACP,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,qCAAqC,UAAU,KAAM,KAAe,CAAC,OAAO,EAAE,CAC/E,CACF,CAAC;QACF,MAAM,YAAY,GAAG;YACnB;gBACE,YAAY,EAAE,2BAA2B;gBACzC,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,2BAA2B;gBACvC,MAAM,EAAE,mBAAmB;aAC5B;SACF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,qEAAqE,CACtE,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,yCAAyC,CAC1C,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mDAAmD,CAC/E,CAAC,CAAC;QACC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mDAAmD,CAC/E,CAAC,CAAC;QACC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CACxE,CAAC,CAAC;QACC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAChE,CAAC,CAAC;QACC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,38 +6,25 @@ import chalk from "chalk";
|
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import path from "path";
|
|
8
8
|
import { fileURLToPath } from "url";
|
|
9
|
-
import {
|
|
10
|
-
import { homedir } from "os";
|
|
11
|
-
import { join, dirname } from "path";
|
|
9
|
+
import { dirname } from "path";
|
|
12
10
|
import { createGoogleGenerativeAI } from "@ai-sdk/google";
|
|
13
|
-
import {
|
|
11
|
+
import { appendMessageToLog, loadSession } from "./utils/system.js";
|
|
12
|
+
import dotenv from "dotenv";
|
|
13
|
+
// Load environment variables from .env file
|
|
14
|
+
dotenv.config();
|
|
14
15
|
// Get the directory of this module (works with ES modules)
|
|
15
16
|
const __filename = fileURLToPath(import.meta.url);
|
|
16
17
|
const __dirname = dirname(__filename);
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const fileContent = readFileSync(modelsFile, "utf-8");
|
|
22
|
-
const models = JSON.parse(fileContent);
|
|
23
|
-
const modelIndex = parseInt(process.env.AI_MODEL_INDEX || "0", 10);
|
|
24
|
-
config = models[modelIndex];
|
|
18
|
+
// Helper function to push to messages array and write to log
|
|
19
|
+
function pushMessage(message) {
|
|
20
|
+
messages.push(message);
|
|
21
|
+
appendMessageToLog(message);
|
|
25
22
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
modelName: "gpt-4o",
|
|
32
|
-
apiBaseUrl: "https://api.openai.com/v1",
|
|
33
|
-
apiKey: "your-api-key-here",
|
|
34
|
-
},
|
|
35
|
-
];
|
|
36
|
-
console.log(chalk.yellow("\nPlease create a ~/.ai/models.json file with the following format:"));
|
|
37
|
-
console.log(chalk.yellow(JSON.stringify(sampleConfig, null, 2)));
|
|
38
|
-
process.exit(1);
|
|
39
|
-
}
|
|
40
|
-
const { modelApiType: modelProvider, modelName, apiBaseUrl: baseUrl, apiKey, } = config;
|
|
23
|
+
// Read configuration from environment variables set by bin/ai
|
|
24
|
+
const modelProvider = process.env.AI_MODEL_APITYPE;
|
|
25
|
+
const modelName = process.env.AI_MODEL_NAME || "";
|
|
26
|
+
const baseUrl = process.env.AI_API_BASE_URL || "";
|
|
27
|
+
const apiKey = process.env.AI_API_KEY || "";
|
|
41
28
|
let model;
|
|
42
29
|
if (modelProvider === "google") {
|
|
43
30
|
model = createGoogleGenerativeAI({
|
|
@@ -68,13 +55,28 @@ async function askQuestion(prompt) {
|
|
|
68
55
|
rl.once("line", (answer) => resolve(answer));
|
|
69
56
|
});
|
|
70
57
|
}
|
|
58
|
+
// Check for loaded messages from a previous session via env var
|
|
71
59
|
const messages = [];
|
|
60
|
+
const sessionFile = process.env.AI_SESSION_FILE;
|
|
61
|
+
if (sessionFile) {
|
|
62
|
+
const loadedMessages = loadSession(sessionFile);
|
|
63
|
+
if (loadedMessages) {
|
|
64
|
+
messages.push(...loadedMessages);
|
|
65
|
+
pushMessage({
|
|
66
|
+
role: "assistant",
|
|
67
|
+
content: `[Resuming previous session from file ${sessionFile}]`,
|
|
68
|
+
});
|
|
69
|
+
console.log(chalk.green(`Loaded ${messages.length} messages from previous session.`));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.error(chalk.red("Failed to load session."));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
72
75
|
async function runLoop(prompt) {
|
|
73
|
-
|
|
76
|
+
pushMessage({
|
|
74
77
|
role: "user",
|
|
75
78
|
content: prompt,
|
|
76
79
|
});
|
|
77
|
-
logToFile(`User prompt: ${prompt.substring(0, 200)}...`);
|
|
78
80
|
// Reset interrupt flag
|
|
79
81
|
interruptRequested = false;
|
|
80
82
|
// Set up ESC key listener
|
|
@@ -112,7 +114,6 @@ async function runLoop(prompt) {
|
|
|
112
114
|
for await (const part of res.fullStream) {
|
|
113
115
|
if (interruptRequested) {
|
|
114
116
|
cleanupEscListener();
|
|
115
|
-
logToFile("=== break loop: user interrupted with ESC key ===");
|
|
116
117
|
return;
|
|
117
118
|
}
|
|
118
119
|
if (part.type === "text-delta") {
|
|
@@ -160,6 +161,7 @@ async function runLoop(prompt) {
|
|
|
160
161
|
const toolResultIds = new Set(toolResultContent.map((result) => result.toolCallId));
|
|
161
162
|
for (const toolCall of toolCallsCollected) {
|
|
162
163
|
if (!toolResultIds.has(toolCall.toolCallId)) {
|
|
164
|
+
console.log(chalk.red(`Warning: Missing tool result for call ${toolCall.toolCallId} (${toolCall.toolName})`));
|
|
163
165
|
toolResultContent.push({
|
|
164
166
|
type: "tool-result",
|
|
165
167
|
toolCallId: toolCall.toolCallId,
|
|
@@ -169,7 +171,6 @@ async function runLoop(prompt) {
|
|
|
169
171
|
value: `Tool execution failed: missing tool result for call ${toolCall.toolCallId} (${toolCall.toolName}).`,
|
|
170
172
|
},
|
|
171
173
|
});
|
|
172
|
-
logToFile(`Synthesized failed tool result for missing call ${toolCall.toolCallId} (${toolCall.toolName})`);
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
const usage = await res.usage;
|
|
@@ -181,41 +182,33 @@ async function runLoop(prompt) {
|
|
|
181
182
|
assistantContent.push(toolCall);
|
|
182
183
|
}
|
|
183
184
|
if (assistantContent.length > 0) {
|
|
184
|
-
|
|
185
|
+
pushMessage({
|
|
185
186
|
role: "assistant",
|
|
186
187
|
content: assistantContent,
|
|
187
188
|
});
|
|
188
|
-
logToFile("Added assistant message with content");
|
|
189
189
|
}
|
|
190
190
|
if (toolResultContent.length > 0) {
|
|
191
|
-
|
|
191
|
+
pushMessage({
|
|
192
192
|
role: "tool",
|
|
193
193
|
content: toolResultContent,
|
|
194
194
|
});
|
|
195
|
-
logToFile(`Added ${toolResultContent.length} tool result(s)`);
|
|
196
195
|
}
|
|
197
196
|
// Display token usage
|
|
198
197
|
console.log(chalk.gray(`\n\n[${modelName}] Token: ${usage.totalTokens || 0} (${usage.inputTokens || 0} + ${usage.outputTokens || 0})`));
|
|
199
|
-
logToFile(`Iteration complete. Tool calls: ${toolCallsCollected.length}, Tool results: ${toolResultContent.length}`);
|
|
200
|
-
logMessages(messages);
|
|
201
198
|
if (toolCallsCollected.length === 0) {
|
|
202
|
-
logToFile("=== break loop: no tool calls ===");
|
|
203
199
|
break;
|
|
204
200
|
}
|
|
205
201
|
const progressRes = toolResultContent.find((result) => result.toolName === toolNames.recordProgress);
|
|
206
202
|
if (progressRes && progressRes.output?.value === 100) {
|
|
207
203
|
console.log("\nTask completed with 100% progress!");
|
|
208
|
-
logToFile("=== break loop: task completed with 100% progress ===");
|
|
209
204
|
break;
|
|
210
205
|
}
|
|
211
206
|
const followUpRes = toolResultContent.find((result) => result.toolName === toolNames.askUserFollowup);
|
|
212
207
|
if (followUpRes) {
|
|
213
208
|
console.log(chalk.yellow("\n--- Waiting for user input ---"));
|
|
214
|
-
logToFile("=== break loop: asked user followup ===");
|
|
215
209
|
break;
|
|
216
210
|
}
|
|
217
211
|
if (interruptRequested) {
|
|
218
|
-
logToFile("=== break loop: user interrupted with ESC key ===");
|
|
219
212
|
break;
|
|
220
213
|
}
|
|
221
214
|
}
|
|
@@ -261,7 +254,6 @@ async function checkNpmUpdate() {
|
|
|
261
254
|
}
|
|
262
255
|
}
|
|
263
256
|
async function main() {
|
|
264
|
-
logToFile(`\n========== Session Started ========== pwd: ${process.cwd()}`);
|
|
265
257
|
console.log(chalk.cyan(`AI Agent Ready! (${process.cwd()})\n`));
|
|
266
258
|
console.log(chalk.cyan("interrupt: ESC, debug: 'debug [num]'"));
|
|
267
259
|
// Check for updates - only show if update is available
|
|
@@ -273,15 +265,12 @@ async function main() {
|
|
|
273
265
|
}
|
|
274
266
|
catch (error) {
|
|
275
267
|
// Silent fail - just don't show update message if something goes wrong
|
|
276
|
-
logToFile(`Failed to check for updates: ${error.message}`);
|
|
277
268
|
}
|
|
278
269
|
console.log(chalk.cyan("============================================================\n"));
|
|
279
270
|
while (true) {
|
|
280
271
|
const userPrompt = await askQuestion("\nPrompt: ");
|
|
281
272
|
if (userPrompt.toLowerCase() === "exit" ||
|
|
282
273
|
userPrompt.toLowerCase() === "quit") {
|
|
283
|
-
logToFile("User exited the session");
|
|
284
|
-
logToFile("========== Session Ended ==========\n");
|
|
285
274
|
rl.close();
|
|
286
275
|
break;
|
|
287
276
|
}
|
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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"}
|
package/dist/utils/system.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { ModelMessage } from "ai";
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function
|
|
2
|
+
export declare function getSessionFile(): string;
|
|
3
|
+
export declare function appendMessageToLog(message: ModelMessage): void;
|
|
4
|
+
export declare function listSessions(limit?: number): Array<{
|
|
5
|
+
file: string;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
summary?: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function loadSession(file: string): ModelMessage[] | null;
|
|
10
|
+
export declare function getSessionFileByIndex(index: number): string | null;
|
|
4
11
|
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAWvC,wBAAgB,cAAc,IAAI,MAAM,CAavC;AAQD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,QAmCvD;AAED,wBAAgB,YAAY,CAC1B,KAAK,GAAE,MAAW,GACjB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwD9D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,GAAG,IAAI,CAY/D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE"}
|
package/dist/utils/system.js
CHANGED
|
@@ -1,35 +1,128 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import { homedir } from "os";
|
|
4
|
-
//
|
|
5
|
-
const
|
|
6
|
-
if (!fs.existsSync(
|
|
7
|
-
fs.mkdirSync(
|
|
4
|
+
// Session file setup
|
|
5
|
+
const sessionDir = path.join(homedir(), ".ai", "sessions");
|
|
6
|
+
if (!fs.existsSync(sessionDir)) {
|
|
7
|
+
fs.mkdirSync(sessionDir, { recursive: true });
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
// Get session file - checks env var dynamically, creates new file only if needed
|
|
10
|
+
let currentSessionFile;
|
|
11
|
+
export function getSessionFile() {
|
|
12
|
+
if (process.env.AI_SESSION_FILE) {
|
|
13
|
+
return path.join(sessionDir, process.env.AI_SESSION_FILE);
|
|
14
|
+
}
|
|
15
|
+
// If no env var, use the same session file for the duration of this run
|
|
16
|
+
if (!currentSessionFile) {
|
|
17
|
+
const date = new Date();
|
|
18
|
+
currentSessionFile = path.join(sessionDir, `${date.toISOString().replace(/\.\d{3}Z$/, "")}-messages.json`);
|
|
19
|
+
}
|
|
20
|
+
return currentSessionFile;
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
// For backward compatibility - default session file
|
|
23
|
+
const defaultSessionFile = path.join(sessionDir, `${new Date().toISOString().replace(/\.\d{3}Z$/, "")}-messages.json`);
|
|
24
|
+
export function appendMessageToLog(message) {
|
|
25
|
+
const formattedMessage = JSON.stringify(message, null, 2)
|
|
26
|
+
.split("\n")
|
|
27
|
+
.map((line) => ` ${line}`)
|
|
28
|
+
.join("\n");
|
|
29
|
+
let fd;
|
|
30
|
+
try {
|
|
31
|
+
// Open read/write so we can truncate the closing bracket and append in-place.
|
|
32
|
+
fd = fs.openSync(getSessionFile(), "a+");
|
|
33
|
+
const { size } = fs.fstatSync(fd);
|
|
34
|
+
if (size === 0) {
|
|
35
|
+
fs.writeSync(fd, `[\n${formattedMessage}\n]\n`);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Expected file ending is "\n]\n" from our writer.
|
|
39
|
+
if (size >= 3) {
|
|
40
|
+
fs.ftruncateSync(fd, size - 3);
|
|
41
|
+
fs.writeSync(fd, `,\n${formattedMessage}\n]\n`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// Fallback for unexpected tiny/corrupt content.
|
|
45
|
+
fs.ftruncateSync(fd, 0);
|
|
46
|
+
fs.writeSync(fd, `[\n${formattedMessage}\n]\n`);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Last-resort fallback keeps logging functional.
|
|
50
|
+
fs.writeFileSync(getSessionFile(), `[\n${formattedMessage}\n]\n`);
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
if (fd !== undefined) {
|
|
54
|
+
fs.closeSync(fd);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export function listSessions(limit = 20) {
|
|
59
|
+
if (!fs.existsSync(sessionDir)) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
const files = fs
|
|
63
|
+
.readdirSync(sessionDir)
|
|
64
|
+
.filter((file) => file.endsWith("-messages.json"))
|
|
65
|
+
.sort((a, b) => {
|
|
66
|
+
// Sort by filename (which includes ISO timestamp) in reverse chronological order
|
|
67
|
+
return b.localeCompare(a);
|
|
68
|
+
})
|
|
69
|
+
.slice(0, limit);
|
|
70
|
+
const result = files.map((file) => {
|
|
71
|
+
const timestamp = file.split("-messages.json")[0] || "";
|
|
72
|
+
// Try to read and parse the session file for a summary
|
|
73
|
+
let summary = undefined;
|
|
74
|
+
try {
|
|
75
|
+
const content = fs.readFileSync(path.join(sessionDir, file), "utf-8");
|
|
76
|
+
const messages = JSON.parse(content);
|
|
77
|
+
// Collect all user messages and join them
|
|
78
|
+
const userMessages = [];
|
|
79
|
+
messages.forEach((msg) => {
|
|
80
|
+
if (msg.role === "user" && typeof msg.content === "string") {
|
|
81
|
+
userMessages.push(msg.content);
|
|
82
|
+
}
|
|
27
83
|
});
|
|
84
|
+
if (userMessages.length > 0) {
|
|
85
|
+
// Join all user messages with spaces
|
|
86
|
+
const combined = userMessages.join(" ");
|
|
87
|
+
// Truncate to 40 characters if needed
|
|
88
|
+
summary =
|
|
89
|
+
combined.length > 40 ? combined.substring(0, 40) + "..." : combined;
|
|
90
|
+
}
|
|
28
91
|
}
|
|
29
|
-
|
|
30
|
-
|
|
92
|
+
catch (error) {
|
|
93
|
+
// If we can't read the file, just show timestamp
|
|
31
94
|
}
|
|
95
|
+
const session = {
|
|
96
|
+
file,
|
|
97
|
+
timestamp,
|
|
98
|
+
};
|
|
99
|
+
if (summary !== undefined) {
|
|
100
|
+
session.summary = summary;
|
|
101
|
+
}
|
|
102
|
+
return session;
|
|
32
103
|
});
|
|
33
|
-
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
export function loadSession(file) {
|
|
107
|
+
try {
|
|
108
|
+
const fullPath = path.join(sessionDir, file);
|
|
109
|
+
if (!fs.existsSync(fullPath)) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const content = fs.readFileSync(fullPath, "utf-8");
|
|
113
|
+
return JSON.parse(content);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error(`Error loading session ${file}: ${error.message}`);
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export function getSessionFileByIndex(index) {
|
|
121
|
+
const sessions = listSessions();
|
|
122
|
+
if (index < 0 || index >= sessions.length) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const session = sessions[index];
|
|
126
|
+
return session ? session.file : null;
|
|
34
127
|
}
|
|
35
128
|
//# sourceMappingURL=system.js.map
|
package/dist/utils/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/utils/system.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ai-agent-test",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ai": "./bin/ai"
|
|
@@ -21,13 +21,23 @@
|
|
|
21
21
|
"lint": "oxlint . --ignore-pattern dist/",
|
|
22
22
|
"prepack": "rm -rf dist && npm run build"
|
|
23
23
|
},
|
|
24
|
-
"author": "",
|
|
24
|
+
"author": "Bright Lee <benevbright@gmail.com>",
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|
|
27
27
|
"url": "https://github.com/benevbright/ai-agent-test.git"
|
|
28
28
|
},
|
|
29
29
|
"license": "ISC",
|
|
30
|
-
"description": "",
|
|
30
|
+
"description": "A lightweight agentic workflow system for testing AI agent flows with local LLMs and tool integrations",
|
|
31
|
+
"keywords": [
|
|
32
|
+
"ai",
|
|
33
|
+
"agent",
|
|
34
|
+
"agentic",
|
|
35
|
+
"workflow",
|
|
36
|
+
"llm",
|
|
37
|
+
"local-llm",
|
|
38
|
+
"cli",
|
|
39
|
+
"automation"
|
|
40
|
+
],
|
|
31
41
|
"devDependencies": {
|
|
32
42
|
"@types/jsdom": "^28.0.1",
|
|
33
43
|
"@types/node": "^25.5.0",
|
|
@@ -41,6 +51,7 @@
|
|
|
41
51
|
"@ai-sdk/openai": "^3.0.50",
|
|
42
52
|
"ai": "^6.0.146",
|
|
43
53
|
"chalk": "^5.6.2",
|
|
54
|
+
"dotenv": "^17.4.1",
|
|
44
55
|
"jsdom": "^29.0.1",
|
|
45
56
|
"zod": "^4.3.6"
|
|
46
57
|
}
|