clavix 2.7.1 → 2.8.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.
Files changed (165) hide show
  1. package/README.md +18 -4
  2. package/bin/clavix.js +12 -5
  3. package/dist/cli/commands/archive.d.ts +5 -4
  4. package/dist/cli/commands/archive.js +135 -161
  5. package/dist/cli/commands/config.d.ts +4 -4
  6. package/dist/cli/commands/config.js +66 -105
  7. package/dist/cli/commands/deep.d.ts +3 -3
  8. package/dist/cli/commands/deep.js +97 -103
  9. package/dist/cli/commands/execute.d.ts +4 -4
  10. package/dist/cli/commands/execute.js +57 -63
  11. package/dist/cli/commands/fast.d.ts +3 -3
  12. package/dist/cli/commands/fast.js +122 -128
  13. package/dist/cli/commands/implement.d.ts +4 -4
  14. package/dist/cli/commands/implement.js +84 -148
  15. package/dist/cli/commands/init.js +87 -126
  16. package/dist/cli/commands/list.d.ts +5 -5
  17. package/dist/cli/commands/list.js +72 -111
  18. package/dist/cli/commands/plan.d.ts +7 -7
  19. package/dist/cli/commands/plan.js +92 -131
  20. package/dist/cli/commands/prd.d.ts +4 -4
  21. package/dist/cli/commands/prd.js +76 -111
  22. package/dist/cli/commands/prompts/clear.d.ts +6 -6
  23. package/dist/cli/commands/prompts/clear.js +70 -76
  24. package/dist/cli/commands/prompts/list.js +37 -43
  25. package/dist/cli/commands/show.d.ts +4 -4
  26. package/dist/cli/commands/show.js +72 -111
  27. package/dist/cli/commands/start.d.ts +3 -3
  28. package/dist/cli/commands/start.js +63 -101
  29. package/dist/cli/commands/summarize.d.ts +4 -4
  30. package/dist/cli/commands/summarize.js +81 -120
  31. package/dist/cli/commands/task-complete.d.ts +4 -4
  32. package/dist/cli/commands/task-complete.js +86 -123
  33. package/dist/cli/commands/update.d.ts +3 -3
  34. package/dist/cli/commands/update.js +97 -130
  35. package/dist/cli/commands/version.js +13 -48
  36. package/dist/core/adapters/agents-md-generator.js +17 -50
  37. package/dist/core/adapters/amp-adapter.d.ts +1 -1
  38. package/dist/core/adapters/amp-adapter.js +13 -21
  39. package/dist/core/adapters/augment-adapter.d.ts +2 -2
  40. package/dist/core/adapters/augment-adapter.js +16 -56
  41. package/dist/core/adapters/base-adapter.d.ts +1 -1
  42. package/dist/core/adapters/base-adapter.js +11 -47
  43. package/dist/core/adapters/claude-code-adapter.d.ts +2 -2
  44. package/dist/core/adapters/claude-code-adapter.js +19 -60
  45. package/dist/core/adapters/cline-adapter.d.ts +1 -1
  46. package/dist/core/adapters/cline-adapter.js +13 -21
  47. package/dist/core/adapters/codebuddy-adapter.d.ts +2 -2
  48. package/dist/core/adapters/codebuddy-adapter.js +17 -57
  49. package/dist/core/adapters/codex-adapter.d.ts +2 -2
  50. package/dist/core/adapters/codex-adapter.js +16 -56
  51. package/dist/core/adapters/copilot-instructions-generator.js +18 -51
  52. package/dist/core/adapters/crush-adapter.d.ts +2 -2
  53. package/dist/core/adapters/crush-adapter.js +13 -20
  54. package/dist/core/adapters/cursor-adapter.d.ts +1 -1
  55. package/dist/core/adapters/cursor-adapter.js +12 -20
  56. package/dist/core/adapters/droid-adapter.d.ts +2 -2
  57. package/dist/core/adapters/droid-adapter.js +14 -21
  58. package/dist/core/adapters/gemini-adapter.d.ts +2 -2
  59. package/dist/core/adapters/gemini-adapter.js +16 -52
  60. package/dist/core/adapters/kilocode-adapter.d.ts +1 -1
  61. package/dist/core/adapters/kilocode-adapter.js +12 -20
  62. package/dist/core/adapters/octo-md-generator.js +17 -50
  63. package/dist/core/adapters/opencode-adapter.d.ts +2 -2
  64. package/dist/core/adapters/opencode-adapter.js +14 -21
  65. package/dist/core/adapters/qwen-adapter.d.ts +2 -2
  66. package/dist/core/adapters/qwen-adapter.js +16 -52
  67. package/dist/core/adapters/roocode-adapter.d.ts +2 -2
  68. package/dist/core/adapters/roocode-adapter.js +12 -19
  69. package/dist/core/adapters/warp-md-generator.js +17 -50
  70. package/dist/core/adapters/windsurf-adapter.d.ts +1 -1
  71. package/dist/core/adapters/windsurf-adapter.js +12 -20
  72. package/dist/core/agent-manager.d.ts +1 -1
  73. package/dist/core/agent-manager.js +34 -38
  74. package/dist/core/archive-manager.js +10 -46
  75. package/dist/core/config-manager.d.ts +2 -2
  76. package/dist/core/config-manager.js +3 -40
  77. package/dist/core/conversation-analyzer.d.ts +1 -1
  78. package/dist/core/conversation-analyzer.js +1 -5
  79. package/dist/core/doc-injector.js +23 -60
  80. package/dist/core/git-manager.js +11 -48
  81. package/dist/core/prd-generator.js +16 -51
  82. package/dist/core/prompt-manager.js +6 -42
  83. package/dist/core/prompt-optimizer.js +1 -5
  84. package/dist/core/question-engine.js +6 -45
  85. package/dist/core/session-manager.d.ts +1 -1
  86. package/dist/core/session-manager.js +11 -49
  87. package/dist/core/task-manager.d.ts +26 -0
  88. package/dist/core/task-manager.js +243 -101
  89. package/dist/index.d.ts +2 -1
  90. package/dist/index.js +8 -12
  91. package/dist/templates/agents/agents.md +31 -2
  92. package/dist/templates/agents/copilot-instructions.md +1 -1
  93. package/dist/templates/agents/octo.md +20 -1
  94. package/dist/templates/agents/warp.md +1 -1
  95. package/dist/templates/slash-commands/_canonical/implement.md +33 -11
  96. package/dist/types/agent.js +1 -2
  97. package/dist/types/config.js +3 -8
  98. package/dist/types/errors.js +7 -13
  99. package/dist/types/session.js +1 -2
  100. package/dist/utils/agent-error-messages.js +1 -5
  101. package/dist/utils/error-utils.js +5 -12
  102. package/dist/utils/file-system.js +20 -57
  103. package/dist/utils/legacy-command-cleanup.d.ts +1 -1
  104. package/dist/utils/legacy-command-cleanup.js +9 -45
  105. package/dist/utils/template-loader.d.ts +1 -1
  106. package/dist/utils/template-loader.js +9 -41
  107. package/dist/utils/toml-templates.js +1 -4
  108. package/package.json +9 -4
  109. package/dist/core/adapters 2/agents-md-generator.d.ts +0 -26
  110. package/dist/core/adapters 2/agents-md-generator.js +0 -102
  111. package/dist/core/adapters 2/amp-adapter.d.ts +0 -27
  112. package/dist/core/adapters 2/amp-adapter.js +0 -42
  113. package/dist/core/adapters 2/augment-adapter.d.ts +0 -22
  114. package/dist/core/adapters 2/augment-adapter.js +0 -77
  115. package/dist/core/adapters 2/base-adapter.d.ts +0 -45
  116. package/dist/core/adapters 2/base-adapter.js +0 -142
  117. package/dist/core/adapters 2/claude-code-adapter.d.ts +0 -32
  118. package/dist/core/adapters 2/claude-code-adapter.js +0 -116
  119. package/dist/core/adapters 2/cline-adapter.d.ts +0 -34
  120. package/dist/core/adapters 2/cline-adapter.js +0 -52
  121. package/dist/core/adapters 2/codebuddy-adapter.d.ts +0 -24
  122. package/dist/core/adapters 2/codebuddy-adapter.js +0 -82
  123. package/dist/core/adapters 2/codex-adapter.d.ts +0 -24
  124. package/dist/core/adapters 2/codex-adapter.js +0 -79
  125. package/dist/core/adapters 2/copilot-instructions-generator.d.ts +0 -26
  126. package/dist/core/adapters 2/copilot-instructions-generator.js +0 -104
  127. package/dist/core/adapters 2/crush-adapter.d.ts +0 -35
  128. package/dist/core/adapters 2/crush-adapter.js +0 -49
  129. package/dist/core/adapters 2/cursor-adapter.d.ts +0 -25
  130. package/dist/core/adapters 2/cursor-adapter.js +0 -40
  131. package/dist/core/adapters 2/droid-adapter.d.ts +0 -33
  132. package/dist/core/adapters 2/droid-adapter.js +0 -57
  133. package/dist/core/adapters 2/gemini-adapter.d.ts +0 -27
  134. package/dist/core/adapters 2/gemini-adapter.js +0 -90
  135. package/dist/core/adapters 2/kilocode-adapter.d.ts +0 -34
  136. package/dist/core/adapters 2/kilocode-adapter.js +0 -49
  137. package/dist/core/adapters 2/octo-md-generator.d.ts +0 -26
  138. package/dist/core/adapters 2/octo-md-generator.js +0 -102
  139. package/dist/core/adapters 2/opencode-adapter.d.ts +0 -33
  140. package/dist/core/adapters 2/opencode-adapter.js +0 -56
  141. package/dist/core/adapters 2/qwen-adapter.d.ts +0 -27
  142. package/dist/core/adapters 2/qwen-adapter.js +0 -90
  143. package/dist/core/adapters 2/roocode-adapter.d.ts +0 -40
  144. package/dist/core/adapters 2/roocode-adapter.js +0 -68
  145. package/dist/core/adapters 2/warp-md-generator.d.ts +0 -17
  146. package/dist/core/adapters 2/warp-md-generator.js +0 -88
  147. package/dist/core/adapters 2/windsurf-adapter.d.ts +0 -34
  148. package/dist/core/adapters 2/windsurf-adapter.js +0 -49
  149. package/dist/core/agent-manager 2.js +0 -126
  150. package/dist/core/agent-manager.d 2.ts +0 -51
  151. package/dist/core/archive-manager 2.js +0 -338
  152. package/dist/core/archive-manager.d 2.ts +0 -100
  153. package/dist/core/conversation-analyzer.d 2.ts +0 -86
  154. package/dist/core/doc-injector 2.js +0 -236
  155. package/dist/core/doc-injector.d 2.ts +0 -51
  156. package/dist/core/git-manager 2.js +0 -214
  157. package/dist/core/git-manager.d 2.ts +0 -100
  158. package/dist/core/prompt-optimizer 2.js +0 -963
  159. package/dist/core/prompt-optimizer.d 2.ts +0 -268
  160. package/dist/core/question-engine 2.js +0 -395
  161. package/dist/core/question-engine.d 2.ts +0 -167
  162. package/dist/core/session-manager 2.js +0 -403
  163. package/dist/core/session-manager.d 2.ts +0 -139
  164. package/dist/core/task-manager 2.js +0 -689
  165. package/dist/core/task-manager.d 2.ts +0 -155
