release(tiny-dancer): 0.1.21 — expose trainRouter to JS (types + bump)

Adds trainRouter/DracoRowJs/TrainRouterOptions/TrainRouterResult to the
hand-written index.d.ts and bumps to 0.1.21 (8 optionalDependencies lock-stepped)
so the native train_router export ships typed across all environments.

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv 2026-06-15 10:57:58 -04:00
parent 1aa132ba41
commit c520576d40
2 changed files with 64 additions and 9 deletions

View file

@ -136,3 +136,58 @@ export function version(): string;
* Test function to verify bindings are working
*/
export function hello(): string;
/**
* One DRACO training row: a query embedding and the quality each model achieved
* on it. Matches the `{ embedding, scores }` shape `@metaharness/router` consumes.
*/
export interface DracoRowJs {
/** Query embedding (used directly as the model's input features). */
embedding: number[];
/** model id → quality achieved on this query (0..1). */
scores: Record<string, number>;
}
/** Options for {@link trainRouter}. */
export interface TrainRouterOptions {
/** Where to write the trained `.safetensors` model. */
outputPath: string;
/** Input feature dimension (must equal the embedding length). */
inputDim: number;
/** Hidden dimension (default 12). */
hiddenDim?: number;
/** Training epochs (default 40). */
epochs?: number;
/** Learning rate (default 0.05). */
learningRate?: number;
/** DRACO label tolerance: cheap model is "good enough" within this of the best (default 0.05). */
tolerance?: number;
}
/** Result of {@link trainRouter}. */
export interface TrainRouterResult {
epochsRun: number;
trainLoss: number;
trainAccuracy: number;
valAccuracy: number;
modelPath: string;
modelBytes: number;
}
/**
* Train a FastGRNN router from a DRACO dataset and write it to a `.safetensors`
* file consumable by `new Router({ modelPath })`.
*
* @example
* ```javascript
* const res = await trainRouter(rows, { haiku: 1, opus: 15 }, {
* outputPath: './router.safetensors', inputDim: 8, epochs: 40,
* });
* const router = new Router({ modelPath: res.modelPath });
* ```
*/
export function trainRouter(
rows: DracoRowJs[],
prices: Record<string, number>,
options: TrainRouterOptions
): Promise<TrainRouterResult>;

View file

@ -1,6 +1,6 @@
{
"name": "@ruvector/tiny-dancer",
"version": "0.1.20",
"version": "0.1.21",
"description": "Neural router for AI agent orchestration - FastGRNN-based intelligent routing with circuit breaker, uncertainty estimation, and hot-reload",
"main": "index.js",
"types": "index.d.ts",
@ -31,14 +31,14 @@
"@napi-rs/cli": "^2.18.0"
},
"optionalDependencies": {
"@ruvector/tiny-dancer-linux-x64-gnu": "0.1.20",
"@ruvector/tiny-dancer-linux-x64-musl": "0.1.20",
"@ruvector/tiny-dancer-linux-arm64-gnu": "0.1.20",
"@ruvector/tiny-dancer-linux-arm64-musl": "0.1.20",
"@ruvector/tiny-dancer-darwin-x64": "0.1.20",
"@ruvector/tiny-dancer-darwin-arm64": "0.1.20",
"@ruvector/tiny-dancer-win32-x64-msvc": "0.1.20",
"@ruvector/tiny-dancer-win32-arm64-msvc": "0.1.20"
"@ruvector/tiny-dancer-linux-x64-gnu": "0.1.21",
"@ruvector/tiny-dancer-linux-x64-musl": "0.1.21",
"@ruvector/tiny-dancer-linux-arm64-gnu": "0.1.21",
"@ruvector/tiny-dancer-linux-arm64-musl": "0.1.21",
"@ruvector/tiny-dancer-darwin-x64": "0.1.21",
"@ruvector/tiny-dancer-darwin-arm64": "0.1.21",
"@ruvector/tiny-dancer-win32-x64-msvc": "0.1.21",
"@ruvector/tiny-dancer-win32-arm64-msvc": "0.1.21"
},
"publishConfig": {
"access": "public"