opencode-qwen-oauth 2.1.0 → 2.3.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/index.js CHANGED
@@ -1,32 +1,407 @@
1
1
  /**
2
2
  * Qwen OAuth Plugin for OpenCode
3
3
  * Provides OAuth device flow authentication for Qwen.ai
4
+ * With proactive token refresh via custom fetch loader
4
5
  *
5
6
  * @packageDocumentation
6
7
  */
8
+ const PLUGIN_VERSION = "2.3.0";
9
+ const QWEN_CODE_VERSION = "0.10.3";
10
+ const TOKEN_CACHE_DURATION = 5 * 60 * 1000;
11
+ const REFRESH_BEFORE_EXPIRY_MS = 5 * 60 * 1000;
12
+ let cachedToken = null;
13
+ let cachedTokenExpiry = 0;
14
+ let lastRefreshTime = 0;
7
15
  import { QWEN_API_BASE_URL } from "./constants.js";
8
- import { debugLog, warnLog } from "./logger.js";
9
16
  import { openBrowser } from "./browser.js";
10
17
  import { authorizeDevice, pollForToken, refreshAccessToken } from "./oauth.js";
11
18
  import { Mutex } from "./mutex.js";
12
- import { QwenTokenRefreshError } from "./errors.js";
13
- // Mutex to prevent multiple concurrent authorization flows
19
+ import { getConfig } from "./config.js";
20
+ import { requestQueue } from "./request-queue.js";
21
+ import { saveCredentials, loadCredentials } from "./credentials.js";
14
22
  const authorizationMutex = new Mutex();
