wiggum-cli 0.2.0 → 0.2.2
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/dist/ai/enhancer.d.ts +2 -0
- package/dist/ai/enhancer.d.ts.map +1 -1
- package/dist/ai/enhancer.js +3 -1
- package/dist/ai/enhancer.js.map +1 -1
- package/dist/ai/providers.d.ts +13 -1
- package/dist/ai/providers.d.ts.map +1 -1
- package/dist/ai/providers.js +28 -6
- package/dist/ai/providers.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +23 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/utils/colors.d.ts +48 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/colors.js +85 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/header.d.ts +5 -1
- package/dist/utils/header.d.ts.map +1 -1
- package/dist/utils/header.js +19 -4
- package/dist/utils/header.js.map +1 -1
- package/package.json +1 -1
- package/src/ai/enhancer.ts +4 -1
- package/src/ai/providers.ts +38 -6
- package/src/commands/init.ts +26 -5
- package/src/utils/colors.ts +95 -0
- package/src/utils/header.ts +21 -4
package/dist/ai/enhancer.d.ts
CHANGED
|
@@ -66,6 +66,7 @@ export interface EnhancedScanResult extends ScanResult {
|
|
|
66
66
|
*/
|
|
67
67
|
export interface EnhancerOptions {
|
|
68
68
|
provider?: AIProvider;
|
|
69
|
+
model?: string;
|
|
69
70
|
verbose?: boolean;
|
|
70
71
|
}
|
|
71
72
|
/**
|
|
@@ -74,6 +75,7 @@ export interface EnhancerOptions {
|
|
|
74
75
|
*/
|
|
75
76
|
export declare class AIEnhancer {
|
|
76
77
|
private provider;
|
|
78
|
+
private model?;
|
|
77
79
|
private verbose;
|
|
78
80
|
constructor(options?: EnhancerOptions);
|
|
79
81
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhancer.d.ts","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAkC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAY,KAAK,UAAU,EAA8B,MAAM,gBAAgB,CAAC;AAIvF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5C,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyED;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,eAAoB;
|
|
1
|
+
{"version":3,"file":"enhancer.d.ts","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAkC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAY,KAAK,UAAU,EAA8B,MAAM,gBAAgB,CAAC;AAIvF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5C,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyED;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,eAAoB;IAMzC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiEnE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAG7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAoFnE"}
|
package/dist/ai/enhancer.js
CHANGED
|
@@ -70,9 +70,11 @@ function applyEnhancements(stack, analysis) {
|
|
|
70
70
|
*/
|
|
71
71
|
export class AIEnhancer {
|
|
72
72
|
provider;
|
|
73
|
+
model;
|
|
73
74
|
verbose;
|
|
74
75
|
constructor(options = {}) {
|
|
75
76
|
this.provider = options.provider || 'anthropic';
|
|
77
|
+
this.model = options.model;
|
|
76
78
|
this.verbose = options.verbose || false;
|
|
77
79
|
}
|
|
78
80
|
/**
|
|
@@ -102,7 +104,7 @@ export class AIEnhancer {
|
|
|
102
104
|
}
|
|
103
105
|
try {
|
|
104
106
|
// Get the configured model
|
|
105
|
-
const { model, provider, modelId } = getModel(this.provider);
|
|
107
|
+
const { model, provider, modelId } = getModel(this.provider, this.model);
|
|
106
108
|
if (this.verbose) {
|
|
107
109
|
logger.info(`Using AI provider: ${provider} (${modelId})`);
|
|
108
110
|
}
|
package/dist/ai/enhancer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enhancer.js","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAmB,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"enhancer.js","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/providers.d.ts
CHANGED
|
@@ -15,6 +15,18 @@ export interface ProviderConfig {
|
|
|
15
15
|
provider: AIProvider;
|
|
16
16
|
modelId: string;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Model option with label and value
|
|
20
|
+
*/
|
|
21
|
+
export interface ModelOption {
|
|
22
|
+
value: string;
|
|
23
|
+
label: string;
|
|
24
|
+
hint?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Available models for each provider
|
|
28
|
+
*/
|
|
29
|
+
export declare const AVAILABLE_MODELS: Record<AIProvider, ModelOption[]>;
|
|
18
30
|
/**
|
|
19
31
|
* Check if an API key is available for a provider
|
|
20
32
|
*/
|
|
@@ -22,7 +34,7 @@ export declare function hasApiKey(provider: AIProvider): boolean;
|
|
|
22
34
|
/**
|
|
23
35
|
* Get a configured AI model for the specified provider
|
|
24
36
|
*/
|
|
25
|
-
export declare function getModel(provider?: AIProvider): ProviderConfig;
|
|
37
|
+
export declare function getModel(provider?: AIProvider, customModelId?: string): ProviderConfig;
|
|
26
38
|
/**
|
|
27
39
|
* Get the first available provider with an API key
|
|
28
40
|
* Checks in order: anthropic, openai, openrouter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAkB9D,CAAC;AAYF;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAGvD;AAmBD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,GAAE,UAAwB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,cAAc,CA0CnG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,GAAG,IAAI,CAUxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAE5D"}
|
package/dist/ai/providers.js
CHANGED
|
@@ -12,14 +12,36 @@ const API_KEY_ENV_VARS = {
|
|
|
12
12
|
openai: 'OPENAI_API_KEY',
|
|
13
13
|
openrouter: 'OPENROUTER_API_KEY',
|
|
14
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Available models for each provider
|
|
17
|
+
*/
|
|
18
|
+
export const AVAILABLE_MODELS = {
|
|
19
|
+
anthropic: [
|
|
20
|
+
{ value: 'claude-opus-4-5-20250514', label: 'Claude Opus 4.5', hint: 'most capable' },
|
|
21
|
+
{ value: 'claude-sonnet-4-5-20250514', label: 'Claude Sonnet 4.5', hint: 'recommended' },
|
|
22
|
+
{ value: 'claude-haiku-4-5-20250514', label: 'Claude Haiku 4.5', hint: 'fastest' },
|
|
23
|
+
],
|
|
24
|
+
openai: [
|
|
25
|
+
{ value: 'gpt-5.1', label: 'GPT-5.1', hint: 'most capable' },
|
|
26
|
+
{ value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max', hint: 'best for code' },
|
|
27
|
+
{ value: 'gpt-5-mini', label: 'GPT-5 Mini', hint: 'fastest' },
|
|
28
|
+
],
|
|
29
|
+
openrouter: [
|
|
30
|
+
{ value: 'google/gemini-3-pro-preview', label: 'Gemini 3 Pro', hint: 'Google' },
|
|
31
|
+
{ value: 'google/gemini-3-flash-preview', label: 'Gemini 3 Flash', hint: 'fast' },
|
|
32
|
+
{ value: 'deepseek/deepseek-v3.2', label: 'DeepSeek v3.2', hint: 'efficient' },
|
|
33
|
+
{ value: 'z-ai/glm-4.7', label: 'GLM 4.7', hint: 'Z-AI' },
|
|
34
|
+
{ value: 'minimax/minimax-m2.1', label: 'MiniMax M2.1', hint: 'MiniMax' },
|
|
35
|
+
],
|
|
36
|
+
};
|
|
15
37
|
/**
|
|
16
38
|
* Default models for each provider
|
|
17
|
-
* Using
|
|
39
|
+
* Using balanced models for good results
|
|
18
40
|
*/
|
|
19
41
|
const DEFAULT_MODELS = {
|
|
20
|
-
anthropic: 'claude-sonnet-4-20250514',
|
|
21
|
-
openai: 'gpt-
|
|
22
|
-
openrouter: '
|
|
42
|
+
anthropic: 'claude-sonnet-4-5-20250514',
|
|
43
|
+
openai: 'gpt-5.1',
|
|
44
|
+
openrouter: 'google/gemini-3-pro-preview',
|
|
23
45
|
};
|
|
24
46
|
/**
|
|
25
47
|
* Check if an API key is available for a provider
|
|
@@ -43,8 +65,8 @@ function getApiKey(provider) {
|
|
|
43
65
|
/**
|
|
44
66
|
* Get a configured AI model for the specified provider
|
|
45
67
|
*/
|
|
46
|
-
export function getModel(provider = 'anthropic') {
|
|
47
|
-
const modelId = DEFAULT_MODELS[provider];
|
|
68
|
+
export function getModel(provider = 'anthropic', customModelId) {
|
|
69
|
+
const modelId = customModelId || DEFAULT_MODELS[provider];
|
|
48
70
|
switch (provider) {
|
|
49
71
|
case 'anthropic': {
|
|
50
72
|
const anthropic = createAnthropic({
|
package/dist/ai/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiB9C;;GAEG;AACH,MAAM,gBAAgB,GAA+B;IACnD,SAAS,EAAE,mBAAmB;IAC9B,MAAM,EAAE,gBAAgB;IACxB,UAAU,EAAE,oBAAoB;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,cAAc,GAA+B;IACjD,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAQxB,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoOrE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -6,11 +6,11 @@ import { logger } from '../utils/logger.js';
|
|
|
6
6
|
import { Scanner, formatScanResult } from '../scanner/index.js';
|
|
7
7
|
import { Generator, formatGenerationResult } from '../generator/index.js';
|
|
8
8
|
import { AIEnhancer, formatAIAnalysis, } from '../ai/index.js';
|
|
9
|
-
import { hasApiKey, getApiKeyEnvVar, getAvailableProvider } from '../ai/providers.js';
|
|
9
|
+
import { hasApiKey, getApiKeyEnvVar, getAvailableProvider, AVAILABLE_MODELS } from '../ai/providers.js';
|
|
10
10
|
import * as prompts from '@clack/prompts';
|
|
11
|
-
import pc from 'picocolors';
|
|
12
11
|
import fs from 'fs';
|
|
13
12
|
import path from 'path';
|
|
13
|
+
import { simpson } from '../utils/colors.js';
|
|
14
14
|
/**
|
|
15
15
|
* Initialize Ralph in the current project
|
|
16
16
|
* Scans the project and generates configuration
|
|
@@ -36,7 +36,7 @@ export async function initCommand(options) {
|
|
|
36
36
|
}
|
|
37
37
|
// Display scan results
|
|
38
38
|
console.log('');
|
|
39
|
-
console.log(
|
|
39
|
+
console.log(simpson.yellow('─── Scan Results ───'));
|
|
40
40
|
console.log(formatScanResult(scanResult));
|
|
41
41
|
console.log('');
|
|
42
42
|
// Step 2: AI Enhancement
|
|
@@ -61,7 +61,7 @@ export async function initCommand(options) {
|
|
|
61
61
|
// If no API key found, prompt for one
|
|
62
62
|
if (!hasKey) {
|
|
63
63
|
console.log('');
|
|
64
|
-
console.log(
|
|
64
|
+
console.log(simpson.pink('No API key found for AI enhancement.'));
|
|
65
65
|
console.log('');
|
|
66
66
|
// Ask which provider to use
|
|
67
67
|
const providerChoice = await prompts.select({
|
|
@@ -126,10 +126,27 @@ export async function initCommand(options) {
|
|
|
126
126
|
}
|
|
127
127
|
// Run AI enhancement if we have a key
|
|
128
128
|
if (useAI && hasKey) {
|
|
129
|
+
// Ask which model to use
|
|
130
|
+
const modelOptions = AVAILABLE_MODELS[provider];
|
|
131
|
+
const modelChoice = await prompts.select({
|
|
132
|
+
message: 'Which model would you like to use?',
|
|
133
|
+
options: modelOptions.map(m => ({
|
|
134
|
+
value: m.value,
|
|
135
|
+
label: m.label,
|
|
136
|
+
hint: m.hint,
|
|
137
|
+
})),
|
|
138
|
+
});
|
|
139
|
+
if (prompts.isCancel(modelChoice)) {
|
|
140
|
+
logger.info('Initialization cancelled');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const selectedModel = modelChoice;
|
|
144
|
+
const modelLabel = modelOptions.find(m => m.value === selectedModel)?.label || selectedModel;
|
|
129
145
|
console.log('');
|
|
130
|
-
console.log(
|
|
146
|
+
console.log(simpson.yellow(`─── AI Enhancement (${provider} / ${modelLabel}) ───`));
|
|
131
147
|
const aiEnhancer = new AIEnhancer({
|
|
132
148
|
provider,
|
|
149
|
+
model: selectedModel,
|
|
133
150
|
verbose: true,
|
|
134
151
|
});
|
|
135
152
|
spinner.start('Running AI analysis...');
|
|
@@ -178,7 +195,7 @@ export async function initCommand(options) {
|
|
|
178
195
|
const generationResult = await generator.generate(scanResult);
|
|
179
196
|
spinner.stop('Configuration files generated');
|
|
180
197
|
console.log('');
|
|
181
|
-
console.log(
|
|
198
|
+
console.log(simpson.yellow('─── Generation Results ───'));
|
|
182
199
|
console.log(formatGenerationResult(generationResult));
|
|
183
200
|
if (generationResult.success) {
|
|
184
201
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EACL,UAAU,EACV,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simpson Color Palette
|
|
3
|
+
* Custom ANSI color utilities for the CLI
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Simpson color palette hex values
|
|
7
|
+
*/
|
|
8
|
+
export declare const SIMPSON_COLORS: {
|
|
9
|
+
readonly blue: "#2f64d6";
|
|
10
|
+
readonly yellow: "#f8db27";
|
|
11
|
+
readonly brown: "#9c5b01";
|
|
12
|
+
readonly white: "#ffffff";
|
|
13
|
+
readonly pink: "#ff81c1";
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Simpson color functions for terminal output
|
|
17
|
+
*/
|
|
18
|
+
export declare const simpson: {
|
|
19
|
+
yellow: (text: string) => string;
|
|
20
|
+
blue: (text: string) => string;
|
|
21
|
+
brown: (text: string) => string;
|
|
22
|
+
white: (text: string) => string;
|
|
23
|
+
pink: (text: string) => string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Box drawing characters
|
|
27
|
+
*/
|
|
28
|
+
export declare const box: {
|
|
29
|
+
topLeft: string;
|
|
30
|
+
topRight: string;
|
|
31
|
+
bottomLeft: string;
|
|
32
|
+
bottomRight: string;
|
|
33
|
+
horizontal: string;
|
|
34
|
+
vertical: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Draw a horizontal line
|
|
38
|
+
*/
|
|
39
|
+
export declare function drawLine(width?: number): string;
|
|
40
|
+
/**
|
|
41
|
+
* Draw a box around text
|
|
42
|
+
*/
|
|
43
|
+
export declare function drawBox(text: string, padding?: number): string;
|
|
44
|
+
/**
|
|
45
|
+
* Section header with horizontal lines
|
|
46
|
+
*/
|
|
47
|
+
export declare function sectionHeader(title: string): string;
|
|
48
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AA8BX;;GAEG;AACH,eAAO,MAAM,OAAO;mBACH,MAAM,KAAG,MAAM;iBACjB,MAAM,KAAG,MAAM;kBACd,MAAM,KAAG,MAAM;kBACf,MAAM,KAAG,MAAM;iBAChB,MAAM,KAAG,MAAM;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;CAOf,CAAC;AAEF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,GAAG,MAAM,CASjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnD"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simpson Color Palette
|
|
3
|
+
* Custom ANSI color utilities for the CLI
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Simpson color palette hex values
|
|
7
|
+
*/
|
|
8
|
+
export const SIMPSON_COLORS = {
|
|
9
|
+
blue: '#2f64d6',
|
|
10
|
+
yellow: '#f8db27',
|
|
11
|
+
brown: '#9c5b01',
|
|
12
|
+
white: '#ffffff',
|
|
13
|
+
pink: '#ff81c1',
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Convert hex to RGB
|
|
17
|
+
*/
|
|
18
|
+
function hexToRgb(hex) {
|
|
19
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
20
|
+
if (!result) {
|
|
21
|
+
return { r: 255, g: 255, b: 255 };
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
r: parseInt(result[1], 16),
|
|
25
|
+
g: parseInt(result[2], 16),
|
|
26
|
+
b: parseInt(result[3], 16),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create ANSI escape code for foreground color from hex
|
|
31
|
+
*/
|
|
32
|
+
function fgHex(hex) {
|
|
33
|
+
const { r, g, b } = hexToRgb(hex);
|
|
34
|
+
return `\x1b[38;2;${r};${g};${b}m`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Reset ANSI escape code
|
|
38
|
+
*/
|
|
39
|
+
const reset = '\x1b[0m';
|
|
40
|
+
/**
|
|
41
|
+
* Simpson color functions for terminal output
|
|
42
|
+
*/
|
|
43
|
+
export const simpson = {
|
|
44
|
+
yellow: (text) => `${fgHex(SIMPSON_COLORS.yellow)}${text}${reset}`,
|
|
45
|
+
blue: (text) => `${fgHex(SIMPSON_COLORS.blue)}${text}${reset}`,
|
|
46
|
+
brown: (text) => `${fgHex(SIMPSON_COLORS.brown)}${text}${reset}`,
|
|
47
|
+
white: (text) => `${fgHex(SIMPSON_COLORS.white)}${text}${reset}`,
|
|
48
|
+
pink: (text) => `${fgHex(SIMPSON_COLORS.pink)}${text}${reset}`,
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Box drawing characters
|
|
52
|
+
*/
|
|
53
|
+
export const box = {
|
|
54
|
+
topLeft: '┌',
|
|
55
|
+
topRight: '┐',
|
|
56
|
+
bottomLeft: '└',
|
|
57
|
+
bottomRight: '┘',
|
|
58
|
+
horizontal: '─',
|
|
59
|
+
vertical: '│',
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Draw a horizontal line
|
|
63
|
+
*/
|
|
64
|
+
export function drawLine(width = 50) {
|
|
65
|
+
return simpson.brown(box.horizontal.repeat(width));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Draw a box around text
|
|
69
|
+
*/
|
|
70
|
+
export function drawBox(text, padding = 1) {
|
|
71
|
+
const paddedText = ' '.repeat(padding) + text + ' '.repeat(padding);
|
|
72
|
+
const width = paddedText.length;
|
|
73
|
+
const top = simpson.brown(box.topLeft + box.horizontal.repeat(width) + box.topRight);
|
|
74
|
+
const middle = simpson.brown(box.vertical) + paddedText + simpson.brown(box.vertical);
|
|
75
|
+
const bottom = simpson.brown(box.bottomLeft + box.horizontal.repeat(width) + box.bottomRight);
|
|
76
|
+
return `${top}\n${middle}\n${bottom}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Section header with horizontal lines
|
|
80
|
+
*/
|
|
81
|
+
export function sectionHeader(title) {
|
|
82
|
+
const line = drawLine(50);
|
|
83
|
+
return `\n${line}\n${simpson.yellow(title)}\n${line}`;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/header.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Display the RALPH ASCII header
|
|
2
|
+
* Display the RALPH ASCII header with welcome box
|
|
3
3
|
*/
|
|
4
4
|
export declare function displayHeader(): void;
|
|
5
|
+
/**
|
|
6
|
+
* Display a minimal header (for subcommands)
|
|
7
|
+
*/
|
|
8
|
+
export declare function displayMinimalHeader(): void;
|
|
5
9
|
//# sourceMappingURL=header.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAgBpC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
|
package/dist/utils/header.js
CHANGED
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
import cfonts from 'cfonts';
|
|
2
|
+
import { simpson, drawBox, SIMPSON_COLORS } from './colors.js';
|
|
2
3
|
/**
|
|
3
|
-
* Display the RALPH ASCII header
|
|
4
|
+
* Display the RALPH ASCII header with welcome box
|
|
4
5
|
*/
|
|
5
6
|
export function displayHeader() {
|
|
6
|
-
|
|
7
|
+
// Welcome box like Claude Code
|
|
8
|
+
const welcomeText = simpson.pink('*') + ' Welcome to ' + simpson.yellow('Ralph') + '🍩';
|
|
9
|
+
console.log('');
|
|
10
|
+
console.log(drawBox(welcomeText, 2));
|
|
11
|
+
console.log('');
|
|
12
|
+
// ASCII art logo in Simpson yellow
|
|
13
|
+
cfonts.say('WIGGUM CLI', {
|
|
7
14
|
font: 'block',
|
|
8
|
-
colors: [
|
|
15
|
+
colors: [SIMPSON_COLORS.yellow],
|
|
9
16
|
letterSpacing: 1,
|
|
10
17
|
lineHeight: 1,
|
|
11
|
-
space:
|
|
18
|
+
space: false,
|
|
12
19
|
maxLength: 0,
|
|
13
20
|
});
|
|
14
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Display a minimal header (for subcommands)
|
|
24
|
+
*/
|
|
25
|
+
export function displayMinimalHeader() {
|
|
26
|
+
console.log('');
|
|
27
|
+
console.log(simpson.yellow('Ralph') + simpson.brown(' │ ') + 'AI-powered loop development');
|
|
28
|
+
console.log('');
|
|
29
|
+
}
|
|
15
30
|
//# sourceMappingURL=header.js.map
|
package/dist/utils/header.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../src/utils/header.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,+BAA+B;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,mCAAmC;IACnC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;QACvB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;QAC/B,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;QACb,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,CAAC;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,6BAA6B,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
package/src/ai/enhancer.ts
CHANGED
|
@@ -78,6 +78,7 @@ export interface EnhancedScanResult extends ScanResult {
|
|
|
78
78
|
*/
|
|
79
79
|
export interface EnhancerOptions {
|
|
80
80
|
provider?: AIProvider;
|
|
81
|
+
model?: string;
|
|
81
82
|
verbose?: boolean;
|
|
82
83
|
}
|
|
83
84
|
|
|
@@ -158,10 +159,12 @@ function applyEnhancements(
|
|
|
158
159
|
*/
|
|
159
160
|
export class AIEnhancer {
|
|
160
161
|
private provider: AIProvider;
|
|
162
|
+
private model?: string;
|
|
161
163
|
private verbose: boolean;
|
|
162
164
|
|
|
163
165
|
constructor(options: EnhancerOptions = {}) {
|
|
164
166
|
this.provider = options.provider || 'anthropic';
|
|
167
|
+
this.model = options.model;
|
|
165
168
|
this.verbose = options.verbose || false;
|
|
166
169
|
}
|
|
167
170
|
|
|
@@ -195,7 +198,7 @@ export class AIEnhancer {
|
|
|
195
198
|
|
|
196
199
|
try {
|
|
197
200
|
// Get the configured model
|
|
198
|
-
const { model, provider, modelId } = getModel(this.provider);
|
|
201
|
+
const { model, provider, modelId } = getModel(this.provider, this.model);
|
|
199
202
|
|
|
200
203
|
if (this.verbose) {
|
|
201
204
|
logger.info(`Using AI provider: ${provider} (${modelId})`);
|
package/src/ai/providers.ts
CHANGED
|
@@ -30,14 +30,46 @@ const API_KEY_ENV_VARS: Record<AIProvider, string> = {
|
|
|
30
30
|
openrouter: 'OPENROUTER_API_KEY',
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Model option with label and value
|
|
35
|
+
*/
|
|
36
|
+
export interface ModelOption {
|
|
37
|
+
value: string;
|
|
38
|
+
label: string;
|
|
39
|
+
hint?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Available models for each provider
|
|
44
|
+
*/
|
|
45
|
+
export const AVAILABLE_MODELS: Record<AIProvider, ModelOption[]> = {
|
|
46
|
+
anthropic: [
|
|
47
|
+
{ value: 'claude-opus-4-5-20250514', label: 'Claude Opus 4.5', hint: 'most capable' },
|
|
48
|
+
{ value: 'claude-sonnet-4-5-20250514', label: 'Claude Sonnet 4.5', hint: 'recommended' },
|
|
49
|
+
{ value: 'claude-haiku-4-5-20250514', label: 'Claude Haiku 4.5', hint: 'fastest' },
|
|
50
|
+
],
|
|
51
|
+
openai: [
|
|
52
|
+
{ value: 'gpt-5.1', label: 'GPT-5.1', hint: 'most capable' },
|
|
53
|
+
{ value: 'gpt-5.1-codex-max', label: 'GPT-5.1 Codex Max', hint: 'best for code' },
|
|
54
|
+
{ value: 'gpt-5-mini', label: 'GPT-5 Mini', hint: 'fastest' },
|
|
55
|
+
],
|
|
56
|
+
openrouter: [
|
|
57
|
+
{ value: 'google/gemini-3-pro-preview', label: 'Gemini 3 Pro', hint: 'Google' },
|
|
58
|
+
{ value: 'google/gemini-3-flash-preview', label: 'Gemini 3 Flash', hint: 'fast' },
|
|
59
|
+
{ value: 'deepseek/deepseek-v3.2', label: 'DeepSeek v3.2', hint: 'efficient' },
|
|
60
|
+
{ value: 'z-ai/glm-4.7', label: 'GLM 4.7', hint: 'Z-AI' },
|
|
61
|
+
{ value: 'minimax/minimax-m2.1', label: 'MiniMax M2.1', hint: 'MiniMax' },
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
|
|
33
65
|
/**
|
|
34
66
|
* Default models for each provider
|
|
35
|
-
* Using
|
|
67
|
+
* Using balanced models for good results
|
|
36
68
|
*/
|
|
37
69
|
const DEFAULT_MODELS: Record<AIProvider, string> = {
|
|
38
|
-
anthropic: 'claude-sonnet-4-20250514',
|
|
39
|
-
openai: 'gpt-
|
|
40
|
-
openrouter: '
|
|
70
|
+
anthropic: 'claude-sonnet-4-5-20250514',
|
|
71
|
+
openai: 'gpt-5.1',
|
|
72
|
+
openrouter: 'google/gemini-3-pro-preview',
|
|
41
73
|
};
|
|
42
74
|
|
|
43
75
|
/**
|
|
@@ -68,8 +100,8 @@ function getApiKey(provider: AIProvider): string {
|
|
|
68
100
|
/**
|
|
69
101
|
* Get a configured AI model for the specified provider
|
|
70
102
|
*/
|
|
71
|
-
export function getModel(provider: AIProvider = 'anthropic'): ProviderConfig {
|
|
72
|
-
const modelId = DEFAULT_MODELS[provider];
|
|
103
|
+
export function getModel(provider: AIProvider = 'anthropic', customModelId?: string): ProviderConfig {
|
|
104
|
+
const modelId = customModelId || DEFAULT_MODELS[provider];
|
|
73
105
|
|
|
74
106
|
switch (provider) {
|
|
75
107
|
case 'anthropic': {
|
package/src/commands/init.ts
CHANGED
|
@@ -12,11 +12,12 @@ import {
|
|
|
12
12
|
type AIProvider,
|
|
13
13
|
type EnhancedScanResult,
|
|
14
14
|
} from '../ai/index.js';
|
|
15
|
-
import { hasApiKey, getApiKeyEnvVar, getAvailableProvider } from '../ai/providers.js';
|
|
15
|
+
import { hasApiKey, getApiKeyEnvVar, getAvailableProvider, AVAILABLE_MODELS } from '../ai/providers.js';
|
|
16
16
|
import * as prompts from '@clack/prompts';
|
|
17
17
|
import pc from 'picocolors';
|
|
18
18
|
import fs from 'fs';
|
|
19
19
|
import path from 'path';
|
|
20
|
+
import { simpson, sectionHeader, drawLine } from '../utils/colors.js';
|
|
20
21
|
|
|
21
22
|
export interface InitOptions {
|
|
22
23
|
ai?: boolean;
|
|
@@ -53,7 +54,7 @@ export async function initCommand(options: InitOptions): Promise<void> {
|
|
|
53
54
|
|
|
54
55
|
// Display scan results
|
|
55
56
|
console.log('');
|
|
56
|
-
console.log(
|
|
57
|
+
console.log(simpson.yellow('─── Scan Results ───'));
|
|
57
58
|
console.log(formatScanResult(scanResult));
|
|
58
59
|
console.log('');
|
|
59
60
|
|
|
@@ -84,7 +85,7 @@ export async function initCommand(options: InitOptions): Promise<void> {
|
|
|
84
85
|
// If no API key found, prompt for one
|
|
85
86
|
if (!hasKey) {
|
|
86
87
|
console.log('');
|
|
87
|
-
console.log(
|
|
88
|
+
console.log(simpson.pink('No API key found for AI enhancement.'));
|
|
88
89
|
console.log('');
|
|
89
90
|
|
|
90
91
|
// Ask which provider to use
|
|
@@ -155,11 +156,31 @@ export async function initCommand(options: InitOptions): Promise<void> {
|
|
|
155
156
|
|
|
156
157
|
// Run AI enhancement if we have a key
|
|
157
158
|
if (useAI && hasKey) {
|
|
159
|
+
// Ask which model to use
|
|
160
|
+
const modelOptions = AVAILABLE_MODELS[provider];
|
|
161
|
+
const modelChoice = await prompts.select({
|
|
162
|
+
message: 'Which model would you like to use?',
|
|
163
|
+
options: modelOptions.map(m => ({
|
|
164
|
+
value: m.value,
|
|
165
|
+
label: m.label,
|
|
166
|
+
hint: m.hint,
|
|
167
|
+
})),
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
if (prompts.isCancel(modelChoice)) {
|
|
171
|
+
logger.info('Initialization cancelled');
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const selectedModel = modelChoice as string;
|
|
176
|
+
const modelLabel = modelOptions.find(m => m.value === selectedModel)?.label || selectedModel;
|
|
177
|
+
|
|
158
178
|
console.log('');
|
|
159
|
-
console.log(
|
|
179
|
+
console.log(simpson.yellow(`─── AI Enhancement (${provider} / ${modelLabel}) ───`));
|
|
160
180
|
|
|
161
181
|
const aiEnhancer = new AIEnhancer({
|
|
162
182
|
provider,
|
|
183
|
+
model: selectedModel,
|
|
163
184
|
verbose: true,
|
|
164
185
|
});
|
|
165
186
|
|
|
@@ -216,7 +237,7 @@ export async function initCommand(options: InitOptions): Promise<void> {
|
|
|
216
237
|
spinner.stop('Configuration files generated');
|
|
217
238
|
|
|
218
239
|
console.log('');
|
|
219
|
-
console.log(
|
|
240
|
+
console.log(simpson.yellow('─── Generation Results ───'));
|
|
220
241
|
console.log(formatGenerationResult(generationResult));
|
|
221
242
|
|
|
222
243
|
if (generationResult.success) {
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simpson Color Palette
|
|
3
|
+
* Custom ANSI color utilities for the CLI
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Simpson color palette hex values
|
|
8
|
+
*/
|
|
9
|
+
export const SIMPSON_COLORS = {
|
|
10
|
+
blue: '#2f64d6',
|
|
11
|
+
yellow: '#f8db27',
|
|
12
|
+
brown: '#9c5b01',
|
|
13
|
+
white: '#ffffff',
|
|
14
|
+
pink: '#ff81c1',
|
|
15
|
+
} as const;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Convert hex to RGB
|
|
19
|
+
*/
|
|
20
|
+
function hexToRgb(hex: string): { r: number; g: number; b: number } {
|
|
21
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
22
|
+
if (!result) {
|
|
23
|
+
return { r: 255, g: 255, b: 255 };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
r: parseInt(result[1], 16),
|
|
27
|
+
g: parseInt(result[2], 16),
|
|
28
|
+
b: parseInt(result[3], 16),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Create ANSI escape code for foreground color from hex
|
|
34
|
+
*/
|
|
35
|
+
function fgHex(hex: string): string {
|
|
36
|
+
const { r, g, b } = hexToRgb(hex);
|
|
37
|
+
return `\x1b[38;2;${r};${g};${b}m`;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Reset ANSI escape code
|
|
42
|
+
*/
|
|
43
|
+
const reset = '\x1b[0m';
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Simpson color functions for terminal output
|
|
47
|
+
*/
|
|
48
|
+
export const simpson = {
|
|
49
|
+
yellow: (text: string): string => `${fgHex(SIMPSON_COLORS.yellow)}${text}${reset}`,
|
|
50
|
+
blue: (text: string): string => `${fgHex(SIMPSON_COLORS.blue)}${text}${reset}`,
|
|
51
|
+
brown: (text: string): string => `${fgHex(SIMPSON_COLORS.brown)}${text}${reset}`,
|
|
52
|
+
white: (text: string): string => `${fgHex(SIMPSON_COLORS.white)}${text}${reset}`,
|
|
53
|
+
pink: (text: string): string => `${fgHex(SIMPSON_COLORS.pink)}${text}${reset}`,
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Box drawing characters
|
|
58
|
+
*/
|
|
59
|
+
export const box = {
|
|
60
|
+
topLeft: '┌',
|
|
61
|
+
topRight: '┐',
|
|
62
|
+
bottomLeft: '└',
|
|
63
|
+
bottomRight: '┘',
|
|
64
|
+
horizontal: '─',
|
|
65
|
+
vertical: '│',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Draw a horizontal line
|
|
70
|
+
*/
|
|
71
|
+
export function drawLine(width: number = 50): string {
|
|
72
|
+
return simpson.brown(box.horizontal.repeat(width));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Draw a box around text
|
|
77
|
+
*/
|
|
78
|
+
export function drawBox(text: string, padding: number = 1): string {
|
|
79
|
+
const paddedText = ' '.repeat(padding) + text + ' '.repeat(padding);
|
|
80
|
+
const width = paddedText.length;
|
|
81
|
+
|
|
82
|
+
const top = simpson.brown(box.topLeft + box.horizontal.repeat(width) + box.topRight);
|
|
83
|
+
const middle = simpson.brown(box.vertical) + paddedText + simpson.brown(box.vertical);
|
|
84
|
+
const bottom = simpson.brown(box.bottomLeft + box.horizontal.repeat(width) + box.bottomRight);
|
|
85
|
+
|
|
86
|
+
return `${top}\n${middle}\n${bottom}`;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Section header with horizontal lines
|
|
91
|
+
*/
|
|
92
|
+
export function sectionHeader(title: string): string {
|
|
93
|
+
const line = drawLine(50);
|
|
94
|
+
return `\n${line}\n${simpson.yellow(title)}\n${line}`;
|
|
95
|
+
}
|
package/src/utils/header.ts
CHANGED
|
@@ -1,15 +1,32 @@
|
|
|
1
1
|
import cfonts from 'cfonts';
|
|
2
|
+
import { simpson, drawBox, SIMPSON_COLORS } from './colors.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
|
-
* Display the RALPH ASCII header
|
|
5
|
+
* Display the RALPH ASCII header with welcome box
|
|
5
6
|
*/
|
|
6
7
|
export function displayHeader(): void {
|
|
7
|
-
|
|
8
|
+
// Welcome box like Claude Code
|
|
9
|
+
const welcomeText = simpson.pink('*') + ' Welcome to ' + simpson.yellow('Ralph') + '🍩';
|
|
10
|
+
console.log('');
|
|
11
|
+
console.log(drawBox(welcomeText, 2));
|
|
12
|
+
console.log('');
|
|
13
|
+
|
|
14
|
+
// ASCII art logo in Simpson yellow
|
|
15
|
+
cfonts.say('WIGGUM CLI', {
|
|
8
16
|
font: 'block',
|
|
9
|
-
colors: [
|
|
17
|
+
colors: [SIMPSON_COLORS.yellow],
|
|
10
18
|
letterSpacing: 1,
|
|
11
19
|
lineHeight: 1,
|
|
12
|
-
space:
|
|
20
|
+
space: false,
|
|
13
21
|
maxLength: 0,
|
|
14
22
|
});
|
|
15
23
|
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Display a minimal header (for subcommands)
|
|
27
|
+
*/
|
|
28
|
+
export function displayMinimalHeader(): void {
|
|
29
|
+
console.log('');
|
|
30
|
+
console.log(simpson.yellow('Ralph') + simpson.brown(' │ ') + 'AI-powered loop development');
|
|
31
|
+
console.log('');
|
|
32
|
+
}
|