@monoes/routing 1.0.1 → 1.0.2
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/dist/llm-fallback.d.ts.map +1 -1
- package/dist/llm-fallback.js +15 -18
- package/dist/llm-fallback.js.map +1 -1
- package/dist/route-layer.d.ts.map +1 -1
- package/dist/route-layer.js +10 -3
- package/dist/route-layer.js.map +1 -1
- package/dist/types.d.ts +20 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-fallback.d.ts","sourceRoot":"","sources":["../src/llm-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOnE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAoB;IAClC,qDAAqD;IACrD,OAAO,CAAC,cAAc,CAA6B;IAEnD,YAAY,MAAM,EAAE,iBAAiB,EAEpC;IAED;;OAEG;IACG,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,KAAK,EAAE,EACf,MAAM,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GACrE,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"llm-fallback.d.ts","sourceRoot":"","sources":["../src/llm-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOnE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAoB;IAClC,qDAAqD;IACrD,OAAO,CAAC,cAAc,CAA6B;IAEnD,YAAY,MAAM,EAAE,iBAAiB,EAEpC;IAED;;OAEG;IACG,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,KAAK,EAAE,EACf,MAAM,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GACrE,OAAO,CAAC,WAAW,CAAC,CA0DtB;IAED,6DAA6D;IAC7D,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEzC;CACF"}
|
package/dist/llm-fallback.js
CHANGED
|
@@ -22,6 +22,18 @@ export class LLMFallbackRouter {
|
|
|
22
22
|
const capabilityIndex = buildCapabilityIndex(routes);
|
|
23
23
|
const candidateHints = buildCandidateHints(scores);
|
|
24
24
|
const prompt = buildClassificationPrompt(taskDescription, capabilityIndex, candidateHints);
|
|
25
|
+
// Every branch below where the LLM does not yield a usable slug returns
|
|
26
|
+
// the nearest *semantic* match. That result must not be labelled
|
|
27
|
+
// 'llm_fallback' — no LLM answer was used, and `confidence` is the encoder
|
|
28
|
+
// cosine score, not an LLM confidence. Labelling it 'llm_fallback' made a
|
|
29
|
+
// failed fallback indistinguishable from a successful one at every call
|
|
30
|
+
// site, including the `monomind route` output box.
|
|
31
|
+
const degraded = () => ({
|
|
32
|
+
agentSlug: nearestRoute.agentSlug,
|
|
33
|
+
confidence: nearestRoute.score,
|
|
34
|
+
method: 'semantic_degraded',
|
|
35
|
+
routeName: nearestRoute.routeName,
|
|
36
|
+
});
|
|
25
37
|
// Call LLM
|
|
26
38
|
let rawResponse;
|
|
27
39
|
try {
|
|
@@ -29,34 +41,19 @@ export class LLMFallbackRouter {
|
|
|
29
41
|
}
|
|
30
42
|
catch (err) {
|
|
31
43
|
console.error('[LLMFallback] LLM call failed, using best semantic match:', err);
|
|
32
|
-
return
|
|
33
|
-
agentSlug: nearestRoute.agentSlug,
|
|
34
|
-
confidence: nearestRoute.score,
|
|
35
|
-
method: 'llm_fallback',
|
|
36
|
-
routeName: nearestRoute.routeName,
|
|
37
|
-
};
|
|
44
|
+
return degraded();
|
|
38
45
|
}
|
|
39
46
|
// Parse and validate the slug
|
|
40
47
|
const slug = rawResponse.trim().replace(/[`'"]/g, '').toLowerCase();
|
|
41
48
|
if (!SLUG_PATTERN.test(slug)) {
|
|
42
49
|
console.error(`[LLMFallback] Invalid slug in LLM response: "${slug}"`);
|
|
43
|
-
return
|
|
44
|
-
agentSlug: nearestRoute.agentSlug,
|
|
45
|
-
confidence: nearestRoute.score,
|
|
46
|
-
method: 'llm_fallback',
|
|
47
|
-
routeName: nearestRoute.routeName,
|
|
48
|
-
};
|
|
50
|
+
return degraded();
|
|
49
51
|
}
|
|
50
52
|
// Verify slug exists in routes — compare case-insensitively since slug is lowercased
|
|
51
53
|
const matchedRoute = routes.find(r => r.agentSlug.toLowerCase() === slug);
|
|
52
54
|
if (!matchedRoute) {
|
|
53
55
|
console.error(`[LLMFallback] LLM returned unknown slug: "${slug}"`);
|
|
54
|
-
return
|
|
55
|
-
agentSlug: nearestRoute.agentSlug,
|
|
56
|
-
confidence: nearestRoute.score,
|
|
57
|
-
method: 'llm_fallback',
|
|
58
|
-
routeName: nearestRoute.routeName,
|
|
59
|
-
};
|
|
56
|
+
return degraded();
|
|
60
57
|
}
|
|
61
58
|
return {
|
|
62
59
|
agentSlug: matchedRoute.agentSlug, // use canonical casing from route definition
|
package/dist/llm-fallback.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-fallback.js","sourceRoot":"","sources":["../src/llm-fallback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,qEAAqE;AACrE,MAAM,YAAY,GAAG,+BAA+B,CAAC;AAErD,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAoB;IAClC,qDAAqD;IAC7C,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEnD,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,eAAuB,EACvB,MAAe,EACf,MAAsE;QAEtE,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/B,yBAAyB;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,qBAAqB,CAAC;QACnE,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,YAAY,CAAC,SAAS,EACtB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAC3D,CAAC;QAEF,eAAe;QACf,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,yBAAyB,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QAE3F,WAAW;QACX,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,2DAA2D,EAAE,GAAG,CAAC,CAAC;YAChF,OAAO
|
|
1
|
+
{"version":3,"file":"llm-fallback.js","sourceRoot":"","sources":["../src/llm-fallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-layer.d.ts","sourceRoot":"","sources":["../src/route-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAWlE,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAmB;IAEzC,YAAY,MAAM,EAAE,gBAAgB,EAkBnC;IAED;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBhC;IAED;;;OAGG;IACG,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"route-layer.d.ts","sourceRoot":"","sources":["../src/route-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAWlE,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAmB;IAEzC,YAAY,MAAM,EAAE,gBAAgB,EAkBnC;IAED;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBhC;IAED;;;OAGG;IACG,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAsEzD;IAED;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1C;CACF"}
|
package/dist/route-layer.js
CHANGED
|
@@ -68,10 +68,12 @@ export class RouteLayer {
|
|
|
68
68
|
}
|
|
69
69
|
await this.initialize();
|
|
70
70
|
if (this.centroids.length === 0) {
|
|
71
|
+
// No routes to score and no LLM consulted — this is a degraded default,
|
|
72
|
+
// not a fallback that ran. It used to report method 'llm_fallback'.
|
|
71
73
|
return {
|
|
72
74
|
agentSlug: 'general-purpose',
|
|
73
75
|
confidence: 0,
|
|
74
|
-
method: '
|
|
76
|
+
method: 'semantic_degraded',
|
|
75
77
|
routeName: 'fallback',
|
|
76
78
|
};
|
|
77
79
|
}
|
|
@@ -86,9 +88,14 @@ export class RouteLayer {
|
|
|
86
88
|
}));
|
|
87
89
|
scores.sort((a, b) => b.score - a.score);
|
|
88
90
|
const best = scores[0];
|
|
89
|
-
const
|
|
91
|
+
const belowThreshold = best.score < (best.threshold ?? globalThreshold);
|
|
92
|
+
// Below threshold with no LLM configured means nothing escalated: the
|
|
93
|
+
// returned slug is the nearest centroid, so report it as degraded rather
|
|
94
|
+
// than as an 'llm_fallback' that never happened. (When an LLM *is*
|
|
95
|
+
// configured, classify() below owns the label.)
|
|
96
|
+
const method = belowThreshold ? 'semantic_degraded' : 'semantic';
|
|
90
97
|
// Delegate to LLM fallback when below threshold and configured
|
|
91
|
-
if (
|
|
98
|
+
if (belowThreshold && this.llmFallback) {
|
|
92
99
|
const fallbackResult = await this.llmFallback.classify(taskDescription, this.config.routes, scores);
|
|
93
100
|
if (this.config.debug) {
|
|
94
101
|
fallbackResult.allScores = scores.map(s => ({
|
package/dist/route-layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-layer.js","sourceRoot":"","sources":["../src/route-layer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"route-layer.js","sourceRoot":"","sources":["../src/route-layer.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -22,8 +22,26 @@ export interface RouteResult {
|
|
|
22
22
|
agentSlug: string;
|
|
23
23
|
/** Cosine similarity score (0.0–1.0) */
|
|
24
24
|
confidence: number;
|
|
25
|
-
/**
|
|
26
|
-
|
|
25
|
+
/**
|
|
26
|
+
* How the routing decision was made.
|
|
27
|
+
*
|
|
28
|
+
* - `keyword` — matched by the deterministic keyword pre-filter.
|
|
29
|
+
* - `semantic` — the top centroid scored at or above threshold.
|
|
30
|
+
* - `llm_fallback` — an LLM was called AND returned a usable agent slug.
|
|
31
|
+
* - `semantic_degraded` — the intended path did not produce an answer, so
|
|
32
|
+
* the nearest semantic match was returned instead. Emitted when the LLM
|
|
33
|
+
* call throws, returns a malformed slug, or names an unknown agent, and
|
|
34
|
+
* when there are no routes at all. `confidence` on this branch is the raw
|
|
35
|
+
* cosine score of the nearest centroid (or 0), NOT an LLM confidence.
|
|
36
|
+
*
|
|
37
|
+
* `semantic_degraded` exists so a *failed* fallback is not reported as a
|
|
38
|
+
* successful one: every degraded branch used to return `llm_fallback` with
|
|
39
|
+
* the encoder score as `confidence`, which the CLI printed verbatim as
|
|
40
|
+
* "Method: llm_fallback / Confidence: N%". Callers that want "was this a
|
|
41
|
+
* confident match?" should test `method === 'semantic'`; callers that want
|
|
42
|
+
* "did anything go wrong?" should test for the `_degraded` suffix.
|
|
43
|
+
*/
|
|
44
|
+
method: 'semantic' | 'keyword' | 'llm_fallback' | 'semantic_degraded';
|
|
27
45
|
/** The route name that matched */
|
|
28
46
|
routeName: string;
|
|
29
47
|
/** All routes with their scores, for debugging */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,mBAAmB,CAAC;IACtE,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3B,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACvB,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mEAAmE;IACnE,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtG;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@monoes/routing",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Semantic task-to-agent routing for monomind",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"scripts": {
|
|
19
19
|
"build": "tsc",
|
|
20
20
|
"test": "vitest run",
|
|
21
|
-
"test:coverage": "vitest run --coverage"
|
|
21
|
+
"test:coverage": "vitest run --coverage",
|
|
22
|
+
"prepublishOnly": "rm -f tsconfig.tsbuildinfo && npm run build"
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
24
25
|
"zod": "^3.22.0"
|