@massa-ai/mcp-client 1.58.0 → 1.59.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.
@@ -444,10 +444,33 @@ function parseLmStudioModelList(body) {
444
444
  function inferenceProviderList() {
445
445
  return LOCAL_INFERENCE_IDS.map((id) => INFERENCE_PROVIDERS[id]);
446
446
  }
447
- var LOCAL_INFERENCE_IDS, INFERENCE_PROVIDERS;
447
+ function deriveInferenceBaseUrls(providerId, explicitBaseUrl) {
448
+ const spec = INFERENCE_PROVIDERS[providerId];
449
+ if (!explicitBaseUrl) {
450
+ return {
451
+ embeddingBaseUrl: spec.defaultEmbeddingBaseUrl,
452
+ llmBaseUrl: spec.defaultLlmBaseUrl
453
+ };
454
+ }
455
+ let end = explicitBaseUrl.length;
456
+ while (end > 0 && explicitBaseUrl.charCodeAt(end - 1) === SLASH)
457
+ end--;
458
+ const base = explicitBaseUrl.slice(0, end);
459
+ const suffix = spec.defaultLlmBaseUrl.startsWith(spec.defaultEmbeddingBaseUrl) ? spec.defaultLlmBaseUrl.slice(spec.defaultEmbeddingBaseUrl.length) : "";
460
+ return {
461
+ embeddingBaseUrl: base,
462
+ llmBaseUrl: `${base}${suffix}`
463
+ };
464
+ }
465
+ var LOCAL_INFERENCE_IDS, INFERENCE_ROLE_DEFAULTS, INFERENCE_PROVIDERS, SLASH = 47;
448
466
  var init_inference_providers = __esm(() => {
449
467
  init_embedding_dimensions();
450
468
  LOCAL_INFERENCE_IDS = ["ollama", "lmstudio"];
469
+ INFERENCE_ROLE_DEFAULTS = {
470
+ embedding: { contextWindow: 8192 },
471
+ instruct: { contextWindow: 16384, temperature: 0.2 },
472
+ coding: { contextWindow: 32768, temperature: 0 }
473
+ };
451
474
  INFERENCE_PROVIDERS = {
452
475
  ollama: {
453
476
  id: "ollama",
@@ -459,6 +482,13 @@ var init_inference_providers = __esm(() => {
459
482
  dimensions: "OLLAMA_EMBEDDING_DIMENSIONS"
460
483
  },
461
484
  knownDimensions: KNOWN_EMBEDDING_DIMENSIONS,
485
+ defaultModels: {
486
+ embedding: "qwen3-embedding:0.6b",
487
+ instruct: "qwen3-vl:8b",
488
+ coding: "qwen2.5-coder:7b"
489
+ },
490
+ appliesContextPerRequest: true,
491
+ embedBatchSize: 64,
462
492
  supportsOllamaVersionProbe: true,
463
493
  injectsDisableThink: true,
464
494
  requiresChatCompletionsApi: false,
@@ -474,8 +504,16 @@ var init_inference_providers = __esm(() => {
474
504
  dimensions: "LMSTUDIO_EMBEDDING_DIMENSIONS"
475
505
  },
476
506
  knownDimensions: {
477
- "text-embedding-nomic-embed-text-v1.5": 768
507
+ "text-embedding-nomic-embed-text-v1.5": 768,
508
+ "text-embedding-qwen3-embedding-0.6b": 1024
478
509
  },
510
+ defaultModels: {
511
+ embedding: "text-embedding-qwen3-embedding-0.6b",
512
+ instruct: "qwen3-vl-8b-instruct",
513
+ coding: "qwen2.5-coder-7b-instruct"
514
+ },
515
+ appliesContextPerRequest: false,
516
+ embedBatchSize: 64,
479
517
  supportsOllamaVersionProbe: false,
480
518
  injectsDisableThink: false,
481
519
  requiresChatCompletionsApi: true,
@@ -490,6 +528,7 @@ var API_PROVIDER_IDS, EMBEDDING_PROVIDER_IDS, SCHEDULER_JOB_KINDS, MAX_MATCH_WOR
490
528
  var init_massa_ai_config = __esm(() => {
491
529
  init_xdg();
492
530
  init_inference_providers();
531
+ init_embedding_dimensions();
493
532
  API_PROVIDER_IDS = ["mistral", "openai", "google", "cohere"];
494
533
  EMBEDDING_PROVIDER_IDS = [
495
534
  ...LOCAL_INFERENCE_IDS,
@@ -556,9 +595,9 @@ var init_massa_ai_config = __esm(() => {
556
595
  },
557
596
  embedding: {
558
597
  provider: "ollama",
559
- model: "qwen3-embedding:4b",
598
+ model: INFERENCE_PROVIDERS.ollama.defaultModels.embedding,
560
599
  baseURL: "http://localhost:11434",
561
- dimensions: 2560
600
+ dimensions: knownEmbeddingDimensions(INFERENCE_PROVIDERS.ollama.defaultModels.embedding) ?? 768
562
601
  },
563
602
  compression: {
564
603
  defaultStrategy: "code_structure",
@@ -597,12 +636,15 @@ var init_massa_ai_config = __esm(() => {
597
636
  enabled: false,
598
637
  baseUrl: "http://localhost:11434/v1",
599
638
  apiKey: "ollama",
600
- model: "qwen2.5:7b-instruct",
601
- codeModel: "qwen2.5-coder:7b",
639
+ model: INFERENCE_PROVIDERS.ollama.defaultModels.instruct,
640
+ codeModel: INFERENCE_PROVIDERS.ollama.defaultModels.coding,
602
641
  temperature: 0.2,
603
642
  maxOutputTokens: 8000,
604
643
  timeoutMs: 90000,
605
- disableThink: true
644
+ disableThink: true,
645
+ contextWindow: INFERENCE_ROLE_DEFAULTS.instruct.contextWindow,
646
+ codeContextWindow: INFERENCE_ROLE_DEFAULTS.coding.contextWindow,
647
+ codeTemperature: INFERENCE_ROLE_DEFAULTS.coding.temperature
606
648
  },
607
649
  memory: {
608
650
  decay: {
@@ -1157,6 +1199,13 @@ function getGlobalDataDir() {
1157
1199
  return fileConfig.dataDir;
1158
1200
  return path4.join(getConfigDir(), "data");
1159
1201
  }
1202
+ function activeInferenceProviderId() {
1203
+ const providerId = fileConfig.embedding?.provider;
1204
+ if (providerId && LOCAL_INFERENCE_IDS.includes(providerId)) {
1205
+ return providerId;
1206
+ }
1207
+ return "ollama";
1208
+ }
1160
1209
 
1161
1210
  class Config {
1162
1211
  config;
@@ -1293,11 +1342,12 @@ class Config {
1293
1342
  this.config[key] = value;
1294
1343
  }
1295
1344
  }
1296
- var DEFAULT_LLM_MODEL = "qwen2.5:7b-instruct", DEFAULT_LLM_CODE_MODEL = "qwen2.5-coder:7b", SCHEDULER_JOB_ENV, DEFAULT_ALLOWED_EXTENSIONS, fileConfig, fileCacheL1Bytes, fileCacheL2Bytes, resolvedDataDir, defaultConfig, config;
1345
+ var SCHEDULER_JOB_ENV, DEFAULT_ALLOWED_EXTENSIONS, fileConfig, DEFAULT_LLM_MODEL, DEFAULT_LLM_CODE_MODEL, fileCacheL1Bytes, fileCacheL2Bytes, resolvedDataDir, defaultConfig, config;
1297
1346
  var init_config = __esm(() => {
1298
1347
  init_env();
1299
1348
  init_config_loader();
1300
1349
  init_massa_ai_config();
1350
+ init_inference_providers();
1301
1351
  init_massa_ai_config();
1302
1352
  init_massa_ai_config();
1303
1353
  init_config_loader();
@@ -1368,6 +1418,8 @@ var init_config = __esm(() => {
1368
1418
  ".hs"
1369
1419
  ];
1370
1420
  fileConfig = loadConfigSafe();
1421
+ DEFAULT_LLM_MODEL = INFERENCE_PROVIDERS[activeInferenceProviderId()].defaultModels.instruct;
1422
+ DEFAULT_LLM_CODE_MODEL = INFERENCE_PROVIDERS[activeInferenceProviderId()].defaultModels.coding;
1371
1423
  fileCacheL1Bytes = fileConfig.cache?.l1MaxSizeMB ? fileConfig.cache.l1MaxSizeMB * 1024 * 1024 : undefined;
1372
1424
  fileCacheL2Bytes = fileConfig.cache?.l2MaxSizeMB ? fileConfig.cache.l2MaxSizeMB * 1024 * 1024 : undefined;
1373
1425
  resolvedDataDir = getGlobalDataDir();
@@ -1410,7 +1462,10 @@ var init_config = __esm(() => {
1410
1462
  temperature: envNum("MASSA_AI_LLM_TEMPERATURE", fileConfig.llm?.temperature ?? 0.2),
1411
1463
  maxOutputTokens: envNum("MASSA_AI_LLM_MAX_OUTPUT_TOKENS", fileConfig.llm?.maxOutputTokens ?? 8000),
1412
1464
  timeoutMs: envNum("MASSA_AI_LLM_TIMEOUT_MS", fileConfig.llm?.timeoutMs ?? 90000),
1413
- disableThink: envBool("MASSA_AI_LLM_DISABLE_THINK", fileConfig.llm?.disableThink ?? true)
1465
+ disableThink: envBool("MASSA_AI_LLM_DISABLE_THINK", fileConfig.llm?.disableThink ?? true),
1466
+ contextWindow: fileConfig.llm?.contextWindow ?? INFERENCE_ROLE_DEFAULTS.instruct.contextWindow,
1467
+ codeContextWindow: fileConfig.llm?.codeContextWindow ?? INFERENCE_ROLE_DEFAULTS.coding.contextWindow,
1468
+ codeTemperature: envNum("MASSA_AI_LLM_CODE_TEMPERATURE", fileConfig.llm?.codeTemperature ?? INFERENCE_ROLE_DEFAULTS.coding.temperature)
1414
1469
  },
1415
1470
  memory: {
1416
1471
  decay: {
@@ -9346,7 +9401,7 @@ var require_ignore = __commonJS((exports, module) => {
9346
9401
  var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
9347
9402
  var REGEX_SPLITALL_CRLF = /\r?\n/g;
9348
9403
  var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
9349
- var SLASH = "/";
9404
+ var SLASH2 = "/";
9350
9405
  var TMP_KEY_IGNORE = "node-ignore";
9351
9406
  if (typeof Symbol !== "undefined") {
9352
9407
  TMP_KEY_IGNORE = Symbol.for("node-ignore");
@@ -9557,13 +9612,13 @@ var require_ignore = __commonJS((exports, module) => {
9557
9612
  return cache[path16];
9558
9613
  }
9559
9614
  if (!slices) {
9560
- slices = path16.split(SLASH);
9615
+ slices = path16.split(SLASH2);
9561
9616
  }
9562
9617
  slices.pop();
9563
9618
  if (!slices.length) {
9564
9619
  return cache[path16] = this._testOne(path16, checkUnignored);
9565
9620
  }
9566
- const parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices);
9621
+ const parent = this._t(slices.join(SLASH2) + SLASH2, cache, checkUnignored, slices);
9567
9622
  return cache[path16] = parent.ignored ? parent : this._testOne(path16, checkUnignored);
9568
9623
  }
9569
9624
  ignores(path16) {
@@ -52395,20 +52450,26 @@ function isLlmEnabled() {
52395
52450
  function _setLlmEnabledForTesting(flag) {
52396
52451
  testEnabledOverride = flag;
52397
52452
  }
52398
- function getLlmConfig(opts) {
52399
- const cfg = config.get("llm");
52400
- const role = opts?.modelRole ?? "instruct";
52401
- const model = role === "code" ? cfg?.codeModel ?? cfg?.model ?? DEFAULT_LLM_MODEL : cfg?.model ?? DEFAULT_LLM_MODEL;
52453
+ function _resolveLlmConfig(cfg, role, baseUrlOverride) {
52454
+ const baseUrl = baseUrlOverride ?? cfg?.baseUrl ?? INFERENCE_PROVIDERS.ollama.defaultLlmBaseUrl;
52455
+ const spec = resolveInferenceSpec(baseUrl);
52456
+ const model = role === "code" ? cfg?.codeModel ?? spec.defaultModels.coding : cfg?.model ?? spec.defaultModels.instruct;
52457
+ const temperature = role === "code" ? cfg?.codeTemperature ?? INFERENCE_ROLE_DEFAULTS.coding.temperature : cfg?.temperature ?? INFERENCE_ROLE_DEFAULTS.instruct.temperature;
52458
+ const contextWindow = role === "code" ? cfg?.codeContextWindow ?? INFERENCE_ROLE_DEFAULTS.coding.contextWindow : cfg?.contextWindow ?? INFERENCE_ROLE_DEFAULTS.instruct.contextWindow;
52402
52459
  return {
52403
- baseUrl: testBaseUrlOverride ?? cfg?.baseUrl ?? "http://localhost:11434/v1",
52404
- apiKey: cfg?.apiKey ?? "ollama",
52460
+ baseUrl,
52461
+ apiKey: cfg?.apiKey ?? spec.id,
52405
52462
  model,
52406
- temperature: cfg?.temperature ?? 0.2,
52463
+ temperature,
52464
+ contextWindow,
52407
52465
  maxOutputTokens: cfg?.maxOutputTokens ?? 8000,
52408
52466
  timeoutMs: cfg?.timeoutMs ?? 90000,
52409
- disableThink: cfg?.disableThink ?? true
52467
+ disableThink: cfg?.disableThink ?? spec.injectsDisableThink
52410
52468
  };
52411
52469
  }
52470
+ function getLlmConfig(opts) {
52471
+ return _resolveLlmConfig(config.get("llm"), opts?.modelRole ?? "instruct", testBaseUrlOverride);
52472
+ }
52412
52473
  function hostPort(url2) {
52413
52474
  try {
52414
52475
  const u = new URL(url2);
@@ -52452,12 +52513,34 @@ function _wrapFetchDisableThink(baseFetch) {
52452
52513
  };
52453
52514
  return wrapped;
52454
52515
  }
52516
+ function _wrapFetchContextWindow(baseFetch, contextWindow) {
52517
+ const wrapped = async (input, init) => {
52518
+ try {
52519
+ if (init?.body && typeof init.body === "string") {
52520
+ const parsed = JSON.parse(init.body);
52521
+ if (parsed && typeof parsed === "object") {
52522
+ parsed.options = { ...parsed.options, num_ctx: contextWindow };
52523
+ init = { ...init, body: JSON.stringify(parsed) };
52524
+ }
52525
+ }
52526
+ } catch {}
52527
+ return baseFetch(input, init);
52528
+ };
52529
+ return wrapped;
52530
+ }
52455
52531
  function buildProvider(llm) {
52456
52532
  const spec = resolveInferenceSpec(llm.baseUrl);
52533
+ let fetchImpl;
52534
+ if (spec.appliesContextPerRequest) {
52535
+ fetchImpl = _wrapFetchContextWindow(fetchImpl ?? globalThis.fetch, llm.contextWindow);
52536
+ }
52537
+ if (llm.disableThink && spec.injectsDisableThink) {
52538
+ fetchImpl = _wrapFetchDisableThink(fetchImpl ?? globalThis.fetch);
52539
+ }
52457
52540
  const openai2 = createOpenAI({
52458
52541
  baseURL: llm.baseUrl,
52459
52542
  apiKey: llm.apiKey,
52460
- ...llm.disableThink && spec.injectsDisableThink ? { fetch: _wrapFetchDisableThink(globalThis.fetch) } : {}
52543
+ ...fetchImpl ? { fetch: fetchImpl } : {}
52461
52544
  });
52462
52545
  return spec.requiresChatCompletionsApi ? openai2.chat(llm.model) : openai2(llm.model);
52463
52546
  }
@@ -95205,6 +95288,9 @@ var init_local_transformers = __esm(() => {
95205
95288
  });
95206
95289
 
95207
95290
  // ../../packages/core/dist/services/embeddings/provider.js
95291
+ function _resolveEmbedContextWindow(embeddingConfig) {
95292
+ return parsePositiveIntEnv(process.env.OLLAMA_EMBEDDING_NUM_CTX, embeddingConfig?.contextWindow ?? INFERENCE_ROLE_DEFAULTS.embedding.contextWindow);
95293
+ }
95208
95294
  function sleep(ms) {
95209
95295
  return new Promise((resolve4) => setTimeout(resolve4, ms));
95210
95296
  }
@@ -95247,7 +95333,7 @@ function createProvider(config3, providerId) {
95247
95333
  }
95248
95334
  return new AISDKEmbeddingProvider(config3, providerId);
95249
95335
  }
95250
- var OLLAMA_EMBED_NUM_CTX, DimensionMismatchError, AISDKEmbeddingProvider;
95336
+ var DimensionMismatchError, AISDKEmbeddingProvider;
95251
95337
  var init_provider = __esm(() => {
95252
95338
  init_dist6();
95253
95339
  init_dist7();
@@ -95259,8 +95345,8 @@ var init_provider = __esm(() => {
95259
95345
  init_rate_limiter2();
95260
95346
  init_dist();
95261
95347
  init_config();
95348
+ init_inference_providers();
95262
95349
  init_local_transformers();
95263
- OLLAMA_EMBED_NUM_CTX = parsePositiveIntEnv(process.env.OLLAMA_EMBEDDING_NUM_CTX, 8192);
95264
95350
  DimensionMismatchError = class DimensionMismatchError extends Error {
95265
95351
  providerId;
95266
95352
  expected;
@@ -95422,7 +95508,7 @@ var init_provider = __esm(() => {
95422
95508
  const response = await this.ollamaFetch("/api/embed", {
95423
95509
  model: this.model,
95424
95510
  input: inputText,
95425
- options: { num_ctx: OLLAMA_EMBED_NUM_CTX }
95511
+ options: { num_ctx: _resolveEmbedContextWindow(loadConfigSafe().embedding) }
95426
95512
  });
95427
95513
  if (!response.ok) {
95428
95514
  throw new Error(`Ollama API error: ${response.status} ${response.statusText}`);
@@ -95513,7 +95599,7 @@ var init_provider = __esm(() => {
95513
95599
  const response = await this.ollamaFetch("/api/embed", {
95514
95600
  model: this.model,
95515
95601
  input: texts.map((t) => this.sanitizeText(this.truncateText(t))),
95516
- options: { num_ctx: OLLAMA_EMBED_NUM_CTX }
95602
+ options: { num_ctx: _resolveEmbedContextWindow(loadConfigSafe().embedding) }
95517
95603
  });
95518
95604
  if (!response.ok) {
95519
95605
  throw new Error(`Ollama batch API error: ${response.status} ${response.statusText}`);
@@ -108159,7 +108245,7 @@ var init_config2 = __esm(() => {
108159
108245
  })(),
108160
108246
  ollama: (() => {
108161
108247
  const file2 = fileFor("ollama");
108162
- const model = process.env.OLLAMA_EMBEDDING_MODEL || file2?.model || "qwen3-embedding:4b";
108248
+ const model = process.env.OLLAMA_EMBEDDING_MODEL || file2?.model || INFERENCE_PROVIDERS.ollama.defaultModels.embedding;
108163
108249
  const rawEnvDimensions = Number(process.env.OLLAMA_EMBEDDING_DIMENSIONS);
108164
108250
  const envDimensions = Number.isInteger(rawEnvDimensions) && rawEnvDimensions > 0 ? rawEnvDimensions : undefined;
108165
108251
  const resolvedDimensions = resolveEmbeddingDimensions(model, file2?.dimensions, envDimensions);
@@ -108265,7 +108351,7 @@ var init_config2 = __esm(() => {
108265
108351
  })(),
108266
108352
  lmstudio: (() => {
108267
108353
  const file2 = fileFor("lmstudio");
108268
- const model = process.env.LMSTUDIO_EMBEDDING_MODEL || file2?.model || "text-embedding-nomic-embed-text-v1.5";
108354
+ const model = process.env.LMSTUDIO_EMBEDDING_MODEL || file2?.model || INFERENCE_PROVIDERS.lmstudio.defaultModels.embedding;
108269
108355
  return {
108270
108356
  provider: "custom",
108271
108357
  model,
@@ -110617,6 +110703,12 @@ var init_base_vector_store = __esm(() => {
110617
110703
  });
110618
110704
 
110619
110705
  // ../../packages/core/dist/data/vector/postgres-vector-store.js
110706
+ function _resolveEmbedBatchSize(embeddingConfig) {
110707
+ const providerId = embeddingConfig?.provider;
110708
+ const spec = providerId && LOCAL_INFERENCE_IDS.includes(providerId) ? INFERENCE_PROVIDERS[providerId] : INFERENCE_PROVIDERS.ollama;
110709
+ return embeddingConfig?.batchSize ?? spec.embedBatchSize;
110710
+ }
110711
+
110620
110712
  class PostgresVectorCollection {
110621
110713
  pool;
110622
110714
  name;
@@ -110729,6 +110821,8 @@ var init_postgres_vector_store = __esm(() => {
110729
110821
  init_base_vector_store();
110730
110822
  init_dist();
110731
110823
  init_dist();
110824
+ init_config();
110825
+ init_inference_providers();
110732
110826
  init_identity_guard_installer();
110733
110827
  PostgresVectorStore = class PostgresVectorStore extends BaseVectorStore {
110734
110828
  pool = null;
@@ -110954,7 +111048,7 @@ var init_postgres_vector_store = __esm(() => {
110954
111048
  if (documents.length === 0)
110955
111049
  return;
110956
111050
  const pool = await this.ensureInitialized();
110957
- const EMBED_SUB_BATCH_SIZE = 8;
111051
+ const EMBED_SUB_BATCH_SIZE = _resolveEmbedBatchSize(loadConfigSafe().embedding);
110958
111052
  let totalInserted = 0;
110959
111053
  let totalFailed = 0;
110960
111054
  for (let i = 0;i < documents.length; i += EMBED_SUB_BATCH_SIZE) {
@@ -154152,7 +154246,7 @@ Examples:
154152
154246
  massa-ai-config init
154153
154247
  massa-ai-config init --lmstudio
154154
154248
  massa-ai-config init --mistral your-api-key
154155
- massa-ai-config use ollama --model qwen3-embedding:4b
154249
+ massa-ai-config use ollama --model qwen3-embedding:0.6b
154156
154250
  massa-ai-config use lmstudio
154157
154251
  massa-ai-config use mistral --api-key your-key
154158
154252
  massa-ai-config set embedding.dimensions 1024
@@ -154234,7 +154328,7 @@ async function runCli(argv) {
154234
154328
  console.log("\u2713 Configured for OpenAI embeddings");
154235
154329
  } else if (options.lmstudio) {
154236
154330
  const config3 = loadConfig();
154237
- const model = "text-embedding-nomic-embed-text-v1.5";
154331
+ const model = INFERENCE_PROVIDERS.lmstudio.defaultModels.embedding;
154238
154332
  config3.embedding = {
154239
154333
  provider: "lmstudio",
154240
154334
  model,
@@ -154242,6 +154336,8 @@ async function runCli(argv) {
154242
154336
  dimensions: INFERENCE_PROVIDERS.lmstudio.knownDimensions[model] ?? 768
154243
154337
  };
154244
154338
  config3.llm.baseUrl = INFERENCE_PROVIDERS.lmstudio.defaultLlmBaseUrl;
154339
+ config3.llm.model = INFERENCE_PROVIDERS.lmstudio.defaultModels.instruct;
154340
+ config3.llm.codeModel = INFERENCE_PROVIDERS.lmstudio.defaultModels.coding;
154245
154341
  saveConfig(config3);
154246
154342
  console.log("\u2713 Configured for LM Studio (local) embeddings");
154247
154343
  } else {
@@ -154294,21 +154390,29 @@ Using defaults:`);
154294
154390
  }
154295
154391
  const config3 = loadConfig();
154296
154392
  if (provider === "ollama") {
154393
+ const model = options.model || INFERENCE_PROVIDERS.ollama.defaultModels.embedding;
154394
+ const urls = deriveInferenceBaseUrls("ollama", options["base-url"]);
154297
154395
  config3.embedding = {
154298
154396
  provider: "ollama",
154299
- model: options.model || "qwen3-embedding:4b",
154300
- baseURL: options["base-url"] || "http://localhost:11434",
154301
- dimensions: 2560
154397
+ model,
154398
+ baseURL: urls.embeddingBaseUrl,
154399
+ dimensions: knownEmbeddingDimensions(model) ?? 768
154302
154400
  };
154401
+ config3.llm.baseUrl = urls.llmBaseUrl;
154402
+ config3.llm.model = INFERENCE_PROVIDERS.ollama.defaultModels.instruct;
154403
+ config3.llm.codeModel = INFERENCE_PROVIDERS.ollama.defaultModels.coding;
154303
154404
  } else if (provider === "lmstudio") {
154304
- const model = options.model || "text-embedding-nomic-embed-text-v1.5";
154405
+ const model = options.model || INFERENCE_PROVIDERS.lmstudio.defaultModels.embedding;
154406
+ const urls = deriveInferenceBaseUrls("lmstudio", options["base-url"]);
154305
154407
  config3.embedding = {
154306
154408
  provider: "lmstudio",
154307
154409
  model,
154308
- baseURL: options["base-url"] || INFERENCE_PROVIDERS.lmstudio.defaultEmbeddingBaseUrl,
154410
+ baseURL: urls.embeddingBaseUrl,
154309
154411
  dimensions: INFERENCE_PROVIDERS.lmstudio.knownDimensions[model] ?? 768
154310
154412
  };
154311
- config3.llm.baseUrl = options["base-url"] || INFERENCE_PROVIDERS.lmstudio.defaultLlmBaseUrl;
154413
+ config3.llm.baseUrl = urls.llmBaseUrl;
154414
+ config3.llm.model = INFERENCE_PROVIDERS.lmstudio.defaultModels.instruct;
154415
+ config3.llm.codeModel = INFERENCE_PROVIDERS.lmstudio.defaultModels.coding;
154312
154416
  } else if (provider === "mistral") {
154313
154417
  if (!options["api-key"]) {
154314
154418
  console.error("Error: --api-key required for Mistral");
package/dist/index.js CHANGED
@@ -25441,10 +25441,33 @@ function parseLmStudioModelList(body) {
25441
25441
  function inferenceProviderList() {
25442
25442
  return LOCAL_INFERENCE_IDS.map((id) => INFERENCE_PROVIDERS[id]);
25443
25443
  }
25444
- var LOCAL_INFERENCE_IDS, INFERENCE_PROVIDERS;
25444
+ function deriveInferenceBaseUrls(providerId, explicitBaseUrl) {
25445
+ const spec = INFERENCE_PROVIDERS[providerId];
25446
+ if (!explicitBaseUrl) {
25447
+ return {
25448
+ embeddingBaseUrl: spec.defaultEmbeddingBaseUrl,
25449
+ llmBaseUrl: spec.defaultLlmBaseUrl
25450
+ };
25451
+ }
25452
+ let end = explicitBaseUrl.length;
25453
+ while (end > 0 && explicitBaseUrl.charCodeAt(end - 1) === SLASH)
25454
+ end--;
25455
+ const base = explicitBaseUrl.slice(0, end);
25456
+ const suffix = spec.defaultLlmBaseUrl.startsWith(spec.defaultEmbeddingBaseUrl) ? spec.defaultLlmBaseUrl.slice(spec.defaultEmbeddingBaseUrl.length) : "";
25457
+ return {
25458
+ embeddingBaseUrl: base,
25459
+ llmBaseUrl: `${base}${suffix}`
25460
+ };
25461
+ }
25462
+ var LOCAL_INFERENCE_IDS, INFERENCE_ROLE_DEFAULTS, INFERENCE_PROVIDERS, SLASH = 47;
25445
25463
  var init_inference_providers = __esm(() => {
25446
25464
  init_embedding_dimensions();
25447
25465
  LOCAL_INFERENCE_IDS = ["ollama", "lmstudio"];
25466
+ INFERENCE_ROLE_DEFAULTS = {
25467
+ embedding: { contextWindow: 8192 },
25468
+ instruct: { contextWindow: 16384, temperature: 0.2 },
25469
+ coding: { contextWindow: 32768, temperature: 0 }
25470
+ };
25448
25471
  INFERENCE_PROVIDERS = {
25449
25472
  ollama: {
25450
25473
  id: "ollama",
@@ -25456,6 +25479,13 @@ var init_inference_providers = __esm(() => {
25456
25479
  dimensions: "OLLAMA_EMBEDDING_DIMENSIONS"
25457
25480
  },
25458
25481
  knownDimensions: KNOWN_EMBEDDING_DIMENSIONS,
25482
+ defaultModels: {
25483
+ embedding: "qwen3-embedding:0.6b",
25484
+ instruct: "qwen3-vl:8b",
25485
+ coding: "qwen2.5-coder:7b"
25486
+ },
25487
+ appliesContextPerRequest: true,
25488
+ embedBatchSize: 64,
25459
25489
  supportsOllamaVersionProbe: true,
25460
25490
  injectsDisableThink: true,
25461
25491
  requiresChatCompletionsApi: false,
@@ -25471,8 +25501,16 @@ var init_inference_providers = __esm(() => {
25471
25501
  dimensions: "LMSTUDIO_EMBEDDING_DIMENSIONS"
25472
25502
  },
25473
25503
  knownDimensions: {
25474
- "text-embedding-nomic-embed-text-v1.5": 768
25504
+ "text-embedding-nomic-embed-text-v1.5": 768,
25505
+ "text-embedding-qwen3-embedding-0.6b": 1024
25475
25506
  },
25507
+ defaultModels: {
25508
+ embedding: "text-embedding-qwen3-embedding-0.6b",
25509
+ instruct: "qwen3-vl-8b-instruct",
25510
+ coding: "qwen2.5-coder-7b-instruct"
25511
+ },
25512
+ appliesContextPerRequest: false,
25513
+ embedBatchSize: 64,
25476
25514
  supportsOllamaVersionProbe: false,
25477
25515
  injectsDisableThink: false,
25478
25516
  requiresChatCompletionsApi: true,
@@ -25487,6 +25525,7 @@ var API_PROVIDER_IDS, EMBEDDING_PROVIDER_IDS, SCHEDULER_JOB_KINDS, MAX_MATCH_WOR
25487
25525
  var init_massa_ai_config = __esm(() => {
25488
25526
  init_xdg();
25489
25527
  init_inference_providers();
25528
+ init_embedding_dimensions();
25490
25529
  API_PROVIDER_IDS = ["mistral", "openai", "google", "cohere"];
25491
25530
  EMBEDDING_PROVIDER_IDS = [
25492
25531
  ...LOCAL_INFERENCE_IDS,
@@ -25553,9 +25592,9 @@ var init_massa_ai_config = __esm(() => {
25553
25592
  },
25554
25593
  embedding: {
25555
25594
  provider: "ollama",
25556
- model: "qwen3-embedding:4b",
25595
+ model: INFERENCE_PROVIDERS.ollama.defaultModels.embedding,
25557
25596
  baseURL: "http://localhost:11434",
25558
- dimensions: 2560
25597
+ dimensions: knownEmbeddingDimensions(INFERENCE_PROVIDERS.ollama.defaultModels.embedding) ?? 768
25559
25598
  },
25560
25599
  compression: {
25561
25600
  defaultStrategy: "code_structure",
@@ -25594,12 +25633,15 @@ var init_massa_ai_config = __esm(() => {
25594
25633
  enabled: false,
25595
25634
  baseUrl: "http://localhost:11434/v1",
25596
25635
  apiKey: "ollama",
25597
- model: "qwen2.5:7b-instruct",
25598
- codeModel: "qwen2.5-coder:7b",
25636
+ model: INFERENCE_PROVIDERS.ollama.defaultModels.instruct,
25637
+ codeModel: INFERENCE_PROVIDERS.ollama.defaultModels.coding,
25599
25638
  temperature: 0.2,
25600
25639
  maxOutputTokens: 8000,
25601
25640
  timeoutMs: 90000,
25602
- disableThink: true
25641
+ disableThink: true,
25642
+ contextWindow: INFERENCE_ROLE_DEFAULTS.instruct.contextWindow,
25643
+ codeContextWindow: INFERENCE_ROLE_DEFAULTS.coding.contextWindow,
25644
+ codeTemperature: INFERENCE_ROLE_DEFAULTS.coding.temperature
25603
25645
  },
25604
25646
  memory: {
25605
25647
  decay: {
@@ -26154,6 +26196,13 @@ function getGlobalDataDir() {
26154
26196
  return fileConfig.dataDir;
26155
26197
  return path4.join(getConfigDir(), "data");
26156
26198
  }
26199
+ function activeInferenceProviderId() {
26200
+ const providerId = fileConfig.embedding?.provider;
26201
+ if (providerId && LOCAL_INFERENCE_IDS.includes(providerId)) {
26202
+ return providerId;
26203
+ }
26204
+ return "ollama";
26205
+ }
26157
26206
 
26158
26207
  class Config {
26159
26208
  config;
@@ -26290,11 +26339,12 @@ class Config {
26290
26339
  this.config[key] = value;
26291
26340
  }
26292
26341
  }
26293
- var DEFAULT_LLM_MODEL = "qwen2.5:7b-instruct", DEFAULT_LLM_CODE_MODEL = "qwen2.5-coder:7b", SCHEDULER_JOB_ENV, DEFAULT_ALLOWED_EXTENSIONS, fileConfig, fileCacheL1Bytes, fileCacheL2Bytes, resolvedDataDir, defaultConfig, config2;
26342
+ var SCHEDULER_JOB_ENV, DEFAULT_ALLOWED_EXTENSIONS, fileConfig, DEFAULT_LLM_MODEL, DEFAULT_LLM_CODE_MODEL, fileCacheL1Bytes, fileCacheL2Bytes, resolvedDataDir, defaultConfig, config2;
26294
26343
  var init_config = __esm(() => {
26295
26344
  init_env();
26296
26345
  init_config_loader();
26297
26346
  init_massa_ai_config();
26347
+ init_inference_providers();
26298
26348
  init_massa_ai_config();
26299
26349
  init_massa_ai_config();
26300
26350
  init_config_loader();
@@ -26365,6 +26415,8 @@ var init_config = __esm(() => {
26365
26415
  ".hs"
26366
26416
  ];
26367
26417
  fileConfig = loadConfigSafe();
26418
+ DEFAULT_LLM_MODEL = INFERENCE_PROVIDERS[activeInferenceProviderId()].defaultModels.instruct;
26419
+ DEFAULT_LLM_CODE_MODEL = INFERENCE_PROVIDERS[activeInferenceProviderId()].defaultModels.coding;
26368
26420
  fileCacheL1Bytes = fileConfig.cache?.l1MaxSizeMB ? fileConfig.cache.l1MaxSizeMB * 1024 * 1024 : undefined;
26369
26421
  fileCacheL2Bytes = fileConfig.cache?.l2MaxSizeMB ? fileConfig.cache.l2MaxSizeMB * 1024 * 1024 : undefined;
26370
26422
  resolvedDataDir = getGlobalDataDir();
@@ -26407,7 +26459,10 @@ var init_config = __esm(() => {
26407
26459
  temperature: envNum("MASSA_AI_LLM_TEMPERATURE", fileConfig.llm?.temperature ?? 0.2),
26408
26460
  maxOutputTokens: envNum("MASSA_AI_LLM_MAX_OUTPUT_TOKENS", fileConfig.llm?.maxOutputTokens ?? 8000),
26409
26461
  timeoutMs: envNum("MASSA_AI_LLM_TIMEOUT_MS", fileConfig.llm?.timeoutMs ?? 90000),
26410
- disableThink: envBool("MASSA_AI_LLM_DISABLE_THINK", fileConfig.llm?.disableThink ?? true)
26462
+ disableThink: envBool("MASSA_AI_LLM_DISABLE_THINK", fileConfig.llm?.disableThink ?? true),
26463
+ contextWindow: fileConfig.llm?.contextWindow ?? INFERENCE_ROLE_DEFAULTS.instruct.contextWindow,
26464
+ codeContextWindow: fileConfig.llm?.codeContextWindow ?? INFERENCE_ROLE_DEFAULTS.coding.contextWindow,
26465
+ codeTemperature: envNum("MASSA_AI_LLM_CODE_TEMPERATURE", fileConfig.llm?.codeTemperature ?? INFERENCE_ROLE_DEFAULTS.coding.temperature)
26411
26466
  },
26412
26467
  memory: {
26413
26468
  decay: {
@@ -34343,7 +34398,7 @@ var require_ignore = __commonJS((exports, module) => {
34343
34398
  var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
34344
34399
  var REGEX_SPLITALL_CRLF = /\r?\n/g;
34345
34400
  var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
34346
- var SLASH = "/";
34401
+ var SLASH2 = "/";
34347
34402
  var TMP_KEY_IGNORE = "node-ignore";
34348
34403
  if (typeof Symbol !== "undefined") {
34349
34404
  TMP_KEY_IGNORE = Symbol.for("node-ignore");
@@ -34554,13 +34609,13 @@ var require_ignore = __commonJS((exports, module) => {
34554
34609
  return cache[path16];
34555
34610
  }
34556
34611
  if (!slices) {
34557
- slices = path16.split(SLASH);
34612
+ slices = path16.split(SLASH2);
34558
34613
  }
34559
34614
  slices.pop();
34560
34615
  if (!slices.length) {
34561
34616
  return cache[path16] = this._testOne(path16, checkUnignored);
34562
34617
  }
34563
- const parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices);
34618
+ const parent = this._t(slices.join(SLASH2) + SLASH2, cache, checkUnignored, slices);
34564
34619
  return cache[path16] = parent.ignored ? parent : this._testOne(path16, checkUnignored);
34565
34620
  }
34566
34621
  ignores(path16) {
@@ -58954,20 +59009,26 @@ function isLlmEnabled() {
58954
59009
  function _setLlmEnabledForTesting(flag) {
58955
59010
  testEnabledOverride = flag;
58956
59011
  }
58957
- function getLlmConfig(opts) {
58958
- const cfg = config2.get("llm");
58959
- const role = opts?.modelRole ?? "instruct";
58960
- const model = role === "code" ? cfg?.codeModel ?? cfg?.model ?? DEFAULT_LLM_MODEL : cfg?.model ?? DEFAULT_LLM_MODEL;
59012
+ function _resolveLlmConfig(cfg, role, baseUrlOverride) {
59013
+ const baseUrl = baseUrlOverride ?? cfg?.baseUrl ?? INFERENCE_PROVIDERS.ollama.defaultLlmBaseUrl;
59014
+ const spec = resolveInferenceSpec(baseUrl);
59015
+ const model = role === "code" ? cfg?.codeModel ?? spec.defaultModels.coding : cfg?.model ?? spec.defaultModels.instruct;
59016
+ const temperature = role === "code" ? cfg?.codeTemperature ?? INFERENCE_ROLE_DEFAULTS.coding.temperature : cfg?.temperature ?? INFERENCE_ROLE_DEFAULTS.instruct.temperature;
59017
+ const contextWindow = role === "code" ? cfg?.codeContextWindow ?? INFERENCE_ROLE_DEFAULTS.coding.contextWindow : cfg?.contextWindow ?? INFERENCE_ROLE_DEFAULTS.instruct.contextWindow;
58961
59018
  return {
58962
- baseUrl: testBaseUrlOverride ?? cfg?.baseUrl ?? "http://localhost:11434/v1",
58963
- apiKey: cfg?.apiKey ?? "ollama",
59019
+ baseUrl,
59020
+ apiKey: cfg?.apiKey ?? spec.id,
58964
59021
  model,
58965
- temperature: cfg?.temperature ?? 0.2,
59022
+ temperature,
59023
+ contextWindow,
58966
59024
  maxOutputTokens: cfg?.maxOutputTokens ?? 8000,
58967
59025
  timeoutMs: cfg?.timeoutMs ?? 90000,
58968
- disableThink: cfg?.disableThink ?? true
59026
+ disableThink: cfg?.disableThink ?? spec.injectsDisableThink
58969
59027
  };
58970
59028
  }
59029
+ function getLlmConfig(opts) {
59030
+ return _resolveLlmConfig(config2.get("llm"), opts?.modelRole ?? "instruct", testBaseUrlOverride);
59031
+ }
58971
59032
  function hostPort(url2) {
58972
59033
  try {
58973
59034
  const u = new URL(url2);
@@ -59011,12 +59072,34 @@ function _wrapFetchDisableThink(baseFetch) {
59011
59072
  };
59012
59073
  return wrapped;
59013
59074
  }
59075
+ function _wrapFetchContextWindow(baseFetch, contextWindow) {
59076
+ const wrapped = async (input, init) => {
59077
+ try {
59078
+ if (init?.body && typeof init.body === "string") {
59079
+ const parsed = JSON.parse(init.body);
59080
+ if (parsed && typeof parsed === "object") {
59081
+ parsed.options = { ...parsed.options, num_ctx: contextWindow };
59082
+ init = { ...init, body: JSON.stringify(parsed) };
59083
+ }
59084
+ }
59085
+ } catch {}
59086
+ return baseFetch(input, init);
59087
+ };
59088
+ return wrapped;
59089
+ }
59014
59090
  function buildProvider(llm) {
59015
59091
  const spec = resolveInferenceSpec(llm.baseUrl);
59092
+ let fetchImpl;
59093
+ if (spec.appliesContextPerRequest) {
59094
+ fetchImpl = _wrapFetchContextWindow(fetchImpl ?? globalThis.fetch, llm.contextWindow);
59095
+ }
59096
+ if (llm.disableThink && spec.injectsDisableThink) {
59097
+ fetchImpl = _wrapFetchDisableThink(fetchImpl ?? globalThis.fetch);
59098
+ }
59016
59099
  const openai2 = createOpenAI({
59017
59100
  baseURL: llm.baseUrl,
59018
59101
  apiKey: llm.apiKey,
59019
- ...llm.disableThink && spec.injectsDisableThink ? { fetch: _wrapFetchDisableThink(globalThis.fetch) } : {}
59102
+ ...fetchImpl ? { fetch: fetchImpl } : {}
59020
59103
  });
59021
59104
  return spec.requiresChatCompletionsApi ? openai2.chat(llm.model) : openai2(llm.model);
59022
59105
  }
@@ -101764,6 +101847,9 @@ var init_local_transformers = __esm(() => {
101764
101847
  });
101765
101848
 
101766
101849
  // ../../packages/core/dist/services/embeddings/provider.js
101850
+ function _resolveEmbedContextWindow(embeddingConfig) {
101851
+ return parsePositiveIntEnv(process.env.OLLAMA_EMBEDDING_NUM_CTX, embeddingConfig?.contextWindow ?? INFERENCE_ROLE_DEFAULTS.embedding.contextWindow);
101852
+ }
101767
101853
  function sleep(ms) {
101768
101854
  return new Promise((resolve4) => setTimeout(resolve4, ms));
101769
101855
  }
@@ -101806,7 +101892,7 @@ function createProvider(config3, providerId) {
101806
101892
  }
101807
101893
  return new AISDKEmbeddingProvider(config3, providerId);
101808
101894
  }
101809
- var OLLAMA_EMBED_NUM_CTX, DimensionMismatchError, AISDKEmbeddingProvider;
101895
+ var DimensionMismatchError, AISDKEmbeddingProvider;
101810
101896
  var init_provider = __esm(() => {
101811
101897
  init_dist6();
101812
101898
  init_dist7();
@@ -101818,8 +101904,8 @@ var init_provider = __esm(() => {
101818
101904
  init_rate_limiter2();
101819
101905
  init_dist();
101820
101906
  init_config();
101907
+ init_inference_providers();
101821
101908
  init_local_transformers();
101822
- OLLAMA_EMBED_NUM_CTX = parsePositiveIntEnv(process.env.OLLAMA_EMBEDDING_NUM_CTX, 8192);
101823
101909
  DimensionMismatchError = class DimensionMismatchError extends Error {
101824
101910
  providerId;
101825
101911
  expected;
@@ -101981,7 +102067,7 @@ var init_provider = __esm(() => {
101981
102067
  const response = await this.ollamaFetch("/api/embed", {
101982
102068
  model: this.model,
101983
102069
  input: inputText,
101984
- options: { num_ctx: OLLAMA_EMBED_NUM_CTX }
102070
+ options: { num_ctx: _resolveEmbedContextWindow(loadConfigSafe().embedding) }
101985
102071
  });
101986
102072
  if (!response.ok) {
101987
102073
  throw new Error(`Ollama API error: ${response.status} ${response.statusText}`);
@@ -102072,7 +102158,7 @@ var init_provider = __esm(() => {
102072
102158
  const response = await this.ollamaFetch("/api/embed", {
102073
102159
  model: this.model,
102074
102160
  input: texts.map((t) => this.sanitizeText(this.truncateText(t))),
102075
- options: { num_ctx: OLLAMA_EMBED_NUM_CTX }
102161
+ options: { num_ctx: _resolveEmbedContextWindow(loadConfigSafe().embedding) }
102076
102162
  });
102077
102163
  if (!response.ok) {
102078
102164
  throw new Error(`Ollama batch API error: ${response.status} ${response.statusText}`);
@@ -114718,7 +114804,7 @@ var init_config2 = __esm(() => {
114718
114804
  })(),
114719
114805
  ollama: (() => {
114720
114806
  const file2 = fileFor("ollama");
114721
- const model = process.env.OLLAMA_EMBEDDING_MODEL || file2?.model || "qwen3-embedding:4b";
114807
+ const model = process.env.OLLAMA_EMBEDDING_MODEL || file2?.model || INFERENCE_PROVIDERS.ollama.defaultModels.embedding;
114722
114808
  const rawEnvDimensions = Number(process.env.OLLAMA_EMBEDDING_DIMENSIONS);
114723
114809
  const envDimensions = Number.isInteger(rawEnvDimensions) && rawEnvDimensions > 0 ? rawEnvDimensions : undefined;
114724
114810
  const resolvedDimensions = resolveEmbeddingDimensions(model, file2?.dimensions, envDimensions);
@@ -114824,7 +114910,7 @@ var init_config2 = __esm(() => {
114824
114910
  })(),
114825
114911
  lmstudio: (() => {
114826
114912
  const file2 = fileFor("lmstudio");
114827
- const model = process.env.LMSTUDIO_EMBEDDING_MODEL || file2?.model || "text-embedding-nomic-embed-text-v1.5";
114913
+ const model = process.env.LMSTUDIO_EMBEDDING_MODEL || file2?.model || INFERENCE_PROVIDERS.lmstudio.defaultModels.embedding;
114828
114914
  return {
114829
114915
  provider: "custom",
114830
114916
  model,
@@ -117176,6 +117262,12 @@ var init_base_vector_store = __esm(() => {
117176
117262
  });
117177
117263
 
117178
117264
  // ../../packages/core/dist/data/vector/postgres-vector-store.js
117265
+ function _resolveEmbedBatchSize(embeddingConfig) {
117266
+ const providerId = embeddingConfig?.provider;
117267
+ const spec = providerId && LOCAL_INFERENCE_IDS.includes(providerId) ? INFERENCE_PROVIDERS[providerId] : INFERENCE_PROVIDERS.ollama;
117268
+ return embeddingConfig?.batchSize ?? spec.embedBatchSize;
117269
+ }
117270
+
117179
117271
  class PostgresVectorCollection {
117180
117272
  pool;
117181
117273
  name;
@@ -117288,6 +117380,8 @@ var init_postgres_vector_store = __esm(() => {
117288
117380
  init_base_vector_store();
117289
117381
  init_dist();
117290
117382
  init_dist();
117383
+ init_config();
117384
+ init_inference_providers();
117291
117385
  init_identity_guard_installer();
117292
117386
  PostgresVectorStore = class PostgresVectorStore extends BaseVectorStore {
117293
117387
  pool = null;
@@ -117513,7 +117607,7 @@ var init_postgres_vector_store = __esm(() => {
117513
117607
  if (documents.length === 0)
117514
117608
  return;
117515
117609
  const pool = await this.ensureInitialized();
117516
- const EMBED_SUB_BATCH_SIZE = 8;
117610
+ const EMBED_SUB_BATCH_SIZE = _resolveEmbedBatchSize(loadConfigSafe().embedding);
117517
117611
  let totalInserted = 0;
117518
117612
  let totalFailed = 0;
117519
117613
  for (let i = 0;i < documents.length; i += EMBED_SUB_BATCH_SIZE) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@massa-ai/mcp-client",
3
- "version": "1.58.0",
3
+ "version": "1.59.0",
4
4
  "description": "massa-ai MCP server - Semantic code search, memory, and context compression via Model Context Protocol",
5
5
  "author": "luizgmassa",
6
6
  "type": "module",
@@ -20,8 +20,8 @@
20
20
  "type-check": "tsc --noEmit"
21
21
  },
22
22
  "dependencies": {
23
- "@massa-ai/core": "^1.58.0",
24
- "@massa-ai/shared": "^1.58.0",
23
+ "@massa-ai/core": "^1.59.0",
24
+ "@massa-ai/shared": "^1.59.0",
25
25
  "@modelcontextprotocol/sdk": "^1.0.0"
26
26
  },
27
27
  "devDependencies": {