@blockrun/clawrouter 0.12.95 → 0.12.97

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 (282) hide show
  1. package/dist/auth.d.ts +82 -0
  2. package/dist/auth.d.ts.map +1 -0
  3. package/dist/auth.js +388 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/balance.d.ts +97 -0
  6. package/dist/balance.d.ts.map +1 -0
  7. package/dist/balance.js +157 -0
  8. package/dist/balance.js.map +1 -0
  9. package/dist/cli.d.ts +15 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +256 -54994
  12. package/dist/cli.js.map +1 -1
  13. package/dist/compression/codebook.d.ts +24 -0
  14. package/dist/compression/codebook.d.ts.map +1 -0
  15. package/dist/compression/codebook.js +119 -0
  16. package/dist/compression/codebook.js.map +1 -0
  17. package/dist/compression/index.d.ts +33 -0
  18. package/dist/compression/index.d.ts.map +1 -0
  19. package/dist/compression/index.js +246 -0
  20. package/dist/compression/index.js.map +1 -0
  21. package/dist/compression/layers/deduplication.d.ts +28 -0
  22. package/dist/compression/layers/deduplication.d.ts.map +1 -0
  23. package/dist/compression/layers/deduplication.js +101 -0
  24. package/dist/compression/layers/deduplication.js.map +1 -0
  25. package/dist/compression/layers/dictionary.d.ts +21 -0
  26. package/dist/compression/layers/dictionary.d.ts.map +1 -0
  27. package/dist/compression/layers/dictionary.js +73 -0
  28. package/dist/compression/layers/dictionary.js.map +1 -0
  29. package/dist/compression/layers/dynamic-codebook.d.ts +26 -0
  30. package/dist/compression/layers/dynamic-codebook.d.ts.map +1 -0
  31. package/dist/compression/layers/dynamic-codebook.js +149 -0
  32. package/dist/compression/layers/dynamic-codebook.js.map +1 -0
  33. package/dist/compression/layers/json-compact.d.ts +23 -0
  34. package/dist/compression/layers/json-compact.d.ts.map +1 -0
  35. package/dist/compression/layers/json-compact.js +79 -0
  36. package/dist/compression/layers/json-compact.js.map +1 -0
  37. package/dist/compression/layers/observation.d.ts +21 -0
  38. package/dist/compression/layers/observation.d.ts.map +1 -0
  39. package/dist/compression/layers/observation.js +130 -0
  40. package/dist/compression/layers/observation.js.map +1 -0
  41. package/dist/compression/layers/paths.d.ts +24 -0
  42. package/dist/compression/layers/paths.d.ts.map +1 -0
  43. package/dist/compression/layers/paths.js +110 -0
  44. package/dist/compression/layers/paths.js.map +1 -0
  45. package/dist/compression/layers/whitespace.d.ts +27 -0
  46. package/dist/compression/layers/whitespace.d.ts.map +1 -0
  47. package/dist/compression/layers/whitespace.js +60 -0
  48. package/dist/compression/layers/whitespace.js.map +1 -0
  49. package/dist/compression/types.d.ts +84 -0
  50. package/dist/compression/types.d.ts.map +1 -0
  51. package/dist/compression/types.js +27 -0
  52. package/dist/compression/types.js.map +1 -0
  53. package/dist/config.d.ts +12 -0
  54. package/dist/config.d.ts.map +1 -0
  55. package/dist/config.js +22 -0
  56. package/dist/config.js.map +1 -0
  57. package/dist/dedup.d.ts +34 -0
  58. package/dist/dedup.d.ts.map +1 -0
  59. package/dist/dedup.js +150 -0
  60. package/dist/dedup.js.map +1 -0
  61. package/dist/doctor.d.ts +8 -0
  62. package/dist/doctor.d.ts.map +1 -0
  63. package/dist/doctor.js +375 -0
  64. package/dist/doctor.js.map +1 -0
  65. package/dist/error-classification.test.d.ts +2 -0
  66. package/dist/error-classification.test.d.ts.map +1 -0
  67. package/dist/error-classification.test.js +59 -0
  68. package/dist/error-classification.test.js.map +1 -0
  69. package/dist/errors.d.ts +54 -0
  70. package/dist/errors.d.ts.map +1 -0
  71. package/dist/errors.js +85 -0
  72. package/dist/errors.js.map +1 -0
  73. package/dist/exclude-models.d.ts +28 -0
  74. package/dist/exclude-models.d.ts.map +1 -0
  75. package/dist/exclude-models.integration.test.d.ts +2 -0
  76. package/dist/exclude-models.integration.test.d.ts.map +1 -0
  77. package/dist/exclude-models.integration.test.js +46 -0
  78. package/dist/exclude-models.integration.test.js.map +1 -0
  79. package/dist/exclude-models.js +70 -0
  80. package/dist/exclude-models.js.map +1 -0
  81. package/dist/exclude-models.test.d.ts +5 -0
  82. package/dist/exclude-models.test.d.ts.map +1 -0
  83. package/dist/exclude-models.test.js +95 -0
  84. package/dist/exclude-models.test.js.map +1 -0
  85. package/dist/fs-read.d.ts +11 -0
  86. package/dist/fs-read.d.ts.map +1 -0
  87. package/dist/fs-read.js +47 -0
  88. package/dist/fs-read.js.map +1 -0
  89. package/dist/index.d.ts +34 -1368
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +1071 -56194
  92. package/dist/index.js.map +1 -1
  93. package/dist/journal.d.ts +67 -0
  94. package/dist/journal.d.ts.map +1 -0
  95. package/dist/journal.js +184 -0
  96. package/dist/journal.js.map +1 -0
  97. package/dist/journal.test.d.ts +2 -0
  98. package/dist/journal.test.d.ts.map +1 -0
  99. package/dist/journal.test.js +201 -0
  100. package/dist/journal.test.js.map +1 -0
  101. package/dist/logger.d.ts +33 -0
  102. package/dist/logger.d.ts.map +1 -0
  103. package/dist/logger.js +35 -0
  104. package/dist/logger.js.map +1 -0
  105. package/dist/models.d.ts +107 -0
  106. package/dist/models.d.ts.map +1 -0
  107. package/dist/models.js +941 -0
  108. package/dist/models.js.map +1 -0
  109. package/dist/models.test.d.ts +2 -0
  110. package/dist/models.test.d.ts.map +1 -0
  111. package/dist/models.test.js +38 -0
  112. package/dist/models.test.js.map +1 -0
  113. package/dist/partners/index.d.ts +8 -0
  114. package/dist/partners/index.d.ts.map +1 -0
  115. package/dist/partners/index.js +6 -0
  116. package/dist/partners/index.js.map +1 -0
  117. package/dist/partners/registry.d.ts +51 -0
  118. package/dist/partners/registry.d.ts.map +1 -0
  119. package/dist/partners/registry.js +256 -0
  120. package/dist/partners/registry.js.map +1 -0
  121. package/dist/partners/tools.d.ts +24 -0
  122. package/dist/partners/tools.d.ts.map +1 -0
  123. package/dist/partners/tools.js +97 -0
  124. package/dist/partners/tools.js.map +1 -0
  125. package/dist/payment-preauth.d.ts +17 -0
  126. package/dist/payment-preauth.d.ts.map +1 -0
  127. package/dist/payment-preauth.js +102 -0
  128. package/dist/payment-preauth.js.map +1 -0
  129. package/dist/provider.d.ts +19 -0
  130. package/dist/provider.d.ts.map +1 -0
  131. package/dist/provider.js +45 -0
  132. package/dist/provider.js.map +1 -0
  133. package/dist/proxy.d.ts +210 -0
  134. package/dist/proxy.d.ts.map +1 -0
  135. package/dist/proxy.debrand.test.d.ts +2 -0
  136. package/dist/proxy.debrand.test.d.ts.map +1 -0
  137. package/dist/proxy.debrand.test.js +101 -0
  138. package/dist/proxy.debrand.test.js.map +1 -0
  139. package/dist/proxy.degraded-response.test.d.ts +2 -0
  140. package/dist/proxy.degraded-response.test.d.ts.map +1 -0
  141. package/dist/proxy.degraded-response.test.js +105 -0
  142. package/dist/proxy.degraded-response.test.js.map +1 -0
  143. package/dist/proxy.image-download.test.d.ts +2 -0
  144. package/dist/proxy.image-download.test.d.ts.map +1 -0
  145. package/dist/proxy.image-download.test.js +92 -0
  146. package/dist/proxy.image-download.test.js.map +1 -0
  147. package/dist/proxy.js +3810 -0
  148. package/dist/proxy.js.map +1 -0
  149. package/dist/proxy.models-endpoint.test.d.ts +2 -0
  150. package/dist/proxy.models-endpoint.test.d.ts.map +1 -0
  151. package/dist/proxy.models-endpoint.test.js +19 -0
  152. package/dist/proxy.models-endpoint.test.js.map +1 -0
  153. package/dist/proxy.multiturn-thinking.test.d.ts +2 -0
  154. package/dist/proxy.multiturn-thinking.test.d.ts.map +1 -0
  155. package/dist/proxy.multiturn-thinking.test.js +82 -0
  156. package/dist/proxy.multiturn-thinking.test.js.map +1 -0
  157. package/dist/proxy.payment-chain-reuse.test.d.ts +2 -0
  158. package/dist/proxy.payment-chain-reuse.test.d.ts.map +1 -0
  159. package/dist/proxy.payment-chain-reuse.test.js +30 -0
  160. package/dist/proxy.payment-chain-reuse.test.js.map +1 -0
  161. package/dist/proxy.solana-resilience.test.d.ts +12 -0
  162. package/dist/proxy.solana-resilience.test.d.ts.map +1 -0
  163. package/dist/proxy.solana-resilience.test.js +39 -0
  164. package/dist/proxy.solana-resilience.test.js.map +1 -0
  165. package/dist/report.d.ts +6 -0
  166. package/dist/report.d.ts.map +1 -0
  167. package/dist/report.js +44 -0
  168. package/dist/report.js.map +1 -0
  169. package/dist/response-cache.advanced.test.d.ts +2 -0
  170. package/dist/response-cache.advanced.test.d.ts.map +1 -0
  171. package/dist/response-cache.advanced.test.js +566 -0
  172. package/dist/response-cache.advanced.test.js.map +1 -0
  173. package/dist/response-cache.d.ts +85 -0
  174. package/dist/response-cache.d.ts.map +1 -0
  175. package/dist/response-cache.edge-cases.test.d.ts +2 -0
  176. package/dist/response-cache.edge-cases.test.d.ts.map +1 -0
  177. package/dist/response-cache.edge-cases.test.js +488 -0
  178. package/dist/response-cache.edge-cases.test.js.map +1 -0
  179. package/dist/response-cache.extreme.test.d.ts +2 -0
  180. package/dist/response-cache.extreme.test.d.ts.map +1 -0
  181. package/dist/response-cache.extreme.test.js +561 -0
  182. package/dist/response-cache.extreme.test.js.map +1 -0
  183. package/dist/response-cache.js +240 -0
  184. package/dist/response-cache.js.map +1 -0
  185. package/dist/response-cache.test.d.ts +2 -0
  186. package/dist/response-cache.test.d.ts.map +1 -0
  187. package/dist/response-cache.test.js +242 -0
  188. package/dist/response-cache.test.js.map +1 -0
  189. package/dist/retry.d.ts +42 -0
  190. package/dist/retry.d.ts.map +1 -0
  191. package/dist/retry.js +99 -0
  192. package/dist/retry.js.map +1 -0
  193. package/dist/router/config.d.ts +11 -0
  194. package/dist/router/config.d.ts.map +1 -0
  195. package/dist/router/config.js +1215 -0
  196. package/dist/router/config.js.map +1 -0
  197. package/dist/router/index.d.ts +18 -0
  198. package/dist/router/index.d.ts.map +1 -0
  199. package/dist/router/index.js +19 -0
  200. package/dist/router/index.js.map +1 -0
  201. package/dist/router/llm-classifier.d.ts +29 -0
  202. package/dist/router/llm-classifier.d.ts.map +1 -0
  203. package/dist/router/llm-classifier.js +99 -0
  204. package/dist/router/llm-classifier.js.map +1 -0
  205. package/dist/router/rules.d.ts +12 -0
  206. package/dist/router/rules.d.ts.map +1 -0
  207. package/dist/router/rules.js +202 -0
  208. package/dist/router/rules.js.map +1 -0
  209. package/dist/router/selector.d.ts +58 -0
  210. package/dist/router/selector.d.ts.map +1 -0
  211. package/dist/router/selector.js +165 -0
  212. package/dist/router/selector.js.map +1 -0
  213. package/dist/router/selector.test.d.ts +2 -0
  214. package/dist/router/selector.test.d.ts.map +1 -0
  215. package/dist/router/selector.test.js +67 -0
  216. package/dist/router/selector.test.js.map +1 -0
  217. package/dist/router/strategy.d.ts +19 -0
  218. package/dist/router/strategy.d.ts.map +1 -0
  219. package/dist/router/strategy.js +138 -0
  220. package/dist/router/strategy.js.map +1 -0
  221. package/dist/router/strategy.test.d.ts +2 -0
  222. package/dist/router/strategy.test.d.ts.map +1 -0
  223. package/dist/router/strategy.test.js +131 -0
  224. package/dist/router/strategy.test.js.map +1 -0
  225. package/dist/router/types.d.ts +127 -0
  226. package/dist/router/types.d.ts.map +1 -0
  227. package/dist/router/types.js +11 -0
  228. package/dist/router/types.js.map +1 -0
  229. package/dist/session.d.ts +124 -0
  230. package/dist/session.d.ts.map +1 -0
  231. package/dist/session.js +256 -0
  232. package/dist/session.js.map +1 -0
  233. package/dist/session.test.d.ts +2 -0
  234. package/dist/session.test.d.ts.map +1 -0
  235. package/dist/session.test.js +163 -0
  236. package/dist/session.test.js.map +1 -0
  237. package/dist/solana-balance.d.ts +48 -0
  238. package/dist/solana-balance.d.ts.map +1 -0
  239. package/dist/solana-balance.js +142 -0
  240. package/dist/solana-balance.js.map +1 -0
  241. package/dist/spend-control.d.ts +112 -0
  242. package/dist/spend-control.d.ts.map +1 -0
  243. package/dist/spend-control.js +278 -0
  244. package/dist/spend-control.js.map +1 -0
  245. package/dist/spend-control.test.d.ts +5 -0
  246. package/dist/spend-control.test.d.ts.map +1 -0
  247. package/dist/spend-control.test.js +210 -0
  248. package/dist/spend-control.test.js.map +1 -0
  249. package/dist/stats.d.ts +64 -0
  250. package/dist/stats.d.ts.map +1 -0
  251. package/dist/stats.js +295 -0
  252. package/dist/stats.js.map +1 -0
  253. package/dist/types.d.ts +150 -0
  254. package/dist/types.d.ts.map +1 -0
  255. package/dist/types.js +9 -0
  256. package/dist/types.js.map +1 -0
  257. package/dist/update-hint.test.d.ts +9 -0
  258. package/dist/update-hint.test.d.ts.map +1 -0
  259. package/dist/update-hint.test.js +156 -0
  260. package/dist/update-hint.test.js.map +1 -0
  261. package/dist/updater.d.ts +10 -0
  262. package/dist/updater.d.ts.map +1 -0
  263. package/dist/updater.js +55 -0
  264. package/dist/updater.js.map +1 -0
  265. package/dist/version.d.ts +3 -0
  266. package/dist/version.d.ts.map +1 -0
  267. package/dist/version.js +16 -0
  268. package/dist/version.js.map +1 -0
  269. package/dist/wallet.d.ts +52 -0
  270. package/dist/wallet.d.ts.map +1 -0
  271. package/dist/wallet.js +93 -0
  272. package/dist/wallet.js.map +1 -0
  273. package/dist/wallet.test.d.ts +6 -0
  274. package/dist/wallet.test.d.ts.map +1 -0
  275. package/dist/wallet.test.js +117 -0
  276. package/dist/wallet.test.js.map +1 -0
  277. package/dist/x402-sdk.test.d.ts +6 -0
  278. package/dist/x402-sdk.test.d.ts.map +1 -0
  279. package/dist/x402-sdk.test.js +161 -0
  280. package/dist/x402-sdk.test.js.map +1 -0
  281. package/package.json +1 -1
  282. package/scripts/e2e-multiturn.mjs +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/router/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Smart Router Entry Point
