@bonginkan/maria 4.4.1 → 4.4.2

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.4.1
1
+ # MARIA - AI Development Platform v4.4.2
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.4.1 (October, 2025)
13
+ ## 🚀 What's New in v4.4.2 (October, 2025)
14
14
  ### Functional enhancements
15
15
  - **Improved coding**
16
16
  - **Enhanced video/image support**
@@ -933,7 +933,7 @@ await secureWorkflow.executeWithAuth(workflowDefinition, securityContext);
933
933
  ### Quick Installation
934
934
  ```bash
935
935
  # Install globally (recommended)
936
- npm install -g @bonginkan/maria@4.4.1
936
+ npm install -g @bonginkan/maria@4.4.2
937
937
 
938
938
  # Verify installation
939
939
  maria --version # Should show v4.3.9
@@ -1137,7 +1137,7 @@ MARIA CODE is distributed under a comprehensive licensing system designed for in
1137
1137
 
1138
1138
  *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.*
1139
1139
 
1140
- **Transform your development experience today**: `npm install -g @bonginkan/maria@4.4.1`
1140
+ **Transform your development experience today**: `npm install -g @bonginkan/maria@4.4.2`
1141
1141
 
1142
1142
  🌐 **Official Website**: [https://maria-code.ai](https://maria-code.ai)
1143
1143
  💬 **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-16T13:08:46.235Z",
3
+ "generatedAt": "2025-10-17T06:03:59.246Z",
4
4
  "totalCommands": 19,
5
5
  "readyCount": 19,
6
6
  "partialCount": 0,
@@ -26067,8 +26067,8 @@ var require_package = __commonJS({
26067
26067
  "package.json"(exports, module) {
26068
26068
  module.exports = {
26069
26069
  name: "@bonginkan/maria",
26070
- version: "4.4.1",
26071
- description: "\u{1F680} MARIA v4.4.1 - 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.",
26070
+ version: "4.4.2",
26071
+ description: "\u{1F680} MARIA v4.4.2 - 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.",
26072
26072
  keywords: [
26073
26073
  "ai",
26074
26074
  "cli",
@@ -28131,7 +28131,7 @@ var init_AuthenticationManager = __esm({
28131
28131
  const response = await fetch(`${this.apiBase}/api/user/profile`, {
28132
28132
  headers: {
28133
28133
  "Authorization": `Bearer ${tokens2.accessToken}`,
28134
- "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.4.1"}`
28134
+ "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.4.2"}`
28135
28135
  }
28136
28136
  });
28137
28137
  if (response.status === 401) {
@@ -28785,7 +28785,7 @@ async function callApi(path66, init3 = {}) {
28785
28785
  "Authorization": `Bearer ${token}`,
28786
28786
  "X-Device-Id": getDeviceId(),
28787
28787
  "X-Session-Id": getSessionId() || "",
28788
- "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.4.1"}`,
28788
+ "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.4.2"}`,
28789
28789
  "Content-Type": init3.headers?.["Content-Type"] || "application/json"
28790
28790
  });
28791
28791
  const doFetch = async (token) => {
@@ -39105,16 +39105,7 @@ var init_HelpCommand = __esm({
39105
39105
  async showCommandHelp(commandName) {
39106
39106
  const command = await this.readyService.getCommand(commandName);
39107
39107
  if (!command) {
39108
- const searchResults = await this.readyService.searchCommands(commandName, 3);
39109
- const suggestions = searchResults.map((r2) => `/${r2.command.name}`);
39110
- return this.error(
39111
- `READY command not found: /${commandName}`,
39112
- "COMMAND_NOT_FOUND",
39113
- {
39114
- suggestions,
39115
- tip: "Only contract-validated READY commands are shown"
39116
- }
39117
- );
39108
+ return await this.showGeneralHelp();
39118
39109
  }
39119
39110
  const lines = this.formatMinimalUsage(command);
39120
39111
  return this.success(lines);
@@ -48095,6 +48086,94 @@ var init_ImageArgumentInference = __esm({
48095
48086
  init_api_caller();
48096
48087
  }
48097
48088
  });
48089
+
48090
+ // src/services/media-orchestrator/VideoArgumentInference.ts
48091
+ function extractFirstJson4(text) {
48092
+ const matches = text.match(/[\[{][\s\S]*[\]}]/g) || [];
48093
+ for (const cand of matches) {
48094
+ try {
48095
+ JSON.parse(cand);
48096
+ return cand;
48097
+ } catch {
48098
+ }
48099
+ }
48100
+ return null;
48101
+ }
48102
+ function parseSizeAny2(x2) {
48103
+ if (!x2) return void 0;
48104
+ const s2 = String(x2).trim().toLowerCase().replace(/p$/, "");
48105
+ const m2 = /^(\d{2,4})x(\d{2,4})$/.exec(s2);
48106
+ if (m2) {
48107
+ const w = Number(m2[1]);
48108
+ const h2 = Number(m2[2]);
48109
+ if (Number.isFinite(w) && Number.isFinite(h2) && w >= 256 && h2 >= 256 && w <= 4096 && h2 <= 4096) return [w, h2];
48110
+ return void 0;
48111
+ }
48112
+ if (s2 === "720") return [1280, 720];
48113
+ if (s2 === "1080") return [1920, 1080];
48114
+ return void 0;
48115
+ }
48116
+ async function inferVideoArgsLLM(promptText) {
48117
+ const system = [
48118
+ "You extract video generation options from user natural language.",
48119
+ 'Return JSON only with keys: { "model"?: "sora-2"|"veo-3.1-generate-preview", "duration"?: number, "aspect"?: "16:9"|"9:16", "size"?: "WIDTHxHEIGHT"|"720"|"1080" }.',
48120
+ "Rules:",
48121
+ '- If user mentions OpenAI Sora, choose model "sora-2". If Google Veo, choose "veo-3.1-generate-preview".',
48122
+ "- Duration options differ: for Sora use one of 4, 8, 12; for Veo prefer 4, 6, 8 (1080p fixed 8).",
48123
+ "- If user says 10 seconds, map to closest allowed (e.g., 8 for Sora/Veo).",
48124
+ '- Aspect: map "portrait"/"vertical" to 9:16, "landscape"/"wide" to 16:9. If square mentioned, prefer 1:1 but output closest supported by providers (choose 16:9).',
48125
+ '- Size: if 720p or 1080p mentioned, return "720" or "1080". If explicit WxH, return as is if within 256..4096 per side.',
48126
+ "Do not add explanations; JSON only."
48127
+ ].join("\n");
48128
+ let explicitModel;
48129
+ let explicitProvider;
48130
+ try {
48131
+ const { extractExplicitModel: extractExplicitModel2, extractExplicitProvider: extractExplicitProvider2, providerFromModel: providerFromModel2 } = await Promise.resolve().then(() => (init_llm_flags(), llm_flags_exports));
48132
+ explicitModel = extractExplicitModel2(promptText);
48133
+ explicitProvider = extractExplicitProvider2(promptText) || providerFromModel2(explicitModel);
48134
+ } catch {
48135
+ }
48136
+ let attachments = [];
48137
+ try {
48138
+ const { collectFileAttachmentsFromText: collectFileAttachmentsFromText2 } = await Promise.resolve().then(() => (init_attachment_utils(), attachment_utils_exports));
48139
+ attachments = await collectFileAttachmentsFromText2(promptText, process.cwd(), { maxBytes: 12 * 1024 * 1024 });
48140
+ } catch {
48141
+ }
48142
+ const resp = await callAPI("/v1/ai-proxy", {
48143
+ method: "POST",
48144
+ body: {
48145
+ ...explicitProvider ? { provider: explicitProvider } : {},
48146
+ ...explicitModel ? { model: explicitModel } : {},
48147
+ prompt: `${system}
48148
+
48149
+ ---
48150
+
48151
+ ${promptText}`,
48152
+ taskType: "media",
48153
+ ...attachments.length ? { metadata: { attachments } } : {}
48154
+ }
48155
+ });
48156
+ const raw = (resp?.data?.content || resp?.output || "").trim();
48157
+ const jsonText = extractFirstJson4(raw) || raw;
48158
+ let parsed;
48159
+ try {
48160
+ parsed = JSON.parse(jsonText);
48161
+ } catch {
48162
+ return {};
48163
+ }
48164
+ const out = {};
48165
+ if (typeof parsed?.model === "string" && parsed.model.trim()) out.model = String(parsed.model).trim();
48166
+ if (Number.isFinite(Number(parsed?.duration))) out.duration = Math.max(1, Math.floor(Number(parsed.duration)));
48167
+ if (parsed?.aspect === "16:9" || parsed?.aspect === "9:16") out.aspect = parsed.aspect;
48168
+ const size = parseSizeAny2(parsed?.size);
48169
+ if (size) out.size = size;
48170
+ return out;
48171
+ }
48172
+ var init_VideoArgumentInference = __esm({
48173
+ "src/services/media-orchestrator/VideoArgumentInference.ts"() {
48174
+ init_api_caller();
48175
+ }
48176
+ });
48098
48177
  function parseSize(value) {
48099
48178
  const m2 = /^\s*(\d{2,4})x(\d{2,4})\s*$/i.exec(value || "");
48100
48179
  if (!m2) throw new Error(`invalid size: ${value}`);
@@ -48314,6 +48393,15 @@ function normalizeVideoArgs(raw, root) {
48314
48393
  break;
48315
48394
  }
48316
48395
  }
48396
+ try {
48397
+ if (String(process.env.MARIA_USE_LLM_INFER || "1") === "1") {
48398
+ global.__MARIA_VIDEO_LLM_INFER__ = async () => {
48399
+ const llm = await inferVideoArgsLLM(prompt);
48400
+ return llm;
48401
+ };
48402
+ }
48403
+ } catch {
48404
+ }
48317
48405
  if (!out.apply && !out.planOnly && !out.dryRun) {
48318
48406
  out.apply = true;
48319
48407
  }
@@ -48353,6 +48441,7 @@ var init_Normalizer = __esm({
48353
48441
  init_types4();
48354
48442
  init_NLInference();
48355
48443
  init_ImageArgumentInference();
48444
+ init_VideoArgumentInference();
48356
48445
  }
48357
48446
  });
48358
48447
  function ensureDirSync(p) {
@@ -49568,7 +49657,39 @@ var init_video_command = __esm({
49568
49657
  try {
49569
49658
  const root = context2.environment.cwd;
49570
49659
  const cli = normalizeVideoArgs(args2.raw, root);
49571
- cli.duration = 8;
49660
+ try {
49661
+ const hook = global.__MARIA_VIDEO_LLM_INFER__;
49662
+ if (hook) {
49663
+ const llm = await hook();
49664
+ if (llm) {
49665
+ if (llm.model && typeof llm.model === "string") cli.model = llm.model;
49666
+ if (Number.isFinite(Number(llm.duration))) {
49667
+ const d = Math.floor(Number(llm.duration));
49668
+ cli.duration = Math.max(1, Math.min(60, d));
49669
+ }
49670
+ if (llm.aspect === "16:9" || llm.aspect === "9:16") {
49671
+ cli.aspect = llm.aspect;
49672
+ const [w, h2] = cli.size;
49673
+ if (llm.size && Array.isArray(llm.size) && llm.size.length === 2) {
49674
+ cli.size = llm.size;
49675
+ } else if (w === 1280 && h2 === 720 || w === 720 && h2 === 1280 || w === 1920 && h2 === 1080 || w === 1080 && h2 === 1920) {
49676
+ if (llm.aspect === "9:16") {
49677
+ if (h2 === 720) cli.size = [720, 1280];
49678
+ else if (h2 === 1080) cli.size = [1080, 1920];
49679
+ } else {
49680
+ if (w === 720) cli.size = [1280, 720];
49681
+ else if (w === 1080) cli.size = [1920, 1080];
49682
+ if (w === 1080 && h2 === 1920) cli.size = [1920, 1080];
49683
+ }
49684
+ }
49685
+ } else if (llm.size && Array.isArray(llm.size) && llm.size.length === 2) {
49686
+ cli.size = llm.size;
49687
+ cli.aspect = cli.size[0] >= cli.size[1] ? "16:9" : "9:16";
49688
+ }
49689
+ }
49690
+ }
49691
+ } catch {
49692
+ }
49572
49693
  if (cli.planOnly || cli.dryRun || !cli.apply) {
49573
49694
  const line = `Plan: video ${cli.duration}s @${cli.fps}fps ${cli.size[0]}x${cli.size[1]} ${cli.format} model=${cli.model || "auto"} concurrency=${cli.concurrency} retry=${cli.retry}`;
49574
49695
  const next = `Next: /video "${cli.prompt}" --duration ${cli.duration} --fps ${cli.fps} --res ${cli.size[0]}x${cli.size[1]} --apply`;
@@ -51384,7 +51505,7 @@ var init_about_command = __esm({
51384
51505
  async execute(args2, context2) {
51385
51506
  const output3 = [];
51386
51507
  output3.push("");
51387
- output3.push(chalk14__default.default.cyan.bold("About MARIA v4.4.1"));
51508
+ output3.push(chalk14__default.default.cyan.bold("About MARIA v4.4.2"));
51388
51509
  output3.push(chalk14__default.default.gray("\u2550".repeat(40)));
51389
51510
  output3.push("");
51390
51511
  output3.push(chalk14__default.default.white.bold("MARIA - Minimal API, Maximum Power"));
@@ -54693,7 +54814,7 @@ var init_code_utils = __esm({
54693
54814
  });
54694
54815
 
54695
54816
  // src/services/creative/NovelArgumentInference.ts
54696
- function extractFirstJson4(text) {
54817
+ function extractFirstJson5(text) {
54697
54818
  if (!text) return null;
54698
54819
  const start = text.indexOf("{");
54699
54820
  const end = text.lastIndexOf("}");
@@ -54744,7 +54865,7 @@ ${rawText}`,
54744
54865
  }
