@bonginkan/maria 4.2.25 → 4.2.26

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.2.25
1
+ # MARIA - AI Development Platform v4.2.26
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.2.25 (September 3, 2025)
13
+ ## 🚀 What's New in v4.2.26 (September 3, 2025)
14
14
 
15
15
  ### 🏗️ Build Status - All Systems Operational ✅
16
16
  - **CLI NPM Package**: ESM + CJS builds successful (2.02MB/1.16MB)
@@ -748,10 +748,10 @@ await secureWorkflow.executeWithAuth(workflowDefinition, securityContext);
748
748
  ### Quick Installation
749
749
  ```bash
750
750
  # Install globally (recommended)
751
- npm install -g @bonginkan/maria@4.2.25
751
+ npm install -g @bonginkan/maria@4.2.26
752
752
 
753
753
  # Verify installation
754
- maria --version # Should show v4.2.25
754
+ maria --version # Should show v4.2.26
755
755
 
756
756
  # Initialize with authentication
757
757
  maria /login # Setup OAuth2.0 + PKCE authentication
@@ -952,7 +952,7 @@ MARIA CODE is distributed under a comprehensive licensing system designed for in
952
952
 
953
953
  *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.*
954
954
 
955
- **Transform your development experience today**: `npm install -g @bonginkan/maria@4.2.25`
955
+ **Transform your development experience today**: `npm install -g @bonginkan/maria@4.2.26`
956
956
 
957
957
  🌐 **Official Website**: [https://maria-code.ai](https://maria-code.ai)
958
958
  💬 **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-11T03:16:47.760Z",
3
+ "generatedAt": "2025-09-11T03:44:20.654Z",
4
4
  "totalCommands": 12,
5
5
  "readyCount": 12,
6
6
  "partialCount": 0,
@@ -24329,8 +24329,8 @@ var require_package = __commonJS({
24329
24329
  "package.json"(exports, module) {
24330
24330
  module.exports = {
24331
24331
  name: "@bonginkan/maria",
24332
- version: "4.2.25",
24333
- description: "\u{1F680} MARIA v4.2.25 - Enterprise AI Development Platform with 100% Command Availability. 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.",
24332
+ version: "4.2.26",
24333
+ description: "\u{1F680} MARIA v4.2.26 - Enterprise AI Development Platform with 100% Command Availability. 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.",
24334
24334
  keywords: [
24335
24335
  "ai",
24336
24336
  "cli",
@@ -26536,7 +26536,7 @@ var init_AuthenticationManager = __esm({
26536
26536
  const response2 = await fetch(`${this.apiBase}/api/user/profile`, {
26537
26537
  headers: {
26538
26538
  "Authorization": `Bearer ${tokens.accessToken}`,
26539
- "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.2.25"}`
26539
+ "User-Agent": `maria-cli/${process.env.CLI_VERSION || "4.2.26"}`
26540
26540
  }
26541
26541
  });
26542
26542
  if (response2.status === 401) {
@@ -29659,6 +29659,79 @@ var init_autocomplete_dropdown = __esm({
29659
29659
  }
29660
29660
  });
29661
29661
 
