UNPKG

touchdesigner-mcp-server

Version:
69 lines (68 loc) 2.45 kB
import { DEFAULT_PRESENTER_FORMAT, presentStructuredData, } from "./presenter.js"; import { finalizeFormattedText, limitArray, mergeFormatterOptions, } from "./responseFormatter.js"; export function formatNodeErrors(data, options) { const opts = mergeFormatterOptions(options); if (!data) { return "No node error information is available."; } if (opts.detailLevel === "detailed") { return formatDetailed(data, opts.responseFormat); } const errors = data.errors ?? []; if (errors.length === 0 || !data.hasErrors || data.errorCount === 0) { const noErrorText = `Node ${data.nodePath} has no reported errors.`; return finalizeFormattedText(noErrorText, opts, { context: { errorCount: 0, nodeName: data.nodeName, nodePath: data.nodePath, }, structured: data, template: "nodeErrorSummary", }); } const { items, truncated } = limitArray(errors, opts.limit); const header = `Node: ${data.nodePath}\nOperator: ${data.opType} (${data.nodeName})\n${data.errorCount} error(s) found\n`; const body = opts.detailLevel === "minimal" ? formatMinimal(items) : formatSummary(items); let text = `${header}\n${body}`; if (truncated) { text += `\n💡 ${data.errorCount - items.length} more errors omitted.`; } return finalizeFormattedText(text, opts, { context: { displayed: items.length, errorCount: data.errorCount, nodeName: data.nodeName, nodePath: data.nodePath, opType: data.opType, }, structured: data, template: "nodeErrorSummary", }); } function formatMinimal(errors) { return errors .map((entry) => `- ${entry.nodePath}: ${entry.message}`) .join("\n"); } function formatSummary(errors) { return errors .map((entry) => `- ${entry.nodePath} (${entry.opType}): ${entry.message}`) .join("\n"); } function formatDetailed(data, format) { const title = `Node error report for ${data.nodePath}`; const payloadFormat = format ?? DEFAULT_PRESENTER_FORMAT; return presentStructuredData({ context: { payloadFormat, title, }, detailLevel: "detailed", structured: data, template: "detailedPayload", text: title, }, payloadFormat); }