@sulala/agent 0.1.6 → 0.1.7
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 +3 -2
- package/context/airtable.md +35 -0
- package/context/asana.md +37 -0
- package/context/bluesky.md +26 -91
- package/context/calendar.md +63 -0
- package/context/country-info.md +13 -0
- package/context/create-skill.md +128 -0
- package/context/discord.md +30 -0
- package/context/docs.md +29 -0
- package/context/drive.md +49 -0
- package/context/dropbox.md +39 -0
- package/context/facebook.md +47 -0
- package/context/fetch-form-api.md +16 -0
- package/context/figma.md +30 -0
- package/context/github.md +58 -0
- package/context/gmail.md +52 -0
- package/context/google.md +28 -0
- package/context/hellohub.md +29 -0
- package/context/jira.md +46 -0
- package/context/linear.md +40 -0
- package/context/notion.md +45 -0
- package/context/portal-integrations.md +42 -0
- package/context/post-to-x.md +50 -0
- package/context/sheets.md +47 -0
- package/context/slack.md +48 -0
- package/context/slides.md +35 -0
- package/context/stripe.md +38 -0
- package/context/tes.md +7 -0
- package/context/test.md +7 -0
- package/context/zoom.md +28 -0
- package/dist/agent/google/calendar.d.ts +2 -0
- package/dist/agent/google/calendar.d.ts.map +1 -0
- package/dist/agent/google/calendar.js +119 -0
- package/dist/agent/google/calendar.js.map +1 -0
- package/dist/agent/google/drive.d.ts +2 -0
- package/dist/agent/google/drive.d.ts.map +1 -0
- package/dist/agent/google/drive.js +51 -0
- package/dist/agent/google/drive.js.map +1 -0
- package/dist/agent/google/get-token.d.ts +7 -0
- package/dist/agent/google/get-token.d.ts.map +1 -0
- package/dist/agent/google/get-token.js +37 -0
- package/dist/agent/google/get-token.js.map +1 -0
- package/dist/agent/google/gmail.d.ts +2 -0
- package/dist/agent/google/gmail.d.ts.map +1 -0
- package/dist/agent/google/gmail.js +138 -0
- package/dist/agent/google/gmail.js.map +1 -0
- package/dist/agent/google/index.d.ts +2 -0
- package/dist/agent/google/index.d.ts.map +1 -0
- package/dist/agent/google/index.js +13 -0
- package/dist/agent/google/index.js.map +1 -0
- package/dist/agent/loop.d.ts +8 -0
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +226 -40
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory.d.ts +21 -0
- package/dist/agent/memory.d.ts.map +1 -0
- package/dist/agent/memory.js +33 -0
- package/dist/agent/memory.js.map +1 -0
- package/dist/agent/pending-actions.d.ts +21 -0
- package/dist/agent/pending-actions.d.ts.map +1 -0
- package/dist/agent/pending-actions.js +65 -0
- package/dist/agent/pending-actions.js.map +1 -0
- package/dist/agent/pi-runner.d.ts +27 -0
- package/dist/agent/pi-runner.d.ts.map +1 -0
- package/dist/agent/pi-runner.js +300 -0
- package/dist/agent/pi-runner.js.map +1 -0
- package/dist/agent/skill-generate.d.ts +63 -0
- package/dist/agent/skill-generate.d.ts.map +1 -0
- package/dist/agent/skill-generate.js +128 -0
- package/dist/agent/skill-generate.js.map +1 -0
- package/dist/agent/skill-install.d.ts.map +1 -1
- package/dist/agent/skill-install.js +80 -31
- package/dist/agent/skill-install.js.map +1 -1
- package/dist/agent/skill-templates.d.ts +17 -0
- package/dist/agent/skill-templates.d.ts.map +1 -0
- package/dist/agent/skill-templates.js +26 -0
- package/dist/agent/skill-templates.js.map +1 -0
- package/dist/agent/skills-config.d.ts +24 -2
- package/dist/agent/skills-config.d.ts.map +1 -1
- package/dist/agent/skills-config.js +107 -8
- package/dist/agent/skills-config.js.map +1 -1
- package/dist/agent/skills-watcher.js +1 -1
- package/dist/agent/skills.d.ts +9 -3
- package/dist/agent/skills.d.ts.map +1 -1
- package/dist/agent/skills.js +104 -9
- package/dist/agent/skills.js.map +1 -1
- package/dist/agent/tools.d.ts +25 -3
- package/dist/agent/tools.d.ts.map +1 -1
- package/dist/agent/tools.integrations.test.d.ts +2 -0
- package/dist/agent/tools.integrations.test.d.ts.map +1 -0
- package/dist/agent/tools.integrations.test.js +269 -0
- package/dist/agent/tools.integrations.test.js.map +1 -0
- package/dist/agent/tools.js +692 -39
- package/dist/agent/tools.js.map +1 -1
- package/dist/ai/orchestrator.d.ts +4 -1
- package/dist/ai/orchestrator.d.ts.map +1 -1
- package/dist/ai/orchestrator.js +246 -14
- package/dist/ai/orchestrator.js.map +1 -1
- package/dist/ai/pricing.d.ts +6 -0
- package/dist/ai/pricing.d.ts.map +1 -0
- package/dist/ai/pricing.js +39 -0
- package/dist/ai/pricing.js.map +1 -0
- package/dist/channels/discord.d.ts +15 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +55 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/stripe.d.ts +15 -0
- package/dist/channels/stripe.d.ts.map +1 -0
- package/dist/channels/stripe.js +58 -0
- package/dist/channels/stripe.js.map +1 -0
- package/dist/channels/telegram.d.ts +60 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +562 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/cli.js +66 -8
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +14 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +85 -1
- package/dist/config.js.map +1 -1
- package/dist/db/index.d.ts +83 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +174 -2
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema.sql +35 -0
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +1219 -27
- package/dist/gateway/server.js.map +1 -1
- package/dist/index.js +149 -6
- package/dist/index.js.map +1 -1
- package/dist/ollama-setup.d.ts +27 -0
- package/dist/ollama-setup.d.ts.map +1 -0
- package/dist/ollama-setup.js +191 -0
- package/dist/ollama-setup.js.map +1 -0
- package/dist/onboard-env.d.ts +1 -1
- package/dist/onboard-env.d.ts.map +1 -1
- package/dist/onboard-env.js +2 -0
- package/dist/onboard-env.js.map +1 -1
- package/dist/onboard.d.ts +3 -1
- package/dist/onboard.d.ts.map +1 -1
- package/dist/onboard.js +7 -2
- package/dist/onboard.js.map +1 -1
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +32 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/redact.d.ts +15 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +56 -0
- package/dist/redact.js.map +1 -0
- package/dist/scheduler/cron.d.ts +21 -0
- package/dist/scheduler/cron.d.ts.map +1 -1
- package/dist/scheduler/cron.js +60 -0
- package/dist/scheduler/cron.js.map +1 -1
- package/dist/system-capabilities.d.ts +11 -0
- package/dist/system-capabilities.d.ts.map +1 -0
- package/dist/system-capabilities.js +109 -0
- package/dist/system-capabilities.js.map +1 -0
- package/dist/types.d.ts +62 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/watcher/index.d.ts +2 -0
- package/dist/watcher/index.d.ts.map +1 -1
- package/dist/watcher/index.js +31 -1
- package/dist/watcher/index.js.map +1 -1
- package/dist/workspace-automations.d.ts +16 -0
- package/dist/workspace-automations.d.ts.map +1 -0
- package/dist/workspace-automations.js +133 -0
- package/dist/workspace-automations.js.map +1 -0
- package/package.json +19 -3
- package/registry/bluesky.md +12 -89
- package/registry/skills-registry.json +6 -0
- package/src/db/schema.sql +35 -0
- package/src/index.ts +159 -6
package/dist/agent/loop.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { complete, completeStream } from '../ai/orchestrator.js';
|
|
4
|
+
import { estimateCostUsd } from '../ai/pricing.js';
|
|
4
5
|
import { getAgentMessages, appendAgentMessage } from '../db/index.js';
|
|
5
6
|
import { log } from '../db/index.js';
|
|
6
7
|
import { config } from '../config.js';
|
|
7
8
|
import { runAgentHooksSessionStart, runAgentHooksSessionEnd, runAgentHooksBeforePromptBuild, runAgentHooksBeforeToolCall, runAgentHooksAfterToolCall, runAgentHooksAgentEnd, } from '../plugins/index.js';
|
|
8
9
|
import { listTools, executeTool, getAgentRunDepth, setAgentRunDepth } from './tools.js';
|
|
10
|
+
import { getMemoryForContext, getSharedScopeKeyForSession } from './memory.js';
|
|
9
11
|
import { getSkillPaths } from './skills.js';
|
|
10
12
|
import { isSkillEnabled } from './skills-config.js';
|
|
11
13
|
const DEFAULT_SYSTEM = 'You are a helpful assistant. You have access to tools; use them when appropriate.';
|
|
@@ -55,7 +57,16 @@ function rowsToMessages(rows) {
|
|
|
55
57
|
return msg;
|
|
56
58
|
});
|
|
57
59
|
}
|
|
58
|
-
/**
|
|
60
|
+
/** Keep only the last tool message per tool_call_id so the API never sees duplicates (e.g. pending placeholder + result). */
|
|
61
|
+
function deduplicateToolMessages(messages) {
|
|
62
|
+
const lastIndexByToolCallId = new Map();
|
|
63
|
+
messages.forEach((m, i) => {
|
|
64
|
+
if (m.role === 'tool' && m.tool_call_id)
|
|
65
|
+
lastIndexByToolCallId.set(m.tool_call_id, i);
|
|
66
|
+
});
|
|
67
|
+
return messages.filter((m, i) => m.role !== 'tool' || !m.tool_call_id || lastIndexByToolCallId.get(m.tool_call_id) === i);
|
|
68
|
+
}
|
|
69
|
+
/** Estimate token count (conservative: ~3.5 chars per token so we stay under API limits). */
|
|
59
70
|
function estimateTokens(messages) {
|
|
60
71
|
let n = 0;
|
|
61
72
|
for (const m of messages) {
|
|
@@ -65,7 +76,45 @@ function estimateTokens(messages) {
|
|
|
65
76
|
for (const tc of m.tool_calls)
|
|
66
77
|
n += (tc.arguments?.length ?? 0) + (tc.name?.length ?? 0);
|
|
67
78
|
}
|
|
68
|
-
return Math.ceil(n /
|
|
79
|
+
return Math.ceil(n / 3.5);
|
|
80
|
+
}
|
|
81
|
+
const MAX_CHARS_PER_MESSAGE = 6000;
|
|
82
|
+
/** Hard cap so we never send more than the model can accept (e.g. 128k for many models). */
|
|
83
|
+
const API_MAX_CONTEXT_TOKENS = 128000;
|
|
84
|
+
/** Truncate message content and tool args so no single message blows the context. */
|
|
85
|
+
function truncateMessagesForContext(messages) {
|
|
86
|
+
let out = messages.map((m) => {
|
|
87
|
+
const msg = { role: m.role };
|
|
88
|
+
if (m.content != null) {
|
|
89
|
+
msg.content = m.content.length <= MAX_CHARS_PER_MESSAGE ? m.content : m.content.slice(0, MAX_CHARS_PER_MESSAGE) + '\n\n[... truncated]';
|
|
90
|
+
}
|
|
91
|
+
if (m.tool_calls?.length) {
|
|
92
|
+
msg.tool_calls = m.tool_calls.map((tc) => ({
|
|
93
|
+
id: tc.id,
|
|
94
|
+
name: tc.name,
|
|
95
|
+
arguments: (tc.arguments?.length ?? 0) <= MAX_CHARS_PER_MESSAGE ? (tc.arguments ?? '') : (tc.arguments.slice(0, MAX_CHARS_PER_MESSAGE) + ' ... [truncated]'),
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
if (m.tool_call_id)
|
|
99
|
+
msg.tool_call_id = m.tool_call_id;
|
|
100
|
+
if (m.name)
|
|
101
|
+
msg.name = m.name;
|
|
102
|
+
return msg;
|
|
103
|
+
});
|
|
104
|
+
const limit = Math.min(config.agentMaxContextTokens || API_MAX_CONTEXT_TOKENS, API_MAX_CONTEXT_TOKENS);
|
|
105
|
+
while (estimateTokens(out) > limit && out.length > 2) {
|
|
106
|
+
const dropIndex = out.findIndex((m) => m.role !== 'system');
|
|
107
|
+
if (dropIndex === -1)
|
|
108
|
+
break;
|
|
109
|
+
out = out.filter((_, i) => i !== dropIndex);
|
|
110
|
+
}
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
/** Return the last user message content (for debugging why a tool was called). */
|
|
114
|
+
function getLastUserContent(messages) {
|
|
115
|
+
const last = [...messages].reverse().find((m) => m.role === 'user');
|
|
116
|
+
const c = last && 'content' in last ? last.content : null;
|
|
117
|
+
return typeof c === 'string' ? c : c != null ? JSON.stringify(c).slice(0, 500) : '(none)';
|
|
69
118
|
}
|
|
70
119
|
/** Apply message compaction: limit by count and optionally by token budget. */
|
|
71
120
|
function compactHistory(rows, systemPromptLength) {
|
|
@@ -85,7 +134,7 @@ function compactHistory(rows, systemPromptLength) {
|
|
|
85
134
|
return out;
|
|
86
135
|
}
|
|
87
136
|
const TOOL_RETRY_DELAY_MS = 500;
|
|
88
|
-
async function executeToolWithRetry(name, args) {
|
|
137
|
+
async function executeToolWithRetry(name, args, opts) {
|
|
89
138
|
const maxRetries = config.agentToolRetryCount;
|
|
90
139
|
let lastErr;
|
|
91
140
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
@@ -93,7 +142,7 @@ async function executeToolWithRetry(name, args) {
|
|
|
93
142
|
await new Promise((r) => setTimeout(r, TOOL_RETRY_DELAY_MS * attempt));
|
|
94
143
|
}
|
|
95
144
|
try {
|
|
96
|
-
return await executeTool(name, args);
|
|
145
|
+
return await executeTool(name, args, opts);
|
|
97
146
|
}
|
|
98
147
|
catch (err) {
|
|
99
148
|
lastErr = err;
|
|
@@ -157,7 +206,8 @@ function loadContextFromPaths() {
|
|
|
157
206
|
continue;
|
|
158
207
|
}
|
|
159
208
|
const parsed = parseFrontmatter(raw);
|
|
160
|
-
|
|
209
|
+
const slug = fileName.replace(/\.md$/, '');
|
|
210
|
+
if (parsed.name && parsed.description && isSkillEnabled(slug)) {
|
|
161
211
|
bySkillName.set(parsed.name, {
|
|
162
212
|
index: { name: parsed.name, description: parsed.description },
|
|
163
213
|
body: parsed.body,
|
|
@@ -180,11 +230,30 @@ function loadContextFromPaths() {
|
|
|
180
230
|
const indexSection = skillIndex.length > 0
|
|
181
231
|
? `### Available skills (use when the user's request matches)\n${skillIndex.map((s) => `- **${s.name}**: ${s.description}`).join('\n')}\n\n`
|
|
182
232
|
: '';
|
|
183
|
-
|
|
233
|
+
// OpenClaw-style: inject workspace path so the agent knows where to create skills and watch-folder automations.
|
|
234
|
+
const workspaceSection = `## Workspace\n\n` +
|
|
235
|
+
`- **Skills**: \`${config.skillsWorkspaceDir}\` — use **write_file** with path \`${config.skillsWorkspaceDir}/<slug>/SKILL.md\` when creating a skill. Do not use \`~\` or \`$HOME\`.\n\n` +
|
|
236
|
+
`- **Scripts and watch-folder automations**: Workspace root is \`${config.workspaceDir}\`. When the user asks to watch a folder and do something (e.g. post new images to Bluesky or Facebook):\n` +
|
|
237
|
+
` 1. Create a script under \`${config.workspaceDir}/scripts/\` (e.g. \`scripts/watch_bluesky.sh\` or \`scripts/watch_facebook.sh\`) that accepts the **file path as first argument** (\`$1\`) and uses env vars for credentials.\n` +
|
|
238
|
+
` 2. Store credentials in \`${config.workspaceDir}/.env\` (e.g. \`BSKY_HANDLE=...\`, \`BSKY_APP_PASSWORD=...\` or \`PAGE_ACCESS_TOKEN=...\`). Use **write_file** to create or append lines to \`.env\`.\n` +
|
|
239
|
+
` 3. Call **register_automation** with \`id\`, \`script\` (e.g. \`scripts/watch_bluesky.sh\`), \`watch_folders\` (array of absolute paths), and optional \`filter: "image"\` for image-only. The agent will run your script when matching files are added.\n` +
|
|
240
|
+
` 4. **Always test the script yourself** before replying: run it with **run_command** and a real file path from the watch folder (e.g. an existing image). Example: \`bash -lc "set -a; source ${config.workspaceDir}/.env; set +a; ${config.workspaceDir}/scripts/your_script.sh /path/to/existing/image.jpg"\`. If it fails (e.g. missing argument, auth error), fix the script or .env and run again until it succeeds. Do not tell the user to test manually.\n\n`;
|
|
241
|
+
return `\n\n## Context\n\n${workspaceSection}${indexSection}${chunks.join('\n\n')}`;
|
|
184
242
|
}
|
|
185
243
|
async function resolveSystemPrompt(sessionId, basePrompt, messageCount) {
|
|
186
244
|
const context = loadContextFromPaths();
|
|
187
|
-
|
|
245
|
+
let withContext = basePrompt + context;
|
|
246
|
+
const sessionMemory = getMemoryForContext('session', sessionId, { limit: 20, maxChars: 2000 });
|
|
247
|
+
const sharedKey = getSharedScopeKeyForSession(sessionId);
|
|
248
|
+
const sharedMemory = sharedKey != null ? getMemoryForContext('shared', sharedKey, { limit: 30, maxChars: 3000 }) : '';
|
|
249
|
+
const memoryParts = [];
|
|
250
|
+
if (sessionMemory)
|
|
251
|
+
memoryParts.push('**This conversation:**\n' + sessionMemory);
|
|
252
|
+
if (sharedMemory)
|
|
253
|
+
memoryParts.push('**Across sessions:**\n' + sharedMemory);
|
|
254
|
+
if (memoryParts.length > 0) {
|
|
255
|
+
withContext += '\n\n## Memory\n\n' + memoryParts.join('\n\n');
|
|
256
|
+
}
|
|
188
257
|
const overridden = await runAgentHooksBeforePromptBuild(sessionId, {
|
|
189
258
|
systemPrompt: withContext,
|
|
190
259
|
messageCount,
|
|
@@ -192,22 +261,22 @@ async function resolveSystemPrompt(sessionId, basePrompt, messageCount) {
|
|
|
192
261
|
return overridden ?? withContext;
|
|
193
262
|
}
|
|
194
263
|
export async function runAgentTurn(options) {
|
|
195
|
-
const { sessionId, userMessage = null, systemPrompt: optionPrompt = null, provider, model, max_tokens = 1024, } = options;
|
|
264
|
+
const { sessionId, userMessage = null, systemPrompt: optionPrompt = null, provider, model, max_tokens = 1024, skipToolApproval = false, } = options;
|
|
196
265
|
const { signal, cleanup } = buildEffectiveSignal(options);
|
|
197
266
|
setAgentRunDepth(getAgentRunDepth() + 1);
|
|
198
267
|
try {
|
|
199
268
|
throwIfAborted(signal);
|
|
200
269
|
await runAgentHooksSessionStart(sessionId);
|
|
201
|
-
const historyLimit = config.agentMaxHistoryMessages > 0 ? config.agentMaxHistoryMessages + 50 :
|
|
270
|
+
const historyLimit = config.agentMaxHistoryMessages > 0 ? config.agentMaxHistoryMessages + 50 : 80;
|
|
202
271
|
const history = getAgentMessages(sessionId, historyLimit);
|
|
203
272
|
const baseSystem = optionPrompt ?? config.agentSystemPrompt ?? DEFAULT_SYSTEM;
|
|
204
|
-
|
|
273
|
+
let systemPrompt = await resolveSystemPrompt(sessionId, baseSystem, history.length + 1);
|
|
205
274
|
const compacted = compactHistory(history, systemPrompt.length);
|
|
206
275
|
const messages = [];
|
|
207
276
|
if (systemPrompt) {
|
|
208
277
|
messages.push({ role: 'system', content: systemPrompt });
|
|
209
278
|
}
|
|
210
|
-
messages.push(...rowsToMessages(compacted));
|
|
279
|
+
messages.push(...deduplicateToolMessages(rowsToMessages(compacted)));
|
|
211
280
|
if (userMessage) {
|
|
212
281
|
messages.push({ role: 'user', content: userMessage });
|
|
213
282
|
appendAgentMessage({ session_id: sessionId, role: 'user', content: userMessage });
|
|
@@ -222,10 +291,11 @@ export async function runAgentTurn(options) {
|
|
|
222
291
|
while (turnCount < MAX_TOOL_TURNS) {
|
|
223
292
|
throwIfAborted(signal);
|
|
224
293
|
turnCount++;
|
|
294
|
+
const apiMessages = truncateMessagesForContext(messages);
|
|
225
295
|
const result = await complete({
|
|
226
296
|
provider,
|
|
227
297
|
model,
|
|
228
|
-
messages,
|
|
298
|
+
messages: apiMessages,
|
|
229
299
|
max_tokens,
|
|
230
300
|
tools: toolsForApi.length ? toolsForApi : undefined,
|
|
231
301
|
signal,
|
|
@@ -242,6 +312,8 @@ export async function runAgentTurn(options) {
|
|
|
242
312
|
if (!toolCalls?.length) {
|
|
243
313
|
break;
|
|
244
314
|
}
|
|
315
|
+
const lastUser = getLastUserContent(messages);
|
|
316
|
+
console.log('[agent] Tools:', toolCalls.map((tc) => tc.name).join(', '), '| Last user message:', lastUser.slice(0, 300), lastUser.length > 300 ? '...' : '');
|
|
245
317
|
messages.push({
|
|
246
318
|
role: 'assistant',
|
|
247
319
|
content: assistantContent,
|
|
@@ -249,15 +321,39 @@ export async function runAgentTurn(options) {
|
|
|
249
321
|
});
|
|
250
322
|
for (const tc of toolCalls) {
|
|
251
323
|
throwIfAborted(signal);
|
|
252
|
-
|
|
324
|
+
console.log('[agent] Tool:', tc.name);
|
|
325
|
+
let args = {};
|
|
326
|
+
if (tc.arguments?.trim()) {
|
|
327
|
+
try {
|
|
328
|
+
args = JSON.parse(tc.arguments);
|
|
329
|
+
}
|
|
330
|
+
catch (parseErr) {
|
|
331
|
+
log('agent', 'warn', `Tool ${tc.name} arguments invalid or truncated`, {
|
|
332
|
+
error: parseErr instanceof Error ? parseErr.message : String(parseErr),
|
|
333
|
+
length: tc.arguments?.length ?? 0,
|
|
334
|
+
});
|
|
335
|
+
args = { __parseError: 'Arguments were truncated or invalid; please try again with a shorter or simpler request.' };
|
|
336
|
+
}
|
|
337
|
+
}
|
|
253
338
|
args = await runAgentHooksBeforeToolCall(sessionId, tc.name, args);
|
|
254
339
|
let toolResult;
|
|
255
|
-
|
|
256
|
-
|
|
340
|
+
const parseError = args?.__parseError;
|
|
341
|
+
if (parseError) {
|
|
342
|
+
toolResult = { error: parseError };
|
|
257
343
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
344
|
+
else {
|
|
345
|
+
try {
|
|
346
|
+
toolResult = await executeToolWithRetry(tc.name, args, {
|
|
347
|
+
toolCallId: tc.id,
|
|
348
|
+
signal,
|
|
349
|
+
sessionId,
|
|
350
|
+
skipApproval: skipToolApproval,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
catch (err) {
|
|
354
|
+
toolResult = { error: err instanceof Error ? err.message : String(err) };
|
|
355
|
+
log('agent', 'warn', `Tool ${tc.name} failed after retries`, { error: err.message });
|
|
356
|
+
}
|
|
261
357
|
}
|
|
262
358
|
await runAgentHooksAfterToolCall(sessionId, tc.name, args, toolResult);
|
|
263
359
|
messages.push({
|
|
@@ -273,6 +369,18 @@ export async function runAgentTurn(options) {
|
|
|
273
369
|
name: tc.name,
|
|
274
370
|
content: typeof toolResult === 'string' ? toolResult : JSON.stringify(toolResult),
|
|
275
371
|
});
|
|
372
|
+
const pending = typeof toolResult === 'object' && toolResult !== null && toolResult.__pendingApproval;
|
|
373
|
+
if (pending) {
|
|
374
|
+
const pendingActionId = toolResult.pendingActionId;
|
|
375
|
+
const updatedHistory = getAgentMessages(sessionId);
|
|
376
|
+
return {
|
|
377
|
+
sessionId,
|
|
378
|
+
messages: rowsToMessages(updatedHistory),
|
|
379
|
+
finalContent: lastContent,
|
|
380
|
+
turnCount,
|
|
381
|
+
pendingActionId,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
276
384
|
}
|
|
277
385
|
}
|
|
278
386
|
const updatedHistory = getAgentMessages(sessionId);
|
|
@@ -293,21 +401,21 @@ export async function runAgentTurn(options) {
|
|
|
293
401
|
}
|
|
294
402
|
/** Run agent turn with streaming (OpenAI: deltas; others: single done). */
|
|
295
403
|
export async function runAgentTurnStream(options, onEvent) {
|
|
296
|
-
const { sessionId, userMessage = null, systemPrompt: optionPrompt = null, provider, model, max_tokens = 1024, } = options;
|
|
404
|
+
const { sessionId, userMessage = null, systemPrompt: optionPrompt = null, provider, model, max_tokens = 1024, skipToolApproval = false, } = options;
|
|
297
405
|
const { signal, cleanup } = buildEffectiveSignal(options);
|
|
298
406
|
setAgentRunDepth(getAgentRunDepth() + 1);
|
|
299
407
|
try {
|
|
300
408
|
throwIfAborted(signal);
|
|
301
409
|
await runAgentHooksSessionStart(sessionId);
|
|
302
|
-
const historyLimit = config.agentMaxHistoryMessages > 0 ? config.agentMaxHistoryMessages + 50 :
|
|
410
|
+
const historyLimit = config.agentMaxHistoryMessages > 0 ? config.agentMaxHistoryMessages + 50 : 80;
|
|
303
411
|
const history = getAgentMessages(sessionId, historyLimit);
|
|
304
412
|
const baseSystem = optionPrompt ?? config.agentSystemPrompt ?? DEFAULT_SYSTEM;
|
|
305
|
-
|
|
413
|
+
let systemPrompt = await resolveSystemPrompt(sessionId, baseSystem, history.length + 1);
|
|
306
414
|
const compacted = compactHistory(history, systemPrompt.length);
|
|
307
415
|
const messages = [];
|
|
308
416
|
if (systemPrompt)
|
|
309
417
|
messages.push({ role: 'system', content: systemPrompt });
|
|
310
|
-
messages.push(...rowsToMessages(compacted));
|
|
418
|
+
messages.push(...deduplicateToolMessages(rowsToMessages(compacted)));
|
|
311
419
|
if (userMessage) {
|
|
312
420
|
messages.push({ role: 'user', content: userMessage });
|
|
313
421
|
appendAgentMessage({ session_id: sessionId, role: 'user', content: userMessage });
|
|
@@ -319,36 +427,68 @@ export async function runAgentTurnStream(options, onEvent) {
|
|
|
319
427
|
}));
|
|
320
428
|
let turnCount = 0;
|
|
321
429
|
let lastContent = '';
|
|
322
|
-
const useStream = ['openai', 'openrouter'].includes(provider ?? process.env.AI_DEFAULT_PROVIDER ?? '
|
|
430
|
+
const useStream = ['openai', 'openrouter', 'ollama', 'llama'].includes(provider ?? process.env.AI_DEFAULT_PROVIDER ?? 'ollama');
|
|
323
431
|
while (turnCount < MAX_TOOL_TURNS) {
|
|
324
432
|
throwIfAborted(signal);
|
|
325
433
|
turnCount++;
|
|
326
434
|
const isFirstTurn = turnCount === 1;
|
|
327
435
|
if (useStream && isFirstTurn) {
|
|
328
|
-
const
|
|
436
|
+
const apiMessages = truncateMessagesForContext(messages);
|
|
437
|
+
const result = await completeStream({ provider, model, messages: apiMessages, max_tokens, tools: toolsForApi.length ? toolsForApi : undefined, signal, think: true }, (ev) => {
|
|
329
438
|
if (ev.type === 'delta')
|
|
330
439
|
onEvent({ type: 'assistant', delta: ev.content });
|
|
440
|
+
if (ev.type === 'thinking')
|
|
441
|
+
onEvent({ type: 'thinking', delta: ev.delta });
|
|
331
442
|
});
|
|
332
443
|
lastContent = result.content ?? '';
|
|
444
|
+
const costUsd = estimateCostUsd(result.usage ?? undefined, model);
|
|
333
445
|
appendAgentMessage({
|
|
334
446
|
session_id: sessionId,
|
|
335
447
|
role: 'assistant',
|
|
336
448
|
content: lastContent,
|
|
337
449
|
tool_calls: result.tool_calls ? JSON.stringify(result.tool_calls) : null,
|
|
450
|
+
usage: result.usage ?? undefined,
|
|
451
|
+
cost_usd: costUsd ?? undefined,
|
|
338
452
|
});
|
|
339
453
|
if (result.tool_calls?.length) {
|
|
454
|
+
const lastUserStreamChunk = getLastUserContent(messages);
|
|
455
|
+
console.log('[agent] Tools:', result.tool_calls.map((tc) => tc.name).join(', '), '| Last user message:', lastUserStreamChunk.slice(0, 300), lastUserStreamChunk.length > 300 ? '...' : '');
|
|
340
456
|
messages.push({ role: 'assistant', content: lastContent, tool_calls: result.tool_calls });
|
|
341
457
|
for (const tc of result.tool_calls) {
|
|
342
458
|
throwIfAborted(signal);
|
|
343
|
-
|
|
459
|
+
console.log('[agent] Tool:', tc.name);
|
|
460
|
+
let args = {};
|
|
461
|
+
if (tc.arguments?.trim()) {
|
|
462
|
+
try {
|
|
463
|
+
args = JSON.parse(tc.arguments);
|
|
464
|
+
}
|
|
465
|
+
catch (parseErr) {
|
|
466
|
+
log('agent', 'warn', `Tool ${tc.name} arguments invalid or truncated (streaming)`, {
|
|
467
|
+
error: parseErr instanceof Error ? parseErr.message : String(parseErr),
|
|
468
|
+
length: tc.arguments.length,
|
|
469
|
+
});
|
|
470
|
+
args = { __parseError: 'Arguments were truncated or invalid; please try again with a shorter or simpler request.' };
|
|
471
|
+
}
|
|
472
|
+
}
|
|
344
473
|
args = await runAgentHooksBeforeToolCall(sessionId, tc.name, args);
|
|
345
474
|
let toolResult;
|
|
346
|
-
|
|
347
|
-
|
|
475
|
+
const parseError = args?.__parseError;
|
|
476
|
+
if (parseError) {
|
|
477
|
+
toolResult = { error: parseError };
|
|
348
478
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
479
|
+
else {
|
|
480
|
+
try {
|
|
481
|
+
toolResult = await executeToolWithRetry(tc.name, args, {
|
|
482
|
+
toolCallId: tc.id,
|
|
483
|
+
signal,
|
|
484
|
+
sessionId,
|
|
485
|
+
skipApproval: skipToolApproval,
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
catch (err) {
|
|
489
|
+
toolResult = { error: err instanceof Error ? err.message : String(err) };
|
|
490
|
+
log('agent', 'warn', `Tool ${tc.name} failed after retries`, { error: err.message });
|
|
491
|
+
}
|
|
352
492
|
}
|
|
353
493
|
await runAgentHooksAfterToolCall(sessionId, tc.name, args, toolResult);
|
|
354
494
|
onEvent({ type: 'tool_call', name: tc.name, result: toolResult });
|
|
@@ -365,47 +505,85 @@ export async function runAgentTurnStream(options, onEvent) {
|
|
|
365
505
|
name: tc.name,
|
|
366
506
|
content: typeof toolResult === 'string' ? toolResult : JSON.stringify(toolResult),
|
|
367
507
|
});
|
|
508
|
+
const pending = typeof toolResult === 'object' && toolResult !== null && toolResult.__pendingApproval;
|
|
509
|
+
if (pending) {
|
|
510
|
+
const pendingActionId = toolResult.pendingActionId;
|
|
511
|
+
const updatedHistory = getAgentMessages(sessionId);
|
|
512
|
+
const runResult = { sessionId, messages: rowsToMessages(updatedHistory), finalContent: lastContent, turnCount, pendingActionId };
|
|
513
|
+
await runAgentHooksAgentEnd(sessionId, { finalContent: lastContent, turnCount });
|
|
514
|
+
return runResult;
|
|
515
|
+
}
|
|
368
516
|
}
|
|
369
517
|
continue;
|
|
370
518
|
}
|
|
371
|
-
onEvent({ type: 'done', finalContent: lastContent, turnCount });
|
|
519
|
+
onEvent({ type: 'done', finalContent: lastContent, turnCount, usage: result.usage });
|
|
372
520
|
const updatedHistory = getAgentMessages(sessionId);
|
|
373
521
|
const runResult = { sessionId, messages: rowsToMessages(updatedHistory), finalContent: lastContent, turnCount };
|
|
374
522
|
await runAgentHooksAgentEnd(sessionId, { finalContent: lastContent, turnCount });
|
|
375
523
|
return runResult;
|
|
376
524
|
}
|
|
525
|
+
const apiMessages = truncateMessagesForContext(messages);
|
|
377
526
|
const result = await complete({
|
|
378
527
|
provider,
|
|
379
528
|
model,
|
|
380
|
-
messages,
|
|
529
|
+
messages: apiMessages,
|
|
381
530
|
max_tokens,
|
|
382
531
|
tools: toolsForApi.length ? toolsForApi : undefined,
|
|
383
532
|
signal,
|
|
384
533
|
});
|
|
385
534
|
lastContent = result.content ?? '';
|
|
386
535
|
const toolCalls = result.tool_calls;
|
|
536
|
+
const costUsd = estimateCostUsd(result.usage ?? undefined, model);
|
|
387
537
|
appendAgentMessage({
|
|
388
538
|
session_id: sessionId,
|
|
389
539
|
role: 'assistant',
|
|
390
540
|
content: lastContent,
|
|
391
541
|
tool_calls: toolCalls ? JSON.stringify(toolCalls) : null,
|
|
542
|
+
usage: result.usage ?? undefined,
|
|
543
|
+
cost_usd: costUsd ?? undefined,
|
|
392
544
|
});
|
|
393
545
|
if (!toolCalls?.length) {
|
|
394
|
-
onEvent({ type: 'done', finalContent: lastContent, turnCount });
|
|
546
|
+
onEvent({ type: 'done', finalContent: lastContent, turnCount, usage: result.usage });
|
|
395
547
|
break;
|
|
396
548
|
}
|
|
549
|
+
const lastUserStream = getLastUserContent(messages);
|
|
550
|
+
console.log('[agent] Tools:', toolCalls.map((tc) => tc.name).join(', '), '| Last user message:', lastUserStream.slice(0, 300), lastUserStream.length > 300 ? '...' : '');
|
|
397
551
|
messages.push({ role: 'assistant', content: lastContent, tool_calls: toolCalls });
|
|
398
552
|
for (const tc of toolCalls) {
|
|
399
553
|
throwIfAborted(signal);
|
|
400
|
-
|
|
554
|
+
console.log('[agent] Tool:', tc.name);
|
|
555
|
+
let args = {};
|
|
556
|
+
if (tc.arguments?.trim()) {
|
|
557
|
+
try {
|
|
558
|
+
args = JSON.parse(tc.arguments);
|
|
559
|
+
}
|
|
560
|
+
catch (parseErr) {
|
|
561
|
+
log('agent', 'warn', `Tool ${tc.name} arguments invalid or truncated`, {
|
|
562
|
+
error: parseErr instanceof Error ? parseErr.message : String(parseErr),
|
|
563
|
+
length: tc.arguments?.length ?? 0,
|
|
564
|
+
});
|
|
565
|
+
args = { __parseError: 'Arguments were truncated or invalid; please try again with a shorter or simpler request.' };
|
|
566
|
+
}
|
|
567
|
+
}
|
|
401
568
|
args = await runAgentHooksBeforeToolCall(sessionId, tc.name, args);
|
|
402
569
|
let toolResult;
|
|
403
|
-
|
|
404
|
-
|
|
570
|
+
const parseError = args?.__parseError;
|
|
571
|
+
if (parseError) {
|
|
572
|
+
toolResult = { error: parseError };
|
|
405
573
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
574
|
+
else {
|
|
575
|
+
try {
|
|
576
|
+
toolResult = await executeToolWithRetry(tc.name, args, {
|
|
577
|
+
toolCallId: tc.id,
|
|
578
|
+
signal,
|
|
579
|
+
sessionId,
|
|
580
|
+
skipApproval: skipToolApproval,
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
catch (err) {
|
|
584
|
+
toolResult = { error: err instanceof Error ? err.message : String(err) };
|
|
585
|
+
log('agent', 'warn', `Tool ${tc.name} failed after retries`, { error: err.message });
|
|
586
|
+
}
|
|
409
587
|
}
|
|
410
588
|
await runAgentHooksAfterToolCall(sessionId, tc.name, args, toolResult);
|
|
411
589
|
onEvent({ type: 'tool_call', name: tc.name, result: toolResult });
|
|
@@ -422,11 +600,19 @@ export async function runAgentTurnStream(options, onEvent) {
|
|
|
422
600
|
name: tc.name,
|
|
423
601
|
content: typeof toolResult === 'string' ? toolResult : JSON.stringify(toolResult),
|
|
424
602
|
});
|
|
603
|
+
const pending = typeof toolResult === 'object' && toolResult !== null && toolResult.__pendingApproval;
|
|
604
|
+
if (pending) {
|
|
605
|
+
const pendingActionId = toolResult.pendingActionId;
|
|
606
|
+
const updatedHistory = getAgentMessages(sessionId);
|
|
607
|
+
const runResult = { sessionId, messages: rowsToMessages(updatedHistory), finalContent: lastContent, turnCount, pendingActionId };
|
|
608
|
+
await runAgentHooksAgentEnd(sessionId, { finalContent: lastContent, turnCount });
|
|
609
|
+
return runResult;
|
|
610
|
+
}
|
|
425
611
|
}
|
|
426
612
|
}
|
|
427
613
|
const updatedHistory = getAgentMessages(sessionId);
|
|
428
614
|
const runResult = { sessionId, messages: rowsToMessages(updatedHistory), finalContent: lastContent, turnCount };
|
|
429
|
-
onEvent({ type: 'done', finalContent: lastContent, turnCount });
|
|
615
|
+
onEvent({ type: 'done', finalContent: lastContent, turnCount, usage: undefined });
|
|
430
616
|
await runAgentHooksAgentEnd(sessionId, { finalContent: lastContent, turnCount });
|
|
431
617
|
return runResult;
|
|
432
618
|
}
|
package/dist/agent/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type MemoryScope = 'session' | 'shared';
|
|
2
|
+
/** Resolve the scope_key for shared memory: config override or session's session_key. */
|
|
3
|
+
export declare function getSharedScopeKeyForSession(sessionId: string): string | null;
|
|
4
|
+
/** Get memory content for prompt injection (bullets, newest within limit/maxChars). */
|
|
5
|
+
export declare function getMemoryForContext(scope: MemoryScope, scopeKey: string, options?: {
|
|
6
|
+
limit?: number;
|
|
7
|
+
maxChars?: number;
|
|
8
|
+
}): string;
|
|
9
|
+
/** Append one memory entry (used by write_memory tool). */
|
|
10
|
+
export declare function appendMemory(scope: MemoryScope, scopeKey: string, content: string): {
|
|
11
|
+
id: number;
|
|
12
|
+
scope: string;
|
|
13
|
+
scope_key: string;
|
|
14
|
+
};
|
|
15
|
+
/** List recent memory entries (used by read_memory tool). */
|
|
16
|
+
export declare function listMemories(scope: MemoryScope, scopeKey: string, limit?: number): Array<{
|
|
17
|
+
id: number;
|
|
18
|
+
content: string;
|
|
19
|
+
created_at: number;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/agent/memory.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/C,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5E;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,MAAM,CAER;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAGlD;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAK,GACT,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAM5D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent memory: session-scoped and optional shared (cross-session) durable notes.
|
|
3
|
+
* Used for prompt injection and by write_memory / read_memory tools.
|
|
4
|
+
*/
|
|
5
|
+
import { getAgentMemoryForContext, appendAgentMemory, listAgentMemories, getAgentSessionById, } from '../db/index.js';
|
|
6
|
+
import { config } from '../config.js';
|
|
7
|
+
/** Resolve the scope_key for shared memory: config override or session's session_key. */
|
|
8
|
+
export function getSharedScopeKeyForSession(sessionId) {
|
|
9
|
+
const session = getAgentSessionById(sessionId);
|
|
10
|
+
if (!session)
|
|
11
|
+
return null;
|
|
12
|
+
if (config.agentSharedMemoryKey)
|
|
13
|
+
return config.agentSharedMemoryKey;
|
|
14
|
+
return session.session_key;
|
|
15
|
+
}
|
|
16
|
+
/** Get memory content for prompt injection (bullets, newest within limit/maxChars). */
|
|
17
|
+
export function getMemoryForContext(scope, scopeKey, options = {}) {
|
|
18
|
+
return getAgentMemoryForContext(scope, scopeKey, options);
|
|
19
|
+
}
|
|
20
|
+
/** Append one memory entry (used by write_memory tool). */
|
|
21
|
+
export function appendMemory(scope, scopeKey, content) {
|
|
22
|
+
const row = appendAgentMemory(scope, scopeKey, content);
|
|
23
|
+
return { id: row.id, scope: row.scope, scope_key: row.scope_key };
|
|
24
|
+
}
|
|
25
|
+
/** List recent memory entries (used by read_memory tool). */
|
|
26
|
+
export function listMemories(scope, scopeKey, limit = 50) {
|
|
27
|
+
return listAgentMemories(scope, scopeKey, limit).map((r) => ({
|
|
28
|
+
id: r.id,
|
|
29
|
+
content: r.content,
|
|
30
|
+
created_at: r.created_at,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=memory.js.map
|