qwen-opencode-provider 3.2.1 → 3.2.3

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 (2) hide show
  1. package/index.js +14 -27
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -85,10 +85,10 @@ async function validateToken(apiKey) {
85
85
  hostname: 'qwen.aikit.club',
86
86
  port: 443,
87
87
  path: '/v1/validate',
88
- method: 'GET',
88
+ method: 'POST',
89
89
  headers: {
90
90
  'Host': 'qwen.aikit.club',
91
- 'Authorization': `Bearer ${apiKey}`
91
+ 'Content-Type': 'application/json'
92
92
  }
93
93
  };
94
94
 
@@ -98,46 +98,38 @@ async function validateToken(apiKey) {
98
98
  res.on('end', () => {
99
99
  try {
100
100
  const json = JSON.parse(data);
101
- log(`[Validate] Status: ${res.statusCode}, Response: ${JSON.stringify(json).substring(0, 100)}`);
101
+ log(`[Validate] Status: ${res.statusCode}`);
102
102
 
103
- // Valid token returns user info, invalid returns error
104
103
  if (res.statusCode === 200 && json.id) {
105
104
  resolve({ valid: true, data: json });
106
105
  } else {
107
106
  resolve({ valid: false, error: json.error || 'Unknown error' });
108
107
  }
109
108
  } catch (e) {
110
- log(`[Validate] Parse error: ${e.message}`);
111
109
  resolve({ valid: false, error: e.message });
112
110
  }
113
111
  });
114
112
  });
115
113
 
116
- req.on('error', (e) => {
117
- log(`[Validate] Error: ${e.message}`);
118
- resolve({ valid: false, error: e.message });
119
- });
120
-
114
+ req.on('error', (e) => resolve({ valid: false, error: e.message }));
115
+ req.write(JSON.stringify({ token: apiKey }));
121
116
  req.end();
122
117
  });
123
118
  }
124
119
 
125
120
  async function refreshToken() {
126
121
  const currentKey = readApiKeyFromAuth();
127
- if (!currentKey) {
128
- log(`[Refresh] No current token to refresh`);
129
- return null;
130
- }
122
+ if (!currentKey) return null;
131
123
 
132
124
  return new Promise((resolve) => {
133
125
  const options = {
134
126
  hostname: 'qwen.aikit.club',
135
127
  port: 443,
136
128
  path: '/v1/refresh',
137
- method: 'GET',
129
+ method: 'POST',
138
130
  headers: {
139
131
  'Host': 'qwen.aikit.club',
140
- 'Authorization': `Bearer ${currentKey}`
132
+ 'Content-Type': 'application/json'
141
133
  }
142
134
  };
143
135
 
@@ -147,29 +139,24 @@ async function refreshToken() {
147
139
  res.on('end', () => {
148
140
  try {
149
141
  const json = JSON.parse(data);
150
- log(`[Refresh] Status: ${res.statusCode}, Response: ${JSON.stringify(json).substring(0, 200)}`);
142
+ log(`[Refresh] Status: ${res.statusCode}`);
151
143
 
152
144
  if (res.statusCode === 200 && json.access_token) {
153
145
  saveApiKeyToAuth(json.access_token);
154
146
  resolve(json.access_token);
155
147
  } else if (res.statusCode === 200 && json.id) {
156
- // Token is still valid, no refresh needed
157
148
  resolve(currentKey);
158
149
  } else {
159
150
  resolve(null);
160
151
  }
161
152
  } catch (e) {
162
- log(`[Refresh] Parse error: ${e.message}`);
163
153
  resolve(null);
164
154
  }
165
155
  });
166
156
  });
167
157
 
168
- req.on('error', (e) => {
169
- log(`[Refresh] Error: ${e.message}`);
170
- resolve(null);
171
- });
172
-
158
+ req.on('error', (e) => resolve(null));
159
+ req.write(JSON.stringify({ token: currentKey }));
173
160
  req.end();
174
161
  });
175
162
  }
@@ -234,7 +221,7 @@ const MODEL_CAPABILITIES = {
234
221
  };
235
222
 
236
223
  async function fetchModels() {
237
- const apiKey = await checkAndRefreshToken();
224
+ const apiKey = readApiKeyFromAuth();
238
225
 
239
226
  return new Promise((resolve) => {
240
227
  const options = {
@@ -319,7 +306,7 @@ function startProxy() {
319
306
  }
320
307
 
321
308
  if (req.method === 'GET' && req.url === '/health') {
322
- const apiKey = await checkAndRefreshToken();
309
+ const apiKey = readApiKeyFromAuth();
323
310
  res.writeHead(200, { 'Content-Type': 'application/json' });
324
311
  res.end(JSON.stringify({
325
312
  status: 'ok',
@@ -331,7 +318,7 @@ function startProxy() {
331
318
  }
332
319
 
333
320
  if (req.url.startsWith('/v1/')) {
334
- const apiKey = await checkAndRefreshToken();
321
+ const apiKey = readApiKeyFromAuth();
335
322
 
336
323
  const options = {
337
324
  hostname: 'qwen.aikit.club',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qwen-opencode-provider",
3
- "version": "3.2.1",
3
+ "version": "3.2.3",
4
4
  "description": "OpenCode plugin for Qwen API - auto adds provider with 28+ models",
5
5
  "main": "index.js",
6
6
  "type": "module",