@jeffreycao/copilot-api 1.6.8 → 1.7.0
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-BgOK9NO8.js → auth-B6D-4_Zg.js} +3 -3
- package/dist/{auth-BgOK9NO8.js.map → auth-B6D-4_Zg.js.map} +1 -1
- package/dist/{check-usage-B2MnS4b2.js → check-usage-V8cDF1DL.js} +3 -3
- package/dist/{check-usage-B2MnS4b2.js.map → check-usage-V8cDF1DL.js.map} +1 -1
- package/dist/main.js +3 -3
- package/dist/{server-jMqH40cG.js → server-DlqNGEvC.js} +21 -4
- package/dist/server-DlqNGEvC.js.map +1 -0
- package/dist/{start-qKFtfVYQ.js → start-Dn_kSV3T.js} +4 -4
- package/dist/{start-qKFtfVYQ.js.map → start-Dn_kSV3T.js.map} +1 -1
- package/dist/{token-D60pjKIw.js → token-B_7Re97c.js} +2 -2
- package/dist/{token-D60pjKIw.js.map → token-B_7Re97c.js.map} +1 -1
- package/dist/{utils-B4L29Swq.js → utils-C5ee29lf.js} +10 -3
- package/dist/utils-C5ee29lf.js.map +1 -0
- package/package.json +1 -1
- package/dist/server-jMqH40cG.js.map +0 -1
- package/dist/utils-B4L29Swq.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-C5ee29lf.js";
|
|
3
|
+
import { setupGitHubToken } from "./token-B_7Re97c.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-B6D-4_Zg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-
|
|
1
|
+
{"version":3,"file":"auth-B6D-4_Zg.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-C5ee29lf.js";
|
|
3
|
+
import { setupGitHubToken } from "./token-B_7Re97c.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-V8cDF1DL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-usage-
|
|
1
|
+
{"version":3,"file":"check-usage-V8cDF1DL.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-B6D-4_Zg.js");
|
|
24
|
+
const { checkUsage } = await import("./check-usage-V8cDF1DL.js");
|
|
25
25
|
const { debug } = await import("./debug-DcC7ZPH0.js");
|
|
26
|
-
const { start } = await import("./start-
|
|
26
|
+
const { start } = await import("./start-Dn_kSV3T.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 { COMPACT_AUTO_CONTINUE, COMPACT_REQUEST, HTTPError, cacheModels, compactAutoContinuePromptStarts, compactMessageSections, compactSummaryPromptStart,
|
|
2
|
+
import { COMPACT_AUTO_CONTINUE, COMPACT_REQUEST, HTTPError, cacheModels, compactAutoContinuePromptStarts, compactMessageSections, compactSummaryPromptStart, compactSystemPromptStarts, compactTextOnlyGuard, copilotBaseUrl, copilotHeaders, forwardError, generateRequestIdFromPayload, getCopilotUsage, getRootSessionId, getUUID, isNullish, parseUserIdMetadata, prepareForCompact, prepareInteractionHeaders, prepareMessageProxyHeaders, requestContext, resolveTraceId, sleep, state } from "./utils-C5ee29lf.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";
|
|
@@ -2030,9 +2030,9 @@ const getCompactType = (anthropicPayload) => {
|
|
|
2030
2030
|
if (lastMessage && isCompactMessage(lastMessage)) return COMPACT_REQUEST;
|
|
2031
2031
|
if (lastMessage && isCompactAutoContinueMessage(lastMessage)) return COMPACT_AUTO_CONTINUE;
|
|
2032
2032
|
const system = anthropicPayload.system;
|
|
2033
|
-
if (typeof system === "string") return system.startsWith(
|
|
2033
|
+
if (typeof system === "string") return compactSystemPromptStarts.some((promptStart) => system.startsWith(promptStart)) ? COMPACT_REQUEST : 0;
|
|
2034
2034
|
if (!Array.isArray(system)) return 0;
|
|
2035
|
-
if (system.some((msg) => typeof msg.text === "string" && msg.text.startsWith(
|
|
2035
|
+
if (system.some((msg) => typeof msg.text === "string" && compactSystemPromptStarts.some((promptStart) => msg.text.startsWith(promptStart)))) return COMPACT_REQUEST;
|
|
2036
2036
|
return 0;
|
|
2037
2037
|
};
|
|
2038
2038
|
const mergeContentWithText = (tr, textBlock) => {
|
|
@@ -2621,6 +2621,8 @@ const handleWithMessagesApi = async (c, anthropicPayload, options) => {
|
|
|
2621
2621
|
for await (const event of response) {
|
|
2622
2622
|
const eventName = event.event;
|
|
2623
2623
|
const data = event.data ?? "";
|
|
2624
|
+
if (data === "[DONE]") break;
|
|
2625
|
+
if (!data) continue;
|
|
2624
2626
|
debugLazy(logger$7, () => ["Messages raw stream event:", data]);
|
|
2625
2627
|
await stream.writeSSE({
|
|
2626
2628
|
event: eventName,
|
|
@@ -3073,6 +3075,7 @@ const handleResponses = async (c) => {
|
|
|
3073
3075
|
const sessionId = getUUID(requestId);
|
|
3074
3076
|
logger$1.debug("Extracted session ID:", sessionId);
|
|
3075
3077
|
useFunctionApplyPatch(payload);
|
|
3078
|
+
removeUnsupportedTools(payload);
|
|
3076
3079
|
if (!isResponsesApiWebSearchEnabled()) removeWebSearchTool(payload);
|
|
3077
3080
|
compactInputByLatestCompaction(payload);
|
|
3078
3081
|
const selectedModel = state.models?.data.find((model) => model.id === payload.model);
|
|
@@ -3144,6 +3147,20 @@ const removeWebSearchTool = (payload) => {
|
|
|
3144
3147
|
return t.type !== "web_search";
|
|
3145
3148
|
});
|
|
3146
3149
|
};
|
|
3150
|
+
const COPILOT_UNSUPPORTED_TOOL_TYPES = new Set(["image_generation"]);
|
|
3151
|
+
const removeUnsupportedTools = (payload) => {
|
|
3152
|
+
if (!Array.isArray(payload.tools) || payload.tools.length === 0) return;
|
|
3153
|
+
const dropped = [];
|
|
3154
|
+
payload.tools = payload.tools.filter((t) => {
|
|
3155
|
+
const type = t.type;
|
|
3156
|
+
if (COPILOT_UNSUPPORTED_TOOL_TYPES.has(type)) {
|
|
3157
|
+
dropped.push(type);
|
|
3158
|
+
return false;
|
|
3159
|
+
}
|
|
3160
|
+
return true;
|
|
3161
|
+
});
|
|
3162
|
+
if (dropped.length > 0) logger$1.debug("Removed unsupported tools:", dropped);
|
|
3163
|
+
};
|
|
3147
3164
|
|
|
3148
3165
|
//#endregion
|
|
3149
3166
|
//#region src/routes/responses/route.ts
|
|
@@ -3217,4 +3234,4 @@ server.route("/:provider/v1/models", providerModelRoutes);
|
|
|
3217
3234
|
|
|
3218
3235
|
//#endregion
|
|
3219
3236
|
export { server };
|
|
3220
|
-
//# sourceMappingURL=server-
|
|
3237
|
+
//# sourceMappingURL=server-DlqNGEvC.js.map
|