{"_id":"@ruvector/router","_rev":"8-b927ef9a5716b320d4c19f839fa8241d","name":"@ruvector/router","dist-tags":{"latest":"0.1.31"},"versions":{"0.1.15":{"name":"@ruvector/router","version":"0.1.15","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@ruvector/router@0.1.15","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"3b853e1398aed69971bed83dada5a2bb90443831","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.15.tgz","fileCount":4,"integrity":"sha512-erQUOeb5DoedstPITbIjFtlZYD97bMyrBxI2T2jKYiYfwIaGHBEzt7aZUoNvy/JOoofo3hV+rqeKn1d6+J1T7Q==","signatures":[{"sig":"MEQCIFlmMt3R3W1gs8me7YG1tCM/xfw5x87Gi6cPaKNSM+8kAiBxq52Pl76R1qagesNoURMtpzZFWf2j3W8FVqdhlebaMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12595},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3a8c14eefca9b3cc92e0094bf2be53bfc437d71d","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"9.8.1","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.15","@ruvector/router-darwin-arm64":"0.1.15","@ruvector/router-linux-x64-gnu":"0.1.15","@ruvector/router-win32-x64-msvc":"0.1.15","@ruvector/router-linux-arm64-gnu":"0.1.15"},"_npmOperationalInternal":{"tmp":"tmp/router_0.1.15_1764256803800_0.8624840380308227","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@ruvector/router","version":"0.1.25","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@ruvector/router@0.1.25","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"32b6a0f74d9c09360738bef245dc5eb778924bba","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.25.tgz","fileCount":4,"integrity":"sha512-5UxL4+8WgfjgcRnGo4wBABdfJJEXIA6CAQAcn3N50951gYlTwdAINSqTLlu099QbAdvtoFhN6KCWrF30uKIq7Q==","signatures":[{"sig":"MEUCIA7FZ7w0LfzdVG1gcR58vM3U2+vdpgOLCLYhxQKj4MDhAiEAg2QtYh2G8Tqd6emeLvaU5YWrbbsl/194yOgjK6GpF0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12595},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"409acac87df4d8c834757b3dcad3bbb159644801","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"9.8.1","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.15","@ruvector/router-darwin-arm64":"0.1.25","@ruvector/router-linux-x64-gnu":"0.1.25","@ruvector/router-win32-x64-msvc":"0.1.25","@ruvector/router-linux-arm64-gnu":"0.1.25"},"_npmOperationalInternal":{"tmp":"tmp/router_0.1.25_1765245149269_0.9317991388669735","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@ruvector/router","version":"0.1.26","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@ruvector/router@0.1.26","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"f13d1589fdebeb6b11909f39035fd9a500a73541","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.26.tgz","fileCount":5,"integrity":"sha512-H72QH4/WS8CDXrO76u8aRzGd+peqF15XVC6Wt8p+c1etqAyzqe1qyLA4DbEtP25TcB+C7IhL3VsDz+TLRPSb3g==","signatures":[{"sig":"MEYCIQCbUZkQZb/Tc7YX7j+hZl0il1qDij1KzV5ydrBkJjKznQIhAMAVUJ9GCJ4Qg+bKj85x7yR3PqzTQNLvG3nBPJ7stm0r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23385},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"43427b661d9524405bd4e5af9815b9b6e33ea9de","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"9.8.1","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.15","@ruvector/router-darwin-arm64":"0.1.25","@ruvector/router-linux-x64-gnu":"0.1.25","@ruvector/router-win32-x64-msvc":"0.1.25","@ruvector/router-linux-arm64-gnu":"0.1.25"},"_npmOperationalInternal":{"tmp":"tmp/router_0.1.26_1767385467300_0.06182980187969145","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"@ruvector/router","version":"0.1.27","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@ruvector/router@0.1.27","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"2313f31fd8615231baea91e10bcf8679c9aa0017","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.27.tgz","fileCount":4,"integrity":"sha512-dovfKIFMr9GnF219Xd/hsestjx7uNEfFZRphZNHAKzX5JezYj4G/GTkzGxHTX5nD572mSs954QBQALvzuTmb9Q==","signatures":[{"sig":"MEUCIQCL1Anko82u+BtL5V6QtS6ki+zul46qvBTdqDhvdE6U5AIgCjs5XQtJCBdfxB+taFj8vMItdo/NaigsNfsJtSE93ow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25271},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ae5eccdf792b671a7bf7af09e07806a0829e6b2d","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"10.8.2","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"_nodeVersion":"18.20.8","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.26","@ruvector/router-darwin-arm64":"0.1.26","@ruvector/router-linux-x64-gnu":"0.1.26","@ruvector/router-win32-x64-msvc":"0.1.26","@ruvector/router-linux-arm64-gnu":"0.1.26"},"_npmOperationalInternal":{"tmp":"tmp/router_0.1.27_1769277248593_0.4336699965991857","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"@ruvector/router","version":"0.1.28","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@ruvector/router@0.1.28","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"ccd60e1dbbddf9c7ebdd73ce9445a36ee811752c","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.28.tgz","fileCount":4,"integrity":"sha512-bXqZF3wMypjnCm989fkty2H7LnmDw4sAJ0ClXzDjBwjV2wg7oZPdk8NiioLZh72CEZBsTll3NkLzZRyi6CiyBQ==","signatures":[{"sig":"MEUCIAIZAbNMcup5WUoR8q9nIxwgdH92LDS/4yR9N9p+7DrdAiEAkdS3q7HpIzXEz+LhJdgH7ksxjnRzprwA7p/x1vna0DE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25271},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"ae5eccdf792b671a7bf7af09e07806a0829e6b2d","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"11.6.2","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"_nodeVersion":"25.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.27","@ruvector/router-darwin-arm64":"0.1.27","@ruvector/router-linux-x64-gnu":"0.1.27","@ruvector/router-win32-x64-msvc":"0.1.27","@ruvector/router-linux-arm64-gnu":"0.1.27"},"_npmOperationalInternal":{"tmp":"tmp/router_0.1.28_1769278952721_0.012360434532287634","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"@ruvector/router","version":"0.1.29","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@ruvector/router@0.1.29","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"88143450f0a40c6ba200dd3453add87205a03787","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.29.tgz","fileCount":4,"integrity":"sha512-ORztLS9j0Gmi+BtaT6HNcypH7QzPA6nbilVbqT0nlhfc6QCdZlWHbgxgr9etfJCknBDr2pTU5YZkELtRQLVTgQ==","signatures":[{"sig":"MEYCIQDEvFzD8G897AYb7j52fCcba+ui7GbPtAkX7X22VntyAAIhAIuzh421Ql5y+KmyKe37JxKPoB28sgOsRlypcMURALKF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25271},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3e0b5723dae57aa24540b76a4cb3c75d111e9f89","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"9.8.1","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.27","@ruvector/router-darwin-arm64":"0.1.27","@ruvector/router-linux-x64-gnu":"0.1.27","@ruvector/router-win32-x64-msvc":"0.1.27","@ruvector/router-linux-arm64-gnu":"0.1.27"},"_npmOperationalInternal":{"tmp":"tmp/router_0.1.29_1774451797068_0.7676820081654852","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"@ruvector/router","version":"0.1.30","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@ruvector/router@0.1.30","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"dbe63adc0419b75b3492b7b1f11df77a9660baf9","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.30.tgz","fileCount":4,"integrity":"sha512-gtZAdxp0UYrOJd3Kz+kNtFNfG53aW2xkZ7u3XNT+JdViTEVnpYMEdDfpc2ByQBy+kf600Cp5xVMQR3qVXajWtw==","signatures":[{"sig":"MEUCIQCg4fuyeOWNOSesvN1/RrUqLhDF5I1KrMmiO33IbNeVcwIgUCmPSuS+tpy9UQkaAk4Ev/498xRqKlkN9Xzow5QnJXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26308},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"84f202fa78d3aee20596f51920715530bc9e2eff","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"10.9.4","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.30","@ruvector/router-darwin-arm64":"0.1.30","@ruvector/router-linux-x64-gnu":"0.1.30","@ruvector/router-win32-x64-msvc":"0.1.30","@ruvector/router-linux-arm64-gnu":"0.1.30"},"_npmOperationalInternal":{"tmp":"tmp/router_0.1.30_1775508953507_0.1431680693578825","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"_id":"@ruvector/router@0.1.31","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"bd12d5f12d5d2f3e3972f8c34624c61b6ac0b272","tarball":"https://registry.npmjs.org/@ruvector/router/-/router-0.1.31.tgz","fileCount":4,"integrity":"sha512-lA4HOH6fB9+X2rHc6SQTfhEQAypIaaoZsQivDtOudWUyYDz1XALDsr9OuMf1XxDW942YcNlpigJ65rN69TB20g==","signatures":[{"sig":"MEYCIQDa9jEj28bP6OQLR01BTTniGpxKSBBn7LL2v8Hu+DEVmgIhAOEsA3nQqR2CmdbusgC57D+f7FysowkNZ+oTquYRsmN/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDdljlrCVNKklZIlxbzdoh4/FIYVqyXgQQuGphmhiVKuAiEAgAC35km1nH15f+cfqDRFPQ0O/UrfdndDsS7SG2V/6WM="}],"unpackedSize":26308},"main":"index.js","name":"@ruvector/router","types":"index.d.ts","author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"engines":{"node":">=18.0.0"},"license":"MIT","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-router-ffi","publish:platforms":"node scripts/publish-platforms.js"},"version":"0.1.31","_npmUser":{"name":"ruvnet","email":"ruv@ruv.net"},"homepage":"https://ruv.io","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"_npmVersion":"10.9.8","description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","directories":{},"maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@ruvector/router-darwin-x64":"0.1.31","@ruvector/router-darwin-arm64":"0.1.31","@ruvector/router-linux-x64-gnu":"0.1.31","@ruvector/router-win32-x64-msvc":"0.1.31","@ruvector/router-linux-arm64-gnu":"0.1.31"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/router_0.1.31_1790000527840_0.4906626220139281"}}},"time":{"created":"2025-11-27T15:20:03.704Z","modified":"2026-09-21T14:22:08.126Z","0.1.15":"2025-11-27T15:20:03.979Z","0.1.25":"2025-12-09T01:52:29.402Z","0.1.26":"2026-01-02T20:24:27.445Z","0.1.27":"2026-01-24T17:54:08.757Z","0.1.28":"2026-01-24T18:22:32.857Z","0.1.29":"2026-03-25T15:16:37.207Z","0.1.30":"2026-04-06T20:55:53.660Z","0.1.31":"2026-09-21T14:22:07.943Z"},"bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","homepage":"https://ruv.io","keywords":["semantic-router","intent-matching","ai-routing","agent-routing","vector-search","hnsw","similarity-search","embeddings","llm","native","napi","rust","simd","fast","performance","ruv","ruvector"],"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/router"},"description":"Semantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration","maintainers":[{"name":"ruvnet","email":"ruv@ruv.net"}],"readme":"# @ruvector/router\n\nSemantic router for AI agents - vector-based intent matching with HNSW indexing and SIMD acceleration.\n\n## Features\n\n- **Semantic Intent Matching**: Route queries to intents based on meaning, not keywords\n- **HNSW Indexing**: Fast approximate nearest neighbor search\n- **SIMD Optimized**: Native Rust performance with vectorized operations\n- **Quantization**: Memory-efficient storage for large intent sets\n- **Multi-Platform**: Works on Linux, macOS, and Windows\n\n## Installation\n\n```bash\nnpm install @ruvector/router\n```\n\nThe package automatically installs the correct native binary for your platform.\n\n## Quick Start\n\n```typescript\nimport { SemanticRouter } from '@ruvector/router';\n\n// Create router\nconst router = new SemanticRouter({ dimension: 384 });\n\n// Add intents with example utterances\nrouter.addIntent({\n  name: 'weather',\n  utterances: [\n    'What is the weather today?',\n    'Will it rain tomorrow?',\n    'How hot will it be?'\n  ],\n  metadata: { handler: 'weather_agent' }\n});\n\nrouter.addIntent({\n  name: 'greeting',\n  utterances: [\n    'Hello',\n    'Hi there',\n    'Good morning',\n    'Hey'\n  ],\n  metadata: { handler: 'greeting_agent' }\n});\n\nrouter.addIntent({\n  name: 'help',\n  utterances: [\n    'I need help',\n    'Can you assist me?',\n    'What can you do?'\n  ],\n  metadata: { handler: 'help_agent' }\n});\n\n// Route a query\nconst results = await router.route('What will the weather be like this weekend?');\n\nconsole.log(results[0].intent);   // 'weather'\nconsole.log(results[0].score);    // 0.92\nconsole.log(results[0].metadata); // { handler: 'weather_agent' }\n```\n\n## API Reference\n\n### `SemanticRouter`\n\nMain class for semantic routing.\n\n#### Constructor\n\n```typescript\nnew SemanticRouter(config: RouterConfig)\n```\n\n**RouterConfig:**\n| Property | Type | Default | Description |\n|----------|------|---------|-------------|\n| `dimension` | number | required | Embedding dimension size |\n| `metric` | string | 'cosine' | Distance metric: 'cosine', 'euclidean', 'dot' |\n| `m` | number | 16 | HNSW M parameter |\n| `efConstruction` | number | 200 | HNSW ef_construction |\n| `quantization` | boolean | false | Enable memory-efficient quantization |\n\n#### Methods\n\n##### `addIntent(intent: Intent): void`\n\nAdd an intent to the router.\n\n```typescript\nrouter.addIntent({\n  name: 'booking',\n  utterances: ['Book a flight', 'Reserve a hotel'],\n  metadata: { department: 'travel' }\n});\n```\n\n##### `route(query: string | Float32Array, k?: number): Promise<RouteResult[]>`\n\nRoute a query to matching intents.\n\n```typescript\nconst results = await router.route('I want to book a vacation');\n// [{ intent: 'booking', score: 0.89, metadata: {...} }]\n```\n\n##### `routeWithEmbedding(embedding: Float32Array, k?: number): RouteResult[]`\n\nRoute with a pre-computed embedding (synchronous).\n\n```typescript\nconst embedding = await getEmbedding('query text');\nconst results = router.routeWithEmbedding(embedding, 3);\n```\n\n##### `removeIntent(name: string): boolean`\n\nRemove an intent from the router.\n\n##### `getIntents(): string[]`\n\nGet all registered intent names.\n\n##### `clear(): void`\n\nRemove all intents.\n\n##### `save(path: string): Promise<void>`\n\nPersist router state to disk.\n\n##### `load(path: string): Promise<void>`\n\nLoad router state from disk.\n\n### Types\n\n#### `Intent`\n\n```typescript\ninterface Intent {\n  name: string;                        // Unique intent identifier\n  utterances: string[];                // Example utterances\n  embedding?: Float32Array | number[]; // Pre-computed embedding\n  metadata?: Record<string, unknown>;  // Custom metadata\n}\n```\n\n#### `RouteResult`\n\n```typescript\ninterface RouteResult {\n  intent: string;                      // Matched intent name\n  score: number;                       // Similarity score (0-1)\n  metadata?: Record<string, unknown>;  // Intent metadata\n}\n```\n\n## Use Cases\n\n### Chatbot Intent Detection\n\n```typescript\nconst router = new SemanticRouter({ dimension: 384 });\n\n// Define intents\nconst intents = [\n  { name: 'faq', utterances: ['What are your hours?', 'How do I contact support?'] },\n  { name: 'order', utterances: ['Track my order', 'Where is my package?'] },\n  { name: 'return', utterances: ['I want to return this', 'How do I get a refund?'] }\n];\n\nintents.forEach(i => router.addIntent(i));\n\n// Handle user message\nasync function handleMessage(text: string) {\n  const [result] = await router.route(text);\n\n  switch(result.intent) {\n    case 'faq': return handleFAQ(text);\n    case 'order': return handleOrder(text);\n    case 'return': return handleReturn(text);\n    default: return handleUnknown(text);\n  }\n}\n```\n\n### Multi-Agent Orchestration\n\n```typescript\nconst agents = {\n  'code': new CodeAgent(),\n  'research': new ResearchAgent(),\n  'creative': new CreativeAgent()\n};\n\nconst router = new SemanticRouter({ dimension: 768 });\n\nrouter.addIntent({\n  name: 'code',\n  utterances: ['Write code', 'Debug this', 'Implement a function'],\n  metadata: { agent: 'code' }\n});\n\nrouter.addIntent({\n  name: 'research',\n  utterances: ['Find information', 'Search for', 'Look up'],\n  metadata: { agent: 'research' }\n});\n\n// Route task to best agent\nasync function routeTask(task: string) {\n  const [result] = await router.route(task);\n  const agent = agents[result.metadata.agent];\n  return agent.execute(task);\n}\n```\n\n## Platform Support\n\n| Platform | Architecture | Package |\n|----------|--------------|---------|\n| Linux | x64 | `@ruvector/router-linux-x64-gnu` |\n| Linux | ARM64 | `@ruvector/router-linux-arm64-gnu` |\n| macOS | x64 | `@ruvector/router-darwin-x64` |\n| macOS | ARM64 | `@ruvector/router-darwin-arm64` |\n| Windows | x64 | `@ruvector/router-win32-x64-msvc` |\n\n## Performance\n\n- **Routing**: < 1ms per query with HNSW\n- **Throughput**: 100,000+ routes/second\n- **Memory**: ~1KB per intent + embeddings\n\n## Related Packages\n\n- [`@ruvector/core`](https://www.npmjs.com/package/@ruvector/core) - Vector database\n- [`@ruvector/tiny-dancer`](https://www.npmjs.com/package/@ruvector/tiny-dancer) - Neural routing\n- [`@ruvector/gnn`](https://www.npmjs.com/package/@ruvector/gnn) - Graph Neural Networks\n\n## License\n\nMIT\n","readmeFilename":"README.md"}