-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtool-use.ts
More file actions
43 lines (40 loc) · 1.21 KB
/
tool-use.ts
File metadata and controls
43 lines (40 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* Capture tool use events during a query.
*
* When forge runs in verbose mode, tool executions appear as status lines
* in stdout. The SDK parses these into `tool_use` messages with the
* tool name and arguments.
*
* Run: bun run examples/tool-use.ts
*/
import { query } from "../src";
const toolCalls: Array<{ name: string; args: Record<string, unknown> }> = [];
for await (const message of query({
prompt: "List the files in the current directory, then read package.json.",
options: {
cwd: import.meta.dir,
},
})) {
switch (message.type) {
case "system":
console.log(`[session] ${message.session_id}`);
break;
case "assistant":
process.stdout.write(message.content);
break;
case "tool_use":
toolCalls.push({ name: message.name, args: message.arguments });
console.log(`\n[tool_use] ${message.name}(${JSON.stringify(message.arguments)})`);
break;
case "result":
console.log(`\n[result] ${message.result.slice(0, 200)}...`);
break;
case "error":
console.error(`[error] ${message.error}`);
break;
}
}
console.log(`\nTotal tool calls: ${toolCalls.length}`);
for (const call of toolCalls) {
console.log(` - ${call.name}`);
}