@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.
Files changed (173) hide show
  1. package/README.md +3 -2
  2. package/context/airtable.md +35 -0
  3. package/context/asana.md +37 -0
  4. package/context/bluesky.md +26 -91
  5. package/context/calendar.md +63 -0
  6. package/context/country-info.md +13 -0
  7. package/context/create-skill.md +128 -0
  8. package/context/discord.md +30 -0
  9. package/context/docs.md +29 -0
  10. package/context/drive.md +49 -0
  11. package/context/dropbox.md +39 -0
  12. package/context/facebook.md +47 -0
  13. package/context/fetch-form-api.md +16 -0
  14. package/context/figma.md +30 -0
  15. package/context/github.md +58 -0
  16. package/context/gmail.md +52 -0
  17. package/context/google.md +28 -0
  18. package/context/hellohub.md +29 -0
  19. package/context/jira.md +46 -0
  20. package/context/linear.md +40 -0
  21. package/context/notion.md +45 -0
  22. package/context/portal-integrations.md +42 -0
  23. package/context/post-to-x.md +50 -0
  24. package/context/sheets.md +47 -0
  25. package/context/slack.md +48 -0
  26. package/context/slides.md +35 -0
  27. package/context/stripe.md +38 -0
  28. package/context/tes.md +7 -0
  29. package/context/test.md +7 -0
  30. package/context/zoom.md +28 -0
  31. package/dist/agent/google/calendar.d.ts +2 -0
  32. package/dist/agent/google/calendar.d.ts.map +1 -0
  33. package/dist/agent/google/calendar.js +119 -0
  34. package/dist/agent/google/calendar.js.map +1 -0
  35. package/dist/agent/google/drive.d.ts +2 -0
  36. package/dist/agent/google/drive.d.ts.map +1 -0
  37. package/dist/agent/google/drive.js +51 -0
  38. package/dist/agent/google/drive.js.map +1 -0
  39. package/dist/agent/google/get-token.d.ts +7 -0
  40. package/dist/agent/google/get-token.d.ts.map +1 -0
  41. package/dist/agent/google/get-token.js +37 -0
  42. package/dist/agent/google/get-token.js.map +1 -0
  43. package/dist/agent/google/gmail.d.ts +2 -0
  44. package/dist/agent/google/gmail.d.ts.map +1 -0
  45. package/dist/agent/google/gmail.js +138 -0
  46. package/dist/agent/google/gmail.js.map +1 -0
  47. package/dist/agent/google/index.d.ts +2 -0
  48. package/dist/agent/google/index.d.ts.map +1 -0
  49. package/dist/agent/google/index.js +13 -0
  50. package/dist/agent/google/index.js.map +1 -0
  51. package/dist/agent/loop.d.ts +8 -0
  52. package/dist/agent/loop.d.ts.map +1 -1
  53. package/dist/agent/loop.js +226 -40
  54. package/dist/agent/loop.js.map +1 -1
  55. package/dist/agent/memory.d.ts +21 -0
  56. package/dist/agent/memory.d.ts.map +1 -0
  57. package/dist/agent/memory.js +33 -0
  58. package/dist/agent/memory.js.map +1 -0
  59. package/dist/agent/pending-actions.d.ts +21 -0
  60. package/dist/agent/pending-actions.d.ts.map +1 -0
  61. package/dist/agent/pending-actions.js +65 -0
  62. package/dist/agent/pending-actions.js.map +1 -0
  63. package/dist/agent/pi-runner.d.ts +27 -0
  64. package/dist/agent/pi-runner.d.ts.map +1 -0
  65. package/dist/agent/pi-runner.js +300 -0
  66. package/dist/agent/pi-runner.js.map +1 -0
  67. package/dist/agent/skill-generate.d.ts +63 -0
  68. package/dist/agent/skill-generate.d.ts.map +1 -0
  69. package/dist/agent/skill-generate.js +128 -0
  70. package/dist/agent/skill-generate.js.map +1 -0
  71. package/dist/agent/skill-install.d.ts.map +1 -1
  72. package/dist/agent/skill-install.js +80 -31
  73. package/dist/agent/skill-install.js.map +1 -1
  74. package/dist/agent/skill-templates.d.ts +17 -0
  75. package/dist/agent/skill-templates.d.ts.map +1 -0
  76. package/dist/agent/skill-templates.js +26 -0
  77. package/dist/agent/skill-templates.js.map +1 -0
  78. package/dist/agent/skills-config.d.ts +24 -2
  79. package/dist/agent/skills-config.d.ts.map +1 -1
  80. package/dist/agent/skills-config.js +107 -8
  81. package/dist/agent/skills-config.js.map +1 -1
  82. package/dist/agent/skills-watcher.js +1 -1
  83. package/dist/agent/skills.d.ts +9 -3
  84. package/dist/agent/skills.d.ts.map +1 -1
  85. package/dist/agent/skills.js +104 -9
  86. package/dist/agent/skills.js.map +1 -1
  87. package/dist/agent/tools.d.ts +25 -3
  88. package/dist/agent/tools.d.ts.map +1 -1
  89. package/dist/agent/tools.integrations.test.d.ts +2 -0
  90. package/dist/agent/tools.integrations.test.d.ts.map +1 -0
  91. package/dist/agent/tools.integrations.test.js +269 -0
  92. package/dist/agent/tools.integrations.test.js.map +1 -0
  93. package/dist/agent/tools.js +692 -39
  94. package/dist/agent/tools.js.map +1 -1
  95. package/dist/ai/orchestrator.d.ts +4 -1
  96. package/dist/ai/orchestrator.d.ts.map +1 -1
  97. package/dist/ai/orchestrator.js +246 -14
  98. package/dist/ai/orchestrator.js.map +1 -1
  99. package/dist/ai/pricing.d.ts +6 -0
  100. package/dist/ai/pricing.d.ts.map +1 -0
  101. package/dist/ai/pricing.js +39 -0
  102. package/dist/ai/pricing.js.map +1 -0
  103. package/dist/channels/discord.d.ts +15 -0
  104. package/dist/channels/discord.d.ts.map +1 -0
  105. package/dist/channels/discord.js +55 -0
  106. package/dist/channels/discord.js.map +1 -0
  107. package/dist/channels/stripe.d.ts +15 -0
  108. package/dist/channels/stripe.d.ts.map +1 -0
  109. package/dist/channels/stripe.js +58 -0
  110. package/dist/channels/stripe.js.map +1 -0
  111. package/dist/channels/telegram.d.ts +60 -0
  112. package/dist/channels/telegram.d.ts.map +1 -0
  113. package/dist/channels/telegram.js +562 -0
  114. package/dist/channels/telegram.js.map +1 -0
  115. package/dist/cli.js +66 -8
  116. package/dist/cli.js.map +1 -1
  117. package/dist/config.d.ts +14 -0
  118. package/dist/config.d.ts.map +1 -1
  119. package/dist/config.js +85 -1
  120. package/dist/config.js.map +1 -1
  121. package/dist/db/index.d.ts +83 -0
  122. package/dist/db/index.d.ts.map +1 -1
  123. package/dist/db/index.js +174 -2
  124. package/dist/db/index.js.map +1 -1
  125. package/dist/db/schema.sql +35 -0
  126. package/dist/gateway/server.d.ts.map +1 -1
  127. package/dist/gateway/server.js +1219 -27
  128. package/dist/gateway/server.js.map +1 -1
  129. package/dist/index.js +149 -6
  130. package/dist/index.js.map +1 -1
  131. package/dist/ollama-setup.d.ts +27 -0
  132. package/dist/ollama-setup.d.ts.map +1 -0
  133. package/dist/ollama-setup.js +191 -0
  134. package/dist/ollama-setup.js.map +1 -0
  135. package/dist/onboard-env.d.ts +1 -1
  136. package/dist/onboard-env.d.ts.map +1 -1
  137. package/dist/onboard-env.js +2 -0
  138. package/dist/onboard-env.js.map +1 -1
  139. package/dist/onboard.d.ts +3 -1
  140. package/dist/onboard.d.ts.map +1 -1
  141. package/dist/onboard.js +7 -2
  142. package/dist/onboard.js.map +1 -1
  143. package/dist/plugins/index.d.ts +10 -0
  144. package/dist/plugins/index.d.ts.map +1 -1
  145. package/dist/plugins/index.js +32 -0
  146. package/dist/plugins/index.js.map +1 -1
  147. package/dist/redact.d.ts +15 -0
  148. package/dist/redact.d.ts.map +1 -0
  149. package/dist/redact.js +56 -0
  150. package/dist/redact.js.map +1 -0
  151. package/dist/scheduler/cron.d.ts +21 -0
  152. package/dist/scheduler/cron.d.ts.map +1 -1
  153. package/dist/scheduler/cron.js +60 -0
  154. package/dist/scheduler/cron.js.map +1 -1
  155. package/dist/system-capabilities.d.ts +11 -0
  156. package/dist/system-capabilities.d.ts.map +1 -0
  157. package/dist/system-capabilities.js +109 -0
  158. package/dist/system-capabilities.js.map +1 -0
  159. package/dist/types.d.ts +62 -3
  160. package/dist/types.d.ts.map +1 -1
  161. package/dist/watcher/index.d.ts +2 -0
  162. package/dist/watcher/index.d.ts.map +1 -1
  163. package/dist/watcher/index.js +31 -1
  164. package/dist/watcher/index.js.map +1 -1
  165. package/dist/workspace-automations.d.ts +16 -0
  166. package/dist/workspace-automations.d.ts.map +1 -0
  167. package/dist/workspace-automations.js +133 -0
  168. package/dist/workspace-automations.js.map +1 -0
  169. package/package.json +19 -3
  170. package/registry/bluesky.md +12 -89
  171. package/registry/skills-registry.json +6 -0
  172. package/src/db/schema.sql +35 -0
  173. package/src/index.ts +159 -6
