cascade-ai 0.12.13 → 0.12.15

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.cjs CHANGED
@@ -3,6 +3,7 @@
3
3
  var Anthropic = require('@anthropic-ai/sdk');
4
4
  var OpenAI = require('openai');
5
5
  var genai = require('@google/genai');
6
+ var dns = require('dns');
6
7
  var ink = require('ink');
7
8
  var commander = require('commander');
8
9
  var React2 = require('react');
@@ -24,7 +25,7 @@ var glob = require('glob');
24
25
  var util = require('util');
25
26
  var simpleGit = require('simple-git');
26
27
  var PDFDocument = require('pdfkit');
27
- var dns = require('dns/promises');
28
+ var dns2 = require('dns/promises');
28
29
  var net = require('net');
29
30
  var index_js = require('@modelcontextprotocol/sdk/client/index.js');
30
31
  var stdio_js = require('@modelcontextprotocol/sdk/client/stdio.js');
@@ -63,6 +64,7 @@ function _interopNamespace(e) {
63
64
 
64
65
  var Anthropic__default = /*#__PURE__*/_interopDefault(Anthropic);
65
66
  var OpenAI__default = /*#__PURE__*/_interopDefault(OpenAI);
67
+ var dns__default = /*#__PURE__*/_interopDefault(dns);
66
68
  var React2__default = /*#__PURE__*/_interopDefault(React2);
67
69
  var chalk9__default = /*#__PURE__*/_interopDefault(chalk9);
68
70
  var dotenv__default = /*#__PURE__*/_interopDefault(dotenv);
@@ -75,7 +77,7 @@ var _ignoreModule__namespace = /*#__PURE__*/_interopNamespace(_ignoreModule);
75
77
  var Database__default = /*#__PURE__*/_interopDefault(Database);
76
78
  var EventEmitter__default = /*#__PURE__*/_interopDefault(EventEmitter);
77
79
  var PDFDocument__default = /*#__PURE__*/_interopDefault(PDFDocument);
78
- var dns__default = /*#__PURE__*/_interopDefault(dns);
80
+ var dns2__default = /*#__PURE__*/_interopDefault(dns2);
79
81
  var net__default = /*#__PURE__*/_interopDefault(net);
80
82
  var Spinner__default = /*#__PURE__*/_interopDefault(Spinner);
81
83
  var ora__default = /*#__PURE__*/_interopDefault(ora);
@@ -101,7 +103,7 @@ var __export = (target, all) => {
101
103
  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;
102
104
  var init_constants = __esm({
103
105
  "src/constants.ts"() {
104
- CASCADE_VERSION = "0.12.13";
106
+ CASCADE_VERSION = "0.12.15";
105
107
  CASCADE_CONFIG_FILE = ".cascade/config.json";
106
108
  CASCADE_DB_FILE = ".cascade/memory.db";
107
109
  CASCADE_DASHBOARD_SECRET_FILE = ".cascade/dashboard-secret";
@@ -1207,6 +1209,18 @@ var init_gemini = __esm({
1207
1209
  };
1208
1210
  }
1209
1211
  });
1212
+ function preferIpv4Host(url) {
1213
+ if (!url) return url;
1214
+ return url.replace(/^(https?:\/\/)localhost(?=[:/]|$)/i, "$1127.0.0.1");
1215
+ }
1216
+ var init_net = __esm({
1217
+ "src/utils/net.ts"() {
1218
+ try {
1219
+ dns__default.default.setDefaultResultOrder("ipv4first");
1220
+ } catch {
1221
+ }
1222
+ }
1223
+ });
1210
1224
 
1211
1225
  // src/providers/ollama.ts
1212
1226
  var ollama_exports = {};
@@ -1221,6 +1235,7 @@ var TOOL_CAPABLE_FAMILIES, OllamaProvider;
1221
1235
  var init_ollama = __esm({
1222
1236
  "src/providers/ollama.ts"() {
1223
1237
  init_constants();
1238
+ init_net();
1224
1239
  init_base();
1225
1240
  TOOL_CAPABLE_FAMILIES = [
1226
1241
  "llama3.1",
@@ -1238,7 +1253,7 @@ var init_ollama = __esm({
1238
1253
  baseUrl;
1239
1254
  constructor(config, model) {
1240
1255
  super(config, model);
1241
- this.baseUrl = config.baseUrl ?? OLLAMA_BASE_URL;
1256
+ this.baseUrl = preferIpv4Host(config.baseUrl ?? OLLAMA_BASE_URL);
1242
1257
  }
1243
1258
  async generate(options) {
1244
1259
  const chunks = [];
@@ -1435,12 +1450,13 @@ var OpenAICompatibleProvider;
1435
1450
  var init_openai_compatible = __esm({
1436
1451
  "src/providers/openai-compatible.ts"() {
1437
1452
  init_openai();
1453
+ init_net();
1438
1454
  OpenAICompatibleProvider = class extends OpenAIProvider {
1439
1455
  constructor(config, model) {
1440
1456
  super(config, model);
1441
1457
  this.client = new OpenAI__default.default({
1442
1458
  apiKey: config.apiKey ?? "not-required",
1443
- baseURL: config.baseUrl
1459
+ baseURL: preferIpv4Host(config.baseUrl)
1444
1460
  });
1445
1461
  }
1446
1462
  async listModels() {
@@ -8943,7 +8959,7 @@ async function assertPublicUrl(rawUrl) {
8943
8959
  }
8944
8960
  let addresses;
8945
8961
  try {
8946
- const records = await dns__default.default.lookup(host, { all: true });
8962
+ const records = await dns2__default.default.lookup(host, { all: true });
8947
8963
  addresses = records.map((r) => r.address);
8948
8964
  } catch {
8949
8965
  throw new SsrfBlockedError(`Could not resolve host "${host}".`);