15
- export const QwenOAuthPlugin = async ({ project, client, $, directory, worktree, }) => {
23
+ const tokenRefreshMutex = new Mutex();
24
+ let cachedAuth = null;
25
+ function resetTokenCache() {
26
+ cachedToken = null;
27
+ cachedTokenExpiry = 0;
28
+ lastRefreshTime = 0;
29
+ }
30
+ export const QwenOAuthPlugin = async ({ project, client, directory, worktree, }) => {
31
+ const log = async (level, message, data) => {
32
+ try {
33
+ await client.app.log({
34
+ body: {
35
+ service: "qwen-oauth",
36
+ level,
37
+ message,
38
+ extra: data,
39
+ },
40
+ });
41
+ }
42
+ catch {
43
+ // Fallback to console if client.app.log fails
44
+ console.log(`[${level}] ${message}`, data || "");
45
+ }
46
+ };
47
+ const debugLog = (message, data) => log("debug", message, data);
48
+ const infoLog = (message, data) => log("info", message, data);
49
+ const warnLog = (message, data) => log("warn", message, data);
16
50
  debugLog("Plugin initialized", {
17
51
  directory,
18
52
  worktree,
19
53
  project: project?.name || "N/A",
20
54
  });
55
+ const config = getConfig();
21
56
  return {
22
57
  auth: {
23
58
  provider: "qwen",
59
+ async loader(getAuth, provider) {
60
+ // First try to get auth from OpenCode runtime
61
+ let auth = await getAuth();
62
+ // If no valid runtime auth, try loading from file
63
+ if (!auth || auth.type !== "oauth" || !auth.access || !auth.refresh) {
64
+ console.log("[Qwen] No runtime auth, trying to load from file...");
65
+ const fileCredentials = loadCredentials();
66
+ if (fileCredentials && fileCredentials.accessToken && fileCredentials.refreshToken) {
67
+ console.log("[Qwen] Loaded credentials from file", {
68
+ hasAccess: !!fileCredentials.accessToken,
69
+ hasRefresh: !!fileCredentials.refreshToken,
70
+ expiryDate: fileCredentials.expiryDate,
71
+ });
72
+ // Use file credentials as fallback
73
+ auth = {
74
+ type: "oauth",
75
+ access: fileCredentials.accessToken,
76
+ refresh: fileCredentials.refreshToken,
77
+ expires: fileCredentials.expiryDate,
78
+ };
79
+ }
80
+ }
81
+ debugLog("Auth loader called", {
82
+ hasAuth: !!auth,
83
+ authType: auth?.type,
84
+ hasAccess: !!auth?.access,
85
+ hasAccessToken: !!auth?.access_token,
86
+ hasAccessTokenCamel: !!auth?.accessToken,
87
+ hasRefresh: !!auth?.refresh,
88
+ hasRefreshToken: !!auth?.refresh_token,
89
+ hasRefreshTokenCamel: !!auth?.refreshToken,
90
+ expires: auth?.expires,
91
+ expiresAt: auth?.expires_at,
92
+ });
93
+ if (!auth || auth.type !== "oauth") {
94
+ return {};
95
+ }
96
+ // Handle multiple field name formats:
97
+ // - OpenCode uses camelCase: accessToken, refreshToken
98
+ // - OAuth spec uses snake_case: access_token, refresh_token
99
+ // - Plugin internal uses short names: access, refresh
100
+ // - Qwen-specific: apiKey or api_key for API endpoint access
101
+ const normalizedAuth = {
102
+ type: "oauth",
103
+ access: auth.access || auth.access_token || auth.accessToken || "",
104
+ refresh: auth.refresh || auth.refresh_token || auth.refreshToken || "",
105
+ expires: auth.expires || auth.expires_at || 0,
106
+ apiKey: auth.apiKey || auth.api_key || undefined,
107
+ };
108
+ // Defensive check: ensure we actually have tokens
109
+ if (!normalizedAuth.access || !normalizedAuth.refresh) {
110
+ warnLog("Empty tokens after normalization - authentication may have failed", {
111
+ hasAccess: !!normalizedAuth.access,
112
+ hasRefresh: !!normalizedAuth.refresh,
113
+ authKeys: Object.keys(auth),
114
+ authValue: JSON.stringify(auth).substring(0, 200), // First 200 chars for debugging
115
+ });
116
+ return {};
117
+ }
118
+ // Check if token is already expired
119
+ const now = Date.now();
120
+ const isExpired = normalizedAuth.expires && normalizedAuth.expires <= now;
121
+ const timeUntilExpiry = normalizedAuth.expires ? normalizedAuth.expires - now : 0;
122
+ debugLog("Auth successfully normalized", {
123
+ hasAccess: !!normalizedAuth.access,
124
+ hasRefresh: !!normalizedAuth.refresh,
125
+ hasApiKey: !!normalizedAuth.apiKey,
126
+ expiresAt: normalizedAuth.expires ? new Date(normalizedAuth.expires).toISOString() : "never",
127
+ expiresIn: timeUntilExpiry > 0 ? Math.round(timeUntilExpiry / 1000) + "s" : "EXPIRED",
128
+ isExpired,
129
+ });
130
+ // Log which token will be used for API calls
131
+ if (normalizedAuth.apiKey) {
132
+ infoLog("Using separate API key for Qwen API calls (different from OAuth access token)");
133
+ }
134
+ if (isExpired) {
135
+ warnLog("Token is already expired, will refresh on first request", {
136
+ expiredAt: normalizedAuth.expires ? new Date(normalizedAuth.expires).toISOString() : "unknown",
137
+ expiredAgo: Math.round((now - (normalizedAuth.expires || now)) / 1000) + " seconds ago",
138
+ });
139
+ }
140
+ else {
141
+ infoLog("Auth loader: Tokens loaded successfully", {
142
+ expiresIn: normalizedAuth.expires ? Math.round((normalizedAuth.expires - Date.now()) / 1000 / 60) + " minutes" : "unknown",
143
+ hasApiKey: !!normalizedAuth.apiKey,
144
+ });
145
+ }
146
+ cachedAuth = normalizedAuth;
147
+ const refreshTokenIfNeeded = async () => {
148
+ const now = Date.now();
149
+ if (cachedToken && now < cachedTokenExpiry && now - lastRefreshTime < TOKEN_CACHE_DURATION) {
150
+ if (cachedAuth) {
151
+ return cachedAuth;
152
+ }
153
+ }
154
+ if (!cachedAuth) {
155
+ throw new Error("No authentication available");
156
+ }
157
+ const expiresAt = cachedAuth.expires || 0;
158
+ const timeUntilExpiry = expiresAt - now;
159
+ const hasValidExpiry = expiresAt > now;
160
+ const shouldRefresh = !cachedAuth.access ||
161
+ !hasValidExpiry ||
162
+ timeUntilExpiry < REFRESH_BEFORE_EXPIRY_MS;
163
+ debugLog("Token refresh check", {
164
+ hasAccess: !!cachedAuth.access,
165
+ expiresAt: expiresAt > 0 ? new Date(expiresAt).toISOString() : "not set",
166
+ timeUntilExpiry: timeUntilExpiry > 0 ? Math.round(timeUntilExpiry / 1000) + "s" : "EXPIRED",
167
+ hasValidExpiry,
168
+ refreshThreshold: REFRESH_BEFORE_EXPIRY_MS,
169
+ shouldRefresh,
170
+ cachedToken: !!cachedToken,
171
+ cacheValid: !!(cachedToken && now < cachedTokenExpiry),
172
+ });
173
+ if (!shouldRefresh && cachedToken) {
174
+ debugLog("Token is still valid (cached), no refresh needed");
175
+ return cachedAuth;
176
+ }
177
+ infoLog("Token refresh needed - attempting refresh", {
178
+ reason: !cachedAuth.access ? "no access token" :
179
+ !hasValidExpiry ? "token expired" :
180
+ "token expires soon",
181
+ timeUntilExpiry: timeUntilExpiry > 0 ? Math.round(timeUntilExpiry / 1000) + "s" : "EXPIRED",
182
+ });
183
+ return tokenRefreshMutex.runExclusive(async () => {
184
+ const currentAuth = cachedAuth;
185
+ if (!currentAuth || !currentAuth.refresh) {
186
+ throw new Error("No refresh token available");
187
+ }
188
+ const result = await refreshAccessToken(currentAuth.refresh);
189
+ if (result.success && result.access_token) {
190
+ const expiresIn = result.expires_in || 0;
191
+ // Only update expiry if valid (> 0), otherwise use 1 hour default
192
+ const newExpires = expiresIn > 0
193
+ ? Date.now() + expiresIn * 1000
194
+ : Date.now() + 3600 * 1000; // Default: 1 hour from now
195
+ const newAuth = {
196
+ type: "oauth",
197
+ refresh: result.refresh_token || currentAuth.refresh,
198
+ access: result.access_token,
199
+ expires: newExpires,
200
+ apiKey: result.api_key || currentAuth.apiKey, // Preserve or update API key
201
+ };
202
+ cachedAuth = newAuth;
203
+ cachedToken = newAuth.access;
204
+ cachedTokenExpiry = newExpires;
205
+ lastRefreshTime = Date.now();
206
+ // Save refreshed credentials to file
207
+ saveCredentials({
208
+ accessToken: newAuth.access,
209
+ refreshToken: newAuth.refresh,
210
+ expiryDate: newExpires,
211
+ tokenType: "Bearer",
212
+ });
213
+ try {
214
+ await client.auth.set({
215
+ path: { id: "qwen" },
216
+ body: newAuth,
217
+ });
218
+ debugLog("Token refreshed and stored", {
219
+ expires: newAuth.expires,
220
+ });
221
+ }
222
+ catch (storeError) {
223
+ debugLog("Failed to store refreshed token", {
224
+ error: String(storeError),
225
+ });
226
+ }
227
+ return newAuth;
228
+ }
229
+ debugLog("Token refresh failed", { error: result.error });
230
+ throw new Error(result.error || "Token refresh failed");
231
+ });
232
+ };
233
+ return {
234
+ apiKey: "",
235
+ async fetch(input, init) {
236
+ let auth;
237
+ try {
238
+ auth = await refreshTokenIfNeeded();
239
+ }
240
+ catch (refreshError) {
241
+ warnLog("Failed to refresh token before API call", {
242
+ error: String(refreshError),
243
+ });
244
+ // Return a clear error response
245
+ return new Response(JSON.stringify({
246
+ error: {
247
+ code: "token_refresh_failed",
248
+ message: "Failed to refresh your Qwen authentication token. Please run '/connect' in OpenCode to re-authenticate.",
249
+ type: "auth_error",
250
+ details: refreshError instanceof Error ? refreshError.message : String(refreshError)
251
+ }
252
+ }), {
253
+ status: 401,
254
+ headers: { "Content-Type": "application/json" },
255
+ });
256
+ }
257
+ const userAgent = `QwenCode/${QWEN_CODE_VERSION} (${process.platform}; ${process.arch})`;
258
+ return requestQueue.enqueue(async () => {
259
+ for (let attempt = 0; attempt <= 2; attempt++) {
260
+ let url;
261
+ if (typeof input === "string") {
262
+ url = input;
263
+ }
264
+ else if (input instanceof URL) {
265
+ url = input.toString();
266
+ }
267
+ else {
268
+ url = input.url;
269
+ }
270
+ const headers = new Headers(init?.headers);
271
+ const tokenToUse = auth.apiKey || auth.access;
272
+ if (tokenToUse) {
273
+ headers.set("Authorization", `Bearer ${tokenToUse}`);
274
+ headers.set("User-Agent", userAgent);
275
+ headers.set("X-DashScope-CacheControl", "enable");
276
+ headers.set("X-DashScope-UserAgent", userAgent);
277
+ headers.set("X-DashScope-AuthType", "qwen-oauth");
278
+ debugLog("Making API request with token", {
279
+ url,
280
+ attempt,
281
+ tokenType: auth.apiKey ? "API Key" : "OAuth Access Token",
282
+ tokenLength: tokenToUse.length,
283
+ tokenPrefix: tokenToUse.substring(0, 20) + "...",
284
+ hasExpiry: !!auth.expires,
285
+ expiresAt: auth.expires ? new Date(auth.expires).toISOString() : "not set",
286
+ isExpired: auth.expires ? auth.expires <= Date.now() : "unknown",
287
+ });
288
+ }
289
+ else {
290
+ warnLog("No access token or API key available for API request", { url });
291
+ }
292
+ const response = await fetch(url, {
293
+ ...init,
294
+ headers,
295
+ });
296
+ debugLog("API response received", {
297
+ url,
298
+ status: response.status,
299
+ statusText: response.statusText,
300
+ attempt,
301
+ });
302
+ if (response.status === 429) {
303
+ const retryAfter = response.headers.get("Retry-After") || "60";
304
+ const waitTimeMs = Number.parseInt(retryAfter, 10) * 1000;
305
+ warnLog("Rate limited (429), waiting and retrying", {
306
+ retryAfter,
307
+ waitTimeMs,
308
+ url,
309
+ });
310
+ await new Promise(resolve => setTimeout(resolve, waitTimeMs));
311
+ continue;
312
+ }
313
+ if (response.status === 401 || response.status === 403) {
314
+ const errorBody = await response.clone().json().catch(() => ({}));
315
+ warnLog("Received 401/403 Unauthorized from Qwen API", {
316
+ attempt,
317
+ url,
318
+ error: errorBody.error || errorBody.message,
319
+ });
320
+ const refreshedAuth = await tokenRefreshMutex.runExclusive(async () => {
321
+ const currentAuth = cachedAuth;
322
+ if (!currentAuth || !currentAuth.refresh) {
323
+ throw new Error("No refresh token available");
324
+ }
325
+ const result = await refreshAccessToken(currentAuth.refresh);
326
+ if (result.success && result.access_token) {
327
+ const expiresIn = result.expires_in || 0;
328
+ const newExpires = expiresIn > 0
329
+ ? Date.now() + expiresIn * 1000
330
+ : Date.now() + 3600 * 1000;
331
+ const newAuth = {
332
+ type: "oauth",
333
+ refresh: result.refresh_token || currentAuth.refresh,
334
+ access: result.access_token,
335
+ expires: newExpires,
336
+ apiKey: result.api_key || currentAuth.apiKey,
337
+ };
338
+ cachedAuth = newAuth;
339
+ // Save refreshed credentials to file
340
+ saveCredentials({
341
+ accessToken: newAuth.access,
342
+ refreshToken: newAuth.refresh,
343
+ expiryDate: newExpires,
344
+ tokenType: "Bearer",
345
+ });
346
+ try {
347
+ await client.auth.set({
348
+ path: { id: "qwen" },
349
+ body: newAuth,
350
+ });
351
+ }
352
+ catch (storeError) {
353
+ debugLog("Failed to store refreshed token after 401", {
354
+ error: String(storeError),
355
+ });
356
+ }
357
+ return newAuth;
358
+ }
359
+ debugLog("Token refresh failed after 401", { error: result.error });
360
+ return null;
361
+ });
362
+ if (refreshedAuth) {
363
+ auth = refreshedAuth;
364
+ debugLog("Retrying request with refreshed token", { attempt: attempt + 1 });
365
+ continue;
366
+ }
367
+ else {
368
+ warnLog("Authentication failed - please re-authenticate", {
369
+ url,
370
+ suggestion: "Run '/connect' in OpenCode to re-authenticate with Qwen"
371
+ });
372
+ return new Response(JSON.stringify({
373
+ error: {
374
+ code: "authentication_required",
375
+ message: "Your Qwen authentication has expired. Please run '/connect' in OpenCode and re-authenticate.",
376
+ type: "auth_error"
377
+ }
378
+ }), {
379
+ status: 401,
380
+ headers: { "Content-Type": "application/json" },
381
+ });
382
+ }
383
+ }
384
+ return response;
385
+ }
386
+ return new Response(JSON.stringify({
387
+ error: {
388
+ code: "max_retries_exceeded",
389
+ message: "Maximum retry attempts exceeded",
390
+ type: "server_error"
391
+ }
392
+ }), {
393
+ status: 500,
394
+ headers: { "Content-Type": "application/json" },
395
+ });
396
+ });
397
+ },
398
+ };
399
+ },
24
400
  methods: [
25
401
  {
26
402
  type: "oauth",
27
403
  label: "Qwen Code (qwen.ai OAuth)",
28
404
  authorize: async () => {
29
- // Check if authorization is already in progress
30
405
  if (authorizationMutex.isLocked()) {
31
406
  warnLog("Authorization already in progress");
32
407
  throw new Error("Authorization already in progress. Please wait for the current flow to complete.");
@@ -35,7 +410,6 @@ export const QwenOAuthPlugin = async ({ project, client, $, directory, worktree,
35
410
  debugLog("Starting Qwen OAuth device flow...");
36
411
  const device = await authorizeDevice();
37
412
  const url = device.verification_uri_complete || device.verification_uri;
38
- // Try to open browser automatically
39
413
  openBrowser(url);
40
414
  debugLog("Device authorization received", {
41
415
  user_code: device.user_code,
@@ -51,40 +425,50 @@ export const QwenOAuthPlugin = async ({ project, client, $, directory, worktree,
51
425
  debugLog("Polling for OAuth token...");
52
426
  const result = await pollForToken(device.device_code, device.verifier, device.interval, device.expires_in);
53
427
  if (result.success) {
428
+ const expiresIn = result.expires_in || 0;
429
+ // Default to 6 hours (21600s) if not provided, matching Qwen's typical expiry
430
+ const expires = expiresIn > 0
431
+ ? Date.now() + expiresIn * 1000
432
+ : Date.now() + 21600 * 1000;
433
+ const authResult = {
434
+ type: "oauth",
435
+ refresh: result.refresh_token || "",
436
+ access: result.access_token || "",
437
+ expires,
438
+ apiKey: result.api_key,
439
+ };
440
+ cachedAuth = authResult;
441
+ // Save credentials to file for persistence across sessions
442
+ console.log("[Qwen] Saving credentials after OAuth...");
443
+ saveCredentials({
444
+ accessToken: result.access_token || "",
445
+ refreshToken: result.refresh_token,
446
+ expiryDate: expires,
447
+ tokenType: "Bearer",
448
+ });
449
+ console.log("[Qwen] Credentials saved to ~/.qwen/oauth_creds.json");
54
450
  debugLog("Qwen authentication successful!", {
55
451
  expires_in: result.expires_in,
56
452
  has_refresh: !!result.refresh_token,
453
+ has_api_key: !!result.api_key,
57
454
  });
455
+ if (result.api_key) {
456
+ infoLog("Received separate API key for Qwen API - will use for API calls");
457
+ }
58
458
  return {
59
459
  type: "success",
60
- access: result.access_token,
61
- refresh: result.refresh_token,
62
- expires: Date.now() + result.expires_in * 1000,
460
+ refresh: result.refresh_token || "",
461
+ access: result.access_token || "",
462
+ expires: expires || 0,
463
+ apiKey: result.api_key, // Qwen-specific API key
464
+ api_key: result.api_key, // Also include snake_case version for compatibility
63
465
  };
64
466
  }
65
467
  debugLog(`Authentication failed: ${result.error}`);
66
468
  return { type: "failed", error: result.error };
67
469
  },
68
470
  };
69
- }); // End runExclusive
70
- },
71
- refresh: async (refreshToken) => {
72
- debugLog("Refreshing Qwen access token...");
73
- const result = await refreshAccessToken(refreshToken);
74
- if (result.success) {
75
- debugLog("Token refresh successful", {
76
- expires_in: result.expires_in,
77
- has_refresh: !!result.refresh_token,
78
- });
79
- return {
80
- type: "success",
81
- access: result.access_token,
82
- refresh: result.refresh_token,
83
- expires: Date.now() + result.expires_in * 1000,
84
- };
85
- }
86
- debugLog(`Token refresh failed: ${result.error}`);
87
- throw new QwenTokenRefreshError(result.error || "Invalid refresh token or client_id");
471
+ });
88
472
  },
89
473
  },
90
474
  ],
@@ -99,21 +483,23 @@ export const QwenOAuthPlugin = async ({ project, client, $, directory, worktree,
99
483
  baseURL: QWEN_API_BASE_URL,
100
484
  },
101
485
  models: {
102
- "qwen3-coder-plus": {
103
- id: "qwen3-coder-plus",
104
- name: "Qwen3 Coder Plus",
486
+ "coder-model": {
487
+ id: "coder-model",
488
+ name: "Qwen Coder",
489
+ limit: { context: 1048576, output: 65536 },
490
+ modalities: { input: ["text"], output: ["text"] },
105
491
  },
106
- "qwen3-vl-plus": {
107
- id: "qwen3-vl-plus",
108
- name: "Qwen3 VL Plus",
492
+ "vision-model": {
493
+ id: "vision-model",
494
+ name: "Qwen Vision",
495
+ limit: { context: 131072, output: 32768 },
496
+ modalities: { input: ["text", "image"], output: ["text"] },
109
497
  attachment: true,
110
498
  },
111
499
  },
112
500
  };
113
501
  },
114
- // Event monitoring hook
115
502
  event: async ({ event }) => {
116
- // Log important events for debugging
117
503
  if (event.type === "session.error") {
118
504
  debugLog("Session error occurred", {
119
505
  type: event.type,
@@ -127,29 +513,28 @@ export const QwenOAuthPlugin = async ({ project, client, $, directory, worktree,
127
513
  });
128
514
  }
129
515
  },
130
- // Inject custom headers for Qwen API requests
131
516
  "chat.headers": async (input, output) => {
132
- // Only add headers for Qwen provider
133
- if (input.provider.info.id === "qwen") {
517
+ const providerId = input.provider?.info?.id || input.provider?.id;
518
+ if (providerId === "qwen" || providerId === "qwen-code") {
134
519
  debugLog("Adding custom headers for Qwen request", {
135
520
  model: input.model.id,
136
521
  session: input.sessionID,
522
+ providerId,
137
523
  });
138
- // Add any custom headers needed for Qwen
139
- // OpenCode will automatically handle the Authorization header
140
- output.headers["X-Qwen-Client"] = "OpenCode";
141
- output.headers["X-Qwen-Plugin-Version"] = "1.1.0";
524
+ const userAgent = `QwenCode/${QWEN_CODE_VERSION} (${process.platform}; ${process.arch})`;
525
+ output.headers["User-Agent"] = userAgent;
526
+ output.headers["X-DashScope-CacheControl"] = "enable";
527
+ output.headers["X-DashScope-UserAgent"] = userAgent;
528
+ output.headers["X-DashScope-AuthType"] = "qwen-oauth";
142
529
  }
143
530
  },
144
- // Customize model parameters for Qwen
145
531
  "chat.params": async (input, output) => {
146
- if (input.provider.info.id === "qwen") {
532
+ const providerId = input.provider?.info?.id || input.provider?.id;
533
+ if (providerId === "qwen" || providerId === "qwen-code") {
147
534
  debugLog("Customizing parameters for Qwen model", {
148
535
  model: input.model.id,
149
536
  current_temp: output.temperature,
150
537
  });
151
- // Qwen models work well with these defaults
152
- // Users can override these in their config
153
538
  if (output.temperature === undefined) {
154
539
  output.temperature = 0.7;
155
540
  }
@@ -158,13 +543,11 @@ export const QwenOAuthPlugin = async ({ project, client, $, directory, worktree,
158
543
  }
159
544
  }
160
545
  },
161
- // Expose Qwen credentials as environment variables if needed
162
546
  "shell.env": async (input, output) => {
163
547
  debugLog("Setting up shell environment", {
164
548
  cwd: input.cwd,
165
549
  hasSession: !!input.sessionID,
166
550
  });
167
- // Add Qwen-specific environment variables
168
551
  output.env.QWEN_API_BASE_URL = QWEN_API_BASE_URL;
169
552
  output.env.QWEN_PROVIDER = "qwen";
170
553
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/oauth.d.ts CHANGED
@@ -16,6 +16,7 @@ export declare function pollForToken(deviceCode: string, codeVerifier: string, i
16
16
  access_token?: string;
17
17
  refresh_token?: string;
18
18
  expires_in?: number;
19
+ api_key?: string;
19
20
  error?: string;
20
21
  }>;
21
22
  /**
@@ -28,6 +29,7 @@ export declare function refreshAccessToken(refreshToken: string): Promise<{
28
29
  access_token?: string;
29
30
  refresh_token?: string;
30
31
  expires_in?: number;
32
+ api_key?: string;
31
33
  error?: string;
32
34
  }>;
33
35
  //# sourceMappingURL=oauth.d.ts.map