@google/gemini-cli-core 0.31.0-preview.2 → 0.32.0-preview.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 (312) hide show
  1. package/dist/docs/changelogs/index.md +22 -0
  2. package/dist/docs/changelogs/latest.md +307 -352
  3. package/dist/docs/changelogs/preview.md +391 -293
  4. package/dist/docs/cli/plan-mode.md +29 -7
  5. package/dist/docs/cli/settings.md +15 -6
  6. package/dist/docs/cli/telemetry.md +39 -11
  7. package/dist/docs/extensions/reference.md +36 -0
  8. package/dist/docs/get-started/installation.md +1 -1
  9. package/dist/docs/local-development.md +49 -43
  10. package/dist/docs/reference/configuration.md +32 -0
  11. package/dist/docs/reference/keyboard-shortcuts.md +6 -6
  12. package/dist/docs/reference/policy-engine.md +4 -3
  13. package/dist/docs/resources/faq.md +13 -0
  14. package/dist/docs/resources/tos-privacy.md +6 -0
  15. package/dist/docs/resources/uninstall.md +1 -10
  16. package/dist/docs/tools/mcp-server.md +22 -0
  17. package/dist/src/agents/a2a-client-manager.d.ts +7 -6
  18. package/dist/src/agents/a2a-client-manager.js +8 -9
  19. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  20. package/dist/src/agents/a2a-client-manager.test.js +45 -31
  21. package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
  22. package/dist/src/agents/a2aUtils.d.ts +25 -7
  23. package/dist/src/agents/a2aUtils.js +165 -58
  24. package/dist/src/agents/a2aUtils.js.map +1 -1
  25. package/dist/src/agents/a2aUtils.test.js +170 -27
  26. package/dist/src/agents/a2aUtils.test.js.map +1 -1
  27. package/dist/src/agents/generalist-agent.js +1 -2
  28. package/dist/src/agents/generalist-agent.js.map +1 -1
  29. package/dist/src/agents/registry.test.js +4 -2
  30. package/dist/src/agents/registry.test.js.map +1 -1
  31. package/dist/src/agents/remote-invocation.d.ts +2 -1
  32. package/dist/src/agents/remote-invocation.js +41 -22
  33. package/dist/src/agents/remote-invocation.js.map +1 -1
  34. package/dist/src/agents/remote-invocation.test.js +196 -56
  35. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  36. package/dist/src/agents/subagent-tool-wrapper.js +1 -1
  37. package/dist/src/agents/subagent-tool-wrapper.test.js +1 -1
  38. package/dist/src/agents/subagent-tool.js +15 -2
  39. package/dist/src/agents/subagent-tool.js.map +1 -1
  40. package/dist/src/agents/subagent-tool.test.js +31 -0
  41. package/dist/src/agents/subagent-tool.test.js.map +1 -1
  42. package/dist/src/billing/billing.d.ts +80 -0
  43. package/dist/src/billing/billing.js +127 -0
  44. package/dist/src/billing/billing.js.map +1 -0
  45. package/dist/src/billing/billing.test.d.ts +6 -0
  46. package/dist/src/billing/billing.test.js +182 -0
  47. package/dist/src/billing/billing.test.js.map +1 -0
  48. package/dist/src/billing/index.d.ts +6 -0
  49. package/dist/src/billing/index.js +7 -0
  50. package/dist/src/billing/index.js.map +1 -0
  51. package/dist/src/code_assist/codeAssist.js +1 -1
  52. package/dist/src/code_assist/codeAssist.js.map +1 -1
  53. package/dist/src/code_assist/codeAssist.test.js +2 -2
  54. package/dist/src/code_assist/codeAssist.test.js.map +1 -1
  55. package/dist/src/code_assist/converter.d.ts +9 -4
  56. package/dist/src/code_assist/converter.js +17 -2
  57. package/dist/src/code_assist/converter.js.map +1 -1
  58. package/dist/src/code_assist/converter.test.js.map +1 -1
  59. package/dist/src/code_assist/oauth2.js +6 -3
  60. package/dist/src/code_assist/oauth2.js.map +1 -1
  61. package/dist/src/code_assist/oauth2.test.js +1 -0
  62. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  63. package/dist/src/code_assist/server.d.ts +9 -4
  64. package/dist/src/code_assist/server.js +86 -5
  65. package/dist/src/code_assist/server.js.map +1 -1
  66. package/dist/src/code_assist/server.test.js +11 -0
  67. package/dist/src/code_assist/server.test.js.map +1 -1
  68. package/dist/src/code_assist/setup.d.ts +2 -1
  69. package/dist/src/code_assist/setup.js +15 -4
  70. package/dist/src/code_assist/setup.js.map +1 -1
  71. package/dist/src/code_assist/types.d.ts +33 -10
  72. package/dist/src/code_assist/types.js.map +1 -1
  73. package/dist/src/config/config.d.ts +50 -4
  74. package/dist/src/config/config.js +77 -3
  75. package/dist/src/config/config.js.map +1 -1
  76. package/dist/src/config/config.test.js +151 -1
  77. package/dist/src/config/config.test.js.map +1 -1
  78. package/dist/src/config/storage.d.ts +1 -0
  79. package/dist/src/config/storage.js +4 -1
  80. package/dist/src/config/storage.js.map +1 -1
  81. package/dist/src/core/contentGenerator.d.ts +3 -2
  82. package/dist/src/core/contentGenerator.js +9 -2
  83. package/dist/src/core/contentGenerator.js.map +1 -1
  84. package/dist/src/core/coreToolScheduler.js +2 -1
  85. package/dist/src/core/coreToolScheduler.js.map +1 -1
  86. package/dist/src/core/coreToolScheduler.test.js +21 -2
  87. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  88. package/dist/src/core/fakeContentGenerator.d.ts +2 -1
  89. package/dist/src/core/fakeContentGenerator.js +1 -0
  90. package/dist/src/core/fakeContentGenerator.js.map +1 -1
  91. package/dist/src/core/geminiChat.js +6 -2
  92. package/dist/src/core/geminiChat.js.map +1 -1
  93. package/dist/src/core/geminiChat.test.js +34 -0
  94. package/dist/src/core/geminiChat.test.js.map +1 -1
  95. package/dist/src/core/localLiteRtLmClient.d.ts +24 -0
  96. package/dist/src/core/localLiteRtLmClient.js +77 -0
  97. package/dist/src/core/localLiteRtLmClient.js.map +1 -0
  98. package/dist/src/core/localLiteRtLmClient.test.d.ts +6 -0
  99. package/dist/src/core/localLiteRtLmClient.test.js +87 -0
  100. package/dist/src/core/localLiteRtLmClient.test.js.map +1 -0
  101. package/dist/src/core/loggingContentGenerator.d.ts +2 -1
  102. package/dist/src/core/loggingContentGenerator.js +39 -17
  103. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  104. package/dist/src/core/loggingContentGenerator.test.js +122 -5
  105. package/dist/src/core/loggingContentGenerator.test.js.map +1 -1
  106. package/dist/src/core/prompts.test.js +1 -1
  107. package/dist/src/core/prompts.test.js.map +1 -1
  108. package/dist/src/fallback/handler.js +2 -0
  109. package/dist/src/fallback/handler.js.map +1 -1
  110. package/dist/src/fallback/types.d.ts +1 -1
  111. package/dist/src/generated/git-commit.d.ts +2 -2
  112. package/dist/src/generated/git-commit.js +2 -2
  113. package/dist/src/index.d.ts +5 -0
  114. package/dist/src/index.js +5 -0
  115. package/dist/src/index.js.map +1 -1
  116. package/dist/src/policy/config.d.ts +18 -6
  117. package/dist/src/policy/config.js +51 -14
  118. package/dist/src/policy/config.js.map +1 -1
  119. package/dist/src/policy/config.test.js +26 -26
  120. package/dist/src/policy/config.test.js.map +1 -1
  121. package/dist/src/policy/persistence.test.js +9 -14
  122. package/dist/src/policy/persistence.test.js.map +1 -1
  123. package/dist/src/policy/policies/plan.toml +1 -1
  124. package/dist/src/policy/policy-engine.d.ts +8 -0
  125. package/dist/src/policy/policy-engine.js +12 -0
  126. package/dist/src/policy/policy-engine.js.map +1 -1
  127. package/dist/src/policy/policy-engine.test.js +93 -0
  128. package/dist/src/policy/policy-engine.test.js.map +1 -1
  129. package/dist/src/policy/policy-updater.test.js +1 -1
  130. package/dist/src/policy/policy-updater.test.js.map +1 -1
  131. package/dist/src/policy/toml-loader.d.ts +1 -1
  132. package/dist/src/policy/toml-loader.js +4 -2
  133. package/dist/src/policy/toml-loader.js.map +1 -1
  134. package/dist/src/policy/toml-loader.test.js +15 -12
  135. package/dist/src/policy/toml-loader.test.js.map +1 -1
  136. package/dist/src/policy/workspace-policy.test.js +10 -10
  137. package/dist/src/prompts/snippets.js +43 -27
  138. package/dist/src/prompts/snippets.js.map +1 -1
  139. package/dist/src/routing/modelRouterService.js +19 -11
  140. package/dist/src/routing/modelRouterService.js.map +1 -1
  141. package/dist/src/routing/modelRouterService.test.js +38 -1
  142. package/dist/src/routing/modelRouterService.test.js.map +1 -1
  143. package/dist/src/routing/routingStrategy.d.ts +3 -2
  144. package/dist/src/routing/strategies/classifierStrategy.d.ts +2 -1
  145. package/dist/src/routing/strategies/classifierStrategy.js +1 -1
  146. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  147. package/dist/src/routing/strategies/classifierStrategy.test.js +15 -13
  148. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  149. package/dist/src/routing/strategies/compositeStrategy.d.ts +2 -1
  150. package/dist/src/routing/strategies/compositeStrategy.js +3 -3
  151. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  152. package/dist/src/routing/strategies/compositeStrategy.test.js +10 -8
  153. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  154. package/dist/src/routing/strategies/defaultStrategy.d.ts +2 -1
  155. package/dist/src/routing/strategies/defaultStrategy.js +1 -1
  156. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -1
  157. package/dist/src/routing/strategies/defaultStrategy.test.js +8 -4
  158. package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -1
  159. package/dist/src/routing/strategies/fallbackStrategy.d.ts +2 -1
  160. package/dist/src/routing/strategies/fallbackStrategy.js +1 -1
  161. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  162. package/dist/src/routing/strategies/fallbackStrategy.test.js +6 -5
  163. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  164. package/dist/src/routing/strategies/gemmaClassifierStrategy.d.ts +14 -0
  165. package/dist/src/routing/strategies/gemmaClassifierStrategy.js +182 -0
  166. package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -0
  167. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.d.ts +6 -0
  168. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +218 -0
  169. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -0
  170. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +2 -1
  171. package/dist/src/routing/strategies/numericalClassifierStrategy.js +1 -1
  172. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
  173. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +24 -22
  174. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -1
  175. package/dist/src/routing/strategies/overrideStrategy.d.ts +2 -1
  176. package/dist/src/routing/strategies/overrideStrategy.js +1 -1
  177. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -1
  178. package/dist/src/routing/strategies/overrideStrategy.test.js +5 -4
  179. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -1
  180. package/dist/src/scheduler/scheduler.d.ts +1 -0
  181. package/dist/src/scheduler/scheduler.js +18 -7
  182. package/dist/src/scheduler/scheduler.js.map +1 -1
  183. package/dist/src/scheduler/scheduler.test.js +19 -1
  184. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  185. package/dist/src/scheduler/scheduler_parallel.test.js +94 -3
  186. package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -1
  187. package/dist/src/scheduler/tool-executor.js +21 -12
  188. package/dist/src/scheduler/tool-executor.js.map +1 -1
  189. package/dist/src/scheduler/tool-executor.test.js +54 -0
  190. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  191. package/dist/src/services/trackerService.d.ts +49 -0
  192. package/dist/src/services/trackerService.js +172 -0
  193. package/dist/src/services/trackerService.js.map +1 -0
  194. package/dist/src/services/trackerService.test.d.ts +6 -0
  195. package/dist/src/services/trackerService.test.js +117 -0
  196. package/dist/src/services/trackerService.test.js.map +1 -0
  197. package/dist/src/services/trackerTypes.d.ts +51 -0
  198. package/dist/src/services/trackerTypes.js +33 -0
  199. package/dist/src/services/trackerTypes.js.map +1 -0
  200. package/dist/src/telemetry/billingEvents.d.ts +75 -0
  201. package/dist/src/telemetry/billingEvents.js +181 -0
  202. package/dist/src/telemetry/billingEvents.js.map +1 -0
  203. package/dist/src/telemetry/billingEvents.test.d.ts +6 -0
  204. package/dist/src/telemetry/billingEvents.test.js +139 -0
  205. package/dist/src/telemetry/billingEvents.test.js.map +1 -0
  206. package/dist/src/telemetry/conseca-logger.test.js +1 -0
  207. package/dist/src/telemetry/conseca-logger.test.js.map +1 -1
  208. package/dist/src/telemetry/constants.d.ts +25 -0
  209. package/dist/src/telemetry/constants.js +29 -0
  210. package/dist/src/telemetry/constants.js.map +1 -1
  211. package/dist/src/telemetry/index.d.ts +3 -1
  212. package/dist/src/telemetry/index.js +5 -1
  213. package/dist/src/telemetry/index.js.map +1 -1
  214. package/dist/src/telemetry/loggers.d.ts +2 -0
  215. package/dist/src/telemetry/loggers.js +10 -0
  216. package/dist/src/telemetry/loggers.js.map +1 -1
  217. package/dist/src/telemetry/loggers.test.js +16 -0
  218. package/dist/src/telemetry/loggers.test.js.map +1 -1
  219. package/dist/src/telemetry/metrics.d.ts +28 -0
  220. package/dist/src/telemetry/metrics.js +40 -0
  221. package/dist/src/telemetry/metrics.js.map +1 -1
  222. package/dist/src/telemetry/sanitize.test.js +1 -0
  223. package/dist/src/telemetry/sanitize.test.js.map +1 -1
  224. package/dist/src/telemetry/sdk.test.js +1 -0
  225. package/dist/src/telemetry/sdk.test.js.map +1 -1
  226. package/dist/src/telemetry/telemetryAttributes.js +2 -0
  227. package/dist/src/telemetry/telemetryAttributes.js.map +1 -1
  228. package/dist/src/telemetry/trace.d.ts +2 -1
  229. package/dist/src/telemetry/trace.js +13 -18
  230. package/dist/src/telemetry/trace.js.map +1 -1
  231. package/dist/src/telemetry/trace.test.d.ts +6 -0
  232. package/dist/src/telemetry/trace.test.js +116 -0
  233. package/dist/src/telemetry/trace.test.js.map +1 -0
  234. package/dist/src/tools/confirmation-policy.test.js +1 -0
  235. package/dist/src/tools/confirmation-policy.test.js.map +1 -1
  236. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +2 -2
  237. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  238. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +3 -3
  239. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  240. package/dist/src/tools/grep-utils.d.ts +1 -1
  241. package/dist/src/tools/grep-utils.js +4 -4
  242. package/dist/src/tools/grep-utils.js.map +1 -1
  243. package/dist/src/tools/grep.d.ts +1 -1
  244. package/dist/src/tools/grep.js +9 -9
  245. package/dist/src/tools/grep.js.map +1 -1
  246. package/dist/src/tools/grep.test.js +8 -5
  247. package/dist/src/tools/grep.test.js.map +1 -1
  248. package/dist/src/tools/line-endings.test.js +3 -11
  249. package/dist/src/tools/line-endings.test.js.map +1 -1
  250. package/dist/src/tools/mcp-client-manager.d.ts +25 -0
  251. package/dist/src/tools/mcp-client-manager.js +66 -3
  252. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  253. package/dist/src/tools/mcp-client-manager.test.js +47 -0
  254. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  255. package/dist/src/tools/mcp-client.d.ts +20 -9
  256. package/dist/src/tools/mcp-client.js +50 -46
  257. package/dist/src/tools/mcp-client.js.map +1 -1
  258. package/dist/src/tools/mcp-client.test.js +96 -84
  259. package/dist/src/tools/mcp-client.test.js.map +1 -1
  260. package/dist/src/tools/mcp-tool.d.ts +3 -3
  261. package/dist/src/tools/mcp-tool.js +1 -0
  262. package/dist/src/tools/mcp-tool.js.map +1 -1
  263. package/dist/src/tools/ripGrep.d.ts +1 -1
  264. package/dist/src/tools/ripGrep.js +7 -7
  265. package/dist/src/tools/ripGrep.js.map +1 -1
  266. package/dist/src/tools/ripGrep.test.js +10 -7
  267. package/dist/src/tools/ripGrep.test.js.map +1 -1
  268. package/dist/src/tools/tools.d.ts +1 -0
  269. package/dist/src/tools/tools.js +1 -0
  270. package/dist/src/tools/tools.js.map +1 -1
  271. package/dist/src/tools/write-file.js +4 -17
  272. package/dist/src/tools/write-file.js.map +1 -1
  273. package/dist/src/tools/write-file.test.js +29 -83
  274. package/dist/src/tools/write-file.test.js.map +1 -1
  275. package/dist/src/utils/editCorrector.d.ts +1 -42
  276. package/dist/src/utils/editCorrector.js +9 -461
  277. package/dist/src/utils/editCorrector.js.map +1 -1
  278. package/dist/src/utils/editCorrector.test.js +17 -421
  279. package/dist/src/utils/editCorrector.test.js.map +1 -1
  280. package/dist/src/utils/envExpansion.js.map +1 -1
  281. package/dist/src/utils/errors.js +7 -0
  282. package/dist/src/utils/errors.js.map +1 -1
  283. package/dist/src/utils/errors_timeout.test.d.ts +6 -0
  284. package/dist/src/utils/errors_timeout.test.js +40 -0
  285. package/dist/src/utils/errors_timeout.test.js.map +1 -0
  286. package/dist/src/utils/extensionLoader.js +35 -0
  287. package/dist/src/utils/extensionLoader.js.map +1 -1
  288. package/dist/src/utils/extensionLoader.test.js +36 -0
  289. package/dist/src/utils/extensionLoader.test.js.map +1 -1
  290. package/dist/src/utils/fetch.js +13 -2
  291. package/dist/src/utils/fetch.js.map +1 -1
  292. package/dist/src/utils/fileUtils.js +0 -1
  293. package/dist/src/utils/fileUtils.js.map +1 -1
  294. package/dist/src/utils/fileUtils.test.js +0 -1
  295. package/dist/src/utils/fileUtils.test.js.map +1 -1
  296. package/dist/src/utils/flashFallback.test.js +24 -0
  297. package/dist/src/utils/flashFallback.test.js.map +1 -1
  298. package/dist/src/utils/googleErrors.d.ts +2 -2
  299. package/dist/src/utils/googleQuotaErrors.d.ts +3 -1
  300. package/dist/src/utils/googleQuotaErrors.js +22 -12
  301. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  302. package/dist/src/utils/googleQuotaErrors.test.js +33 -1
  303. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  304. package/dist/src/utils/retry.js +4 -2
  305. package/dist/src/utils/retry.js.map +1 -1
  306. package/dist/src/utils/retry.test.js +20 -0
  307. package/dist/src/utils/retry.test.js.map +1 -1
  308. package/dist/src/utils/schemaValidator.js +0 -1
  309. package/dist/src/utils/schemaValidator.js.map +1 -1
  310. package/dist/tsconfig.tsbuildinfo +1 -1
  311. package/package.json +1 -1
  312. package/dist/google-gemini-cli-core-0.31.0-preview.1.tgz +0 -0
