kimi-proxy 0.0.1 → 0.0.3

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 (47) hide show
  1. package/dist/adapters/anthropicAdapter.js +15 -10
  2. package/dist/adapters/anthropicAdapter.js.map +1 -1
  3. package/dist/config.js +2 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/core/converters/anthropicToOpenAI.js +4 -0
  6. package/dist/core/converters/anthropicToOpenAI.js.map +1 -1
  7. package/dist/core/converters/openaiPassthrough.js +5 -1
  8. package/dist/core/converters/openaiPassthrough.js.map +1 -1
  9. package/dist/core/modelRegistry.d.ts +9 -1
  10. package/dist/core/modelRegistry.js +23 -7
  11. package/dist/core/modelRegistry.js.map +1 -1
  12. package/dist/core/pipeline.js +9 -0
  13. package/dist/core/pipeline.js.map +1 -1
  14. package/dist/core/providers/openRouterProvider.js +1 -1
  15. package/dist/core/providers/openRouterProvider.js.map +1 -1
  16. package/dist/core/transforms/request/EnsureToolCallRequestTransform.d.ts +1 -0
  17. package/dist/core/transforms/request/EnsureToolCallRequestTransform.js +43 -2
  18. package/dist/core/transforms/request/EnsureToolCallRequestTransform.js.map +1 -1
  19. package/dist/core/transforms/request/RestoreThoughtSignaturesTransform.d.ts +10 -0
  20. package/dist/core/transforms/request/RestoreThoughtSignaturesTransform.js +93 -0
  21. package/dist/core/transforms/request/RestoreThoughtSignaturesTransform.js.map +1 -0
  22. package/dist/core/transforms/response/CleanupExtraPropertiesResponseTransform.d.ts +7 -0
  23. package/dist/core/transforms/response/CleanupExtraPropertiesResponseTransform.js +30 -0
  24. package/dist/core/transforms/response/CleanupExtraPropertiesResponseTransform.js.map +1 -0
  25. package/dist/core/transforms/response/EnsureToolCallResponseTransform.d.ts +1 -0
  26. package/dist/core/transforms/response/EnsureToolCallResponseTransform.js +60 -3
  27. package/dist/core/transforms/response/EnsureToolCallResponseTransform.js.map +1 -1
  28. package/dist/core/transforms/response/ExtractThoughtSignaturesTransform.d.ts +10 -0
  29. package/dist/core/transforms/response/ExtractThoughtSignaturesTransform.js +80 -0
  30. package/dist/core/transforms/response/ExtractThoughtSignaturesTransform.js.map +1 -0
  31. package/dist/core/transforms/response/ValidateToolArgumentsTransform.d.ts +9 -0
  32. package/dist/core/transforms/response/ValidateToolArgumentsTransform.js +107 -0
  33. package/dist/core/transforms/response/ValidateToolArgumentsTransform.js.map +1 -0
  34. package/dist/persistence/signatureCache.d.ts +19 -0
  35. package/dist/persistence/signatureCache.js +151 -0
  36. package/dist/persistence/signatureCache.js.map +1 -0
  37. package/dist/server.js +100 -16
  38. package/dist/server.js.map +1 -1
  39. package/dist/services/kimiFixer.js +49 -26
  40. package/dist/services/kimiFixer.js.map +1 -1
  41. package/dist/services/streaming.js +10 -6
  42. package/dist/services/streaming.js.map +1 -1
  43. package/frontend/dist/assets/{JSONViewer-97138fd7.js → JSONViewer-2759ef29.js} +1 -1
  44. package/frontend/dist/assets/index-a3cad95b.js +40 -0
  45. package/frontend/dist/index.html +1 -1
  46. package/package.json +2 -1
  47. package/frontend/dist/assets/index-4b354ce2.js +0 -40
