opencode-qoder-bridge 0.1.9 → 0.1.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4ChD,eAAO,MAAM,eAAe,EAAE,aAAa,EAI1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAiCvC,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAE9D;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,CAWhE;AA8DD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,EAAE,CAQ1E;AAoBD,wBAAgB,UAAU,IAAI,aAAa,EAAE,CAE5C;AAED,wBAAgB,sBAAsB,IAAI,iBAAiB,EAAE,GAAG,IAAI,CAOnE;AAID,wBAAsB,kBAAkB,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAO3F;AAkCD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/E;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAiDhD,eAAO,MAAM,eAAe,EAAE,aAAa,EAI1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAgCvC,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EAC7D,OAAO,GAAE,qBAA0B,GAClC,aAAa,GAAG,SAAS,CAS3B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,0EAA0E;AAC1E,wBAAgB,6BAA6B,CAAC,OAAO,GAAE,OAAO,KAAa,GAAG,IAAI,CAEjF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,EAAE,CAmBhE;AA0JD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EAC7D,OAAO,GAAE,qBAA0B,GAClC,iBAAiB,EAAE,CAsBrB;AA2BD,wBAAgB,UAAU,CACxB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EAC7D,OAAO,GAAE,qBAA0B,GAClC,aAAa,EAAE,CAQjB;AAED,wBAAgB,sBAAsB,CACpC,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EAC7D,OAAO,GAAE,qBAA0B,GAClC,iBAAiB,EAAE,GAAG,IAAI,CAI5B;AAED,wBAAsB,kBAAkB,CACtC,KAAK,UAAQ,EACb,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EAC7D,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CA0BrC;AA2CD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EAC7D,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD"}
package/dist/models.js CHANGED
@@ -3,7 +3,7 @@ import { findQoderCLI } from "./auth.js";
3
3
  import { idlePrompt } from "./sdk-session.js";
4
4
  import { hasQoderCredential, qoderAuth } from "./sdk-auth.js";
5
5
  import { chmodSync, existsSync, lstatSync, mkdirSync, readFileSync, renameSync, unlinkSync } from "node:fs";
6
- import { randomUUID } from "node:crypto";
6
+ import { createHash, randomUUID } from "node:crypto";
7
7
  import { writeFile } from "node:fs/promises";
8
8
  import { join } from "node:path";
9
9
  import { resolveStateDir } from "./state-dir.js";
@@ -14,9 +14,14 @@ const OUTPUT = 32_000;
14
14
  const MAX_MODEL_CACHE_BYTES = 1_000_000;
15
15
  const MAX_MODEL_TOKENS = 10_000_000;
16
16
  const MAX_PRICE_FACTOR = 1_000_000;
17
+ const MAX_DYNAMIC_MODELS = 512;
18
+ const MODEL_CACHE_VERSION = 1;
17
19
  const FETCH_TIMEOUT_MS = 30_000;
18
20
  const CLEANUP_GRACE_MS = 5_000;
21
+ const MODEL_REFRESH_INTERVAL_MS = 60_000;
22
+ const MODEL_RETRY_INTERVAL_MS = 5_000;
19
23
  const UNSAFE_IDS = new Set(["__proto__", "prototype", "constructor"]);
