| 855 | * Validates that all required parameters are provided |
| 856 | */ |
| 857 | export function validateToolParameters( |
| 858 | toolConfig: ToolConfig, |
| 859 | finalParams: Record<string, unknown> |
| 860 | ): ValidationResult { |
| 861 | const requiredParams = Object.entries(toolConfig.params) |
| 862 | .filter(([_, param]) => param.required) |
| 863 | .map(([paramId]) => paramId) |
| 864 | |
| 865 | const missingParams = requiredParams.filter( |
| 866 | (paramId) => |
| 867 | finalParams[paramId] === undefined || |
| 868 | finalParams[paramId] === null || |
| 869 | finalParams[paramId] === '' |
| 870 | ) |
| 871 | |
| 872 | return { |
| 873 | valid: missingParams.length === 0, |
| 874 | missingParams, |
| 875 | } |
| 876 | } |
| 877 | |
| 878 | /** |
| 879 | * Helper to check if a parameter should be treated as a password field |