@jsonstudio/rcc 0.89.333 → 0.89.548

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 (191) hide show
  1. package/dist/build-info.js +3 -3
  2. package/dist/build-info.js.map +1 -1
  3. package/dist/cli.js +110 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/token-daemon.d.ts +2 -0
  6. package/dist/commands/token-daemon.js +183 -0
  7. package/dist/commands/token-daemon.js.map +1 -0
  8. package/dist/index.js +20 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/modules/llmswitch/bridge.d.ts +1 -1
  11. package/dist/modules/llmswitch/bridge.js +3 -2
  12. package/dist/modules/llmswitch/bridge.js.map +1 -1
  13. package/dist/modules/pipeline/utils/colored-logger.js +3 -1
  14. package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
  15. package/dist/providers/auth/gemini-cli-userinfo-helper.js +12 -2
  16. package/dist/providers/auth/gemini-cli-userinfo-helper.js.map +1 -1
  17. package/dist/providers/auth/oauth-lifecycle.js +337 -25
  18. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  19. package/dist/providers/core/config/oauth-flows.d.ts +23 -0
  20. package/dist/providers/core/config/oauth-flows.js +92 -5
  21. package/dist/providers/core/config/oauth-flows.js.map +1 -1
  22. package/dist/providers/core/config/provider-oauth-configs.js +9 -3
  23. package/dist/providers/core/config/provider-oauth-configs.js.map +1 -1
  24. package/dist/providers/core/config/service-profiles.js +18 -10
  25. package/dist/providers/core/config/service-profiles.js.map +1 -1
  26. package/dist/providers/core/runtime/base-provider.d.ts +2 -0
  27. package/dist/providers/core/runtime/base-provider.js +35 -1
  28. package/dist/providers/core/runtime/base-provider.js.map +1 -1
  29. package/dist/providers/core/runtime/gemini-cli-http-provider.js +87 -20
  30. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  31. package/dist/providers/core/runtime/http-request-executor.d.ts +1 -0
  32. package/dist/providers/core/runtime/http-request-executor.js +75 -1
  33. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  34. package/dist/providers/core/runtime/http-transport-provider.d.ts +2 -0
  35. package/dist/providers/core/runtime/http-transport-provider.js +60 -2
  36. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  37. package/dist/providers/core/runtime/iflow-http-provider.d.ts +4 -0
  38. package/dist/providers/core/runtime/iflow-http-provider.js +28 -0
  39. package/dist/providers/core/runtime/iflow-http-provider.js.map +1 -1
  40. package/dist/providers/core/runtime/rate-limit-manager.d.ts +30 -0
  41. package/dist/providers/core/runtime/rate-limit-manager.js +136 -0
  42. package/dist/providers/core/runtime/rate-limit-manager.js.map +1 -0
  43. package/dist/providers/core/runtime/responses-provider.js +8 -3
  44. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  45. package/dist/providers/core/runtime/vision-debug-utils.d.ts +13 -0
  46. package/dist/providers/core/runtime/vision-debug-utils.js +114 -0
  47. package/dist/providers/core/runtime/vision-debug-utils.js.map +1 -0
  48. package/dist/providers/core/strategies/oauth-auth-code-flow.js +75 -26
  49. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  50. package/dist/providers/core/utils/http-client.js +2 -1
  51. package/dist/providers/core/utils/http-client.js.map +1 -1
  52. package/dist/providers/core/utils/provider-error-reporter.js +31 -5
  53. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  54. package/dist/providers/core/utils/provider-type-utils.js +1 -1
  55. package/dist/providers/core/utils/provider-type-utils.js.map +1 -1
  56. package/dist/providers/core/utils/snapshot-writer.d.ts +1 -1
  57. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  58. package/dist/server/handlers/sse-dispatcher.js +22 -2
  59. package/dist/server/handlers/sse-dispatcher.js.map +1 -1
  60. package/dist/server/runtime/http-server/index.d.ts +9 -0
  61. package/dist/server/runtime/http-server/index.js +512 -144
  62. package/dist/server/runtime/http-server/index.js.map +1 -1
  63. package/dist/server/runtime/http-server/provider-utils.js +1 -1
  64. package/dist/server/runtime/http-server/provider-utils.js.map +1 -1
  65. package/dist/server/runtime/http-server/request-executor.d.ts +10 -0
  66. package/dist/server/runtime/http-server/request-executor.js +553 -159
  67. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  68. package/dist/server/runtime/http-server/routes.d.ts +5 -0
  69. package/dist/server/runtime/http-server/routes.js +29 -0
  70. package/dist/server/runtime/http-server/routes.js.map +1 -1
  71. package/dist/server/runtime/http-server/runtime-manager.js +33 -0
  72. package/dist/server/runtime/http-server/runtime-manager.js.map +1 -1
  73. package/dist/server/utils/utf8-chunk-buffer.d.ts +43 -0
  74. package/dist/server/utils/utf8-chunk-buffer.js +132 -0
  75. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -0
  76. package/dist/token-daemon/history-store.d.ts +75 -0
  77. package/dist/token-daemon/history-store.js +207 -0
  78. package/dist/token-daemon/history-store.js.map +1 -0
  79. package/dist/token-daemon/index.d.ts +7 -0
  80. package/dist/token-daemon/index.js +336 -0
  81. package/dist/token-daemon/index.js.map +1 -0
  82. package/dist/token-daemon/server-utils.d.ts +33 -0
  83. package/dist/token-daemon/server-utils.js +155 -0
  84. package/dist/token-daemon/server-utils.js.map +1 -0
  85. package/dist/token-daemon/token-daemon.d.ts +23 -0
  86. package/dist/token-daemon/token-daemon.js +249 -0
  87. package/dist/token-daemon/token-daemon.js.map +1 -0
  88. package/dist/token-daemon/token-types.d.ts +44 -0
  89. package/dist/token-daemon/token-types.js +18 -0
  90. package/dist/token-daemon/token-types.js.map +1 -0
  91. package/dist/token-daemon/token-utils.d.ts +17 -0
  92. package/dist/token-daemon/token-utils.js +153 -0
  93. package/dist/token-daemon/token-utils.js.map +1 -0
  94. package/dist/token-portal/local-token-portal.d.ts +1 -0
  95. package/dist/token-portal/local-token-portal.js +89 -0
  96. package/dist/token-portal/local-token-portal.js.map +1 -0
  97. package/dist/token-portal/render.d.ts +10 -0
  98. package/dist/token-portal/render.js +56 -0
  99. package/dist/token-portal/render.js.map +1 -0
  100. package/dist/tools/semantic-replay.js +7 -6
  101. package/dist/tools/semantic-replay.js.map +1 -1
  102. package/dist/utils/error-handler-registry.d.ts +36 -0
  103. package/dist/utils/error-handler-registry.js +93 -7
  104. package/dist/utils/error-handler-registry.js.map +1 -1
  105. package/node_modules/@jsonstudio/llms/README.md +2 -0
  106. package/node_modules/@jsonstudio/llms/dist/conversion/codecs/gemini-openai-codec.js +137 -5
  107. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.d.ts +17 -0
  108. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/gemini-web-search.js +68 -0
  109. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.d.ts +2 -0
  110. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-image-content.js +83 -0
  111. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.d.ts +11 -0
  112. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-vision-prompt.js +177 -0
  113. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.d.ts +2 -0
  114. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/glm-web-search.js +63 -0
  115. package/node_modules/@jsonstudio/llms/dist/conversion/compat/actions/universal-shape-filter.js +11 -0
  116. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-gemini.json +17 -0
  117. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-glm.json +190 -181
  118. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-iflow.json +195 -195
  119. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-lmstudio.json +43 -43
  120. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/chat-qwen.json +20 -20
  121. package/node_modules/@jsonstudio/llms/dist/conversion/compat/profiles/responses-c4m.json +42 -42
  122. package/node_modules/@jsonstudio/llms/dist/conversion/config/sample-config.json +1 -1
  123. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-pipeline-executor.js +24 -0
  124. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/compat/compat-types.d.ts +8 -0
  125. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/hub-pipeline.js +39 -4
  126. package/node_modules/@jsonstudio/llms/dist/conversion/hub/pipeline/target-utils.js +6 -0
  127. package/node_modules/@jsonstudio/llms/dist/conversion/hub/process/chat-process.js +213 -1
  128. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/provider-response.d.ts +34 -0
  129. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/provider-response.js +84 -24
  130. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/server-side-tools.d.ts +26 -0
  131. package/node_modules/@jsonstudio/llms/dist/conversion/hub/response/server-side-tools.js +383 -0
  132. package/node_modules/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/gemini-mapper.js +241 -14
  133. package/node_modules/@jsonstudio/llms/dist/conversion/hub/semantic-mappers/responses-mapper.js +17 -1
  134. package/node_modules/@jsonstudio/llms/dist/conversion/hub/standardized-bridge.js +14 -0
  135. package/node_modules/@jsonstudio/llms/dist/conversion/hub/types/standardized.d.ts +1 -0
  136. package/node_modules/@jsonstudio/llms/dist/conversion/responses/responses-openai-bridge.js +82 -3
  137. package/node_modules/@jsonstudio/llms/dist/conversion/shared/anthropic-message-utils.js +92 -3
  138. package/node_modules/@jsonstudio/llms/dist/conversion/shared/bridge-message-utils.js +137 -10
  139. package/node_modules/@jsonstudio/llms/dist/conversion/shared/responses-output-builder.js +43 -2
  140. package/node_modules/@jsonstudio/llms/dist/conversion/shared/snapshot-utils.js +17 -47
  141. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-filter-pipeline.js +1 -0
  142. package/node_modules/@jsonstudio/llms/dist/conversion/shared/tool-mapping.js +25 -2
  143. package/node_modules/@jsonstudio/llms/dist/index.d.ts +1 -0
  144. package/node_modules/@jsonstudio/llms/dist/index.js +1 -0
  145. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/bootstrap.js +308 -43
  146. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/classifier.js +11 -17
  147. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/context-advisor.d.ts +0 -2
  148. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/context-advisor.js +0 -12
  149. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.d.ts +17 -2
  150. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/engine.js +332 -95
  151. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/features.js +1 -1
  152. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/message-utils.js +36 -24
  153. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/provider-registry.js +2 -1
  154. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/token-counter.js +14 -3
  155. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.d.ts +66 -2
  156. package/node_modules/@jsonstudio/llms/dist/router/virtual-router/types.js +2 -1
  157. package/node_modules/@jsonstudio/llms/dist/servertool/engine.d.ts +27 -0
  158. package/node_modules/@jsonstudio/llms/dist/servertool/engine.js +60 -0
  159. package/node_modules/@jsonstudio/llms/dist/servertool/flow-types.d.ts +40 -0
  160. package/node_modules/@jsonstudio/llms/dist/servertool/flow-types.js +1 -0
  161. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/vision.d.ts +1 -0
  162. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/vision.js +194 -0
  163. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.d.ts +1 -0
  164. package/node_modules/@jsonstudio/llms/dist/servertool/handlers/web-search.js +638 -0
  165. package/node_modules/@jsonstudio/llms/dist/servertool/orchestration-types.d.ts +33 -0
  166. package/node_modules/@jsonstudio/llms/dist/servertool/orchestration-types.js +1 -0
  167. package/node_modules/@jsonstudio/llms/dist/servertool/registry.d.ts +18 -0
  168. package/node_modules/@jsonstudio/llms/dist/servertool/registry.js +27 -0
  169. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.d.ts +8 -0
  170. package/node_modules/@jsonstudio/llms/dist/servertool/server-side-tools.js +208 -0
  171. package/node_modules/@jsonstudio/llms/dist/servertool/types.d.ts +88 -0
  172. package/node_modules/@jsonstudio/llms/dist/servertool/types.js +1 -0
  173. package/node_modules/@jsonstudio/llms/dist/servertool/vision-tool.d.ts +2 -0
  174. package/node_modules/@jsonstudio/llms/dist/servertool/vision-tool.js +185 -0
  175. package/node_modules/@jsonstudio/llms/dist/sse/json-to-sse/event-generators/responses.js +15 -3
  176. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/builders/response-builder.js +6 -3
  177. package/node_modules/@jsonstudio/llms/dist/sse/sse-to-json/gemini-sse-to-json-converter.js +27 -1
  178. package/node_modules/@jsonstudio/llms/dist/sse/types/gemini-types.d.ts +20 -1
  179. package/node_modules/@jsonstudio/llms/dist/sse/types/responses-types.js +1 -1
  180. package/node_modules/@jsonstudio/llms/dist/telemetry/stats-center.d.ts +73 -0
  181. package/node_modules/@jsonstudio/llms/dist/telemetry/stats-center.js +280 -0
  182. package/node_modules/@jsonstudio/llms/package.json +1 -1
  183. package/package.json +3 -2
  184. package/scripts/pack-mode.mjs +2 -1
  185. package/scripts/publish-rcc.mjs +20 -4
  186. package/scripts/test-iflow-web-search.mjs +141 -0
  187. package/scripts/test-iflow.mjs +93 -1
  188. package/scripts/tests/virtual-router-health.mjs +141 -6
  189. package/dist/tools/replay-request.d.ts +0 -0
  190. package/dist/tools/replay-request.js +0 -2
  191. package/dist/tools/replay-request.js.map +0 -1
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { randomUUID } from 'node:crypto';
11
11
  import { Transform } from 'node:stream';
