@bonginkan/maria 4.1.15 → 4.2.0

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.
@@ -454,8 +454,8 @@ var init_startup_display = __esm({
454
454
  var DEFAULT_PROVIDER2, DEFAULT_MODEL2;
455
455
  var init_config = __esm({
456
456
  "src/providers/config.ts"() {
457
- DEFAULT_PROVIDER2 = "openai";
458
- DEFAULT_MODEL2 = process.env.MARIA_DEFAULT_MODEL || "gpt-5-mini-2025-08-07";
457
+ DEFAULT_PROVIDER2 = process.env.DEFAULT_PROVIDER || "openai";
458
+ DEFAULT_MODEL2 = process.env.MARIA_DEFAULT_MODEL || process.env.LMSTUDIO_MODEL || "gpt-5-mini-2025-08-07";
459
459
  }
460
460
  });
461
461
 
@@ -7099,8 +7099,208 @@ var init_base_provider = __esm({
7099
7099
  }
7100
7100
  });
7101
7101
 
7102
+ // src/providers/groq-provider.ts
7103
+ var groq_provider_exports = {};
7104
+ __export(groq_provider_exports, {
7105
+ GroqProvider: () => GroqProvider
7106
+ });
7107
+ var GroqProvider;
7108
+ var init_groq_provider = __esm({
7109
+ "src/providers/groq-provider.ts"() {
7110
+ init_base_provider();
7111
+ GroqProvider = class extends UnifiedBaseProvider {
7112
+ name = "groq";
7113
+ modelsCache;
7114
+ constructor(apiKey) {
7115
+ super({
7116
+ apiKey,
7117
+ apiBase: "https://api.groq.com/openai/v1"
7118
+ });
7119
+ }
7120
+ async isAvailable() {
7121
+ if (!this.apiKey || this.apiKey.startsWith("gsk_your-groq-")) {
7122
+ return false;
7123
+ }
7124
+ try {
7125
+ await this.makeRequest(`${this.apiBase}/models`, {
7126
+ method: "GET",
7127
+ headers: {
7128
+ Authorization: `Bearer ${this.apiKey}`
7129
+ }
7130
+ });
7131
+ return true;
7132
+ } catch {
7133
+ return false;
7134
+ }
7135
+ }
7136
+ async getModels() {
7137
+ if (this.modelsCache) {
7138
+ return this.modelsCache;
7139
+ }
7140
+ const models = [
7141
+ {
7142
+ id: "llama-3.3-70b-versatile",
7143
+ name: "Llama 3.3 70B",
7144
+ provider: this.name,
7145
+ description: "Most capable Llama _model with versatile performance",
7146
+ contextLength: 32768,
7147
+ capabilities: ["text", "reasoning", "code"],
7148
+ _pricing: { input: 59e-5, output: 79e-5 },
7149
+ available: await this.isAvailable(),
7150
+ recommendedFor: ["complex_reasoning", "coding", "analysis"]
7151
+ },
7152
+ {
7153
+ id: "llama-3.2-90b-vision-preview",
7154
+ name: "Llama 3.2 90B Vision",
7155
+ provider: this.name,
7156
+ description: "Vision-capable Llama _model for multimodal tasks",
7157
+ contextLength: 128e3,
7158
+ capabilities: ["text", "vision", "reasoning"],
7159
+ _pricing: { input: 9e-4, output: 9e-4 },
7160
+ available: await this.isAvailable(),
7161
+ recommendedFor: ["vision_tasks", "multimodal", "analysis"]
7162
+ },
7163
+ {
7164
+ id: "mixtral-8x7b-32768",
7165
+ name: "Mixtral 8x7B",
7166
+ provider: this.name,
7167
+ description: "Mixture of experts _model for balanced performance",
7168
+ contextLength: 32768,
7169
+ capabilities: ["text", "reasoning", "code"],
7170
+ _pricing: { input: 24e-5, output: 24e-5 },
7171
+ available: await this.isAvailable(),
7172
+ recommendedFor: ["balanced_performance", "multilingual"]
7173
+ },
7174
+ {
7175
+ id: "gemma2-9b-it",
7176
+ name: "Gemma 2 9B",
7177
+ provider: this.name,
7178
+ description: "Google's efficient open _model",
7179
+ contextLength: 8192,
7180
+ capabilities: ["text", "reasoning"],
7181
+ _pricing: { input: 2e-4, output: 2e-4 },
7182
+ available: await this.isAvailable(),
7183
+ recommendedFor: ["quick_tasks", "cost_effective"]
7184
+ }
7185
+ ];
7186
+ this.modelsCache = models;
7187
+ return models;
7188
+ }
7189
+ async chat(request) {
7190
+ if (!await this.isAvailable()) {
7191
+ throw new Error("Groq API not available");
7192
+ }
7193
+ const _model = request._model || "mixtral-8x7b-32768";
7194
+ const _startTime = Date.now();
7195
+ const _payload = {
7196
+ _model,
7197
+ messages: request.messages,
7198
+ temperature: request.temperature || 0.7,
7199
+ maxtokens: request.maxTokens || 4e3,
7200
+ _stream: request._stream || false
7201
+ };
7202
+ if (request._stream) {
7203
+ const _stream = await this.makeStreamRequest(
7204
+ `${this.apiBase}/chat/completions`,
7205
+ {
7206
+ method: "POST",
7207
+ headers: {
7208
+ Authorization: `Bearer ${this.apiKey}`
7209
+ },
7210
+ body: JSON.stringify(_payload)
7211
+ }
7212
+ );
7213
+ return {
7214
+ _stream,
7215
+ _model,
7216
+ provider: this.name,
7217
+ responseTime: Date.now() - _startTime
7218
+ };
7219
+ }
7220
+ const _response = await this.makeRequest(
7221
+ `${this.apiBase}/chat/completions`,
7222
+ {
7223
+ method: "POST",
7224
+ headers: {
7225
+ Authorization: `Bearer ${this.apiKey}`
7226
+ },
7227
+ body: JSON.stringify(_payload)
7228
+ }
7229
+ );
7230
+ return {
7231
+ content: _response.choices[0]?.message?.content || "",
7232
+ _model,
7233
+ provider: this.name,
7234
+ usage: {
7235
+ promptTokens: _response.usage?.prompt_tokens || 0,
7236
+ completionTokens: _response.usage?.completion_tokens || 0,
7237
+ totalTokens: _response.usage?.total_tokens || 0
7238
+ },
7239
+ responseTime: Date.now() - _startTime
7240
+ };
7241
+ }
7242
+ async vision(_image, prompt) {
7243
+ if (!await this.isAvailable()) {
7244
+ throw new Error("Groq API not available");
7245
+ }
7246
+ const _base64Image = _image.toString("base64");
7247
+ const _startTime = Date.now();
7248
+ const _payload = {
7249
+ _model: "llama-3.2-90b-vision-preview",
7250
+ messages: [
7251
+ {
7252
+ role: "user",
7253
+ content: [
7254
+ { type: "text", text: prompt },
7255
+ {
7256
+ type: "image_url",
7257
+ imageurl: {
7258
+ url: `data:image/jpeg;base64,${_base64Image}`
7259
+ }
7260
+ }
7261
+ ]
7262
+ }
7263
+ ],
7264
+ maxtokens: 4e3
7265
+ };
7266
+ const _response = await this.makeRequest(
7267
+ `${this.apiBase}/chat/completions`,
7268
+ {
7269
+ method: "POST",
7270
+ headers: {
7271
+ Authorization: `Bearer ${this.apiKey}`
7272
+ },
7273
+ body: JSON.stringify(_payload)
7274
+ }
7275
+ );
7276
+ return {
7277
+ content: _response.choices[0]?.message?.content || "",
7278
+ _model: "llama-3.2-90b-vision-preview",
7279
+ provider: this.name,
7280
+ usage: {
7281
+ promptTokens: _response.usage?.prompt_tokens || 0,
7282
+ completionTokens: _response.usage?.completion_tokens || 0,
7283
+ totalTokens: _response.usage?.total_tokens || 0
7284
+ },
7285
+ responseTime: Date.now() - _startTime
7286
+ };
7287
+ }
7288
+ estimateCost(_tokens, _model = "mixtral-8x7b-32768") {
7289
+ const _pricing = {
7290
+ "llama-3.3-70b-versatile": { input: 59e-5, output: 79e-5 },
7291
+ "llama-3.2-90b-vision-preview": { input: 9e-4, output: 9e-4 },
7292
+ "mixtral-8x7b-32768": { input: 24e-5, output: 24e-5 },
7293
+ "gemma2-9b-it": { input: 2e-4, output: 2e-4 }
7294
+ };
7295
+ const _modelPricing = _pricing[_model] || _pricing["mixtral-8x7b-32768"];
7296
+ return _tokens * 0.75 * _modelPricing.input + _tokens * 0.25 * _modelPricing.output;
7297
+ }
7298
+ };
7299
+ }
7300
+ });
7301
+
7102
7302
  // src/providers/manager.ts
7103
- var UnifiedAIProviderManager, UnifiedOpenAIProvider, UnifiedAnthropicProvider, UnifiedGoogleProvider, UnifiedGrokProvider, UnifiedOllamaProvider, UnifiedLMStudioProvider, UnifiedVLLMProvider;
7303
+ var UnifiedAIProviderManager, UnifiedOpenAIProvider, UnifiedAnthropicProvider, UnifiedGoogleProvider, UnifiedGroqProvider, UnifiedGrokProvider, UnifiedOllamaProvider, UnifiedLMStudioProvider, UnifiedVLLMProvider;
7104
7304
  var init_manager = __esm({
7105
7305
  "src/providers/manager.ts"() {
7106
7306
  init_config();
@@ -7290,10 +7490,12 @@ var init_manager = __esm({
7290
7490
  const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
7291
7491
  const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY;
7292
7492
  const GOOGLE_API_KEY = process.env.GOOGLE_API_KEY || process.env.GOOGLE_AI_API_KEY;
7493
+ const GROQ_API_KEY = process.env.GROQ_API_KEY;
7293
7494
  const GROK_API_KEY = process.env.GROK_API_KEY || process.env.XAI_API_KEY;
7294
7495
  if (OPENAI_API_KEY) this.register(new UnifiedOpenAIProvider(OPENAI_API_KEY));
7295
7496
  if (ANTHROPIC_API_KEY) this.register(new UnifiedAnthropicProvider(ANTHROPIC_API_KEY));
7296
7497
  if (GOOGLE_API_KEY) this.register(new UnifiedGoogleProvider(GOOGLE_API_KEY));
7498
+ if (GROQ_API_KEY) this.register(new UnifiedGroqProvider(GROQ_API_KEY));
7297
7499
  if (GROK_API_KEY) this.register(new UnifiedGrokProvider(GROK_API_KEY));
7298
7500
  this.register(new UnifiedOllamaProvider());
7299
7501
  this.register(new UnifiedLMStudioProvider());
@@ -7454,6 +7656,75 @@ var init_manager = __esm({
7454
7656
  ];
7455
7657
  }
7456
7658
  };
7659
+ UnifiedGroqProvider = class extends UnifiedBaseProvider {
7660
+ id = "groq";
7661
+ name = "Groq";
7662
+ groqProvider;
7663
+ constructor(apiKey) {
7664
+ super({ apiKey });
7665
+ }
7666
+ async getProvider() {
7667
+ if (!this.groqProvider) {
7668
+ const { GroqProvider: GroqProvider2 } = await Promise.resolve().then(() => (init_groq_provider(), groq_provider_exports));
7669
+ this.groqProvider = new GroqProvider2(this.apiKey);
7670
+ }
7671
+ return this.groqProvider;
7672
+ }
7673
+ async isAvailable() {
7674
+ try {
7675
+ const provider = await this.getProvider();
7676
+ return await provider.isAvailable();
7677
+ } catch {
7678
+ return false;
7679
+ }
7680
+ }
7681
+ async health() {
7682
+ const startTime = Date.now();
7683
+ const isHealthy = await this.isAvailable();
7684
+ return {
7685
+ ok: isHealthy,
7686
+ latencyMs: Date.now() - startTime,
7687
+ timestamp: Date.now()
7688
+ };
7689
+ }
7690
+ async complete(prompt, req) {
7691
+ const provider = await this.getProvider();
7692
+ const response2 = await provider.chat({
7693
+ messages: [{ role: "user", content: prompt }],
7694
+ model: req.model || "mixtral-8x7b-32768",
7695
+ temperature: req.temperature,
7696
+ maxTokens: req.maxTokens,
7697
+ stream: false
7698
+ });
7699
+ return {
7700
+ content: response2.content || "",
7701
+ model: response2.model,
7702
+ usage: response2.usage
7703
+ };
7704
+ }
7705
+ async stream(prompt, req) {
7706
+ const provider = await this.getProvider();
7707
+ const response2 = await provider.chat({
7708
+ messages: [{ role: "user", content: prompt }],
7709
+ model: req.model || "mixtral-8x7b-32768",
7710
+ temperature: req.temperature,
7711
+ maxTokens: req.maxTokens,
7712
+ stream: true
7713
+ });
7714
+ if (response2.stream) {
7715
+ return response2.stream;
7716
+ }
7717
+ async function* fallback() {
7718
+ yield { content: response2.content || "" };
7719
+ }
7720
+ return fallback();
7721
+ }
7722
+ async getModels() {
7723
+ const provider = await this.getProvider();
7724
+ const models = await provider.getModels();
7725
+ return models.map((m2) => m2.id);
7726
+ }
7727
+ };
7457
7728
  UnifiedGrokProvider = class extends UnifiedBaseProvider {
7458
7729
  id = "grok";
7459
7730
  name = "xAI Grok";
@@ -7537,7 +7808,43 @@ var init_manager = __esm({
7537
7808
  return { ok: available, timestamp: Date.now(), reason: available ? void 0 : "LM Studio not running" };
7538
7809
  }
7539
7810
  async complete(prompt, req) {
7540
- return { content: `LM Studio (local) \u2192 ${prompt.slice(0, 60)}` };
7811
+ try {
7812
+ const apiBase = process.env.LMSTUDIO_API_BASE || "http://localhost:1234/v1";
7813
+ const model = req.model || process.env.LMSTUDIO_MODEL || "local-model";
7814
+ const response2 = await fetch(`${apiBase}/chat/completions`, {
7815
+ method: "POST",
7816
+ headers: {
7817
+ "Content-Type": "application/json",
7818
+ "Authorization": "Bearer lm-studio"
7819
+ },
7820
+ body: JSON.stringify({
7821
+ model,
7822
+ messages: [
7823
+ { role: "user", content: prompt }
7824
+ ],
7825
+ temperature: req.temperature || 0.7,
7826
+ max_tokens: req.maxTokens || 2e3,
7827
+ stream: false
7828
+ })
7829
+ });
7830
+ if (!response2.ok) {
7831
+ throw new Error(`LM Studio API error: ${response2.statusText}`);
7832
+ }
7833
+ const data2 = await response2.json();
7834
+ const content = data2.choices?.[0]?.message?.content || "";
7835
+ return {
7836
+ content,
7837
+ model: data2.model,
7838
+ usage: data2.usage ? {
7839
+ promptTokens: data2.usage.prompt_tokens,
7840
+ completionTokens: data2.usage.completion_tokens,
7841
+ totalTokens: data2.usage.total_tokens
7842
+ } : void 0
7843
+ };
7844
+ } catch (error2) {
7845
+ console.error("LM Studio error:", error2);
7846
+ return { content: `[LM Studio offline] Mock response for: ${prompt.slice(0, 60)}` };
7847
+ }
7541
7848
  }
7542
7849
  async stream(prompt, req) {
7543
7850
  async function* g() {
@@ -21245,8 +21552,8 @@ var init_package = __esm({
21245
21552
  "package.json"() {
21246
21553
  package_default = {
21247
21554
  name: "@bonginkan/maria",
21248
- version: "4.1.15",
21249
- description: "\u{1F680} MARIA v4.1.4 - Complete Multimodal AI Integration & Enterprise Platform. Revolutionary voice-to-code, image-to-code, and 73 production-ready commands with advanced memory systems. World's first TypeScript AST-powered code generation with GraphRAG intelligence, multilingual support, and dual-architecture cognitive memory. Features zero-error development, OAuth2.0 + PKCE authentication, and military-grade security. Delivers next-generation multimodal development experience with enterprise-grade performance.",
21555
+ version: "4.2.0",
21556
+ description: "\u{1F680} MARIA v4.2.0 - 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.",
21250
21557
  keywords: [
21251
21558
  "ai",
21252
21559
  "cli",
@@ -21497,6 +21804,10 @@ var init_package = __esm({
21497
21804
  "test:deps": "cross-env MOCK_DEPS=true vitest run tests/contract/**/*.test.ts",
21498
21805
  "generate:manifest": "tsx scripts/generate-ready-manifest.ts",
21499
21806
  "health:report": "tsx scripts/command-health-report.ts",
21807
+ "ims:deploy": "tsx scripts/deploy-ims-config.ts",
21808
+ "ims:secrets": "tsx scripts/setup-ims-secrets.ts",
21809
+ "ims:test": "tsx scripts/test-ims-integration.ts",
21810
+ "ims:dashboard": "tsx scripts/ims-dashboard.ts",
21500
21811
  "ci:smoke": "pnpm -s build && pnpm -s test:smoke",
21501
21812
  "verify:build": "tsx scripts/verify-manifest-inclusion.ts",
21502
21813
  lint: "eslint --cache 'src/**/*.{ts,tsx}'",
@@ -21597,6 +21908,9 @@ var init_package = __esm({
21597
21908
  dependencies: {
21598
21909
  "@anthropic-ai/sdk": "^0.20.0",
21599
21910
  "@babel/traverse": "^7.28.3",
21911
+ "@google-cloud/bigquery": "^8.1.1",
21912
+ "@google-cloud/firestore": "^7.11.3",
21913
+ "@google-cloud/secret-manager": "^6.1.0",
21600
21914
  "@google/genai": "^1.16.0",
21601
21915
  "@google/generative-ai": "^0.1.0",
21602
21916
  "@langchain/core": "^0.1.0",
@@ -24921,7 +25235,7 @@ var init_ai_response_service = __esm({
24921
25235
  _conversationPersistence;
24922
25236
  telemetry;
24923
25237
  initialized = false;
24924
- // V2 providers
25238
+ // providers
24925
25239
  providerManager;
24926
25240
  constructor() {
24927
25241
  this.chatContext = ChatContextService.getInstance();
@@ -25335,10 +25649,15 @@ var init_command_groups = __esm({
25335
25649
  // Code Quality
25336
25650
  "/bug": {
25337
25651
  name: "/bug",
25338
- description: "Bug analysis and fix suggestions",
25652
+ description: "AI-powered error analysis and solution recommendation system (Enhanced POC #4)",
25339
25653
  category: "quality",
25340
- usage: "/bug [description]",
25341
- examples: ["/bug Function returns undefined", "/bug Memory leak in component"]
25654
+ usage: '/bug "<error message>" [--from-output] [--solution-id <id>] [--dry-run] [--verbose]',
25655
+ examples: [
25656
+ `/bug "Property 'name' does not exist on type 'User'"`,
25657
+ `/bug "Cannot read property 'id' of undefined" --file src/user.ts`,
25658
+ "/bug --from-output --verbose",
25659
+ "/bug --solution-id typescript-fix-0 --dry-run"
25660
+ ]
25342
25661
  },
25343
25662
  "/lint": {
25344
25663
  name: "/lint",
@@ -25468,6 +25787,17 @@ var init_command_groups = __esm({
25468
25787
  examples: ["/signout", "/signout github"]
25469
25788
  },
25470
25789
  // Workflow Automation
25790
+ "/nl": {
25791
+ name: "/nl",
25792
+ description: "Natural language command translation - Convert plain English to executable commands (POC)",
25793
+ category: "workflow",
25794
+ usage: '/nl "<natural language description>" [options]',
25795
+ examples: [
25796
+ '/nl "commit my changes and run tests"',
25797
+ '/nl "fix typescript errors" --dry-run',
25798
+ '/nl "show system status" --explain'
25799
+ ]
25800
+ },
25471
25801
  "/chain": {
25472
25802
  name: "/chain",
25473
25803
  description: "Execute command chains",
@@ -26131,6 +26461,65 @@ var init_command_groups = __esm({
26131
26461
  "/design web --profile=landing --a11y --perf",
26132
26462
  "/design web --profile=site --out ./docs/web-sow.md"
26133
26463
  ]
26464
+ },
26465
+ // POC Commands (Production Ready)
26466
+ "/nl-poc": {
26467
+ name: "/nl-poc",
26468
+ description: "Natural Language Command Translation (POC #1) - Production ready with 0.2ms response time",
26469
+ category: "workflow",
26470
+ usage: '/nl-poc "<natural language description>" [options]',
26471
+ examples: [
26472
+ '/nl-poc "commit my changes and run tests"',
26473
+ '/nl-poc "fix typescript errors" --dry-run',
26474
+ '/nl-poc "show system status" --explain --verbose'
26475
+ ]
26476
+ },
26477
+ "/bug-poc": {
26478
+ name: "/bug-poc",
26479
+ description: "AI-powered error analysis and solution system (POC #4) - 80% accuracy, 0.2ms response time",
26480
+ category: "quality",
26481
+ usage: '/bug-poc "<error message>" [options]',
26482
+ examples: [
26483
+ `/bug-poc "Property 'name' does not exist on type 'User'"`,
26484
+ `/bug-poc "Cannot read property 'id' of undefined" --file src/user.ts`,
26485
+ "/bug-poc --from-output --verbose",
26486
+ "/bug-poc --solution-id typescript-fix-0 --dry-run"
26487
+ ]
26488
+ },
26489
+ // Intelligence System Commands
26490
+ "/intelligence-dashboard": {
26491
+ name: "/intelligence-dashboard",
26492
+ description: "Start real-time MARIA Intelligence monitoring dashboard",
26493
+ category: "intelligence",
26494
+ usage: "/intelligence-dashboard [--format=ascii|html|json] [--duration=<minutes>] [--export=<file>]",
26495
+ examples: [
26496
+ "/intelligence-dashboard",
26497
+ "/intelligence-dashboard --format html --export report.html",
26498
+ "/intelligence-dashboard --duration 5 --format ascii"
26499
+ ]
26500
+ },
26501
+ "/canary": {
26502
+ name: "/canary",
26503
+ description: "Manage MARIA Intelligence canary deployments for zero-downtime releases",
26504
+ category: "intelligence",
26505
+ usage: "/canary <action> [options]",
26506
+ examples: [
26507
+ "/canary deploy v4.2.0 --traffic 20 --duration 15",
26508
+ "/canary status",
26509
+ "/canary stop",
26510
+ "/canary test"
26511
+ ]
26512
+ },
26513
+ "/quality-gate": {
26514
+ name: "/quality-gate",
26515
+ description: "Run MARIA Intelligence quality gate validation with automated testing",
26516
+ category: "intelligence",
26517
+ usage: "/quality-gate [--threshold=<score>] [--verbose] [--report=<file>]",
26518
+ examples: [
26519
+ "/quality-gate",
26520
+ "/quality-gate --threshold 85 --verbose",
26521
+ "/quality-gate --report results.json"
26522
+ ]
26134
26523
  }
26135
26524
  };
26136
26525
  _normToken = (s2) => s2.trim().toLowerCase();
@@ -26750,10 +27139,7 @@ var LEGACY_COMMANDS;
26750
27139
  var init_legacy_shield = __esm({
26751
27140
  "src/slash-commands/shared/legacy-shield.ts"() {
26752
27141
  LEGACY_COMMANDS = /* @__PURE__ */ new Set([
26753
- "/battlecard",
26754
- "/sales-dashboard",
26755
- "/status",
26756
- "/doctor"
27142
+ // Currently no legacy commands - all have been migrated
26757
27143
  ]);
26758
27144
  }
26759
27145
  });
@@ -27329,9 +27715,334 @@ var init_quick_persistence = __esm({
27329
27715
  }
27330
27716
  });
27331
27717
 
27718
+ // src/services/telemetry/bigquery-telemetry.ts
27719
+ async function loadBigQuery() {
27720
+ if (bigQueryLoadAttempted) return BigQuery;
27721
+ bigQueryLoadAttempted = true;
27722
+ try {
27723
+ const bigqueryModule = await import("@google-cloud/bigquery");
27724
+ BigQuery = bigqueryModule.BigQuery;
27725
+ } catch {
27726
+ }
27727
+ return BigQuery;
27728
+ }
27729
+ var import_events, BigQuery, bigQueryLoadAttempted, BigQueryTelemetryService, bigQueryTelemetry;
27730
+ var init_bigquery_telemetry = __esm({
27731
+ "src/services/telemetry/bigquery-telemetry.ts"() {
27732
+ import_events = require("events");
27733
+ BigQuery = null;
27734
+ bigQueryLoadAttempted = false;
27735
+ BigQueryTelemetryService = class _BigQueryTelemetryService extends import_events.EventEmitter {
27736
+ static instance;
27737
+ bigquery = null;
27738
+ telemetryQueue = [];
27739
+ flushTimer = null;
27740
+ isEnabled;
27741
+ httpEndpoint = null;
27742
+ config = {
27743
+ projectId: process.env.GOOGLE_CLOUD_PROJECT || "maria-code-470602",
27744
+ datasetId: "cli",
27745
+ tableName: "command_executions",
27746
+ batchSize: 100,
27747
+ flushIntervalMs: 3e4,
27748
+ // 30 seconds
27749
+ maxRetries: 3
27750
+ };
27751
+ constructor() {
27752
+ super();
27753
+ this.isEnabled = process.env.TELEMETRY_DISABLED !== "true";
27754
+ this.httpEndpoint = process.env.TELEMETRY_ENDPOINT || null;
27755
+ if (this.isEnabled) {
27756
+ this.initialize().catch((error2) => {
27757
+ console.error("[Telemetry] Initialization error:", error2);
27758
+ });
27759
+ }
27760
+ }
27761
+ /**
27762
+ * Get singleton instance
27763
+ */
27764
+ static getInstance() {
27765
+ if (!_BigQueryTelemetryService.instance) {
27766
+ _BigQueryTelemetryService.instance = new _BigQueryTelemetryService();
27767
+ }
27768
+ return _BigQueryTelemetryService.instance;
27769
+ }
27770
+ /**
27771
+ * Initialize BigQuery client or HTTP fallback
27772
+ */
27773
+ async initialize() {
27774
+ const LoadedBigQuery = await loadBigQuery();
27775
+ if (LoadedBigQuery && this.config.projectId) {
27776
+ try {
27777
+ this.bigquery = new LoadedBigQuery({
27778
+ projectId: this.config.projectId,
27779
+ keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS
27780
+ });
27781
+ console.log("[Telemetry] BigQuery client initialized");
27782
+ } catch (error2) {
27783
+ console.error("[Telemetry] Failed to initialize BigQuery:", error2);
27784
+ }
27785
+ }
27786
+ this.startFlushTimer();
27787
+ this.setupGracefulShutdown();
27788
+ }
27789
+ /**
27790
+ * Track command execution
27791
+ */
27792
+ async trackCommandExecution(data2) {
27793
+ if (!this.isEnabled) return;
27794
+ const telemetryData = {
27795
+ ...data2,
27796
+ timestamp: (/* @__PURE__ */ new Date()).toISOString(),
27797
+ version: process.env.npm_package_version || process.env.CLI_VERSION,
27798
+ environment: process.env.NODE_ENV || "production",
27799
+ buildId: process.env.BUILD_ID,
27800
+ region: process.env.REGION,
27801
+ // Limit args to 3 for privacy
27802
+ args: data2.args?.slice(0, 3)
27803
+ };
27804
+ this.telemetryQueue.push(telemetryData);
27805
+ this.emit("command:tracked", telemetryData);
27806
+ if (this.telemetryQueue.length >= this.config.batchSize) {
27807
+ await this.flush();
27808
+ }
27809
+ }
27810
+ /**
27811
+ * Flush telemetry data to BigQuery or HTTP endpoint
27812
+ */
27813
+ async flush() {
27814
+ if (this.telemetryQueue.length === 0) return;
27815
+ const dataToFlush = [...this.telemetryQueue];
27816
+ this.telemetryQueue = [];
27817
+ try {
27818
+ if (this.bigquery) {
27819
+ await this.flushToBigQuery(dataToFlush);
27820
+ } else if (this.httpEndpoint) {
27821
+ await this.flushToHttpEndpoint(dataToFlush);
27822
+ } else {
27823
+ console.debug(`[Telemetry] Discarding ${dataToFlush.length} events (no backend)`);
27824
+ }
27825
+ } catch (error2) {
27826
+ console.error("[Telemetry] Flush failed:", error2);
27827
+ if (this.telemetryQueue.length < this.config.batchSize * 2) {
27828
+ this.telemetryQueue = [...dataToFlush, ...this.telemetryQueue];
27829
+ }
27830
+ }
27831
+ }
27832
+ /**
27833
+ * Flush data to BigQuery
27834
+ */
27835
+ async flushToBigQuery(data2) {
27836
+ if (!this.bigquery) return;
27837
+ const dataset = this.bigquery.dataset(this.config.datasetId);
27838
+ const table = dataset.table(this.config.tableName);
27839
+ const rows = data2.map((item) => ({
27840
+ cmd: item.cmd,
27841
+ status: item.status,
27842
+ latencyMs: item.latencyMs,
27843
+ plan: item.plan,
27844
+ quotaLeft: item.quotaLeft || null,
27845
+ errorType: item.errorType || null,
27846
+ args: item.args || [],
27847
+ timestamp: item.timestamp,
27848
+ version: item.version || null,
27849
+ environment: item.environment || null,
27850
+ buildId: item.buildId || null,
27851
+ region: item.region || null
27852
+ }));
27853
+ let retries = 0;
27854
+ while (retries < this.config.maxRetries) {
27855
+ try {
27856
+ await table.insert(rows, {
27857
+ ignoreUnknownValues: true,
27858
+ skipInvalidRows: false
27859
+ });
27860
+ console.log(`[Telemetry] Flushed ${rows.length} events to BigQuery`);
27861
+ return;
27862
+ } catch (error2) {
27863
+ retries++;
27864
+ if (retries >= this.config.maxRetries) {
27865
+ throw error2;
27866
+ }
27867
+ await new Promise((resolve4) => setTimeout(resolve4, Math.pow(2, retries) * 1e3));
27868
+ }
27869
+ }
27870
+ }
27871
+ /**
27872
+ * Flush data to HTTP endpoint (fallback)
27873
+ */
27874
+ async flushToHttpEndpoint(data2) {
27875
+ if (!this.httpEndpoint) return;
27876
+ const response2 = await fetch(this.httpEndpoint, {
27877
+ method: "POST",
27878
+ headers: {
27879
+ "Content-Type": "application/json",
27880
+ "X-Telemetry-Version": "1.0",
27881
+ "X-CLI-Version": process.env.npm_package_version || "unknown"
27882
+ },
27883
+ body: JSON.stringify({
27884
+ events: data2,
27885
+ metadata: {
27886
+ flushTime: (/* @__PURE__ */ new Date()).toISOString(),
27887
+ eventCount: data2.length
27888
+ }
27889
+ })
27890
+ }).catch((error2) => {
27891
+ console.error("[Telemetry] HTTP flush failed:", error2);
27892
+ throw error2;
27893
+ });
27894
+ if (!response2.ok) {
27895
+ throw new Error(`HTTP flush failed: ${response2.status}`);
27896
+ }
27897
+ console.log(`[Telemetry] Flushed ${data2.length} events via HTTP`);
27898
+ }
27899
+ /**
27900
+ * Start flush timer
27901
+ */
27902
+ startFlushTimer() {
27903
+ if (this.flushTimer) return;
27904
+ this.flushTimer = setInterval(() => {
27905
+ this.flush().catch((error2) => {
27906
+ console.error("[Telemetry] Timer flush failed:", error2);
27907
+ });
27908
+ }, this.config.flushIntervalMs);
27909
+ }
27910
+ /**
27911
+ * Stop flush timer
27912
+ */
27913
+ stopFlushTimer() {
27914
+ if (this.flushTimer) {
27915
+ clearInterval(this.flushTimer);
27916
+ this.flushTimer = null;
27917
+ }
27918
+ }
27919
+ /**
27920
+ * Setup graceful shutdown
27921
+ */
27922
+ setupGracefulShutdown() {
27923
+ const shutdown = async () => {
27924
+ console.log("[Telemetry] Shutting down...");
27925
+ this.stopFlushTimer();
27926
+ await this.flush();
27927
+ process.exit(0);
27928
+ };
27929
+ process.on("SIGINT", shutdown);
27930
+ process.on("SIGTERM", shutdown);
27931
+ }
27932
+ /**
27933
+ * Get analytics queries for dashboard
27934
+ */
27935
+ getAnalyticsQueries() {
27936
+ const dataset = `${this.config.projectId}.${this.config.datasetId}`;
27937
+ const table = `${dataset}.${this.config.tableName}`;
27938
+ return {
27939
+ topErrorCommands: `
27940
+ SELECT
27941
+ cmd,
27942
+ COUNT(*) as total_executions,
27943
+ COUNTIF(status = 'error') as error_count,
27944
+ ROUND(COUNTIF(status = 'error') * 100.0 / COUNT(*), 2) as error_rate_pct,
27945
+ STRING_AGG(DISTINCT errorType ORDER BY errorType) as error_types
27946
+ FROM \`${table}\`
27947
+ WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
27948
+ GROUP BY cmd
27949
+ HAVING error_count > 0
27950
+ ORDER BY error_rate_pct DESC
27951
+ LIMIT 10
27952
+ `,
27953
+ p95LatencyByCommand: `
27954
+ SELECT
27955
+ cmd,
27956
+ COUNT(*) as executions,
27957
+ ROUND(AVG(latencyMs), 1) as avg_latency_ms,
27958
+ ROUND(APPROX_QUANTILES(latencyMs, 100)[OFFSET(50)], 1) as p50_latency_ms,
27959
+ ROUND(APPROX_QUANTILES(latencyMs, 100)[OFFSET(95)], 1) as p95_latency_ms,
27960
+ ROUND(MAX(latencyMs), 1) as max_latency_ms
27961
+ FROM \`${table}\`
27962
+ WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
27963
+ AND status = 'success'
27964
+ GROUP BY cmd
27965
+ ORDER BY p95_latency_ms DESC
27966
+ LIMIT 15
27967
+ `,
27968
+ rateLimitAnalysis: `
27969
+ SELECT
27970
+ DATE(timestamp) as date,
27971
+ COUNT(*) as total_requests,
27972
+ COUNTIF(status = 'rate_limited') as rate_limited_count,
27973
+ ROUND(COUNTIF(status = 'rate_limited') * 100.0 / COUNT(*), 2) as rate_limit_pct,
27974
+ COUNT(DISTINCT cmd) as unique_commands_hit
27975
+ FROM \`${table}\`
27976
+ WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 14 DAY)
27977
+ GROUP BY date
27978
+ ORDER BY date DESC
27979
+ `,
27980
+ planUsageDistribution: `
27981
+ SELECT
27982
+ plan,
27983
+ COUNT(*) as executions,
27984
+ COUNT(DISTINCT cmd) as unique_commands,
27985
+ ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER(), 2) as execution_share_pct,
27986
+ ROUND(AVG(quotaLeft), 0) as avg_quota_remaining
27987
+ FROM \`${table}\`
27988
+ WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
27989
+ GROUP BY plan
27990
+ ORDER BY executions DESC
27991
+ `,
27992
+ cliVersionHealth: `
27993
+ SELECT
27994
+ version,
27995
+ COUNT(*) as total_executions,
27996
+ COUNTIF(status = 'success') as success_count,
27997
+ COUNTIF(status = 'error') as error_count,
27998
+ ROUND(COUNTIF(status = 'error') * 100.0 / COUNT(*), 2) as error_rate_pct,
27999
+ MIN(timestamp) as first_seen,
28000
+ MAX(timestamp) as last_seen
28001
+ FROM \`${table}\`
28002
+ WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
28003
+ GROUP BY version
28004
+ ORDER BY first_seen DESC
28005
+ LIMIT 5
28006
+ `
28007
+ };
28008
+ }
28009
+ /**
28010
+ * Check if telemetry is enabled
28011
+ */
28012
+ isActive() {
28013
+ return this.isEnabled;
28014
+ }
28015
+ /**
28016
+ * Disable telemetry
28017
+ */
28018
+ disable() {
28019
+ this.isEnabled = false;
28020
+ this.stopFlushTimer();
28021
+ }
28022
+ /**
28023
+ * Enable telemetry
28024
+ */
28025
+ enable() {
28026
+ this.isEnabled = true;
28027
+ this.startFlushTimer();
28028
+ }
28029
+ };
28030
+ bigQueryTelemetry = BigQueryTelemetryService.getInstance();
28031
+ }
28032
+ });
28033
+
27332
28034
  // src/slash-commands/shared/telemetry-helper.ts
27333
28035
  async function trackCommand(data2) {
27334
28036
  try {
28037
+ await bigQueryTelemetry.trackCommandExecution({
28038
+ cmd: data2.cmd,
28039
+ status: data2.status,
28040
+ latencyMs: data2.latencyMs,
28041
+ plan: data2.plan,
28042
+ quotaLeft: data2.quotaLeft,
28043
+ errorType: data2.errorType,
28044
+ args: data2.args
28045
+ });
27335
28046
  fetch("/v1/telemetry", {
27336
28047
  method: "POST",
27337
28048
  headers: { "Content-Type": "application/json" },
@@ -27361,6 +28072,7 @@ function getNextMonthStart() {
27361
28072
  }
27362
28073
  var init_telemetry_helper = __esm({
27363
28074
  "src/slash-commands/shared/telemetry-helper.ts"() {
28075
+ init_bigquery_telemetry();
27364
28076
  }
27365
28077
  });
27366
28078
 
@@ -28064,9 +28776,9 @@ var init_SlashCommandManager = __esm({
28064
28776
  "/exit": true,
28065
28777
  // ✅ Phase 4 - Core commands migrated
28066
28778
  "/status": true,
28067
- // ✅ Phase 2 - V2 stub implemented
28779
+ // ✅ Phase 2 - standard stub implemented
28068
28780
  "/doctor": true,
28069
- // ✅ Phase 2 - V2 stub implemented
28781
+ // ✅ Phase 2 - standard stub implemented
28070
28782
  "/config": true,
28071
28783
  // ✅ Configuration commands migrated
28072
28784
  "/model": true,
@@ -28974,13 +29686,14 @@ __export(HelpCommand_exports, {
28974
29686
  HelpCommand: () => HelpCommand,
28975
29687
  meta: () => meta
28976
29688
  });
28977
- var HelpCommand, meta;
29689
+ var import_chalk17, HelpCommand, meta;
28978
29690
  var init_HelpCommand = __esm({
28979
29691
  "src/slash-commands/categories/core/handlers/HelpCommand.ts"() {
28980
29692
  init_base_command();
28981
29693
  init_ReadyCommandsService();
28982
29694
  init_telemetry_helper();
28983
29695
  init_subscription_manager();
29696
+ import_chalk17 = __toESM(require("chalk"), 1);
28984
29697
  HelpCommand = class extends BaseCommand {
28985
29698
  name = "help";
28986
29699
  category = "core";
@@ -29095,9 +29808,9 @@ var init_HelpCommand = __esm({
29095
29808
  const stats = await this.readyService.getStatistics();
29096
29809
  const lines = [];
29097
29810
  lines.push("\u2550".repeat(60));
29098
- lines.push("**" + stats.totalReady + " READY Commands** | **" + stats.categoriesCount + " Categories**");
29811
+ lines.push(import_chalk17.default.bold(`${stats.totalReady} READY Commands | ${stats.categoriesCount} Categories`));
29099
29812
  lines.push("");
29100
- lines.push("**Quick Access:**");
29813
+ lines.push(import_chalk17.default.bold("Quick Access:"));
29101
29814
  lines.push(" /help <command> - Detailed help for specific command");
29102
29815
  lines.push(" /help --quickstart - Essential commands for new users");
29103
29816
  lines.push(" /help --stats - Performance statistics");
@@ -29112,22 +29825,19 @@ var init_HelpCommand = __esm({
29112
29825
  }
29113
29826
  globalMaxNameLength = Math.max(globalMaxNameLength, 18) + 1;
29114
29827
  for (const category of categories) {
29115
- lines.push(`**${category.name.toUpperCase()} (${category.count})**`);
29828
+ lines.push(import_chalk17.default.bold(`${category.name.toUpperCase()} (${category.count})`));
29116
29829
  const showCommands = category.commands.slice(0, 4);
29117
29830
  for (const cmd of showCommands) {
29118
29831
  const needsGpu = this.hasGpuRequirement(cmd.description);
29119
29832
  let description = cmd.description;
29833
+ description = description.replace(
29834
+ /\*GPU needed - Local LLM only \(Pro\+ members only\)/g,
29835
+ ""
29836
+ ).trim();
29837
+ const paddedName = `/${cmd.name}`.padEnd(globalMaxNameLength);
29838
+ lines.push(` ${paddedName} - ${description}`);
29120
29839
  if (needsGpu) {
29121
- description = description.replace(
29122
- /\*GPU needed - Local LLM only \(Pro\+ members only\)/g,
29123
- ""
29124
- ).trim();
29125
- const paddedName = `/${cmd.name}`.padEnd(globalMaxNameLength + 5);
29126
- lines.push(` ${paddedName} - ${description}`);
29127
- lines.push(` *GPU needed - Local LLM (Pro+ only)`);
29128
- } else {
29129
- const paddedName = `/${cmd.name}`.padEnd(globalMaxNameLength + 5);
29130
- lines.push(` ${paddedName} - ${description}`);
29840
+ lines.push(` GPU needed - Local LLM (Pro+ only)`);
29131
29841
  }
29132
29842
  }
29133
29843
  if (category.count > 4) {
@@ -29135,7 +29845,7 @@ var init_HelpCommand = __esm({
29135
29845
  }
29136
29846
  lines.push("");
29137
29847
  }
29138
- lines.push("**Pro Tips:**");
29848
+ lines.push(import_chalk17.default.bold("Pro Tips:"));
29139
29849
  lines.push(" \u2022 All listed commands are production-ready");
29140
29850
  lines.push(" \u2022 Use fuzzy search: /help --search confi \u2192 finds /config");
29141
29851
  lines.push(" \u2022 Categories ordered by importance");
@@ -29174,33 +29884,33 @@ var init_HelpCommand = __esm({
29174
29884
  formatCommandHelp(command) {
29175
29885
  const lines = [];
29176
29886
  lines.push("");
29177
- lines.push(`\u{1F4D6} **/${command.name}** - ${command.description}`);
29887
+ lines.push(`\u{1F4D6} ${import_chalk17.default.bold(`/${command.name}`)} - ${command.description}`);
29178
29888
  lines.push("\u2550".repeat(50));
29179
29889
  lines.push("");
29180
- lines.push("**\u2139\uFE0F Information:**");
29890
+ lines.push(import_chalk17.default.bold("\u2139\uFE0F Information:"));
29181
29891
  lines.push(` Category: ${this.readyService["getCategoryEmoji"](command.category)} ${command.category}`);
29182
29892
  lines.push(` Status: \u2705 READY (contract validated)`);
29183
29893
  if (command.aliases && command.aliases.length > 0) {
29184
29894
  lines.push(` Aliases: ${command.aliases.map((a2) => `/${a2}`).join(", ")}`);
29185
29895
  }
29186
29896
  lines.push("");
29187
- lines.push("**\u{1F3AF} Usage:**");
29897
+ lines.push(import_chalk17.default.bold("\u{1F3AF} Usage:"));
29188
29898
  lines.push(` ${command.usage}`);
29189
29899
  lines.push("");
29190
- lines.push("**\u{1F4CB} Contract Validation:**");
29900
+ lines.push(import_chalk17.default.bold("\u{1F4CB} Contract Validation:"));
29191
29901
  lines.push(` \u26A1 Performance: ${command.contract.maxResponseTime}ms (tested)`);
29192
29902
  lines.push(` \u{1F4BB} TTY Mode: ${command.contract.tty ? "\u2705 Supported" : "\u274C Not supported"}`);
29193
29903
  lines.push(` \u{1F527} Non-TTY Mode: ${command.contract.nonTty ? "\u2705 Supported" : "\u274C Not supported"}`);
29194
29904
  lines.push(` \u{1F500} Pipe Mode: ${command.contract.pipe ? "\u2705 Supported" : "\u274C Not supported"}`);
29195
29905
  lines.push("");
29196
29906
  if (command.examples && command.examples.length > 0) {
29197
- lines.push("**\u{1F4DD} Examples:**");
29907
+ lines.push(import_chalk17.default.bold("\u{1F4DD} Examples:"));
29198
29908
  for (const example of command.examples) {
29199
29909
  lines.push(` ${example}`);
29200
29910
  }
29201
29911
  lines.push("");
29202
29912
  }
29203
- lines.push("**\u{1F4A1} Quick Tips:**");
29913
+ lines.push(import_chalk17.default.bold("\u{1F4A1} Quick Tips:"));
29204
29914
  lines.push(` \u2022 This command is production-ready and fully tested`);
29205
29915
  lines.push(` \u2022 Try /${command.name} --help for additional options`);
29206
29916
  if (command.category !== "core") {
@@ -29251,31 +29961,18 @@ var init_HelpCommand = __esm({
29251
29961
  };
29252
29962
  const emoji = emojiMap[categoryName.toLowerCase()] || "\u{1F4CB}";
29253
29963
  lines.push("");
29254
- lines.push(`${emoji} **${categoryName.toUpperCase()} COMMANDS** (${commands.length} READY)`);
29964
+ lines.push(`${emoji} ${import_chalk17.default.bold(categoryName.toUpperCase() + " COMMANDS")} (${commands.length} READY)`);
29255
29965
  lines.push("\u2550".repeat(50));
29256
29966
  lines.push("");
29257
- const responseTimes = commands.map((c) => c.contract.maxResponseTime);
29258
- const avgTime = Math.round(responseTimes.reduce((a2, b) => a2 + b, 0) / responseTimes.length);
29259
- const minTime = Math.min(...responseTimes);
29260
- const maxTime = Math.max(...responseTimes);
29261
- lines.push(`**\u{1F4CA} Performance:** ${avgTime}ms avg (${minTime}-${maxTime}ms range)`);
29262
- lines.push("");
29967
+ const maxNameLength = Math.max(...commands.map((c) => c.name.length)) + 1;
29263
29968
  for (const command of commands) {
29264
- lines.push(`**/${command.name}** [${command.contract.maxResponseTime}ms]`);
29265
- lines.push(` ${command.description}`);
29969
+ const paddedName = `/${command.name}`.padEnd(maxNameLength + 8);
29970
+ lines.push(` ${paddedName} - ${command.description}`);
29266
29971
  if (command.aliases && command.aliases.length > 0) {
29267
- lines.push(` Aliases: ${command.aliases.map((a2) => `/${a2}`).join(", ")}`);
29268
- }
29269
- const compat = [
29270
- command.contract.tty ? "\u{1F4BB}" : "",
29271
- command.contract.nonTty ? "\u{1F527}" : "",
29272
- command.contract.pipe ? "\u{1F500}" : ""
29273
- ].filter(Boolean).join(" ");
29274
- if (compat) {
29275
- lines.push(` Modes: ${compat}`);
29972
+ lines.push(` Aliases: ${command.aliases.map((a2) => `/${a2}`).join(", ")}`);
29276
29973
  }
29277
- lines.push("");
29278
29974
  }
29975
+ lines.push("");
29279
29976
  return lines.join("\n");
29280
29977
  }
29281
29978
  /**
@@ -29298,20 +29995,20 @@ var init_HelpCommand = __esm({
29298
29995
  formatSearchResults(searchTerm, results) {
29299
29996
  const lines = [];
29300
29997
  lines.push("");
29301
- lines.push(`\u{1F50D} **SEARCH RESULTS** for "${searchTerm}" (${results.length} matches)`);
29998
+ lines.push(`\u{1F50D} ${import_chalk17.default.bold("SEARCH RESULTS")} for "${searchTerm}" (${results.length} matches)`);
29302
29999
  lines.push("\u2550".repeat(50));
29303
30000
  lines.push("");
29304
30001
  for (const result of results) {
29305
30002
  const cmd = result.command;
29306
30003
  const matchInfo = `[${result.matchScore}] ${result.matchReasons[0] || "match"}`;
29307
- lines.push(`**/${cmd.name}** (${cmd.category}) ${matchInfo}`);
29308
- lines.push(` ${cmd.description} [${cmd.contract.maxResponseTime}ms]`);
30004
+ lines.push(`/${cmd.name} (${cmd.category}) ${matchInfo}`);
30005
+ lines.push(` ${cmd.description}`);
29309
30006
  if (result.matchReasons.length > 1) {
29310
30007
  lines.push(` Matches: ${result.matchReasons.join(", ")}`);
29311
30008
  }
29312
30009
  lines.push("");
29313
30010
  }
29314
- lines.push("**\u{1F4A1} Tip:** Higher scores indicate better matches");
30011
+ lines.push(import_chalk17.default.bold("\u{1F4A1} Tip:") + " Higher scores indicate better matches");
29315
30012
  lines.push("");
29316
30013
  return lines.join("\n");
29317
30014
  }
@@ -29322,38 +30019,38 @@ var init_HelpCommand = __esm({
29322
30019
  const quickCommands = await this.readyService.getQuickStartCommands();
29323
30020
  const lines = [];
29324
30021
  lines.push("");
29325
- lines.push("\u{1F680} **MARIA QUICKSTART** - Essential Commands");
30022
+ lines.push(`\u{1F680} ${import_chalk17.default.bold("MARIA QUICKSTART")} - Essential Commands`);
29326
30023
  lines.push("\u2550".repeat(50));
29327
30024
  lines.push("");
29328
- lines.push("**\u{1F3AF} Get Started in 3 Steps:**");
30025
+ lines.push(import_chalk17.default.bold("\u{1F3AF} Get Started in 3 Steps:"));
29329
30026
  lines.push("");
29330
- lines.push("**1\uFE0F\u20E3 Configure Your AI Provider**");
30027
+ lines.push(import_chalk17.default.bold("1\uFE0F\u20E3 Configure Your AI Provider"));
29331
30028
  const modelCmd = quickCommands.find((c) => c.name === "model");
29332
30029
  if (modelCmd) {
29333
30030
  lines.push(` /${modelCmd.name} - ${modelCmd.description}`);
29334
30031
  lines.push(` Try: /model set provider=openai key=sk-...`);
29335
30032
  }
29336
30033
  lines.push("");
29337
- lines.push("**2\uFE0F\u20E3 Check System Status**");
30034
+ lines.push(import_chalk17.default.bold("2\uFE0F\u20E3 Check System Status"));
29338
30035
  const statusCmd = quickCommands.find((c) => c.name === "status");
29339
30036
  if (statusCmd) {
29340
30037
  lines.push(` /${statusCmd.name} - ${statusCmd.description}`);
29341
30038
  lines.push(` Try: /status`);
29342
30039
  }
29343
30040
  lines.push("");
29344
- lines.push("**3\uFE0F\u20E3 Start Coding**");
30041
+ lines.push(import_chalk17.default.bold("3\uFE0F\u20E3 Start Coding"));
29345
30042
  const codeCmd = quickCommands.find((c) => c.name === "code");
29346
30043
  if (codeCmd) {
29347
30044
  lines.push(` /${codeCmd.name} - ${codeCmd.description}`);
29348
30045
  lines.push(` Try: /code create a hello world function`);
29349
30046
  }
29350
30047
  lines.push("");
29351
- lines.push("**\u{1F527} Essential Commands:**");
30048
+ lines.push(import_chalk17.default.bold("\u{1F527} Essential Commands:"));
29352
30049
  for (const cmd of quickCommands) {
29353
- lines.push(` /${cmd.name.padEnd(12)} - ${cmd.description} [${cmd.contract.maxResponseTime}ms]`);
30050
+ lines.push(` /${cmd.name.padEnd(12)} - ${cmd.description}`);
29354
30051
  }
29355
30052
  lines.push("");
29356
- lines.push("**\u{1F4A1} Next Steps:**");
30053
+ lines.push(import_chalk17.default.bold("\u{1F4A1} Next Steps:"));
29357
30054
  lines.push(" \u2022 /help --category <name> - Explore command categories");
29358
30055
  lines.push(" \u2022 /help --search <term> - Find specific functionality");
29359
30056
  lines.push(" \u2022 /help <command> - Get detailed command help");
@@ -29368,20 +30065,20 @@ var init_HelpCommand = __esm({
29368
30065
  const categories = await this.readyService.getCategories();
29369
30066
  const lines = [];
29370
30067
  lines.push("");
29371
- lines.push("\u{1F4CA} **READY COMMANDS STATISTICS**");
30068
+ lines.push(`\u{1F4CA} ${import_chalk17.default.bold("READY COMMANDS STATISTICS")}`);
29372
30069
  lines.push("\u2550".repeat(40));
29373
30070
  lines.push("");
29374
- lines.push("**\u{1F3AF} Overall:**");
30071
+ lines.push(import_chalk17.default.bold("\u{1F3AF} Overall:"));
29375
30072
  lines.push(` Total READY Commands: ${stats.totalReady}`);
29376
30073
  lines.push(` Categories: ${stats.categoriesCount}`);
29377
30074
  lines.push(` Last Updated: ${stats.lastUpdated?.toLocaleString() || "Unknown"}`);
29378
30075
  lines.push("");
29379
- lines.push("**\u26A1 Performance:**");
30076
+ lines.push(import_chalk17.default.bold("\u26A1 Performance:"));
29380
30077
  lines.push(` Average Response Time: ${stats.avgResponseTime}ms`);
29381
30078
  lines.push(` Fastest Command: /${stats.fastestCommand}`);
29382
30079
  lines.push(` Slowest Command: /${stats.slowestCommand}`);
29383
30080
  lines.push("");
29384
- lines.push("**\u{1F4CB} By Category:**");
30081
+ lines.push(import_chalk17.default.bold("\u{1F4CB} By Category:"));
29385
30082
  for (const category of categories) {
29386
30083
  const avgTime = Math.round(
29387
30084
  category.commands.reduce((sum, cmd) => sum + cmd.contract.maxResponseTime, 0) / category.commands.length
@@ -29389,7 +30086,7 @@ var init_HelpCommand = __esm({
29389
30086
  lines.push(` ${category.emoji} ${category.name.padEnd(15)}: ${category.count.toString().padStart(2)} commands (${avgTime}ms avg)`);
29390
30087
  }
29391
30088
  lines.push("");
29392
- lines.push("**\u2705 Contract Validation:**");
30089
+ lines.push(import_chalk17.default.bold("\u2705 Contract Validation:"));
29393
30090
  lines.push(" All commands tested for:");
29394
30091
  lines.push(" \u2022 Basic execution without crashes");
29395
30092
  lines.push(" \u2022 TTY/non-TTY/pipe compatibility");
@@ -29606,11 +30303,11 @@ var init_LoginCommand = __esm({
29606
30303
  });
29607
30304
 
29608
30305
  // src/services/model-selector-ui.ts
29609
- var readline4, import_chalk17, ModelSelectorUI;
30306
+ var readline4, import_chalk18, ModelSelectorUI;
29610
30307
  var init_model_selector_ui = __esm({
29611
30308
  "src/services/model-selector-ui.ts"() {
29612
30309
  readline4 = __toESM(require("readline"), 1);
29613
- import_chalk17 = __toESM(require("chalk"), 1);
30310
+ import_chalk18 = __toESM(require("chalk"), 1);
29614
30311
  ModelSelectorUI = class {
29615
30312
  models = [];
29616
30313
  selectedIndex = 0;
@@ -29637,7 +30334,7 @@ var init_model_selector_ui = __esm({
29637
30334
  output: process.stdout,
29638
30335
  terminal: true
29639
30336
  });
29640
- console.log(import_chalk17.default.green(
30337
+ console.log(import_chalk18.default.green(
29641
30338
  "\u250C\u2500[ MODEL MATRIX ]\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510"
29642
30339
  ));
29643
30340
  process.stdout.write("\x1B7");
@@ -29705,14 +30402,14 @@ var init_model_selector_ui = __esm({
29705
30402
  }
29706
30403
  renderFromSavedPosition() {
29707
30404
  if (this.isDestroyed) return;
29708
- console.log(import_chalk17.default.green(
29709
- "\u2502 " + import_chalk17.default.greenBright("SELECT MODEL:") + " ".repeat(62) + "\u2502"
30405
+ console.log(import_chalk18.default.green(
30406
+ "\u2502 " + import_chalk18.default.greenBright("SELECT MODEL:") + " ".repeat(62) + "\u2502"
29710
30407
  ));
29711
30408
  this.renderContent();
29712
30409
  const scrollInfo = `[${this.selectedIndex + 1}/${this.models.length}]`;
29713
30410
  const helpText = `\u2193:NEXT \u2191:PREV ENTER:EXEC ESC:ABORT ${scrollInfo}`;
29714
- console.log(import_chalk17.default.green("\u2502 ") + import_chalk17.default.dim.green(helpText.padEnd(76)) + import_chalk17.default.green(" \u2502"));
29715
- console.log(import_chalk17.default.green(
30411
+ console.log(import_chalk18.default.green("\u2502 ") + import_chalk18.default.dim.green(helpText.padEnd(76)) + import_chalk18.default.green(" \u2502"));
30412
+ console.log(import_chalk18.default.green(
29716
30413
  "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"
29717
30414
  ));
29718
30415
  }
@@ -29753,19 +30450,19 @@ var init_model_selector_ui = __esm({
29753
30450
  const item = displayItems[i2];
29754
30451
  if (item.type === "group") {
29755
30452
  console.log(
29756
- import_chalk17.default.green("\u2502") + import_chalk17.default.dim.green(" \u2501\u2501\u2501 ") + import_chalk17.default.greenBright(item.content.substring(2, item.content.indexOf(" \u2500"))) + import_chalk17.default.dim.green(" " + "\u2501".repeat(71 - item.content.indexOf(" \u2500"))) + import_chalk17.default.green("\u2502")
30453
+ import_chalk18.default.green("\u2502") + import_chalk18.default.dim.green(" \u2501\u2501\u2501 ") + import_chalk18.default.greenBright(item.content.substring(2, item.content.indexOf(" \u2500"))) + import_chalk18.default.dim.green(" " + "\u2501".repeat(71 - item.content.indexOf(" \u2500"))) + import_chalk18.default.green("\u2502")
29757
30454
  );
29758
30455
  } else {
29759
30456
  const isSelected = item.modelIndex === this.selectedIndex;
29760
- const prefix = isSelected ? import_chalk17.default.greenBright("\u25B6 ") : " ";
30457
+ const prefix = isSelected ? import_chalk18.default.greenBright("\u25B6 ") : " ";
29761
30458
  const modelText = item.content;
29762
30459
  if (isSelected) {
29763
30460
  console.log(
29764
- import_chalk17.default.green("\u2502") + prefix + import_chalk17.default.black.bgGreen(modelText.padEnd(75)) + import_chalk17.default.green("\u2502")
30461
+ import_chalk18.default.green("\u2502") + prefix + import_chalk18.default.black.bgGreen(modelText.padEnd(75)) + import_chalk18.default.green("\u2502")
29765
30462
  );
29766
30463
  } else {
29767
30464
  console.log(
29768
- import_chalk17.default.green("\u2502") + prefix + import_chalk17.default.green(modelText.substring(0, 75).padEnd(75)) + import_chalk17.default.green("\u2502")
30465
+ import_chalk18.default.green("\u2502") + prefix + import_chalk18.default.green(modelText.substring(0, 75).padEnd(75)) + import_chalk18.default.green("\u2502")
29769
30466
  );
29770
30467
  }
29771
30468
  }
@@ -29836,7 +30533,7 @@ var init_ModelCommand = __esm({
29836
30533
  usage = "[list|set|info|test|benchmark|cost|current|recommend|ui|session|stats] [model-id] [options]";
29837
30534
  providerManager;
29838
30535
  configManager;
29839
- // V2 Progressive Enhancement Properties
30536
+ // standard Progressive Enhancement Properties
29840
30537
  isV2Enabled = false;
29841
30538
  advancedFeatures;
29842
30539
  examples = [
@@ -29861,7 +30558,7 @@ var init_ModelCommand = __esm({
29861
30558
  input: "/model list --provider openai",
29862
30559
  description: "List models from specific provider"
29863
30560
  },
29864
- // V2 Enhanced functionality (when enabled)
30561
+ // standard Enhanced functionality (when enabled)
29865
30562
  {
29866
30563
  input: "/model recommend --task code",
29867
30564
  description: "AI-powered model recommendations (v2)"
@@ -29889,26 +30586,26 @@ var init_ModelCommand = __esm({
29889
30586
  this.configManager = new ConfigManager();
29890
30587
  this.providerManager = getProviderManager();
29891
30588
  this.initializeV2Features().catch((error2) => {
29892
- logger.warn("V2 features initialization failed:", error2);
30589
+ logger.warn("standard features initialization failed:", error2);
29893
30590
  });
29894
30591
  }
29895
30592
  /**
29896
- * Initialize V2 features if enabled via feature flags (disabled for now)
30593
+ * Initialize standard features if enabled via feature flags (disabled for now)
29897
30594
  */
29898
30595
  async initializeV2Features() {
29899
30596
  try {
29900
30597
  this.isV2Enabled = false;
29901
- logger.debug("\u{1F4E6} ModelCommand running in V1 compatibility mode (V2 disabled)");
30598
+ logger.debug("\u{1F4E6} ModelCommand running in V1 compatibility mode (standard disabled)");
29902
30599
  } catch (error2) {
29903
- logger.warn("\u26A0\uFE0F V2 feature initialization failed, falling back to V1", error2);
30600
+ logger.warn("\u26A0\uFE0F standard feature initialization failed, falling back to V1", error2);
29904
30601
  this.isV2Enabled = false;
29905
30602
  }
29906
30603
  }
29907
30604
  /**
29908
- * Dynamically load V2 modules (disabled for now)
30605
+ * Dynamically load standard modules (disabled for now)
29909
30606
  */
29910
30607
  async loadAdvancedFeatures() {
29911
- logger.debug("V2 features disabled, skipping advanced feature loading");
30608
+ logger.debug("standard features disabled, skipping advanced feature loading");
29912
30609
  this.isV2Enabled = false;
29913
30610
  this.advancedFeatures = void 0;
29914
30611
  }
@@ -30291,10 +30988,10 @@ var init_ModelCommand = __esm({
30291
30988
  }
30292
30989
  }
30293
30990
  // ========================================
30294
- // V2 Progressive Enhancement Methods
30991
+ // standard Progressive Enhancement Methods
30295
30992
  // ========================================
30296
30993
  /**
30297
- * Determine if advanced V2 features should be used
30994
+ * Determine if advanced standard features should be used
30298
30995
  */
30299
30996
  shouldUseAdvanced(action, args) {
30300
30997
  if (!this.isV2Enabled) return false;
@@ -30304,12 +31001,12 @@ var init_ModelCommand = __esm({
30304
31001
  return false;
30305
31002
  }
30306
31003
  /**
30307
- * Execute advanced V2 features
31004
+ * Execute advanced standard features
30308
31005
  */
30309
31006
  async executeAdvanced(action, args, context2) {
30310
31007
  if (!this.advancedFeatures) {
30311
31008
  return this.error(
30312
- "V2 features are enabled but not available. Please check your installation.",
31009
+ "standard features are enabled but not available. Please check your installation.",
30313
31010
  "V2_UNAVAILABLE"
30314
31011
  );
30315
31012
  }
@@ -30324,12 +31021,12 @@ var init_ModelCommand = __esm({
30324
31021
  case "stats":
30325
31022
  return await this.executeStatistics(args, context2);
30326
31023
  default:
30327
- return this.error(`Unknown V2 action: ${action}`);
31024
+ return this.error(`Unknown standard action: ${action}`);
30328
31025
  }
30329
31026
  } catch (error2) {
30330
- logger.error("V2 feature execution failed:", error2);
31027
+ logger.error("standard feature execution failed:", error2);
30331
31028
  return this.error(
30332
- `V2 feature failed: ${error2 instanceof Error ? error2.message : "Unknown error"}`,
31029
+ `standard feature failed: ${error2 instanceof Error ? error2.message : "Unknown error"}`,
30333
31030
  "V2_EXECUTION_ERROR",
30334
31031
  error2
30335
31032
  );
@@ -32017,8 +32714,8 @@ async function loadServices() {
32017
32714
  try {
32018
32715
  const commandName = command.startsWith("/") ? command.slice(1) : command;
32019
32716
  if (commandName === "battlecard") {
32020
- console.log(import_chalk18.default.yellow("\u{1F512} /battlecard is not available on Free plan"));
32021
- console.log(import_chalk18.default.gray(" Join the waitlist for business features: https://maria-code.ai/waitlist"));
32717
+ console.log(import_chalk19.default.yellow("\u{1F512} /battlecard is not available on Free plan"));
32718
+ console.log(import_chalk19.default.gray(" Join the waitlist for business features: https://maria-code.ai/waitlist"));
32022
32719
  return {
32023
32720
  success: false,
32024
32721
  message: "Command not available on Free plan"
@@ -32079,7 +32776,7 @@ async function loadServices() {
32079
32776
  commandManager.setLegacyHandler(legacyHandlerAdapter);
32080
32777
  }
32081
32778
  } catch (e2) {
32082
- console.warn(import_chalk18.default.yellow("\u26A0 Some services unavailable, using fallbacks"));
32779
+ console.warn(import_chalk19.default.yellow("\u26A0 Some services unavailable, using fallbacks"));
32083
32780
  }
32084
32781
  }
32085
32782
  async function init() {
@@ -32193,20 +32890,20 @@ async function enforceAuth(cmd) {
32193
32890
  try {
32194
32891
  const tokens = await authManager.getValidTokens();
32195
32892
  if (!tokens) {
32196
- console.log(import_chalk18.default.red("\u{1F510} Authentication required \xB7 Run: maria /login"));
32893
+ console.log(import_chalk19.default.red("\u{1F510} Authentication required \xB7 Run: maria /login"));
32197
32894
  process.exit(2);
32198
32895
  return false;
32199
32896
  }
32200
32897
  return true;
32201
32898
  } catch (error2) {
32202
32899
  if (error2.code === "AUTH_REQUIRED") {
32203
- console.log(import_chalk18.default.red("\u{1F510} Authentication required \xB7 Run: maria /login"));
32900
+ console.log(import_chalk19.default.red("\u{1F510} Authentication required \xB7 Run: maria /login"));
32204
32901
  process.exit(2);
32205
32902
  } else if (error2.code === "REAUTH_REQUIRED") {
32206
- console.log(import_chalk18.default.yellow("\u{1F504} Please re-authenticate \xB7 Run: maria /login"));
32903
+ console.log(import_chalk19.default.yellow("\u{1F504} Please re-authenticate \xB7 Run: maria /login"));
32207
32904
  process.exit(2);
32208
32905
  } else {
32209
- console.log(import_chalk18.default.red("\u{1F310} Network error, check connection"));
32906
+ console.log(import_chalk19.default.red("\u{1F310} Network error, check connection"));
32210
32907
  process.exit(1);
32211
32908
  }
32212
32909
  return false;
@@ -32246,7 +32943,7 @@ async function handleSlash(input3) {
32246
32943
  console.log(JSON.stringify(result.data, null, 2));
32247
32944
  }
32248
32945
  } else {
32249
- console.log(import_chalk18.default.red(`Help Error: ${result.message}`));
32946
+ console.log(import_chalk19.default.red(`Help Error: ${result.message}`));
32250
32947
  }
32251
32948
  return true;
32252
32949
  }
@@ -32254,7 +32951,7 @@ async function handleSlash(input3) {
32254
32951
  if (process.env.MARIA_DEBUG === "1") {
32255
32952
  console.error("HelpCommand error:", helpError);
32256
32953
  }
32257
- console.log(import_chalk18.default.yellow("\u26A0 Dynamic help unavailable, using fallback"));
32954
+ console.log(import_chalk19.default.yellow("\u26A0 Dynamic help unavailable, using fallback"));
32258
32955
  }
32259
32956
  const help = `
32260
32957
  \u{1F4D6} MARIA CLI Help
@@ -32279,7 +32976,7 @@ Chat:
32279
32976
  session.length = 0;
32280
32977
  if (ctx?.clearContext) ctx.clearContext();
32281
32978
  console.clear();
32282
- console.log(import_chalk18.default.cyan("\u2728 Session cleared"));
32979
+ console.log(import_chalk19.default.cyan("\u2728 Session cleared"));
32283
32980
  return true;
32284
32981
  }
32285
32982
  if (cmd === "code") {
@@ -32287,7 +32984,7 @@ Chat:
32287
32984
  const prompt = args.join(" ").trim();
32288
32985
  if (!prompt) {
32289
32986
  console.log(
32290
- import_chalk18.default.red("Usage: /code <request> e.g. /code build a REST API")
32987
+ import_chalk19.default.red("Usage: /code <request> e.g. /code build a REST API")
32291
32988
  );
32292
32989
  return true;
32293
32990
  }
@@ -32299,7 +32996,7 @@ Chat:
32299
32996
  const prompt = args.join(" ").trim();
32300
32997
  if (!prompt) {
32301
32998
  console.log(
32302
- import_chalk18.default.cyan("\u{1F3A8} **Image Generation**\n") + import_chalk18.default.white("Usage: /image <prompt>\n") + import_chalk18.default.gray("Example: /image \u5BCC\u58EB\u5C71\u306E\u65E5\u306E\u51FA")
32999
+ import_chalk19.default.cyan("\u{1F3A8} **Image Generation**\n") + import_chalk19.default.white("Usage: /image <prompt>\n") + import_chalk19.default.gray("Example: /image \u5BCC\u58EB\u5C71\u306E\u65E5\u306E\u51FA")
32303
33000
  );
32304
33001
  return true;
32305
33002
  }
@@ -32311,14 +33008,14 @@ Chat:
32311
33008
  options: {},
32312
33009
  logger: {
32313
33010
  info: (msg) => console.log(msg),
32314
- error: (msg) => console.error(import_chalk18.default.red(msg)),
32315
- warn: (msg) => console.warn(import_chalk18.default.yellow(msg))
33011
+ error: (msg) => console.error(import_chalk19.default.red(msg)),
33012
+ warn: (msg) => console.warn(import_chalk19.default.yellow(msg))
32316
33013
  }
32317
33014
  };
32318
33015
  await imageCommand2.execute(context2);
32319
33016
  }
32320
33017
  } catch (error2) {
32321
- console.error(import_chalk18.default.red("Image generation failed:"), error2.message);
33018
+ console.error(import_chalk19.default.red("Image generation failed:"), error2.message);
32322
33019
  }
32323
33020
  return true;
32324
33021
  }
@@ -32327,7 +33024,7 @@ Chat:
32327
33024
  const prompt = args.join(" ").trim();
32328
33025
  if (!prompt) {
32329
33026
  console.log(
32330
- import_chalk18.default.cyan("\u{1F3AC} **Video Generation**\n") + import_chalk18.default.white("Usage: /video <prompt>\n") + import_chalk18.default.gray("Example: /video \u6D77\u306E\u6CE2\u304C\u6253\u3061\u5BC4\u305B\u308B\u69D8\u5B50")
33027
+ import_chalk19.default.cyan("\u{1F3AC} **Video Generation**\n") + import_chalk19.default.white("Usage: /video <prompt>\n") + import_chalk19.default.gray("Example: /video \u6D77\u306E\u6CE2\u304C\u6253\u3061\u5BC4\u305B\u308B\u69D8\u5B50")
32331
33028
  );
32332
33029
  return true;
32333
33030
  }
@@ -32339,14 +33036,14 @@ Chat:
32339
33036
  options: {},
32340
33037
  logger: {
32341
33038
  info: (msg) => console.log(msg),
32342
- error: (msg) => console.error(import_chalk18.default.red(msg)),
32343
- warn: (msg) => console.warn(import_chalk18.default.yellow(msg))
33039
+ error: (msg) => console.error(import_chalk19.default.red(msg)),
33040
+ warn: (msg) => console.warn(import_chalk19.default.yellow(msg))
32344
33041
  }
32345
33042
  };
32346
33043
  await videoCommand2.execute(context2);
32347
33044
  }
32348
33045
  } catch (error2) {
32349
- console.error(import_chalk18.default.red("Video generation failed:"), error2.message);
33046
+ console.error(import_chalk19.default.red("Video generation failed:"), error2.message);
32350
33047
  }
32351
33048
  return true;
32352
33049
  }
@@ -32355,7 +33052,7 @@ Chat:
32355
33052
  const prompt = args.join(" ").trim();
32356
33053
  if (!prompt) {
32357
33054
  console.log(
32358
- import_chalk18.default.cyan("\u{1F399}\uFE0F **Voice Synthesis**\n") + import_chalk18.default.white("Usage: /voice <text>\n") + import_chalk18.default.gray("Example: /voice \u3053\u3093\u306B\u3061\u306F\u3001\u5143\u6C17\u3067\u3059\u304B\uFF1F")
33055
+ import_chalk19.default.cyan("\u{1F399}\uFE0F **Voice Synthesis**\n") + import_chalk19.default.white("Usage: /voice <text>\n") + import_chalk19.default.gray("Example: /voice \u3053\u3093\u306B\u3061\u306F\u3001\u5143\u6C17\u3067\u3059\u304B\uFF1F")
32359
33056
  );
32360
33057
  return true;
32361
33058
  }
@@ -32367,14 +33064,14 @@ Chat:
32367
33064
  options: {},
32368
33065
  logger: {
32369
33066
  info: (msg) => console.log(msg),
32370
- error: (msg) => console.error(import_chalk18.default.red(msg)),
32371
- warn: (msg) => console.warn(import_chalk18.default.yellow(msg))
33067
+ error: (msg) => console.error(import_chalk19.default.red(msg)),
33068
+ warn: (msg) => console.warn(import_chalk19.default.yellow(msg))
32372
33069
  }
32373
33070
  };
32374
33071
  await voiceCommand2.execute(context2);
32375
33072
  }
32376
33073
  } catch (error2) {
32377
- console.error(import_chalk18.default.red("Voice synthesis failed:"), error2.message);
33074
+ console.error(import_chalk19.default.red("Voice synthesis failed:"), error2.message);
32378
33075
  }
32379
33076
  return true;
32380
33077
  }
@@ -32393,36 +33090,36 @@ Chat:
32393
33090
  if (args.includes("status")) {
32394
33091
  if (await authManager.isAuthenticated()) {
32395
33092
  const user = await authManager.getCurrentUser();
32396
- console.log(import_chalk18.default.green("\u2705 Authenticated"));
32397
- console.log(import_chalk18.default.white(`\u{1F464} User: ${import_chalk18.default.cyan(user.email)}`));
32398
- console.log(import_chalk18.default.white(`\u{1F4CA} Plan: ${import_chalk18.default.cyan(user.plan)}`));
33093
+ console.log(import_chalk19.default.green("\u2705 Authenticated"));
33094
+ console.log(import_chalk19.default.white(`\u{1F464} User: ${import_chalk19.default.cyan(user.email)}`));
33095
+ console.log(import_chalk19.default.white(`\u{1F4CA} Plan: ${import_chalk19.default.cyan(user.plan)}`));
32399
33096
  } else {
32400
- console.log(import_chalk18.default.yellow("\u26A0\uFE0F Not authenticated"));
32401
- console.log(import_chalk18.default.gray("Use /login to sign in"));
33097
+ console.log(import_chalk19.default.yellow("\u26A0\uFE0F Not authenticated"));
33098
+ console.log(import_chalk19.default.gray("Use /login to sign in"));
32402
33099
  }
32403
33100
  } else {
32404
33101
  const result = await authManager.login(options2);
32405
33102
  if (result.success && result.user) {
32406
- console.log(import_chalk18.default.green("\u2705 Successfully logged in!"));
32407
- console.log(import_chalk18.default.white(`\u{1F464} User: ${import_chalk18.default.cyan(result.user.email)}`));
32408
- console.log(import_chalk18.default.white(`\u{1F4CA} Plan: ${import_chalk18.default.cyan(result.user.plan)}`));
33103
+ console.log(import_chalk19.default.green("\u2705 Successfully logged in!"));
33104
+ console.log(import_chalk19.default.white(`\u{1F464} User: ${import_chalk19.default.cyan(result.user.email)}`));
33105
+ console.log(import_chalk19.default.white(`\u{1F4CA} Plan: ${import_chalk19.default.cyan(result.user.plan)}`));
32409
33106
  } else {
32410
- console.log(import_chalk18.default.red("\u274C Login failed"));
32411
- if (result.error) console.log(import_chalk18.default.gray(result.error));
33107
+ console.log(import_chalk19.default.red("\u274C Login failed"));
33108
+ if (result.error) console.log(import_chalk19.default.gray(result.error));
32412
33109
  }
32413
33110
  }
32414
33111
  }
32415
33112
  } catch (error2) {
32416
- console.error(import_chalk18.default.red("Login error:"), error2.message);
33113
+ console.error(import_chalk19.default.red("Login error:"), error2.message);
32417
33114
  }
32418
33115
  return true;
32419
33116
  }
32420
33117
  if (cmd === "logout" || cmd === "signout") {
32421
33118
  try {
32422
33119
  await authManager.logout();
32423
- console.log(import_chalk18.default.green("\u{1F44B} Signed out. Local credentials removed."));
33120
+ console.log(import_chalk19.default.green("\u{1F44B} Signed out. Local credentials removed."));
32424
33121
  } catch (error2) {
32425
- console.error(import_chalk18.default.red("Logout error:"), error2.message);
33122
+ console.error(import_chalk19.default.red("Logout error:"), error2.message);
32426
33123
  }
32427
33124
  return true;
32428
33125
  }
@@ -32523,11 +33220,11 @@ Chat:
32523
33220
  }
32524
33221
  }
32525
33222
  if (!["battlecard", "sales-dashboard", "tune", "pilot-setup"].includes(cmd)) {
32526
- console.log(import_chalk18.default.red(`\u274C Unknown command: /${cmd}`));
32527
- console.log(import_chalk18.default.yellow("\n\u{1F4A1} Suggestions:"));
32528
- console.log(import_chalk18.default.gray(" \u2022 Type /help to see available commands"));
32529
- console.log(import_chalk18.default.gray(" \u2022 Check if you need to /login first"));
32530
- console.log(import_chalk18.default.gray(` \u2022 Try similar commands: /help --search ${cmd}`));
33223
+ console.log(import_chalk19.default.red(`\u274C Unknown command: /${cmd}`));
33224
+ console.log(import_chalk19.default.yellow("\n\u{1F4A1} Suggestions:"));
33225
+ console.log(import_chalk19.default.gray(" \u2022 Type /help to see available commands"));
33226
+ console.log(import_chalk19.default.gray(" \u2022 Check if you need to /login first"));
33227
+ console.log(import_chalk19.default.gray(` \u2022 Try similar commands: /help --search ${cmd}`));
32531
33228
  }
32532
33229
  return true;
32533
33230
  }
@@ -32795,11 +33492,11 @@ async function handleCodeCommand(prompt) {
32795
33492
  const filepath = path11.resolve(process.cwd(), filename);
32796
33493
  await fs11.writeFile(filepath, code, "utf-8");
32797
33494
  console.log(
32798
- import_chalk18.default.green("\n\u2705 **Code Saved**\n") + import_chalk18.default.white(`\u{1F4C1} **File (Click to open):**
32799
- `) + import_chalk18.default.cyan(`\u2022 [${filename}](file://${filepath})
32800
- `) + import_chalk18.default.gray(` \u{1F4CD} Path: \`${filepath}\`
32801
- `) + import_chalk18.default.white(` \u{1F4DD} Language: ${language}
32802
- `) + import_chalk18.default.dim(`
33495
+ import_chalk19.default.green("\n\u2705 **Code Saved**\n") + import_chalk19.default.white(`\u{1F4C1} **File (Click to open):**
33496
+ `) + import_chalk19.default.cyan(`\u2022 [${filename}](file://${filepath})
33497
+ `) + import_chalk19.default.gray(` \u{1F4CD} Path: \`${filepath}\`
33498
+ `) + import_chalk19.default.white(` \u{1F4DD} Language: ${language}
33499
+ `) + import_chalk19.default.dim(`
32803
33500
  \u{1F4A1} Tip: Command+Click (Mac) or Ctrl+Click (Windows/Linux) to open file`)
32804
33501
  );
32805
33502
  } else {
@@ -32808,11 +33505,11 @@ async function handleCodeCommand(prompt) {
32808
33505
  } catch (e2) {
32809
33506
  spinner.stop();
32810
33507
  if (process.env.MARIA_DEBUG === "1") {
32811
- console.error(import_chalk18.default.red("Code generation error:"), e2.message || e2);
33508
+ console.error(import_chalk19.default.red("Code generation error:"), e2.message || e2);
32812
33509
  }
32813
33510
  const fallbackCode = templateFallback(prompt);
32814
33511
  console.log(
32815
- import_chalk18.default.yellow("\u26A0 AI unavailable, using template fallback:\n")
33512
+ import_chalk19.default.yellow("\u26A0 AI unavailable, using template fallback:\n")
32816
33513
  );
32817
33514
  console.log(fallbackCode);
32818
33515
  try {
@@ -32821,14 +33518,14 @@ async function handleCodeCommand(prompt) {
32821
33518
  const filepath = path11.resolve(process.cwd(), filename);
32822
33519
  await fs11.writeFile(filepath, code, "utf-8");
32823
33520
  console.log(
32824
- import_chalk18.default.green("\n\u2705 **Template Code Saved**\n") + import_chalk18.default.white(`\u{1F4C1} **File (Click to open):**
32825
- `) + import_chalk18.default.cyan(`\u2022 [${filename}](file://${filepath})
32826
- `) + import_chalk18.default.gray(` \u{1F4CD} Path: \`${filepath}\`
32827
- `) + import_chalk18.default.dim(`
33521
+ import_chalk19.default.green("\n\u2705 **Template Code Saved**\n") + import_chalk19.default.white(`\u{1F4C1} **File (Click to open):**
33522
+ `) + import_chalk19.default.cyan(`\u2022 [${filename}](file://${filepath})
33523
+ `) + import_chalk19.default.gray(` \u{1F4CD} Path: \`${filepath}\`
33524
+ `) + import_chalk19.default.dim(`
32828
33525
  \u{1F4A1} Tip: Command+Click (Mac) or Ctrl+Click (Windows/Linux) to open file`)
32829
33526
  );
32830
33527
  } catch (saveError) {
32831
- console.error(import_chalk18.default.red("Failed to save code:"), saveError);
33528
+ console.error(import_chalk19.default.red("Failed to save code:"), saveError);
32832
33529
  }
32833
33530
  }
32834
33531
  }
@@ -32884,7 +33581,7 @@ ${userPrompt}`;
32884
33581
  (seq) => response2.includes(seq)
32885
33582
  );
32886
33583
  if (guidedFlowDetected) {
32887
- console.log(import_chalk18.default.yellow("\u26A0 Guided flow detected, switching to fallback"));
33584
+ console.log(import_chalk19.default.yellow("\u26A0 Guided flow detected, switching to fallback"));
32888
33585
  return null;
32889
33586
  }
32890
33587
  const codeMatch = response2.match(/```[\s\S]*?```/);
@@ -33052,14 +33749,14 @@ async function streamAnswer(text) {
33052
33749
  if (store?.addMessage) await store.addMessage(msg);
33053
33750
  } else {
33054
33751
  animation.stop();
33055
- console.log(import_chalk18.default.yellow("AI service unavailable. Please check your configuration."));
33752
+ console.log(import_chalk19.default.yellow("AI service unavailable. Please check your configuration."));
33056
33753
  }
33057
33754
  } catch (e2) {
33058
33755
  animation.stop();
33059
33756
  if (e2.message?.includes("timeout") || e2.message?.includes("\u23F1\uFE0F")) {
33060
- console.log(import_chalk18.default.yellow(e2.message));
33757
+ console.log(import_chalk19.default.yellow(e2.message));
33061
33758
  } else {
33062
- console.log(import_chalk18.default.red("Error generating response:"), e2.message || e2);
33759
+ console.log(import_chalk19.default.red("Error generating response:"), e2.message || e2);
33063
33760
  }
33064
33761
  }
33065
33762
  }
@@ -33074,9 +33771,9 @@ async function handleLine(line) {
33074
33771
  if (consumed) return;
33075
33772
  const isAuthenticated = await authManager.isAuthenticated();
33076
33773
  if (!isAuthenticated) {
33077
- console.log(import_chalk18.default.yellow("\n\u26A0\uFE0F Authentication required for chat features"));
33078
- console.log(import_chalk18.default.cyan("Please run: /login"));
33079
- console.log(import_chalk18.default.gray("Or use slash commands like /help, /version"));
33774
+ console.log(import_chalk19.default.yellow("\n\u26A0\uFE0F Authentication required for chat features"));
33775
+ console.log(import_chalk19.default.cyan("Please run: /login"));
33776
+ console.log(import_chalk19.default.gray("Or use slash commands like /help, /version"));
33080
33777
  return;
33081
33778
  }
33082
33779
  const user = { role: "user", content: input3, timestamp: /* @__PURE__ */ new Date() };
@@ -33098,7 +33795,7 @@ async function startInteractiveSession() {
33098
33795
  }
33099
33796
  }
33100
33797
  const stop = async () => {
33101
- console.log(import_chalk18.default.cyan("\n\u{1F44B} Goodbye!"));
33798
+ console.log(import_chalk19.default.cyan("\n\u{1F44B} Goodbye!"));
33102
33799
  if (store?.close) await store.close().catch(() => {
33103
33800
  });
33104
33801
  if (interactiveCLI?.cleanup) interactiveCLI.cleanup();
@@ -33108,7 +33805,7 @@ async function startInteractiveSession() {
33108
33805
  process.once("SIGINT", stop);
33109
33806
  process.once("SIGTERM", stop);
33110
33807
  if (!isTTY) {
33111
- console.log(import_chalk18.default.gray("[Pipe mode detected - streaming input/output]"));
33808
+ console.log(import_chalk19.default.gray("[Pipe mode detected - streaming input/output]"));
33112
33809
  const rl = readline5.createInterface({
33113
33810
  input: import_node_process3.stdin,
33114
33811
  output: import_node_process3.stdout,
@@ -33123,7 +33820,7 @@ async function startInteractiveSession() {
33123
33820
  if (interactiveCLI) {
33124
33821
  while (true) {
33125
33822
  try {
33126
- const prompt = import_chalk18.default.gray("> ");
33823
+ const prompt = import_chalk19.default.gray("> ");
33127
33824
  process.stdout.write(prompt);
33128
33825
  const line = await interactiveCLI.question("");
33129
33826
  console.log();
@@ -33138,14 +33835,14 @@ async function startInteractiveSession() {
33138
33835
  await stop();
33139
33836
  return;
33140
33837
  }
33141
- console.error(import_chalk18.default.red("Error:"), error2?.message || error2);
33838
+ console.error(import_chalk19.default.red("Error:"), error2?.message || error2);
33142
33839
  }
33143
33840
  }
33144
33841
  } else {
33145
33842
  const rl = readline5.createInterface({ input: import_node_process3.stdin, output: import_node_process3.stdout });
33146
33843
  while (true) {
33147
33844
  try {
33148
- const prompt = import_chalk18.default.gray("> ");
33845
+ const prompt = import_chalk19.default.gray("> ");
33149
33846
  const line = await rl.question(prompt);
33150
33847
  console.log();
33151
33848
  if (line.toLowerCase() === "exit" || line.toLowerCase() === "quit") {
@@ -33159,7 +33856,7 @@ async function startInteractiveSession() {
33159
33856
  await stop();
33160
33857
  return;
33161
33858
  }
33162
- console.error(import_chalk18.default.red("Error:"), error2?.message || error2);
33859
+ console.error(import_chalk19.default.red("Error:"), error2?.message || error2);
33163
33860
  }
33164
33861
  }
33165
33862
  }
@@ -33169,7 +33866,7 @@ function createCLI() {
33169
33866
  program2.name("maria").description(`\u{1F680} MARIA v${getVersion()} - Intelligent AI Assistant`).version(getVersion()).option("--v3-session", "Use v3 session architecture").option("--no-interactive", "Disable interactive mode for CI/CD").option("--server", "Start HTTP server mode for Cloud Run").action(async (options) => {
33170
33867
  loadEnvironmentVariables();
33171
33868
  if (options.server) {
33172
- console.log(import_chalk18.default.green("\u{1F680} Starting MARIA server mode..."));
33869
+ console.log(import_chalk19.default.green("\u{1F680} Starting MARIA server mode..."));
33173
33870
  try {
33174
33871
  const serverPath = path11.join(process.cwd(), "server.mjs");
33175
33872
  const { spawn } = await import("child_process");
@@ -33178,12 +33875,12 @@ function createCLI() {
33178
33875
  env: process.env
33179
33876
  });
33180
33877
  serverProcess.on("error", (error2) => {
33181
- console.error(import_chalk18.default.red("\u274C Server process error:"), error2);
33878
+ console.error(import_chalk19.default.red("\u274C Server process error:"), error2);
33182
33879
  process.exit(1);
33183
33880
  });
33184
33881
  return;
33185
33882
  } catch (error2) {
33186
- console.error(import_chalk18.default.red("\u274C Failed to start server mode:"), error2);
33883
+ console.error(import_chalk19.default.red("\u274C Failed to start server mode:"), error2);
33187
33884
  process.exit(1);
33188
33885
  }
33189
33886
  }
@@ -33193,7 +33890,7 @@ function createCLI() {
33193
33890
  displayStartupLogo2();
33194
33891
  startupDisplayed = true;
33195
33892
  } catch {
33196
- console.log(import_chalk18.default.cyan(`
33893
+ console.log(import_chalk19.default.cyan(`
33197
33894
  \u{1F680} MARIA v${getVersion()}
33198
33895
  `));
33199
33896
  startupDisplayed = true;
@@ -33202,24 +33899,24 @@ function createCLI() {
33202
33899
  const useV3 = options.v3Session || process.env.MARIA_USE_V3_SESSION === "1";
33203
33900
  if (useV3) {
33204
33901
  try {
33205
- console.log(import_chalk18.default.cyan("\u{1F680} Starting MARIA v3 session..."));
33902
+ console.log(import_chalk19.default.cyan("\u{1F680} Starting MARIA v3 session..."));
33206
33903
  const { MariaAI: MariaAI2 } = await Promise.resolve().then(() => (init_maria_ai(), maria_ai_exports));
33207
33904
  const maria = new MariaAI2();
33208
33905
  await maria.initialize();
33209
33906
  return;
33210
33907
  } catch (e2) {
33211
- console.warn(import_chalk18.default.yellow("\u26A0 V3 session unavailable, using standard mode"));
33908
+ console.warn(import_chalk19.default.yellow("\u26A0 V3 session unavailable, using standard mode"));
33212
33909
  }
33213
33910
  }
33214
33911
  await startInteractiveSession();
33215
33912
  });
33216
33913
  return program2;
33217
33914
  }
33218
- var import_commander, import_chalk18, readline5, import_node_process3, path11, fs11, AIResponseService2, ChatContextService2, ConversationPersistence2, InteractiveCLI2, ai, ctx, store, session, commandManager, startupDisplayed, program;
33915
+ var import_commander, import_chalk19, readline5, import_node_process3, path11, fs11, AIResponseService2, ChatContextService2, ConversationPersistence2, InteractiveCLI2, ai, ctx, store, session, commandManager, startupDisplayed, program;
33219
33916
  var init_cli = __esm({
33220
33917
  "src/cli.ts"() {
33221
33918
  import_commander = require("commander");
33222
- import_chalk18 = __toESM(require("chalk"), 1);
33919
+ import_chalk19 = __toESM(require("chalk"), 1);
33223
33920
  readline5 = __toESM(require("readline/promises"), 1);
33224
33921
  import_node_process3 = require("process");
33225
33922
  path11 = __toESM(require("path"), 1);
@@ -33262,21 +33959,21 @@ function createCLI2() {
33262
33959
  }
33263
33960
  });
33264
33961
  program2.command("setup-ollama").description("Setup Ollama for local AI").action(async () => {
33265
- console.log(import_chalk19.default.cyan("Setting up Ollama..."));
33962
+ console.log(import_chalk20.default.cyan("Setting up Ollama..."));
33266
33963
  console.log(
33267
- import_chalk19.default.yellow("Please run: brew install ollama && ollama serve")
33964
+ import_chalk20.default.yellow("Please run: brew install ollama && ollama serve")
33268
33965
  );
33269
33966
  });
33270
33967
  program2.command("setup-vllm").description("Setup vLLM for local AI").action(async () => {
33271
- console.log(import_chalk19.default.cyan("Setting up vLLM..."));
33272
- console.log(import_chalk19.default.yellow("Please run: pip install vllm"));
33968
+ console.log(import_chalk20.default.cyan("Setting up vLLM..."));
33969
+ console.log(import_chalk20.default.yellow("Please run: pip install vllm"));
33273
33970
  });
33274
33971
  return program2;
33275
33972
  }
33276
- var import_chalk19, import_commander2, MariaAI;
33973
+ var import_chalk20, import_commander2, MariaAI;
33277
33974
  var init_maria_ai = __esm({
33278
33975
  "src/maria-ai.ts"() {
33279
- import_chalk19 = __toESM(require("chalk"), 1);
33976
+ import_chalk20 = __toESM(require("chalk"), 1);
33280
33977
  import_commander2 = require("commander");
33281
33978
  init_startup_display();
33282
33979
  init_provider_selector();
@@ -33299,13 +33996,13 @@ var init_maria_ai = __esm({
33299
33996
  await this.providerSelector.initialize();
33300
33997
  const { provider, model } = await this.providerSelector.selectProvider();
33301
33998
  console.log(
33302
- import_chalk19.default.green(`
33999
+ import_chalk20.default.green(`
33303
34000
  \u2705 Selected: ${provider} with model ${model}`)
33304
34001
  );
33305
34002
  this.config.set("currentProvider", provider);
33306
34003
  this.config.set("currentModel", model);
33307
34004
  await this.config.save();
33308
- console.log(import_chalk19.default.cyan("\n\u{1F9E0} Initializing Intelligent Router..."));
34005
+ console.log(import_chalk20.default.cyan("\n\u{1F9E0} Initializing Intelligent Router..."));
33309
34006
  this.router = new IntelligentRouterService({
33310
34007
  confidenceThreshold: 0.85,
33311
34008
  enableLearning: true,
@@ -33313,12 +34010,12 @@ var init_maria_ai = __esm({
33313
34010
  });
33314
34011
  await this.router.initialize();
33315
34012
  console.log(
33316
- import_chalk19.default.green("\u2705 Intelligent Router initialized successfully\n")
34013
+ import_chalk20.default.green("\u2705 Intelligent Router initialized successfully\n")
33317
34014
  );
33318
34015
  this.session = createInteractiveSession(this);
33319
34016
  await this.session.start();
33320
34017
  } catch (error2) {
33321
- console.error(import_chalk19.default.red("\n\u274C Initialization failed:"), error2);
34018
+ console.error(import_chalk20.default.red("\n\u274C Initialization failed:"), error2);
33322
34019
  process.exit(1);
33323
34020
  }
33324
34021
  }
@@ -33326,7 +34023,7 @@ var init_maria_ai = __esm({
33326
34023
  if (this.session) {
33327
34024
  await this.session.stop();
33328
34025
  }
33329
- console.log(import_chalk19.default.cyan("\n\u{1F44B} Goodbye!"));
34026
+ console.log(import_chalk20.default.cyan("\n\u{1F44B} Goodbye!"));
33330
34027
  }
33331
34028
  };
33332
34029
  }
@@ -33336,7 +34033,7 @@ var init_maria_ai = __esm({
33336
34033
  init_maria_ai();
33337
34034
 
33338
34035
  // src/utils/version-check.ts
33339
- var import_chalk20 = __toESM(require("chalk"), 1);
34036
+ var import_chalk21 = __toESM(require("chalk"), 1);
33340
34037
  var import_semver = __toESM(require("semver"), 1);
33341
34038
  var MINIMUM_NODE_VERSION = "18.0.0";
33342
34039
  var RECOMMENDED_NODE_VERSION = "20.0.0";
@@ -33344,25 +34041,25 @@ function checkNodeVersion() {
33344
34041
  const currentVersion = process.version;
33345
34042
  if (!import_semver.default.satisfies(currentVersion, `>=${MINIMUM_NODE_VERSION}`)) {
33346
34043
  console.error(
33347
- import_chalk20.default.red(`
34044
+ import_chalk21.default.red(`
33348
34045
  \u274C Node.js version ${currentVersion} is not supported.`)
33349
34046
  );
33350
34047
  console.error(
33351
- import_chalk20.default.yellow(`Minimum required version: ${MINIMUM_NODE_VERSION}`)
34048
+ import_chalk21.default.yellow(`Minimum required version: ${MINIMUM_NODE_VERSION}`)
33352
34049
  );
33353
34050
  console.error(
33354
- import_chalk20.default.yellow(
34051
+ import_chalk21.default.yellow(
33355
34052
  `Recommended version: ${RECOMMENDED_NODE_VERSION} or higher`
33356
34053
  )
33357
34054
  );
33358
- console.error(import_chalk20.default.cyan("\nPlease upgrade Node.js:"));
33359
- console.error(import_chalk20.default.gray(" \u2022 Using nvm: nvm install 20 && nvm use 20"));
34055
+ console.error(import_chalk21.default.cyan("\nPlease upgrade Node.js:"));
34056
+ console.error(import_chalk21.default.gray(" \u2022 Using nvm: nvm install 20 && nvm use 20"));
33360
34057
  console.error(
33361
- import_chalk20.default.gray(
34058
+ import_chalk21.default.gray(
33362
34059
  " \u2022 Using nodenv: nodenv install 20.0.0 && nodenv global 20.0.0"
33363
34060
  )
33364
34061
  );
33365
- console.error(import_chalk20.default.gray(" \u2022 Download from: https://nodejs.org/"));
34062
+ console.error(import_chalk21.default.gray(" \u2022 Download from: https://nodejs.org/"));
33366
34063
  process.exit(1);
33367
34064
  }
33368
34065
  }