29662
+ // node_modules/.pnpm/string-width@8.0.0/node_modules/string-width/index.js
29663
+ function baseVisible(segment) {
29664
+ return segment.replace(leadingNonPrintingRegex, "");
29665
+ }
29666
+ function isZeroWidthCluster(segment) {
29667
+ return zeroWidthClusterRegex.test(segment);
29668
+ }
29669
+ function isDoubleWidthEmojiCluster(segment) {
29670
+ const visible = baseVisible(segment);
29671
+ const baseScalar = visible.codePointAt(0);
29672
+ const baseChar = String.fromCodePoint(baseScalar);
29673
+ const baseIsEmojiPresentation = emojiPresentationRegex.test(baseChar);
29674
+ const hasVs16 = segment.includes("\uFE0F");
29675
+ const hasVs15 = segment.includes("\uFE0E");
29676
+ const codePointCount = [...segment].length;
29677
+ const multiScalarMeaningful = codePointCount > 1 && !(codePointCount === 2 && hasVs15 && !hasVs16);
29678
+ return hasVs16 || baseIsEmojiPresentation && !hasVs15 || multiScalarMeaningful;
29679
+ }
29680
+ function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
29681
+ let extra = 0;
29682
+ if (segment.length > 1) {
29683
+ for (const char of segment.slice(1)) {
29684
+ if (char >= "\uFF00" && char <= "\uFFEF") {
29685
+ extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
29686
+ }
29687
+ }
29688
+ }
29689
+ return extra;
29690
+ }
29691
+ function stringWidth2(input3, options2 = {}) {
29692
+ if (typeof input3 !== "string" || input3.length === 0) {
29693
+ return 0;
29694
+ }
29695
+ const {
29696
+ ambiguousIsNarrow = true,
29697
+ countAnsiEscapeCodes = false
29698
+ } = options2;
29699
+ let string = input3;
29700
+ if (!countAnsiEscapeCodes) {
29701
+ string = stripAnsi(string);
29702
+ }
29703
+ if (string.length === 0) {
29704
+ return 0;
29705
+ }
29706
+ let width = 0;
29707
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
29708
+ for (const { segment } of segmenter2.segment(string)) {
29709
+ if (isZeroWidthCluster(segment)) {
29710
+ continue;
29711
+ }
29712
+ if (rgiEmojiRegex.test(segment) && isDoubleWidthEmojiCluster(segment)) {
29713
+ width += 2;
29714
+ continue;
29715
+ }
29716
+ const codePoint = baseVisible(segment).codePointAt(0);
29717
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
29718
+ width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
29719
+ }
29720
+ return width;
29721
+ }
29722
+ var segmenter2, zeroWidthClusterRegex, leadingNonPrintingRegex, rgiEmojiRegex, emojiPresentationRegex;
29723
+ var init_string_width2 = __esm({
29724
+ "node_modules/.pnpm/string-width@8.0.0/node_modules/string-width/index.js"() {
29725
+ init_strip_ansi();
29726
+ init_get_east_asian_width();
29727
+ segmenter2 = new Intl.Segmenter();
29728
+ zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Mark}|\\p{Surrogate})+$", "v");
29729
+ leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Mark}\\p{Surrogate}]+", "v");
29730
+ rgiEmojiRegex = new RegExp("^\\p{RGI_Emoji}$", "v");
29731
+ emojiPresentationRegex = new RegExp("^\\p{Emoji_Presentation}$", "v");
29732
+ }
29733
+ });
29734
+
29662
29735
  // src/services/interactive-cli.ts
29663
29736
  var interactive_cli_exports = {};
