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,52 +1,36 @@
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;
1
+ import { Command, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import * as path from 'path';
5
+ import { SessionManager } from '../../core/session-manager.js';
6
+ export default class Start extends Command {
7
+ static description = 'Start an interactive conversation session for iterative prompt development';
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %>',
10
+ '<%= config.bin %> <%= command.id %> --project my-app',
11
+ '<%= config.bin %> <%= command.id %> --description "Planning new feature"',
12
+ ];
13
+ static flags = {
14
+ project: Flags.string({
15
+ char: 'p',
16
+ description: 'Project name for this session',
17
+ }),
18
+ description: Flags.string({
19
+ char: 'd',
20
+ description: 'Session description',
21
+ }),
22
+ tags: Flags.string({
23
+ char: 't',
24
+ description: 'Comma-separated tags for this session',
25
+ multiple: false,
26
+ }),
33
27
  };
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 inquirer_1 = __importDefault(require("inquirer"));
42
- const path = __importStar(require("path"));
43
- const session_manager_1 = require("../../core/session-manager");
44
- class Start extends core_1.Command {
28
+ sessionManager;
29
+ sessionId = null;
30
+ isExiting = false;
45
31
  constructor(argv, config) {
46
32
  super(argv, config);
47
- this.sessionId = null;
48
- this.isExiting = false;
49
- this.sessionManager = new session_manager_1.SessionManager();
33
+ this.sessionManager = new SessionManager();
50
34
  }
51
35
  async run() {
52
36
  const { flags } = await this.parse(Start);
@@ -79,24 +63,24 @@ class Start extends core_1.Command {
79
63
  * Display introduction and instructions
80
64
  */
81
65
  displayIntroduction(projectName, sessionId) {
82
- console.log(chalk_1.default.bold.cyan('\n💬 Conversational Session Started\n'));
83
- console.log(chalk_1.default.gray('━'.repeat(60)));
66
+ console.log(chalk.bold.cyan('\n💬 Conversational Session Started\n'));
67
+ console.log(chalk.gray('━'.repeat(60)));
84
68
  console.log();
85
- console.log(chalk_1.default.bold('Project:'), chalk_1.default.cyan(projectName));
86
- console.log(chalk_1.default.bold('Session ID:'), chalk_1.default.dim(sessionId));
69
+ console.log(chalk.bold('Project:'), chalk.cyan(projectName));
70
+ console.log(chalk.bold('Session ID:'), chalk.dim(sessionId));
87
71
  console.log();
88
- console.log(chalk_1.default.gray('━'.repeat(60)));
72
+ console.log(chalk.gray('━'.repeat(60)));
89
73
  console.log();
90
- console.log(chalk_1.default.bold('How it works:'));
91
- console.log(chalk_1.default.gray(' • Share your ideas and requirements naturally'));
92
- console.log(chalk_1.default.gray(' • The conversation is tracked and saved'));
93
- console.log(chalk_1.default.gray(' • Use ') + chalk_1.default.cyan('/clavix:summarize') + chalk_1.default.gray(' later to extract structured requirements'));
74
+ console.log(chalk.bold('How it works:'));
75
+ console.log(chalk.gray(' • Share your ideas and requirements naturally'));
76
+ console.log(chalk.gray(' • The conversation is tracked and saved'));
77
+ console.log(chalk.gray(' • Use ') + chalk.cyan('/clavix:summarize') + chalk.gray(' later to extract structured requirements'));
94
78
  console.log();
95
- console.log(chalk_1.default.bold('Commands:'));
96
- console.log(chalk_1.default.gray(' • Type ') + chalk_1.default.yellow('exit') + chalk_1.default.gray(' or ') + chalk_1.default.yellow('quit') + chalk_1.default.gray(' to end the session'));
97
- console.log(chalk_1.default.gray(' • Press ') + chalk_1.default.yellow('Ctrl+C') + chalk_1.default.gray(' to exit'));
79
+ console.log(chalk.bold('Commands:'));
80
+ console.log(chalk.gray(' • Type ') + chalk.yellow('exit') + chalk.gray(' or ') + chalk.yellow('quit') + chalk.gray(' to end the session'));
81
+ console.log(chalk.gray(' • Press ') + chalk.yellow('Ctrl+C') + chalk.gray(' to exit'));
98
82
  console.log();
99
- console.log(chalk_1.default.gray('━'.repeat(60)));
83
+ console.log(chalk.gray('━'.repeat(60)));
100
84
  console.log();
101
85
  }
102
86
  /**
@@ -107,11 +91,11 @@ class Start extends core_1.Command {
107
91
  while (!this.isExiting) {
108
92
  try {
109
93
  // Get user input
110
- const response = await inquirer_1.default.prompt([
94
+ const response = await inquirer.prompt([
111
95
  {
112
96
  type: 'input',
113
97
  name: 'message',
114
- message: chalk_1.default.bold.cyan('You:'),
98
+ message: chalk.bold.cyan('You:'),
115
99
  prefix: '',
116
100
  },
117
101
  ]);
@@ -156,7 +140,7 @@ class Start extends core_1.Command {
156
140
  ];
157
141
  const index = (messageCount - 1) % acknowledgments.length;
158
142
  const message = acknowledgments[index];
159
- console.log(chalk_1.default.dim('Assistant:'), chalk_1.default.gray(message));
143
+ console.log(chalk.dim('Assistant:'), chalk.gray(message));
160
144
  }
161
145
  /**
162
146
  * Check if message is an exit command
@@ -189,60 +173,38 @@ class Start extends core_1.Command {
189
173
  return;
190
174
  }
191
175
  console.log();
192
- console.log(chalk_1.default.gray('━'.repeat(60)));
176
+ console.log(chalk.gray('━'.repeat(60)));
193
177
  console.log();
194
178
  const session = await this.sessionManager.getSession(this.sessionId);
195
179
  if (session) {
196
- console.log(chalk_1.default.bold.green('Session saved successfully!\n'));
197
- console.log(chalk_1.default.bold('Session Details:'));
198
- console.log(chalk_1.default.gray(' Session ID:'), chalk_1.default.cyan(session.id));
199
- console.log(chalk_1.default.gray(' Project:'), chalk_1.default.cyan(session.projectName));
200
- console.log(chalk_1.default.gray(' Messages:'), chalk_1.default.cyan(session.messages.length.toString()));
201
- console.log(chalk_1.default.gray(' Created:'), chalk_1.default.dim(session.created.toLocaleString()));
180
+ console.log(chalk.bold.green('Session saved successfully!\n'));
181
+ console.log(chalk.bold('Session Details:'));
182
+ console.log(chalk.gray(' Session ID:'), chalk.cyan(session.id));
183
+ console.log(chalk.gray(' Project:'), chalk.cyan(session.projectName));
184
+ console.log(chalk.gray(' Messages:'), chalk.cyan(session.messages.length.toString()));
185
+ console.log(chalk.gray(' Created:'), chalk.dim(session.created.toLocaleString()));
202
186
  if (session.tags && session.tags.length > 0) {
203
- console.log(chalk_1.default.gray(' Tags:'), chalk_1.default.cyan(session.tags.join(', ')));
187
+ console.log(chalk.gray(' Tags:'), chalk.cyan(session.tags.join(', ')));
204
188
  }
205
189
  if (session.description) {
206
- console.log(chalk_1.default.gray(' Description:'), chalk_1.default.dim(session.description));
190
+ console.log(chalk.gray(' Description:'), chalk.dim(session.description));
207
191
  }
208
192
  const sessionPath = path.join('.clavix/sessions', `${session.id}.json`);
209
193
  console.log();
210
- console.log(chalk_1.default.bold('Session file:'));
211
- console.log(chalk_1.default.dim(` ${sessionPath}`));
194
+ console.log(chalk.bold('Session file:'));
195
+ console.log(chalk.dim(` ${sessionPath}`));
212
196
  console.log();
213
- console.log(chalk_1.default.bold('Next steps:'));
214
- console.log(chalk_1.default.gray(' • Resume: ') + chalk_1.default.cyan(`clavix start --resume ${session.id}`));
215
- console.log(chalk_1.default.gray(' • Summarize: ') + chalk_1.default.cyan(`clavix summarize ${session.id}`));
216
- console.log(chalk_1.default.gray(' • View: ') + chalk_1.default.cyan(`clavix show ${session.id}`));
197
+ console.log(chalk.bold('Next steps:'));
198
+ console.log(chalk.gray(' • Resume: ') + chalk.cyan(`clavix start --resume ${session.id}`));
199
+ console.log(chalk.gray(' • Summarize: ') + chalk.cyan(`clavix summarize ${session.id}`));
200
+ console.log(chalk.gray(' • View: ') + chalk.cyan(`clavix show ${session.id}`));
217
201
  console.log();
218
202
  }
219
203
  else {
220
- console.log(chalk_1.default.yellow('Warning: Could not retrieve session information\n'));
204
+ console.log(chalk.yellow('Warning: Could not retrieve session information\n'));
221
205
  }
222
- console.log(chalk_1.default.gray('━'.repeat(60)));
206
+ console.log(chalk.gray('━'.repeat(60)));
223
207
  console.log();
224
208
  }
225
209
  }
226
- Start.description = 'Start an interactive conversation session for iterative prompt development';
227
- Start.examples = [
228
- '<%= config.bin %> <%= command.id %>',
229
- '<%= config.bin %> <%= command.id %> --project my-app',
230
- '<%= config.bin %> <%= command.id %> --description "Planning new feature"',
231
- ];
232
- Start.flags = {
233
- project: core_1.Flags.string({
234
- char: 'p',
235
- description: 'Project name for this session',
236
- }),
237
- description: core_1.Flags.string({
238
- char: 'd',
239
- description: 'Session description',
240
- }),
241
- tags: core_1.Flags.string({
242
- char: 't',
243
- description: 'Comma-separated tags for this session',
244
- multiple: false,
245
- }),
246
- };
247
- exports.default = Start;
248
210
  //# sourceMappingURL=start.js.map
@@ -3,12 +3,12 @@ export default class Summarize 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
- active: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
- output: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
- 'skip-clear': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
9
+ active: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'skip-clear': import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  };
13
13
  run(): Promise<void>;
14
14
  /**
@@ -1,66 +1,55 @@
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 * as path from 'path';
4
+ import { SessionManager } from '../../core/session-manager.js';
5
+ import { ConversationAnalyzer } from '../../core/conversation-analyzer.js';
6
+ import { FileSystem } from '../../utils/file-system.js';
7
+ import { PromptOptimizer } from '../../core/prompt-optimizer.js';
8
+ export default class Summarize extends Command {
9
+ static description = 'Analyze a conversation session and extract structured requirements';
10
+ static examples = [
11
+ '<%= config.bin %> <%= command.id %>',
12
+ '<%= config.bin %> <%= command.id %> <session-id>',
13
+ '<%= config.bin %> <%= command.id %> --active',
14
+ ];
15
+ static args = {
16
+ sessionId: Args.string({
17
+ description: 'Session ID to summarize',
18
+ required: false,
19
+ }),
26
20
  };
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;
21
+ static flags = {
22
+ active: Flags.boolean({
23
+ char: 'a',
24
+ description: 'Summarize the most recent active session',
25
+ default: false,
26
+ }),
27
+ output: Flags.string({
28
+ char: 'o',
29
+ description: 'Output directory (defaults to .clavix/outputs/[session-name])',
30
+ }),
31
+ 'skip-clear': Flags.boolean({
32
+ description: 'Skip CLEAR framework optimization of extracted prompt',
33
+ default: false,
34
+ }),
33
35
  };
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 path = __importStar(require("path"));
42
- const session_manager_1 = require("../../core/session-manager");
43
- const conversation_analyzer_1 = require("../../core/conversation-analyzer");
44
- const file_system_1 = require("../../utils/file-system");
45
- const prompt_optimizer_1 = require("../../core/prompt-optimizer");
46
- class Summarize extends core_1.Command {
47
36
  async run() {
48
37
  const { args, flags } = await this.parse(Summarize);
49
- console.log(chalk_1.default.bold.cyan('\nConversation Summarizer\n'));
38
+ console.log(chalk.bold.cyan('\nConversation Summarizer\n'));
50
39
  try {
51
- const manager = new session_manager_1.SessionManager();
52
- const analyzer = new conversation_analyzer_1.ConversationAnalyzer();
40
+ const manager = new SessionManager();
41
+ const analyzer = new ConversationAnalyzer();
53
42
  // Load session
54
43
  let session;
55
44
  if (args.sessionId) {
56
- console.log(chalk_1.default.dim(`Loading session ${args.sessionId}...\n`));
45
+ console.log(chalk.dim(`Loading session ${args.sessionId}...\n`));
57
46
  session = await manager.getSession(args.sessionId);
58
47
  if (!session) {
59
48
  this.error(`Session not found: ${args.sessionId}`);
60
49
  }
61
50
  }
62
51
  else if (flags.active) {
63
- console.log(chalk_1.default.dim('Loading most recent active session...\n'));
52
+ console.log(chalk.dim('Loading most recent active session...\n'));
64
53
  session = await manager.getActiveSession();
65
54
  if (!session) {
66
55
  this.error('No active session found\n\nHint: Use "clavix list" to see all sessions');
@@ -78,59 +67,59 @@ class Summarize extends core_1.Command {
78
67
  }
79
68
  }
80
69
  // Display session info
81
- console.log(chalk_1.default.bold('Session Information:'));
82
- console.log(chalk_1.default.gray(' ID:'), chalk_1.default.cyan(session.id));
83
- console.log(chalk_1.default.gray(' Project:'), chalk_1.default.cyan(session.projectName));
84
- console.log(chalk_1.default.gray(' Messages:'), chalk_1.default.cyan(session.messages.length.toString()));
85
- console.log(chalk_1.default.gray(' Created:'), chalk_1.default.dim(session.created.toLocaleString()));
70
+ console.log(chalk.bold('Session Information:'));
71
+ console.log(chalk.gray(' ID:'), chalk.cyan(session.id));
72
+ console.log(chalk.gray(' Project:'), chalk.cyan(session.projectName));
73
+ console.log(chalk.gray(' Messages:'), chalk.cyan(session.messages.length.toString()));
74
+ console.log(chalk.gray(' Created:'), chalk.dim(session.created.toLocaleString()));
86
75
  console.log();
87
76
  // Check if session has messages
88
77
  if (session.messages.length === 0) {
89
78
  this.error('Session has no messages to analyze');
90
79
  }
91
80
  // Analyze conversation
92
- console.log(chalk_1.default.dim('Analyzing conversation...\n'));
81
+ console.log(chalk.dim('Analyzing conversation...\n'));
93
82
  const analysis = analyzer.analyze(session);
94
83
  // Display analysis summary
95
84
  this.displayAnalysisSummary(analysis);
96
85
  // Generate outputs
97
- console.log(chalk_1.default.dim('\nGenerating output files...\n'));
86
+ console.log(chalk.dim('\nGenerating output files...\n'));
98
87
  const outputDir = flags.output ||
99
88
  path.join('.clavix/outputs', this.sanitizeProjectName(session.projectName));
100
- await file_system_1.FileSystem.ensureDir(outputDir);
89
+ await FileSystem.ensureDir(outputDir);
101
90
  // Generate mini-PRD
102
91
  const miniPrdContent = analyzer.generateMiniPrd(session, analysis);
103
92
  const miniPrdPath = path.join(outputDir, 'mini-prd.md');
104
- await file_system_1.FileSystem.writeFileAtomic(miniPrdPath, miniPrdContent);
93
+ await FileSystem.writeFileAtomic(miniPrdPath, miniPrdContent);
105
94
  // Generate optimized prompt
106
95
  const optimizedPromptContent = analyzer.generateOptimizedPrompt(session, analysis);
107
96
  const optimizedPromptPath = path.join(outputDir, 'optimized-prompt.md');
108
- await file_system_1.FileSystem.writeFileAtomic(optimizedPromptPath, optimizedPromptContent);
97
+ await FileSystem.writeFileAtomic(optimizedPromptPath, optimizedPromptContent);
109
98
  // CLEAR optimization (unless skipped)
110
99
  if (!flags['skip-clear']) {
111
100
  await this.applyClearOptimization(optimizedPromptContent, outputDir);
112
101
  }
113
102
  // Display success
114
- console.log(chalk_1.default.bold.green('Analysis complete!\n'));
115
- console.log(chalk_1.default.bold('Generated files:'));
116
- console.log(chalk_1.default.gray(' • ') + chalk_1.default.cyan('mini-prd.md') + chalk_1.default.dim(' - Structured requirements document'));
117
- console.log(chalk_1.default.gray(' • ') + chalk_1.default.cyan('optimized-prompt.md') + chalk_1.default.dim(' - AI-ready development prompt'));
103
+ console.log(chalk.bold.green('Analysis complete!\n'));
104
+ console.log(chalk.bold('Generated files:'));
105
+ console.log(chalk.gray(' • ') + chalk.cyan('mini-prd.md') + chalk.dim(' - Structured requirements document'));
106
+ console.log(chalk.gray(' • ') + chalk.cyan('optimized-prompt.md') + chalk.dim(' - AI-ready development prompt'));
118
107
  if (!flags['skip-clear']) {
119
- console.log(chalk_1.default.gray(' • ') + chalk_1.default.cyan('clear-optimized-prompt.md') + chalk_1.default.dim(' - CLEAR-enhanced version (C, L, E)'));
108
+ console.log(chalk.gray(' • ') + chalk.cyan('clear-optimized-prompt.md') + chalk.dim(' - CLEAR-enhanced version (C, L, E)'));
120
109
  }
121
110
  console.log();
122
- console.log(chalk_1.default.bold('Output location:'));
123
- console.log(chalk_1.default.dim(` ${outputDir}`));
111
+ console.log(chalk.bold('Output location:'));
112
+ console.log(chalk.dim(` ${outputDir}`));
124
113
  console.log();
125
- console.log(chalk_1.default.bold('Next steps:'));
114
+ console.log(chalk.bold('Next steps:'));
126
115
  if (!flags['skip-clear']) {
127
- console.log(chalk_1.default.gray(' • Use ') + chalk_1.default.cyan('clear-optimized-prompt.md') + chalk_1.default.gray(' for best AI results (CLEAR-optimized)'));
128
- console.log(chalk_1.default.gray(' • Or use ') + chalk_1.default.cyan('optimized-prompt.md') + chalk_1.default.gray(' for the original extracted version'));
116
+ console.log(chalk.gray(' • Use ') + chalk.cyan('clear-optimized-prompt.md') + chalk.gray(' for best AI results (CLEAR-optimized)'));
117
+ console.log(chalk.gray(' • Or use ') + chalk.cyan('optimized-prompt.md') + chalk.gray(' for the original extracted version'));
129
118
  }
130
119
  else {
131
- console.log(chalk_1.default.gray(' • Use ') + chalk_1.default.cyan('optimized-prompt.md') + chalk_1.default.gray(' as input for your AI agent'));
120
+ console.log(chalk.gray(' • Use ') + chalk.cyan('optimized-prompt.md') + chalk.gray(' as input for your AI agent'));
132
121
  }
133
- console.log(chalk_1.default.gray(' • Share ') + chalk_1.default.cyan('mini-prd.md') + chalk_1.default.gray(' with your team for alignment'));
122
+ console.log(chalk.gray(' • Share ') + chalk.cyan('mini-prd.md') + chalk.gray(' with your team for alignment'));
134
123
  console.log();
135
124
  }
136
125
  catch (error) {
@@ -142,33 +131,33 @@ class Summarize extends core_1.Command {
142
131
  * Display analysis summary
143
132
  */
144
133
  displayAnalysisSummary(analysis) {
145
- console.log(chalk_1.default.bold('Analysis Summary:'));
134
+ console.log(chalk.bold('Analysis Summary:'));
146
135
  console.log();
147
136
  if (analysis.keyRequirements.length > 0) {
148
- console.log(chalk_1.default.bold.cyan('Key Requirements:'));
137
+ console.log(chalk.bold.cyan('Key Requirements:'));
149
138
  analysis.keyRequirements.forEach((req) => {
150
- console.log(chalk_1.default.gray(' • ') + req);
139
+ console.log(chalk.gray(' • ') + req);
151
140
  });
152
141
  console.log();
153
142
  }
154
143
  if (analysis.technicalConstraints.length > 0) {
155
- console.log(chalk_1.default.bold.cyan('Technical Constraints:'));
144
+ console.log(chalk.bold.cyan('Technical Constraints:'));
156
145
  analysis.technicalConstraints.forEach((constraint) => {
157
- console.log(chalk_1.default.gray(' • ') + constraint);
146
+ console.log(chalk.gray(' • ') + constraint);
158
147
  });
159
148
  console.log();
160
149
  }
161
150
  if (analysis.successCriteria.length > 0) {
162
- console.log(chalk_1.default.bold.cyan('Success Criteria:'));
151
+ console.log(chalk.bold.cyan('Success Criteria:'));
163
152
  analysis.successCriteria.forEach((criteria) => {
164
- console.log(chalk_1.default.gray(' • ') + criteria);
153
+ console.log(chalk.gray(' • ') + criteria);
165
154
  });
166
155
  console.log();
167
156
  }
168
157
  if (analysis.outOfScope.length > 0) {
169
- console.log(chalk_1.default.bold.yellow('Out of Scope:'));
158
+ console.log(chalk.bold.yellow('Out of Scope:'));
170
159
  analysis.outOfScope.forEach((item) => {
171
- console.log(chalk_1.default.gray(' • ') + item);
160
+ console.log(chalk.gray(' • ') + item);
172
161
  });
173
162
  console.log();
174
163
  }
@@ -190,20 +179,20 @@ class Summarize extends core_1.Command {
190
179
  */
191
180
  async applyClearOptimization(rawPrompt, outputDir) {
192
181
  try {
193
- console.log(chalk_1.default.bold.cyan('\n🎯 CLEAR Framework Optimization\n'));
194
- console.log(chalk_1.default.gray('Applying CLEAR framework to extracted prompt...\n'));
195
- const optimizer = new prompt_optimizer_1.PromptOptimizer();
182
+ console.log(chalk.bold.cyan('\n🎯 CLEAR Framework Optimization\n'));
183
+ console.log(chalk.gray('Applying CLEAR framework to extracted prompt...\n'));
184
+ const optimizer = new PromptOptimizer();
196
185
  const clearResult = optimizer.applyCLEARFramework(rawPrompt, 'fast');
197
186
  const clearScore = optimizer.calculateCLEARScore(clearResult);
198
187
  const getScoreColor = (score) => {
199
188
  if (score >= 80)
200
- return chalk_1.default.green;
189
+ return chalk.green;
201
190
  if (score >= 60)
202
- return chalk_1.default.yellow;
203
- return chalk_1.default.red;
191
+ return chalk.yellow;
192
+ return chalk.red;
204
193
  };
205
194
  // Display comparison
206
- console.log(chalk_1.default.bold('CLEAR Analysis of Extracted Prompt:\n'));
195
+ console.log(chalk.bold('CLEAR Analysis of Extracted Prompt:\n'));
207
196
  // Conciseness
208
197
  const cColor = getScoreColor(clearScore.conciseness);
209
198
  console.log(cColor(` [C] Concise: ${clearScore.conciseness.toFixed(0)}%`));
@@ -230,9 +219,9 @@ class Summarize extends core_1.Command {
230
219
  console.log(overallColor(` Overall: ${clearScore.overall.toFixed(0)}% (${clearScore.rating})\n`));
231
220
  // Display CLEAR changes made
232
221
  if (clearResult.changesSummary && clearResult.changesSummary.length > 0) {
233
- console.log(chalk_1.default.bold.magenta('CLEAR Improvements Applied:\n'));
222
+ console.log(chalk.bold.magenta('CLEAR Improvements Applied:\n'));
234
223
  clearResult.changesSummary.slice(0, 3).forEach((change) => {
235
- console.log(chalk_1.default.magenta(` [${change.component}] ${change.change}`));
224
+ console.log(chalk.magenta(` [${change.component}] ${change.change}`));
236
225
  });
237
226
  console.log();
238
227
  }
@@ -255,40 +244,12 @@ ${clearResult.improvedPrompt}
255
244
 
256
245
  ${clearResult.changesSummary.map((c) => `- **[${c.component}]** ${c.change}`).join('\n')}
257
246
  `;
258
- await file_system_1.FileSystem.writeFileAtomic(clearOptimizedPath, clearOptimizedContent);
259
- console.log(chalk_1.default.green('✓ CLEAR-optimized version saved\n'));
247
+ await FileSystem.writeFileAtomic(clearOptimizedPath, clearOptimizedContent);
248
+ console.log(chalk.green('✓ CLEAR-optimized version saved\n'));
260
249
  }
261
250
  catch {
262
- console.log(chalk_1.default.yellow('⚠ Could not apply CLEAR optimization\n'));
251
+ console.log(chalk.yellow('⚠ Could not apply CLEAR optimization\n'));
263
252
  }
264
253
  }
265
254
  }
266
- Summarize.description = 'Analyze a conversation session and extract structured requirements';
267
- Summarize.examples = [
268
- '<%= config.bin %> <%= command.id %>',
269
- '<%= config.bin %> <%= command.id %> <session-id>',
270
- '<%= config.bin %> <%= command.id %> --active',
271
- ];
272
- Summarize.args = {
273
- sessionId: core_1.Args.string({
274
- description: 'Session ID to summarize',
275
- required: false,
276
- }),
277
- };
278
- Summarize.flags = {
279
- active: core_1.Flags.boolean({
280
- char: 'a',
281
- description: 'Summarize the most recent active session',
282
- default: false,
283
- }),
284
- output: core_1.Flags.string({
285
- char: 'o',
286
- description: 'Output directory (defaults to .clavix/outputs/[session-name])',
287
- }),
288
- 'skip-clear': core_1.Flags.boolean({
289
- description: 'Skip CLEAR framework optimization of extracted prompt',
290
- default: false,
291
- }),
292
- };
293
- exports.default = Summarize;
294
255
  //# sourceMappingURL=summarize.js.map
@@ -3,12 +3,12 @@ export default class TaskComplete extends Command {
3
3
  static description: string;
4
4
  static examples: string[];
5
5
  static args: {
6
- taskId: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
6
+ taskId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
7
  };
8
8
  static flags: {
9
- 'no-git': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
10
- force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
- config: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'no-git': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  };
13
13
  run(): Promise<void>;
14
14
  /**