@bonginkan/maria 4.3.43 → 4.3.44

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 - AI Development Platform v4.3.43
1
+ # MARIA - AI Development Platform v4.3.44
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@bonginkan/maria.svg)](https://www.npmjs.com/package/@bonginkan/maria)
4
4
  [![License](https://img.shields.io/badge/license-Multi--tier-blue.svg)](LICENSE)
@@ -10,7 +10,7 @@
10
10
 
11
11
  > **Enterprise-grade AI development platform with 100% command availability and comprehensive fallback support**
12
12
 
13
- ## 🚀 What's New in v4.3.43 (October, 2025)
13
+ ## 🚀 What's New in v4.3.44 (October, 2025)
14
14
 
15
15
  ### Functinal enhancements
16
16
  - **Enhanced Natural Language Support**: Main commands called automatically by natural language input
@@ -927,7 +927,7 @@ await secureWorkflow.executeWithAuth(workflowDefinition, securityContext);
927
927
  ### Quick Installation
928
928
  ```bash
929
929
  # Install globally (recommended)
930
- npm install -g @bonginkan/maria@4.3.43
930
+ npm install -g @bonginkan/maria@4.3.44
931
931
 
932
932
  # Verify installation
933
933
  maria --version # Should show v4.3.9
@@ -1131,7 +1131,7 @@ MARIA CODE is distributed under a comprehensive licensing system designed for in
1131
1131
 
1132
1132
  *MARIA v4.1.4 represents the pinnacle of multimodal AI development platform evolution - combining revolutionary voice-to-code capabilities, advanced memory systems, and comprehensive command ecosystems with enterprise-grade security and performance. This release establishes MARIA as the definitive choice for developers and Fortune 500 enterprises seeking intelligent, multimodal development experiences with GraphRAG intelligence, multilingual support, and zero-anxiety coding workflows.*
1133
1133
 
1134
- **Transform your development experience today**: `npm install -g @bonginkan/maria@4.3.43`
1134
+ **Transform your development experience today**: `npm install -g @bonginkan/maria@4.3.44`
1135
1135
 
1136
1136
  🌐 **Official Website**: [https://maria-code.ai](https://maria-code.ai)
1137
1137
  💬 **Community**: [https://discord.gg/SMSmSGcEQy](https://discord.gg/SMSmSGcEQy)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "lite-1.0.0",
3
- "generatedAt": "2025-10-05T12:39:54.354Z",
3
+ "generatedAt": "2025-10-05T13:00:59.209Z",
4
4
  "totalCommands": 19,
5
5
  "readyCount": 19,
6
6
  "partialCount": 0,
@@ -26066,8 +26066,8 @@ var require_package = __commonJS({
26066
26066
  "package.json"(exports, module) {
26067
26067
  module.exports = {
26068
26068
  name: "@bonginkan/maria",
26069
- version: "4.3.43",
26070
- description: "\u{1F680} MARIA v4.3.43 - Enterprise AI Development Platform with identity system and character voice implementation. Features 74 production-ready commands with comprehensive fallback implementation, local LLM support, and zero external dependencies. Includes natural language coding, AI safety evaluation, intelligent evolution system, episodic memory with PII masking, and real-time monitoring dashboard. Built with TypeScript AST-powered code generation, OAuth2.0 + PKCE authentication, quantum-resistant cryptography, and enterprise-grade performance.",
26069
+ version: "4.3.44",
26070
+ description: "\u{1F680} MARIA v4.3.44 - Enterprise AI Development Platform with identity system and character voice implementation. Features 74 production-ready commands with comprehensive fallback implementation, local LLM support, and zero external dependencies. Includes natural language coding, AI safety evaluation, intelligent evolution system, episodic memory with PII masking, and real-time monitoring dashboard. Built with TypeScript AST-powered code generation, OAuth2.0 + PKCE authentication, quantum-resistant cryptography, and enterprise-grade performance.",
26071
26071
  keywords: [
26072
26072
  "ai",
26073
26073
  "cli",
@@ -28104,7 +28104,7 @@ var init_AuthenticationManager = __esm({
28104
28104
  const response = await fetch(`${this.apiBase}/api/user/profile`, {
28105
28105
  headers: {
28106
28106
  "Authorization": `Bearer ${tokens2.accessToken}`,
28107
- "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.43"}`
28107
+ "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.44"}`
28108
28108
  }
28109
28109
  });
28110
28110
  if (response.status === 401) {
@@ -28758,7 +28758,7 @@ async function callApi(path65, init3 = {}) {
28758
28758
  "Authorization": `Bearer ${token}`,
28759
28759
  "X-Device-Id": getDeviceId(),
28760
28760
  "X-Session-Id": getSessionId() || "",
28761
- "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.43"}`,
28761
+ "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.44"}`,
28762
28762
  "Content-Type": init3.headers?.["Content-Type"] || "application/json"
28763
28763
  });
28764
28764
  const doFetch = async (token) => {
@@ -51295,7 +51295,7 @@ var init_about_command = __esm({
51295
51295
  async execute(args2, context2) {
51296
51296
  const output3 = [];
51297
51297
  output3.push("");
51298
- output3.push(chalk14__default.default.cyan.bold("\u{1F916} About MARIA v4.3.43"));
51298
+ output3.push(chalk14__default.default.cyan.bold("\u{1F916} About MARIA v4.3.44"));
51299
51299
  output3.push(chalk14__default.default.gray("\u2550".repeat(40)));
51300
51300
  output3.push("");
51301
51301
  output3.push(chalk14__default.default.white.bold("MARIA - Minimal API, Maximum Power"));
@@ -56105,47 +56105,68 @@ ${h2.head}`);
56105
56105
  return [];
