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.
Files changed (87) hide show
  1. package/dist/ai/providers.d.ts +8 -0
  2. package/dist/ai/providers.d.ts.map +1 -1
  3. package/dist/ai/providers.js +25 -1
  4. package/dist/ai/providers.js.map +1 -1
  5. package/dist/commands/init.d.ts +8 -19
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +5 -347
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/new.d.ts +21 -13
  10. package/dist/commands/new.d.ts.map +1 -1
  11. package/dist/commands/new.js +10 -267
  12. package/dist/commands/new.js.map +1 -1
  13. package/dist/generator/config.d.ts.map +1 -1
  14. package/dist/generator/config.js +4 -2
  15. package/dist/generator/config.js.map +1 -1
  16. package/dist/index.d.ts +1 -2
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +92 -88
  19. package/dist/index.js.map +1 -1
  20. package/dist/repl/index.d.ts +3 -3
  21. package/dist/repl/index.d.ts.map +1 -1
  22. package/dist/repl/index.js +3 -3
  23. package/dist/repl/index.js.map +1 -1
  24. package/dist/tui/app.d.ts +1 -5
  25. package/dist/tui/app.d.ts.map +1 -1
  26. package/dist/tui/app.js +7 -12
  27. package/dist/tui/app.js.map +1 -1
  28. package/dist/tui/components/Confirm.d.ts +39 -0
  29. package/dist/tui/components/Confirm.d.ts.map +1 -0
  30. package/dist/tui/components/Confirm.js +60 -0
  31. package/dist/tui/components/Confirm.js.map +1 -0
  32. package/dist/tui/components/PasswordInput.d.ts +39 -0
  33. package/dist/tui/components/PasswordInput.d.ts.map +1 -0
  34. package/dist/tui/components/PasswordInput.js +56 -0
  35. package/dist/tui/components/PasswordInput.js.map +1 -0
  36. package/dist/tui/components/Select.d.ts +55 -0
  37. package/dist/tui/components/Select.d.ts.map +1 -0
  38. package/dist/tui/components/Select.js +63 -0
  39. package/dist/tui/components/Select.js.map +1 -0
  40. package/dist/tui/components/index.d.ts +6 -0
  41. package/dist/tui/components/index.d.ts.map +1 -1
  42. package/dist/tui/components/index.js +3 -0
  43. package/dist/tui/components/index.js.map +1 -1
  44. package/dist/tui/hooks/index.d.ts +3 -0
  45. package/dist/tui/hooks/index.d.ts.map +1 -1
  46. package/dist/tui/hooks/index.js +2 -0
  47. package/dist/tui/hooks/index.js.map +1 -1
  48. package/dist/tui/hooks/useInit.d.ts +130 -0
  49. package/dist/tui/hooks/useInit.d.ts.map +1 -0
  50. package/dist/tui/hooks/useInit.js +326 -0
  51. package/dist/tui/hooks/useInit.js.map +1 -0
  52. package/dist/tui/hooks/useSpecGenerator.d.ts +4 -0
  53. package/dist/tui/hooks/useSpecGenerator.d.ts.map +1 -1
  54. package/dist/tui/hooks/useSpecGenerator.js +12 -1
  55. package/dist/tui/hooks/useSpecGenerator.js.map +1 -1
  56. package/dist/tui/screens/InitScreen.d.ts +17 -10
  57. package/dist/tui/screens/InitScreen.d.ts.map +1 -1
  58. package/dist/tui/screens/InitScreen.js +317 -18
  59. package/dist/tui/screens/InitScreen.js.map +1 -1
  60. package/dist/tui/screens/InterviewScreen.d.ts.map +1 -1
  61. package/dist/tui/screens/InterviewScreen.js +2 -2
  62. package/dist/tui/screens/InterviewScreen.js.map +1 -1
  63. package/dist/tui/screens/index.d.ts +6 -0
  64. package/dist/tui/screens/index.d.ts.map +1 -1
  65. package/dist/tui/screens/index.js +3 -0
  66. package/dist/tui/screens/index.js.map +1 -1
  67. package/package.json +1 -1
  68. package/src/ai/providers.ts +28 -1
  69. package/src/commands/init.ts +8 -428
  70. package/src/commands/new.ts +13 -319
  71. package/src/generator/config.ts +4 -2
  72. package/src/index.ts +104 -96
  73. package/src/repl/index.ts +3 -3
  74. package/src/tui/app.tsx +7 -15
  75. package/src/tui/components/Confirm.tsx +109 -0
  76. package/src/tui/components/PasswordInput.tsx +106 -0
  77. package/src/tui/components/Select.tsx +132 -0
  78. package/src/tui/components/index.ts +9 -0
  79. package/src/tui/hooks/index.ts +9 -0
  80. package/src/tui/hooks/useInit.ts +472 -0
  81. package/src/tui/hooks/useSpecGenerator.ts +17 -1
  82. package/src/tui/screens/InitScreen.tsx +562 -29
  83. package/src/tui/screens/InterviewScreen.tsx +2 -1
  84. package/src/tui/screens/index.ts +9 -0
  85. package/src/cli.ts +0 -274
  86. package/src/repl/repl-loop.ts +0 -389
  87. package/src/utils/repl-prompts.ts +0 -381
@@ -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;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;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"}
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"}
@@ -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 modelId = customModelId || DEFAULT_MODELS[provider];
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({
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  /**
2
- * Init Command
3
- * Initialize Ralph in the current project - BYOK multi-agent AI analysis
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 { type ScanResult } from '../scanner/index.js';
6
- import { type AIProvider } from '../ai/index.js';
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: import('../utils/config.js').RalphConfig | null;
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;;;GAGG;AAGH,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAyBxB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,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,OAAO,oBAAoB,EAAE,WAAW,GAAG,IAAI,CAAC;CACzD;AAgKD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAyL5B;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BrE"}
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"}
@@ -1,350 +1,8 @@
1
1
  /**
2
- * Init Command
3
- * Initialize Ralph in the current project - BYOK multi-agent AI analysis
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 { logger } from '../utils/logger.js';
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"}
@@ -1,31 +1,39 @@
1
1
  /**
2
- * New Command
3
- * Create a new feature specification from template or AI interview
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 { type AIProvider } from '../ai/providers.js';
6
- import { type ScanResult } from '../scanner/index.js';
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 REPL session) */
20
+ /** Pre-loaded scan result (from session) */
25
21
  scanResult?: ScanResult;
26
22
  }
27
23
  /**
28
- * Create a new feature specification
24
+ * Default spec template content
29
25
  */
30
- export declare function newCommand(feature: string, options?: NewOptions): Promise<void>;
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;;;GAGG;AAQH,OAAO,EAAwB,KAAK,UAAU,EAAoB,MAAM,oBAAoB,CAAC;AAE7F,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAO/D,MAAM,WAAW,UAAU;IACzB,oCAAoC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,yDAAyD;IACzD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAuJD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuQzF"}
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"}