claude-flow 2.7.0-alpha → 2.7.0-alpha.10

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.
Files changed (86) hide show
  1. package/README.md +2 -32
  2. package/bin/claude-flow +8 -8
  3. package/dist/src/cli/help-formatter.js +5 -0
  4. package/dist/src/cli/help-formatter.js.map +1 -1
  5. package/dist/src/cli/simple-cli.js +172 -182
  6. package/dist/src/cli/simple-cli.js.map +1 -1
  7. package/dist/src/cli/simple-commands/init/index.js +45 -0
  8. package/dist/src/cli/simple-commands/init/index.js.map +1 -1
  9. package/dist/src/cli/simple-commands/memory.js +183 -31
  10. package/dist/src/cli/simple-commands/memory.js.map +1 -1
  11. package/dist/src/cli/simple-commands/performance-metrics.js +231 -1
  12. package/dist/src/cli/simple-commands/performance-metrics.js.map +1 -1
  13. package/dist/src/cli/validation-helper.js.map +1 -1
  14. package/dist/src/core/version.js +1 -1
  15. package/dist/src/reasoningbank/reasoningbank-adapter.js +283 -0
  16. package/dist/src/reasoningbank/reasoningbank-adapter.js.map +1 -0
  17. package/dist/src/utils/metrics-reader.js +0 -10
  18. package/docker-test/.claude-flow/metrics/agent-metrics.json +1 -0
  19. package/docker-test/.claude-flow/metrics/performance.json +87 -0
  20. package/docker-test/.claude-flow/metrics/task-metrics.json +10 -0
  21. package/docker-test/Dockerfile.reasoningbank-test +21 -0
  22. package/docker-test/reasoningbank-validation.mjs +201 -0
  23. package/docs/.claude-flow/metrics/agent-metrics.json +1 -0
  24. package/docs/.claude-flow/metrics/performance.json +9 -0
  25. package/docs/.claude-flow/metrics/task-metrics.json +10 -0
  26. package/docs/CLI-MEMORY-COMMANDS-WORKING.md +150 -0
  27. package/docs/INDEX.md +36 -5
  28. package/docs/PERFORMANCE-JSON-IMPROVEMENTS.md +277 -0
  29. package/docs/PERFORMANCE-METRICS-GUIDE.md +259 -0
  30. package/docs/RELEASE-NOTES-v2.7.0-alpha.10.md +309 -0
  31. package/docs/RELEASE-NOTES-v2.7.0-alpha.9.md +208 -0
  32. package/docs/integrations/README.md +61 -0
  33. package/docs/{AGENTIC_FLOW_SECURITY_TEST_REPORT.md → integrations/agentic-flow/AGENTIC_FLOW_SECURITY_TEST_REPORT.md} +7 -7
  34. package/docs/integrations/reasoningbank/MIGRATION-v1.5.13.md +189 -0
  35. package/docs/integrations/reasoningbank/REASONINGBANK-INTEGRATION-STATUS.md +179 -0
  36. package/docs/integrations/reasoningbank/REASONINGBANK-STATUS.md +219 -0
  37. package/docs/reports/README.md +49 -0
  38. package/docs/reports/REASONINGBANK_STATUS_UPDATE_v2_7_0_alpha_7.md +366 -0
  39. package/docs/reports/validation/DOCKER-VALIDATION-REPORT-v2.7.0-alpha.7.md +361 -0
  40. package/docs/reports/validation/DOCKER_SQL_FALLBACK_VALIDATION.md +398 -0
  41. package/docs/{MEMORY_REDACTION_TEST_REPORT.md → reports/validation/MEMORY_REDACTION_TEST_REPORT.md} +7 -7
  42. package/docs/reports/validation/PROCESS-EXIT-FIX-v2.7.0-alpha.9.md +154 -0
  43. package/docs/reports/validation/REASONINGBANK-v1.5.13-VALIDATION.md +235 -0
  44. package/docs/reports/validation/SQL_FALLBACK_VALIDATION_REPORT.md +405 -0
  45. package/docs/reports/validation/VALIDATION-SUMMARY.md +192 -0
  46. package/docs/setup/MCP-SETUP-GUIDE.md +154 -0
  47. package/docs/technical/README.md +36 -0
  48. package/docs/technical/fixes/WASM-ESM-FIX-SUMMARY.md +114 -0
  49. package/package.json +6 -6
  50. package/src/cli/simple-commands/init/index.js +70 -0
  51. package/src/cli/simple-commands/memory.js +236 -34
  52. package/src/cli/simple-commands/performance-metrics.js +268 -2
  53. package/src/reasoningbank/reasoningbank-adapter.js +403 -0
  54. /package/docs/{AGENT-BOOSTER-INTEGRATION.md → integrations/agent-booster/AGENT-BOOSTER-INTEGRATION.md} +0 -0
  55. /package/docs/{AGENTIC-FLOW-INTEGRATION-GUIDE.md → integrations/agentic-flow/AGENTIC-FLOW-INTEGRATION-GUIDE.md} +0 -0
  56. /package/docs/{AGENTIC_FLOW_EXECUTION_FIX_REPORT.md → integrations/agentic-flow/AGENTIC_FLOW_EXECUTION_FIX_REPORT.md} +0 -0
  57. /package/docs/{AGENTIC_FLOW_INTEGRATION_STATUS.md → integrations/agentic-flow/AGENTIC_FLOW_INTEGRATION_STATUS.md} +0 -0
  58. /package/docs/{AGENTIC_FLOW_MVP_COMPLETE.md → integrations/agentic-flow/AGENTIC_FLOW_MVP_COMPLETE.md} +0 -0
  59. /package/docs/{epic-sdk-integration.md → integrations/epic-sdk/epic-sdk-integration.md} +0 -0
  60. /package/docs/{REASONING-AGENTS.md → integrations/reasoningbank/REASONING-AGENTS.md} +0 -0
  61. /package/docs/{REASONINGBANK-AGENT-CREATION-GUIDE.md → integrations/reasoningbank/REASONINGBANK-AGENT-CREATION-GUIDE.md} +0 -0
  62. /package/docs/{REASONINGBANK-ANALYSIS-COMPLETE.md → integrations/reasoningbank/REASONINGBANK-ANALYSIS-COMPLETE.md} +0 -0
  63. /package/docs/{REASONINGBANK-BENCHMARK-RESULTS.md → integrations/reasoningbank/REASONINGBANK-BENCHMARK-RESULTS.md} +0 -0
  64. /package/docs/{REASONINGBANK-BENCHMARK.md → integrations/reasoningbank/REASONINGBANK-BENCHMARK.md} +0 -0
  65. /package/docs/{REASONINGBANK-CLI-INTEGRATION.md → integrations/reasoningbank/REASONINGBANK-CLI-INTEGRATION.md} +0 -0
  66. /package/docs/{REASONINGBANK-CORE-INTEGRATION.md → integrations/reasoningbank/REASONINGBANK-CORE-INTEGRATION.md} +0 -0
  67. /package/docs/{REASONINGBANK-COST-OPTIMIZATION.md → integrations/reasoningbank/REASONINGBANK-COST-OPTIMIZATION.md} +0 -0
  68. /package/docs/{REASONINGBANK-DEMO.md → integrations/reasoningbank/REASONINGBANK-DEMO.md} +0 -0
  69. /package/docs/{REASONINGBANK-INTEGRATION-COMPLETE.md → integrations/reasoningbank/REASONINGBANK-INTEGRATION-COMPLETE.md} +0 -0
  70. /package/docs/{REASONINGBANK-VALIDATION.md → integrations/reasoningbank/REASONINGBANK-VALIDATION.md} +0 -0
  71. /package/docs/{REASONINGBANK_ARCHITECTURE.md → integrations/reasoningbank/REASONINGBANK_ARCHITECTURE.md} +0 -0
  72. /package/docs/{REASONINGBANK_INTEGRATION_COMPLETE.md → integrations/reasoningbank/REASONINGBANK_INTEGRATION_COMPLETE.md} +0 -0
  73. /package/docs/{REASONINGBANK_INTEGRATION_PLAN.md → integrations/reasoningbank/REASONINGBANK_INTEGRATION_PLAN.md} +0 -0
  74. /package/docs/{DEEP_REVIEW_COMPREHENSIVE_REPORT.md → reports/analysis/DEEP_REVIEW_COMPREHENSIVE_REPORT.md} +0 -0
  75. /package/docs/{REGRESSION-ANALYSIS-REPORT.md → reports/analysis/REGRESSION-ANALYSIS-REPORT.md} +0 -0
  76. /package/docs/{COMMIT_SUMMARY.md → reports/releases/COMMIT_SUMMARY.md} +0 -0
  77. /package/docs/{INTEGRATION_COMPLETE.md → reports/releases/INTEGRATION_COMPLETE.md} +0 -0
  78. /package/docs/{PRE_RELEASE_FIXES_REPORT.md → reports/releases/PRE_RELEASE_FIXES_REPORT.md} +0 -0
  79. /package/docs/{RELEASE_v2.6.0-alpha.2.md → reports/releases/RELEASE_v2.6.0-alpha.2.md} +0 -0
  80. /package/docs/{COMMAND-VERIFICATION-REPORT.md → reports/validation/COMMAND-VERIFICATION-REPORT.md} +0 -0
  81. /package/docs/{DOCKER-VALIDATION-REPORT.md → reports/validation/DOCKER-VALIDATION-REPORT.md} +0 -0
  82. /package/docs/{FINAL_PRE_PUBLISH_VALIDATION.md → reports/validation/FINAL_PRE_PUBLISH_VALIDATION.md} +0 -0
  83. /package/docs/{FINAL_VALIDATION_REPORT.md → reports/validation/FINAL_VALIDATION_REPORT.md} +0 -0
  84. /package/docs/{ENV-SETUP-GUIDE.md → setup/ENV-SETUP-GUIDE.md} +0 -0
  85. /package/docs/{HOOKS-V2-MODIFICATION.md → technical/fixes/HOOKS-V2-MODIFICATION.md} +0 -0
  86. /package/docs/{PERFORMANCE-SYSTEMS-STATUS.md → technical/performance/PERFORMANCE-SYSTEMS-STATUS.md} +0 -0
