{"_id":"@aigentic/tiny-dancer","_rev":"3-5aacb966e8668df669de77441c89326f","name":"@aigentic/tiny-dancer","dist-tags":{"latest":"0.1.19"},"versions":{"0.1.18":{"name":"@aigentic/tiny-dancer","version":"0.1.18","keywords":["neural-router","ai-routing","agent-orchestration","fastgrnn","circuit-breaker","uncertainty-estimation","hot-reload","llm-routing","model-routing","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@aigentic/tiny-dancer@0.1.18","maintainers":[{"name":"aigentic","email":"engineering@aigentic.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"2e0773d00042243aa70d2f6dd9f3873020a78acd","tarball":"https://registry.npmjs.org/@aigentic/tiny-dancer/-/tiny-dancer-0.1.18.tgz","fileCount":4,"integrity":"sha512-fu4N0fiitdIl7/XA65OurR6BtBayH+F4lv8dSJasGTvbndzPyHnYJSzidtAupSLYRmzFo81bNK4TrgPexbtkow==","signatures":[{"sig":"MEUCIQDQ823eQUFJLwpPwv/WGGhgSD/jPSYLgjKXEcQAAQx3CAIgKf7DV1DNa8pJFJBWXE/jjlQ1p9zLaV78UKBTqU/iYPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13498},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"06426cbc6e70f09762e996a98517b0b1fd1c7c4e","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-tiny-dancer-node","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"aigentic","email":"engineering@aigentic.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/tiny-dancer"},"_npmVersion":"11.12.0","description":"Neural router for AI agent orchestration - FastGRNN-based intelligent routing with circuit breaker, uncertainty estimation, and hot-reload","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@aigentic/tiny-dancer-darwin-x64":"0.1.15","@aigentic/tiny-dancer-darwin-arm64":"0.1.15","@aigentic/tiny-dancer-linux-x64-gnu":"0.1.15","@aigentic/tiny-dancer-win32-x64-msvc":"0.1.15","@aigentic/tiny-dancer-linux-arm64-gnu":"0.1.17"},"_npmOperationalInternal":{"tmp":"tmp/tiny-dancer_0.1.18_1779091195828_0.8751398693752184","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@aigentic/tiny-dancer","version":"0.1.19","keywords":["neural-router","ai-routing","agent-orchestration","fastgrnn","circuit-breaker","uncertainty-estimation","hot-reload","llm-routing","model-routing","native","napi","rust","simd","fast","performance","ruv","ruvector"],"author":{"url":"https://ruv.io","name":"ruv.io Team","email":"info@ruv.io"},"license":"MIT","_id":"@aigentic/tiny-dancer@0.1.19","maintainers":[{"name":"aigentic","email":"engineering@aigentic.net"}],"homepage":"https://ruv.io","bugs":{"url":"https://github.com/ruvnet/ruvector/issues"},"dist":{"shasum":"3db66875617372712ab4691dc8e10506b43e3de4","tarball":"https://registry.npmjs.org/@aigentic/tiny-dancer/-/tiny-dancer-0.1.19.tgz","fileCount":4,"integrity":"sha512-lZCGm8Vt6bN7t9/Hp0pl6Dy1MNYXuufm5rWer317Y4WFbCV4OcWLNSbJL3jeH9pX0VH1ZnR2eTnioQXoBDJaNA==","signatures":[{"sig":"MEQCIBN8tW46ZoPy9Gtib2QwZH9wt4Z+DCz8+eriMvjJkocIAiBfsKj9GtnMydUm/xdiARnvk8tJsDhJj78SDClooTMlkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13498},"main":"index.js","types":"index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"06426cbc6e70f09762e996a98517b0b1fd1c7c4e","scripts":{"test":"node test.js","build:napi":"napi build --platform --release --cargo-cwd ../../../crates/ruvector-tiny-dancer-node","publish:platforms":"node scripts/publish-platforms.js"},"_npmUser":{"name":"aigentic","email":"engineering@aigentic.net"},"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/tiny-dancer"},"_npmVersion":"11.12.0","description":"Neural router for AI agent orchestration - FastGRNN-based intelligent routing with circuit breaker, uncertainty estimation, and hot-reload","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@napi-rs/cli":"^2.18.0"},"optionalDependencies":{"@aigentic/tiny-dancer-darwin-x64":"0.1.15","@aigentic/tiny-dancer-darwin-arm64":"0.1.15","@aigentic/tiny-dancer-linux-x64-gnu":"0.1.15","@aigentic/tiny-dancer-win32-x64-msvc":"0.1.15","@aigentic/tiny-dancer-linux-arm64-gnu":"0.1.17"},"_npmOperationalInternal":{"tmp":"tmp/tiny-dancer_0.1.19_1779093093428_0.5165315396557639","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-05-18T07:59:55.751Z","modified":"2026-09-13T15:30:34.884Z","0.1.18":"2026-05-18T07:59:55.952Z","0.1.19":"2026-05-18T08:31:33.549Z"},"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":["neural-router","ai-routing","agent-orchestration","fastgrnn","circuit-breaker","uncertainty-estimation","hot-reload","llm-routing","model-routing","native","napi","rust","simd","fast","performance","ruv","ruvector"],"repository":{"url":"git+https://github.com/ruvnet/ruvector.git","type":"git","directory":"npm/packages/tiny-dancer"},"description":"Neural router for AI agent orchestration - FastGRNN-based intelligent routing with circuit breaker, uncertainty estimation, and hot-reload","maintainers":[{"email":"engineering@aigentic.net","name":"aiggy"}],"readme":"# @ruvector/tiny-dancer\n\nNeural router for AI agent orchestration - FastGRNN-based intelligent routing with circuit breaker, uncertainty estimation, and hot-reload.\n\n## Features\n\n- **FastGRNN Neural Routing**: Efficient gated recurrent network for fast inference\n- **Uncertainty Estimation**: Know when the router is confident vs. uncertain\n- **Circuit Breaker**: Automatic fallback when routing fails repeatedly\n- **Hot-Reload**: Update models without restarting the application\n- **SIMD Optimized**: Native Rust performance with SIMD acceleration\n- **Multi-Platform**: Works on Linux, macOS, and Windows\n\n## Installation\n\n```bash\nnpm install @ruvector/tiny-dancer\n```\n\nThe package automatically installs the correct native binary for your platform.\n\n## Quick Start\n\n```typescript\nimport { Router } from '@ruvector/tiny-dancer';\n\n// Create router with configuration\nconst router = new Router({\n  modelPath: './models/fastgrnn.safetensors',\n  confidenceThreshold: 0.85,\n  maxUncertainty: 0.15,\n  enableCircuitBreaker: true,\n  circuitBreakerThreshold: 5\n});\n\n// Route a query to the best candidate\nconst response = await router.route({\n  queryEmbedding: new Float32Array([0.1, 0.2, 0.3, ...]),\n  candidates: [\n    { id: 'gpt-4', embedding: new Float32Array([...]), successRate: 0.95 },\n    { id: 'claude-3', embedding: new Float32Array([...]), successRate: 0.92 },\n    { id: 'gemini', embedding: new Float32Array([...]), successRate: 0.88 }\n  ]\n});\n\n// Get the best routing decision\nconst best = response.decisions[0];\nconsole.log(`Route to: ${best.candidateId}`);\nconsole.log(`Confidence: ${best.confidence}`);\nconsole.log(`Use lightweight: ${best.useLightweight}`);\nconsole.log(`Inference time: ${response.inferenceTimeUs}μs`);\n```\n\n## API Reference\n\n### `Router`\n\nMain class for neural routing.\n\n#### Constructor\n\n```typescript\nnew Router(config: RouterConfig)\n```\n\n**RouterConfig:**\n| Property | Type | Default | Description |\n|----------|------|---------|-------------|\n| `modelPath` | string | required | Path to FastGRNN model file |\n| `confidenceThreshold` | number | 0.85 | Minimum confidence for routing |\n| `maxUncertainty` | number | 0.15 | Maximum uncertainty allowed |\n| `enableCircuitBreaker` | boolean | true | Enable fault tolerance |\n| `circuitBreakerThreshold` | number | 5 | Failures before circuit opens |\n| `enableQuantization` | boolean | true | Enable memory-efficient quantization |\n| `databasePath` | string | undefined | Optional persistence path |\n\n#### Methods\n\n##### `route(request: RoutingRequest): Promise<RoutingResponse>`\n\nRoute a query to the best candidate.\n\n```typescript\nconst response = await router.route({\n  queryEmbedding: new Float32Array([...]),\n  candidates: [{ id: 'model-1', embedding: new Float32Array([...]) }],\n  metadata: '{\"context\": \"user-query\"}'\n});\n```\n\n##### `reloadModel(): Promise<void>`\n\nHot-reload the model from disk.\n\n```typescript\nawait router.reloadModel();\n```\n\n##### `circuitBreakerStatus(): boolean | null`\n\nCheck if the circuit breaker is closed (healthy) or open (unhealthy).\n\n```typescript\nconst isHealthy = router.circuitBreakerStatus();\n```\n\n### Types\n\n#### `Candidate`\n\n```typescript\ninterface Candidate {\n  id: string;                    // Unique identifier\n  embedding: Float32Array;       // Vector embedding\n  metadata?: string;             // JSON metadata\n  createdAt?: number;            // Timestamp\n  accessCount?: number;          // Usage count\n  successRate?: number;          // Historical success (0-1)\n}\n```\n\n#### `RoutingDecision`\n\n```typescript\ninterface RoutingDecision {\n  candidateId: string;           // Which candidate to use\n  confidence: number;            // Confidence score (0-1)\n  useLightweight: boolean;       // Use fast/lightweight model\n  uncertainty: number;           // Uncertainty estimate (0-1)\n}\n```\n\n#### `RoutingResponse`\n\n```typescript\ninterface RoutingResponse {\n  decisions: RoutingDecision[];  // Ranked decisions\n  inferenceTimeUs: number;       // Inference time (μs)\n  candidatesProcessed: number;   // Number processed\n  featureTimeUs: number;         // Feature engineering time (μs)\n}\n```\n\n## Use Cases\n\n### LLM Model Routing\n\nRoute queries to the most appropriate language model:\n\n```typescript\nconst router = new Router({ modelPath: './models/llm-router.safetensors' });\n\nconst response = await router.route({\n  queryEmbedding: await embedQuery(\"Explain quantum computing\"),\n  candidates: [\n    { id: 'gpt-4', embedding: gpt4Embedding, successRate: 0.95 },\n    { id: 'gpt-3.5-turbo', embedding: gpt35Embedding, successRate: 0.85 },\n    { id: 'claude-instant', embedding: claudeInstantEmbedding, successRate: 0.88 }\n  ]\n});\n\n// Use lightweight model for simple queries\nif (response.decisions[0].useLightweight) {\n  return callModel('gpt-3.5-turbo', query);\n} else {\n  return callModel(response.decisions[0].candidateId, query);\n}\n```\n\n### Agent Orchestration\n\nRoute tasks to specialized AI agents:\n\n```typescript\nconst agents = [\n  { id: 'code-agent', embedding: codeEmbedding, successRate: 0.92 },\n  { id: 'research-agent', embedding: researchEmbedding, successRate: 0.89 },\n  { id: 'creative-agent', embedding: creativeEmbedding, successRate: 0.91 }\n];\n\nconst best = (await router.route({ queryEmbedding, candidates: agents })).decisions[0];\nawait agents[best.candidateId].execute(task);\n```\n\n## Platform Support\n\n| Platform | Architecture | Package |\n|----------|--------------|---------|\n| Linux | x64 | `@ruvector/tiny-dancer-linux-x64-gnu` |\n| Linux | ARM64 | `@ruvector/tiny-dancer-linux-arm64-gnu` |\n| macOS | x64 | `@ruvector/tiny-dancer-darwin-x64` |\n| macOS | ARM64 | `@ruvector/tiny-dancer-darwin-arm64` |\n| Windows | x64 | `@ruvector/tiny-dancer-win32-x64-msvc` |\n\n## Performance\n\n- **Inference**: < 100μs per routing decision\n- **Throughput**: 10,000+ routes/second\n- **Memory**: ~10MB base + model size\n\n## Related Packages\n\n- [`@ruvector/core`](https://www.npmjs.com/package/@ruvector/core) - Vector database\n- [`@ruvector/gnn`](https://www.npmjs.com/package/@ruvector/gnn) - Graph Neural Networks\n- [`@ruvector/graph-node`](https://www.npmjs.com/package/@ruvector/graph-node) - Hypergraph database\n\n## License\n\nMIT\n","readmeFilename":"README.md"}