@lanonasis/cli 3.6.4 → 3.6.5

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 (41) hide show
  1. package/dist/commands/api-keys.d.ts +1 -2
  2. package/dist/commands/api-keys.js +78 -73
  3. package/dist/commands/auth.js +167 -160
  4. package/dist/commands/completion.js +39 -31
  5. package/dist/commands/config.js +201 -162
  6. package/dist/commands/enhanced-memory.js +17 -11
  7. package/dist/commands/guide.js +88 -79
  8. package/dist/commands/init.js +20 -14
  9. package/dist/commands/mcp.js +173 -142
  10. package/dist/commands/memory.js +83 -77
  11. package/dist/commands/organization.js +21 -15
  12. package/dist/commands/topics.js +58 -52
  13. package/dist/core/achievements.js +26 -19
  14. package/dist/core/architecture.js +59 -42
  15. package/dist/core/dashboard.js +81 -71
  16. package/dist/core/error-handler.js +39 -30
  17. package/dist/core/power-mode.js +53 -46
  18. package/dist/core/progress.js +44 -35
  19. package/dist/core/welcome.js +64 -56
  20. package/dist/enhanced-cli.js +58 -49
  21. package/dist/index-simple.js +112 -74
  22. package/dist/index.js +68 -63
  23. package/dist/mcp/access-control.js +17 -13
  24. package/dist/mcp/client/enhanced-client.js +23 -16
  25. package/dist/mcp/enhanced-server.js +14 -10
  26. package/dist/mcp/logger.js +6 -2
  27. package/dist/mcp/memory-state.js +17 -13
  28. package/dist/mcp/schemas/tool-schemas.d.ts +28 -28
  29. package/dist/mcp/schemas/tool-schemas.js +126 -122
  30. package/dist/mcp/server/lanonasis-server.js +51 -44
  31. package/dist/mcp/transports/transport-manager.js +25 -18
  32. package/dist/mcp/vector-store.js +10 -6
  33. package/dist/mcp-server.js +21 -17
  34. package/dist/utils/api.js +30 -21
  35. package/dist/utils/config.js +59 -13
  36. package/dist/utils/formatting.js +14 -6
  37. package/dist/utils/mcp-client.js +132 -77
  38. package/package.json +17 -93
  39. package/dist/completions/bash-completion.sh +0 -88
  40. package/dist/completions/fish-completion.fish +0 -132
  41. package/dist/completions/zsh-completion.zsh +0 -196
