@claudebuddy/claudebuddy-agent-sdk 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +75 -3
  3. package/dist/agent.d.ts +12 -22
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +209 -224
  6. package/dist/agent.js.map +1 -1
  7. package/dist/engine.d.ts +7 -3
  8. package/dist/engine.d.ts.map +1 -1
  9. package/dist/engine.js +234 -224
  10. package/dist/engine.js.map +1 -1
  11. package/dist/index.d.ts +4 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/mcp/client.d.ts +3 -0
  16. package/dist/mcp/client.d.ts.map +1 -1
  17. package/dist/mcp/client.js +13 -4
  18. package/dist/mcp/client.js.map +1 -1
  19. package/dist/providers/anthropic.d.ts +2 -1
  20. package/dist/providers/anthropic.d.ts.map +1 -1
  21. package/dist/providers/anthropic.js +31 -1
  22. package/dist/providers/anthropic.js.map +1 -1
  23. package/dist/providers/openai.d.ts +3 -1
  24. package/dist/providers/openai.d.ts.map +1 -1
  25. package/dist/providers/openai.js +54 -3
  26. package/dist/providers/openai.js.map +1 -1
  27. package/dist/providers/sse.d.ts +3 -0
  28. package/dist/providers/sse.d.ts.map +1 -0
  29. package/dist/providers/sse.js +36 -0
  30. package/dist/providers/sse.js.map +1 -0
  31. package/dist/providers/types.d.ts +16 -0
  32. package/dist/providers/types.d.ts.map +1 -1
  33. package/dist/session.d.ts +10 -0
  34. package/dist/session.d.ts.map +1 -1
  35. package/dist/session.js +98 -4
  36. package/dist/session.js.map +1 -1
  37. package/dist/tools/agent-tool.d.ts.map +1 -1
  38. package/dist/tools/agent-tool.js +32 -9
  39. package/dist/tools/agent-tool.js.map +1 -1
  40. package/dist/tools/ask-user.d.ts +3 -2
  41. package/dist/tools/ask-user.d.ts.map +1 -1
  42. package/dist/tools/ask-user.js +16 -15
  43. package/dist/tools/ask-user.js.map +1 -1
  44. package/dist/tools/bash.d.ts +0 -3
  45. package/dist/tools/bash.d.ts.map +1 -1
  46. package/dist/tools/bash.js +79 -59
  47. package/dist/tools/bash.js.map +1 -1
  48. package/dist/tools/config-tool.d.ts +4 -3
  49. package/dist/tools/config-tool.d.ts.map +1 -1
  50. package/dist/tools/config-tool.js +20 -16
  51. package/dist/tools/config-tool.js.map +1 -1
  52. package/dist/tools/cron-tools.d.ts +3 -2
  53. package/dist/tools/cron-tools.d.ts.map +1 -1
  54. package/dist/tools/cron-tools.js +33 -29
  55. package/dist/tools/cron-tools.js.map +1 -1
  56. package/dist/tools/index.js +55 -53
  57. package/dist/tools/index.js.map +1 -1
  58. package/dist/tools/lsp-tool.js +2 -2
  59. package/dist/tools/lsp-tool.js.map +1 -1
  60. package/dist/tools/mcp-resource-tools.d.ts +2 -1
  61. package/dist/tools/mcp-resource-tools.d.ts.map +1 -1
  62. package/dist/tools/mcp-resource-tools.js +44 -27
  63. package/dist/tools/mcp-resource-tools.js.map +1 -1
  64. package/dist/tools/plan-tools.d.ts +3 -2
  65. package/dist/tools/plan-tools.d.ts.map +1 -1
  66. package/dist/tools/plan-tools.js +24 -21
  67. package/dist/tools/plan-tools.js.map +1 -1
  68. package/dist/tools/send-message.d.ts +5 -4
  69. package/dist/tools/send-message.d.ts.map +1 -1
  70. package/dist/tools/send-message.js +24 -21
  71. package/dist/tools/send-message.js.map +1 -1
  72. package/dist/tools/session-state.d.ts +4 -0
  73. package/dist/tools/session-state.d.ts.map +1 -0
  74. package/dist/tools/session-state.js +9 -0
  75. package/dist/tools/session-state.js.map +1 -0
  76. package/dist/tools/task-tools.d.ts +19 -4
  77. package/dist/tools/task-tools.d.ts.map +1 -1
  78. package/dist/tools/task-tools.js +119 -31
  79. package/dist/tools/task-tools.js.map +1 -1
  80. package/dist/tools/team-tools.d.ts +7 -3
  81. package/dist/tools/team-tools.d.ts.map +1 -1
  82. package/dist/tools/team-tools.js +26 -22
  83. package/dist/tools/team-tools.js.map +1 -1
  84. package/dist/tools/todo-tool.d.ts +3 -2
  85. package/dist/tools/todo-tool.d.ts.map +1 -1
  86. package/dist/tools/todo-tool.js +24 -21
  87. package/dist/tools/todo-tool.js.map +1 -1
  88. package/dist/tools/tool-search.d.ts +2 -1
  89. package/dist/tools/tool-search.d.ts.map +1 -1
  90. package/dist/tools/tool-search.js +14 -13
  91. package/dist/tools/tool-search.js.map +1 -1
  92. package/dist/tools/update-goal.d.ts +9 -7
  93. package/dist/tools/update-goal.d.ts.map +1 -1
  94. package/dist/tools/update-goal.js +20 -21
  95. package/dist/tools/update-goal.js.map +1 -1
  96. package/dist/tools/worktree-tools.d.ts +0 -6
  97. package/dist/tools/worktree-tools.d.ts.map +1 -1
  98. package/dist/tools/worktree-tools.js +14 -6
  99. package/dist/tools/worktree-tools.js.map +1 -1
  100. package/dist/types.d.ts +31 -0
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/utils/compact.d.ts +5 -1
  103. package/dist/utils/compact.d.ts.map +1 -1
  104. package/dist/utils/compact.js +11 -1
  105. package/dist/utils/compact.js.map +1 -1
  106. package/dist/utils/permissions.d.ts +7 -0
  107. package/dist/utils/permissions.d.ts.map +1 -0
  108. package/dist/utils/permissions.js +39 -0
  109. package/dist/utils/permissions.js.map +1 -0
  110. package/dist/utils/retry.d.ts.map +1 -1
  111. package/dist/utils/retry.js +17 -2
  112. package/dist/utils/retry.js.map +1 -1
  113. package/docs/background-tasks.md +62 -0
  114. package/docs/runtime-progress.md +63 -0
  115. package/package.json +9 -5
