zignet
Version:
MCP server for Zig — AI-powered code analysis, validation, and documentation with fine-tuned LLM
1 lines • 6.25 kB
Source Map (JSON)
{"version":3,"file":"config-C2ufArDU.cjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["/**\n * ZigNet Configuration\n *\n * Centralized configuration management based on environment variables.\n * Controls Zig versions for documentation scraping, compilation, and defaults.\n * Also manages LLM model settings for ZigNet's intelligent features.\n */\n\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\n/**\n * Parse comma-separated Zig versions from environment variable\n */\nfunction parseZigVersions(envVar: string | undefined, fallback: string[]): string[] {\n if (!envVar) {\n return fallback;\n }\n\n return envVar\n .split(',')\n .map((v) => v.trim())\n .filter((v) => v.length > 0);\n}\n\n/**\n * Supported Zig versions (from ZIG_SUPPORTED env var)\n * Default: \"0.13.0,0.14.0,0.15.2\"\n *\n * Example:\n * export ZIG_SUPPORTED=\"0.13.0,0.14.0,0.15.2\"\n */\nexport const SUPPORTED_ZIG_VERSIONS = parseZigVersions(process.env.ZIG_SUPPORTED, [\n '0.13.0',\n '0.14.0',\n '0.15.2',\n]) as readonly string[];\n\nexport type ZigVersion = (typeof SUPPORTED_ZIG_VERSIONS)[number];\n\n/**\n * Default Zig version (from ZIG_DEFAULT env var)\n * Default: \"0.15.2\"\n *\n * Example:\n * export ZIG_DEFAULT=\"0.15.2\"\n */\nexport const DEFAULT_ZIG_VERSION = (process.env.ZIG_DEFAULT || '0.15.2') as ZigVersion;\n\n/**\n * Validate that default version is in supported versions\n */\nif (!SUPPORTED_ZIG_VERSIONS.includes(DEFAULT_ZIG_VERSION)) {\n throw new Error(\n `ZIG_DEFAULT (${DEFAULT_ZIG_VERSION}) is not in ZIG_SUPPORTED (${SUPPORTED_ZIG_VERSIONS.join(', ')})`\n );\n}\n\n/**\n * Get configuration summary for logging\n */\nexport function getConfigSummary(): string {\n return `\nZigNet Configuration:\n Zig Versions:\n ZIG_SUPPORTED: ${SUPPORTED_ZIG_VERSIONS.join(\", \")}\n ZIG_DEFAULT: ${DEFAULT_ZIG_VERSION}\n \n LLM Model:\n MODEL_PATH: ${MODEL_PATH}\n MODEL_AUTO_DOWNLOAD: ${MODEL_AUTO_DOWNLOAD}\n GPU_DEVICE: ${GPU_DEVICE || \"auto (all available GPUs)\"}\n GPU_LAYERS: ${GPU_LAYERS}\n CONTEXT_SIZE: ${CONTEXT_SIZE}\n TEMPERATURE: ${TEMPERATURE}\n TOP_P: ${TOP_P}\n`.trim();\n}\n\n/**\n * Validate a Zig version string\n */\nexport function isValidZigVersion(version: string): version is ZigVersion {\n return SUPPORTED_ZIG_VERSIONS.includes(version);\n}\n\n/**\n * Get Zig version or fallback to default\n */\nexport function getZigVersionOrDefault(version?: string): ZigVersion {\n if (!version) {\n return DEFAULT_ZIG_VERSION;\n }\n\n if (isValidZigVersion(version)) {\n return version;\n }\n\n console.warn(`Invalid Zig version \"${version}\", falling back to ${DEFAULT_ZIG_VERSION}`);\n return DEFAULT_ZIG_VERSION;\n}\n\n// ============================================================================\n// LLM Configuration\n// ============================================================================\n\n/**\n * Path to the GGUF model file\n * Default: ~/.zignet/models/zignet-qwen-7b-q4km.gguf\n *\n * Example:\n * export ZIGNET_MODEL_PATH=\"/path/to/custom/model.gguf\"\n */\nexport const MODEL_PATH =\n process.env.ZIGNET_MODEL_PATH ||\n join(homedir(), \".zignet\", \"models\", \"zignet-qwen-7b-q4km.gguf\");\n\n/**\n * Auto-download model from HuggingFace if not found\n * Default: true\n *\n * Example:\n * export ZIGNET_MODEL_AUTO_DOWNLOAD=\"false\"\n */\nexport const MODEL_AUTO_DOWNLOAD = process.env.ZIGNET_MODEL_AUTO_DOWNLOAD !== \"false\";\n\n/**\n * GPU device selection (CUDA_VISIBLE_DEVICES)\n * Specify which GPU(s) to use for CUDA inference\n * Default: undefined (use all available GPUs)\n *\n * Examples:\n * export ZIGNET_GPU_DEVICE=\"0\" # Use first GPU only (e.g., RTX 4090)\n * export ZIGNET_GPU_DEVICE=\"1\" # Use second GPU only\n * export ZIGNET_GPU_DEVICE=\"0,1\" # Use first and second GPUs\n *\n * Note: GPU indices are system-dependent. Use `nvidia-smi` to list available GPUs.\n * This sets CUDA_VISIBLE_DEVICES before loading the model.\n */\nexport const GPU_DEVICE = process.env.ZIGNET_GPU_DEVICE;\n\n/**\n * Number of layers to offload to GPU\n * Default: 35 (all layers for RTX 3090)\n * Set to 0 for CPU-only inference\n *\n * Example:\n * export ZIGNET_GPU_LAYERS=\"0\" # CPU only\n * export ZIGNET_GPU_LAYERS=\"20\" # Partial GPU\n * export ZIGNET_GPU_LAYERS=\"35\" # Full GPU (RTX 3090)\n */\nexport const GPU_LAYERS = parseInt(process.env.ZIGNET_GPU_LAYERS || \"35\", 10);\n\n/**\n * LLM context size (max tokens)\n * Default: 4096\n *\n * Example:\n * export ZIGNET_CONTEXT_SIZE=\"8192\"\n */\nexport const CONTEXT_SIZE = parseInt(process.env.ZIGNET_CONTEXT_SIZE || \"4096\", 10);\n\n/**\n * LLM temperature (creativity)\n * Default: 0.7\n *\n * Example:\n * export ZIGNET_TEMPERATURE=\"0.5\"\n */\nexport const TEMPERATURE = parseFloat(process.env.ZIGNET_TEMPERATURE || \"0.7\");\n\n/**\n * LLM top-p sampling\n * Default: 0.9\n *\n * Example:\n * export ZIGNET_TOP_P=\"0.8\"\n */\nexport const TOP_P = parseFloat(process.env.ZIGNET_TOP_P || \"0.9\");\n"],"mappings":";;;;;;;;;;AAcA,SAAS,iBAAiB,QAA4B,UAA8B;AAChF,KAAI,CAAC,OACD,QAAO;AAGX,QAAO,OACF,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,QAAQ,MAAM,EAAE,SAAS,EAAE;;;;;;;;;AAUpC,MAAa,yBAAyB,iBAAiB,QAAQ,IAAI,eAAe;CAC9E;CACA;CACA;CACH,CAAC;;;;;;;;AAWF,MAAa,sBAAuB,QAAQ,IAAI,eAAe;;;;AAK/D,IAAI,CAAC,uBAAuB,SAAS,oBAAoB,CACrD,OAAM,IAAI,MACN,gBAAgB,oBAAoB,6BAA6B,uBAAuB,KAAK,KAAK,CAAC,GACtG;;;;AAML,SAAgB,mBAA2B;AACvC,QAAO;;;qBAGU,uBAAuB,KAAK,KAAK,CAAC;mBACpC,oBAAoB;;;kBAGrB,WAAW;2BACF,oBAAoB;kBAC7B,cAAc,4BAA4B;kBAC1C,WAAW;oBACT,aAAa;mBACd,YAAY;aAClB,MAAM;EACjB,MAAM;;;;;AAMR,SAAgB,kBAAkB,SAAwC;AACtE,QAAO,uBAAuB,SAAS,QAAQ;;;;;AAMnD,SAAgB,uBAAuB,SAA8B;AACjE,KAAI,CAAC,QACD,QAAO;AAGX,KAAI,kBAAkB,QAAQ,CAC1B,QAAO;AAGX,SAAQ,KAAK,wBAAwB,QAAQ,qBAAqB,sBAAsB;AACxF,QAAO;;;;;;;;;AAcX,MAAa,aACT,QAAQ,IAAI,+DACE,EAAE,WAAW,UAAU,2BAA2B;;;;;;;;AASpE,MAAa,sBAAsB,QAAQ,IAAI,+BAA+B;;;;;;;;;;;;;;AAe9E,MAAa,aAAa,QAAQ,IAAI;;;;;;;;;;;AAYtC,MAAa,aAAa,SAAS,QAAQ,IAAI,qBAAqB,MAAM,GAAG;;;;;;;;AAS7E,MAAa,eAAe,SAAS,QAAQ,IAAI,uBAAuB,QAAQ,GAAG;;;;;;;;AASnF,MAAa,cAAc,WAAW,QAAQ,IAAI,sBAAsB,MAAM;;;;;;;;AAS9E,MAAa,QAAQ,WAAW,QAAQ,IAAI,gBAAgB,MAAM"}