12
+ import { StringDecoder } from 'node:string_decoder';
12
13
  import { HttpTransportProvider } from './http-transport-provider.js';
13
14
  import { GeminiCLIProtocolClient } from '../../../client/gemini-cli/gemini-cli-protocol-client.js';
14
15
  import { getDefaultProjectId } from '../../auth/gemini-cli-userinfo-helper.js';
@@ -38,24 +39,24 @@ export class GeminiCLIHttpProvider extends HttpTransportProvider {
38
39
  const processedRequest = await super.preprocessRequest(request);
39
40
  const adapter = this.resolvePayload(processedRequest);
40
41
  const payload = adapter.payload;
41
- // 从 auth provider 获取 project_id(仅做最小的 OAuth token 解析,不介入登录流程)
42
+ // 从 auth provider 获取 project_id(仅做最小的 OAuth token 解析,不在此处触发 OAuth 流程)
42
43
  if (!this.authProvider) {
43
44
  throw new Error('Gemini CLI: auth provider not found');
44
45
  }
45
46
  const anyAuth = this.authProvider;
46
- let tokenData;
47
- const oauthClient = anyAuth.getOAuthClient?.();
48
- if (oauthClient && typeof oauthClient.getToken === 'function') {
49
- tokenData = oauthClient.getToken();
50
- }
51
- else if (typeof anyAuth.getTokenPayload === 'function') {
52
- // 兼容 TokenFileAuthProvider:直接从本地 token JSON 解析 project_id
53
- tokenData = anyAuth.getTokenPayload();
54
- }
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();
55
59
  const projectId = getDefaultProjectId(tokenData || {});
56
- if (!projectId) {
57
- throw new Error('Gemini CLI: project_id not found in token. Please authenticate with Google OAuth first.');
58
- }
59
60
  // 构建 Gemini CLI 格式的请求(仅做传输层整理,不做 OpenAI→Gemini 语义转换)
60
61
  const model = typeof payload.model === 'string' && payload.model.trim().length > 0
61
62
  ? payload.model
@@ -64,11 +65,26 @@ export class GeminiCLIHttpProvider extends HttpTransportProvider {
64
65
  throw new Error('Gemini CLI: model is required');
65
66
  }
66
67
  payload.model = model;
67
- payload.project = projectId;
68
+ // 若当前 token 中已有 project 元数据,则补充到请求中;否则让上游决定后续行为。
69
+ if (projectId) {
70
+ payload.project = projectId;
71
+ }
68
72
  this.ensureRequestMetadata(payload);
69
73
  // 删除与 Gemini 协议无关的字段,避免影响 Cloud Code Assist schema 校验
70
- delete payload.messages;
71
- delete payload.stream;
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
+ }
72
88
  return processedRequest;
