cascade-ai 0.12.20 → 0.12.21

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.d.cts CHANGED
@@ -1094,6 +1094,7 @@ declare class CascadeRouter extends EventEmitter {
1094
1094
  getAvailableModels(): ModelInfo[];
1095
1095
  private detectAvailableProviders;
1096
1096
  private discoverOllamaModels;
1097
+ /** Returns true when at least one real model was discovered from the endpoint. */
1097
1098
  private discoverOpenAICompatibleModels;
1098
1099
  private ensureProvider;
1099
1100
  private getProvider;
package/dist/index.d.ts CHANGED
@@ -1094,6 +1094,7 @@ declare class CascadeRouter extends EventEmitter {
1094
1094
  getAvailableModels(): ModelInfo[];
1095
1095
  private detectAvailableProviders;
1096
1096
  private discoverOllamaModels;
1097
+ /** Returns true when at least one real model was discovered from the endpoint. */
1097
1098
  private discoverOpenAICompatibleModels;
1098
1099
  private ensureProvider;
1099
1100
  private getProvider;
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ import cron from 'node-cron';
39
39
 
40
40
 
41
41
  // src/constants.ts
42
- var CASCADE_VERSION = "0.12.20";
42
+ var CASCADE_VERSION = "0.12.21";
43
43
  var CASCADE_CONFIG_DIR = ".cascade";
44
44
  var CASCADE_MD_FILE = "CASCADE.md";
45
45
  var CASCADE_IGNORE_FILE = ".cascadeignore";
@@ -1378,7 +1378,7 @@ var OllamaProvider = class extends BaseProvider {
1378
1378
  };
1379
1379
  var OpenAICompatibleProvider = class extends OpenAIProvider {
1380
1380
  constructor(config, model) {
1381
- super(config, model);
1381
+ super({ ...config, apiKey: config.apiKey ?? "not-required" }, model);
1382
1382
  this.client = new OpenAI({
1383
1383
  apiKey: config.apiKey ?? "not-required",
1384
1384
  baseURL: preferIpv4Host(config.baseUrl),
@@ -2264,10 +2264,10 @@ var CascadeRouter = class _CascadeRouter extends EventEmitter {
2264
2264
  if (availableProviders.has("ollama")) {
2265
2265
  await this.discoverOllamaModels(ollamaCfg);
2266
2266
  }
2267
- if (availableProviders.has("openai-compatible")) {
2268
- await Promise.all(
2269
- config.providers.filter((p) => p.type === "openai-compatible").map((cfg) => this.discoverOpenAICompatibleModels(cfg))
2270
- );
2267
+ const ocConfigs = config.providers.filter((p) => p.type === "openai-compatible" && p.baseUrl);
2268
+ if (ocConfigs.length > 0) {
2269
+ const results = await Promise.all(ocConfigs.map((cfg) => this.discoverOpenAICompatibleModels(cfg)));
2270
+ if (results.some(Boolean)) this.selector.markProviderAvailable("openai-compatible");
2271
2271
  }
2272
2272
  for (const tier of ["T1", "T2", "T3"]) {
2273
2273
  const override = tier === "T1" ? config.models.t1 : tier === "T2" ? config.models.t2 : config.models.t3;
@@ -2738,6 +2738,7 @@ var CascadeRouter = class _CascadeRouter extends EventEmitter {
2738
2738
  } catch {
2739
2739
  }
2740
2740
  }
2741
+ /** Returns true when at least one real model was discovered from the endpoint. */
2741
2742
  async discoverOpenAICompatibleModels(cfg) {
2742
2743
  try {
2743
2744
  const seed = {
@@ -2757,8 +2758,10 @@ var CascadeRouter = class _CascadeRouter extends EventEmitter {
2757
2758
  for (const m of models) {
2758
2759
  this.selector.addDynamicModel(m);
2759
2760
  }
2761
+ return models.length > 0;
2760
2762
  } catch (err) {
2761
2763
  console.warn("[router] OpenAI-compatible model discovery failed:", err instanceof Error ? err.message : err);
2764
+ return false;
2762
2765
  }
2763
2766
  }
2764
2767
  ensureProvider(model, configs) {