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/cli.js CHANGED
@@ -58,7 +58,7 @@ var __export = (target, all) => {
58
58
  var CASCADE_VERSION, CASCADE_CONFIG_FILE, CASCADE_DB_FILE, CASCADE_DASHBOARD_SECRET_FILE, GLOBAL_CONFIG_DIR, GLOBAL_DB_FILE, GLOBAL_KEYSTORE_FILE, GLOBAL_RUNTIME_DB_FILE, DEFAULT_DASHBOARD_PORT, DEFAULT_CONTEXT_LIMIT, DEFAULT_AUTO_SUMMARIZE_AT, MODELS, T1_MODEL_PRIORITY, T2_MODEL_PRIORITY, T3_MODEL_PRIORITY, VISION_MODEL_PRIORITY, COMPLEXITY_T2_COUNT, THEME_NAMES, DEFAULT_THEME, OLLAMA_BASE_URL, LM_STUDIO_BASE_URL, AZURE_BASE_URL_TEMPLATE, TOOL_NAMES, DEFAULT_APPROVAL_REQUIRED;
59
59
  var init_constants = __esm({
60
60
  "src/constants.ts"() {
61
- CASCADE_VERSION = "0.12.20";
61
+ CASCADE_VERSION = "0.12.21";
62
62
  CASCADE_CONFIG_FILE = ".cascade/config.json";
63
63
  CASCADE_DB_FILE = ".cascade/memory.db";
64
64
  CASCADE_DASHBOARD_SECRET_FILE = ".cascade/dashboard-secret";
@@ -1470,7 +1470,7 @@ var init_openai_compatible = __esm({
1470
1470
  init_net();
1471
1471
  OpenAICompatibleProvider = class extends OpenAIProvider {
1472
1472
  constructor(config, model) {
1473
- super(config, model);
1473
+ super({ ...config, apiKey: config.apiKey ?? "not-required" }, model);
1474
1474
  this.client = new OpenAI({
1475
1475
  apiKey: config.apiKey ?? "not-required",
1476
1476
  baseURL: preferIpv4Host(config.baseUrl),
@@ -4114,10 +4114,10 @@ var CascadeRouter = class _CascadeRouter extends EventEmitter {
4114
4114
  if (availableProviders.has("ollama")) {
4115
4115
  await this.discoverOllamaModels(ollamaCfg);
4116
4116
  }
4117
- if (availableProviders.has("openai-compatible")) {
4118
- await Promise.all(
4119
- config.providers.filter((p) => p.type === "openai-compatible").map((cfg) => this.discoverOpenAICompatibleModels(cfg))
4120
- );
4117
+ const ocConfigs = config.providers.filter((p) => p.type === "openai-compatible" && p.baseUrl);
4118
+ if (ocConfigs.length > 0) {
4119
+ const results = await Promise.all(ocConfigs.map((cfg) => this.discoverOpenAICompatibleModels(cfg)));
4120
+ if (results.some(Boolean)) this.selector.markProviderAvailable("openai-compatible");
4121
4121
  }
4122
4122
  for (const tier of ["T1", "T2", "T3"]) {
4123
4123
  const override = tier === "T1" ? config.models.t1 : tier === "T2" ? config.models.t2 : config.models.t3;
@@ -4588,6 +4588,7 @@ var CascadeRouter = class _CascadeRouter extends EventEmitter {
4588
4588
  } catch {
4589
4589
  }
4590
4590
  }
4591
+ /** Returns true when at least one real model was discovered from the endpoint. */
4591
4592
  async discoverOpenAICompatibleModels(cfg) {
4592
4593
  try {
4593
4594
  const seed = {
@@ -4607,8 +4608,10 @@ var CascadeRouter = class _CascadeRouter extends EventEmitter {
4607
4608
  for (const m of models) {
4608
4609
  this.selector.addDynamicModel(m);
4609
4610
  }
4611
+ return models.length > 0;
4610
4612
  } catch (err) {
4611
4613
  console.warn("[router] OpenAI-compatible model discovery failed:", err instanceof Error ? err.message : err);
4614
+ return false;
4612
4615
  }
4613
4616
  }
4614
4617
  ensureProvider(model, configs) {