package/dist/agent.js CHANGED
@@ -19,14 +19,16 @@
19
19
  */
20
20
  import { QueryEngine } from './engine.js';
21
21
  import { getAllBaseTools, filterTools } from './tools/index.js';
22
+ import { clearTasks, getAllTasks, settleTaskGroup } from './tools/task-tools.js';
22
23
  import { connectMCPServer } from './mcp/client.js';
24
+ import { setMcpConnections } from './tools/mcp-resource-tools.js';
23
25
  import { isSdkServerConfig } from './sdk-mcp-server.js';
24
- import { registerAgents } from './tools/agent-tool.js';
25
- import { saveSession, loadSession, } from './session.js';
26
+ import { createPermissionPolicy, restrictTools, validateRunOptions } from './utils/permissions.js';
27
+ import { saveSession, appendSessionEvent, loadSession, } from './session.js';
26
28
  import { createHookRegistry } from './hooks.js';
27
29
  import { initBundledSkills } from './skills/index.js';
28
30
  import { createProvider } from './providers/index.js';
29
- import { createUpdateGoalTool, buildGoalSystemPrompt, getGoalState, resetGoalState, } from './tools/update-goal.js';
31
+ import { createUpdateGoalTool, buildGoalSystemPrompt, getGoalState, createGoalState, } from './tools/update-goal.js';
30
32
  // --------------------------------------------------------------------------
31
33
  // Agent class
32
34
  // --------------------------------------------------------------------------
