atlas-mcp-server
Version:
ATLAS (Adaptive Task & Logic Automation System): An MCP server enabling LLM agents to manage projects, tasks, and knowledge via a Neo4j-backed, three-tier architecture. Facilitates complex workflow automation and project management through LLM Agents.
73 lines (72 loc) • 3.21 kB
JavaScript
import { createToolResponse } from "../../../types/mcp.js"; // Import the new response creator
/**
* Formatter for individual knowledge item removal responses
*/
export class SingleKnowledgeDeleteFormatter {
format(data) {
return (`Knowledge Item Removal\n\n` +
`Result: ${data.success ? "✅ Success" : "❌ Failed"}\n` +
`Knowledge ID: ${data.id}\n` +
`Message: ${data.message}\n`);
}
}
/**
* Formatter for batch knowledge item removal responses
*/
export class BulkKnowledgeDeleteFormatter {
format(data) {
const { success, message, deleted, errors } = data;
const summary = `Knowledge Cleanup Operation\n\n` +
`Status: ${success && errors.length === 0 ? "✅ Complete Success" : errors.length > 0 ? "⚠️ Partial Success / Errors" : "✅ Success (No items or no errors)"}\n` +
`Summary: ${message}\n` +
`Removed: ${deleted.length} knowledge item(s)\n` +
`Errors: ${errors.length} error(s)\n`;
let deletedSection = "";
if (deleted.length > 0) {
deletedSection = `\n--- Removed Knowledge Items (${deleted.length}) ---\n\n`;
deletedSection += deleted.map((id) => `- ${id}`).join("\n");
}
let errorsSection = "";
if (errors.length > 0) {
errorsSection = `\n--- Errors Encountered (${errors.length}) ---\n\n`;
errorsSection += errors
.map((errorItem, index) => {
return (`${index + 1}. Failed to remove ID: ${errorItem.knowledgeId}\n` +
` Error Code: ${errorItem.error.code}\n` +
` Message: ${errorItem.error.message}` +
(errorItem.error.details
? `\n Details: ${JSON.stringify(errorItem.error.details)}`
: ""));
})
.join("\n\n");
}
return `${summary}${deletedSection}${errorsSection}`.trim();
}
}
/**
* Create a human-readable formatted response for the atlas_knowledge_delete tool
*
* @param data The structured knowledge removal operation results (SingleKnowledgeDeleteResponse or BulkKnowledgeDeleteResponse)
* @param isError This parameter is effectively ignored as success is determined from data.success. Kept for signature consistency if needed.
* @returns Formatted MCP tool response with appropriate structure
*/
export function formatKnowledgeDeleteResponse(data, isError = false) {
const isBulkResponse = data.hasOwnProperty("deleted") &&
Array.isArray(data.deleted) &&
data.hasOwnProperty("errors");
let formattedText;
let finalIsError;
if (isBulkResponse) {
const formatter = new BulkKnowledgeDeleteFormatter();
const bulkData = data;
formattedText = formatter.format(bulkData);
finalIsError = !bulkData.success || bulkData.errors.length > 0;
}
else {
const formatter = new SingleKnowledgeDeleteFormatter();
const singleData = data;
formattedText = formatter.format(singleData);
finalIsError = !singleData.success;
}
return createToolResponse(formattedText, finalIsError);
}