kimi-proxy 0.0.1

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 (91) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +177 -0
  3. package/dist/adapters/anthropicAdapter.d.ts +138 -0
  4. package/dist/adapters/anthropicAdapter.js +184 -0
  5. package/dist/adapters/anthropicAdapter.js.map +1 -0
  6. package/dist/config.d.ts +27 -0
  7. package/dist/config.js +228 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/core/converters/anthropicToOpenAI.d.ts +11 -0
  10. package/dist/core/converters/anthropicToOpenAI.js +18 -0
  11. package/dist/core/converters/anthropicToOpenAI.js.map +1 -0
  12. package/dist/core/converters/openaiPassthrough.d.ts +18 -0
  13. package/dist/core/converters/openaiPassthrough.js +794 -0
  14. package/dist/core/converters/openaiPassthrough.js.map +1 -0
  15. package/dist/core/converters/types.d.ts +14 -0
  16. package/dist/core/converters/types.js +16 -0
  17. package/dist/core/converters/types.js.map +1 -0
  18. package/dist/core/ensureToolCall.d.ts +24 -0
  19. package/dist/core/ensureToolCall.js +93 -0
  20. package/dist/core/ensureToolCall.js.map +1 -0
  21. package/dist/core/modelRegistry.d.ts +46 -0
  22. package/dist/core/modelRegistry.js +92 -0
  23. package/dist/core/modelRegistry.js.map +1 -0
  24. package/dist/core/pipeline.d.ts +17 -0
  25. package/dist/core/pipeline.js +109 -0
  26. package/dist/core/pipeline.js.map +1 -0
  27. package/dist/core/pipelineControl.d.ts +12 -0
  28. package/dist/core/pipelineControl.js +51 -0
  29. package/dist/core/pipelineControl.js.map +1 -0
  30. package/dist/core/providers/openRouterProvider.d.ts +52 -0
  31. package/dist/core/providers/openRouterProvider.js +158 -0
  32. package/dist/core/providers/openRouterProvider.js.map +1 -0
  33. package/dist/core/providers/openaiProvider.d.ts +22 -0
  34. package/dist/core/providers/openaiProvider.js +79 -0
  35. package/dist/core/providers/openaiProvider.js.map +1 -0
  36. package/dist/core/providers/types.d.ts +24 -0
  37. package/dist/core/providers/types.js +14 -0
  38. package/dist/core/providers/types.js.map +1 -0
  39. package/dist/core/providers/vertexProvider.d.ts +37 -0
  40. package/dist/core/providers/vertexProvider.js +167 -0
  41. package/dist/core/providers/vertexProvider.js.map +1 -0
  42. package/dist/core/syntheticResponse.d.ts +6 -0
  43. package/dist/core/syntheticResponse.js +36 -0
  44. package/dist/core/syntheticResponse.js.map +1 -0
  45. package/dist/core/transforms/request/ClampMaxTokensTransform.d.ts +7 -0
  46. package/dist/core/transforms/request/ClampMaxTokensTransform.js +29 -0
  47. package/dist/core/transforms/request/ClampMaxTokensTransform.js.map +1 -0
  48. package/dist/core/transforms/request/DisableStreamingTransform.d.ts +7 -0
  49. package/dist/core/transforms/request/DisableStreamingTransform.js +15 -0
  50. package/dist/core/transforms/request/DisableStreamingTransform.js.map +1 -0
  51. package/dist/core/transforms/request/EnsureToolCallRequestTransform.d.ts +12 -0
  52. package/dist/core/transforms/request/EnsureToolCallRequestTransform.js +120 -0
  53. package/dist/core/transforms/request/EnsureToolCallRequestTransform.js.map +1 -0
  54. package/dist/core/transforms/response/EnsureToolCallResponseTransform.d.ts +9 -0
  55. package/dist/core/transforms/response/EnsureToolCallResponseTransform.js +223 -0
  56. package/dist/core/transforms/response/EnsureToolCallResponseTransform.js.map +1 -0
  57. package/dist/core/transforms/response/KimiResponseTransform.d.ts +7 -0
  58. package/dist/core/transforms/response/KimiResponseTransform.js +32 -0
  59. package/dist/core/transforms/response/KimiResponseTransform.js.map +1 -0
  60. package/dist/core/types.d.ts +80 -0
  61. package/dist/core/types.js +18 -0
  62. package/dist/core/types.js.map +1 -0
  63. package/dist/index.d.ts +1 -0
  64. package/dist/index.js +17 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/persistence/logStore.d.ts +43 -0
  67. package/dist/persistence/logStore.js +115 -0
  68. package/dist/persistence/logStore.js.map +1 -0
  69. package/dist/server.d.ts +3 -0
  70. package/dist/server.js +385 -0
  71. package/dist/server.js.map +1 -0
  72. package/dist/services/kimiFixer.d.ts +13 -0
  73. package/dist/services/kimiFixer.js +160 -0
  74. package/dist/services/kimiFixer.js.map +1 -0
  75. package/dist/services/streaming.d.ts +9 -0
  76. package/dist/services/streaming.js +513 -0
  77. package/dist/services/streaming.js.map +1 -0
  78. package/dist/utils/envResolver.d.ts +26 -0
  79. package/dist/utils/envResolver.js +64 -0
  80. package/dist/utils/envResolver.js.map +1 -0
  81. package/dist/utils/ids.d.ts +1 -0
  82. package/dist/utils/ids.js +7 -0
  83. package/dist/utils/ids.js.map +1 -0
  84. package/dist/utils/logger.d.ts +3 -0
  85. package/dist/utils/logger.js +12 -0
  86. package/dist/utils/logger.js.map +1 -0
  87. package/frontend/dist/assets/JSONViewer-97138fd7.js +3 -0
  88. package/frontend/dist/assets/index-0e7c091b.css +1 -0
  89. package/frontend/dist/assets/index-4b354ce2.js +40 -0
  90. package/frontend/dist/index.html +22 -0
  91. package/package.json +60 -0