package/README.md CHANGED
@@ -39,39 +39,9 @@
39
39
  - 🛡️ **Safety**: Auto-adds `-i` to `rm` commands, detects sensitive keywords
40
40
  - 📁 **Organization**: Auto-routes files (tests→`/tests/`, src→`/src/`)
41
41
  - ⚡ **Productivity**: Alias expansion (`ll`→`ls -lah`), conventional commits
42
-
43
- **Quick Start:**
44
-
45
- **Option 1: Direct Plugin Installation** (Recommended)
46
- ```bash
47
- # In Claude Code, run:
48
- /plugin ruvnet/claude-flow
49
- ```
50
-
51
- **Option 2: Via NPM**
52
- ```bash
53
- npx claude-flow@alpha init --force # Auto-configures .claude-plugin/hooks/hooks.json
54
- ```
55
-
56
- **Examples:**
57
- ```bash
58
- rm test.txt → rm -i test.txt # Safety
59
- test.js → src/test.js # Organization
60
- git commit -m "fix" → [fix] fix + co-author # Commits
61
- ```
62
-
42
+
63
43
  > 📚 **Docs**: [HOOKS-V2-MODIFICATION.md](./docs/HOOKS-V2-MODIFICATION.md) | **Plugin**: `.claude-plugin/` | **Composable** with `agent-booster`
