commandcode-api-proxy 0.1.2 → 0.1.4

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 (44) hide show
  1. package/README.md +96 -83
  2. package/dist/models.json +7 -1
  3. package/dist/proxy.js +8 -0
  4. package/dist/proxy.js.map +1 -1
  5. package/dist/server.d.ts.map +1 -1
  6. package/dist/server.js +184 -21
  7. package/dist/server.js.map +1 -1
  8. package/dist/setup/claude-code.d.ts +2 -0
  9. package/dist/setup/claude-code.d.ts.map +1 -0
  10. package/dist/setup/claude-code.js +37 -0
  11. package/dist/setup/claude-code.js.map +1 -0
  12. package/dist/setup/opencode.d.ts.map +1 -1
  13. package/dist/setup/opencode.js.map +1 -1
  14. package/dist/stream.d.ts +1 -0
  15. package/dist/stream.d.ts.map +1 -1
  16. package/dist/stream.js +6 -0
  17. package/dist/stream.js.map +1 -1
  18. package/dist/translate/anthropic-models.d.ts +2 -0
  19. package/dist/translate/anthropic-models.d.ts.map +1 -0
  20. package/dist/translate/anthropic-models.js +11 -0
  21. package/dist/translate/anthropic-models.js.map +1 -0
  22. package/dist/translate/anthropic-types.d.ts +168 -0
  23. package/dist/translate/anthropic-types.d.ts.map +1 -0
  24. package/dist/translate/anthropic-types.js +4 -0
  25. package/dist/translate/anthropic-types.js.map +1 -0
  26. package/dist/translate/anthropic.d.ts +24 -0
  27. package/dist/translate/anthropic.d.ts.map +1 -0
  28. package/dist/translate/anthropic.js +458 -0
  29. package/dist/translate/anthropic.js.map +1 -0
  30. package/dist/translate/openai.d.ts +10 -10
  31. package/dist/translate/openai.d.ts.map +1 -1
  32. package/dist/translate/openai.js +153 -208
  33. package/dist/translate/openai.js.map +1 -1
  34. package/dist/translate/util.d.ts +1 -2
  35. package/dist/translate/util.d.ts.map +1 -1
  36. package/dist/translate/util.js +33 -12
  37. package/dist/translate/util.js.map +1 -1
  38. package/dist/translate/validation.d.ts +2 -0
  39. package/dist/translate/validation.d.ts.map +1 -1
  40. package/dist/translate/validation.js +74 -0
  41. package/dist/translate/validation.js.map +1 -1
  42. package/dist/upstream.d.ts.map +1 -1
  43. package/dist/upstream.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,458 @@
