@jsonstudio/rcc 0.89.168 → 0.89.524

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 (431) hide show
  1. package/README.md +18 -15
  2. package/dist/build-info.js +3 -3
  3. package/dist/build-info.js.map +1 -1
  4. package/dist/cli.js +94 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/client/gemini-cli/gemini-cli-protocol-client.js +28 -5
  7. package/dist/client/gemini-cli/gemini-cli-protocol-client.js.map +1 -1
  8. package/dist/commands/token-daemon.d.ts +2 -0
  9. package/dist/commands/token-daemon.js +183 -0
  10. package/dist/commands/token-daemon.js.map +1 -0
  11. package/dist/error-handling/quiet-error-handling-center.d.ts +9 -0
  12. package/dist/error-handling/quiet-error-handling-center.js +141 -0
  13. package/dist/error-handling/quiet-error-handling-center.js.map +1 -0
  14. package/dist/error-handling/route-error-hub.js +8 -2
  15. package/dist/error-handling/route-error-hub.js.map +1 -1
  16. package/dist/index.js +4 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/modules/llmswitch/bridge.d.ts +1 -1
  19. package/dist/modules/llmswitch/bridge.js +3 -2
  20. package/dist/modules/llmswitch/bridge.js.map +1 -1
  21. package/dist/modules/pipeline/utils/colored-logger.d.ts +2 -0
  22. package/dist/modules/pipeline/utils/colored-logger.js +22 -3
  23. package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
  24. package/dist/providers/auth/antigravity-userinfo-helper.d.ts +10 -0
  25. package/dist/providers/auth/antigravity-userinfo-helper.js +140 -0
  26. package/dist/providers/auth/antigravity-userinfo-helper.js.map +1 -0
  27. package/dist/providers/auth/gemini-cli-userinfo-helper.js +12 -2
  28. package/dist/providers/auth/gemini-cli-userinfo-helper.js.map +1 -1
  29. package/dist/providers/auth/oauth-lifecycle.js +395 -24
  30. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  31. package/dist/providers/auth/token-scanner/index.d.ts +32 -0
  32. package/dist/providers/auth/token-scanner/index.js +86 -0
  33. package/dist/providers/auth/token-scanner/index.js.map +1 -0
  34. package/dist/providers/auth/tokenfile-auth.d.ts +17 -0
  35. package/dist/providers/auth/tokenfile-auth.js +27 -5
  36. package/dist/providers/auth/tokenfile-auth.js.map +1 -1
  37. package/dist/providers/core/api/provider-types.d.ts +10 -0
  38. package/dist/providers/core/config/oauth-flows.d.ts +25 -0
  39. package/dist/providers/core/config/oauth-flows.js +92 -5
  40. package/dist/providers/core/config/oauth-flows.js.map +1 -1
  41. package/dist/providers/core/config/provider-oauth-configs.js +93 -2
  42. package/dist/providers/core/config/provider-oauth-configs.js.map +1 -1
  43. package/dist/providers/core/config/service-profiles.js +18 -10
  44. package/dist/providers/core/config/service-profiles.js.map +1 -1
  45. package/dist/providers/core/runtime/base-provider.d.ts +2 -0
  46. package/dist/providers/core/runtime/base-provider.js +135 -15
  47. package/dist/providers/core/runtime/base-provider.js.map +1 -1
  48. package/dist/providers/core/runtime/gemini-cli-http-provider.d.ts +8 -3
  49. package/dist/providers/core/runtime/gemini-cli-http-provider.js +332 -67
  50. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  51. package/dist/providers/core/runtime/http-request-executor.d.ts +1 -0
  52. package/dist/providers/core/runtime/http-request-executor.js +41 -1
  53. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  54. package/dist/providers/core/runtime/http-transport-provider.d.ts +27 -0
  55. package/dist/providers/core/runtime/http-transport-provider.js +342 -69
  56. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  57. package/dist/providers/core/runtime/provider-error-classifier.d.ts +2 -2
  58. package/dist/providers/core/runtime/provider-error-classifier.js +14 -4
  59. package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
  60. package/dist/providers/core/runtime/provider-factory.d.ts +1 -0
  61. package/dist/providers/core/runtime/provider-factory.js +37 -8
  62. package/dist/providers/core/runtime/provider-factory.js.map +1 -1
  63. package/dist/providers/core/runtime/responses-provider.d.ts +3 -3
  64. package/dist/providers/core/runtime/responses-provider.js +56 -117
  65. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  66. package/dist/providers/core/runtime/vision-debug-utils.d.ts +13 -0
  67. package/dist/providers/core/runtime/vision-debug-utils.js +114 -0
  68. package/dist/providers/core/runtime/vision-debug-utils.js.map +1 -0
  69. package/dist/providers/core/strategies/oauth-auth-code-flow.js +82 -25
  70. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  71. package/dist/providers/core/utils/http-client.d.ts +5 -0
  72. package/dist/providers/core/utils/http-client.js +31 -4
  73. package/dist/providers/core/utils/http-client.js.map +1 -1
  74. package/dist/providers/core/utils/provider-error-reporter.js +8 -2
  75. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  76. package/dist/providers/core/utils/snapshot-writer.d.ts +1 -1
  77. package/dist/providers/core/utils/snapshot-writer.js +5 -1
  78. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  79. package/dist/providers/profile/provider-profile-loader.js +8 -4
  80. package/dist/providers/profile/provider-profile-loader.js.map +1 -1
  81. package/dist/runtime/runtime-flags.d.ts +4 -0
  82. package/dist/runtime/runtime-flags.js +32 -0
  83. package/dist/runtime/runtime-flags.js.map +1 -0
  84. package/dist/server/handlers/handler-utils.js +29 -2
  85. package/dist/server/handlers/handler-utils.js.map +1 -1
  86. package/dist/server/handlers/messages-handler.js +27 -26
  87. package/dist/server/handlers/messages-handler.js.map +1 -1
  88. package/dist/server/handlers/responses-handler.js +35 -1
  89. package/dist/server/handlers/responses-handler.js.map +1 -1
  90. package/dist/server/handlers/sse-dispatcher.js +22 -2
  91. package/dist/server/handlers/sse-dispatcher.js.map +1 -1
  92. package/dist/server/runtime/http-server/index.d.ts +10 -0
  93. package/dist/server/runtime/http-server/index.js +551 -148
  94. package/dist/server/runtime/http-server/index.js.map +1 -1
  95. package/dist/server/runtime/http-server/request-executor.d.ts +14 -0
  96. package/dist/server/runtime/http-server/request-executor.js +638 -149
  97. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  98. package/dist/server/runtime/http-server/routes.d.ts +5 -0
  99. package/dist/server/runtime/http-server/routes.js +69 -0
  100. package/dist/server/runtime/http-server/routes.js.map +1 -1
  101. package/dist/server/runtime/http-server/runtime-manager.js +18 -0
  102. package/dist/server/runtime/http-server/runtime-manager.js.map +1 -1
  103. package/dist/server/utils/sse-request-parser.d.ts +1 -0
  104. package/dist/server/utils/sse-request-parser.js +17 -6
  105. package/dist/server/utils/sse-request-parser.js.map +1 -1
  106. package/dist/server/utils/utf8-chunk-buffer.d.ts +43 -0
  107. package/dist/server/utils/utf8-chunk-buffer.js +132 -0
  108. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -0
  109. package/dist/server/utils/warmup-detector.d.ts +7 -0
  110. package/dist/server/utils/warmup-detector.js +125 -0
  111. package/dist/server/utils/warmup-detector.js.map +1 -0
  112. package/dist/server/utils/warmup-storm-tracker.d.ts +9 -0
  113. package/dist/server/utils/warmup-storm-tracker.js +61 -0
  114. package/dist/server/utils/warmup-storm-tracker.js.map +1 -0
  115. package/dist/token-daemon/index.d.ts +7 -0
  116. package/dist/token-daemon/index.js +242 -0
  117. package/dist/token-daemon/index.js.map +1 -0
  118. package/dist/token-daemon/server-utils.d.ts +33 -0
  119. package/dist/token-daemon/server-utils.js +155 -0
  120. package/dist/token-daemon/server-utils.js.map +1 -0
  121. package/dist/token-daemon/token-daemon.d.ts +20 -0
  122. package/dist/token-daemon/token-daemon.js +144 -0
  123. package/dist/token-daemon/token-daemon.js.map +1 -0
  124. package/dist/token-daemon/token-types.d.ts +44 -0
  125. package/dist/token-daemon/token-types.js +18 -0
  126. package/dist/token-daemon/token-types.js.map +1 -0
  127. package/dist/token-daemon/token-utils.d.ts +17 -0
  128. package/dist/token-daemon/token-utils.js +153 -0
  129. package/dist/token-daemon/token-utils.js.map +1 -0
  130. package/dist/tools/semantic-replay.js +7 -6
  131. package/dist/tools/semantic-replay.js.map +1 -1
  132. package/dist/utils/debug-utils.js +14 -0
  133. package/dist/utils/debug-utils.js.map +1 -1
  134. package/dist/utils/error-handler-registry.d.ts +36 -0
  135. package/dist/utils/error-handler-registry.js +99 -12
  136. package/dist/utils/error-handler-registry.js.map +1 -1
  137. package/dist/utils/error-handling-utils.js +4 -3
  138. package/dist/utils/error-handling-utils.js.map +1 -1
  139. package/dist/utils/log-helpers.d.ts +6 -0
  140. package/dist/utils/log-helpers.js +90 -0
  141. package/dist/utils/log-helpers.js.map +1 -0
  142. package/dist/utils/logger.d.ts +8 -0
  143. package/dist/utils/logger.js +55 -2
  144. package/dist/utils/logger.js.map +1 -1
  145. package/dist/utils/snapshot-writer.js +2 -6
  146. package/dist/utils/snapshot-writer.js.map +1 -1
  147. package/node_modules/@jsonstudio/llms/README.md +2 -0
  148. package/node_modules/@jsonstudio/llms/dist/conversion/codecs/gemini-openai-codec.js +152 -6
  149. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/auto-thinking.d.ts +6 -0
  150. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/auto-thinking.js +25 -0
  151. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/field-mapping.d.ts +14 -0
  152. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/field-mapping.js +155 -0
  153. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.d.ts +17 -0
  154. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.js +68 -0
  155. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.d.ts +2 -0
  156. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.js +83 -0
  157. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-tool-extraction.d.ts +2 -0
  158. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-tool-extraction.js +264 -0
  159. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.d.ts +11 -0
  160. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.js +177 -0
  161. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.d.ts +2 -0
  162. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.js +63 -0
  163. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/qwen-transform.d.ts +3 -0
  164. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/qwen-transform.js +209 -0
  165. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/request-rules.d.ts +24 -0
  166. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/request-rules.js +63 -0
  167. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/response-blacklist.d.ts +14 -0
  168. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/response-blacklist.js +85 -0
  169. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/response-normalize.d.ts +5 -0
  170. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/response-normalize.js +121 -0
  171. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/response-validate.d.ts +5 -0
  172. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/response-validate.js +76 -0
  173. package/{dist/providers/compat/utils/snapshot-writer.d.ts → node_modules/@jsonstudio/llms/dist/conversion/compat/actions/snapshot.d.ts} +2 -2
  174. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/snapshot.js +21 -0
  175. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/tool-schema.d.ts +6 -0
  176. package/{dist/providers/compat/glm/utils/tool-schema-helpers.js → node_modules/@jsonstudio/llms/dist/conversion/compat/actions/tool-schema.js} +6 -1
  177. package/{dist/providers/compat/filters → node_modules/@jsonstudio/llms/dist/conversion/compat/actions}/universal-shape-filter.d.ts +17 -22
  178. package/{dist/providers/compat/filters → node_modules/@jsonstudio/llms/dist/conversion/compat/actions}/universal-shape-filter.js +46 -99
  179. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-gemini.json +17 -0
  180. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-glm.json +196 -13
  181. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-iflow.json +194 -26
  182. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-lmstudio.json +43 -35
  183. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-qwen.json +20 -16
  184. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/responses-c4m.json +42 -42
  185. package/node_modules/@jsonstudio/llms/dist/conversion/config/sample-config.json +1 -1
  186. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-engine.d.ts +7 -2
  187. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-engine.js +5 -665
  188. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.d.ts +9 -0
  189. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +869 -0
  190. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-types.d.ts +55 -0
  191. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.d.ts +2 -0
  192. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.js +74 -5
  193. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/stages/req_outbound/req_outbound_stage3_compat/index.js +2 -2
  194. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/target-utils.js +9 -0
  195. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process.js +213 -1
  196. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/provider-response.d.ts +34 -0
  197. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/provider-response.js +84 -24
  198. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/response-runtime.js +19 -2
  199. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/server-side-tools.d.ts +26 -0
  200. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/server-side-tools.js +383 -0
  201. package/node_modules/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/gemini-mapper.js +241 -14
  202. package/node_modules/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/responses-mapper.js +17 -1
  203. package/node_modules/@jsonstudio/llms/dist/conversion/hub/standardized-bridge.js +14 -0
  204. package/node_modules/@jsonstudio/llms/dist/conversion/hub/types/standardized.d.ts +1 -0
  205. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-host-policy.d.ts +6 -0
  206. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-host-policy.js +14 -0
  207. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge.js +133 -5
  208. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils.js +98 -3
  209. package/node_modules/@jsonstudio/llms/dist/conversion/shared/bridge-message-utils.js +137 -10
  210. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-output-builder.js +43 -2
  211. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-reasoning-registry.d.ts +4 -0
  212. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-reasoning-registry.js +62 -1
  213. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-response-utils.js +23 -1
  214. package/node_modules/@jsonstudio/llms/dist/conversion/shared/snapshot-utils.js +17 -47
  215. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-canonicalizer.d.ts +2 -0
  216. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-filter-pipeline.js +12 -0
  217. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-mapping.js +25 -2
  218. package/node_modules/@jsonstudio/llms/dist/index.d.ts +1 -0
  219. package/node_modules/@jsonstudio/llms/dist/index.js +1 -0
  220. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap.js +540 -36
  221. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/classifier.js +12 -11
  222. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/context-advisor.d.ts +19 -0
  223. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/context-advisor.js +64 -0
  224. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.d.ts +26 -0
  225. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.js +450 -54
  226. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/features.js +23 -458
  227. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/health-manager.js +2 -7
  228. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/message-utils.d.ts +7 -0
  229. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/message-utils.js +78 -0
  230. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-registry.js +7 -2
  231. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/token-counter.js +14 -3
  232. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/token-estimator.d.ts +2 -0
  233. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/token-estimator.js +16 -0
  234. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/token-file-scanner.d.ts +15 -0
  235. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/token-file-scanner.js +56 -0
  236. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/tool-signals.d.ts +13 -0
  237. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/tool-signals.js +403 -0
  238. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.d.ts +86 -2
  239. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.js +3 -1
  240. package/node_modules/@jsonstudio/llms/dist/servertool/engine.d.ts +27 -0
  241. package/node_modules/@jsonstudio/llms/dist/servertool/engine.js +60 -0
  242. package/node_modules/@jsonstudio/llms/dist/servertool/flow-types.d.ts +40 -0
  243. package/node_modules/@jsonstudio/llms/dist/servertool/flow-types.js +1 -0
  244. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/vision.d.ts +1 -0
  245. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/vision.js +194 -0
  246. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.d.ts +1 -0
  247. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.js +638 -0
  248. package/node_modules/@jsonstudio/llms/dist/servertool/orchestration-types.d.ts +33 -0
  249. package/node_modules/@jsonstudio/llms/dist/servertool/orchestration-types.js +1 -0
  250. package/node_modules/@jsonstudio/llms/dist/servertool/registry.d.ts +18 -0
  251. package/node_modules/@jsonstudio/llms/dist/servertool/registry.js +27 -0
  252. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.d.ts +8 -0
  253. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.js +208 -0
  254. package/node_modules/@jsonstudio/llms/dist/servertool/types.d.ts +88 -0
  255. package/node_modules/@jsonstudio/llms/dist/servertool/types.js +1 -0
  256. package/node_modules/@jsonstudio/llms/dist/servertool/vision-tool.d.ts +2 -0
  257. package/node_modules/@jsonstudio/llms/dist/servertool/vision-tool.js +185 -0
  258. package/node_modules/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/responses.js +15 -3
  259. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/builders/response-builder.js +6 -3
  260. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +27 -1
  261. package/node_modules/@jsonstudio/llms/dist/sse/types/gemini-types.d.ts +20 -1
  262. package/node_modules/@jsonstudio/llms/dist/sse/types/responses-types.js +1 -1
  263. package/node_modules/@jsonstudio/llms/dist/telemetry/stats-center.d.ts +73 -0
  264. package/node_modules/@jsonstudio/llms/dist/telemetry/stats-center.js +280 -0
  265. package/node_modules/@jsonstudio/llms/package.json +2 -2
  266. package/package.json +11 -10
  267. package/scripts/README.md +26 -12
  268. package/scripts/auth-antigravity-token.mjs +64 -0
  269. package/scripts/auth-gemini-cli-token.mjs +96 -0
  270. package/scripts/auth-iflow-manual.mjs +81 -0
  271. package/scripts/auth-iflow-token-direct.mjs +87 -0
  272. package/scripts/auth-iflow-token.mjs +77 -0
  273. package/scripts/copy-compat-assets.mjs +3 -15
  274. package/scripts/install-verify.mjs +1 -0
  275. package/scripts/pack-mode.mjs +2 -1
  276. package/scripts/publish-rcc.mjs +20 -4
  277. package/scripts/replay-codex-sample.mjs +13 -8
  278. package/scripts/tests/chat-pipeline-blackbox.mjs +1 -1
  279. package/scripts/tests/virtual-router-health.mjs +141 -6
  280. package/scripts/tools/capture-provider-goldens.mjs +8 -7
  281. package/scripts/verify-client-headers.mjs +224 -0
  282. package/dist/providers/compat/base-compatibility.d.ts +0 -27
  283. package/dist/providers/compat/base-compatibility.js +0 -143
  284. package/dist/providers/compat/base-compatibility.js.map +0 -1
  285. package/dist/providers/compat/compat-directory-loader.d.ts +0 -4
  286. package/dist/providers/compat/compat-directory-loader.js +0 -85
  287. package/dist/providers/compat/compat-directory-loader.js.map +0 -1
  288. package/dist/providers/compat/compatibility-adapter.d.ts +0 -18
  289. package/dist/providers/compat/compatibility-adapter.js +0 -104
  290. package/dist/providers/compat/compatibility-adapter.js.map +0 -1
  291. package/dist/providers/compat/compatibility-factory.d.ts +0 -57
  292. package/dist/providers/compat/compatibility-factory.js +0 -155
  293. package/dist/providers/compat/compatibility-factory.js.map +0 -1
  294. package/dist/providers/compat/compatibility-interface.d.ts +0 -35
  295. package/dist/providers/compat/compatibility-interface.js +0 -2
  296. package/dist/providers/compat/compatibility-interface.js.map +0 -1
  297. package/dist/providers/compat/compatibility-manager.d.ts +0 -85
  298. package/dist/providers/compat/compatibility-manager.js +0 -368
  299. package/dist/providers/compat/compatibility-manager.js.map +0 -1
  300. package/dist/providers/compat/config/config-compatibility.d.ts +0 -28
  301. package/dist/providers/compat/config/config-compatibility.js +0 -95
  302. package/dist/providers/compat/config/config-compatibility.js.map +0 -1
  303. package/dist/providers/compat/field-mapping.d.ts +0 -102
  304. package/dist/providers/compat/field-mapping.js +0 -447
  305. package/dist/providers/compat/field-mapping.js.map +0 -1
  306. package/dist/providers/compat/filters/blacklist-sanitizer.d.ts +0 -45
  307. package/dist/providers/compat/filters/blacklist-sanitizer.js +0 -133
  308. package/dist/providers/compat/filters/blacklist-sanitizer.js.map +0 -1
  309. package/dist/providers/compat/filters/response-blacklist-sanitizer.d.ts +0 -28
  310. package/dist/providers/compat/filters/response-blacklist-sanitizer.js +0 -138
  311. package/dist/providers/compat/filters/response-blacklist-sanitizer.js.map +0 -1
  312. package/dist/providers/compat/filters/universal-shape-filter.js.map +0 -1
  313. package/dist/providers/compat/glm/config/blacklist-rules.json +0 -22
  314. package/dist/providers/compat/glm/config/field-mappings.json +0 -92
  315. package/dist/providers/compat/glm/config/response-blacklist.json +0 -7
  316. package/dist/providers/compat/glm/config/shape-filters.json +0 -37
  317. package/dist/providers/compat/glm/field-mapping/field-mapping-processor.d.ts +0 -28
  318. package/dist/providers/compat/glm/field-mapping/field-mapping-processor.js +0 -306
  319. package/dist/providers/compat/glm/field-mapping/field-mapping-processor.js.map +0 -1
  320. package/dist/providers/compat/glm/functions/glm-processor.d.ts +0 -50
  321. package/dist/providers/compat/glm/functions/glm-processor.js +0 -134
  322. package/dist/providers/compat/glm/functions/glm-processor.js.map +0 -1
  323. package/dist/providers/compat/glm/glm-compatibility.d.ts +0 -34
  324. package/dist/providers/compat/glm/glm-compatibility.js +0 -117
  325. package/dist/providers/compat/glm/glm-compatibility.js.map +0 -1
  326. package/dist/providers/compat/glm/hooks/base-hook.d.ts +0 -21
  327. package/dist/providers/compat/glm/hooks/base-hook.js +0 -53
  328. package/dist/providers/compat/glm/hooks/base-hook.js.map +0 -1
  329. package/dist/providers/compat/glm/hooks/glm-request-validation-hook.d.ts +0 -24
  330. package/dist/providers/compat/glm/hooks/glm-request-validation-hook.js +0 -268
  331. package/dist/providers/compat/glm/hooks/glm-request-validation-hook.js.map +0 -1
  332. package/dist/providers/compat/glm/hooks/glm-response-normalization-hook.d.ts +0 -21
  333. package/dist/providers/compat/glm/hooks/glm-response-normalization-hook.js +0 -171
  334. package/dist/providers/compat/glm/hooks/glm-response-normalization-hook.js.map +0 -1
  335. package/dist/providers/compat/glm/hooks/glm-response-validation-hook.d.ts +0 -25
  336. package/dist/providers/compat/glm/hooks/glm-response-validation-hook.js +0 -236
  337. package/dist/providers/compat/glm/hooks/glm-response-validation-hook.js.map +0 -1
  338. package/dist/providers/compat/glm/hooks/glm-tool-cleaning-hook.d.ts +0 -26
  339. package/dist/providers/compat/glm/hooks/glm-tool-cleaning-hook.js +0 -186
  340. package/dist/providers/compat/glm/hooks/glm-tool-cleaning-hook.js.map +0 -1
  341. package/dist/providers/compat/glm/index.d.ts +0 -24
  342. package/dist/providers/compat/glm/index.js +0 -29
  343. package/dist/providers/compat/glm/index.js.map +0 -1
  344. package/dist/providers/compat/glm/utils/tool-schema-helpers.d.ts +0 -3
  345. package/dist/providers/compat/glm/utils/tool-schema-helpers.js.map +0 -1
  346. package/dist/providers/compat/iflow/config/field-mappings.json +0 -92
  347. package/dist/providers/compat/iflow/config/shape-filters.json +0 -37
  348. package/dist/providers/compat/iflow/field-mapping/iflow-field-mapping-processor.d.ts +0 -34
  349. package/dist/providers/compat/iflow/field-mapping/iflow-field-mapping-processor.js +0 -386
  350. package/dist/providers/compat/iflow/field-mapping/iflow-field-mapping-processor.js.map +0 -1
  351. package/dist/providers/compat/iflow/functions/iflow-processor.d.ts +0 -53
  352. package/dist/providers/compat/iflow/functions/iflow-processor.js +0 -215
  353. package/dist/providers/compat/iflow/functions/iflow-processor.js.map +0 -1
  354. package/dist/providers/compat/iflow/hooks/base-hook.d.ts +0 -23
  355. package/dist/providers/compat/iflow/hooks/base-hook.js +0 -59
  356. package/dist/providers/compat/iflow/hooks/base-hook.js.map +0 -1
  357. package/dist/providers/compat/iflow/hooks/iflow-request-validation-hook.d.ts +0 -23
  358. package/dist/providers/compat/iflow/hooks/iflow-request-validation-hook.js +0 -279
  359. package/dist/providers/compat/iflow/hooks/iflow-request-validation-hook.js.map +0 -1
  360. package/dist/providers/compat/iflow/hooks/iflow-response-normalization-hook.d.ts +0 -20
  361. package/dist/providers/compat/iflow/hooks/iflow-response-normalization-hook.js +0 -180
  362. package/dist/providers/compat/iflow/hooks/iflow-response-normalization-hook.js.map +0 -1
  363. package/dist/providers/compat/iflow/hooks/iflow-response-validation-hook.d.ts +0 -23
  364. package/dist/providers/compat/iflow/hooks/iflow-response-validation-hook.js +0 -232
  365. package/dist/providers/compat/iflow/hooks/iflow-response-validation-hook.js.map +0 -1
  366. package/dist/providers/compat/iflow/hooks/iflow-tool-cleaning-hook.d.ts +0 -25
  367. package/dist/providers/compat/iflow/hooks/iflow-tool-cleaning-hook.js +0 -216
  368. package/dist/providers/compat/iflow/hooks/iflow-tool-cleaning-hook.js.map +0 -1
  369. package/dist/providers/compat/iflow/iflow-compatibility.d.ts +0 -24
  370. package/dist/providers/compat/iflow/iflow-compatibility.js +0 -94
  371. package/dist/providers/compat/iflow/iflow-compatibility.js.map +0 -1
  372. package/dist/providers/compat/index.d.ts +0 -59
  373. package/dist/providers/compat/index.js +0 -83
  374. package/dist/providers/compat/index.js.map +0 -1
  375. package/dist/providers/compat/lmstudio-compatibility.d.ts +0 -44
  376. package/dist/providers/compat/lmstudio-compatibility.js +0 -193
  377. package/dist/providers/compat/lmstudio-compatibility.js.map +0 -1
  378. package/dist/providers/compat/passthrough-compatibility.d.ts +0 -29
  379. package/dist/providers/compat/passthrough-compatibility.js +0 -83
  380. package/dist/providers/compat/passthrough-compatibility.js.map +0 -1
  381. package/dist/providers/compat/profiles/chat/glm/index.d.ts +0 -6
  382. package/dist/providers/compat/profiles/chat/glm/index.js +0 -6
  383. package/dist/providers/compat/profiles/chat/glm/index.js.map +0 -1
  384. package/dist/providers/compat/profiles/chat/iflow/index.d.ts +0 -6
  385. package/dist/providers/compat/profiles/chat/iflow/index.js +0 -6
  386. package/dist/providers/compat/profiles/chat/iflow/index.js.map +0 -1
  387. package/dist/providers/compat/profiles/chat/lmstudio/index.d.ts +0 -6
  388. package/dist/providers/compat/profiles/chat/lmstudio/index.js +0 -6
  389. package/dist/providers/compat/profiles/chat/lmstudio/index.js.map +0 -1
  390. package/dist/providers/compat/profiles/chat/qwen/index.d.ts +0 -6
  391. package/dist/providers/compat/profiles/chat/qwen/index.js +0 -6
  392. package/dist/providers/compat/profiles/chat/qwen/index.js.map +0 -1
  393. package/dist/providers/compat/profiles/compat/passthrough/index.d.ts +0 -6
  394. package/dist/providers/compat/profiles/compat/passthrough/index.js +0 -6
  395. package/dist/providers/compat/profiles/compat/passthrough/index.js.map +0 -1
  396. package/dist/providers/compat/profiles/responses/c4m/index.d.ts +0 -6
  397. package/dist/providers/compat/profiles/responses/c4m/index.js +0 -6
  398. package/dist/providers/compat/profiles/responses/c4m/index.js.map +0 -1
  399. package/dist/providers/compat/profiles/responses/default/index.d.ts +0 -6
  400. package/dist/providers/compat/profiles/responses/default/index.js +0 -6
  401. package/dist/providers/compat/profiles/responses/default/index.js.map +0 -1
  402. package/dist/providers/compat/profiles/responses/fai/index.d.ts +0 -6
  403. package/dist/providers/compat/profiles/responses/fai/index.js +0 -6
  404. package/dist/providers/compat/profiles/responses/fai/index.js.map +0 -1
  405. package/dist/providers/compat/profiles/responses/fc/index.d.ts +0 -6
  406. package/dist/providers/compat/profiles/responses/fc/index.js +0 -6
  407. package/dist/providers/compat/profiles/responses/fc/index.js.map +0 -1
  408. package/dist/providers/compat/qwen/index.d.ts +0 -4
  409. package/dist/providers/compat/qwen/index.js +0 -6
  410. package/dist/providers/compat/qwen/index.js.map +0 -1
  411. package/dist/providers/compat/qwen-compatibility.d.ts +0 -52
  412. package/dist/providers/compat/qwen-compatibility.js +0 -330
  413. package/dist/providers/compat/qwen-compatibility.js.map +0 -1
  414. package/dist/providers/compat/register-compat-module.d.ts +0 -8
  415. package/dist/providers/compat/register-compat-module.js +0 -53
  416. package/dist/providers/compat/register-compat-module.js.map +0 -1
  417. package/dist/providers/compat/responses/c4m-responses-compatibility.d.ts +0 -27
  418. package/dist/providers/compat/responses/c4m-responses-compatibility.js +0 -197
  419. package/dist/providers/compat/responses/c4m-responses-compatibility.js.map +0 -1
  420. package/dist/providers/compat/standard-compatibility-utils.d.ts +0 -1
  421. package/dist/providers/compat/standard-compatibility-utils.js +0 -77
  422. package/dist/providers/compat/standard-compatibility-utils.js.map +0 -1
  423. package/dist/providers/compat/standard-compatibility.d.ts +0 -31
  424. package/dist/providers/compat/standard-compatibility.js +0 -118
  425. package/dist/providers/compat/standard-compatibility.js.map +0 -1
  426. package/dist/providers/compat/utils/snapshot-writer.js +0 -62
  427. package/dist/providers/compat/utils/snapshot-writer.js.map +0 -1
  428. package/dist/tools/replay-request.d.ts +0 -0
  429. package/dist/tools/replay-request.js +0 -2
  430. package/dist/tools/replay-request.js.map +0 -1
  431. package/scripts/check-glm-compat.mjs +0 -47
