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,65 +1,31 @@
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);
26
- };
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;
33
- };
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 inquirer_1 = __importDefault(require("inquirer"));
41
- const chalk_1 = __importDefault(require("chalk"));
42
- const path = __importStar(require("path"));
43
- const json5_1 = __importDefault(require("json5"));
44
- const agent_manager_1 = require("../../core/agent-manager");
45
- const doc_injector_1 = require("../../core/doc-injector");
46
- const agents_md_generator_1 = require("../../core/adapters/agents-md-generator");
47
- const octo_md_generator_1 = require("../../core/adapters/octo-md-generator");
48
- const warp_md_generator_1 = require("../../core/adapters/warp-md-generator");
49
- const copilot_instructions_generator_1 = require("../../core/adapters/copilot-instructions-generator");
50
- const file_system_1 = require("../../utils/file-system");
51
- const config_1 = require("../../types/config");
52
- const gemini_adapter_1 = require("../../core/adapters/gemini-adapter");
53
- const qwen_adapter_1 = require("../../core/adapters/qwen-adapter");
54
- const template_loader_1 = require("../../utils/template-loader");
55
- const legacy_command_cleanup_1 = require("../../utils/legacy-command-cleanup");
56
- class Init extends core_1.Command {
1
+ import { Command } from '@oclif/core';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import * as path from 'path';
5
+ import JSON5 from 'json5';
6
+ import { AgentManager } from '../../core/agent-manager.js';
7
+ import { DocInjector } from '../../core/doc-injector.js';
8
+ import { AgentsMdGenerator } from '../../core/adapters/agents-md-generator.js';
9
+ import { OctoMdGenerator } from '../../core/adapters/octo-md-generator.js';
10
+ import { WarpMdGenerator } from '../../core/adapters/warp-md-generator.js';
11
+ import { CopilotInstructionsGenerator } from '../../core/adapters/copilot-instructions-generator.js';
12
+ import { FileSystem } from '../../utils/file-system.js';
13
+ import { DEFAULT_CONFIG } from '../../types/config.js';
14
+ import { GeminiAdapter } from '../../core/adapters/gemini-adapter.js';
15
+ import { QwenAdapter } from '../../core/adapters/qwen-adapter.js';
16
+ import { loadCommandTemplates } from '../../utils/template-loader.js';
17
+ import { collectLegacyCommandFiles } from '../../utils/legacy-command-cleanup.js';
18
+ export default class Init extends Command {
19
+ static description = 'Initialize Clavix in the current project';
20
+ static examples = [
21
+ '<%= config.bin %> <%= command.id %>',
22
+ ];
57
23
  async run() {
58
- console.log(chalk_1.default.bold.cyan('\n🚀 Clavix Initialization\n'));
24
+ console.log(chalk.bold.cyan('\n🚀 Clavix Initialization\n'));
59
25
  try {
60
26
  // Check if already initialized
61
- if (await file_system_1.FileSystem.exists('.clavix')) {
62
- const { reinit } = await inquirer_1.default.prompt([
27
+ if (await FileSystem.exists('.clavix')) {
28
+ const { reinit } = await inquirer.prompt([
63
29
  {
64
30
  type: 'confirm',
65
31
  name: 'reinit',
@@ -68,15 +34,15 @@ class Init extends core_1.Command {
68
34
  },
69
35
  ]);
70
36
  if (!reinit) {
71
- console.log(chalk_1.default.yellow('\n✓ Initialization cancelled\n'));
37
+ console.log(chalk.yellow('\n✓ Initialization cancelled\n'));
72
38
  return;
73
39
  }
74
40
  }
75
41
  // Select providers (multi-select)
76
- const agentManager = new agent_manager_1.AgentManager();
77
- console.log(chalk_1.default.gray('Select AI development tools to support:\n'));
78
- console.log(chalk_1.default.gray('(Space to select, Enter to confirm)\n'));
79
- const { selectedProviders } = await inquirer_1.default.prompt([
42
+ const agentManager = new AgentManager();
43
+ console.log(chalk.gray('Select AI development tools to support:\n'));
44
+ console.log(chalk.gray('(Space to select, Enter to confirm)\n'));
45
+ const { selectedProviders } = await inquirer.prompt([
80
46
  {
81
47
  type: 'checkbox',
82
48
  name: 'selectedProviders',
@@ -123,7 +89,7 @@ class Init extends core_1.Command {
123
89
  name: 'Qwen Code (.qwen/commands/clavix/)',
124
90
  value: 'qwen',
125
91
  },
126
- new inquirer_1.default.Separator(),
92
+ new inquirer.Separator(),
127
93
  // IDE & IDE Extensions
128
94
  {
129
95
  name: 'Cursor (.cursor/commands/)',
@@ -145,7 +111,7 @@ class Init extends core_1.Command {
145
111
  name: 'Cline (.clinerules/workflows/)',
146
112
  value: 'cline',
147
113
  },
148
- new inquirer_1.default.Separator(),
114
+ new inquirer.Separator(),
149
115
  // Universal Adapters
150
116
  {
151
117
  name: 'Agents (AGENTS.md - Universal - for tools without slash commands)',
@@ -163,7 +129,7 @@ class Init extends core_1.Command {
163
129
  name: 'Octofriend (OCTO.md - optimized for Octofriend)',
164
130
  value: 'octo-md',
165
131
  },
166
- new inquirer_1.default.Separator(),
132
+ new inquirer.Separator(),
167
133
  ],
168
134
  validate: (answer) => {
169
135
  if (answer.length === 0) {
@@ -174,48 +140,48 @@ class Init extends core_1.Command {
174
140
  },
175
141
  ]);
176
142
  if (!selectedProviders || selectedProviders.length === 0) {
177
- console.log(chalk_1.default.red('\n✗ No providers selected\n'));
143
+ console.log(chalk.red('\n✗ No providers selected\n'));
178
144
  return;
179
145
  }
180
146
  // Create .clavix directory structure
181
- console.log(chalk_1.default.cyan('\n📁 Creating directory structure...'));
147
+ console.log(chalk.cyan('\n📁 Creating directory structure...'));
182
148
  await this.createDirectoryStructure();
183
149
  // Generate config
184
- console.log(chalk_1.default.cyan('⚙️ Generating configuration...'));
150
+ console.log(chalk.cyan('⚙️ Generating configuration...'));
185
151
  await this.generateConfig(selectedProviders);
186
152
  // Generate INSTRUCTIONS.md
187
153
  await this.generateInstructions();
188
154
  // Generate commands for each selected provider
189
- console.log(chalk_1.default.cyan(`\n📝 Generating commands for ${selectedProviders.length} provider(s)...\n`));
155
+ console.log(chalk.cyan(`\n📝 Generating commands for ${selectedProviders.length} provider(s)...\n`));
190
156
  for (const providerName of selectedProviders) {
191
157
  // Handle agents-md separately (it's not an adapter)
192
158
  if (providerName === 'agents-md') {
193
- console.log(chalk_1.default.gray(' ✓ Generating AGENTS.md...'));
194
- await agents_md_generator_1.AgentsMdGenerator.generate();
159
+ console.log(chalk.gray(' ✓ Generating AGENTS.md...'));
160
+ await AgentsMdGenerator.generate();
195
161
  continue;
196
162
  }
197
163
  // Handle copilot-instructions separately (it's not an adapter)
198
164
  if (providerName === 'copilot-instructions') {
199
- console.log(chalk_1.default.gray(' ✓ Generating .github/copilot-instructions.md...'));
200
- await copilot_instructions_generator_1.CopilotInstructionsGenerator.generate();
165
+ console.log(chalk.gray(' ✓ Generating .github/copilot-instructions.md...'));
166
+ await CopilotInstructionsGenerator.generate();
201
167
  continue;
202
168
  }
203
169
  // Handle octo-md separately (it's not an adapter)
204
170
  if (providerName === 'octo-md') {
205
- console.log(chalk_1.default.gray(' ✓ Generating OCTO.md...'));
206
- await octo_md_generator_1.OctoMdGenerator.generate();
171
+ console.log(chalk.gray(' ✓ Generating OCTO.md...'));
172
+ await OctoMdGenerator.generate();
207
173
  continue;
208
174
  }
209
175
  if (providerName === 'warp-md') {
210
- console.log(chalk_1.default.gray(' ✓ Generating WARP.md...'));
211
- await warp_md_generator_1.WarpMdGenerator.generate();
176
+ console.log(chalk.gray(' ✓ Generating WARP.md...'));
177
+ await WarpMdGenerator.generate();
212
178
  continue;
213
179
  }
214
180
  let adapter = agentManager.requireAdapter(providerName);
215
- console.log(chalk_1.default.gray(` ✓ Generating ${adapter.displayName} commands...`));
181
+ console.log(chalk.gray(` ✓ Generating ${adapter.displayName} commands...`));
216
182
  if (adapter.name === 'codex') {
217
183
  const codexPath = adapter.getCommandPath();
218
- const { confirmCodex } = await inquirer_1.default.prompt([
184
+ const { confirmCodex } = await inquirer.prompt([
219
185
  {
220
186
  type: 'confirm',
221
187
  name: 'confirmCodex',
@@ -224,13 +190,13 @@ class Init extends core_1.Command {
224
190
  },
225
191
  ]);
226
192
  if (!confirmCodex) {
227
- console.log(chalk_1.default.yellow(' ⊗ Skipped Codex CLI'));
193
+ console.log(chalk.yellow(' ⊗ Skipped Codex CLI'));
228
194
  continue;
229
195
  }
230
196
  }
231
197
  if (adapter.name === 'gemini' || adapter.name === 'qwen') {
232
198
  const defaultNamespacePath = path.join(`.${adapter.name}`, 'commands', 'clavix');
233
- const { useNamespace } = await inquirer_1.default.prompt([
199
+ const { useNamespace } = await inquirer.prompt([
234
200
  {
235
201
  type: 'confirm',
236
202
  name: 'useNamespace',
@@ -240,18 +206,18 @@ class Init extends core_1.Command {
240
206
  ]);
241
207
  if (!useNamespace) {
242
208
  adapter = adapter.name === 'gemini'
243
- ? new gemini_adapter_1.GeminiAdapter({ useNamespace: false })
244
- : new qwen_adapter_1.QwenAdapter({ useNamespace: false });
245
- console.log(chalk_1.default.gray(` → Using ${adapter.getCommandPath()} (no namespacing)`));
209
+ ? new GeminiAdapter({ useNamespace: false })
210
+ : new QwenAdapter({ useNamespace: false });
211
+ console.log(chalk.gray(` → Using ${adapter.getCommandPath()} (no namespacing)`));
246
212
  }
247
213
  }
248
214
  // Validate before generating
249
215
  if (adapter.validate) {
250
216
  const validation = await adapter.validate();
251
217
  if (!validation.valid) {
252
- console.log(chalk_1.default.yellow(` ⚠ Validation warnings for ${adapter.displayName}:`));
253
- validation.errors?.forEach((err) => console.log(chalk_1.default.yellow(` - ${err}`)));
254
- const { continueAnyway } = await inquirer_1.default.prompt([
218
+ console.log(chalk.yellow(` ⚠ Validation warnings for ${adapter.displayName}:`));
219
+ validation.errors?.forEach((err) => console.log(chalk.yellow(` - ${err}`)));
220
+ const { continueAnyway } = await inquirer.prompt([
255
221
  {
256
222
  type: 'confirm',
257
223
  name: 'continueAnyway',
@@ -260,7 +226,7 @@ class Init extends core_1.Command {
260
226
  },
261
227
  ]);
262
228
  if (!continueAnyway) {
263
- console.log(chalk_1.default.yellow(` ⊗ Skipped ${adapter.displayName}`));
229
+ console.log(chalk.yellow(` ⊗ Skipped ${adapter.displayName}`));
264
230
  continue;
265
231
  }
266
232
  }
@@ -280,30 +246,30 @@ class Init extends core_1.Command {
280
246
  const slashName = filename.slice(0, -adapter.fileExtension.length);
281
247
  return `/${slashName}`;
282
248
  });
283
- console.log(chalk_1.default.green(` → Registered ${commandNames.join(', ')}`));
284
- console.log(chalk_1.default.gray(` Commands saved to ${commandPath}`));
285
- console.log(chalk_1.default.gray(' Tip: reopen the CLI or run /help to refresh the command list.'));
249
+ console.log(chalk.green(` → Registered ${commandNames.join(', ')}`));
250
+ console.log(chalk.gray(` Commands saved to ${commandPath}`));
251
+ console.log(chalk.gray(' Tip: reopen the CLI or run /help to refresh the command list.'));
286
252
  }
287
253
  // Inject documentation blocks (Claude Code only)
288
254
  if (providerName === 'claude-code') {
289
- console.log(chalk_1.default.gray(' ✓ Injecting CLAUDE.md documentation...'));
255
+ console.log(chalk.gray(' ✓ Injecting CLAUDE.md documentation...'));
290
256
  await this.injectDocumentation(adapter);
291
257
  }
292
258
  }
293
259
  // Success message
294
- console.log(chalk_1.default.bold.green('\n✅ Clavix initialized successfully!\n'));
295
- console.log(chalk_1.default.gray('Next steps:'));
296
- console.log(chalk_1.default.gray(' • Slash commands are now available in your AI agent'));
297
- console.log(chalk_1.default.gray(' • Run'), chalk_1.default.cyan('clavix --help'), chalk_1.default.gray('to see all commands'));
298
- console.log(chalk_1.default.gray(' • Try'), chalk_1.default.cyan('/clavix:fast'), chalk_1.default.gray('for quick prompt improvements'));
299
- console.log(chalk_1.default.gray(' • Try'), chalk_1.default.cyan('/clavix:deep'), chalk_1.default.gray('for comprehensive prompt analysis'));
300
- console.log(chalk_1.default.gray(' • Use'), chalk_1.default.cyan('/clavix:prd'), chalk_1.default.gray('to generate a PRD\n'));
260
+ console.log(chalk.bold.green('\n✅ Clavix initialized successfully!\n'));
261
+ console.log(chalk.gray('Next steps:'));
262
+ console.log(chalk.gray(' • Slash commands are now available in your AI agent'));
263
+ console.log(chalk.gray(' • Run'), chalk.cyan('clavix --help'), chalk.gray('to see all commands'));
264
+ console.log(chalk.gray(' • Try'), chalk.cyan('/clavix:fast'), chalk.gray('for quick prompt improvements'));
265
+ console.log(chalk.gray(' • Try'), chalk.cyan('/clavix:deep'), chalk.gray('for comprehensive prompt analysis'));
266
+ console.log(chalk.gray(' • Use'), chalk.cyan('/clavix:prd'), chalk.gray('to generate a PRD\n'));
301
267
  }
302
268
  catch (error) {
303
- const { getErrorMessage, toError } = await Promise.resolve().then(() => __importStar(require('../../utils/error-utils.js')));
304
- console.error(chalk_1.default.red('\n✗ Initialization failed:'), getErrorMessage(error));
269
+ const { getErrorMessage, toError } = await import('../../utils/error-utils.js');
270
+ console.error(chalk.red('\n✗ Initialization failed:'), getErrorMessage(error));
305
271
  if (error && typeof error === 'object' && 'hint' in error && typeof error.hint === 'string') {
306
- console.error(chalk_1.default.yellow(' Hint:'), error.hint);
272
+ console.error(chalk.yellow(' Hint:'), error.hint);
307
273
  }
308
274
  throw toError(error);
309
275
  }
@@ -316,17 +282,17 @@ class Init extends core_1.Command {
316
282
  '.clavix/templates',
317
283
  ];
318
284
  for (const dir of dirs) {
319
- await file_system_1.FileSystem.ensureDir(dir);
285
+ await FileSystem.ensureDir(dir);
320
286
  }
321
287
  }
322
288
  async generateConfig(providers) {
323
289
  const config = {
324
- ...config_1.DEFAULT_CONFIG,
290
+ ...DEFAULT_CONFIG,
325
291
  providers,
326
292
  };
327
293
  const configPath = '.clavix/config.json';
328
- const configContent = json5_1.default.stringify(config, null, 2);
329
- await file_system_1.FileSystem.writeFileAtomic(configPath, configContent);
294
+ const configContent = JSON5.stringify(config, null, 2);
295
+ await FileSystem.writeFileAtomic(configPath, configContent);
330
296
  }
331
297
  async generateInstructions() {
332
298
  const instructions = `# Clavix Instructions
@@ -377,27 +343,27 @@ See documentation for template format details.
377
343
  - Documentation: https://github.com/Bob5k/Clavix
378
344
  - Issues: https://github.com/Bob5k/Clavix/issues
379
345
  `;
380
- await file_system_1.FileSystem.writeFileAtomic('.clavix/INSTRUCTIONS.md', instructions);
346
+ await FileSystem.writeFileAtomic('.clavix/INSTRUCTIONS.md', instructions);
381
347
  }
382
348
  async generateSlashCommands(adapter) {
383
- const templates = await (0, template_loader_1.loadCommandTemplates)(adapter);
349
+ const templates = await loadCommandTemplates(adapter);
384
350
  await adapter.generateCommands(templates);
385
351
  return templates;
386
352
  }
387
353
  async handleLegacyCommands(adapter, templates) {
388
354
  const commandNames = templates.map((template) => template.name);
389
- const legacyFiles = await (0, legacy_command_cleanup_1.collectLegacyCommandFiles)(adapter, commandNames);
355
+ const legacyFiles = await collectLegacyCommandFiles(adapter, commandNames);
390
356
  if (legacyFiles.length === 0) {
391
357
  return;
392
358
  }
393
359
  const relativePaths = legacyFiles
394
360
  .map((file) => path.relative(process.cwd(), file))
395
361
  .sort((a, b) => a.localeCompare(b));
396
- console.log(chalk_1.default.gray(` ⚠ Found ${relativePaths.length} deprecated command file(s):`));
362
+ console.log(chalk.gray(` ⚠ Found ${relativePaths.length} deprecated command file(s):`));
397
363
  for (const file of relativePaths) {
398
- console.log(chalk_1.default.gray(` • ${file}`));
364
+ console.log(chalk.gray(` • ${file}`));
399
365
  }
400
- const { removeLegacy } = await inquirer_1.default.prompt([
366
+ const { removeLegacy } = await inquirer.prompt([
401
367
  {
402
368
  type: 'confirm',
403
369
  name: 'removeLegacy',
@@ -406,22 +372,22 @@ See documentation for template format details.
406
372
  },
407
373
  ]);
408
374
  if (!removeLegacy) {
409
- console.log(chalk_1.default.gray(' ⊗ Kept legacy files (deprecated naming retained)'));
375
+ console.log(chalk.gray(' ⊗ Kept legacy files (deprecated naming retained)'));
410
376
  return;
411
377
  }
412
378
  for (const file of legacyFiles) {
413
- await file_system_1.FileSystem.remove(file);
414
- console.log(chalk_1.default.gray(` ✓ Removed ${path.relative(process.cwd(), file)}`));
379
+ await FileSystem.remove(file);
380
+ console.log(chalk.gray(` ✓ Removed ${path.relative(process.cwd(), file)}`));
415
381
  }
416
382
  }
417
383
  async injectDocumentation(adapter) {
418
384
  // Inject AGENTS.md
419
- const agentsContent = doc_injector_1.DocInjector.getDefaultAgentsContent();
420
- await doc_injector_1.DocInjector.injectBlock('AGENTS.md', this.extractClavixBlock(agentsContent));
385
+ const agentsContent = DocInjector.getDefaultAgentsContent();
386
+ await DocInjector.injectBlock('AGENTS.md', this.extractClavixBlock(agentsContent));
421
387
  // Inject CLAUDE.md if Claude Code selected
422
388
  if (adapter.name === 'claude-code') {
423
- const claudeContent = doc_injector_1.DocInjector.getDefaultClaudeContent();
424
- await doc_injector_1.DocInjector.injectBlock('CLAUDE.md', this.extractClavixBlock(claudeContent));
389
+ const claudeContent = DocInjector.getDefaultClaudeContent();
390
+ await DocInjector.injectBlock('CLAUDE.md', this.extractClavixBlock(claudeContent));
425
391
  }
426
392
  }
427
393
  extractClavixBlock(content) {
@@ -429,9 +395,4 @@ See documentation for template format details.
429
395
  return match ? match[1].trim() : content;
430
396
  }
431
397
  }
432
- Init.description = 'Initialize Clavix in the current project';
433
- Init.examples = [
434
- '<%= config.bin %> <%= command.id %>',
435
- ];
436
- exports.default = Init;
437
398
  //# sourceMappingURL=init.js.map
@@ -3,11 +3,11 @@ export default class List extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- sessions: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- outputs: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
- archived: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
- project: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
- limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
6
+ sessions: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ outputs: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ archived: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
11
11
  };
12
12
  run(): Promise<void>;
13
13
  private listSessions;