@@ -45,9 +47,18 @@ export class Agent {
45
47
  abortCtrl = null;
46
48
  currentEngine = null;
47
49
  hookRegistry;
50
+ sessionState = new Map();
51
+ activeRun = false;
52
+ closed = false;
48
53
  constructor(options = {}) {
49
- // Shallow copy to avoid mutating caller's object
50
- this.cfg = { ...options };
54
+ validateRunOptions(options);
55
+ // Snapshot permission bounds and agent definitions rather than sharing caller arrays.
56
+ this.cfg = {
57
+ ...options,
58
+ allowedTools: options.allowedTools ? [...options.allowedTools] : options.allowedTools,
59
+ disallowedTools: options.disallowedTools ? [...options.disallowedTools] : options.disallowedTools,
60
+ agents: structuredClone(options.agents ?? {}),
61
+ };
51
62
  // Merge credentials from options.env map, direct options, and process.env
52
63
  this.apiCredentials = this.pickCredentials();
53
64
  this.modelId = this.cfg.model ?? this.readEnv('MODEL') ?? 'claude-sonnet-4-6';
@@ -159,10 +170,6 @@ export class Agent {
159
170
  * Async initialization: connect MCP servers, register agents, resume sessions.
160
171
  */
161
172
  async setup() {
162
- // Register custom agent definitions
163
- if (this.cfg.agents) {
164
- registerAgents(this.cfg.agents);
165
- }
166
173
  // Connect MCP servers (supports stdio, SSE, HTTP, and in-process SDK servers)
167
174
  if (this.cfg.mcpServers) {
168
175
  for (const [name, config] of Object.entries(this.cfg.mcpServers)) {
@@ -185,6 +192,7 @@ export class Agent {
185
192
  }
186
193
  }
187
194
  }
195
+ setMcpConnections(this.mcpLinks, this.sessionState);
188
196
  // Resume or continue session. An explicitly supplied history wins: hosts
189
197
  // that keep sessions in their own store (a database) pass it here and the
190
198
  // session files are never read.
@@ -201,260 +209,220 @@ export class Agent {
201
209
  }
202
210
  }
203
211
  }
204
- /**
205
- * Run a query with streaming events.
206
- */
212
+ /** Run one query, or an explicitly configured goal, with exclusive session ownership. */
207
213
  async *query(prompt, overrides) {
208
- await this.setupDone;
209
- // Goal auto-takeover: when configured with goal.enabledOnQuery and the
210
- // prompt is a plain string goal, route this query through the goal-driven
211
- // loop instead of a single turn. Non-string prompts (message arrays) are
212
- // always handled as a normal single-turn query.
213
- const goalOpts = typeof this.cfg.goal === 'object' ? this.cfg.goal : undefined;
214
- const overrideGoal = typeof overrides?.goal === 'object' ? overrides.goal : undefined;
215
- // Explicit override (e.g. runGoal disabling re-entry) wins over the config.
216
- const autoGoalFlag = overrideGoal?.enabledOnQuery !== undefined
217
- ? overrideGoal.enabledOnQuery
218
- : (goalOpts?.enabledOnQuery ?? false);
219
- if (autoGoalFlag && typeof prompt === 'string') {
220
- yield* this.runGoal(prompt, {});
221
- return;
214
+ const opts = { ...this.cfg, ...overrides };
215
+ const configuredGoal = typeof this.cfg.goal === 'object' ? this.cfg.goal : undefined;
216
+ const overriddenGoal = typeof overrides?.goal === 'object' ? overrides.goal : undefined;
217
+ const autoGoal = overrides?.goal === false ? false :
218
+ overriddenGoal?.enabledOnQuery ?? configuredGoal?.enabledOnQuery ?? false;
219
+ yield* this.withRun(opts, budget => autoGoal && typeof prompt === 'string'
220
+ ? this.runGoalInternal(prompt, overrides, budget)
221
+ : this.queryOnce(prompt, overrides, budget));
222
+ }
223
+ /** A controller and ledger outlive every round/child in this run. */
224
+ async *withRun(opts, run) {
225
+ if (this.closed)
226
+ throw new Error('Agent is closed');
227
+ if (this.activeRun)
228
+ throw new Error('Agent already has an active query or goal');
229
+ validateRunOptions(opts);
230
+ // A per-query override cannot turn off configured sandbox enforcement.
231
+ validateRunOptions(this.cfg);
232
+ this.activeRun = true;
233
+ const controller = new AbortController();
234
+ this.abortCtrl = controller;
235
+ const sources = new Set([opts.abortSignal, opts.abortController?.signal].filter((signal) => !!signal));
236
+ const listeners = [];
237
+ for (const source of sources) {
238
+ const abort = () => controller.abort(source.reason);
239
+ if (source.aborted)
240
+ abort();
241
+ else {
242
+ source.addEventListener('abort', abort, { once: true });
243
+ listeners.push(() => source.removeEventListener('abort', abort));
244
+ }
245
+ }
246
+ const budget = { cost: 0, usage: { input_tokens: 0, output_tokens: 0 } };
247
+ try {
248
+ await this.setupDone;
249
+ for await (const event of run(budget)) {
250
+ if (opts.persistSession !== false)
251
+ await appendSessionEvent(this.sid, event);
252
+ yield event;
253
+ }
254
+ }
255
+ finally {
256
+ controller.abort();
257
+ for (const remove of listeners)
258
+ remove();
259
+ this.currentEngine = null;
260
+ this.abortCtrl = null;
261
+ this.activeRun = false;
222
262
  }
263
+ }
264
+ async *queryOnce(prompt, overrides, budget, internalTools = []) {
223
265
  const opts = { ...this.cfg, ...overrides };
224
266
  const cwd = opts.cwd || process.cwd();
225
- // Create abort controller for this query
226
- this.abortCtrl = opts.abortController || new AbortController();
227
- if (opts.abortSignal) {
228
- opts.abortSignal.addEventListener('abort', () => this.abortCtrl?.abort(), { once: true });
229
- }
230
- // Resolve systemPrompt (handle preset object)
231
267
  let systemPrompt;
232
268
  let appendSystemPrompt = opts.appendSystemPrompt;
233
- if (typeof opts.systemPrompt === 'object' && opts.systemPrompt?.type === 'preset') {
234
- systemPrompt = undefined; // Use engine default (default style)
235
- if (opts.systemPrompt.append) {
236
- appendSystemPrompt = (appendSystemPrompt || '') + '\n' + opts.systemPrompt.append;
237
- }
269
+ if (typeof opts.systemPrompt === 'object') {
270
+ appendSystemPrompt = [appendSystemPrompt, opts.systemPrompt.append].filter(Boolean).join('\n');
238
271
  }
239
272
  else {
240
273
  systemPrompt = opts.systemPrompt;
241
274
  }
242
- // Build canUseTool based on permission mode
243
- const permMode = opts.permissionMode ?? 'bypassPermissions';
244
- const canUseTool = opts.canUseTool ?? (async (_tool, _input) => {
245
- if (permMode === 'bypassPermissions' || permMode === 'dontAsk' || permMode === 'auto') {
246
- return { behavior: 'allow' };
247
- }
248
- if (permMode === 'acceptEdits') {
249
- return { behavior: 'allow' };
250
- }
251
- return { behavior: 'allow' };
252
- });
253
- // Resolve tools with overrides
254
275
  let tools = this.toolPool;
255
- if (overrides?.allowedTools || overrides?.disallowedTools) {
256
- tools = filterTools(tools, overrides.allowedTools, overrides.disallowedTools);
276
+ const replacement = overrides?.tools;
277
+ if (Array.isArray(replacement)) {
278
+ tools = replacement.length && typeof replacement[0] === 'string'
279
+ ? filterTools(this.toolPool, replacement)
280
+ : replacement;
257
281
  }
258
- if (overrides?.tools) {
259
- const ot = overrides.tools;
260
- if (Array.isArray(ot) && ot.length > 0 && typeof ot[0] === 'string') {
261
- tools = filterTools(this.toolPool, ot);
262
- }
263
- else if (Array.isArray(ot)) {
264
- tools = ot;
265
- }
266
- }
267
- // Recreate provider if overrides change credentials or apiType
282
+ tools = restrictTools(tools, this.cfg, overrides);
283
+ const mode = opts.permissionMode ?? 'bypassPermissions';
284
+ const policy = createPermissionPolicy(mode, opts.allowedTools, opts.canUseTool);
285
+ // Internal goal reporting is control-plane bookkeeping, not an external action.
286
+ const canUseTool = (tool, input) => internalTools.includes(tool)
287
+ ? Promise.resolve({ behavior: 'allow' })
288
+ : policy(tool, input);
289
+ tools = [...tools, ...internalTools];
268
290
  let provider = this.provider;
269
291
  if (overrides?.apiType || overrides?.apiKey || overrides?.baseURL) {
270
- const resolvedApiType = overrides.apiType ?? this.apiType;
271
- provider = createProvider(resolvedApiType, {
292
+ provider = createProvider(overrides.apiType ?? this.apiType, {
272
293
  apiKey: overrides.apiKey ?? this.apiCredentials.key,
273
294
  baseURL: overrides.baseURL ?? this.apiCredentials.baseUrl,
274
295
  });
275
296
  }
276
- // Create query engine with current conversation state
277
297
  const engine = new QueryEngine({
278
- cwd,
279
- model: opts.model || this.modelId,
280
- provider,
281
- tools,
282
- systemPrompt,
283
- appendSystemPrompt,
284
- maxTurns: opts.maxTurns ?? 10,
285
- maxBudgetUsd: opts.maxBudgetUsd,
286
- maxTokens: opts.maxTokens ?? 16384,
287
- thinking: opts.thinking,
288
- jsonSchema: opts.jsonSchema,
289
- canUseTool,
298
+ cwd, model: opts.model || this.modelId, provider, tools, systemPrompt,
299
+ appendSystemPrompt, maxTurns: opts.maxTurns ?? 10,
300
+ maxBudgetUsd: opts.maxBudgetUsd, executionBudget: budget,
301
+ maxTokens: opts.maxTokens ?? 16384, thinking: opts.thinking,
302
+ jsonSchema: opts.jsonSchema, canUseTool, permissionMode: mode,
290
303
  includePartialMessages: opts.includePartialMessages ?? false,
291
- abortSignal: this.abortCtrl.signal,
292
- agents: opts.agents,
293
- hookRegistry: this.hookRegistry,
294
- sessionId: this.sid,
295
- contextWindowSize: opts.contextWindowSize,
296
- pricingPerMillion: opts.pricingPerMillion,
297
- spill: opts.spill,
304
+ abortSignal: this.abortCtrl.signal, agents: opts.agents ?? {},
305
+ sessionState: this.sessionState, hookRegistry: this.hookRegistry,
306
+ sessionId: this.sid, contextWindowSize: opts.contextWindowSize,
307
+ pricingPerMillion: opts.pricingPerMillion, spill: opts.spill,
298
308
  });
299
309
  this.currentEngine = engine;
300
- // Inject existing conversation history
301
- for (const msg of this.history) {
302
- engine.messages.push(msg);
303
- }
304
- // Run the engine
305
- for await (const event of engine.submitMessage(prompt)) {
306
- yield event;
307
- // Track assistant messages for multi-turn persistence
308
- if (event.type === 'assistant') {
309
- const uuid = crypto.randomUUID();
310
- const timestamp = new Date().toISOString();
311
- this.messageLog.push({
312
- type: 'assistant',
313
- message: event.message,
314
- uuid,
315
- timestamp,
316
- });
310
+ engine.messages.push(...this.history);
311
+ let userRecorded = false;
312
+ try {
313
+ for await (const event of engine.submitMessage(prompt)) {
314
+ if (event.type === 'system' && event.subtype === 'init' && !userRecorded) {
315
+ this.messageLog.push({ type: 'user', message: { role: 'user', content: prompt }, uuid: crypto.randomUUID(), timestamp: new Date().toISOString() });
316
+ userRecorded = true;
317
+ }
318
+ if (event.type === 'assistant') {
319
+ this.messageLog.push({ type: 'assistant', message: event.message, uuid: crypto.randomUUID(), timestamp: new Date().toISOString() });
320
+ }
321
+ if (opts.persistSession !== false && event.type !== 'partial_message') {
322
+ // Checkpoint before publishing durable semantic events to the consumer.
323
+ await saveSession(this.sid, engine.getMessages(), { cwd, model: opts.model || this.modelId });
324
+ }
325
+ yield event;
317
326
  }
318
327
  }
319
- // Persist conversation state for multi-turn
320
- this.history = engine.getMessages();
321
- // Add user message to tracked messages
322
- const userUuid = crypto.randomUUID();
323
- this.messageLog.push({
324
- type: 'user',
325
- message: { role: 'user', content: prompt },
326
- uuid: userUuid,
327
- timestamp: new Date().toISOString(),
328
- });
328
+ finally {
329
+ this.history = engine.getMessages();
330
+ if (opts.persistSession !== false)
331
+ await saveSession(this.sid, this.history, { cwd, model: opts.model || this.modelId });
332
+ this.currentEngine = null;
333
+ }
329
334
  }
330
- /**
331
- * Convenience method: send a prompt and collect the final answer as a single object.
332
- * Internally iterates through the streaming query and aggregates the outcome.
333
- */
335
+ /** Collect text and retain the final status instead of hiding engine failures. */
334
336
  async prompt(text, overrides) {
335
- const t0 = performance.now();
336
- const collected = { text: '', turns: 0, tokens: { in: 0, out: 0 } };
337
- for await (const ev of this.query(text, overrides)) {
338
- switch (ev.type) {
339
- case 'assistant': {
340
- // Extract the last assistant text (multi-turn: only final answer matters)
341
- const fragments = ev.message.content
342
- .filter((c) => c.type === 'text')
343
- .map((c) => c.text);
344
- if (fragments.length)
345
- collected.text = fragments.join('');
346
- break;
347
- }
348
- case 'result':
349
- collected.turns = ev.num_turns ?? 0;
350
- collected.tokens.in = ev.usage?.input_tokens ?? 0;
351
- collected.tokens.out = ev.usage?.output_tokens ?? 0;
352
- break;
337
+ const start = performance.now();
338
+ let output = '';
339
+ let result = { type: 'result', subtype: 'error_during_execution', is_error: true, errors: ['Query ended without a final result'] };
340
+ for await (const event of this.query(text, overrides)) {
341
+ if (event.type === 'assistant') {
342
+ const fragments = event.message.content.filter(block => block.type === 'text').map(block => block.text);
343
+ if (fragments.length)
344
+ output = fragments.join('');
353
345
  }
346
+ else if (event.type === 'result')
347
+ result = event;
354
348
  }
355
349
  return {
356
- text: collected.text,
357
- usage: { input_tokens: collected.tokens.in, output_tokens: collected.tokens.out },
358
- num_turns: collected.turns,
359
- duration_ms: Math.round(performance.now() - t0),
350
+ text: output, subtype: result.subtype, is_error: result.is_error ?? result.subtype !== 'success',
351
+ errors: result.errors, total_cost_usd: result.total_cost_usd ?? result.cost ?? 0,
352
+ usage: result.usage ?? { input_tokens: 0, output_tokens: 0 },
353
+ num_turns: result.num_turns ?? 0, duration_ms: Math.round(performance.now() - start),
360
354
  messages: [...this.messageLog],
361
355
  };
362
356
  }
363
- /**
364
- * Goal-driven autonomous loop.
365
- *
366
- * Runs the agent toward `goal` over up to `maxRounds` rounds. Unlike a single
367
- * `query`, the agent keeps working ("give it a task and let it run until done")
368
- * and only stops when:
369
- * - it calls the injected `update_goal` tool with goal_status="complete", or
370
- * - it reports goal_status="blocked", or
371
- * - `maxRounds` is exhausted (returns with a helpful error event), or
372
- * - it is aborted.
373
- *
374
- * The `update_goal` internal tool is injected into the tool pool and a
375
- * goal-mode system prompt is appended, so the agent knows it should keep
376
- * working autonomously and how to signal completion.
377
- */
357
+ /** Goal rounds share cancellation, accounting and a run-local goal report. */
378
358
  async *runGoal(goal, overrides) {
379
- const goalOpts = this.cfg.goal;
380
- const maxRounds = overrides?.maxGoalRounds ??
381
- (typeof goalOpts === 'object' ? goalOpts.maxGoalRounds : undefined) ??
382
- 10;
383
- const turnsPerRound = overrides?.turnsPerRound ??
384
- (typeof goalOpts === 'object' ? goalOpts.turnsPerRound : undefined);
385
- const maxConsecutiveStalls = typeof goalOpts === 'object'
386
- ? goalOpts.maxConsecutiveStalls
387
- : undefined;
388
- // Reset the shared goal-state record for this run.
389
- resetGoalState();
390
- // Inject the internal update_goal tool and the goal-mode system prompt.
391
- const goalTool = createUpdateGoalTool();
392
- // Build a base tool pool: if the caller restricts tools, respect it; else
393
- // use the agent's resolved pool. Always append the internal tool.
394
- const baseTools = this.toolPool;
395
- const toolOverrides = {
396
- tools: [...baseTools, goalTool],
397
- };
398
- // Track consecutive rounds without a status update (stall detection).
399
- let lastRevision = getGoalState().revision;
400
- let consecutiveStalls = 0;
401
- let roundsDone = 0;
402
- for (; roundsDone < maxRounds; roundsDone++) {
403
- const roundTarget = roundsDone === 0
404
- ? goal
405
- : `Continue working toward the goal. Stay on task and do not stop until the goal is complete or you are truly blocked. Call update_goal with goal_status="complete" when done.`;
359
+ const goalOptions = typeof this.cfg.goal === 'object' ? this.cfg.goal : {};
360
+ const queryOverrides = { goal: { ...goalOptions, ...overrides } };
361
+ yield* this.withRun(this.cfg, budget => this.runGoalInternal(goal, queryOverrides, budget));
362
+ }
363
+ async *runGoalInternal(goal, overrides, budget) {
364
+ const opts = { ...this.cfg, ...overrides };
365
+ const settings = typeof opts.goal === 'object' ? opts.goal : {};
366
+ const maxRounds = settings.maxGoalRounds ?? 10;
367
+ const turnsPerRound = settings.turnsPerRound ?? opts.maxTurns ?? 10;
368
+ const maxStalls = settings.maxConsecutiveStalls;
369
+ for (const [name, value] of Object.entries({ maxGoalRounds: maxRounds, turnsPerRound, maxConsecutiveStalls: maxStalls })) {
370
+ if (value !== undefined && (!Number.isInteger(value) || value < 1))
371
+ throw new Error(`${name} must be a positive integer`);
372
+ }
373
+ const state = createGoalState();
374
+ const goalTool = createUpdateGoalTool(state);
375
+ let lastRevision = 0;
376
+ let stalls = 0;
377
+ let turns = 0;
378
+ let apiTime = 0;
379
+ let terminal = { type: 'result', subtype: 'error_max_rounds', errors: [`Goal not completed after ${maxRounds} rounds`] };
380
+ for (let round = 0; round < maxRounds; round++) {
381
+ if (this.abortCtrl.signal.aborted) {
382
+ terminal = { type: 'result', subtype: 'cancelled', errors: ['Run cancelled'] };
383
+ break;
384
+ }
406
385
  const roundOverrides = {
407
- ...toolOverrides,
408
- appendSystemPrompt: [
409
- this.cfg.appendSystemPrompt,
410
- buildGoalSystemPrompt(goal, maxRounds),
411
- ].filter(Boolean).join('\n\n'),
386
+ ...overrides,
387
+ appendSystemPrompt: [opts.appendSystemPrompt, buildGoalSystemPrompt(goal, maxRounds)].filter(Boolean).join('\n\n'),
412
388
  maxTurns: turnsPerRound,
413
- // Never re-enter the goal guard from inside a goal round.
414
- goal: {
415
- ...(typeof this.cfg.goal === 'object' ? this.cfg.goal : {}),
416
- enabledOnQuery: false,
417
- },
418
389
  };
419
- for await (const ev of this.query(roundTarget, roundOverrides)) {
420
- yield ev;
390
+ let result;
391
+ for await (const event of this.queryOnce(round === 0 ? goal : 'Continue working toward the goal. Report complete only when finished, or blocked when unable to proceed.', roundOverrides, budget, [goalTool])) {
392
+ if (event.type === 'result')
393
+ result = event;
394
+ else
395
+ yield event;
421
396
  }
422
- const state = getGoalState();
423
- // If the model reported complete/blocked, stop.
424
- if (state.revision > lastRevision) {
425
- consecutiveStalls = 0;
426
- if (state.status === 'complete' || state.status === 'blocked') {
427
- yield {
428
- type: 'result',
429
- subtype: state.status === 'complete' ? 'success' : 'goal_blocked',
430
- num_turns: roundsDone + 1,
431
- errors: state.status === 'blocked' ? [state.summary || 'Goal blocked'] : undefined,
432
- };
433
- return;
397
+ if (result) {
398
+ turns += result.num_turns ?? 0;
399
+ apiTime += result.duration_api_ms ?? 0;
400
+ if (result.subtype !== 'success' && result.subtype !== 'error_max_turns') {
401
+ terminal = result;
402
+ break;
434
403
  }
435
- lastRevision = state.revision;
436
404
  }
437
- else {
438
- // No status update this round.
439
- consecutiveStalls++;
440
- if (maxConsecutiveStalls && consecutiveStalls >= maxConsecutiveStalls) {
441
- yield {
442
- type: 'result',
443
- subtype: 'goal_blocked',
444
- num_turns: roundsDone + 1,
445
- errors: [`No progress reported for ${consecutiveStalls} consecutive rounds.`],
446
- };
447
- return;
405
+ if (this.abortCtrl.signal.aborted) {
406
+ terminal = { type: 'result', subtype: 'cancelled', errors: ['Run cancelled'] };
407
+ break;
408
+ }
409
+ const report = getGoalState(state);
410
+ if (report.revision > lastRevision) {
411
+ stalls = 0;
412
+ lastRevision = report.revision;
413
+ if (report.status === 'complete' || report.status === 'blocked') {
414
+ terminal = { type: 'result', subtype: report.status === 'complete' ? 'success' : 'goal_blocked', errors: report.status === 'blocked' ? [report.summary || 'Goal blocked'] : undefined };
415
+ break;
448
416
  }
449
417
  }
418
+ else if (maxStalls && ++stalls >= maxStalls) {
419
+ terminal = { type: 'result', subtype: 'goal_blocked', errors: [`No progress reported for ${stalls} consecutive rounds`] };
420
+ break;
421
+ }
450
422
  }
451
- // Rounds exhausted without completion.
452
- yield {
453
- type: 'result',
454
- subtype: 'error_max_rounds',
455
- num_turns: roundsDone,
456
- errors: [`Goal not completed after ${maxRounds} rounds.`],
457
- };
423
+ yield { ...terminal, session_id: this.sid, is_error: terminal.subtype !== 'success', num_turns: turns,
424
+ usage: { ...budget.usage }, total_cost_usd: budget.cost, cost: budget.cost, duration_api_ms: apiTime,
425
+ model_usage: budget.modelUsage ? structuredClone(budget.modelUsage) : undefined };
458
426
  }
459
427
  /**
460
428
  * Get conversation messages.
@@ -462,10 +430,19 @@ export class Agent {
462
430
  getMessages() {
463
431
  return [...this.messageLog];
464
432
  }
433
+ /** Pass this session handle to built-in state helpers such as setQuestionHandler. */
434
+ getToolState() {
435
+ return this.sessionState;
436
+ }
465
437
  /**
466
438
  * Reset conversation history.
467
439
  */
468
440
  clear() {
441
+ if (this.activeRun)
442
+ throw new Error('Cannot clear an active query or goal');
443
+ clearTasks(this.sessionState);
444
+ this.sessionState.clear();
445
+ setMcpConnections(this.mcpLinks, this.sessionState);
469
446
  this.history = [];
470
447
  this.messageLog = [];
471
448
  }
@@ -517,9 +494,10 @@ export class Agent {
517
494
  * Stop a background task.
518
495
  */
519
496
  async stopTask(taskId) {
520
- const { getTask } = await import('./tools/task-tools.js');
521
- const task = getTask(taskId);
522
- if (task) {
497
+ const { getTask, stopTaskExecution } = await import('./tools/task-tools.js');
498
+ await stopTaskExecution(taskId, this.sessionState);
499
+ const task = getTask(taskId, this.sessionState);
500
+ if (task && !task.kind) {
523
501
  task.status = 'cancelled';
524
502
  }
525
503
  }
@@ -528,6 +506,13 @@ export class Agent {
528
506
  * Optionally persist session to disk.
529
507
  */
530
508
  async close() {
509
+ if (this.closed)
510
+ return;
511
+ if (this.activeRun)
512
+ throw new Error('Interrupt and finish the active query before closing the Agent');
513
+ this.closed = true;
514
+ await this.setupDone;
515
+ await settleTaskGroup(new Set(getAllTasks(this.sessionState).filter(task => task.kind).map(task => task.id)), this.sessionState, true);
531
516
  // Persist session if enabled
532
517
  if (this.cfg.persistSession !== false && this.history.length > 0) {
533
518
  try {
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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"}