@@ -0,0 +1,151 @@
1
+ import Database from "better-sqlite3";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import os from "node:os";
5
+ import { logger } from "../utils/logger.js";
6
+ export class SignatureCache {
7
+ db;
8
+ memoryCache = new Map();
9
+ dbPath;
10
+ cleanupCounter = 0;
11
+ constructor(cacheDir) {
12
+ // Determine cache directory
13
+ const dir = cacheDir ||
14
+ process.env.CACHE_DIR ||
15
+ path.join(os.homedir(), ".cache", "gemini-proxy");
16
+ // Create directory if it doesn't exist
17
+ if (!fs.existsSync(dir)) {
18
+ fs.mkdirSync(dir, { recursive: true });
19
+ }
20
+ this.dbPath = path.join(dir, "signatures.db");
21
+ this.db = new Database(this.dbPath);
22
+ // Initialize database schema
23
+ this.initSchema();
24
+ // Run periodic cleanup
25
+ this.scheduleCleanup();
26
+ }
27
+ initSchema() {
28
+ this.db.exec(`
29
+ CREATE TABLE IF NOT EXISTS signatures (
30
+ tool_call_id TEXT PRIMARY KEY,
31
+ signature TEXT NOT NULL,
32
+ timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
33
+ );
34
+ CREATE INDEX IF NOT EXISTS idx_signatures_timestamp ON signatures(timestamp);
35
+ `);
36
+ }
37
+ scheduleCleanup() {
38
+ // Run cleanup periodically (every 100 operations)
39
+ setInterval(() => {
40
+ this.cleanup().catch((err) => {
41
+ logger.error({ err }, "Failed to cleanup signature cache");
42
+ });
43
+ }, 60000); // Check every minute
44
+ }
45
+ async store(toolCallId, signature) {
46
+ const cached = {
47
+ tool_call_id: toolCallId,
48
+ signature,
49
+ timestamp: Date.now(),
50
+ };
51
+ // Update memory cache
52
+ this.memoryCache.set(toolCallId, cached);
53
+ // Write to database
54
+ try {
55
+ this.db
56
+ .prepare("INSERT OR REPLACE INTO signatures (tool_call_id, signature, timestamp) VALUES (?, ?, ?)")
57
+ .run(toolCallId, signature, Math.floor(Date.now() / 1000));
58
+ }
59
+ catch (error) {
60
+ logger.error({ err: error, toolCallId }, "Failed to store signature in database");
61
+ }
62
+ this.cleanupCounter++;
63
+ }
64
+ async retrieve(toolCallId) {
65
+ // Check memory cache first (fast path)
66
+ const cached = this.memoryCache.get(toolCallId);
67
+ if (cached) {
68
+ return cached.signature;
69
+ }
70
+ // Fallback to database
71
+ try {
72
+ const row = this.db
73
+ .prepare("SELECT signature FROM signatures WHERE tool_call_id = ?")
74
+ .get(toolCallId);
75
+ if (row) {
76
+ // Update memory cache
77
+ const cached = {
78
+ tool_call_id: toolCallId,
79
+ signature: row.signature,
80
+ timestamp: Date.now(),
81
+ };
82
+ this.memoryCache.set(toolCallId, cached);
83
+ return row.signature;
84
+ }
85
+ }
86
+ catch (error) {
87
+ logger.error({ err: error, toolCallId }, "Failed to retrieve signature from database");
88
+ }
89
+ return null;
90
+ }
91
+ async batchRetrieve(toolCallIds) {
92
+ const result = {};
93
+ // Check memory cache first
94
+ for (const id of toolCallIds) {
95
+ const cached = this.memoryCache.get(id);
96
+ if (cached) {
97
+ result[id] = cached.signature;
98
+ }
99
+ }
100
+ // Get remaining IDs from database
101
+ const remainingIds = toolCallIds.filter((id) => !result[id]);
102
+ if (remainingIds.length === 0) {
103
+ return result;
104
+ }
105
+ try {
106
+ const placeholders = remainingIds.map(() => "?").join(",");
107
+ const rows = this.db
108
+ .prepare(`SELECT tool_call_id, signature FROM signatures WHERE tool_call_id IN (${placeholders})`)
109
+ .all(...remainingIds);
110
+ // Update memory cache and result
111
+ for (const row of rows) {
112
+ result[row.tool_call_id] = row.signature;
113
+ this.memoryCache.set(row.tool_call_id, {
114
+ tool_call_id: row.tool_call_id,
115
+ signature: row.signature,
116
+ timestamp: Date.now(),
117
+ });
118
+ }
119
+ }
120
+ catch (error) {
121
+ logger.error({ err: error, toolCallIds: remainingIds }, "Failed to batch retrieve signatures from database");
122
+ }
123
+ return result;
124
+ }
125
+ async cleanup(daysOld = 30) {
126
+ try {
127
+ const cutoff = Math.floor((Date.now() - daysOld * 24 * 60 * 60 * 1000) / 1000);
128
+ // Delete old signatures
129
+ const info = this.db
130
+ .prepare("DELETE FROM signatures WHERE timestamp < ?")
131
+ .run(cutoff);
132
+ if (info.changes && info.changes > 0) {
133
+ logger.info({ deleted: info.changes }, "Cleaned up old signatures");
134
+ // Clean up memory cache
135
+ const cutoffTime = Date.now() - daysOld * 24 * 60 * 60 * 1000;
136
+ for (const [id, cached] of this.memoryCache.entries()) {
137
+ if (cached.timestamp < cutoffTime) {
138
+ this.memoryCache.delete(id);
139
+ }
140
+ }
141
+ }
142
+ }
143
+ catch (error) {
144
+ logger.error({ err: error }, "Failed to cleanup signatures");
145
+ }
146
+ }
147
+ async close() {
148
+ this.db.close();
149
+ }
150
+ }
151
+ //# sourceMappingURL=signatureCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signatureCache.js","sourceRoot":"","sources":["../../src/persistence/signatureCache.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -15,10 +15,12 @@ import { ConverterRegistry } from "./core/converters/types.js";
15
15
  import { OpenAIChatPassthroughConverter, OpenAIResponsesPassthroughConverter, } from "./core/converters/openaiPassthrough.js";
