@jsonstudio/rcc 0.89.1205 → 0.89.1348

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 (332) hide show
  1. package/README.md +17 -0
  2. package/configsamples/config.json +426 -0
  3. package/configsamples/config.reference.json +58 -0
  4. package/configsamples/provider/crs/config.v1.json +46 -0
  5. package/configsamples/provider/glm/config.v1.json +81 -0
  6. package/configsamples/provider/glm-anthropic/config.v1.json +45 -0
  7. package/configsamples/provider/iflow/config.v1.json +74 -0
  8. package/configsamples/provider/kimi/config.v1.json +41 -0
  9. package/configsamples/provider/lmstudio/config.v1.json +101 -0
  10. package/configsamples/provider/mimo/config.v1.json +35 -0
  11. package/configsamples/provider/modelscope/config.v1.json +96 -0
  12. package/configsamples/provider/qwen/config.v1.json +38 -0
  13. package/configsamples/provider/tab/config.v1.json +50 -0
  14. package/configsamples/provider/tabglm/config.v1.json +49 -0
  15. package/dist/build-info.js +2 -2
  16. package/dist/cli/commands/code.js +12 -6
  17. package/dist/cli/commands/code.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +2 -1
  19. package/dist/cli/commands/config.js +74 -103
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/examples.js +6 -6
  22. package/dist/cli/commands/examples.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts +28 -0
  24. package/dist/cli/commands/init.js +91 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/commands/port.js +10 -2
  27. package/dist/cli/commands/port.js.map +1 -1
  28. package/dist/cli/commands/restart.js +5 -2
  29. package/dist/cli/commands/restart.js.map +1 -1
  30. package/dist/cli/commands/start.js +25 -22
  31. package/dist/cli/commands/start.js.map +1 -1
  32. package/dist/cli/commands/status.js +1 -0
  33. package/dist/cli/commands/status.js.map +1 -1
  34. package/dist/cli/commands/stop.js +1 -0
  35. package/dist/cli/commands/stop.js.map +1 -1
  36. package/dist/cli/config/bundled-docs.d.ts +20 -0
  37. package/dist/cli/config/bundled-docs.js +91 -0
  38. package/dist/cli/config/bundled-docs.js.map +1 -0
  39. package/dist/cli/config/init-config.d.ts +36 -0
  40. package/dist/cli/config/init-config.js +180 -0
  41. package/dist/cli/config/init-config.js.map +1 -0
  42. package/dist/cli/config/init-provider-catalog.d.ts +8 -0
  43. package/dist/cli/config/init-provider-catalog.js +187 -0
  44. package/dist/cli/config/init-provider-catalog.js.map +1 -0
  45. package/dist/cli/register/init-command.d.ts +3 -0
  46. package/dist/cli/register/init-command.js +5 -0
  47. package/dist/cli/register/init-command.js.map +1 -0
  48. package/dist/cli.js +28 -3
  49. package/dist/cli.js.map +1 -1
  50. package/dist/client/gemini-cli/gemini-cli-protocol-client.js +1 -1
  51. package/dist/client/gemini-cli/gemini-cli-protocol-client.js.map +1 -1
  52. package/dist/config/risk-control-config.d.ts +94 -0
  53. package/dist/config/risk-control-config.js +196 -0
  54. package/dist/config/risk-control-config.js.map +1 -0
  55. package/dist/constants/index.d.ts +6 -0
  56. package/dist/constants/index.js +13 -0
  57. package/dist/constants/index.js.map +1 -1
  58. package/dist/docs/daemon-admin-ui.html +2113 -190
  59. package/dist/index.js +0 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/manager/modules/health/index.d.ts +1 -1
  62. package/dist/manager/modules/quota/antigravity-quota-manager.d.ts +70 -0
  63. package/dist/manager/modules/quota/antigravity-quota-manager.js +442 -0
  64. package/dist/manager/modules/quota/antigravity-quota-manager.js.map +1 -0
  65. package/dist/manager/modules/quota/index.d.ts +3 -127
  66. package/dist/manager/modules/quota/index.js +2 -1093
  67. package/dist/manager/modules/quota/index.js.map +1 -1
  68. package/dist/manager/modules/quota/provider-key-normalization.d.ts +3 -0
  69. package/dist/manager/modules/quota/provider-key-normalization.js +155 -0
  70. package/dist/manager/modules/quota/provider-key-normalization.js.map +1 -0
  71. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.d.ts +9 -0
  72. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js +115 -0
  73. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js.map +1 -0
  74. package/dist/manager/modules/quota/provider-quota-daemon.d.ts +77 -0
  75. package/dist/manager/modules/quota/provider-quota-daemon.events.d.ts +12 -0
  76. package/dist/manager/modules/quota/provider-quota-daemon.events.js +237 -0
  77. package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -0
  78. package/dist/manager/modules/quota/provider-quota-daemon.js +404 -0
  79. package/dist/manager/modules/quota/provider-quota-daemon.js.map +1 -0
  80. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.d.ts +11 -0
  81. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js +189 -0
  82. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js.map +1 -0
  83. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.d.ts +8 -0
  84. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js +96 -0
  85. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js.map +1 -0
  86. package/dist/manager/modules/quota/provider-quota-daemon.view.d.ts +19 -0
  87. package/dist/manager/modules/quota/provider-quota-daemon.view.js +37 -0
  88. package/dist/manager/modules/quota/provider-quota-daemon.view.js.map +1 -0
  89. package/dist/manager/modules/routing/index.d.ts +1 -0
  90. package/dist/manager/modules/routing/index.js +11 -25
  91. package/dist/manager/modules/routing/index.js.map +1 -1
  92. package/dist/manager/quota/provider-quota-center.d.ts +2 -0
  93. package/dist/manager/quota/provider-quota-center.js +80 -82
  94. package/dist/manager/quota/provider-quota-center.js.map +1 -1
  95. package/dist/modules/llmswitch/bridge.d.ts +16 -18
  96. package/dist/modules/llmswitch/bridge.js +293 -94
  97. package/dist/modules/llmswitch/bridge.js.map +1 -1
  98. package/dist/modules/llmswitch/core-loader.d.ts +4 -2
  99. package/dist/modules/llmswitch/core-loader.js +32 -20
  100. package/dist/modules/llmswitch/core-loader.js.map +1 -1
  101. package/dist/modules/pipeline/utils/colored-logger.js +3 -2
  102. package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
  103. package/dist/modules/pipeline/utils/debug-logger.js +1 -1
  104. package/dist/modules/pipeline/utils/debug-logger.js.map +1 -1
  105. package/dist/providers/auth/iflow-cookie-auth.js +0 -2
  106. package/dist/providers/auth/iflow-cookie-auth.js.map +1 -1
  107. package/dist/providers/auth/oauth-lifecycle.js +2 -23
  108. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  109. package/dist/providers/core/config/camoufox-launcher.js +35 -4
  110. package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
  111. package/dist/providers/core/runtime/antigravity-quota-client.js +6 -3
  112. package/dist/providers/core/runtime/antigravity-quota-client.js.map +1 -1
  113. package/dist/providers/core/runtime/base-provider.d.ts +2 -2
  114. package/dist/providers/core/runtime/base-provider.js +74 -69
  115. package/dist/providers/core/runtime/base-provider.js.map +1 -1
  116. package/dist/providers/core/runtime/gemini-cli-http-provider.js +6 -4
  117. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  118. package/dist/providers/core/runtime/http-request-executor.js +2 -2
  119. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  120. package/dist/providers/core/runtime/http-transport-provider.d.ts +14 -0
  121. package/dist/providers/core/runtime/http-transport-provider.js +111 -5
  122. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  123. package/dist/providers/core/runtime/provider-error-classifier.js +10 -0
  124. package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
  125. package/dist/providers/core/runtime/provider-factory.js +7 -5
  126. package/dist/providers/core/runtime/provider-factory.js.map +1 -1
  127. package/dist/providers/core/runtime/provider-runtime-metadata.d.ts +6 -0
  128. package/dist/providers/core/runtime/provider-runtime-metadata.js.map +1 -1
  129. package/dist/providers/core/runtime/responses-provider.d.ts +1 -7
  130. package/dist/providers/core/runtime/responses-provider.js +12 -93
  131. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  132. package/dist/providers/core/strategies/oauth-auth-code-flow.js +12 -8
  133. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  134. package/dist/providers/core/utils/http-client.js +16 -3
  135. package/dist/providers/core/utils/http-client.js.map +1 -1
  136. package/dist/providers/core/utils/provider-error-logger.d.ts +1 -1
  137. package/dist/providers/core/utils/provider-error-reporter.d.ts +3 -1
  138. package/dist/providers/core/utils/provider-error-reporter.js +3 -0
  139. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  140. package/dist/providers/core/utils/snapshot-writer.js +1 -4
  141. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  142. package/dist/providers/mock/mock-provider-runtime.js +57 -27
  143. package/dist/providers/mock/mock-provider-runtime.js.map +1 -1
  144. package/dist/scripts/camoufox/launch-auth.mjs +193 -58
  145. package/dist/server/handlers/handler-utils.js +3 -2
  146. package/dist/server/handlers/handler-utils.js.map +1 -1
  147. package/dist/server/runtime/http-server/daemon-admin/auth-handler.d.ts +2 -0
  148. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +103 -0
  149. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -0
  150. package/dist/server/runtime/http-server/daemon-admin/auth-session.d.ts +5 -0
  151. package/dist/server/runtime/http-server/daemon-admin/auth-session.js +77 -0
  152. package/dist/server/runtime/http-server/daemon-admin/auth-session.js.map +1 -0
  153. package/dist/server/runtime/http-server/daemon-admin/auth-store.d.ts +18 -0
  154. package/dist/server/runtime/http-server/daemon-admin/auth-store.js +89 -0
  155. package/dist/server/runtime/http-server/daemon-admin/auth-store.js.map +1 -0
  156. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +1 -2
  157. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  158. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +226 -24
  159. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
  160. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js +47 -8
  161. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js.map +1 -1
  162. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js +1 -1
  163. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js.map +1 -1
  164. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js +1 -1
  165. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js.map +1 -1
  166. package/dist/server/runtime/http-server/daemon-admin/status-handler.js +68 -4
  167. package/dist/server/runtime/http-server/daemon-admin/status-handler.js.map +1 -1
  168. package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +3 -4
  169. package/dist/server/runtime/http-server/daemon-admin-routes.js +9 -14
  170. package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
  171. package/dist/server/runtime/http-server/executor-metadata.js +1 -1
  172. package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
  173. package/dist/server/runtime/http-server/executor-response.js +0 -16
  174. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  175. package/dist/server/runtime/http-server/hub-shadow-compare.js +110 -34
  176. package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -1
  177. package/dist/server/runtime/http-server/index.d.ts +5 -3
  178. package/dist/server/runtime/http-server/index.js +215 -109
  179. package/dist/server/runtime/http-server/index.js.map +1 -1
  180. package/dist/server/runtime/http-server/middleware.js +19 -1
  181. package/dist/server/runtime/http-server/middleware.js.map +1 -1
  182. package/dist/server/runtime/http-server/request-executor.js +10 -19
  183. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  184. package/dist/server/runtime/http-server/routes.js +8 -2
  185. package/dist/server/runtime/http-server/routes.js.map +1 -1
  186. package/dist/server/runtime/http-server/session-dir.d.ts +2 -0
  187. package/dist/server/runtime/http-server/session-dir.js +59 -0
  188. package/dist/server/runtime/http-server/session-dir.js.map +1 -0
  189. package/dist/server/runtime/http-server/types.d.ts +0 -4
  190. package/dist/server/utils/utf8-chunk-buffer.js +6 -3
  191. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -1
  192. package/dist/server/utils/warmup-storm-tracker.js +1 -1
  193. package/dist/server/utils/warmup-storm-tracker.js.map +1 -1
  194. package/dist/server-factory.d.ts +6 -28
  195. package/dist/server-factory.js +8 -93
  196. package/dist/server-factory.js.map +1 -1
  197. package/dist/token-daemon/index.js +2 -2
  198. package/dist/token-daemon/index.js.map +1 -1
  199. package/dist/token-daemon/provider-registry.js +0 -1
  200. package/dist/token-daemon/provider-registry.js.map +1 -1
  201. package/dist/token-daemon/server-utils.js +8 -9
  202. package/dist/token-daemon/server-utils.js.map +1 -1
  203. package/dist/token-daemon/token-utils.js +1 -1
  204. package/dist/token-daemon/token-utils.js.map +1 -1
  205. package/dist/tools/semantic-replay.js +2 -2
  206. package/dist/tools/semantic-replay.js.map +1 -1
  207. package/dist/tools/stats-request-events.d.ts +1 -1
  208. package/dist/tools/stats-usage.js +6 -3
  209. package/dist/tools/stats-usage.js.map +1 -1
  210. package/dist/utils/llms-engine-shadow.d.ts +19 -0
  211. package/dist/utils/llms-engine-shadow.js +209 -0
  212. package/dist/utils/llms-engine-shadow.js.map +1 -0
  213. package/dist/utils/runtime-versions.js +2 -1
  214. package/dist/utils/runtime-versions.js.map +1 -1
  215. package/docs/ARCHITECTURE.md +402 -0
  216. package/docs/CODEX_AND_CLAUDE_CODE.md +69 -0
  217. package/docs/CONFIG_ARCHITECTURE.md +517 -0
  218. package/docs/ERROR_HANDLING_AUDIT.md +0 -0
  219. package/docs/GCLI2API_PARITY_GAPS.md +98 -0
  220. package/docs/INSTALLATION_AND_QUICKSTART.md +74 -0
  221. package/docs/INSTRUCTION_MARKUP.md +89 -0
  222. package/docs/MODULE_ENHANCEMENT_SYSTEM.md +666 -0
  223. package/docs/PORTS.md +36 -0
  224. package/docs/PROVIDERS_BUILTIN.md +111 -0
  225. package/docs/PROVIDER_TYPES.md +55 -0
  226. package/docs/SERVERTOOL_CLOCK_DESIGN.md +233 -0
  227. package/docs/USAGE_HANDLING_ANALYSIS.md +335 -0
  228. package/docs/USER_CONFIG_PARSER_CHANGES.md +175 -0
  229. package/docs/V3_INBOUND_OUTBOUND_DESIGN.md +86 -0
  230. package/docs/VIRTUAL_ROUTER_PRIORITY_AND_HEALTH.md +125 -0
  231. package/docs/anthropic-request-golden-samples.md +50 -0
  232. package/docs/ccr-alignment-enhancetool.md +105 -0
  233. package/docs/chat-glm-500-analysis.md +79 -0
  234. package/docs/chat-request-golden-samples.md +42 -0
  235. package/docs/chat-semantic-expansion-plan.md +82 -0
  236. package/docs/cli-command-inventory.md +76 -0
  237. package/docs/codex-samples-replay.md +50 -0
  238. package/docs/daemon-admin-api-design.md +350 -0
  239. package/docs/daemon-admin-module-structure.md +169 -0
  240. package/docs/daemon-admin-ui.html +3394 -0
  241. package/docs/debug-system-design.md +734 -0
  242. package/docs/debugging/gemini-sse-root-cause.md +52 -0
  243. package/docs/debugging/sse_encoding_failure_analysis.md +53 -0
  244. package/docs/dry-run/README.md +721 -0
  245. package/docs/error-handling-v2.md +92 -0
  246. package/docs/exec-command-guard-policy.example.v1.json +42 -0
  247. package/docs/fixes/gemini-protocol-mapping.md +57 -0
  248. package/docs/fixes/oauth-portal-timing-fix.md +202 -0
  249. package/docs/fixes/web-search-hop3-fix.md +265 -0
  250. package/docs/glm-api-reference.md +390 -0
  251. package/docs/glm-chat-completions.md +1779 -0
  252. package/docs/glm-history-inline-images.md +44 -0
  253. package/docs/golden-ci-library.md +66 -0
  254. package/docs/lmstudio-dry-run-summary.md +203 -0
  255. package/docs/lmstudio-tool-calling.md +214 -0
  256. package/docs/mapping-tables/anthropic-to-openai.json +290 -0
  257. package/docs/mapping-tables/iflow-to-openai.json +215 -0
  258. package/docs/mapping-tables/openai-passthrough.json +190 -0
  259. package/docs/mapping-tables/openai-to-iflow.json +227 -0
  260. package/docs/monitoring/Design.md +61 -0
  261. package/docs/multi-token-auth-guide.md +66 -0
  262. package/docs/oauth-authentication-guide.md +168 -0
  263. package/docs/oauth-iflow-implementation.md +153 -0
  264. package/docs/pipeline-routing-report.md +209 -0
  265. package/docs/plans/manager-daemon/PLAN.md +86 -0
  266. package/docs/plans/provider-config-v2-plan.md +176 -0
  267. package/docs/plans/provider-runtime-manager-plan.md +209 -0
  268. package/docs/plans/transparent-429-failover.md +89 -0
  269. package/docs/plans/unified-hub-framework-v1.md +245 -0
  270. package/docs/provider-config-v2-ui-design.md +181 -0
  271. package/docs/provider-quota-design.md +129 -0
  272. package/docs/providers/gemini-provider.md +62 -0
  273. package/docs/providers/lmstudio-v2-migration-report.md +102 -0
  274. package/docs/providers/provider-composite-design.md +142 -0
  275. package/docs/providers/provider-composite-testing.md +98 -0
  276. package/docs/providers/provider-type-only-migration.md +111 -0
  277. package/docs/rccx-wasm-migration.md +74 -0
  278. package/docs/refactoring/architecture-comparison-diagram.md +140 -0
  279. package/docs/refactoring/compatibility-v2-architecture-design.md +738 -0
  280. package/docs/refactoring/workflow-compatibility-refactoring-design.md +361 -0
  281. package/docs/reports/routing-classification-report.json +24 -0
  282. package/docs/reports/routing-classification-report.md +18 -0
  283. package/docs/reports/thinking-keywords-report.json +19 -0
  284. package/docs/responses/README.md +156 -0
  285. package/docs/responses-generic-provider.md +86 -0
  286. package/docs/responses-passthrough-provider-design.md +202 -0
  287. package/docs/routing-awrr-health-weighted-round-robin.md +179 -0
  288. package/docs/routing-instructions.md +393 -0
  289. package/docs/stop-message-auto.md +225 -0
  290. package/docs/streaming-flow.html +30 -0
  291. package/docs/streaming-flow.md +182 -0
  292. package/docs/token-daemon-preview.html +490 -0
  293. package/docs/token-refresh-daemon-plan.md +269 -0
  294. package/docs/transformation-tables/Gemini-FinishReason/345/256/214/346/225/264/350/275/254/346/215/242/350/241/250.json +233 -0
  295. package/docs/transformation-tables/README.md +225 -0
  296. package/docs/transformation-tables/claude-code-router-anthropic-to-gemini.json +283 -0
  297. package/docs/transformation-tables/claude-code-router-anthropic-to-openai.json +208 -0
  298. package/docs/transformation-tables/claude-code-router-openai-to-anthropic.json +261 -0
  299. package/docs/transformation-tables/claude-code-router-openai-to-gemini.json +208 -0
  300. package/docs/transformation-tables/claude-code-router-openai-to-lmstudio.json +182 -0
  301. package/docs/transformation-tables/claude-code-router-openai-to-ollama.json +250 -0
  302. package/docs/transformation-tables/claude-code-router-openai-to-textgenwebui.json +295 -0
  303. package/docs/transformation-tables/claude-code-router-provider-conversions.json +193 -0
  304. package/docs/transformation-tables//345/256/214/346/225/264/347/232/204/345/267/245/345/205/267/346/211/247/350/241/214/346/265/201/347/250/213/350/275/254/346/215/242/350/241/250.json +299 -0
  305. package/docs/transformation-tables//345/257/271/350/257/235/345/216/206/345/217/262/347/273/264/346/212/244/345/210/206/346/236/220.md +134 -0
  306. package/docs/transformation-tables//345/267/245/345/205/267/350/260/203/347/224/250/346/250/241/345/274/217/345/210/206/346/236/220.md +158 -0
  307. package/docs/transformation-tables//347/212/266/346/200/201/347/256/241/347/220/206/351/234/200/346/261/202/345/210/206/346/236/220.md +175 -0
  308. package/docs/transformation-tables//351/235/231/346/200/201/350/241/250vs/345/212/250/346/200/201/345/210/206/346/236/220.md +189 -0
  309. package/docs/transformation-tables//351/235/231/346/200/201/350/241/250/345/207/206/347/241/256/346/200/247/350/257/204/344/274/260.md +179 -0
  310. package/docs/transformation-tables//351/235/236/346/265/201/345/274/217/345/234/272/346/231/257/345/210/206/346/236/220.md +189 -0
  311. package/docs/v2-architecture/IMPLEMENTATION-ROADMAP.md +367 -0
  312. package/docs/v2-architecture/OPTIMIZED-DESIGN.md +827 -0
  313. package/docs/v2-architecture/PRERUN-CONNECTION-DESIGN.md +716 -0
  314. package/docs/v2-architecture/README.md +551 -0
  315. package/docs/verification/modelscope-verify.md +59 -0
  316. package/docs/web-search-service-design.md +322 -0
  317. package/package.json +12 -7
  318. package/scripts/camoufox/launch-auth.mjs +193 -58
  319. package/scripts/monitor-diff.mjs +126 -0
  320. package/scripts/pack-mode.mjs +19 -1
  321. package/scripts/pack-rcc.mjs +63 -0
  322. package/scripts/unified-hub-shadow-compare.mjs +33 -13
  323. package/scripts/verify-e2e-toolcall.mjs +115 -26
  324. package/dist/modules/llmswitch/pipeline-registry.d.ts +0 -57
  325. package/dist/modules/llmswitch/pipeline-registry.js +0 -229
  326. package/dist/modules/llmswitch/pipeline-registry.js.map +0 -1
  327. package/dist/server/RouteCodexServer.d.ts +0 -13
  328. package/dist/server/RouteCodexServer.js +0 -25
  329. package/dist/server/RouteCodexServer.js.map +0 -1
  330. package/dist/v2/conversion/hub/snapshot-recorder.d.ts +0 -12
  331. package/dist/v2/conversion/hub/snapshot-recorder.js +0 -22
  332. package/dist/v2/conversion/hub/snapshot-recorder.js.map +0 -1
