zignet
Version:
MCP server for Zig — AI-powered code analysis, validation, and documentation with fine-tuned LLM
1 lines • 4.78 kB
Source Map (JSON)
{"version":3,"file":"compile-F5XWbjXn.cjs","names":["DEFAULT_ZIG_VERSION","zigFormat","lines: string[]"],"sources":["../src/tools/compile.ts"],"sourcesContent":["/**\n * compile_zig tool implementation\n *\n * Formats Zig code using the official Zig compiler.\n * Supports multiple Zig versions for consistent formatting.\n */\n\nimport { zigFormat } from \"../zig/executor.js\";\nimport { type ZigVersion } from \"../zig/manager.js\";\nimport { DEFAULT_ZIG_VERSION } from \"../config.js\";\n\nexport interface CompileInput {\n code: string;\n zig_version?: ZigVersion;\n}\n\nexport interface CompileResult {\n success: boolean;\n output?: string;\n errors: Array<{\n message: string;\n line?: number;\n column?: number;\n severity: \"error\" | \"warning\";\n }>;\n summary: string;\n zig_version: string;\n}\n\n/**\n * Format Zig code using official Zig formatter\n */\nexport async function compileZig(input: CompileInput): Promise<CompileResult> {\n const { code, zig_version = DEFAULT_ZIG_VERSION } = input;\n\n // Validate input\n if (!code || code.trim().length === 0) {\n return {\n success: false,\n errors: [\n { message: \"Input code cannot be empty\", severity: \"error\" },\n ],\n summary: \"❌ Empty input\",\n zig_version,\n };\n }\n\n try {\n // Run Zig fmt (wrapped in Promise for consistent async API)\n const result = await Promise.resolve(zigFormat(code, zig_version));\n\n if (result.success) {\n return {\n success: true,\n output: result.output,\n errors: [],\n summary: `✅ Formatted successfully (Zig ${zig_version})`,\n zig_version,\n };\n } else {\n // Format failed\n const errors = result.diagnostics.map((d) => ({\n message: d.message,\n line: d.line,\n column: d.column,\n severity: \"error\" as const,\n }));\n\n return {\n success: false,\n errors,\n summary: `❌ Format failed (Zig ${zig_version})`,\n zig_version,\n };\n }\n } catch (error) {\n return {\n success: false,\n errors: [\n {\n message: `Failed to run Zig formatter: ${error instanceof Error ? error.message : String(error)}`,\n severity: \"error\",\n },\n ],\n summary: `❌ Format failed: Could not execute Zig ${zig_version}`,\n zig_version,\n };\n }\n}\n\n/**\n * Format compile result for MCP response\n */\nexport function formatCompileResult(result: CompileResult): string {\n const lines: string[] = [];\n\n lines.push(result.summary);\n lines.push(\"\");\n\n if (result.success && result.output) {\n lines.push(\"**Formatted Zig Code:**\");\n lines.push(\"```zig\");\n lines.push(result.output);\n lines.push(\"```\");\n return lines.join(\"\\n\");\n }\n\n if (result.errors.length > 0) {\n lines.push(\"**Errors:**\");\n result.errors.forEach((error, index) => {\n const location =\n error.line && error.column\n ? ` (${error.line}:${error.column})`\n : \"\";\n lines.push(`${index + 1}. ${error.message}${location}`);\n });\n }\n\n return lines.join(\"\\n\");\n}\n"],"mappings":";;;;;;;AAgCA,eAAsB,WAAW,OAA6C;CAC1E,MAAM,EAAE,MAAM,cAAcA,uCAAwB;AAGpD,KAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,WAAW,EAChC,QAAO;EACH,SAAS;EACT,QAAQ,CACJ;GAAE,SAAS;GAA8B,UAAU;GAAS,CAC/D;EACD,SAAS;EACT;EACH;AAGL,KAAI;EAEA,MAAM,SAAS,MAAM,QAAQ,QAAQC,2BAAU,MAAM,YAAY,CAAC;AAElE,MAAI,OAAO,QACP,QAAO;GACH,SAAS;GACT,QAAQ,OAAO;GACf,QAAQ,EAAE;GACV,SAAS,iCAAiC,YAAY;GACtD;GACH;MAUD,QAAO;GACH,SAAS;GACT,QATW,OAAO,YAAY,KAAK,OAAO;IAC1C,SAAS,EAAE;IACX,MAAM,EAAE;IACR,QAAQ,EAAE;IACV,UAAU;IACb,EAAE;GAKC,SAAS,wBAAwB,YAAY;GAC7C;GACH;UAEA,OAAO;AACZ,SAAO;GACH,SAAS;GACT,QAAQ,CACJ;IACI,SAAS,gCAAgC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;IAC/F,UAAU;IACb,CACJ;GACD,SAAS,0CAA0C;GACnD;GACH;;;;;;AAOT,SAAgB,oBAAoB,QAA+B;CAC/D,MAAMC,QAAkB,EAAE;AAE1B,OAAM,KAAK,OAAO,QAAQ;AAC1B,OAAM,KAAK,GAAG;AAEd,KAAI,OAAO,WAAW,OAAO,QAAQ;AACjC,QAAM,KAAK,0BAA0B;AACrC,QAAM,KAAK,SAAS;AACpB,QAAM,KAAK,OAAO,OAAO;AACzB,QAAM,KAAK,MAAM;AACjB,SAAO,MAAM,KAAK,KAAK;;AAG3B,KAAI,OAAO,OAAO,SAAS,GAAG;AAC1B,QAAM,KAAK,cAAc;AACzB,SAAO,OAAO,SAAS,OAAO,UAAU;GACpC,MAAM,WACF,MAAM,QAAQ,MAAM,SACd,KAAK,MAAM,KAAK,GAAG,MAAM,OAAO,KAChC;AACV,SAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,MAAM,UAAU,WAAW;IACzD;;AAGN,QAAO,MAAM,KAAK,KAAK"}