24
+ const CONTROL_CHARS = /[\u0000-\u001f\u007f-\u009f]/;
20
25
  function def(id, name, multiplier, opts = {}) {
21
26
  return {
22
27
  id,
@@ -42,7 +47,6 @@ export const FALLBACK_MODELS = [
42
47
  export const DEFAULT_MODEL_ID = "auto";
43
48
  const MODEL_INDEX = new Map(FALLBACK_MODELS.map((m) => [m.id, m]));
44
49
  const STATE_DIR = resolveStateDir();
45
- const MODEL_CACHE_FILE = join(STATE_DIR, "models.json");
46
50
  function toModelDef(m) {
47
51
  return {
48
52
  id: m.id,
@@ -69,9 +73,25 @@ function rebuildIndex(models) {
69
73
  MODEL_INDEX.set(model.id, def);
70
74
  }
71
75
  }
72
- export function getModel(id) {
76
+ export function getModel(id, environment = process.env, options = {}) {
77
+ const runtimeEnvironment = effectiveEnvironment(environment);
78
+ if (hasQoderCredential(runtimeEnvironment))
79
+ getCatalogState(runtimeEnvironment, options);
80
+ else if (activeCatalogScope && catalogStates.get(activeCatalogScope)?.liveUpdated) {
81
+ rebuildIndex(catalogStates.get(activeCatalogScope)?.models ?? []);
82
+ }
83
+ else {
84
+ rebuildIndex([]);
85
+ }
73
86
  return MODEL_INDEX.get(id);
74
87
  }
88
+ const catalogStates = new Map();
89
+ let activeCatalogScope;
90
+ let modelQueryFactory = query;
91
+ /** @internal Test seam for deterministic discovery lifecycle coverage. */
92
+ export function setModelDiscoveryQueryFactory(factory = query) {
93
+ modelQueryFactory = factory;
94
+ }
75
95
  /**
76
96
  * Keep catalog entries that are usable model ids. Disabled entries are
77
97
  * dropped; anything else (BYOK, tagged, scene-filtered) stays so the bridge
@@ -80,25 +100,38 @@ export function getModel(id) {
80
100
  export function selectEnabledModels(models) {
81
101
  if (!Array.isArray(models))
82
102
  return [];
83
- return models.filter((m) => {
103
+ const seen = new Set();
104
+ const selected = [];
105
+ for (const m of models) {
84
106
  if (!m || typeof m !== "object" || Array.isArray(m))
85
- return false;
107
+ continue;
86
108
  const value = m.value;
87
- return typeof value === "string"
88
- && value.trim().length > 0
89
- && value.length <= 256
90
- && !UNSAFE_IDS.has(value)
91
- && m.isEnabled !== false;
92
- });
109
+ if (typeof value !== "string"
110
+ || value.trim().length === 0
111
+ || value.length > 256
112
+ || UNSAFE_IDS.has(value)
113
+ || CONTROL_CHARS.test(value)
114
+ || m.isEnabled === false
115
+ || seen.has(value))
116
+ continue;
117
+ seen.add(value);
118
+ selected.push(m);
119
+ if (selected.length >= MAX_DYNAMIC_MODELS)
120
+ break;
121
+ }
122
+ return selected;
93
123
  }
94
124
  function mapModelInfo(m) {
95
125
  const factor = finiteNonNegative(m.priceFactor, 1.0);
96
126
  const context = finitePositiveInteger(m.maxInputTokens, CONTEXT);
97
127
  const output = finitePositiveInteger(m.maxOutputTokens, OUTPUT);
98
128
  const vl = m.isVl === undefined ? true : m.isVl === true;
129
+ const displayName = typeof m.displayName === "string" && m.displayName.trim()
130
+ ? m.displayName.replace(CONTROL_CHARS, " ").trim().slice(0, 1024)
131
+ : "";
99
132
  return {
100
133
  id: m.value,
101
- name: typeof m.displayName === "string" && m.displayName.trim() ? m.displayName.trim().slice(0, 1024) : m.value,
134
+ name: displayName || m.value,
102
135
  attachment: vl,
103
136
  reasoning: m.isReasoning === true,
104
137
  toolCall: true,
@@ -128,9 +161,9 @@ function validCachedModel(value) {
128
161
  if (!value || typeof value !== "object" || Array.isArray(value))
129
162
  return false;
130
163
  const model = value;
131
- if (typeof model.id !== "string" || model.id.length === 0 || model.id.length > 256 || UNSAFE_IDS.has(model.id))
164
+ if (typeof model.id !== "string" || model.id.length === 0 || model.id.length > 256 || UNSAFE_IDS.has(model.id) || CONTROL_CHARS.test(model.id))
132
165
  return false;
133
- if (typeof model.name !== "string" || model.name.length === 0 || model.name.length > 1024)
166
+ if (typeof model.name !== "string" || model.name.length === 0 || model.name.length > 1024 || CONTROL_CHARS.test(model.name))
134
167
  return false;
135
168
  if (typeof model.attachment !== "boolean" || typeof model.reasoning !== "boolean" || typeof model.toolCall !== "boolean")
136
169
  return false;
@@ -150,34 +183,130 @@ function validCachedModel(value) {
150
183
  if (!modalities || typeof modalities !== "object" || Array.isArray(modalities))
151
184
  return false;
152
185
  const modes = modalities;
153
- return [modes.input, modes.output].every((items) => Array.isArray(items) && items.every((item) => typeof item === "string" && item.length <= 64));
186
+ return [modes.input, modes.output].every((items) => Array.isArray(items)
187
+ && items.length <= 8
188
+ && items.every((item) => typeof item === "string" && item.length <= 64 && !CONTROL_CHARS.test(item)));
189
+ }
190
+ function cloneModel(model) {
191
+ return {
192
+ ...model,
193
+ limit: { ...model.limit },
194
+ cost: { ...model.cost },
195
+ modalities: { input: [...model.modalities.input], output: [...model.modalities.output] },
196
+ };
197
+ }
198
+ function cloneModels(models) {
199
+ return models?.map(cloneModel) ?? null;
200
+ }
201
+ function effectiveEnvironment(environment) {
202
+ return { ...process.env, ...environment };
203
+ }
204
+ function safeOption(value) {
205
+ if (typeof value !== "string")
206
+ return undefined;
207
+ const normalized = value.trim();
208
+ return normalized && !CONTROL_CHARS.test(normalized) ? normalized : undefined;
209
+ }
210
+ function fingerprint(value) {
211
+ return createHash("sha256").update(value).digest("hex").slice(0, 32);
212
+ }
213
+ /**
214
+ * Model catalogs are account/scene specific. Keep their cache and refresh
215
+ * state isolated without ever putting a credential itself in a path or log.
216
+ */
217
+ function catalogScope(environment, options) {
218
+ const token = environment.QODER_PERSONAL_ACCESS_TOKEN?.trim();
219
+ const authScope = token
220
+ ? `pat:${fingerprint(token)}`
221
+ : hasQoderCredential(environment) ? "local-login" : "anonymous";
222
+ const parts = [
223
+ `auth=${authScope}`,
224
+ `scene=${environment.QODER_SCENE ?? ""}`,
225
+ `vpc=${safeOption(options.vpcEndpoint) ?? environment.QODER_VPC_ENDPOINT ?? environment.QODERCN_VPC_ENDPOINT ?? ""}`,
226
+ `endpoint=${environment.QODER_API_URL ?? environment.QODER_BASE_URL ?? ""}`,
227
+ `proxy=${safeOption(options.proxy) ?? environment.HTTPS_PROXY ?? environment.HTTP_PROXY ?? ""}`,
228
+ ];
229
+ return fingerprint(parts.join("\u0000"));
230
+ }
231
+ function cacheFileFor(scope) {
232
+ return join(STATE_DIR, `models.${scope}.json`);
233
+ }
234
+ function getCatalogState(environment = process.env, options = {}) {
235
+ const runtimeEnvironment = effectiveEnvironment(environment);
236
+ const scope = catalogScope(runtimeEnvironment, options);
237
+ let state = catalogStates.get(scope);
238
+ if (!state) {
239
+ state = {
240
+ scope,
241
+ cacheFile: cacheFileFor(scope),
242
+ models: null,
243
+ cacheLoaded: false,
244
+ inflightFetch: null,
245
+ requestGeneration: 0,
246
+ lastSuccessAt: 0,
247
+ lastFailureAt: 0,
248
+ pendingModelsToWrite: null,
249
+ activeWritePromise: null,
250
+ liveUpdated: false,
251
+ };
252
+ catalogStates.set(scope, state);
253
+ }
254
+ if (!state.cacheLoaded) {
255
+ state.cacheLoaded = true;
256
+ const cached = loadCachedModels(state);
257
+ if (cached)
258
+ state.models = cached;
259
+ }
260
+ if (activeCatalogScope !== scope) {
261
+ activeCatalogScope = scope;
262
+ rebuildIndex(state.models ?? []);
263
+ }
264
+ return state;
154
265
  }
155
266
  /**
156
267
  * Dynamically apply live model updates received from SDK streaming events
157
268
  * (`available_models_update`). Updates the in-memory index and cache file.
158
269
  */
159
- export function applyLiveModelUpdates(models) {
270
+ export function applyLiveModelUpdates(models, environment = process.env, options = {}) {
271
+ const state = getCatalogState(environment, options);
160
272
  const enabled = selectEnabledModels(models);
273
+ // Empty SDK events are commonly transient during auth/scene changes. Keep
274
+ // the current in-memory catalog so the model picker does not suddenly lose
275
+ // every account model; a later non-empty snapshot still replaces it.
276
+ if (enabled.length === 0) {
277
+ debug("Live model update was empty; retaining the current catalog");
278
+ return cloneModels(state.models) ?? [];
279
+ }
161
280
  const mapped = enabled.map(mapModelInfo);
162
- cachedDynamicModels = mapped;
163
- rebuildIndex(mapped);
164
- void queueModelCacheWrite(mapped);
281
+ state.requestGeneration += 1;
282
+ state.models = mapped;
283
+ state.liveUpdated = true;
284
+ state.lastFailureAt = 0;
285
+ if (mapped.length > 0) {
286
+ state.lastSuccessAt = Date.now();
287
+ void queueModelCacheWriteForState(state, mapped);
288
+ }
289
+ if (activeCatalogScope === state.scope)
290
+ rebuildIndex(mapped);
165
291
  debug(`Live model update: refreshed ${mapped.length} models`);
166
- return getCachedDynamicModels() ?? [];
292
+ return cloneModels(state.models) ?? [];
167
293
  }
168
- let cachedDynamicModels = loadCachedModels();
169
- function loadCachedModels() {
294
+ function loadCachedModels(state) {
170
295
  try {
171
- if (!existsSync(MODEL_CACHE_FILE))
296
+ if (!existsSync(state.cacheFile))
172
297
  return null;
173
- const info = lstatSync(MODEL_CACHE_FILE);
298
+ const info = lstatSync(state.cacheFile);
174
299
  if (!info.isFile() || info.isSymbolicLink() || info.size > MAX_MODEL_CACHE_BYTES)
175
300
  return null;
176
- const parsed = JSON.parse(readFileSync(MODEL_CACHE_FILE, "utf8"));
177
- if (!Array.isArray(parsed))
301
+ const parsed = JSON.parse(readFileSync(state.cacheFile, "utf8"));
302
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
303
+ return null;
304
+ const payload = parsed;
305
+ if (payload.version !== MODEL_CACHE_VERSION || payload.scope !== state.scope || !Array.isArray(payload.models))
306
+ return null;
307
+ const models = payload.models.filter(validCachedModel).slice(0, MAX_DYNAMIC_MODELS);
308
+ if (models.length === 0)
178
309
  return null;
179
- const models = parsed.filter(validCachedModel);
180
- rebuildIndex(models);
181
310
  return models;
182
311
  }
183
312
  catch (error) {
@@ -185,29 +314,52 @@ function loadCachedModels() {
185
314
  return null;
186
315
  }
187
316
  }
188
- export function listModels() {
317
+ export function listModels(environment = process.env, options = {}) {
318
+ const runtimeEnvironment = effectiveEnvironment(environment);
319
+ if (hasQoderCredential(runtimeEnvironment))
320
+ getCatalogState(runtimeEnvironment, options);
321
+ else if (activeCatalogScope && catalogStates.get(activeCatalogScope)?.liveUpdated) {
322
+ rebuildIndex(catalogStates.get(activeCatalogScope)?.models ?? []);
323
+ }
324
+ else
325
+ rebuildIndex([]);
189
326
  return [...MODEL_INDEX.values()].map((m) => ({ ...m, cost: { ...m.cost }, limit: { ...m.limit } }));
190
327
  }
191
- export function getCachedDynamicModels() {
192
- return cachedDynamicModels?.map((model) => ({
193
- ...model,
194
- limit: { ...model.limit },
195
- cost: { ...model.cost },
196
- modalities: { input: [...model.modalities.input], output: [...model.modalities.output] },
197
- })) ?? null;
198
- }
199
- let inflightFetch = null;
200
- export async function fetchDynamicModels(force = false) {
201
- if (cachedDynamicModels && !force)
202
- return getCachedDynamicModels();
203
- if (inflightFetch)
204
- return inflightFetch;
205
- inflightFetch = doFetchDynamicModels().finally(() => {
206
- inflightFetch = null;
328
+ export function getCachedDynamicModels(environment = process.env, options = {}) {
329
+ const runtimeEnvironment = effectiveEnvironment(environment);
330
+ if (!hasQoderCredential(runtimeEnvironment))
331
+ return null;
332
+ return cloneModels(getCatalogState(runtimeEnvironment, options).models);
333
+ }
334
+ export async function fetchDynamicModels(force = false, environment = process.env, options = {}) {
335
+ const runtimeEnvironment = effectiveEnvironment(environment);
336
+ if (!hasQoderCredential(runtimeEnvironment)) {
337
+ debug("Skipping live model discovery: no Qoder credential is available");
338
+ return null;
339
+ }
340
+ const state = getCatalogState(runtimeEnvironment, options);
341
+ if (state.models && !force)
342
+ return cloneModels(state.models);
343
+ if (state.inflightFetch)
344
+ return state.inflightFetch;
345
+ const now = Date.now();
346
+ if (state.lastSuccessAt > 0 && now - state.lastSuccessAt < MODEL_REFRESH_INTERVAL_MS) {
347
+ return cloneModels(state.models);
348
+ }
349
+ if (state.lastFailureAt > 0 && now - state.lastFailureAt < MODEL_RETRY_INTERVAL_MS) {
350
+ return cloneModels(state.models);
351
+ }
352
+ const generation = ++state.requestGeneration;
353
+ const operation = doFetchDynamicModels(state, runtimeEnvironment, options, generation);
354
+ let tracked;
355
+ tracked = operation.finally(() => {
356
+ if (state.inflightFetch === tracked)
357
+ state.inflightFetch = null;
207
358
  });
208
- return inflightFetch;
359
+ state.inflightFetch = tracked;
360
+ return tracked;
209
361
  }
210
- async function writeCacheFile(models) {
362
+ async function writeCacheFile(state, models) {
211
363
  let temporary;
212
364
  try {
213
365
  mkdirSync(STATE_DIR, { recursive: true, mode: 0o700 });
@@ -215,9 +367,15 @@ async function writeCacheFile(models) {
215
367
  chmodSync(STATE_DIR, 0o700);
216
368
  }
217
369
  catch { /* best-effort */ }
218
- temporary = join(STATE_DIR, `.models.${process.pid}.${randomUUID()}.tmp`);
219
- await writeFile(temporary, JSON.stringify(models, null, 2) + "\n", { mode: 0o600 });
220
- renameSync(temporary, MODEL_CACHE_FILE);
370
+ temporary = join(STATE_DIR, `.models.${state.scope}.${process.pid}.${randomUUID()}.tmp`);
371
+ const payload = {
372
+ version: MODEL_CACHE_VERSION,
373
+ scope: state.scope,
374
+ fetchedAt: Date.now(),
375
+ models,
376
+ };
377
+ await writeFile(temporary, JSON.stringify(payload, null, 2) + "\n", { mode: 0o600 });
378
+ renameSync(temporary, state.cacheFile);
221
379
  temporary = undefined;
222
380
  }
223
381
  finally {
@@ -229,78 +387,168 @@ async function writeCacheFile(models) {
229
387
  }
230
388
  }
231
389
  }
232
- let pendingModelsToWrite = null;
233
- let activeWritePromise = null;
234
- async function processCacheWrite() {
235
- while (pendingModelsToWrite !== null) {
236
- const toWrite = pendingModelsToWrite;
237
- pendingModelsToWrite = null;
390
+ async function processCacheWrite(state) {
391
+ while (state.pendingModelsToWrite !== null) {
392
+ const toWrite = state.pendingModelsToWrite;
393
+ state.pendingModelsToWrite = null;
238
394
  try {
239
- await writeCacheFile(toWrite);
395
+ await writeCacheFile(state, toWrite);
240
396
  }
241
397
  catch (error) {
242
398
  debug("Model cache write failed:", describeError(error));
243
399
  }
244
400
  }
245
- activeWritePromise = null;
401
+ state.activeWritePromise = null;
246
402
  }
247
- export function queueModelCacheWrite(models) {
248
- pendingModelsToWrite = models;
249
- activeWritePromise ??= processCacheWrite();
250
- return activeWritePromise;
403
+ function queueModelCacheWriteForState(state, models) {
404
+ state.pendingModelsToWrite = models.map(cloneModel);
405
+ state.activeWritePromise ??= processCacheWrite(state);
406
+ return state.activeWritePromise;
407
+ }
408
+ export function queueModelCacheWrite(models, environment = process.env, options = {}) {
409
+ return queueModelCacheWriteForState(getCatalogState(environment, options), models);
251
410
  }
252
411
  export async function flushModelCache() {
253
- if (activeWritePromise)
254
- await activeWritePromise;
412
+ const writes = [...catalogStates.values()]
413
+ .map((state) => state.activeWritePromise)
414
+ .filter((promise) => Boolean(promise));
415
+ if (writes.length > 0)
416
+ await Promise.all(writes);
255
417
  }
256
- async function doFetchDynamicModels() {
257
- const cli = findQoderCLI();
258
- if (!hasQoderCredential())
259
- return null;
260
- let q;
418
+ async function doFetchDynamicModels(state, environment, options, generation) {
419
+ const timeoutMs = normalizeTimeout(options.timeoutMs);
420
+ const deadline = Date.now() + timeoutMs;
261
421
  const abortController = new AbortController();
262
- const timeout = setTimeout(() => abortController.abort(), FETCH_TIMEOUT_MS);
422
+ const timeout = setTimeout(() => abortController.abort(), timeoutMs);
263
423
  if (typeof timeout.unref === "function")
264
424
  timeout.unref();
265
- const sceneEnv = process.env.QODER_SCENE
266
- ? { env: { ...process.env, QODER_SCENE: process.env.QODER_SCENE } }
267
- : {};
425
+ const remaining = () => Math.max(1, deadline - Date.now());
426
+ const canCommit = () => state.requestGeneration === generation && !abortController.signal.aborted;
268
427
  try {
269
- q = query({
428
+ // The Worker is the normal path and avoids any PATH dependency. If a
429
+ // separately installed qodercli is present, try it in parallel as an
430
+ // automatic compatibility fallback; neither path requires users to run a
431
+ // model-list command themselves.
432
+ const runtimes = [undefined];
433
+ const cli = findQoderCLI();
434
+ if (cli)
435
+ runtimes.push(cli);
436
+ const attempts = runtimes.map((runtimePath) => fetchFromRuntime(runtimePath, environment, options, deadline, abortController.signal));
437
+ let emptySnapshot = false;
438
+ let failures = 0;
439
+ const pending = attempts.map((promise, index) => ({
440
+ index,
441
+ promise: promise.then((models) => ({ index, models })),
442
+ }));
443
+ while (pending.length > 0) {
444
+ const result = await Promise.race(pending.map((item) => item.promise));
445
+ const pendingIndex = pending.findIndex((item) => item.index === result.index);
446
+ if (pendingIndex >= 0)
447
+ pending.splice(pendingIndex, 1);
448
+ if (Array.isArray(result.models)) {
449
+ if (result.models.length > 0) {
450
+ if (!canCommit())
451
+ return cloneModels(state.models);
452
+ const committed = commitDiscoveredModels(state, result.models, generation);
453
+ abortController.abort();
454
+ return committed;
455
+ }
456
+ emptySnapshot = true;
457
+ }
458
+ else {
459
+ failures += 1;
460
+ }
461
+ }
462
+ if (!canCommit())
463
+ return cloneModels(state.models);
464
+ if (emptySnapshot) {
465
+ state.lastSuccessAt = 0;
466
+ state.lastFailureAt = Date.now();
467
+ debug("Live model catalog was empty; retaining the current catalog");
468
+ }
469
+ if (failures > 0) {
470
+ state.lastFailureAt = Date.now();
471
+ debug(`Live model catalog unavailable through ${failures} runtime attempt(s)`);
472
+ }
473
+ return cloneModels(state.models);
474
+ }
475
+ catch (error) {
476
+ if (state.requestGeneration === generation)
477
+ state.lastFailureAt = Date.now();
478
+ debug("Live model catalog unavailable; keeping cached/fallback models:", describeError(error));
479
+ return cloneModels(state.models);
480
+ }
481
+ finally {
482
+ clearTimeout(timeout);
483
+ abortController.abort();
484
+ }
485
+ }
486
+ async function fetchFromRuntime(runtimePath, environment, options, deadline, overallSignal) {
487
+ if (overallSignal.aborted)
488
+ return null;
489
+ const abortController = new AbortController();
490
+ const abortAttempt = () => abortController.abort();
491
+ overallSignal.addEventListener("abort", abortAttempt, { once: true });
492
+ let q;
493
+ const remaining = () => Math.max(1, deadline - Date.now());
494
+ try {
495
+ q = modelQueryFactory({
270
496
  prompt: idlePrompt(abortController.signal),
271
497
  options: {
272
- auth: qoderAuth(),
498
+ auth: qoderAuth(environment),
273
499
  model: "auto",
274
500
  abortController,
275
501
  persistSession: false,
276
- ...(cli ? { pathToQoderCLIExecutable: cli } : {}),
277
- ...sceneEnv,
502
+ env: environment,
503
+ ...(runtimePath ? { pathToQoderCLIExecutable: runtimePath } : {}),
504
+ ...(safeOption(options.proxy) ? { proxy: safeOption(options.proxy) } : {}),
505
+ ...(safeOption(options.vpcEndpoint) ? { vpcEndpoint: safeOption(options.vpcEndpoint) } : {}),
506
+ ...(safeOption(options.cwd) ? { cwd: safeOption(options.cwd) } : {}),
507
+ controlRequestTimeoutMs: Math.max(100, Math.min(5_000, remaining() - 100)),
508
+ closeGraceMs: Math.min(CLEANUP_GRACE_MS, 500),
278
509
  },
279
510
  });
280
- // "live" forces a server refresh inside the CLI and falls back to the
281
- // CLI's cached catalog when the server returns nothing. The previous
282
- // "cache" strategy could serve an empty or stale subset, which hid
283
- // models until a lucky refresh.
284
- const models = await withTimeout(q.getAvailableModels({ fetchStrategy: "live" }), FETCH_TIMEOUT_MS, `Qoder model discovery exceeded ${FETCH_TIMEOUT_MS}ms`);
285
- if (!Array.isArray(models))
286
- return null;
287
- const enabled = selectEnabledModels(models);
288
- debug(`Model catalog: ${enabled.length} usable of ${models.length} reported`
289
- + (enabled.length === 0 ? "" : ` (${enabled.map((m) => m.value).join(", ")})`));
290
- cachedDynamicModels = enabled.map(mapModelInfo);
291
- rebuildIndex(cachedDynamicModels);
292
- await queueModelCacheWrite(cachedDynamicModels);
293
- return getCachedDynamicModels();
511
+ await withTimeout(q.initializationResult(), remaining(), `Qoder model discovery initialization exceeded ${Math.max(1, deadline - Date.now())}ms`);
512
+ const models = await withTimeout(q.getAvailableModels({ fetchStrategy: "live" }), remaining(), `Qoder model discovery exceeded ${Math.max(1, deadline - Date.now())}ms`);
513
+ return Array.isArray(models) ? models : null;
294
514
  }
295
515
  catch (error) {
296
- debug("Live model catalog unavailable; keeping cached/fallback models:", describeError(error));
516
+ debug(`Model discovery runtime${runtimePath ? " (qodercli fallback)" : " (bundled Worker)"} failed:`, describeError(error));
297
517
  return null;
298
518
  }
299
519
  finally {
300
- clearTimeout(timeout);
520
+ overallSignal.removeEventListener("abort", abortAttempt);
301
521
  abortController.abort();
302
522
  if (q)
303
- await closeAsyncIterator(q, CLEANUP_GRACE_MS);
523
+ void closeAsyncIterator(q, CLEANUP_GRACE_MS);
304
524
  }
305
525
  }
526
+ function commitDiscoveredModels(state, models, generation) {
527
+ if (state.requestGeneration !== generation)
528
+ return cloneModels(state.models);
529
+ const enabled = selectEnabledModels(models);
530
+ debug(`Model catalog: ${enabled.length} usable of ${models.length} reported`
531
+ + (enabled.length === 0 ? "" : ` (${enabled.map((m) => m.value).join(", ")})`));
532
+ // An empty live response is ambiguous (transient auth/scene/server
533
+ // failures are returned this way by some SDK/CLI versions). Keep the last
534
+ // known-good catalog and let the built-ins cover a genuinely empty cache.
535
+ if (enabled.length === 0)
536
+ return cloneModels(state.models);
537
+ const mapped = enabled.map(mapModelInfo);
538
+ state.models = mapped;
539
+ state.liveUpdated = true;
540
+ state.lastSuccessAt = Date.now();
541
+ state.lastFailureAt = 0;
542
+ if (activeCatalogScope === state.scope)
543
+ rebuildIndex(mapped);
544
+ // Cache persistence is deliberately detached from startup registration;
545
+ // a slow filesystem must not hold OpenCode past the discovery deadline.
546
+ void queueModelCacheWriteForState(state, mapped);
547
+ return cloneModels(mapped);
548
+ }
549
+ function normalizeTimeout(value) {
550
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0)
551
+ return FETCH_TIMEOUT_MS;
552
+ return Math.min(FETCH_TIMEOUT_MS, Math.max(250, Math.floor(value)));
553
+ }
306
554
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}