1
+ import crypto from "node:crypto";
2
+ import { resolveAnthropicModel } from "../translate/anthropic-models.js";
3
+ import { extractUsage, pruneDanglingTools, buildCCConfig, } from "../translate/util.js";
4
+ import { logger } from "../logger.js";
5
+ // ── Constants ──
6
+ const REASONING_THRESHOLDS = { LOW: 2000, MEDIUM: 8000 };
7
+ const ANTHROPIC_STOP_REASON_MAP = {
8
+ stop: "end_turn",
9
+ length: "max_tokens",
10
+ "tool-call": "tool_use",
11
+ "tool-calls": "tool_use",
12
+ tool_call: "tool_use",
13
+ content_filtered: "stop_sequence",
14
+ pause_turn: "pause_turn",
15
+ refusal: "refusal",
16
+ model_context_window_exceeded: "model_context_window_exceeded",
17
+ };
18
+ const INITIAL_OUTPUT_TOKENS = 1;
19
+ // ── Request translator ──
20
+ function toCCMessages(messages) {
21
+ const toolUseIdToName = new Map();
22
+ for (const msg of messages) {
23
+ if (msg.role !== "assistant" || !Array.isArray(msg.content))
24
+ continue;
25
+ for (const block of msg.content) {
26
+ if (block.type === "tool_use") {
27
+ toolUseIdToName.set(block.id, block.name);
28
+ }
29
+ }
30
+ }
31
+ const ccMessages = [];
32
+ const systemParts = [];
33
+ for (const msg of messages) {
34
+ const content = msg.content;
35
+ if (msg.role === "system") {
36
+ if (typeof content === "string") {
37
+ systemParts.push(content);
38
+ }
39
+ continue;
40
+ }
41
+ if (msg.role === "user") {
42
+ if (typeof content === "string") {
43
+ ccMessages.push({ role: "user", content });
44
+ }
45
+ else {
46
+ const blocks = content;
47
+ const hasToolResult = blocks.some((b) => b.type === "tool_result");
48
+ if (hasToolResult) {
49
+ const textParts = [];
50
+ for (const block of blocks) {
51
+ if (block.type === "tool_result") {
52
+ const trb = block;
53
+ const name = toolUseIdToName.get(trb.tool_use_id) ?? "";
54
+ const resultText = typeof trb.content === "string"
55
+ ? trb.content
56
+ : trb.content
57
+ .map((p) => p.text ?? "")
58
+ .join("");
59
+ ccMessages.push({
60
+ role: "tool",
61
+ content: [
62
+ {
63
+ type: "tool-result",
64
+ toolCallId: trb.tool_use_id,
65
+ toolName: name,
66
+ output: { type: "text", value: resultText },
67
+ isError: trb.is_error,
68
+ },
69
+ ],
70
+ });
71
+ }
72
+ else {
73
+ const part = toCCPartByBlock(block);
74
+ if (part)
75
+ textParts.push(part);
76
+ }
77
+ }
78
+ if (textParts.length > 0) {
79
+ ccMessages.push({ role: "user", content: textParts });
80
+ }
81
+ }
82
+ else {
83
+ const parts = blocks.map((b) => toCCPartByBlock(b)).filter(Boolean);
84
+ ccMessages.push({ role: "user", content: parts });
85
+ }
86
+ }
87
+ continue;
88
+ }
89
+ // assistant
90
+ if (typeof content === "string") {
91
+ ccMessages.push({ role: "assistant", content });
92
+ }
93
+ else if (Array.isArray(content)) {
94
+ const parts = [];
95
+ for (const block of content) {
96
+ if (block.type === "text") {
97
+ parts.push({ type: "text", text: block.text });
98
+ }
99
+ else if (block.type === "tool_use") {
100
+ parts.push({
101
+ type: "tool-call",
102
+ toolCallId: block.id,
103
+ toolName: block.name,
104
+ input: block.input,
105
+ });
106
+ }
107
+ }
108
+ if (parts.length > 0) {
109
+ ccMessages.push({ role: "assistant", content: parts });
110
+ }
111
+ }
112
+ }
113
+ return {
114
+ ccMessages: pruneDanglingTools(ccMessages),
115
+ systemPrompt: systemParts.length > 0
116
+ ? systemParts.join("\n\n")
117
+ : undefined,
118
+ };
119
+ }
120
+ function toCCPartByBlock(block) {
121
+ if (block.type === "text")
122
+ return { type: "text", text: block.text };
123
+ if (block.type === "image") {
124
+ const src = block.source;
125
+ if (src.type === "base64") {
126
+ return { type: "image", image: `data:${src.media_type};base64,${src.data}` };
127
+ }
128
+ return { type: "image", image: src.url };
129
+ }
130
+ return null;
131
+ }
132
+ function resolveReasoningEffort(thinking) {
133
+ if (!thinking)
134
+ return undefined;
135
+ if (thinking.budget_tokens <= REASONING_THRESHOLDS.LOW)
136
+ return "low";
137
+ if (thinking.budget_tokens <= REASONING_THRESHOLDS.MEDIUM)
138
+ return "medium";
139
+ return "high";
140
+ }
141
+ function resolveToolChoice(anthropic) {
142
+ const tc = anthropic.tool_choice;
143
+ if (!tc)
144
+ return undefined;
145
+ if (tc.type === "auto")
146
+ return undefined;
147
+ if (tc.type === "any")
148
+ return "required";
149
+ if (tc.type === "tool")
150
+ return tc.name;
151
+ if (tc.type === "none")
152
+ return "none";
153
+ return undefined;
154
+ }
155
+ export function toCCRequest(req, configOverrides) {
156
+ const { ccMessages, systemPrompt } = toCCMessages(req.messages);
157
+ let systemText;
158
+ if (typeof req.system === "string") {
159
+ systemText = req.system;
160
+ }
161
+ else if (Array.isArray(req.system)) {
162
+ systemText = req.system
163
+ .filter((b) => b.type === "text")
164
+ .map((b) => (b.type === "text" ? b.text : ""))
165
+ .filter(Boolean)
166
+ .join("\n\n");
167
+ }
168
+ const resolvedModel = resolveAnthropicModel(req.model);
169
+ const ccTools = req.tools?.map((t) => ({
170
+ name: t.name,
171
+ description: t.description,
172
+ input_schema: t.input_schema,
173
+ }));
174
+ const finalSystem = systemText
175
+ ? systemPrompt != null
176
+ ? `${systemPrompt}\n\n${systemText}`
177
+ : systemText
178
+ : systemPrompt;
179
+ const body = {
180
+ config: buildCCConfig(configOverrides),
181
+ memory: "",
182
+ taste: "",
183
+ skills: "",
184
+ permissionMode: "standard",
185
+ params: {
186
+ model: resolvedModel,
187
+ messages: ccMessages,
188
+ stream: req.stream ?? false,
189
+ max_tokens: req.max_tokens,
190
+ temperature: req.temperature,
191
+ stop: req.stop_sequences,
192
+ tools: ccTools,
193
+ tool_choice: resolveToolChoice(req),
194
+ reasoning_effort: resolveReasoningEffort(req.thinking),
195
+ },
196
+ threadId: crypto.randomUUID(),
197
+ };
198
+ // Add system prompt from top-level field
199
+ if (finalSystem) {
200
+ body.params.system = finalSystem;
201
+ }
202
+ return body;
203
+ }
204
+ // ── Streaming encoder ──
205
+ export class AnthropicStreamEncoder {
206
+ model;
207
+ messageId;
208
+ blockIndex = 0;
209
+ currentBlockType = null;
210
+ currentToolCallId = null;
211
+ pendingStart = null;
212
+ started = false;
213
+ pinged = false;
214
+ constructor(model) {
215
+ this.model = model;
216
+ this.messageId = `msg_${crypto.randomUUID()}`;
217
+ }
218
+ emit(event) {
219
+ if (event.type === "start") {
220
+ this.blockIndex = 0;
221
+ this.currentBlockType = null;
222
+ this.pendingStart = event;
223
+ return [];
224
+ }
225
+ if (event.type === "error") {
226
+ const msg = event.data.message ??
227
+ event.data.error?.message ??
228
+ JSON.stringify(event.data);
229
+ logger.error(`[CC upstream error] ${msg}`);
230
+ const records = [];
231
+ if (!this.started) {
232
+ records.push(this.makeMessageStart(0));
233
+ }
234
+ this.closeCurrentBlock(records);
235
+ records.push({
236
+ event: "error",
237
+ data: { type: "error", error: { type: "api_error", message: msg } },
238
+ });
239
+ records.push({ event: "message_stop", data: {} });
240
+ return records;
241
+ }
242
+ if (event.type === "finish") {
243
+ return this.handleFinish(event);
244
+ }
245
+ // Content event
246
+ if (!this.started) {
247
+ const records = [];
248
+ const startInputTokens = this.pendingStart
249
+ ? this.pendingStart.data.totalUsage?.inputTokens
250
+ : undefined;
251
+ records.push(this.makeMessageStart(startInputTokens ?? 0));
252
+ this.started = true;
253
+ return [...records, ...this.handleContent(event)];
254
+ }
255
+ return this.handleContent(event);
256
+ }
257
+ handleFinish(event) {
258
+ const records = [];
259
+ this.closeCurrentBlock(records);
260
+ const finishReason = event.data.finishReason ?? "stop";
261
+ const usage = extractUsage(event.data);
262
+ records.push({
263
+ event: "message_delta",
264
+ data: {
265
+ type: "message_delta",
266
+ delta: {
267
+ stop_reason: ANTHROPIC_STOP_REASON_MAP[finishReason] ?? "end_turn",
268
+ stop_sequence: null,
269
+ },
270
+ usage: {
271
+ output_tokens: usage?.completionTokens ?? 0,
272
+ },
273
+ },
274
+ });
275
+ records.push({ event: "message_stop", data: {} });
276
+ return records;
277
+ }
278
+ handleContent(event) {
279
+ const records = [];
280
+ switch (event.type) {
281
+ case "text-delta":
282
+ this.ensureBlockOpen(records, "text", () => ({ type: "text", text: "" }));
283
+ records.push(this.makeDelta({ type: "text_delta", text: event.data.text ?? "" }));
284
+ break;
285
+ case "reasoning-delta":
286
+ this.ensureBlockOpen(records, "thinking", () => ({
287
+ type: "thinking",
288
+ thinking: "",
289
+ }));
290
+ records.push(this.makeDelta({ type: "thinking_delta", thinking: event.data.text ?? "" }));
291
+ break;
292
+ case "tool-call-delta": {
293
+ const tcId = event.data.toolCallId ?? "";
294
+ const tcName = event.data.name ?? "";
295
+ if (this.currentBlockType !== "tool_use" || this.currentToolCallId !== tcId) {
296
+ this.closeCurrentBlock(records);
297
+ this.ensureBlockOpenWith(records, "tool_use", {
298
+ type: "tool_use",
299
+ id: tcId,
300
+ name: tcName,
301
+ input: {},
302
+ });
303
+ this.currentToolCallId = tcId;
304
+ }
305
+ records.push(this.makeDelta({
306
+ type: "input_json_delta",
307
+ partial_json: event.data.arguments ?? "",
308
+ }));
309
+ break;
310
+ }
311
+ case "tool-call": {
312
+ const tcId = event.data.toolCallId ?? "";
313
+ const tcName = event.data.toolName ?? event.data.name ?? "";
314
+ const input = event.data.input ?? event.data.arguments;
315
+ const argsStr = typeof input === "string" ? input : input != null ? JSON.stringify(input) : "";
316
+ this.closeCurrentBlock(records);
317
+ this.ensureBlockOpenWith(records, "tool_use", {
318
+ type: "tool_use",
319
+ id: tcId,
320
+ name: tcName,
321
+ input: {},
322
+ });
323
+ if (argsStr) {
324
+ records.push(this.makeDelta({ type: "input_json_delta", partial_json: argsStr }));
325
+ }
326
+ this.closeCurrentBlock(records);
327
+ break;
328
+ }
329
+ }
330
+ return records;
331
+ }
332
+ ensureBlockOpen(records, type, blockFactory) {
333
+ if (this.currentBlockType === type)
334
+ return;
335
+ this.closeCurrentBlock(records);
336
+ this.ensureBlockOpenWith(records, type, blockFactory());
337
+ }
338
+ ensureBlockOpenWith(records, type, block) {
339
+ this.currentBlockType = type;
340
+ records.push({
341
+ event: "content_block_start",
342
+ data: {
343
+ type: "content_block_start",
344
+ index: this.blockIndex,
345
+ content_block: block,
346
+ },
347
+ });
348
+ if (!this.pinged) {
349
+ this.pinged = true;
350
+ records.push({ event: "ping", data: { type: "ping" } });
351
+ }
352
+ }
353
+ closeCurrentBlock(records) {
354
+ if (this.currentBlockType === null)
355
+ return;
356
+ if (this.currentBlockType === "thinking") {
357
+ records.push({
358
+ event: "signature_delta",
359
+ data: { type: "signature_delta", signature: "_cc_proxy_placeholder" },
360
+ });
361
+ }
362
+ records.push({
363
+ event: "content_block_stop",
364
+ data: { type: "content_block_stop", index: this.blockIndex },
365
+ });
366
+ this.blockIndex++;
367
+ this.currentBlockType = null;
368
+ }
369
+ makeDelta(delta) {
370
+ return {
371
+ event: "content_block_delta",
372
+ data: { type: "content_block_delta", index: this.blockIndex, delta },
373
+ };
374
+ }
375
+ makeMessageStart(inputTokens) {
376
+ return {
377
+ event: "message_start",
378
+ data: {
379
+ type: "message_start",
380
+ message: {
381
+ id: this.messageId,
382
+ type: "message",
383
+ role: "assistant",
384
+ model: this.model,
385
+ content: [],
386
+ stop_reason: null,
387
+ stop_sequence: null,
388
+ usage: {
389
+ input_tokens: inputTokens,
390
+ output_tokens: INITIAL_OUTPUT_TOKENS,
391
+ cache_creation_input_tokens: 0,
392
+ cache_read_input_tokens: 0,
393
+ service_tier: "standard",
394
+ },
395
+ },
396
+ },
397
+ };
398
+ }
399
+ }
400
+ // ── Non-streaming response builder ──
401
+ export function buildAnthropicResponse(events, model, messageId) {
402
+ let textContent = "";
403
+ let thinkingContent = "";
404
+ const toolUseBlocks = [];
405
+ for (const event of events) {
406
+ switch (event.type) {
407
+ case "text-delta":
408
+ textContent += event.data.text ?? "";
409
+ break;
410
+ case "reasoning-delta":
411
+ thinkingContent += event.data.text ?? "";
412
+ break;
413
+ case "tool-call": {
414
+ const input = event.data.input ?? event.data.arguments;
415
+ toolUseBlocks.push({
416
+ type: "tool_use",
417
+ id: event.data.toolCallId ?? "",
418
+ name: event.data.toolName ?? event.data.name ?? "",
419
+ input: typeof input === "object" && input != null ? input : {},
420
+ });
421
+ break;
422
+ }
423
+ case "finish":
424
+ break;
425
+ }
426
+ }
427
+ const content = [];
428
+ if (thinkingContent) {
429
+ content.push({
430
+ type: "thinking",
431
+ thinking: thinkingContent,
432
+ signature: "_cc_proxy_placeholder",
433
+ });
434
+ }
435
+ content.push(...toolUseBlocks);
436
+ if (textContent || content.length === 0) {
437
+ content.unshift({ type: "text", text: textContent });
438
+ }
439
+ const finishEvent = events.find((e) => e.type === "finish");
440
+ const finishReason = finishEvent?.data.finishReason ?? "stop";
441
+ const usage = finishEvent ? extractUsage(finishEvent.data) : undefined;
442
+ return {
443
+ id: messageId,
444
+ type: "message",
445
+ role: "assistant",
446
+ model,
447
+ content,
448
+ stop_reason: ANTHROPIC_STOP_REASON_MAP[finishReason] ?? "end_turn",
449
+ stop_sequence: null,
450
+ usage: {
451
+ input_tokens: usage?.promptTokens ?? 0,
452
+ output_tokens: usage?.completionTokens ?? 0,
453
+ cache_creation_input_tokens: 0,
454
+ cache_read_input_tokens: 0,
455
+ },
456
+ };
457
+ }
458
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/translate/anthropic.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import type { OpenAIChatRequest, CCRequestBody, CCEvent } from "../translate/types.js";
2
2
  export declare function toCCRequest(req: OpenAIChatRequest, configOverrides?: Partial<CCRequestBody["config"]>): CCRequestBody;
