/**
* Handler for delete endpoint tool
*/
import { McpToolResponse } from '../../../types.js';
import { EndpointDeleteResponse } from '../types.js';
import { getEndpointDependencies } from '../dependencies.js';
import { formatEndpointDeleteText } from '../utils.js';
import { getApiEndpoints } from '../../../lib/api/endpoints.js';
/**
* Handle delete endpoint request
*/
export async function handleDeleteEndpoint(args: Record<string, any>): Promise<McpToolResponse> {
try {
console.error('[DELETE-HANDLER] Starting delete endpoint with args:', args);
console.error('[DELETE-HANDLER] About to get dependencies...');
const { configManager, backendClient } = await getEndpointDependencies();
console.error('[DELETE-HANDLER] Dependencies loaded successfully');
const endpointId = args.endpoint_id as string;
// Validate endpoint ID
if (!endpointId || endpointId.trim() === '') {
throw new Error('Endpoint ID is required');
}
// Get the delete endpoint from API configuration
const apiEndpoints = getApiEndpoints();
const endpoint = apiEndpoints.getEndpoint('endpointDelete', { id: endpointId });
const fullUrl = `${backendClient.getBaseUrl()}${endpoint}`;
console.error(`[EndpointTools] Deleting endpoint at: ${fullUrl}`);
// Delete endpoint using BackendClient
const result = await backendClient.makeRequest<EndpointDeleteResponse>(endpoint, {
method: 'DELETE'
});
// Handle nested response structure
if (result.success && result.data) {
const responseData = result.data as any;
const deleteData = responseData.data || responseData;
const deleteText = formatEndpointDeleteText(
endpointId,
true,
deleteData?.message || result.message
);
return {
content: [
{
type: 'text',
text: deleteText
}
]
};
} else {
const deleteText = formatEndpointDeleteText(
endpointId,
false,
result.error || result.message || 'Unknown error'
);
return {
content: [
{
type: 'text',
text: deleteText
}
],
isError: true
};
}
} catch (error) {
console.error('[DELETE-HANDLER] Error caught:', error);
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
const deleteText = formatEndpointDeleteText(
args.endpoint_id || 'unknown',
false,
errorMessage
);
return {
content: [
{
type: 'text',
text: deleteText
}
],
isError: true
};
}
}