64
-
65
- ## 🌐 **Flow Nexus Cloud Platform**
66
-
67
- **NEW**: Claude-Flow v2.0.0 now includes **Flow Nexus integration** - a cloud-powered AI development platform featuring:
68
-
69
- - **E2B Sandboxes**: Secure isolated environments for Node.js, Python, React, Next.js
70
- - **AI Swarms**: Deploy multi-agent systems in cloud infrastructure
71
- - **Neural Training**: Distributed machine learning with custom model deployment
72
- - **Challenges & Marketplace**: Coding challenges with rUv credit rewards and template marketplace
73
- - **Workflow Automation**: Event-driven automation with message queue processing
74
-
44
+
75
45
  > 📚 **Complete documentation**: Visit [flow-nexus.ruv.io](https://flow-nexus.ruv.io) for comprehensive guides, tutorials, and API reference. Also see issue # https://github.com/ruvnet/claude-flow/issues/732
76
46
 
77
47
  ## ⚡ **Try v2.0.0 Alpha in 4 Commands**
package/bin/claude-flow CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
  # Claude-Flow Smart Dispatcher - Detects and uses the best available runtime
3
3
 
4
- VERSION="2.7.0-alpha"
4
+ VERSION="2.7.0-alpha.10"
5
5
 
6
6
  # Determine the correct path based on how the script is invoked
7
7
  if [ -L "$0" ]; then
@@ -48,16 +48,16 @@ for arg in "$@"; do
48
48
  fi
49
49
  done
50
50
 
51
- # Use Node.js with TypeScript support
51
+ # Use Node.js with TypeScript support and WASM modules enabled
52
52
  if [ -f "$ROOT_DIR/src/cli/simple-cli.js" ]; then
53
- # Use node for JavaScript version
54
- exec node "$ROOT_DIR/src/cli/simple-cli.js" "$@"
53
+ # Use node for JavaScript version with WASM support
54
+ exec node --experimental-wasm-modules "$ROOT_DIR/src/cli/simple-cli.js" "$@"
55
55
  elif command -v tsx >/dev/null 2>&1 && [ -f "$ROOT_DIR/src/cli/simple-cli.ts" ]; then
56
- # Use tsx for TypeScript functionality
57
- exec tsx "$ROOT_DIR/src/cli/simple-cli.ts" "$@"
56
+ # Use tsx for TypeScript functionality with WASM support
57
+ exec tsx --experimental-wasm-modules "$ROOT_DIR/src/cli/simple-cli.ts" "$@"
58
58
  elif [ -f "$ROOT_DIR/src/cli/simple-cli.ts" ]; then
59
- # Try to use npx tsx as fallback
60
- exec npx tsx "$ROOT_DIR/src/cli/simple-cli.ts" "$@"
59
+ # Try to use npx tsx as fallback with WASM support
60
+ exec npx tsx --experimental-wasm-modules "$ROOT_DIR/src/cli/simple-cli.ts" "$@"
61
61
  else
62
62
  # No runtime available, show help
63
63
  echo "🧠 Claude-Flow v$VERSION - Advanced AI Agent Orchestration System"
@@ -85,4 +85,9 @@ export class HelpFormatter {
85
85
  }
86
86
  }
