@jeffreycao/copilot-api 1.5.7 → 1.5.9
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.
- package/dist/{auth-k8txLjfN.js → auth-yt2WMpWW.js} +3 -3
- package/dist/{auth-k8txLjfN.js.map → auth-yt2WMpWW.js.map} +1 -1
- package/dist/{check-usage-DKdBAt3u.js → check-usage-DED1f_8E.js} +3 -3
- package/dist/{check-usage-DKdBAt3u.js.map → check-usage-DED1f_8E.js.map} +1 -1
- package/dist/main.js +3 -3
- package/dist/{server-BowRWuxD.js → server-CtHcJs9h.js} +113 -117
- package/dist/server-CtHcJs9h.js.map +1 -0
- package/dist/{start-CnFPQFgt.js → start-BcKayImL.js} +4 -4
- package/dist/{start-CnFPQFgt.js.map → start-BcKayImL.js.map} +1 -1
- package/dist/{token-CWYd9Sw5.js → token-D1JoGg8c.js} +2 -2
- package/dist/{token-CWYd9Sw5.js.map → token-D1JoGg8c.js.map} +1 -1
- package/dist/{utils-Cos2YZBk.js → utils-CAW43BKR.js} +6 -2
- package/dist/utils-CAW43BKR.js.map +1 -0
- package/package.json +1 -1
- package/dist/server-BowRWuxD.js.map +0 -1
- package/dist/utils-Cos2YZBk.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PATHS, ensurePaths } from "./paths-Cla6y5eD.js";
|
|
2
|
-
import { state } from "./utils-
|
|
3
|
-
import { setupGitHubToken } from "./token-
|
|
2
|
+
import { state } from "./utils-CAW43BKR.js";
|
|
3
|
+
import { setupGitHubToken } from "./token-D1JoGg8c.js";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import consola from "consola";
|
|
6
6
|
|
|
@@ -43,4 +43,4 @@ const auth = defineCommand({
|
|
|
43
43
|
|
|
44
44
|
//#endregion
|
|
45
45
|
export { auth };
|
|
46
|
-
//# sourceMappingURL=auth-
|
|
46
|
+
//# sourceMappingURL=auth-yt2WMpWW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-
|
|
1
|
+
{"version":3,"file":"auth-yt2WMpWW.js","names":[],"sources":["../src/auth.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { defineCommand } from \"citty\"\nimport consola from \"consola\"\n\nimport { PATHS, ensurePaths } from \"./lib/paths\"\nimport { state } from \"./lib/state\"\nimport { setupGitHubToken } from \"./lib/token\"\n\ninterface RunAuthOptions {\n verbose: boolean\n showToken: boolean\n}\n\nexport async function runAuth(options: RunAuthOptions): Promise<void> {\n if (options.verbose) {\n consola.level = 5\n consola.info(\"Verbose logging enabled\")\n }\n\n state.showToken = options.showToken\n\n await ensurePaths()\n await setupGitHubToken({ force: true })\n consola.success(\"GitHub token written to\", PATHS.GITHUB_TOKEN_PATH)\n}\n\nexport const auth = defineCommand({\n meta: {\n name: \"auth\",\n description: \"Run GitHub auth flow without running the server\",\n },\n args: {\n verbose: {\n alias: \"v\",\n type: \"boolean\",\n default: false,\n description: \"Enable verbose logging\",\n },\n \"show-token\": {\n type: \"boolean\",\n default: false,\n description: \"Show GitHub token on auth\",\n },\n },\n run({ args }) {\n return runAuth({\n verbose: args.verbose,\n showToken: args[\"show-token\"],\n })\n },\n})\n"],"mappings":";;;;;;;AAcA,eAAsB,QAAQ,SAAwC;AACpE,KAAI,QAAQ,SAAS;AACnB,UAAQ,QAAQ;AAChB,UAAQ,KAAK,0BAA0B;;AAGzC,OAAM,YAAY,QAAQ;AAE1B,OAAM,aAAa;AACnB,OAAM,iBAAiB,EAAE,OAAO,MAAM,CAAC;AACvC,SAAQ,QAAQ,2BAA2B,MAAM,kBAAkB;;AAGrE,MAAa,OAAO,cAAc;CAChC,MAAM;EACJ,MAAM;EACN,aAAa;EACd;CACD,MAAM;EACJ,SAAS;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,aAAa;GACd;EACD,cAAc;GACZ,MAAM;GACN,SAAS;GACT,aAAa;GACd;EACF;CACD,IAAI,EAAE,QAAQ;AACZ,SAAO,QAAQ;GACb,SAAS,KAAK;GACd,WAAW,KAAK;GACjB,CAAC;;CAEL,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ensurePaths } from "./paths-Cla6y5eD.js";
|
|
2
|
-
import { getCopilotUsage } from "./utils-
|
|
3
|
-
import { setupGitHubToken } from "./token-
|
|
2
|
+
import { getCopilotUsage } from "./utils-CAW43BKR.js";
|
|
3
|
+
import { setupGitHubToken } from "./token-D1JoGg8c.js";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
import consola from "consola";
|
|
6
6
|
|
|
@@ -41,4 +41,4 @@ const checkUsage = defineCommand({
|
|
|
41
41
|
|
|
42
42
|
//#endregion
|
|
43
43
|
export { checkUsage };
|
|
44
|
-
//# sourceMappingURL=check-usage-
|
|
44
|
+
//# sourceMappingURL=check-usage-DED1f_8E.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-usage-
|
|
1
|
+
{"version":3,"file":"check-usage-DED1f_8E.js","names":[],"sources":["../src/check-usage.ts"],"sourcesContent":["import { defineCommand } from \"citty\"\nimport consola from \"consola\"\n\nimport { ensurePaths } from \"./lib/paths\"\nimport { setupGitHubToken } from \"./lib/token\"\nimport {\n getCopilotUsage,\n type QuotaDetail,\n} from \"./services/github/get-copilot-usage\"\n\nexport const checkUsage = defineCommand({\n meta: {\n name: \"check-usage\",\n description: \"Show current GitHub Copilot usage/quota information\",\n },\n async run() {\n await ensurePaths()\n await setupGitHubToken()\n try {\n const usage = await getCopilotUsage()\n const premium = usage.quota_snapshots.premium_interactions\n const premiumTotal = premium.entitlement\n const premiumUsed = premiumTotal - premium.remaining\n const premiumPercentUsed =\n premiumTotal > 0 ? (premiumUsed / premiumTotal) * 100 : 0\n const premiumPercentRemaining = premium.percent_remaining\n\n // Helper to summarize a quota snapshot\n function summarizeQuota(name: string, snap: QuotaDetail | undefined) {\n if (!snap) return `${name}: N/A`\n const total = snap.entitlement\n const used = total - snap.remaining\n const percentUsed = total > 0 ? (used / total) * 100 : 0\n const percentRemaining = snap.percent_remaining\n return `${name}: ${used}/${total} used (${percentUsed.toFixed(1)}% used, ${percentRemaining.toFixed(1)}% remaining)`\n }\n\n const premiumLine = `Premium: ${premiumUsed}/${premiumTotal} used (${premiumPercentUsed.toFixed(1)}% used, ${premiumPercentRemaining.toFixed(1)}% remaining)`\n const chatLine = summarizeQuota(\"Chat\", usage.quota_snapshots.chat)\n const completionsLine = summarizeQuota(\n \"Completions\",\n usage.quota_snapshots.completions,\n )\n\n consola.box(\n `Copilot Usage (plan: ${usage.copilot_plan})\\n`\n + `Quota resets: ${usage.quota_reset_date}\\n`\n + `\\nQuotas:\\n`\n + ` ${premiumLine}\\n`\n + ` ${chatLine}\\n`\n + ` ${completionsLine}`,\n )\n } catch (err) {\n consola.error(\"Failed to fetch Copilot usage:\", err)\n process.exit(1)\n }\n },\n})\n"],"mappings":";;;;;;;AAUA,MAAa,aAAa,cAAc;CACtC,MAAM;EACJ,MAAM;EACN,aAAa;EACd;CACD,MAAM,MAAM;AACV,QAAM,aAAa;AACnB,QAAM,kBAAkB;AACxB,MAAI;GACF,MAAM,QAAQ,MAAM,iBAAiB;GACrC,MAAM,UAAU,MAAM,gBAAgB;GACtC,MAAM,eAAe,QAAQ;GAC7B,MAAM,cAAc,eAAe,QAAQ;GAC3C,MAAM,qBACJ,eAAe,IAAK,cAAc,eAAgB,MAAM;GAC1D,MAAM,0BAA0B,QAAQ;GAGxC,SAAS,eAAe,MAAc,MAA+B;AACnE,QAAI,CAAC,KAAM,QAAO,GAAG,KAAK;IAC1B,MAAM,QAAQ,KAAK;IACnB,MAAM,OAAO,QAAQ,KAAK;IAC1B,MAAM,cAAc,QAAQ,IAAK,OAAO,QAAS,MAAM;IACvD,MAAM,mBAAmB,KAAK;AAC9B,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,MAAM,SAAS,YAAY,QAAQ,EAAE,CAAC,UAAU,iBAAiB,QAAQ,EAAE,CAAC;;GAGzG,MAAM,cAAc,YAAY,YAAY,GAAG,aAAa,SAAS,mBAAmB,QAAQ,EAAE,CAAC,UAAU,wBAAwB,QAAQ,EAAE,CAAC;GAChJ,MAAM,WAAW,eAAe,QAAQ,MAAM,gBAAgB,KAAK;GACnE,MAAM,kBAAkB,eACtB,eACA,MAAM,gBAAgB,YACvB;AAED,WAAQ,IACN,wBAAwB,MAAM,aAAa,mBACtB,MAAM,iBAAiB,iBAEnC,YAAY,MACZ,SAAS,MACT,kBACV;WACM,KAAK;AACZ,WAAQ,MAAM,kCAAkC,IAAI;AACpD,WAAQ,KAAK,EAAE;;;CAGpB,CAAC"}
|
package/dist/main.js
CHANGED
|
@@ -20,10 +20,10 @@ const args = parseArgs(process.argv, cliArgs);
|
|
|
20
20
|
if (typeof args["api-home"] === "string") process.env.COPILOT_API_HOME = args["api-home"];
|
|
21
21
|
if (typeof args["oauth-app"] === "string") process.env.COPILOT_API_OAUTH_APP = args["oauth-app"];
|
|
22
22
|
if (typeof args["enterprise-url"] === "string") process.env.COPILOT_API_ENTERPRISE_URL = args["enterprise-url"];
|
|
23
|
-
const { auth } = await import("./auth-
|
|
24
|
-
const { checkUsage } = await import("./check-usage-
|
|
23
|
+
const { auth } = await import("./auth-yt2WMpWW.js");
|
|
24
|
+
const { checkUsage } = await import("./check-usage-DED1f_8E.js");
|
|
25
25
|
const { debug } = await import("./debug-DcC7ZPH0.js");
|
|
26
|
-
const { start } = await import("./start-
|
|
26
|
+
const { start } = await import("./start-BcKayImL.js");
|
|
27
27
|
const main = defineCommand({
|
|
28
28
|
meta: {
|
|
29
29
|
name: "copilot-api",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PATHS } from "./paths-Cla6y5eD.js";
|
|
2
|
-
import { HTTPError, cacheModels, copilotBaseUrl, copilotHeaders, forwardError, generateRequestIdFromPayload, getCopilotUsage, getRootSessionId, getUUID, isNullish, parseUserIdMetadata, prepareForCompact, prepareInteractionHeaders, prepareMessageProxyHeaders, requestContext, resolveTraceId, sleep, state } from "./utils-
|
|
2
|
+
import { HTTPError, cacheModels, copilotBaseUrl, copilotHeaders, forwardError, generateRequestIdFromPayload, getCopilotUsage, getRootSessionId, getUUID, isNullish, parseUserIdMetadata, prepareForCompact, prepareInteractionHeaders, prepareMessageProxyHeaders, requestContext, resolveTraceId, sleep, state } from "./utils-CAW43BKR.js";
|
|
3
3
|
import { getAnthropicApiKey, getClaudeTokenMultiplier, getConfig, getExtraPromptForModel, getProviderConfig, getReasoningEffortForModel, getSmallModel, isMessagesApiEnabled, isResponsesApiContextManagementModel, isResponsesApiWebSearchEnabled } from "./config-D44X0MP1.js";
|
|
4
4
|
import consola from "consola";
|
|
5
5
|
import path from "node:path";
|
|
@@ -248,6 +248,117 @@ async function checkRateLimit(state$1) {
|
|
|
248
248
|
consola.info("Rate limit wait completed, proceeding with request");
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
+
//#endregion
|
|
252
|
+
//#region src/services/copilot/create-chat-completions.ts
|
|
253
|
+
const createChatCompletions = async (payload, options) => {
|
|
254
|
+
if (!state.copilotToken) throw new Error("Copilot token not found");
|
|
255
|
+
const enableVision = payload.messages.some((x) => typeof x.content !== "string" && x.content?.some((x$1) => x$1.type === "image_url"));
|
|
256
|
+
let isAgentCall = false;
|
|
257
|
+
if (payload.messages.length > 0) {
|
|
258
|
+
const lastMessage = payload.messages.at(-1);
|
|
259
|
+
if (lastMessage) isAgentCall = ["assistant", "tool"].includes(lastMessage.role);
|
|
260
|
+
}
|
|
261
|
+
const headers = {
|
|
262
|
+
...copilotHeaders(state, options.requestId, enableVision),
|
|
263
|
+
"x-initiator": isAgentCall ? "agent" : "user"
|
|
264
|
+
};
|
|
265
|
+
prepareInteractionHeaders(options.sessionId, Boolean(options.subagentMarker), headers);
|
|
266
|
+
prepareForCompact(headers, options.isCompact);
|
|
267
|
+
const response = await fetch(`${copilotBaseUrl(state)}/chat/completions`, {
|
|
268
|
+
method: "POST",
|
|
269
|
+
headers,
|
|
270
|
+
body: JSON.stringify(payload)
|
|
271
|
+
});
|
|
272
|
+
if (!response.ok) {
|
|
273
|
+
consola.error("Failed to create chat completions", response);
|
|
274
|
+
throw new HTTPError("Failed to create chat completions", response);
|
|
275
|
+
}
|
|
276
|
+
if (payload.stream) return events(response);
|
|
277
|
+
return await response.json();
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
//#endregion
|
|
281
|
+
//#region src/routes/chat-completions/handler.ts
|
|
282
|
+
const logger$6 = createHandlerLogger("chat-completions-handler");
|
|
283
|
+
async function handleCompletion$1(c) {
|
|
284
|
+
await checkRateLimit(state);
|
|
285
|
+
let payload = await c.req.json();
|
|
286
|
+
debugJsonTail(logger$6, "Request payload:", {
|
|
287
|
+
value: payload,
|
|
288
|
+
tailLength: 400
|
|
289
|
+
});
|
|
290
|
+
const selectedModel = state.models?.data.find((model) => model.id === payload.model);
|
|
291
|
+
if (selectedModel?.id === "gpt-5.4") return c.json({ error: {
|
|
292
|
+
message: "Please use `/v1/responses` or `/v1/messages` API",
|
|
293
|
+
type: "invalid_request_error"
|
|
294
|
+
} }, 400);
|
|
295
|
+
if (state.manualApprove) await awaitApproval();
|
|
296
|
+
if (isNullish(payload.max_tokens)) {
|
|
297
|
+
payload = {
|
|
298
|
+
...payload,
|
|
299
|
+
max_tokens: selectedModel?.capabilities.limits.max_output_tokens
|
|
300
|
+
};
|
|
301
|
+
debugJson(logger$6, "Set max_tokens to:", payload.max_tokens);
|
|
302
|
+
}
|
|
303
|
+
const requestId = generateRequestIdFromPayload(payload);
|
|
304
|
+
logger$6.debug("Generated request ID:", requestId);
|
|
305
|
+
const sessionId = getUUID(requestId);
|
|
306
|
+
logger$6.debug("Extracted session ID:", sessionId);
|
|
307
|
+
const response = await createChatCompletions(payload, {
|
|
308
|
+
requestId,
|
|
309
|
+
sessionId
|
|
310
|
+
});
|
|
311
|
+
if (isNonStreaming$1(response)) {
|
|
312
|
+
debugJson(logger$6, "Non-streaming response:", response);
|
|
313
|
+
return c.json(response);
|
|
314
|
+
}
|
|
315
|
+
logger$6.debug("Streaming response");
|
|
316
|
+
return streamSSE(c, async (stream) => {
|
|
317
|
+
for await (const chunk of response) {
|
|
318
|
+
debugJson(logger$6, "Streaming chunk:", chunk);
|
|
319
|
+
await stream.writeSSE(chunk);
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
const isNonStreaming$1 = (response) => Object.hasOwn(response, "choices");
|
|
324
|
+
|
|
325
|
+
//#endregion
|
|
326
|
+
//#region src/routes/chat-completions/route.ts
|
|
327
|
+
const completionRoutes = new Hono();
|
|
328
|
+
completionRoutes.post("/", async (c) => {
|
|
329
|
+
try {
|
|
330
|
+
return await handleCompletion$1(c);
|
|
331
|
+
} catch (error) {
|
|
332
|
+
return await forwardError(c, error);
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
//#endregion
|
|
337
|
+
//#region src/services/copilot/create-embeddings.ts
|
|
338
|
+
const createEmbeddings = async (payload) => {
|
|
339
|
+
if (!state.copilotToken) throw new Error("Copilot token not found");
|
|
340
|
+
const response = await fetch(`${copilotBaseUrl(state)}/embeddings`, {
|
|
341
|
+
method: "POST",
|
|
342
|
+
headers: copilotHeaders(state),
|
|
343
|
+
body: JSON.stringify(payload)
|
|
344
|
+
});
|
|
345
|
+
if (!response.ok) throw new HTTPError("Failed to create embeddings", response);
|
|
346
|
+
return await response.json();
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
//#endregion
|
|
350
|
+
//#region src/routes/embeddings/route.ts
|
|
351
|
+
const embeddingRoutes = new Hono();
|
|
352
|
+
embeddingRoutes.post("/", async (c) => {
|
|
353
|
+
try {
|
|
354
|
+
const paylod = await c.req.json();
|
|
355
|
+
const response = await createEmbeddings(paylod);
|
|
356
|
+
return c.json(response);
|
|
357
|
+
} catch (error) {
|
|
358
|
+
return await forwardError(c, error);
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
|
|
251
362
|
//#endregion
|
|
252
363
|
//#region src/lib/tokenizer.ts
|
|
253
364
|
const ENCODING_MAP = {
|
|
@@ -464,121 +575,6 @@ const getTokenCount = async (payload, model) => {
|
|
|
464
575
|
};
|
|
465
576
|
};
|
|
466
577
|
|
|
467
|
-
//#endregion
|
|
468
|
-
//#region src/services/copilot/create-chat-completions.ts
|
|
469
|
-
const createChatCompletions = async (payload, options) => {
|
|
470
|
-
if (!state.copilotToken) throw new Error("Copilot token not found");
|
|
471
|
-
const enableVision = payload.messages.some((x) => typeof x.content !== "string" && x.content?.some((x$1) => x$1.type === "image_url"));
|
|
472
|
-
let isAgentCall = false;
|
|
473
|
-
if (payload.messages.length > 0) {
|
|
474
|
-
const lastMessage = payload.messages.at(-1);
|
|
475
|
-
if (lastMessage) isAgentCall = ["assistant", "tool"].includes(lastMessage.role);
|
|
476
|
-
}
|
|
477
|
-
const headers = {
|
|
478
|
-
...copilotHeaders(state, options.requestId, enableVision),
|
|
479
|
-
"x-initiator": isAgentCall ? "agent" : "user"
|
|
480
|
-
};
|
|
481
|
-
prepareInteractionHeaders(options.sessionId, Boolean(options.subagentMarker), headers);
|
|
482
|
-
prepareForCompact(headers, options.isCompact);
|
|
483
|
-
const response = await fetch(`${copilotBaseUrl(state)}/chat/completions`, {
|
|
484
|
-
method: "POST",
|
|
485
|
-
headers,
|
|
486
|
-
body: JSON.stringify(payload)
|
|
487
|
-
});
|
|
488
|
-
if (!response.ok) {
|
|
489
|
-
consola.error("Failed to create chat completions", response);
|
|
490
|
-
throw new HTTPError("Failed to create chat completions", response);
|
|
491
|
-
}
|
|
492
|
-
if (payload.stream) return events(response);
|
|
493
|
-
return await response.json();
|
|
494
|
-
};
|
|
495
|
-
|
|
496
|
-
//#endregion
|
|
497
|
-
//#region src/routes/chat-completions/handler.ts
|
|
498
|
-
const logger$6 = createHandlerLogger("chat-completions-handler");
|
|
499
|
-
async function handleCompletion$1(c) {
|
|
500
|
-
await checkRateLimit(state);
|
|
501
|
-
let payload = await c.req.json();
|
|
502
|
-
debugJsonTail(logger$6, "Request payload:", {
|
|
503
|
-
value: payload,
|
|
504
|
-
tailLength: 400
|
|
505
|
-
});
|
|
506
|
-
const selectedModel = state.models?.data.find((model) => model.id === payload.model);
|
|
507
|
-
try {
|
|
508
|
-
if (selectedModel) {
|
|
509
|
-
const tokenCount = await getTokenCount(payload, selectedModel);
|
|
510
|
-
logger$6.info("Current token count:", tokenCount);
|
|
511
|
-
} else logger$6.warn("No model selected, skipping token count calculation");
|
|
512
|
-
} catch (error) {
|
|
513
|
-
logger$6.warn("Failed to calculate token count:", error);
|
|
514
|
-
}
|
|
515
|
-
if (state.manualApprove) await awaitApproval();
|
|
516
|
-
if (isNullish(payload.max_tokens)) {
|
|
517
|
-
payload = {
|
|
518
|
-
...payload,
|
|
519
|
-
max_tokens: selectedModel?.capabilities.limits.max_output_tokens
|
|
520
|
-
};
|
|
521
|
-
debugJson(logger$6, "Set max_tokens to:", payload.max_tokens);
|
|
522
|
-
}
|
|
523
|
-
const requestId = generateRequestIdFromPayload(payload);
|
|
524
|
-
logger$6.debug("Generated request ID:", requestId);
|
|
525
|
-
const sessionId = getUUID(requestId);
|
|
526
|
-
logger$6.debug("Extracted session ID:", sessionId);
|
|
527
|
-
const response = await createChatCompletions(payload, {
|
|
528
|
-
requestId,
|
|
529
|
-
sessionId
|
|
530
|
-
});
|
|
531
|
-
if (isNonStreaming$1(response)) {
|
|
532
|
-
debugJson(logger$6, "Non-streaming response:", response);
|
|
533
|
-
return c.json(response);
|
|
534
|
-
}
|
|
535
|
-
logger$6.debug("Streaming response");
|
|
536
|
-
return streamSSE(c, async (stream) => {
|
|
537
|
-
for await (const chunk of response) {
|
|
538
|
-
debugJson(logger$6, "Streaming chunk:", chunk);
|
|
539
|
-
await stream.writeSSE(chunk);
|
|
540
|
-
}
|
|
541
|
-
});
|
|
542
|
-
}
|
|
543
|
-
const isNonStreaming$1 = (response) => Object.hasOwn(response, "choices");
|
|
544
|
-
|
|
545
|
-
//#endregion
|
|
546
|
-
//#region src/routes/chat-completions/route.ts
|
|
547
|
-
const completionRoutes = new Hono();
|
|
548
|
-
completionRoutes.post("/", async (c) => {
|
|
549
|
-
try {
|
|
550
|
-
return await handleCompletion$1(c);
|
|
551
|
-
} catch (error) {
|
|
552
|
-
return await forwardError(c, error);
|
|
553
|
-
}
|
|
554
|
-
});
|
|
555
|
-
|
|
556
|
-
//#endregion
|
|
557
|
-
//#region src/services/copilot/create-embeddings.ts
|
|
558
|
-
const createEmbeddings = async (payload) => {
|
|
559
|
-
if (!state.copilotToken) throw new Error("Copilot token not found");
|
|
560
|
-
const response = await fetch(`${copilotBaseUrl(state)}/embeddings`, {
|
|
561
|
-
method: "POST",
|
|
562
|
-
headers: copilotHeaders(state),
|
|
563
|
-
body: JSON.stringify(payload)
|
|
564
|
-
});
|
|
565
|
-
if (!response.ok) throw new HTTPError("Failed to create embeddings", response);
|
|
566
|
-
return await response.json();
|
|
567
|
-
};
|
|
568
|
-
|
|
569
|
-
//#endregion
|
|
570
|
-
//#region src/routes/embeddings/route.ts
|
|
571
|
-
const embeddingRoutes = new Hono();
|
|
572
|
-
embeddingRoutes.post("/", async (c) => {
|
|
573
|
-
try {
|
|
574
|
-
const paylod = await c.req.json();
|
|
575
|
-
const response = await createEmbeddings(paylod);
|
|
576
|
-
return c.json(response);
|
|
577
|
-
} catch (error) {
|
|
578
|
-
return await forwardError(c, error);
|
|
579
|
-
}
|
|
580
|
-
});
|
|
581
|
-
|
|
582
578
|
//#endregion
|
|
583
579
|
//#region src/lib/models.ts
|
|
584
580
|
const findEndpointModel = (sdkModelId) => {
|
|
@@ -3008,4 +3004,4 @@ server.route("/:provider/v1/models", providerModelRoutes);
|
|
|
3008
3004
|
|
|
3009
3005
|
//#endregion
|
|
3010
3006
|
export { server };
|
|
3011
|
-
//# sourceMappingURL=server-
|
|
3007
|
+
//# sourceMappingURL=server-CtHcJs9h.js.map
|