3
- /**
4
- * Translate a single CC event into OpenAI streaming chunks.
5
- *
6
- * `model` is the model id requested by the downstream client (echoed back in
7
- * every chunk per the OpenAI spec). `responseModel` is the model reported by
8
- * the upstream `start` event, if any — used only to enrich the first chunk.
9
- */
10
- export declare function toOpenAIStreamChunk(event: CCEvent, model?: string): object[];
11
- export declare function toOpenAIErrorChunk(error: Error): object;
12
- export declare function buildNonStreamingResponse(events: CCEvent[], model: string): object;
3
+ export declare class OpenAIStreamEncoder {
4
+ private readonly model;
5
+ readonly id: string;
6
+ private readonly created;
7
+ private toolCallIndex;
8
+ constructor(model: string);
9
+ emit(event: CCEvent): object[];
10
+ errorChunk(err: Error): object;
11
+ }
12
+ export declare function buildNonStreamingResponse(events: CCEvent[], model: string, id: string): object;
13
13
  //# sourceMappingURL=openai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/translate/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EASjB,aAAa,EACb,OAAO,EAER,MAAM,sBAAsB,CAAC;AA8H9B,wBAAgB,WAAW,CACzB,GAAG,EAAE,iBAAiB,EACtB,eAAe,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GACjD,aAAa,CA+Df;AAgCD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAY,GAAG,MAAM,EAAE,CA8K/E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAOvD;AAqBD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAgFlF"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/translate/openai.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EASjB,aAAa,EACb,OAAO,EAER,MAAM,sBAAsB,CAAC;AAmI9B,wBAAgB,WAAW,CACzB,GAAG,EAAE,iBAAiB,EACtB,eAAe,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GACjD,aAAa,CA6Bf;AAmCD,qBAAa,mBAAmB;IAKlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,aAAa,CAAK;gBAEG,KAAK,EAAE,MAAM;IAK1C,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE;IA6J9B,UAAU,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM;CAQ/B;AAWD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAgF9F"}