cascade-ai 0.46.0 → 0.48.0
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/README.md +1 -1
- package/dist/cli.cjs +68 -8
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +68 -8
- package/dist/cli.js.map +1 -1
- package/dist/desktop-core.cjs +58 -8
- package/dist/index.cjs +58 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +58 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -63,7 +63,7 @@ var __export = (target, all) => {
|
|
|
63
63
|
var CASCADE_VERSION, CASCADE_CONFIG_FILE, CASCADE_DB_FILE, CASCADE_DASHBOARD_SECRET_FILE, GLOBAL_CONFIG_DIR, GLOBAL_DB_FILE, GLOBAL_KEYSTORE_FILE, GLOBAL_CREDENTIALS_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;
|
|
64
64
|
var init_constants = __esm({
|
|
65
65
|
"src/constants.ts"() {
|
|
66
|
-
CASCADE_VERSION = "0.
|
|
66
|
+
CASCADE_VERSION = "0.48.0";
|
|
67
67
|
CASCADE_CONFIG_FILE = ".cascade/config.json";
|
|
68
68
|
CASCADE_DB_FILE = ".cascade/memory.db";
|
|
69
69
|
CASCADE_DASHBOARD_SECRET_FILE = ".cascade/dashboard-secret";
|
|
@@ -542,6 +542,60 @@ var init_base = __esm({
|
|
|
542
542
|
}
|
|
543
543
|
});
|
|
544
544
|
|
|
545
|
+
// src/providers/model-filter.ts
|
|
546
|
+
function isChatModel(id, methods) {
|
|
547
|
+
if (methods && methods.length > 0) {
|
|
548
|
+
const canGenerate = methods.some((m) => /generatecontent|generatemessage|chat|completion/i.test(m));
|
|
549
|
+
if (!canGenerate) return false;
|
|
550
|
+
}
|
|
551
|
+
return !NON_CHAT.test(id);
|
|
552
|
+
}
|
|
553
|
+
var NON_CHAT_PATTERNS, NON_CHAT;
|
|
554
|
+
var init_model_filter = __esm({
|
|
555
|
+
"src/providers/model-filter.ts"() {
|
|
556
|
+
NON_CHAT_PATTERNS = [
|
|
557
|
+
"embed",
|
|
558
|
+
// text-embedding-3, nomic-embed, mxbai-embed, snowflake-arctic-embed
|
|
559
|
+
"(?:^|[-_/])tts(?:[-_/]|$)",
|
|
560
|
+
"text-to-speech",
|
|
561
|
+
"speech",
|
|
562
|
+
// text-to-speech
|
|
563
|
+
"whisper",
|
|
564
|
+
"transcrib",
|
|
565
|
+
"(?:^|[-_/])stt(?:[-_/]|$)",
|
|
566
|
+
// speech-to-text
|
|
567
|
+
"dall[-]?e",
|
|
568
|
+
"imagen",
|
|
569
|
+
"image-generation",
|
|
570
|
+
"gpt-image",
|
|
571
|
+
"(?:^|[-_/])image(?:[-_/]|$)",
|
|
572
|
+
"stable-diffusion",
|
|
573
|
+
"sdxl",
|
|
574
|
+
"flux",
|
|
575
|
+
// image gen
|
|
576
|
+
"moderation",
|
|
577
|
+
"(?:^|[-_/])guard(?:[-_/]|$)",
|
|
578
|
+
// moderation / safety
|
|
579
|
+
"rerank",
|
|
580
|
+
"(?:^|[-_/])audio(?:[-_/]|$)",
|
|
581
|
+
"native-audio",
|
|
582
|
+
"realtime",
|
|
583
|
+
// audio / realtime
|
|
584
|
+
"veo",
|
|
585
|
+
"sora",
|
|
586
|
+
"(?:^|[-_/])video(?:[-_/]|$)",
|
|
587
|
+
// video
|
|
588
|
+
"(?:^|[-_/])aqa(?:[-_/]|$)",
|
|
589
|
+
// attributed QA
|
|
590
|
+
"(?:^|[-_/])live(?:[-_/]|$)",
|
|
591
|
+
// live-audio variants
|
|
592
|
+
"(?:^|[-_/])(?:davinci|babbage)(?:[-_/]|$)"
|
|
593
|
+
// legacy completion-only base models
|
|
594
|
+
];
|
|
595
|
+
NON_CHAT = new RegExp(NON_CHAT_PATTERNS.join("|"), "i");
|
|
596
|
+
}
|
|
597
|
+
});
|
|
598
|
+
|
|
545
599
|
// src/providers/anthropic.ts
|
|
546
600
|
var anthropic_exports = {};
|
|
547
601
|
__export(anthropic_exports, {
|
|
@@ -558,6 +612,7 @@ var init_anthropic = __esm({
|
|
|
558
612
|
"src/providers/anthropic.ts"() {
|
|
559
613
|
init_constants();
|
|
560
614
|
init_base();
|
|
615
|
+
init_model_filter();
|
|
561
616
|
AnthropicProvider = class extends BaseProvider {
|
|
562
617
|
client;
|
|
563
618
|
constructor(config, model) {
|
|
@@ -664,7 +719,7 @@ var init_anthropic = __esm({
|
|
|
664
719
|
if (!Array.isArray(data?.data)) {
|
|
665
720
|
return Object.values(MODELS).filter((m) => m.provider === "anthropic");
|
|
666
721
|
}
|
|
667
|
-
return data.data.map((m) => {
|
|
722
|
+
return data.data.filter((m) => isChatModel(m.id)).map((m) => {
|
|
668
723
|
const known = Object.values(MODELS).find((km) => km.id === m.id && km.provider === "anthropic");
|
|
669
724
|
if (known) return known;
|
|
670
725
|
return {
|
|
@@ -773,6 +828,7 @@ var init_openai = __esm({
|
|
|
773
828
|
"src/providers/openai.ts"() {
|
|
774
829
|
init_constants();
|
|
775
830
|
init_base();
|
|
831
|
+
init_model_filter();
|
|
776
832
|
OpenAIProvider = class extends BaseProvider {
|
|
777
833
|
client;
|
|
778
834
|
/** Once we learn (from the model id or an API error) that this deployment
|
|
@@ -894,7 +950,7 @@ var init_openai = __esm({
|
|
|
894
950
|
async listModels() {
|
|
895
951
|
try {
|
|
896
952
|
const response = await this.client.models.list();
|
|
897
|
-
return response.data.map((m) => {
|
|
953
|
+
return response.data.filter((m) => isChatModel(m.id)).map((m) => {
|
|
898
954
|
const known = Object.values(MODELS).find((km) => km.id === m.id && km.provider === "openai");
|
|
899
955
|
if (known) return known;
|
|
900
956
|
return {
|
|
@@ -1102,6 +1158,7 @@ var init_gemini = __esm({
|
|
|
1102
1158
|
"src/providers/gemini.ts"() {
|
|
1103
1159
|
init_constants();
|
|
1104
1160
|
init_base();
|
|
1161
|
+
init_model_filter();
|
|
1105
1162
|
GeminiProvider = class extends BaseProvider {
|
|
1106
1163
|
client;
|
|
1107
1164
|
constructor(config, model) {
|
|
@@ -1195,7 +1252,7 @@ var init_gemini = __esm({
|
|
|
1195
1252
|
if (!Array.isArray(data?.models)) {
|
|
1196
1253
|
return Object.values(MODELS).filter((m) => m.provider === "gemini");
|
|
1197
1254
|
}
|
|
1198
|
-
return data.models.map((m) => {
|
|
1255
|
+
return data.models.filter((m) => isChatModel(m.name.replace("models/", ""), m.supportedGenerationMethods)).map((m) => {
|
|
1199
1256
|
const id = m.name.replace("models/", "");
|
|
1200
1257
|
const known = Object.values(MODELS).find(
|
|
1201
1258
|
(km) => km.id === id && km.provider === "gemini"
|
|
@@ -1418,6 +1475,7 @@ var init_ollama = __esm({
|
|
|
1418
1475
|
init_constants();
|
|
1419
1476
|
init_net();
|
|
1420
1477
|
init_base();
|
|
1478
|
+
init_model_filter();
|
|
1421
1479
|
TOOL_CAPABLE_FAMILIES = [
|
|
1422
1480
|
"llama3.1",
|
|
1423
1481
|
"llama3.2",
|
|
@@ -1570,10 +1628,10 @@ var init_ollama = __esm({
|
|
|
1570
1628
|
const response = await fetch(`${this.baseUrl}/api/tags`);
|
|
1571
1629
|
if (!response.ok) return [];
|
|
1572
1630
|
const data = await response.json();
|
|
1573
|
-
const supportedKeywords = ["llama3", "llama2", "gemma", "mistral", "mixtral", "qwen", "phi3", "codellama", "deepseek", "llava", "starcoder", "stable-code"
|
|
1631
|
+
const supportedKeywords = ["llama3", "llama2", "gemma", "mistral", "mixtral", "qwen", "phi3", "codellama", "deepseek", "llava", "starcoder", "stable-code"];
|
|
1574
1632
|
const entries = data.models.filter((m) => {
|
|
1575
1633
|
const name = m.name.toLowerCase();
|
|
1576
|
-
return supportedKeywords.some((k) => name.includes(k));
|
|
1634
|
+
return supportedKeywords.some((k) => name.includes(k)) && isChatModel(name);
|
|
1577
1635
|
});
|
|
1578
1636
|
const shows = await Promise.all(entries.map((m) => this.showModel(m.name)));
|
|
1579
1637
|
return entries.map((m, i) => {
|
|
@@ -1673,6 +1731,7 @@ var OpenAICompatibleProvider;
|
|
|
1673
1731
|
var init_openai_compatible = __esm({
|
|
1674
1732
|
"src/providers/openai-compatible.ts"() {
|
|
1675
1733
|
init_openai();
|
|
1734
|
+
init_model_filter();
|
|
1676
1735
|
init_net();
|
|
1677
1736
|
OpenAICompatibleProvider = class extends OpenAIProvider {
|
|
1678
1737
|
constructor(config, model) {
|
|
@@ -1706,7 +1765,8 @@ var init_openai_compatible = __esm({
|
|
|
1706
1765
|
return typeof m === "string" ? m : void 0;
|
|
1707
1766
|
}).filter((x) => typeof x === "string" && x.length > 0);
|
|
1708
1767
|
if (ids.length === 0) return [this.model];
|
|
1709
|
-
|
|
1768
|
+
const chatIds = ids.filter((id) => isChatModel(id));
|
|
1769
|
+
return (chatIds.length ? chatIds : ids).map((id) => ({
|
|
1710
1770
|
id,
|
|
1711
1771
|
name: id,
|
|
1712
1772
|
provider: "openai-compatible",
|
|
@@ -14457,7 +14517,7 @@ function clearCloudSession(dir = globalDir()) {
|
|
|
14457
14517
|
}
|
|
14458
14518
|
|
|
14459
14519
|
// src/cloud/client.ts
|
|
14460
|
-
var DEFAULT_CLOUD_URL = "https://
|
|
14520
|
+
var DEFAULT_CLOUD_URL = "https://cascadeai.in";
|
|
14461
14521
|
var REFRESH_MARGIN_MS = 6e4;
|
|
14462
14522
|
var FileCloudSessionStore = class {
|
|
14463
14523
|
constructor(dir) {
|