87
87
 
88
+ //# sourceMappingURL=help-formatter.js.map/\s+/g, ' ');
89
+ return text;
90
+ }
91
+ }
92
+
88
93
  //# sourceMappingURL=help-formatter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/help-formatter.ts"],"sourcesContent":["/**\n * Standardized CLI Help Formatter\n * Follows Unix/Linux conventions for help output\n */\n\nexport interface CommandInfo {\n name: string;\n description: string;\n usage?: string;\n commands?: CommandItem[];\n options?: OptionItem[];\n examples?: string[];\n globalOptions?: OptionItem[];\n}\n\nexport interface CommandItem {\n name: string;\n description: string;\n aliases?: string[];\n}\n\nexport interface OptionItem {\n flags: string;\n description: string;\n defaultValue?: string;\n validValues?: string[];\n}\n\nexport class HelpFormatter {\n private static readonly INDENT = ' ';\n private static readonly COLUMN_GAP = 2;\n private static readonly MIN_DESCRIPTION_COLUMN = 25;\n\n /**\n * Format main command help\n */\n static formatHelp(info: CommandInfo): string {\n const sections: string[] = [];\n\n // NAME section\n sections.push(this.formatSection('NAME', [`${info.name} - ${info.description}`]));\n\n // SYNOPSIS section\n if (info.usage) {\n sections.push(this.formatSection('SYNOPSIS', [info.usage]));\n }\n\n // COMMANDS section\n if (info.commands && info.commands.length > 0) {\n sections.push(this.formatSection('COMMANDS', this.formatCommands(info.commands)));\n }\n\n // OPTIONS section\n if (info.options && info.options.length > 0) {\n sections.push(this.formatSection('OPTIONS', this.formatOptions(info.options)));\n }\n\n // GLOBAL OPTIONS section\n if (info.globalOptions && info.globalOptions.length > 0) {\n sections.push(this.formatSection('GLOBAL OPTIONS', this.formatOptions(info.globalOptions)));\n }\n\n // EXAMPLES section\n if (info.examples && info.examples.length > 0) {\n sections.push(this.formatSection('EXAMPLES', info.examples));\n }\n\n // Footer\n if (info.commands && info.commands.length > 0) {\n sections.push(`Run '${info.name} <command> --help' for more information on a command.`);\n }\n\n return sections.join('\\n\\n');\n }\n\n /**\n * Format error message with usage hint\n */\n static formatError(error: string, command: string, usage?: string): string {\n const lines: string[] = [`Error: ${error}`, ''];\n\n if (usage) {\n lines.push(`Usage: ${usage}`);\n }\n\n lines.push(`Try '${command} --help' for more information.`);\n\n return lines.join('\\n');\n }\n\n /**\n * Format validation error with valid options\n */\n static formatValidationError(\n value: string,\n paramName: string,\n validOptions: string[],\n command: string,\n ): string {\n return this.formatError(\n `'${value}' is not a valid ${paramName}. Valid options are: ${validOptions.join(', ')}.`,\n command,\n );\n }\n\n private static formatSection(title: string, content: string[]): string {\n return `${title}\\n${content.map((line) => `${this.INDENT}${line}`).join('\\n')}`;\n }\n\n private static formatCommands(commands: CommandItem[]): string[] {\n const maxNameLength = Math.max(\n this.MIN_DESCRIPTION_COLUMN,\n ...commands.map((cmd) => {\n const nameLength = cmd.name.length;\n const aliasLength = cmd.aliases ? ` (${cmd.aliases.join(', ')})`.length : 0;\n return nameLength + aliasLength;\n }),\n );\n\n return commands.map((cmd) => {\n let name = cmd.name;\n if (cmd.aliases && cmd.aliases.length > 0) {\n name += ` (${cmd.aliases.join(', ')})`;\n }\n const padding = ' '.repeat(maxNameLength - name.length + this.COLUMN_GAP);\n return `${name}${padding}${cmd.description}`;\n });\n }\n\n private static formatOptions(options: OptionItem[]): string[] {\n const maxFlagsLength = Math.max(\n this.MIN_DESCRIPTION_COLUMN,\n ...options.map((opt) => opt.flags.length),\n );\n\n return options.map((opt) => {\n const padding = ' '.repeat(maxFlagsLength - opt.flags.length + this.COLUMN_GAP);\n let description = opt.description;\n\n // Add default value\n if (opt.defaultValue !== undefined) {\n description += ` [default: ${opt.defaultValue}]`;\n }\n\n // Add valid values on next line if present\n if (opt.validValues && opt.validValues.length > 0) {\n const validValuesLine =\n ' '.repeat(maxFlagsLength + this.COLUMN_GAP) + `Valid: ${opt.validValues.join(', ')}`;\n return `${opt.flags}${padding}${description}\\n${this.INDENT}${validValuesLine}`;\n }\n\n return `${opt.flags}${padding}${description}`;\n });\n }\n\n /**\n * Strip ANSI color codes and emojis from text\n */\n static stripFormatting(text: string): string {\n // Remove ANSI color codes\n text = text.replace(/\\x1b\\[[0-9;]*m/g, '');\n\n // Remove common emojis used in the CLI\n const emojiPattern =\n /[\\u{1F300}-\\u{1F9FF}]|[\\u{2600}-\\u{27BF}]|[\\u{1F000}-\\u{1F6FF}]|[\\u{1F680}-\\u{1F6FF}]/gu;\n text = text.replace(emojiPattern, '').trim();\n\n // Remove multiple spaces\n text = text.replace(/\\s+/g, ' ');\n\n return text;\n }\n}\n"],"names":["HelpFormatter","INDENT","COLUMN_GAP","MIN_DESCRIPTION_COLUMN","formatHelp","info","sections","push","formatSection","name","description","usage","commands","length","formatCommands","options","formatOptions","globalOptions","examples","join","formatError","error","command","lines","formatValidationError","value","paramName","validOptions","title","content","map","line","maxNameLength","Math","max","cmd","nameLength","aliasLength","aliases","padding","repeat","maxFlagsLength","opt","flags","defaultValue","undefined","validValues","validValuesLine","stripFormatting","text","replace","emojiPattern","trim"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/help-formatter.js"],"sourcesContent":["/**\n * Standardized CLI Help Formatter\n * Follows Unix/Linux conventions for help output\n */\n\nexport class HelpFormatter {\n static INDENT = ' ';\n static COLUMN_GAP = 2;\n static MIN_DESCRIPTION_COLUMN = 25;\n\n /**\n * Format main command help\n */\n static formatHelp(info) {\n const sections = [];\n\n // NAME section\n sections.push(this.formatSection('NAME', [`${info.name} - ${info.description}`]));\n\n // SYNOPSIS section\n if (info.usage) {\n sections.push(this.formatSection('SYNOPSIS', [info.usage]));\n }\n\n // COMMANDS section\n if (info.commands && info.commands.length > 0) {\n sections.push(this.formatSection('COMMANDS', this.formatCommands(info.commands)));\n }\n\n // OPTIONS section\n if (info.options && info.options.length > 0) {\n sections.push(this.formatSection('OPTIONS', this.formatOptions(info.options)));\n }\n\n // GLOBAL OPTIONS section\n if (info.globalOptions && info.globalOptions.length > 0) {\n sections.push(this.formatSection('GLOBAL OPTIONS', this.formatOptions(info.globalOptions)));\n }\n\n // EXAMPLES section\n if (info.examples && info.examples.length > 0) {\n sections.push(this.formatSection('EXAMPLES', info.examples));\n }\n\n // DETAILS section (additional information)\n if (info.details) {\n sections.push('\\n' + info.details);\n }\n\n // Footer\n if (info.commands && info.commands.length > 0) {\n sections.push(`Run '${info.name} <command> --help' for more information on a command.`);\n }\n\n return sections.join('\\n\\n');\n }\n\n /**\n * Format error message with usage hint\n */\n static formatError(error, command, usage) {\n const lines = [`Error: ${error}`, ''];\n\n if (usage) {\n lines.push(`Usage: ${usage}`);\n }\n\n lines.push(`Try '${command} --help' for more information.`);\n\n return lines.join('\\n');\n }\n\n /**\n * Format validation error with valid options\n */\n static formatValidationError(value, paramName, validOptions, command) {\n return this.formatError(\n `'${value}' is not a valid ${paramName}. Valid options are: ${validOptions.join(', ')}.`,\n command,\n );\n }\n\n static formatSection(title, content) {\n return `${title}\\n${content.map((line) => `${this.INDENT}${line}`).join('\\n')}`;\n }\n\n static formatCommands(commands) {\n const maxNameLength = Math.max(\n this.MIN_DESCRIPTION_COLUMN,\n ...commands.map((cmd) => {\n const nameLength = cmd.name.length;\n const aliasLength = cmd.aliases ? ` (${cmd.aliases.join(', ')})`.length : 0;\n return nameLength + aliasLength;\n }),\n );\n\n return commands.map((cmd) => {\n let name = cmd.name;\n if (cmd.aliases && cmd.aliases.length > 0) {\n name += ` (${cmd.aliases.join(', ')})`;\n }\n const padding = ' '.repeat(maxNameLength - name.length + this.COLUMN_GAP);\n return `${name}${padding}${cmd.description}`;\n });\n }\n\n static formatOptions(options) {\n const maxFlagsLength = Math.max(\n this.MIN_DESCRIPTION_COLUMN,\n ...options.map((opt) => opt.flags.length),\n );\n\n return options.map((opt) => {\n const padding = ' '.repeat(maxFlagsLength - opt.flags.length + this.COLUMN_GAP);\n let description = opt.description;\n\n // Add default value\n if (opt.defaultValue !== undefined) {\n description += ` [default: ${opt.defaultValue}]`;\n }\n\n // Add valid values on next line if present\n if (opt.validValues && opt.validValues.length > 0) {\n const validValuesLine =\n ' '.repeat(maxFlagsLength + this.COLUMN_GAP) + `Valid: ${opt.validValues.join(', ')}`;\n return `${opt.flags}${padding}${description}\\n${this.INDENT}${validValuesLine}`;\n }\n\n return `${opt.flags}${padding}${description}`;\n });\n }\n\n /**\n * Strip ANSI color codes and emojis from text\n */\n static stripFormatting(text) {\n // Remove ANSI color codes\n text = text.replace(/\\x1b\\[[0-9;]*m/g, '');\n\n // Remove common emojis used in the CLI\n const emojiPattern =\n /[\\u{1F300}-\\u{1F9FF}]|[\\u{2600}-\\u{27BF}]|[\\u{1F000}-\\u{1F6FF}]|[\\u{1F680}-\\u{1F6FF}]/gu;\n text = text.replace(emojiPattern, '').trim();\n\n // Remove multiple spaces\n text = text.replace(/\\s+/g, ' ');\n\n return text;\n }\n}\n"],"names":["HelpFormatter","INDENT","COLUMN_GAP","MIN_DESCRIPTION_COLUMN","formatHelp","info","sections","push","formatSection","name","description","usage","commands","length","formatCommands","options","formatOptions","globalOptions","examples","details","join","formatError","error","command","lines","formatValidationError","value","paramName","validOptions","title","content","map","line","maxNameLength","Math","max","cmd","nameLength","aliasLength","aliases","padding","repeat","maxFlagsLength","opt","flags","defaultValue","undefined","validValues","validValuesLine","stripFormatting","text","replace","emojiPattern","trim"],"mappings":"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"}AEgC,IAAIE,YAAY,CAAC,CAAC,CAAC;YAClD;YAGA,IAAIF,IAAII,WAAW,IAAIJ,IAAII,WAAW,CAACjC,MAAM,GAAG,GAAG;gBACjD,MAAMkC,kBACJ,IAAIP,MAAM,CAACC,iBAAiB,IAAI,CAACvC,UAAU,IAAI,CAAC,OAAO,EAAEwC,IAAII,WAAW,CAAC3B,IAAI,CAAC,OAAO;gBACvF,OAAO,GAAGuB,IAAIC,KAAK,GAAGJ,UAAU7B,YAAY,EAAE,EAAE,IAAI,CAACT,MAAM,GAAG8C,iBAAiB;YACjF;YAEA,OAAO,GAAGL,IAAIC,KAAK,GAAGJ,UAAU7B,aAAa;QAC/C;IACF;IAKA,OAAOsC,gBAAgBC,IAAY,EAAU;QAE3CA,OAAOA,KAAKC,OAAO,CAAC,mBAAmB;QAGvC,MAAMC,eACJ;QACFF,OAAOA,KAAKC,OAAO,CAACC,cAAc,IAAIC,IAAI;QAG1CH,OAAOA,KAAKC,OAAO,CAAC,QAAQ;QAE5B,OAAOD;IACT;AACF"}