@@ -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
- /** Estimate token count (rough: ~4 chars per token). */
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 / 4);
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
- if (parsed.name && parsed.description && isSkillEnabled(parsed.name)) {
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
- return `\n\n## Context\n\n${indexSection}${chunks.join('\n\n')}`;
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
- const withContext = basePrompt + context;
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 : 200;
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
- const systemPrompt = await resolveSystemPrompt(sessionId, baseSystem, history.length + 1);
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
- let args = tc.arguments ? JSON.parse(tc.arguments) : {};
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
- try {
256
- toolResult = await executeToolWithRetry(tc.name, args);
340
+ const parseError = args?.__parseError;
341
+ if (parseError) {
342
+ toolResult = { error: parseError };
257
343
  }
258
- catch (err) {
259
- toolResult = { error: err instanceof Error ? err.message : String(err) };
260
- log('agent', 'warn', `Tool ${tc.name} failed after retries`, { error: err.message });
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 : 200;
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
- const systemPrompt = await resolveSystemPrompt(sessionId, baseSystem, history.length + 1);
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 ?? 'openai');
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 result = await completeStream({ provider, model, messages, max_tokens, tools: toolsForApi.length ? toolsForApi : undefined, signal }, (ev) => {
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
- let args = tc.arguments ? JSON.parse(tc.arguments) : {};
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
- try {
347
- toolResult = await executeToolWithRetry(tc.name, args);
475
+ const parseError = args?.__parseError;
476
+ if (parseError) {
477
+ toolResult = { error: parseError };
348
478
  }
349
- catch (err) {
350
- toolResult = { error: err instanceof Error ? err.message : String(err) };
351
- log('agent', 'warn', `Tool ${tc.name} failed after retries`, { error: err.message });
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
- let args = tc.arguments ? JSON.parse(tc.arguments) : {};
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
- try {
404
- toolResult = await executeToolWithRetry(tc.name, args);
570
+ const parseError = args?.__parseError;
571
+ if (parseError) {
572
+ toolResult = { error: parseError };
405
573
  }
406
- catch (err) {
407
- toolResult = { error: err instanceof Error ? err.message : String(err) };
408
- log('agent', 'warn', `Tool ${tc.name} failed after retries`, { error: err.message });
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
  }
@@ -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