@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/session.js CHANGED
@@ -4,12 +4,14 @@
4
4
  * Persists conversation transcripts to disk for resumption.
5
5
  * Manages session lifecycle (create, resume, list, fork).
6
6
  */
7
- import { readFile, writeFile, mkdir, readdir } from 'fs/promises';
7
+ import { readFile, mkdir, readdir, open, rename, unlink } from 'fs/promises';
8
8
  import { join } from 'path';
9
9
  /**
10
10
  * Get the sessions directory path.
11
11
  */
12
12
  function getSessionsDir() {
13
+ if (process.env.AGENT_SDK_SESSION_DIR)
14
+ return process.env.AGENT_SDK_SESSION_DIR;
13
15
  const home = process.env.HOME || process.env.USERPROFILE || '/tmp';
14
16
  return join(home, '.open-agent-sdk', 'sessions');
15
17
  }
@@ -17,6 +19,8 @@ function getSessionsDir() {
17
19
  * Get the path for a specific session.
18
20
  */
19
21
  function getSessionPath(sessionId) {
22
+ if (!/^[a-zA-Z0-9_-]+$/.test(sessionId))
23
+ throw new Error('Invalid session id');
20
24
  return join(getSessionsDir(), sessionId);
21
25
  }
22
26
  /**
@@ -25,19 +29,35 @@ function getSessionPath(sessionId) {
25
29
  export async function saveSession(sessionId, messages, metadata) {
26
30
  const dir = getSessionPath(sessionId);
27
31
  await mkdir(dir, { recursive: true });
32
+ const previous = await readFile(join(dir, 'transcript.json'), 'utf8').then(text => JSON.parse(text), (error) => { if (error.code !== 'ENOENT')
33
+ throw error; return undefined; });
28
34
  const data = {
29
35
  metadata: {
30
36
  id: sessionId,
31
37
  cwd: metadata.cwd || process.cwd(),
32
38
  model: metadata.model || 'claude-sonnet-4-6',
33
- createdAt: metadata.createdAt || new Date().toISOString(),
39
+ createdAt: metadata.createdAt || previous?.metadata.createdAt || new Date().toISOString(),
34
40
  updatedAt: new Date().toISOString(),
35
41
  messageCount: messages.length,
36
42
  summary: metadata.summary,
37
43
  },
38
44
  messages,
39
45
  };
40
- await writeFile(join(dir, 'transcript.json'), JSON.stringify(data, null, 2), 'utf-8');
46
+ const temporary = join(dir, `transcript-${crypto.randomUUID()}.tmp`);
47
+ try {
48
+ const handle = await open(temporary, 'wx', 0o600);
49
+ try {
50
+ await handle.writeFile(JSON.stringify(data, null, 2));
51
+ await handle.sync();
52
+ }
53
+ finally {
54
+ await handle.close();
55
+ }
56
+ await rename(temporary, join(dir, 'transcript.json'));
57
+ }
58
+ finally {
59
+ await unlink(temporary).catch(() => { });
60
+ }
41
61
  }
42
62
  /**
43
63
  * Load session from disk.
@@ -46,7 +66,26 @@ export async function loadSession(sessionId) {
46
66
  try {
47
67
  const filePath = join(getSessionPath(sessionId), 'transcript.json');
48
68
  const content = await readFile(filePath, 'utf-8');
49
- return JSON.parse(content);
69
+ const data = JSON.parse(content);
70
+ // A crash after a tool request leaves its outcome unknown. Pair it with an
71
+ // explicit failure, never replay a possibly completed external mutation.
72
+ for (let i = 0; i < data.messages.length; i++) {
73
+ const message = data.messages[i];
74
+ if (message.role !== 'assistant' || !Array.isArray(message.content))
75
+ continue;
76
+ const calls = message.content.filter(block => block.type === 'tool_use');
77
+ const next = data.messages[i + 1];
78
+ const results = next?.role === 'user' && Array.isArray(next.content) ? next.content : [];
79
+ const missing = calls.filter(call => !results.some(result => result.type === 'tool_result' && result.tool_use_id === call.id));
80
+ if (missing.length) {
81
+ const interrupted = missing.map(call => ({ type: 'tool_result', tool_use_id: call.id, content: 'Execution interrupted; tool outcome unknown. Verify external state before retrying.', is_error: true }));
82
+ if (results.length)
83
+ results.push(...interrupted);
84
+ else
85
+ data.messages.splice(i + 1, 0, { role: 'user', content: interrupted });
86
+ }
87
+ }
88
+ return data;
50
89
  }
51
90
  catch {
52
91
  return null;
@@ -156,4 +195,59 @@ export async function tagSession(sessionId, tag, options) {
156
195
  data.metadata.updatedAt = new Date().toISOString();
157
196
  await saveSession(sessionId, data.messages, data.metadata);
158
197
  }
198
+ export async function appendSessionEvent(sessionId, event) {
199
+ // Token deltas are ephemeral; complete assistant messages are persisted instead.
200
+ if (event.type === 'partial_message')
201
+ return;
202
+ const dir = getSessionPath(sessionId);
203
+ await mkdir(dir, { recursive: true });
204
+ const path = join(dir, 'events.jsonl');
205
+ const record = { version: 1, id: crypto.randomUUID(), timestamp: new Date().toISOString(), event };
206
+ const handle = await open(path, 'a+', 0o600);
207
+ try {
208
+ // Normally read just the last byte. Scan backwards only after a torn append.
209
+ const { size } = await handle.stat();
210
+ if (size) {
211
+ const last = Buffer.alloc(1);
212
+ await handle.read(last, 0, 1, size - 1);
213
+ if (last[0] !== 10) {
214
+ let end = size;
215
+ let boundary = 0;
216
+ while (end > 0) {
217
+ const start = Math.max(0, end - 65536);
218
+ const chunk = Buffer.alloc(end - start);
219
+ await handle.read(chunk, 0, chunk.length, start);
220
+ const newline = chunk.lastIndexOf(10);
221
+ if (newline >= 0) {
222
+ boundary = start + newline + 1;
223
+ break;
224
+ }
225
+ end = start;
226
+ }
227
+ await handle.truncate(boundary);
228
+ }
229
+ }
230
+ await handle.writeFile(JSON.stringify(record) + '\n');
231
+ await handle.sync();
232
+ }
233
+ finally {
234
+ await handle.close();
235
+ }
236
+ }
237
+ export async function readSessionEvents(sessionId, afterId) {
238
+ const content = await readFile(join(getSessionPath(sessionId), 'events.jsonl'), 'utf8').catch((error) => {
239
+ if (error.code !== 'ENOENT')
240
+ throw error;
241
+ return '';
242
+ });
243
+ const lines = content.split('\n');
244
+ lines.pop(); // ignore a torn final record, or the empty trailing line
245
+ const records = lines.filter(Boolean).map(line => JSON.parse(line));
246
+ if (!afterId)
247
+ return records;
248
+ const index = records.findIndex(record => record.id === afterId);
249
+ if (index < 0)
250
+ throw new Error('Unknown session event cursor');
251
+ return records.slice(index + 1);
252
+ }
159
253
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tool.d.ts","sourceRoot":"","sources":["../../src/tools/agent-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,eAAe,EAAE,MAAM,aAAa,CAAA;AAQ3F;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAE5E;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAkBD,eAAO,MAAM,SAAS,EAAE,cA0HvB,CAAA"}
1
+ {"version":3,"file":"agent-tool.d.ts","sourceRoot":"","sources":["../../src/tools/agent-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,eAAe,EAAE,MAAM,aAAa,CAAA;AAS3F;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAE5E;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAkBD,eAAO,MAAM,SAAS,EAAE,cAgJvB,CAAA"}
@@ -4,6 +4,7 @@
4
4
  * Supports built-in agents (Explore, Plan) and custom agent definitions.
5
5
  * Agents run as nested query loops with their own context and tool sets.
6
6
  */
7
+ import { startBackgroundTask } from './task-tools.js';
7
8
  import { QueryEngine } from '../engine.js';
8
9
  import { getAllBaseTools, filterTools } from './index.js';
9
10
  import { createProvider } from '../providers/index.js';
@@ -76,16 +77,20 @@ export const AgentTool = {
76
77
  return 'Launch a subagent to handle complex tasks autonomously.';
77
78
  },
78
79
  async call(input, context) {
80
+ if (input.run_in_background) {
81
+ const task = startBackgroundTask(context, 'agent', input.description || 'Subagent', async (signal) => {
82
+ const result = await AgentTool.call({ ...input, run_in_background: false }, { ...context, abortSignal: signal });
83
+ return { output: typeof result.content === 'string' ? result.content : JSON.stringify(result.content), is_error: result.is_error };
84
+ });
85
+ return { type: 'tool_result', tool_use_id: '', content: JSON.stringify({ task_id: task.id, status: task.status }) };
86
+ }
79
87
  const agentType = input.subagent_type || 'general-purpose';
80
88
  // Find agent definition
81
- const agentDef = registeredAgents[agentType] || BUILTIN_AGENTS[agentType];
89
+ const agentDef = (context.agents ?? registeredAgents)[agentType] || BUILTIN_AGENTS[agentType];
82
90
  // Determine tools for subagent
83
- let tools = getAllBaseTools();
84
- if (agentDef?.tools) {
85
- tools = filterTools(tools, agentDef.tools);
86
- }
91
+ let tools = filterTools(context.tools ?? getAllBaseTools(), agentDef?.tools, agentDef?.disallowedTools);
87
92
  // Remove AgentTool from subagent to prevent infinite recursion
88
- tools = tools.filter(t => t.name !== 'Agent');
93
+ tools = tools.filter(t => t.name !== 'Agent' && t.name !== 'update_goal');
89
94
  // Build system prompt
90
95
  const systemPrompt = agentDef?.prompt ||
91
96
  'You are a helpful assistant. Complete the given task using the available tools.';
@@ -94,7 +99,8 @@ export const AgentTool = {
94
99
  const envApiType = process.env.CLAUDEBUDDY_API_TYPE;
95
100
  const envApiKey = process.env.CLAUDEBUDDY_API_KEY;
96
101
  const envBaseUrl = process.env.CLAUDEBUDDY_BASE_URL;
97
- const subModel = input.model || context.model || envModel || 'claude-sonnet-4-6';
102
+ const requestedModel = input.model || agentDef?.model;
103
+ const subModel = (requestedModel === 'inherit' ? undefined : requestedModel) || context.model || envModel || 'claude-sonnet-4-6';
98
104
  const provider = context.provider ?? createProvider((context.apiType || envApiType) || 'anthropic-messages', {
99
105
  apiKey: envApiKey,
100
106
  baseURL: envBaseUrl,
@@ -108,14 +114,28 @@ export const AgentTool = {
108
114
  systemPrompt,
109
115
  maxTurns: agentDef?.maxTurns || 10,
110
116
  maxTokens: 16384,
111
- canUseTool: async () => ({ behavior: 'allow' }),
117
+ canUseTool: context.canUseTool ?? (async () => ({ behavior: 'allow' })),
118
+ abortSignal: context.abortSignal,
119
+ sessionState: context.sessionState,
120
+ agents: context.agents,
121
+ maxBudgetUsd: context.maxBudgetUsd,
122
+ executionBudget: context.executionBudget,
123
+ pricingPerMillion: context.pricingPerMillion,
124
+ hookRegistry: context.hookRegistry,
125
+ sessionId: context.sessionId,
112
126
  includePartialMessages: false,
113
127
  });
114
128
  // Run the subagent
115
129
  let resultText = '';
130
+ let isError = false;
131
+ let failureReason = '';
116
132
  let toolCalls = [];
117
133
  try {
118
134
  for await (const event of engine.submitMessage(input.prompt)) {
135
+ if (event.type === 'result' && event.is_error) {
136
+ isError = true;
137
+ failureReason = event.subtype;
138
+ }
119
139
  if (event.type === 'assistant') {
120
140
  for (const block of event.message.content) {
121
141
  if ('text' in block && block.text) {
@@ -136,7 +156,9 @@ export const AgentTool = {
136
156
  is_error: true,
137
157
  };
138
158
  }
139
- const output = resultText || '(Subagent completed with no text output)';
159
+ const output = isError
160
+ ? `Subagent error: ${failureReason}${resultText ? `\n${resultText}` : ''}`
161
+ : resultText || '(Subagent completed with no text output)';
140
162
  const toolSummary = toolCalls.length > 0
141
163
  ? `\n[Tools used: ${toolCalls.join(', ')}]`
142
164
  : '';
@@ -144,6 +166,7 @@ export const AgentTool = {
144
166
  type: 'tool_result',
145
167
  tool_use_id: '',
146
168
  content: output + toolSummary,
169
+ is_error: isError,
147
170
  };
148
171
  },
149
172
  };
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tool.js","sourceRoot":"","sources":["../../src/tools/agent-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-tool.js","sourceRoot":"","sources":["../../src/tools/agent-tool.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type SessionState } from './session-state.js';
1
2
  /**
2
3
  * AskUserQuestionTool - Interactive user questions
3
4
  *
@@ -9,10 +10,10 @@ import type { ToolDefinition } from '../types.js';
9
10
  /**
10
11
  * Set the question handler for AskUserQuestion.
11
12
  */
12
- export declare function setQuestionHandler(handler: (question: string, options?: string[]) => Promise<string>): void;
13
+ export declare function setQuestionHandler(handler: (question: string, options?: string[]) => Promise<string>, sessionState?: SessionState): void;
13
14
  /**
14
15
  * Clear the question handler.
15
16
  */
16
- export declare function clearQuestionHandler(): void;
17
+ export declare function clearQuestionHandler(sessionState?: SessionState): void;
17
18
  export declare const AskUserQuestionTool: ToolDefinition;
18
19
  //# sourceMappingURL=ask-user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAK7D;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GACjE,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,eAAO,MAAM,mBAAmB,EAAE,cAiDjC,CAAA"}
1
+ {"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAA;AAI1E;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,EAClE,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAGtE;AAED,eAAO,MAAM,mBAAmB,EAAE,cAkDjC,CAAA"}
@@ -1,23 +1,18 @@
1
- /**
2
- * AskUserQuestionTool - Interactive user questions
3
- *
4
- * In SDK mode, returns a permission_request event and waits
5
- * for the consumer to provide an answer.
6
- * In non-interactive mode, returns a default or denies.
7
- */
1
+ import { sessionStore } from './session-state.js';
8
2
  // Callback for handling user questions (set by the agent)
9
- let questionHandler = null;
10
3
  /**
11
4
  * Set the question handler for AskUserQuestion.
12
5
  */
13
- export function setQuestionHandler(handler) {
14
- questionHandler = handler;
6
+ export function setQuestionHandler(handler, sessionState) {
7
+ const state = getState(sessionState);
8
+ state.questionHandler = handler;
15
9
  }
16
10
  /**
17
11
  * Clear the question handler.
18
12
  */
19
- export function clearQuestionHandler() {
20
- questionHandler = null;
13
+ export function clearQuestionHandler(sessionState) {
14
+ const state = getState(sessionState);
15
+ state.questionHandler = null;
21
16
  }
22
17
  export const AskUserQuestionTool = {
23
18
  name: 'AskUserQuestion',
@@ -42,10 +37,11 @@ export const AskUserQuestionTool = {
42
37
  isConcurrencySafe: () => false,
43
38
  isEnabled: () => true,
44
39
  async prompt() { return 'Ask the user a question.'; },
45
- async call(input) {
46
- if (questionHandler) {
40
+ async call(input, context) {
41
+ const state = getState(context?.sessionState);
42
+ if (state.questionHandler) {
47
43
  try {
48
- const answer = await questionHandler(input.question, input.options);
44
+ const answer = await state.questionHandler(input.question, input.options);
49
45
  return {
50
46
  type: 'tool_result',
51
47
  tool_use_id: '',
@@ -69,4 +65,9 @@ export const AskUserQuestionTool = {
69
65
  };
70
66
  },
71
67
  };
68
+ function getState(sessionState) {
69
+ return sessionStore(sessionState, 'ask-user', () => ({
70
+ questionHandler: null,
71
+ }));
72
+ }
72
73
  //# sourceMappingURL=ask-user.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,0DAA0D;AAC1D,IAAI,eAAe,GAAuE,IAAI,CAAA;AAE9F;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAkE;IAElE,eAAe,GAAG,OAAO,CAAA;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,eAAe,GAAG,IAAI,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,8GAA8G;IAC3H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;YACzE,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,uCAAuC;aACrD;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,oDAAoD;aAClE;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;IACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;IACtB,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;IAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;IACrB,KAAK,CAAC,MAAM,KAAK,OAAO,0BAA0B,CAAA,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,KAAU;QACnB,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBACnE,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,MAAM;iBAChB,CAAA;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,4BAA4B,GAAG,CAAC,OAAO,EAAE;oBAClD,QAAQ,EAAE,IAAI;iBACf,CAAA;YACH,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,oCAAoC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iEAAiE;SAC7L,CAAA;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAA;AAWpE,0DAA0D;AAE1D;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAkE,EAClE,YAA2B;IAE3B,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IACpC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAA2B;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IACpC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAA;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAmB;IACjD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,8GAA8G;IAC3H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;YACzE,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,uCAAuC;aACrD;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,oDAAoD;aAClE;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;IACD,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;IACtB,iBAAiB,EAAE,GAAG,EAAE,CAAC,KAAK;IAC9B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;IACrB,KAAK,CAAC,MAAM,KAAK,OAAO,0BAA0B,CAAA,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,KAAU,EAAE,OAAqB;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAC7C,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;gBACzE,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,MAAM;iBAChB,CAAA;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,4BAA4B,GAAG,CAAC,OAAO,EAAE;oBAClD,QAAQ,EAAE,IAAI;iBACf,CAAA;YACH,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,oCAAoC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iEAAiE;SAC7L,CAAA;IACH,CAAC;CACF,CAAA;AAED,SAAS,QAAQ,CAAC,YAA2B;IAC3C,OAAO,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,eAAe,EAAE,IAA0E;KAC5F,CAAC,CAAC,CAAA;AACL,CAAC"}
@@ -1,5 +1,2 @@
1
- /**
2
- * BashTool - Execute shell commands
3
- */
4
1
  export declare const BashTool: import("../types.js").ToolDefinition;
5
2
  //# sourceMappingURL=bash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,eAAO,MAAM,QAAQ,sCAmEnB,CAAA"}
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,sCAoBnB,CAAA"}
@@ -1,67 +1,87 @@
1
- /**
2
- * BashTool - Execute shell commands
3
- */
1
+ /** Shell execution with bounded output and real task cancellation. */
4
2
  import { spawn } from 'child_process';
5
3
  import { defineTool } from './types.js';
4
+ import { startBackgroundTask } from './task-tools.js';
6
5
  export const BashTool = defineTool({
7
6
  name: 'Bash',
8
- description: 'Execute a bash command and return its output. Use for running shell commands, scripts, and system operations.',
9
- inputSchema: {
10
- type: 'object',
11
- properties: {
12
- command: {
13
- type: 'string',
14
- description: 'The bash command to execute',
15
- },
16
- timeout: {
17
- type: 'number',
18
- description: 'Optional timeout in milliseconds (max 600000, default 120000)',
19
- },
20
- },
21
- required: ['command'],
22
- },
23
- isReadOnly: false,
24
- isConcurrencySafe: false,
7
+ description: 'Execute a bash command. Set run_in_background to receive a task_id for TaskOutput/TaskStop. Background work is scoped to the current query.',
8
+ inputSchema: { type: 'object', properties: {
9
+ command: { type: 'string', description: 'Shell command' },
10
+ timeout: { type: 'number', description: 'Timeout in milliseconds, 1–600000 (default 120000)' },
11
+ run_in_background: { type: 'boolean', description: 'Return a task_id immediately' },
12
+ }, required: ['command'] },
13
+ isReadOnly: false, isConcurrencySafe: false,
25
14
  async call(input, context) {
26
- const { command, timeout: userTimeout } = input;
27
- const timeoutMs = Math.min(userTimeout || 120000, 600000);
28
- return new Promise((resolve) => {
29
- const chunks = [];
30
- const errChunks = [];
31
- const proc = spawn('bash', ['-c', command], {
32
- cwd: context.cwd,
33
- env: { ...process.env },
34
- timeout: timeoutMs,
35
- stdio: ['pipe', 'pipe', 'pipe'],
36
- });
37
- proc.stdout?.on('data', (data) => chunks.push(data));
38
- proc.stderr?.on('data', (data) => errChunks.push(data));
39
- if (context.abortSignal) {
40
- context.abortSignal.addEventListener('abort', () => {
41
- proc.kill('SIGTERM');
42
- }, { once: true });
43
- }
44
- proc.on('close', (code) => {
45
- const stdout = Buffer.concat(chunks).toString('utf-8');
46
- const stderr = Buffer.concat(errChunks).toString('utf-8');
47
- let output = '';
48
- if (stdout)
49
- output += stdout;
50
- if (stderr)
51
- output += (output ? '\n' : '') + stderr;
52
- if (code !== 0 && code !== null) {
53
- output += `\nExit code: ${code}`;
54
- }
55
- // Truncate very large outputs
56
- if (output.length > 100000) {
57
- output = output.slice(0, 50000) + '\n...(truncated)...\n' + output.slice(-50000);
58
- }
59
- resolve(output || '(no output)');
60
- });
61
- proc.on('error', (err) => {
62
- resolve(`Error executing command: ${err.message}`);
63
- });
64
- });
15
+ const timeout = input.timeout ?? 120000;
16
+ if (!Number.isFinite(timeout) || timeout < 1 || timeout > 600000)
17
+ throw new Error('Invalid command timeout');
18
+ if (typeof input.command !== 'string' || !input.command.trim())
19
+ throw new Error('command must be non-empty');
20
+ if (input.run_in_background) {
21
+ const task = startBackgroundTask(context, 'bash', input.command.slice(0, 200), (signal, append) => executeShell(input.command, context.cwd, timeout, signal, append));
22
+ return JSON.stringify({ task_id: task.id, status: task.status });
23
+ }
24
+ const result = await executeShell(input.command, context.cwd, timeout, context.abortSignal);
25
+ return { data: result.output, is_error: result.is_error };
65
26
  },
66
27
  });
28
+ function executeShell(command, cwd, timeout, signal, append) {
29
+ signal?.throwIfAborted();
30
+ return new Promise((resolve) => {
31
+ let output = '';
32
+ let truncated = false;
33
+ let timedOut = false;
34
+ let settled = false;
35
+ let escalation;
36
+ const proc = spawn('bash', ['-c', command], { cwd, env: { ...process.env }, detached: process.platform !== 'win32', stdio: ['ignore', 'pipe', 'pipe'] });
37
+ const add = (text) => { output += text; if (output.length > 100000) {
38
+ output = output.slice(-100000);
39
+ truncated = true;
40
+ } ; append?.(text); };
41
+ const kill = (sig) => {
42
+ try {
43
+ if (process.platform !== 'win32' && proc.pid)
44
+ process.kill(-proc.pid, sig);
45
+ else
46
+ proc.kill(sig);
47
+ }
48
+ catch (error) {
49
+ if (error.code !== 'ESRCH')
50
+ add(`\nTermination error: ${error.message}`);
51
+ }
52
+ };
53
+ const stop = () => { kill('SIGTERM'); if (!escalation)
54
+ escalation = setTimeout(() => kill('SIGKILL'), 500); };
55
+ const timer = setTimeout(() => { timedOut = true; stop(); }, timeout);
56
+ signal?.addEventListener('abort', stop, { once: true });
57
+ if (signal?.aborted)
58
+ stop();
59
+ proc.stdout.setEncoding('utf8');
60
+ proc.stderr.setEncoding('utf8');
61
+ proc.stdout.on('data', add);
62
+ proc.stderr.on('data', add);
63
+ const finish = (code, error, killedBy) => {
64
+ if (settled)
65
+ return;
66
+ settled = true;
67
+ clearTimeout(timer);
68
+ if (escalation) {
69
+ kill('SIGKILL');
70
+ clearTimeout(escalation);
71
+ }
72
+ signal?.removeEventListener('abort', stop);
73
+ if (error)
74
+ add(`\nError executing command: ${error.message}`);
75
+ else if (timedOut)
76
+ add('\nCommand timed out');
77
+ else if (signal?.aborted)
78
+ add('\nCommand cancelled');
79
+ else if (code !== 0)
80
+ add(`\nExit code: ${code}${killedBy ? ` (${killedBy})` : ''}`);
81
+ resolve({ output: (truncated ? '(earlier output truncated)\n' : '') + (output || '(no output)'), is_error: !!error || timedOut || !!signal?.aborted || code !== 0, exitCode: code });
82
+ };
83
+ proc.on('error', error => finish(null, error));
84
+ proc.on('close', (code, sig) => finish(code, undefined, sig));
85
+ });
86
+ }
67
87
  //# sourceMappingURL=bash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type SessionState } from './session-state.js';
1
2
  /**
2
3
  * ConfigTool - Dynamic configuration management
3
4
  *
@@ -7,14 +8,14 @@ import type { ToolDefinition } from '../types.js';
7
8
  /**
8
9
  * Get a config value.
9
10
  */
10
- export declare function getConfig(key: string): unknown;
11
+ export declare function getConfig(key: string, sessionState?: SessionState): unknown;
11
12
  /**
12
13
  * Set a config value.
13
14
  */
14
- export declare function setConfig(key: string, value: unknown): void;
15
+ export declare function setConfig(key: string, value: unknown, sessionState?: SessionState): void;
15
16
  /**
16
17
  * Clear all config.
17
18
  */
18
- export declare function clearConfig(): void;
19
+ export declare function clearConfig(sessionState?: SessionState): void;
19
20
  export declare const ConfigTool: ToolDefinition;
20
21
  //# sourceMappingURL=config-tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-tool.d.ts","sourceRoot":"","sources":["../../src/tools/config-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAK7D;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,eAAO,MAAM,UAAU,EAAE,cAwDxB,CAAA"}
1
+ {"version":3,"file":"config-tool.d.ts","sourceRoot":"","sources":["../../src/tools/config-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACpE;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAA;AAI1E;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAG3E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAGxF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAG7D;AAED,eAAO,MAAM,UAAU,EAAE,cAyDxB,CAAA"}