29664
29737
  __export(interactive_cli_exports, {
@@ -29669,6 +29742,7 @@ var init_interactive_cli = __esm({
29669
29742
  "src/services/interactive-cli.ts"() {
29670
29743
  init_command_groups();
29671
29744
  init_autocomplete_dropdown();
29745
+ init_string_width2();
29672
29746
  InteractiveCLI = class {
29673
29747
  rl;
29674
29748
  currentInput = "";
@@ -29683,6 +29757,7 @@ var init_interactive_cli = __esm({
29683
29757
  // Added: suspend overlays during /code execution
29684
29758
  isWaitingForInput = false;
29685
29759
  // Added: prevent duplicate enter handling
29760
+ segmenter = null;
29686
29761
  constructor(options2 = {}) {
29687
29762
  this.options = {
29688
29763
  maxSuggestions: options2.maxSuggestions || 5,
@@ -29695,6 +29770,11 @@ var init_interactive_cli = __esm({
29695
29770
  terminal: true
29696
29771
  });
29697
29772
  this.dropdown = new AutocompleteDropdown();
29773
+ try {
29774
+ this.segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
29775
+ } catch {
29776
+ this.segmenter = null;
29777
+ }
29698
29778
  if (process.stdin.isTTY) {
29699
29779
  process.stdin.setRawMode(true);
29700
29780
  }
@@ -29820,7 +29900,9 @@ var init_interactive_cli = __esm({
29820
29900
  * Handle character input
29821
29901
  */
29822
29902
  handleCharacter(char) {
29823
- this.currentInput = this.currentInput.slice(0, this.cursorPosition) + char + this.currentInput.slice(this.cursorPosition);
29903
+ const left = this.sliceByGraphemes(this.currentInput, 0, this.cursorPosition);
29904
+ const right = this.sliceByGraphemes(this.currentInput, this.cursorPosition);
29905
+ this.currentInput = left + char + right;
29824
29906
  this.cursorPosition++;
29825
29907
  void this.updateSuggestions();
29826
29908
  this.render();
@@ -29830,7 +29912,9 @@ var init_interactive_cli = __esm({
29830
29912
  */
29831
29913
  handleBackspace() {
29832
29914
  if (this.cursorPosition > 0) {
29833
- this.currentInput = this.currentInput.slice(0, this.cursorPosition - 1) + this.currentInput.slice(this.cursorPosition);
29915
+ const left = this.sliceByGraphemes(this.currentInput, 0, this.cursorPosition - 1);
29916
+ const right = this.sliceByGraphemes(this.currentInput, this.cursorPosition);
29917
+ this.currentInput = left + right;
29834
29918
  this.cursorPosition--;
29835
29919
  void this.updateSuggestions();
29836
29920
  this.render();
@@ -29917,7 +30001,7 @@ var init_interactive_cli = __esm({
29917
30001
  * Move cursor right
29918
30002
  */
29919
30003
  moveCursorRight() {
29920
- if (this.cursorPosition < this.currentInput.length) {
30004
+ if (this.cursorPosition < this.countGraphemes(this.currentInput)) {
29921
30005
  this.cursorPosition++;
29922
30006
  this.render();
29923
30007
  }
@@ -29959,10 +30043,42 @@ var init_interactive_cli = __esm({
29959
30043
  const prompt = chalk28__default.default.cyan("> ");
29960
30044
  const displayInput = this.currentInput;
29961
30045
  process.stdout.write(prompt + displayInput);
29962
- const promptLength = 2;
29963
- const actualCursorPos = promptLength + this.cursorPosition;
30046
+ const promptColumns = 2;
30047
+ const leftText = this.sliceByGraphemes(displayInput, 0, this.cursorPosition);
30048
+ const leftColumns = stringWidth2(leftText);
30049
+ const actualCursorPos = promptColumns + leftColumns;
29964
30050
  readline3__namespace.cursorTo(process.stdout, actualCursorPos);
29965
30051
  }
30052
+ /**
30053
+ * Count graphemes (visible characters)
30054
+ */
30055
+ countGraphemes(input3) {
30056
+ if (!input3) return 0;
30057
+ if (this.segmenter) {
30058
+ let count = 0;
30059
+ for (const _ of this.segmenter.segment(input3)) count++;
30060
+ return count;
30061
+ }
30062
+ return Array.from(input3).length;
30063
+ }
30064
+ /**
30065
+ * Slice string by grapheme indices [start, end)
30066
+ */
30067
+ sliceByGraphemes(input3, start, end) {
30068
+ if (!input3) return "";
30069
+ if (start < 0) start = 0;
30070
+ if (end !== void 0 && end < start) end = start;
30071
+ if (this.segmenter) {
30072
+ const segs = Array.from(this.segmenter.segment(input3));
30073
+ const s3 = Math.min(start, segs.length);
30074
+ const e3 = end === void 0 ? segs.length : Math.min(end, segs.length);
30075
+ return segs.slice(s3, e3).map((seg) => seg.segment).join("");
30076
+ }
30077
+ const arr = Array.from(input3);
30078
+ const s2 = Math.min(start, arr.length);
30079
+ const e2 = end === void 0 ? arr.length : Math.min(end, arr.length);
30080
+ return arr.slice(s2, e2).join("");
30081
+ }
29966
30082
  /**
29967
30083
  * Update only the selection indicator without redrawing the entire box
29968
30084
  */
@@ -29970,8 +30086,9 @@ var init_interactive_cli = __esm({
29970
30086
  if (!this.isShowingSuggestions || this.suggestions.length === 0) {
29971
30087
  return;
29972
30088
  }
29973
- const promptLength = 2;
29974
- const savedX = this.cursorPosition + promptLength;
30089
+ const promptColumns = 2;
30090
+ const leftText = this.sliceByGraphemes(this.currentInput, 0, this.cursorPosition);
30091
+ const savedX = promptColumns + stringWidth2(leftText);
29975
30092
  readline3__namespace.moveCursor(process.stdout, 0, 2);
29976
30093
  this.suggestions.forEach((suggestion, index2) => {
29977
30094
  const isSelected = index2 === this.selectedIndex;
@@ -29995,8 +30112,9 @@ var init_interactive_cli = __esm({
29995
30112
  * Render autocomplete suggestions - downward only
29996
30113
  */
29997
30114
  renderSuggestionsDownward() {
29998
- const promptLength = 2;
29999
- const savedX = this.cursorPosition + promptLength;
30115
+ const promptColumns = 2;
30116
+ const leftText = this.sliceByGraphemes(this.currentInput, 0, this.cursorPosition);
30117
+ const savedX = promptColumns + stringWidth2(leftText);
30000
30118
  process.stdout.write("\n");
30001
30119
  process.stdout.write(chalk28__default.default.white("\u256D\u2500\u2500\u2500\u2500 Command Suggestions \u2500\u2500\u2500\u2500\u256E\n"));
30002
30120
  this.suggestions.forEach((suggestion, index2) => {
@@ -48291,7 +48409,7 @@ var init_about_command = __esm({
48291
48409
  async execute(args2, context2) {
48292
48410
  const output3 = [];
48293
48411
  output3.push("");
48294
- output3.push(chalk28__default.default.cyan.bold("\u{1F916} About MARIA v4.2.25"));
48412
+ output3.push(chalk28__default.default.cyan.bold("\u{1F916} About MARIA v4.2.26"));
48295
48413
  output3.push(chalk28__default.default.gray("\u2550".repeat(40)));
48296
48414
  output3.push("");
48297
48415
  output3.push(chalk28__default.default.white.bold("MARIA - Minimal API, Maximum Power"));