vigthoria-cli 1.9.10 → 1.9.19

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 (52) hide show
  1. package/README.md +4 -4
  2. package/dist/commands/auth.js +48 -65
  3. package/dist/commands/bridge.js +12 -19
  4. package/dist/commands/cancel.js +15 -22
  5. package/dist/commands/chat.d.ts +11 -0
  6. package/dist/commands/chat.js +404 -248
  7. package/dist/commands/config.js +31 -71
  8. package/dist/commands/deploy.js +83 -123
  9. package/dist/commands/device.d.ts +35 -0
  10. package/dist/commands/device.js +239 -0
  11. package/dist/commands/edit.js +32 -39
  12. package/dist/commands/explain.js +18 -25
  13. package/dist/commands/fork.js +22 -27
  14. package/dist/commands/generate.js +37 -44
  15. package/dist/commands/history.js +20 -25
  16. package/dist/commands/hub.js +95 -102
  17. package/dist/commands/index.js +41 -46
  18. package/dist/commands/legion.d.ts +1 -0
  19. package/dist/commands/legion.js +162 -209
  20. package/dist/commands/preview.js +60 -98
  21. package/dist/commands/replay.js +27 -32
  22. package/dist/commands/repo.js +103 -141
  23. package/dist/commands/review.js +29 -36
  24. package/dist/commands/security.js +5 -12
  25. package/dist/commands/update.js +15 -49
  26. package/dist/commands/workflow.d.ts +8 -1
  27. package/dist/commands/workflow.js +53 -19
  28. package/dist/index.js +409 -234
  29. package/dist/utils/api.d.ts +5 -0
  30. package/dist/utils/api.js +373 -166
  31. package/dist/utils/bridge-client.js +11 -52
  32. package/dist/utils/cli-state.d.ts +54 -0
  33. package/dist/utils/cli-state.js +185 -0
  34. package/dist/utils/config.d.ts +5 -0
  35. package/dist/utils/config.js +35 -14
  36. package/dist/utils/context-ranker.js +15 -21
  37. package/dist/utils/files.js +5 -42
  38. package/dist/utils/logger.js +42 -50
  39. package/dist/utils/post-write-validator.js +22 -29
  40. package/dist/utils/project-memory.d.ts +56 -0
  41. package/dist/utils/project-memory.js +289 -0
  42. package/dist/utils/session.d.ts +29 -3
  43. package/dist/utils/session.js +137 -85
  44. package/dist/utils/task-display.js +13 -20
  45. package/dist/utils/tools.d.ts +19 -0
  46. package/dist/utils/tools.js +84 -87
  47. package/dist/utils/workspace-cache.js +18 -26
  48. package/dist/utils/workspace-stream.js +26 -64
  49. package/install.ps1 +14 -0
  50. package/package.json +5 -3
  51. package/scripts/release/LOCAL_MACHINE_USER_VERIFICATION.md +1 -1
  52. package/scripts/release/validate-no-go-gates.sh +2 -2
@@ -1,51 +1,12 @@
1
- "use strict";
2
1
  /**
3
2
  * Config Command - CLI configuration management
4
3
  */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.ConfigCommand = void 0;
