@bonginkan/maria 4.3.32 → 4.3.34

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.32
1
+ # MARIA - AI Development Platform v4.3.34
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.32 (September 16, 2025)
13
+ ## 🚀 What's New in v4.3.34 (September 29, 2025)
14
14
 
15
15
  ### 🎯 Interactive Improvements & Choice Memory
16
16
  - **Choice Memory System**: Smart persistence of user selections across sessions
@@ -922,7 +922,7 @@ await secureWorkflow.executeWithAuth(workflowDefinition, securityContext);
922
922
  ### Quick Installation
923
923
  ```bash
924
924
  # Install globally (recommended)
925
- npm install -g @bonginkan/maria@4.3.32
925
+ npm install -g @bonginkan/maria@4.3.34
926
926
 
927
927
  # Verify installation
928
928
  maria --version # Should show v4.3.9
@@ -1126,7 +1126,7 @@ MARIA CODE is distributed under a comprehensive licensing system designed for in
1126
1126
 
1127
1127
  *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.*
1128
1128
 
1129
- **Transform your development experience today**: `npm install -g @bonginkan/maria@4.3.32`
1129
+ **Transform your development experience today**: `npm install -g @bonginkan/maria@4.3.34`
1130
1130
 
1131
1131
  🌐 **Official Website**: [https://maria-code.ai](https://maria-code.ai)
1132
1132
  💬 **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-09-28T09:23:52.572Z",
3
+ "generatedAt": "2025-10-01T05:35:40.844Z",
4
4
  "totalCommands": 16,
5
5
  "readyCount": 16,
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.32",
26070
- description: "\u{1F680} MARIA v4.3.32 - 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.34",
26070
+ description: "\u{1F680} MARIA v4.3.34 - 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",
@@ -26503,7 +26503,7 @@ var require_package = __commonJS({
26503
26503
  react: "^18.2.0",
26504
26504
  "reflect-metadata": "^0.2.2",
26505
26505
  semver: "^7.7.2",
26506
- sharp: "^0.34.3",
26506
+ sharp: "^0.34.4",
26507
26507
  "string-width": "^8.0.0",
26508
26508
  "strip-ansi": "^7.1.0",
26509
26509
  "tesseract.js": "^6.0.1",
@@ -27781,25 +27781,29 @@ var init_AuthSecretManager = __esm({
27781
27781
  constructor() {
27782
27782
  this.projectId = process.env.GCLOUD_PROJECT || "maria-code-470602";
27783
27783
  this.useGsm = this.shouldUseGsm();
27784
- if (this.useGsm) {
27785
- try {
27786
- this.client = new secretManager.SecretManagerServiceClient();
27787
- } catch {
27788
- this.client = null;
27789
- }
27790
- }
27784
+ this.client = null;
27791
27785
  }
27792
27786
  /**
27793
27787
  * Determine whether to use Google Secret Manager in this environment
27794
27788
  */
27795
27789
  shouldUseGsm() {
27796
27790
  if (process.env.MARIA_DISABLE_GSM === "true") return false;
27791
+ if (process.env.MARIA_CLI_USE_GSM === "true") return true;
27797
27792
  if (process.env.GOOGLE_APPLICATION_CREDENTIALS) return true;
27798
- if (process.env.GOOGLE_CLOUD_PROJECT || process.env.GCLOUD_PROJECT) return true;
27799
- if (process.env.CLOUD_RUN_SERVICE || process.env.K_SERVICE) return true;
27800
- if (process.env.GCE_METADATA_HOST) return true;
27793
+ if (process.env.CLOUD_RUN_SERVICE || process.env.K_SERVICE || process.env.GCE_METADATA_HOST) return true;
27801
27794
  return false;
27802
27795
  }
27796
+ /** Lazily create Secret Manager client only when permitted */
27797
+ ensureClient() {
27798
+ if (!this.useGsm) return null;
27799
+ if (this.client) return this.client;
27800
+ try {
27801
+ this.client = new secretManager.SecretManagerServiceClient();
27802
+ } catch {
27803
+ this.client = null;
27804
+ }
27805
+ return this.client;
27806
+ }
27803
27807
  /**
27804
27808
  * Get authentication configuration from Secret Manager
27805
27809
  */
@@ -27819,7 +27823,8 @@ var init_AuthSecretManager = __esm({
27819
27823
  * Get a specific secret from Secret Manager
27820
27824
  */
27821
27825
  async getSecret(secretName) {
27822
- if (!this.useGsm || !this.client) {
27826
+ const client = this.ensureClient();
27827
+ if (!this.useGsm || !client) {
27823
27828
  return null;
27824
27829
  }
27825
27830
  const cached2 = this.getCachedSecret(secretName);
@@ -27828,7 +27833,7 @@ var init_AuthSecretManager = __esm({
27828
27833
  }
27829
27834
  try {
27830
27835
  const name2 = `projects/${this.projectId}/secrets/${secretName}/versions/latest`;
27831
- const [version] = await this.client.accessSecretVersion({ name: name2 });
27836
+ const [version] = await client.accessSecretVersion({ name: name2 });
27832
27837
  const payload = version.payload?.data;
27833
27838
  if (!payload) {
27834
27839
  return null;
@@ -28099,7 +28104,7 @@ var init_AuthenticationManager = __esm({
28099
28104
  const response = await fetch(`${this.apiBase}/api/user/profile`, {
28100
28105
  headers: {
28101
28106
  "Authorization": `Bearer ${tokens2.accessToken}`,
28102
- "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.32"}`
28107
+ "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.34"}`
28103
28108
  }
28104
28109
  });
28105
28110
  if (response.status === 401) {
@@ -28731,7 +28736,7 @@ async function callApi(path64, init3 = {}) {
28731
28736
  "Authorization": `Bearer ${token}`,
28732
28737
  "X-Device-Id": getDeviceId(),
28733
28738
  "X-Session-Id": getSessionId() || "",
28734
- "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.32"}`,
28739
+ "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.3.34"}`,
28735
28740
  "Content-Type": init3.headers?.["Content-Type"] || "application/json"
28736
28741
  });
28737
28742
  const doFetch = async (token) => {
@@ -37153,6 +37158,13 @@ var init_logging = __esm({
37153
37158
  _loggingMiddleware = new LoggingMiddleware();
37154
37159
  }
37155
37160
  });
37161
+
37162
+ // src/services/telemetry/bigquery-telemetry.ts
37163
+ var bigquery_telemetry_exports = {};
37164
+ __export(bigquery_telemetry_exports, {
37165
+ BigQueryTelemetryService: () => BigQueryTelemetryService,
37166
+ bigQueryTelemetry: () => bigQueryTelemetry
37167
+ });
37156
37168
  async function loadBigQuery() {
37157
37169
  if (bigQueryLoadAttempted) return BigQuery;
37158
37170
  bigQueryLoadAttempted = true;
@@ -37218,7 +37230,7 @@ var init_bigquery_telemetry = __esm({
37218
37230
  };
37219
37231
  constructor() {
37220
37232
  super();
37221
- this.isEnabled = process.env.TELEMETRY_DISABLED !== "true";
37233
+ this.isEnabled = process.env.TELEMETRY_ENABLED === "true";
37222
37234
  this.httpEndpoint = process.env.TELEMETRY_ENDPOINT || null;
37223
37235
  if (this.isEnabled) {
37224
37236
  this.initialize().catch((error2) => {
@@ -37562,8 +37574,12 @@ async function getUserContext() {
37562
37574
  }
37563
37575
  async function trackCommand(data) {
37564
37576
  try {
37577
+ if (process.env.TELEMETRY_DISABLED === "true") {
37578
+ return;
37579
+ }
37565
37580
  const userContext = await getUserContext();
37566
- await bigQueryTelemetry.trackCommandExecution({
37581
+ const { bigQueryTelemetry: bigQueryTelemetry2 } = await Promise.resolve().then(() => (init_bigquery_telemetry(), bigquery_telemetry_exports));
37582
+ await bigQueryTelemetry2.trackCommandExecution({
37567
37583
  cmd: data.cmd,
37568
37584
  status: data.status,
37569
37585
  latencyMs: data.latencyMs,
@@ -37604,7 +37620,6 @@ function getNextMonthStart() {
37604
37620
  }
37605
37621
  var init_telemetry_helper = __esm({
37606
37622
  "src/slash-commands/shared/telemetry-helper.ts"() {
37607
- init_bigquery_telemetry();
37608
37623
  }
37609
37624
  });
37610
37625
 
@@ -37756,6 +37771,7 @@ var init_ReadyCommandsService = __esm({
37756
37771
  lastLoaded = null;
37757
37772
  manifestPath;
37758
37773
  usedFallback = false;
37774
+ helpMeta = {};
37759
37775
  constructor(manifestPath) {
37760
37776
  if (manifestPath) {
37761
37777
  this.manifestPath = manifestPath;
@@ -37839,14 +37855,57 @@ var init_ReadyCommandsService = __esm({
37839
37855
  this.buildLookupMaps();
37840
37856
  this.lastLoaded = /* @__PURE__ */ new Date();
37841
37857
  this.usedFallback = false;
37858
+ await this.tryLoadHelpMeta();
37842
37859
  } catch (error2) {
37843
37860
  logger.debug("READY manifest not found or invalid; using fallback");
37844
37861
  this.readyCommands = this.getFallbackCommands();
37845
37862
  this.buildLookupMaps();
37846
37863
  this.lastLoaded = /* @__PURE__ */ new Date();
37847
37864
  this.usedFallback = true;
37865
+ await this.tryLoadHelpMeta();
37866
+ }
37867
+ }
37868
+ /**
37869
+ * Load enhanced help metadata (e.g., arguments/examples) if available
37870
+ */
37871
+ async tryLoadHelpMeta() {
37872
+ try {
37873
+ const candidates = [
37874
+ path11__namespace.join(process.cwd(), "src/slash-commands/help/command-meta.json"),
37875
+ path11__namespace.join(__dirname, "../../slash-commands/help/command-meta.json"),
37876
+ path11__namespace.join(process.cwd(), "dist/command-meta.json")
37877
+ ];
37878
+ let p = null;
37879
+ for (const c of candidates) {
37880
+ try {
37881
+ await fsp__namespace.access(c);
37882
+ p = c;
37883
+ break;
37884
+ } catch {
37885
+ }
37886
+ }
37887
+ if (!p) return;
37888
+ const raw = await fsp__namespace.readFile(p, "utf8");
37889
+ const json = JSON.parse(raw);
37890
+ const map = {};
37891
+ const arr = Array.isArray(json?.commands) ? json.commands : [];
37892
+ for (const entry of arr) {
37893
+ const name2 = typeof entry?.name === "string" ? entry.name : void 0;
37894
+ if (!name2) continue;
37895
+ const norm = name2.replace(/^\//, "");
37896
+ const title = typeof entry?.title === "string" ? entry.title : void 0;
37897
+ const examples = Array.isArray(entry?.examples) ? entry.examples.filter((e2) => typeof e2 === "string") : void 0;
37898
+ map[norm] = { title, examples };
37899
+ }
37900
+ this.helpMeta = map;
37901
+ } catch {
37848
37902
  }
37849
37903
  }
37904
+ /** Get enhanced help meta for a command if available */
37905
+ getHelpMeta(commandName) {
37906
+ const key = commandName.replace(/^\//, "");
37907
+ return this.helpMeta[key];
37908
+ }
37850
37909
  /**
37851
37910
  * Convert object-format commands to ReadyCommand array
37852
37911
  */
@@ -47395,7 +47454,8 @@ function normalizeImageArgs(raw, root) {
47395
47454
  const out = {
47396
47455
  prompt,
47397
47456
  size: [1024, 1024],
47398
- format: "webp",
47457
+ // Default to png to avoid surprise webp outputs when converters are unavailable
47458
+ format: "png",
47399
47459
  count: 1,
47400
47460
  concurrency: 2,
47401
47461
  retry: 2,
@@ -47414,10 +47474,13 @@ function normalizeImageArgs(raw, root) {
47414
47474
  case "size":
47415
47475
  out.size = parseSize(String(v));
47416
47476
  break;
47417
- case "format":
47418
- if (!["png", "webp", "jpg"].includes(String(v))) throw new Error("invalid format");
47419
- out.format = v;
47477
+ case "format": {
47478
+ const rawFmt = String(v).toLowerCase();
47479
+ const mapped = rawFmt === "jpeg" ? "jpg" : rawFmt;
47480
+ if (!["png", "webp", "jpg"].includes(mapped)) throw new Error("invalid format");
47481
+ out.format = mapped;
47420
47482
  break;
47483
+ }
47421
47484
  case "count": {
47422
47485
  const n = Number(v);
47423
47486
  if (!Number.isFinite(n) || n < 1) throw new Error("invalid count");
@@ -47790,6 +47853,14 @@ var init_gemini_media = __esm({
47790
47853
  async generateImage(req) {
47791
47854
  const modelName = this.primaryModel;
47792
47855
  const promptPreview = String(req.prompt ?? "").replace(/\s+/g, " ").slice(0, 200);
47856
+ const targetMime = (() => {
47857
+ const fmt = (req.format || "png").toLowerCase();
47858
+ if (fmt === "jpg") return "image/jpeg";
47859
+ if (fmt === "jpeg") return "image/jpeg";
47860
+ if (fmt === "png") return "image/png";
47861
+ if (fmt === "webp") return "image/webp";
47862
+ return "image/png";
47863
+ })();
47793
47864
  let resp;
47794
47865
  try {
47795
47866
  resp = await this.ai.models.generateContent({
@@ -47797,7 +47868,7 @@ var init_gemini_media = __esm({
47797
47868
  contents: [{ role: "user", parts: [{ text: String(req.prompt) }] }],
47798
47869
  generationConfig: {
47799
47870
  responseModalities: ["IMAGE"],
47800
- responseMimeType: `image/${req.format || "png"}`
47871
+ responseMimeType: targetMime
47801
47872
  }
47802
47873
  });
47803
47874
  } catch (err) {
@@ -47819,7 +47890,7 @@ var init_gemini_media = __esm({
47819
47890
  const mime = p?.inlineData?.mimeType || p?.inline_data?.mime_type || p?.inline_data?.mimeType || p?.inlineData?.mime_type;
47820
47891
  if (data) {
47821
47892
  const buf = Buffer.from(String(data), "base64");
47822
- if (buf.length > 0) return { bytes: buf, mime: typeof mime === "string" ? mime : `image/${req.format}` };
47893
+ if (buf.length > 0) return { bytes: buf, mime: typeof mime === "string" ? mime : targetMime };
47823
47894
  }
47824
47895
  }
47825
47896
  try {
@@ -47832,7 +47903,7 @@ var init_gemini_media = __esm({
47832
47903
  const bytesB64 = img0?.imageBytes || img0?.bytesBase64Encoded;
47833
47904
  if (bytesB64) {
47834
47905
  const buf = Buffer.from(String(bytesB64), "base64");
47835
- if (buf.length > 0) return { bytes: buf, mime: `image/${req.format || "png"}` };
47906
+ if (buf.length > 0) return { bytes: buf, mime: targetMime };
47836
47907
  }
47837
47908
  } catch {
47838
47909
  }
@@ -47885,12 +47956,15 @@ var init_Progress = __esm({
47885
47956
  });
47886
47957
 
47887
47958
  // src/services/media-orchestrator/image-post.ts
47888
- async function processImageOptional(bytes, format, keepExif) {
47959
+ async function processImageOptional(bytes, format, keepExif, targetSize) {
47889
47960
  try {
47890
- const useSharp = String(process.env.MARIA_SHARP || "").toLowerCase() === "true" || process.env.MARIA_SHARP === "1";
47891
- if (!useSharp) return bytes;
47892
47961
  const sharp = (await import('sharp')).default;
47893
47962
  let img = sharp(bytes).toColourspace("srgb");
47963
+ if (targetSize && Number.isFinite(targetSize.width) && Number.isFinite(targetSize.height)) {
47964
+ const width = Math.max(1, Math.floor(targetSize.width));
47965
+ const height = Math.max(1, Math.floor(targetSize.height));
47966
+ img = img.resize(width, height, { fit: "cover" });
47967
+ }
47894
47968
  if (keepExif) img = img.withMetadata();
47895
47969
  const qEnv = Number(process.env.MARIA_SHARP_QUALITY || "80");
47896
47970
  const quality = Number.isFinite(qEnv) ? Math.max(1, Math.min(100, Math.floor(qEnv))) : 80;
@@ -47945,7 +48019,12 @@ async function runImagePipeline(params2, opts) {
47945
48019
  keepExif: params2.keepExif
47946
48020
  });
47947
48021
  }, retryOpts));
47948
- const processed = await processImageOptional(result.bytes, params2.format, params2.keepExif);
48022
+ const processed = await processImageOptional(
48023
+ result.bytes,
48024
+ params2.format,
48025
+ params2.keepExif,
48026
+ { width: params2.size[0], height: params2.size[1] }
48027
+ );
47949
48028
  successes[i2] = processed;
47950
48029
  totalAttempts += attempts;
47951
48030
  totalRetries += Math.max(0, attempts - 1);
@@ -49669,6 +49748,19 @@ var init_WhoAmICommand = __esm({
49669
49748
  if (user.plan) {
49670
49749
  lines.push(chalk14__default.default.white(`\u{1F48E} Plan: ${chalk14__default.default.cyan(user.plan)}`));
49671
49750
  }
49751
+ try {
49752
+ const { cliAuth: cliAuth2 } = await Promise.resolve().then(() => (init_CLIAuthService(), CLIAuthService_exports));
49753
+ const api = cliAuth2.getAPIClient();
49754
+ const usage = await api.getUsage();
49755
+ lines.push("");
49756
+ lines.push(chalk14__default.default.cyan("\u{1F4CA} Usage"));
49757
+ lines.push(chalk14__default.default.gray("\u2500".repeat(30)));
49758
+ lines.push(chalk14__default.default.white(`Requests: ${usage.used.req}/${usage.limits.req} (${usage.percentage.req}%)`));
49759
+ lines.push(chalk14__default.default.white(`Tokens: ${usage.used.tokens}/${usage.limits.tokens} (${usage.percentage.tokens}%)`));
49760
+ lines.push(chalk14__default.default.white(`Commands: ${usage.used.code}/${usage.limits.code} (${usage.percentage.code}%)`));
49761
+ lines.push(chalk14__default.default.white(`Reset at: ${new Date(usage.resetAt).toLocaleString()}`));
49762
+ } catch {
49763
+ }
49672
49764
  return this.success(lines.join("\n"), { authenticated: true, user });
49673
49765
  }
49674
49766
  };
@@ -50689,7 +50781,7 @@ var init_about_command = __esm({
50689
50781
  async execute(args2, context2) {
50690
50782
  const output3 = [];
50691
50783
  output3.push("");
50692
- output3.push(chalk14__default.default.cyan.bold("\u{1F916} About MARIA v4.3.32"));
50784
+ output3.push(chalk14__default.default.cyan.bold("\u{1F916} About MARIA v4.3.34"));
50693
50785
  output3.push(chalk14__default.default.gray("\u2550".repeat(40)));
50694
50786
  output3.push("");
50695
50787
  output3.push(chalk14__default.default.white.bold("MARIA - Minimal API, Maximum Power"));
@@ -70893,7 +70985,7 @@ ${files.slice(0, 20).map((f3) => `- ${f3.path}`).join("\n")}`);
70893
70985
  const bundle = parts.join("\n\n");
