pi-smart-router 0.5.0 → 0.6.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 +63 -1
- package/config/operator-config.json.example +64 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +3 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/domain/matching/embedding-provider.d.ts +19 -4
- package/dist/domain/matching/embedding-provider.d.ts.map +1 -1
- package/dist/domain/matching/embedding-provider.js +46 -13
- package/dist/domain/matching/embedding-provider.js.map +1 -1
- package/dist/domain/matching/hydra-matcher.d.ts +38 -2
- package/dist/domain/matching/hydra-matcher.d.ts.map +1 -1
- package/dist/domain/matching/hydra-matcher.js +89 -6
- package/dist/domain/matching/hydra-matcher.js.map +1 -1
- package/dist/domain/matching/modernbert-heads.d.ts +74 -0
- package/dist/domain/matching/modernbert-heads.d.ts.map +1 -0
- package/dist/domain/matching/modernbert-heads.js +198 -0
- package/dist/domain/matching/modernbert-heads.js.map +1 -0
- package/dist/domain/pinning/flip-flop-guard.d.ts +56 -0
- package/dist/domain/pinning/flip-flop-guard.d.ts.map +1 -0
- package/dist/domain/pinning/flip-flop-guard.js +118 -0
- package/dist/domain/pinning/flip-flop-guard.js.map +1 -0
- package/dist/domain/pinning/session-pinner.d.ts +22 -0
- package/dist/domain/pinning/session-pinner.d.ts.map +1 -1
- package/dist/domain/pinning/session-pinner.js +91 -2
- package/dist/domain/pinning/session-pinner.js.map +1 -1
- package/dist/domain/pipeline/router-pipeline.d.ts +14 -0
- package/dist/domain/pipeline/router-pipeline.d.ts.map +1 -1
- package/dist/domain/pipeline/router-pipeline.js +85 -3
- package/dist/domain/pipeline/router-pipeline.js.map +1 -1
- package/dist/domain/triage/entropy-check.d.ts +77 -0
- package/dist/domain/triage/entropy-check.d.ts.map +1 -0
- package/dist/domain/triage/entropy-check.js +196 -0
- package/dist/domain/triage/entropy-check.js.map +1 -0
- package/dist/domain/triage/triage-engine.d.ts +14 -2
- package/dist/domain/triage/triage-engine.d.ts.map +1 -1
- package/dist/domain/triage/triage-engine.js +33 -5
- package/dist/domain/triage/triage-engine.js.map +1 -1
- package/dist/domain/types/entities.d.ts +2 -0
- package/dist/domain/types/entities.d.ts.map +1 -1
- package/dist/domain/types/schemas.d.ts +44 -0
- package/dist/domain/types/schemas.d.ts.map +1 -1
- package/dist/domain/types/schemas.js +35 -0
- package/dist/domain/types/schemas.js.map +1 -1
- package/dist/infrastructure/hardware/throughput-meter.d.ts +42 -0
- package/dist/infrastructure/hardware/throughput-meter.d.ts.map +1 -0
- package/dist/infrastructure/hardware/throughput-meter.js +88 -0
- package/dist/infrastructure/hardware/throughput-meter.js.map +1 -0
- package/dist/infrastructure/persistence/sqlite-store.d.ts.map +1 -1
- package/dist/infrastructure/persistence/sqlite-store.js +2 -1
- package/dist/infrastructure/persistence/sqlite-store.js.map +1 -1
- package/dist/infrastructure/telemetry/routing-telemetry.d.ts +18 -1
- package/dist/infrastructure/telemetry/routing-telemetry.d.ts.map +1 -1
- package/dist/infrastructure/telemetry/routing-telemetry.js +83 -1
- package/dist/infrastructure/telemetry/routing-telemetry.js.map +1 -1
- package/package.json +2 -1
- package/src/config/defaults.ts +3 -0
- package/src/domain/matching/embedding-provider.ts +66 -17
- package/src/domain/matching/hydra-matcher.ts +130 -8
- package/src/domain/matching/modernbert-heads.ts +323 -0
- package/src/domain/pinning/flip-flop-guard.ts +155 -0
- package/src/domain/pinning/session-pinner.ts +154 -2
- package/src/domain/pipeline/router-pipeline.ts +110 -2
- package/src/domain/triage/entropy-check.ts +251 -0
- package/src/domain/triage/triage-engine.ts +41 -5
- package/src/domain/types/entities.ts +2 -0
- package/src/domain/types/schemas.ts +48 -0
- package/src/infrastructure/hardware/throughput-meter.ts +129 -0
- package/src/infrastructure/persistence/sqlite-store.ts +2 -0
- package/src/infrastructure/telemetry/routing-telemetry.ts +118 -3
package/README.md
CHANGED
|
@@ -538,13 +538,74 @@ Additional operator defaults:
|
|
|
538
538
|
| Key | Default | Purpose |
|
|
539
539
|
|-----|---------|---------|
|
|
540
540
|
| `loop_escalation.threshold` | 3 | Consecutive identical failures before escalating to frontier |
|
|
541
|
+
| `pin_only_fallback` | `false` | Emergency pin-on-first-turn mode — see [Pin-only emergency fallback](#pin-only-emergency-fallback) |
|
|
541
542
|
| `local.min_memory_gb_full` | 16 | Minimum RAM for full local inference |
|
|
542
543
|
| `local.battery_threshold_pct` | 20 | Minimum battery to allow local inference |
|
|
543
544
|
| `pricing.staleness_days` | 14 | Max age before re-fetching pricing data |
|
|
544
545
|
|
|
546
|
+
### Pin-only emergency fallback
|
|
547
|
+
|
|
548
|
+
**Not the default policy.** Multi-stage routing remains the design target. Enable `pin_only_fallback` only when shadow quality retention regresses or as a manual operator safety valve (GitHub [#83](https://github.com/beettlle/pi-smart-router/issues/83), [routing-roadmap.md](docs/routing-roadmap.md) §1).
|
|
549
|
+
|
|
550
|
+
When `pin_only_fallback` is `true` in `config/operator-config.json`:
|
|
551
|
+
|
|
552
|
+
1. **First turn** — normal multi-stage routing runs and establishes the session pin.
|
|
553
|
+
2. **Subsequent turns** — the router reuses the pinned model, skipping `turn_envelope`, triage, HyDRA, and sub-routing (`reason_code: pin_only_fallback`).
|
|
554
|
+
|
|
555
|
+
**Manual trigger:** set `"pin_only_fallback": true` in operator config and restart or reload config. Revert to `false` when shadow metrics recover.
|
|
556
|
+
|
|
557
|
+
**Automated trigger (eval harness):** compare shadow QR from `npm run routing:eval-harness` against a frozen baseline aggregate. When mean quality retention drops more than **5 percentage points** (default threshold), enable pin-only fallback:
|
|
558
|
+
|
|
559
|
+
```bash
|
|
560
|
+
# Score current fixtures
|
|
561
|
+
npm run routing:eval-harness:smoke > shadow-metrics.json
|
|
562
|
+
|
|
563
|
+
# Compare against a saved baseline (same catalog_id + checkpoint_date)
|
|
564
|
+
node --import tsx -e "
|
|
565
|
+
import { readFileSync } from 'node:fs';
|
|
566
|
+
import { evaluatePinOnlyFallbackFromHarness } from './scripts/eval/quality-retention.ts';
|
|
567
|
+
const shadow = JSON.parse(readFileSync('shadow-metrics.json','utf8')).tracks.capability;
|
|
568
|
+
const baseline = JSON.parse(readFileSync('baseline-metrics.json','utf8')).tracks.capability;
|
|
569
|
+
const result = evaluatePinOnlyFallbackFromHarness(shadow, baseline);
|
|
570
|
+
console.log(JSON.stringify(result, null, 2));
|
|
571
|
+
if (result.pin_only_fallback) process.exit(2);
|
|
572
|
+
"
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
Exit code `2` signals regression above threshold — operators can wire this into CI or a config reload hook. Override semantics: explicit `pin_only_fallback: true` in config always enables emergency mode; explicit `false` disables the automated recommendation.
|
|
576
|
+
|
|
577
|
+
**Telemetry:** when fallback routes a request, telemetry rows include `pin_only_fallback_active: true` (and `reason_code: pin_only_fallback`). Filter operator audit logs on that field to confirm emergency mode is active.
|
|
578
|
+
|
|
545
579
|
### HyDRA model cache
|
|
546
580
|
|
|
547
|
-
The embedding matcher uses `@huggingface/transformers` with
|
|
581
|
+
The embedding matcher uses `@huggingface/transformers` with ONNX models (384-dim embeddings). Artifacts are downloaded at runtime and cached under `.pi-smart-router/models/` (configurable via `hydra.artifact_cache_path`). This directory is gitignored.
|
|
582
|
+
|
|
583
|
+
| Encoder | Model | Context | Default |
|
|
584
|
+
|---------|-------|---------|---------|
|
|
585
|
+
| `minilm` | `Xenova/all-MiniLM-L6-v2` | 512 tokens | yes |
|
|
586
|
+
| `granite` | `ibm-granite/granite-embedding-97m-multilingual-r2` (ONNX) | long context | trial (#80) |
|
|
587
|
+
|
|
588
|
+
Set the encoder in operator config:
|
|
589
|
+
|
|
590
|
+
```json
|
|
591
|
+
{
|
|
592
|
+
"hydra": {
|
|
593
|
+
"artifact_cache_path": ".pi-smart-router/models/",
|
|
594
|
+
"encoder": "granite"
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
MiniLM remains the default fallback when `encoder` is omitted. Both encoders produce 384-dim vectors compatible with the SP-115 learned projection head.
|
|
600
|
+
|
|
601
|
+
**Latency budget:** the HyDRA embedding stage targets ~80–120 ms per turn. Compare MiniLM vs Granite on held-out agent turn samples:
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
npm run benchmark:encoder
|
|
605
|
+
# optional: --fixtures path --cache .pi-smart-router/models/
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
The script reports p50/p95 latency for each encoder and asserts Granite p50/p95 stay within the 120 ms budget ceiling. Requires `@huggingface/transformers` and a one-time ONNX artifact download.
|
|
548
609
|
|
|
549
610
|
## Architecture
|
|
550
611
|
|
|
@@ -684,6 +745,7 @@ Contributors must run `npm run build` before publishing or consuming the library
|
|
|
684
745
|
| `npm run routing:eval-replay` | Counterfactual replay on eval trace fixtures |
|
|
685
746
|
| `npm run routing:eval-harness` | Three-track eval harness (capability, cost, continuity) on fixture traces |
|
|
686
747
|
| `npm run routing:eval-harness:smoke` | Harness summary JSON only (CI smoke; no network) |
|
|
748
|
+
| `npm run benchmark:encoder` | Compare MiniLM vs Granite encoder latency on held-out agent turns |
|
|
687
749
|
|
|
688
750
|
### Offline eval harness (agent-native routing)
|
|
689
751
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_documentation": {
|
|
3
|
+
"pin_only_fallback": "EMERGENCY ONLY — default false. When true, the router pins on the first turn and reuses that model for all subsequent turns, skipping turn_envelope, triage, HyDRA, and sub-routing. Use when shadow quality retention regresses (>5% vs baseline) or as a manual operator fallback. See docs/routing-roadmap.md §1 and GitHub #83. Automated trigger wiring is SP-162."
|
|
4
|
+
},
|
|
5
|
+
"frugality": {
|
|
6
|
+
"lambda_cost": 0.5,
|
|
7
|
+
"lambda_latency": 0.1,
|
|
8
|
+
"lambda_verbosity": 0.15
|
|
9
|
+
},
|
|
10
|
+
"loop_escalation": {
|
|
11
|
+
"threshold": 3
|
|
12
|
+
},
|
|
13
|
+
"pricing": {
|
|
14
|
+
"staleness_days": 14
|
|
15
|
+
},
|
|
16
|
+
"local": {
|
|
17
|
+
"min_memory_gb_full": 16,
|
|
18
|
+
"min_memory_gb_classification": 8,
|
|
19
|
+
"battery_threshold_pct": 20
|
|
20
|
+
},
|
|
21
|
+
"hydra": {
|
|
22
|
+
"artifact_cache_path": ".pi-smart-router/models/",
|
|
23
|
+
"encoder": "minilm",
|
|
24
|
+
"hydra_heads": "learned_projection",
|
|
25
|
+
"_hydra_heads_documentation": {
|
|
26
|
+
"learned_projection": "Default — SP-115 384×3 linear projection on MiniLM/Granite embeddings (config/hydra-projection-weights.json). Approximates HyDRA K sigmoid heads; keep until calibration Top-1 error exceeds ~10%.",
|
|
27
|
+
"modernbert_k4": "ModernBERT-base [CLS] with K=4 independent sigmoid heads (config/modernbert-k4-heads.json). Migrating from SP-115: train K=4 head weights offline, set hydra_heads to modernbert_k4, and remove or ignore hydra-projection-weights.json. The fourth debugging dimension is predicted for HyDRA fidelity but excluded from the catalog-decoupled shortfall gate (reasoning, code_gen, tool_use only). See docs/routing-roadmap.md §2 P3 and GitHub #81."
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"low_intensity": {
|
|
31
|
+
"weights": {
|
|
32
|
+
"prompt_shortness": 0.08,
|
|
33
|
+
"token_shortness": 0.08,
|
|
34
|
+
"cyclomatic_low": 0.06,
|
|
35
|
+
"trivial_signal": 0.1,
|
|
36
|
+
"complex_inverse": 0.08,
|
|
37
|
+
"triage_verdict": 0.1,
|
|
38
|
+
"turn_type": 0.08,
|
|
39
|
+
"no_tool_context": 0.06,
|
|
40
|
+
"message_shallow": 0.06,
|
|
41
|
+
"prose_ratio": 0.06,
|
|
42
|
+
"requirement_low": 0.12,
|
|
43
|
+
"cluster_signal": 0.12
|
|
44
|
+
},
|
|
45
|
+
"high_threshold": 0.65,
|
|
46
|
+
"low_threshold": 0.35,
|
|
47
|
+
"p_success_alpha": 0.5
|
|
48
|
+
},
|
|
49
|
+
"saar": {
|
|
50
|
+
"planning_turn_buffer": 2,
|
|
51
|
+
"prefix_cache_weight": 0.2,
|
|
52
|
+
"idle_timeout_seconds": 300,
|
|
53
|
+
"switch_threshold": 0.5
|
|
54
|
+
},
|
|
55
|
+
"planning_delegate": {
|
|
56
|
+
"enabled": true,
|
|
57
|
+
"compressed_context": {
|
|
58
|
+
"max_messages": 12,
|
|
59
|
+
"max_tokens": 16384,
|
|
60
|
+
"exclude_execution_history": true
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"pin_only_fallback": false
|
|
64
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,gCAAgC,EAAE,mBAAmB,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEnK,wFAAwF;AACxF,wBAAgB,4BAA4B,CAC1C,IAAI,GAAE,cAAwC,GAC7C,cAAc,CAMhB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,gCAAgC,EAAE,mBAAmB,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEnK,wFAAwF;AACxF,wBAAgB,4BAA4B,CAC1C,IAAI,GAAE,cAAwC,GAC7C,cAAc,CAMhB;AAED,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,cAAc,CA+BnD,CAAC"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -32,6 +32,8 @@ export const DEFAULT_OPERATOR_CONFIG = {
|
|
|
32
32
|
},
|
|
33
33
|
hydra: {
|
|
34
34
|
artifact_cache_path: '.pi-smart-router/models/',
|
|
35
|
+
encoder: 'minilm',
|
|
36
|
+
hydra_heads: 'learned_projection',
|
|
35
37
|
},
|
|
36
38
|
low_intensity: {
|
|
37
39
|
weights: DEFAULT_LOW_INTENSITY_WEIGHTS,
|
|
@@ -41,5 +43,6 @@ export const DEFAULT_OPERATOR_CONFIG = {
|
|
|
41
43
|
},
|
|
42
44
|
saar: DEFAULT_SAAR_CONFIG,
|
|
43
45
|
planning_delegate: DEFAULT_PLANNING_DELEGATE_CONFIG,
|
|
46
|
+
pin_only_fallback: false,
|
|
44
47
|
};
|
|
45
48
|
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oCAAoC,EACpC,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAE,gCAAgC,EAAE,mBAAmB,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEnK,wFAAwF;AACxF,MAAM,UAAU,4BAA4B,CAC1C,OAAuB,uBAAuB;IAE9C,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,iBAAiB,EAAE,oCAAoC,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,SAAS,EAAE;QACT,WAAW,EAAE,GAAG;QAChB,cAAc,EAAE,GAAG;QACnB,gBAAgB,EAAE,IAAI;KACvB;IACD,eAAe,EAAE;QACf,SAAS,EAAE,CAAC;KACb;IACD,OAAO,EAAE;QACP,cAAc,EAAE,EAAE;KACnB;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,EAAE;QACtB,4BAA4B,EAAE,CAAC;QAC/B,qBAAqB,EAAE,EAAE;KAC1B;IACD,KAAK,EAAE;QACL,mBAAmB,EAAE,0BAA0B;
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oCAAoC,EACpC,wBAAwB,GAEzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAE,gCAAgC,EAAE,mBAAmB,EAAE,oCAAoC,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEnK,wFAAwF;AACxF,MAAM,UAAU,4BAA4B,CAC1C,OAAuB,uBAAuB;IAE9C,OAAO;QACL,GAAG,IAAI;QACP,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC,iBAAiB,EAAE,oCAAoC,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,SAAS,EAAE;QACT,WAAW,EAAE,GAAG;QAChB,cAAc,EAAE,GAAG;QACnB,gBAAgB,EAAE,IAAI;KACvB;IACD,eAAe,EAAE;QACf,SAAS,EAAE,CAAC;KACb;IACD,OAAO,EAAE;QACP,cAAc,EAAE,EAAE;KACnB;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,EAAE;QACtB,4BAA4B,EAAE,CAAC;QAC/B,qBAAqB,EAAE,EAAE;KAC1B;IACD,KAAK,EAAE;QACL,mBAAmB,EAAE,0BAA0B;QAC/C,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,oBAAoB;KAClC;IACD,aAAa,EAAE;QACb,OAAO,EAAE,6BAA6B;QACtC,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,GAAG;KACrB;IACD,IAAI,EAAE,mBAAmB;IACzB,iBAAiB,EAAE,gCAAgC;IACnD,iBAAiB,EAAE,KAAK;CAChB,CAAC"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared
|
|
2
|
+
* Shared ONNX text embedders — SP-100 (MiniLM), SP-156 (Granite trial).
|
|
3
3
|
*
|
|
4
|
-
* Embeds prompt text
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Embeds prompt text for HyDRA requirement projection and semantic cluster
|
|
5
|
+
* matching. One ONNX session per instance; share across matchers via a single
|
|
6
|
+
* factory call and coordinated dispose().
|
|
7
7
|
*/
|
|
8
|
+
import type { Encoder } from '../types/schemas.js';
|
|
8
9
|
export declare const EMBEDDING_DIM = 384;
|
|
10
|
+
/** MiniLM ONNX model (384-dim, 512-token context). */
|
|
11
|
+
export declare const MINILM_ONNX_MODEL = "Xenova/all-MiniLM-L6-v2";
|
|
12
|
+
/**
|
|
13
|
+
* Granite 97M ONNX artifact for @huggingface/transformers.
|
|
14
|
+
* Source weights: ibm-granite/granite-embedding-97m-multilingual-r2 (384-dim).
|
|
15
|
+
*/
|
|
16
|
+
export declare const GRANITE_ONNX_MODEL = "onnx-community/granite-embedding-97m-multilingual-r2-ONNX";
|
|
9
17
|
export interface TextEmbedder {
|
|
10
18
|
embed(text: string): Promise<Float32Array>;
|
|
11
19
|
dispose(): Promise<void>;
|
|
@@ -18,4 +26,11 @@ export interface TextEmbedder {
|
|
|
18
26
|
* Install: `npm i @huggingface/transformers`
|
|
19
27
|
*/
|
|
20
28
|
export declare function createOnnxTextEmbedder(artifactCachePath: string): Promise<TextEmbedder>;
|
|
29
|
+
/**
|
|
30
|
+
* Granite 97M long-context embedder (384-dim ONNX drop-in for SP-115 head).
|
|
31
|
+
* Model: ibm-granite/granite-embedding-97m-multilingual-r2 via ONNX runtime.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createGraniteOnnxTextEmbedder(artifactCachePath: string): Promise<TextEmbedder>;
|
|
34
|
+
/** Select ONNX text embedder by operator encoder flag. */
|
|
35
|
+
export declare function createTextEmbedder(encoder: Encoder | undefined, artifactCachePath: string): Promise<TextEmbedder>;
|
|
21
36
|
//# sourceMappingURL=embedding-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-provider.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"embedding-provider.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,8DAC8B,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AA+DD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED,0DAA0D;AAC1D,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,YAAkB,EAClC,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,YAAY,CAAC,CAWvB"}
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared
|
|
2
|
+
* Shared ONNX text embedders — SP-100 (MiniLM), SP-156 (Granite trial).
|
|
3
3
|
*
|
|
4
|
-
* Embeds prompt text
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Embeds prompt text for HyDRA requirement projection and semantic cluster
|
|
5
|
+
* matching. One ONNX session per instance; share across matchers via a single
|
|
6
|
+
* factory call and coordinated dispose().
|
|
7
7
|
*/
|
|
8
|
+
import { DEFAULT_ENCODER } from '../types/schemas.js';
|
|
8
9
|
export const EMBEDDING_DIM = 384;
|
|
10
|
+
/** MiniLM ONNX model (384-dim, 512-token context). */
|
|
11
|
+
export const MINILM_ONNX_MODEL = 'Xenova/all-MiniLM-L6-v2';
|
|
9
12
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* The package is loaded dynamically — not required at compile time.
|
|
14
|
-
* Install: `npm i @huggingface/transformers`
|
|
13
|
+
* Granite 97M ONNX artifact for @huggingface/transformers.
|
|
14
|
+
* Source weights: ibm-granite/granite-embedding-97m-multilingual-r2 (384-dim).
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
16
|
+
export const GRANITE_ONNX_MODEL = 'onnx-community/granite-embedding-97m-multilingual-r2-ONNX';
|
|
17
|
+
async function loadTransformersModule() {
|
|
17
18
|
const moduleName = '@huggingface/transformers';
|
|
18
|
-
let mod;
|
|
19
19
|
try {
|
|
20
|
-
|
|
20
|
+
return (await import(moduleName));
|
|
21
21
|
}
|
|
22
22
|
catch {
|
|
23
23
|
throw new Error(`ONNX embedding requires ${moduleName}. Install: npm i ${moduleName}`);
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
}
|
|
26
|
+
async function createOnnxFeatureEmbedder(modelId, artifactCachePath) {
|
|
27
|
+
const mod = await loadTransformersModule();
|
|
28
|
+
const extractor = await mod.pipeline('feature-extraction', modelId, { cache_dir: artifactCachePath });
|
|
26
29
|
return {
|
|
27
30
|
async embed(text) {
|
|
28
31
|
const output = await extractor(text, {
|
|
@@ -39,4 +42,34 @@ export async function createOnnxTextEmbedder(artifactCachePath) {
|
|
|
39
42
|
},
|
|
40
43
|
};
|
|
41
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Creates a TextEmbedder backed by @huggingface/transformers ONNX runtime.
|
|
47
|
+
* Model: Xenova/all-MiniLM-L6-v2 (384-dim).
|
|
48
|
+
*
|
|
49
|
+
* The package is loaded dynamically — not required at compile time.
|
|
50
|
+
* Install: `npm i @huggingface/transformers`
|
|
51
|
+
*/
|
|
52
|
+
export async function createOnnxTextEmbedder(artifactCachePath) {
|
|
53
|
+
return createOnnxFeatureEmbedder(MINILM_ONNX_MODEL, artifactCachePath);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Granite 97M long-context embedder (384-dim ONNX drop-in for SP-115 head).
|
|
57
|
+
* Model: ibm-granite/granite-embedding-97m-multilingual-r2 via ONNX runtime.
|
|
58
|
+
*/
|
|
59
|
+
export async function createGraniteOnnxTextEmbedder(artifactCachePath) {
|
|
60
|
+
return createOnnxFeatureEmbedder(GRANITE_ONNX_MODEL, artifactCachePath);
|
|
61
|
+
}
|
|
62
|
+
/** Select ONNX text embedder by operator encoder flag. */
|
|
63
|
+
export async function createTextEmbedder(encoder = DEFAULT_ENCODER, artifactCachePath) {
|
|
64
|
+
switch (encoder) {
|
|
65
|
+
case 'granite':
|
|
66
|
+
return createGraniteOnnxTextEmbedder(artifactCachePath);
|
|
67
|
+
case 'minilm':
|
|
68
|
+
return createOnnxTextEmbedder(artifactCachePath);
|
|
69
|
+
default: {
|
|
70
|
+
const _exhaustive = encoder;
|
|
71
|
+
throw new Error(`Unsupported encoder: ${String(_exhaustive)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
42
75
|
//# sourceMappingURL=embedding-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-provider.js","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"embedding-provider.js","sourceRoot":"","sources":["../../../src/domain/matching/embedding-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,2DAA2D,CAAC;AA0B9D,KAAK,UAAU,sBAAsB;IACnC,MAAM,UAAU,GAAG,2BAA2B,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAuB,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,2BAA2B,UAAU,oBAAoB,UAAU,EAAE,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,OAAe,EACf,iBAAyB;IAEzB,MAAM,GAAG,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAoB,MAAM,GAAG,CAAC,QAAQ,CACnD,oBAAoB,EACpB,OAAO,EACP,EAAE,SAAS,EAAE,iBAAiB,EAAE,CACjC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,IAAY;YACtB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE;gBACnC,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CACb,sCAAsC,aAAa,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CACjF,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,KAAK,CAAC,OAAO;YACX,kEAAkE;QACpE,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,iBAAyB;IAEzB,OAAO,yBAAyB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,iBAAyB;IAEzB,OAAO,yBAAyB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;AAC1E,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAmB,eAAe,EAClC,iBAAyB;IAEzB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;QAC1D,KAAK,QAAQ;YACX,OAAO,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,OAAO,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { z } from 'zod';
|
|
14
14
|
import { EMBEDDING_DIM, type TextEmbedder } from './embedding-provider.js';
|
|
15
|
+
import { type K4CapabilityVector, type ModernBertHeadsPredictor } from './modernbert-heads.js';
|
|
16
|
+
import type { Encoder, HydraConfig, HydraHeads } from '../types/schemas.js';
|
|
15
17
|
import { type FrugalityWeights } from '../scoring/multi-objective.js';
|
|
16
18
|
import type { CandidateScore, ModelProfile, RoutingRequest } from '../types/index.js';
|
|
17
19
|
export interface RequirementVector {
|
|
@@ -32,9 +34,12 @@ export interface MatchResult {
|
|
|
32
34
|
}
|
|
33
35
|
export interface HydraMatcherConfig {
|
|
34
36
|
readonly artifactCachePath: string;
|
|
37
|
+
readonly encoder?: Encoder;
|
|
38
|
+
readonly hydraHeads?: HydraHeads;
|
|
35
39
|
readonly budgetMs?: number;
|
|
36
40
|
readonly frugality?: FrugalityWeights;
|
|
37
41
|
readonly projectionWeightsPath?: string;
|
|
42
|
+
readonly k4HeadWeightsPath?: string;
|
|
38
43
|
}
|
|
39
44
|
export declare const DEFAULT_HYDRA_PROJECTION_WEIGHTS_PATH: string;
|
|
40
45
|
export declare const HYDRA_PROJECTION_OUTPUT_DIM = 3;
|
|
@@ -74,30 +79,61 @@ export declare function resolveHydraProjectionWeights(options?: LoadHydraProject
|
|
|
74
79
|
* provided; otherwise falls back to deterministic mean-pooled-thirds placeholder.
|
|
75
80
|
*/
|
|
76
81
|
export declare function projectToRequirements(embedding: Float32Array, weights?: HydraProjectionWeights | null): RequirementVector;
|
|
82
|
+
/**
|
|
83
|
+
* Map ModernBERT K=4 head output to the 3-dim requirement vector used by the
|
|
84
|
+
* catalog-decoupled shortfall gate. The debugging dimension is predicted for
|
|
85
|
+
* HyDRA fidelity but excluded from shortfall matching (SP-159, routing-roadmap §2 P3).
|
|
86
|
+
*/
|
|
87
|
+
export declare function k4CapabilityVectorToRequirements(vector: K4CapabilityVector): RequirementVector;
|
|
77
88
|
/**
|
|
78
89
|
* Adapts a shared TextEmbedder for HyDRA requirement extraction.
|
|
79
90
|
* dispose() delegates to the underlying embedder for shared lifecycle.
|
|
80
91
|
*/
|
|
81
92
|
export declare function wrapHydraEmbeddingProvider(embedder: TextEmbedder, projectionWeights?: HydraProjectionWeights | null): EmbeddingProvider;
|
|
93
|
+
/**
|
|
94
|
+
* Adapts a ModernBERT K=4 heads predictor for HyDRA requirement extraction.
|
|
95
|
+
* Debugging dimension is dropped before shortfall gate evaluation.
|
|
96
|
+
*/
|
|
97
|
+
export declare function wrapModernBertHeadsEmbeddingProvider(predictor: ModernBertHeadsPredictor): EmbeddingProvider;
|
|
82
98
|
export declare class HydraMatcher {
|
|
83
99
|
private readonly provider;
|
|
84
100
|
private readonly budgetMs;
|
|
85
101
|
private readonly frugality;
|
|
102
|
+
private readonly hydraHeads;
|
|
86
103
|
private readonly projectionWeights;
|
|
87
104
|
constructor(provider: EmbeddingProvider, config: HydraMatcherConfig);
|
|
88
|
-
/**
|
|
105
|
+
/** Active requirement head mode from operator hydra config. */
|
|
106
|
+
hydraHeadsMode(): HydraHeads;
|
|
107
|
+
/** Whether ModernBERT K=4 heads mode is active. */
|
|
108
|
+
usesModernBertK4(): boolean;
|
|
109
|
+
/** Whether learned SP-115 projection weights were loaded at init. */
|
|
89
110
|
usesLearnedProjection(): boolean;
|
|
90
111
|
match(request: RoutingRequest, fleet: readonly ModelProfile[]): Promise<MatchResult>;
|
|
91
112
|
dispose(): Promise<void>;
|
|
92
113
|
private validateRequirements;
|
|
93
114
|
}
|
|
94
115
|
export interface CreateOnnxEmbeddingProviderOptions {
|
|
116
|
+
readonly encoder?: Encoder;
|
|
95
117
|
readonly projectionWeightsPath?: string;
|
|
96
118
|
}
|
|
119
|
+
export interface CreateHydraEmbeddingProviderOptions extends CreateOnnxEmbeddingProviderOptions {
|
|
120
|
+
readonly hydraHeads?: HydraHeads;
|
|
121
|
+
readonly k4HeadWeightsPath?: string;
|
|
122
|
+
}
|
|
97
123
|
/**
|
|
98
124
|
* Creates an EmbeddingProvider backed by the shared ONNX text embedder.
|
|
99
|
-
* For multi-matcher setups, create one TextEmbedder via
|
|
125
|
+
* For multi-matcher setups, create one TextEmbedder via createTextEmbedder
|
|
100
126
|
* and pass wrapHydraEmbeddingProvider(embedder) to HyDRA while sharing embed().
|
|
101
127
|
*/
|
|
102
128
|
export declare function createOnnxEmbeddingProvider(artifactCachePath: string, options?: CreateOnnxEmbeddingProviderOptions): Promise<EmbeddingProvider>;
|
|
129
|
+
/**
|
|
130
|
+
* Creates an EmbeddingProvider for the configured hydra_heads mode:
|
|
131
|
+
* - `learned_projection` — MiniLM/Granite embedder + SP-115 linear projection (or placeholder)
|
|
132
|
+
* - `modernbert_k4` — ModernBERT-base [CLS] with K=4 sigmoid heads (debugging excluded from shortfall)
|
|
133
|
+
*/
|
|
134
|
+
export declare function createHydraEmbeddingProvider(artifactCachePath: string, options?: CreateHydraEmbeddingProviderOptions): Promise<EmbeddingProvider>;
|
|
135
|
+
/**
|
|
136
|
+
* Bootstrap HyDRA matcher from operator hydra config (encoder, heads, artifact path).
|
|
137
|
+
*/
|
|
138
|
+
export declare function createHydraMatcherFromHydraConfig(hydraConfig: Pick<HydraConfig, 'artifact_cache_path'> & Partial<Pick<HydraConfig, 'encoder' | 'hydra_heads'>>, options?: Omit<HydraMatcherConfig, 'artifactCachePath' | 'encoder' | 'hydraHeads'>): Promise<HydraMatcher>;
|
|
103
139
|
//# sourceMappingURL=hydra-matcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydra-matcher.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/hydra-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAEL,aAAa,EACb,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EACV,cAAc,EAEd,YAAY,EACZ,cAAc,EACf,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAID,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"hydra-matcher.d.ts","sourceRoot":"","sources":["../../../src/domain/matching/hydra-matcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,9 @@ import { resolve } from 'node:path';
|
|
|
15
15
|
import { z } from 'zod';
|
|
16
16
|
import { DEFAULT_OPERATOR_CONFIG } from '../../config/defaults.js';
|
|
17
17
|
import { buildHydraInput } from './hydra-input.js';
|
|
18
|
-
import {
|
|
18
|
+
import { createTextEmbedder, EMBEDDING_DIM, } from './embedding-provider.js';
|
|
19
|
+
import { createModernBertHeadsPredictor, } from './modernbert-heads.js';
|
|
20
|
+
import { DEFAULT_ENCODER, DEFAULT_HYDRA_HEADS } from '../types/schemas.js';
|
|
19
21
|
import { scoreMultiObjective, } from '../scoring/multi-objective.js';
|
|
20
22
|
const DEFAULT_BUDGET_MS = 100;
|
|
21
23
|
const MIN_BUDGET_MS = 80;
|
|
@@ -165,6 +167,19 @@ export function projectToRequirements(embedding, weights) {
|
|
|
165
167
|
}
|
|
166
168
|
return projectToRequirementsPlaceholder(embedding);
|
|
167
169
|
}
|
|
170
|
+
// ─── K=4 → requirement vector (catalog shortfall uses 3 dims only) ───────────
|
|
171
|
+
/**
|
|
172
|
+
* Map ModernBERT K=4 head output to the 3-dim requirement vector used by the
|
|
173
|
+
* catalog-decoupled shortfall gate. The debugging dimension is predicted for
|
|
174
|
+
* HyDRA fidelity but excluded from shortfall matching (SP-159, routing-roadmap §2 P3).
|
|
175
|
+
*/
|
|
176
|
+
export function k4CapabilityVectorToRequirements(vector) {
|
|
177
|
+
return {
|
|
178
|
+
reasoning: vector.reasoning,
|
|
179
|
+
code_gen: vector.code_gen,
|
|
180
|
+
tool_use: vector.tool_use,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
168
183
|
// ─── HyDRA embedding adapter ─────────────────────────────────────────────────
|
|
169
184
|
/**
|
|
170
185
|
* Adapts a shared TextEmbedder for HyDRA requirement extraction.
|
|
@@ -181,11 +196,27 @@ export function wrapHydraEmbeddingProvider(embedder, projectionWeights) {
|
|
|
181
196
|
},
|
|
182
197
|
};
|
|
183
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Adapts a ModernBERT K=4 heads predictor for HyDRA requirement extraction.
|
|
201
|
+
* Debugging dimension is dropped before shortfall gate evaluation.
|
|
202
|
+
*/
|
|
203
|
+
export function wrapModernBertHeadsEmbeddingProvider(predictor) {
|
|
204
|
+
return {
|
|
205
|
+
async extractRequirements(text) {
|
|
206
|
+
const k4 = await predictor.predictCapabilities(text);
|
|
207
|
+
return k4CapabilityVectorToRequirements(k4);
|
|
208
|
+
},
|
|
209
|
+
async dispose() {
|
|
210
|
+
await predictor.dispose();
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
}
|
|
184
214
|
// ─── HydraMatcher ────────────────────────────────────────────────────────────
|
|
185
215
|
export class HydraMatcher {
|
|
186
216
|
provider;
|
|
187
217
|
budgetMs;
|
|
188
218
|
frugality;
|
|
219
|
+
hydraHeads;
|
|
189
220
|
projectionWeights;
|
|
190
221
|
constructor(provider, config) {
|
|
191
222
|
const budget = config.budgetMs ?? DEFAULT_BUDGET_MS;
|
|
@@ -195,11 +226,23 @@ export class HydraMatcher {
|
|
|
195
226
|
this.provider = provider;
|
|
196
227
|
this.budgetMs = budget;
|
|
197
228
|
this.frugality = config.frugality ?? DEFAULT_OPERATOR_CONFIG.frugality;
|
|
198
|
-
this.
|
|
229
|
+
this.hydraHeads = config.hydraHeads ?? DEFAULT_HYDRA_HEADS;
|
|
230
|
+
this.projectionWeights =
|
|
231
|
+
this.hydraHeads === 'learned_projection'
|
|
232
|
+
? resolveHydraProjectionWeights(config.projectionWeightsPath ? { filePath: config.projectionWeightsPath } : undefined)
|
|
233
|
+
: null;
|
|
234
|
+
}
|
|
235
|
+
/** Active requirement head mode from operator hydra config. */
|
|
236
|
+
hydraHeadsMode() {
|
|
237
|
+
return this.hydraHeads;
|
|
199
238
|
}
|
|
200
|
-
/** Whether
|
|
239
|
+
/** Whether ModernBERT K=4 heads mode is active. */
|
|
240
|
+
usesModernBertK4() {
|
|
241
|
+
return this.hydraHeads === 'modernbert_k4';
|
|
242
|
+
}
|
|
243
|
+
/** Whether learned SP-115 projection weights were loaded at init. */
|
|
201
244
|
usesLearnedProjection() {
|
|
202
|
-
return this.projectionWeights !== null;
|
|
245
|
+
return this.hydraHeads === 'learned_projection' && this.projectionWeights !== null;
|
|
203
246
|
}
|
|
204
247
|
async match(request, fleet) {
|
|
205
248
|
const start = performance.now();
|
|
@@ -264,12 +307,52 @@ export class HydraMatcher {
|
|
|
264
307
|
}
|
|
265
308
|
/**
|
|
266
309
|
* Creates an EmbeddingProvider backed by the shared ONNX text embedder.
|
|
267
|
-
* For multi-matcher setups, create one TextEmbedder via
|
|
310
|
+
* For multi-matcher setups, create one TextEmbedder via createTextEmbedder
|
|
268
311
|
* and pass wrapHydraEmbeddingProvider(embedder) to HyDRA while sharing embed().
|
|
269
312
|
*/
|
|
270
313
|
export async function createOnnxEmbeddingProvider(artifactCachePath, options) {
|
|
271
|
-
const
|
|
314
|
+
const encoder = options?.encoder ?? DEFAULT_ENCODER;
|
|
315
|
+
const embedder = await createTextEmbedder(encoder, artifactCachePath);
|
|
272
316
|
const projectionWeights = resolveHydraProjectionWeights(options?.projectionWeightsPath ? { filePath: options.projectionWeightsPath } : undefined);
|
|
273
317
|
return wrapHydraEmbeddingProvider(embedder, projectionWeights);
|
|
274
318
|
}
|
|
319
|
+
/**
|
|
320
|
+
* Creates an EmbeddingProvider for the configured hydra_heads mode:
|
|
321
|
+
* - `learned_projection` — MiniLM/Granite embedder + SP-115 linear projection (or placeholder)
|
|
322
|
+
* - `modernbert_k4` — ModernBERT-base [CLS] with K=4 sigmoid heads (debugging excluded from shortfall)
|
|
323
|
+
*/
|
|
324
|
+
export async function createHydraEmbeddingProvider(artifactCachePath, options) {
|
|
325
|
+
const hydraHeads = options?.hydraHeads ?? DEFAULT_HYDRA_HEADS;
|
|
326
|
+
if (hydraHeads === 'modernbert_k4') {
|
|
327
|
+
const predictorOptions = options?.k4HeadWeightsPath === undefined
|
|
328
|
+
? undefined
|
|
329
|
+
: { headWeightsPath: options.k4HeadWeightsPath };
|
|
330
|
+
const predictor = await createModernBertHeadsPredictor(artifactCachePath, predictorOptions);
|
|
331
|
+
return wrapModernBertHeadsEmbeddingProvider(predictor);
|
|
332
|
+
}
|
|
333
|
+
return createOnnxEmbeddingProvider(artifactCachePath, options);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Bootstrap HyDRA matcher from operator hydra config (encoder, heads, artifact path).
|
|
337
|
+
*/
|
|
338
|
+
export async function createHydraMatcherFromHydraConfig(hydraConfig, options) {
|
|
339
|
+
const encoder = hydraConfig.encoder ?? DEFAULT_ENCODER;
|
|
340
|
+
const hydraHeads = hydraConfig.hydra_heads ?? DEFAULT_HYDRA_HEADS;
|
|
341
|
+
const provider = await createHydraEmbeddingProvider(hydraConfig.artifact_cache_path, {
|
|
342
|
+
encoder,
|
|
343
|
+
hydraHeads,
|
|
344
|
+
...(options?.projectionWeightsPath === undefined
|
|
345
|
+
? {}
|
|
346
|
+
: { projectionWeightsPath: options.projectionWeightsPath }),
|
|
347
|
+
...(options?.k4HeadWeightsPath === undefined
|
|
348
|
+
? {}
|
|
349
|
+
: { k4HeadWeightsPath: options.k4HeadWeightsPath }),
|
|
350
|
+
});
|
|
351
|
+
return new HydraMatcher(provider, {
|
|
352
|
+
artifactCachePath: hydraConfig.artifact_cache_path,
|
|
353
|
+
encoder,
|
|
354
|
+
hydraHeads,
|
|
355
|
+
...options,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
275
358
|
//# sourceMappingURL=hydra-matcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydra-matcher.js","sourceRoot":"","sources":["../../../src/domain/matching/hydra-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,aAAa,GAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AA0CvC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,CAAC,MAAM,qCAAqC,GAAG,OAAO,CAC1D,QAAQ,EACR,+BAA+B,CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;SACzD,MAAM,CAAC,2BAA2B,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC;CACvE,CAAC,CAAC;AAaH,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IACxC,IAAI,GAAG,mCAAmC,CAAC;IAE7D,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AAED,SAAS,eAAe,CAAC,KAAiB;IACxC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,GAAW;IACzD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,iCAAiC,CAAC,yBAAyB,OAAO,EAAE,EAAE;YAC9E,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,iCAAiC,CACzC,+CAA+C,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC9E,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CACxB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAA2C;IAE3C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,qCAAqC,CAAC;IAE5E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,iCAAiC,CAAC,gCAAgC,OAAO,EAAE,EAAE;YACrF,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO,+BAA+B,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,6BAA6B,CAC3C,OAA2C;IAE3C,IAAI,CAAC;QACH,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,yEAAyE,EAAE;YACtF,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,kBAAkB,CAAC,WAAmB,EAAE,UAAkB;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC;AAC/C,CAAC;AAQD,SAAS,gBAAgB,CACvB,WAA8B,EAC9B,YAA+B;IAE/B,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEhF,OAAO;QACL,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;QACjE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAoB,EAAE,CAAoB;IAClE,MAAM,GAAG,GACP,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAChF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CACpB,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CACrD,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CACpB,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CACrD,CAAC;IACF,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAEhF,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,SAAuB,EAAE,KAAa,EAAE,GAAW;IACpE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,gCAAgC,CAAC,SAAuB;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IAE5C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAClD,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;QACzD,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK,EAAE,aAAa,CAAC,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,SAAuB,EACvB,OAA+B;IAE/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,2BAA2B,EAAE,GAAG,EAAE,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC;QAClC,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,4BAA4B,CACnC,SAAuB,EACvB,OAA+B;IAE/B,MAAM,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE1F,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC;QAC/B,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC;KAChC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAuB,EACvB,OAAuC;IAEvC,IAAI,SAAS,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,sCAAsC,aAAa,SAAS,SAAS,CAAC,MAAM,EAAE,CAC/E,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,4BAA4B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,gCAAgC,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC;AAED,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAsB,EACtB,iBAAiD;IAEjD,OAAO;QACL,KAAK,CAAC,mBAAmB,CAAC,IAAY;YACpC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,CAAC,OAAO;YACX,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,MAAM,OAAO,YAAY;IACN,QAAQ,CAAoB;IAC5B,QAAQ,CAAS;IACjB,SAAS,CAAmB;IAC5B,iBAAiB,CAAgC;IAElE,YAAY,QAA2B,EAAE,MAA0B;QACjE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QACpD,IAAI,MAAM,GAAG,aAAa,IAAI,MAAM,GAAG,aAAa,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,wBAAwB,aAAa,IAAI,aAAa,WAAW,MAAM,IAAI,CAC5E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,uBAAuB,CAAC,SAAS,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,6BAA6B,CACpD,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,SAAS,CACtF,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,qBAAqB;QACnB,OAAO,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAuB,EACvB,KAA8B;QAE9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEhC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC1D,eAAe,CAAC,OAAO,CAAC,CACzB,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAExC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAC1C,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC5B,MAAM;YACR,CAAC;YAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;YAEvC,MAAM,KAAK,GAAG,YAAY;gBACxB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAEvD,UAAU,CAAC,IAAI,CAAC;gBACd,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAClB,KAAK;gBACL,SAAS,EAAE,SAAS,CAAC,GAAG;gBACxB,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;aACxD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CACjD,CAAC;QACF,MAAM,cAAc,GAAG,mBAAmB,CACxC,UAAU,EACV,YAAY,EACZ,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,MAAM,gBAAgB,GAAG,CACvB,MAAkD,EAClC,EAAE,CAAC,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,eAAe;YAC7B,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrD,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ;YACtC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAE5C,OAAO;YACL,QAAQ;YACR,UAAU,EAAE,gBAAgB;YAC5B,YAAY;YACZ,SAAS;YACT,cAAc,EAAE,SAAS,GAAG,IAAI,CAAC,QAAQ;SAC1C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAEO,oBAAoB,CAAC,GAAsB;QACjD,MAAM,IAAI,GAAyC;YACjD,WAAW;YACX,UAAU;YACV,UAAU;SACX,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CACb,kCAAkC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAQD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,iBAAyB,EACzB,OAA4C;IAE5C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACjE,MAAM,iBAAiB,GAAG,6BAA6B,CACrD,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,SAAS,CACzF,CAAC;IACF,OAAO,0BAA0B,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC"}
|
|
1
|
+
{"version":3,"file":"hydra-matcher.js","sourceRoot":"","sources":["../../../src/domain/matching/hydra-matcher.ts"],"names":[],"mappings":"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"}
|