@@ -1,48 +1,39 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import * as path from 'path';
5
+ import inquirer from 'inquirer';
6
+ import { AgentManager } from '../../core/agent-manager.js';
7
+ export default class Config extends Command {
8
+ static description = 'Manage Clavix configuration';
9
+ static examples = [
10
+ '<%= config.bin %> <%= command.id %>',
11
+ '<%= config.bin %> <%= command.id %> get agent',
12
+ '<%= config.bin %> <%= command.id %> set agent cursor',
13
+ '<%= config.bin %> <%= command.id %> edit',
14
+ ];
15
+ static args = {
16
+ action: Args.string({
17
+ description: 'Action to perform (get, set, edit, reset)',
18
+ options: ['get', 'set', 'edit', 'reset'],
19
+ required: false,
20
+ }),
21
+ key: Args.string({
22
+ description: 'Configuration key',
23
+ required: false,
24
+ }),
25
+ value: Args.string({
26
+ description: 'Configuration value (for set action)',
27
+ required: false,
28
+ }),
26
29
  };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
30
+ static flags = {
31
+ global: Flags.boolean({
32
+ char: 'g',
33
+ description: 'Use global configuration (not implemented yet)',
34
+ default: false,
35
+ }),
33
36
  };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const core_1 = require("@oclif/core");
40
- const chalk_1 = __importDefault(require("chalk"));
41
- const fs = __importStar(require("fs-extra"));
42
- const path = __importStar(require("path"));
43
- const inquirer_1 = __importDefault(require("inquirer"));
44
- const agent_manager_1 = require("../../core/agent-manager");
45
- class Config extends core_1.Command {
46
37
  async run() {
47
38
  const { args, flags } = await this.parse(Config);
48
39
  if (flags.global) {
@@ -51,11 +42,11 @@ class Config extends core_1.Command {
51
42
  const clavixDir = path.join(process.cwd(), '.clavix');
52
43
  const configPath = path.join(clavixDir, 'config.json');
53
44
  if (!fs.existsSync(clavixDir) || !fs.existsSync(configPath)) {
54
- this.error(chalk_1.default.red('No .clavix directory found.') +
45
+ this.error(chalk.red('No .clavix directory found.') +
55
46
  '\n' +
56
- chalk_1.default.yellow('Run ') +
57
- chalk_1.default.cyan('clavix init') +
58
- chalk_1.default.yellow(' to initialize Clavix in this project.'));
47
+ chalk.yellow('Run ') +
48
+ chalk.cyan('clavix init') +
49
+ chalk.yellow(' to initialize Clavix in this project.'));
59
50
  }
60
51
  // If no action specified, show interactive menu
61
52
  if (!args.action) {
@@ -76,14 +67,14 @@ class Config extends core_1.Command {
76
67
  await this.resetConfig(configPath);
77
68
  break;
78
69
  default:
79
- this.error(chalk_1.default.red(`Unknown action: ${args.action}`));
70
+ this.error(chalk.red(`Unknown action: ${args.action}`));
80
71
  }
81
72
  }
82
73
  async showInteractiveMenu(configPath) {
83
74
  const config = this.loadConfig(configPath);
84
- this.log(chalk_1.default.bold.cyan('āš™ļø Clavix Configuration\n'));
75
+ this.log(chalk.bold.cyan('āš™ļø Clavix Configuration\n'));
85
76
  this.displayConfig(config);
86
- const { action } = await inquirer_1.default.prompt([
77
+ const { action } = await inquirer.prompt([
87
78
  {
88
79
  type: 'list',
89
80
  name: 'action',
@@ -117,15 +108,15 @@ class Config extends core_1.Command {
117
108
  async getConfig(configPath, key) {
118
109
  const config = this.loadConfig(configPath);
119
110
  if (!key) {
120
- this.log(chalk_1.default.bold.cyan('āš™ļø Current Configuration\n'));
111
+ this.log(chalk.bold.cyan('āš™ļø Current Configuration\n'));
121
112
  this.displayConfig(config);
122
113
  return;
123
114
  }
124
115
  const value = this.getNestedValue(config, key);
125
116
  if (value === undefined) {
126
- this.error(chalk_1.default.red(`Configuration key "${key}" not found`));
117
+ this.error(chalk.red(`Configuration key "${key}" not found`));
127
118
  }
128
- this.log(chalk_1.default.cyan(key) + chalk_1.default.gray(': ') + JSON.stringify(value, null, 2));
119
+ this.log(chalk.cyan(key) + chalk.gray(': ') + JSON.stringify(value, null, 2));
129
120
  }
130
121
  async setConfig(configPath, key, value) {
131
122
  if (!key || value === undefined) {
@@ -142,14 +133,14 @@ class Config extends core_1.Command {
142
133
  }
143
134
  this.setNestedValue(config, key, parsedValue);
144
135
  this.saveConfig(configPath, config);
145
- this.log(chalk_1.default.green(`āœ… Set ${chalk_1.default.cyan(key)} to ${JSON.stringify(parsedValue)}`));
136
+ this.log(chalk.green(`āœ… Set ${chalk.cyan(key)} to ${JSON.stringify(parsedValue)}`));
146
137
  }
147
138
  async editConfig(configPath) {
148
139
  const config = this.loadConfig(configPath);
149
140
  await this.editPreferences(configPath, config);
150
141
  }
151
142
  async resetConfig(configPath) {
152
- const { confirm } = await inquirer_1.default.prompt([
143
+ const { confirm } = await inquirer.prompt([
153
144
  {
154
145
  type: 'confirm',
155
146
  name: 'confirm',
@@ -158,21 +149,21 @@ class Config extends core_1.Command {
158
149
  },
159
150
  ]);
160
151
  if (!confirm) {
161
- this.log(chalk_1.default.gray('Cancelled'));
152
+ this.log(chalk.gray('Cancelled'));
162
153
  return;
163
154
  }
164
155
  const config = this.loadConfig(configPath);
165
156
  const defaultConfig = this.getDefaultConfig(config.agent);
166
157
  this.saveConfig(configPath, defaultConfig);
167
- this.log(chalk_1.default.green('āœ… Configuration reset to defaults'));
158
+ this.log(chalk.green('āœ… Configuration reset to defaults'));
168
159
  }
169
160
  async changeAgent(configPath, config) {
170
- const agentManager = new agent_manager_1.AgentManager();
161
+ const agentManager = new AgentManager();
171
162
  const availableAgents = await agentManager.detectAgents();
172
163
  if (availableAgents.length === 0) {
173
164
  this.error('No supported agents detected in this project');
174
165
  }
175
- const { newAgent } = await inquirer_1.default.prompt([
166
+ const { newAgent } = await inquirer.prompt([
176
167
  {
177
168
  type: 'list',
178
169
  name: 'newAgent',
@@ -185,17 +176,17 @@ class Config extends core_1.Command {
185
176
  },
186
177
  ]);
187
178
  if (newAgent === config.agent) {
188
- this.log(chalk_1.default.gray('No changes made'));
179
+ this.log(chalk.gray('No changes made'));
189
180
  return;
190
181
  }
191
182
  config.agent = newAgent;
192
183
  this.saveConfig(configPath, config);
193
- this.log(chalk_1.default.green(`āœ… Agent changed to ${newAgent}`));
194
- this.log(chalk_1.default.yellow('\nāš ļø Run ') + chalk_1.default.cyan('clavix update') + chalk_1.default.yellow(' to update slash commands'));
184
+ this.log(chalk.green(`āœ… Agent changed to ${newAgent}`));
185
+ this.log(chalk.yellow('\nāš ļø Run ') + chalk.cyan('clavix update') + chalk.yellow(' to update slash commands'));
195
186
  }
196
187
  async editPreferences(configPath, config) {
197
188
  const preferences = config.preferences || {};
198
- const answers = await inquirer_1.default.prompt([
189
+ const answers = await inquirer.prompt([
199
190
  {
200
191
  type: 'confirm',
201
192
  name: 'autoOpenOutputs',
@@ -217,14 +208,14 @@ class Config extends core_1.Command {
217
208
  ]);
218
209
  config.preferences = answers;
219
210
  this.saveConfig(configPath, config);
220
- this.log(chalk_1.default.green('\nāœ… Preferences updated'));
211
+ this.log(chalk.green('\nāœ… Preferences updated'));
221
212
  }
222
213
  loadConfig(configPath) {
223
214
  try {
224
215
  return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
225
216
  }
226
217
  catch (error) {
227
- this.error(chalk_1.default.red(`Failed to load configuration: ${error.message}`));
218
+ this.error(chalk.red(`Failed to load configuration: ${error.message}`));
228
219
  }
229
220
  }
230
221
  saveConfig(configPath, config) {
@@ -232,22 +223,22 @@ class Config extends core_1.Command {
232
223
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
233
224
  }
234
225
  catch (error) {
235
- this.error(chalk_1.default.red(`Failed to save configuration: ${error.message}`));
226
+ this.error(chalk.red(`Failed to save configuration: ${error.message}`));
236
227
  }
237
228
  }
238
229
  displayConfig(config) {
239
- this.log(` ${chalk_1.default.gray('Version:')} ${config.version}`);
240
- this.log(` ${chalk_1.default.gray('Agent:')} ${chalk_1.default.cyan(config.agent)}`);
230
+ this.log(` ${chalk.gray('Version:')} ${config.version}`);
231
+ this.log(` ${chalk.gray('Agent:')} ${chalk.cyan(config.agent)}`);
241
232
  if (config.preferences) {
242
- this.log(`\n ${chalk_1.default.bold('Preferences:')}`);
243
- this.log(` ${chalk_1.default.gray('Auto-open outputs:')} ${config.preferences.autoOpenOutputs ? chalk_1.default.green('yes') : chalk_1.default.gray('no')}`);
244
- this.log(` ${chalk_1.default.gray('Verbose logging:')} ${config.preferences.verboseLogging ? chalk_1.default.green('yes') : chalk_1.default.gray('no')}`);
245
- this.log(` ${chalk_1.default.gray('Preserve sessions:')} ${config.preferences.preserveSessions !== false ? chalk_1.default.green('yes') : chalk_1.default.gray('no')}`);
233
+ this.log(`\n ${chalk.bold('Preferences:')}`);
234
+ this.log(` ${chalk.gray('Auto-open outputs:')} ${config.preferences.autoOpenOutputs ? chalk.green('yes') : chalk.gray('no')}`);
235
+ this.log(` ${chalk.gray('Verbose logging:')} ${config.preferences.verboseLogging ? chalk.green('yes') : chalk.gray('no')}`);
236
+ this.log(` ${chalk.gray('Preserve sessions:')} ${config.preferences.preserveSessions !== false ? chalk.green('yes') : chalk.gray('no')}`);
246
237
  }
247
238
  if (config.outputs) {
248
- this.log(`\n ${chalk_1.default.bold('Outputs:')}`);
249
- this.log(` ${chalk_1.default.gray('Path:')} ${config.outputs.path || '.clavix/outputs'}`);
250
- this.log(` ${chalk_1.default.gray('Format:')} ${config.outputs.format || 'markdown'}`);
239
+ this.log(`\n ${chalk.bold('Outputs:')}`);
240
+ this.log(` ${chalk.gray('Path:')} ${config.outputs.path || '.clavix/outputs'}`);
241
+ this.log(` ${chalk.gray('Format:')} ${config.outputs.format || 'markdown'}`);
251
242
  }
252
243
  this.log('');
253
244
  }
@@ -291,34 +282,4 @@ class Config extends core_1.Command {
291
282
  };
292
283
  }
293
284
  }
294
- Config.description = 'Manage Clavix configuration';
295
- Config.examples = [
296
- '<%= config.bin %> <%= command.id %>',
297
- '<%= config.bin %> <%= command.id %> get agent',
298
- '<%= config.bin %> <%= command.id %> set agent cursor',
299
- '<%= config.bin %> <%= command.id %> edit',
300
- ];
301
- Config.args = {
302
- action: core_1.Args.string({
303
- description: 'Action to perform (get, set, edit, reset)',
304
- options: ['get', 'set', 'edit', 'reset'],
305
- required: false,
306
- }),
307
- key: core_1.Args.string({
308
- description: 'Configuration key',
309
- required: false,
310
- }),
311
- value: core_1.Args.string({
312
- description: 'Configuration value (for set action)',
313
- required: false,
314
- }),
315
- };
316
- Config.flags = {
317
- global: core_1.Flags.boolean({
318
- char: 'g',
319
- description: 'Use global configuration (not implemented yet)',
320
- default: false,
321
- }),
322
- };
323
- exports.default = Config;
324
285
  //# sourceMappingURL=config.js.map
@@ -3,11 +3,11 @@ export default class Deep extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- 'clear-only': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- 'framework-info': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
6
+ 'clear-only': import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ 'framework-info': import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
8
  };
9
9
  static args: {
10
- prompt: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
10
+ prompt: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
11
11
  };
12
12
  run(): Promise<void>;
13
13
  private displayOutput;
@@ -1,13 +1,29 @@
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
- const core_1 = require("@oclif/core");
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const prompt_optimizer_1 = require("../../core/prompt-optimizer");
9
- const prompt_manager_1 = require("../../core/prompt-manager");
10
- class Deep extends core_1.Command {
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import { PromptOptimizer } from '../../core/prompt-optimizer.js';
4
+ import { PromptManager } from '../../core/prompt-manager.js';
5
+ export default class Deep extends Command {
6
+ static description = 'Perform comprehensive deep analysis using full CLEAR framework (Concise, Logical, Explicit, Adaptive, Reflective)';
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %> "Create a login page"',
9
+ '<%= config.bin %> <%= command.id %> "Build an API for user management"',
10
+ ];
11
+ static flags = {
12
+ 'clear-only': Flags.boolean({
13
+ description: 'Show only CLEAR analysis without improved prompt',
14
+ default: false,
15
+ }),
16
+ 'framework-info': Flags.boolean({
17
+ description: 'Display CLEAR framework information',
18
+ default: false,
19
+ }),
20
+ };
21
+ static args = {
22
+ prompt: Args.string({
23
+ description: 'The prompt to analyze deeply',
24
+ required: true,
25
+ }),
26
+ };
11
27
  async run() {
12
28
  const { args, flags } = await this.parse(Deep);
13
29
  // Handle --framework-info flag
@@ -16,12 +32,12 @@ class Deep extends core_1.Command {
16
32
  return;
17
33
  }
18
34
  if (!args.prompt || args.prompt.trim().length === 0) {
19
- console.log(chalk_1.default.red('\nāœ— Please provide a prompt to analyze\n'));
20
- console.log(chalk_1.default.gray('Example:'), chalk_1.default.cyan('clavix deep "Create a login page"'));
35
+ console.log(chalk.red('\nāœ— Please provide a prompt to analyze\n'));
36
+ console.log(chalk.gray('Example:'), chalk.cyan('clavix deep "Create a login page"'));
21
37
  return;
22
38
  }
23
- console.log(chalk_1.default.bold.cyan('\nšŸ” Performing deep analysis using full CLEAR framework...\n'));
24
- const optimizer = new prompt_optimizer_1.PromptOptimizer();
39
+ console.log(chalk.bold.cyan('\nšŸ” Performing deep analysis using full CLEAR framework...\n'));
40
+ const optimizer = new PromptOptimizer();
25
41
  // Get CLEAR analysis (deep mode - all 5 components)
26
42
  const clearResult = optimizer.applyCLEARFramework(args.prompt, 'deep');
27
43
  const clearScore = optimizer.calculateCLEARScore(clearResult);
@@ -37,15 +53,15 @@ class Deep extends core_1.Command {
37
53
  await this.savePrompt(clearResult.improvedPrompt, args.prompt, clearScore);
38
54
  }
39
55
  displayOutput(result, clearResult, clearScore) {
40
- console.log(chalk_1.default.bold.cyan('šŸŽÆ CLEAR Framework Deep Analysis\n'));
56
+ console.log(chalk.bold.cyan('šŸŽÆ CLEAR Framework Deep Analysis\n'));
41
57
  // Display CLEAR Assessment (all 5 components for deep mode)
42
- console.log(chalk_1.default.bold('šŸ“Š Framework Assessment:\n'));
58
+ console.log(chalk.bold('šŸ“Š Framework Assessment:\n'));
43
59
  const getScoreColor = (score) => {
44
60
  if (score >= 80)
45
- return chalk_1.default.green;
61
+ return chalk.green;
46
62
  if (score >= 60)
47
- return chalk_1.default.yellow;
48
- return chalk_1.default.red;
63
+ return chalk.yellow;
64
+ return chalk.red;
49
65
  };
50
66
  // C, L, E (same as fast mode)
51
67
  const cColor = getScoreColor(clearScore.conciseness);
@@ -83,86 +99,86 @@ class Deep extends core_1.Command {
83
99
  const overallColor = getScoreColor(clearScore.overall);
84
100
  console.log(overallColor.bold(` Overall CLEAR Score: ${clearScore.overall.toFixed(0)}% (${clearScore.rating})\n`));
85
101
  // Display improved prompt
86
- console.log(chalk_1.default.bold.cyan('✨ CLEAR-Optimized Prompt:\n'));
87
- console.log(chalk_1.default.dim('─'.repeat(80)));
102
+ console.log(chalk.bold.cyan('✨ CLEAR-Optimized Prompt:\n'));
103
+ console.log(chalk.dim('─'.repeat(80)));
88
104
  console.log(clearResult.improvedPrompt);
89
- console.log(chalk_1.default.dim('─'.repeat(80)));
105
+ console.log(chalk.dim('─'.repeat(80)));
90
106
  console.log();
91
107
  // Changes made
92
108
  if (clearResult.changesSummary.length > 0) {
93
- console.log(chalk_1.default.bold.magenta('šŸ“ CLEAR Changes Made:\n'));
109
+ console.log(chalk.bold.magenta('šŸ“ CLEAR Changes Made:\n'));
94
110
  clearResult.changesSummary.forEach((change) => {
95
- console.log(chalk_1.default.magenta(` [${change.component}] ${change.change}`));
111
+ console.log(chalk.magenta(` [${change.component}] ${change.change}`));
96
112
  });
97
113
  console.log();
98
114
  }
99
115
  // Adaptive Variations (A)
100
116
  if (clearResult.adaptiveness) {
101
- console.log(chalk_1.default.bold.cyan('šŸ”„ Adaptive Variations:\n'));
117
+ console.log(chalk.bold.cyan('šŸ”„ Adaptive Variations:\n'));
102
118
  if (clearResult.adaptiveness.alternativePhrasings.length > 0) {
103
- console.log(chalk_1.default.cyan(' Alternative Phrasings:'));
119
+ console.log(chalk.cyan(' Alternative Phrasings:'));
104
120
  clearResult.adaptiveness.alternativePhrasings.forEach((p, i) => {
105
- console.log(chalk_1.default.cyan(` ${i + 1}. ${p}`));
121
+ console.log(chalk.cyan(` ${i + 1}. ${p}`));
106
122
  });
107
123
  console.log();
108
124
  }
109
125
  if (clearResult.adaptiveness.alternativeStructures.length > 0) {
110
- console.log(chalk_1.default.cyan(' Alternative Structures:'));
126
+ console.log(chalk.cyan(' Alternative Structures:'));
111
127
  clearResult.adaptiveness.alternativeStructures.forEach((alt, i) => {
112
- console.log(chalk_1.default.cyan(` ${i + 1}. ${alt.name}`));
113
- console.log(chalk_1.default.gray(` ${alt.benefits}`));
128
+ console.log(chalk.cyan(` ${i + 1}. ${alt.name}`));
129
+ console.log(chalk.gray(` ${alt.benefits}`));
114
130
  });
115
131
  console.log();
116
132
  }
117
133
  if (clearResult.adaptiveness.temperatureRecommendation !== undefined) {
118
- console.log(chalk_1.default.cyan(` Recommended Temperature: ${clearResult.adaptiveness.temperatureRecommendation}`));
134
+ console.log(chalk.cyan(` Recommended Temperature: ${clearResult.adaptiveness.temperatureRecommendation}`));
119
135
  console.log();
120
136
  }
121
137
  }
122
138
  // Reflection Checklist (R)
123
139
  if (clearResult.reflectiveness) {
124
- console.log(chalk_1.default.bold.yellow('šŸ¤” Reflection Checklist:\n'));
140
+ console.log(chalk.bold.yellow('šŸ¤” Reflection Checklist:\n'));
125
141
  if (clearResult.reflectiveness.validationChecklist.length > 0) {
126
- console.log(chalk_1.default.yellow(' Validation Steps:'));
142
+ console.log(chalk.yellow(' Validation Steps:'));
127
143
  clearResult.reflectiveness.validationChecklist.forEach((item) => {
128
- console.log(chalk_1.default.yellow(` ☐ ${item}`));
144
+ console.log(chalk.yellow(` ☐ ${item}`));
129
145
  });
130
146
  console.log();
131
147
  }
132
148
  if (clearResult.reflectiveness.edgeCases.length > 0) {
133
- console.log(chalk_1.default.yellow(' Edge Cases to Consider:'));
149
+ console.log(chalk.yellow(' Edge Cases to Consider:'));
134
150
  clearResult.reflectiveness.edgeCases.forEach((ec) => {
135
- console.log(chalk_1.default.yellow(` • ${ec}`));
151
+ console.log(chalk.yellow(` • ${ec}`));
136
152
  });
137
153
  console.log();
138
154
  }
139
155
  if (clearResult.reflectiveness.potentialIssues.length > 0) {
140
- console.log(chalk_1.default.yellow(' What Could Go Wrong:'));
156
+ console.log(chalk.yellow(' What Could Go Wrong:'));
141
157
  clearResult.reflectiveness.potentialIssues.forEach((issue) => {
142
- console.log(chalk_1.default.yellow(` • ${issue}`));
158
+ console.log(chalk.yellow(` • ${issue}`));
143
159
  });
144
160
  console.log();
145
161
  }
146
162
  if (clearResult.reflectiveness.factCheckingSteps.length > 0) {
147
- console.log(chalk_1.default.yellow(' Fact-Checking Steps:'));
163
+ console.log(chalk.yellow(' Fact-Checking Steps:'));
148
164
  clearResult.reflectiveness.factCheckingSteps.forEach((step) => {
149
- console.log(chalk_1.default.yellow(` • ${step}`));
165
+ console.log(chalk.yellow(` • ${step}`));
150
166
  });
151
167
  console.log();
152
168
  }
153
169
  }
154
- console.log(chalk_1.default.gray('šŸ’” Full CLEAR framework analysis complete!\n'));
170
+ console.log(chalk.gray('šŸ’” Full CLEAR framework analysis complete!\n'));
155
171
  }
156
172
  displayCLEAROnlyAnalysis(clearResult, clearScore) {
157
- console.log(chalk_1.default.bold.cyan('šŸŽÆ CLEAR Framework Analysis Only (Deep Mode)\n'));
173
+ console.log(chalk.bold.cyan('šŸŽÆ CLEAR Framework Analysis Only (Deep Mode)\n'));
158
174
  const getScoreColor = (score) => {
159
175
  if (score >= 80)
160
- return chalk_1.default.green;
176
+ return chalk.green;
161
177
  if (score >= 60)
162
- return chalk_1.default.yellow;
163
- return chalk_1.default.red;
178
+ return chalk.yellow;
179
+ return chalk.red;
164
180
  };
165
- console.log(chalk_1.default.bold('šŸ“Š Complete CLEAR Assessment:\n'));
181
+ console.log(chalk.bold('šŸ“Š Complete CLEAR Assessment:\n'));
166
182
  // Conciseness
167
183
  const cColor = getScoreColor(clearScore.conciseness);
168
184
  console.log(cColor.bold(` [C] Conciseness: ${clearScore.conciseness.toFixed(0)}%`));
@@ -221,11 +237,11 @@ class Deep extends core_1.Command {
221
237
  // Overall
222
238
  const overallColor = getScoreColor(clearScore.overall);
223
239
  console.log(overallColor.bold(` Overall Score: ${clearScore.overall.toFixed(0)}% (${clearScore.rating})\n`));
224
- console.log(chalk_1.default.gray('Use without --clear-only flag to see improved prompt and detailed sections.\n'));
240
+ console.log(chalk.gray('Use without --clear-only flag to see improved prompt and detailed sections.\n'));
225
241
  }
226
242
  async savePrompt(improvedPrompt, originalPrompt, clearScore) {
227
243
  try {
228
- const promptManager = new prompt_manager_1.PromptManager();
244
+ const promptManager = new PromptManager();
229
245
  // Build content with full CLEAR scores (including A and R)
230
246
  const content = `# Improved Prompt
231
247
 
@@ -245,85 +261,63 @@ ${originalPrompt}
245
261
  \`\`\`
246
262
  `;
247
263
  const metadata = await promptManager.savePrompt(content, 'deep', originalPrompt);
248
- console.log(chalk_1.default.green(`\nāœ… Prompt saved to: ${metadata.filename}`));
249
- console.log(chalk_1.default.cyan(`\nšŸ’” Next steps:`));
250
- console.log(chalk_1.default.cyan(` /clavix:execute - Implement this prompt`));
251
- console.log(chalk_1.default.cyan(` /clavix:prompts - Review all saved prompts`));
264
+ console.log(chalk.green(`\nāœ… Prompt saved to: ${metadata.filename}`));
265
+ console.log(chalk.cyan(`\nšŸ’” Next steps:`));
266
+ console.log(chalk.cyan(` /clavix:execute - Implement this prompt`));
267
+ console.log(chalk.cyan(` /clavix:prompts - Review all saved prompts`));
252
268
  console.log();
253
269
  }
254
270
  catch (error) {
255
271
  // Don't fail the command if saving fails
256
- console.log(chalk_1.default.yellow(`\nāš ļø Could not save prompt: ${error}`));
272
+ console.log(chalk.yellow(`\nāš ļø Could not save prompt: ${error}`));
257
273
  }
258
274
  }
259
275
  displayFrameworkInfo() {
260
- console.log(chalk_1.default.bold.cyan('\nšŸŽÆ CLEAR Framework for Prompt Engineering\n'));
261
- console.log(chalk_1.default.bold('What is CLEAR?\n'));
276
+ console.log(chalk.bold.cyan('\nšŸŽÆ CLEAR Framework for Prompt Engineering\n'));
277
+ console.log(chalk.bold('What is CLEAR?\n'));
262
278
  console.log('CLEAR is an academically-validated framework for creating effective prompts:');
263
279
  console.log();
264
- console.log(chalk_1.default.green.bold(' [C] Concise'));
265
- console.log(chalk_1.default.green(' Eliminate verbosity and pleasantries'));
266
- console.log(chalk_1.default.green(' Focus on essential information'));
267
- console.log(chalk_1.default.green(' Example: "Please could you maybe help" → "Create"'));
280
+ console.log(chalk.green.bold(' [C] Concise'));
281
+ console.log(chalk.green(' Eliminate verbosity and pleasantries'));
282
+ console.log(chalk.green(' Focus on essential information'));
283
+ console.log(chalk.green(' Example: "Please could you maybe help" → "Create"'));
268
284
  console.log();
269
- console.log(chalk_1.default.blue.bold(' [L] Logical'));
270
- console.log(chalk_1.default.blue(' Ensure coherent sequencing'));
271
- console.log(chalk_1.default.blue(' Structure: Context → Requirements → Constraints → Output'));
272
- console.log(chalk_1.default.blue(' Example: Put background before asking for results'));
285
+ console.log(chalk.blue.bold(' [L] Logical'));
286
+ console.log(chalk.blue(' Ensure coherent sequencing'));
287
+ console.log(chalk.blue(' Structure: Context → Requirements → Constraints → Output'));
288
+ console.log(chalk.blue(' Example: Put background before asking for results'));
273
289
  console.log();
274
- console.log(chalk_1.default.yellow.bold(' [E] Explicit'));
275
- console.log(chalk_1.default.yellow(' Specify persona, format, tone, and success criteria'));
276
- console.log(chalk_1.default.yellow(' Define exactly what you want'));
277
- console.log(chalk_1.default.yellow(' Example: "Build a dashboard" → "Build a React analytics dashboard with charts"'));
290
+ console.log(chalk.yellow.bold(' [E] Explicit'));
291
+ console.log(chalk.yellow(' Specify persona, format, tone, and success criteria'));
292
+ console.log(chalk.yellow(' Define exactly what you want'));
293
+ console.log(chalk.yellow(' Example: "Build a dashboard" → "Build a React analytics dashboard with charts"'));
278
294
  console.log();
279
- console.log(chalk_1.default.magenta.bold(' [A] Adaptive'));
280
- console.log(chalk_1.default.magenta(' Provide alternative approaches'));
281
- console.log(chalk_1.default.magenta(' Flexibility and customization'));
282
- console.log(chalk_1.default.magenta(' Example: User story, job story, or structured formats'));
295
+ console.log(chalk.magenta.bold(' [A] Adaptive'));
296
+ console.log(chalk.magenta(' Provide alternative approaches'));
297
+ console.log(chalk.magenta(' Flexibility and customization'));
298
+ console.log(chalk.magenta(' Example: User story, job story, or structured formats'));
283
299
  console.log();
284
- console.log(chalk_1.default.cyan.bold(' [R] Reflective'));
285
- console.log(chalk_1.default.cyan(' Enable validation and quality checks'));
286
- console.log(chalk_1.default.cyan(' Edge cases and "what could go wrong"'));
287
- console.log(chalk_1.default.cyan(' Example: Fact-checking steps, success criteria validation'));
300
+ console.log(chalk.cyan.bold(' [R] Reflective'));
301
+ console.log(chalk.cyan(' Enable validation and quality checks'));
302
+ console.log(chalk.cyan(' Edge cases and "what could go wrong"'));
303
+ console.log(chalk.cyan(' Example: Fact-checking steps, success criteria validation'));
288
304
  console.log();
289
- console.log(chalk_1.default.bold('Academic Foundation:\n'));
305
+ console.log(chalk.bold('Academic Foundation:\n'));
290
306
  console.log(' Developed by: Dr. Leo Lo');
291
307
  console.log(' Institution: Dean of Libraries, University of New Mexico');
292
308
  console.log(' Published: Journal of Academic Librarianship, July 2023');
293
309
  console.log(' Paper: "The CLEAR Path: A Framework for Enhancing Information');
294
310
  console.log(' Literacy through Prompt Engineering"');
295
311
  console.log();
296
- console.log(chalk_1.default.bold('Resources:\n'));
312
+ console.log(chalk.bold('Resources:\n'));
297
313
  console.log(' • Framework Guide: https://guides.library.tamucc.edu/prompt-engineering/clear');
298
314
  console.log(' • Research Paper: https://digitalrepository.unm.edu/cgi/viewcontent.cgi?article=1214&context=ulls_fsp');
299
315
  console.log();
300
- console.log(chalk_1.default.bold('Usage in Clavix:\n'));
301
- console.log(chalk_1.default.cyan(' clavix fast "prompt"') + chalk_1.default.gray(' # Uses C, L, E components'));
302
- console.log(chalk_1.default.cyan(' clavix deep "prompt"') + chalk_1.default.gray(' # Uses full CLEAR (C, L, E, A, R)'));
303
- console.log(chalk_1.default.cyan(' clavix deep --clear-only') + chalk_1.default.gray(' # Show scores only, no improvement'));
316
+ console.log(chalk.bold('Usage in Clavix:\n'));
317
+ console.log(chalk.cyan(' clavix fast "prompt"') + chalk.gray(' # Uses C, L, E components'));
318
+ console.log(chalk.cyan(' clavix deep "prompt"') + chalk.gray(' # Uses full CLEAR (C, L, E, A, R)'));
319
+ console.log(chalk.cyan(' clavix deep --clear-only') + chalk.gray(' # Show scores only, no improvement'));
304
320
  console.log();
305
321
  }
306
322
  }
307
- Deep.description = 'Perform comprehensive deep analysis using full CLEAR framework (Concise, Logical, Explicit, Adaptive, Reflective)';
308
- Deep.examples = [
309
- '<%= config.bin %> <%= command.id %> "Create a login page"',
310
- '<%= config.bin %> <%= command.id %> "Build an API for user management"',
311
- ];
312
- Deep.flags = {
313
- 'clear-only': core_1.Flags.boolean({
314
- description: 'Show only CLEAR analysis without improved prompt',
315
- default: false,
316
- }),
317
- 'framework-info': core_1.Flags.boolean({
318
- description: 'Display CLEAR framework information',
319
- default: false,
320
- }),
321
- };
322
- Deep.args = {
323
- prompt: core_1.Args.string({
324
- description: 'The prompt to analyze deeply',
325
- required: true,
326
- }),
327
- };
328
- exports.default = Deep;
329
323
  //# sourceMappingURL=deep.js.map