@@ -7,9 +7,13 @@
7
7
  * - 认证:OAuth2 Bearer token
8
8
  * - 特性:多 project 支持、token 共享、模型回退
9
9
  */
10
+ import { randomUUID } from 'node:crypto';
11
+ import { Transform } from 'node:stream';
12
+ import { StringDecoder } from 'node:string_decoder';
10
13
  import { HttpTransportProvider } from './http-transport-provider.js';
11
14
  import { GeminiCLIProtocolClient } from '../../../client/gemini-cli/gemini-cli-protocol-client.js';
12
15
  import { getDefaultProjectId } from '../../auth/gemini-cli-userinfo-helper.js';
16
+ import { ANTIGRAVITY_HELPER_DEFAULTS } from '../../auth/antigravity-userinfo-helper.js';
13
17
  export class GeminiCLIHttpProvider extends HttpTransportProvider {
14
18
  constructor(config, dependencies) {
15
19
  const providerId = typeof config.config?.providerId === 'string' && config.config.providerId.trim().length
@@ -32,51 +36,139 @@ export class GeminiCLIHttpProvider extends HttpTransportProvider {
32
36
  super(cfg, dependencies, 'gemini-cli-http-provider', new GeminiCLIProtocolClient());
33
37
  }
34
38
  async preprocessRequest(request) {
35
- const adapter = this.resolvePayload(request);
39
+ const processedRequest = await super.preprocessRequest(request);
40
+ const adapter = this.resolvePayload(processedRequest);
36
41
  const payload = adapter.payload;
37
- // 从 auth provider 获取 project_id(仅做最小的 OAuth token 解析,不介入登录流程)
42
+ // 从 auth provider 获取 project_id(仅做最小的 OAuth token 解析,不在此处触发 OAuth 流程)
38
43
  if (!this.authProvider) {
39
44
  throw new Error('Gemini CLI: auth provider not found');
40
45
  }
41
- const oauthClient = this.authProvider.getOAuthClient?.();
42
- const tokenData = oauthClient?.getToken?.();
46
+ const anyAuth = this.authProvider;
47
+ const readTokenPayload = () => {
48
+ const oauthClient = anyAuth.getOAuthClient?.();
49
+ if (oauthClient && typeof oauthClient.getToken === 'function') {
50
+ return oauthClient.getToken();
51
+ }
52
+ if (typeof anyAuth.getTokenPayload === 'function') {
53
+ // 兼容 TokenFileAuthProvider:直接从本地 token JSON 解析 project_id
54
+ return anyAuth.getTokenPayload();
55
+ }
56
+ return undefined;
57
+ };
58
+ const tokenData = readTokenPayload();
43
59
  const projectId = getDefaultProjectId(tokenData || {});
44
- if (!projectId) {
45
- throw new Error('Gemini CLI: project_id not found in token. Please authenticate with Google OAuth first.');
46
- }
47
- // 构建 Gemini CLI 格式的请求
48
- const model = typeof payload.model === 'string' ? payload.model : '';
60
+ // 构建 Gemini CLI 格式的请求(仅做传输层整理,不做 OpenAI→Gemini 语义转换)
61
+ const model = typeof payload.model === 'string' && payload.model.trim().length > 0
62
+ ? payload.model
63
+ : '';
49
64
  if (!model) {
50
65
  throw new Error('Gemini CLI: model is required');
51
66
  }
52
- // 转换 messages 到 contents (如果存在)
53
- let contents = payload.contents;
54
- if (!contents && Array.isArray(payload.messages)) {
55
- contents = this.convertMessagesToContents(payload.messages);
56
- }
57
- // 构建 generationConfig
58
- const generationConfig = this.buildGenerationConfig(payload);
59
- const rebuilt = {
60
- ...payload,
61
- model,
62
- project: projectId
63
- };
64
- if (contents) {
65
- rebuilt.contents = contents;
67
+ payload.model = model;
68
+ // 若当前 token 中已有 project 元数据,则补充到请求中;否则让上游决定后续行为。
69
+ if (projectId) {
70
+ payload.project = projectId;
66
71
  }
67
- if (Object.keys(generationConfig).length > 0) {
68
- rebuilt.generationConfig = generationConfig;
72
+ this.ensureRequestMetadata(payload);
73
+ // 删除与 Gemini 协议无关的字段,避免影响 Cloud Code Assist schema 校验
74
+ // - 对于从 OpenAI/Responses 桥接过来的请求(携带 messages),本地工具应由 server-side-tools 处理,
75
+ // 不直接下发到 Gemini CLI,否则会触发 “Multiple tools are supported only when they are all search tools.” 等错误。
76
+ // - 对于原生 Gemini payload(仅包含 contents + tools,例如 server-side web_search 使用的 googleSearch 工具),
77
+ // 保留 tools 字段以便启用搜索能力。
78
+ const recordPayload = payload;
79
+ const hasMessages = Array.isArray(recordPayload.messages);
80
+ if (hasMessages) {
81
+ delete recordPayload.messages;
82
+ delete recordPayload.stream;
83
+ delete recordPayload.tools;
84
+ }
85
+ else {
86
+ delete recordPayload.stream;
87
+ }
88
+ return processedRequest;
89
+ }
90
+ wantsUpstreamSse(request, context) {
91
+ const fromRequest = this.extractStreamFlag(request);
92
+ const fromContext = this.extractStreamFlag(context.metadata);
93
+ const wantsStream = typeof fromRequest === 'boolean'
94
+ ? fromRequest
95
+ : typeof fromContext === 'boolean'
96
+ ? fromContext
97
+ : false;
98
+ this.applyStreamAction(request, wantsStream);
99
+ return wantsStream;
100
+ }
101
+ async finalizeRequestHeaders(headers, request) {
102
+ const finalized = await super.finalizeRequestHeaders(headers, request);
103
+ if (this.isAntigravityRuntime()) {
104
+ finalized['User-Agent'] = ANTIGRAVITY_HELPER_DEFAULTS.userAgent;
105
+ if (!this.hasNonEmptyString(finalized['Accept-Encoding'])) {
106
+ finalized['Accept-Encoding'] = 'gzip, deflate, br';
107
+ }
69
108
  }
70
- // 删除不必要的字段
71
- delete rebuilt.messages;
72
- delete rebuilt.stream;
73
- return adapter.assign(rebuilt);
109
+ return finalized;
74
110
  }
75
111
  async postprocessResponse(response, context) {
112
+ const processingTime = Date.now() - context.startTime;
76
113
  if (response && typeof response === 'object') {
77
- return response;
114
+ const record = response;
115
+ // 保持与基类一致:优先透传上游 SSE 流
116
+ const sseStream = record.__sse_responses ||
117
+ (record.data && typeof record.data === 'object'
118
+ ? record.data.__sse_responses
119
+ : undefined);
120
+ if (sseStream) {
121
+ return { __sse_responses: sseStream };
122
+ }
123
+ // 非流式响应:HttpClient.post 返回的 data 是 Cloud Code Assist 的 envelope:{ response: <GeminiResponse>, ... }
124
+ const rawData = record.data ?? response;
125
+ let normalizedPayload = rawData;
126
+ if (rawData && typeof rawData === 'object' && 'response' in rawData) {
127
+ const inner = rawData.response;
128
+ if (inner && typeof inner === 'object') {
129
+ normalizedPayload = inner;
130
+ }
131
+ }
132
+ const payloadObject = normalizedPayload && typeof normalizedPayload === 'object'
133
+ ? normalizedPayload
134
+ : undefined;
135
+ const modelFromPayload = payloadObject && typeof payloadObject.model === 'string' && payloadObject.model.trim().length
136
+ ? payloadObject.model
137
+ : undefined;
138
+ const usageFromPayload = payloadObject && typeof payloadObject.usageMetadata === 'object'
139
+ ? payloadObject.usageMetadata
140
+ : undefined;
141
+ return {
142
+ data: normalizedPayload,
143
+ status: typeof record.status === 'number' ? record.status : undefined,
144
+ headers: record.headers,
145
+ metadata: {
146
+ requestId: context.requestId,
147
+ processingTime,
148
+ providerType: this.providerType,
149
+ model: context.model ?? modelFromPayload,
150
+ usage: usageFromPayload
151
+ }
152
+ };
78
153
  }
79
- return { data: response };
154
+ // 基本兜底:保留处理时间和 requestId,数据直接透传
155
+ return {
156
+ data: response,
157
+ metadata: {
158
+ requestId: context.requestId,
159
+ processingTime,
160
+ providerType: this.providerType,
161
+ model: context.model
162
+ }
163
+ };
164
+ }
165
+ async wrapUpstreamSseResponse(stream, context) {
166
+ const normalizer = new GeminiSseNormalizer();
167
+ stream.pipe(normalizer);
168
+ return super.wrapUpstreamSseResponse(normalizer, context);
169
+ }
170
+ isAntigravityRuntime() {
171
+ return (this.oauthProviderId || '').toLowerCase() === 'antigravity';
80
172
  }
81
173
  resolvePayload(source) {
82
174
  if (this.hasDataEnvelope(source)) {
@@ -103,42 +195,6 @@ export class GeminiCLIHttpProvider extends HttpTransportProvider {
103
195
  hasDataEnvelope(payload) {
104
196
  return typeof payload === 'object' && payload !== null && 'data' in payload;
105
197
  }
106
- convertMessagesToContents(messages) {
107
- return messages
108
- .filter((msg) => typeof msg === 'object' && msg !== null)
109
- .map((message) => {
110
- const role = (message.role === 'assistant' ? 'model' : 'user');
111
- const content = this.normalizeMessageContent(message.content);
112
- return { role, parts: [{ text: content }] };
113
- });
114
- }
115
- normalizeMessageContent(content) {
116
- if (typeof content === 'string') {
117
- return content;
118
- }
119
- if (Array.isArray(content)) {
120
- return content.map((c) => (typeof c === 'string' ? c : JSON.stringify(c))).join('\n');
121
- }
122
- return JSON.stringify(content ?? '');
123
- }
124
- buildGenerationConfig(payload) {
125
- const generationConfig = typeof payload.generationConfig === 'object' && payload.generationConfig !== null
126
- ? { ...payload.generationConfig }
127
- : {};
128
- if (typeof payload.max_tokens === 'number') {
129
- generationConfig.maxOutputTokens = payload.max_tokens;
130
- }
131
- if (typeof payload.temperature === 'number') {
132
- generationConfig.temperature = payload.temperature;
133
- }
134
- if (typeof payload.top_p === 'number') {
135
- generationConfig.topP = payload.top_p;
136
- }
137
- if (typeof payload.top_k === 'number') {
138
- generationConfig.topK = payload.top_k;
139
- }
140
- return generationConfig;
141
- }
142
198
  /**
143
199
  * 获取模型回退列表(用于处理 429 限流)
144
200
  * 参考 CLIProxyAPI 的 cliPreviewFallbackOrder
@@ -151,6 +207,215 @@ export class GeminiCLIHttpProvider extends HttpTransportProvider {
151
207
  };
152
208
  return fallbackMap[model] || [];
153
209
  }
210
+ applyStreamAction(target, wantsStream) {
211
+ const adapter = this.resolvePayload(target);
212
+ const payload = adapter.payload;
213
+ if (wantsStream) {
214
+ payload.action = 'streamGenerateContent';
215
+ return;
216
+ }
217
+ if (!this.hasNonEmptyString(payload.action)) {
218
+ payload.action = 'generateContent';
219
+ }
220
+ }
221
+ ensureRequestMetadata(payload) {
222
+ if (!this.hasNonEmptyString(payload.requestId)) {
223
+ payload.requestId = `req-${randomUUID()}`;
224
+ }
225
+ if (!this.hasNonEmptyString(payload.session_id)) {
226
+ payload.session_id = `session-${randomUUID()}`;
227
+ }
228
+ if (!this.hasNonEmptyString(payload.userAgent)) {
229
+ payload.userAgent = this.oauthProviderId === 'antigravity' ? 'antigravity' : 'routecodex';
230
+ }
231
+ }
232
+ hasNonEmptyString(value) {
233
+ return typeof value === 'string' && value.trim().length > 0;
234
+ }
235
+ extractStreamFlag(source) {
236
+ if (!source || typeof source !== 'object') {
237
+ return undefined;
238
+ }
239
+ const direct = source.stream;
240
+ if (typeof direct === 'boolean') {
241
+ return direct;
242
+ }
243
+ const metadataContainer = source.metadata;
244
+ if (metadataContainer && typeof metadataContainer === 'object') {
245
+ const metaStream = metadataContainer.stream;
246
+ if (typeof metaStream === 'boolean') {
247
+ return metaStream;
248
+ }
249
+ }
250
+ const dataContainer = source.data;
251
+ if (dataContainer && typeof dataContainer === 'object') {
252
+ const nested = this.extractStreamFlag(dataContainer);
253
+ if (typeof nested === 'boolean') {
254
+ return nested;
255
+ }
256
+ }
257
+ return undefined;
258
+ }
154
259
  }
155
260
  export default GeminiCLIHttpProvider;
261
+ class GeminiSseNormalizer extends Transform {
262
+ decoder;
263
+ buffer = '';
264
+ lastDonePayload = null;
265
+ eventCounter = 0;
266
+ chunkCounter = 0;
267
+ processedEventCounter = 0;
268
+ constructor() {
269
+ super();
270
+ this.decoder = new StringDecoder('utf8');
271
+ }
272
+ _transform(chunk, _encoding, callback) {
273
+ this.chunkCounter++;
274
+ if (chunk) {
275
+ let text = '';
276
+ if (Buffer.isBuffer(chunk)) {
277
+ text = this.decoder.write(chunk);
278
+ }
279
+ else {
280
+ // If we receive strings, convert to buffer to maintain decoder state safety
281
+ // or assume separate handling. Safe approach: treat as bytes.
282
+ text = this.decoder.write(Buffer.from(String(chunk), 'utf8'));
283
+ }
284
+ this.buffer += text.replace(/\r\n/g, '\n');
285
+ this.processBuffered();
286
+ }
287
+ callback();
288
+ }
289
+ _flush(callback) {
290
+ const remaining = this.decoder.end();
291
+ if (remaining) {
292
+ this.buffer += remaining.replace(/\r\n/g, '\n');
293
+ }
294
+ this.processBuffered(true);
295
+ console.log('[GeminiSseNormalizer] Stream complete:', {
296
+ totalChunks: this.chunkCounter,
297
+ processedEvents: this.processedEventCounter,
298
+ emittedEvents: this.eventCounter
299
+ });
300
+ if (this.lastDonePayload) {
301
+ this.pushEvent('gemini.done', this.lastDonePayload);
302
+ this.lastDonePayload = null;
303
+ }
304
+ callback();
305
+ }
306
+ processBuffered(flush = false) {
307
+ let eventsFound = 0;
308
+ while (true) {
309
+ const separatorIndex = this.buffer.indexOf('\n\n');
310
+ if (separatorIndex === -1) {
311
+ break;
312
+ }
313
+ eventsFound++;
314
+ const rawEvent = this.buffer.slice(0, separatorIndex);
315
+ this.buffer = this.buffer.slice(separatorIndex + 2);
316
+ this.processEvent(rawEvent);
317
+ }
318
+ if (flush && this.buffer.trim().length) {
319
+ console.log('[GeminiSseNormalizer] Final buffer flush:', {
320
+ bufferLength: this.buffer.length,
321
+ bufferPreview: this.buffer.slice(0, 300),
322
+ eventsFoundInLoop: eventsFound
323
+ });
324
+ this.processEvent(this.buffer);
325
+ this.buffer = '';
326
+ }
327
+ else if (flush) {
328
+ console.log('[GeminiSseNormalizer] Flush called but buffer empty:', {
329
+ eventsFoundInLoop: eventsFound
330
+ });
331
+ }
332
+ }
333
+ processEvent(rawEvent) {
334
+ this.processedEventCounter++;
335
+ const trimmed = rawEvent.trim();
336
+ if (!trimmed.length) {
337
+ return;
338
+ }
339
+ const dataLines = trimmed
340
+ .split('\n')
341
+ .map((line) => line.trim())
342
+ .filter((line) => line.startsWith('data:'))
343
+ .map((line) => line.slice(5).trimStart());
344
+ if (!dataLines.length) {
345
+ return;
346
+ }
347
+ const payloadText = dataLines.join('\n').trim();
348
+ if (!payloadText || payloadText === '[DONE]') {
349
+ return;
350
+ }
351
+ try {
352
+ const parsed = JSON.parse(payloadText);
353
+ const response = parsed?.response;
354
+ if (!response || typeof response !== 'object') {
355
+ // Log dropped events for debugging
356
+ console.warn('[GeminiSseNormalizer] Dropped event without valid response field:', {
357
+ hasResponse: !!parsed?.response,
358
+ parsedKeys: Object.keys(parsed || {}),
359
+ payloadPreview: payloadText.slice(0, 150)
360
+ });
361
+ return;
362
+ }
363
+ this.emitCandidateParts(response);
364
+ }
365
+ catch (err) {
366
+ // Log parse failures for debugging
367
+ console.error('[GeminiSseNormalizer] Failed to parse SSE payload:', {
368
+ error: err instanceof Error ? err.message : String(err),
369
+ payloadPreview: payloadText.slice(0, 200)
370
+ });
371
+ }
372
+ }
373
+ emitCandidateParts(response) {
374
+ const candidatesRaw = response.candidates;
375
+ const candidates = Array.isArray(candidatesRaw) ? candidatesRaw : [];
376
+ candidates.forEach((candidate, index) => {
377
+ const content = candidate && typeof candidate.content === 'object' && candidate.content !== null
378
+ ? candidate.content
379
+ : undefined;
380
+ const role = typeof content?.role === 'string' ? content.role : 'model';
381
+ const partsRaw = content?.parts;
382
+ const parts = Array.isArray(partsRaw) ? partsRaw : [];
383
+ for (const part of parts) {
384
+ if (!part || typeof part !== 'object')
385
+ continue;
386
+ // Send raw Gemini part - let llmswitch-core handle the conversion to target protocol
387
+ this.pushEvent('gemini.data', {
388
+ candidateIndex: index,
389
+ role,
390
+ part // ← Raw Gemini part object
391
+ });
392
+ }
393
+ });
394
+ // Preserve finish reason, safety ratings, and usage metadata
395
+ this.lastDonePayload = {
396
+ candidates: candidates.map((candidate, index) => ({
397
+ index,
398
+ finishReason: candidate && typeof candidate === 'object'
399
+ ? candidate.finishReason
400
+ : undefined,
401
+ safetyRatings: candidate && typeof candidate === 'object'
402
+ ? candidate.safetyRatings
403
+ : undefined
404
+ })),
405
+ usageMetadata: response.usageMetadata,
406
+ promptFeedback: response.promptFeedback,
407
+ modelVersion: response.modelVersion
408
+ };
409
+ }
410
+ pushEvent(eventName, payload) {
411
+ this.eventCounter++;
412
+ try {
413
+ const data = JSON.stringify(payload);
414
+ this.push(`event: ${eventName}\ndata: ${data}\n\n`);
415
+ }
416
+ catch {
417
+ // ignore serialization errors
418
+ }
419
+ }
420
+ }
156
421
  //# sourceMappingURL=gemini-cli-http-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-cli-http-provider.js","sourceRoot":"","sources":["../../../../src/providers/core/runtime/gemini-cli-http-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini-cli-http-provider.js","sourceRoot":"","sources":["../../../../src/providers/core/runtime/gemini-cli-http-provider.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ export declare class HttpRequestExecutor {
36
36
  constructor(httpClient: HttpClient, deps: HttpRequestExecutorDeps);
37
37
  execute(processedRequest: UnknownObject, context: ProviderContext): Promise<unknown>;
38
38
  private prepareHttpRequest;
39
+ private captureVisionDebugRequest;
39
40
  private snapshotProviderRequest;
40
41
  private executeHttpRequestWithRetries;
41
42
  private executeHttpRequestOnce;
@@ -1,4 +1,5 @@
1
1
  import { attachProviderSseSnapshotStream, shouldCaptureProviderStreamSnapshots, writeProviderSnapshot } from '../utils/snapshot-writer.js';
2
+ import { buildVisionSnapshotPayload, shouldCaptureVisionDebug, summarizeVisionMessages } from './vision-debug-utils.js';
2
3
  export class HttpRequestExecutor {
3
4
  httpClient;
4
5
  deps;
@@ -26,11 +27,18 @@ export class HttpRequestExecutor {
26
27
  finalHeaders = this.deps.applyStreamModeHeaders(finalHeaders, wantsSse);
27
28
  const targetUrl = `${this.deps.getEffectiveBaseUrl().replace(/\/$/, '')}/${endpoint.startsWith('/') ? endpoint.slice(1) : endpoint}`;
28
29
  const finalBody = this.deps.buildHttpRequestBody(processedRequest);
30
+ const entryEndpoint = this.deps.getEntryEndpointFromPayload(processedRequest);
29
31
  if (wantsSse) {
30
32
  this.deps.prepareSseRequestBody(finalBody, context);
31
33
  }
32
- const entryEndpoint = this.deps.getEntryEndpointFromPayload(processedRequest);
33
34
  const clientRequestId = this.deps.getClientRequestIdFromContext(context);
35
+ await this.captureVisionDebugRequest(processedRequest, finalBody, {
36
+ wantsSse,
37
+ entryEndpoint,
38
+ requestId: context.requestId,
39
+ routeName: context.routeName,
40
+ clientRequestId
41
+ });
34
42
  return {
35
43
  endpoint,
36
44
  headers: finalHeaders,
@@ -41,6 +49,38 @@ export class HttpRequestExecutor {
41
49
  wantsSse
42
50
  };
43
51
  }
52
+ async captureVisionDebugRequest(processedRequest, body, options) {
53
+ const debug = shouldCaptureVisionDebug(processedRequest, {
54
+ routeName: options.routeName,
55
+ requestId: options.requestId
56
+ });
57
+ if (!debug.enabled) {
58
+ return;
59
+ }
60
+ const requestId = debug.requestId ?? options.requestId;
61
+ try {
62
+ await writeProviderSnapshot({
63
+ phase: 'provider-body-debug',
64
+ requestId,
65
+ data: buildVisionSnapshotPayload(body, {
66
+ wantsSse: options.wantsSse
67
+ }),
68
+ entryEndpoint: options.entryEndpoint,
69
+ clientRequestId: options.clientRequestId ?? options.requestId
70
+ });
71
+ }
72
+ catch {
73
+ // ignore snapshot failures
74
+ }
75
+ try {
76
+ const summary = summarizeVisionMessages(body);
77
+ console.debug(`[vision-debug][build-body] route=${debug.routeName ?? options.routeName ?? 'vision'} ` +
78
+ `request=${requestId} wantsSse=${options.wantsSse} ${summary}`);
79
+ }
80
+ catch {
81
+ // best-effort logging
82
+ }
83
+ }
44
84
  async snapshotProviderRequest(requestInfo, context) {
45
85
  try {
46
86
  await writeProviderSnapshot({
@@ -1 +1 @@
1
- {"version":3,"file":"http-request-executor.js","sourceRoot":"","sources":["../../../../src/providers/core/runtime/http-request-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-request-executor.js","sourceRoot":"","sources":["../../../../src/providers/core/runtime/http-request-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,EACpC,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AA4CjC,MAAM,OAAO,mBAAmB;IAEX;IACA;IAFnB,YACmB,UAAsB,EACtB,IAA6B;QAD7B,eAAU,GAAV,UAAU,CAAY;QACtB,SAAI,GAAJ,IAAI,CAAyB;IAC7C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,gBAA+B,EAAE,OAAwB;QACrE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClG,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,gBAA+B,EAC/B,OAAwB;QAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACtD,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACrF,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrI,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;QAC9E,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,SAAS,EAAE;YAChE,QAAQ;YACR,aAAa;YACb,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,eAAe;SAChB,CAAC,CAAC;QACH,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,YAAY;YACrB,SAAS;YACT,IAAI,EAAE,SAAS;YACf,aAAa;YACb,eAAe;YACf,QAAQ;SACT,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,yBAAyB,CACrC,gBAA+B,EAC/B,IAAmB,EACnB,OAAuH;QAEvH,MAAM,KAAK,GAAG,wBAAwB,CAAC,gBAAgB,EAAE;YACvD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,qBAAqB,CAAC;gBAC1B,KAAK,EAAE,qBAAqB;gBAC5B,SAAS;gBACT,IAAI,EAAE,0BAA0B,CAAC,IAAI,EAAE;oBACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,CAAC;gBACF,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,SAAS;aAC9D,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,CACX,oCAAoC,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,QAAQ,GAAG;gBACvF,WAAW,SAAS,aAAa,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE,CAC/D,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,WAAgC,EAAE,OAAwB;QAC9F,IAAI,CAAC;YACH,MAAM,qBAAqB,CAAC;gBAC1B,KAAK,EAAE,kBAAkB;gBACzB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,GAAG,EAAE,WAAW,CAAC,SAAS;gBAC1B,aAAa,EAAE,WAAW,CAAC,aAAa;gBACxC,eAAe,EAAE,WAAW,CAAC,eAAe;aAC7C,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,6BAA6B,CACzC,WAAgC,EAChC,gBAA+B,EAC/B,OAAwB;QAExB,MAAM,UAAU,GAAG,oCAAoC,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAC7E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBACvC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAC1D,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,OAAO,CACR,CAAC;oBACF,IAAI,WAAW,EAAE,CAAC;wBAChB,OAAO,WAAW,CAAC;oBACrB,CAAC;gBACH,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBAChF,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;oBAC9C,SAAS;gBACX,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,WAAgC,EAChC,OAAwB,EACxB,UAAmB;QAEnB,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;YACrH,MAAM,aAAa,GAAG,UAAU;gBAC9B,CAAC,CAAC,+BAA+B,CAAC,cAAc,EAAE;oBAChD,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,GAAG,EAAE,WAAW,CAAC,SAAS;oBAC1B,aAAa,EAAE,WAAW,CAAC,aAAa;oBACxC,eAAe,EAAE,WAAW,CAAC,eAAe;iBAC7C,CAAC;gBACF,CAAC,CAAC,cAAc,CAAC;YACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAChF,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,qBAAqB,CAAC;wBAC1B,KAAK,EAAE,mBAAmB;wBAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;wBACrB,OAAO,EAAE,WAAW,CAAC,OAAO;wBAC5B,GAAG,EAAE,WAAW,CAAC,SAAS;wBAC1B,aAAa,EAAE,WAAW,CAAC,aAAa;wBACxC,eAAe,EAAE,WAAW,CAAC,eAAe;qBAC7C,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,8BAA8B;gBAChC,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACzG,IAAI,CAAC;YACH,MAAM,qBAAqB,CAAC;gBAC1B,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,GAAG,EAAE,WAAW,CAAC,SAAS;gBAC1B,aAAa,EAAE,WAAW,CAAC,aAAa;gBACxC,eAAe,EAAE,WAAW,CAAC,eAAe;aAC7C,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -17,6 +17,16 @@ import type { UnknownObject } from '../../../types/common-types.js';
17
17
  import type { ModuleDependencies } from '../../../modules/pipeline/interfaces/pipeline-interfaces.js';
18
18
  import type { HttpProtocolClient, ProtocolRequestPayload } from '../../../client/http-protocol-client.js';
19
19
  type ProtocolClient = HttpProtocolClient<ProtocolRequestPayload>;
20
+ export type ProviderConfigInternal = OpenAIStandardConfig['config'] & {
21
+ endpoint?: string;
22
+ defaultModel?: string;
23
+ headers?: Record<string, string>;
24
+ responses?: Record<string, unknown>;
25
+ authCapabilities?: {
26
+ required?: string[];
27
+ optional?: string[];
28
+ };
29
+ };
20
30
  export declare class HttpTransportProvider extends BaseProvider {
21
31
  readonly type: string;
22
32
  protected authProvider: IAuthProvider | null;
@@ -38,6 +48,8 @@ export declare class HttpTransportProvider extends BaseProvider {
38
48
  private createRequestExecutorDeps;
39
49
  protected preprocessRequest(request: UnknownObject): Promise<UnknownObject>;
40
50
  protected postprocessResponse(response: unknown, context: ProviderContext): Promise<UnknownObject>;
51
+ private logVisionDebug;
52
+ private captureVisionDebugSnapshot;
41
53
  protected sendRequestInternal(request: UnknownObject): Promise<unknown>;
42
54
  protected wantsUpstreamSse(_request: UnknownObject, _context: ProviderContext): boolean;
43
55
  protected applyStreamModeHeaders(headers: Record<string, string>, wantsSse: boolean): Record<string, string>;
@@ -64,12 +76,22 @@ export declare class HttpTransportProvider extends BaseProvider {
64
76
  private validateConfig;
65
77
  private buildRequestUrl;
66
78
  protected buildRequestHeaders(): Promise<Record<string, string>>;
79
+ protected isCodexUaMode(): boolean;
80
+ private normalizeCodexClientHeaders;
81
+ private copyHeaderValue;
82
+ private findHeaderValue;
83
+ private assignHeader;
84
+ private ensureCodexSessionHeaders;
85
+ private setHeaderIfMissing;
86
+ private buildCodexIdentifier;
87
+ private enforceCodexIdentifierLength;
67
88
  protected getEffectiveBaseUrl(): string;
68
89
  protected getEffectiveEndpoint(): string;
69
90
  private pickRuntimeBaseUrl;
70
91
  private looksLikeAbsoluteUrl;
71
92
  private getConfigExtensions;
72
93
  private getEntryEndpointFromPayload;
94
+ private getEntryEndpointFromRuntime;
73
95
  private asResponseRecord;
74
96
  private extractModel;
75
97
  private extractUsage;
@@ -81,5 +103,10 @@ export declare class HttpTransportProvider extends BaseProvider {
81
103
  private resolveOAuthProviderId;
82
104
  private ensureOAuthProviderId;
83
105
  private ensureOAuthProviderIdLegacy;
106
+ private extractClientHeaders;
107
+ private normalizeClientHeaders;
108
+ private ensureAntigravityProjectMetadata;
109
+ private extractAccessTokenFromSnapshot;
110
+ private extractProjectIdFromTokenSnapshot;
84
111
  }
85
112
  export {};