16
16
  import { AnthropicToOpenAIConverter } from "./core/converters/anthropicToOpenAI.js";
17
17
  import { DisableStreamingTransform } from "./core/transforms/request/DisableStreamingTransform.js";
18
- import { ClampMaxTokensTransform } from "./core/transforms/request/ClampMaxTokensTransform.js";
19
18
  import { EnsureToolCallRequestTransform } from "./core/transforms/request/EnsureToolCallRequestTransform.js";
19
+ import { RestoreThoughtSignaturesTransform } from "./core/transforms/request/RestoreThoughtSignaturesTransform.js";
20
20
  import { KimiResponseTransform } from "./core/transforms/response/KimiResponseTransform.js";
21
21
  import { EnsureToolCallResponseTransform } from "./core/transforms/response/EnsureToolCallResponseTransform.js";
22
+ import { ValidateToolArgumentsTransform } from "./core/transforms/response/ValidateToolArgumentsTransform.js";
23
+ import { ExtractThoughtSignaturesTransform } from "./core/transforms/response/ExtractThoughtSignaturesTransform.js";
22
24
  import { ClientFormat, ProxyOperation, } from "./core/types.js";
23
25
  import { openAIStreamFromResponse, anthropicStreamFromResponse, openAIResponsesStreamFromResponse, } from "./services/streaming.js";
24
26
  import { createRequestId } from "./utils/ids.js";
@@ -27,6 +29,7 @@ import { resolveEnvVarsDeep } from "./utils/envResolver.js";
27
29
  import { ModelRegistry } from "./core/modelRegistry.js";
28
30
  import { createEnsureToolCallState, getEnsureToolCallState, } from "./core/ensureToolCall.js";
29
31
  import { setPipelineMaxAttempts } from "./core/pipelineControl.js";
32
+ import { CleanupExtraPropertiesResponseTransform } from "./core/transforms/response/CleanupExtraPropertiesResponseTransform.js";
30
33
  const TOOL_CALL_ENFORCER_ATTEMPTS = resolveEnsureToolCallAttemptLimit();