43
- const chalk_1 = __importDefault(require("chalk"));
44
- const inquirer_1 = __importDefault(require("inquirer"));
45
- const fs = __importStar(require("fs"));
46
- const path = __importStar(require("path"));
47
- const logger_js_1 = require("../utils/logger.js");
48
- class ConfigCommand {
4
+ import chalk from 'chalk';
5
+ import inquirer from 'inquirer';
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import { CH } from '../utils/logger.js';
9
+ export class ConfigCommand {
49
10
  config;
50
11
  logger;
51
12
  constructor(config, logger) {
@@ -74,12 +35,12 @@ class ConfigCommand {
74
35
  }
75
36
  async init() {
76
37
  console.log();
77
- console.log(chalk_1.default.cyan(`${logger_js_1.CH.hDouble.repeat(3)} Initialize Vigthoria in Project ${logger_js_1.CH.hDouble.repeat(3)}`));
38
+ console.log(chalk.cyan(`${CH.hDouble.repeat(3)} Initialize Vigthoria in Project ${CH.hDouble.repeat(3)}`));
78
39
  console.log();
79
40
  const cwd = process.cwd();
80
41
  const configFile = path.join(cwd, '.vigthoria.json');
81
42
  if (fs.existsSync(configFile)) {
82
- const { overwrite } = await inquirer_1.default.prompt([
43
+ const { overwrite } = await inquirer.prompt([
83
44
  {
84
45
  type: 'confirm',
85
46
  name: 'overwrite',
@@ -93,7 +54,7 @@ class ConfigCommand {
93
54
  }
94
55
  }
95
56
  // Gather project settings
96
- const settings = await inquirer_1.default.prompt([
57
+ const settings = await inquirer.prompt([
97
58
  {
98
59
  type: 'list',
99
60
  name: 'defaultModel',
@@ -102,7 +63,7 @@ class ConfigCommand {
102
63
  { name: '═══ Code Models ═══', disabled: true },
103
64
  { name: 'Vigthoria v3 Code 35B - Flagship coding model', value: 'code' },
104
65
  { name: 'Vigthoria v3 Code 35B - Explicit 35B selection', value: 'code-35b' },
105
- { name: 'Vigthoria C1 Code 9B - Fast coding specialist', value: 'code-9b' },
66
+ { name: 'Vigthoria v3 Code 9B - Fast coding specialist', value: 'code-9b' },
106
67
  { name: '═══ General Models ═══', disabled: true },
107
68
  { name: 'Vigthoria Master 7.6B - Balanced general model', value: 'balanced' },
108
69
  { name: 'Vigthoria v3 Balanced 4B - Efficient general purpose', value: 'balanced-4b' },
@@ -143,7 +104,7 @@ class ConfigCommand {
143
104
  }
144
105
  }
145
106
  console.log();
146
- console.log(chalk_1.default.gray('Project initialized! Run `vigthoria chat` or `npx vigthoria-chat` to start.'));
107
+ console.log(chalk.gray('Project initialized! Run `vigthoria chat` or `npx vigthoria-chat` to start.'));
147
108
  console.log();
148
109
  }
149
110
  setConfig(keyValue) {
@@ -170,7 +131,7 @@ class ConfigCommand {
170
131
  }
171
132
  else {
172
133
  this.logger.error(`Unknown config key: ${key}`);
173
- console.log(chalk_1.default.gray('Available keys: model, theme, autoApply, showDiffs, maxTokens, apiUrl, modelsApiUrl, wsUrl, selfHostedModelsApiUrl'));
134
+ console.log(chalk.gray('Available keys: model, theme, autoApply, showDiffs, maxTokens, apiUrl, modelsApiUrl, wsUrl, selfHostedModelsApiUrl'));
174
135
  }
175
136
  }
176
137
  formatConfigValueForDisplay(key, value) {
@@ -224,29 +185,29 @@ class ConfigCommand {
224
185
  listConfig() {
225
186
  const all = this.config.getAll();
226
187
  console.log();
227
- console.log(chalk_1.default.cyan('═══ Vigthoria CLI Configuration ═══'));
188
+ console.log(chalk.cyan('═══ Vigthoria CLI Configuration ═══'));
228
189
  console.log();
229
- console.log(chalk_1.default.white('API:'));
230
- console.log(chalk_1.default.gray(' URL: ') + chalk_1.default.cyan(this.redactConfigUrl(all.apiUrl)));
231
- console.log(chalk_1.default.gray(' Models API: ') + chalk_1.default.cyan(this.redactConfigUrl(all.modelsApiUrl)));
232
- console.log(chalk_1.default.gray(' WebSocket: ') + chalk_1.default.cyan(this.redactConfigUrl(all.wsUrl)));
233
- console.log(chalk_1.default.gray(' Self-hosted Models: ') + chalk_1.default.cyan(all.selfHostedModelsApiUrl || 'disabled'));
190
+ console.log(chalk.white('API:'));
191
+ console.log(chalk.gray(' URL: ') + chalk.cyan(this.redactConfigUrl(all.apiUrl)));
192
+ console.log(chalk.gray(' Models API: ') + chalk.cyan(this.redactConfigUrl(all.modelsApiUrl)));
193
+ console.log(chalk.gray(' WebSocket: ') + chalk.cyan(this.redactConfigUrl(all.wsUrl)));
194
+ console.log(chalk.gray(' Self-hosted Models: ') + chalk.cyan(all.selfHostedModelsApiUrl || 'disabled'));
234
195
  console.log();
235
- console.log(chalk_1.default.white('Preferences:'));
236
- console.log(chalk_1.default.gray(' Default Model: ') + chalk_1.default.cyan(all.preferences.defaultModel));
237
- console.log(chalk_1.default.gray(' Theme: ') + chalk_1.default.cyan(all.preferences.theme));
238
- console.log(chalk_1.default.gray(' Auto Apply Fixes: ') + chalk_1.default.cyan(all.preferences.autoApplyFixes));
239
- console.log(chalk_1.default.gray(' Show Diffs: ') + chalk_1.default.cyan(all.preferences.showDiffs));
240
- console.log(chalk_1.default.gray(' Max Tokens: ') + chalk_1.default.cyan(all.preferences.maxTokens));
196
+ console.log(chalk.white('Preferences:'));
197
+ console.log(chalk.gray(' Default Model: ') + chalk.cyan(all.preferences.defaultModel));
198
+ console.log(chalk.gray(' Theme: ') + chalk.cyan(all.preferences.theme));
199
+ console.log(chalk.gray(' Auto Apply Fixes: ') + chalk.cyan(all.preferences.autoApplyFixes));
200
+ console.log(chalk.gray(' Show Diffs: ') + chalk.cyan(all.preferences.showDiffs));
201
+ console.log(chalk.gray(' Max Tokens: ') + chalk.cyan(all.preferences.maxTokens));
241
202
  console.log();
242
- console.log(chalk_1.default.white('Project:'));
243
- console.log(chalk_1.default.gray(' Ignore Patterns: ') + chalk_1.default.gray(all.project.ignorePatterns.join(', ')));
203
+ console.log(chalk.white('Project:'));
204
+ console.log(chalk.gray(' Ignore Patterns: ') + chalk.gray(all.project.ignorePatterns.join(', ')));
244
205
  console.log();
245
- console.log(chalk_1.default.gray(`Config file: ${this.config.getConfigPath()}`));
206
+ console.log(chalk.gray(`Config file: ${this.config.getConfigPath()}`));
246
207
  console.log();
247
208
  }
248
209
  async resetConfig() {
249
- const { confirm } = await inquirer_1.default.prompt([
210
+ const { confirm } = await inquirer.prompt([
250
211
  {
251
212
  type: 'confirm',
252
213
  name: 'confirm',
@@ -276,16 +237,16 @@ class ConfigCommand {
276
237
  async interactiveConfig() {
277
238
  const current = this.config.getAll();
278
239
  console.log();
279
- console.log(chalk_1.default.cyan('═══ Configure Vigthoria CLI ═══'));
240
+ console.log(chalk.cyan('═══ Configure Vigthoria CLI ═══'));
280
241
  console.log();
281
- const settings = await inquirer_1.default.prompt([
242
+ const settings = await inquirer.prompt([
282
243
  {
283
244
  type: 'list',
284
245
  name: 'defaultModel',
285
246
  message: 'Default AI model:',
286
247
  choices: [
287
248
  { name: 'Vigthoria v3 Code 35B', value: 'code' },
288
- { name: 'Vigthoria C1 Code 9B', value: 'code-9b' },
249
+ { name: 'Vigthoria v3 Code 9B', value: 'code-9b' },
289
250
  { name: 'Vigthoria Master 7.6B', value: 'balanced' },
290
251
  { name: 'Vigthoria v3 Balanced 4B', value: 'balanced-4b' },
291
252
  ],
@@ -325,4 +286,3 @@ class ConfigCommand {
325
286
  console.log();
326
287
  }
327
288
  }
328
- exports.ConfigCommand = ConfigCommand;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Vigthoria CLI - Deploy Commands
4
3
  *
@@ -12,50 +11,12 @@
12
11
  * vig deploy list - List all deployments
13
12
  * vig deploy remove <domain> - Remove a deployment
14
13
  */
15
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- var desc = Object.getOwnPropertyDescriptor(m, k);
18
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
- desc = { enumerable: true, get: function() { return m[k]; } };
20
- }
21
- Object.defineProperty(o, k2, desc);
22
- }) : (function(o, m, k, k2) {
23
- if (k2 === undefined) k2 = k;
24
- o[k2] = m[k];
25
- }));
26
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
- Object.defineProperty(o, "default", { enumerable: true, value: v });
28
- }) : function(o, v) {
29
- o["default"] = v;
30
- });
31
- var __importStar = (this && this.__importStar) || (function () {
32
- var ownKeys = function(o) {
33
- ownKeys = Object.getOwnPropertyNames || function (o) {
34
- var ar = [];
35
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
- return ar;
37
- };
38
- return ownKeys(o);
39
- };
40
- return function (mod) {
41
- if (mod && mod.__esModule) return mod;
42
- var result = {};
43
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
- __setModuleDefault(result, mod);
45
- return result;
46
- };
47
- })();
48
- var __importDefault = (this && this.__importDefault) || function (mod) {
49
- return (mod && mod.__esModule) ? mod : { "default": mod };
50
- };
51
- Object.defineProperty(exports, "__esModule", { value: true });
52
- exports.DeployCommand = void 0;
53
- const chalk_1 = __importDefault(require("chalk"));
54
- const fs = __importStar(require("fs"));
55
- const path = __importStar(require("path"));
56
- const logger_js_1 = require("../utils/logger.js");
57
- const inquirer_1 = __importDefault(require("inquirer"));
58
- class DeployCommand {
14
+ import chalk from 'chalk';
15
+ import * as fs from 'fs';
16
+ import * as path from 'path';
17
+ import { createSpinner, CH } from '../utils/logger.js';
18
+ import inquirer from 'inquirer';
19
+ export class DeployCommand {
59
20
  config;
60
21
  logger;
61
22
  apiBase;
@@ -76,8 +37,8 @@ class DeployCommand {
76
37
  }
77
38
  requireAuth() {
78
39
  if (!this.isAuthenticated()) {
79
- console.log(chalk_1.default.red('\nāŒ Authentication required'));
80
- console.log(chalk_1.default.gray(' Run `vig login` to authenticate first.\n'));
40
+ console.log(chalk.red('\nāŒ Authentication required'));
41
+ console.log(chalk.gray(' Run `vig login` to authenticate first.\n'));
81
42
  process.exit(1);
82
43
  }
83
44
  }
@@ -86,7 +47,7 @@ class DeployCommand {
86
47
  */
87
48
  async deploy(options = {}) {
88
49
  this.requireAuth();
89
- console.log(chalk_1.default.cyan('\nšŸš€ Vigthoria Deploy - Host Your Project\n'));
50
+ console.log(chalk.cyan('\nšŸš€ Vigthoria Deploy - Host Your Project\n'));
90
51
  // If subdomain or domain specified, deploy directly
91
52
  if (options.subdomain) {
92
53
  await this.deployToSubdomain(options.subdomain, options.project);
@@ -97,7 +58,7 @@ class DeployCommand {
97
58
  return;
98
59
  }
99
60
  // Interactive wizard
100
- const { deployType } = await inquirer_1.default.prompt([{
61
+ const { deployType } = await inquirer.prompt([{
101
62
  type: 'list',
102
63
  name: 'deployType',
103
64
  message: 'How would you like to deploy?',
@@ -128,7 +89,7 @@ class DeployCommand {
128
89
  */
129
90
  async deployToPreview(projectPath) {
130
91
  this.requireAuth();
131
- const spinner = (0, logger_js_1.createSpinner)('Deploying to preview...').start();
92
+ const spinner = createSpinner('Deploying to preview...').start();
132
93
  try {
133
94
  const projectDir = projectPath || process.cwd();
134
95
  const projectInfo = this.detectProjectInfo(projectDir);
@@ -145,17 +106,17 @@ class DeployCommand {
145
106
  throw new Error(error.error || 'Failed to deploy');
146
107
  }
147
108
  const data = await response.json();
148
- spinner.succeed(chalk_1.default.green('Deployed to preview!'));
149
- console.log(chalk_1.default.cyan('\nšŸ”— Preview URL:'));
150
- console.log(chalk_1.default.white(` ${data.url}`));
151
- console.log(chalk_1.default.gray('\n Note: Preview URLs may expire after 7 days of inactivity.'));
152
- console.log(chalk_1.default.gray(' Upgrade to a subdomain for permanent hosting.\n'));
109
+ spinner.succeed(chalk.green('Deployed to preview!'));
110
+ console.log(chalk.cyan('\nšŸ”— Preview URL:'));
111
+ console.log(chalk.white(` ${data.url}`));
112
+ console.log(chalk.gray('\n Note: Preview URLs may expire after 7 days of inactivity.'));
113
+ console.log(chalk.gray(' Upgrade to a subdomain for permanent hosting.\n'));
153
114
  }
154
115
  catch (error) {
155
116
  spinner.stop();
156
117
  this.logger.error('Deploy failed');
157
118
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
158
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
119
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
159
120
  process.exitCode = 1;
160
121
  }
161
122
  }
@@ -163,7 +124,7 @@ class DeployCommand {
163
124
  * Deploy to Vigthoria subdomain
164
125
  */
165
126
  async deployToSubdomain(subdomain, projectPath) {
166
- const spinner = (0, logger_js_1.createSpinner)(`Deploying to ${subdomain}.vigthoria.io...`).start();
127
+ const spinner = createSpinner(`Deploying to ${subdomain}.vigthoria.io...`).start();
167
128
  try {
168
129
  // Validate subdomain format
169
130
  if (!/^[a-z0-9][a-z0-9-]*[a-z0-9]$/.test(subdomain) || subdomain.length < 3) {
@@ -184,40 +145,40 @@ class DeployCommand {
184
145
  if (!response.ok || !data.success) {
185
146
  if (data.requiresSubscription) {
186
147
  spinner.stop();
187
- console.log(chalk_1.default.yellow(`\n${logger_js_1.CH.warnEmoji} Subdomain hosting requires a subscription (€4.99/mo)`));
188
- const { proceed } = await inquirer_1.default.prompt([{
148
+ console.log(chalk.yellow(`\n${CH.warnEmoji} Subdomain hosting requires a subscription (€4.99/mo)`));
149
+ const { proceed } = await inquirer.prompt([{
189
150
  type: 'confirm',
190
151
  name: 'proceed',
191
152
  message: 'Would you like to subscribe now?',
192
153
  default: true
193
154
  }]);
194
155
  if (proceed && data.checkoutUrl) {
195
- console.log(chalk_1.default.cyan(`\nšŸ”— Opening checkout: ${data.checkoutUrl}`));
196
- console.log(chalk_1.default.gray('Please open this URL in your browser to subscribe.\n'));
156
+ console.log(chalk.cyan(`\nšŸ”— Opening checkout: ${data.checkoutUrl}`));
157
+ console.log(chalk.gray('Please open this URL in your browser to subscribe.\n'));
197
158
  }
198
159
  return;
199
160
  }
200
161
  throw new Error(data.error || 'Failed to deploy');
201
162
  }
202
- spinner.succeed(chalk_1.default.green(`Deployed to ${subdomain}.vigthoria.io!`));
203
- console.log(chalk_1.default.cyan('\n🌐 Your Site is Live:'));
204
- console.log(chalk_1.default.bold.white(` https://${subdomain}.vigthoria.io`));
205
- console.log(chalk_1.default.gray('\n āœ“ SSL certificate auto-configured'));
206
- console.log(chalk_1.default.gray(' āœ“ Global CDN enabled'));
207
- console.log(chalk_1.default.gray(' āœ“ Unlimited traffic included\n'));
163
+ spinner.succeed(chalk.green(`Deployed to ${subdomain}.vigthoria.io!`));
164
+ console.log(chalk.cyan('\n🌐 Your Site is Live:'));
165
+ console.log(chalk.bold.white(` https://${subdomain}.vigthoria.io`));
166
+ console.log(chalk.gray('\n āœ“ SSL certificate auto-configured'));
167
+ console.log(chalk.gray(' āœ“ Global CDN enabled'));
168
+ console.log(chalk.gray(' āœ“ Unlimited traffic included\n'));
208
169
  }
209
170
  catch (error) {
210
171
  spinner.stop();
211
172
  this.logger.error('Deploy failed');
212
173
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
213
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
174
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
214
175
  }
215
176
  }
216
177
  /**
217
178
  * Deploy to custom domain
218
179
  */
219
180
  async deployToCustomDomain(domain, projectPath) {
220
- const spinner = (0, logger_js_1.createSpinner)(`Setting up ${domain}...`).start();
181
+ const spinner = createSpinner(`Setting up ${domain}...`).start();
221
182
  try {
222
183
  const projectDir = projectPath || process.cwd();
223
184
  const projectInfo = this.detectProjectInfo(projectDir);
@@ -234,49 +195,49 @@ class DeployCommand {
234
195
  if (!response.ok || !data.success) {
235
196
  if (data.requiresSubscription) {
236
197
  spinner.stop();
237
- console.log(chalk_1.default.yellow(`\n${logger_js_1.CH.warnEmoji} Custom domain hosting requires a subscription (€9.99/mo)`));
238
- const { proceed } = await inquirer_1.default.prompt([{
198
+ console.log(chalk.yellow(`\n${CH.warnEmoji} Custom domain hosting requires a subscription (€9.99/mo)`));
199
+ const { proceed } = await inquirer.prompt([{
239
200
  type: 'confirm',
240
201
  name: 'proceed',
241
202
  message: 'Would you like to subscribe now?',
242
203
  default: true
243
204
  }]);
244
205
  if (proceed && data.checkoutUrl) {
245
- console.log(chalk_1.default.cyan(`\nšŸ”— Checkout URL: ${data.checkoutUrl}`));
246
- console.log(chalk_1.default.gray('Please open this URL in your browser to subscribe.\n'));
206
+ console.log(chalk.cyan(`\nšŸ”— Checkout URL: ${data.checkoutUrl}`));
207
+ console.log(chalk.gray('Please open this URL in your browser to subscribe.\n'));
247
208
  }
248
209
  return;
249
210
  }
250
211
  throw new Error(data.error || 'Failed to deploy');
251
212
  }
252
- spinner.succeed(chalk_1.default.green('Domain registered!'));
213
+ spinner.succeed(chalk.green('Domain registered!'));
253
214
  if (data.dnsRecords) {
254
- console.log(chalk_1.default.cyan('\nšŸ“ Configure your DNS records:'));
255
- console.log(chalk_1.default.gray('─'.repeat(60)));
215
+ console.log(chalk.cyan('\nšŸ“ Configure your DNS records:'));
216
+ console.log(chalk.gray('─'.repeat(60)));
256
217
  for (const record of data.dnsRecords) {
257
- console.log(chalk_1.default.white(` Type: ${record.type.padEnd(6)} Name: ${record.name.padEnd(20)} Value: ${record.value}`));
218
+ console.log(chalk.white(` Type: ${record.type.padEnd(6)} Name: ${record.name.padEnd(20)} Value: ${record.value}`));
258
219
  }
259
- console.log(chalk_1.default.gray('─'.repeat(60)));
260
- console.log(chalk_1.default.yellow('\nā³ After adding DNS records, run:'));
261
- console.log(chalk_1.default.white(` vig deploy verify ${domain}\n`));
220
+ console.log(chalk.gray('─'.repeat(60)));
221
+ console.log(chalk.yellow('\nā³ After adding DNS records, run:'));
222
+ console.log(chalk.white(` vig deploy verify ${domain}\n`));
262
223
  }
263
224
  }
264
225
  catch (error) {
265
226
  spinner.stop();
266
227
  this.logger.error('Deploy failed');
267
228
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
268
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
229
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
269
230
  }
270
231
  }
271
232
  /**
272
233
  * Interactive subdomain prompt
273
234
  */
274
235
  async promptSubdomainDeploy(projectPath) {
275
- const { subdomain } = await inquirer_1.default.prompt([{
236
+ const { subdomain } = await inquirer.prompt([{
276
237
  type: 'input',
277
238
  name: 'subdomain',
278
239
  message: 'Enter your desired subdomain:',
279
- suffix: chalk_1.default.gray('.vigthoria.io'),
240
+ suffix: chalk.gray('.vigthoria.io'),
280
241
  validate: (input) => {
281
242
  if (!/^[a-z0-9][a-z0-9-]*[a-z0-9]$/.test(input) || input.length < 3) {
282
243
  return 'Subdomain must be 3+ chars, lowercase alphanumeric with hyphens';
@@ -290,11 +251,11 @@ class DeployCommand {
290
251
  * Interactive custom domain prompt
291
252
  */
292
253
  async promptCustomDomainDeploy(projectPath) {
293
- const { domain } = await inquirer_1.default.prompt([{
254
+ const { domain } = await inquirer.prompt([{
294
255
  type: 'input',
295
256
  name: 'domain',
296
257
  message: 'Enter your domain:',
297
- suffix: chalk_1.default.gray(' (e.g., myapp.com)'),
258
+ suffix: chalk.gray(' (e.g., myapp.com)'),
298
259
  validate: (input) => {
299
260
  if (!/^[a-z0-9][a-z0-9.-]+\.[a-z]{2,}$/i.test(input)) {
300
261
  return 'Please enter a valid domain name';
@@ -308,7 +269,7 @@ class DeployCommand {
308
269
  * Show hosting plans
309
270
  */
310
271
  async showPlans() {
311
- const spinner = (0, logger_js_1.createSpinner)('Fetching hosting plans...').start();
272
+ const spinner = createSpinner('Fetching hosting plans...').start();
312
273
  try {
313
274
  const response = await fetch(`${this.apiBase}/api/hosting/plans`, {
314
275
  headers: this.getAuthHeaders()
@@ -318,14 +279,14 @@ class DeployCommand {
318
279
  }
319
280
  const data = await response.json();
320
281
  spinner.stop();
321
- console.log(chalk_1.default.cyan('\nšŸ“Š Vigthoria Hosting Plans\n'));
322
- console.log(chalk_1.default.gray('═'.repeat(70)));
282
+ console.log(chalk.cyan('\nšŸ“Š Vigthoria Hosting Plans\n'));
283
+ console.log(chalk.gray('═'.repeat(70)));
323
284
  for (const plan of data.plans) {
324
285
  const price = plan.price_monthly === 0
325
- ? chalk_1.default.green('FREE')
326
- : chalk_1.default.yellow(`€${plan.price_monthly.toFixed(2)}/mo`);
327
- console.log(chalk_1.default.bold.white(`\n ${plan.display_name} - ${price}`));
328
- console.log(chalk_1.default.gray(' ' + '─'.repeat(50)));
286
+ ? chalk.green('FREE')
287
+ : chalk.yellow(`€${plan.price_monthly.toFixed(2)}/mo`);
288
+ console.log(chalk.bold.white(`\n ${plan.display_name} - ${price}`));
289
+ console.log(chalk.gray(' ' + '─'.repeat(50)));
329
290
  const features = [];
330
291
  if (plan.subdomain_allowed)
331
292
  features.push('āœ“ Vigthoria subdomain');
@@ -333,16 +294,16 @@ class DeployCommand {
333
294
  features.push('āœ“ Custom domain');
334
295
  features.push(`āœ“ ${plan.max_projects === -1 ? 'Unlimited' : plan.max_projects} project(s)`);
335
296
  features.push(`āœ“ ${plan.storage_mb >= 1024 ? (plan.storage_mb / 1024) + 'GB' : plan.storage_mb + 'MB'} storage`);
336
- features.forEach(f => console.log(chalk_1.default.gray(` ${f}`)));
297
+ features.forEach(f => console.log(chalk.gray(` ${f}`)));
337
298
  }
338
- console.log(chalk_1.default.gray('\n' + '═'.repeat(70)));
339
- console.log(chalk_1.default.cyan('\n Subscribe: vig deploy --subdomain myapp\n'));
299
+ console.log(chalk.gray('\n' + '═'.repeat(70)));
300
+ console.log(chalk.cyan('\n Subscribe: vig deploy --subdomain myapp\n'));
340
301
  }
341
302
  catch (error) {
342
303
  spinner.stop();
343
304
  this.logger.error('Failed to fetch plans');
344
305
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
345
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
306
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
346
307
  }
347
308
  }
348
309
  /**
@@ -350,7 +311,7 @@ class DeployCommand {
350
311
  */
351
312
  async list() {
352
313
  this.requireAuth();
353
- const spinner = (0, logger_js_1.createSpinner)('Fetching deployments...').start();
314
+ const spinner = createSpinner('Fetching deployments...').start();
354
315
  try {
355
316
  const response = await fetch(`${this.apiBase}/api/hosting/domains`, {
356
317
  headers: this.getAuthHeaders()
@@ -361,21 +322,21 @@ class DeployCommand {
361
322
  const data = await response.json();
362
323
  spinner.stop();
363
324
  if (data.domains.length === 0) {
364
- console.log(chalk_1.default.yellow('\nšŸ“¦ No deployments yet.\n'));
365
- console.log(chalk_1.default.gray(' Run `vig deploy` to deploy your first project.\n'));
325
+ console.log(chalk.yellow('\nšŸ“¦ No deployments yet.\n'));
326
+ console.log(chalk.gray(' Run `vig deploy` to deploy your first project.\n'));
366
327
  return;
367
328
  }
368
- console.log(chalk_1.default.cyan(`\n🌐 Your Deployments (${data.domains.length})\n`));
329
+ console.log(chalk.cyan(`\n🌐 Your Deployments (${data.domains.length})\n`));
369
330
  for (const domain of data.domains) {
370
331
  const statusIcon = domain.is_active ? '🟢' : 'šŸ”“';
371
- const sslIcon = domain.ssl_status === 'active' ? logger_js_1.CH.lock : logger_js_1.CH.warnEmoji;
332
+ const sslIcon = domain.ssl_status === 'active' ? CH.lock : CH.warnEmoji;
372
333
  const url = domain.domain_type === 'subdomain'
373
334
  ? `${domain.subdomain}.vigthoria.io`
374
335
  : domain.domain_type === 'custom'
375
336
  ? domain.custom_domain
376
337
  : domain.url;
377
- console.log(chalk_1.default.white(` ${statusIcon} ${url}`));
378
- console.log(chalk_1.default.gray(` Project: ${domain.project_name} | SSL: ${sslIcon} ${domain.ssl_status} | Tier: ${domain.hosting_tier}`));
338
+ console.log(chalk.white(` ${statusIcon} ${url}`));
339
+ console.log(chalk.gray(` Project: ${domain.project_name} | SSL: ${sslIcon} ${domain.ssl_status} | Tier: ${domain.hosting_tier}`));
379
340
  console.log();
380
341
  }
381
342
  }
@@ -383,7 +344,7 @@ class DeployCommand {
383
344
  spinner.stop();
384
345
  this.logger.error('List failed');
385
346
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
386
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
347
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
387
348
  }
388
349
  }
389
350
  /**
@@ -391,7 +352,7 @@ class DeployCommand {
391
352
  */
392
353
  async status(domain) {
393
354
  this.requireAuth();
394
- const spinner = (0, logger_js_1.createSpinner)('Checking status...').start();
355
+ const spinner = createSpinner('Checking status...').start();
395
356
  try {
396
357
  const endpoint = domain
397
358
  ? `${this.apiBase}/api/hosting/domain/${encodeURIComponent(domain)}/status`
@@ -404,14 +365,14 @@ class DeployCommand {
404
365
  }
405
366
  const data = await response.json();
406
367
  spinner.stop();
407
- console.log(chalk_1.default.cyan('\nšŸ“Š Deployment Status\n'));
368
+ console.log(chalk.cyan('\nšŸ“Š Deployment Status\n'));
408
369
  console.log(JSON.stringify(data, null, 2));
409
370
  }
410
371
  catch (error) {
411
372
  spinner.stop();
412
373
  this.logger.error('Status check failed');
413
374
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
414
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
375
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
415
376
  }
416
377
  }
417
378
  /**
@@ -419,7 +380,7 @@ class DeployCommand {
419
380
  */
420
381
  async verify(domain) {
421
382
  this.requireAuth();
422
- const spinner = (0, logger_js_1.createSpinner)(`Verifying DNS for ${domain}...`).start();
383
+ const spinner = createSpinner(`Verifying DNS for ${domain}...`).start();
423
384
  try {
424
385
  const response = await fetch(`${this.apiBase}/api/hosting/domain/verify`, {
425
386
  method: 'POST',
@@ -431,21 +392,21 @@ class DeployCommand {
431
392
  throw new Error(data.error || 'Verification failed');
432
393
  }
433
394
  if (data.verified) {
434
- spinner.succeed(chalk_1.default.green('Domain verified!'));
435
- console.log(chalk_1.default.cyan(`\nšŸŽ‰ Your site is now live at: https://${domain}`));
436
- console.log(chalk_1.default.gray(` SSL Status: ${data.sslStatus || 'Provisioning...'}\n`));
395
+ spinner.succeed(chalk.green('Domain verified!'));
396
+ console.log(chalk.cyan(`\nšŸŽ‰ Your site is now live at: https://${domain}`));
397
+ console.log(chalk.gray(` SSL Status: ${data.sslStatus || 'Provisioning...'}\n`));
437
398
  }
438
399
  else {
439
- spinner.warn(chalk_1.default.yellow('DNS not propagated yet'));
440
- console.log(chalk_1.default.gray('\n DNS changes can take up to 48 hours to propagate.'));
441
- console.log(chalk_1.default.gray(' Try again later with: vig deploy verify ' + domain + '\n'));
400
+ spinner.warn(chalk.yellow('DNS not propagated yet'));
401
+ console.log(chalk.gray('\n DNS changes can take up to 48 hours to propagate.'));
402
+ console.log(chalk.gray(' Try again later with: vig deploy verify ' + domain + '\n'));
442
403
  }
443
404
  }
444
405
  catch (error) {
445
406
  spinner.stop();
446
407
  this.logger.error('Verification failed');
447
408
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
448
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
409
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
449
410
  }
450
411
  }
451
412
  /**
@@ -453,17 +414,17 @@ class DeployCommand {
453
414
  */
454
415
  async remove(domain) {
455
416
  this.requireAuth();
456
- const { confirm } = await inquirer_1.default.prompt([{
417
+ const { confirm } = await inquirer.prompt([{
457
418
  type: 'confirm',
458
419
  name: 'confirm',
459
- message: chalk_1.default.red(`Are you sure you want to remove ${domain}?`),
420
+ message: chalk.red(`Are you sure you want to remove ${domain}?`),
460
421
  default: false
461
422
  }]);
462
423
  if (!confirm) {
463
- console.log(chalk_1.default.yellow(`\n${logger_js_1.CH.warnEmoji} Removal cancelled.\n`));
424
+ console.log(chalk.yellow(`\n${CH.warnEmoji} Removal cancelled.\n`));
464
425
  return;
465
426
  }
466
- const spinner = (0, logger_js_1.createSpinner)(`Removing ${domain}...`).start();
427
+ const spinner = createSpinner(`Removing ${domain}...`).start();
467
428
  try {
468
429
  const response = await fetch(`${this.apiBase}/api/hosting/domain/${encodeURIComponent(domain)}`, {
469
430
  method: 'DELETE',
@@ -473,14 +434,14 @@ class DeployCommand {
473
434
  const error = await response.json();
474
435
  throw new Error(error.error || 'Failed to remove');
475
436
  }
476
- spinner.succeed(chalk_1.default.green('Domain removed'));
477
- console.log(chalk_1.default.gray('\n Your project files are still in your repository.\n'));
437
+ spinner.succeed(chalk.green('Domain removed'));
438
+ console.log(chalk.gray('\n Your project files are still in your repository.\n'));
478
439
  }
479
440
  catch (error) {
480
441
  spinner.stop();
481
442
  this.logger.error('Remove failed');
482
443
  const errMsg = error instanceof Error ? error.message : 'Unknown error';
483
- console.log(chalk_1.default.red(`\nāŒ Error: ${errMsg}\n`));
444
+ console.log(chalk.red(`\nāŒ Error: ${errMsg}\n`));
484
445
  }
485
446
  }
486
447
  /**
@@ -520,4 +481,3 @@ class DeployCommand {
520
481
  return { name, techStack };
521
482
  }
522
483
  }
523
- exports.DeployCommand = DeployCommand;