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.
- package/README.md +22 -8
- package/bin/clavix.js +12 -5
- package/dist/cli/commands/archive.d.ts +5 -4
- package/dist/cli/commands/archive.js +135 -161
- package/dist/cli/commands/config.d.ts +4 -4
- package/dist/cli/commands/config.js +66 -105
- package/dist/cli/commands/deep.d.ts +3 -3
- package/dist/cli/commands/deep.js +97 -103
- package/dist/cli/commands/execute.d.ts +4 -4
- package/dist/cli/commands/execute.js +57 -63
- package/dist/cli/commands/fast.d.ts +3 -3
- package/dist/cli/commands/fast.js +122 -128
- package/dist/cli/commands/implement.d.ts +4 -4
- package/dist/cli/commands/implement.js +84 -148
- package/dist/cli/commands/init.js +87 -126
- package/dist/cli/commands/list.d.ts +5 -5
- package/dist/cli/commands/list.js +72 -111
- package/dist/cli/commands/plan.d.ts +7 -7
- package/dist/cli/commands/plan.js +92 -131
- package/dist/cli/commands/prd.d.ts +4 -4
- package/dist/cli/commands/prd.js +76 -111
- package/dist/cli/commands/prompts/clear.d.ts +6 -6
- package/dist/cli/commands/prompts/clear.js +70 -76
- package/dist/cli/commands/prompts/list.js +37 -43
- package/dist/cli/commands/show.d.ts +4 -4
- package/dist/cli/commands/show.js +72 -111
- package/dist/cli/commands/start.d.ts +3 -3
- package/dist/cli/commands/start.js +63 -101
- package/dist/cli/commands/summarize.d.ts +4 -4
- package/dist/cli/commands/summarize.js +81 -120
- package/dist/cli/commands/task-complete.d.ts +4 -4
- package/dist/cli/commands/task-complete.js +86 -123
- package/dist/cli/commands/update.d.ts +3 -3
- package/dist/cli/commands/update.js +97 -130
- package/dist/cli/commands/version.js +13 -48
- package/dist/core/adapters/agents-md-generator.js +17 -50
- package/dist/core/adapters/amp-adapter.d.ts +1 -1
- package/dist/core/adapters/amp-adapter.js +13 -21
- package/dist/core/adapters/augment-adapter.d.ts +2 -2
- package/dist/core/adapters/augment-adapter.js +16 -56
- package/dist/core/adapters/base-adapter.d.ts +1 -1
- package/dist/core/adapters/base-adapter.js +11 -47
- package/dist/core/adapters/claude-code-adapter.d.ts +2 -2
- package/dist/core/adapters/claude-code-adapter.js +19 -60
- package/dist/core/adapters/cline-adapter.d.ts +1 -1
- package/dist/core/adapters/cline-adapter.js +13 -21
- package/dist/core/adapters/codebuddy-adapter.d.ts +2 -2
- package/dist/core/adapters/codebuddy-adapter.js +17 -57
- package/dist/core/adapters/codex-adapter.d.ts +2 -2
- package/dist/core/adapters/codex-adapter.js +16 -56
- package/dist/core/adapters/copilot-instructions-generator.js +18 -51
- package/dist/core/adapters/crush-adapter.d.ts +2 -2
- package/dist/core/adapters/crush-adapter.js +13 -20
- package/dist/core/adapters/cursor-adapter.d.ts +1 -1
- package/dist/core/adapters/cursor-adapter.js +12 -20
- package/dist/core/adapters/droid-adapter.d.ts +2 -2
- package/dist/core/adapters/droid-adapter.js +14 -21
- package/dist/core/adapters/gemini-adapter.d.ts +2 -2
- package/dist/core/adapters/gemini-adapter.js +16 -52
- package/dist/core/adapters/kilocode-adapter.d.ts +1 -1
- package/dist/core/adapters/kilocode-adapter.js +12 -20
- package/dist/core/adapters/octo-md-generator.js +17 -50
- package/dist/core/adapters/opencode-adapter.d.ts +2 -2
- package/dist/core/adapters/opencode-adapter.js +14 -21
- package/dist/core/adapters/qwen-adapter.d.ts +2 -2
- package/dist/core/adapters/qwen-adapter.js +16 -52
- package/dist/core/adapters/roocode-adapter.d.ts +2 -2
- package/dist/core/adapters/roocode-adapter.js +12 -19
- package/dist/core/adapters/warp-md-generator.js +17 -50
- package/dist/core/adapters/windsurf-adapter.d.ts +1 -1
- package/dist/core/adapters/windsurf-adapter.js +12 -20
- package/dist/core/agent-manager.d.ts +1 -1
- package/dist/core/agent-manager.js +34 -38
- package/dist/core/archive-manager.js +10 -46
- package/dist/core/config-manager.d.ts +2 -2
- package/dist/core/config-manager.js +3 -40
- package/dist/core/conversation-analyzer.d.ts +1 -1
- package/dist/core/conversation-analyzer.js +1 -5
- package/dist/core/doc-injector.js +23 -60
- package/dist/core/git-manager.js +11 -48
- package/dist/core/prd-generator.js +16 -51
- package/dist/core/prompt-manager.js +6 -42
- package/dist/core/prompt-optimizer.js +1 -5
- package/dist/core/question-engine.js +6 -45
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.js +11 -49
- package/dist/core/task-manager.d.ts +26 -0
- package/dist/core/task-manager.js +243 -101
- package/dist/index.d.ts +2 -1
- package/dist/index.js +8 -12
- package/dist/templates/agents/agents.md +31 -2
- package/dist/templates/agents/copilot-instructions.md +1 -1
- package/dist/templates/agents/octo.md +20 -1
- package/dist/templates/agents/warp.md +1 -1
- package/dist/templates/slash-commands/_canonical/implement.md +33 -11
- package/dist/types/agent.js +1 -2
- package/dist/types/config.js +3 -8
- package/dist/types/errors.js +7 -13
- package/dist/types/session.js +1 -2
- package/dist/utils/agent-error-messages.js +1 -5
- package/dist/utils/error-utils.js +5 -12
- package/dist/utils/file-system.js +20 -57
- package/dist/utils/legacy-command-cleanup.d.ts +1 -1
- package/dist/utils/legacy-command-cleanup.js +9 -45
- package/dist/utils/template-loader.d.ts +1 -1
- package/dist/utils/template-loader.js +9 -41
- package/dist/utils/toml-templates.js +1 -4
- package/package.json +12 -7
- package/dist/core/adapters 2/agents-md-generator.d.ts +0 -26
- package/dist/core/adapters 2/agents-md-generator.js +0 -102
- package/dist/core/adapters 2/amp-adapter.d.ts +0 -27
- package/dist/core/adapters 2/amp-adapter.js +0 -42
- package/dist/core/adapters 2/augment-adapter.d.ts +0 -22
- package/dist/core/adapters 2/augment-adapter.js +0 -77
- package/dist/core/adapters 2/base-adapter.d.ts +0 -45
- package/dist/core/adapters 2/base-adapter.js +0 -142
- package/dist/core/adapters 2/claude-code-adapter.d.ts +0 -32
- package/dist/core/adapters 2/claude-code-adapter.js +0 -116
- package/dist/core/adapters 2/cline-adapter.d.ts +0 -34
- package/dist/core/adapters 2/cline-adapter.js +0 -52
- package/dist/core/adapters 2/codebuddy-adapter.d.ts +0 -24
- package/dist/core/adapters 2/codebuddy-adapter.js +0 -82
- package/dist/core/adapters 2/codex-adapter.d.ts +0 -24
- package/dist/core/adapters 2/codex-adapter.js +0 -79
- package/dist/core/adapters 2/copilot-instructions-generator.d.ts +0 -26
- package/dist/core/adapters 2/copilot-instructions-generator.js +0 -104
- package/dist/core/adapters 2/crush-adapter.d.ts +0 -35
- package/dist/core/adapters 2/crush-adapter.js +0 -49
- package/dist/core/adapters 2/cursor-adapter.d.ts +0 -25
- package/dist/core/adapters 2/cursor-adapter.js +0 -40
- package/dist/core/adapters 2/droid-adapter.d.ts +0 -33
- package/dist/core/adapters 2/droid-adapter.js +0 -57
- package/dist/core/adapters 2/gemini-adapter.d.ts +0 -27
- package/dist/core/adapters 2/gemini-adapter.js +0 -90
- package/dist/core/adapters 2/kilocode-adapter.d.ts +0 -34
- package/dist/core/adapters 2/kilocode-adapter.js +0 -49
- package/dist/core/adapters 2/octo-md-generator.d.ts +0 -26
- package/dist/core/adapters 2/octo-md-generator.js +0 -102
- package/dist/core/adapters 2/opencode-adapter.d.ts +0 -33
- package/dist/core/adapters 2/opencode-adapter.js +0 -56
- package/dist/core/adapters 2/qwen-adapter.d.ts +0 -27
- package/dist/core/adapters 2/qwen-adapter.js +0 -90
- package/dist/core/adapters 2/roocode-adapter.d.ts +0 -40
- package/dist/core/adapters 2/roocode-adapter.js +0 -68
- package/dist/core/adapters 2/warp-md-generator.d.ts +0 -17
- package/dist/core/adapters 2/warp-md-generator.js +0 -88
- package/dist/core/adapters 2/windsurf-adapter.d.ts +0 -34
- package/dist/core/adapters 2/windsurf-adapter.js +0 -49
- package/dist/core/agent-manager 2.js +0 -126
- package/dist/core/agent-manager.d 2.ts +0 -51
- package/dist/core/archive-manager 2.js +0 -338
- package/dist/core/archive-manager.d 2.ts +0 -100
- package/dist/core/conversation-analyzer.d 2.ts +0 -86
- package/dist/core/doc-injector 2.js +0 -236
- package/dist/core/doc-injector.d 2.ts +0 -51
- package/dist/core/git-manager 2.js +0 -214
- package/dist/core/git-manager.d 2.ts +0 -100
- package/dist/core/prompt-optimizer 2.js +0 -963
- package/dist/core/prompt-optimizer.d 2.ts +0 -268
- package/dist/core/question-engine 2.js +0 -395
- package/dist/core/question-engine.d 2.ts +0 -167
- package/dist/core/session-manager 2.js +0 -403
- package/dist/core/session-manager.d 2.ts +0 -139
- package/dist/core/task-manager 2.js +0 -689
- package/dist/core/task-manager.d 2.ts +0 -155
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { Command, Args, Flags } from '@oclif/core';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { PromptOptimizer } from '../../core/prompt-optimizer.js';
|
|
5
|
+
import { PromptManager } from '../../core/prompt-manager.js';
|
|
6
|
+
export default class Fast extends Command {
|
|
7
|
+
static description = 'Quickly improve a prompt using CLEAR framework (Concise, Logical, Explicit) with smart triage';
|
|
8
|
+
static examples = [
|
|
9
|
+
'<%= config.bin %> <%= command.id %> "Create a login page"',
|
|
10
|
+
'<%= config.bin %> <%= command.id %> "Build an API for user management"',
|
|
11
|
+
];
|
|
12
|
+
static flags = {
|
|
13
|
+
'clear-only': Flags.boolean({
|
|
14
|
+
description: 'Show only CLEAR analysis without improved prompt',
|
|
15
|
+
default: false,
|
|
16
|
+
}),
|
|
17
|
+
'framework-info': Flags.boolean({
|
|
18
|
+
description: 'Display CLEAR framework information',
|
|
19
|
+
default: false,
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
static args = {
|
|
23
|
+
prompt: Args.string({
|
|
24
|
+
description: 'The prompt to improve',
|
|
25
|
+
required: true,
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
12
28
|
async run() {
|
|
13
29
|
const { args, flags } = await this.parse(Fast);
|
|
14
30
|
// Handle --framework-info flag
|
|
@@ -17,12 +33,12 @@ class Fast extends core_1.Command {
|
|
|
17
33
|
return;
|
|
18
34
|
}
|
|
19
35
|
if (!args.prompt || args.prompt.trim().length === 0) {
|
|
20
|
-
console.log(
|
|
21
|
-
console.log(
|
|
36
|
+
console.log(chalk.red('\nā Please provide a prompt to improve\n'));
|
|
37
|
+
console.log(chalk.gray('Example:'), chalk.cyan('clavix fast "Create a login page"'));
|
|
22
38
|
return;
|
|
23
39
|
}
|
|
24
|
-
console.log(
|
|
25
|
-
const optimizer = new
|
|
40
|
+
console.log(chalk.bold.cyan('\nš Analyzing prompt using CLEAR framework (fast mode)...\n'));
|
|
41
|
+
const optimizer = new PromptOptimizer();
|
|
26
42
|
// Get CLEAR analysis
|
|
27
43
|
const clearResult = optimizer.applyCLEARFramework(args.prompt, 'fast');
|
|
28
44
|
const clearScore = optimizer.calculateCLEARScore(clearResult);
|
|
@@ -34,22 +50,22 @@ class Fast extends core_1.Command {
|
|
|
34
50
|
clearScore.logic < 60 ||
|
|
35
51
|
clearScore.explicitness < 50;
|
|
36
52
|
if (needsDeepAnalysis) {
|
|
37
|
-
console.log(
|
|
38
|
-
console.log(
|
|
53
|
+
console.log(chalk.bold.yellow('ā ļø CLEAR Framework Triage Alert\n'));
|
|
54
|
+
console.log(chalk.yellow('Deep analysis is recommended for this prompt because:'));
|
|
39
55
|
if (clearScore.conciseness < 60) {
|
|
40
|
-
console.log(
|
|
56
|
+
console.log(chalk.yellow(` ⢠Low Conciseness score (${clearScore.conciseness.toFixed(0)}%) - needs detailed verbosity analysis`));
|
|
41
57
|
}
|
|
42
58
|
if (clearScore.logic < 60) {
|
|
43
|
-
console.log(
|
|
59
|
+
console.log(chalk.yellow(` ⢠Low Logic score (${clearScore.logic.toFixed(0)}%) - needs comprehensive flow analysis`));
|
|
44
60
|
}
|
|
45
61
|
if (clearScore.explicitness < 50) {
|
|
46
|
-
console.log(
|
|
62
|
+
console.log(chalk.yellow(` ⢠Low Explicitness score (${clearScore.explicitness.toFixed(0)}%) - needs complete specification check`));
|
|
47
63
|
}
|
|
48
64
|
result.triageResult?.reasons.forEach((reason) => {
|
|
49
|
-
console.log(
|
|
65
|
+
console.log(chalk.yellow(` ⢠${reason}`));
|
|
50
66
|
});
|
|
51
67
|
console.log();
|
|
52
|
-
const { proceed } = await
|
|
68
|
+
const { proceed } = await inquirer.prompt([
|
|
53
69
|
{
|
|
54
70
|
type: 'list',
|
|
55
71
|
name: 'proceed',
|
|
@@ -61,14 +77,14 @@ class Fast extends core_1.Command {
|
|
|
61
77
|
},
|
|
62
78
|
]);
|
|
63
79
|
if (proceed === 'deep') {
|
|
64
|
-
console.log(
|
|
80
|
+
console.log(chalk.cyan('\nš Switching to deep mode...\n'));
|
|
65
81
|
const deepClearResult = optimizer.applyCLEARFramework(args.prompt, 'deep');
|
|
66
82
|
const deepClearScore = optimizer.calculateCLEARScore(deepClearResult);
|
|
67
83
|
const deepResult = optimizer.improve(args.prompt, 'deep');
|
|
68
84
|
this.displayDeepModeOutput(deepResult, deepClearResult, deepClearScore);
|
|
69
85
|
return;
|
|
70
86
|
}
|
|
71
|
-
console.log(
|
|
87
|
+
console.log(chalk.yellow('\nā ļø Proceeding with fast mode as requested\n'));
|
|
72
88
|
}
|
|
73
89
|
// Handle --clear-only flag
|
|
74
90
|
if (flags['clear-only']) {
|
|
@@ -81,15 +97,15 @@ class Fast extends core_1.Command {
|
|
|
81
97
|
await this.savePrompt(clearResult.improvedPrompt, args.prompt, clearScore);
|
|
82
98
|
}
|
|
83
99
|
displayFastModeOutput(result, clearResult, clearScore) {
|
|
84
|
-
console.log(
|
|
100
|
+
console.log(chalk.bold.cyan('šÆ CLEAR Analysis (Fast Mode)\n'));
|
|
85
101
|
// Display CLEAR Assessment
|
|
86
|
-
console.log(
|
|
102
|
+
console.log(chalk.bold('š CLEAR Framework Assessment:\n'));
|
|
87
103
|
const getScoreColor = (score) => {
|
|
88
104
|
if (score >= 80)
|
|
89
|
-
return
|
|
105
|
+
return chalk.green;
|
|
90
106
|
if (score >= 60)
|
|
91
|
-
return
|
|
92
|
-
return
|
|
107
|
+
return chalk.yellow;
|
|
108
|
+
return chalk.red;
|
|
93
109
|
};
|
|
94
110
|
// Conciseness
|
|
95
111
|
const cColor = getScoreColor(clearScore.conciseness);
|
|
@@ -122,36 +138,36 @@ class Fast extends core_1.Command {
|
|
|
122
138
|
const overallColor = getScoreColor(clearScore.overall);
|
|
123
139
|
console.log(overallColor.bold(` Overall CLEAR Score: ${clearScore.overall.toFixed(0)}% (${clearScore.rating})\n`));
|
|
124
140
|
// Recommendation for deep mode
|
|
125
|
-
console.log(
|
|
126
|
-
console.log(
|
|
127
|
-
console.log(
|
|
141
|
+
console.log(chalk.blue.bold('š” Recommendation:'));
|
|
142
|
+
console.log(chalk.blue(' For Adaptive variations (A) and Reflective validation (R), use:'));
|
|
143
|
+
console.log(chalk.cyan(' clavix deep "<your prompt>"\n'));
|
|
128
144
|
// Display improved prompt
|
|
129
|
-
console.log(
|
|
130
|
-
console.log(
|
|
145
|
+
console.log(chalk.bold.cyan('⨠CLEAR-Optimized Prompt:\n'));
|
|
146
|
+
console.log(chalk.dim('ā'.repeat(80)));
|
|
131
147
|
console.log(clearResult.improvedPrompt);
|
|
132
|
-
console.log(
|
|
148
|
+
console.log(chalk.dim('ā'.repeat(80)));
|
|
133
149
|
console.log();
|
|
134
150
|
// Changes made (CLEAR-labeled)
|
|
135
151
|
if (clearResult.changesSummary.length > 0) {
|
|
136
|
-
console.log(
|
|
152
|
+
console.log(chalk.bold.magenta('š CLEAR Changes Made:\n'));
|
|
137
153
|
clearResult.changesSummary.forEach((change) => {
|
|
138
|
-
const label =
|
|
139
|
-
console.log(
|
|
154
|
+
const label = chalk.bold(`[${change.component}]`);
|
|
155
|
+
console.log(chalk.magenta(` ${label} ${change.change}`));
|
|
140
156
|
});
|
|
141
157
|
console.log();
|
|
142
158
|
}
|
|
143
|
-
console.log(
|
|
159
|
+
console.log(chalk.gray('š” Tip: Copy the CLEAR-optimized prompt above and use it with your AI agent\n'));
|
|
144
160
|
}
|
|
145
161
|
displayDeepModeOutput(result, clearResult, clearScore) {
|
|
146
|
-
console.log(
|
|
162
|
+
console.log(chalk.bold.cyan('šÆ CLEAR Framework Deep Analysis\n'));
|
|
147
163
|
// Display CLEAR Assessment (all 5 components for deep mode)
|
|
148
|
-
console.log(
|
|
164
|
+
console.log(chalk.bold('š Framework Assessment:\n'));
|
|
149
165
|
const getScoreColor = (score) => {
|
|
150
166
|
if (score >= 80)
|
|
151
|
-
return
|
|
167
|
+
return chalk.green;
|
|
152
168
|
if (score >= 60)
|
|
153
|
-
return
|
|
154
|
-
return
|
|
169
|
+
return chalk.yellow;
|
|
170
|
+
return chalk.red;
|
|
155
171
|
};
|
|
156
172
|
// C, L, E (same as fast mode)
|
|
157
173
|
const cColor = getScoreColor(clearScore.conciseness);
|
|
@@ -183,86 +199,86 @@ class Fast extends core_1.Command {
|
|
|
183
199
|
const overallColor = getScoreColor(clearScore.overall);
|
|
184
200
|
console.log(overallColor.bold(` Overall CLEAR Score: ${clearScore.overall.toFixed(0)}% (${clearScore.rating})\n`));
|
|
185
201
|
// Display improved prompt
|
|
186
|
-
console.log(
|
|
187
|
-
console.log(
|
|
202
|
+
console.log(chalk.bold.cyan('⨠CLEAR-Optimized Prompt:\n'));
|
|
203
|
+
console.log(chalk.dim('ā'.repeat(80)));
|
|
188
204
|
console.log(clearResult.improvedPrompt);
|
|
189
|
-
console.log(
|
|
205
|
+
console.log(chalk.dim('ā'.repeat(80)));
|
|
190
206
|
console.log();
|
|
191
207
|
// Changes made
|
|
192
208
|
if (clearResult.changesSummary.length > 0) {
|
|
193
|
-
console.log(
|
|
209
|
+
console.log(chalk.bold.magenta('š CLEAR Changes Made:\n'));
|
|
194
210
|
clearResult.changesSummary.forEach((change) => {
|
|
195
|
-
console.log(
|
|
211
|
+
console.log(chalk.magenta(` [${change.component}] ${change.change}`));
|
|
196
212
|
});
|
|
197
213
|
console.log();
|
|
198
214
|
}
|
|
199
215
|
// Adaptive Variations (A)
|
|
200
216
|
if (clearResult.adaptiveness) {
|
|
201
|
-
console.log(
|
|
217
|
+
console.log(chalk.bold.cyan('š Adaptive Variations:\n'));
|
|
202
218
|
if (clearResult.adaptiveness.alternativePhrasings.length > 0) {
|
|
203
|
-
console.log(
|
|
219
|
+
console.log(chalk.cyan(' Alternative Phrasings:'));
|
|
204
220
|
clearResult.adaptiveness.alternativePhrasings.forEach((p, i) => {
|
|
205
|
-
console.log(
|
|
221
|
+
console.log(chalk.cyan(` ${i + 1}. ${p}`));
|
|
206
222
|
});
|
|
207
223
|
console.log();
|
|
208
224
|
}
|
|
209
225
|
if (clearResult.adaptiveness.alternativeStructures.length > 0) {
|
|
210
|
-
console.log(
|
|
226
|
+
console.log(chalk.cyan(' Alternative Structures:'));
|
|
211
227
|
clearResult.adaptiveness.alternativeStructures.forEach((alt, i) => {
|
|
212
|
-
console.log(
|
|
213
|
-
console.log(
|
|
228
|
+
console.log(chalk.cyan(` ${i + 1}. ${alt.name}`));
|
|
229
|
+
console.log(chalk.gray(` ${alt.benefits}`));
|
|
214
230
|
});
|
|
215
231
|
console.log();
|
|
216
232
|
}
|
|
217
233
|
if (clearResult.adaptiveness.temperatureRecommendation !== undefined) {
|
|
218
|
-
console.log(
|
|
234
|
+
console.log(chalk.cyan(` Recommended Temperature: ${clearResult.adaptiveness.temperatureRecommendation}`));
|
|
219
235
|
console.log();
|
|
220
236
|
}
|
|
221
237
|
}
|
|
222
238
|
// Reflection Checklist (R)
|
|
223
239
|
if (clearResult.reflectiveness) {
|
|
224
|
-
console.log(
|
|
240
|
+
console.log(chalk.bold.yellow('š¤ Reflection Checklist:\n'));
|
|
225
241
|
if (clearResult.reflectiveness.validationChecklist.length > 0) {
|
|
226
|
-
console.log(
|
|
242
|
+
console.log(chalk.yellow(' Validation Steps:'));
|
|
227
243
|
clearResult.reflectiveness.validationChecklist.forEach((item) => {
|
|
228
|
-
console.log(
|
|
244
|
+
console.log(chalk.yellow(` ā ${item}`));
|
|
229
245
|
});
|
|
230
246
|
console.log();
|
|
231
247
|
}
|
|
232
248
|
if (clearResult.reflectiveness.edgeCases.length > 0) {
|
|
233
|
-
console.log(
|
|
249
|
+
console.log(chalk.yellow(' Edge Cases to Consider:'));
|
|
234
250
|
clearResult.reflectiveness.edgeCases.forEach((ec) => {
|
|
235
|
-
console.log(
|
|
251
|
+
console.log(chalk.yellow(` ⢠${ec}`));
|
|
236
252
|
});
|
|
237
253
|
console.log();
|
|
238
254
|
}
|
|
239
255
|
if (clearResult.reflectiveness.potentialIssues.length > 0) {
|
|
240
|
-
console.log(
|
|
256
|
+
console.log(chalk.yellow(' What Could Go Wrong:'));
|
|
241
257
|
clearResult.reflectiveness.potentialIssues.forEach((issue) => {
|
|
242
|
-
console.log(
|
|
258
|
+
console.log(chalk.yellow(` ⢠${issue}`));
|
|
243
259
|
});
|
|
244
260
|
console.log();
|
|
245
261
|
}
|
|
246
262
|
if (clearResult.reflectiveness.factCheckingSteps.length > 0) {
|
|
247
|
-
console.log(
|
|
263
|
+
console.log(chalk.yellow(' Fact-Checking Steps:'));
|
|
248
264
|
clearResult.reflectiveness.factCheckingSteps.forEach((step) => {
|
|
249
|
-
console.log(
|
|
265
|
+
console.log(chalk.yellow(` ⢠${step}`));
|
|
250
266
|
});
|
|
251
267
|
console.log();
|
|
252
268
|
}
|
|
253
269
|
}
|
|
254
|
-
console.log(
|
|
270
|
+
console.log(chalk.gray('š” Full CLEAR framework analysis complete!\n'));
|
|
255
271
|
}
|
|
256
272
|
displayCLEAROnlyAnalysis(clearResult, clearScore) {
|
|
257
|
-
console.log(
|
|
273
|
+
console.log(chalk.bold.cyan('šÆ CLEAR Framework Analysis Only\n'));
|
|
258
274
|
const getScoreColor = (score) => {
|
|
259
275
|
if (score >= 80)
|
|
260
|
-
return
|
|
276
|
+
return chalk.green;
|
|
261
277
|
if (score >= 60)
|
|
262
|
-
return
|
|
263
|
-
return
|
|
278
|
+
return chalk.yellow;
|
|
279
|
+
return chalk.red;
|
|
264
280
|
};
|
|
265
|
-
console.log(
|
|
281
|
+
console.log(chalk.bold('š CLEAR Assessment:\n'));
|
|
266
282
|
// Conciseness
|
|
267
283
|
const cColor = getScoreColor(clearScore.conciseness);
|
|
268
284
|
console.log(cColor.bold(` [C] Conciseness: ${clearScore.conciseness.toFixed(0)}%`));
|
|
@@ -296,11 +312,11 @@ class Fast extends core_1.Command {
|
|
|
296
312
|
// Overall
|
|
297
313
|
const overallColor = getScoreColor(clearScore.overall);
|
|
298
314
|
console.log(overallColor.bold(` Overall Score: ${clearScore.overall.toFixed(0)}% (${clearScore.rating})\n`));
|
|
299
|
-
console.log(
|
|
315
|
+
console.log(chalk.gray('Use without --clear-only flag to see improved prompt and changes.\n'));
|
|
300
316
|
}
|
|
301
317
|
async savePrompt(improvedPrompt, originalPrompt, clearScore) {
|
|
302
318
|
try {
|
|
303
|
-
const promptManager = new
|
|
319
|
+
const promptManager = new PromptManager();
|
|
304
320
|
// Build content with CLEAR scores
|
|
305
321
|
const content = `# Improved Prompt
|
|
306
322
|
|
|
@@ -318,85 +334,63 @@ ${originalPrompt}
|
|
|
318
334
|
\`\`\`
|
|
319
335
|
`;
|
|
320
336
|
const metadata = await promptManager.savePrompt(content, 'fast', originalPrompt);
|
|
321
|
-
console.log(
|
|
322
|
-
console.log(
|
|
323
|
-
console.log(
|
|
324
|
-
console.log(
|
|
337
|
+
console.log(chalk.green(`\nā
Prompt saved to: ${metadata.filename}`));
|
|
338
|
+
console.log(chalk.cyan(`\nš” Next steps:`));
|
|
339
|
+
console.log(chalk.cyan(` /clavix:execute - Implement this prompt`));
|
|
340
|
+
console.log(chalk.cyan(` /clavix:prompts - Review all saved prompts`));
|
|
325
341
|
console.log();
|
|
326
342
|
}
|
|
327
343
|
catch (error) {
|
|
328
344
|
// Don't fail the command if saving fails
|
|
329
|
-
console.log(
|
|
345
|
+
console.log(chalk.yellow(`\nā ļø Could not save prompt: ${error}`));
|
|
330
346
|
}
|
|
331
347
|
}
|
|
332
348
|
displayFrameworkInfo() {
|
|
333
|
-
console.log(
|
|
334
|
-
console.log(
|
|
349
|
+
console.log(chalk.bold.cyan('\nšÆ CLEAR Framework for Prompt Engineering\n'));
|
|
350
|
+
console.log(chalk.bold('What is CLEAR?\n'));
|
|
335
351
|
console.log('CLEAR is an academically-validated framework for creating effective prompts:');
|
|
336
352
|
console.log();
|
|
337
|
-
console.log(
|
|
338
|
-
console.log(
|
|
339
|
-
console.log(
|
|
340
|
-
console.log(
|
|
353
|
+
console.log(chalk.green.bold(' [C] Concise'));
|
|
354
|
+
console.log(chalk.green(' Eliminate verbosity and pleasantries'));
|
|
355
|
+
console.log(chalk.green(' Focus on essential information'));
|
|
356
|
+
console.log(chalk.green(' Example: "Please could you maybe help" ā "Create"'));
|
|
341
357
|
console.log();
|
|
342
|
-
console.log(
|
|
343
|
-
console.log(
|
|
344
|
-
console.log(
|
|
345
|
-
console.log(
|
|
358
|
+
console.log(chalk.blue.bold(' [L] Logical'));
|
|
359
|
+
console.log(chalk.blue(' Ensure coherent sequencing'));
|
|
360
|
+
console.log(chalk.blue(' Structure: Context ā Requirements ā Constraints ā Output'));
|
|
361
|
+
console.log(chalk.blue(' Example: Put background before asking for results'));
|
|
346
362
|
console.log();
|
|
347
|
-
console.log(
|
|
348
|
-
console.log(
|
|
349
|
-
console.log(
|
|
350
|
-
console.log(
|
|
363
|
+
console.log(chalk.yellow.bold(' [E] Explicit'));
|
|
364
|
+
console.log(chalk.yellow(' Specify persona, format, tone, and success criteria'));
|
|
365
|
+
console.log(chalk.yellow(' Define exactly what you want'));
|
|
366
|
+
console.log(chalk.yellow(' Example: "Build a dashboard" ā "Build a React analytics dashboard with charts"'));
|
|
351
367
|
console.log();
|
|
352
|
-
console.log(
|
|
353
|
-
console.log(
|
|
354
|
-
console.log(
|
|
355
|
-
console.log(
|
|
368
|
+
console.log(chalk.magenta.bold(' [A] Adaptive (Deep Mode Only)'));
|
|
369
|
+
console.log(chalk.magenta(' Provide alternative approaches'));
|
|
370
|
+
console.log(chalk.magenta(' Flexibility and customization'));
|
|
371
|
+
console.log(chalk.magenta(' Example: User story, job story, or structured formats'));
|
|
356
372
|
console.log();
|
|
357
|
-
console.log(
|
|
358
|
-
console.log(
|
|
359
|
-
console.log(
|
|
360
|
-
console.log(
|
|
373
|
+
console.log(chalk.cyan.bold(' [R] Reflective (Deep Mode Only)'));
|
|
374
|
+
console.log(chalk.cyan(' Enable validation and quality checks'));
|
|
375
|
+
console.log(chalk.cyan(' Edge cases and "what could go wrong"'));
|
|
376
|
+
console.log(chalk.cyan(' Example: Fact-checking steps, success criteria validation'));
|
|
361
377
|
console.log();
|
|
362
|
-
console.log(
|
|
378
|
+
console.log(chalk.bold('Academic Foundation:\n'));
|
|
363
379
|
console.log(' Developed by: Dr. Leo Lo');
|
|
364
380
|
console.log(' Institution: Dean of Libraries, University of New Mexico');
|
|
365
381
|
console.log(' Published: Journal of Academic Librarianship, July 2023');
|
|
366
382
|
console.log(' Paper: "The CLEAR Path: A Framework for Enhancing Information');
|
|
367
383
|
console.log(' Literacy through Prompt Engineering"');
|
|
368
384
|
console.log();
|
|
369
|
-
console.log(
|
|
385
|
+
console.log(chalk.bold('Resources:\n'));
|
|
370
386
|
console.log(' ⢠Framework Guide: https://guides.library.tamucc.edu/prompt-engineering/clear');
|
|
371
387
|
console.log(' ⢠Research Paper: https://digitalrepository.unm.edu/cgi/viewcontent.cgi?article=1214&context=ulls_fsp');
|
|
372
388
|
console.log();
|
|
373
|
-
console.log(
|
|
374
|
-
console.log(
|
|
375
|
-
console.log(
|
|
376
|
-
console.log(
|
|
389
|
+
console.log(chalk.bold('Usage in Clavix:\n'));
|
|
390
|
+
console.log(chalk.cyan(' clavix fast "prompt"') + chalk.gray(' # Uses C, L, E components'));
|
|
391
|
+
console.log(chalk.cyan(' clavix deep "prompt"') + chalk.gray(' # Uses full CLEAR (C, L, E, A, R)'));
|
|
392
|
+
console.log(chalk.cyan(' clavix fast --clear-only') + chalk.gray(' # Show scores only, no improvement'));
|
|
377
393
|
console.log();
|
|
378
394
|
}
|
|
379
395
|
}
|
|
380
|
-
Fast.description = 'Quickly improve a prompt using CLEAR framework (Concise, Logical, Explicit) with smart triage';
|
|
381
|
-
Fast.examples = [
|
|
382
|
-
'<%= config.bin %> <%= command.id %> "Create a login page"',
|
|
383
|
-
'<%= config.bin %> <%= command.id %> "Build an API for user management"',
|
|
384
|
-
];
|
|
385
|
-
Fast.flags = {
|
|
386
|
-
'clear-only': core_1.Flags.boolean({
|
|
387
|
-
description: 'Show only CLEAR analysis without improved prompt',
|
|
388
|
-
default: false,
|
|
389
|
-
}),
|
|
390
|
-
'framework-info': core_1.Flags.boolean({
|
|
391
|
-
description: 'Display CLEAR framework information',
|
|
392
|
-
default: false,
|
|
393
|
-
}),
|
|
394
|
-
};
|
|
395
|
-
Fast.args = {
|
|
396
|
-
prompt: core_1.Args.string({
|
|
397
|
-
description: 'The prompt to improve',
|
|
398
|
-
required: true,
|
|
399
|
-
}),
|
|
400
|
-
};
|
|
401
|
-
exports.default = Fast;
|
|
402
396
|
//# sourceMappingURL=fast.js.map
|
|
@@ -3,10 +3,10 @@ export default class Implement extends Command {
|
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static flags: {
|
|
6
|
-
project: import("@oclif/core/
|
|
7
|
-
'tasks-path': import("@oclif/core/
|
|
8
|
-
'no-git': import("@oclif/core/
|
|
9
|
-
'commit-strategy': import("@oclif/core/
|
|
6
|
+
project: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
'tasks-path': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
'no-git': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
'commit-strategy': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
10
|
};
|
|
11
11
|
run(): Promise<void>;
|
|
12
12
|
/**
|