54745
54866
  });
54746
54867
  const raw = (resp?.data?.content || resp?.output || "").trim();
54747
- const jsonText = extractFirstJson4(raw) || raw;
54868
+ const jsonText = extractFirstJson5(raw) || raw;
54748
54869
  let parsed = {};
54749
54870
  try {
54750
54871
  parsed = JSON.parse(jsonText);
@@ -55146,7 +55267,7 @@ var init_rate_limit_handler = __esm({
55146
55267
  });
55147
55268
 
55148
55269
  // src/services/code-orchestrator/ArgumentInference.ts
55149
- function extractFirstJson5(text) {
55270
+ function extractFirstJson6(text) {
55150
55271
  const fence = /```json\r?\n([\s\S]*?)```/i.exec(text);
55151
55272
  if (fence) return fence[1];
55152
55273
  const start = text.indexOf("{");
@@ -55198,7 +55319,7 @@ ${rawText}`,
55198
55319
  }
55199
55320
  });
55200
55321
  const raw = (resp?.data?.content || resp?.output || "").trim();
55201
- const jsonText = extractFirstJson5(raw) || raw;
55322
+ const jsonText = extractFirstJson6(raw) || raw;
55202
55323
  let parsed = {};
55203
55324
  try {
55204
55325
  parsed = JSON.parse(jsonText);
@@ -58186,7 +58307,7 @@ ${user}`
58186
58307
  } catch {
58187
58308
  }
58188
58309
  const content = (resp?.data?.content || resp?.content || "").trim();
58189
- const extractFirstJson7 = (text) => {
58310
+ const extractFirstJson8 = (text) => {
58190
58311
  const fence = /```\s*json\s*\r?\n([\s\S]*?)```/i.exec(text);
58191
58312
  if (fence) return fence[1];
58192
58313
  const generic = /```\s*\r?\n([\s\S]*?)```/i.exec(text);
@@ -58209,7 +58330,7 @@ ${user}`
58209
58330
  }
58210
58331
  return null;
58211
58332
  };
58212
- const jsonText = extractFirstJson7(content) || content;
58333
+ const jsonText = extractFirstJson8(content) || content;
58213
58334
  let parsed = {};
58214
58335
  try {
58215
58336
  parsed = JSON.parse(jsonText);
@@ -73229,7 +73350,7 @@ ${user}`,
73229
73350
  };
73230
73351
  }
73231
73352
  });
73232
- function extractFirstJson6(text) {
73353
+ function extractFirstJson7(text) {
73233
73354
  const fence = /```json\r?\n([\s\S]*?)```/i.exec(text);
73234
73355
  if (fence) return fence[1];
73235
73356
  const start = text.indexOf("{");
@@ -73291,7 +73412,7 @@ ${user}`,
73291
73412
  }
73292
73413
  });
73293
73414
  const raw = (response?.data?.content || response?.output || "").trim();
73294
- const jsonText = extractFirstJson6(raw) || raw;
73415
+ const jsonText = extractFirstJson7(raw) || raw;
73295
73416
  let parsed = {};
73296
73417
  try {
73297
73418
  parsed = JSON.parse(jsonText);