@hilbras/omnihilbras 1.12.0 → 1.12.2

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.
@@ -35,7 +35,7 @@ export const CLINE_OAUTH = {
35
35
  };
36
36
  const defaultRefreshSkewMs = 60_000;
37
37
  /** Reported to Cline as this client's version. */
38
- const omnihilbrasVersion = '1.12.0';
38
+ const omnihilbrasVersion = '1.12.2';
39
39
  /** Cline only accepts WorkOS JWTs with an explicit prefix. */
40
40
  export function toClineAccessToken(token) {
41
41
  const trimmed = token.trim();
@@ -24,16 +24,32 @@ export type QwenProbeResult = {
24
24
  * ship a card that cannot answer, and refusing to try would be refusing on the strength of a
25
25
  * measurement nobody made. So it asks, and it says what came back.
26
26
  */
27
- export declare function probeQwenWeb(cookieHeader: string, transport: HttpTransport, signal?: AbortSignal): Promise<QwenProbeResult>;
28
- /** The catalog Qwen serves, for the card. Read from the guest-visible endpoint, so it is real. */
27
+ export declare function probeQwenWeb(cookieHeader: string, transport: HttpTransport, signal?: AbortSignal, options?: {
28
+ timeoutMs?: number;
29
+ }): Promise<QwenProbeResult>;
29
30
  /**
30
- * The catalog, read from the live `GET /api/v2/models/` rather than written from memory.
31
+ * The provider's own refusal, read out of a **200** response.
31
32
  *
32
- * I first wrote ten plausible ids — `qwen3.7-flash`, `qwen3.7-coder-plus`, `qwen3.7-vl-plus` and
33
- * so on. The endpoint answers **three**, and running the probe against the live site is what
34
- * showed it. Guessing a catalog is the same fault as guessing a capability: the card would have
35
- * advertised models that do not exist and offered turns guaranteed to fail, with nothing on the
36
- * page to say why. Qwen publishes no context length on this endpoint, so none is claimed.
33
+ * Qwen signals every refusal in the body and never in the status code, on both origins. A check
34
+ * that trusted the status would report a guest cookie as a working credential.
35
+ */
36
+ /**
37
+ * A **snapshot** of the guest catalog, for the card. The live list is what `probeQwenWeb`
38
+ * returns, and that is the authority.
39
+ *
40
+ * I first wrote ten plausible ids — `qwen3.7-flash`, `qwen3.7-coder-plus` and so on — and the
41
+ * probe caught it. Then I replaced them with a hard "it answers three" and **that was an
42
+ * overclaim too**: a user running the probe minutes later saw **seven**, including
43
+ * `qwen3.7-max`, `qwen3.6-plus`, `qwen3.5-plus` and `qwen3.5-omni-plus`, while repeated requests
44
+ * from here returned three every time. Cookies were ruled out — none, `cna`, `isg` and a pasted
45
+ * pair all returned the same three.
46
+ *
47
+ * So the endpoint's guest catalog **varies**, and a constant is wrong by construction: it will
48
+ * disagree with the provider on some day, and a card that lists models the endpoint no longer
49
+ * serves is worse than one that says the list moves. This is a dated snapshot for the catalog
50
+ * only, and the dialog always shows the live list.
37
51
  */
38
52
  export declare const QWEN_WEB_MODELS: Model[];
53
+ /** When the snapshot above was read, so a reader can tell a stale list from a wrong one. */
54
+ export declare const QWEN_WEB_MODELS_OBSERVED_AT = "2026-09-29";
39
55
  //# sourceMappingURL=qwen-web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-web.d.ts","sourceRoot":"","sources":["../../src/adapters/qwen-web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA+CrD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAM5C,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8BzE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,yDAAyD;IACzD,aAAa,EAAE,OAAO,CAAC;IACvB,oGAAoG;IACpG,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,UAAU,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AA4BF;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAoDjI;AAED,kGAAkG;AAClG;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,EAIlC,CAAC"}
1
+ {"version":3,"file":"qwen-web.d.ts","sourceRoot":"","sources":["../../src/adapters/qwen-web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA+CrD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAM5C,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8BzE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,yDAAyD;IACzD,aAAa,EAAE,OAAO,CAAC;IACvB,oGAAoG;IACpG,UAAU,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,UAAU,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AA4BF;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,aAAa,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,OAAO,CAAC,eAAe,CAAC,CAyF1B;AAED;;;;;GAKG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,KAAK,EAIlC,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,eAAe,CAAC"}
@@ -114,7 +114,7 @@ function readModels(payload) {
114
114
  * ship a card that cannot answer, and refusing to try would be refusing on the strength of a
115
115
  * measurement nobody made. So it asks, and it says what came back.
116
116
  */
117
- export async function probeQwenWeb(cookieHeader, transport, signal) {
117
+ export async function probeQwenWeb(cookieHeader, transport, signal, options = {}) {
118
118
  const cookies = parseQwenCookieHeader(cookieHeader);
119
119
  const cookie = Object.entries(cookies).map(([name, value]) => `${name}=${value}`).join('; ');
120
120
  const headers = (extra = {}) => ({
@@ -123,9 +123,32 @@ export async function probeQwenWeb(cookieHeader, transport, signal) {
123
123
  'user-agent': BROWSER_USER_AGENT,
124
124
  ...extra,
125
125
  });
126
+ /**
127
+ * A budget for the whole probe, because the alternative is a spinner that never resolves.
128
+ *
129
+ * Not the network — the three requests together take about a second. It is that a caller
130
+ * waiting on a promise it cannot see into will sit there indefinitely if anything stalls, and
131
+ * "Ask Qwen" with no outcome is indistinguishable from a broken button. On expiry the answers
132
+ * gathered so far are returned rather than discarded: a slow auth origin with a fast refusal on
133
+ * the turn is still a useful answer, and throwing it away would be its own kind of dishonesty.
134
+ */
135
+ const timeoutMs = options.timeoutMs ?? 20_000;
136
+ const controller = new AbortController();
137
+ const onAbort = () => controller.abort();
138
+ if (signal)
139
+ signal.addEventListener('abort', onAbort, { once: true });
140
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
141
+ timer.unref?.();
126
142
  const ask = async (url, init) => {
127
143
  try {
128
- const response = await transport.request({ method: init.method, url, headers: init.headers, providerId: qwenWebProviderId, ...(init.body ? { body: init.body } : {}), ...(signal ? { signal } : {}) });
144
+ const response = await transport.request({
145
+ method: init.method,
146
+ url,
147
+ headers: init.headers,
148
+ providerId: qwenWebProviderId,
149
+ ...(init.body ? { body: init.body } : {}),
150
+ signal: controller.signal,
151
+ });
129
152
  return { status: response.status, data: response.data, error: undefined };
130
153
  }
131
154
  catch (error) {
@@ -134,48 +157,75 @@ export async function probeQwenWeb(cookieHeader, transport, signal) {
134
157
  return { status: 0, data: undefined, error: error instanceof Error ? error.message : String(error) };
135
158
  }
136
159
  };
137
- // 1. The auth origin. A guest is refused here first, so this separates "no credential" from
138
- // "the credential is not the problem".
139
- //
140
- // Read from the **body**, not the status. `auth.qwen.ai` answers a guest with **HTTP 200**
141
- // and `{"success":false,"data":{"code":"Unauthorized","details":"401 Unauthorized"}}` — the
142
- // status code is a lie and the transport, correctly, does not throw. Trusting the status is
143
- // what made a guest cookie report as `authenticated: true`.
144
- const auth = await ask(`${QWEN_AUTH_ORIGIN}${AUTH_PATH}`, { method: 'GET', headers: headers() });
145
- const authRefused = readRefusal(auth.data) ?? (auth.error ? auth.error : undefined);
146
- const authenticated = auth.error === undefined && !authRefused;
147
- const authDetail = authRefused ?? `HTTP ${auth.status}`;
148
- // 2. The model catalog. Readable by guests, so it is reported whatever else happened.
149
- const catalog = await ask(`${QWEN_ORIGIN}/api/v2/models/`, { method: 'GET', headers: headers() });
150
- const models = readModels(catalog.data);
151
- // 3. The turn — the question that actually matters, and the one the refusal answers.
152
- const turn = await ask(`${QWEN_ORIGIN}${TURN_PATH}`, {
153
- method: 'POST',
154
- headers: headers({ 'content-type': 'application/json' }),
155
- body: JSON.stringify({ model: models[0] ?? 'qwen3.7-plus', messages: [{ role: 'user', content: 'hi' }], stream: false }),
156
- });
157
- const ret = Array.isArray(turn.data?.ret) ? (turn.data.ret) : [];
158
- const turnRefusal = readRefusal(turn.data);
159
- const served = turn.error === undefined && ret.length === 0 && !turnRefusal;
160
- const detail = turn.error
161
- ?? (ret.length > 0 ? `Qwen refused the turn: ${ret.join(', ')}` : undefined)
162
- ?? turnRefusal
163
- ?? `Qwen answered HTTP ${turn.status}.`;
164
- return { authenticated, turnServed: served, detail, authDetail, models };
160
+ try {
161
+ /**
162
+ * All three at once, and the turn last only because it needs a model id.
163
+ *
164
+ * Sequential requests cost three round trips to a host on another continent. The models
165
+ * catalog is the only dependency between them, and it does not need the turn's answer — so
166
+ * the turn is fired as soon as the catalog lands and the two never wait on each other.
167
+ */
168
+ const authPromise = ask(`${QWEN_AUTH_ORIGIN}${AUTH_PATH}`, { method: 'GET', headers: headers() });
169
+ const catalogPromise = ask(`${QWEN_ORIGIN}/api/v2/models/`, { method: 'GET', headers: headers() });
170
+ const [auth, catalog] = await Promise.all([authPromise, catalogPromise]);
171
+ const models = readModels(catalog.data);
172
+ const turn = await ask(`${QWEN_ORIGIN}${TURN_PATH}`, {
173
+ method: 'POST',
174
+ headers: headers({ 'content-type': 'application/json' }),
175
+ body: JSON.stringify({ model: models[0] ?? 'qwen3.7-plus', messages: [{ role: 'user', content: 'hi' }], stream: false }),
176
+ });
177
+ // 1. The auth origin. A guest is refused here first, so this separates "no credential" from
178
+ // "the credential is not the problem".
179
+ //
180
+ // Read from the **body**, not the status. `auth.qwen.ai` answers a guest with **HTTP 200**
181
+ // and `{"success":false,"data":{"code":"Unauthorized"}}` — the status code is a lie and the
182
+ // transport, correctly, does not throw. Trusting the status is what made a guest cookie
183
+ // report as `authenticated: true`.
184
+ const authRefused = readRefusal(auth.data) ?? (auth.error ? auth.error : undefined);
185
+ const authenticated = auth.error === undefined && !authRefused;
186
+ const authDetail = authRefused ?? `HTTP ${auth.status}`;
187
+ // 2. The turn — the question that actually matters, and the one the refusal answers.
188
+ const ret = Array.isArray(turn.data?.ret) ? (turn.data.ret) : [];
189
+ const turnRefusal = readRefusal(turn.data);
190
+ const turnServed = turn.error === undefined && ret.length === 0 && !turnRefusal;
191
+ const detail = turn.error
192
+ ?? (ret.length > 0 ? `Qwen refused the turn: ${ret.join(', ')}` : undefined)
193
+ ?? turnRefusal
194
+ ?? `Qwen answered HTTP ${turn.status}.`;
195
+ return { authenticated, turnServed, detail, authDetail, models };
196
+ }
197
+ finally {
198
+ clearTimeout(timer);
199
+ signal?.removeEventListener('abort', onAbort);
200
+ }
165
201
  }
166
- /** The catalog Qwen serves, for the card. Read from the guest-visible endpoint, so it is real. */
167
202
  /**
168
- * The catalog, read from the live `GET /api/v2/models/` rather than written from memory.
203
+ * The provider's own refusal, read out of a **200** response.
204
+ *
205
+ * Qwen signals every refusal in the body and never in the status code, on both origins. A check
206
+ * that trusted the status would report a guest cookie as a working credential.
207
+ */
208
+ /**
209
+ * A **snapshot** of the guest catalog, for the card. The live list is what `probeQwenWeb`
210
+ * returns, and that is the authority.
211
+ *
212
+ * I first wrote ten plausible ids — `qwen3.7-flash`, `qwen3.7-coder-plus` and so on — and the
213
+ * probe caught it. Then I replaced them with a hard "it answers three" and **that was an
214
+ * overclaim too**: a user running the probe minutes later saw **seven**, including
215
+ * `qwen3.7-max`, `qwen3.6-plus`, `qwen3.5-plus` and `qwen3.5-omni-plus`, while repeated requests
216
+ * from here returned three every time. Cookies were ruled out — none, `cna`, `isg` and a pasted
217
+ * pair all returned the same three.
169
218
  *
170
- * I first wrote ten plausible ids — `qwen3.7-flash`, `qwen3.7-coder-plus`, `qwen3.7-vl-plus` and
171
- * so on. The endpoint answers **three**, and running the probe against the live site is what
172
- * showed it. Guessing a catalog is the same fault as guessing a capability: the card would have
173
- * advertised models that do not exist and offered turns guaranteed to fail, with nothing on the
174
- * page to say why. Qwen publishes no context length on this endpoint, so none is claimed.
219
+ * So the endpoint's guest catalog **varies**, and a constant is wrong by construction: it will
220
+ * disagree with the provider on some day, and a card that lists models the endpoint no longer
221
+ * serves is worse than one that says the list moves. This is a dated snapshot for the catalog
222
+ * only, and the dialog always shows the live list.
175
223
  */
176
224
  export const QWEN_WEB_MODELS = [
177
225
  { id: 'qwen3.7-plus', providerId: qwenWebProviderId },
178
226
  { id: 'qwen3.8-max', providerId: qwenWebProviderId },
179
227
  { id: 'qwen3.8-omni-flash', providerId: qwenWebProviderId },
180
228
  ];
229
+ /** When the snapshot above was read, so a reader can tell a stale list from a wrong one. */
230
+ export const QWEN_WEB_MODELS_OBSERVED_AT = '2026-09-29';
181
231
  //# sourceMappingURL=qwen-web.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"qwen-web.js","sourceRoot":"","sources":["../../src/adapters/qwen-web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qwen-web.js","sourceRoot":"","sources":["../../src/adapters/qwen-web.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hilbras/omnihilbras",
3
- "version": "1.12.0",
3
+ "version": "1.12.2",
4
4
  "description": "Typed provider SDK for the OmniHilbras gateway: normalized chat, streaming, model listing, and capability contracts for OpenAI, Anthropic, Gemini, and OpenAI-compatible providers.",
5
5
  "license": "MIT",
6
6
  "author": "Hilbras",