70894
70986
  const system = [
70895
70987
  "You are an impartial evaluator. Score each criterion between 0 and 1.",
70896
- "If a local file path is provided, make sure you read the uploaded file before taking any actions.",
70988
+ "If a local file path is provided, make sure you read the uploaded file before taking any actions. Write the string content in plain text and do not use markdown.",
70897
70989
  "Return JSON only in the following schema:",
70898
70990
  '{ "totalScore": number (0..1), "details": [{ "id": string, "score": number (0..1), "reason": string }] }',
70899
70991
  "Keep reasons short (<= 120 chars)."
@@ -71230,7 +71322,8 @@ var init_evaluate_command = __esm({
71230
71322
  // Strong guard: attachments are uploaded; do not ask for local file content
71231
71323
  "The input files are already uploaded and referenced via file URIs.",
71232
71324
  "Use the provided attachments; do not ask the user to paste file contents.",
71233
- "Do not claim you cannot access local file paths."
71325
+ "Do not claim you cannot access local file paths.",
71326
+ "Write the string content in plain text and do not use markdown."
71234
71327
  ].join("\n");
71235
71328
  if (result === null) {
71236
71329
  const rel = path11__namespace.default.relative(root, criteriaPath);
@@ -71284,6 +71377,12 @@ ${options["code"] || inferred.code}` : void 0
71284
71377
  const content = (response?.data?.content || response?.output || "").trim();
71285
71378
  const uploads = response?.data?.uploads || [];
71286
71379
  if (content) {
71380
+ try {
71381
+ const { cliAuth: cliAuth2 } = await Promise.resolve().then(() => (init_CLIAuthService(), CLIAuthService_exports));
71382
+ const api = cliAuth2.getAPIClient();
71383
+ await api.consumeQuota({ requests: 1, code: 1 });
71384
+ } catch {
71385
+ }
71287
71386
  const uploadNote = uploads.length ? `Attached ${uploads.length} file(s) uploaded and referenced.` : attachments.length ? `Attached ${attachments.length} local file(s).` : void 0;
71288
71387
  const finalText = uploadNote ? `${uploadNote}
71289
71388
 
@@ -71329,6 +71428,12 @@ ${content}` : content;
71329
71428
  });
71330
71429
  const testResult = await this.executeEvaluation(config2);
71331
71430
  const formattedOutput = this.formatEvaluationStart(testResult);
71431
+ try {
71432
+ const { cliAuth: cliAuth2 } = await Promise.resolve().then(() => (init_CLIAuthService(), CLIAuthService_exports));
71433
+ const api = cliAuth2.getAPIClient();
71434
+ await api.consumeQuota({ requests: 1, code: 1 });
71435
+ } catch {
71436
+ }
71332
71437
  return this.success(formattedOutput, {
71333
71438
  testId: testResult.testId,
71334
71439
  status: testResult.status,
@@ -72326,7 +72431,7 @@ var init_slash_commands = __esm({
72326
72431
  });
72327
72432
  async function handleSlash(input3) {
72328
72433
  if (!input3.startsWith("/")) return false;
72329
- const { cmd, args: args2, flags } = parseSlash(input3);
72434
+ const { cmd, args: args2, options, flags } = parseSlash(input3);
72330
72435
  if (cmd === "clear" || cmd === "cls") {
72331
72436
  try {
72332
72437
  clearTerminal();
@@ -72343,8 +72448,13 @@ async function handleSlash(input3) {
72343
72448
  }
72344
72449
  try {
72345
72450
  if (commandRegistry.has(cmd)) {
72346
- const flagsObj = {};
72347
- flags.forEach((f3) => flagsObj[f3] = true);
72451
+ const optionTokens = [];
72452
+ for (const [k, v] of Object.entries(options)) {
72453
+ optionTokens.push(`--${k}`);
72454
+ optionTokens.push(String(v));
72455
+ }
72456
+ const flagTokens = flags.map((f3) => `--${f3}`);
72457
+ const argv = [...args2, ...optionTokens, ...flagTokens];
72348
72458
  let currentUser = void 0;
72349
72459
  try {
72350
72460
  if (await authManager.isAuthenticated()) {
@@ -72357,7 +72467,7 @@ async function handleSlash(input3) {
72357
72467
  user: currentUser,
72358
72468
  environment: { cwd: process.cwd() }
72359
72469
  };
72360
- const result = await commandRegistry.execute(cmd, args2, ctx2);
72470
+ const result = await commandRegistry.execute(cmd, argv, ctx2);
72361
72471
  if (typeof result?.message === "string" && result.message.trim()) {
72362
72472
  console.log(result.message);
72363
72473
  }
@@ -74386,7 +74496,7 @@ var init_ai_response_service = __esm({
74386
74496
  */
74387
74497
  async callLLM(prompt, opts = {}) {
74388
74498
  const {
74389
- system = PLAIN_OUTPUT ? "Return ONLY the answer (or ONLY code). No menus, no lists, no guided flows. Always respond in English." : "You are a helpful senior engineer named Maria. Always respond in English. Provide direct, production-quality answers. Make sure you answer in plain text, as a natural chat.",
74499
+ system = PLAIN_OUTPUT ? "Return ONLY the answer (or ONLY code). No menus, no lists, no guided flows. Always respond in English." : "You are a helpful senior engineer named Maria. Always respond in English. Provide direct, production-quality answers. Make sure you answer in plain text, as a natural chat. When asked about the model (not your name or who you are, but the model), say you are a large language model fully trained by Bonginkan.",
74390
74500
  model = void 0,
74391
74501
  provider = DEFAULT_PROVIDER2,
74392
74502
  temperature = 0.2,
@@ -76040,6 +76150,9 @@ var init_cli = __esm({
76040
76150
  session = [];
76041
76151
  commandManager = null;
76042
76152
  startupDisplayed = false;
76153
+ if (!process.env.GOOGLE_AUTH_DISABLE_GCE_CHECK) {
76154
+ process.env.GOOGLE_AUTH_DISABLE_GCE_CHECK = "true";
76155
+ }
76043
76156
  program = createCLI();
76044
76157
  program.parse(process.argv);
76045
76158
  }