@@ -0,0 +1,513 @@
1
+ import { Readable, PassThrough } from "node:stream";
2
+ function wait(ms) {
3
+ return new Promise((resolve) => setTimeout(resolve, ms));
4
+ }
5
+ function extractTextContent(value) {
6
+ if (value === undefined || value === null) {
7
+ return "";
8
+ }
9
+ if (typeof value === "string") {
10
+ return value;
11
+ }
12
+ if (Array.isArray(value)) {
13
+ return value.map((part) => extractTextContent(part)).join("");
14
+ }
15
+ if (isJsonObject(value)) {
16
+ if ("text" in value) {
17
+ return extractTextContent(value.text);
18
+ }
19
+ if ("content" in value) {
20
+ return extractTextContent(value.content);
21
+ }
22
+ }
23
+ return "";
24
+ }
25
+ function chunkString(input, chunkSize) {
26
+ const chunks = [];
27
+ for (let i = 0; i < input.length; i += chunkSize) {
28
+ chunks.push(input.slice(i, i + chunkSize));
29
+ }
30
+ return chunks.length ? chunks : [""];
31
+ }
32
+ export function openAIStreamFromResponse(response, options) {
33
+ const stream = new PassThrough();
34
+ (async () => {
35
+ try {
36
+ const model = response.model ?? "unknown-model";
37
+ const respId = response.id ?? "unknown";
38
+ const created = response.created ?? Math.floor(Date.now() / 1000);
39
+ const choices = Array.isArray(response.choices)
40
+ ? response.choices.filter((entry) => isJsonObject(entry))
41
+ : [];
42
+ const [choice] = choices;
43
+ const message = isJsonObject(choice?.message) ? choice.message : {};
44
+ const content = extractTextContent(message.content);
45
+ const reasoning = extractTextContent(message.reasoning_content);
46
+ const toolCalls = Array.isArray(message.tool_calls)
47
+ ? message.tool_calls.filter((entry) => isJsonObject(entry))
48
+ : [];
49
+ const baseChunk = {
50
+ id: respId,
51
+ object: "chat.completion.chunk",
52
+ created,
53
+ model,
54
+ choices: [
55
+ {
56
+ index: 0,
57
+ delta: {},
58
+ finish_reason: null,
59
+ },
60
+ ],
61
+ };
62
+ stream.write(`data: ${JSON.stringify({
63
+ ...baseChunk,
64
+ choices: [
65
+ { index: 0, delta: { role: "assistant" }, finish_reason: null },
66
+ ],
67
+ })}\n\n`);
68
+ if (reasoning) {
69
+ for (const textChunk of chunkString(reasoning, options.chunkSize)) {
70
+ stream.write(`data: ${JSON.stringify({
71
+ ...baseChunk,
72
+ choices: [
73
+ {
74
+ index: 0,
75
+ delta: { reasoning_content: textChunk },
76
+ finish_reason: null,
77
+ },
78
+ ],
79
+ })}\n\n`);
80
+ await wait(options.delay);
81
+ }
82
+ }
83
+ if (content) {
84
+ for (const textChunk of chunkString(content, options.chunkSize)) {
85
+ stream.write(`data: ${JSON.stringify({
86
+ ...baseChunk,
87
+ choices: [
88
+ {
89
+ index: 0,
90
+ delta: { content: textChunk },
91
+ finish_reason: null,
92
+ },
93
+ ],
94
+ })}\n\n`);
95
+ await wait(options.delay);
96
+ }
97
+ }
98
+ if (toolCalls.length) {
99
+ for (const [index, toolCall] of toolCalls.entries()) {
100
+ const fn = isJsonObject(toolCall.function) ? toolCall.function : {};
101
+ stream.write(`data: ${JSON.stringify({
102
+ ...baseChunk,
103
+ choices: [
104
+ {
105
+ index: 0,
106
+ delta: {
107
+ tool_calls: [
108
+ {
109
+ index,
110
+ id: toolCall.id,
111
+ type: toolCall.type,
112
+ function: {
113
+ name: typeof fn.name === "string" ? fn.name : undefined,
114
+ arguments: "",
115
+ },
116
+ },
117
+ ],
118
+ },
119
+ finish_reason: null,
120
+ },
121
+ ],
122
+ })}\n\n`);
123
+ const args = typeof fn.arguments === "string" ? fn.arguments : "";
124
+ for (const argChunk of chunkString(args, options.chunkSize)) {
125
+ stream.write(`data: ${JSON.stringify({
126
+ ...baseChunk,
127
+ choices: [
128
+ {
129
+ index: 0,
130
+ delta: {
131
+ tool_calls: [
132
+ {
133
+ index,
134
+ function: { arguments: argChunk },
135
+ },
136
+ ],
137
+ },
138
+ finish_reason: null,
139
+ },
140
+ ],
141
+ })}\n\n`);
142
+ await wait(options.delay);
143
+ }
144
+ }
145
+ }
146
+ stream.write(`data: ${JSON.stringify({
147
+ ...baseChunk,
148
+ choices: [
149
+ {
150
+ index: 0,
151
+ delta: {},
152
+ finish_reason: typeof choice?.finish_reason === "string"
153
+ ? choice.finish_reason
154
+ : "stop",
155
+ },
156
+ ],
157
+ })}\n\n`);
158
+ stream.write("data: [DONE]\n\n");
159
+ }
160
+ catch (error) {
161
+ console.error("Stream error:", error);
162
+ }
163
+ finally {
164
+ stream.end();
165
+ }
166
+ })();
167
+ return stream;
168
+ }
169
+ export function anthropicStreamFromResponse(response, options) {
170
+ const stream = new PassThrough();
171
+ (async () => {
172
+ try {
173
+ const msgId = response.id ?? "msg_unknown";
174
+ const model = response.model ?? "unknown-model";
175
+ const role = response.role ?? "assistant";
176
+ const contentBlocks = Array.isArray(response.content)
177
+ ? response.content.filter((entry) => isJsonObject(entry))
178
+ : [];
179
+ const usage = isJsonObject(response.usage)
180
+ ? response.usage
181
+ : { input_tokens: 0, output_tokens: 0 };
182
+ const messageStart = {
183
+ type: "message_start",
184
+ message: {
185
+ id: msgId,
186
+ type: "message",
187
+ role,
188
+ model,
189
+ content: [],
190
+ stop_reason: null,
191
+ stop_sequence: null,
192
+ usage: {
193
+ input_tokens: usage.input_tokens ?? 0,
194
+ output_tokens: 0,
195
+ },
196
+ },
197
+ };
198
+ stream.write(`event: message_start\ndata: ${JSON.stringify(messageStart)}\n\n`);
199
+ for (const [index, block] of contentBlocks.entries()) {
200
+ if (block.type === "text") {
201
+ stream.write(`event: content_block_start\ndata: ${JSON.stringify({
202
+ type: "content_block_start",
203
+ index,
204
+ content_block: { type: "text", text: "" },
205
+ })}\n\n`);
206
+ for (const chunk of chunkString(typeof block.text === "string" ? block.text : "", options.chunkSize)) {
207
+ stream.write(`event: content_block_delta\ndata: ${JSON.stringify({
208
+ type: "content_block_delta",
209
+ index,
210
+ delta: { type: "text_delta", text: chunk },
211
+ })}\n\n`);
212
+ await wait(options.delay);
213
+ }
214
+ stream.write(`event: content_block_stop\ndata: ${JSON.stringify({ type: "content_block_stop", index })}\n\n`);
215
+ }
216
+ else if (block.type === "thinking") {
217
+ stream.write(`event: content_block_start\ndata: ${JSON.stringify({
218
+ type: "content_block_start",
219
+ index,
220
+ content_block: {
221
+ type: "thinking",
222
+ thinking: "",
223
+ signature: typeof block.signature === "string"
224
+ ? block.signature
225
+ : undefined,
226
+ },
227
+ })}\n\n`);
228
+ for (const chunk of chunkString(typeof block.thinking === "string" ? block.thinking : "", options.chunkSize)) {
229
+ stream.write(`event: content_block_delta\ndata: ${JSON.stringify({
230
+ type: "content_block_delta",
231
+ index,
232
+ delta: { type: "thinking_delta", thinking: chunk },
233
+ })}\n\n`);
234
+ await wait(options.delay);
235
+ }
236
+ stream.write(`event: content_block_stop\ndata: ${JSON.stringify({ type: "content_block_stop", index })}\n\n`);
237
+ }
238
+ else if (block.type === "tool_use") {
239
+ stream.write(`event: content_block_start\ndata: ${JSON.stringify({
240
+ type: "content_block_start",
241
+ index,
242
+ content_block: {
243
+ type: "tool_use",
244
+ id: typeof block.id === "string" ? block.id : undefined,
245
+ name: typeof block.name === "string" ? block.name : undefined,
246
+ input: {},
247
+ },
248
+ })}\n\n`);
249
+ const inputPayload = isJsonObject(block.input) ? block.input : {};
250
+ const inputJson = JSON.stringify(inputPayload);
251
+ for (const chunk of chunkString(inputJson, options.chunkSize)) {
252
+ stream.write(`event: content_block_delta\ndata: ${JSON.stringify({
253
+ type: "content_block_delta",
254
+ index,
255
+ delta: { type: "input_json_delta", partial_json: chunk },
256
+ })}\n\n`);
257
+ await wait(options.delay);
258
+ }
259
+ stream.write(`event: content_block_stop\ndata: ${JSON.stringify({ type: "content_block_stop", index })}\n\n`);
260
+ }
261
+ }
262
+ stream.write(`event: message_delta\ndata: ${JSON.stringify({
263
+ type: "message_delta",
264
+ delta: {
265
+ stop_reason: response.stop_reason,
266
+ stop_sequence: response.stop_sequence,
267
+ },
268
+ usage: { output_tokens: usage.output_tokens ?? 0 },
269
+ })}\n\n`);
270
+ stream.write('event: message_stop\ndata: {"type":"message_stop"}\n\n');
271
+ }
272
+ catch (e) {
273
+ console.error("Stream error:", e);
274
+ }
275
+ finally {
276
+ stream.end();
277
+ }
278
+ })();
279
+ return stream;
280
+ }
281
+ async function* openAIResponsesGenerator(response, options) {
282
+ try {
283
+ const normalized = normalizeResponseForStreaming(response);
284
+ let sequence = 0;
285
+ const emit = (eventType, payload) => `event: ${eventType}\ndata: ${JSON.stringify({
286
+ type: eventType,
287
+ sequence_number: ++sequence,
288
+ ...payload,
289
+ })}\n\n`;
290
+ yield emit("response.created", { response: normalized.startResponse });
291
+ yield emit("response.in_progress", { response: normalized.startResponse });
292
+ const outputs = normalized.finalResponse.output;
293
+ for (const [outputIndex, outputItem] of outputs.entries()) {
294
+ const itemStart = createOutputItemStart(outputItem);
295
+ yield emit("response.output_item.added", {
296
+ output_index: outputIndex,
297
+ item: itemStart,
298
+ });
299
+ if (outputItem.type === "function_call") {
300
+ const args = typeof outputItem.arguments === "string"
301
+ ? outputItem.arguments
302
+ : JSON.stringify(outputItem.arguments ?? "");
303
+ for (const chunk of chunkString(args, options.chunkSize)) {
304
+ yield emit("response.function_call_arguments.delta", {
305
+ item_id: outputItem.id,
306
+ output_index: outputIndex,
307
+ name: outputItem.name,
308
+ delta: chunk,
309
+ });
310
+ await wait(options.delay);
311
+ }
312
+ yield emit("response.function_call_arguments.done", {
313
+ item_id: outputItem.id,
314
+ output_index: outputIndex,
315
+ name: outputItem.name,
316
+ arguments: args,
317
+ });
318
+ }
319
+ else {
320
+ const content = Array.isArray(outputItem.content)
321
+ ? outputItem.content
322
+ : [];
323
+ for (const [contentIndex, part] of content.entries()) {
324
+ const baseEvent = {
325
+ item_id: outputItem.id,
326
+ output_index: outputIndex,
327
+ content_index: contentIndex,
328
+ };
329
+ yield emit("response.content_part.added", {
330
+ ...baseEvent,
331
+ part: createContentPartPlaceholder(part),
332
+ });
333
+ const textMeta = resolveTextStreamingMeta(part);
334
+ if (textMeta) {
335
+ for (const chunk of chunkString(textMeta.text, options.chunkSize)) {
336
+ yield emit(textMeta.deltaEvent, {
337
+ ...baseEvent,
338
+ delta: chunk,
339
+ });
340
+ await wait(options.delay);
341
+ }
342
+ yield emit(textMeta.doneEvent, {
343
+ ...baseEvent,
344
+ text: textMeta.text,
345
+ });
346
+ }
347
+ yield emit("response.content_part.done", {
348
+ ...baseEvent,
349
+ part,
350
+ });
351
+ }
352
+ }
353
+ yield emit("response.output_item.done", {
354
+ output_index: outputIndex,
355
+ item: outputItem,
356
+ });
357
+ }
358
+ yield emit("response.completed", {
359
+ response: normalized.finalResponse,
360
+ });
361
+ yield "data: [DONE]\n\n";
362
+ }
363
+ catch (e) {
364
+ console.error("Generator error:", e);
365
+ yield `data: {"error": "${e.message}"}\n\n`;
366
+ }
367
+ }
368
+ function normalizeResponseForStreaming(response) {
369
+ const id = response?.id ?? `resp_${Date.now()}`;
370
+ const created = response?.created ?? Math.floor(Date.now() / 1000);
371
+ const model = response?.model ?? "unknown-model";
372
+ const status = response?.status ?? "completed";
373
+ const output = Array.isArray(response?.output) ? response.output : [];
374
+ const normalizedOutput = normalizeOutputItems(output);
375
+ const finalResponse = {
376
+ ...response,
377
+ id,
378
+ object: response?.object ?? "response",
379
+ created,
380
+ model,
381
+ status,
382
+ output: normalizedOutput,
383
+ usage: response?.usage ?? null,
384
+ };
385
+ const startResponse = {
386
+ ...finalResponse,
387
+ status: "in_progress",
388
+ output: [],
389
+ usage: null,
390
+ };
391
+ return { finalResponse, startResponse };
392
+ }
393
+ function normalizeOutputItems(items) {
394
+ return items.map((item, index) => {
395
+ if (!isJsonObject(item)) {
396
+ return {
397
+ id: `output_${index}`,
398
+ object: "message",
399
+ type: "message",
400
+ role: "assistant",
401
+ content: [{ type: "output_text", text: String(item ?? "") }],
402
+ };
403
+ }
404
+ const normalized = { ...item };
405
+ if (item.type === "reasoning") {
406
+ const summary = Array.isArray(item.summary)
407
+ ? item.summary
408
+ : item.summary
409
+ ? [{ type: "summary_text", text: String(item.summary) }]
410
+ : [];
411
+ const content = Array.isArray(item.content)
412
+ ? item.content
413
+ : [{ type: "reasoning_text", text: "" }];
414
+ normalized.summary = summary;
415
+ normalized.content = content;
416
+ return normalized;
417
+ }
418
+ if (item.type === "function_call") {
419
+ const callId = (typeof item.call_id === "string" && item.call_id) ||
420
+ (typeof item.id === "string" && item.id) ||
421
+ `resp_tool_call_${index}_${Math.random().toString(16).slice(2)}`;
422
+ normalized.call_id = callId;
423
+ return normalized;
424
+ }
425
+ if (!Array.isArray(item.content)) {
426
+ normalized.content = [];
427
+ }
428
+ return normalized;
429
+ });
430
+ }
431
+ function createOutputItemStart(outputItem) {
432
+ const base = {
433
+ id: outputItem.id,
434
+ object: outputItem.object ?? outputItem.type,
435
+ type: outputItem.type,
436
+ status: "in_progress",
437
+ };
438
+ if (outputItem.type === "function_call") {
439
+ base.name = outputItem.name;
440
+ base.arguments = "";
441
+ if (outputItem.call_id) {
442
+ base.call_id = outputItem.call_id;
443
+ }
444
+ return base;
445
+ }
446
+ if (outputItem.type === "reasoning") {
447
+ base.content = [];
448
+ base.summary = Array.isArray(outputItem.summary) ? outputItem.summary : [];
449
+ return base;
450
+ }
451
+ base.role = outputItem.role ?? "assistant";
452
+ base.content = [];
453
+ return base;
454
+ }
455
+ function createContentPartPlaceholder(part) {
456
+ if (!part || typeof part !== "object") {
457
+ return { type: "output_text", text: "" };
458
+ }
459
+ if (!isJsonObject(part)) {
460
+ return { type: "output_text", text: "" };
461
+ }
462
+ if (part.type === "output_text") {
463
+ return {
464
+ type: "output_text",
465
+ text: "",
466
+ annotations: Array.isArray(part.annotations) ? part.annotations : [],
467
+ };
468
+ }
469
+ if (part.type === "reasoning_text") {
470
+ const placeholder = {
471
+ type: "reasoning_text",
472
+ text: "",
473
+ };
474
+ if (part.signature) {
475
+ placeholder.signature = part.signature;
476
+ }
477
+ return placeholder;
478
+ }
479
+ return { ...part };
480
+ }
481
+ function resolveTextStreamingMeta(part) {
482
+ if (!isJsonObject(part)) {
483
+ return null;
484
+ }
485
+ if (part.type === "output_text") {
486
+ const text = typeof part.text === "string" ? part.text : "";
487
+ return {
488
+ text,
489
+ deltaEvent: "response.output_text.delta",
490
+ doneEvent: "response.output_text.done",
491
+ };
492
+ }
493
+ if (part.type === "reasoning_text") {
494
+ const text = typeof part.text === "string" ? part.text : "";
495
+ return {
496
+ text,
497
+ deltaEvent: "response.reasoning_text.delta",
498
+ doneEvent: "response.reasoning_text.done",
499
+ };
500
+ }
501
+ return null;
502
+ }
503
+ export function openAIResponsesStreamFromResponse(response, options) {
504
+ const stream = new PassThrough();
505
+ Readable.from(openAIResponsesGenerator(response, options), {
506
+ objectMode: false,
507
+ }).pipe(stream);
508
+ return stream;
509
+ }
510
+ function isJsonObject(value) {
511
+ return typeof value === "object" && value !== null && !Array.isArray(value);
512
+ }
513
+ //# sourceMappingURL=streaming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/services/streaming.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Resolves environment variable references in a value.
3
+ * Supports:
4
+ * - Simple reference: "$VAR_NAME" -> value of VAR_NAME
5
+ * - Prefix reference: "$VAR_NAME/suffix" -> "value/suffix"
6
+ * - No reference: "value" -> "value"
7
+ *
8
+ * @param value The value to resolve
9
+ * @returns The resolved value
10
+ */
11
+ export declare function resolveEnvVar(value: unknown): unknown;
12
+ /**
13
+ * Recursively resolves environment variable references in an object.
14
+ * Handles nested objects and arrays.
15
+ *
16
+ * @param obj The object to resolve
17
+ * @returns A new object with environment variables resolved
18
+ */
19
+ export declare function resolveEnvVarsDeep(obj: unknown): unknown;
20
+ /**
21
+ * Checks if a value contains an environment variable reference.
22
+ *
23
+ * @param value The value to check
24
+ * @returns True if the value contains an environment variable reference
25
+ */
26
+ export declare function hasEnvVarReference(value: unknown): boolean;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Resolves environment variable references in a value.
3
+ * Supports:
4
+ * - Simple reference: "$VAR_NAME" -> value of VAR_NAME
5
+ * - Prefix reference: "$VAR_NAME/suffix" -> "value/suffix"
6
+ * - No reference: "value" -> "value"
7
+ *
8
+ * @param value The value to resolve
9
+ * @returns The resolved value
10
+ */
11
+ export function resolveEnvVar(value) {
12
+ if (typeof value !== "string") {
13
+ return value;
14
+ }
15
+ // Check if it's an environment variable reference
16
+ if (value.startsWith("$")) {
17
+ const varName = value.substring(1);
18
+ const envValue = process.env[varName];
19
+ if (envValue === undefined) {
20
+ throw new Error(`Environment variable ${varName} is not set`);
21
+ }
22
+ return envValue;
23
+ }
24
+ return value;
25
+ }
26
+ /**
27
+ * Recursively resolves environment variable references in an object.
28
+ * Handles nested objects and arrays.
29
+ *
30
+ * @param obj The object to resolve
31
+ * @returns A new object with environment variables resolved
32
+ */
33
+ export function resolveEnvVarsDeep(obj) {
34
+ if (obj === null || obj === undefined) {
35
+ return obj;
36
+ }
37
+ if (typeof obj === "string") {
38
+ return resolveEnvVar(obj);
39
+ }
40
+ if (Array.isArray(obj)) {
41
+ return obj.map((item) => resolveEnvVarsDeep(item));
42
+ }
43
+ if (typeof obj === "object") {
44
+ const resolved = {};
45
+ for (const [key, value] of Object.entries(obj)) {
46
+ resolved[key] = resolveEnvVarsDeep(value);
47
+ }
48
+ return resolved;
49
+ }
50
+ return obj;
51
+ }
52
+ /**
53
+ * Checks if a value contains an environment variable reference.
54
+ *
55
+ * @param value The value to check
56
+ * @returns True if the value contains an environment variable reference
57
+ */
58
+ export function hasEnvVarReference(value) {
59
+ if (typeof value === "string") {
60
+ return value.startsWith("$");
61
+ }
62
+ return false;
63
+ }
64
+ //# sourceMappingURL=envResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envResolver.js","sourceRoot":"","sources":["../../src/utils/envResolver.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,aAAa,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAiB,CAAC,EAAE,CAAC;YAC7D,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAc,CAAC;QACzD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function createRequestId(prefix?: string): string;
@@ -0,0 +1,7 @@
1
+ import { customAlphabet } from "nanoid";
2
+ const alphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
3
+ const randomId = customAlphabet(alphabet, 12);
4
+ export function createRequestId(prefix = "req") {
5
+ return `${prefix}_${randomId()}`;
6
+ }
7
+ //# sourceMappingURL=ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/utils/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,MAAM,QAAQ,GAAG,sCAAsC,CAAC;AACxD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,MAAM,GAAG,KAAK;IAC5C,OAAO,GAAG,MAAM,IAAI,QAAQ,EAAE,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import pino from "pino";
2
+ export declare const logger: pino.Logger<never, boolean>;
3
+ export type Logger = typeof logger;
@@ -0,0 +1,12 @@
1
+ import pino from "pino";
2
+ const level = process.env.LOG_LEVEL ?? "info";
3
+ export const logger = pino({
4
+ level,
5
+ transport: process.env.NODE_ENV === "development"
6
+ ? {
7
+ target: "pino-pretty",
8
+ options: { colorize: true, translateTime: "SYS:standard" },
9
+ }
10
+ : undefined,
11
+ });
12
+ //# sourceMappingURL=logger.js.map