wiggum-cli 0.9.7 → 0.10.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/dist/ai/providers.d.ts +8 -0
- package/dist/ai/providers.d.ts.map +1 -1
- package/dist/ai/providers.js +25 -1
- package/dist/ai/providers.js.map +1 -1
- package/dist/commands/init.d.ts +8 -19
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -347
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/new.d.ts +21 -13
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +10 -267
- package/dist/commands/new.js.map +1 -1
- package/dist/generator/config.d.ts.map +1 -1
- package/dist/generator/config.js +4 -2
- package/dist/generator/config.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +92 -88
- package/dist/index.js.map +1 -1
- package/dist/repl/index.d.ts +3 -3
- package/dist/repl/index.d.ts.map +1 -1
- package/dist/repl/index.js +3 -3
- package/dist/repl/index.js.map +1 -1
- package/dist/tui/app.d.ts +1 -5
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +7 -12
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/Confirm.d.ts +39 -0
- package/dist/tui/components/Confirm.d.ts.map +1 -0
- package/dist/tui/components/Confirm.js +60 -0
- package/dist/tui/components/Confirm.js.map +1 -0
- package/dist/tui/components/PasswordInput.d.ts +39 -0
- package/dist/tui/components/PasswordInput.d.ts.map +1 -0
- package/dist/tui/components/PasswordInput.js +56 -0
- package/dist/tui/components/PasswordInput.js.map +1 -0
- package/dist/tui/components/Select.d.ts +55 -0
- package/dist/tui/components/Select.d.ts.map +1 -0
- package/dist/tui/components/Select.js +63 -0
- package/dist/tui/components/Select.js.map +1 -0
- package/dist/tui/components/index.d.ts +6 -0
- package/dist/tui/components/index.d.ts.map +1 -1
- package/dist/tui/components/index.js +3 -0
- package/dist/tui/components/index.js.map +1 -1
- package/dist/tui/hooks/index.d.ts +3 -0
- package/dist/tui/hooks/index.d.ts.map +1 -1
- package/dist/tui/hooks/index.js +2 -0
- package/dist/tui/hooks/index.js.map +1 -1
- package/dist/tui/hooks/useInit.d.ts +130 -0
- package/dist/tui/hooks/useInit.d.ts.map +1 -0
- package/dist/tui/hooks/useInit.js +326 -0
- package/dist/tui/hooks/useInit.js.map +1 -0
- package/dist/tui/hooks/useSpecGenerator.d.ts +4 -0
- package/dist/tui/hooks/useSpecGenerator.d.ts.map +1 -1
- package/dist/tui/hooks/useSpecGenerator.js +12 -1
- package/dist/tui/hooks/useSpecGenerator.js.map +1 -1
- package/dist/tui/screens/InitScreen.d.ts +17 -10
- package/dist/tui/screens/InitScreen.d.ts.map +1 -1
- package/dist/tui/screens/InitScreen.js +317 -18
- package/dist/tui/screens/InitScreen.js.map +1 -1
- package/dist/tui/screens/InterviewScreen.d.ts.map +1 -1
- package/dist/tui/screens/InterviewScreen.js +2 -2
- package/dist/tui/screens/InterviewScreen.js.map +1 -1
- package/dist/tui/screens/index.d.ts +6 -0
- package/dist/tui/screens/index.d.ts.map +1 -1
- package/dist/tui/screens/index.js +3 -0
- package/dist/tui/screens/index.js.map +1 -1
- package/package.json +1 -1
- package/src/ai/providers.ts +28 -1
- package/src/commands/init.ts +8 -428
- package/src/commands/new.ts +13 -319
- package/src/generator/config.ts +4 -2
- package/src/index.ts +104 -96
- package/src/repl/index.ts +3 -3
- package/src/tui/app.tsx +7 -15
- package/src/tui/components/Confirm.tsx +109 -0
- package/src/tui/components/PasswordInput.tsx +106 -0
- package/src/tui/components/Select.tsx +132 -0
- package/src/tui/components/index.ts +9 -0
- package/src/tui/hooks/index.ts +9 -0
- package/src/tui/hooks/useInit.ts +472 -0
- package/src/tui/hooks/useSpecGenerator.ts +17 -1
- package/src/tui/screens/InitScreen.tsx +562 -29
- package/src/tui/screens/InterviewScreen.tsx +2 -1
- package/src/tui/screens/index.ts +9 -0
- package/src/cli.ts +0 -274
- package/src/repl/repl-loop.ts +0 -389
- package/src/utils/repl-prompts.ts +0 -381
package/dist/ai/providers.d.ts
CHANGED
|
@@ -35,6 +35,14 @@ export interface ModelOption {
|
|
|
35
35
|
* Available models for each provider
|
|
36
36
|
*/
|
|
37
37
|
export declare const AVAILABLE_MODELS: Record<AIProvider, ModelOption[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a model id is an Anthropic alias (sonnet/opus/haiku)
|
|
40
|
+
*/
|
|
41
|
+
export declare function isAnthropicAlias(modelId: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Normalize model ids for a provider (maps legacy aliases where possible)
|
|
44
|
+
*/
|
|
45
|
+
export declare function normalizeModelId(provider: AIProvider, modelId: string): string;
|
|
38
46
|
/**
|
|
39
47
|
* Check if an API key is available for a provider
|
|
40
48
|
*/
|
|
@@ -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;AAWD;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;CAG5B,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,yBAAyB,CAAC;AAErE;;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;
|
|
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,eAAO,MAAM,yBAAyB;;;CAG5B,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,yBAAyB,CAAC;AAErE;;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;AAqBF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK9E;AAED;;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,CA2CnG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,GAAG,IAAI,CAUxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAE5D;AAaD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAK5E"}
|
package/dist/ai/providers.js
CHANGED
|
@@ -50,6 +50,29 @@ const DEFAULT_MODELS = {
|
|
|
50
50
|
openai: 'gpt-5.1',
|
|
51
51
|
openrouter: 'google/gemini-3-pro-preview',
|
|
52
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* Anthropic shorthand aliases for legacy configs
|
|
55
|
+
*/
|
|
56
|
+
const ANTHROPIC_MODEL_ALIASES = {
|
|
57
|
+
sonnet: 'claude-sonnet-4-5-20250514',
|
|
58
|
+
opus: 'claude-opus-4-5-20250514',
|
|
59
|
+
haiku: 'claude-haiku-4-5-20250514',
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Check if a model id is an Anthropic alias (sonnet/opus/haiku)
|
|
63
|
+
*/
|
|
64
|
+
export function isAnthropicAlias(modelId) {
|
|
65
|
+
return Object.prototype.hasOwnProperty.call(ANTHROPIC_MODEL_ALIASES, modelId);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Normalize model ids for a provider (maps legacy aliases where possible)
|
|
69
|
+
*/
|
|
70
|
+
export function normalizeModelId(provider, modelId) {
|
|
71
|
+
if (provider === 'anthropic' && isAnthropicAlias(modelId)) {
|
|
72
|
+
return ANTHROPIC_MODEL_ALIASES[modelId];
|
|
73
|
+
}
|
|
74
|
+
return modelId;
|
|
75
|
+
}
|
|
53
76
|
/**
|
|
54
77
|
* Check if an API key is available for a provider
|
|
55
78
|
*/
|
|
@@ -73,7 +96,8 @@ function getApiKey(provider) {
|
|
|
73
96
|
* Get a configured AI model for the specified provider
|
|
74
97
|
*/
|
|
75
98
|
export function getModel(provider = 'anthropic', customModelId) {
|
|
76
|
-
const
|
|
99
|
+
const rawModelId = customModelId || DEFAULT_MODELS[provider];
|
|
100
|
+
const modelId = normalizeModelId(provider, rawModelId);
|
|
77
101
|
switch (provider) {
|
|
78
102
|
case 'anthropic': {
|
|
79
103
|
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;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,kBAAkB;CACpB,CAAC;AAaX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsC;IACjE,SAAS,EAAE;QACT,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE;QACrF,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,aAAa,EAAE;QACxF,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;KACnF;IACD,MAAM,EAAE;QACN,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE;QAC5D,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE;QACjF,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;KAC9D;IACD,UAAU,EAAE;QACV,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/E,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;QACjF,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE;QAC9E,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;QACzD,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1E;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,cAAc,GAA+B;IACjD,SAAS,EAAE,4BAA4B;IACvC,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,6BAA6B;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,QAAoB;IAC5C,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,QAAoB;IACrC,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,gCAAgC,QAAQ,YAAY,CACrF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAuB,WAAW,EAAE,aAAsB;IACjF,MAAM,
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Init Command
|
|
3
|
-
*
|
|
2
|
+
* Init Command Types
|
|
3
|
+
*
|
|
4
|
+
* The init workflow is now handled by the TUI (InitScreen.tsx).
|
|
5
|
+
* This file provides type exports for backward compatibility.
|
|
4
6
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
+
import type { AIProvider } from '../ai/providers.js';
|
|
8
|
+
import type { ScanResult } from '../scanner/index.js';
|
|
9
|
+
import type { RalphConfig } from '../utils/config.js';
|
|
7
10
|
export interface InitOptions {
|
|
8
11
|
provider?: AIProvider;
|
|
9
|
-
yes?: boolean;
|
|
10
|
-
interactive?: boolean;
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
14
|
* Result of the init workflow
|
|
@@ -17,18 +18,6 @@ export interface InitResult {
|
|
|
17
18
|
provider: AIProvider;
|
|
18
19
|
model: string;
|
|
19
20
|
scanResult: ScanResult;
|
|
20
|
-
config:
|
|
21
|
+
config: RalphConfig | null;
|
|
21
22
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Run the init workflow
|
|
24
|
-
* Reusable core logic for both CLI and REPL usage
|
|
25
|
-
* Returns InitResult on success, null on cancellation
|
|
26
|
-
* Throws on hard errors
|
|
27
|
-
*/
|
|
28
|
-
export declare function runInitWorkflow(projectRoot: string, options: InitOptions): Promise<InitResult | null>;
|
|
29
|
-
/**
|
|
30
|
-
* Initialize Ralph in the current project
|
|
31
|
-
* Uses BYOK (Bring Your Own Keys) model with multi-agent AI analysis
|
|
32
|
-
*/
|
|
33
|
-
export declare function initCommand(options: InitOptions): Promise<void>;
|
|
34
23
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,350 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Init Command
|
|
3
|
-
*
|
|
2
|
+
* Init Command Types
|
|
3
|
+
*
|
|
4
|
+
* The init workflow is now handled by the TUI (InitScreen.tsx).
|
|
5
|
+
* This file provides type exports for backward compatibility.
|
|
4
6
|
*/
|
|
5
|
-
|
|
6
|
-
import { Scanner } from '../scanner/index.js';
|
|
7
|
-
import { Generator } from '../generator/index.js';
|
|
8
|
-
import { AIEnhancer, formatAIAnalysis, } from '../ai/index.js';
|
|
9
|
-
import { hasApiKey, getApiKeyEnvVar, getAvailableProvider, AVAILABLE_MODELS, } from '../ai/providers.js';
|
|
10
|
-
import * as replPrompts from '../utils/repl-prompts.js';
|
|
11
|
-
import fs from 'fs';
|
|
12
|
-
import path from 'path';
|
|
13
|
-
import { simpson, compactHeader, stackBox, fileTree, nextStepsBox, } from '../utils/colors.js';
|
|
14
|
-
import { flushTracing, traced, initTracing } from '../utils/tracing.js';
|
|
15
|
-
import { createShimmerSpinner } from '../utils/spinner.js';
|
|
16
|
-
import { startRepl, createSessionState } from '../repl/index.js';
|
|
17
|
-
import { loadConfigWithDefaults } from '../utils/config.js';
|
|
18
|
-
// Use REPL-friendly prompts for interactive input
|
|
19
|
-
const prompts = replPrompts;
|
|
20
|
-
/**
|
|
21
|
-
* Save API keys to .env.local file
|
|
22
|
-
*/
|
|
23
|
-
function saveKeysToEnvLocal(projectRoot, keys) {
|
|
24
|
-
const envLocalPath = path.join(projectRoot, '.env.local');
|
|
25
|
-
let envContent = '';
|
|
26
|
-
// Read existing content if file exists
|
|
27
|
-
if (fs.existsSync(envLocalPath)) {
|
|
28
|
-
envContent = fs.readFileSync(envLocalPath, 'utf-8');
|
|
29
|
-
}
|
|
30
|
-
// Update or add each key
|
|
31
|
-
for (const [envVar, value] of Object.entries(keys)) {
|
|
32
|
-
if (!value)
|
|
33
|
-
continue;
|
|
34
|
-
const keyRegex = new RegExp(`^${envVar}=.*$`, 'm');
|
|
35
|
-
if (keyRegex.test(envContent)) {
|
|
36
|
-
// Replace existing key
|
|
37
|
-
envContent = envContent.replace(keyRegex, `${envVar}=${value}`);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
// Append new key
|
|
41
|
-
envContent = envContent.trimEnd() + (envContent ? '\n' : '') + `${envVar}=${value}\n`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
fs.writeFileSync(envLocalPath, envContent);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Get the default model for a provider (the one marked as 'recommended' or first)
|
|
48
|
-
*/
|
|
49
|
-
function getDefaultModel(provider) {
|
|
50
|
-
const models = AVAILABLE_MODELS[provider];
|
|
51
|
-
const recommended = models.find(m => m.hint?.includes('recommended'));
|
|
52
|
-
return recommended?.value || models[0].value;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* BYOK Flow: Collect API keys from user (simplified - no optional keys)
|
|
56
|
-
*/
|
|
57
|
-
async function collectApiKeys(projectRoot, options) {
|
|
58
|
-
// Check if we already have an LLM key
|
|
59
|
-
let provider = options.provider || 'anthropic';
|
|
60
|
-
const existingProvider = getAvailableProvider();
|
|
61
|
-
let hadLlmKeyBefore = options.provider ? hasApiKey(options.provider) : !!existingProvider;
|
|
62
|
-
let llmKeyEnteredThisSession = false;
|
|
63
|
-
if (!hadLlmKeyBefore) {
|
|
64
|
-
// In --yes mode, fail if no API key is available
|
|
65
|
-
if (options.yes) {
|
|
66
|
-
logger.error('No API key found. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or OPENROUTER_API_KEY.');
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
// Need to collect LLM API key interactively
|
|
70
|
-
console.log('');
|
|
71
|
-
console.log(compactHeader('API Key'));
|
|
72
|
-
console.log('');
|
|
73
|
-
// Select provider
|
|
74
|
-
const providerChoice = await prompts.select({
|
|
75
|
-
message: 'Select your AI provider:',
|
|
76
|
-
options: [
|
|
77
|
-
{ value: 'anthropic', label: 'Anthropic', hint: 'recommended' },
|
|
78
|
-
{ value: 'openai', label: 'OpenAI' },
|
|
79
|
-
{ value: 'openrouter', label: 'OpenRouter', hint: 'multiple providers' },
|
|
80
|
-
],
|
|
81
|
-
});
|
|
82
|
-
if (prompts.isCancel(providerChoice)) {
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
provider = providerChoice;
|
|
86
|
-
const envVar = getApiKeyEnvVar(provider);
|
|
87
|
-
// Get API key with masked input
|
|
88
|
-
const apiKeyInput = await prompts.password({
|
|
89
|
-
message: `Enter your ${envVar}:`,
|
|
90
|
-
});
|
|
91
|
-
if (!apiKeyInput) {
|
|
92
|
-
logger.error('API key is required to use Ralph.');
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
// Set in process.env for this session
|
|
96
|
-
process.env[envVar] = apiKeyInput;
|
|
97
|
-
llmKeyEnteredThisSession = true;
|
|
98
|
-
}
|
|
99
|
-
else if (!options.provider) {
|
|
100
|
-
// Use the available provider
|
|
101
|
-
provider = existingProvider || 'anthropic';
|
|
102
|
-
}
|
|
103
|
-
// Select model (skip in --yes mode, use default)
|
|
104
|
-
let selectedModel;
|
|
105
|
-
if (options.yes) {
|
|
106
|
-
selectedModel = getDefaultModel(provider);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
const modelOptions = AVAILABLE_MODELS[provider];
|
|
110
|
-
const modelChoice = await prompts.select({
|
|
111
|
-
message: 'Select model:',
|
|
112
|
-
options: modelOptions.map(m => ({
|
|
113
|
-
value: m.value,
|
|
114
|
-
label: m.label,
|
|
115
|
-
hint: m.hint,
|
|
116
|
-
})),
|
|
117
|
-
});
|
|
118
|
-
if (prompts.isCancel(modelChoice)) {
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
selectedModel = modelChoice;
|
|
122
|
-
}
|
|
123
|
-
// Save key entered this session to .env.local
|
|
124
|
-
if (llmKeyEnteredThisSession) {
|
|
125
|
-
const llmEnvVar = getApiKeyEnvVar(provider);
|
|
126
|
-
const keysToSave = {
|
|
127
|
-
[llmEnvVar]: process.env[llmEnvVar],
|
|
128
|
-
};
|
|
129
|
-
// In --yes mode, auto-save keys
|
|
130
|
-
if (options.yes) {
|
|
131
|
-
saveKeysToEnvLocal(projectRoot, keysToSave);
|
|
132
|
-
logger.success('API key saved to .env.local');
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
console.log('');
|
|
136
|
-
const saveKeys = await prompts.confirm({
|
|
137
|
-
message: 'Save API key to .env.local?',
|
|
138
|
-
initialValue: true,
|
|
139
|
-
});
|
|
140
|
-
if (!prompts.isCancel(saveKeys) && saveKeys) {
|
|
141
|
-
saveKeysToEnvLocal(projectRoot, keysToSave);
|
|
142
|
-
logger.success('API key saved to .env.local');
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
return {
|
|
147
|
-
provider,
|
|
148
|
-
model: selectedModel,
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Run the init workflow
|
|
153
|
-
* Reusable core logic for both CLI and REPL usage
|
|
154
|
-
* Returns InitResult on success, null on cancellation
|
|
155
|
-
* Throws on hard errors
|
|
156
|
-
*/
|
|
157
|
-
export async function runInitWorkflow(projectRoot, options) {
|
|
158
|
-
logger.info('Initializing Ralph...');
|
|
159
|
-
logger.info(`Project: ${projectRoot}`);
|
|
160
|
-
console.log('');
|
|
161
|
-
// Step 1: Scan the project
|
|
162
|
-
const scanSpinner = createShimmerSpinner({ showTimer: true, style: 'shimmer' });
|
|
163
|
-
scanSpinner.start('Scanning project structure...');
|
|
164
|
-
const scanner = new Scanner();
|
|
165
|
-
let scanResult;
|
|
166
|
-
try {
|
|
167
|
-
scanResult = await scanner.scan(projectRoot);
|
|
168
|
-
scanSpinner.stop('Project scanned');
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
scanSpinner.fail('Scan failed');
|
|
172
|
-
await flushTracing();
|
|
173
|
-
throw new Error(`Failed to scan project: ${error instanceof Error ? error.message : String(error)}`);
|
|
174
|
-
}
|
|
175
|
-
// Step 2: Show detected stack
|
|
176
|
-
console.log('');
|
|
177
|
-
const { stack } = scanResult;
|
|
178
|
-
console.log(stackBox({
|
|
179
|
-
framework: stack.framework ? `${stack.framework.name}${stack.framework.version ? ` ${stack.framework.version}` : ''}` : undefined,
|
|
180
|
-
language: 'TypeScript', // Wiggum targets TypeScript projects
|
|
181
|
-
testing: stack.testing?.unit?.name,
|
|
182
|
-
packageManager: stack.packageManager?.name || 'npm',
|
|
183
|
-
}));
|
|
184
|
-
console.log('');
|
|
185
|
-
// Step 3: Collect API keys (BYOK)
|
|
186
|
-
const apiKeys = await collectApiKeys(projectRoot, options);
|
|
187
|
-
if (!apiKeys) {
|
|
188
|
-
// User cancelled or missing API key in --yes mode
|
|
189
|
-
await flushTracing();
|
|
190
|
-
return null;
|
|
191
|
-
}
|
|
192
|
-
// Step 4: Run AI analysis
|
|
193
|
-
console.log('');
|
|
194
|
-
const modelLabel = AVAILABLE_MODELS[apiKeys.provider].find(m => m.value === apiKeys.model)?.label || apiKeys.model;
|
|
195
|
-
console.log(compactHeader(`AI Analysis (${apiKeys.provider} / ${modelLabel})`));
|
|
196
|
-
console.log('');
|
|
197
|
-
// Use shimmer spinner with timer and token tracking for AI analysis
|
|
198
|
-
const aiSpinner = createShimmerSpinner({ showTimer: true, showTokens: true, style: 'shimmer' });
|
|
199
|
-
aiSpinner.start('Analyzing codebase...');
|
|
200
|
-
const aiEnhancer = new AIEnhancer({
|
|
201
|
-
provider: apiKeys.provider,
|
|
202
|
-
model: apiKeys.model,
|
|
203
|
-
verbose: false,
|
|
204
|
-
agentic: true,
|
|
205
|
-
onProgress: (phase, detail) => {
|
|
206
|
-
if (detail) {
|
|
207
|
-
aiSpinner.update(`${phase} - ${detail}`);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
aiSpinner.update(phase);
|
|
211
|
-
}
|
|
212
|
-
},
|
|
213
|
-
});
|
|
214
|
-
let enhancedResult;
|
|
215
|
-
// Initialize tracing before creating parent span
|
|
216
|
-
initTracing();
|
|
217
|
-
try {
|
|
218
|
-
enhancedResult = await traced(async () => {
|
|
219
|
-
return await aiEnhancer.enhance(scanResult);
|
|
220
|
-
}, {
|
|
221
|
-
name: 'ai-analysis',
|
|
222
|
-
type: 'task',
|
|
223
|
-
});
|
|
224
|
-
if (enhancedResult.aiEnhanced && enhancedResult.aiAnalysis) {
|
|
225
|
-
// Set token usage on spinner before stopping
|
|
226
|
-
if (enhancedResult.tokenUsage) {
|
|
227
|
-
aiSpinner.setTokens(enhancedResult.tokenUsage);
|
|
228
|
-
}
|
|
229
|
-
aiSpinner.stop('AI analysis complete');
|
|
230
|
-
console.log('');
|
|
231
|
-
console.log(formatAIAnalysis(enhancedResult.aiAnalysis));
|
|
232
|
-
}
|
|
233
|
-
else if (enhancedResult.aiError) {
|
|
234
|
-
aiSpinner.fail('AI analysis failed');
|
|
235
|
-
logger.warn(`AI error: ${enhancedResult.aiError}`);
|
|
236
|
-
console.log('');
|
|
237
|
-
enhancedResult = { ...scanResult, aiEnhanced: false };
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
catch (error) {
|
|
241
|
-
aiSpinner.fail('AI analysis failed');
|
|
242
|
-
logger.warn(`AI error: ${error instanceof Error ? error.message : String(error)}`);
|
|
243
|
-
console.log('');
|
|
244
|
-
enhancedResult = { ...scanResult, aiEnhanced: false };
|
|
245
|
-
}
|
|
246
|
-
// Step 5: Confirm with user (unless --yes)
|
|
247
|
-
if (!options.yes) {
|
|
248
|
-
const shouldContinue = await prompts.confirm({
|
|
249
|
-
message: 'Generate Ralph configuration files?',
|
|
250
|
-
initialValue: true,
|
|
251
|
-
});
|
|
252
|
-
if (prompts.isCancel(shouldContinue) || !shouldContinue) {
|
|
253
|
-
await flushTracing();
|
|
254
|
-
return null;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
// Step 6: Generate configuration files
|
|
258
|
-
console.log('');
|
|
259
|
-
const genSpinner = createShimmerSpinner({ showTimer: true, style: 'shimmer' });
|
|
260
|
-
genSpinner.start('Generating configuration files...');
|
|
261
|
-
const generator = new Generator({
|
|
262
|
-
existingFiles: 'backup',
|
|
263
|
-
generateConfig: true,
|
|
264
|
-
verbose: false,
|
|
265
|
-
});
|
|
266
|
-
try {
|
|
267
|
-
const generationResult = await generator.generate(enhancedResult);
|
|
268
|
-
genSpinner.stop('Configuration files generated');
|
|
269
|
-
// Show file tree of what was generated
|
|
270
|
-
console.log('');
|
|
271
|
-
console.log(compactHeader('Generated Files'));
|
|
272
|
-
console.log('');
|
|
273
|
-
const generatedFiles = generationResult.writeSummary.results
|
|
274
|
-
.filter((f) => f.action === 'created' || f.action === 'backed_up' || f.action === 'overwritten')
|
|
275
|
-
.map((f) => {
|
|
276
|
-
// Normalize absolute paths to relative paths within .ralph/
|
|
277
|
-
const relativePath = path.relative(projectRoot, f.path);
|
|
278
|
-
return relativePath.replace(/^\.ralph[\\/]/, '');
|
|
279
|
-
});
|
|
280
|
-
console.log(fileTree('.ralph', generatedFiles));
|
|
281
|
-
// Flush tracing spans before completing
|
|
282
|
-
await flushTracing();
|
|
283
|
-
if (generationResult.success) {
|
|
284
|
-
// Show next steps (REPL-aware)
|
|
285
|
-
console.log(nextStepsBox([
|
|
286
|
-
{ command: '/new my-feature', description: 'Create a feature specification' },
|
|
287
|
-
{ command: '/run my-feature', description: 'Start the development loop' },
|
|
288
|
-
{ command: '/help', description: 'Show all available commands' },
|
|
289
|
-
]));
|
|
290
|
-
console.log(` ${simpson.brown('Documentation:')} .ralph/guides/AGENTS.md`);
|
|
291
|
-
console.log('');
|
|
292
|
-
logger.success('Wiggum initialized successfully!');
|
|
293
|
-
// Load config and return result
|
|
294
|
-
// Use enhancedResult to preserve aiAnalysis for session context
|
|
295
|
-
const config = await loadConfigWithDefaults(projectRoot);
|
|
296
|
-
return {
|
|
297
|
-
success: true,
|
|
298
|
-
provider: apiKeys.provider,
|
|
299
|
-
model: apiKeys.model,
|
|
300
|
-
scanResult: enhancedResult,
|
|
301
|
-
config,
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
logger.warn('Initialization completed with some errors');
|
|
306
|
-
const config = await loadConfigWithDefaults(projectRoot);
|
|
307
|
-
return {
|
|
308
|
-
success: true, // Still return success to continue
|
|
309
|
-
provider: apiKeys.provider,
|
|
310
|
-
model: apiKeys.model,
|
|
311
|
-
scanResult: enhancedResult,
|
|
312
|
-
config,
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
catch (error) {
|
|
317
|
-
genSpinner.fail('Generation failed');
|
|
318
|
-
await flushTracing();
|
|
319
|
-
throw new Error(`Failed to generate files: ${error instanceof Error ? error.message : String(error)}`);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Initialize Ralph in the current project
|
|
324
|
-
* Uses BYOK (Bring Your Own Keys) model with multi-agent AI analysis
|
|
325
|
-
*/
|
|
326
|
-
export async function initCommand(options) {
|
|
327
|
-
const projectRoot = process.cwd();
|
|
328
|
-
try {
|
|
329
|
-
const result = await runInitWorkflow(projectRoot, options);
|
|
330
|
-
if (!result) {
|
|
331
|
-
// Cancelled by user or missing API key
|
|
332
|
-
if (options.yes) {
|
|
333
|
-
process.exit(1);
|
|
334
|
-
}
|
|
335
|
-
logger.info('Initialization cancelled');
|
|
336
|
-
return;
|
|
337
|
-
}
|
|
338
|
-
// Start interactive REPL if requested
|
|
339
|
-
if (options.interactive) {
|
|
340
|
-
const sessionState = createSessionState(projectRoot, result.provider, result.model, result.scanResult, result.config, true // initialized
|
|
341
|
-
);
|
|
342
|
-
await startRepl(sessionState);
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
catch (error) {
|
|
346
|
-
logger.error(error instanceof Error ? error.message : String(error));
|
|
347
|
-
process.exit(1);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
7
|
+
export {};
|
|
350
8
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/commands/new.d.ts
CHANGED
|
@@ -1,31 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* New Command
|
|
3
|
-
*
|
|
2
|
+
* New Command Types
|
|
3
|
+
*
|
|
4
|
+
* The new/interview workflow is now handled by the TUI (InterviewScreen.tsx).
|
|
5
|
+
* This file provides type exports and utility functions.
|
|
4
6
|
*/
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
+
import type { AIProvider } from '../ai/providers.js';
|
|
8
|
+
import type { ScanResult } from '../scanner/index.js';
|
|
7
9
|
export interface NewOptions {
|
|
8
10
|
/** Open in editor after creation */
|
|
9
11
|
edit?: boolean;
|
|
10
12
|
/** Editor to use (defaults to $EDITOR or 'code') */
|
|
11
13
|
editor?: string;
|
|
12
|
-
/** Skip confirmation */
|
|
13
|
-
yes?: boolean;
|
|
14
14
|
/** Force overwrite if file exists */
|
|
15
15
|
force?: boolean;
|
|
16
|
-
/** Use AI interview to generate spec */
|
|
17
|
-
ai?: boolean;
|
|
18
|
-
/** Use Ink TUI for AI interview (instead of readline) */
|
|
19
|
-
tui?: boolean;
|
|
20
16
|
/** AI provider (anthropic, openai, openrouter) */
|
|
21
17
|
provider?: AIProvider;
|
|
22
18
|
/** Model to use for AI generation */
|
|
23
19
|
model?: string;
|
|
24
|
-
/** Pre-loaded scan result (from
|
|
20
|
+
/** Pre-loaded scan result (from session) */
|
|
25
21
|
scanResult?: ScanResult;
|
|
26
22
|
}
|
|
27
23
|
/**
|
|
28
|
-
*
|
|
24
|
+
* Default spec template content
|
|
29
25
|
*/
|
|
30
|
-
export declare
|
|
26
|
+
export declare const DEFAULT_SPEC_TEMPLATE = "# {{feature}} Feature Specification\n\n**Status:** Planned\n**Version:** 1.0\n**Last Updated:** {{date}}\n\n## Purpose\n\nDescribe what this feature does and why it's needed.\n\n## User Stories\n\n- As a user, I want [action] so that [benefit]\n- As an admin, I want [action] so that [benefit]\n\n## Requirements\n\n### Functional Requirements\n- [ ] Requirement 1 - Description of what the system must do\n- [ ] Requirement 2 - Another functional requirement\n\n### Non-Functional Requirements\n- [ ] Performance: [target metrics]\n- [ ] Security: [security considerations]\n- [ ] Accessibility: [WCAG level]\n\n## Technical Notes\n\n- **Uses:** Existing patterns or components to leverage\n- **Location:** Where the code should live\n- **Dependencies:** External libraries or APIs needed\n- **Database:** Schema changes required (if any)\n\n## Visual Requirements\n\n(For UI features - delete this section if backend-only)\n\n- **Layout:** Describe the layout structure and responsive behavior\n- **Components:** List the UI components needed\n- **States:**\n - Empty: What to show when there's no data\n - Loading: Skeleton or spinner pattern\n - Error: How to display errors\n- **Mobile:** How the layout adapts on small screens\n\n## API Endpoints\n\n(If applicable)\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| GET | `/api/{{feature}}` | Fetch data |\n| POST | `/api/{{feature}}` | Create new |\n\n## Acceptance Criteria\n\n- [ ] Criteria 1 - Specific, testable condition\n- [ ] Criteria 2 - Another acceptance criterion\n- [ ] Criteria 3 - E2E testable scenario\n\n## Out of Scope\n\n- Feature X (planned for future iteration)\n- Integration Y (separate spec)\n\n## Open Questions\n\n- [ ] Question 1 - Decision needed\n- [ ] Question 2 - Clarification required\n";
|
|
27
|
+
/**
|
|
28
|
+
* Find the _example.md template
|
|
29
|
+
*/
|
|
30
|
+
export declare function findExampleTemplate(projectRoot: string): Promise<string | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Get template directory from the package
|
|
33
|
+
*/
|
|
34
|
+
export declare function getPackageTemplateDir(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Process template variables
|
|
37
|
+
*/
|
|
38
|
+
export declare function processTemplate(template: string, feature: string): string;
|
|
31
39
|
//# sourceMappingURL=new.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,oCAAoC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,oxDAqEjC,CAAC;AAEF;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBrF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAYzE"}
|