clavix 2.7.0 → 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 +22 -8
  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 +12 -7
  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,23 +1,22 @@
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_manager_1 = require("../../../core/prompt-manager");
9
- class PromptsList extends core_1.Command {
1
+ import { Command } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import { PromptManager } from '../../../core/prompt-manager.js';
4
+ export default class PromptsList extends Command {
5
+ static description = 'List all saved prompts with age warnings and storage statistics';
6
+ static examples = [
7
+ '<%= config.bin %> <%= command.id %>',
8
+ ];
10
9
  async run() {
11
- const promptManager = new prompt_manager_1.PromptManager();
10
+ const promptManager = new PromptManager();
12
11
  try {
13
12
  const prompts = await promptManager.listPrompts();
14
13
  const stats = await promptManager.getStorageStats();
15
- console.log(chalk_1.default.bold.cyan(`\nšŸ“‹ Saved Prompts (${prompts.length} total)\n`));
14
+ console.log(chalk.bold.cyan(`\nšŸ“‹ Saved Prompts (${prompts.length} total)\n`));
16
15
  if (prompts.length === 0) {
17
- console.log(chalk_1.default.gray('No prompts saved yet.\n'));
18
- console.log(chalk_1.default.cyan('Generate an optimized prompt:'));
19
- console.log(chalk_1.default.cyan(' /clavix:fast "your requirement"'));
20
- console.log(chalk_1.default.cyan(' /clavix:deep "your requirement"'));
16
+ console.log(chalk.gray('No prompts saved yet.\n'));
17
+ console.log(chalk.cyan('Generate an optimized prompt:'));
18
+ console.log(chalk.cyan(' /clavix:fast "your requirement"'));
19
+ console.log(chalk.cyan(' /clavix:deep "your requirement"'));
21
20
  console.log();
22
21
  return;
23
22
  }
@@ -25,75 +24,70 @@ class PromptsList extends core_1.Command {
25
24
  const fastPrompts = prompts.filter(p => p.source === 'fast');
26
25
  const deepPrompts = prompts.filter(p => p.source === 'deep');
27
26
  if (fastPrompts.length > 0) {
28
- console.log(chalk_1.default.bold('Fast Prompts:'));
27
+ console.log(chalk.bold('Fast Prompts:'));
29
28
  this.displayPrompts(fastPrompts);
30
29
  console.log();
31
30
  }
32
31
  if (deepPrompts.length > 0) {
33
- console.log(chalk_1.default.bold('Deep Prompts:'));
32
+ console.log(chalk.bold('Deep Prompts:'));
34
33
  this.displayPrompts(deepPrompts);
35
34
  console.log();
36
35
  }
37
36
  // Display storage statistics
38
- console.log(chalk_1.default.bold('šŸ“Š Storage Statistics:\n'));
39
- console.log(chalk_1.default.gray(` Total Prompts: ${stats.totalPrompts}`));
40
- console.log(chalk_1.default.gray(` Fast: ${stats.fastPrompts} | Deep: ${stats.deepPrompts}`));
41
- console.log(chalk_1.default.gray(` Executed: ${stats.executedPrompts} | Pending: ${stats.pendingPrompts}`));
37
+ console.log(chalk.bold('šŸ“Š Storage Statistics:\n'));
38
+ console.log(chalk.gray(` Total Prompts: ${stats.totalPrompts}`));
39
+ console.log(chalk.gray(` Fast: ${stats.fastPrompts} | Deep: ${stats.deepPrompts}`));
40
+ console.log(chalk.gray(` Executed: ${stats.executedPrompts} | Pending: ${stats.pendingPrompts}`));
42
41
  if (stats.oldestPromptAge > 0) {
43
- console.log(chalk_1.default.gray(` Oldest: ${stats.oldestPromptAge} days`));
42
+ console.log(chalk.gray(` Oldest: ${stats.oldestPromptAge} days`));
44
43
  }
45
44
  console.log();
46
45
  // Storage hygiene recommendations
47
46
  if (stats.stalePrompts > 0) {
48
- console.log(chalk_1.default.yellow(`āš ļø ${stats.stalePrompts} stale prompts (>30 days old)`));
49
- console.log(chalk_1.default.yellow(` Recommend: clavix prompts clear --stale\n`));
47
+ console.log(chalk.yellow(`āš ļø ${stats.stalePrompts} stale prompts (>30 days old)`));
48
+ console.log(chalk.yellow(` Recommend: clavix prompts clear --stale\n`));
50
49
  }
51
50
  if (stats.executedPrompts >= 10) {
52
- console.log(chalk_1.default.cyan(`šŸ’” ${stats.executedPrompts} executed prompts`));
53
- console.log(chalk_1.default.cyan(` Recommend: clavix prompts clear --executed\n`));
51
+ console.log(chalk.cyan(`šŸ’” ${stats.executedPrompts} executed prompts`));
52
+ console.log(chalk.cyan(` Recommend: clavix prompts clear --executed\n`));
54
53
  }
55
54
  if (stats.totalPrompts >= 20) {
56
- console.log(chalk_1.default.yellow(`āš ļø Storage approaching limit (${stats.totalPrompts}/recommended 20)`));
57
- console.log(chalk_1.default.yellow(` Consider cleanup: clavix prompts clear\n`));
55
+ console.log(chalk.yellow(`āš ļø Storage approaching limit (${stats.totalPrompts}/recommended 20)`));
56
+ console.log(chalk.yellow(` Consider cleanup: clavix prompts clear\n`));
58
57
  }
59
58
  }
60
59
  catch (error) {
61
- console.log(chalk_1.default.red(`\nāœ— Error: ${error}\n`));
60
+ console.log(chalk.red(`\nāœ— Error: ${error}\n`));
62
61
  }
63
62
  }
64
63
  displayPrompts(prompts) {
65
64
  prompts.forEach(p => {
66
- const status = p.executed ? chalk_1.default.green('āœ“') : chalk_1.default.gray('ā—‹');
65
+ const status = p.executed ? chalk.green('āœ“') : chalk.gray('ā—‹');
67
66
  const ageInDays = p.ageInDays || 0;
68
67
  // Age warning coloring
69
68
  let ageWarning = '';
70
69
  let ageStr = '';
71
70
  if (ageInDays === 0) {
72
- ageStr = chalk_1.default.gray('today');
71
+ ageStr = chalk.gray('today');
73
72
  }
74
73
  else if (ageInDays > 30) {
75
- ageStr = chalk_1.default.red(`${ageInDays}d`);
76
- ageWarning = chalk_1.default.red(' [STALE]');
74
+ ageStr = chalk.red(`${ageInDays}d`);
75
+ ageWarning = chalk.red(' [STALE]');
77
76
  }
78
77
  else if (ageInDays > 7) {
79
- ageStr = chalk_1.default.yellow(`${ageInDays}d`);
80
- ageWarning = chalk_1.default.yellow(' [OLD]');
78
+ ageStr = chalk.yellow(`${ageInDays}d`);
79
+ ageWarning = chalk.yellow(' [OLD]');
81
80
  }
82
81
  else {
83
- ageStr = chalk_1.default.gray(`${ageInDays}d`);
82
+ ageStr = chalk.gray(`${ageInDays}d`);
84
83
  }
85
84
  // Truncate original prompt for display
86
85
  const promptPreview = p.originalPrompt.length > 50
87
86
  ? p.originalPrompt.substring(0, 50) + '...'
88
87
  : p.originalPrompt;
89
- console.log(` ${status} ${chalk_1.default.dim(p.id)} (${ageStr})${ageWarning}`);
90
- console.log(` ${chalk_1.default.gray(promptPreview)}`);
88
+ console.log(` ${status} ${chalk.dim(p.id)} (${ageStr})${ageWarning}`);
89
+ console.log(` ${chalk.gray(promptPreview)}`);
91
90
  });
92
91
  }
93
92
  }
94
- PromptsList.description = 'List all saved prompts with age warnings and storage statistics';
95
- PromptsList.examples = [
96
- '<%= config.bin %> <%= command.id %>',
97
- ];
98
- exports.default = PromptsList;
99
93
  //# sourceMappingURL=list.js.map
@@ -3,12 +3,12 @@ export default class Show extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static args: {
6
- sessionId: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
+ sessionId: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
7
  };
8
8
  static flags: {
9
- output: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
- full: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
- limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ full: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
12
12
  };
13
13
  run(): Promise<void>;
14
14
  private showSession;
@@ -1,56 +1,46 @@
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 { SessionManager } from '../../core/session-manager.js';
6
+ export default class Show extends Command {
7
+ static description = 'Show detailed information about a session or output';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %> session-id',
10
+ '<%= config.bin %> <%= command.id %> session-id --full',
11
+ '<%= config.bin %> <%= command.id %> --output project-name',
12
+ ];
13
+ static args = {
14
+ sessionId: Args.string({
15
+ description: 'Session ID to show',
16
+ required: false,
17
+ }),
26
18
  };
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;
19
+ static flags = {
20
+ output: Flags.string({
21
+ char: 'o',
22
+ description: 'Show output directory contents',
23
+ }),
24
+ full: Flags.boolean({
25
+ char: 'f',
26
+ description: 'Show full conversation history',
27
+ default: false,
28
+ }),
29
+ limit: Flags.integer({
30
+ char: 'l',
31
+ description: 'Limit number of messages to show',
32
+ default: 10,
33
+ }),
33
34
  };
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 session_manager_1 = require("../../core/session-manager");
44
- class Show extends core_1.Command {
45
35
  async run() {
46
36
  const { args, flags } = await this.parse(Show);
47
37
  const clavixDir = path.join(process.cwd(), '.clavix');
48
38
  if (!fs.existsSync(clavixDir)) {
49
- this.error(chalk_1.default.red('No .clavix directory found.') +
39
+ this.error(chalk.red('No .clavix directory found.') +
50
40
  '\n' +
51
- chalk_1.default.yellow('Run ') +
52
- chalk_1.default.cyan('clavix init') +
53
- chalk_1.default.yellow(' to initialize Clavix in this project.'));
41
+ chalk.yellow('Run ') +
42
+ chalk.cyan('clavix init') +
43
+ chalk.yellow(' to initialize Clavix in this project.'));
54
44
  }
55
45
  // Show output directory if --output flag is used
56
46
  if (flags.output) {
@@ -63,68 +53,68 @@ class Show extends core_1.Command {
63
53
  return;
64
54
  }
65
55
  // If no arguments, show most recent session
66
- const sessionManager = new session_manager_1.SessionManager();
56
+ const sessionManager = new SessionManager();
67
57
  const sessions = await sessionManager.listSessions();
68
58
  if (sessions.length === 0) {
69
- this.error(chalk_1.default.yellow('No sessions found.') +
59
+ this.error(chalk.yellow('No sessions found.') +
70
60
  '\n' +
71
- chalk_1.default.gray('Run ') +
72
- chalk_1.default.cyan('clavix start') +
73
- chalk_1.default.gray(' to create a new session.'));
61
+ chalk.gray('Run ') +
62
+ chalk.cyan('clavix start') +
63
+ chalk.gray(' to create a new session.'));
74
64
  }
75
65
  // Get most recent session
76
66
  const mostRecent = sessions.sort((a, b) => new Date(b.updated).getTime() - new Date(a.updated).getTime())[0];
77
- this.log(chalk_1.default.gray('Showing most recent session:\n'));
67
+ this.log(chalk.gray('Showing most recent session:\n'));
78
68
  await this.showSession(mostRecent.id, flags.full, flags.limit);
79
69
  }
80
70
  async showSession(sessionId, showFull, limit) {
81
- const sessionManager = new session_manager_1.SessionManager();
71
+ const sessionManager = new SessionManager();
82
72
  try {
83
73
  const session = await sessionManager.getSession(sessionId);
84
74
  if (!session) {
85
- this.error(chalk_1.default.red(`Session "${sessionId}" not found.`));
75
+ this.error(chalk.red(`Session "${sessionId}" not found.`));
86
76
  }
87
77
  this.displaySessionHeader(session);
88
78
  // Show conversation history
89
79
  const messages = session.messages || [];
90
80
  if (messages.length === 0) {
91
- this.log(chalk_1.default.gray(' No messages in this session yet.'));
81
+ this.log(chalk.gray(' No messages in this session yet.'));
92
82
  return;
93
83
  }
94
- this.log(chalk_1.default.bold.cyan('\nšŸ’¬ Conversation History\n'));
84
+ this.log(chalk.bold.cyan('\nšŸ’¬ Conversation History\n'));
95
85
  const messagesToShow = showFull ? messages : messages.slice(0, limit);
96
86
  messagesToShow.forEach((msg, index) => {
97
87
  const timestamp = new Date(msg.timestamp).toLocaleTimeString();
98
- const roleColor = msg.role === 'user' ? chalk_1.default.blue : chalk_1.default.green;
88
+ const roleColor = msg.role === 'user' ? chalk.blue : chalk.green;
99
89
  const roleLabel = msg.role === 'user' ? 'User' : 'Assistant';
100
- this.log(` ${roleColor.bold(roleLabel)} ${chalk_1.default.gray(`[${timestamp}]`)}` +
90
+ this.log(` ${roleColor.bold(roleLabel)} ${chalk.gray(`[${timestamp}]`)}` +
101
91
  `\n ${this.wrapText(msg.content, 80)}` +
102
92
  (index < messagesToShow.length - 1 ? '\n' : ''));
103
93
  });
104
94
  if (!showFull && messages.length > limit) {
105
95
  this.log('');
106
- this.log(chalk_1.default.gray(` ... ${messages.length - limit} more messages`) +
96
+ this.log(chalk.gray(` ... ${messages.length - limit} more messages`) +
107
97
  '\n' +
108
- chalk_1.default.gray(` Use ${chalk_1.default.cyan('--full')} to see the complete conversation`));
98
+ chalk.gray(` Use ${chalk.cyan('--full')} to see the complete conversation`));
109
99
  }
110
100
  // Show associated outputs if any
111
101
  this.showAssociatedOutputs(session);
112
102
  }
113
103
  catch (error) {
114
- this.error(chalk_1.default.red(`Error loading session: ${error.message}`));
104
+ this.error(chalk.red(`Error loading session: ${error.message}`));
115
105
  }
116
106
  }
117
107
  displaySessionHeader(session) {
118
108
  const statusIcon = session.status === 'active' ? '🟢' : '⚪';
119
109
  const projectName = session.projectName || 'untitled';
120
- this.log(chalk_1.default.bold.cyan('šŸ“‹ Session Details\n'));
121
- this.log(` ${statusIcon} ${chalk_1.default.bold(projectName)}`);
122
- this.log(` ${chalk_1.default.gray('ID:')} ${session.id}`);
123
- this.log(` ${chalk_1.default.gray('Agent:')} ${session.agent || 'unknown'}`);
124
- this.log(` ${chalk_1.default.gray('Created:')} ${new Date(session.created).toLocaleString()}`);
125
- this.log(` ${chalk_1.default.gray('Updated:')} ${new Date(session.updated).toLocaleString()}`);
126
- this.log(` ${chalk_1.default.gray('Status:')} ${session.status === 'active' ? chalk_1.default.green('active') : chalk_1.default.gray('completed')}`);
127
- this.log(` ${chalk_1.default.gray('Messages:')} ${session.messages?.length || 0}`);
110
+ this.log(chalk.bold.cyan('šŸ“‹ Session Details\n'));
111
+ this.log(` ${statusIcon} ${chalk.bold(projectName)}`);
112
+ this.log(` ${chalk.gray('ID:')} ${session.id}`);
113
+ this.log(` ${chalk.gray('Agent:')} ${session.agent || 'unknown'}`);
114
+ this.log(` ${chalk.gray('Created:')} ${new Date(session.created).toLocaleString()}`);
115
+ this.log(` ${chalk.gray('Updated:')} ${new Date(session.updated).toLocaleString()}`);
116
+ this.log(` ${chalk.gray('Status:')} ${session.status === 'active' ? chalk.green('active') : chalk.gray('completed')}`);
117
+ this.log(` ${chalk.gray('Messages:')} ${session.messages?.length || 0}`);
128
118
  }
129
119
  showAssociatedOutputs(session) {
130
120
  const outputsDir = path.join(process.cwd(), '.clavix', 'outputs');
@@ -137,40 +127,40 @@ class Show extends core_1.Command {
137
127
  if (files.length === 0) {
138
128
  return;
139
129
  }
140
- this.log(chalk_1.default.bold.cyan('\nšŸ“ Associated Outputs\n'));
141
- this.log(` ${chalk_1.default.gray('Path:')} ${chalk_1.default.dim(path.relative(process.cwd(), projectOutputDir))}`);
142
- this.log(` ${chalk_1.default.gray('Files:')}`);
130
+ this.log(chalk.bold.cyan('\nšŸ“ Associated Outputs\n'));
131
+ this.log(` ${chalk.gray('Path:')} ${chalk.dim(path.relative(process.cwd(), projectOutputDir))}`);
132
+ this.log(` ${chalk.gray('Files:')}`);
143
133
  files.forEach(file => {
144
134
  const filePath = path.join(projectOutputDir, file);
145
135
  const stats = fs.statSync(filePath);
146
136
  const size = this.formatFileSize(stats.size);
147
- this.log(` • ${chalk_1.default.cyan(file)} ${chalk_1.default.gray(`(${size})`)}`);
137
+ this.log(` • ${chalk.cyan(file)} ${chalk.gray(`(${size})`)}`);
148
138
  });
149
139
  }
150
140
  async showOutput(projectName) {
151
141
  const outputsDir = path.join(process.cwd(), '.clavix', 'outputs', projectName);
152
142
  if (!fs.existsSync(outputsDir)) {
153
- this.error(chalk_1.default.red(`Output directory "${projectName}" not found.`));
143
+ this.error(chalk.red(`Output directory "${projectName}" not found.`));
154
144
  }
155
- this.log(chalk_1.default.bold.cyan(`šŸ“ Output: ${projectName}\n`));
156
- this.log(` ${chalk_1.default.gray('Path:')} ${chalk_1.default.dim(path.relative(process.cwd(), outputsDir))}`);
145
+ this.log(chalk.bold.cyan(`šŸ“ Output: ${projectName}\n`));
146
+ this.log(` ${chalk.gray('Path:')} ${chalk.dim(path.relative(process.cwd(), outputsDir))}`);
157
147
  const files = fs.readdirSync(outputsDir).filter(f => f.endsWith('.md'));
158
148
  if (files.length === 0) {
159
- this.log(chalk_1.default.gray(' No output files found.'));
149
+ this.log(chalk.gray(' No output files found.'));
160
150
  return;
161
151
  }
162
- this.log(`\n ${chalk_1.default.gray('Files:')}`);
152
+ this.log(`\n ${chalk.gray('Files:')}`);
163
153
  files.forEach(file => {
164
154
  const filePath = path.join(outputsDir, file);
165
155
  const stats = fs.statSync(filePath);
166
156
  const size = this.formatFileSize(stats.size);
167
157
  const modified = stats.mtime.toLocaleString();
168
- this.log(` • ${chalk_1.default.cyan(file)}` +
169
- `\n ${chalk_1.default.gray('Size:')} ${size} ${chalk_1.default.gray('│')} ` +
170
- `${chalk_1.default.gray('Modified:')} ${modified}`);
158
+ this.log(` • ${chalk.cyan(file)}` +
159
+ `\n ${chalk.gray('Size:')} ${size} ${chalk.gray('│')} ` +
160
+ `${chalk.gray('Modified:')} ${modified}`);
171
161
  });
172
162
  this.log('');
173
- this.log(chalk_1.default.gray(` Use ${chalk_1.default.cyan(`cat ${path.relative(process.cwd(), outputsDir)}/<file>`)} to view file contents`));
163
+ this.log(chalk.gray(` Use ${chalk.cyan(`cat ${path.relative(process.cwd(), outputsDir)}/<file>`)} to view file contents`));
174
164
  }
175
165
  wrapText(text, maxWidth) {
176
166
  const words = text.split(' ');
@@ -198,33 +188,4 @@ class Show extends core_1.Command {
198
188
  return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
199
189
  }
200
190
  }
201
- Show.description = 'Show detailed information about a session or output';
202
- Show.examples = [
203
- '<%= config.bin %> <%= command.id %> session-id',
204
- '<%= config.bin %> <%= command.id %> session-id --full',
205
- '<%= config.bin %> <%= command.id %> --output project-name',
206
- ];
207
- Show.args = {
208
- sessionId: core_1.Args.string({
209
- description: 'Session ID to show',
210
- required: false,
211
- }),
212
- };
213
- Show.flags = {
214
- output: core_1.Flags.string({
215
- char: 'o',
216
- description: 'Show output directory contents',
217
- }),
218
- full: core_1.Flags.boolean({
219
- char: 'f',
220
- description: 'Show full conversation history',
221
- default: false,
222
- }),
223
- limit: core_1.Flags.integer({
224
- char: 'l',
225
- description: 'Limit number of messages to show',
226
- default: 10,
227
- }),
228
- };
229
- exports.default = Show;
230
191
  //# sourceMappingURL=show.js.map
@@ -3,9 +3,9 @@ export default class Start extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static flags: {
6
- project: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
- description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
- tags: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
6
+ project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ tags: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  };
10
10
  private sessionManager;
11
11
  private sessionId;