73
89
  }
74
90
  wantsUpstreamSse(request, context) {
@@ -243,21 +259,44 @@ export class GeminiCLIHttpProvider extends HttpTransportProvider {
243
259
  }
244
260
  export default GeminiCLIHttpProvider;
245
261
  class GeminiSseNormalizer extends Transform {
262
+ decoder;
246
263
  buffer = '';
247
264
  lastDonePayload = null;
265
+ eventCounter = 0;
266
+ chunkCounter = 0;
267
+ processedEventCounter = 0;
248
268
  constructor() {
249
269
  super();
270
+ this.decoder = new StringDecoder('utf8');
250
271
  }
251
272
  _transform(chunk, _encoding, callback) {
273
+ this.chunkCounter++;
252
274
  if (chunk) {
253
- const text = chunk instanceof Buffer ? chunk.toString('utf8') : String(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
+ }
254
284
  this.buffer += text.replace(/\r\n/g, '\n');
255
285
  this.processBuffered();
256
286
  }
257
287
  callback();
258
288
  }
259
289
  _flush(callback) {
290
+ const remaining = this.decoder.end();
291
+ if (remaining) {
292
+ this.buffer += remaining.replace(/\r\n/g, '\n');
293
+ }
260
294
  this.processBuffered(true);
295
+ console.log('[GeminiSseNormalizer] Stream complete:', {
296
+ totalChunks: this.chunkCounter,
297
+ processedEvents: this.processedEventCounter,
298
+ emittedEvents: this.eventCounter
299
+ });
261
300
  if (this.lastDonePayload) {
262
301
  this.pushEvent('gemini.done', this.lastDonePayload);
263
302
  this.lastDonePayload = null;
@@ -265,21 +304,34 @@ class GeminiSseNormalizer extends Transform {
265
304
  callback();
266
305
  }
267
306
  processBuffered(flush = false) {
307
+ let eventsFound = 0;
268
308
  while (true) {
269
309
  const separatorIndex = this.buffer.indexOf('\n\n');
270
310
  if (separatorIndex === -1) {
271
311
  break;
272
312
  }
313
+ eventsFound++;
273
314
  const rawEvent = this.buffer.slice(0, separatorIndex);
274
315
  this.buffer = this.buffer.slice(separatorIndex + 2);
275
316
  this.processEvent(rawEvent);
276
317
  }
277
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
+ });
278
324
  this.processEvent(this.buffer);
279
325
  this.buffer = '';
280
326
  }
327
+ else if (flush) {
328
+ console.log('[GeminiSseNormalizer] Flush called but buffer empty:', {
329
+ eventsFoundInLoop: eventsFound
330
+ });
331
+ }
281
332
  }
282
333
  processEvent(rawEvent) {
334
+ this.processedEventCounter++;
283
335
  const trimmed = rawEvent.trim();
284
336
  if (!trimmed.length) {
285
337
  return;
@@ -300,12 +352,22 @@ class GeminiSseNormalizer extends Transform {
300
352
  const parsed = JSON.parse(payloadText);
301
353
  const response = parsed?.response;
302
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
+ });
303
361
  return;
304
362
  }
305
363
  this.emitCandidateParts(response);
306
364
  }
