Skip to content

Commit c520576

Browse files
committed
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>
1 parent 1aa132b commit c520576

2 files changed

Lines changed: 64 additions & 9 deletions

File tree

npm/packages/tiny-dancer/index.d.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,58 @@ export function version(): string;
136136
* Test function to verify bindings are working
137137
*/
138138
export function hello(): string;
139+
140+
/**
141+
* One DRACO training row: a query embedding and the quality each model achieved
142+
* on it. Matches the `{ embedding, scores }` shape `@metaharness/router` consumes.
143+
*/
144+
export interface DracoRowJs {
145+
/** Query embedding (used directly as the model's input features). */
146+
embedding: number[];
147+
/** model id → quality achieved on this query (0..1). */
148+
scores: Record<string, number>;
149+
}
150+
151+
/** Options for {@link trainRouter}. */
152+
export interface TrainRouterOptions {
153+
/** Where to write the trained `.safetensors` model. */
154+
outputPath: string;
155+
/** Input feature dimension (must equal the embedding length). */
156+
inputDim: number;
157+
/** Hidden dimension (default 12). */
158+
hiddenDim?: number;
159+
/** Training epochs (default 40). */
160+
epochs?: number;
161+
/** Learning rate (default 0.05). */
162+
learningRate?: number;
163+
/** DRACO label tolerance: cheap model is "good enough" within this of the best (default 0.05). */
164+
tolerance?: number;
165+
}
166+
167+
/** Result of {@link trainRouter}. */
168+
export interface TrainRouterResult {
169+
epochsRun: number;
170+
trainLoss: number;
171+
trainAccuracy: number;
172+
valAccuracy: number;
173+
modelPath: string;
174+
modelBytes: number;
175+
}
176+
177+
/**
178+
* Train a FastGRNN router from a DRACO dataset and write it to a `.safetensors`
179+
* file consumable by `new Router({ modelPath })`.
180+
*
181+
* @example
182+
* ```javascript
183+
* const res = await trainRouter(rows, { haiku: 1, opus: 15 }, {
184+
* outputPath: './router.safetensors', inputDim: 8, epochs: 40,
185+
* });
186+
* const router = new Router({ modelPath: res.modelPath });
187+
* ```
188+
*/
189+
export function trainRouter(
190+
rows: DracoRowJs[],
191+
prices: Record<string, number>,
192+
options: TrainRouterOptions
193+
): Promise<TrainRouterResult>;

npm/packages/tiny-dancer/package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ruvector/tiny-dancer",
3-
"version": "0.1.20",
3+
"version": "0.1.21",
44
"description": "Neural router for AI agent orchestration - FastGRNN-based intelligent routing with circuit breaker, uncertainty estimation, and hot-reload",
55
"main": "index.js",
66
"types": "index.d.ts",
@@ -31,14 +31,14 @@
3131
"@napi-rs/cli": "^2.18.0"
3232
},
3333
"optionalDependencies": {
34-
"@ruvector/tiny-dancer-linux-x64-gnu": "0.1.20",
35-
"@ruvector/tiny-dancer-linux-x64-musl": "0.1.20",
36-
"@ruvector/tiny-dancer-linux-arm64-gnu": "0.1.20",
37-
"@ruvector/tiny-dancer-linux-arm64-musl": "0.1.20",
38-
"@ruvector/tiny-dancer-darwin-x64": "0.1.20",
39-
"@ruvector/tiny-dancer-darwin-arm64": "0.1.20",
40-
"@ruvector/tiny-dancer-win32-x64-msvc": "0.1.20",
41-
"@ruvector/tiny-dancer-win32-arm64-msvc": "0.1.20"
34+
"@ruvector/tiny-dancer-linux-x64-gnu": "0.1.21",
35+
"@ruvector/tiny-dancer-linux-x64-musl": "0.1.21",
36+
"@ruvector/tiny-dancer-linux-arm64-gnu": "0.1.21",
37+
"@ruvector/tiny-dancer-linux-arm64-musl": "0.1.21",
38+
"@ruvector/tiny-dancer-darwin-x64": "0.1.21",
39+
"@ruvector/tiny-dancer-darwin-arm64": "0.1.21",
40+
"@ruvector/tiny-dancer-win32-x64-msvc": "0.1.21",
41+
"@ruvector/tiny-dancer-win32-arm64-msvc": "0.1.21"
4242
},
4343
"publishConfig": {
4444
"access": "public"

0 commit comments

Comments
 (0)