@jsonstudio/rcc 0.89.1121 → 0.89.1136

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 (79) hide show
  1. package/dist/build-info.js +2 -2
  2. package/dist/cli.js +39 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/gemini/gemini-protocol-client.js +5 -0
  5. package/dist/client/gemini/gemini-protocol-client.js.map +1 -1
  6. package/dist/commands/provider-update.js +355 -5
  7. package/dist/commands/provider-update.js.map +1 -1
  8. package/dist/docs/daemon-admin-ui.html +583 -87
  9. package/dist/index.js +32 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/manager/modules/quota/index.d.ts +19 -1
  12. package/dist/manager/modules/quota/index.js +109 -1
  13. package/dist/manager/modules/quota/index.js.map +1 -1
  14. package/dist/manager/types.d.ts +5 -0
  15. package/dist/providers/core/config/service-profiles.js +1 -1
  16. package/dist/providers/core/config/service-profiles.js.map +1 -1
  17. package/dist/providers/core/runtime/gemini-cli-http-provider.js +0 -1
  18. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  19. package/dist/providers/core/runtime/http-transport-provider.js +26 -38
  20. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  21. package/dist/server/handlers/handler-utils.d.ts +1 -1
  22. package/dist/server/handlers/handler-utils.js +4 -4
  23. package/dist/server/handlers/handler-utils.js.map +1 -1
  24. package/dist/server/handlers/responses-handler.js +2 -1
  25. package/dist/server/handlers/responses-handler.js.map +1 -1
  26. package/dist/server/handlers/sse-dispatcher.js +1 -4
  27. package/dist/server/handlers/sse-dispatcher.js.map +1 -1
  28. package/dist/server/runtime/http-server/colored-logger.d.ts +1 -1
  29. package/dist/server/runtime/http-server/colored-logger.js +22 -10
  30. package/dist/server/runtime/http-server/colored-logger.js.map +1 -1
  31. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +12 -6
  32. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  33. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +116 -98
  34. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
  35. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js +108 -15
  36. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js.map +1 -1
  37. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js +2 -1
  38. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js.map +1 -1
  39. package/dist/server/runtime/http-server/daemon-admin/stats-handler.d.ts +3 -0
  40. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js +56 -0
  41. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js.map +1 -0
  42. package/dist/server/runtime/http-server/daemon-admin/status-handler.js +8 -4
  43. package/dist/server/runtime/http-server/daemon-admin/status-handler.js.map +1 -1
  44. package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +9 -0
  45. package/dist/server/runtime/http-server/daemon-admin-routes.js +3 -0
  46. package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
  47. package/dist/server/runtime/http-server/executor-provider.js +74 -0
  48. package/dist/server/runtime/http-server/executor-provider.js.map +1 -1
  49. package/dist/server/runtime/http-server/index.d.ts +1 -0
  50. package/dist/server/runtime/http-server/index.js +42 -11
  51. package/dist/server/runtime/http-server/index.js.map +1 -1
  52. package/dist/server/runtime/http-server/request-executor.js +9 -10
  53. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  54. package/dist/server/runtime/http-server/routes.d.ts +5 -0
  55. package/dist/server/runtime/http-server/routes.js +9 -0
  56. package/dist/server/runtime/http-server/routes.js.map +1 -1
  57. package/dist/server/runtime/http-server/stats-manager.d.ts +7 -0
  58. package/dist/server/runtime/http-server/stats-manager.js +22 -3
  59. package/dist/server/runtime/http-server/stats-manager.js.map +1 -1
  60. package/dist/server/runtime/http-server/types.d.ts +5 -0
  61. package/dist/server/utils/http-error-mapper.js +70 -9
  62. package/dist/server/utils/http-error-mapper.js.map +1 -1
  63. package/dist/server/utils/request-id-manager.js +9 -5
  64. package/dist/server/utils/request-id-manager.js.map +1 -1
  65. package/dist/server/utils/sse-request-parser.js +2 -1
  66. package/dist/server/utils/sse-request-parser.js.map +1 -1
  67. package/dist/server/utils/utf8-chunk-buffer.d.ts +15 -30
  68. package/dist/server/utils/utf8-chunk-buffer.js +78 -88
  69. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -1
  70. package/dist/server/utils/warmup-storm-tracker.js +1 -1
  71. package/dist/server/utils/warmup-storm-tracker.js.map +1 -1
  72. package/dist/tools/provider-update/fetch-models.js +8 -5
  73. package/dist/tools/provider-update/fetch-models.js.map +1 -1
  74. package/dist/tools/provider-update/probe-context.d.ts +24 -0
  75. package/dist/tools/provider-update/probe-context.js +199 -0
  76. package/dist/tools/provider-update/probe-context.js.map +1 -0
  77. package/dist/tools/provider-update/types.d.ts +1 -0
  78. package/package.json +3 -3
  79. package/scripts/scan-apply-patch-samples.mjs +148 -7