56106
56106
  }
56107
56107
  }
56108
- async function llmMapBlockToFile(root, request, block, repoFiles) {
56108
+ async function llmMapBlocksBatch(root, request, blocks, repoFiles) {
56109
56109
  try {
56110
- const lang = (block.language || "").toLowerCase();
56111
- const extFilter = lang.includes("html") ? /\.html$/i : /(ts|tsx)/.test(lang) ? /\.(ts|tsx)$/i : /(js|jsx)/.test(lang) ? /\.(js|jsx)$/i : /\.css$/i;
56112
- const candidates = repoFiles.filter((p) => extFilter.test(p)).slice(0, 80);
56113
- const head2 = block.code.split(/\r?\n/).slice(0, 20).join("\n");
56110
+ const candidates = repoFiles.filter((p) => /\.(html|css|js|ts|tsx)$/i.test(p)).slice(0, 120);
56111
+ const blockSnippets = blocks.slice(0, 20).map((b, i2) => {
56112
+ const head2 = (b.code || "").split(/\r?\n/).slice(0, 20).join("\n");
56113
+ return `# block ${i2}
56114
+
56115
+ \`\`\`
56116
+ ${head2}
56117
+ \`\`\``;
56118
+ }).join("\n\n");
56114
56119
  const samples = [];
56115
- for (const p of candidates.slice(0, 40)) {
56120
+ for (const p of candidates.slice(0, 60)) {
56116
56121
  const h2 = await readHeadTail(root, p, 8);
56117
56122
  samples.push(`- ${p}
56118
56123
  ${h2.head}`);
56119
56124
  }
56120
56125
  const system = [
56121
- "Decide where to apply an EDIT vs CREATE for a code block within an existing repository.",
56122
- 'Return JSON: { "action": "modify"|"create", "path": string }.',
56123
- "If modify, path must be one of the candidate repo-relative paths. If create, propose a sensible repo-relative path."
56126
+ "For each provided code block, decide whether to MODIFY an existing repo file or CREATE a new file.",
56127
+ 'Return JSON array of objects: [{ "index": number, "action": "modify"|"create", "path": string }].',
56128
+ "When action is modify, path MUST be one of the candidate repo-relative paths listed."
56124
56129
  ].join("\n");
56125
56130
  const user = [
56126
56131
  `Request: ${request}`,
56127
- "Block:",
56128
- "```",
56129
- head2,
56130
- "```",
56132
+ "Blocks:",
56133
+ blockSnippets,
56131
56134
  "Candidates:",
56132
56135
  samples.join("\n\n")
56133
- ].join("\n");
56136
+ ].join("\n\n");
56137
+ const spin = new ProcessAnimation();
56138
+ spin.start();
56134
56139
  const resp = await executeChat([
56135
56140
  { role: "system", content: system },
56136
56141
  { role: "user", content: user }
56137
56142
  ]);
56143
+ try {
56144
+ spin.stop();
56145
+ } catch {
56146
+ }
56138
56147
  const raw = (resp?.output || "").trim();
56139
- const jsonText = extractJsonSafe(raw, "object") || raw;
56140
- const parsed = JSON.parse(jsonText);
56141
- if (parsed && (parsed.action === "modify" || parsed.action === "create") && typeof parsed.path === "string") {
56142
- return { action: parsed.action, path: parsed.path.replace(/^\/+/, "") };
56148
+ const jsonText = extractJsonSafe(raw, "array") || raw;
56149
+ const arr = JSON.parse(jsonText);
56150
+ const set = new Set(candidates.map((c) => c.toLowerCase()));
56151
+ const out = [];
56152
+ if (Array.isArray(arr)) {
56153
+ for (const item of arr) {
56154
+ const idx = typeof item?.index === "number" ? item.index : -1;
56155
+ const action = item?.action === "modify" ? "modify" : "create";
56156
+ const path65 = typeof item?.path === "string" ? String(item.path) : "";
56157
+ if (idx >= 0 && idx < blocks.length) {
56158
+ if (action === "modify" && set.has(path65.toLowerCase())) out[idx] = { action, path: path65.replace(/^\/+/, "") };
56159
+ else out[idx] = { action: "create", path: path65 || suggestName2(request, blocks[idx].language || "javascript", idx) };
56160
+ }
56161
+ }
56143
56162
  }
56163
+ for (let i2 = 0; i2 < blocks.length; i2++) {
56164
+ if (!out[i2]) out[i2] = { action: "create", path: suggestName2(request, blocks[i2].language || "javascript", i2) };
56165
+ }
56166
+ return out;
56144
56167
  } catch {
56168
+ return blocks.map((b, i2) => ({ action: "create", path: suggestName2(request, b.language || "javascript", i2) }));
56145
56169
  }
56146
- const desired = typeof block.filename === "string" && block.filename.trim() ? block.filename.trim() : null;
56147
- const fallback2 = desired || suggestName2(request, block.language, 0);
56148
- return { action: "create", path: fallback2 };
56149
56170
  }
56150
56171
  function tokenizeRequest(text) {
56151
56172
  return Array.from(new Set(text.toLowerCase().replace(/[^a-z0-9_-]+/g, " ").split(/\s+/).filter((t2) => t2.length >= 3)));
@@ -56415,15 +56436,16 @@ ${editContext}`;
56415
56436
  } else {
56416
56437
  try {
56417
56438
  const repoFiles = await getRepoFiles(opts.root);
56439
+ const decisions = await llmMapBlocksBatch(opts.root, request, blocks, repoFiles);
56418
56440
  for (let i2 = 0; i2 < blocks.length; i2++) {
56419
56441
  const b = blocks[i2];
56420
- const decision = await llmMapBlockToFile(opts.root, request, b, repoFiles);
56421
- if (decision.action === "modify" && repoFiles.includes(decision.path)) {
56422
- const lang = languageFromExt(decision.path.replace(/^.*(\.[a-z0-9]+)$/i, "$1"));
56423
- initial.push({ path: decision.path, kind: "source", action: "modify", description: "Modify existing file", language: lang, preview: b.code });
56442
+ const d = decisions[i2] || { action: "create", path: suggestName2(request, b.language, i2) };
56443
+ if (d.action === "modify" && repoFiles.includes(d.path)) {
56444
+ const lang = languageFromExt(d.path.replace(/^.*(\.[a-z0-9]+)$/i, "$1"));
56445
+ initial.push({ path: d.path, kind: "source", action: "modify", description: "Modify existing file", language: lang, preview: b.code });
56424
56446
  } else {
56425
- const path65 = decision.path || suggestName2(request, b.language, i2);
56426
- initial.push({ path: path65, kind: "source", action: "create", description: describe2(b.language, ""), language: b.language, preview: b.code });
56447
+ const pth = d.path || suggestName2(request, b.language, i2);
56448
+ initial.push({ path: pth, kind: "source", action: "create", description: describe2(b.language, ""), language: b.language, preview: b.code });
56427
56449
  }
56428
56450
  }
56429
56451
  } catch {