UNPKG

zignet

Version:

MCP server for Zig — AI-powered code analysis, validation, and documentation with fine-tuned LLM

1 lines 5.71 kB
{"version":3,"file":"analyze-CKCU4PaJ.cjs","names":["DEFAULT_ZIG_VERSION","zigAstCheck"],"sources":["../src/tools/analyze.ts"],"sourcesContent":["/**\n * analyze_zig tool implementation\n *\n * Analyzes Zig code using the official Zig compiler.\n * Supports multiple Zig versions for accurate validation.\n */\n\nimport { zigAstCheck } from \"../zig/executor.js\";\nimport { type ZigVersion } from \"../zig/manager.js\";\nimport { DEFAULT_ZIG_VERSION } from \"../config.js\";\n\nexport interface AnalyzeZigInput {\n code: string;\n zig_version?: ZigVersion;\n}\n\nexport interface AnalyzeZigResult {\n success: boolean;\n errors: Array<{\n message: string;\n line?: number;\n column?: number;\n severity: \"error\" | \"warning\";\n }>;\n warnings: Array<{\n message: string;\n line?: number;\n column?: number;\n }>;\n summary: string;\n zig_version: string;\n}\n\n/**\n * Analyze Zig code using official Zig compiler\n */\nexport async function analyzeZig(\n input: AnalyzeZigInput,\n): Promise<AnalyzeZigResult> {\n const { code, zig_version = DEFAULT_ZIG_VERSION } = input;\n\n // Validate input\n if (!code || code.trim().length === 0) {\n return {\n success: true,\n errors: [],\n warnings: [],\n summary: \"✅ Analysis Result: Empty code (valid)\",\n zig_version,\n };\n }\n\n try {\n // Run Zig ast-check (wrap sync call for consistent async API)\n const result = await Promise.resolve(zigAstCheck(code, zig_version));\n\n // Separate errors and warnings\n const errors = result.diagnostics\n .filter((d) => d.severity === \"error\")\n .map((d) => ({\n message: d.message,\n line: d.line,\n column: d.column,\n severity: \"error\" as const,\n }));\n\n const warnings = result.diagnostics\n .filter((d) => d.severity === \"warning\")\n .map((d) => ({\n message: d.message,\n line: d.line,\n column: d.column,\n }));\n\n // Generate summary\n const summary = result.success\n ? `✅ Analysis Result (Zig ${zig_version}):\n- Syntax: Valid\n- Type Check: PASS\n- Warnings: ${warnings.length}\n- Errors: 0`\n : `❌ Analysis Result (Zig ${zig_version}):\n- Syntax: ${errors.some((e) => e.message.includes(\"expected\")) ? \"Invalid\" : \"Valid\"}\n- Type Check: FAIL\n- Warnings: ${warnings.length}\n- Errors: ${errors.length}`;\n\n return {\n success: result.success,\n errors,\n warnings,\n summary,\n zig_version,\n };\n } catch (error) {\n // Unexpected error (e.g., Zig installation failed)\n return {\n success: false,\n errors: [\n {\n message: `Failed to run Zig compiler: ${error instanceof Error ? error.message : String(error)}`,\n severity: \"error\",\n },\n ],\n warnings: [],\n summary: `❌ Analysis failed: Could not execute Zig ${zig_version}`,\n zig_version,\n };\n }\n}\n\n/**\n * Format analysis result for MCP response\n */\nexport function formatAnalyzeResult(result: AnalyzeZigResult): string {\n let output = result.summary + \"\\n\\n\";\n\n if (result.errors.length > 0) {\n output += \"🔴 Errors:\\n\";\n result.errors.forEach((error, index) => {\n const location = error.line\n ? ` (line ${error.line}${error.column ? `, col ${error.column}` : \"\"})`\n : \"\";\n output += `${index + 1}. ${error.message}${location}\\n`;\n });\n output += \"\\n\";\n }\n\n if (result.warnings.length > 0) {\n output += \"⚠️ Warnings:\\n\";\n result.warnings.forEach((warning, index) => {\n const location = warning.line\n ? ` (line ${warning.line}${warning.column ? `, col ${warning.column}` : \"\"})`\n : \"\";\n output += `${index + 1}. ${warning.message}${location}\\n`;\n });\n }\n\n return output.trim();\n}\n"],"mappings":";;;;;;;AAoCA,eAAsB,WAClB,OACyB;CACzB,MAAM,EAAE,MAAM,cAAcA,uCAAwB;AAGpD,KAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,WAAW,EAChC,QAAO;EACH,SAAS;EACT,QAAQ,EAAE;EACV,UAAU,EAAE;EACZ,SAAS;EACT;EACH;AAGL,KAAI;EAEA,MAAM,SAAS,MAAM,QAAQ,QAAQC,6BAAY,MAAM,YAAY,CAAC;EAGpE,MAAM,SAAS,OAAO,YACjB,QAAQ,MAAM,EAAE,aAAa,QAAQ,CACrC,KAAK,OAAO;GACT,SAAS,EAAE;GACX,MAAM,EAAE;GACR,QAAQ,EAAE;GACV,UAAU;GACb,EAAE;EAEP,MAAM,WAAW,OAAO,YACnB,QAAQ,MAAM,EAAE,aAAa,UAAU,CACvC,KAAK,OAAO;GACT,SAAS,EAAE;GACX,MAAM,EAAE;GACR,QAAQ,EAAE;GACb,EAAE;EAGP,MAAM,UAAU,OAAO,UACjB,0BAA0B,YAAY;;;cAGtC,SAAS,OAAO;eAEhB,0BAA0B,YAAY;YACxC,OAAO,MAAM,MAAM,EAAE,QAAQ,SAAS,WAAW,CAAC,GAAG,YAAY,QAAQ;;cAEvE,SAAS,OAAO;YAClB,OAAO;AAEX,SAAO;GACH,SAAS,OAAO;GAChB;GACA;GACA;GACA;GACH;UACI,OAAO;AAEZ,SAAO;GACH,SAAS;GACT,QAAQ,CACJ;IACI,SAAS,+BAA+B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;IAC9F,UAAU;IACb,CACJ;GACD,UAAU,EAAE;GACZ,SAAS,4CAA4C;GACrD;GACH;;;;;;AAOT,SAAgB,oBAAoB,QAAkC;CAClE,IAAI,SAAS,OAAO,UAAU;AAE9B,KAAI,OAAO,OAAO,SAAS,GAAG;AAC1B,YAAU;AACV,SAAO,OAAO,SAAS,OAAO,UAAU;GACpC,MAAM,WAAW,MAAM,OACjB,UAAU,MAAM,OAAO,MAAM,SAAS,SAAS,MAAM,WAAW,GAAG,KACnE;AACN,aAAU,GAAG,QAAQ,EAAE,IAAI,MAAM,UAAU,SAAS;IACtD;AACF,YAAU;;AAGd,KAAI,OAAO,SAAS,SAAS,GAAG;AAC5B,YAAU;AACV,SAAO,SAAS,SAAS,SAAS,UAAU;GACxC,MAAM,WAAW,QAAQ,OACnB,UAAU,QAAQ,OAAO,QAAQ,SAAS,SAAS,QAAQ,WAAW,GAAG,KACzE;AACN,aAAU,GAAG,QAAQ,EAAE,IAAI,QAAQ,UAAU,SAAS;IACxD;;AAGN,QAAO,OAAO,MAAM"}