Kode-cli/src/commands/approvedTools.ts
2025-08-10 19:57:17 +08:00

54 lines
1.7 KiB
TypeScript

import {
ProjectConfig,
getCurrentProjectConfig as getCurrentProjectConfigDefault,
saveCurrentProjectConfig as saveCurrentProjectConfigDefault,
} from '../utils/config.js'
export type ProjectConfigHandler = {
getCurrentProjectConfig: () => ProjectConfig
saveCurrentProjectConfig: (config: ProjectConfig) => void
}
// Default config handler using the real implementation
const defaultConfigHandler: ProjectConfigHandler = {
getCurrentProjectConfig: getCurrentProjectConfigDefault,
saveCurrentProjectConfig: saveCurrentProjectConfigDefault,
}
/**
* Handler for the 'approved-tools list' command
*/
export function handleListApprovedTools(
cwd: string,
projectConfigHandler: ProjectConfigHandler = defaultConfigHandler,
): string {
const projectConfig = projectConfigHandler.getCurrentProjectConfig()
return `Allowed tools for ${cwd}:\n${projectConfig.allowedTools.join('\n')}`
}
/**
* Handler for the 'approved-tools remove' command
*/
export function handleRemoveApprovedTool(
tool: string,
projectConfigHandler: ProjectConfigHandler = defaultConfigHandler,
): { success: boolean; message: string } {
const projectConfig = projectConfigHandler.getCurrentProjectConfig()
const originalToolCount = projectConfig.allowedTools.length
const updatedAllowedTools = projectConfig.allowedTools.filter(t => t !== tool)
if (originalToolCount !== updatedAllowedTools.length) {
projectConfig.allowedTools = updatedAllowedTools
projectConfigHandler.saveCurrentProjectConfig(projectConfig)
return {
success: true,
message: `Removed ${tool} from the list of approved tools`,
}
} else {
return {
success: false,
message: `${tool} was not in the list of approved tools`,
}
}
}