@@ -1,113 +1,101 @@
1
+ import { Transform } from 'stream';
1
2
  /**
2
- * UTF-8 Chunk Buffer
3
+ * A buffer helper that handles splitting UTF-8 characters across chunks.
3
4
  *
4
- * Handles proper buffering of UTF-8 text chunks to prevent splitting multibyte characters.
5
- * This ensures that Chinese and other multibyte characters are not split mid-character
6
- * during SSE streaming.
5
+ * It accumulates incoming chunks (Buffer or string) and pushes complete
6
+ * UTF-8 strings downstream. If a chunk ends in the middle of a multi-byte
7
+ * sequence, the bytes are buffered until the next chunk completes it.
8
+ *
9
+ * This uses the utf8-chunk-buffer package implementation logic but wrapped
10
+ * in a stream.Transform for easy piping.
7
11
  */
8
12
  export class Utf8ChunkBuffer {
9
- buffer = Buffer.alloc(0);
10
- minChunkSize;
11
- constructor(minChunkSize = 64) {
12
- this.minChunkSize = minChunkSize;
13
- }
13
+ buffer = null;
14
14
  /**
15
- * Add data to the buffer and return complete UTF-8 sequences
16
- * @param chunk - Incoming data chunk (Buffer or string)
17
- * @returns Array of complete UTF-8 strings ready to be sent
15
+ * Pushes a new chunk into the buffer.
16
+ * Returns an array of complete UTF-8 strings found so far.
18
17
  */
19
18
  push(chunk) {
20
- // Convert input to Buffer if it's a string
21
- const inputBuffer = typeof chunk === 'string'
22
- ? Buffer.from(chunk, 'utf8')
23
- : chunk;
24
- // Append new data to existing buffer
25
- this.buffer = Buffer.concat([this.buffer, inputBuffer]);
26
- const output = [];
27
- // Process buffer in chunks, ensuring we don't split multibyte characters
28
- while (this.buffer.length >= this.minChunkSize) {
29
- // Find safe chunk boundary (don't split multibyte chars)
30
- const chunkSize = this.findSafeChunkSize(this.minChunkSize);
31
- if (chunkSize === 0) {
32
- // No safe boundary found, wait for more data
19
+ const data = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
20
+ if (!data.length) {
21
+ return [];
22
+ }
23
+ // Combine with pending buffer if any
24
+ const buffer = this.buffer ? Buffer.concat([this.buffer, data]) : data;
25
+ this.buffer = null;
26
+ // Check for incomplete UTF-8 sequence at the end
27
+ // UTF-8 logic:
28
+ // 1-byte: 0xxxxxxx
29
+ // 2-byte: 110xxxxx 10xxxxxx
30
+ // 3-byte: 1110xxxx 10xxxxxx 10xxxxxx
31
+ // 4-byte: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
32
+ // We scan from the end to find the start byte of the last sequence
33
+ let i = buffer.length - 1;
34
+ let lookback = 0;
35
+ // Look back at most 3 bytes (since max utf8 char is 4 bytes)
36
+ while (i >= 0 && lookback < 4) {
37
+ const byte = buffer[i];
38
+ if ((byte & 0xc0) === 0x80) {
39
+ // Continuation byte (10xxxxxx), keep looking back
40
+ i--;
41
+ lookback++;
42
+ continue;
43
+ }
44
+ // Found a start byte or ASCII
45
+ if ((byte & 0x80) === 0x00) {
46
+ // ASCII (0xxxxxxx), complete char. No split at this byte.
47
+ // If we looked back some bytes, those were continuation bytes without a start,
48
+ // which is invalid UTF-8 but we treat it as complete to avoid stuck buffer.
33
49
  break;
34
50
  }
35
- // Extract the safe chunk
36
- const safeChunk = this.buffer.slice(0, chunkSize);
37
- this.buffer = this.buffer.slice(chunkSize);
38
- // Convert to string and add to output
39
- const text = safeChunk.toString('utf8');
40
- if (text) {
41
- output.push(text);
51
+ // Multi-byte start
52
+ let charLength = 0;
53
+ if ((byte & 0xe0) === 0xc0)
54
+ charLength = 2;
55
+ else if ((byte & 0xf0) === 0xe0)
56
+ charLength = 3;
57
+ else if ((byte & 0xf8) === 0xf0)
58
+ charLength = 4;
59
+ if (charLength > 0) {
60
+ // We found a start byte. Check if we have enough bytes.
61
+ const available = buffer.length - i;
62
+ if (available < charLength) {
63
+ // Incomplete sequence
64
+ this.buffer = buffer.subarray(i);
65
+ return [buffer.subarray(0, i).toString('utf8')];
66
+ }
42
67
  }
68
+ break;
43
69
  }
44
- return output;
70
+ return [buffer.toString('utf8')];
45
71
  }
46
72
  /**
47
- * Flush any remaining buffered data
48
- * @returns Remaining buffered text
73
+ * Flushes any remaining bytes in the buffer as a string.
49
74
  */
50
75
  flush() {
51
- if (this.buffer.length === 0) {
52
- return '';
76
+ if (this.buffer && this.buffer.length > 0) {
77
+ const str = this.buffer.toString('utf8');
78
+ this.buffer = null;
79
+ return [str];
53
80
  }
54
- const text = this.buffer.toString('utf8');
55
- this.buffer = Buffer.alloc(0);
56
- return text;
57
- }
58
- /**
59
- * Find a safe chunk size that doesn't split multibyte UTF-8 characters
60
- * @param targetSize - Desired chunk size
61
- * @returns Safe chunk size
62
- */
63
- findSafeChunkSize(targetSize) {
64
- if (this.buffer.length < targetSize) {
65
- return 0;
66
- }
67
- let size = targetSize;
68
- // Walk backward from target size to find a safe boundary
69
- // A safe boundary is where we're not in the middle of a multibyte sequence
70
- while (size > 0) {
71
- if (this.isCharBoundary(size)) {
72
- return size;
73
- }
74
- size--;
75
- }
76
- return 0;
77
- }
78
- /**
79
- * Check if a position is a character boundary (not in the middle of a multibyte sequence)
80
- * @param pos - Position to check
81
- * @returns true if position is a character boundary
82
- */
83
- isCharBoundary(pos) {
84
- if (pos >= this.buffer.length) {
85
- return true;
86
- }
87
- const byte = this.buffer[pos];
88
- // If the byte is not a continuation byte (0x80-0xBF), it's a boundary
89
- // UTF-8 continuation bytes have the pattern 10xxxxxx (0x80-0xBF)
90
- return (byte & 0xC0) !== 0x80;
91
- }
92
- /**
93
- * Get current buffer size
94
- */
95
- get bufferSize() {
96
- return this.buffer.length;
81
+ return [];
97
82
  }
98
83
  }
99
84
  /**
100
- * Create a transform stream that properly chunks UTF-8 text
85
+ * Creates a Node.js Transform stream that ensures chunks emitted are complete UTF-8 strings.
86
+ * This is useful for processing SSE streams where a chunk might split a multi-byte character.
101
87
  */
102
- export function createUtf8ChunkStream(minChunkSize = 64) {
103
- const buffer = new Utf8ChunkBuffer(minChunkSize);
104
- const { Transform } = require('stream');
88
+ export function createUtf8TransformStream() {
89
+ const buffer = new Utf8ChunkBuffer();
105
90
  return new Transform({
91
+ objectMode: true, // We emit strings, not buffers
106
92
  transform(chunk, encoding, callback) {
107
93
  try {
108
94
  const chunks = buffer.push(chunk);
109
95
  for (const text of chunks) {
110
- this.push(text);
96
+ if (text) {
97
+ this.push(text);
98
+ }
111
99
  }
112
100
  callback();
113
101
  }
@@ -117,9 +105,11 @@ export function createUtf8ChunkStream(minChunkSize = 64) {
117
105
  },
118
106
  flush(callback) {
119
107
  try {
120
- const remaining = buffer.flush();
121
- if (remaining) {
122
- this.push(remaining);
108
+ const chunks = buffer.flush();
109
+ for (const text of chunks) {
110
+ if (text) {
111
+ this.push(text);
112
+ }
123
113
  }
124
114
  callback();
125
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utf8-chunk-buffer.js","sourceRoot":"","sources":["../../../src/server/utils/utf8-chunk-buffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utf8-chunk-buffer.js","sourceRoot":"","sources":["../../../src/server/utils/utf8-chunk-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IAClB,MAAM,GAAkB,IAAI,CAAC;IAErC;;;OAGG;IACI,IAAI,CAAC,KAAsB;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,iDAAiD;QACjD,eAAe;QACf,mBAAmB;QACnB,4BAA4B;QAC5B,qCAAqC;QACrC,8CAA8C;QAE9C,mEAAmE;QACnE,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,6DAA6D;QAC7D,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3B,kDAAkD;gBAClD,CAAC,EAAE,CAAC;gBACJ,QAAQ,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YAED,8BAA8B;YAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC3B,0DAA0D;gBAC1D,+EAA+E;gBAC/E,4EAA4E;gBAC5E,MAAM;YACR,CAAC;YAED,mBAAmB;YACnB,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI;gBAAE,UAAU,GAAG,CAAC,CAAC;iBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI;gBAAE,UAAU,GAAG,CAAC,CAAC;iBAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI;gBAAE,UAAU,GAAG,CAAC,CAAC;YAEhD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACnB,wDAAwD;gBACxD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;oBAC3B,sBAAsB;oBACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IAErC,OAAO,IAAI,SAAS,CAAC;QACnB,UAAU,EAAE,IAAI,EAAE,+BAA+B;QACjD,SAAS,CAAC,KAAsB,EAAE,QAAwB,EAAE,QAAwD;YAClH,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC1B,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,KAAK,CAAC,QAAwD;YAC5D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC9B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;oBAC1B,IAAI,IAAI,EAAE,CAAC;wBACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -34,7 +34,7 @@ export function flushWarmupStormSummary() {
34
34
  const durationMs = Math.max(0, stats.lastTimestamp - stats.firstTimestamp);
35
35
  const endpointList = Array.from(stats.endpoints);
36
36
  const userAgentList = Array.from(stats.userAgents);
37
- const reasonList = Array.from(stats.reasons);
37
+ const _reasonList = Array.from(stats.reasons);
38
38
  const firstId = stats.firstRequestId ?? 'n/a';
39
39
  const lastId = stats.lastRequestId ?? 'n/a';
40
40
  console.log(`[warmup-storm] requests=${stats.count} durationMs=${durationMs} endpoints=${endpointList.join(',') || 'unknown'} ua=${userAgentList.join(',') || 'unknown'} first=${firstId} last=${lastId}`);
@@ -1 +1 @@
1
- {"version":3,"file":"warmup-storm-tracker.js","sourceRoot":"","sources":["../../../src/server/utils/warmup-storm-tracker.ts"],"names":[],"mappings":"AAmBA,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,IAAI,KAAK,GAAqB,gBAAgB,EAAE,CAAC;AACjD,IAAI,YAAwC,CAAC;AAE7C,MAAM,UAAU,qBAAqB,CAAC,KAAsB;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC3B,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC;IACzC,CAAC;IACD,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;IAC1B,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,oBAAoB,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IACD,YAAY,GAAG,UAAU,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACvC,UAAU,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC;IAE5C,OAAO,CAAC,GAAG,CACT,2BAA2B,KAAK,CAAC,KAAK,eAAe,UAAU,cAAc,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,UAAU,OAAO,SAAS,MAAM,EAAE,CAC9L,CAAC;IAEF,UAAU,EAAE,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;QAChB,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,IAAI,GAAG,EAAU;QAC5B,UAAU,EAAE,IAAI,GAAG,EAAU;QAC7B,OAAO,EAAE,IAAI,GAAG,EAAU;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,CAAC,YAAY,CAAC,CAAC;QAC3B,YAAY,GAAG,SAAS,CAAC;IAC3B,CAAC;IACD,KAAK,GAAG,gBAAgB,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"warmup-storm-tracker.js","sourceRoot":"","sources":["../../../src/server/utils/warmup-storm-tracker.ts"],"names":[],"mappings":"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"}
@@ -64,12 +64,15 @@ async function buildOAuthHeaders(provider, providerKind, verbose = false) {
64
64
  overrides.client = client;
65
65
  }
66
66
  // 统一 tokenFile 路径,避免与运行时 OAuth 流程使用不同文件导致重复授权:
67
- // - qwen: ~/.routecodex/auth/qwen-oauth.json (对齐 oauth-lifecycle 默认)
68
- // - iflow: 保持默认(~/.iflow/oauth_creds.json
67
+ // - 若显式提供 auth.tokenFile,则优先使用;
68
+ // - qwen: 默认 ~/.routecodex/auth/qwen-oauth.json(对齐 oauth-lifecycle 默认);
69
+ // - iflow: 默认保持 upstream/strategy 内置(通常为 ~/.iflow/oauth_creds.json)。
69
70
  const home = process.env.HOME || '';
70
- const tokenFile = kind === 'qwen'
71
- ? path.join(home, '.routecodex', 'auth', 'qwen-oauth.json')
72
- : undefined;
71
+ const tokenFile = (typeof auth.tokenFile === 'string' && auth.tokenFile.trim())
72
+ ? auth.tokenFile.trim()
73
+ : kind === 'qwen'
74
+ ? path.join(home, '.routecodex', 'auth', 'qwen-oauth.json')
75
+ : undefined;
73
76
  const strategy = createProviderOAuthStrategy(kind, overrides, tokenFile);
74
77
  // Try existing token first
75
78
  let token = null;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-models.js","sourceRoot":"","sources":["../../../src/tools/provider-update/fetch-models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-models.js","sourceRoot":"","sources":["../../../src/tools/provider-update/fetch-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,uDAAuD,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,SAAS,mBAAmB,CAAC,MAAe;IAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,CAAC,CAAC,EAAE,CAAC;QAAA,OAAO,QAAQ,CAAC;IAAA,CAAC;IAC1B,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;IACtC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAAA,OAAO,MAAM,CAAC;IAAA,CAAC;IACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAAA,OAAO,OAAO,CAAC;IAAA,CAAC;IAC1C,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAAA,OAAO,WAAW,CAAC;IAAA,CAAC;IAClD,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAAA,OAAO,YAAY,CAAC;IAAA,CAAC;IACpD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAA,OAAO,QAAQ,CAAC;IAAA,CAAC;IAC5C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAA6B,EAAE,YAAoB,EAAE,OAAO,GAAG,KAAK;IACnG,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAAA,OAAO,EAAE,CAAC;IAAA,CAAC;IAEhD,kEAAkE;IAClE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAkD,EAAE,CAAC;QACpE,MAAM,MAAM,GAAoE,EAAE,CAAC;QAEnF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAA,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAAA,CAAC;QACxD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAAA,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAAA,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAA,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QAAA,CAAC;QAEzE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAAA,CAAC;QACrD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAAA,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAAA,CAAC;QACjE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAAA,CAAC;QACxF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAA,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;QAAA,CAAC;QAEhE,+CAA+C;QAC/C,gCAAgC;QAChC,wEAAwE;QACxE,qEAAqE;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,SAAS,GACb,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,IAAI,KAAK,MAAM;gBACf,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,CAAC;gBAC3D,CAAC,CAAC,SAAS,CAAC;QAElB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAEzE,2BAA2B;QAC3B,IAAI,KAAK,GAAyB,IAAI,CAAC;QACvC,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAED,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,KAAK,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBAC1D,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,OAAO,EAAE,CAAC;gBACZ,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,uDAAuD,IAAI,qDAAqD,CAAC,CAAC;YAChI,CAAC;YACD,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACnB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,gEAAgE,IAAI,IAAI,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACjD,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,KAA6B,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,QAA6B,EAAE,OAAO,GAAG,KAAK;IAC1F,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,IAAI,CAAC,OAAO,EAAE,CAAC;QAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAAA,CAAC;IACxE,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,GAA2B;QACtC,QAAQ,EAAE,kBAAkB;QAC5B,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,2CAA2C,IAAI,QAAQ,QAAQ,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,6DAA6D;IAC7D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,6EAA6E;QAC7E,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,MAAM,GAAG,IAAgD,CAAC;YAChE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACjC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,IAAI,OAAQ,IAA0B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC/G,MAAM,IAAI,GAAI,IAAyB,CAAC,IAAI,CAAC;wBAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC5E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,KAAK,IAAI,OAAQ,KAAyB,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;wBAC7G,MAAM,CAAC,IAAI,CAAE,KAAwB,CAAC,EAAE,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,IAAI,KAAK,IAAI,OAAQ,KAAyB,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC7G,MAAM,CAAC,IAAI,CAAE,KAAwB,CAAC,EAAE,CAAC,CAAC;gBAC5C,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;IAC1B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type ContextProbeFailure = {
2
+ threshold: number;
3
+ status: number;
4
+ statusText?: string;
5
+ message?: string;
6
+ responseSnippet?: string;
7
+ };
8
+ export type ContextProbeModelResult = {
9
+ modelId: string;
10
+ thresholds: number[];
11
+ passed: number[];
12
+ maxPassedTokens: number | null;
13
+ firstFailure?: ContextProbeFailure;
14
+ };
15
+ export declare function buildTextForExactTokenCount(targetTokens: number, encoderModel?: string): string;
16
+ export declare function countTokens(text: string, encoderModel?: string): number;
17
+ export declare function probeContextForModel(modelId: string, thresholds: number[], { endpoint, apiKey, timeoutMs, fetcher, maxRetries, encoderModel }: {
18
+ endpoint: string;
19
+ apiKey?: string;
20
+ timeoutMs?: number;
21
+ fetcher?: typeof fetch;
22
+ maxRetries?: number;
23
+ encoderModel?: string;
24
+ }): Promise<ContextProbeModelResult>;
@@ -0,0 +1,199 @@
1
+ import { encoding_for_model } from 'tiktoken';
2
+ const encoderCache = new Map();
3
+ function getEncoder(model) {
4
+ const key = model.trim() || 'gpt-4o';
5
+ const existing = encoderCache.get(key);
6
+ if (existing) {
7
+ return existing;
8
+ }
9
+ // tiktoken's TS types restrict this to a known model union; allow override for local experiments.
10
+ const created = encoding_for_model(key);
11
+ encoderCache.set(key, created);
12
+ return created;
13
+ }
14
+ const UNIT_TEXT = 'a ';
15
+ export function buildTextForExactTokenCount(targetTokens, encoderModel = 'gpt-4o') {
16
+ if (!Number.isFinite(targetTokens) || targetTokens <= 0) {
17
+ throw new Error(`Invalid targetTokens: ${targetTokens}`);
18
+ }
19
+ // We deliberately generate text from plain strings (not decode(tokens)) because
20
+ // decode() is not guaranteed to round-trip back to the same token count via encode().
21
+ //
22
+ // Empirically for tiktoken (e.g. 'gpt-4o'), UNIT_TEXT repeat has stable linear growth:
23
+ // encode('a '.repeat(n)).length == n + k
24
+ // We detect k at runtime and compute n to hit targetTokens exactly.
25
+ const encoder = getEncoder(encoderModel);
26
+ if (Math.floor(targetTokens) === 1) {
27
+ return 'a';
28
+ }
29
+ const f1 = encoder.encode(UNIT_TEXT).length;
30
+ const f99 = encoder.encode(UNIT_TEXT.repeat(99)).length;
31
+ const f100 = encoder.encode(UNIT_TEXT.repeat(100)).length;
32
+ const slope = f100 - f99;
33
+ const offset = slope === 1 ? (f1 - 1) : 0;
34
+ let repeats = slope === 1 ? Math.max(1, Math.floor(targetTokens) - offset) : Math.max(1, Math.floor(targetTokens));
35
+ // Fine-tune with minimal extra encodes (should converge immediately for slope=1).
36
+ for (let i = 0; i < 20; i++) {
37
+ const text = UNIT_TEXT.repeat(repeats);
38
+ const tokens = encoder.encode(text).length;
39
+ if (tokens === Math.floor(targetTokens)) {
40
+ return text;
41
+ }
42
+ if (tokens < Math.floor(targetTokens)) {
43
+ repeats += Math.max(1, Math.floor(targetTokens) - tokens);
44
+ }
45
+ else {
46
+ repeats -= Math.max(1, tokens - Math.floor(targetTokens));
47
+ if (repeats <= 0) {
48
+ repeats = 1;
49
+ }
50
+ }
51
+ }
52
+ // Last resort: return best-effort (caller will validate).
53
+ return UNIT_TEXT.repeat(repeats);
54
+ }
55
+ export function countTokens(text, encoderModel = 'gpt-4o') {
56
+ const encoder = getEncoder(encoderModel);
57
+ return encoder.encode(text).length;
58
+ }
59
+ function sleep(ms) {
60
+ return new Promise((resolve) => setTimeout(resolve, ms));
61
+ }
62
+ async function requestOnce(modelId, threshold, text, opts) {
63
+ const fetcher = opts.fetcher ?? fetch;
64
+ const controller = new AbortController();
65
+ const timeout = setTimeout(() => controller.abort(), opts.timeoutMs);
66
+ try {
67
+ const headers = {
68
+ 'Content-Type': 'application/json',
69
+ Accept: 'application/json'
70
+ };
71
+ const key = typeof opts.apiKey === 'string' ? opts.apiKey.trim() : '';
72
+ if (key) {
73
+ headers.Authorization = `Bearer ${key}`;
74
+ }
75
+ const body = {
76
+ model: modelId,
77
+ input: [
78
+ {
79
+ role: 'user',
80
+ content: [
81
+ {
82
+ type: 'input_text',
83
+ text
84
+ }
85
+ ]
86
+ }
87
+ ],
88
+ stream: false,
89
+ max_output_tokens: 1
90
+ };
91
+ return await fetcher(opts.endpoint, {
92
+ method: 'POST',
93
+ headers,
94
+ body: JSON.stringify(body),
95
+ signal: controller.signal
96
+ });
97
+ }
98
+ finally {
99
+ clearTimeout(timeout);
100
+ }
101
+ }
102
+ async function requestWithRetries(modelId, threshold, text, opts) {
103
+ let lastError = null;
104
+ for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {
105
+ try {
106
+ const resp = await requestOnce(modelId, threshold, text, opts);
107
+ if (resp.status !== 429 && resp.status !== 503 && resp.status !== 504) {
108
+ return resp;
109
+ }
110
+ lastError = new Error(`HTTP ${resp.status}`);
111
+ // Drain body to free sockets.
112
+ try {
113
+ await resp.text();
114
+ }
115
+ catch { /* ignore */ }
116
+ }
117
+ catch (err) {
118
+ lastError = err;
119
+ }
120
+ if (attempt < opts.maxRetries) {
121
+ await sleep(500 * (attempt + 1));
122
+ }
123
+ }
124
+ throw lastError instanceof Error ? lastError : new Error(String(lastError ?? 'request failed'));
125
+ }
126
+ export async function probeContextForModel(modelId, thresholds, { endpoint, apiKey, timeoutMs = 60_000, fetcher, maxRetries = 2, encoderModel = 'gpt-4o' }) {
127
+ const model = (modelId || '').trim();
128
+ if (!model) {
129
+ throw new Error('probeContextForModel: modelId is required');
130
+ }
131
+ const normalizedEndpoint = (endpoint || '').trim();
132
+ if (!normalizedEndpoint) {
133
+ throw new Error('probeContextForModel: endpoint is required');
134
+ }
135
+ const sorted = thresholds
136
+ .map((value) => Math.floor(Number(value)))
137
+ .filter((value) => Number.isFinite(value) && value > 0);
138
+ if (!sorted.length) {
139
+ throw new Error('probeContextForModel: thresholds must be non-empty');
140
+ }
141
+ const passed = [];
142
+ let firstFailure;
143
+ for (const threshold of sorted) {
144
+ const text = buildTextForExactTokenCount(threshold, encoderModel);
145
+ const check = countTokens(text, encoderModel);
146
+ if (check !== threshold) {
147
+ throw new Error(`probeContextForModel: internal token mismatch: want=${threshold} got=${check}`);
148
+ }
149
+ let resp;
150
+ try {
151
+ resp = await requestWithRetries(model, threshold, text, {
152
+ endpoint: normalizedEndpoint,
153
+ apiKey,
154
+ timeoutMs,
155
+ fetcher,
156
+ maxRetries
157
+ });
158
+ }
159
+ catch (err) {
160
+ firstFailure = {
161
+ threshold,
162
+ status: 0,
163
+ message: err instanceof Error ? err.message : String(err)
164
+ };
165
+ break;
166
+ }
167
+ if (resp.ok) {
168
+ passed.push(threshold);
169
+ // Drain body to reuse socket; but keep it small.
170
+ try {
171
+ await resp.text();
172
+ }
173
+ catch { /* ignore */ }
174
+ continue;
175
+ }
176
+ let responseText = '';
177
+ try {
178
+ responseText = await resp.text();
179
+ }
180
+ catch {
181
+ responseText = '';
182
+ }
183
+ firstFailure = {
184
+ threshold,
185
+ status: resp.status,
186
+ statusText: resp.statusText,
187
+ responseSnippet: responseText ? responseText.slice(0, 2000) : undefined
188
+ };
189
+ break;
190
+ }
191
+ return {
192
+ modelId: model,
193
+ thresholds: sorted,
194
+ passed,
195
+ maxPassedTokens: passed.length ? passed[passed.length - 1] : null,
196
+ ...(firstFailure ? { firstFailure } : {})
197
+ };
198
+ }
199
+ //# sourceMappingURL=probe-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-context.js","sourceRoot":"","sources":["../../../src/tools/provider-update/probe-context.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export type AuthConfig = {
3
3
  apiKey?: string;
4
4
  headerName?: string;
5
5
  prefix?: string;
6
+ tokenFile?: string;
6
7
  clientId?: string;
7
8
  clientSecret?: string;
8
9
  tokenUrl?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsonstudio/rcc",
3
- "version": "0.89.1121",
3
+ "version": "0.89.1136",
4
4
  "description": "Multi-provider OpenAI proxy server with anthropic/responses/chat support (release)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,7 +37,7 @@
37
37
  "dev": "tsx watch src/index.ts",
38
38
  "jest:run": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js",
39
39
  "test": "npm run test:routing-instructions && npm run mock:regressions",
40
- "test:routing-instructions": "npm run jest:run -- --runTestsByPath tests/server/runtime/request-executor.single-attempt.spec.ts tests/servertool/virtual-router-series-cooldown.spec.ts tests/servertool/virtual-router-quota-routing.spec.ts tests/servertool/virtual-router-engine-update-deps.spec.ts tests/manager/quota/provider-quota-center.spec.ts tests/manager/quota/provider-quota-store.spec.ts tests/server/http-server/daemon-admin.e2e.spec.ts tests/server/http-server/quota-view-injection.spec.ts tests/server/handlers/sse-timeout.spec.ts tests/utils/is-direct-execution.test.ts tests/utils/windows-netstat.test.ts",
40
+ "test:routing-instructions": "npm run jest:run -- --runTestsByPath tests/server/runtime/request-executor.single-attempt.spec.ts tests/server/runtime/executor-provider.retryable.spec.ts tests/servertool/virtual-router-series-cooldown.spec.ts tests/servertool/virtual-router-quota-routing.spec.ts tests/servertool/virtual-router-engine-update-deps.spec.ts tests/manager/quota/provider-quota-center.spec.ts tests/manager/quota/provider-quota-store.spec.ts tests/server/http-server/daemon-admin.e2e.spec.ts tests/server/http-server/quota-view-injection.spec.ts tests/server/handlers/sse-timeout.spec.ts tests/utils/is-direct-execution.test.ts tests/utils/windows-netstat.test.ts",
41
41
  "test:watch": "npm run jest:run -- --watch",
42
42
  "test:coverage": "npm run jest:run -- --coverage",
43
43
  "test:integration": "npm run jest:run -- --testPathPattern=integration",
@@ -131,7 +131,7 @@
131
131
  },
132
132
  "dependencies": {
133
133
  "@anthropic-ai/sdk": "^0.65.0",
134
- "@jsonstudio/llms": "^0.6.795",
134
+ "@jsonstudio/llms": "^0.6.802",
135
135
  "@jsonstudio/rcc": "^0.89.555",
136
136
  "@lmstudio/sdk": "^1.5.0",
137
137
  "@radix-ui/react-switch": "^1.2.6",