clavix 4.9.0 → 4.11.1

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 (98) hide show
  1. package/dist/cli/commands/analyze.d.ts +17 -0
  2. package/dist/cli/commands/analyze.js +133 -0
  3. package/dist/cli/commands/execute.d.ts +2 -2
  4. package/dist/cli/commands/execute.js +23 -21
  5. package/dist/cli/commands/improve.d.ts +32 -0
  6. package/dist/cli/commands/improve.js +250 -0
  7. package/dist/cli/commands/init.js +35 -29
  8. package/dist/cli/commands/prd.js +14 -13
  9. package/dist/cli/commands/prompts/clear.d.ts +2 -2
  10. package/dist/cli/commands/prompts/clear.js +32 -26
  11. package/dist/cli/commands/prompts/list.js +14 -19
  12. package/dist/cli/commands/summarize.js +23 -14
  13. package/dist/cli/commands/verify.d.ts +2 -2
  14. package/dist/cli/commands/verify.js +26 -24
  15. package/dist/core/doc-injector.d.ts +2 -0
  16. package/dist/core/doc-injector.js +12 -13
  17. package/dist/core/intelligence/intent-detector.d.ts +4 -0
  18. package/dist/core/intelligence/intent-detector.js +8 -18
  19. package/dist/core/intelligence/pattern-library.d.ts +16 -10
  20. package/dist/core/intelligence/pattern-library.js +47 -35
  21. package/dist/core/intelligence/patterns/actionability-enhancer.d.ts +2 -2
  22. package/dist/core/intelligence/patterns/actionability-enhancer.js +1 -1
  23. package/dist/core/intelligence/patterns/alternative-phrasing-generator.d.ts +2 -2
  24. package/dist/core/intelligence/patterns/alternative-phrasing-generator.js +1 -1
  25. package/dist/core/intelligence/patterns/ambiguity-detector.d.ts +2 -2
  26. package/dist/core/intelligence/patterns/ambiguity-detector.js +1 -1
  27. package/dist/core/intelligence/patterns/assumption-explicitizer.d.ts +2 -2
  28. package/dist/core/intelligence/patterns/assumption-explicitizer.js +1 -1
  29. package/dist/core/intelligence/patterns/base-pattern.d.ts +10 -7
  30. package/dist/core/intelligence/patterns/base-pattern.js +7 -3
  31. package/dist/core/intelligence/patterns/completeness-validator.d.ts +2 -2
  32. package/dist/core/intelligence/patterns/completeness-validator.js +1 -1
  33. package/dist/core/intelligence/patterns/conciseness-filter.d.ts +2 -2
  34. package/dist/core/intelligence/patterns/conciseness-filter.js +1 -1
  35. package/dist/core/intelligence/patterns/context-precision.d.ts +2 -2
  36. package/dist/core/intelligence/patterns/context-precision.js +1 -1
  37. package/dist/core/intelligence/patterns/conversation-summarizer.d.ts +2 -2
  38. package/dist/core/intelligence/patterns/conversation-summarizer.js +1 -1
  39. package/dist/core/intelligence/patterns/dependency-identifier.d.ts +2 -2
  40. package/dist/core/intelligence/patterns/dependency-identifier.js +1 -1
  41. package/dist/core/intelligence/patterns/domain-context-enricher.d.ts +2 -2
  42. package/dist/core/intelligence/patterns/domain-context-enricher.js +1 -1
  43. package/dist/core/intelligence/patterns/edge-case-identifier.d.ts +2 -2
  44. package/dist/core/intelligence/patterns/edge-case-identifier.js +1 -1
  45. package/dist/core/intelligence/patterns/error-tolerance-enhancer.d.ts +2 -2
  46. package/dist/core/intelligence/patterns/error-tolerance-enhancer.js +1 -1
  47. package/dist/core/intelligence/patterns/implicit-requirement-extractor.d.ts +2 -2
  48. package/dist/core/intelligence/patterns/implicit-requirement-extractor.js +1 -1
  49. package/dist/core/intelligence/patterns/objective-clarifier.d.ts +2 -2
  50. package/dist/core/intelligence/patterns/objective-clarifier.js +1 -1
  51. package/dist/core/intelligence/patterns/output-format-enforcer.d.ts +2 -2
  52. package/dist/core/intelligence/patterns/output-format-enforcer.js +1 -1
  53. package/dist/core/intelligence/patterns/prd-structure-enforcer.d.ts +2 -2
  54. package/dist/core/intelligence/patterns/prd-structure-enforcer.js +1 -1
  55. package/dist/core/intelligence/patterns/prerequisite-identifier.d.ts +2 -2
  56. package/dist/core/intelligence/patterns/prerequisite-identifier.js +1 -1
  57. package/dist/core/intelligence/patterns/requirement-prioritizer.d.ts +2 -2
  58. package/dist/core/intelligence/patterns/requirement-prioritizer.js +1 -1
  59. package/dist/core/intelligence/patterns/scope-definer.d.ts +2 -2
  60. package/dist/core/intelligence/patterns/scope-definer.js +1 -1
  61. package/dist/core/intelligence/patterns/step-decomposer.d.ts +2 -2
  62. package/dist/core/intelligence/patterns/step-decomposer.js +1 -1
  63. package/dist/core/intelligence/patterns/structure-organizer.d.ts +2 -2
  64. package/dist/core/intelligence/patterns/structure-organizer.js +1 -1
  65. package/dist/core/intelligence/patterns/success-criteria-enforcer.d.ts +2 -2
  66. package/dist/core/intelligence/patterns/success-criteria-enforcer.js +1 -1
  67. package/dist/core/intelligence/patterns/success-metrics-enforcer.d.ts +2 -2
  68. package/dist/core/intelligence/patterns/success-metrics-enforcer.js +1 -1
  69. package/dist/core/intelligence/patterns/technical-context-enricher.d.ts +2 -2
  70. package/dist/core/intelligence/patterns/technical-context-enricher.js +1 -1
  71. package/dist/core/intelligence/patterns/topic-coherence-analyzer.d.ts +2 -2
  72. package/dist/core/intelligence/patterns/topic-coherence-analyzer.js +1 -1
  73. package/dist/core/intelligence/patterns/user-persona-enricher.d.ts +2 -2
  74. package/dist/core/intelligence/patterns/user-persona-enricher.js +1 -1
  75. package/dist/core/intelligence/patterns/validation-checklist-creator.d.ts +2 -2
  76. package/dist/core/intelligence/patterns/validation-checklist-creator.js +1 -1
  77. package/dist/core/intelligence/types.d.ts +6 -3
  78. package/dist/core/intelligence/universal-optimizer.d.ts +20 -15
  79. package/dist/core/intelligence/universal-optimizer.js +44 -29
  80. package/dist/core/prompt-manager.d.ts +24 -22
  81. package/dist/core/prompt-manager.js +65 -92
  82. package/dist/core/verification-manager.d.ts +8 -7
  83. package/dist/core/verification-manager.js +34 -41
  84. package/dist/templates/agents/octo.md +6 -8
  85. package/dist/templates/slash-commands/_canonical/execute.md +52 -41
  86. package/dist/templates/slash-commands/_canonical/implement.md +28 -0
  87. package/dist/templates/slash-commands/_canonical/improve.md +604 -0
  88. package/dist/templates/slash-commands/_canonical/verify.md +1 -1
  89. package/dist/templates/slash-commands/_components/agent-protocols/cli-reference.md +12 -0
  90. package/dist/templates/slash-commands/_components/agent-protocols/self-correction.md +20 -1
  91. package/dist/templates/slash-commands/_components/sections/escalation-factors.md +25 -25
  92. package/dist/templates/slash-commands/_components/sections/pattern-visibility.md +27 -33
  93. package/dist/types/config.d.ts +1 -2
  94. package/dist/types/verification.d.ts +7 -6
  95. package/dist/types/verification.js +2 -1
  96. package/package.json +1 -1
  97. package/dist/templates/slash-commands/_canonical/deep.md +0 -616
  98. package/dist/templates/slash-commands/_canonical/fast.md +0 -503
