@@ -6,7 +6,6 @@ import { MockLogger } from '../utils/mockLogger.js';
66
77import { executeToolCall } from './executeToolCall.js' ;
88import { TokenTracker } from './tokens.js' ;
9- import { toolAgent } from './toolAgent.js' ;
109import { Tool , ToolContext } from './types.js' ;
1110
1211const toolContext : ToolContext = {
@@ -18,99 +17,59 @@ const toolContext: ToolContext = {
1817 tokenTracker : new TokenTracker ( ) ,
1918} ;
2019
21- // Mock configuration for testing
22- const testConfig = {
23- maxIterations : 50 ,
24- model : anthropic ( 'claude-3-7-sonnet-20250219' ) ,
25- maxTokens : 4096 ,
26- temperature : 0.7 ,
27- getSystemPrompt : ( ) => 'Test system prompt' ,
28- } ;
29-
30- // Mock Anthropic client response
31- const mockResponse = {
32- content : [
33- {
34- type : 'tool_use' ,
35- name : 'sequenceComplete' ,
36- id : '1' ,
37- input : { result : 'Test complete' } ,
20+ // Mock tool for testing
21+ const mockTool : Tool = {
22+ name : 'mockTool' ,
23+ description : 'A mock tool for testing' ,
24+ parameters : z . object ( {
25+ input : z . string ( ) . describe ( 'Test input' ) ,
26+ } ) ,
27+ returns : z . string ( ) . describe ( 'The processed result' ) ,
28+ parametersJsonSchema : {
29+ type : 'object' ,
30+ properties : {
31+ input : {
32+ type : 'string' ,
33+ description : 'Test input' ,
34+ } ,
3835 } ,
39- ] ,
40- usage : { input_tokens : 10 , output_tokens : 10 } ,
41- model : 'claude-3-7-sonnet-latest' ,
42- role : 'assistant' ,
43- id : 'msg_123' ,
36+ required : [ 'input' ] ,
37+ } ,
38+ returnsJsonSchema : {
39+ type : 'string' ,
40+ description : 'The processed result' ,
41+ } ,
42+ execute : ( { input } ) => Promise . resolve ( `Processed: ${ input } ` ) ,
4443} ;
4544
46- // Mock Anthropic SDK
47- const mockCreate = vi . fn ( ) . mockImplementation ( ( ) => mockResponse ) ;
48- vi . mock ( '@anthropic-ai/sdk' , ( ) => ( {
49- default : class {
50- messages = {
51- create : mockCreate ,
52- } ;
45+ const errorTool : Tool = {
46+ name : 'errorTool' ,
47+ description : 'A tool that always fails' ,
48+ parameters : z . object ( { } ) ,
49+ returns : z . string ( ) . describe ( 'Error message' ) ,
50+ parametersJsonSchema : {
51+ type : 'object' ,
52+ properties : { } ,
53+ required : [ ] ,
54+ } ,
55+ returnsJsonSchema : {
56+ type : 'string' ,
57+ description : 'Error message' ,
58+ } ,
59+ execute : ( ) => {
60+ throw new Error ( 'Deliberate failure' ) ;
5361 } ,
54- } ) ) ;
62+ } ;
5563
5664describe ( 'toolAgent' , ( ) => {
5765 beforeEach ( ( ) => {
58- process . env . ANTHROPIC_API_KEY = 'test-key' ;
66+ vi . clearAllMocks ( ) ;
5967 } ) ;
6068
6169 afterEach ( ( ) => {
6270 vi . clearAllMocks ( ) ;
6371 } ) ;
6472
65- // Mock tool for testing
66- const mockTool : Tool = {
67- name : 'mockTool' ,
68- description : 'A mock tool for testing' ,
69- parameters : z . object ( {
70- input : z . string ( ) . describe ( 'Test input' ) ,
71- } ) ,
72- returns : z . string ( ) . describe ( 'The processed result' ) ,
73- parametersJsonSchema : {
74- type : 'object' ,
75- properties : {
76- input : {
77- type : 'string' ,
78- description : 'Test input' ,
79- } ,
80- } ,
81- required : [ 'input' ] ,
82- } ,
83- returnsJsonSchema : {
84- type : 'string' ,
85- description : 'The processed result' ,
86- } ,
87- execute : ( { input } ) => Promise . resolve ( `Processed: ${ input } ` ) ,
88- } ;
89-
90- const sequenceCompleteTool : Tool = {
91- name : 'sequenceComplete' ,
92- description : 'Completes the sequence' ,
93- parameters : z . object ( {
94- result : z . string ( ) . describe ( 'The final result' ) ,
95- } ) ,
96- returns : z . string ( ) . describe ( 'The final result' ) ,
97- parametersJsonSchema : {
98- type : 'object' ,
99- properties : {
100- result : {
101- type : 'string' ,
102- description : 'The final result' ,
103- } ,
104- } ,
105- required : [ 'result' ] ,
106- } ,
107- returnsJsonSchema : {
108- type : 'string' ,
109- description : 'The final result' ,
110- } ,
111- execute : ( { result } ) => Promise . resolve ( result ) ,
112- } ;
113-
11473 it ( 'should execute tool calls' , async ( ) => {
11574 const result = await executeToolCall (
11675 {
@@ -140,25 +99,6 @@ describe('toolAgent', () => {
14099 } ) ;
141100
142101 it ( 'should handle tool execution errors' , async ( ) => {
143- const errorTool : Tool = {
144- name : 'errorTool' ,
145- description : 'A tool that always fails' ,
146- parameters : z . object ( { } ) ,
147- returns : z . string ( ) . describe ( 'Error message' ) ,
148- parametersJsonSchema : {
149- type : 'object' ,
150- properties : { } ,
151- required : [ ] ,
152- } ,
153- returnsJsonSchema : {
154- type : 'string' ,
155- description : 'Error message' ,
156- } ,
157- execute : ( ) => {
158- throw new Error ( 'Deliberate failure' ) ;
159- } ,
160- } ;
161-
162102 await expect (
163103 executeToolCall (
164104 {
@@ -171,43 +111,4 @@ describe('toolAgent', () => {
171111 ) ,
172112 ) . rejects . toThrow ( 'Deliberate failure' ) ;
173113 } ) ;
174-
175- // Test empty response handling
176- it ( 'should handle empty responses by sending a reminder' , async ( ) => {
177- // Reset the mock and set up the sequence of responses
178- mockCreate . mockReset ( ) ;
179- mockCreate
180- . mockResolvedValueOnce ( {
181- content : [ ] ,
182- usage : { input_tokens : 5 , output_tokens : 5 } ,
183- } )
184- . mockResolvedValueOnce ( mockResponse ) ;
185-
186- const result = await toolAgent (
187- 'Test prompt' ,
188- [ sequenceCompleteTool ] ,
189- testConfig ,
190- toolContext ,
191- ) ;
192-
193- // Verify that create was called twice (once for empty response, once for completion)
194- expect ( mockCreate ) . toHaveBeenCalledTimes ( 2 ) ;
195- expect ( result . result ) . toBe ( 'Test complete' ) ;
196- } ) ;
197-
198- // New tests for async system prompt
199- it ( 'should handle async system prompt' , async ( ) => {
200- // Reset mock and set expected response
201- mockCreate . mockReset ( ) ;
202- mockCreate . mockResolvedValue ( mockResponse ) ;
203-
204- const result = await toolAgent (
205- 'Test prompt' ,
206- [ sequenceCompleteTool ] ,
207- testConfig ,
208- toolContext ,
209- ) ;
210-
211- expect ( result . result ) . toBe ( 'Test complete' ) ;
212- } ) ;
213114} ) ;
0 commit comments