offrouter-core 0.5.1 → 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.
Files changed (90) hide show
  1. package/dist/audit.d.ts +51 -2
  2. package/dist/audit.d.ts.map +1 -1
  3. package/dist/audit.js +60 -3
  4. package/dist/audit.js.map +1 -1
  5. package/dist/config.d.ts +26 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +160 -1
  8. package/dist/config.js.map +1 -1
  9. package/dist/delegation.d.ts +40 -0
  10. package/dist/delegation.d.ts.map +1 -1
  11. package/dist/delegation.js +169 -8
  12. package/dist/delegation.js.map +1 -1
  13. package/dist/index.d.ts +27 -13
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +15 -7
  16. package/dist/index.js.map +1 -1
  17. package/dist/llm-judge.d.ts +41 -0
  18. package/dist/llm-judge.d.ts.map +1 -0
  19. package/dist/llm-judge.js +159 -0
  20. package/dist/llm-judge.js.map +1 -0
  21. package/dist/policy.d.ts +77 -0
  22. package/dist/policy.d.ts.map +1 -1
  23. package/dist/policy.js +81 -0
  24. package/dist/policy.js.map +1 -1
  25. package/dist/provider-health.d.ts +129 -0
  26. package/dist/provider-health.d.ts.map +1 -0
  27. package/dist/provider-health.js +423 -0
  28. package/dist/provider-health.js.map +1 -0
  29. package/dist/providers/catalog-data.d.ts +7 -0
  30. package/dist/providers/catalog-data.d.ts.map +1 -1
  31. package/dist/providers/catalog-data.js +140 -53
  32. package/dist/providers/catalog-data.js.map +1 -1
  33. package/dist/providers/catalog.d.ts +3 -3
  34. package/dist/providers/catalog.d.ts.map +1 -1
  35. package/dist/providers/catalog.js +1 -0
  36. package/dist/providers/catalog.js.map +1 -1
  37. package/dist/proxy/anthropic-mapper.d.ts +585 -0
  38. package/dist/proxy/anthropic-mapper.d.ts.map +1 -0
  39. package/dist/proxy/anthropic-mapper.js +539 -0
  40. package/dist/proxy/anthropic-mapper.js.map +1 -0
  41. package/dist/proxy/anthropic-server.d.ts +24 -0
  42. package/dist/proxy/anthropic-server.d.ts.map +1 -0
  43. package/dist/proxy/anthropic-server.js +606 -0
  44. package/dist/proxy/anthropic-server.js.map +1 -0
  45. package/dist/proxy/classify.d.ts +17 -0
  46. package/dist/proxy/classify.d.ts.map +1 -0
  47. package/dist/proxy/classify.js +65 -0
  48. package/dist/proxy/classify.js.map +1 -0
  49. package/dist/proxy/responses-mapper.d.ts +15 -0
  50. package/dist/proxy/responses-mapper.d.ts.map +1 -1
  51. package/dist/proxy/responses-mapper.js +9 -2
  52. package/dist/proxy/responses-mapper.js.map +1 -1
  53. package/dist/proxy/responses-server.d.ts.map +1 -1
  54. package/dist/proxy/responses-server.js +14 -1
  55. package/dist/proxy/responses-server.js.map +1 -1
  56. package/dist/router.d.ts +36 -2
  57. package/dist/router.d.ts.map +1 -1
  58. package/dist/router.js +158 -23
  59. package/dist/router.js.map +1 -1
  60. package/dist/schemas.d.ts +115 -34
  61. package/dist/schemas.d.ts.map +1 -1
  62. package/dist/schemas.js +35 -0
  63. package/dist/schemas.js.map +1 -1
  64. package/dist/secret-scan.d.ts +40 -0
  65. package/dist/secret-scan.d.ts.map +1 -0
  66. package/dist/secret-scan.js +125 -0
  67. package/dist/secret-scan.js.map +1 -0
  68. package/dist/secrets.d.ts +77 -6
  69. package/dist/secrets.d.ts.map +1 -1
  70. package/dist/secrets.js +356 -32
  71. package/dist/secrets.js.map +1 -1
  72. package/dist/spend.d.ts +122 -0
  73. package/dist/spend.d.ts.map +1 -0
  74. package/dist/spend.js +279 -0
  75. package/dist/spend.js.map +1 -0
  76. package/dist/task-classifier.d.ts +45 -0
  77. package/dist/task-classifier.d.ts.map +1 -0
  78. package/dist/task-classifier.js +153 -0
  79. package/dist/task-classifier.js.map +1 -0
  80. package/dist/types.d.ts +46 -1
  81. package/dist/types.d.ts.map +1 -1
  82. package/dist/usage-file.d.ts +2 -6
  83. package/dist/usage-file.d.ts.map +1 -1
  84. package/dist/usage-file.js +64 -6
  85. package/dist/usage-file.js.map +1 -1
  86. package/dist/usage.d.ts +64 -10
  87. package/dist/usage.d.ts.map +1 -1
  88. package/dist/usage.js +79 -5
  89. package/dist/usage.js.map +1 -1
  90. package/package.json +1 -1