@@ -16,6 +16,7 @@ describe('ClassifierStrategy', () => {
16
16
  let mockContext;
17
17
  let mockConfig;
18
18
  let mockBaseLlmClient;
19
+ let mockLocalLiteRtLmClient;
19
20
  let mockResolvedConfig;
20
21
  beforeEach(() => {
21
22
  vi.clearAllMocks();
@@ -43,12 +44,13 @@ describe('ClassifierStrategy', () => {
43
44
  mockBaseLlmClient = {
44
45
  generateJson: vi.fn(),
45
46
  };
47
+ mockLocalLiteRtLmClient = {};
46
48
  vi.spyOn(promptIdContext, 'getStore').mockReturnValue('test-prompt-id');
47
49
  });
48
50
  it('should return null if numerical routing is enabled and model is Gemini 3', async () => {
49
51
  vi.mocked(mockConfig.getNumericalRoutingEnabled).mockResolvedValue(true);
50
52
  vi.mocked(mockConfig.getModel).mockReturnValue(PREVIEW_GEMINI_MODEL_AUTO);
51
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
53
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
52
54
  expect(decision).toBeNull();
53
55
  expect(mockBaseLlmClient.generateJson).not.toHaveBeenCalled();
54
56
  });
@@ -59,7 +61,7 @@ describe('ClassifierStrategy', () => {
59
61
  reasoning: 'test',
60
62
  model_choice: 'flash',
61
63
  });
62
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
64
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
63
65
  expect(decision).not.toBeNull();
64
66
  expect(mockBaseLlmClient.generateJson).toHaveBeenCalled();
65
67
  });
@@ -69,7 +71,7 @@ describe('ClassifierStrategy', () => {
69
71
  model_choice: 'flash',
70
72
  };
71
73
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
72
- await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
74
+ await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
73
75
  expect(mockBaseLlmClient.generateJson).toHaveBeenCalledWith(expect.objectContaining({
74
76
  modelConfigKey: { model: mockResolvedConfig.model },
75
77
  promptId: 'test-prompt-id',
@@ -81,7 +83,7 @@ describe('ClassifierStrategy', () => {
81
83
  model_choice: 'flash',
82
84
  };
83
85
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
84
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
86
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
85
87
  expect(mockBaseLlmClient.generateJson).toHaveBeenCalledOnce();
86
88
  expect(decision).toEqual({
87
89
  model: DEFAULT_GEMINI_FLASH_MODEL,
@@ -99,7 +101,7 @@ describe('ClassifierStrategy', () => {
99
101
  };
100
102
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
101
103
  mockContext.request = [{ text: 'how do I build a spaceship?' }];
102
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
104
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
103
105
  expect(mockBaseLlmClient.generateJson).toHaveBeenCalledOnce();
104
106
  expect(decision).toEqual({
105
107
  model: DEFAULT_GEMINI_MODEL,
@@ -116,7 +118,7 @@ describe('ClassifierStrategy', () => {
116
118
  .mockImplementation(() => { });
117
119
  const testError = new Error('API Failure');
118
120
  vi.mocked(mockBaseLlmClient.generateJson).mockRejectedValue(testError);
119
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
121
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
120
122
  expect(decision).toBeNull();
121
123
  expect(consoleWarnSpy).toHaveBeenCalled();
122
124
  consoleWarnSpy.mockRestore();
@@ -130,7 +132,7 @@ describe('ClassifierStrategy', () => {
130
132
  // model_choice is missing, which will cause a Zod parsing error.
131
133
  };
132
134
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(malformedApiResponse);
133
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
135
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
134
136
  expect(decision).toBeNull();
135
137
  expect(consoleWarnSpy).toHaveBeenCalled();
136
138
  consoleWarnSpy.mockRestore();
@@ -152,7 +154,7 @@ describe('ClassifierStrategy', () => {
152
154
  model_choice: 'flash',
153
155
  };
154
156
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
155
- await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
157
+ await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
156
158
  const generateJsonCall = vi.mocked(mockBaseLlmClient.generateJson).mock
157
159
  .calls[0][0];
158
160
  const contents = generateJsonCall.contents;
@@ -181,7 +183,7 @@ describe('ClassifierStrategy', () => {
181
183
  model_choice: 'flash',
182
184
  };
183
185
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
184
- await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
186
+ await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
185
187
  const generateJsonCall = vi.mocked(mockBaseLlmClient.generateJson).mock
186
188
  .calls[0][0];
187
189
  const contents = generateJsonCall.contents;
@@ -208,7 +210,7 @@ describe('ClassifierStrategy', () => {
208
210
  model_choice: 'flash',
209
211
  };
210
212
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
211
- await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
213
+ await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
212
214
  const generateJsonCall = vi.mocked(mockBaseLlmClient.generateJson).mock
213
215
  .calls[0][0];
214
216
  expect(generateJsonCall.promptId).toMatch(/^classifier-router-fallback-\d+-\w+$/);
@@ -226,7 +228,7 @@ describe('ClassifierStrategy', () => {
226
228
  ...mockContext,
227
229
  requestedModel,
228
230
  };
229
- const decision = await strategy.route(contextWithRequestedModel, mockConfig, mockBaseLlmClient);
231
+ const decision = await strategy.route(contextWithRequestedModel, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
230
232
  expect(decision).not.toBeNull();
231
233
  // Since requestedModel is Pro, and choice is flash, it should resolve to Flash
232
234
  expect(decision?.model).toBe(DEFAULT_GEMINI_FLASH_MODEL);
@@ -240,7 +242,7 @@ describe('ClassifierStrategy', () => {
240
242
  model_choice: 'pro',
241
243
  };
242
244
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
243
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
245
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
244
246
  expect(decision?.model).toBe(PREVIEW_GEMINI_3_1_MODEL);
245
247
  });
246
248
  it('should route to PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL when Gemini 3.1 is launched and auth is USE_GEMINI', async () => {
@@ -254,7 +256,7 @@ describe('ClassifierStrategy', () => {
254
256
  model_choice: 'pro',
255
257
  };
256
258
  vi.mocked(mockBaseLlmClient.generateJson).mockResolvedValue(mockApiResponse);
257
- const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient);
259
+ const decision = await strategy.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
258
260
  expect(decision?.model).toBe(PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL);
259
261
  });
260
262
  });
@@ -1 +1 @@
1
- {"version":3,"file":"classifierStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/classifierStrategy.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,OAAO,EACL,cAAc,EACd,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,qCAAqC,GACtC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAEvC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,QAA4B,CAAC;IACjC,IAAI,WAA2B,CAAC;IAChC,IAAI,UAAkB,CAAC;IACvB,IAAI,iBAAgC,CAAC;IACrC,IAAI,kBAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACpC,WAAW,GAAG;YACZ,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAClC,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM;SACrC,CAAC;QAEF,kBAAkB,GAAG;YACnB,KAAK,EAAE,YAAY;YACnB,qBAAqB,EAAE,EAAE;SACQ,CAAC;QACpC,UAAU,GAAG;YACX,kBAAkB,EAAE;gBAClB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;aAC/D;YACD,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,yBAAyB,CAAC;YAC5D,0BAA0B,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAC5D,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACrD,yBAAyB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;gBACjD,QAAQ,EAAE,QAAQ,CAAC,iBAAiB;aACrC,CAAC;SACkB,CAAC;QACvB,iBAAiB,GAAG;YAClB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;SACM,CAAC;QAE9B,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;QAC1E,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CAAC;YAC1D,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,OAAO;SACtB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,aAAa;YACxB,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;QAEF,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEjE,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,oBAAoB,CACzD,MAAM,CAAC,gBAAgB,CAAC;YACtB,cAAc,EAAE,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE;YACnD,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,wBAAwB;YACnC,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,KAAK,EAAE,0BAA0B;YACjC,QAAQ,EAAE;gBACR,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,SAAS,EAAE,eAAe,CAAC,SAAS;aACrC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,yBAAyB;YACpC,YAAY,EAAE,KAAK;SACpB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;QACF,WAAW,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,KAAK,EAAE,oBAAoB;YAC3B,QAAQ,EAAE;gBACR,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B,SAAS,EAAE,eAAe,CAAC,SAAS;aACrC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,cAAc,GAAG,EAAE;aACtB,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;aAC1B,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QAC3C,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAEvE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1C,cAAc,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,cAAc,GAAG,EAAE;aACtB,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;aAC1B,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChC,MAAM,oBAAoB,GAAG;YAC3B,SAAS,EAAE,wBAAwB;YACnC,iEAAiE;SAClE,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,oBAAoB,CACrB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1C,cAAc,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,WAAW,CAAC,OAAO,GAAG;YACpB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;YAClD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE;YACnE;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE;oBACL,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACpE;aACF;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE;SACzD,CAAC;QACF,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;QAEF,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEjE,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,IAAI;aACpE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAE3C,MAAM,gBAAgB,GAAG;YACvB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;YAClD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,EAAE;YACxD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;SACnD,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,WAAW,GAAc,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACtE,oCAAoC;YACpC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChB,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;iBACvD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC;QAClC,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;QAEF,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEjE,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,IAAI;aACpE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QAE3C,gDAAgD;QAChD,MAAM,qBAAqB,GAAG,EAAE,CAAC;QACjC,MAAM,yBAAyB,GAAG,CAAC,CAAC;QACpC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CACtC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CACtE,CAAC;QACF,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAEpE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,GAAG,YAAY;YACf,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE;SAC7C,CAAC,CAAC;QACH,wDAAwD;QACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,cAAc,GAAG,EAAE;aACtB,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;aAC1B,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;QAEF,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAEjE,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,IAAI;aACpE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEf,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CACvC,sCAAsC,CACvC,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CACzC,MAAM,CAAC,gBAAgB,CACrB,oGAAoG,CACrG,CACF,CAAC;QACF,cAAc,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,cAAc,GAAG,oBAAoB,CAAC,CAAC,YAAY;QACzD,MAAM,eAAe,GAAG;YACtB,SAAS,EAAE,iBAAiB;YAC5B,YAAY,EAAE,OAAO;SACtB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;QAEF,MAAM,yBAAyB,GAAG;YAChC,GAAG,WAAW;YACd,cAAc;SACG,CAAC;QAEpB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,yBAAyB,EACzB,UAAU,EACV,iBAAiB,CAClB,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAChC,+EAA+E;QAC/E,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACnD,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAClE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;YAC1E,MAAM,eAAe,GAAG;gBACtB,SAAS,EAAE,cAAc;gBACzB,YAAY,EAAE,KAAK;aACpB,CAAC;YACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;YAEF,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0GAA0G,EAAE,KAAK,IAAI,EAAE;YACxH,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAClE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;YAC1E,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,eAAe,CAAC;gBAC9D,QAAQ,EAAE,QAAQ,CAAC,UAAU;aAC9B,CAAC,CAAC;YACH,MAAM,eAAe,GAAG;gBACtB,SAAS,EAAE,cAAc;gBACzB,YAAY,EAAE,KAAK;aACpB,CAAC;YACF,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,iBAAiB,CACzD,eAAe,CAChB,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,WAAW,EACX,UAAU,EACV,iBAAiB,CAClB,CAAC;YAEF,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"classifierStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/classifierStrategy.test.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  import type { Config } from '../../config/config.js';
7
7
  import type { BaseLlmClient } from '../../core/baseLlmClient.js';
8
8
  import type { RoutingContext, RoutingDecision, RoutingStrategy, TerminalStrategy } from '../routingStrategy.js';
9
+ import type { LocalLiteRtLmClient } from '../../core/localLiteRtLmClient.js';
9
10
  /**
10
11
  * A strategy that attempts a list of child strategies in order (Chain of Responsibility).
11
12
  */
@@ -18,7 +19,7 @@ export declare class CompositeStrategy implements TerminalStrategy {
18
19
  * @param name The name of this composite configuration (e.g., 'router' or 'composite').
19
20
  */
20
21
  constructor(strategies: [...RoutingStrategy[], TerminalStrategy], name?: string);
21
- route(context: RoutingContext, config: Config, baseLlmClient: BaseLlmClient): Promise<RoutingDecision>;
22
+ route(context: RoutingContext, config: Config, baseLlmClient: BaseLlmClient, localLiteRtLmClient: LocalLiteRtLmClient): Promise<RoutingDecision>;
22
23
  /**
23
24
  * Helper function to enhance the decision metadata with composite information.
24
25
  */
@@ -20,7 +20,7 @@ export class CompositeStrategy {
20
20
  this.strategies = strategies;
21
21
  this.name = name;
22
22
  }
23
- async route(context, config, baseLlmClient) {
23
+ async route(context, config, baseLlmClient, localLiteRtLmClient) {
24
24
  const startTime = performance.now();
25
25
  // Separate non-terminal strategies from the terminal one.
26
26
  // This separation allows TypeScript to understand the control flow guarantees.
@@ -30,7 +30,7 @@ export class CompositeStrategy {
30
30
  // Try non-terminal strategies, allowing them to fail gracefully.
31
31
  for (const strategy of nonTerminalStrategies) {
32
32
  try {
33
- const decision = await strategy.route(context, config, baseLlmClient);
33
+ const decision = await strategy.route(context, config, baseLlmClient, localLiteRtLmClient);
34
34
  if (decision) {
35
35
  return this.finalizeDecision(decision, startTime);
36
36
  }
@@ -41,7 +41,7 @@ export class CompositeStrategy {
41
41
  }
42
42
  // If no other strategy matched, execute the terminal strategy.
43
43
  try {
44
- const decision = await terminalStrategy.route(context, config, baseLlmClient);
44
+ const decision = await terminalStrategy.route(context, config, baseLlmClient, localLiteRtLmClient);
45
45
  return this.finalizeDecision(decision, startTime);
46
46
  }
47
47
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"compositeStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/compositeStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,CAAS;IAEd,UAAU,CAA2C;IAE7D;;;;OAIG;IACH,YACE,UAAoD,EACpD,OAAe,WAAW;QAE1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAuB,EACvB,MAAc,EACd,aAA4B;QAE5B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,0DAA0D;QAC1D,+EAA+E;QAC/E,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CACjD,CAAC,EACD,CAAC,CAAC,CACkB,CAAC;QACvB,uEAAuE;QACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CACP,CAAC;QAEtB,iEAAiE;QACjE,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;gBACtE,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CACd,uBAAuB,QAAQ,CAAC,IAAI,+CAA+C,EACnF,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAC3C,OAAO,EACP,MAAM,EACN,aAAa,CACd,CAAC;YAEF,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,gDAAgD,gBAAgB,CAAC,IAAI,0CAA0C,EAC/G,KAAK,CACN,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,QAAyB,EACzB,SAAiB;QAEjB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEnE,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;QAEnE,OAAO;YACL,GAAG,QAAQ;YACX,QAAQ,EAAE;gBACR,GAAG,QAAQ,CAAC,QAAQ;gBACpB,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,qCAAqC;aACtE;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"compositeStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/compositeStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASnD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,CAAS;IAEd,UAAU,CAA2C;IAE7D;;;;OAIG;IACH,YACE,UAAoD,EACpD,OAAe,WAAW;QAE1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAAuB,EACvB,MAAc,EACd,aAA4B,EAC5B,mBAAwC;QAExC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEpC,0DAA0D;QAC1D,+EAA+E;QAC/E,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CACjD,CAAC,EACD,CAAC,CAAC,CACkB,CAAC;QACvB,uEAAuE;QACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CACtC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CACP,CAAC;QAEtB,iEAAiE;QACjE,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,CACnC,OAAO,EACP,MAAM,EACN,aAAa,EACb,mBAAmB,CACpB,CAAC;gBACF,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,IAAI,CACd,uBAAuB,QAAQ,CAAC,IAAI,+CAA+C,EACnF,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAC3C,OAAO,EACP,MAAM,EACN,aAAa,EACb,mBAAmB,CACpB,CAAC;YAEF,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,gDAAgD,gBAAgB,CAAC,IAAI,0CAA0C,EAC/G,KAAK,CACN,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,QAAyB,EACzB,SAAiB;QAEjB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAEnE,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;QAEnE,OAAO;YACL,GAAG,QAAQ;YACX,QAAQ,EAAE;gBACR,GAAG,QAAQ,CAAC,QAAQ;gBACpB,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,qCAAqC;aACtE;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -16,6 +16,7 @@ describe('CompositeStrategy', () => {
16
16
  let mockContext;
17
17
  let mockConfig;
18
18
  let mockBaseLlmClient;
19
+ let mockLocalLiteRtLmClient;
19
20
  let mockStrategy1;
20
21
  let mockStrategy2;
21
22
  let mockTerminalStrategy;
@@ -25,6 +26,7 @@ describe('CompositeStrategy', () => {
25
26
  mockContext = {};
26
27
  mockConfig = {};
27
28
  mockBaseLlmClient = {};
29
+ mockLocalLiteRtLmClient = {};
28
30
  emitFeedbackSpy = vi.spyOn(coreEvents, 'emitFeedback');
29
31
  mockStrategy1 = {
30
32
  name: 'strategy1',
@@ -57,16 +59,16 @@ describe('CompositeStrategy', () => {
57
59
  };
58
60
  vi.spyOn(mockStrategy2, 'route').mockResolvedValue(decision);
59
61
  const composite = new CompositeStrategy([mockStrategy1, mockStrategy2, mockTerminalStrategy], 'test-router');
60
- const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient);
61
- expect(mockStrategy1.route).toHaveBeenCalledWith(mockContext, mockConfig, mockBaseLlmClient);
62
- expect(mockStrategy2.route).toHaveBeenCalledWith(mockContext, mockConfig, mockBaseLlmClient);
62
+ const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
63
+ expect(mockStrategy1.route).toHaveBeenCalledWith(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
64
+ expect(mockStrategy2.route).toHaveBeenCalledWith(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
63
65
  expect(mockTerminalStrategy.route).not.toHaveBeenCalled();
64
66
  expect(result.model).toBe('strategy2-model');
65
67
  expect(result.metadata.source).toBe('test-router/strategy2');
66
68
  });
67
69
  it('should fall back to the terminal strategy if no other strategy provides a decision', async () => {
68
70
  const composite = new CompositeStrategy([mockStrategy1, mockStrategy2, mockTerminalStrategy], 'test-router');
69
- const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient);
71
+ const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
70
72
  expect(mockStrategy1.route).toHaveBeenCalledTimes(1);
71
73
  expect(mockStrategy2.route).toHaveBeenCalledTimes(1);
72
74
  expect(mockTerminalStrategy.route).toHaveBeenCalledTimes(1);
@@ -76,7 +78,7 @@ describe('CompositeStrategy', () => {
76
78
  it('should handle errors in non-terminal strategies and continue', async () => {
77
79
  vi.spyOn(mockStrategy1, 'route').mockRejectedValue(new Error('Strategy 1 failed'));
78
80
  const composite = new CompositeStrategy([mockStrategy1, mockTerminalStrategy], 'test-router');
79
- const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient);
81
+ const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
80
82
  expect(debugLogger.warn).toHaveBeenCalledWith("[Routing] Strategy 'strategy1' failed. Continuing to next strategy. Error:", expect.any(Error));
81
83
  expect(result.model).toBe('terminal-model');
82
84
  });
@@ -84,7 +86,7 @@ describe('CompositeStrategy', () => {
84
86
  const terminalError = new Error('Terminal strategy failed');
85
87
  vi.spyOn(mockTerminalStrategy, 'route').mockRejectedValue(terminalError);
86
88
  const composite = new CompositeStrategy([mockTerminalStrategy]);
87
- await expect(composite.route(mockContext, mockConfig, mockBaseLlmClient)).rejects.toThrow(terminalError);
89
+ await expect(composite.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient)).rejects.toThrow(terminalError);
88
90
  expect(emitFeedbackSpy).toHaveBeenCalledWith('error', "[Routing] Critical Error: Terminal strategy 'terminal' failed. Routing cannot proceed. Error:", terminalError);
89
91
  });
90
92
  it('should correctly finalize the decision metadata', async () => {
@@ -98,7 +100,7 @@ describe('CompositeStrategy', () => {
98
100
  };
99
101
  vi.spyOn(mockStrategy1, 'route').mockResolvedValue(decision);
100
102
  const composite = new CompositeStrategy([mockStrategy1, mockTerminalStrategy], 'my-composite');
101
- const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient);
103
+ const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
102
104
  expect(result.model).toBe('some-model');
103
105
  expect(result.metadata.source).toBe('my-composite/child-source');
104
106
  expect(result.metadata.reasoning).toBe('Child reasoning');
@@ -117,7 +119,7 @@ describe('CompositeStrategy', () => {
117
119
  };
118
120
  vi.spyOn(mockStrategy1, 'route').mockResolvedValue(decision);
119
121
  const composite = new CompositeStrategy([mockStrategy1, mockTerminalStrategy], 'my-composite');
120
- const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient);
122
+ const result = await composite.route(mockContext, mockConfig, mockBaseLlmClient, mockLocalLiteRtLmClient);
121
123
  expect(result.metadata.latencyMs).toBeGreaterThanOrEqual(0);
122
124
  });
123
125
  });
@@ -1 +1 @@
1
- {"version":3,"file":"compositeStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/compositeStrategy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compositeStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/compositeStrategy.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,8 @@
6
6
  import type { Config } from '../../config/config.js';
7
7
  import type { BaseLlmClient } from '../../core/baseLlmClient.js';
8
8
  import type { RoutingContext, RoutingDecision, TerminalStrategy } from '../routingStrategy.js';
9
+ import type { LocalLiteRtLmClient } from '../../core/localLiteRtLmClient.js';
9
10
  export declare class DefaultStrategy implements TerminalStrategy {
10
11
  readonly name = "default";
11
- route(_context: RoutingContext, config: Config, _baseLlmClient: BaseLlmClient): Promise<RoutingDecision>;
12
+ route(_context: RoutingContext, config: Config, _baseLlmClient: BaseLlmClient, _localLiteRtLmClient: LocalLiteRtLmClient): Promise<RoutingDecision>;
12
13
  }
@@ -6,7 +6,7 @@
6
6
  import { resolveModel } from '../../config/models.js';
7
7
  export class DefaultStrategy {
8
8
  name = 'default';
9
- async route(_context, config, _baseLlmClient) {
9
+ async route(_context, config, _baseLlmClient, _localLiteRtLmClient) {
10
10
  const defaultModel = resolveModel(config.getModel(), config.getGemini31LaunchedSync?.() ?? false);
11
11
  return {
12
12
  model: defaultModel,
@@ -1 +1 @@
1
- {"version":3,"file":"defaultStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/defaultStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,SAAS,CAAC;IAE1B,KAAK,CAAC,KAAK,CACT,QAAwB,EACxB,MAAc,EACd,cAA6B;QAE7B,MAAM,YAAY,GAAG,YAAY,CAC/B,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,uBAAuB,EAAE,EAAE,IAAI,KAAK,CAC5C,CAAC;QACF,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE;gBACR,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,6BAA6B,YAAY,EAAE;aACvD;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"defaultStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/defaultStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,SAAS,CAAC;IAE1B,KAAK,CAAC,KAAK,CACT,QAAwB,EACxB,MAAc,EACd,cAA6B,EAC7B,oBAAyC;QAEzC,MAAM,YAAY,GAAG,YAAY,CAC/B,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,uBAAuB,EAAE,EAAE,IAAI,KAAK,CAC5C,CAAC;QACF,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE;gBACR,MAAM,EAAE,IAAI,CAAC,IAAI;gBACjB,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,6BAA6B,YAAY,EAAE;aACvD;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -14,7 +14,8 @@ describe('DefaultStrategy', () => {
14
14
  getModel: vi.fn().mockReturnValue(DEFAULT_GEMINI_MODEL_AUTO),
15
15
  };
16
16
  const mockClient = {};
17
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
17
+ const mockLocalLiteRtLmClient = {};
18
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
18
19
  expect(decision).toEqual({
19
20
  model: DEFAULT_GEMINI_MODEL,
20
21
  metadata: {
@@ -31,7 +32,8 @@ describe('DefaultStrategy', () => {
31
32
  getModel: vi.fn().mockReturnValue(PREVIEW_GEMINI_MODEL_AUTO),
32
33
  };
33
34
  const mockClient = {};
34
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
35
+ const mockLocalLiteRtLmClient = {};
36
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
35
37
  expect(decision).toEqual({
36
38
  model: PREVIEW_GEMINI_MODEL,
37
39
  metadata: {
@@ -48,7 +50,8 @@ describe('DefaultStrategy', () => {
48
50
  getModel: vi.fn().mockReturnValue(GEMINI_MODEL_ALIAS_AUTO),
49
51
  };
50
52
  const mockClient = {};
51
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
53
+ const mockLocalLiteRtLmClient = {};
54
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
52
55
  expect(decision).toEqual({
53
56
  model: PREVIEW_GEMINI_MODEL,
54
57
  metadata: {
@@ -66,7 +69,8 @@ describe('DefaultStrategy', () => {
66
69
  getModel: vi.fn().mockReturnValue(PREVIEW_GEMINI_FLASH_MODEL),
67
70
  };
68
71
  const mockClient = {};
69
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
72
+ const mockLocalLiteRtLmClient = {};
73
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
70
74
  expect(decision).toEqual({
71
75
  model: PREVIEW_GEMINI_FLASH_MODEL,
72
76
  metadata: {
@@ -1 +1 @@
1
- {"version":3,"file":"defaultStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/defaultStrategy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaultStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/defaultStrategy.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,8 @@
6
6
  import type { Config } from '../../config/config.js';
7
7
  import type { BaseLlmClient } from '../../core/baseLlmClient.js';
8
8
  import type { RoutingContext, RoutingDecision, RoutingStrategy } from '../routingStrategy.js';
9
+ import type { LocalLiteRtLmClient } from '../../core/localLiteRtLmClient.js';
9
10
  export declare class FallbackStrategy implements RoutingStrategy {
10
11
  readonly name = "fallback";
11
- route(context: RoutingContext, config: Config, _baseLlmClient: BaseLlmClient): Promise<RoutingDecision | null>;
12
+ route(context: RoutingContext, config: Config, _baseLlmClient: BaseLlmClient, _localLiteRtLmClient: LocalLiteRtLmClient): Promise<RoutingDecision | null>;
12
13
  }
@@ -7,7 +7,7 @@ import { selectModelForAvailability } from '../../availability/policyHelpers.js'
7
7
  import { resolveModel } from '../../config/models.js';
8
8
  export class FallbackStrategy {
9
9
  name = 'fallback';
10
- async route(context, config, _baseLlmClient) {
10
+ async route(context, config, _baseLlmClient, _localLiteRtLmClient) {
11
11
  const requestedModel = context.requestedModel ?? config.getModel();
12
12
  const resolvedModel = resolveModel(requestedModel, config.getGemini31LaunchedSync?.() ?? false);
13
13
  const service = config.getModelAvailabilityService();
@@ -1 +1 @@
1
- {"version":3,"file":"fallbackStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/fallbackStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQtD,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,UAAU,CAAC;IAE3B,KAAK,CAAC,KAAK,CACT,OAAuB,EACvB,MAAc,EACd,cAA6B;QAE7B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,MAAM,aAAa,GAAG,YAAY,CAChC,cAAc,EACd,MAAM,CAAC,uBAAuB,EAAE,EAAE,IAAI,KAAK,CAC5C,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,2BAA2B,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEjD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAErE,IACE,SAAS,EAAE,aAAa;YACxB,SAAS,CAAC,aAAa,KAAK,cAAc,EAC1C,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,SAAS,CAAC,aAAa;gBAC9B,QAAQ,EAAE;oBACR,MAAM,EAAE,IAAI,CAAC,IAAI;oBACjB,SAAS,EAAE,CAAC;oBACZ,SAAS,EAAE,SAAS,cAAc,oBAAoB,QAAQ,CAAC,MAAM,sBAAsB,SAAS,CAAC,aAAa,EAAE;iBACrH;aACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"fallbackStrategy.js","sourceRoot":"","sources":["../../../../src/routing/strategies/fallbackStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAStD,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,UAAU,CAAC;IAE3B,KAAK,CAAC,KAAK,CACT,OAAuB,EACvB,MAAc,EACd,cAA6B,EAC7B,oBAAyC;QAEzC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,MAAM,aAAa,GAAG,YAAY,CAChC,cAAc,EACd,MAAM,CAAC,uBAAuB,EAAE,EAAE,IAAI,KAAK,CAC5C,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,CAAC,2BAA2B,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEjD,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAErE,IACE,SAAS,EAAE,aAAa;YACxB,SAAS,CAAC,aAAa,KAAK,cAAc,EAC1C,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,SAAS,CAAC,aAAa;gBAC9B,QAAQ,EAAE;oBACR,MAAM,EAAE,IAAI,CAAC,IAAI;oBACjB,SAAS,EAAE,CAAC;oBACZ,SAAS,EAAE,SAAS,cAAc,oBAAoB,QAAQ,CAAC,MAAM,sBAAsB,SAAS,CAAC,aAAa,EAAE;iBACrH;aACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -19,6 +19,7 @@ describe('FallbackStrategy', () => {
19
19
  const strategy = new FallbackStrategy();
20
20
  const mockContext = {};
21
21
  const mockClient = {};
22
+ const mockLocalLiteRtLmClient = {};
22
23
  let mockService;
23
24
  let mockConfig;
24
25
  beforeEach(() => {
@@ -33,7 +34,7 @@ describe('FallbackStrategy', () => {
33
34
  it('should return null if the requested model is available', async () => {
34
35
  // Mock snapshot to return available
35
36
  vi.mocked(mockService.snapshot).mockReturnValue({ available: true });
36
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
37
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
37
38
  expect(decision).toBeNull();
38
39
  // Should check availability of the resolved model (DEFAULT_GEMINI_MODEL)
39
40
  expect(mockService.snapshot).toHaveBeenCalledWith(DEFAULT_GEMINI_MODEL);
@@ -49,7 +50,7 @@ describe('FallbackStrategy', () => {
49
50
  selectedModel: DEFAULT_GEMINI_MODEL,
50
51
  skipped: [],
51
52
  });
52
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
53
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
53
54
  expect(decision).toBeNull();
54
55
  });
55
56
  it('should return fallback decision if model is unavailable and fallback found', async () => {
@@ -63,7 +64,7 @@ describe('FallbackStrategy', () => {
63
64
  selectedModel: DEFAULT_GEMINI_FLASH_MODEL,
64
65
  skipped: [{ model: DEFAULT_GEMINI_MODEL, reason: 'quota' }],
65
66
  });
66
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
67
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
67
68
  expect(decision).not.toBeNull();
68
69
  expect(decision?.model).toBe(DEFAULT_GEMINI_FLASH_MODEL);
69
70
  expect(decision?.metadata.source).toBe('fallback');
@@ -73,7 +74,7 @@ describe('FallbackStrategy', () => {
73
74
  // Mock snapshot to return available for the RESOLVED model
74
75
  vi.mocked(mockService.snapshot).mockReturnValue({ available: true });
75
76
  vi.mocked(mockConfig.getModel).mockReturnValue(DEFAULT_GEMINI_MODEL_AUTO);
76
- const decision = await strategy.route(mockContext, mockConfig, mockClient);
77
+ const decision = await strategy.route(mockContext, mockConfig, mockClient, mockLocalLiteRtLmClient);
77
78
  expect(decision).toBeNull();
78
79
  // Important: check that it queried snapshot with the RESOLVED model, not 'auto'
79
80
  expect(mockService.snapshot).toHaveBeenCalledWith(DEFAULT_GEMINI_MODEL);
@@ -86,7 +87,7 @@ describe('FallbackStrategy', () => {
86
87
  const contextWithRequestedModel = {
87
88
  requestedModel,
88
89
  };
89
- const decision = await strategy.route(contextWithRequestedModel, mockConfig, mockClient);
90
+ const decision = await strategy.route(contextWithRequestedModel, mockConfig, mockClient, mockLocalLiteRtLmClient);
90
91
  expect(decision).toBeNull();
91
92
  // Should check availability of the requested model from context
92
93
  expect(mockService.snapshot).toHaveBeenCalledWith(requestedModel);
@@ -1 +1 @@
1
- {"version":3,"file":"fallbackStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/fallbackStrategy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallbackStrategy.test.js","sourceRoot":"","sources":["../../../../src/routing/strategies/fallbackStrategy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { BaseLlmClient } from '../../core/baseLlmClient.js';
7
+ import type { RoutingContext, RoutingDecision, RoutingStrategy } from '../routingStrategy.js';
8
+ import type { Config } from '../../config/config.js';
9
+ import type { LocalLiteRtLmClient } from '../../core/localLiteRtLmClient.js';
10
+ export declare class GemmaClassifierStrategy implements RoutingStrategy {
11
+ readonly name = "gemma-classifier";
12
+ private flattenChatHistory;
13
+ route(context: RoutingContext, config: Config, _baseLlmClient: BaseLlmClient, client: LocalLiteRtLmClient): Promise<RoutingDecision | null>;
14
+ }