Skip to content

Commit 079703d

Browse files
committed
Respect useTools=false for all tool types
1 parent c6a3b65 commit 079703d

2 files changed

Lines changed: 61 additions & 3 deletions

File tree

src/services/review-client.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,16 @@ function createToolCallKey(toolCall) {
184184
}
185185

186186
function createToolKit({ cwd, reviewer, priorReviews }) {
187-
const fileTools = reviewer.useTools === false
188-
? { definitions: [], execute: null }
189-
: createFileContextTools(cwd);
187+
if (reviewer.useTools === false) {
188+
return {
189+
definitions: [],
190+
execute: async () => {
191+
throw new Error('Tools are disabled for this reviewer.');
192+
}
193+
};
194+
}
195+
196+
const fileTools = createFileContextTools(cwd);
190197
const historyTools = Array.isArray(priorReviews) && priorReviews.length > 0 && reviewer.reviewSharing !== false
191198
? createReviewHistoryTools(priorReviews)
192199
: { definitions: [], execute: null };

test/nvidia-client.test.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,3 +405,54 @@ test('requestReviewResult exposes prior reviews through get_available_reviews wh
405405
assert.ok(payloads[0].messages[0].content.includes('get_available_reviews'));
406406
assert.equal(payloads[0].tools.some((tool) => tool.function.name === 'get_available_reviews'), true);
407407
});
408+
409+
test('requestReviewResult does not expose any tools when reviewer disables tools', async () => {
410+
const payloads = [];
411+
const client = {
412+
chat: {
413+
completions: {
414+
create: async (payload) => {
415+
payloads.push(payload);
416+
return {
417+
choices: [
418+
{
419+
message: {
420+
content: JSON.stringify({ findings: [] }),
421+
tool_calls: []
422+
}
423+
}
424+
]
425+
};
426+
}
427+
}
428+
}
429+
};
430+
431+
const result = await requestReviewResult({
432+
client,
433+
cwd: __dirname,
434+
reviewer: {
435+
name: 'Reviewer',
436+
model: 'gpt-5-mini',
437+
prompt: 'Review this code.',
438+
useTools: false
439+
},
440+
context: {
441+
contextMode: 'diff',
442+
entries: []
443+
},
444+
priorReviews: [
445+
{
446+
reviewer: 'Earlier Review',
447+
model: 'example/model',
448+
findings: ['something'],
449+
structuredFindings: [],
450+
error: null
451+
}
452+
],
453+
structuredOutputMode: 'json_object'
454+
});
455+
456+
assert.equal(result.structured.findings.length, 0);
457+
assert.equal(Array.isArray(payloads[0].tools), false);
458+
});

0 commit comments

Comments
 (0)