307
- catch {
308
- // ignore malformed chunks
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
+ });
309
371
  }
310
372
  }
311
373
  emitCandidateParts(response) {
@@ -319,13 +381,17 @@ class GeminiSseNormalizer extends Transform {
319
381
  const partsRaw = content?.parts;
320
382
  const parts = Array.isArray(partsRaw) ? partsRaw : [];
321
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
322
387
  this.pushEvent('gemini.data', {
323
388
  candidateIndex: index,
324
389
  role,
325
- part
390
+ part // ← Raw Gemini part object
326
391
  });
327
392
  }
328
393
  });
394
+ // Preserve finish reason, safety ratings, and usage metadata
329
395
  this.lastDonePayload = {
330
396
  candidates: candidates.map((candidate, index) => ({
331
397
  index,
@@ -342,6 +408,7 @@ class GeminiSseNormalizer extends Transform {
342
408
  };
343
409
  }
344
410
  pushEvent(eventName, payload) {
411
+ this.eventCounter++;
345
412
  try {
346
413
  const data = JSON.stringify(payload);
347
414
  this.push(`event: ${eventName}\ndata: ${data}\n\n`);
@@ -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({
@@ -127,6 +167,40 @@ export class HttpRequestExecutor {
127
167
  catch {
128
168
  /* ignore snapshot failures */
129
169
  }
170
+ // iFlow 特例:部分 OAuth 失效错误通过 HTTP 200 + body.status=439 返回,
171
+ // 需要与 401/403 一样走统一的 OAuth 修复逻辑(handleUpstreamInvalidOAuthToken)。
172
+ try {
173
+ const providerId = context
174
+ .providerId;
175
+ const family = context.providerFamily;
176
+ const pt = (typeof providerId === 'string' ? providerId : typeof family === 'string' ? family : '').toLowerCase();
177
+ if (pt === 'iflow') {
178
+ const data = response.data;
179
+ if (data && typeof data === 'object' && !Array.isArray(data)) {
180
+ const bag = data;
181
+ const rawStatus = bag.status;
182
+ const statusStr = typeof rawStatus === 'string' && rawStatus.trim().length
183
+ ? rawStatus.trim()
184
+ : typeof rawStatus === 'number'
185
+ ? String(rawStatus)
186
+ : '';
187
+ const msg = (typeof bag.msg === 'string' && bag.msg.trim().length
188
+ ? bag.msg
189
+ : typeof bag.message === 'string' && bag.message.trim().length
190
+ ? bag.message
191
+ : '') || '';
192
+ if (statusStr === '439' && /token has expired/i.test(msg)) {
193
+ // 抛出 Error 交给上层的 tryRecoverOAuthAndReplay + handleUpstreamInvalidOAuthToken
194
+ // 触发统一的 token 刷新 / Portal 授权流程。
195
+ throw new Error(msg);
196
+ }
197
+ }
198
+ }
199
+ }
200
+ catch (error) {
201
+ // 将检测到的 token 失效转换为上游错误,让调用方按统一路径处理。
202
+ throw error;
203
+ }
130
204
  return response;
131
205
  }
132
206
  }
@@ -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":"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"}
@@ -48,6 +48,8 @@ export declare class HttpTransportProvider extends BaseProvider {
48
48
  private createRequestExecutorDeps;
49
49
  protected preprocessRequest(request: UnknownObject): Promise<UnknownObject>;
50
50
  protected postprocessResponse(response: unknown, context: ProviderContext): Promise<UnknownObject>;
51
+ private logVisionDebug;
52
+ private captureVisionDebugSnapshot;
51
53
  protected sendRequestInternal(request: UnknownObject): Promise<unknown>;
52
54
  protected wantsUpstreamSse(_request: UnknownObject, _context: ProviderContext): boolean;
53
55
  protected applyStreamModeHeaders(headers: Record<string, string>, wantsSse: boolean): Record<string, string>;
@@ -21,6 +21,7 @@ import { ensureValidOAuthToken, handleUpstreamInvalidOAuthToken } from '../../au
21
21
  import { fetchAntigravityProjectId } from '../../auth/antigravity-userinfo-helper.js';
22
22
  import { attachProviderSseSnapshotStream, writeProviderSnapshot } from '../utils/snapshot-writer.js';
23
23
  import { attachProviderRuntimeMetadata, extractProviderRuntimeMetadata } from './provider-runtime-metadata.js';
24
+ import { buildVisionSnapshotPayload, shouldCaptureVisionDebug, summarizeVisionMessages } from './vision-debug-utils.js';
24
25
  import { OpenAIChatProtocolClient } from '../../../client/openai/chat-protocol-client.js';
25
26
  import { HttpRequestExecutor } from './http-request-executor.js';
26
27
  import { extractStatusCodeFromError } from './provider-error-classifier.js';
@@ -207,7 +208,8 @@ export class HttpTransportProvider extends BaseProvider {
207
208
  };
208
209
  const timeout = typeof timeoutFromCfg === 'number'
209
210
  ? timeoutFromCfg
210
- : (baseProfile?.timeout ?? 300000);
211
+ // 默认 Provider 请求超时时间:500s
212
+ : (baseProfile?.timeout ?? 500000);
211
213
  const maxRetries = typeof maxRetriesFromCfg === 'number'
212
214
  ? maxRetriesFromCfg
213
215
  : (baseProfile?.maxRetries ?? 3);
@@ -280,7 +282,8 @@ export class HttpTransportProvider extends BaseProvider {
280
282
  const envTimeout = Number(process.env.ROUTECODEX_PROVIDER_TIMEOUT_MS || process.env.RCC_PROVIDER_TIMEOUT_MS || NaN);
281
283
  const effectiveTimeout = Number.isFinite(envTimeout) && envTimeout > 0
282
284
  ? envTimeout
283
- : (this.config.config.overrides?.timeout ?? profile.timeout ?? 300000);
285
+ // 默认 Provider 请求超时时间:500s(可被 env / overrides 覆盖)
286
+ : (this.config.config.overrides?.timeout ?? profile.timeout ?? 500000);
284
287
  const envRetries = Number(process.env.ROUTECODEX_PROVIDER_RETRIES || process.env.RCC_PROVIDER_RETRIES || NaN);
285
288
  const effectiveRetries = Number.isFinite(envRetries) && envRetries >= 0
286
289
  ? envRetries
@@ -366,6 +369,8 @@ export class HttpTransportProvider extends BaseProvider {
366
369
  };
367
370
  }
368
371
  catch { /* ignore */ }
372
+ this.logVisionDebug('preprocess', processedRequest);
373
+ await this.captureVisionDebugSnapshot('provider-preprocess-debug', processedRequest);
369
374
  return processedRequest;
370
375
  }
371
376
  async postprocessResponse(response, context) {
@@ -393,6 +398,36 @@ export class HttpTransportProvider extends BaseProvider {
393
398
  }
394
399
  };
395
400
  }
401
+ logVisionDebug(stage, payload) {
402
+ const debug = shouldCaptureVisionDebug(payload);
403
+ if (!debug.enabled) {
404
+ return;
405
+ }
406
+ const summary = summarizeVisionMessages(payload);
407
+ const label = debug.routeName ?? 'vision';
408
+ console.debug(`[vision-debug][${stage}] route=${label} request=${debug.requestId ?? '-'} ${summary}`);
409
+ }
410
+ async captureVisionDebugSnapshot(stage, payload) {
411
+ const debug = shouldCaptureVisionDebug(payload);
412
+ if (!debug.enabled || !debug.requestId) {
413
+ return;
414
+ }
415
+ try {
416
+ const metadataNode = payload?.metadata;
417
+ const entryEndpoint = metadataNode && typeof metadataNode === 'object' && typeof metadataNode.entryEndpoint === 'string'
418
+ ? metadataNode.entryEndpoint
419
+ : undefined;
420
+ await writeProviderSnapshot({
421
+ phase: stage,
422
+ requestId: debug.requestId,
423
+ data: buildVisionSnapshotPayload(payload),
424
+ entryEndpoint
425
+ });
426
+ }
427
+ catch {
428
+ // snapshot is best-effort; ignore failures
429
+ }
430
+ }
396
431
  async sendRequestInternal(request) {
397
432
  const context = this.createProviderContext();
398
433
  return this.requestExecutor.execute(request, context);
@@ -564,12 +599,35 @@ export class HttpTransportProvider extends BaseProvider {
564
599
  * 为特定请求确定最终 endpoint(默认使用配置值,可由子类覆写)
565
600
  */
566
601
  resolveRequestEndpoint(request, defaultEndpoint) {
602
+ const metadataNode = request?.metadata &&
603
+ typeof request.metadata === 'object'
604
+ ? request.metadata
605
+ : undefined;
606
+ const isIflowWebSearch = metadataNode?.iflowWebSearch === true;
607
+ if (isIflowWebSearch) {
608
+ const entryEndpoint = typeof metadataNode?.entryEndpoint === 'string' && metadataNode.entryEndpoint.trim()
609
+ ? metadataNode.entryEndpoint.trim()
610
+ : undefined;
611
+ return entryEndpoint || '/chat/retrieve';
612
+ }
567
613
  return this.protocolClient.resolveEndpoint(request, defaultEndpoint);
568
614
  }
569
615
  /**
570
616
  * 构造最终发送到上游的请求体,默认实现包含模型/令牌治理,可由子类覆写
571
617
  */
572
618
  buildHttpRequestBody(request) {
619
+ const metadataNode = request?.metadata &&
620
+ typeof request.metadata === 'object'
621
+ ? request.metadata
622
+ : undefined;
623
+ const isIflowWebSearch = metadataNode?.iflowWebSearch === true;
624
+ if (isIflowWebSearch) {
625
+ const dataNode = request.data;
626
+ if (dataNode && typeof dataNode === 'object') {
627
+ return dataNode;
628
+ }
629
+ return {};
630
+ }
573
631
  return this.protocolClient.buildRequestBody(request);
574
632
  }
575
633
  /**