@smilique/said 1.0.6 → 1.0.8

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/dist/agent.d.ts CHANGED
@@ -17,6 +17,7 @@ export interface ConversationContext {
17
17
  export interface AgentConfig extends ServiceConfig {
18
18
  systemPrompt?: string;
19
19
  maxContextLength?: number;
20
+ maxToolIterations?: number;
20
21
  }
21
22
  export interface ChatMessage {
22
23
  role: 'system' | 'user' | 'assistant';
@@ -39,8 +40,12 @@ export declare class Agent extends Service {
39
40
  private systemPrompt;
40
41
  private contexts;
41
42
  private maxContextLength;
43
+ private maxToolIterations;
42
44
  private skillRegistry;
45
+ private skillAliases;
43
46
  constructor(config: AgentConfig, eventEmitter?: EventEmitter);
47
+ private getEnvironmentInfo;
48
+ private buildSystemPrompt;
44
49
  setProvider(provider: LLMProvider | null): void;
45
50
  getSkillRegistry(): SkillRegistry;
46
51
  registerSkill(skill: Skill): void;
@@ -50,6 +55,20 @@ export declare class Agent extends Service {
50
55
  start(): Promise<void>;
51
56
  stop(): Promise<void>;
52
57
  getLastTokenUsage(): TokenUsage;
58
+ /**
59
+ * Resolve skill name (handle aliases)
60
+ */
61
+ private resolveSkillName;
62
+ /**
63
+ * Execute a skill from an LLM response string
64
+ * Returns {skillResult, remainingResponse, skillNotFound} if skill found
65
+ * Returns null if no skill pattern found in response
66
+ */
67
+ private executeSkillFromResponse;
68
+ /**
69
+ * Trim conversation context to keep it within limits
70
+ */
71
+ private trimContext;
53
72
  processMessage(chatId: number, userMessage: string): Promise<string>;
54
73
  processMessageStream(chatId: number, userMessage: string): Promise<AsyncIterable<string>>;
55
74
  clearContext(chatId: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAA6B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAuB,MAAM,sBAAsB,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5E,iBAAiB,CAAC,IAAI,UAAU,CAAC;CAClC;AAED,qBAAa,KAAM,SAAQ,OAAO;IAChC,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,YAAY,CAkB+C;IACnE,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,YAAY;IAW5D,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAI/C,gBAAgB,IAAI,aAAa;IAIjC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIjC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAItC,UAAU,IAAI,KAAK,EAAE;IAIf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,iBAAiB,IAAI,UAAU;IAOzB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqEpE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAgC/F,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC,gBAAgB,IAAI,IAAI;CAGzB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/agent.js CHANGED
@@ -1,39 +1,120 @@
1
1
  import { Service } from './service.js';
2
2
  import { loadConfig } from './config.js';
3
+ import { cpus, userInfo, platform, hostname, homedir } from 'os';
3
4
  import { globalSkillRegistry } from './skills/registry.js';
4
5
  export class Agent extends Service {
5
6
  provider = null;
6
- systemPrompt = `You are an autonomous AI agent running in a user's environment. You can help users with various tasks by:
7
-
8
- 1. **Using Skills** - You have access to skills that can interact with the filesystem, browse the web, make API calls, and execute custom tools. When a user asks for something that requires these capabilities, use the appropriate skill.
9
-
10
- 2. **Skills Available**:
11
- - file-edit: Read, write, and manage files on the filesystem
12
- - web-surf: Fetch and parse web pages and URLs
13
- - api-call: Make HTTP API requests
14
- - tool-call: Execute custom tools and commands
15
-
16
- 3. **Job Scheduling** - You can schedule background jobs that run on cron schedules (like daily reminders, periodic checks, etc.)
17
-
18
- 4. **Subagents** - You can spawn and manage subagents to handle parallel tasks.
19
-
20
- When a skill is needed, respond with the skill invocation in format: [[skillName:action '{"param": "value"}']]
21
- Example: [[file-edit:read '{"path": "/tmp/test.txt"}']]
22
- Example: [[web-surf:fetch '{"url": "https://example.com"}']]
23
-
24
- Otherwise, respond as a helpful assistant. Be concise and accurate.`;
7
+ systemPrompt = '';
25
8
  contexts = new Map();
26
9
  maxContextLength = 10;
10
+ maxToolIterations = 5;
27
11
  skillRegistry;
12
+ skillAliases = new Map([
13
+ // Map common short names to actual skill names
14
+ ['file', 'file-edit'],
15
+ ['files', 'file-edit'],
16
+ ['filesystem', 'file-edit'],
17
+ ['edit', 'file-edit'],
18
+ ['tool', 'tool-call'],
19
+ ['tools', 'tool-call'],
20
+ ['shell', 'tool-call'],
21
+ ['cmd', 'tool-call'],
22
+ ['command', 'tool-call'],
23
+ ['web', 'web-surf'],
24
+ ['browse', 'web-surf'],
25
+ ['fetch', 'web-surf'],
26
+ ['http', 'api-call'],
27
+ ['request', 'api-call'],
28
+ ]);
28
29
  constructor(config, eventEmitter) {
29
30
  super(config, eventEmitter);
30
- if (config.systemPrompt) {
31
- this.systemPrompt = config.systemPrompt;
32
- }
33
31
  if (config.maxContextLength) {
34
32
  this.maxContextLength = config.maxContextLength;
35
33
  }
34
+ if (config.maxToolIterations) {
35
+ this.maxToolIterations = config.maxToolIterations;
36
+ }
36
37
  this.skillRegistry = globalSkillRegistry;
38
+ // Build system prompt with environment context
39
+ const osInfo = this.getEnvironmentInfo();
40
+ const availableSkills = this.listSkills();
41
+ if (config.systemPrompt) {
42
+ this.systemPrompt = config.systemPrompt;
43
+ }
44
+ else {
45
+ this.systemPrompt = this.buildSystemPrompt(osInfo, availableSkills);
46
+ }
47
+ }
48
+ getEnvironmentInfo() {
49
+ const osPlatform = platform();
50
+ const host = hostname();
51
+ const user = userInfo();
52
+ const home = homedir();
53
+ const cpuCount = cpus().length;
54
+ let osName = osPlatform;
55
+ if (osPlatform === 'linux')
56
+ osName = 'Linux';
57
+ else if (osPlatform === 'win32')
58
+ osName = 'Windows';
59
+ else if (osPlatform === 'darwin')
60
+ osName = 'macOS';
61
+ return `
62
+ **Environment:**
63
+ - OS: ${osName} (${osPlatform})
64
+ - Hostname: ${host}
65
+ - User: ${user.username}
66
+ - Home Directory: ${home}
67
+ - CPU Cores: ${cpuCount}
68
+ - Current Working Directory: ${process.cwd()}`;
69
+ }
70
+ buildSystemPrompt(osInfo, skills) {
71
+ const skillList = skills.map(s => ` - ${s.name}: ${s.description}`).join('\n');
72
+ const skillExamples = skills.map(s => {
73
+ if (s.name === 'file-edit') {
74
+ return `For ${s.name}:
75
+ - [[${s.name} '{"operation": "read", "path": "/path/to/file"}']]
76
+ - [[${s.name} '{"operation": "write", "path": "/path/to/file", "content": "text"}']]
77
+ - [[${s.name} '{"operation": "list", "path": "/path/to/dir"}']]
78
+ - [[${s.name} '{"operation": "delete", "path": "/path/to/file"}']]
79
+ - [[${s.name} '{"operation": "mkdir", "path": "/path/to/dir"}']]
80
+ - [[${s.name} '{"operation": "stat", "path": "/path/to/file"}']]`;
81
+ }
82
+ if (s.name === 'web-surf') {
83
+ return `For ${s.name}:
84
+ - [[${s.name} '{"operation": "fetch", "url": "https://example.com"}']]`;
85
+ }
86
+ if (s.name === 'api-call') {
87
+ return `For ${s.name}:
88
+ - [[${s.name} '{"method": "GET", "url": "https://api.example.com/data"}']]
89
+ - [[${s.name} '{"method": "POST", "url": "https://api.example.com/data", "body": {"key": "value"}}']]`;
90
+ }
91
+ if (s.name === 'tool-call') {
92
+ return `For ${s.name}:
93
+ - [[${s.name} '{"command": "ls", "args": ["-la"]}']]
94
+ - [[${s.name} '{"command": "top", "args": ["-bn1"]}']]
95
+ - [[${s.name} '{"command": "node", "args": ["script.js"]}']]`;
96
+ }
97
+ return `For ${s.name}:
98
+ - [[${s.name} '{"param": "value"}']]`;
99
+ }).join('\n');
100
+ return `You are an autonomous AI agent running in a user's environment.${osInfo}
101
+
102
+ **Available Skills (USE THESE EXACT NAMES):**
103
+ ${skillList}
104
+
105
+ **Job Scheduling** - You can schedule background jobs that run on cron schedules (like daily reminders, periodic checks, etc.)
106
+
107
+ **Subagents** - You can spawn and manage subagents to handle parallel tasks.
108
+
109
+ **IMPORTANT - How to use skills:**
110
+ When you need to use a skill, respond with ONLY the skill invocation in this exact format. Do NOT include any other text in your response:
111
+ [[skillName '{"param": "value"}']]
112
+
113
+ ${skillExamples}
114
+
115
+ The system will execute the skill and return the result. Then you can respond to the user with the actual answer based on the tool result.
116
+
117
+ For normal responses (without skills), just respond as a helpful assistant. Be concise and accurate.`;
37
118
  }
38
119
  setProvider(provider) {
39
120
  this.provider = provider;
@@ -67,16 +148,119 @@ Otherwise, respond as a helpful assistant. Be concise and accurate.`;
67
148
  }
68
149
  return { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
69
150
  }
151
+ /**
152
+ * Resolve skill name (handle aliases)
153
+ */
154
+ resolveSkillName(name) {
155
+ // Check exact match first
156
+ if (this.skillRegistry.has(name)) {
157
+ return name;
158
+ }
159
+ // Check alias
160
+ if (this.skillAliases.has(name)) {
161
+ const resolved = this.skillAliases.get(name);
162
+ console.log(`[Agent] Resolved skill alias: ${name} -> ${resolved}`);
163
+ return resolved;
164
+ }
165
+ // Check if alias resolves to valid skill
166
+ for (const [alias, target] of this.skillAliases) {
167
+ if (target === name && this.skillRegistry.has(target)) {
168
+ return target;
169
+ }
170
+ }
171
+ return name;
172
+ }
173
+ /**
174
+ * Execute a skill from an LLM response string
175
+ * Returns {skillResult, remainingResponse, skillNotFound} if skill found
176
+ * Returns null if no skill pattern found in response
177
+ */
178
+ async executeSkillFromResponse(response, chatId) {
179
+ // Match [[skillName:action '{"param": "value"}']] pattern
180
+ const skillPattern = /\[\[(\w+)(?::(\w+))?\s*(.*?)\]\]/;
181
+ const match = response.match(skillPattern);
182
+ if (!match) {
183
+ return null;
184
+ }
185
+ let skillName = match[1];
186
+ const action = match[2] || 'execute';
187
+ const paramsStr = match[3];
188
+ // Resolve skill name (handle aliases like "file" -> "file-edit")
189
+ skillName = this.resolveSkillName(skillName);
190
+ console.log(`[Agent] Executing skill: ${skillName}:${action}`);
191
+ // Check if skill exists
192
+ if (!this.skillRegistry.has(skillName)) {
193
+ const availableSkills = this.listSkills().map(s => s.name).join(', ');
194
+ console.log(`[Agent] Skill not found: ${skillName}. Available: ${availableSkills}`);
195
+ // Remove the skill invocation from response
196
+ const remainingResponse = response.replace(match[0], '').trim();
197
+ return {
198
+ skillResult: `Error: Skill "${skillName}" not found. Available skills: ${availableSkills}`,
199
+ remainingResponse,
200
+ skillNotFound: true, // Flag to stop the loop
201
+ };
202
+ }
203
+ // Parse params
204
+ let params = {};
205
+ if (paramsStr) {
206
+ try {
207
+ params = JSON.parse(paramsStr);
208
+ }
209
+ catch {
210
+ params = { value: paramsStr };
211
+ }
212
+ }
213
+ // Add action as operation if specified
214
+ if (action && action !== 'execute') {
215
+ params.operation = action;
216
+ }
217
+ // Execute skill
218
+ const skillContext = {
219
+ sessionId: String(chatId),
220
+ };
221
+ const result = await this.skillRegistry.execute(skillName, params, skillContext);
222
+ // Remove the skill invocation from response
223
+ const remainingResponse = response.replace(match[0], '').trim();
224
+ // If skill execution failed, flag to stop retrying
225
+ const skillNotFound = !result.success;
226
+ return {
227
+ skillResult: result.success
228
+ ? JSON.stringify(result.data, null, 2)
229
+ : `Error: ${result.error}`,
230
+ remainingResponse,
231
+ skillNotFound,
232
+ };
233
+ }
234
+ /**
235
+ * Trim conversation context to keep it within limits
236
+ */
237
+ trimContext(context) {
238
+ const maxMessages = this.maxContextLength + 10; // Buffer for tool results
239
+ if (context.messages.length > maxMessages) {
240
+ const systemMessage = context.messages[0];
241
+ context.messages = [
242
+ systemMessage,
243
+ ...context.messages.slice(-this.maxContextLength),
244
+ ];
245
+ }
246
+ }
70
247
  async processMessage(chatId, userMessage) {
71
248
  if (!this.provider) {
72
249
  throw new Error('LLM provider not set');
73
250
  }
74
- // Check if message contains a skill invocation
251
+ // Check if message contains a direct skill invocation (from user)
75
252
  const skillMatch = userMessage.match(/\[\[(\w+)(?::(\w+))?\s*(.*?)\]\]/);
76
253
  if (skillMatch) {
77
- const skillName = skillMatch[1];
254
+ let skillName = skillMatch[1];
78
255
  const action = skillMatch[2] || 'execute';
79
256
  const paramsStr = skillMatch[3];
257
+ // Resolve skill name (handle aliases)
258
+ skillName = this.resolveSkillName(skillName);
259
+ // Check if skill exists
260
+ const availableSkills = this.listSkills().map(s => s.name).join(', ');
261
+ if (!this.skillRegistry.has(skillName)) {
262
+ return `Error: Skill "${skillName}" not found. Available skills: ${availableSkills}`;
263
+ }
80
264
  let params = {};
81
265
  if (paramsStr) {
82
266
  try {
@@ -87,15 +271,19 @@ Otherwise, respond as a helpful assistant. Be concise and accurate.`;
87
271
  params = { value: paramsStr };
88
272
  }
89
273
  }
274
+ // Add action as operation if specified
275
+ if (action && action !== 'execute') {
276
+ params.operation = action;
277
+ }
90
278
  const skillContext = {
91
279
  sessionId: String(chatId),
92
280
  };
93
281
  const result = await this.skillRegistry.execute(skillName, params, skillContext);
94
282
  if (result.success) {
95
- return `Skill executed: ${skillName}\nResult: ${JSON.stringify(result.data, null, 2)}`;
283
+ return `Result: ${JSON.stringify(result.data, null, 2)}`;
96
284
  }
97
285
  else {
98
- return `Skill error: ${result.error}`;
286
+ return `Error: ${result.error}`;
99
287
  }
100
288
  }
101
289
  // Get or create conversation context
@@ -109,22 +297,44 @@ Otherwise, respond as a helpful assistant. Be concise and accurate.`;
109
297
  }
110
298
  // Add user message
111
299
  context.messages.push({ role: 'user', content: userMessage });
112
- // Trim context if too long
113
- if (context.messages.length > this.maxContextLength + 1) {
114
- // Keep system message and last maxContextLength messages
115
- const systemMessage = context.messages[0];
116
- context.messages = [
117
- systemMessage,
118
- ...context.messages.slice(-this.maxContextLength),
119
- ];
300
+ // Tool execution loop (ReAct pattern)
301
+ let finalResponse = '';
302
+ for (let iteration = 0; iteration < this.maxToolIterations; iteration++) {
303
+ // Trim context if too long
304
+ this.trimContext(context);
305
+ // Get response from provider
306
+ const response = await this.provider.chatCompletion({
307
+ messages: context.messages,
308
+ });
309
+ // Check if response contains skill invocation
310
+ const skillExec = await this.executeSkillFromResponse(response, chatId);
311
+ if (skillExec) {
312
+ console.log(`[Agent] Skill execution result: ${skillExec.skillResult.substring(0, 100)}...`);
313
+ // Add assistant's skill attempt to context
314
+ if (skillExec.remainingResponse) {
315
+ context.messages.push({ role: 'assistant', content: skillExec.remainingResponse });
316
+ }
317
+ // Add tool result to context
318
+ context.messages.push({
319
+ role: 'system',
320
+ content: `Tool execution result: ${skillExec.skillResult}`,
321
+ });
322
+ // If skill was not found or failed, stop the loop and return error
323
+ if (skillExec.skillNotFound) {
324
+ return skillExec.skillResult;
325
+ }
326
+ // Continue to next iteration to let LLM process the result
327
+ continue;
328
+ }
329
+ // No skill detected - this is the final response
330
+ context.messages.push({ role: 'assistant', content: response });
331
+ finalResponse = response;
332
+ break;
120
333
  }
121
- // Get response from provider
122
- const response = await this.provider.chatCompletion({
123
- messages: context.messages,
124
- });
125
- // Add assistant response to context
126
- context.messages.push({ role: 'assistant', content: response });
127
- return response;
334
+ if (!finalResponse) {
335
+ finalResponse = context.messages[context.messages.length - 1].content || 'Max tool iterations reached';
336
+ }
337
+ return finalResponse;
128
338
  }
129
339
  async processMessageStream(chatId, userMessage) {
130
340
  if (!this.provider) {
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smilique/said",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Autonomous AI agent with Telegram integration and extensible skills",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",