copilot-api-plus 1.0.7 → 1.0.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/README.md +140 -75
- package/dist/{auth-KlL1W4gV.js → auth-BO-mwvoU.js} +1 -1
- package/dist/auth-Cm_0h9bp.js +268 -0
- package/dist/auth-Cm_0h9bp.js.map +1 -0
- package/dist/{auth-C5zV8JbW.js → auth-Cua-c0dq.js} +1 -1
- package/dist/auth-Cua-c0dq.js.map +1 -0
- package/dist/auth-D2wtETTq.js +4 -0
- package/dist/get-models-Bbb8B5jI.js +218 -0
- package/dist/get-models-Bbb8B5jI.js.map +1 -0
- package/dist/{get-models-Hlxa1hWY.js → get-models-DJfPj_Rg.js} +2 -2
- package/dist/get-models-DJfPj_Rg.js.map +1 -0
- package/dist/get-models-Dq2ZDU9m.js +5 -0
- package/dist/{get-user-DgPgvnrS.js → get-user-BFf5xJXg.js} +2 -2
- package/dist/{get-user-DgPgvnrS.js.map → get-user-BFf5xJXg.js.map} +1 -1
- package/dist/get-user-hpkh0FzZ.js +5 -0
- package/dist/main.js +783 -32
- package/dist/main.js.map +1 -1
- package/dist/{state-DAw5jMjc.js → state-CcLGr8VN.js} +3 -2
- package/dist/state-CcLGr8VN.js.map +1 -0
- package/dist/{token-DYeOMeid.js → token-B8crDDoA.js} +14 -12
- package/dist/token-B8crDDoA.js.map +1 -0
- package/dist/{token-BssxOyqn.js → token-DS09XjQ5.js} +3 -3
- package/package.json +3 -2
- package/dist/auth-C5zV8JbW.js.map +0 -1
- package/dist/get-models-Hlxa1hWY.js.map +0 -1
- package/dist/get-user-M3sQS0U8.js +0 -5
- package/dist/state-DAw5jMjc.js.map +0 -1
- package/dist/token-DYeOMeid.js.map +0 -1
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { getValidAccessToken } from "./auth-Cm_0h9bp.js";
|
|
2
|
+
import consola from "consola";
|
|
3
|
+
|
|
4
|
+
//#region src/services/antigravity/get-models.ts
|
|
5
|
+
const ANTIGRAVITY_API_HOST = "daily-cloudcode-pa.sandbox.googleapis.com";
|
|
6
|
+
const ANTIGRAVITY_MODELS_URL = `https://${ANTIGRAVITY_API_HOST}/v1internal:fetchAvailableModels`;
|
|
7
|
+
const ANTIGRAVITY_USER_AGENT = "antigravity/1.11.3 windows/amd64";
|
|
8
|
+
/**
|
|
9
|
+
* Fallback Antigravity models when API is unavailable
|
|
10
|
+
* Based on antigravity2api-nodejs model list
|
|
11
|
+
*/
|
|
12
|
+
const FALLBACK_MODELS = [
|
|
13
|
+
{
|
|
14
|
+
id: "gemini-2.5-pro-exp-03-25",
|
|
15
|
+
object: "model",
|
|
16
|
+
created: 17e8,
|
|
17
|
+
owned_by: "google"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: "gemini-2.5-pro-preview-05-06",
|
|
21
|
+
object: "model",
|
|
22
|
+
created: 17e8,
|
|
23
|
+
owned_by: "google"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "gemini-2.0-flash-exp",
|
|
27
|
+
object: "model",
|
|
28
|
+
created: 17e8,
|
|
29
|
+
owned_by: "google"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "gemini-2.0-flash-001",
|
|
33
|
+
object: "model",
|
|
34
|
+
created: 17e8,
|
|
35
|
+
owned_by: "google"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "gemini-2.0-flash-thinking-exp-1219",
|
|
39
|
+
object: "model",
|
|
40
|
+
created: 17e8,
|
|
41
|
+
owned_by: "google"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "gemini-2.0-flash-thinking-exp",
|
|
45
|
+
object: "model",
|
|
46
|
+
created: 17e8,
|
|
47
|
+
owned_by: "google"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "gemini-2.0-flash-thinking-exp-01-21",
|
|
51
|
+
object: "model",
|
|
52
|
+
created: 17e8,
|
|
53
|
+
owned_by: "google"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "gemini-2.0-pro-exp-02-05",
|
|
57
|
+
object: "model",
|
|
58
|
+
created: 17e8,
|
|
59
|
+
owned_by: "google"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "gemini-1.5-pro",
|
|
63
|
+
object: "model",
|
|
64
|
+
created: 17e8,
|
|
65
|
+
owned_by: "google"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: "gemini-1.5-flash",
|
|
69
|
+
object: "model",
|
|
70
|
+
created: 17e8,
|
|
71
|
+
owned_by: "google"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "gemini-1.5-flash-8b",
|
|
75
|
+
object: "model",
|
|
76
|
+
created: 17e8,
|
|
77
|
+
owned_by: "google"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: "gemini-exp-1206",
|
|
81
|
+
object: "model",
|
|
82
|
+
created: 17e8,
|
|
83
|
+
owned_by: "google"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "learnlm-1.5-pro-experimental",
|
|
87
|
+
object: "model",
|
|
88
|
+
created: 17e8,
|
|
89
|
+
owned_by: "google"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: "claude-opus-4-5",
|
|
93
|
+
object: "model",
|
|
94
|
+
created: 17e8,
|
|
95
|
+
owned_by: "anthropic"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
id: "claude-sonnet-4-5",
|
|
99
|
+
object: "model",
|
|
100
|
+
created: 17e8,
|
|
101
|
+
owned_by: "anthropic"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: "claude-3-5-sonnet-20241022",
|
|
105
|
+
object: "model",
|
|
106
|
+
created: 17e8,
|
|
107
|
+
owned_by: "anthropic"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: "claude-3-5-haiku-20241022",
|
|
111
|
+
object: "model",
|
|
112
|
+
created: 17e8,
|
|
113
|
+
owned_by: "anthropic"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
id: "claude-3-opus-20240229",
|
|
117
|
+
object: "model",
|
|
118
|
+
created: 17e8,
|
|
119
|
+
owned_by: "anthropic"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: "claude-3-sonnet-20240229",
|
|
123
|
+
object: "model",
|
|
124
|
+
created: 17e8,
|
|
125
|
+
owned_by: "anthropic"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
id: "claude-3-haiku-20240307",
|
|
129
|
+
object: "model",
|
|
130
|
+
created: 17e8,
|
|
131
|
+
owned_by: "anthropic"
|
|
132
|
+
}
|
|
133
|
+
];
|
|
134
|
+
let cachedModels = null;
|
|
135
|
+
let cacheTimestamp = 0;
|
|
136
|
+
const CACHE_TTL = 300 * 1e3;
|
|
137
|
+
/**
|
|
138
|
+
* Fetch models from Antigravity API
|
|
139
|
+
*/
|
|
140
|
+
async function fetchModelsFromApi() {
|
|
141
|
+
const accessToken = await getValidAccessToken();
|
|
142
|
+
if (!accessToken) {
|
|
143
|
+
consola.debug("No access token available, using fallback models");
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const response = await fetch(ANTIGRAVITY_MODELS_URL, {
|
|
148
|
+
method: "POST",
|
|
149
|
+
headers: {
|
|
150
|
+
Host: ANTIGRAVITY_API_HOST,
|
|
151
|
+
"User-Agent": ANTIGRAVITY_USER_AGENT,
|
|
152
|
+
Authorization: `Bearer ${accessToken}`,
|
|
153
|
+
"Content-Type": "application/json",
|
|
154
|
+
"Accept-Encoding": "gzip"
|
|
155
|
+
},
|
|
156
|
+
body: JSON.stringify({})
|
|
157
|
+
});
|
|
158
|
+
if (!response.ok) {
|
|
159
|
+
consola.warn(`Failed to fetch Antigravity models: ${response.status}`);
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
const data = await response.json();
|
|
163
|
+
if (!data.models || !Array.isArray(data.models)) return null;
|
|
164
|
+
const models = data.models.filter((m) => {
|
|
165
|
+
return (m.quotaInfo?.remainingFraction ?? 1) > 0;
|
|
166
|
+
}).map((m) => {
|
|
167
|
+
const modelId = m.name.replace("models/", "");
|
|
168
|
+
const isGoogle = modelId.startsWith("gemini") || modelId.startsWith("learnlm");
|
|
169
|
+
return {
|
|
170
|
+
id: modelId,
|
|
171
|
+
object: "model",
|
|
172
|
+
created: 17e8,
|
|
173
|
+
owned_by: isGoogle ? "google" : "anthropic"
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
consola.debug(`Fetched ${models.length} models from Antigravity API`);
|
|
177
|
+
return models;
|
|
178
|
+
} catch (error) {
|
|
179
|
+
consola.warn("Error fetching Antigravity models:", error);
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get available Antigravity models
|
|
185
|
+
*/
|
|
186
|
+
async function getAntigravityModels() {
|
|
187
|
+
if (cachedModels && Date.now() - cacheTimestamp < CACHE_TTL) {
|
|
188
|
+
consola.debug(`Returning ${cachedModels.length} cached Antigravity models`);
|
|
189
|
+
return {
|
|
190
|
+
object: "list",
|
|
191
|
+
data: cachedModels
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
const apiModels = await fetchModelsFromApi();
|
|
195
|
+
if (apiModels && apiModels.length > 0) {
|
|
196
|
+
cachedModels = apiModels;
|
|
197
|
+
cacheTimestamp = Date.now();
|
|
198
|
+
return {
|
|
199
|
+
object: "list",
|
|
200
|
+
data: apiModels
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
consola.debug(`Returning ${FALLBACK_MODELS.length} fallback Antigravity models`);
|
|
204
|
+
return {
|
|
205
|
+
object: "list",
|
|
206
|
+
data: FALLBACK_MODELS
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Check if a model is a thinking/reasoning model
|
|
211
|
+
*/
|
|
212
|
+
function isThinkingModel(modelId) {
|
|
213
|
+
return modelId.includes("thinking");
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
//#endregion
|
|
217
|
+
export { getAntigravityModels, isThinkingModel };
|
|
218
|
+
//# sourceMappingURL=get-models-Bbb8B5jI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-models-Bbb8B5jI.js","names":["FALLBACK_MODELS: Array<AntigravityModel>","cachedModels: Array<AntigravityModel> | null","cacheTimestamp: number","models: Array<AntigravityModel>"],"sources":["../src/services/antigravity/get-models.ts"],"sourcesContent":["/**\n * Google Antigravity Models\n *\n * Provides list of available models from Antigravity.\n * Based on: https://github.com/liuw1535/antigravity2api-nodejs\n */\n\nimport consola from \"consola\"\n\nimport { getValidAccessToken } from \"./auth\"\n\n// Antigravity API endpoints\nconst ANTIGRAVITY_API_HOST = \"daily-cloudcode-pa.sandbox.googleapis.com\"\nconst ANTIGRAVITY_MODELS_URL = `https://${ANTIGRAVITY_API_HOST}/v1internal:fetchAvailableModels`\nconst ANTIGRAVITY_USER_AGENT = \"antigravity/1.11.3 windows/amd64\"\n\nexport interface AntigravityModel {\n id: string\n object: string\n created: number\n owned_by: string\n}\n\nexport interface AntigravityModelsResponse {\n object: string\n data: Array<AntigravityModel>\n}\n\n/**\n * Fallback Antigravity models when API is unavailable\n * Based on antigravity2api-nodejs model list\n */\nconst FALLBACK_MODELS: Array<AntigravityModel> = [\n // Gemini models\n {\n id: \"gemini-2.5-pro-exp-03-25\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-2.5-pro-preview-05-06\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-2.0-flash-exp\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-2.0-flash-001\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-2.0-flash-thinking-exp-1219\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-2.0-flash-thinking-exp\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-2.0-flash-thinking-exp-01-21\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-2.0-pro-exp-02-05\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-1.5-pro\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-1.5-flash\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-1.5-flash-8b\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"gemini-exp-1206\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n {\n id: \"learnlm-1.5-pro-experimental\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"google\",\n },\n\n // Claude models (via Antigravity)\n {\n id: \"claude-opus-4-5\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"anthropic\",\n },\n {\n id: \"claude-sonnet-4-5\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"anthropic\",\n },\n {\n id: \"claude-3-5-sonnet-20241022\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"anthropic\",\n },\n {\n id: \"claude-3-5-haiku-20241022\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"anthropic\",\n },\n {\n id: \"claude-3-opus-20240229\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"anthropic\",\n },\n {\n id: \"claude-3-sonnet-20240229\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"anthropic\",\n },\n {\n id: \"claude-3-haiku-20240307\",\n object: \"model\",\n created: 1700000000,\n owned_by: \"anthropic\",\n },\n]\n\n// Cache for fetched models\nlet cachedModels: Array<AntigravityModel> | null = null\nlet cacheTimestamp: number = 0\nconst CACHE_TTL = 5 * 60 * 1000 // 5 minutes\n\n/**\n * Fetch models from Antigravity API\n */\nasync function fetchModelsFromApi(): Promise<Array<AntigravityModel> | null> {\n const accessToken = await getValidAccessToken()\n\n if (!accessToken) {\n consola.debug(\"No access token available, using fallback models\")\n return null\n }\n\n try {\n const response = await fetch(ANTIGRAVITY_MODELS_URL, {\n method: \"POST\",\n headers: {\n Host: ANTIGRAVITY_API_HOST,\n \"User-Agent\": ANTIGRAVITY_USER_AGENT,\n Authorization: `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n \"Accept-Encoding\": \"gzip\",\n },\n body: JSON.stringify({}),\n })\n\n if (!response.ok) {\n consola.warn(`Failed to fetch Antigravity models: ${response.status}`)\n return null\n }\n\n const data = (await response.json()) as {\n models?: Array<{\n name: string\n quotaInfo?: {\n remainingFraction?: number\n resetTime?: string\n }\n }>\n }\n\n if (!data.models || !Array.isArray(data.models)) {\n return null\n }\n\n // Convert to OpenAI format\n const models: Array<AntigravityModel> = data.models\n .filter((m) => {\n // Filter out models with no remaining quota\n const remaining = m.quotaInfo?.remainingFraction ?? 1\n return remaining > 0\n })\n .map((m) => {\n // Extract model ID from name (e.g., \"models/gemini-2.0-flash\" -> \"gemini-2.0-flash\")\n const modelId = m.name.replace(\"models/\", \"\")\n const isGoogle =\n modelId.startsWith(\"gemini\") || modelId.startsWith(\"learnlm\")\n\n return {\n id: modelId,\n object: \"model\",\n created: 1700000000,\n owned_by: isGoogle ? \"google\" : \"anthropic\",\n }\n })\n\n consola.debug(`Fetched ${models.length} models from Antigravity API`)\n return models\n } catch (error) {\n consola.warn(\"Error fetching Antigravity models:\", error)\n return null\n }\n}\n\n/**\n * Get available Antigravity models\n */\nexport async function getAntigravityModels(): Promise<AntigravityModelsResponse> {\n // Check cache\n if (cachedModels && Date.now() - cacheTimestamp < CACHE_TTL) {\n consola.debug(`Returning ${cachedModels.length} cached Antigravity models`)\n return {\n object: \"list\",\n data: cachedModels,\n }\n }\n\n // Try to fetch from API\n const apiModels = await fetchModelsFromApi()\n\n if (apiModels && apiModels.length > 0) {\n cachedModels = apiModels\n cacheTimestamp = Date.now()\n\n return {\n object: \"list\",\n data: apiModels,\n }\n }\n\n // Use fallback models\n consola.debug(\n `Returning ${FALLBACK_MODELS.length} fallback Antigravity models`,\n )\n\n return {\n object: \"list\",\n data: FALLBACK_MODELS,\n }\n}\n\n/**\n * Check if a model is a Claude model\n */\nexport function isClaudeModel(modelId: string): boolean {\n return modelId.startsWith(\"claude-\")\n}\n\n/**\n * Check if a model is a thinking/reasoning model\n */\nexport function isThinkingModel(modelId: string): boolean {\n return modelId.includes(\"thinking\")\n}\n\n/**\n * Check if a model is an image generation model\n */\nexport function isImageModel(modelId: string): boolean {\n return modelId.includes(\"image\")\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { state } from "./state-
|
|
1
|
+
import { state } from "./state-CcLGr8VN.js";
|
|
2
2
|
import consola from "consola";
|
|
3
3
|
|
|
4
4
|
//#region src/services/zen/get-models.ts
|
|
@@ -30,4 +30,4 @@ async function cacheZenModels() {
|
|
|
30
30
|
|
|
31
31
|
//#endregion
|
|
32
32
|
export { cacheZenModels, getZenModels };
|
|
33
|
-
//# sourceMappingURL=get-models-
|
|
33
|
+
//# sourceMappingURL=get-models-DJfPj_Rg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-models-DJfPj_Rg.js","names":[],"sources":["../src/services/zen/get-models.ts"],"sourcesContent":["/**\n * OpenCode Zen Models\n *\n * Fetches available models from OpenCode Zen.\n */\n\nimport consola from \"consola\"\n\nimport { state } from \"~/lib/state\"\n\nexport interface ZenModel {\n id: string\n object: string\n created: number\n owned_by: string\n}\n\nexport interface ZenModelsResponse {\n object: string\n data: Array<ZenModel>\n}\n\n/**\n * Fetch available models from OpenCode Zen\n */\nexport async function getZenModels(): Promise<ZenModelsResponse> {\n const apiKey = state.zenApiKey\n\n if (!apiKey) {\n throw new Error(\"Zen API key not configured\")\n }\n\n const response = await fetch(\"https://opencode.ai/zen/v1/models\", {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n },\n })\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch Zen models: ${response.status} ${response.statusText}`,\n )\n }\n\n const data = (await response.json()) as ZenModelsResponse\n consola.debug(`Fetched ${data.data.length} models from Zen`)\n\n return data\n}\n\n/**\n * Cache Zen models in state\n */\nexport async function cacheZenModels(): Promise<void> {\n try {\n const models = await getZenModels()\n state.zenModels = models\n consola.info(`Loaded ${models.data.length} Zen models`)\n } catch (error) {\n consola.error(\"Failed to load Zen models:\", error)\n throw error\n }\n}\n"],"mappings":";;;;;;;AAyBA,eAAsB,eAA2C;CAC/D,MAAM,SAAS,MAAM;AAErB,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,6BAA6B;CAG/C,MAAM,WAAW,MAAM,MAAM,qCAAqC,EAChE,SAAS,EACP,eAAe,UAAU,UAC1B,EACF,CAAC;AAEF,KAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MACR,+BAA+B,SAAS,OAAO,GAAG,SAAS,aAC5D;CAGH,MAAM,OAAQ,MAAM,SAAS,MAAM;AACnC,SAAQ,MAAM,WAAW,KAAK,KAAK,OAAO,kBAAkB;AAE5D,QAAO;;;;;AAMT,eAAsB,iBAAgC;AACpD,KAAI;EACF,MAAM,SAAS,MAAM,cAAc;AACnC,QAAM,YAAY;AAClB,UAAQ,KAAK,UAAU,OAAO,KAAK,OAAO,aAAa;UAChD,OAAO;AACd,UAAQ,MAAM,8BAA8B,MAAM;AAClD,QAAM"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { state } from "./state-
|
|
1
|
+
import { state } from "./state-CcLGr8VN.js";
|
|
2
2
|
import { HTTPError } from "./error-CvU5otz-.js";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
|
|
@@ -55,4 +55,4 @@ async function getGitHubUser() {
|
|
|
55
55
|
|
|
56
56
|
//#endregion
|
|
57
57
|
export { GITHUB_API_BASE_URL, GITHUB_APP_SCOPES, GITHUB_BASE_URL, GITHUB_CLIENT_ID, copilotBaseUrl, copilotHeaders, getGitHubUser, githubHeaders, standardHeaders };
|
|
58
|
-
//# sourceMappingURL=get-user-
|
|
58
|
+
//# sourceMappingURL=get-user-BFf5xJXg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-user-
|
|
1
|
+
{"version":3,"file":"get-user-BFf5xJXg.js","names":["state","headers: Record<string, string>"],"sources":["../src/lib/api-config.ts","../src/services/github/get-user.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\"\n\nimport type { State } from \"./state\"\n\nexport const standardHeaders = () => ({\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n})\n\nconst COPILOT_VERSION = \"0.26.7\"\nconst EDITOR_PLUGIN_VERSION = `copilot-chat/${COPILOT_VERSION}`\nconst USER_AGENT = `GitHubCopilotChat/${COPILOT_VERSION}`\n\nconst API_VERSION = \"2025-04-01\"\n\nexport const copilotBaseUrl = (state: State) =>\n state.accountType === \"individual\" ?\n \"https://api.githubcopilot.com\"\n : `https://api.${state.accountType}.githubcopilot.com`\nexport const copilotHeaders = (state: State, vision: boolean = false) => {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${state.copilotToken}`,\n \"content-type\": standardHeaders()[\"content-type\"],\n \"copilot-integration-id\": \"vscode-chat\",\n \"editor-version\": `vscode/${state.vsCodeVersion}`,\n \"editor-plugin-version\": EDITOR_PLUGIN_VERSION,\n \"user-agent\": USER_AGENT,\n \"openai-intent\": \"conversation-panel\",\n \"x-github-api-version\": API_VERSION,\n \"x-request-id\": randomUUID(),\n \"x-vscode-user-agent-library-version\": \"electron-fetch\",\n }\n\n if (vision) headers[\"copilot-vision-request\"] = \"true\"\n\n return headers\n}\n\nexport const GITHUB_API_BASE_URL = \"https://api.github.com\"\nexport const githubHeaders = (state: State) => ({\n ...standardHeaders(),\n authorization: `token ${state.githubToken}`,\n \"editor-version\": `vscode/${state.vsCodeVersion}`,\n \"editor-plugin-version\": EDITOR_PLUGIN_VERSION,\n \"user-agent\": USER_AGENT,\n \"x-github-api-version\": API_VERSION,\n \"x-vscode-user-agent-library-version\": \"electron-fetch\",\n})\n\nexport const GITHUB_BASE_URL = \"https://github.com\"\nexport const GITHUB_CLIENT_ID = \"Iv1.b507a08c87ecfe98\"\nexport const GITHUB_APP_SCOPES = [\"read:user\"].join(\" \")\n","import { GITHUB_API_BASE_URL, standardHeaders } from \"~/lib/api-config\"\nimport { HTTPError } from \"~/lib/error\"\nimport { state } from \"~/lib/state\"\n\nexport async function getGitHubUser() {\n const response = await fetch(`${GITHUB_API_BASE_URL}/user`, {\n headers: {\n authorization: `token ${state.githubToken}`,\n ...standardHeaders(),\n },\n })\n\n if (!response.ok) throw new HTTPError(\"Failed to get GitHub user\", response)\n\n return (await response.json()) as GithubUserResponse\n}\n\n// Trimmed for the sake of simplicity\ninterface GithubUserResponse {\n login: string\n}\n"],"mappings":";;;;;AAIA,MAAa,yBAAyB;CACpC,gBAAgB;CAChB,QAAQ;CACT;AAED,MAAM,kBAAkB;AACxB,MAAM,wBAAwB,gBAAgB;AAC9C,MAAM,aAAa,qBAAqB;AAExC,MAAM,cAAc;AAEpB,MAAa,kBAAkB,YAC7BA,QAAM,gBAAgB,eACpB,kCACA,eAAeA,QAAM,YAAY;AACrC,MAAa,kBAAkB,SAAc,SAAkB,UAAU;CACvE,MAAMC,UAAkC;EACtC,eAAe,UAAUD,QAAM;EAC/B,gBAAgB,iBAAiB,CAAC;EAClC,0BAA0B;EAC1B,kBAAkB,UAAUA,QAAM;EAClC,yBAAyB;EACzB,cAAc;EACd,iBAAiB;EACjB,wBAAwB;EACxB,gBAAgB,YAAY;EAC5B,uCAAuC;EACxC;AAED,KAAI,OAAQ,SAAQ,4BAA4B;AAEhD,QAAO;;AAGT,MAAa,sBAAsB;AACnC,MAAa,iBAAiB,aAAkB;CAC9C,GAAG,iBAAiB;CACpB,eAAe,SAASA,QAAM;CAC9B,kBAAkB,UAAUA,QAAM;CAClC,yBAAyB;CACzB,cAAc;CACd,wBAAwB;CACxB,uCAAuC;CACxC;AAED,MAAa,kBAAkB;AAC/B,MAAa,mBAAmB;AAChC,MAAa,oBAAoB,CAAC,YAAY,CAAC,KAAK,IAAI;;;;AC/CxD,eAAsB,gBAAgB;CACpC,MAAM,WAAW,MAAM,MAAM,GAAG,oBAAoB,QAAQ,EAC1D,SAAS;EACP,eAAe,SAAS,MAAM;EAC9B,GAAG,iBAAiB;EACrB,EACF,CAAC;AAEF,KAAI,CAAC,SAAS,GAAI,OAAM,IAAI,UAAU,6BAA6B,SAAS;AAE5E,QAAQ,MAAM,SAAS,MAAM"}
|