@bonginkan/maria 2.0.5 → 2.0.6

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 CHANGED
@@ -1,4 +1,4 @@
1
- # 🤖 MARIA Platform v1.8.6 "Quality Assured Edition"
1
+ # 🤖 MARIA Platform v2.0.6 "Memory Intelligence Edition"
2
2
 
3
3
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0%2B-blue)](https://www.typescriptlang.org/)
4
4
  [![Node.js](https://img.shields.io/badge/Node.js-18%2B-green)](https://nodejs.org/)
@@ -9,7 +9,7 @@
9
9
  [![Cognitive Modes](https://img.shields.io/badge/Cognitive%20Modes-50-purple)](https://github.com/bonginkan/maria)
10
10
  [![Memory System](https://img.shields.io/badge/Memory%20System-Dual--Layer-orange)](https://github.com/bonginkan/maria)
11
11
 
12
- > 🎉 **MARIA Platform v1.8.6** - Enterprise AI Development CLI with **100% Tested & Verified Commands**, **Revolutionary Dual-Layer Memory System**, **Context-Aware Intelligence**, **Complete Local LLM Integration** (Ollama, vLLM, LM Studio), **Personalized Learning**, 40+ Interactive Commands, and **Privacy-First Development** Environment!
12
+ > 🎉 **MARIA Platform v2.0.6** - Enterprise AI Development CLI with **100% Tested & Verified Commands**, **Revolutionary Dual-Layer Memory System**, **Context-Aware Intelligence**, **Complete Local LLM Integration** (Ollama, vLLM, LM Studio), **Personalized Learning**, 50+ Interactive Commands, and **Privacy-First Development** Environment!
13
13
 
14
14
  ## 🖥️ **MARIA CODE CLI Interface**
15
15
 
@@ -19,7 +19,7 @@ _MARIA's beautiful startup interface with automatic AI service initialization an
19
19
 
20
20
  ## 🌟 Key Features - Local AI & Privacy-First Development
21
21
 
22
- ### 🧠 **NEW: Revolutionary Dual-Layer Memory System (v1.8.5)**
22
+ ### 🧠 **Revolutionary Dual-Layer Memory System (v2.0.6)**
23
23
 
24
24
  - **System 1 (Fast/Intuitive)**: Instant pattern recognition and cache-based responses
25
25
  - **System 2 (Deliberate/Analytical)**: Deep reasoning traces and decision trees
@@ -178,7 +178,7 @@ npm install -g @bonginkan/maria
178
178
 
179
179
  # Verify installation
180
180
  maria --version
181
- # Output: MARIA Platform v1.8.2 "Algorithm Education Revolution"
181
+ # Output: MARIA Platform v2.0.6 "Memory Intelligence Edition"
182
182
 
183
183
  # Setup local AI models (optional)
184
184
  maria setup-ollama # Install and configure Ollama
package/dist/bin/maria.js CHANGED
@@ -157,8 +157,8 @@ var init_openai_provider = __esm({
157
157
  }
158
158
  name = "OpenAI";
159
159
  models = [
160
- "gpt-5-2025-08-07",
161
- "gpt-5-mini-2025-08-07",
160
+ "gpt-5",
161
+ "gpt-5-mini",
162
162
  "gpt-4o",
163
163
  "gpt-4o-mini",
164
164
  "gpt-4-turbo",
@@ -286,7 +286,7 @@ var init_anthropic_provider = __esm({
286
286
  }
287
287
  name = "Anthropic";
288
288
  models = [
289
- "claude-opus-4.1",
289
+ "claude-4.1",
290
290
  "claude-3-5-sonnet-20241022",
291
291
  "claude-3-5-haiku-20241022",
292
292
  "claude-3-opus-20240229",
@@ -584,7 +584,9 @@ var init_grok_provider = __esm({
584
584
  }
585
585
  name = "Grok";
586
586
  models = [
587
- "grok-4-0709",
587
+ "grok-4",
588
+ "grok-beta",
589
+ "grok-2",
588
590
  "llama-3.3-70b-versatile",
589
591
  "llama-3.1-70b-versatile",
590
592
  "llama-3.1-8b-instant",
@@ -1703,6 +1705,30 @@ var init_manager = __esm({
1703
1705
  }
1704
1706
  }
1705
1707
  }
1708
+ const cloudProviders = ["openai", "anthropic", "google", "grok"];
1709
+ const defaultCloudModels = {
1710
+ openai: ["gpt-5", "gpt-5-mini", "gpt-4o", "gpt-4o-mini", "o1-preview", "o1-mini"],
1711
+ anthropic: ["claude-4.1", "claude-3-5-sonnet-20241022", "claude-3-5-haiku-20241022", "claude-3-opus-20240229"],
1712
+ google: ["gemini-2.5-pro", "gemini-2.5-flash", "gemini-1.5-pro", "gemini-1.5-flash"],
1713
+ grok: ["grok-4", "grok-beta", "grok-2"]
1714
+ };
1715
+ for (const providerName of cloudProviders) {
1716
+ if (!this.availableProviders.has(providerName)) {
1717
+ const models = defaultCloudModels[providerName] || [];
1718
+ const modelInfos = models.map((modelName) => ({
1719
+ id: `${providerName}-${modelName}`,
1720
+ name: modelName,
1721
+ provider: providerName,
1722
+ description: `${modelName} from ${providerName}`,
1723
+ contextLength: 8192,
1724
+ capabilities: ["text", "code", "vision"],
1725
+ available: false,
1726
+ // Mark as unavailable (need API key)
1727
+ recommendedFor: ["general"]
1728
+ }));
1729
+ allModels.push(...modelInfos);
1730
+ }
1731
+ }
1706
1732
  return allModels;
1707
1733
  }
1708
1734
  selectOptimalProvider(_taskType, priorityMode = "auto") {
@@ -2422,7 +2448,9 @@ var init_config_manager = __esm({
2422
2448
  autoStart: true,
2423
2449
  healthMonitoring: true,
2424
2450
  language: "auto",
2425
- offlineMode: false
2451
+ offlineMode: false,
2452
+ model: "gpt-5-mini",
2453
+ provider: "openai"
2426
2454
  };
2427
2455
  }
2428
2456
  mergeConfig(newConfig) {
@@ -2645,6 +2673,50 @@ Context from memory:
2645
2673
  this.config.set("priority", mode);
2646
2674
  this.router.updatePriorityMode(mode);
2647
2675
  }
2676
+ /**
2677
+ * Switch to a specific model
2678
+ */
2679
+ async switchModel(modelId) {
2680
+ try {
2681
+ const models = await this.getModels();
2682
+ const targetModel = models.find((m) => m.id === modelId || m.name === modelId);
2683
+ if (!targetModel) {
2684
+ return {
2685
+ success: false,
2686
+ message: `Model not found: ${modelId}`
2687
+ };
2688
+ }
2689
+ if (!targetModel.available) {
2690
+ return {
2691
+ success: false,
2692
+ message: `Model ${targetModel.name} is not available. Please check API keys.`
2693
+ };
2694
+ }
2695
+ this.config.set("model", targetModel.name);
2696
+ this.config.set("provider", targetModel.provider);
2697
+ this.router.updatePreferredProvider(targetModel.provider, targetModel.name);
2698
+ return {
2699
+ success: true,
2700
+ message: `Switched to ${targetModel.name} (${targetModel.provider})`
2701
+ };
2702
+ } catch (error) {
2703
+ return {
2704
+ success: false,
2705
+ message: `Failed to switch model: ${error instanceof Error ? error.message : "Unknown error"}`
2706
+ };
2707
+ }
2708
+ }
2709
+ /**
2710
+ * Get current active model
2711
+ */
2712
+ getCurrentModel() {
2713
+ const currentModel = this.config.get("model");
2714
+ const currentProvider = this.config.get("provider");
2715
+ if (currentModel && currentProvider) {
2716
+ return { name: currentModel, provider: currentProvider };
2717
+ }
2718
+ return null;
2719
+ }
2648
2720
  /**
2649
2721
  * Get current configuration
2650
2722
  */
@@ -25597,17 +25669,36 @@ async function showModels(maria) {
25597
25669
  try {
25598
25670
  const models = await maria.getModels();
25599
25671
  const available = models.filter((m) => m.available);
25600
- if (available.length === 0) {
25601
- console.log(chalk13__default.default.yellow("No models available"));
25672
+ const unavailable = models.filter((m) => !m.available);
25673
+ if (available.length === 0 && unavailable.length === 0) {
25674
+ console.log(chalk13__default.default.yellow("No models found"));
25602
25675
  return;
25603
25676
  }
25604
- for (const model of available) {
25605
- const provider = chalk13__default.default.gray(`[${model.provider}]`);
25606
- const capabilities = model.capabilities ? model.capabilities.join(", ") : "No capabilities listed";
25607
- console.log(`\u2705 ${chalk13__default.default.bold(model.name)} ${provider}`);
25608
- console.log(` ${chalk13__default.default.gray(capabilities)}`);
25677
+ if (available.length > 0) {
25678
+ console.log(chalk13__default.default.green("\u2705 Available Models:"));
25679
+ for (const model of available) {
25680
+ const provider = chalk13__default.default.gray(`[${model.provider}]`);
25681
+ const capabilities = model.capabilities ? model.capabilities.join(", ") : "No capabilities listed";
25682
+ console.log(` \u2705 ${chalk13__default.default.bold(model.name)} ${provider}`);
25683
+ console.log(` ${chalk13__default.default.gray(capabilities)}`);
25684
+ }
25685
+ console.log("");
25686
+ }
25687
+ if (unavailable.length > 0) {
25688
+ console.log(chalk13__default.default.yellow("\u26A0\uFE0F Cloud Models (Require API Keys):"));
25689
+ for (const model of unavailable) {
25690
+ const provider = chalk13__default.default.gray(`[${model.provider}]`);
25691
+ const capabilities = model.capabilities ? model.capabilities.join(", ") : "No capabilities listed";
25692
+ console.log(` \u274C ${chalk13__default.default.white(model.name)} ${provider}`);
25693
+ console.log(` ${chalk13__default.default.gray(capabilities)}`);
25694
+ }
25695
+ console.log("");
25696
+ console.log(chalk13__default.default.gray("\u{1F4A1} To use cloud models, set environment variables:"));
25697
+ console.log(chalk13__default.default.cyan(" export OPENAI_API_KEY=your_key"));
25698
+ console.log(chalk13__default.default.cyan(" export ANTHROPIC_API_KEY=your_key"));
25699
+ console.log(chalk13__default.default.cyan(" export GOOGLE_API_KEY=your_key"));
25700
+ console.log("");
25609
25701
  }
25610
- console.log("");
25611
25702
  } catch (error) {
25612
25703
  console.error(chalk13__default.default.red("\u274C Failed to get models:"), error);
25613
25704
  }
@@ -25672,26 +25763,34 @@ async function showModelSelector(maria, args) {
25672
25763
  try {
25673
25764
  const models = await maria.getModels();
25674
25765
  const available = models.filter((m) => m.available);
25766
+ const allModels = models;
25675
25767
  if (args.length > 0) {
25676
25768
  const modelName = args.join(" ");
25677
- const targetModel = available.find(
25769
+ const targetModel = allModels.find(
25678
25770
  (m) => m.name.toLowerCase().includes(modelName.toLowerCase()) || m.provider.toLowerCase().includes(modelName.toLowerCase())
25679
25771
  );
25680
25772
  if (targetModel) {
25681
- console.log(
25682
- chalk13__default.default.green(`\u2705 Target model found: ${targetModel.name} (${targetModel.provider})`)
25683
- );
25684
- console.log(chalk13__default.default.yellow("Note: Model switching will be implemented in a future version"));
25685
- console.log(
25686
- chalk13__default.default.gray("Currently, you can switch models using environment variables or CLI options")
25687
- );
25773
+ if (targetModel.available) {
25774
+ console.log(
25775
+ chalk13__default.default.green(`\u2705 Target model found: ${targetModel.name} (${targetModel.provider})`)
25776
+ );
25777
+ console.log(chalk13__default.default.yellow("Note: Model switching will be implemented in a future version"));
25778
+ console.log(
25779
+ chalk13__default.default.gray("Currently, you can switch models using environment variables or CLI options")
25780
+ );
25781
+ } else {
25782
+ console.log(
25783
+ chalk13__default.default.yellow(`\u26A0\uFE0F Target model found but unavailable: ${targetModel.name} (${targetModel.provider})`)
25784
+ );
25785
+ console.log(chalk13__default.default.gray(`This model requires API key for ${targetModel.provider}`));
25786
+ }
25688
25787
  } else {
25689
25788
  console.log(chalk13__default.default.red(`\u274C Model not found: ${modelName}`));
25690
25789
  console.log(chalk13__default.default.gray("Available models listed below:"));
25691
25790
  }
25692
25791
  return;
25693
25792
  }
25694
- await showInteractiveModelSelector(available);
25793
+ await showInteractiveModelSelector(allModels);
25695
25794
  } catch (error) {
25696
25795
  console.error(chalk13__default.default.red("\u274C Failed to access model selector:"), error);
25697
25796
  }
@@ -25712,25 +25811,33 @@ async function showInteractiveModelSelector(models) {
25712
25811
  console.log(chalk13__default.default.gray("Use \u2191/\u2193 to navigate, Enter to select, Esc to cancel\n"));
25713
25812
  console.log(chalk13__default.default.yellow("\u{1F4CB} Available AI Models:\n"));
25714
25813
  models.forEach((model, index) => {
25715
- const status = model.available ? "\u2705" : "\u26A0\uFE0F";
25814
+ const status = model.available ? "\u2705" : "\u274C";
25716
25815
  const pricing = model.pricing ? ` ($${model.pricing.input}/${model.pricing.output})` : "";
25717
25816
  const isSelected = index === selectedIndex;
25817
+ const availabilityNote = model.available ? "" : " (API key required)";
25718
25818
  if (isSelected) {
25719
25819
  console.log(
25720
- chalk13__default.default.bgBlue.white(` \u25B6 ${status} ${model.name} [${model.provider}]${pricing}`)
25820
+ chalk13__default.default.bgBlue.white(` \u25B6 ${status} ${model.name} [${model.provider}]${pricing}${availabilityNote}`)
25721
25821
  );
25722
25822
  console.log(chalk13__default.default.bgBlue.white(` ${model.description}`));
25723
25823
  if (model.capabilities && model.capabilities.length > 0) {
25724
25824
  console.log(chalk13__default.default.bgBlue.white(` Capabilities: ${model.capabilities.join(", ")}`));
25725
25825
  }
25826
+ if (!model.available) {
25827
+ console.log(chalk13__default.default.bgBlue.white(` Status: Requires ${model.provider.toUpperCase()}_API_KEY environment variable`));
25828
+ }
25726
25829
  } else {
25830
+ const nameColor = model.available ? chalk13__default.default.bold : chalk13__default.default.white;
25727
25831
  console.log(
25728
- ` ${status} ${chalk13__default.default.bold(model.name)} ${chalk13__default.default.gray(`[${model.provider}]`)}${pricing}`
25832
+ ` ${status} ${nameColor(model.name)} ${chalk13__default.default.gray(`[${model.provider}]`)}${pricing}${availabilityNote}`
25729
25833
  );
25730
25834
  console.log(` ${chalk13__default.default.gray(model.description)}`);
25731
25835
  if (model.capabilities && model.capabilities.length > 0) {
25732
25836
  console.log(` ${chalk13__default.default.cyan("Capabilities:")} ${model.capabilities.join(", ")}`);
25733
25837
  }
25838
+ if (!model.available) {
25839
+ console.log(` ${chalk13__default.default.yellow("Status:")} Requires ${model.provider.toUpperCase()}_API_KEY environment variable`);
25840
+ }
25734
25841
  }
25735
25842
  console.log("");
25736
25843
  });
@@ -25753,7 +25860,6 @@ async function showInteractiveModelSelector(models) {
25753
25860
  renderModels();
25754
25861
  break;
25755
25862
  case "\r":
25756
- isSelecting = false;
25757
25863
  cleanup();
25758
25864
  const selectedModel = models[selectedIndex];
25759
25865
  console.log(
@@ -25771,13 +25877,11 @@ async function showInteractiveModelSelector(models) {
25771
25877
  resolve();
25772
25878
  break;
25773
25879
  case "\x1B":
25774
- isSelecting = false;
25775
25880
  cleanup();
25776
25881
  console.log(chalk13__default.default.gray("\n\u{1F4CB} Model selection cancelled\n"));
25777
25882
  resolve();
25778
25883
  break;
25779
25884
  case "":
25780
- isSelecting = false;
25781
25885
  cleanup();
25782
25886
  console.log(chalk13__default.default.gray("\n\u{1F4CB} Model selection cancelled\n"));
25783
25887
  resolve();
@@ -28359,8 +28463,8 @@ var init_package = __esm({
28359
28463
  "package.json"() {
28360
28464
  package_default = {
28361
28465
  name: "@bonginkan/maria",
28362
- version: "2.0.4",
28363
- description: "\u{1F9E0} MARIA Platform v2.0.0 Memory Intelligence Edition - Revolutionary Dual-Layer Memory System with Complete Local AI Integration (Ollama + vLLM + LM Studio), Context-Aware Learning, 50+ Cognitive Modes, and Enterprise-Grade Development Intelligence",
28466
+ version: "2.0.5",
28467
+ description: "\u{1F9E0} MARIA Platform v2.0.5 Memory Intelligence Edition - Revolutionary Dual-Layer Memory System with Complete Local AI Integration (Ollama + vLLM + LM Studio), Context-Aware Learning, 50+ Cognitive Modes, and Enterprise-Grade Development Intelligence",
28364
28468
  keywords: [
28365
28469
  "ai",
28366
28470
  "cli",