@@ -3,6 +3,7 @@ import { spawn } from 'node:child_process';
3
3
  import process from 'node:process';
4
4
  import fs from 'node:fs';
5
5
  import path from 'node:path';
6
+ import os from 'node:os';
6
7
  import { fileURLToPath } from 'node:url';
7
8
 
8
9
  if (String(process.env.ROUTECODEX_VERIFY_SKIP || '').trim() === '1') {
@@ -12,11 +13,14 @@ if (String(process.env.ROUTECODEX_VERIFY_SKIP || '').trim() === '1') {
12
13
 
13
14
  const VERIFY_PORT = process.env.ROUTECODEX_VERIFY_PORT || '5580';
14
15
  const VERIFY_BASE = process.env.ROUTECODEX_VERIFY_BASE_URL || `http://127.0.0.1:${VERIFY_PORT}`;
15
- const VERIFY_CONFIG =
16
- process.env.ROUTECODEX_VERIFY_CONFIG ||
17
- process.env.ROUTECODEX_CONFIG_PATH ||
18
- `${process.env.HOME || ''}/.routecodex/config.json`;
19
- const GEMINI_CLI_CONFIG = process.env.ROUTECODEX_VERIFY_GEMINI_CLI_CONFIG || '/Users/fanzhang/.routecodex/provider/gemini-cli/config.v1.json';
16
+ const EXPLICIT_VERIFY_CONFIG = String(
17
+ process.env.ROUTECODEX_VERIFY_CONFIG || process.env.ROUTECODEX_CONFIG_PATH || ''
18
+ ).trim();
19
+ const DEFAULT_USER_CONFIG = `${process.env.HOME || ''}/.routecodex/config.json`;
20
+ const USE_USER_CONFIG = String(process.env.ROUTECODEX_VERIFY_USE_USER_CONFIG || '').trim() === '1';
21
+ const GEMINI_CLI_CONFIG =
22
+ process.env.ROUTECODEX_VERIFY_GEMINI_CLI_CONFIG ||
23
+ `${process.env.HOME || ''}/.routecodex/provider/gemini-cli/config.v1.json`;
20
24
 
21
25
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
22
26
  const DEFAULT_AGENTS_PATH = path.resolve(__dirname, '..', 'AGENTS.md');
@@ -48,21 +52,27 @@ function buildAuthHeaders(serverApiKey) {
48
52
  }
49
53
 
50
54
  async function main() {
51
- if (!VERIFY_CONFIG) {
52
- console.error('❌ ROUTECODEX_VERIFY_CONFIG 未设置,无法运行端到端校验');
55
+ const resolved = resolveVerifyConfig();
56
+ if (!resolved?.configPath) {
57
+ console.error('❌ verify config 未设置,无法运行端到端校验');
53
58
  process.exit(1);
54
59
  }
55
60
 
56
- console.log(`[verify:e2e-toolcall] 使用配置: ${VERIFY_CONFIG}`);
57
- const serverApiKey = readServerApiKeyFromConfig(VERIFY_CONFIG);
61
+ console.log(`[verify:e2e-toolcall] 使用配置: ${resolved.configPath}`);
62
+ const serverApiKey = readServerApiKeyFromConfig(resolved.configPath);
58
63
  const authHeaders = buildAuthHeaders(serverApiKey);
59
64
  const serverEnv = {
60
65
  ...process.env,
61
- ROUTECODEX_CONFIG_PATH: VERIFY_CONFIG,
66
+ ROUTECODEX_CONFIG_PATH: resolved.configPath,
62
67
  ROUTECODEX_PORT: VERIFY_PORT,
63
68
  ROUTECODEX_V2_HOOKS: '0',
64
69
  RCC_V2_HOOKS: '0'
65
70
  };
71
+ if (resolved.mode === 'mock') {
72
+ serverEnv.ROUTECODEX_USE_MOCK = '1';
73
+ serverEnv.ROUTECODEX_MOCK_CONFIG_PATH = resolved.configPath;
74
+ serverEnv.ROUTECODEX_MOCK_VALIDATE_NAMES = '1';
75
+ }
66
76
 
67
77
  const server = spawn('node', ['dist/index.js'], {
68
78
  env: serverEnv,
@@ -82,7 +92,7 @@ async function main() {
82
92
  await waitForServer();
83
93
  await waitForRouterWarmup();
84
94
  await runModelsSmokeCheck(authHeaders);
85
- await runToolcallVerification(authHeaders);
95
+ await runToolcallVerification(authHeaders, resolved.defaultModel, resolved.mode);
86
96
  console.log('✅ 端到端工具调用校验通过');
87
97
 
88
98
  await runDaemonAdminSmokeCheck(authHeaders);
@@ -92,24 +102,85 @@ async function main() {
92
102
  await runGeminiCliStartupCheck();
93
103
  } finally {
94
104
  shutdown();
105
+ if (resolved.tempDir) {
106
+ try {
107
+ fs.rmSync(resolved.tempDir, { recursive: true, force: true });
108
+ } catch {
109
+ // ignore cleanup failure
110
+ }
111
+ }
95
112
  }
96
113
  }
97
114
 
98
- async function runModelsSmokeCheck(authHeaders) {
99
- try {
100
- const res = await fetch(`${VERIFY_BASE}/models`, { headers: { ...(authHeaders || {}) } });
101
- if (!res.ok) {
102
- throw new Error(`/models HTTP ${res.status}`);
115
+ function resolveVerifyConfig() {
116
+ if (EXPLICIT_VERIFY_CONFIG) {
117
+ return { configPath: EXPLICIT_VERIFY_CONFIG, defaultModel: 'glm-4.6', mode: 'user', tempDir: null };
118
+ }
119
+ if (USE_USER_CONFIG) {
120
+ return { configPath: DEFAULT_USER_CONFIG, defaultModel: 'glm-4.6', mode: 'user', tempDir: null };
121
+ }
122
+ return writeTempMockVerifyConfig();
123
+ }
124
+
125
+ function writeTempMockVerifyConfig() {
126
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'routecodex-verify-mock-'));
127
+ const file = path.join(dir, 'config.json');
128
+ const port = Number.parseInt(String(VERIFY_PORT), 10) || 5580;
129
+ const config = {
130
+ version: '1.0.0',
131
+ httpserver: { host: '127.0.0.1', port, apikey: 'verify-key' },
132
+ virtualrouter: {
133
+ inputProtocol: 'openai',
134
+ outputProtocol: 'openai',
135
+ providers: {
136
+ mock: {
137
+ id: 'mock',
138
+ enabled: true,
139
+ type: 'mock-provider',
140
+ providerType: 'responses',
141
+ baseURL: 'https://mock.local/mock',
142
+ compatibilityProfile: 'compat:passthrough',
143
+ providerId: 'fai.default.gpt-5.1',
144
+ modelId: 'gpt-5.1',
145
+ auth: {
146
+ type: 'apikey',
147
+ keys: { key1: { value: 'mock-sample-key' } }
148
+ },
149
+ models: { 'gpt-5.1': { maxTokens: 32768 } },
150
+ responses: { toolCallIdStyle: 'fc' }
151
+ }
152
+ },
153
+ routing: { default: ['mock.key1.gpt-5.1'] }
103
154
  }
104
- const json = await res.json();
105
- const data = Array.isArray(json?.data) ? json.data : [];
106
- if (!Array.isArray(data)) {
107
- throw new Error('/models response missing data array');
155
+ };
156
+ fs.writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
157
+ return { configPath: file, defaultModel: 'gpt-5.1', mode: 'mock', tempDir: dir };
158
+ }
159
+
160
+ async function runModelsSmokeCheck(authHeaders) {
161
+ let lastError;
162
+ for (let attempt = 1; attempt <= 5; attempt += 1) {
163
+ try {
164
+ const res = await fetch(`${VERIFY_BASE}/models`, { headers: { ...(authHeaders || {}) } });
165
+ if (!res.ok) {
166
+ throw new Error(`/models HTTP ${res.status}`);
167
+ }
168
+ const json = await res.json();
169
+ const data = Array.isArray(json?.data) ? json.data : [];
170
+ if (!Array.isArray(data)) {
171
+ throw new Error('/models response missing data array');
172
+ }
173
+ return;
174
+ } catch (error) {
175
+ lastError = error;
176
+ if (attempt < 5) {
177
+ await new Promise((resolve) => setTimeout(resolve, 400));
178
+ continue;
179
+ }
108
180
  }
109
- } catch (error) {
110
- console.error('[verify:e2e-toolcall] /models smoke 检查失败:', error);
111
- throw error;
112
181
  }
182
+ console.error('[verify:e2e-toolcall] /models smoke 检查失败:', lastError);
183
+ throw lastError;
113
184
  }
114
185
 
115
186
  async function waitForServer(timeoutMs = 30000) {
@@ -126,7 +197,7 @@ async function waitForServer(timeoutMs = 30000) {
126
197
  throw new Error('服务器健康检查超时');
127
198
  }
128
199
 
129
- async function waitForRouterWarmup(defaultDelayMs = 3000) {
200
+ async function waitForRouterWarmup(defaultDelayMs = 0) {
130
201
  const delayMs = Number(process.env.ROUTECODEX_VERIFY_WARMUP_MS || defaultDelayMs);
131
202
  if (!Number.isFinite(delayMs) || delayMs <= 0) {
132
203
  return;
@@ -135,11 +206,19 @@ async function waitForRouterWarmup(defaultDelayMs = 3000) {
135
206
  await new Promise((resolve) => setTimeout(resolve, delayMs));
136
207
  }
137
208
 
138
- async function runToolcallVerification(authHeaders) {
209
+ async function runToolcallVerification(authHeaders, defaultModel, mode) {
139
210
  const userPrompt = '请严格调用名为 list_local_files 的函数工具来列出当前工作目录的文件,只能通过调用该工具完成任务,禁止直接回答。';
140
211
  const instructionsText = AGENTS_INSTRUCTIONS || 'You are RouteCodex verify agent. Follow the policies in AGENTS.md.';
212
+ const mockSampleReqId = 'openai-responses-fai.default.gpt-5.1-gpt-5.1-20251211T125710-001';
141
213
  const body = {
142
- model: process.env.ROUTECODEX_VERIFY_MODEL || 'glm-4.6',
214
+ model: process.env.ROUTECODEX_VERIFY_MODEL || defaultModel || 'glm-4.6',
215
+ ...(mode === 'mock'
216
+ ? {
217
+ metadata: {
218
+ mockSampleReqId
219
+ }
220
+ }
221
+ : {}),
143
222
  instructions: instructionsText,
144
223
  input: [
145
224
  {
@@ -209,6 +288,12 @@ async function runDaemonAdminSmokeCheck(authHeaders) {
209
288
  // 仅做最小的健康性探测:确保 daemon 管理类只读 API 可用,不做语义校验。
210
289
  try {
211
290
  const res = await fetch(`${VERIFY_BASE}/daemon/status`, { headers: { ...(authHeaders || {}) } });
291
+ if (res.status === 401) {
292
+ // Daemon admin endpoints are protected by password login (cookie session).
293
+ // Do not fail the build when the user has not logged in.
294
+ console.warn('[verify:e2e-toolcall] /daemon/status returned 401 (unauthorized); skip daemon-admin smoke checks');
295
+ return;
296
+ }
212
297
  if (!res.ok) {
213
298
  throw new Error(`daemon/status HTTP ${res.status}`);
214
299
  }
@@ -225,6 +310,10 @@ async function runDaemonAdminSmokeCheck(authHeaders) {
225
310
  for (const path of paths) {
226
311
  try {
227
312
  const res = await fetch(`${VERIFY_BASE}${path}`, { headers: { ...(authHeaders || {}) } });
313
+ if (res.status === 401) {
314
+ console.warn(`[verify:e2e-toolcall] ${path} returned 401 (unauthorized); skip remaining daemon-admin smoke checks`);
315
+ return;
316
+ }
228
317
  if (!res.ok) {
229
318
  throw new Error(`${path} HTTP ${res.status}`);
230
319
  }
@@ -1,57 +0,0 @@
1
- type PipelineStage = 'inbound' | 'outbound';
2
- interface PipelineRouteConfig {
3
- id: string;
4
- name?: string;
5
- entryEndpoints?: string[];
6
- providerProtocols?: string[];
7
- streaming?: string;
8
- processMode?: string;
9
- mode?: string;
10
- stage?: PipelineStage;
11
- nodes?: Array<Record<string, unknown>>;
12
- }
13
- interface PipelineDocument {
14
- pipelineConfigVersion?: string;
15
- pipelines: PipelineRouteConfig[];
16
- }
17
- interface ResolveOptions {
18
- stage?: PipelineStage;
19
- providerProtocol?: string;
20
- processMode?: string;
21
- }
22
- export interface PipelineResolution {
23
- id: string;
24
- entryEndpoint: string;
25
- stage?: PipelineStage;
26
- processMode: 'chat' | 'passthrough';
27
- providerProtocol: string;
28
- streaming?: 'auto' | 'always' | 'never';
29
- passthrough?: boolean;
30
- source?: string;
31
- }
32
- declare class LLMSwitchPipelineRegistry {
33
- private document;
34
- private source?;
35
- private version?;
36
- hasDocument(): boolean;
37
- setDocument(doc: PipelineDocument, meta?: {
38
- source?: string;
39
- version?: string;
40
- }): void;
41
- getVersion(): string | undefined;
42
- resolve(entryEndpointRaw: string, options?: ResolveOptions): PipelineResolution | null;
43
- private normalizeEndpoint;
44
- private normalizeProtocol;
45
- private normalizeProcess;
46
- private normalizeStreaming;
47
- private normalizeMode;
48
- private matchesProtocol;
49
- private pickProtocol;
50
- }
51
- export declare const llmswitchPipelineRegistry: LLMSwitchPipelineRegistry;
52
- export declare function ensureLlmswitchPipelineRegistry(options?: {
53
- configPath?: string;
54
- baseDir?: string;
55
- force?: boolean;
56
- }): Promise<void>;
57
- export {};
@@ -1,229 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import { fileURLToPath } from 'url';
4
- import { resolvePipelineConfigCandidates } from '../config/pipeline-config-path.js';
5
- function asRecord(value) {
6
- if (value && typeof value === 'object' && !Array.isArray(value)) {
7
- return value;
8
- }
9
- return undefined;
10
- }
11
- class LLMSwitchPipelineRegistry {
12
- document = null;
13
- source;
14
- version;
15
- hasDocument() {
16
- return !!this.document;
17
- }
18
- setDocument(doc, meta) {
19
- if (!doc || !Array.isArray(doc.pipelines) || doc.pipelines.length === 0) {
20
- throw new Error('[LLMSwitchPipelineRegistry] pipelineConfig 内容为空');
21
- }
22
- this.document = doc;
23
- this.source = meta?.source;
24
- this.version = meta?.version || doc.pipelineConfigVersion;
25
- }
26
- getVersion() {
27
- return this.version;
28
- }
29
- resolve(entryEndpointRaw, options = {}) {
30
- const entryEndpoint = this.normalizeEndpoint(entryEndpointRaw);
31
- if (!entryEndpoint) {
32
- return null;
33
- }
34
- const doc = this.document;
35
- if (!doc) {
36
- return null;
37
- }
38
- const stage = options.stage;
39
- const providerProtocol = this.normalizeProtocol(options.providerProtocol);
40
- const preferredProcess = this.normalizeProcess(options.processMode);
41
- const endpointMatches = doc.pipelines.filter((pipe) => {
42
- if (!Array.isArray(pipe.entryEndpoints) || pipe.entryEndpoints.length === 0) {
43
- return false;
44
- }
45
- return pipe.entryEndpoints.some((ep) => this.normalizeEndpoint(ep) === entryEndpoint);
46
- });
47
- if (!endpointMatches.length) {
48
- return null;
49
- }
50
- const stageMatches = stage
51
- ? endpointMatches.filter((pipe) => pipe.stage && pipe.stage.toLowerCase() === stage)
52
- : endpointMatches;
53
- const stagePool = stage && stageMatches.length ? stageMatches : endpointMatches;
54
- const providerMatches = providerProtocol
55
- ? stagePool.filter((pipe) => this.matchesProtocol(pipe, providerProtocol))
56
- : [];
57
- const pool = providerMatches.length ? providerMatches : stagePool;
58
- const processMatches = preferredProcess
59
- ? pool.filter((pipe) => this.normalizeProcess(pipe.processMode) === preferredProcess)
60
- : [];
61
- const finalPool = processMatches.length ? processMatches : pool;
62
- const target = finalPool[0];
63
- if (!target) {
64
- return null;
65
- }
66
- const resolvedProcess = this.normalizeProcess(target.processMode) || preferredProcess || 'chat';
67
- const resolvedProtocol = this.pickProtocol(target, providerProtocol);
68
- const streaming = this.normalizeStreaming(target.streaming);
69
- const passthrough = resolvedProcess === 'passthrough' || this.normalizeMode(target.mode) === 'passthrough';
70
- return {
71
- id: target.id,
72
- entryEndpoint,
73
- stage: target.stage || stage,
74
- processMode: resolvedProcess === 'passthrough' ? 'passthrough' : 'chat',
75
- providerProtocol: resolvedProtocol,
76
- streaming,
77
- passthrough,
78
- source: this.source
79
- };
80
- }
81
- normalizeEndpoint(value) {
82
- if (!value) {
83
- return '';
84
- }
85
- return value.trim().toLowerCase();
86
- }
87
- normalizeProtocol(value) {
88
- if (!value || typeof value !== 'string') {
89
- return undefined;
90
- }
91
- const trimmed = value.trim().toLowerCase();
92
- return trimmed || undefined;
93
- }
94
- normalizeProcess(value) {
95
- if (!value || typeof value !== 'string') {
96
- return undefined;
97
- }
98
- const normalized = value.trim().toLowerCase();
99
- if (normalized === 'passthrough') {
100
- return 'passthrough';
101
- }
102
- if (normalized === 'chat') {
103
- return 'chat';
104
- }
105
- return undefined;
106
- }
107
- normalizeStreaming(value) {
108
- if (!value || typeof value !== 'string') {
109
- return undefined;
110
- }
111
- const normalized = value.trim().toLowerCase();
112
- if (normalized === 'auto' || normalized === 'always' || normalized === 'never') {
113
- return normalized;
114
- }
115
- return undefined;
116
- }
117
- normalizeMode(value) {
118
- if (!value || typeof value !== 'string') {
119
- return undefined;
120
- }
121
- const normalized = value.trim().toLowerCase();
122
- if (normalized === 'passthrough') {
123
- return 'passthrough';
124
- }
125
- if (normalized === 'chat') {
126
- return 'chat';
127
- }
128
- return undefined;
129
- }
130
- matchesProtocol(pipe, protocol) {
131
- if (!protocol) {
132
- return false;
133
- }
134
- if (!Array.isArray(pipe.providerProtocols) || pipe.providerProtocols.length === 0) {
135
- return false;
136
- }
137
- return pipe.providerProtocols.some((p) => this.normalizeProtocol(p) === protocol);
138
- }
139
- pickProtocol(pipe, fallback) {
140
- const fromPipeline = Array.isArray(pipe.providerProtocols) && pipe.providerProtocols.length
141
- ? this.normalizeProtocol(pipe.providerProtocols[0])
142
- : undefined;
143
- return fromPipeline || this.normalizeProtocol(fallback) || 'openai-chat';
144
- }
145
- }
146
- export const llmswitchPipelineRegistry = new LLMSwitchPipelineRegistry();
147
- let initPromise = null;
148
- export async function ensureLlmswitchPipelineRegistry(options) {
149
- if (llmswitchPipelineRegistry.hasDocument() && !options?.force) {
150
- return;
151
- }
152
- if (!initPromise) {
153
- initPromise = (async () => {
154
- const { doc, source, version } = await loadPipelineDocument(options);
155
- llmswitchPipelineRegistry.setDocument(doc, { source, version });
156
- })().finally(() => {
157
- initPromise = null;
158
- });
159
- }
160
- return initPromise;
161
- }
162
- async function loadPipelineDocument(options) {
163
- const baseDir = (options?.baseDir && options.baseDir.trim())
164
- ? path.resolve(options.baseDir.trim())
165
- : resolveBaseDir();
166
- const candidates = resolvePipelineConfigCandidates(baseDir, options?.configPath);
167
- let lastError;
168
- for (const candidate of candidates) {
169
- try {
170
- const raw = await fs.readFile(candidate, 'utf-8');
171
- const parsed = JSON.parse(raw);
172
- const doc = extractPipelineDocument(parsed);
173
- if (!doc) {
174
- throw new Error('文件缺少 llmSwitch.pipelineConfig 内容');
175
- }
176
- return {
177
- doc,
178
- source: candidate,
179
- version: doc.pipelineConfigVersion || parsed?.pipelineConfigVersion || parsed?.llmSwitch?.pipelineConfigVersion
180
- };
181
- }
182
- catch (error) {
183
- lastError = error;
184
- }
185
- }
186
- const err = lastError instanceof Error
187
- ? lastError
188
- : new Error(String(lastError ?? '无法读取 pipeline-config.generated.json'));
189
- throw err;
190
- }
191
- function extractPipelineDocument(source) {
192
- const candidate = asRecord(source);
193
- if (!candidate) {
194
- return null;
195
- }
196
- const pipelines = candidate.pipelines;
197
- if (Array.isArray(pipelines)) {
198
- const pipelineConfigVersion = typeof candidate.pipelineConfigVersion === 'string'
199
- ? candidate.pipelineConfigVersion
200
- : undefined;
201
- return {
202
- pipelineConfigVersion,
203
- pipelines: pipelines
204
- };
205
- }
206
- const llmSwitch = asRecord(candidate.llmSwitch);
207
- if (llmSwitch) {
208
- return extractPipelineDocument(llmSwitch);
209
- }
210
- const pipelineConfig = asRecord(candidate.pipelineConfig);
211
- if (pipelineConfig) {
212
- return extractPipelineDocument(pipelineConfig);
213
- }
214
- return null;
215
- }
216
- function resolveBaseDir() {
217
- const env = String(process.env.ROUTECODEX_BASEDIR || process.env.RCC_BASEDIR || '').trim();
218
- if (env) {
219
- return path.resolve(env);
220
- }
221
- try {
222
- const __filename = fileURLToPath(import.meta.url);
223
- return path.resolve(path.dirname(__filename), '../../..');
224
- }
225
- catch {
226
- return process.cwd();
227
- }
228
- }
229
- //# sourceMappingURL=pipeline-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline-registry.js","sourceRoot":"","sources":["../../../src/modules/llmswitch/pipeline-registry.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- export interface ServerConfig {
2
- port: number;
3
- host: string;
4
- }
5
- export declare class RouteCodexServer {
6
- constructor(_config: ServerConfig);
7
- initialize(): Promise<void>;
8
- start(): Promise<void>;
9
- stop(): Promise<void>;
10
- getStatus(): unknown;
11
- isInitialized(): boolean;
12
- isRunning(): boolean;
13
- }
@@ -1,25 +0,0 @@
1
- export class RouteCodexServer {
2
- constructor(_config) { }
3
- async initialize() {
4
- // no-op stub for V1 compatibility
5
- }
6
- async start() {
7
- // no-op stub for V1 compatibility
8
- }
9
- async stop() {
10
- // no-op stub for V1 compatibility
11
- }
12
- // The following helpers are provided only to satisfy the ServerInstance
13
- // structural type used by ServerFactory in dev builds. V1 is effectively
14
- // a no-op in this worktree.
15
- getStatus() {
16
- return { status: 'stub', version: 'v1' };
17
- }
18
- isInitialized() {
19
- return true;
20
- }
21
- isRunning() {
22
- return false;
23
- }
24
- }
25
- //# sourceMappingURL=RouteCodexServer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RouteCodexServer.js","sourceRoot":"","sources":["../../src/server/RouteCodexServer.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;IAC3B,YAAY,OAAqB,IAAG,CAAC;IAErC,KAAK,CAAC,UAAU;QACd,kCAAkC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,kCAAkC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,kCAAkC;IACpC,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,4BAA4B;IAC5B,SAAS;QACP,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- import type { StageRecorder } from '@jsonstudio/llms/conversion/hub/format-adapters/index';
2
- import type { AdapterContext } from '@jsonstudio/llms/conversion/hub/types/chat-envelope';
3
- export interface SnapshotStageRecorderOptions {
4
- context: AdapterContext;
5
- endpoint: string;
6
- }
7
- export declare class SnapshotStageRecorder implements StageRecorder {
8
- private readonly options;
9
- constructor(options: SnapshotStageRecorderOptions);
10
- record(stage: string, payload: unknown): void;
11
- }
12
- export declare function createSnapshotRecorder(context: AdapterContext, endpoint: string): StageRecorder;
@@ -1,22 +0,0 @@
1
- import { writeSnapshotViaHooks } from '@jsonstudio/llms/conversion/shared/snapshot-hooks';
2
- export class SnapshotStageRecorder {
3
- options;
4
- constructor(options) {
5
- this.options = options;
6
- }
7
- record(stage, payload) {
8
- void writeSnapshotViaHooks({
9
- endpoint: this.options.endpoint,
10
- stage,
11
- requestId: this.options.context.requestId,
12
- data: payload,
13
- verbosity: 'verbose'
14
- }).catch(() => {
15
- /* ignore snapshot errors */
16
- });
17
- }
18
- }
19
- export function createSnapshotRecorder(context, endpoint) {
20
- return new SnapshotStageRecorder({ context, endpoint });
21
- }
22
- //# sourceMappingURL=snapshot-recorder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot-recorder.js","sourceRoot":"","sources":["../../../../src/v2/conversion/hub/snapshot-recorder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAQ1F,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;IAAG,CAAC;IAEtE,MAAM,CAAC,KAAa,EAAE,OAAgB;QACpC,KAAK,qBAAqB,CAAC;YACzB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YAC/B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS;YACzC,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,4BAA4B;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAuB,EAAE,QAAgB;IAC9E,OAAO,IAAI,qBAAqB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC"}