{"_id":"@damirmanyapov/routeros-lsp","name":"@damirmanyapov/routeros-lsp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@damirmanyapov/routeros-lsp","version":"0.1.0","description":"Offline language server for MikroTik RouterOS .rsc files","type":"module","bin":{"routeros-lsp":"dist/server.js"},"keywords":["routeros","mikrotik","language-server","lsp","rsc"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/DamirManyapov/routeros-lsp.git"},"engines":{"node":">=18"},"scripts":{"build":"tsc","watch":"tsc --watch","test":"node --test dist/*.test.js","schema":"python3 schema/build-schema.py && python3 schema/compact.py"},"dependencies":{"vscode-languageserver":"^9.0.1","vscode-languageserver-textdocument":"^1.0.12"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.6.0"},"gitHead":"99429a5643b9c5f77ad51e08d9736b37e2277098","_id":"@damirmanyapov/routeros-lsp@0.1.0","bugs":{"url":"https://github.com/DamirManyapov/routeros-lsp/issues"},"homepage":"https://github.com/DamirManyapov/routeros-lsp#readme","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-w4wOjQOnHemoiAlakrwxZbzg6kmE6SSgGPT9bAQK2sO9m+3TbNbmCoPht1yR/fssReUxnzhYHGfoAvXQbHEuuQ==","shasum":"7f9f711313d9bc946075dc2c17e2085cf9c77707","tarball":"https://registry.npmjs.org/@damirmanyapov/routeros-lsp/-/routeros-lsp-0.1.0.tgz","fileCount":12,"unpackedSize":1096156,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAOjvXlEtmBW7uBry1LX2MBceIlD2R+dcZ+qq8cVZZdpAiAIgO3sgBHUx/pn2s8mT3P//jB8Ju9XEdmt7akH6pDrFQ=="}]},"_npmUser":{"name":"damirmanyapov","email":"2977374@gmail.com"},"directories":{},"maintainers":[{"name":"damirmanyapov","email":"2977374@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/routeros-lsp_0.1.0_1785504573315_0.5264793442779794"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T13:29:33.161Z","0.1.0":"2026-07-31T13:29:33.512Z","modified":"2026-07-31T13:29:33.698Z"},"maintainers":[{"name":"damirmanyapov","email":"2977374@gmail.com"}],"description":"Offline language server for MikroTik RouterOS .rsc files","homepage":"https://github.com/DamirManyapov/routeros-lsp#readme","keywords":["routeros","mikrotik","language-server","lsp","rsc"],"repository":{"type":"git","url":"git+https://github.com/DamirManyapov/routeros-lsp.git"},"bugs":{"url":"https://github.com/DamirManyapov/routeros-lsp/issues"},"license":"MIT","readme":"# routeros-lsp\n\nAn **offline** language server for MikroTik RouterOS `.rsc` files.\n\nCompletion and path validation come from a schema bundled with the server, so\nit works with no router, no network and no credentials — on a laptop, on a\nplane, against a config you were emailed.\n\n## Features\n\n- **Path completion** — `/interface/wire` → `wireguard`, `wireless`\n- **Parameter completion** — `/interface/wireguard/add ` → `mtu=`, `private-key=`, `vrf=`\n- **Unknown path diagnostics** — `/interface/wi` is flagged as an unknown segment\n- **Version hints** — completion notes when a parameter is newer than most releases (`vrf` · `7.21+`)\n- **Hover** — tells a menu from a command from a parameter\n\nWorks with both spellings: `/ip firewall filter` on one line with commands\nbelow (how exports are written) and `/ip/firewall/filter add ...` inline (how\nscripts are written).\n\n## The schema\n\nBuilt by merging every per-version schema published by\n[`tikoci/restraml`](https://github.com/tikoci/restraml) — 60 RouterOS releases\nfrom 7.9 to 7.24 — into one tree, with each node tagged by the versions it\nappears in. Merging rather than pinning means completion still works on a\nrelease the schema was never generated for, and on packages a given device\nhappens to lack.\n\nCoverage check: of 101 distinct section paths taken from three real-world\nrouter exports, the merged schema knows 100. A single version knows 91.\n\nRegenerate with:\n\n```bash\nnpm run schema     # requires python3; re-downloads and re-merges\n```\n\n### Known limits\n\nThe upstream schema carries no value types or ranges, so this server does not\nvalidate values. `mtu=78000` is accepted; a diagnostic saying \"expected 'auto'\nor integer 0..65536\" would need type data scraped separately from a live\ndevice.\n\nDiagnostics are deliberately conservative: a path is only flagged when its\nparent menu is known, so a package missing from the schema stays silent rather\nthan lighting up a working config.\n\n## Install\n\n```bash\nnpm install -g @damirmanyapov/routeros-lsp\n```\n\nThen point your editor at `routeros-lsp --stdio`. For Zed, install the\n[RouterOS extension](https://github.com/DamirManyapov/zed-routeros), which\nhandles this for you.\n\n### Neovim\n\n```lua\nvim.lsp.config.routeros = {\n  cmd = { 'routeros-lsp', '--stdio' },\n  filetypes = { 'routeros' },\n  root_markers = { '.git' },\n}\nvim.lsp.enable('routeros')\n```\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-934272de54f6b4b3b4ee8336435a0f10"}