31
34
  export async function createServer(config) {
32
35
  const server = Fastify({ logger: false });
@@ -74,12 +77,15 @@ export async function createServer(config) {
74
77
  converterRegistry.register(new AnthropicToOpenAIConverter());
75
78
  const requestTransforms = [
76
79
  new DisableStreamingTransform(),
77
- new ClampMaxTokensTransform(),
78
80
  new EnsureToolCallRequestTransform(),
81
+ new RestoreThoughtSignaturesTransform(),
79
82
  ];
80
83
  const responseTransforms = [
84
+ new CleanupExtraPropertiesResponseTransform(),
81
85
  new KimiResponseTransform(),
82
86
  new EnsureToolCallResponseTransform(),
87
+ new ValidateToolArgumentsTransform(),
88
+ new ExtractThoughtSignaturesTransform(),
83
89
  ];
84
90
  const pipeline = new LLMProxyPipeline({
85
91
  converterRegistry,
@@ -111,6 +117,25 @@ export async function createServer(config) {
111
117
  clientFormat: ClientFormat.OpenAIResponses,
112
118
  });
113
119
  });
120
+ // Profile-based routes with alias support
121
+ server.post("/:profile/v1/chat/completions", async (req, reply) => {
122
+ const body = requestBodyAsObject(req);
123
+ await handleProxyRequest(req, reply, body, pipelineDeps, {
124
+ operation: ProxyOperation.ChatCompletions,
125
+ clientFormat: ClientFormat.OpenAIChatCompletions,
126
+ }, req.params.profile);
127
+ });
128
+ server.post("/:profile/v1/messages", async (req, reply) => {
129
+ const body = requestBodyAsObject(req);
130
+ await handleAnthropicMessages(req, reply, body, pipelineDeps, req.params.profile);
131
+ });
132
+ server.post("/:profile/v1/responses", async (req, reply) => {
133
+ const body = requestBodyAsObject(req);
134
+ await handleProxyRequest(req, reply, body, pipelineDeps, {
135
+ operation: ProxyOperation.Responses,
136
+ clientFormat: ClientFormat.OpenAIResponses,
137
+ }, req.params.profile);
138
+ });
114
139
  server.get("/v1/models", (_req, reply) => {
115
140
  const summaries = modelRegistry.list();
116
141
  const data = summaries.map((summary) => ({
@@ -143,7 +168,7 @@ function requestBodyAsObject(req) {
143
168
  }
144
169
  return body;
145
170
  }
146
- async function handleProxyRequest(req, reply, body, deps, options) {
171
+ async function handleProxyRequest(req, reply, body, deps, options, profile) {
147
172
  const model = body.model;
148
173
  if (!model || typeof model !== "string") {
149
174
  reply.status(400).send({ error: { message: "model is required" } });
@@ -153,14 +178,17 @@ async function handleProxyRequest(req, reply, body, deps, options) {
153
178
  let resolvedModel;
154
179
  let providerConfig;
155
180
  try {
156
- resolvedModel = deps.modelRegistry.resolve(model);
181
+ resolvedModel = deps.modelRegistry.resolve(model, profile);
182
+ if (!resolvedModel) {
183
+ throw new Error(`Model "${model}" resolved to undefined${profile ? ` in profile "${profile}"` : ""}`);
184
+ }
157
185
  provider = deps.providerRegistry.get(resolvedModel.provider);
158
186
  if (resolvedModel.providerConfig) {
159
187
  providerConfig = resolveEnvVarsDeep(resolvedModel.providerConfig);
160
188
  }
161
189
  }
162
190
  catch (error) {
163
- logger.error({ err: error, model }, "Model resolution failed");
191
+ logger.error({ err: error, model, profile }, "Model resolution failed");
164
192
  deps.logStore.append({
165
193
  method: req.method,
166
194
  url: req.url,
@@ -210,10 +238,20 @@ async function handleProxyRequest(req, reply, body, deps, options) {
210
238
  }
211
239
  catch (error) {
212
240
  logger.error({ err: error }, "Pipeline execution failed");
241
+ deps.logStore.append({
242
+ method: req.method,
243
+ url: req.url,
244
+ statusCode: 500,
245
+ model: undefined,
246
+ requestBody: body,
247
+ responseBody: { error: { message: "Internal proxy error" } },
248
+ providerRequestBody: null,
249
+ providerResponseBody: null,
250
+ });
213
251
  reply.status(500).send({ error: { message: "Internal proxy error" } });
214
252
  }
215
253
  }
216
- async function handleAnthropicMessages(req, reply, body, deps) {
254
+ async function handleAnthropicMessages(req, reply, body, deps, profile) {
217
255
  const model = body.model;
218
256
  if (!model || typeof model !== "string") {
219
257
  reply.status(400).send({ error: { message: "model is required" } });
@@ -223,14 +261,17 @@ async function handleAnthropicMessages(req, reply, body, deps) {
223
261
  let resolvedModel;
224
262
  let providerConfig;
225
263
  try {
226
- resolvedModel = deps.modelRegistry.resolve(model);
264
+ resolvedModel = deps.modelRegistry.resolve(model, profile);
265
+ if (!resolvedModel) {
266
+ throw new Error(`Model "${model}" resolved to undefined${profile ? ` in profile "${profile}"` : ""}`);
267
+ }
227
268
  provider = deps.providerRegistry.get(resolvedModel.provider);
228
269
  if (resolvedModel.providerConfig) {
229
270
  providerConfig = resolveEnvVarsDeep(resolvedModel.providerConfig);
230
271
  }
231
272
  }
232
273
  catch (error) {
233
- logger.error({ err: error, model }, "Model resolution failed");
274
+ logger.error({ err: error, model, profile }, "Model resolution failed");
234
275
  deps.logStore.append({
235
276
  method: req.method,
236
277
  url: req.url,
@@ -280,6 +321,16 @@ async function handleAnthropicMessages(req, reply, body, deps) {
280
321
  }
281
322
  catch (error) {
282
323
  logger.error({ err: error }, "Anthropic messages handling failed");
324
+ deps.logStore.append({
325
+ method: req.method,
326
+ url: req.url,
327
+ statusCode: 500,
328
+ model: undefined,
329
+ requestBody: body,
330
+ responseBody: { error: { message: "Internal proxy error" } },
331
+ providerRequestBody: null,
332
+ providerResponseBody: null,
333
+ });
283
334
  reply.status(500).send({ error: { message: "Internal proxy error" } });
284
335
  }
285
336
  }
@@ -313,10 +364,26 @@ async function sendResponse(reply, request, payload, streamingOptions) {
313
364
  return;
314
365
  }
315
366
  if (request.clientFormat === ClientFormat.AnthropicMessages) {
316
- reply.header("Content-Type", "text/event-stream");
317
- reply.header("Cache-Control", "no-cache");
318
- reply.header("Connection", "keep-alive");
319
- reply.send(anthropicStreamFromResponse(payload, streamingOptions));
367
+ // Using reply.hijack() to bypass Fastify's default response handling which
368
+ // incorrectly sets Content-Length: 0 for streaming responses in some environments.
369
+ // This allows us to pipe the stream directly to the raw socket.
370
+ reply.hijack();
371
+ reply.raw.setHeader("Content-Type", "text/event-stream");
372
+ reply.raw.setHeader("Cache-Control", "no-cache");
373
+ reply.raw.setHeader("Connection", "keep-alive");
374
+ reply.removeHeader("Content-Length");
375
+ const stream = anthropicStreamFromResponse(payload, streamingOptions);
376
+ try {
377
+ await pipeline(stream, reply.raw);
378
+ }
379
+ catch (error) {
380
+ if (isPrematureCloseError(error)) {
381
+ logger.debug({ err: error }, "Client disconnected before streaming completed");
382
+ }
383
+ else {
384
+ throw error;
385
+ }
386
+ }
320
387
  return;
321
388
  }
322
389
  if (request.clientFormat === ClientFormat.OpenAIResponses) {
@@ -342,10 +409,27 @@ async function sendResponse(reply, request, payload, streamingOptions) {
342
409
  }
343
410
  return;
344
411
  }
345
- reply.header("Content-Type", "text/event-stream");
346
- reply.header("Cache-Control", "no-cache");
347
- reply.header("Connection", "keep-alive");
348
- reply.send(openAIStreamFromResponse(payload, streamingOptions));
412
+ // OpenAI Chat Completions format
413
+ // Using reply.hijack() to bypass Fastify's default response handling which
414
+ // incorrectly sets Content-Length: 0 for streaming responses in some environments.
415
+ // This allows us to pipe the stream directly to the raw socket.
416
+ reply.hijack();
417
+ reply.raw.setHeader("Content-Type", "text/event-stream");
418
+ reply.raw.setHeader("Cache-Control", "no-cache");
419
+ reply.raw.setHeader("Connection", "keep-alive");
420
+ reply.removeHeader("Content-Length");
421
+ const stream = openAIStreamFromResponse(payload, streamingOptions);
422
+ try {
423
+ await pipeline(stream, reply.raw);
424
+ }
425
+ catch (error) {
426
+ if (isPrematureCloseError(error)) {
427
+ logger.debug({ err: error }, "Client disconnected before streaming completed");
428
+ }
429
+ else {
430
+ throw error;
431
+ }
432
+ }
349
433
  }
350
434
  function normalizeHeaders(headers) {
351
435
  const normalized = {};
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,35 @@ import { logger } from "../utils/logger.js";
2
2
  const TOOL_BLOCK_RE = /<\|tool_call_begin\|>\s*(?<name>[^\s]+)\s*<\|tool_call_argument_begin\|>\s*(?<args>.*?)\s*<\|tool_call_end\|>/gs;
3
3
  const TOOL_SECTION_BEGIN = "<|tool_calls_section_begin|>";
4
4
  const TOOL_SECTION_END = "<|tool_calls_section_end|>";
5
- function cleanThinkingTags(text) {
6
- if (!text) {
5
+ function cleanText(text) {
6
+ if (!text)
7
7
  return "";
8
+ return text
9
+ .replaceAll("(no content)", "")
10
+ .replace(/\n\s*\n\s*\n+/g, "\n\n")
11
+ .trim();
12
+ }
13
+ function cleanThinking(text, extract = false) {
14
+ if (!text)
15
+ return { cleaned: "", extractedThinking: "" };
16
+ text = cleanText(text);
17
+ if (!extract) {
18
+ // For reasoning content: keep inner text in place
19
+ const tags = /<\/?think(?:ing)?\s*>/gi;
20
+ const cleaned = text.replace(tags, "");
21
+ return { cleaned, extractedThinking: "" };
8
22
  }
9
- let cleaned = text.replaceAll("(no content)", "");
10
- cleaned = cleaned.replace(/<thinking\s*>(.*?)<\/thinking\s*>/gis, (_, inner) => inner);
11
- cleaned = cleaned.replace(/<think\s*>(.*?)<\/think\s*>/gis, (_, inner) => inner);
12
- cleaned = cleaned.replace(/<\/think(?:ing)?\s*>/gi, "");
13
- cleaned = cleaned.replace(/<think(?:ing)?\s*>/gi, "");
14
- cleaned = cleaned.replace(/\n\s*\n\s*\n+/g, "\n\n");
15
- return cleaned.trim();
23
+ // For message content: extract inner thinking
24
+ // For extraction, match only self-closing tags, not orphaned ones
25
+ const balanced = /<(think|thinking)\s*>(.*?)<\/\1\s*>\s*|/gis;
26
+ const unBalanced = /<(think|thinking)\s*>(.*?)|(.*?)<\/(think|thinking)\s*>\s*|/gis;
27
+ const matches = [...text.matchAll(balanced), ...text.matchAll(unBalanced)];
28
+ const extractedThinking = matches
29
+ .map((m) => (m[2] || "").trim())
30
+ .join("\n\n")
31
+ .trim();
32
+ const cleaned = text.replace(balanced, "").replace(unBalanced, "");
33
+ return { cleaned, extractedThinking };
16
34
  }
17
35
  function isJsonObject(value) {
18
36
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -37,14 +55,7 @@ function parseToolCalls(section) {
37
55
  callId = idPart;
38
56
  }
39
57
  }
40
- let argumentsJson = argsStr;
41
- try {
42
- JSON.parse(argsStr);
43
- }
44
- catch (error) {
45
- logger.warn({ err: error }, "Invalid JSON detected in tool arguments");
46
- argumentsJson = JSON.stringify({ raw: argsStr });
47
- }
58
+ const argumentsJson = argsStr;
48
59
  toolCalls.push({
49
60
  id: callId,
50
61
  type: "function",
@@ -83,7 +94,7 @@ export function fixKimiResponse(response) {
83
94
  if (typeof message.reasoning_content === "string") {
84
95
  const original = message.reasoning_content;
85
96
  const { cleanedText, extracted } = extractToolCallSections(original);
86
- const cleanedReasoning = cleanThinkingTags(cleanedText);
97
+ const cleanedReasoning = cleanThinking(cleanedText, false).cleaned;
87
98
  if (cleanedReasoning !== original) {
88
99
  console.log("[KimiFixer] Cleaned reasoning content (thinking tags).");
89
100
  metadata.cleanedReasoningContent = true;
@@ -99,12 +110,30 @@ export function fixKimiResponse(response) {
99
110
  if (typeof message.content === "string") {
100
111
  const original = message.content;
101
112
  const { cleanedText, extracted } = extractToolCallSections(original);
102
- const normalizedContent = normalizeContentText(cleanedText);
113
+ // Extract thinking tags from content and move to reasoning_content
114
+ // Handle multiple formats:
115
+ // 1. <thinking>thinking content</thinking> actual content
116
+ // 2. thinking content</think> actual content
117
+ // 3. thinking content... actual content (self-closing or incomplete tag)
118
+ const { cleaned, extractedThinking } = cleanThinking(cleanedText, true);
119
+ const normalizedContent = cleaned;
120
+ const thinkingContent = extractedThinking;
103
121
  if (normalizedContent !== original) {
104
- console.log("[KimiFixer] Cleaned message content (text normalization).");
122
+ console.log("[KimiFixer] Cleaned message content (thinking tags and normalization).");
105
123
  metadata.cleanedMessageContent = true;
106
124
  message.content = normalizedContent;
107
125
  }
126
+ if (thinkingContent) {
127
+ // Add extracted thinking content to reasoning_content
128
+ const existingReasoning = typeof message.reasoning_content === "string"
129
+ ? message.reasoning_content
130
+ : "";
131
+ message.reasoning_content = existingReasoning
132
+ ? `${existingReasoning}\n\n${thinkingContent}`
133
+ : thinkingContent;
134
+ console.log("[KimiFixer] Extracted thinking content from message.content to reasoning_content.");
135
+ metadata.extractedFromContent += 1;
136
+ }
108
137
  if (extracted.length) {
109
138
  console.log(`[KimiFixer] Extracted ${extracted.length} tool calls from message content.`);
110
139
  aggregatedToolCalls = aggregatedToolCalls.concat(extracted);
@@ -151,10 +180,4 @@ function extractToolCallSections(text) {
151
180
  }
152
181
  return { cleanedText: remaining.trim(), extracted };
153
182
  }
154
- function normalizeContentText(text) {
155
- if (!text) {
156
- return "";
157
- }
158
- return text.replaceAll("(no content)", "").trim();
159
- }
160
183
  //# sourceMappingURL=kimiFixer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kimiFixer.js","sourceRoot":"","sources":["../../src/services/kimiFixer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kimiFixer.js","sourceRoot":"","sources":["../../src/services/kimiFixer.ts"],"names":[],"mappings":"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"}
@@ -81,7 +81,9 @@ export function openAIStreamFromResponse(response, options) {
81
81
  }
82
82
  }
83
83
  if (content) {
84
- for (const textChunk of chunkString(content, options.chunkSize)) {
84
+ const contentChunks = chunkString(content, options.chunkSize);
85
+ for (let i = 0; i < contentChunks.length; i++) {
86
+ const textChunk = contentChunks[i];
85
87
  stream.write(`data: ${JSON.stringify({
86
88
  ...baseChunk,
87
89
  choices: [
@@ -143,18 +145,20 @@ export function openAIStreamFromResponse(response, options) {
143
145
  }
144
146
  }
145
147
  }
146
- stream.write(`data: ${JSON.stringify({
148
+ const finalFinishReason = typeof choice?.finish_reason === "string"
149
+ ? choice.finish_reason
150
+ : "stop";
151
+ const finalChunk = {
147
152
  ...baseChunk,
148
153
  choices: [
149
154
  {
150
155
  index: 0,
151
156
  delta: {},
152
- finish_reason: typeof choice?.finish_reason === "string"
153
- ? choice.finish_reason
154
- : "stop",
157
+ finish_reason: finalFinishReason,
155
158
  },
156
159
  ],
157
- })}\n\n`);
160
+ };
161
+ stream.write(`data: ${JSON.stringify(finalChunk)}\n\n`);
158
162
  stream.write("data: [DONE]\n\n");
159
163
  }
160
164
  catch (error) {