pi-smart-router 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/config/benchmark-profiles.json +145 -0
- package/config/models.yaml.example +5 -0
- package/config/routing-calibration.json.example +14 -2
- package/dist/config/pi-model-mapper.d.ts +12 -2
- package/dist/config/pi-model-mapper.d.ts.map +1 -1
- package/dist/config/pi-model-mapper.js +91 -6
- package/dist/config/pi-model-mapper.js.map +1 -1
- package/dist/domain/matching/hydra-input.d.ts +6 -5
- package/dist/domain/matching/hydra-input.d.ts.map +1 -1
- package/dist/domain/matching/hydra-input.js +73 -6
- package/dist/domain/matching/hydra-input.js.map +1 -1
- package/dist/domain/pipeline/router-pipeline.d.ts +9 -0
- package/dist/domain/pipeline/router-pipeline.d.ts.map +1 -1
- package/dist/domain/pipeline/router-pipeline.js +39 -4
- package/dist/domain/pipeline/router-pipeline.js.map +1 -1
- package/dist/domain/routing/isotonic-calibrator.d.ts +56 -0
- package/dist/domain/routing/isotonic-calibrator.d.ts.map +1 -0
- package/dist/domain/routing/isotonic-calibrator.js +187 -0
- package/dist/domain/routing/isotonic-calibrator.js.map +1 -0
- package/dist/domain/routing/p-success-classifier.d.ts +53 -7
- package/dist/domain/routing/p-success-classifier.d.ts.map +1 -1
- package/dist/domain/routing/p-success-classifier.js +205 -21
- package/dist/domain/routing/p-success-classifier.js.map +1 -1
- package/dist/domain/types/entities.d.ts +6 -0
- package/dist/domain/types/entities.d.ts.map +1 -1
- package/dist/infrastructure/telemetry/routing-telemetry.d.ts.map +1 -1
- package/dist/infrastructure/telemetry/routing-telemetry.js +4 -0
- package/dist/infrastructure/telemetry/routing-telemetry.js.map +1 -1
- package/package.json +6 -3
- package/specs/001-build-smart-router/contracts/telemetry-contrib.schema.json +29 -1
- package/src/config/pi-model-mapper.ts +110 -6
- package/src/domain/matching/hydra-input.ts +86 -7
- package/src/domain/pipeline/router-pipeline.ts +54 -3
- package/src/domain/routing/isotonic-calibrator.ts +255 -0
- package/src/domain/routing/p-success-classifier.ts +299 -26
- package/src/domain/types/entities.ts +6 -0
- package/src/infrastructure/telemetry/routing-telemetry.ts +4 -0
package/README.md
CHANGED
|
@@ -565,6 +565,25 @@ Contributors must run `npm run build` before publishing or consuming the library
|
|
|
565
565
|
| `npm run routing:calibration-aggregate` | Aggregate community telemetry for calibration |
|
|
566
566
|
| `npm run routing:train-calibration` | Train routing calibration artifact bundle |
|
|
567
567
|
| `npm run routing:verify-calibration` | Verify calibration bundle against benchmark prompts |
|
|
568
|
+
| `npm run routing:ingest-benchmarks` | Regenerate `config/benchmark-profiles.json` from leaderboard fixtures |
|
|
569
|
+
| `npm run routing:verify-benchmark-profiles` | CI smoke: assert checked-in profiles match fixture ingest |
|
|
570
|
+
|
|
571
|
+
### Benchmark profile refresh
|
|
572
|
+
|
|
573
|
+
Capability scores in `config/benchmark-profiles.json` are grounded from public leaderboard snapshots under `tests/fixtures/benchmark-leaderboards/`. Each artifact records provenance (`source_urls`, `scrape_date`, `catalog_freeze_date`) in its header.
|
|
574
|
+
|
|
575
|
+
**Operator policy:**
|
|
576
|
+
|
|
577
|
+
1. **PR smoke** — `.github/workflows/benchmark-profile-refresh.yml` runs on PRs that touch fixtures, ingest, or the checked-in artifact. It executes `npm run routing:verify-benchmark-profiles` so fixture edits cannot drift from `config/benchmark-profiles.json`.
|
|
578
|
+
2. **Monthly refresh** — the same workflow runs on the 1st of each month (06:00 UTC) and via `workflow_dispatch`. It re-ingests fixtures, updates `catalog_freeze_date` to the run date, and opens a PR when model scores change.
|
|
579
|
+
3. **Manual updates** — after editing fixture snapshots, run `npm run routing:ingest-benchmarks` (optionally `--catalog-freeze-date YYYY-MM-DD`) and commit the regenerated `config/benchmark-profiles.json` with the PR.
|
|
580
|
+
|
|
581
|
+
Regenerate locally:
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
npm run routing:ingest-benchmarks
|
|
585
|
+
npm run routing:verify-benchmark-profiles
|
|
586
|
+
```
|
|
568
587
|
|
|
569
588
|
### Releasing
|
|
570
589
|
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"provenance": {
|
|
4
|
+
"source_urls": {
|
|
5
|
+
"swebench_verified": "https://www.swebench.com/",
|
|
6
|
+
"terminal_bench": "https://www.tbench.ai/leaderboard",
|
|
7
|
+
"livecodebench": "https://livecodebench.github.io/leaderboard.html",
|
|
8
|
+
"bfcl": "https://gorilla.cs.berkeley.edu/leaderboard.html"
|
|
9
|
+
},
|
|
10
|
+
"scrape_date": "2026-07-09",
|
|
11
|
+
"catalog_freeze_date": "2026-07-09"
|
|
12
|
+
},
|
|
13
|
+
"models": [
|
|
14
|
+
{
|
|
15
|
+
"model_id": "claude-3.5-haiku",
|
|
16
|
+
"capabilities": {
|
|
17
|
+
"reasoning": 0.5685,
|
|
18
|
+
"code_gen": 0.587,
|
|
19
|
+
"tool_use": 0.6095
|
|
20
|
+
},
|
|
21
|
+
"benchmark_sources": {
|
|
22
|
+
"bfcl": {
|
|
23
|
+
"raw_score": 70.6,
|
|
24
|
+
"normalized": 0.706
|
|
25
|
+
},
|
|
26
|
+
"livecodebench": {
|
|
27
|
+
"raw_score": 55,
|
|
28
|
+
"normalized": 0.55
|
|
29
|
+
},
|
|
30
|
+
"swebench_verified": {
|
|
31
|
+
"raw_score": 62.4,
|
|
32
|
+
"normalized": 0.624
|
|
33
|
+
},
|
|
34
|
+
"terminal_bench": {
|
|
35
|
+
"raw_score": 51.3,
|
|
36
|
+
"normalized": 0.513
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"model_id": "claude-opus-4-5",
|
|
42
|
+
"capabilities": {
|
|
43
|
+
"reasoning": 0.767,
|
|
44
|
+
"code_gen": 0.7915,
|
|
45
|
+
"tool_use": 0.8035
|
|
46
|
+
},
|
|
47
|
+
"benchmark_sources": {
|
|
48
|
+
"bfcl": {
|
|
49
|
+
"raw_score": 88.2,
|
|
50
|
+
"normalized": 0.882
|
|
51
|
+
},
|
|
52
|
+
"livecodebench": {
|
|
53
|
+
"raw_score": 77.4,
|
|
54
|
+
"normalized": 0.774
|
|
55
|
+
},
|
|
56
|
+
"swebench_verified": {
|
|
57
|
+
"raw_score": 80.9,
|
|
58
|
+
"normalized": 0.809
|
|
59
|
+
},
|
|
60
|
+
"terminal_bench": {
|
|
61
|
+
"raw_score": 72.5,
|
|
62
|
+
"normalized": 0.725
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"model_id": "claude-sonnet-4-6",
|
|
68
|
+
"capabilities": {
|
|
69
|
+
"reasoning": 0.738,
|
|
70
|
+
"code_gen": 0.7635,
|
|
71
|
+
"tool_use": 0.7625
|
|
72
|
+
},
|
|
73
|
+
"benchmark_sources": {
|
|
74
|
+
"bfcl": {
|
|
75
|
+
"raw_score": 84.5,
|
|
76
|
+
"normalized": 0.845
|
|
77
|
+
},
|
|
78
|
+
"livecodebench": {
|
|
79
|
+
"raw_score": 73.1,
|
|
80
|
+
"normalized": 0.731
|
|
81
|
+
},
|
|
82
|
+
"swebench_verified": {
|
|
83
|
+
"raw_score": 79.6,
|
|
84
|
+
"normalized": 0.7959999999999999
|
|
85
|
+
},
|
|
86
|
+
"terminal_bench": {
|
|
87
|
+
"raw_score": 68,
|
|
88
|
+
"normalized": 0.68
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"model_id": "gemini-2.5-flash",
|
|
94
|
+
"capabilities": {
|
|
95
|
+
"reasoning": 0.5295,
|
|
96
|
+
"code_gen": 0.5525,
|
|
97
|
+
"tool_use": 0.5735
|
|
98
|
+
},
|
|
99
|
+
"benchmark_sources": {
|
|
100
|
+
"bfcl": {
|
|
101
|
+
"raw_score": 66.9,
|
|
102
|
+
"normalized": 0.669
|
|
103
|
+
},
|
|
104
|
+
"livecodebench": {
|
|
105
|
+
"raw_score": 52.4,
|
|
106
|
+
"normalized": 0.524
|
|
107
|
+
},
|
|
108
|
+
"swebench_verified": {
|
|
109
|
+
"raw_score": 58.1,
|
|
110
|
+
"normalized": 0.581
|
|
111
|
+
},
|
|
112
|
+
"terminal_bench": {
|
|
113
|
+
"raw_score": 47.8,
|
|
114
|
+
"normalized": 0.478
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"model_id": "gpt-5.3-codex",
|
|
120
|
+
"capabilities": {
|
|
121
|
+
"reasoning": 0.796,
|
|
122
|
+
"code_gen": 0.833,
|
|
123
|
+
"tool_use": 0.8215
|
|
124
|
+
},
|
|
125
|
+
"benchmark_sources": {
|
|
126
|
+
"bfcl": {
|
|
127
|
+
"raw_score": 90.1,
|
|
128
|
+
"normalized": 0.9009999999999999
|
|
129
|
+
},
|
|
130
|
+
"livecodebench": {
|
|
131
|
+
"raw_score": 81.6,
|
|
132
|
+
"normalized": 0.816
|
|
133
|
+
},
|
|
134
|
+
"swebench_verified": {
|
|
135
|
+
"raw_score": 85,
|
|
136
|
+
"normalized": 0.85
|
|
137
|
+
},
|
|
138
|
+
"terminal_bench": {
|
|
139
|
+
"raw_score": 74.2,
|
|
140
|
+
"normalized": 0.742
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Example fleet catalog — copy to config/models.yaml and customize.
|
|
2
2
|
# See specs/001-build-smart-router/data-model.md (ModelProfile) and docs/PRD.md §5.
|
|
3
|
+
#
|
|
4
|
+
# Capability scores in this file are static examples. At runtime, mapPiModelToProfile
|
|
5
|
+
# prefers benchmark-grounded profiles from config/benchmark-profiles.json (SP-136)
|
|
6
|
+
# when a model id has an ingest row; regex/pattern defaults apply otherwise.
|
|
7
|
+
# Regenerate the artifact with: npm run routing:ingest-benchmarks
|
|
3
8
|
|
|
4
9
|
models:
|
|
5
10
|
- id: local-gemma-4-7b
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version":
|
|
2
|
+
"version": 2,
|
|
3
3
|
"minimum_training_samples": {
|
|
4
4
|
"hydra_projection": 100,
|
|
5
5
|
"triage_thresholds": 50,
|
|
6
6
|
"p_success_weights": 30,
|
|
7
|
+
"isotonic_calibrator": 30,
|
|
7
8
|
"routing_centroids": 10
|
|
8
9
|
},
|
|
9
10
|
"hydra_projection": {
|
|
10
|
-
"version":
|
|
11
|
+
"version": 2,
|
|
11
12
|
"embedding_dim": 384,
|
|
13
|
+
"prefix_schema_version": 2,
|
|
14
|
+
"prefix_flag_count": 7,
|
|
12
15
|
"weights": [
|
|
13
16
|
0,
|
|
14
17
|
0,
|
|
@@ -1205,6 +1208,15 @@
|
|
|
1205
1208
|
],
|
|
1206
1209
|
"trained_sample_count": 0
|
|
1207
1210
|
},
|
|
1211
|
+
"isotonic_calibrator": {
|
|
1212
|
+
"version": 1,
|
|
1213
|
+
"min_training_samples": 30,
|
|
1214
|
+
"x_knots": [0, 1],
|
|
1215
|
+
"y_knots": [0, 1],
|
|
1216
|
+
"trained_sample_count": 0,
|
|
1217
|
+
"holdout_ece_raw": null,
|
|
1218
|
+
"holdout_ece_calibrated": null
|
|
1219
|
+
},
|
|
1208
1220
|
"routing_centroids": {
|
|
1209
1221
|
"version": 1,
|
|
1210
1222
|
"embedding_dim": 384,
|
|
@@ -2,10 +2,20 @@
|
|
|
2
2
|
* Pi model registry → ModelProfile mapper.
|
|
3
3
|
*
|
|
4
4
|
* Maps pi `Model` objects (provider + id) to router fleet entries using
|
|
5
|
-
* pattern-based lookup for known families.
|
|
6
|
-
*
|
|
5
|
+
* pattern-based lookup for known families. When `config/benchmark-profiles.json`
|
|
6
|
+
* contains a row for the model id (SP-134/136 ingest output), capability
|
|
7
|
+
* vectors are grounded in benchmark scores instead of regex defaults.
|
|
8
|
+
* Unknown models or missing benchmark rows receive conservative pattern defaults.
|
|
7
9
|
*/
|
|
8
10
|
import type { ModelLimits, ModelProfile, Tier } from '../domain/types/entities.js';
|
|
11
|
+
/** Checked-in ingest artifact from `npm run routing:ingest-benchmarks` (SP-134). */
|
|
12
|
+
export declare const DEFAULT_BENCHMARK_PROFILES_PATH: string;
|
|
13
|
+
/**
|
|
14
|
+
* Test hook — override benchmark artifact path (null disables benchmark grounding).
|
|
15
|
+
*/
|
|
16
|
+
export declare function setBenchmarkProfilesPathForTests(filePath: string | null): void;
|
|
17
|
+
/** Test hook — clear cached benchmark artifact between cases. */
|
|
18
|
+
export declare function resetBenchmarkProfilesCacheForTests(): void;
|
|
9
19
|
/** Pi registry `Model.cost` shape — per-token USD rates. */
|
|
10
20
|
export interface PiRegistryCost {
|
|
11
21
|
readonly input: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-model-mapper.d.ts","sourceRoot":"","sources":["../../src/config/pi-model-mapper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pi-model-mapper.d.ts","sourceRoot":"","sources":["../../src/config/pi-model-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAEV,WAAW,EAGX,YAAY,EACZ,IAAI,EACL,MAAM,6BAA6B,CAAC;AAErC,oFAAoF;AACpF,eAAO,MAAM,+BAA+B,QAA+C,CAAC;AAqB5F;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAG9E;AAED,iEAAiE;AACjE,wBAAgB,mCAAmC,IAAI,IAAI,CAG1D;AA+DD,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;CAChC;AAiBD,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAIpE,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAE/D;AAwDD;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,IAAM,CAAC;AAqIpD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAuBrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE,CAEpF"}
|
|
@@ -2,9 +2,94 @@
|
|
|
2
2
|
* Pi model registry → ModelProfile mapper.
|
|
3
3
|
*
|
|
4
4
|
* Maps pi `Model` objects (provider + id) to router fleet entries using
|
|
5
|
-
* pattern-based lookup for known families.
|
|
6
|
-
*
|
|
5
|
+
* pattern-based lookup for known families. When `config/benchmark-profiles.json`
|
|
6
|
+
* contains a row for the model id (SP-134/136 ingest output), capability
|
|
7
|
+
* vectors are grounded in benchmark scores instead of regex defaults.
|
|
8
|
+
* Unknown models or missing benchmark rows receive conservative pattern defaults.
|
|
7
9
|
*/
|
|
10
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
11
|
+
import { resolve } from 'node:path';
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
/** Checked-in ingest artifact from `npm run routing:ingest-benchmarks` (SP-134). */
|
|
14
|
+
export const DEFAULT_BENCHMARK_PROFILES_PATH = resolve('config', 'benchmark-profiles.json');
|
|
15
|
+
const benchmarkCapabilitiesSchema = z.object({
|
|
16
|
+
reasoning: z.number().min(0).max(1),
|
|
17
|
+
code_gen: z.number().min(0).max(1),
|
|
18
|
+
tool_use: z.number().min(0).max(1),
|
|
19
|
+
});
|
|
20
|
+
const benchmarkModelRowSchema = z.object({
|
|
21
|
+
model_id: z.string().min(1),
|
|
22
|
+
capabilities: benchmarkCapabilitiesSchema,
|
|
23
|
+
});
|
|
24
|
+
const benchmarkProfilesArtifactSchema = z.object({
|
|
25
|
+
version: z.literal(1),
|
|
26
|
+
models: z.array(benchmarkModelRowSchema).min(1),
|
|
27
|
+
});
|
|
28
|
+
let benchmarkProfilesPathOverride;
|
|
29
|
+
let benchmarkCapabilitiesByModelId;
|
|
30
|
+
/**
|
|
31
|
+
* Test hook — override benchmark artifact path (null disables benchmark grounding).
|
|
32
|
+
*/
|
|
33
|
+
export function setBenchmarkProfilesPathForTests(filePath) {
|
|
34
|
+
benchmarkProfilesPathOverride = filePath;
|
|
35
|
+
benchmarkCapabilitiesByModelId = undefined;
|
|
36
|
+
}
|
|
37
|
+
/** Test hook — clear cached benchmark artifact between cases. */
|
|
38
|
+
export function resetBenchmarkProfilesCacheForTests() {
|
|
39
|
+
benchmarkProfilesPathOverride = undefined;
|
|
40
|
+
benchmarkCapabilitiesByModelId = undefined;
|
|
41
|
+
}
|
|
42
|
+
function resolveBenchmarkProfilesPath() {
|
|
43
|
+
if (benchmarkProfilesPathOverride === null) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return benchmarkProfilesPathOverride ?? DEFAULT_BENCHMARK_PROFILES_PATH;
|
|
47
|
+
}
|
|
48
|
+
function loadBenchmarkCapabilitiesMap() {
|
|
49
|
+
if (benchmarkCapabilitiesByModelId !== undefined) {
|
|
50
|
+
return benchmarkCapabilitiesByModelId;
|
|
51
|
+
}
|
|
52
|
+
const filePath = resolveBenchmarkProfilesPath();
|
|
53
|
+
if (filePath === null || !existsSync(filePath)) {
|
|
54
|
+
benchmarkCapabilitiesByModelId = null;
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const raw = readFileSync(filePath, 'utf8');
|
|
59
|
+
const parsed = JSON.parse(raw);
|
|
60
|
+
const result = benchmarkProfilesArtifactSchema.safeParse(parsed);
|
|
61
|
+
if (!result.success) {
|
|
62
|
+
throw new Error(result.error.message);
|
|
63
|
+
}
|
|
64
|
+
const map = new Map();
|
|
65
|
+
for (const row of result.data.models) {
|
|
66
|
+
map.set(row.model_id, { ...row.capabilities });
|
|
67
|
+
}
|
|
68
|
+
benchmarkCapabilitiesByModelId = map;
|
|
69
|
+
return map;
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
console.warn('benchmark profiles artifact invalid; using regex capability defaults', {
|
|
73
|
+
path: filePath,
|
|
74
|
+
error: err instanceof Error ? err.message : String(err),
|
|
75
|
+
});
|
|
76
|
+
benchmarkCapabilitiesByModelId = null;
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function lookupBenchmarkCapabilities(modelId) {
|
|
81
|
+
return loadBenchmarkCapabilitiesMap()?.get(modelId);
|
|
82
|
+
}
|
|
83
|
+
function withBenchmarkCapabilities(defaults, modelId) {
|
|
84
|
+
const grounded = lookupBenchmarkCapabilities(modelId);
|
|
85
|
+
if (grounded === undefined) {
|
|
86
|
+
return defaults;
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
...defaults,
|
|
90
|
+
capabilities: { ...grounded },
|
|
91
|
+
};
|
|
92
|
+
}
|
|
8
93
|
const LOCAL_PROVIDERS = new Set(['lmstudio', 'ollama']);
|
|
9
94
|
/** Conservative context limits when YAML and LiteLLM registry have no entry (SP-092). */
|
|
10
95
|
export const DEFAULT_MODEL_LIMITS = {
|
|
@@ -196,16 +281,16 @@ export function mapPiModelToProfile(input) {
|
|
|
196
281
|
id: input.id,
|
|
197
282
|
...(input.name !== undefined ? { name: input.name } : {}),
|
|
198
283
|
};
|
|
199
|
-
return buildProfile(localInput, LOCAL_DEFAULTS);
|
|
284
|
+
return buildProfile(localInput, withBenchmarkCapabilities(LOCAL_DEFAULTS, input.id));
|
|
200
285
|
}
|
|
201
286
|
if (input.id === OPAQUE_FLEET_DEFAULT_ID) {
|
|
202
|
-
return buildProfile(input, CURSOR_AUTO_DEFAULTS);
|
|
287
|
+
return buildProfile(input, withBenchmarkCapabilities(CURSOR_AUTO_DEFAULTS, input.id));
|
|
203
288
|
}
|
|
204
289
|
const matched = matchPatternRules(input.id);
|
|
205
290
|
if (matched) {
|
|
206
|
-
return buildProfile(input, matched);
|
|
291
|
+
return buildProfile(input, withBenchmarkCapabilities(matched, input.id));
|
|
207
292
|
}
|
|
208
|
-
return buildProfile(input, UNKNOWN_DEFAULTS);
|
|
293
|
+
return buildProfile(input, withBenchmarkCapabilities(UNKNOWN_DEFAULTS, input.id));
|
|
209
294
|
}
|
|
210
295
|
/**
|
|
211
296
|
* Map an array of pi registry models to a router fleet catalog.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-model-mapper.js","sourceRoot":"","sources":["../../src/config/pi-model-mapper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pi-model-mapper.js","sourceRoot":"","sources":["../../src/config/pi-model-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* HyDRA embedding input builder — SP-112, GitHub #60.
|
|
2
|
+
* HyDRA embedding input builder — SP-112, SP-138, GitHub #60, #76.
|
|
3
3
|
*
|
|
4
|
-
* Prefixes
|
|
5
|
-
* turn context, not only the latest user string.
|
|
4
|
+
* Prefixes the latest user turn with session metadata so requirement vectors
|
|
5
|
+
* reflect turn context, not only the latest user string. Prior assistant
|
|
6
|
+
* responses are excluded from the encoder body per HyDRA reference (#76).
|
|
6
7
|
*/
|
|
7
8
|
import type { RoutingRequest } from '../types/index.js';
|
|
8
9
|
import type { TriageResult } from '../triage/triage-engine.js';
|
|
9
10
|
/**
|
|
10
|
-
* Build HyDRA encoder input: metadata prefix +
|
|
11
|
+
* Build HyDRA encoder input: seven-flag metadata prefix + latest user text.
|
|
11
12
|
*
|
|
12
|
-
* Format: `[turns:N|tools:0|tokens:N|type
|
|
13
|
+
* Format: `[turns:N|tools:0|tokens:N|type:...|compact:0|loop:0|attach:0] {text}`
|
|
13
14
|
*
|
|
14
15
|
* Metadata affects capability prediction only; tier selection uses the
|
|
15
16
|
* cluster/feature gate (SP-103) separately.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydra-input.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/hydra-input.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hydra-input.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/hydra-input.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAiG/D;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,YAAY,GACpB,MAAM,CAcR"}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* HyDRA embedding input builder — SP-112, GitHub #60.
|
|
2
|
+
* HyDRA embedding input builder — SP-112, SP-138, GitHub #60, #76.
|
|
3
3
|
*
|
|
4
|
-
* Prefixes
|
|
5
|
-
* turn context, not only the latest user string.
|
|
4
|
+
* Prefixes the latest user turn with session metadata so requirement vectors
|
|
5
|
+
* reflect turn context, not only the latest user string. Prior assistant
|
|
6
|
+
* responses are excluded from the encoder body per HyDRA reference (#76).
|
|
6
7
|
*/
|
|
8
|
+
const FAILURE_PATTERNS = [
|
|
9
|
+
'error',
|
|
10
|
+
'fail',
|
|
11
|
+
'exception',
|
|
12
|
+
'timed out',
|
|
13
|
+
'timeout',
|
|
14
|
+
'econnrefused',
|
|
15
|
+
'enotfound',
|
|
16
|
+
'econnreset',
|
|
17
|
+
'epipe',
|
|
18
|
+
];
|
|
7
19
|
function resolveMessageCount(request) {
|
|
8
20
|
return request.messages?.length ?? 0;
|
|
9
21
|
}
|
|
@@ -19,10 +31,62 @@ function resolveEstimatedInputTokens(request) {
|
|
|
19
31
|
function resolveTurnType(request) {
|
|
20
32
|
return request.turn_type ?? 'unknown';
|
|
21
33
|
}
|
|
34
|
+
function resolveCompactionFlag(request) {
|
|
35
|
+
return request.compaction_flag ? 1 : 0;
|
|
36
|
+
}
|
|
37
|
+
function looksLikeToolFailure(content) {
|
|
38
|
+
const lower = content.toLowerCase();
|
|
39
|
+
return FAILURE_PATTERNS.some((pattern) => lower.includes(pattern));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Observational loop-pressure flag: 1 when the latest tool message looks
|
|
43
|
+
* like a failure. Mirrors loop-escalation heuristics without session pin state.
|
|
44
|
+
*/
|
|
45
|
+
function resolveLoopPressure(request) {
|
|
46
|
+
const messages = request.messages;
|
|
47
|
+
if (!messages || messages.length === 0) {
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
51
|
+
const message = messages[i];
|
|
52
|
+
if (message.role === 'tool') {
|
|
53
|
+
return looksLikeToolFailure(message.content) ? 1 : 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
function messageHasAttachmentIndicator(message) {
|
|
59
|
+
if (message.tool_blocks && message.tool_blocks.length > 0) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (message.role !== 'user') {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const lower = message.content.toLowerCase();
|
|
66
|
+
return lower.includes('data:image');
|
|
67
|
+
}
|
|
68
|
+
function resolveAttachmentFlag(request) {
|
|
69
|
+
return request.messages?.some((message) => messageHasAttachmentIndicator(message)) ? 1 : 0;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Latest user turn text only — excludes prior assistant responses (#76).
|
|
73
|
+
*/
|
|
74
|
+
function resolveHydraPromptText(request) {
|
|
75
|
+
const messages = request.messages;
|
|
76
|
+
if (messages) {
|
|
77
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
78
|
+
const message = messages[i];
|
|
79
|
+
if (message.role === 'user' && message.content.trim()) {
|
|
80
|
+
return message.content;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return request.prompt_text;
|
|
85
|
+
}
|
|
22
86
|
/**
|
|
23
|
-
* Build HyDRA encoder input: metadata prefix +
|
|
87
|
+
* Build HyDRA encoder input: seven-flag metadata prefix + latest user text.
|
|
24
88
|
*
|
|
25
|
-
* Format: `[turns:N|tools:0|tokens:N|type
|
|
89
|
+
* Format: `[turns:N|tools:0|tokens:N|type:...|compact:0|loop:0|attach:0] {text}`
|
|
26
90
|
*
|
|
27
91
|
* Metadata affects capability prediction only; tier selection uses the
|
|
28
92
|
* cluster/feature gate (SP-103) separately.
|
|
@@ -34,7 +98,10 @@ export function buildHydraInput(request, triage) {
|
|
|
34
98
|
`tools:${resolveHasToolContext(request) ? 1 : 0}`,
|
|
35
99
|
`tokens:${resolveEstimatedInputTokens(request)}`,
|
|
36
100
|
`type:${resolveTurnType(request)}`,
|
|
101
|
+
`compact:${resolveCompactionFlag(request)}`,
|
|
102
|
+
`loop:${resolveLoopPressure(request)}`,
|
|
103
|
+
`attach:${resolveAttachmentFlag(request)}`,
|
|
37
104
|
].join('|');
|
|
38
|
-
return `[${flags}] ${request
|
|
105
|
+
return `[${flags}] ${resolveHydraPromptText(request)}`;
|
|
39
106
|
}
|
|
40
107
|
//# sourceMappingURL=hydra-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydra-input.js","sourceRoot":"","sources":["../../../src/domain/matching/hydra-input.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hydra-input.js","sourceRoot":"","sources":["../../../src/domain/matching/hydra-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ import type { LoopEscalationConfig } from '../pinning/loop-escalation.js';
|
|
|
19
19
|
import { RoutingTelemetryEmitter } from '../../infrastructure/telemetry/routing-telemetry.js';
|
|
20
20
|
import type { HydraMatcher as HydraMatcherType } from '../matching/hydra-matcher.js';
|
|
21
21
|
import type { ClusterMatcher, ClusterMatchResult } from '../matching/cluster-matcher.js';
|
|
22
|
+
import { type IsotonicCalibratorArtifact } from '../routing/isotonic-calibrator.js';
|
|
22
23
|
import { type PSuccessWeights } from '../routing/p-success-classifier.js';
|
|
23
24
|
export interface StageResult {
|
|
24
25
|
readonly decided: boolean;
|
|
@@ -62,6 +63,9 @@ export interface PipelineOptions {
|
|
|
62
63
|
/** Preloaded P(success) weights for tests; lazy-loads artifact when omitted (SP-105). */
|
|
63
64
|
readonly pSuccessWeights?: PSuccessWeights;
|
|
64
65
|
readonly pSuccessWeightsPath?: string;
|
|
66
|
+
/** Preloaded isotonic calibrator for tests; lazy-loads bundle when omitted (SP-133). */
|
|
67
|
+
readonly isotonicCalibrator?: IsotonicCalibratorArtifact | null;
|
|
68
|
+
readonly routingCalibrationPath?: string;
|
|
65
69
|
/** SAAR pin policy (SP-123). Must match sessionPinner.saarConfig when enabled. */
|
|
66
70
|
readonly saarConfig?: SaarConfig;
|
|
67
71
|
}
|
|
@@ -82,11 +86,15 @@ export declare class RouterPipeline {
|
|
|
82
86
|
private currentTierHintReasonCode;
|
|
83
87
|
private currentLowIntensityScore;
|
|
84
88
|
private currentPSuccessCheap;
|
|
89
|
+
private currentPSuccessRaw;
|
|
90
|
+
private currentPSuccessCalibrated;
|
|
85
91
|
private currentPSuccessAlpha;
|
|
86
92
|
private currentExpectedCostByTier;
|
|
87
93
|
private currentLocalEligibleReason;
|
|
88
94
|
private pSuccessWeightsLoaded;
|
|
89
95
|
private cachedPSuccessWeights;
|
|
96
|
+
private isotonicCalibratorLoaded;
|
|
97
|
+
private cachedIsotonicCalibrator;
|
|
90
98
|
private currentContextFitRejected;
|
|
91
99
|
private currentContextFitViableCount;
|
|
92
100
|
private contextOverflowPreferredProvider;
|
|
@@ -169,6 +177,7 @@ export declare class RouterPipeline {
|
|
|
169
177
|
private selectExpectedCostTierHint;
|
|
170
178
|
private logExpectedCostExplain;
|
|
171
179
|
private resolvePSuccessWeights;
|
|
180
|
+
private resolveIsotonicCalibrator;
|
|
172
181
|
private resolveTierHint;
|
|
173
182
|
private resolveLowIntensityTierHint;
|
|
174
183
|
private isLocalZeroTierReady;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-pipeline.d.ts","sourceRoot":"","sources":["../../../src/domain/pipeline/router-pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"router-pipeline.d.ts","sourceRoot":"","sources":["../../../src/domain/pipeline/router-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EAEf,cAAc,EACd,UAAU,EACV,IAAI,EAEL,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAuB,UAAU,EAAE,MAAM,iDAAiD,CAAC;AAC5H,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAIxG,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAO9E,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,EACL,uBAAuB,EAIxB,MAAM,qDAAqD,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAe,MAAM,8BAA8B,CAAC;AAClG,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAOzF,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAQ5C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,6NAavB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAOtE,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CA4BnF;AAID,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IACrD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IACpD,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC7C,yFAAyF;IACzF,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,wFAAwF;IACxF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAChE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAE1C,iEAAiE;IACjE,OAAO,CAAC,WAAW,CAA+B;IAElD,yDAAyD;IACzD,OAAO,CAAC,SAAS,CAA+B;IAEhD,8DAA8D;IAC9D,OAAO,CAAC,qBAAqB,CAAmC;IAChE,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,yBAAyB,CAAuB;IACxD,OAAO,CAAC,wBAAwB,CAAuB;IACvD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,yBAAyB,CAAuB;IACxD,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,yBAAyB,CAAwC;IACzE,OAAO,CAAC,0BAA0B,CAAuB;IACzD,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,wBAAwB,CAA2C;IAC3E,OAAO,CAAC,yBAAyB,CAAiC;IAClE,OAAO,CAAC,4BAA4B,CAAK;IACzC,OAAO,CAAC,gCAAgC,CAAuB;IAC/D,OAAO,CAAC,wBAAwB,CAAS;IACzC,gEAAgE;IAChE,OAAO,CAAC,sBAAsB,CAAuB;gBAEzC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe;IAmB/D,KAAK,CACT,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,GACtC,OAAO,CAAC,eAAe,CAAC;IAwD3B;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IAmCrC,6FAA6F;IAC7F,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,0BAA0B;IAQlC,4DAA4D;IAC5D,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,oCAAoC;IAgB5C,OAAO,CAAC,oCAAoC;IAqC5C;;;OAGG;YACW,uBAAuB;IAcrC;;;OAGG;YACW,gBAAgB;IA+B9B,OAAO,CAAC,0BAA0B;YAWpB,kBAAkB;IAWhC;;;OAGG;YACW,eAAe;IAY7B;;;OAGG;YACW,kBAAkB;YAuDlB,MAAM;IAmCpB;;;OAGG;YACW,mBAAmB;YA8BnB,UAAU;IA6FxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkB1B,uFAAuF;IACvF,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,8BAA8B;IAsBtC,OAAO,CAAC,0BAA0B;IAiBlC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAqBlC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAMnC;YAEY,YAAY;IAkE1B;;;;OAIG;YACW,gBAAgB;IAmE9B,OAAO,CAAC,0BAA0B;IAwClC,OAAO,CAAC,sBAAsB;IAkC9B,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,yBAAyB;IAiBjC,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,8BAA8B;IAOtC,OAAO,CAAC,wBAAwB;IAYhC;;;;;;;OAOG;YACW,cAAc;IA0B5B;;;;OAIG;YACW,YAAY;CAuC3B"}
|