3
+ *
4
+ * Classifies requests and routes to the cheapest capable model.
5
+ * Delegates to pluggable RouterStrategy (default: RulesStrategy, <1ms).
6
+ */
7
+ import type { RoutingDecision, RouterOptions } from "./types.js";
8
+ /**
9
+ * Route a request to the cheapest capable model.
10
+ * Delegates to the registered "rules" strategy by default.
11
+ */
12
+ export declare function route(prompt: string, systemPrompt: string | undefined, maxOutputTokens: number, options: RouterOptions): RoutingDecision;
13
+ export { getStrategy, registerStrategy } from "./strategy.js";
14
+ export { getFallbackChain, getFallbackChainFiltered, filterByToolCalling, filterByVision, filterByExcludeList, calculateModelCost, } from "./selector.js";
15
+ export { DEFAULT_ROUTING_CONFIG } from "./config.js";
16
+ export type { RoutingDecision, Tier, RoutingConfig, RouterOptions, RouterStrategy, } from "./types.js";
17
+ export type { ModelPricing } from "./selector.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGjE;;;GAGG;AACH,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,aAAa,GACrB,eAAe,CAGjB;AAED,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EACV,eAAe,EACf,IAAI,EACJ,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Smart Router Entry Point
3
+ *
4
+ * Classifies requests and routes to the cheapest capable model.
5
+ * Delegates to pluggable RouterStrategy (default: RulesStrategy, <1ms).
6
+ */
7
+ import { getStrategy } from "./strategy.js";
8
+ /**
9
+ * Route a request to the cheapest capable model.
10
+ * Delegates to the registered "rules" strategy by default.
11
+ */
12
+ export function route(prompt, systemPrompt, maxOutputTokens, options) {
13
+ const strategy = getStrategy("rules");
14
+ return strategy.route(prompt, systemPrompt, maxOutputTokens, options);
15
+ }
16
+ export { getStrategy, registerStrategy } from "./strategy.js";
17
+ export { getFallbackChain, getFallbackChainFiltered, filterByToolCalling, filterByVision, filterByExcludeList, calculateModelCost, } from "./selector.js";
18
+ export { DEFAULT_ROUTING_CONFIG } from "./config.js";
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,KAAK,CACnB,MAAc,EACd,YAAgC,EAChC,eAAuB,EACvB,OAAsB;IAEtB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * LLM Classifier (Fallback)
3
+ *
4
+ * When the rule-based classifier returns ambiguous (score 1-2),
5
+ * we send a classification request to the cheapest model.
6
+ *
7
+ * Cost per classification: ~$0.00003
8
+ * Latency: ~200-400ms
9
+ * Only triggered for ~20-30% of requests.
10
+ */
11
+ import type { Tier } from "./types.js";
12
+ export type LLMClassifierConfig = {
13
+ model: string;
14
+ maxTokens: number;
15
+ temperature: number;
16
+ truncationChars: number;
17
+ cacheTtlMs: number;
18
+ };
19
+ type PayFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
20
+ /**
21
+ * Classify a prompt using a cheap LLM.
22
+ * Returns tier and confidence. Defaults to MEDIUM on any failure.
23
+ */
24
+ export declare function classifyByLLM(prompt: string, config: LLMClassifierConfig, payFetch: PayFetch, apiBase: string): Promise<{
25
+ tier: Tier;
26
+ confidence: number;
27
+ }>;
28
+ export {};
29
+ //# sourceMappingURL=llm-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-classifier.d.ts","sourceRoot":"","sources":["../../src/router/llm-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAevC,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEpF;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAkD7C"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * LLM Classifier (Fallback)
3
+ *
4
+ * When the rule-based classifier returns ambiguous (score 1-2),
5
+ * we send a classification request to the cheapest model.
6
+ *
7
+ * Cost per classification: ~$0.00003
8
+ * Latency: ~200-400ms
9
+ * Only triggered for ~20-30% of requests.
10
+ */
11
+ const CLASSIFIER_PROMPT = `You are a query complexity classifier. Classify the user's query into exactly one category.
12
+
13
+ Categories:
14
+ - SIMPLE: Factual Q&A, definitions, translations, short answers
15
+ - MEDIUM: Summaries, explanations, moderate code generation
16
+ - COMPLEX: Multi-step code, system design, creative writing, analysis
17
+ - REASONING: Mathematical proofs, formal logic, step-by-step problem solving
18
+
19
+ Respond with ONLY one word: SIMPLE, MEDIUM, COMPLEX, or REASONING.`;
20
+ // In-memory cache: hash → { tier, expires }
21
+ const cache = new Map();
22
+ /**
23
+ * Classify a prompt using a cheap LLM.
24
+ * Returns tier and confidence. Defaults to MEDIUM on any failure.
25
+ */
26
+ export async function classifyByLLM(prompt, config, payFetch, apiBase) {
27
+ const truncated = prompt.slice(0, config.truncationChars);
28
+ // Check cache
29
+ const cacheKey = simpleHash(truncated);
30
+ const cached = cache.get(cacheKey);
31
+ if (cached && cached.expires > Date.now()) {
32
+ return { tier: cached.tier, confidence: 0.75 };
33
+ }
34
+ try {
35
+ const response = await payFetch(`${apiBase}/v1/chat/completions`, {
36
+ method: "POST",
37
+ headers: { "Content-Type": "application/json" },
38
+ body: JSON.stringify({
39
+ model: config.model,
40
+ messages: [
41
+ { role: "system", content: CLASSIFIER_PROMPT },
42
+ { role: "user", content: truncated },
43
+ ],
44
+ max_tokens: config.maxTokens,
45
+ temperature: config.temperature,
46
+ stream: false,
47
+ }),
48
+ });
49
+ if (!response.ok) {
50
+ return { tier: "MEDIUM", confidence: 0.5 };
51
+ }
52
+ const data = (await response.json());
53
+ const content = data.choices?.[0]?.message?.content?.trim().toUpperCase() ?? "";
54
+ const tier = parseTier(content);
55
+ // Cache result
56
+ cache.set(cacheKey, { tier, expires: Date.now() + config.cacheTtlMs });
57
+ // Prune if cache grows too large
58
+ if (cache.size > 1000) {
59
+ pruneCache();
60
+ }
61
+ return { tier, confidence: 0.75 };
62
+ }
63
+ catch {
64
+ // Any error → safe default
65
+ return { tier: "MEDIUM", confidence: 0.5 };
66
+ }
67
+ }
68
+ /**
69
+ * Parse tier from LLM response. Handles "SIMPLE", "The query is SIMPLE", etc.
70
+ */
71
+ function parseTier(text) {
72
+ if (/\bREASONING\b/.test(text))
73
+ return "REASONING";
74
+ if (/\bCOMPLEX\b/.test(text))
75
+ return "COMPLEX";
76
+ if (/\bMEDIUM\b/.test(text))
77
+ return "MEDIUM";
78
+ if (/\bSIMPLE\b/.test(text))
79
+ return "SIMPLE";
80
+ return "MEDIUM"; // safe default
81
+ }
82
+ function simpleHash(str) {
83
+ let hash = 0;
84
+ for (let i = 0; i < str.length; i++) {
85
+ const char = str.charCodeAt(i);
86
+ hash = (hash << 5) - hash + char;
87
+ hash |= 0;
88
+ }
89
+ return hash.toString(36);
90
+ }
91
+ function pruneCache() {
92
+ const now = Date.now();
93
+ for (const [key, value] of cache) {
94
+ if (value.expires <= now) {
95
+ cache.delete(key);
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=llm-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-classifier.js","sourceRoot":"","sources":["../../src/router/llm-classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Rule-Based Classifier (v2 — Weighted Scoring)
3
+ *
4
+ * Scores a request across 14 weighted dimensions and maps the aggregate
5
+ * score to a tier using configurable boundaries. Confidence is calibrated
6
+ * via sigmoid — low confidence triggers the fallback classifier.
7
+ *
8
+ * Handles 70-80% of requests in < 1ms with zero cost.
9
+ */
10
+ import type { ScoringResult, ScoringConfig } from "./types.js";
11
+ export declare function classifyByRules(prompt: string, systemPrompt: string | undefined, estimatedTokens: number, config: ScoringConfig): ScoringResult;
12
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/router/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAQ,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8HrE,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,aAAa,GACpB,aAAa,CAgLf"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Rule-Based Classifier (v2 — Weighted Scoring)
3
+ *
4
+ * Scores a request across 14 weighted dimensions and maps the aggregate
5
+ * score to a tier using configurable boundaries. Confidence is calibrated
6
+ * via sigmoid — low confidence triggers the fallback classifier.
7
+ *
8
+ * Handles 70-80% of requests in < 1ms with zero cost.
9
+ */
10
+ // ─── Dimension Scorers ───
11
+ // Each returns a score in [-1, 1] and an optional signal string.
12
+ function scoreTokenCount(estimatedTokens, thresholds) {
13
+ if (estimatedTokens < thresholds.simple) {
14
+ return { name: "tokenCount", score: -1.0, signal: `short (${estimatedTokens} tokens)` };
15
+ }
16
+ if (estimatedTokens > thresholds.complex) {
17
+ return { name: "tokenCount", score: 1.0, signal: `long (${estimatedTokens} tokens)` };
18
+ }
19
+ return { name: "tokenCount", score: 0, signal: null };
20
+ }
21
+ function scoreKeywordMatch(text, keywords, name, signalLabel, thresholds, scores) {
22
+ const matches = keywords.filter((kw) => text.includes(kw.toLowerCase()));
23
+ if (matches.length >= thresholds.high) {
24
+ return {
25
+ name,
26
+ score: scores.high,
27
+ signal: `${signalLabel} (${matches.slice(0, 3).join(", ")})`,
28
+ };
29
+ }
30
+ if (matches.length >= thresholds.low) {
31
+ return {
32
+ name,
33
+ score: scores.low,
34
+ signal: `${signalLabel} (${matches.slice(0, 3).join(", ")})`,
35
+ };
36
+ }
37
+ return { name, score: scores.none, signal: null };
38
+ }
39
+ function scoreMultiStep(text) {
40
+ const patterns = [/first.*then/i, /step \d/i, /\d\.\s/];
41
+ const hits = patterns.filter((p) => p.test(text));
42
+ if (hits.length > 0) {
43
+ return { name: "multiStepPatterns", score: 0.5, signal: "multi-step" };
44
+ }
45
+ return { name: "multiStepPatterns", score: 0, signal: null };
46
+ }
47
+ function scoreQuestionComplexity(prompt) {
48
+ const count = (prompt.match(/\?/g) || []).length;
49
+ if (count > 3) {
50
+ return { name: "questionComplexity", score: 0.5, signal: `${count} questions` };
51
+ }
52
+ return { name: "questionComplexity", score: 0, signal: null };
53
+ }
54
+ /**
55
+ * Score agentic task indicators.
56
+ * Returns agenticScore (0-1) based on keyword matches:
57
+ * - 4+ matches = 1.0 (high agentic)
58
+ * - 3 matches = 0.6 (moderate agentic, triggers auto-agentic mode)
59
+ * - 1-2 matches = 0.2 (low agentic)
60
+ *
61
+ * Thresholds raised because common keywords were pruned from the list.
62
+ */
63
+ function scoreAgenticTask(text, keywords) {
64
+ let matchCount = 0;
65
+ const signals = [];
66
+ for (const keyword of keywords) {
67
+ if (text.includes(keyword.toLowerCase())) {
68
+ matchCount++;
69
+ if (signals.length < 3) {
70
+ signals.push(keyword);
71
+ }
72
+ }
73
+ }
74
+ // Threshold-based scoring (raised thresholds after keyword pruning)
75
+ if (matchCount >= 4) {
76
+ return {
77
+ dimensionScore: {
78
+ name: "agenticTask",
79
+ score: 1.0,
80
+ signal: `agentic (${signals.join(", ")})`,
81
+ },
82
+ agenticScore: 1.0,
83
+ };
84
+ }
85
+ else if (matchCount >= 3) {
86
+ return {
87
+ dimensionScore: {
88
+ name: "agenticTask",
89
+ score: 0.6,
90
+ signal: `agentic (${signals.join(", ")})`,
91
+ },
92
+ agenticScore: 0.6,
93
+ };
94
+ }
95
+ else if (matchCount >= 1) {
96
+ return {
97
+ dimensionScore: {
98
+ name: "agenticTask",
99
+ score: 0.2,
100
+ signal: `agentic-light (${signals.join(", ")})`,
101
+ },
102
+ agenticScore: 0.2,
103
+ };
104
+ }
105
+ return {
106
+ dimensionScore: { name: "agenticTask", score: 0, signal: null },
107
+ agenticScore: 0,
108
+ };
109
+ }
110
+ // ─── Main Classifier ───
111
+ export function classifyByRules(prompt, systemPrompt, estimatedTokens, config) {
112
+ // Score against user prompt only — system prompts contain boilerplate keywords
113
+ // (tool definitions, skill descriptions, behavioral rules) that dominate scoring
114
+ // and make every request score identically. See GitHub issue #50.
115
+ const userText = prompt.toLowerCase();
116
+ // Score all 14 dimensions against user text only
117
+ const dimensions = [
118
+ // Token count uses total estimated tokens (system + user) — context size matters for model selection
119
+ scoreTokenCount(estimatedTokens, config.tokenCountThresholds),
120
+ scoreKeywordMatch(userText, config.codeKeywords, "codePresence", "code", { low: 1, high: 2 }, { none: 0, low: 0.5, high: 1.0 }),
121
+ scoreKeywordMatch(userText, config.reasoningKeywords, "reasoningMarkers", "reasoning", { low: 1, high: 2 }, { none: 0, low: 0.7, high: 1.0 }),
122
+ scoreKeywordMatch(userText, config.technicalKeywords, "technicalTerms", "technical", { low: 2, high: 4 }, { none: 0, low: 0.5, high: 1.0 }),
123
+ scoreKeywordMatch(userText, config.creativeKeywords, "creativeMarkers", "creative", { low: 1, high: 2 }, { none: 0, low: 0.5, high: 0.7 }),
124
+ scoreKeywordMatch(userText, config.simpleKeywords, "simpleIndicators", "simple", { low: 1, high: 2 }, { none: 0, low: -1.0, high: -1.0 }),
125
+ scoreMultiStep(userText),
126
+ scoreQuestionComplexity(prompt),
127
+ // 6 new dimensions
128
+ scoreKeywordMatch(userText, config.imperativeVerbs, "imperativeVerbs", "imperative", { low: 1, high: 2 }, { none: 0, low: 0.3, high: 0.5 }),
129
+ scoreKeywordMatch(userText, config.constraintIndicators, "constraintCount", "constraints", { low: 1, high: 3 }, { none: 0, low: 0.3, high: 0.7 }),
130
+ scoreKeywordMatch(userText, config.outputFormatKeywords, "outputFormat", "format", { low: 1, high: 2 }, { none: 0, low: 0.4, high: 0.7 }),
131
+ scoreKeywordMatch(userText, config.referenceKeywords, "referenceComplexity", "references", { low: 1, high: 2 }, { none: 0, low: 0.3, high: 0.5 }),
132
+ scoreKeywordMatch(userText, config.negationKeywords, "negationComplexity", "negation", { low: 2, high: 3 }, { none: 0, low: 0.3, high: 0.5 }),
133
+ scoreKeywordMatch(userText, config.domainSpecificKeywords, "domainSpecificity", "domain-specific", { low: 1, high: 2 }, { none: 0, low: 0.5, high: 0.8 }),
134
+ ];
135
+ // Score agentic task indicators — user prompt only
136
+ // System prompt describes assistant behavior, not user's intent.
137
+ // e.g. a coding assistant system prompt with "edit files" / "fix bugs" should NOT
138
+ // force every request into agentic mode.
139
+ const agenticResult = scoreAgenticTask(userText, config.agenticTaskKeywords);
140
+ dimensions.push(agenticResult.dimensionScore);
141
+ const agenticScore = agenticResult.agenticScore;
142
+ // Collect signals
143
+ const signals = dimensions.filter((d) => d.signal !== null).map((d) => d.signal);
144
+ // Compute weighted score
145
+ const weights = config.dimensionWeights;
146
+ let weightedScore = 0;
147
+ for (const d of dimensions) {
148
+ const w = weights[d.name] ?? 0;
149
+ weightedScore += d.score * w;
150
+ }
151
+ // Count reasoning markers for override — only check USER prompt, not system prompt
152
+ // This prevents system prompts with "step by step" from triggering REASONING for simple queries
153
+ const reasoningMatches = config.reasoningKeywords.filter((kw) => userText.includes(kw.toLowerCase()));
154
+ // Direct reasoning override: 2+ reasoning markers = high confidence REASONING
155
+ if (reasoningMatches.length >= 2) {
156
+ const confidence = calibrateConfidence(Math.max(weightedScore, 0.3), // ensure positive for confidence calc
157
+ config.confidenceSteepness);
158
+ return {
159
+ score: weightedScore,
160
+ tier: "REASONING",
161
+ confidence: Math.max(confidence, 0.85),
162
+ signals,
163
+ agenticScore,
164
+ dimensions,
165
+ };
166
+ }
167
+ // Map weighted score to tier using boundaries
168
+ const { simpleMedium, mediumComplex, complexReasoning } = config.tierBoundaries;
169
+ let tier;
170
+ let distanceFromBoundary;
171
+ if (weightedScore < simpleMedium) {
172
+ tier = "SIMPLE";
173
+ distanceFromBoundary = simpleMedium - weightedScore;
174
+ }
175
+ else if (weightedScore < mediumComplex) {
176
+ tier = "MEDIUM";
177
+ distanceFromBoundary = Math.min(weightedScore - simpleMedium, mediumComplex - weightedScore);
178
+ }
179
+ else if (weightedScore < complexReasoning) {
180
+ tier = "COMPLEX";
181
+ distanceFromBoundary = Math.min(weightedScore - mediumComplex, complexReasoning - weightedScore);
182
+ }
183
+ else {
184
+ tier = "REASONING";
185
+ distanceFromBoundary = weightedScore - complexReasoning;
186
+ }
187
+ // Calibrate confidence via sigmoid of distance from nearest boundary
188
+ const confidence = calibrateConfidence(distanceFromBoundary, config.confidenceSteepness);
189
+ // If confidence is below threshold → ambiguous
190
+ if (confidence < config.confidenceThreshold) {
191
+ return { score: weightedScore, tier: null, confidence, signals, agenticScore, dimensions };
192
+ }
193
+ return { score: weightedScore, tier, confidence, signals, agenticScore, dimensions };
194
+ }
195
+ /**
196
+ * Sigmoid confidence calibration.
197
+ * Maps distance from tier boundary to [0.5, 1.0] confidence range.
198
+ */
199
+ function calibrateConfidence(distance, steepness) {
200
+ return 1 / (1 + Math.exp(-steepness * distance));
201
+ }
202
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/router/rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Tier → Model Selection
3
+ *
4
+ * Maps a classification tier to the cheapest capable model.
5
+ * Builds RoutingDecision metadata with cost estimates and savings.
6
+ */
7
+ import type { Tier, TierConfig, RoutingDecision } from "./types.js";
8
+ export type ModelPricing = {
9
+ inputPrice: number;
10
+ outputPrice: number;
11
+ /** Active promo flat price per request (overrides token-based pricing when set) */
12
+ flatPrice?: number;
13
+ };
14
+ /**
15
+ * Select the primary model for a tier and build the RoutingDecision.
16
+ */
17
+ export declare function selectModel(tier: Tier, confidence: number, method: "rules" | "llm", reasoning: string, tierConfigs: Record<Tier, TierConfig>, modelPricing: Map<string, ModelPricing>, estimatedInputTokens: number, maxOutputTokens: number, routingProfile?: "free" | "eco" | "auto" | "premium", agenticScore?: number): RoutingDecision;
18
+ /**
19
+ * Get the ordered fallback chain for a tier: [primary, ...fallbacks].
20
+ */
21
+ export declare function getFallbackChain(tier: Tier, tierConfigs: Record<Tier, TierConfig>): string[];
22
+ export declare function calculateModelCost(model: string, modelPricing: Map<string, ModelPricing>, estimatedInputTokens: number, maxOutputTokens: number, routingProfile?: "free" | "eco" | "auto" | "premium"): {
23
+ costEstimate: number;
24
+ baselineCost: number;
25
+ savings: number;
26
+ };
27
+ /**
28
+ * Filter a model list to only those that support tool calling.
29
+ * When hasTools is false, returns the list unchanged.
30
+ * When all models lack tool calling support, returns the full list as a fallback
31
+ * (better to let the API error than produce an empty chain).
32
+ */
33
+ export declare function filterByToolCalling(models: string[], hasTools: boolean, supportsToolCalling: (modelId: string) => boolean): string[];
34
+ /**
35
+ * Filter a model list to only those that support vision (image inputs).
36
+ * When hasVision is false, returns the list unchanged.
37
+ * When all models lack vision support, returns the full list as a fallback
38
+ * (better to let the API error than produce an empty chain).
39
+ */
40
+ export declare function filterByVision(models: string[], hasVision: boolean, supportsVision: (modelId: string) => boolean): string[];
41
+ /**
42
+ * Filter a model list to remove user-excluded models.
43
+ * When all models are excluded, returns the full list as a fallback
44
+ * (same safety pattern as filterByToolCalling/filterByVision).
45
+ */
46
+ export declare function filterByExcludeList(models: string[], excludeList: Set<string>): string[];
47
+ /**
48
+ * Get the fallback chain filtered by context length.
49
+ * Only returns models that can handle the estimated total context.
50
+ *
51
+ * @param tier - The tier to get fallback chain for
52
+ * @param tierConfigs - Tier configurations
53
+ * @param estimatedTotalTokens - Estimated total context (input + output)
54
+ * @param getContextWindow - Function to get context window for a model ID
55
+ * @returns Filtered list of models that can handle the context
56
+ */
57
+ export declare function getFallbackChainFiltered(tier: Tier, tierConfigs: Record<Tier, TierConfig>, estimatedTotalTokens: number, getContextWindow: (modelId: string) => number | undefined): string[];
58
+ //# sourceMappingURL=selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/router/selector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AASF;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,GAAG,KAAK,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EACrC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,oBAAoB,EAAE,MAAM,EAC5B,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,EACpD,YAAY,CAAC,EAAE,MAAM,GACpB,eAAe,CA2CjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,MAAM,EAAE,CAG5F;AAWD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,oBAAoB,EAAE,MAAM,EAC5B,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GACnD;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqCjE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,OAAO,EACjB,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAChD,MAAM,EAAE,CAIV;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,OAAO,EAClB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAC3C,MAAM,EAAE,CAIV;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAIxF;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EACrC,oBAAoB,EAAE,MAAM,EAC5B,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACxD,MAAM,EAAE,CAqBV"}