@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 +4 -4
- package/dist/READY.manifest.json +1 -1
- package/dist/bin/maria.cjs +145 -24
- package/dist/bin/maria.cjs.map +1 -1
- package/dist/cli.cjs +145 -24
- package/dist/cli.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/server/express-server.cjs +1 -1
- package/dist/server/express-server.js +1 -1
- package/dist/server-express.cjs +1 -1
- package/dist/server-express.cjs.map +1 -1
- package/package.json +2 -2
- package/src/slash-commands/READY.manifest.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# MARIA - AI Development Platform v4.4.
|
|
1
|
+
# MARIA - AI Development Platform v4.4.2
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@bonginkan/maria)
|
|
4
4
|
[](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.
|
|
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.
|
|
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.
|
|
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)
|
package/dist/READY.manifest.json
CHANGED
package/dist/bin/maria.cjs
CHANGED
|
@@ -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.
|
|
26071
|
-
description: "\u{1F680} MARIA v4.4.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
73415
|
+
const jsonText = extractFirstJson7(raw) || raw;
|
|
73295
73416
|
let parsed = {};
|
|
73296
73417
|
try {
|
|
73297
73418
|
parsed = JSON.parse(jsonText);
|