@@ -1,11 +1,17 @@
1
- import chalk from 'chalk';
2
- import inquirer from 'inquirer';
3
- import ora from 'ora';
4
- import { table } from 'table';
5
- import { format } from 'date-fns';
6
- import { apiClient } from '../utils/api.js';
7
- import { truncateText } from '../utils/formatting.js';
8
- export function topicCommands(program) {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.topicCommands = topicCommands;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const table_1 = require("table");
11
+ const date_fns_1 = require("date-fns");
12
+ const api_js_1 = require("../utils/api.js");
13
+ const formatting_js_1 = require("../utils/formatting.js");
14
+ function topicCommands(program) {
9
15
  // Create topic
10
16
  program
11
17
  .command('create')
@@ -21,7 +27,7 @@ export function topicCommands(program) {
21
27
  try {
22
28
  let { name, description, color, icon, parent, interactive } = options;
23
29
  if (interactive || !name) {
24
- const answers = await inquirer.prompt([
30
+ const answers = await inquirer_1.default.prompt([
25
31
  {
26
32
  type: 'input',
27
33
  name: 'name',
@@ -58,7 +64,7 @@ export function topicCommands(program) {
58
64
  color = answers.color;
59
65
  icon = answers.icon;
60
66
  }
61
- const spinner = ora('Creating topic...').start();
67
+ const spinner = (0, ora_1.default)('Creating topic...').start();
62
68
  const topicData = { name };
63
69
  if (description)
64
70
  topicData.description = description;
@@ -68,11 +74,11 @@ export function topicCommands(program) {
68
74
  topicData.icon = icon;
69
75
  if (parent)
70
76
  topicData.parent_topic_id = parent;
71
- const topic = await apiClient.createTopic(topicData);
77
+ const topic = await api_js_1.apiClient.createTopic(topicData);
72
78
  spinner.succeed('Topic created successfully');
73
79
  console.log();
74
- console.log(chalk.green('✓ Topic created:'));
75
- console.log(` ID: ${chalk.cyan(topic.id)}`);
80
+ console.log(chalk_1.default.green('✓ Topic created:'));
81
+ console.log(` ID: ${chalk_1.default.cyan(topic.id)}`);
76
82
  console.log(` Name: ${topic.name}`);
77
83
  if (topic.description) {
78
84
  console.log(` Description: ${topic.description}`);
@@ -83,7 +89,7 @@ export function topicCommands(program) {
83
89
  }
84
90
  catch (error) {
85
91
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
86
- console.error(chalk.red('✖ Failed to create topic:'), errorMessage);
92
+ console.error(chalk_1.default.red('✖ Failed to create topic:'), errorMessage);
87
93
  process.exit(1);
88
94
  }
89
95
  });
@@ -94,14 +100,14 @@ export function topicCommands(program) {
94
100
  .description('List topics')
95
101
  .action(async () => {
96
102
  try {
97
- const spinner = ora('Fetching topics...').start();
98
- const topics = await apiClient.getTopics();
103
+ const spinner = (0, ora_1.default)('Fetching topics...').start();
104
+ const topics = await api_js_1.apiClient.getTopics();
99
105
  spinner.stop();
100
106
  if (topics.length === 0) {
101
- console.log(chalk.yellow('No topics found'));
107
+ console.log(chalk_1.default.yellow('No topics found'));
102
108
  return;
103
109
  }
104
- console.log(chalk.blue.bold(`\n📁 Topics (${topics.length} total)`));
110
+ console.log(chalk_1.default.blue.bold(`\n📁 Topics (${topics.length} total)`));
105
111
  console.log();
106
112
  const outputFormat = process.env.CLI_OUTPUT_FORMAT || 'table';
107
113
  if (outputFormat === 'json') {
@@ -110,10 +116,10 @@ export function topicCommands(program) {
110
116
  else {
111
117
  // Table format
112
118
  const tableData = topics.map((topic) => [
113
- truncateText(topic.name, 25),
114
- truncateText(topic.description || '', 40),
119
+ (0, formatting_js_1.truncateText)(topic.name, 25),
120
+ (0, formatting_js_1.truncateText)(topic.description || '', 40),
115
121
  topic.color || '',
116
- format(new Date(topic.created_at), 'MMM dd, yyyy'),
122
+ (0, date_fns_1.format)(new Date(topic.created_at), 'MMM dd, yyyy'),
117
123
  topic.parent_topic_id ? '✓' : ''
118
124
  ]);
119
125
  const tableConfig = {
@@ -130,12 +136,12 @@ export function topicCommands(program) {
130
136
  ]
131
137
  };
132
138
  const tableHeaders = ['Name', 'Description', 'System', 'Created'];
133
- console.log(table([tableHeaders, ...tableData], tableConfig));
139
+ console.log((0, table_1.table)([tableHeaders, ...tableData], tableConfig));
134
140
  }
135
141
  }
136
142
  catch (error) {
137
143
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
138
- console.error(chalk.red('✖ Failed to list topics:'), errorMessage);
144
+ console.error(chalk_1.default.red('✖ Failed to list topics:'), errorMessage);
139
145
  process.exit(1);
140
146
  }
141
147
  });
@@ -147,37 +153,37 @@ export function topicCommands(program) {
147
153
  .argument('<id>', 'topic ID')
148
154
  .action(async (id) => {
149
155
  try {
150
- const spinner = ora('Fetching topic...').start();
151
- const topic = await apiClient.getTopic(id);
156
+ const spinner = (0, ora_1.default)('Fetching topic...').start();
157
+ const topic = await api_js_1.apiClient.getTopic(id);
152
158
  spinner.stop();
153
- console.log(chalk.blue.bold('\n📁 Topic Details'));
159
+ console.log(chalk_1.default.blue.bold('\n📁 Topic Details'));
154
160
  console.log();
155
- console.log(chalk.green('Name:'), topic.name);
156
- console.log(chalk.green('ID:'), chalk.cyan(topic.id));
161
+ console.log(chalk_1.default.green('Name:'), topic.name);
162
+ console.log(chalk_1.default.green('ID:'), chalk_1.default.cyan(topic.id));
157
163
  if (topic.description) {
158
- console.log(chalk.green('Description:'), topic.description);
164
+ console.log(chalk_1.default.green('Description:'), topic.description);
159
165
  }
160
166
  if (topic.color) {
161
- console.log(chalk.green('Color:'), topic.color);
167
+ console.log(chalk_1.default.green('Color:'), topic.color);
162
168
  }
163
169
  if (topic.icon) {
164
- console.log(chalk.green('Icon:'), topic.icon);
170
+ console.log(chalk_1.default.green('Icon:'), topic.icon);
165
171
  }
166
172
  if (topic.parent_topic_id) {
167
- console.log(chalk.green('Parent Topic:'), topic.parent_topic_id);
173
+ console.log(chalk_1.default.green('Parent Topic:'), topic.parent_topic_id);
168
174
  }
169
- console.log(chalk.green('System Topic:'), topic.is_system ? 'Yes' : 'No');
170
- console.log(chalk.green('Created:'), format(new Date(topic.created_at), 'PPpp'));
171
- console.log(chalk.green('Updated:'), format(new Date(topic.updated_at), 'PPpp'));
175
+ console.log(chalk_1.default.green('System Topic:'), topic.is_system ? 'Yes' : 'No');
176
+ console.log(chalk_1.default.green('Created:'), (0, date_fns_1.format)(new Date(topic.created_at), 'PPpp'));
177
+ console.log(chalk_1.default.green('Updated:'), (0, date_fns_1.format)(new Date(topic.updated_at), 'PPpp'));
172
178
  if (topic.metadata && Object.keys(topic.metadata).length > 0) {
173
179
  console.log();
174
- console.log(chalk.green('Metadata:'));
180
+ console.log(chalk_1.default.green('Metadata:'));
175
181
  console.log(JSON.stringify(topic.metadata, null, 2));
176
182
  }
177
183
  }
178
184
  catch (error) {
179
185
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
180
- console.error(chalk.red('✖ Failed to get topic:'), errorMessage);
186
+ console.error(chalk_1.default.red('✖ Failed to get topic:'), errorMessage);
181
187
  process.exit(1);
182
188
  }
183
189
  });
@@ -196,10 +202,10 @@ export function topicCommands(program) {
196
202
  let updateData = {};
197
203
  if (options.interactive) {
198
204
  // First, get current topic data
199
- const spinner = ora('Fetching current topic...').start();
200
- const currentTopic = await apiClient.getTopic(id);
205
+ const spinner = (0, ora_1.default)('Fetching current topic...').start();
206
+ const currentTopic = await api_js_1.apiClient.getTopic(id);
201
207
  spinner.stop();
202
- const answers = await inquirer.prompt([
208
+ const answers = await inquirer_1.default.prompt([
203
209
  {
204
210
  type: 'input',
205
211
  name: 'name',
@@ -248,20 +254,20 @@ export function topicCommands(program) {
248
254
  updateData.icon = options.icon;
249
255
  }
250
256
  if (Object.keys(updateData).length === 0) {
251
- console.log(chalk.yellow('No updates specified'));
257
+ console.log(chalk_1.default.yellow('No updates specified'));
252
258
  return;
253
259
  }
254
- const spinner = ora('Updating topic...').start();
255
- const topic = await apiClient.updateTopic(id, updateData);
260
+ const spinner = (0, ora_1.default)('Updating topic...').start();
261
+ const topic = await api_js_1.apiClient.updateTopic(id, updateData);
256
262
  spinner.succeed('Topic updated successfully');
257
263
  console.log();
258
- console.log(chalk.green('✓ Topic updated:'));
259
- console.log(` ID: ${chalk.cyan(topic.id)}`);
264
+ console.log(chalk_1.default.green('✓ Topic updated:'));
265
+ console.log(` ID: ${chalk_1.default.cyan(topic.id)}`);
260
266
  console.log(` Name: ${topic.name}`);
261
267
  }
262
268
  catch (error) {
263
269
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
264
- console.error(chalk.red('✖ Failed to update topic:'), errorMessage);
270
+ console.error(chalk_1.default.red('✖ Failed to update topic:'), errorMessage);
265
271
  process.exit(1);
266
272
  }
267
273
  });
@@ -275,8 +281,8 @@ export function topicCommands(program) {
275
281
  .action(async (id, options) => {
276
282
  try {
277
283
  if (!options.force) {
278
- const topic = await apiClient.getTopic(id);
279
- const answer = await inquirer.prompt([
284
+ const topic = await api_js_1.apiClient.getTopic(id);
285
+ const answer = await inquirer_1.default.prompt([
280
286
  {
281
287
  type: 'confirm',
282
288
  name: 'confirm',
@@ -285,17 +291,17 @@ export function topicCommands(program) {
285
291
  }
286
292
  ]);
287
293
  if (!answer.confirm) {
288
- console.log(chalk.yellow('Deletion cancelled'));
294
+ console.log(chalk_1.default.yellow('Deletion cancelled'));
289
295
  return;
290
296
  }
291
297
  }
292
- const spinner = ora('Deleting topic...').start();
293
- await apiClient.deleteTopic(id);
298
+ const spinner = (0, ora_1.default)('Deleting topic...').start();
299
+ await api_js_1.apiClient.deleteTopic(id);
294
300
  spinner.succeed('Topic deleted successfully');
295
301
  }
296
302
  catch (error) {
297
303
  const errorMessage = error instanceof Error ? error.message : 'Unknown error';
298
- console.error(chalk.red('✖ Failed to delete topic:'), errorMessage);
304
+ console.error(chalk_1.default.red('✖ Failed to delete topic:'), errorMessage);
299
305
  process.exit(1);
300
306
  }
301
307
  });
@@ -1,11 +1,17 @@
1
+ "use strict";
1
2
  /**
2
3
  * Achievement System and Engagement Features
3
4
  * Gamification elements to enhance user engagement
4
5
  */
5
- import chalk from 'chalk';
6
- import boxen from 'boxen';
7
- import { EventEmitter } from 'events';
8
- export class AchievementSystem extends EventEmitter {
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AchievementSystem = void 0;
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const boxen_1 = __importDefault(require("boxen"));
13
+ const events_1 = require("events");
14
+ class AchievementSystem extends events_1.EventEmitter {
9
15
  stateManager;
10
16
  achievements;
11
17
  userStats;
@@ -265,10 +271,10 @@ export class AchievementSystem extends EventEmitter {
265
271
  * Show achievement celebration
266
272
  */
267
273
  celebrate(achievement) {
268
- const celebration = boxen(`${achievement.icon} ${chalk.bold.yellow('Achievement Unlocked!')}\n\n` +
269
- `${chalk.bold(achievement.name)}\n` +
270
- `${chalk.gray(achievement.description)}\n\n` +
271
- `${chalk.green(`+${achievement.points} points`)}`, {
274
+ const celebration = (0, boxen_1.default)(`${achievement.icon} ${chalk_1.default.bold.yellow('Achievement Unlocked!')}\n\n` +
275
+ `${chalk_1.default.bold(achievement.name)}\n` +
276
+ `${chalk_1.default.gray(achievement.description)}\n\n` +
277
+ `${chalk_1.default.green(`+${achievement.points} points`)}`, {
272
278
  padding: 1,
273
279
  borderStyle: 'double',
274
280
  borderColor: 'yellow',
@@ -281,14 +287,14 @@ export class AchievementSystem extends EventEmitter {
281
287
  */
282
288
  showAchievements() {
283
289
  console.clear();
284
- console.log(chalk.bold.yellow('🏆 Achievements\n'));
290
+ console.log(chalk_1.default.bold.yellow('🏆 Achievements\n'));
285
291
  const categories = ['usage', 'milestone', 'special', 'hidden'];
286
292
  const totalPoints = this.getTotalPoints();
287
293
  const unlockedPoints = this.getUnlockedPoints();
288
294
  // Summary
289
- console.log(boxen(`Points: ${chalk.bold.green(unlockedPoints)} / ${totalPoints}\n` +
290
- `Unlocked: ${chalk.bold(this.unlockedAchievements.size)} / ${this.achievements.size}\n` +
291
- `Completion: ${chalk.bold(Math.round((this.unlockedAchievements.size / this.achievements.size) * 100) + '%')}`, {
295
+ console.log((0, boxen_1.default)(`Points: ${chalk_1.default.bold.green(unlockedPoints)} / ${totalPoints}\n` +
296
+ `Unlocked: ${chalk_1.default.bold(this.unlockedAchievements.size)} / ${this.achievements.size}\n` +
297
+ `Completion: ${chalk_1.default.bold(Math.round((this.unlockedAchievements.size / this.achievements.size) * 100) + '%')}`, {
292
298
  padding: 1,
293
299
  borderStyle: 'single',
294
300
  borderColor: 'cyan'
@@ -299,7 +305,7 @@ export class AchievementSystem extends EventEmitter {
299
305
  .filter(a => a.category === category);
300
306
  if (categoryAchievements.length === 0)
301
307
  return;
302
- console.log(`\n${chalk.bold(this.getCategoryTitle(category))}\n`);
308
+ console.log(`\n${chalk_1.default.bold(this.getCategoryTitle(category))}\n`);
303
309
  categoryAchievements.forEach(achievement => {
304
310
  this.displayAchievement(achievement);
305
311
  });
@@ -311,9 +317,9 @@ export class AchievementSystem extends EventEmitter {
311
317
  displayAchievement(achievement) {
312
318
  const unlocked = achievement.unlocked || this.unlockedAchievements.has(achievement.id);
313
319
  const icon = unlocked ? achievement.icon : '🔒';
314
- const name = unlocked ? chalk.bold(achievement.name) : chalk.dim(achievement.name);
315
- const description = unlocked ? achievement.description : chalk.dim(achievement.description);
316
- const points = chalk.green(`${achievement.points}pts`);
320
+ const name = unlocked ? chalk_1.default.bold(achievement.name) : chalk_1.default.dim(achievement.name);
321
+ const description = unlocked ? achievement.description : chalk_1.default.dim(achievement.description);
322
+ const points = chalk_1.default.green(`${achievement.points}pts`);
317
323
  let progressBar = '';
318
324
  if (achievement.maxProgress && !unlocked) {
319
325
  const progress = achievement.progress || 0;
@@ -321,12 +327,12 @@ export class AchievementSystem extends EventEmitter {
321
327
  const barLength = 20;
322
328
  const filled = Math.round((progress / achievement.maxProgress) * barLength);
323
329
  const bar = '█'.repeat(filled) + '░'.repeat(barLength - filled);
324
- progressBar = `\n ${chalk.cyan(bar)} ${percentage}% (${progress}/${achievement.maxProgress})`;
330
+ progressBar = `\n ${chalk_1.default.cyan(bar)} ${percentage}% (${progress}/${achievement.maxProgress})`;
325
331
  }
326
332
  console.log(` ${icon} ${name} ${points}`);
327
333
  console.log(` ${description}${progressBar}`);
328
334
  if (unlocked && achievement.unlockedAt) {
329
- console.log(chalk.dim(` Unlocked: ${achievement.unlockedAt.toLocaleDateString()}`));
335
+ console.log(chalk_1.default.dim(` Unlocked: ${achievement.unlockedAt.toLocaleDateString()}`));
330
336
  }
331
337
  console.log();
332
338
  }
@@ -368,7 +374,7 @@ export class AchievementSystem extends EventEmitter {
368
374
  // Show subtle notification for new achievements
369
375
  if (newAchievements.length > 0 && !this.stateManager.getPreferences().expertMode) {
370
376
  newAchievements.forEach(achievement => {
371
- console.log(chalk.yellow(`\n🎉 Achievement unlocked: ${achievement.name}!`));
377
+ console.log(chalk_1.default.yellow(`\n🎉 Achievement unlocked: ${achievement.name}!`));
372
378
  });
373
379
  }
374
380
  }
@@ -423,3 +429,4 @@ export class AchievementSystem extends EventEmitter {
423
429
  // Would save to storage
424
430
  }
425
431
  }
432
+ exports.AchievementSystem = AchievementSystem;
@@ -1,11 +1,18 @@
1
+ "use strict";
1
2
  /**
2
3
  * Core Architecture for Enhanced CLI Experience
3
4
  * Implements the layered architecture for state management, interaction, and presentation
4
5
  */
5
- import { EventEmitter } from 'events';
6
- import chalk from 'chalk';
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SubtleAnimationController = exports.ResponsiveLayoutManager = exports.AdaptiveThemeEngine = exports.PresentationLayer = exports.InlineHelpProvider = exports.RealTimeFeedback = exports.ContextualValidator = exports.AdaptivePromptSystem = exports.InteractionEngine = exports.StateManager = void 0;
11
+ exports.createCLIArchitecture = createCLIArchitecture;
12
+ const events_1 = require("events");
13
+ const chalk_1 = __importDefault(require("chalk"));
7
14
  // State Management Layer
8
- export class StateManager extends EventEmitter {
15
+ class StateManager extends events_1.EventEmitter {
9
16
  navigationStack = [];
10
17
  userContext;
11
18
  sessionMemory;
@@ -66,7 +73,7 @@ export class StateManager extends EventEmitter {
66
73
  renderBreadcrumb() {
67
74
  if (this.navigationStack.length > 0) {
68
75
  const path = this.navigationStack.map(s => s.name).join(' > ');
69
- console.log(chalk.dim(path));
76
+ console.log(chalk_1.default.dim(path));
70
77
  }
71
78
  }
72
79
  // Context methods
@@ -112,8 +119,9 @@ export class StateManager extends EventEmitter {
112
119
  return this.sessionMemory.undoStack.pop();
113
120
  }
114
121
  }
122
+ exports.StateManager = StateManager;
115
123
  // Interaction Engine
116
- export class InteractionEngine {
124
+ class InteractionEngine {
117
125
  stateManager;
118
126
  promptSystem;
119
127
  validationEngine;
@@ -139,8 +147,9 @@ export class InteractionEngine {
139
147
  return this.helpSystem.getHelp();
140
148
  }
141
149
  }
150
+ exports.InteractionEngine = InteractionEngine;
142
151
  // Adaptive Prompt System
143
- export class AdaptivePromptSystem {
152
+ class AdaptivePromptSystem {
144
153
  stateManager;
145
154
  constructor(stateManager) {
146
155
  this.stateManager = stateManager;
@@ -166,8 +175,9 @@ export class AdaptivePromptSystem {
166
175
  return null;
167
176
  }
168
177
  }
178
+ exports.AdaptivePromptSystem = AdaptivePromptSystem;
169
179
  // Contextual Validator
170
- export class ContextualValidator {
180
+ class ContextualValidator {
171
181
  validate(value, rules) {
172
182
  const errors = [];
173
183
  const warnings = [];
@@ -194,14 +204,15 @@ export class ContextualValidator {
194
204
  };
195
205
  }
196
206
  }
207
+ exports.ContextualValidator = ContextualValidator;
197
208
  // Real-time Feedback System
198
- export class RealTimeFeedback {
209
+ class RealTimeFeedback {
199
210
  icons = {
200
- success: chalk.green('✓'),
201
- error: chalk.red('✖'),
202
- warning: chalk.yellow('⚠'),
203
- info: chalk.cyan('ℹ'),
204
- loading: chalk.blue('◐')
211
+ success: chalk_1.default.green('✓'),
212
+ error: chalk_1.default.red('✖'),
213
+ warning: chalk_1.default.yellow('⚠'),
214
+ info: chalk_1.default.cyan('ℹ'),
215
+ loading: chalk_1.default.blue('◐')
205
216
  };
206
217
  show(message, type) {
207
218
  const icon = this.icons[type];
@@ -210,16 +221,17 @@ export class RealTimeFeedback {
210
221
  }
211
222
  getColorFunction(type) {
212
223
  switch (type) {
213
- case 'success': return chalk.green;
214
- case 'error': return chalk.red;
215
- case 'warning': return chalk.yellow;
216
- case 'info': return chalk.cyan;
217
- default: return chalk.white;
224
+ case 'success': return chalk_1.default.green;
225
+ case 'error': return chalk_1.default.red;
226
+ case 'warning': return chalk_1.default.yellow;
227
+ case 'info': return chalk_1.default.cyan;
228
+ default: return chalk_1.default.white;
218
229
  }
219
230
  }
220
231
  }
232
+ exports.RealTimeFeedback = RealTimeFeedback;
221
233
  // Inline Help Provider
222
- export class InlineHelpProvider {
234
+ class InlineHelpProvider {
223
235
  stateManager;
224
236
  constructor(stateManager) {
225
237
  this.stateManager = stateManager;
@@ -244,8 +256,9 @@ export class InlineHelpProvider {
244
256
  return helps[state.name] || 'Type "?" for help, "←" to go back';
245
257
  }
246
258
  }
259
+ exports.InlineHelpProvider = InlineHelpProvider;
247
260
  // Presentation Layer
248
- export class PresentationLayer {
261
+ class PresentationLayer {
249
262
  themeEngine;
250
263
  layoutManager;
251
264
  animationController;
@@ -264,31 +277,32 @@ export class PresentationLayer {
264
277
  this.animationController.animate(_element, _animation);
265
278
  }
266
279
  }
280
+ exports.PresentationLayer = PresentationLayer;
267
281
  // Theme Engine
268
- export class AdaptiveThemeEngine {
282
+ class AdaptiveThemeEngine {
269
283
  currentTheme = 'default';
270
284
  themes = {
271
285
  default: {
272
- primary: chalk.blue.bold,
273
- secondary: chalk.gray,
274
- success: chalk.green,
275
- warning: chalk.yellow,
276
- error: chalk.red,
277
- info: chalk.cyan,
278
- accent: chalk.magenta,
279
- muted: chalk.dim,
280
- highlight: chalk.white.bold
286
+ primary: chalk_1.default.blue.bold,
287
+ secondary: chalk_1.default.gray,
288
+ success: chalk_1.default.green,
289
+ warning: chalk_1.default.yellow,
290
+ error: chalk_1.default.red,
291
+ info: chalk_1.default.cyan,
292
+ accent: chalk_1.default.magenta,
293
+ muted: chalk_1.default.dim,
294
+ highlight: chalk_1.default.white.bold
281
295
  },
282
296
  dark: {
283
- primary: chalk.cyanBright.bold,
284
- secondary: chalk.gray,
285
- success: chalk.greenBright,
286
- warning: chalk.yellowBright,
287
- error: chalk.redBright,
288
- info: chalk.blueBright,
289
- accent: chalk.magentaBright,
290
- muted: chalk.dim,
291
- highlight: chalk.whiteBright.bold
297
+ primary: chalk_1.default.cyanBright.bold,
298
+ secondary: chalk_1.default.gray,
299
+ success: chalk_1.default.greenBright,
300
+ warning: chalk_1.default.yellowBright,
301
+ error: chalk_1.default.redBright,
302
+ info: chalk_1.default.blueBright,
303
+ accent: chalk_1.default.magentaBright,
304
+ muted: chalk_1.default.dim,
305
+ highlight: chalk_1.default.whiteBright.bold
292
306
  }
293
307
  };
294
308
  setTheme(theme) {
@@ -300,8 +314,9 @@ export class AdaptiveThemeEngine {
300
314
  return this.themes[this.currentTheme];
301
315
  }
302
316
  }
317
+ exports.AdaptiveThemeEngine = AdaptiveThemeEngine;
303
318
  // Layout Manager
304
- export class ResponsiveLayoutManager {
319
+ class ResponsiveLayoutManager {
305
320
  render(content, layout) {
306
321
  // Implement different layout strategies
307
322
  switch (layout) {
@@ -335,15 +350,17 @@ export class ResponsiveLayoutManager {
335
350
  // Implementation here
336
351
  }
337
352
  }
353
+ exports.ResponsiveLayoutManager = ResponsiveLayoutManager;
338
354
  // Animation Controller
339
- export class SubtleAnimationController {
355
+ class SubtleAnimationController {
340
356
  animate(_element, _animation) {
341
357
  // Implement subtle animations for CLI
342
358
  // This would handle progress bars, spinners, etc.
343
359
  }
344
360
  }
361
+ exports.SubtleAnimationController = SubtleAnimationController;
345
362
  // Factory to create the complete architecture
346
- export function createCLIArchitecture() {
363
+ function createCLIArchitecture() {
347
364
  const stateManager = new StateManager();
348
365
  const interactionEngine = new InteractionEngine(stateManager);
349
366
  const presentationLayer = new PresentationLayer();