package/dist/router.js CHANGED
@@ -1,8 +1,8 @@
1
- /**
2
- * Deterministic model scoring and route explain for OffRouter V1.
3
- */
4
1
  import { evaluatePolicy } from "./policy.js";
2
+ import { NEUTRAL_HEALTH_SCORE, } from "./provider-health.js";
5
3
  import { ROUTE_PROTOCOL_VERSION } from "./protocol.js";
4
+ /** Rank boost applied within a tier when high-confidence family matches. */
5
+ const CLASSIFICATION_FAMILY_BOOST = 1;
6
6
  function candidateId(c) {
7
7
  return `${c.providerId}:${c.modelId}`;
8
8
  }
@@ -14,9 +14,17 @@ function candidateId(c) {
14
14
  * 3. Local
15
15
  * 4. Degraded subscription (active + degraded)
16
16
  * 5. API-key
17
- * Within same tier: lower estimatedCostUsd, then providerId, then modelId.
17
+ * Within same tier: higher recent healthScore (optional tracker), then high-
18
+ * confidence classification family match, then lower estimatedCostUsd, then
19
+ * providerId, then modelId.
20
+ *
21
+ * HARD INVARIANT: tierRank is always the primary key. Health re-ordering and
22
+ * classification preference never promote an api-key candidate over a
23
+ * subscription candidate.
18
24
  */
19
- function rankKey(c) {
25
+ /** Boost applied to a rule-preferred tier. Must exceed any native tierRank gap. */
26
+ const RULE_TIER_PREFERENCE_BOOST = 1_000;
27
+ function rankKey(c, healthScore = NEUTRAL_HEALTH_SCORE, familyMatchBoost = 0, preferredTier) {
20
28
  let tierRank;
21
29
  if (c.authTier === "subscription") {
22
30
  if (c.health === "healthy") {
@@ -36,21 +44,113 @@ function rankKey(c) {
36
44
  // api-key
37
45
  tierRank = 100;
38
46
  }
47
+ if (preferredTier !== undefined && c.authTier === preferredTier) {
48
+ tierRank += RULE_TIER_PREFERENCE_BOOST;
49
+ }
39
50
  // Invert cost so higher is better; missing cost treated as mid-ish.
40
51
  const cost = c.estimatedCostUsd ?? 0.05;
41
52
  const costScore = -cost;
42
- return [tierRank, costScore, c.providerId, c.modelId];
53
+ return [
54
+ tierRank,
55
+ healthScore,
56
+ familyMatchBoost,
57
+ costScore,
58
+ c.providerId,
59
+ c.modelId,
60
+ ];
61
+ }
62
+ function resolveHealthScore(c, tracker) {
63
+ if (!tracker)
64
+ return NEUTRAL_HEALTH_SCORE;
65
+ return tracker.healthScore(c.providerId, c.modelId);
66
+ }
67
+ function familyMatchBoostFor(c, classification) {
68
+ // Only high-confidence classifications reorder; medium/low are explain-only.
69
+ if (!classification || classification.confidence !== "high")
70
+ return 0;
71
+ if (!c.family)
72
+ return 0;
73
+ return c.family === classification.recommendedFamily
74
+ ? CLASSIFICATION_FAMILY_BOOST
75
+ : 0;
76
+ }
77
+ /**
78
+ * Apply user-defined routing rules after policy gating and before ranking.
79
+ * Rules pick among ALLOWED candidates only. The first matching rule wins.
80
+ * A rule whose pinned model/provider has no allowed match is skipped.
81
+ */
82
+ function applyRules(allowed, rules, role, classification) {
83
+ if (!rules || rules.length === 0) {
84
+ return { candidates: allowed };
85
+ }
86
+ for (let i = 0; i < rules.length; i++) {
87
+ const rule = rules[i];
88
+ const matchedKeys = [];
89
+ if (rule.role !== undefined) {
90
+ if (rule.role !== role)
91
+ continue;
92
+ matchedKeys.push("role");
93
+ }
94
+ if (rule.family !== undefined) {
95
+ if (classification?.recommendedFamily !== rule.family)
96
+ continue;
97
+ matchedKeys.push("family");
98
+ }
99
+ if (rule.model !== undefined) {
100
+ const slashIdx = rule.model.indexOf("/");
101
+ if (slashIdx <= 0 || slashIdx === rule.model.length - 1) {
102
+ // Malformed model pin; skip this rule.
103
+ continue;
104
+ }
105
+ const providerId = rule.model.slice(0, slashIdx);
106
+ const modelId = rule.model.slice(slashIdx + 1);
107
+ const filtered = allowed.filter((c) => c.providerId === providerId && c.modelId === modelId);
108
+ if (filtered.length === 0)
109
+ continue;
110
+ return {
111
+ candidates: filtered,
112
+ match: { index: i, matchedKeys, target: "model" },
113
+ };
114
+ }
115
+ if (rule.provider !== undefined) {
116
+ const filtered = allowed.filter((c) => c.providerId === rule.provider);
117
+ if (filtered.length === 0)
118
+ continue;
119
+ return {
120
+ candidates: filtered,
121
+ match: { index: i, matchedKeys, target: "provider" },
122
+ };
123
+ }
124
+ if (rule.tier !== undefined) {
125
+ return {
126
+ candidates: allowed,
127
+ preferredTier: rule.tier,
128
+ match: { index: i, matchedKeys, target: "tier" },
129
+ };
130
+ }
131
+ }
132
+ return { candidates: allowed };
43
133
  }
44
- function sortCandidates(candidates) {
134
+ function sortCandidates(candidates, healthTracker, classification, preferredTier) {
45
135
  return [...candidates].sort((a, b) => {
46
- const ka = rankKey(a);
47
- const kb = rankKey(b);
48
- // tierRank desc
136
+ const ha = resolveHealthScore(a, healthTracker);
137
+ const hb = resolveHealthScore(b, healthTracker);
138
+ const fa = familyMatchBoostFor(a, classification);
139
+ const fb = familyMatchBoostFor(b, classification);
140
+ const ka = rankKey(a, ha, fa, preferredTier);
141
+ const kb = rankKey(b, hb, fb, preferredTier);
142
+ // tierRank desc — NEVER crossed by health or classification
49
143
  if (ka[0] !== kb[0])
50
144
  return kb[0] - ka[0];
51
- // costScore desc (higher costScore => cheaper)
145
+ // healthScore desc (within same tier only)
52
146
  if (ka[1] !== kb[1])
53
147
  return kb[1] - ka[1];
148
+ // high-confidence family match desc (within same tier + health only)
149
+ if (ka[2] !== kb[2])
150
+ return kb[2] - ka[2];
151
+ // costScore desc (higher costScore => cheaper)
152
+ if (ka[3] !== kb[3])
153
+ return kb[3] - ka[3];
54
154
  if (a.providerId !== b.providerId) {
55
155
  return a.providerId < b.providerId ? -1 : 1;
56
156
  }
@@ -88,7 +188,7 @@ function selectionReason(winner) {
88
188
  explanation: `Selected API-key candidate ${candidateId(winner)} because no healthy subscription candidate could satisfy the task.`,
89
189
  };
90
190
  }
91
- function buildFallbackChain(sorted, winner) {
191
+ function buildFallbackChain(sorted, winner, healthTracker) {
92
192
  const { fallbackReason } = selectionReason(winner);
93
193
  const chain = [
94
194
  {
@@ -96,6 +196,9 @@ function buildFallbackChain(sorted, winner) {
96
196
  model: winner.modelId,
97
197
  authTier: winner.authTier,
98
198
  reason: fallbackReason,
199
+ ...(healthTracker
200
+ ? { healthScore: resolveHealthScore(winner, healthTracker) }
201
+ : {}),
99
202
  },
100
203
  ];
101
204
  // Include a short ordered list of alternative ranked candidates for explain.
@@ -124,6 +227,9 @@ function buildFallbackChain(sorted, winner) {
124
227
  model: c.modelId,
125
228
  authTier: c.authTier,
126
229
  reason,
230
+ ...(healthTracker
231
+ ? { healthScore: resolveHealthScore(c, healthTracker) }
232
+ : {}),
127
233
  });
128
234
  if (chain.length >= 5)
129
235
  break;
@@ -140,6 +246,23 @@ function confidenceFor(winner, nAllowed) {
140
246
  return 0.7;
141
247
  return 0.6;
142
248
  }
249
+ /** Copy classification onto a decision for explain/audit (no prompt text). */
250
+ function withClassification(decision, classification, classifierName) {
251
+ if (!classification)
252
+ return decision;
253
+ const next = {
254
+ ...decision,
255
+ classification: {
256
+ recommendedFamily: classification.recommendedFamily,
257
+ confidence: classification.confidence,
258
+ signals: [...classification.signals],
259
+ },
260
+ };
261
+ if (classifierName) {
262
+ next.classifierName = classifierName;
263
+ }
264
+ return next;
265
+ }
143
266
  /**
144
267
  * Route a request against candidates under policy.
145
268
  * Pure and deterministic: same inputs -> same decision (except optional decisionId).
@@ -147,6 +270,8 @@ function confidenceFor(winner, nAllowed) {
147
270
  export function routeRequest(request, candidates, config, options = {}) {
148
271
  const decisionId = options.decisionId ??
149
272
  `dec_${request.requestId}_${candidates.length}_${request.harness.profile}`;
273
+ const classification = options.classification;
274
+ const classifierName = options.classifierName;
150
275
  // Empty catalog -> needs configuration (even before profile denials, so
151
276
  // tests/docs can distinguish "no providers set up"). But work profiles still
152
277
  // block on policy; empty list with blocked profile binary is fine either way.
@@ -160,7 +285,7 @@ export function routeRequest(request, candidates, config, options = {}) {
160
285
  d.code === "privacy_label_denied" ||
161
286
  d.code === "project_untrusted");
162
287
  if (hardBlock) {
163
- return {
288
+ return withClassification({
164
289
  protocolVersion: ROUTE_PROTOCOL_VERSION,
165
290
  decisionId,
166
291
  requestId: request.requestId,
@@ -173,9 +298,9 @@ export function routeRequest(request, candidates, config, options = {}) {
173
298
  auditSummary: `Blocked profile=${request.harness.profile} digests=${request.task.promptDigest}`,
174
299
  blocked: true,
175
300
  needsConfiguration: false,
176
- };
301
+ }, classification, classifierName);
177
302
  }
178
- return {
303
+ return withClassification({
179
304
  protocolVersion: ROUTE_PROTOCOL_VERSION,
180
305
  decisionId,
181
306
  requestId: request.requestId,
@@ -188,7 +313,7 @@ export function routeRequest(request, candidates, config, options = {}) {
188
313
  auditSummary: `Needs configuration profile=${request.harness.profile} digest=${request.task.promptDigest}`,
189
314
  blocked: true,
190
315
  needsConfiguration: true,
191
- };
316
+ }, classification, classifierName);
192
317
  }
193
318
  const policy = evaluatePolicy(request, candidates, config);
194
319
  if (policy.allowed.length === 0) {
@@ -199,11 +324,15 @@ export function routeRequest(request, candidates, config, options = {}) {
199
324
  // nothing is policy-profile blocked and no usable routes after hard filters.
200
325
  const onlyCapabilityOrCostOrApiKey = policy.denials.every((d) => d.code === "capability_missing" ||
201
326
  d.code === "cost_cap_exceeded" ||
327
+ d.code === "spend_cap_exceeded" ||
202
328
  d.code === "local_only_required" ||
203
329
  d.code === "api_key_blocked_by_subscription_first_policy" ||
204
330
  d.code === "provider_denied" ||
205
- d.code === "subscription_scope_denied");
206
- return {
331
+ d.code === "subscription_scope_denied" ||
332
+ d.code === "model_not_allowed" ||
333
+ d.code === "api_spend_approval_required" ||
334
+ d.code === "subscription_switch_requires_ack");
335
+ return withClassification({
207
336
  protocolVersion: ROUTE_PROTOCOL_VERSION,
208
337
  decisionId,
209
338
  requestId: request.requestId,
@@ -221,9 +350,10 @@ export function routeRequest(request, candidates, config, options = {}) {
221
350
  auditSummary: `Blocked profile=${request.harness.profile} denials=${policy.denials.length} digest=${request.task.promptDigest}`,
222
351
  blocked: true,
223
352
  needsConfiguration: !profileHardBlock && policy.denials.length === 0,
224
- };
353
+ }, classification, classifierName);
225
354
  }
226
- const sorted = sortCandidates(policy.allowed);
355
+ const ruleApplication = applyRules(policy.allowed, options.rules, options.role, classification);
356
+ const sorted = sortCandidates(ruleApplication.candidates, options.healthTracker, classification, ruleApplication.preferredTier);
227
357
  const winner = sorted[0];
228
358
  const { reason, explanation, fallbackReason } = selectionReason(winner);
229
359
  // If winner is api-key but there were subscription denials for exhausted etc
@@ -246,7 +376,7 @@ export function routeRequest(request, candidates, config, options = {}) {
246
376
  finalFallback = "primary";
247
377
  finalExplanation = `Selected cheap allowed candidate ${candidateId(winner)} for low-risk task.`;
248
378
  }
249
- const fallbackChain = buildFallbackChain(sorted, winner);
379
+ const fallbackChain = buildFallbackChain(sorted, winner, options.healthTracker);
250
380
  // Fix primary entry reason if we rewrote fallback reason
251
381
  if (fallbackChain[0]) {
252
382
  fallbackChain[0] = { ...fallbackChain[0], reason: finalFallback };
@@ -269,7 +399,11 @@ export function routeRequest(request, candidates, config, options = {}) {
269
399
  if (nearLimitWarning) {
270
400
  finalExplanation = `${finalExplanation} ${nearLimitWarning}`;
271
401
  }
272
- return {
402
+ const rulePrefix = ruleApplication.match
403
+ ? `Matched routing rule ${ruleApplication.match.index} (${ruleApplication.match.matchedKeys.join(", ")}) → ${ruleApplication.match.target}.`
404
+ : "No rule matched (auto).";
405
+ finalExplanation = `${rulePrefix} ${finalExplanation}`;
406
+ return withClassification({
273
407
  protocolVersion: ROUTE_PROTOCOL_VERSION,
274
408
  decisionId,
275
409
  requestId: request.requestId,
@@ -289,7 +423,8 @@ export function routeRequest(request, candidates, config, options = {}) {
289
423
  blocked: false,
290
424
  needsConfiguration: false,
291
425
  nearLimitWarning,
292
- };
426
+ routingRule: ruleApplication.match,
427
+ }, classification, classifierName);
293
428
  }
294
429
  /** @internal exported for focused testing */
295
430
  export { sortCandidates };
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}