@@ -0,0 +1,17 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Analyze extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ pretty: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ static args: {
9
+ prompt: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
10
+ };
11
+ run(): Promise<void>;
12
+ /**
13
+ * v4.11: Calculate escalation with unified improve mode
14
+ */
15
+ private calculateEscalation;
16
+ }
17
+ //# sourceMappingURL=analyze.d.ts.map
@@ -0,0 +1,133 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { UniversalOptimizer } from '../../core/intelligence/index.js';
3
+ export default class Analyze extends Command {
4
+ static description = 'Analyze a prompt and return structured JSON with intent, quality, and escalation data';
5
+ static examples = [
6
+ '<%= config.bin %> <%= command.id %> "Create a login page"',
7
+ '<%= config.bin %> <%= command.id %> "Build an API for user management" --pretty',
8
+ ];
9
+ static flags = {
10
+ pretty: Flags.boolean({
11
+ char: 'p',
12
+ description: 'Pretty-print the JSON output',
13
+ default: false,
14
+ }),
15
+ };
16
+ static args = {
17
+ prompt: Args.string({
18
+ description: 'The prompt to analyze',
19
+ required: true,
20
+ }),
21
+ };
22
+ async run() {
23
+ const { args, flags } = await this.parse(Analyze);
24
+ if (!args.prompt || args.prompt.trim().length === 0) {
25
+ const errorOutput = {
26
+ error: 'No prompt provided',
27
+ message: 'Please provide a prompt to analyze',
28
+ };
29
+ console.log(JSON.stringify(errorOutput, null, flags.pretty ? 2 : 0));
30
+ this.exit(1);
31
+ return;
32
+ }
33
+ const optimizer = new UniversalOptimizer();
34
+ // v4.11: Use 'improve' mode for analysis
35
+ const result = await optimizer.optimize(args.prompt, 'improve');
36
+ // Calculate escalation score and recommendation
37
+ const escalation = this.calculateEscalation(result);
38
+ // Build the analysis result
39
+ const analysisResult = {
40
+ intent: result.intent.primaryIntent,
41
+ confidence: result.intent.confidence,
42
+ quality: {
43
+ overall: Math.round(result.quality.overall),
44
+ clarity: Math.round(result.quality.clarity),
45
+ efficiency: Math.round(result.quality.efficiency),
46
+ structure: Math.round(result.quality.structure),
47
+ completeness: Math.round(result.quality.completeness),
48
+ actionability: Math.round(result.quality.actionability),
49
+ specificity: Math.round(result.quality.specificity ?? 0),
50
+ },
51
+ escalation,
52
+ characteristics: {
53
+ hasCodeContext: result.intent.characteristics.hasCodeContext,
54
+ hasTechnicalTerms: result.intent.characteristics.hasTechnicalTerms,
55
+ isOpenEnded: result.intent.characteristics.isOpenEnded,
56
+ needsStructure: result.intent.characteristics.needsStructure,
57
+ },
58
+ };
59
+ // Output as JSON
60
+ console.log(JSON.stringify(analysisResult, null, flags.pretty ? 2 : 0));
61
+ }
62
+ /**
63
+ * v4.11: Calculate escalation with unified improve mode
64
+ */
65
+ calculateEscalation(result) {
66
+ const factors = [];
67
+ let score = 0;
68
+ // Quality-based factors
69
+ if (result.quality.overall < 50) {
70
+ score += 30;
71
+ factors.push('low overall quality');
72
+ }
73
+ else if (result.quality.overall < 65) {
74
+ score += 15;
75
+ factors.push('moderate quality - could be improved');
76
+ }
77
+ if (result.quality.clarity < 50) {
78
+ score += 15;
79
+ factors.push('unclear objective');
80
+ }
81
+ if (result.quality.completeness < 50) {
82
+ score += 20;
83
+ factors.push('missing technical requirements');
84
+ }
85
+ if (result.quality.actionability < 50) {
86
+ score += 15;
87
+ factors.push('vague scope');
88
+ }
89
+ // Intent-based factors
90
+ if (result.intent.primaryIntent === 'planning') {
91
+ score += 15;
92
+ factors.push('planning intent - benefits from exploration');
93
+ }
94
+ if (result.intent.primaryIntent === 'prd-generation') {
95
+ score += 25;
96
+ factors.push('PRD generation - needs strategic planning');
97
+ }
98
+ // Characteristics-based factors
99
+ if (result.intent.characteristics.isOpenEnded && result.intent.characteristics.needsStructure) {
100
+ score += 10;
101
+ factors.push('open-ended without structure');
102
+ }
103
+ // Confidence-based factors
104
+ if (result.intent.confidence < 70) {
105
+ score += 10;
106
+ factors.push('low intent confidence');
107
+ }
108
+ // v4.11: Determine recommendation based on score and intent
109
+ let recommend = 'improve';
110
+ let recommendedDepth = 'standard';
111
+ if (result.intent.primaryIntent === 'prd-generation') {
112
+ recommend = 'prd';
113
+ }
114
+ else if (score >= 60 || result.quality.overall < 50) {
115
+ recommendedDepth = 'comprehensive';
116
+ }
117
+ else if (score >= 35) {
118
+ recommendedDepth = 'comprehensive';
119
+ }
120
+ // Check for strategic keywords that suggest PRD mode
121
+ const strategicIntents = ['planning', 'prd-generation', 'documentation'];
122
+ if (strategicIntents.includes(result.intent.primaryIntent) && score >= 50) {
123
+ recommend = 'prd';
124
+ }
125
+ return {
126
+ score: Math.min(100, score),
127
+ recommend,
128
+ recommendedDepth: recommend === 'improve' ? recommendedDepth : undefined,
129
+ factors,
130
+ };
131
+ }
132
+ }
133
+ //# sourceMappingURL=analyze.js.map
@@ -4,8 +4,8 @@ export default class Execute extends Command {
4
4
  static examples: string[];
5
5
  static flags: {
6
6
  latest: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- fast: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- deep: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ standard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ comprehensive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
9
  id: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  };
11
11
  run(): Promise<void>;
@@ -4,12 +4,12 @@ import inquirer from 'inquirer';
4
4
  import { PromptManager } from '../../core/prompt-manager.js';
5
5
  import { ChecklistParser } from '../../core/checklist-parser.js';
6
6
  export default class Execute extends Command {
7
- static description = 'Execute a saved prompt from fast/deep optimization';
7
+ static description = 'Execute a saved prompt from improve optimization';
8
8
  static examples = [
9
9
  '<%= config.bin %> <%= command.id %> --latest',
10
- '<%= config.bin %> <%= command.id %> --latest --fast',
11
- '<%= config.bin %> <%= command.id %> --latest --deep',
12
- '<%= config.bin %> <%= command.id %> --id fast-20250117-143022-a3f2',
10
+ '<%= config.bin %> <%= command.id %> --latest --standard',
11
+ '<%= config.bin %> <%= command.id %> --latest --comprehensive',
12
+ '<%= config.bin %> <%= command.id %> --id std-20250117-143022-a3f2',
13
13
  '<%= config.bin %> <%= command.id %>',
14
14
  ];
15
15
  static flags = {
@@ -17,12 +17,14 @@ export default class Execute extends Command {
17
17
  description: 'Auto-select latest prompt (any type)',
18
18
  default: false,
19
19
  }),
20
- fast: Flags.boolean({
21
- description: 'Filter to fast prompts only (use with --latest)',
20
+ standard: Flags.boolean({
21
+ char: 's',
22
+ description: 'Filter to standard depth prompts only (use with --latest)',
22
23
  default: false,
23
24
  }),
24
- deep: Flags.boolean({
25
- description: 'Filter to deep prompts only (use with --latest)',
25
+ comprehensive: Flags.boolean({
26
+ char: 'c',
27
+ description: 'Filter to comprehensive depth prompts only (use with --latest)',
26
28
  default: false,
27
29
  }),
28
30
  id: Flags.string({
@@ -38,8 +40,7 @@ export default class Execute extends Command {
38
40
  if (allPrompts.length === 0) {
39
41
  console.log(chalk.yellow('\n⚠️ No prompts found\n'));
40
42
  console.log(chalk.cyan('Generate an optimized prompt first:'));
41
- console.log(chalk.cyan(' /clavix:fast "your requirement"'));
42
- console.log(chalk.cyan(' /clavix:deep "your requirement"'));
43
+ console.log(chalk.cyan(' /clavix:improve "your requirement"'));
43
44
  console.log();
44
45
  return;
45
46
  }
@@ -57,18 +58,18 @@ export default class Execute extends Command {
57
58
  // Auto-select latest with optional filtering
58
59
  else if (flags.latest) {
59
60
  let filtered = allPrompts;
60
- // Apply source filter
61
- if (flags.fast && !flags.deep) {
62
- filtered = allPrompts.filter((p) => p.source === 'fast');
61
+ // Apply depth filter
62
+ if (flags.standard && !flags.comprehensive) {
63
+ filtered = allPrompts.filter((p) => p.depthUsed === 'standard');
63
64
  }
64
- else if (flags.deep && !flags.fast) {
65
- filtered = allPrompts.filter((p) => p.source === 'deep');
65
+ else if (flags.comprehensive && !flags.standard) {
66
+ filtered = allPrompts.filter((p) => p.depthUsed === 'comprehensive');
66
67
  }
67
68
  if (filtered.length === 0) {
68
- const source = flags.fast ? 'fast' : flags.deep ? 'deep' : 'any';
69
- console.log(chalk.yellow(`\n⚠️ No ${source} prompts found\n`));
70
- console.log(chalk.cyan(`Generate a ${source} prompt first:`));
71
- console.log(chalk.cyan(` /clavix:${source === 'any' ? 'fast' : source} "your requirement"`));
69
+ const depth = flags.standard ? 'standard' : flags.comprehensive ? 'comprehensive' : 'any';
70
+ console.log(chalk.yellow(`\n⚠️ No ${depth} prompts found\n`));
71
+ console.log(chalk.cyan(`Generate a prompt first:`));
72
+ console.log(chalk.cyan(` /clavix:improve "your requirement"`));
72
73
  console.log();
73
74
  return;
74
75
  }
@@ -94,8 +95,9 @@ export default class Execute extends Command {
94
95
  const status = p.executed ? chalk.green('✓') : chalk.gray('○');
95
96
  const age = p.ageInDays === 0 ? 'today' : `${p.ageInDays}d ago`;
96
97
  const ageColor = (p.ageInDays || 0) > 30 ? chalk.red : (p.ageInDays || 0) > 7 ? chalk.yellow : chalk.gray;
98
+ const depthLabel = p.depthUsed === 'comprehensive' ? 'comp' : 'std';
97
99
  return {
98
- name: `${status} [${p.source}] ${p.originalPrompt.substring(0, 60)}... ${ageColor(`(${age})`)}`,
100
+ name: `${status} [${depthLabel}] ${p.originalPrompt.substring(0, 60)}... ${ageColor(`(${age})`)}`,
99
101
  value: p.id,
100
102
  short: p.id,
101
103
  };
@@ -119,7 +121,7 @@ export default class Execute extends Command {
119
121
  }
120
122
  // Display prompt header
121
123
  console.log(chalk.bold.cyan(`\n🎯 Executing Prompt: ${prompt.id}\n`));
122
- console.log(chalk.gray(`Source: ${prompt.source}`));
124
+ console.log(chalk.gray(`Depth: ${prompt.depthUsed}`));
123
125
  console.log(chalk.gray(`Created: ${new Date(prompt.timestamp).toLocaleDateString()}`));
124
126
  console.log(chalk.gray(`Age: ${prompt.ageInDays} days\n`));
125
127
  // Display full prompt content
@@ -0,0 +1,32 @@
1
+ import { Command } from '@oclif/core';
2
+ /**
3
+ * v4.11: Unified improve command with smart depth auto-detection
4
+ *
5
+ * Replaces the old fast/deep commands with intelligent depth selection:
6
+ * - Quality score >= 75: auto-comprehensive
7
+ * - Quality score 60-74: ask user (borderline)
8
+ * - Quality score < 60: auto-standard
9
+ *
10
+ * Users can override with --comprehensive or --standard flags.
11
+ */
12
+ export default class Improve extends Command {
13
+ static description: string;
14
+ static examples: string[];
15
+ static flags: {
16
+ comprehensive: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ standard: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'analysis-only': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ };
20
+ static args: {
21
+ prompt: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
22
+ };
23
+ run(): Promise<void>;
24
+ /**
25
+ * v4.11: Smart depth auto-detection based on quality score
26
+ */
27
+ private autoDetectDepth;
28
+ private displayOutput;
29
+ private displayAnalysisOnly;
30
+ private savePrompt;
31
+ }
32
+ //# sourceMappingURL=improve.d.ts.map
@@ -0,0 +1,250 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import { UniversalOptimizer } from '../../core/intelligence/index.js';
5
+ import { PromptManager } from '../../core/prompt-manager.js';
6
+ /**
7
+ * v4.11: Unified improve command with smart depth auto-detection
8
+ *
9
+ * Replaces the old fast/deep commands with intelligent depth selection:
10
+ * - Quality score >= 75: auto-comprehensive
11
+ * - Quality score 60-74: ask user (borderline)
12
+ * - Quality score < 60: auto-standard
13
+ *
14
+ * Users can override with --comprehensive or --standard flags.
15
+ */
16
+ export default class Improve extends Command {
17
+ static description = 'Improve a prompt with smart quality-based depth selection (replaces fast/deep)';
18
+ static examples = [
19
+ '<%= config.bin %> <%= command.id %> "Create a login page"',
20
+ '<%= config.bin %> <%= command.id %> "Build an API for user management" --comprehensive',
21
+ '<%= config.bin %> <%= command.id %> "Fix the button styling" --standard',
22
+ '<%= config.bin %> <%= command.id %> "Design a notification system" --analysis-only',
23
+ ];
24
+ static flags = {
25
+ comprehensive: Flags.boolean({
26
+ char: 'c',
27
+ description: 'Force comprehensive depth (alternative approaches, edge cases, validation)',
28
+ default: false,
29
+ }),
30
+ standard: Flags.boolean({
31
+ char: 's',
32
+ description: 'Force standard depth (quick improvements)',
33
+ default: false,
34
+ }),
35
+ 'analysis-only': Flags.boolean({
36
+ description: 'Show only quality analysis without improved prompt',
37
+ default: false,
38
+ }),
39
+ };
40
+ static args = {
41
+ prompt: Args.string({
42
+ description: 'The prompt to improve',
43
+ required: true,
44
+ }),
45
+ };
46
+ async run() {
47
+ const { args, flags } = await this.parse(Improve);
48
+ if (!args.prompt || args.prompt.trim().length === 0) {
49
+ console.log(chalk.red('\n✗ Please provide a prompt to improve\n'));
50
+ console.log(chalk.gray('Example:'), chalk.cyan('clavix improve "Create a login page"'));
51
+ return;
52
+ }
53
+ // Determine depth level
54
+ let depthLevel;
55
+ if (flags.comprehensive && flags.standard) {
56
+ console.log(chalk.yellow('\n⚠️ Cannot use both --comprehensive and --standard\n'));
57
+ console.log(chalk.gray('Using smart auto-detection instead...\n'));
58
+ depthLevel = await this.autoDetectDepth(args.prompt);
59
+ }
60
+ else if (flags.comprehensive) {
61
+ depthLevel = 'comprehensive';
62
+ console.log(chalk.bold.cyan('\n🔍 Performing comprehensive analysis...\n'));
63
+ console.log(chalk.gray('This may take up to 15 seconds for thorough exploration\n'));
64
+ }
65
+ else if (flags.standard) {
66
+ depthLevel = 'standard';
67
+ console.log(chalk.bold.cyan('\n🔍 Performing standard analysis...\n'));
68
+ }
69
+ else {
70
+ depthLevel = await this.autoDetectDepth(args.prompt);
71
+ }
72
+ // Run optimization
73
+ const optimizer = new UniversalOptimizer();
74
+ const result = await optimizer.optimize(args.prompt, 'improve', { depthLevel });
75
+ // Handle --analysis-only flag
76
+ if (flags['analysis-only']) {
77
+ this.displayAnalysisOnly(result, depthLevel);
78
+ return;
79
+ }
80
+ // Display full output
81
+ this.displayOutput(result, depthLevel);
82
+ // Save prompt to file system
83
+ await this.savePrompt(result, depthLevel);
84
+ }
85
+ /**
86
+ * v4.11: Smart depth auto-detection based on quality score
87
+ */
88
+ async autoDetectDepth(prompt) {
89
+ console.log(chalk.bold.cyan('\n🔍 Analyzing prompt quality...\n'));
90
+ // Quick analysis to determine depth
91
+ const optimizer = new UniversalOptimizer();
92
+ const quickResult = await optimizer.optimize(prompt, 'improve', { depthLevel: 'standard' });
93
+ const qualityScore = quickResult.quality.overall;
94
+ // v4.11 thresholds
95
+ if (qualityScore >= 75) {
96
+ // High quality - recommend comprehensive for extra polish
97
+ console.log(chalk.cyan(`Quality score: ${qualityScore.toFixed(0)}% - Recommending comprehensive depth\n`));
98
+ return 'comprehensive';
99
+ }
100
+ else if (qualityScore >= 60) {
101
+ // Borderline - ask user
102
+ console.log(chalk.yellow(`Quality score: ${qualityScore.toFixed(0)}% - Borderline quality\n`));
103
+ const { choice } = await inquirer.prompt([
104
+ {
105
+ type: 'list',
106
+ name: 'choice',
107
+ message: 'Choose analysis depth:',
108
+ choices: [
109
+ {
110
+ name: 'Comprehensive (alternative approaches, edge cases, validation)',
111
+ value: 'comprehensive',
112
+ },
113
+ { name: 'Standard (quick improvements)', value: 'standard' },
114
+ ],
115
+ },
116
+ ]);
117
+ console.log();
118
+ return choice;
119
+ }
120
+ else {
121
+ // Low quality - standard is fine, comprehensive would add noise
122
+ console.log(chalk.cyan(`Quality score: ${qualityScore.toFixed(0)}% - Using standard depth\n`));
123
+ return 'standard';
124
+ }
125
+ }
126
+ displayOutput(result, depthLevel) {
127
+ const modeLabel = depthLevel === 'comprehensive' ? 'Comprehensive' : 'Standard';
128
+ console.log(chalk.bold.cyan(`🔍 ${modeLabel} Analysis Complete\n`));
129
+ // Intent Analysis
130
+ console.log(chalk.bold.cyan('🎯 Intent Analysis:\n'));
131
+ console.log(chalk.cyan(` Type: ${result.intent.primaryIntent}`));
132
+ console.log(chalk.cyan(` Confidence: ${result.intent.confidence}%`));
133
+ if (depthLevel === 'comprehensive') {
134
+ console.log(chalk.cyan(` Characteristics:`));
135
+ console.log(chalk.cyan(` • Has code context: ${result.intent.characteristics.hasCodeContext ? 'Yes' : 'No'}`));
136
+ console.log(chalk.cyan(` • Technical terms: ${result.intent.characteristics.hasTechnicalTerms ? 'Yes' : 'No'}`));
137
+ console.log(chalk.cyan(` • Open-ended: ${result.intent.characteristics.isOpenEnded ? 'Yes' : 'No'}`));
138
+ console.log(chalk.cyan(` • Needs structure: ${result.intent.characteristics.needsStructure ? 'Yes' : 'No'}`));
139
+ }
140
+ console.log();
141
+ // Quality Metrics
142
+ console.log(chalk.bold('📊 Quality Metrics:\n'));
143
+ const getScoreColor = (score) => {
144
+ if (score >= 80)
145
+ return chalk.green;
146
+ if (score >= 60)
147
+ return chalk.yellow;
148
+ return chalk.red;
149
+ };
150
+ console.log(getScoreColor(result.quality.clarity)(` Clarity: ${result.quality.clarity.toFixed(0)}%`));
151
+ console.log(getScoreColor(result.quality.efficiency)(` Efficiency: ${result.quality.efficiency.toFixed(0)}%`));
152
+ console.log(getScoreColor(result.quality.structure)(` Structure: ${result.quality.structure.toFixed(0)}%`));
153
+ console.log(getScoreColor(result.quality.completeness)(` Completeness: ${result.quality.completeness.toFixed(0)}%`));
154
+ console.log(getScoreColor(result.quality.actionability)(` Actionability: ${result.quality.actionability.toFixed(0)}%`));
155
+ console.log(getScoreColor(result.quality.overall).bold(`\n Overall: ${result.quality.overall.toFixed(0)}%\n`));
156
+ // Strengths
157
+ if (result.quality.strengths.length > 0) {
158
+ console.log(chalk.bold.green('✅ Strengths:\n'));
159
+ result.quality.strengths.forEach((strength) => {
160
+ console.log(chalk.green(` • ${strength}`));
161
+ });
162
+ console.log();
163
+ }
164
+ // Improvements Applied
165
+ if (result.improvements.length > 0) {
166
+ console.log(chalk.bold.magenta('✨ Improvements Applied:\n'));
167
+ result.improvements.forEach((improvement) => {
168
+ const emoji = improvement.impact === 'high' ? '🔥' : improvement.impact === 'medium' ? '⚡' : '💡';
169
+ console.log(chalk.magenta(` ${emoji} ${improvement.description} [${improvement.dimension}]`));
170
+ });
171
+ console.log();
172
+ }
173
+ // Enhanced Prompt
174
+ console.log(chalk.bold.cyan('✨ Enhanced Prompt:\n'));
175
+ console.log(chalk.dim('─'.repeat(80)));
176
+ console.log(result.enhanced);
177
+ console.log(chalk.dim('─'.repeat(80)));
178
+ console.log();
179
+ // Patterns Applied (comprehensive mode)
180
+ if (depthLevel === 'comprehensive' && result.appliedPatterns.length > 0) {
181
+ console.log(chalk.bold.blue('🧩 Patterns Applied:\n'));
182
+ result.appliedPatterns.forEach((pattern) => {
183
+ console.log(chalk.blue(` • ${pattern.name}: ${pattern.description}`));
184
+ });
185
+ console.log();
186
+ }
187
+ // Remaining Issues
188
+ if (result.quality.remainingIssues && result.quality.remainingIssues.length > 0) {
189
+ console.log(chalk.bold.yellow('⚠️ Remaining Areas for Improvement:\n'));
190
+ result.quality.remainingIssues.forEach((issue) => {
191
+ console.log(chalk.yellow(` • ${issue}`));
192
+ });
193
+ console.log();
194
+ }
195
+ // Recommendation
196
+ const recommendation = new UniversalOptimizer().getRecommendation(result);
197
+ if (recommendation) {
198
+ console.log(chalk.blue.bold('💡 Recommendation:'));
199
+ console.log(chalk.blue(` ${recommendation}\n`));
200
+ }
201
+ console.log(chalk.gray(`⚡ Processed in ${result.processingTimeMs}ms\n`));
202
+ if (depthLevel === 'comprehensive') {
203
+ console.log(chalk.gray('💡 Tip: The enhanced prompt includes alternative approaches, edge cases, and validation checklist\n'));
204
+ }
205
+ else {
206
+ console.log(chalk.gray('💡 Tip: Copy the enhanced prompt above and use it with your AI agent\n'));
207
+ }
208
+ }
209
+ displayAnalysisOnly(result, depthLevel) {
210
+ console.log(chalk.bold.cyan('🎯 Intent Analysis:\n'));
211
+ console.log(chalk.cyan(` Type: ${result.intent.primaryIntent}`));
212
+ console.log(chalk.cyan(` Confidence: ${result.intent.confidence}%`));
213
+ console.log(chalk.cyan(` Depth: ${depthLevel}`));
214
+ if (depthLevel === 'comprehensive') {
215
+ console.log(chalk.cyan(` Characteristics:`));
216
+ console.log(chalk.cyan(` • Has code context: ${result.intent.characteristics.hasCodeContext ? 'Yes' : 'No'}`));
217
+ console.log(chalk.cyan(` • Technical terms: ${result.intent.characteristics.hasTechnicalTerms ? 'Yes' : 'No'}`));
218
+ console.log(chalk.cyan(` • Open-ended: ${result.intent.characteristics.isOpenEnded ? 'Yes' : 'No'}`));
219
+ console.log(chalk.cyan(` • Needs structure: ${result.intent.characteristics.needsStructure ? 'Yes' : 'No'}`));
220
+ }
221
+ console.log();
222
+ console.log(chalk.bold('📊 Quality Scores:\n'));
223
+ console.log(chalk.white(` Clarity: ${result.quality.clarity.toFixed(0)}%`));
224
+ console.log(chalk.white(` Efficiency: ${result.quality.efficiency.toFixed(0)}%`));
225
+ console.log(chalk.white(` Structure: ${result.quality.structure.toFixed(0)}%`));
226
+ console.log(chalk.white(` Completeness: ${result.quality.completeness.toFixed(0)}%`));
227
+ console.log(chalk.white(` Actionability: ${result.quality.actionability.toFixed(0)}%`));
228
+ console.log(chalk.bold(`\n Overall: ${result.quality.overall.toFixed(0)}%\n`));
229
+ if (result.quality.strengths.length > 0) {
230
+ console.log(chalk.bold.green('✅ Strengths:\n'));
231
+ result.quality.strengths.forEach((strength) => {
232
+ console.log(chalk.green(` • ${strength}`));
233
+ });
234
+ console.log();
235
+ }
236
+ }
237
+ async savePrompt(result, depthLevel) {
238
+ try {
239
+ const manager = new PromptManager();
240
+ const content = result.enhanced;
241
+ await manager.savePrompt(content, depthLevel, result.original);
242
+ console.log(chalk.gray(`💾 Saved prompt to .clavix/outputs/prompts/\n`));
243
+ }
244
+ catch (error) {
245
+ console.log(chalk.yellow('⚠️ Could not save prompt to file system'));
246
+ console.log(chalk.gray('Error: ' + (error instanceof Error ? error.message : 'Unknown error')));
247
+ }
248
+ }
249
+ }
250
+ //# sourceMappingURL=improve.js.map