refactor(cli): Use excludeTools for non-interactive mode (#1072)

This commit is contained in:
N. Taylor Mullen 2025-06-15 16:05:40 -07:00 committed by GitHub
parent 101b6fe767
commit 4463671284
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 29 deletions

View File

@ -21,15 +21,7 @@ import {
ApprovalMode,
Config,
EditTool,
GlobTool,
GrepTool,
LSTool,
MemoryTool,
ReadFileTool,
ReadManyFilesTool,
ShellTool,
WebFetchTool,
WebSearchTool,
WriteFileTool,
sessionId,
logUserPrompt,
@ -166,28 +158,16 @@ async function loadNonInteractiveConfig(
}
// Everything is not allowed, ensure that only read-only tools are configured.
let existingCoreTools = config.getCoreTools();
existingCoreTools = existingCoreTools || [
ReadFileTool.Name,
LSTool.Name,
GrepTool.Name,
GlobTool.Name,
EditTool.Name,
WriteFileTool.Name,
WebFetchTool.Name,
WebSearchTool.Name,
ReadManyFilesTool.Name,
ShellTool.Name,
MemoryTool.Name,
];
const existingExcludeTools = settings.merged.excludeTools || [];
const interactiveTools = [ShellTool.Name, EditTool.Name, WriteFileTool.Name];
const nonInteractiveTools = existingCoreTools.filter(
(tool) => !interactiveTools.includes(tool),
);
const newExcludeTools = [
...new Set([...existingExcludeTools, ...interactiveTools]),
];
const nonInteractiveSettings = {
...settings.merged,
coreTools: nonInteractiveTools,
excludeTools: newExcludeTools,
};
return await loadCliConfig(
nonInteractiveSettings,

View File

@ -427,6 +427,9 @@ Add any other context about the problem here.
});
it('should use the custom bug command URL from config if available', async () => {
process.env.CLI_VERSION = '0.1.0';
process.env.SANDBOX = 'sandbox-exec';
process.env.SEATBELT_PROFILE = 'permissive-open';
const bugCommand = {
urlTemplate:
'https://custom-bug-tracker.com/new?title={title}&body={body}',
@ -449,7 +452,7 @@ Add any other context about the problem here.
* **CLI Version:** 0.1.0
* **Git Commit:** ${GIT_COMMIT_INFO}
* **Operating System:** test-platform test-node-version
* **Sandbox Environment:** no sandbox
* **Sandbox Environment:** sandbox-exec (permissive-open)
* **Model Version:** test-model
* **Memory Usage:** 11.8 MB
`;

View File

@ -87,7 +87,9 @@ describe('usePhraseCycler', () => {
expect(result.current).toBe(WITTY_LOADING_PHRASES[0]);
// Set back to active - should pick a random witty phrase
rerender({ isActive: true, isWaiting: false });
act(() => {
rerender({ isActive: true, isWaiting: false });
});
expect(WITTY_LOADING_PHRASES).toContain(result.current);
});