ralph-starter 0.0.1 → 0.1.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +707 -17
- package/dist/auth/browser.d.ts +10 -0
- package/dist/auth/browser.d.ts.map +1 -0
- package/dist/auth/browser.js +56 -0
- package/dist/auth/browser.js.map +1 -0
- package/dist/auth/index.d.ts +5 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth-server.d.ts +20 -0
- package/dist/auth/oauth-server.d.ts.map +1 -0
- package/dist/auth/oauth-server.js +168 -0
- package/dist/auth/oauth-server.js.map +1 -0
- package/dist/auth/pkce.d.ts +46 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +57 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/providers/base.d.ts +52 -0
- package/dist/auth/providers/base.d.ts.map +1 -0
- package/dist/auth/providers/base.js +70 -0
- package/dist/auth/providers/base.js.map +1 -0
- package/dist/auth/providers/index.d.ts +23 -0
- package/dist/auth/providers/index.d.ts.map +1 -0
- package/dist/auth/providers/index.js +39 -0
- package/dist/auth/providers/index.js.map +1 -0
- package/dist/auth/providers/linear.d.ts +37 -0
- package/dist/auth/providers/linear.d.ts.map +1 -0
- package/dist/auth/providers/linear.js +46 -0
- package/dist/auth/providers/linear.js.map +1 -0
- package/dist/auth/providers/notion.d.ts +36 -0
- package/dist/auth/providers/notion.d.ts.map +1 -0
- package/dist/auth/providers/notion.js +75 -0
- package/dist/auth/providers/notion.js.map +1 -0
- package/dist/auth/providers/todoist.d.ts +29 -0
- package/dist/auth/providers/todoist.d.ts.map +1 -0
- package/dist/auth/providers/todoist.js +40 -0
- package/dist/auth/providers/todoist.js.map +1 -0
- package/dist/automation/git.d.ts +15 -0
- package/dist/automation/git.d.ts.map +1 -0
- package/dist/automation/git.js +73 -0
- package/dist/automation/git.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +192 -19
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth.d.ts +14 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +243 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/check.d.ts +12 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +124 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/config.d.ts +13 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +376 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/init.d.ts +31 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +353 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/integrations.d.ts +17 -0
- package/dist/commands/integrations.d.ts.map +1 -0
- package/dist/commands/integrations.js +193 -0
- package/dist/commands/integrations.js.map +1 -0
- package/dist/commands/plan.d.ts +5 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +80 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/run.d.ts +26 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +351 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/scaffold.d.ts +9 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +128 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/setup.d.ts +12 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +27 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/skill.d.ts +6 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +151 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/source.d.ts +17 -0
- package/dist/commands/source.d.ts.map +1 -0
- package/dist/commands/source.js +173 -0
- package/dist/commands/source.js.map +1 -0
- package/dist/config/manager.d.ts +70 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +227 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -0
- package/dist/integrations/_template/auth.d.ts +29 -0
- package/dist/integrations/_template/auth.d.ts.map +1 -0
- package/dist/integrations/_template/auth.js +42 -0
- package/dist/integrations/_template/auth.js.map +1 -0
- package/dist/integrations/_template/index.d.ts +8 -0
- package/dist/integrations/_template/index.d.ts.map +1 -0
- package/dist/integrations/_template/index.js +8 -0
- package/dist/integrations/_template/index.js.map +1 -0
- package/dist/integrations/_template/source.d.ts +34 -0
- package/dist/integrations/_template/source.d.ts.map +1 -0
- package/dist/integrations/_template/source.js +124 -0
- package/dist/integrations/_template/source.js.map +1 -0
- package/dist/integrations/base.d.ts +158 -0
- package/dist/integrations/base.d.ts.map +1 -0
- package/dist/integrations/base.js +109 -0
- package/dist/integrations/base.js.map +1 -0
- package/dist/integrations/github/index.d.ts +8 -0
- package/dist/integrations/github/index.d.ts.map +1 -0
- package/dist/integrations/github/index.js +8 -0
- package/dist/integrations/github/index.js.map +1 -0
- package/dist/integrations/github/source.d.ts +26 -0
- package/dist/integrations/github/source.d.ts.map +1 -0
- package/dist/integrations/github/source.js +190 -0
- package/dist/integrations/github/source.js.map +1 -0
- package/dist/integrations/index.d.ts +37 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +71 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/linear/auth.d.ts +37 -0
- package/dist/integrations/linear/auth.d.ts.map +1 -0
- package/dist/integrations/linear/auth.js +45 -0
- package/dist/integrations/linear/auth.js.map +1 -0
- package/dist/integrations/linear/index.d.ts +9 -0
- package/dist/integrations/linear/index.d.ts.map +1 -0
- package/dist/integrations/linear/index.js +9 -0
- package/dist/integrations/linear/index.js.map +1 -0
- package/dist/integrations/linear/source.d.ts +26 -0
- package/dist/integrations/linear/source.d.ts.map +1 -0
- package/dist/integrations/linear/source.js +248 -0
- package/dist/integrations/linear/source.js.map +1 -0
- package/dist/integrations/notion/index.d.ts +8 -0
- package/dist/integrations/notion/index.d.ts.map +1 -0
- package/dist/integrations/notion/index.js +8 -0
- package/dist/integrations/notion/index.js.map +1 -0
- package/dist/integrations/notion/source.d.ts +53 -0
- package/dist/integrations/notion/source.d.ts.map +1 -0
- package/dist/integrations/notion/source.js +463 -0
- package/dist/integrations/notion/source.js.map +1 -0
- package/dist/llm/api.d.ts +29 -0
- package/dist/llm/api.d.ts.map +1 -0
- package/dist/llm/api.js +152 -0
- package/dist/llm/api.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +7 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/providers.d.ts +24 -0
- package/dist/llm/providers.d.ts.map +1 -0
- package/dist/llm/providers.js +51 -0
- package/dist/llm/providers.js.map +1 -0
- package/dist/loop/__tests__/agents.test.d.ts +2 -0
- package/dist/loop/__tests__/agents.test.d.ts.map +1 -0
- package/dist/loop/__tests__/agents.test.js +183 -0
- package/dist/loop/__tests__/agents.test.js.map +1 -0
- package/dist/loop/__tests__/circuit-breaker.test.d.ts +2 -0
- package/dist/loop/__tests__/circuit-breaker.test.d.ts.map +1 -0
- package/dist/loop/__tests__/circuit-breaker.test.js +161 -0
- package/dist/loop/__tests__/circuit-breaker.test.js.map +1 -0
- package/dist/loop/__tests__/cost-tracker.test.d.ts +2 -0
- package/dist/loop/__tests__/cost-tracker.test.d.ts.map +1 -0
- package/dist/loop/__tests__/cost-tracker.test.js +200 -0
- package/dist/loop/__tests__/cost-tracker.test.js.map +1 -0
- package/dist/loop/__tests__/rate-limiter.test.d.ts +2 -0
- package/dist/loop/__tests__/rate-limiter.test.d.ts.map +1 -0
- package/dist/loop/__tests__/rate-limiter.test.js +198 -0
- package/dist/loop/__tests__/rate-limiter.test.js.map +1 -0
- package/dist/loop/__tests__/validation.test.d.ts +2 -0
- package/dist/loop/__tests__/validation.test.d.ts.map +1 -0
- package/dist/loop/__tests__/validation.test.js +234 -0
- package/dist/loop/__tests__/validation.test.js.map +1 -0
- package/dist/loop/agents.d.ts +26 -0
- package/dist/loop/agents.d.ts.map +1 -0
- package/dist/loop/agents.js +188 -0
- package/dist/loop/agents.js.map +1 -0
- package/dist/loop/circuit-breaker.d.ts +61 -0
- package/dist/loop/circuit-breaker.d.ts.map +1 -0
- package/dist/loop/circuit-breaker.js +143 -0
- package/dist/loop/circuit-breaker.js.map +1 -0
- package/dist/loop/cost-tracker.d.ts +90 -0
- package/dist/loop/cost-tracker.d.ts.map +1 -0
- package/dist/loop/cost-tracker.js +229 -0
- package/dist/loop/cost-tracker.js.map +1 -0
- package/dist/loop/estimator.d.ts +20 -0
- package/dist/loop/estimator.d.ts.map +1 -0
- package/dist/loop/estimator.js +123 -0
- package/dist/loop/estimator.js.map +1 -0
- package/dist/loop/executor.d.ts +44 -0
- package/dist/loop/executor.d.ts.map +1 -0
- package/dist/loop/executor.js +646 -0
- package/dist/loop/executor.js.map +1 -0
- package/dist/loop/progress.d.ts +34 -0
- package/dist/loop/progress.d.ts.map +1 -0
- package/dist/loop/progress.js +186 -0
- package/dist/loop/progress.js.map +1 -0
- package/dist/loop/rate-limiter.d.ts +71 -0
- package/dist/loop/rate-limiter.d.ts.map +1 -0
- package/dist/loop/rate-limiter.js +151 -0
- package/dist/loop/rate-limiter.js.map +1 -0
- package/dist/loop/semantic-analyzer.d.ts +33 -0
- package/dist/loop/semantic-analyzer.d.ts.map +1 -0
- package/dist/loop/semantic-analyzer.js +153 -0
- package/dist/loop/semantic-analyzer.js.map +1 -0
- package/dist/loop/skills.d.ts +29 -0
- package/dist/loop/skills.d.ts.map +1 -0
- package/dist/loop/skills.js +174 -0
- package/dist/loop/skills.js.map +1 -0
- package/dist/loop/step-detector.d.ts +17 -0
- package/dist/loop/step-detector.d.ts.map +1 -0
- package/dist/loop/step-detector.js +280 -0
- package/dist/loop/step-detector.js.map +1 -0
- package/dist/loop/task-counter.d.ts +41 -0
- package/dist/loop/task-counter.d.ts.map +1 -0
- package/dist/loop/task-counter.js +99 -0
- package/dist/loop/task-counter.js.map +1 -0
- package/dist/loop/validation.d.ts +28 -0
- package/dist/loop/validation.d.ts.map +1 -0
- package/dist/loop/validation.js +138 -0
- package/dist/loop/validation.js.map +1 -0
- package/dist/mcp/core/init.d.ts +15 -0
- package/dist/mcp/core/init.d.ts.map +1 -0
- package/dist/mcp/core/init.js +272 -0
- package/dist/mcp/core/init.js.map +1 -0
- package/dist/mcp/core/plan.d.ts +15 -0
- package/dist/mcp/core/plan.d.ts.map +1 -0
- package/dist/mcp/core/plan.js +90 -0
- package/dist/mcp/core/plan.js.map +1 -0
- package/dist/mcp/core/run.d.ts +26 -0
- package/dist/mcp/core/run.d.ts.map +1 -0
- package/dist/mcp/core/run.js +114 -0
- package/dist/mcp/core/run.js.map +1 -0
- package/dist/mcp/prompts.d.ts +10 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +163 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/resources.d.ts +16 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +114 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts +10 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +73 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +15 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +316 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/presets/index.d.ts +36 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +236 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/setup/agent-detector.d.ts +57 -0
- package/dist/setup/agent-detector.d.ts.map +1 -0
- package/dist/setup/agent-detector.js +170 -0
- package/dist/setup/agent-detector.js.map +1 -0
- package/dist/setup/index.d.ts +7 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +7 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/llm-tester.d.ts +33 -0
- package/dist/setup/llm-tester.d.ts.map +1 -0
- package/dist/setup/llm-tester.js +105 -0
- package/dist/setup/llm-tester.js.map +1 -0
- package/dist/setup/wizard.d.ts +19 -0
- package/dist/setup/wizard.d.ts.map +1 -0
- package/dist/setup/wizard.js +313 -0
- package/dist/setup/wizard.js.map +1 -0
- package/dist/sources/__tests__/file.test.d.ts +2 -0
- package/dist/sources/__tests__/file.test.d.ts.map +1 -0
- package/dist/sources/__tests__/file.test.js +126 -0
- package/dist/sources/__tests__/file.test.js.map +1 -0
- package/dist/sources/__tests__/github.test.d.ts +2 -0
- package/dist/sources/__tests__/github.test.d.ts.map +1 -0
- package/dist/sources/__tests__/github.test.js +157 -0
- package/dist/sources/__tests__/github.test.js.map +1 -0
- package/dist/sources/base.d.ts +72 -0
- package/dist/sources/base.d.ts.map +1 -0
- package/dist/sources/base.js +127 -0
- package/dist/sources/base.js.map +1 -0
- package/dist/sources/builtin/file.d.ts +21 -0
- package/dist/sources/builtin/file.d.ts.map +1 -0
- package/dist/sources/builtin/file.js +129 -0
- package/dist/sources/builtin/file.js.map +1 -0
- package/dist/sources/builtin/github-scraper.d.ts +65 -0
- package/dist/sources/builtin/github-scraper.d.ts.map +1 -0
- package/dist/sources/builtin/github-scraper.js +324 -0
- package/dist/sources/builtin/github-scraper.js.map +1 -0
- package/dist/sources/builtin/pdf.d.ts +24 -0
- package/dist/sources/builtin/pdf.d.ts.map +1 -0
- package/dist/sources/builtin/pdf.js +174 -0
- package/dist/sources/builtin/pdf.js.map +1 -0
- package/dist/sources/builtin/url.d.ts +47 -0
- package/dist/sources/builtin/url.d.ts.map +1 -0
- package/dist/sources/builtin/url.js +429 -0
- package/dist/sources/builtin/url.js.map +1 -0
- package/dist/sources/config.d.ts +72 -0
- package/dist/sources/config.d.ts.map +1 -0
- package/dist/sources/config.js +215 -0
- package/dist/sources/config.js.map +1 -0
- package/dist/sources/index.d.ts +47 -0
- package/dist/sources/index.d.ts.map +1 -0
- package/dist/sources/index.js +210 -0
- package/dist/sources/index.js.map +1 -0
- package/dist/sources/integrations/github.d.ts +24 -0
- package/dist/sources/integrations/github.d.ts.map +1 -0
- package/dist/sources/integrations/github.js +193 -0
- package/dist/sources/integrations/github.js.map +1 -0
- package/dist/sources/integrations/linear.d.ts +18 -0
- package/dist/sources/integrations/linear.d.ts.map +1 -0
- package/dist/sources/integrations/linear.js +197 -0
- package/dist/sources/integrations/linear.js.map +1 -0
- package/dist/sources/integrations/notion.d.ts +39 -0
- package/dist/sources/integrations/notion.d.ts.map +1 -0
- package/dist/sources/integrations/notion.js +343 -0
- package/dist/sources/integrations/notion.js.map +1 -0
- package/dist/sources/integrations/todoist.d.ts +18 -0
- package/dist/sources/integrations/todoist.d.ts.map +1 -0
- package/dist/sources/integrations/todoist.js +154 -0
- package/dist/sources/integrations/todoist.js.map +1 -0
- package/dist/sources/types.d.ts +106 -0
- package/dist/sources/types.d.ts.map +1 -0
- package/dist/sources/types.js +9 -0
- package/dist/sources/types.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/progress-renderer.d.ts +54 -0
- package/dist/ui/progress-renderer.d.ts.map +1 -0
- package/dist/ui/progress-renderer.js +118 -0
- package/dist/ui/progress-renderer.js.map +1 -0
- package/dist/ui/shimmer.d.ts +16 -0
- package/dist/ui/shimmer.d.ts.map +1 -0
- package/dist/ui/shimmer.js +31 -0
- package/dist/ui/shimmer.js.map +1 -0
- package/dist/wizard/ascii-art.d.ts +93 -0
- package/dist/wizard/ascii-art.d.ts.map +1 -0
- package/dist/wizard/ascii-art.js +378 -0
- package/dist/wizard/ascii-art.js.map +1 -0
- package/dist/wizard/idea-prompts.d.ts +18 -0
- package/dist/wizard/idea-prompts.d.ts.map +1 -0
- package/dist/wizard/idea-prompts.js +154 -0
- package/dist/wizard/idea-prompts.js.map +1 -0
- package/dist/wizard/idea-ui.d.ts +34 -0
- package/dist/wizard/idea-ui.d.ts.map +1 -0
- package/dist/wizard/idea-ui.js +225 -0
- package/dist/wizard/idea-ui.js.map +1 -0
- package/dist/wizard/ideas.d.ts +27 -0
- package/dist/wizard/ideas.d.ts.map +1 -0
- package/dist/wizard/ideas.js +511 -0
- package/dist/wizard/ideas.js.map +1 -0
- package/dist/wizard/index.d.ts +11 -0
- package/dist/wizard/index.d.ts.map +1 -0
- package/dist/wizard/index.js +472 -0
- package/dist/wizard/index.js.map +1 -0
- package/dist/wizard/llm.d.ts +14 -0
- package/dist/wizard/llm.d.ts.map +1 -0
- package/dist/wizard/llm.js +420 -0
- package/dist/wizard/llm.js.map +1 -0
- package/dist/wizard/prompts.d.ts +75 -0
- package/dist/wizard/prompts.d.ts.map +1 -0
- package/dist/wizard/prompts.js +455 -0
- package/dist/wizard/prompts.js.map +1 -0
- package/dist/wizard/spec-generator.d.ts +14 -0
- package/dist/wizard/spec-generator.d.ts.map +1 -0
- package/dist/wizard/spec-generator.js +200 -0
- package/dist/wizard/spec-generator.js.map +1 -0
- package/dist/wizard/types.d.ts +53 -0
- package/dist/wizard/types.d.ts.map +1 -0
- package/dist/wizard/types.js +10 -0
- package/dist/wizard/types.js.map +1 -0
- package/dist/wizard/ui.d.ts +57 -0
- package/dist/wizard/ui.d.ts.map +1 -0
- package/dist/wizard/ui.js +211 -0
- package/dist/wizard/ui.js.map +1 -0
- package/package.json +59 -8
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getConfiguredLLM, getLLMModel } from '../config/manager.js';
|
|
3
|
+
import { callLLM, PROVIDERS } from '../llm/index.js';
|
|
4
|
+
import { detectBestAgent, runAgent } from '../loop/agents.js';
|
|
5
|
+
import { RalphAnimator } from './ascii-art.js';
|
|
6
|
+
// Timeout for agent calls (60 seconds - agents take longer)
|
|
7
|
+
const AGENT_TIMEOUT_MS = 60000;
|
|
8
|
+
/**
|
|
9
|
+
* Wrap a promise with a timeout
|
|
10
|
+
*/
|
|
11
|
+
function withTimeout(promise, timeoutMs, message) {
|
|
12
|
+
return Promise.race([
|
|
13
|
+
promise,
|
|
14
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(message)), timeoutMs)),
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parse JSONL stream output from Claude Code to extract text content.
|
|
19
|
+
* Claude Code's stream-json format emits one JSON object per line.
|
|
20
|
+
* We look for:
|
|
21
|
+
* 1. "type": "result" -> contains the final response in "result" field
|
|
22
|
+
* 2. "type": "assistant" -> contains message content with text blocks
|
|
23
|
+
*/
|
|
24
|
+
function parseStreamJsonOutput(output) {
|
|
25
|
+
const lines = output.split('\n').filter(Boolean);
|
|
26
|
+
let resultText = '';
|
|
27
|
+
let assistantText = '';
|
|
28
|
+
for (const line of lines) {
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(line);
|
|
31
|
+
// Check for result event (contains final summary)
|
|
32
|
+
if (parsed.type === 'result' && parsed.result) {
|
|
33
|
+
resultText = parsed.result;
|
|
34
|
+
}
|
|
35
|
+
// Check for assistant message (contains actual response content)
|
|
36
|
+
if (parsed.type === 'assistant' && parsed.message?.content) {
|
|
37
|
+
for (const block of parsed.message.content) {
|
|
38
|
+
if (block.type === 'text' && typeof block.text === 'string') {
|
|
39
|
+
assistantText += block.text;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Ignore non-JSON lines
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Prefer result text if available, fall back to assistant text
|
|
49
|
+
return resultText || assistantText;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extract JSON object from text (handles markdown code blocks and plain JSON)
|
|
53
|
+
*/
|
|
54
|
+
function extractJsonFromText(text) {
|
|
55
|
+
// First, try to find JSON in markdown code blocks
|
|
56
|
+
const codeBlockMatch = text.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/);
|
|
57
|
+
if (codeBlockMatch) {
|
|
58
|
+
return codeBlockMatch[1];
|
|
59
|
+
}
|
|
60
|
+
// Fall back to raw JSON match
|
|
61
|
+
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
62
|
+
return jsonMatch ? jsonMatch[0] : null;
|
|
63
|
+
}
|
|
64
|
+
const REFINEMENT_PROMPT = `You are a product analyst helping to refine a project idea.
|
|
65
|
+
Given a user's project idea, analyze it and return a JSON response.
|
|
66
|
+
|
|
67
|
+
User's idea: "{IDEA}"
|
|
68
|
+
|
|
69
|
+
Return ONLY valid JSON (no markdown, no explanation) in this exact format:
|
|
70
|
+
{
|
|
71
|
+
"projectName": "suggested-name-in-kebab-case",
|
|
72
|
+
"projectDescription": "A one-sentence description of what this project does",
|
|
73
|
+
"projectType": "web|api|cli|mobile|library|automation",
|
|
74
|
+
"suggestedStack": {
|
|
75
|
+
"frontend": "react|nextjs|vue|svelte|astro|remix|vanilla|react-native|expo|null",
|
|
76
|
+
"backend": "nodejs|express|fastify|hono|python|django|flask|fastapi|go|gin|rust|null",
|
|
77
|
+
"database": "sqlite|postgres|mysql|mongodb|redis|supabase|firebase|prisma|drizzle|null",
|
|
78
|
+
"styling": "tailwind|css|scss|styled-components|null",
|
|
79
|
+
"language": "typescript|javascript|python|go|rust"
|
|
80
|
+
},
|
|
81
|
+
"coreFeatures": ["feature1", "feature2", "feature3"],
|
|
82
|
+
"suggestedFeatures": ["additional-feature1", "additional-feature2"],
|
|
83
|
+
"estimatedComplexity": "prototype|mvp|full"
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
Guidelines:
|
|
87
|
+
- projectName should be short, memorable, and lowercase with hyphens
|
|
88
|
+
- Choose the most appropriate projectType based on the idea
|
|
89
|
+
- CRITICAL: If the user mentions ANY specific technology, framework, library, or tool, you MUST use it exactly as specified. This applies to:
|
|
90
|
+
- Frontend: Astro, Next.js, Vue, Svelte, React, Remix, etc.
|
|
91
|
+
- Backend: Express, Fastify, Hono, Django, Flask, FastAPI, Gin, etc.
|
|
92
|
+
- Database: PostgreSQL, MySQL, MongoDB, Supabase, Firebase, Prisma, Drizzle, etc.
|
|
93
|
+
- Styling: Tailwind, SCSS, styled-components, etc.
|
|
94
|
+
- Language: TypeScript, Python, Go, Rust, etc.
|
|
95
|
+
- NEVER substitute a user-specified technology with a different one
|
|
96
|
+
- Only suggest defaults when the user doesn't specify (e.g., TypeScript + React for unspecified web apps)
|
|
97
|
+
- coreFeatures are essential features implied by the idea
|
|
98
|
+
- suggestedFeatures are nice-to-haves that would enhance the project
|
|
99
|
+
- estimatedComplexity is based on scope (prototype=hours, mvp=day, full=days/weeks)`;
|
|
100
|
+
/**
|
|
101
|
+
* Refine user's idea using LLM (hybrid approach)
|
|
102
|
+
* Priority: Claude Code CLI (no API key needed) > Direct API > Template fallback
|
|
103
|
+
* @param spinner - Optional spinner to stop before streaming output
|
|
104
|
+
*/
|
|
105
|
+
export async function refineIdea(idea, spinner) {
|
|
106
|
+
// 1. Try Claude Code agent FIRST (most frictionless - no API key needed!)
|
|
107
|
+
const agent = await detectBestAgent();
|
|
108
|
+
if (agent) {
|
|
109
|
+
try {
|
|
110
|
+
// Stop spinner before showing loading animation
|
|
111
|
+
if (spinner) {
|
|
112
|
+
spinner.stop();
|
|
113
|
+
console.log();
|
|
114
|
+
}
|
|
115
|
+
// Use loading animation while agent works
|
|
116
|
+
const animator = new RalphAnimator();
|
|
117
|
+
animator.start('Analyzing your idea...');
|
|
118
|
+
try {
|
|
119
|
+
const result = await refineViaAgentWithAnimator(idea, agent, animator);
|
|
120
|
+
animator.stop(chalk.green('✓ Idea analyzed!'));
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
catch (_error) {
|
|
124
|
+
animator.stop(chalk.red('✗ Could not analyze idea'));
|
|
125
|
+
// Fall through to API
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (_error) {
|
|
129
|
+
// Fall through to API - silent fallback
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// 2. Try direct API if key available (supports Anthropic, OpenAI, OpenRouter)
|
|
133
|
+
const llmConfig = getConfiguredLLM();
|
|
134
|
+
if (llmConfig) {
|
|
135
|
+
try {
|
|
136
|
+
return await refineViaApi(idea, llmConfig.provider, llmConfig.apiKey);
|
|
137
|
+
}
|
|
138
|
+
catch (_error) {
|
|
139
|
+
// Fall through to template - silent fallback
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// 3. Ultimate fallback: template-based suggestions
|
|
143
|
+
return getTemplateSuggestions(idea);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Refine via LLM API (supports multiple providers)
|
|
147
|
+
*/
|
|
148
|
+
async function refineViaApi(idea, provider, apiKey) {
|
|
149
|
+
const prompt = REFINEMENT_PROMPT.replace('{IDEA}', idea);
|
|
150
|
+
const model = getLLMModel() || PROVIDERS[provider].defaultModel;
|
|
151
|
+
const response = await callLLM(provider, apiKey, {
|
|
152
|
+
prompt,
|
|
153
|
+
maxTokens: 1024,
|
|
154
|
+
model,
|
|
155
|
+
});
|
|
156
|
+
// Parse JSON from response
|
|
157
|
+
const jsonMatch = response.content.match(/\{[\s\S]*\}/);
|
|
158
|
+
if (!jsonMatch) {
|
|
159
|
+
throw new Error('No JSON in response');
|
|
160
|
+
}
|
|
161
|
+
return JSON.parse(jsonMatch[0]);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Refine via Claude Code agent
|
|
165
|
+
*/
|
|
166
|
+
async function _refineViaAgent(idea, agent) {
|
|
167
|
+
const prompt = REFINEMENT_PROMPT.replace('{IDEA}', idea);
|
|
168
|
+
// NOTE: Don't use maxTurns:1 - it's too restrictive and causes "Reached max turns" error
|
|
169
|
+
const result = await withTimeout(runAgent(agent, {
|
|
170
|
+
task: prompt,
|
|
171
|
+
cwd: process.cwd(),
|
|
172
|
+
auto: true,
|
|
173
|
+
// Don't stream - Ralph animation provides visual feedback
|
|
174
|
+
// No maxTurns - let agent complete naturally
|
|
175
|
+
}), AGENT_TIMEOUT_MS, `Agent timed out after ${AGENT_TIMEOUT_MS / 1000}s`);
|
|
176
|
+
if (result.exitCode !== 0) {
|
|
177
|
+
throw new Error('Agent failed');
|
|
178
|
+
}
|
|
179
|
+
// Parse JSONL stream output to extract text content
|
|
180
|
+
const textContent = parseStreamJsonOutput(result.output);
|
|
181
|
+
// Extract JSON from the text content
|
|
182
|
+
const jsonText = extractJsonFromText(textContent || result.output);
|
|
183
|
+
if (!jsonText) {
|
|
184
|
+
throw new Error('No JSON in agent output');
|
|
185
|
+
}
|
|
186
|
+
return JSON.parse(jsonText);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Detect status message from JSONL event
|
|
190
|
+
*/
|
|
191
|
+
function getStatusFromEvent(parsed) {
|
|
192
|
+
// System events
|
|
193
|
+
if (parsed.type === 'system') {
|
|
194
|
+
if (parsed.subtype === 'init')
|
|
195
|
+
return 'Starting up...';
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
// Assistant is thinking/responding
|
|
199
|
+
if (parsed.type === 'assistant') {
|
|
200
|
+
const content = parsed.message?.content;
|
|
201
|
+
if (content && Array.isArray(content)) {
|
|
202
|
+
for (const block of content) {
|
|
203
|
+
// Tool use - show what tool is being used
|
|
204
|
+
if (block.type === 'tool_use') {
|
|
205
|
+
const toolName = block.name?.toLowerCase() || '';
|
|
206
|
+
if (toolName.includes('read'))
|
|
207
|
+
return 'Reading files...';
|
|
208
|
+
if (toolName.includes('write') || toolName.includes('edit'))
|
|
209
|
+
return 'Writing...';
|
|
210
|
+
if (toolName.includes('glob') || toolName.includes('grep'))
|
|
211
|
+
return 'Searching...';
|
|
212
|
+
if (toolName.includes('bash'))
|
|
213
|
+
return 'Running command...';
|
|
214
|
+
if (toolName.includes('task'))
|
|
215
|
+
return 'Processing...';
|
|
216
|
+
return `Using ${block.name}...`;
|
|
217
|
+
}
|
|
218
|
+
// Text content - Claude is thinking
|
|
219
|
+
if (block.type === 'text') {
|
|
220
|
+
return 'Thinking...';
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return 'Thinking...';
|
|
225
|
+
}
|
|
226
|
+
// User/tool result
|
|
227
|
+
if (parsed.type === 'user') {
|
|
228
|
+
return 'Processing result...';
|
|
229
|
+
}
|
|
230
|
+
// Result event
|
|
231
|
+
if (parsed.type === 'result') {
|
|
232
|
+
return 'Finishing up...';
|
|
233
|
+
}
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Refine via Claude Code agent with streaming output to animator
|
|
238
|
+
*/
|
|
239
|
+
async function refineViaAgentWithAnimator(idea, agent, animator) {
|
|
240
|
+
const prompt = REFINEMENT_PROMPT.replace('{IDEA}', idea);
|
|
241
|
+
const result = await withTimeout(runAgent(agent, {
|
|
242
|
+
task: prompt,
|
|
243
|
+
cwd: process.cwd(),
|
|
244
|
+
auto: true,
|
|
245
|
+
onOutput: (line) => {
|
|
246
|
+
// Parse JSONL lines to update status message
|
|
247
|
+
try {
|
|
248
|
+
const parsed = JSON.parse(line);
|
|
249
|
+
// Update animator message based on event type
|
|
250
|
+
const status = getStatusFromEvent(parsed);
|
|
251
|
+
if (status) {
|
|
252
|
+
animator.updateMessage(status);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
// Not JSON - ignore
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
}), AGENT_TIMEOUT_MS, `Agent timed out after ${AGENT_TIMEOUT_MS / 1000}s`);
|
|
260
|
+
if (result.exitCode !== 0) {
|
|
261
|
+
throw new Error('Agent failed');
|
|
262
|
+
}
|
|
263
|
+
// Parse JSONL stream output to extract text content
|
|
264
|
+
const textContent = parseStreamJsonOutput(result.output);
|
|
265
|
+
// Extract JSON from the text content
|
|
266
|
+
const jsonText = extractJsonFromText(textContent || result.output);
|
|
267
|
+
if (!jsonText) {
|
|
268
|
+
throw new Error('No JSON in agent output');
|
|
269
|
+
}
|
|
270
|
+
return JSON.parse(jsonText);
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Template-based fallback when no LLM available
|
|
274
|
+
*/
|
|
275
|
+
function getTemplateSuggestions(idea) {
|
|
276
|
+
const lowerIdea = idea.toLowerCase();
|
|
277
|
+
// Detect project type from keywords
|
|
278
|
+
let projectType = 'web';
|
|
279
|
+
if (lowerIdea.includes('api') || lowerIdea.includes('backend') || lowerIdea.includes('server')) {
|
|
280
|
+
projectType = 'api';
|
|
281
|
+
}
|
|
282
|
+
else if (lowerIdea.includes('cli') ||
|
|
283
|
+
lowerIdea.includes('command line') ||
|
|
284
|
+
lowerIdea.includes('terminal')) {
|
|
285
|
+
projectType = 'cli';
|
|
286
|
+
}
|
|
287
|
+
else if (lowerIdea.includes('mobile') ||
|
|
288
|
+
lowerIdea.includes('ios') ||
|
|
289
|
+
lowerIdea.includes('android')) {
|
|
290
|
+
projectType = 'mobile';
|
|
291
|
+
}
|
|
292
|
+
else if (lowerIdea.includes('library') ||
|
|
293
|
+
lowerIdea.includes('package') ||
|
|
294
|
+
lowerIdea.includes('sdk')) {
|
|
295
|
+
projectType = 'library';
|
|
296
|
+
}
|
|
297
|
+
else if (lowerIdea.includes('script') ||
|
|
298
|
+
lowerIdea.includes('automate') ||
|
|
299
|
+
lowerIdea.includes('bot')) {
|
|
300
|
+
projectType = 'automation';
|
|
301
|
+
}
|
|
302
|
+
// Generate project name from idea
|
|
303
|
+
const projectName = idea
|
|
304
|
+
.toLowerCase()
|
|
305
|
+
.replace(/^(a|an|the)\s+/i, '')
|
|
306
|
+
.replace(/[^a-z0-9\s]/g, '')
|
|
307
|
+
.trim()
|
|
308
|
+
.split(/\s+/)
|
|
309
|
+
.slice(0, 3)
|
|
310
|
+
.join('-');
|
|
311
|
+
// Detect specific technologies from idea
|
|
312
|
+
const detectTech = (patterns) => {
|
|
313
|
+
for (const [pattern, value] of patterns) {
|
|
314
|
+
if (lowerIdea.includes(pattern))
|
|
315
|
+
return value;
|
|
316
|
+
}
|
|
317
|
+
return undefined;
|
|
318
|
+
};
|
|
319
|
+
const detectedFrontend = detectTech([
|
|
320
|
+
['astro', 'astro'],
|
|
321
|
+
['nextjs', 'nextjs'],
|
|
322
|
+
['next.js', 'nextjs'],
|
|
323
|
+
['remix', 'remix'],
|
|
324
|
+
['vue', 'vue'],
|
|
325
|
+
['svelte', 'svelte'],
|
|
326
|
+
['react native', 'react-native'],
|
|
327
|
+
['expo', 'expo'],
|
|
328
|
+
]);
|
|
329
|
+
const detectedBackend = detectTech([
|
|
330
|
+
['express', 'express'],
|
|
331
|
+
['fastify', 'fastify'],
|
|
332
|
+
['hono', 'hono'],
|
|
333
|
+
['django', 'django'],
|
|
334
|
+
['flask', 'flask'],
|
|
335
|
+
['fastapi', 'fastapi'],
|
|
336
|
+
['gin', 'gin'],
|
|
337
|
+
]);
|
|
338
|
+
const detectedDatabase = detectTech([
|
|
339
|
+
['supabase', 'supabase'],
|
|
340
|
+
['firebase', 'firebase'],
|
|
341
|
+
['prisma', 'prisma'],
|
|
342
|
+
['drizzle', 'drizzle'],
|
|
343
|
+
['postgres', 'postgres'],
|
|
344
|
+
['postgresql', 'postgres'],
|
|
345
|
+
['mysql', 'mysql'],
|
|
346
|
+
['mongodb', 'mongodb'],
|
|
347
|
+
['mongo', 'mongodb'],
|
|
348
|
+
['redis', 'redis'],
|
|
349
|
+
]);
|
|
350
|
+
const detectedStyling = detectTech([
|
|
351
|
+
['tailwind', 'tailwind'],
|
|
352
|
+
['styled-components', 'styled-components'],
|
|
353
|
+
['scss', 'scss'],
|
|
354
|
+
['sass', 'scss'],
|
|
355
|
+
]);
|
|
356
|
+
const detectedLanguage = detectTech([
|
|
357
|
+
['typescript', 'typescript'],
|
|
358
|
+
['python', 'python'],
|
|
359
|
+
['golang', 'go'],
|
|
360
|
+
[' go ', 'go'],
|
|
361
|
+
['rust', 'rust'],
|
|
362
|
+
]);
|
|
363
|
+
// Suggest stack based on type and detected tech
|
|
364
|
+
const suggestedStack = {};
|
|
365
|
+
if (projectType === 'web') {
|
|
366
|
+
suggestedStack.frontend = detectedFrontend || 'react';
|
|
367
|
+
suggestedStack.backend =
|
|
368
|
+
detectedBackend || (detectedFrontend === 'astro' ? undefined : 'nodejs');
|
|
369
|
+
suggestedStack.database =
|
|
370
|
+
detectedDatabase || (detectedFrontend === 'astro' ? undefined : 'sqlite');
|
|
371
|
+
}
|
|
372
|
+
else if (projectType === 'api') {
|
|
373
|
+
suggestedStack.backend = detectedBackend || 'nodejs';
|
|
374
|
+
suggestedStack.database = detectedDatabase || 'postgres';
|
|
375
|
+
}
|
|
376
|
+
else if (projectType === 'mobile') {
|
|
377
|
+
suggestedStack.frontend = detectedFrontend || 'expo';
|
|
378
|
+
suggestedStack.backend = detectedBackend || 'nodejs';
|
|
379
|
+
}
|
|
380
|
+
else if (projectType === 'cli') {
|
|
381
|
+
suggestedStack.language = detectedLanguage || 'typescript';
|
|
382
|
+
}
|
|
383
|
+
// Add detected styling and language if found
|
|
384
|
+
if (detectedStyling)
|
|
385
|
+
suggestedStack.styling = detectedStyling;
|
|
386
|
+
if (detectedLanguage)
|
|
387
|
+
suggestedStack.language = detectedLanguage;
|
|
388
|
+
// Common features based on type
|
|
389
|
+
const typeFeatures = {
|
|
390
|
+
web: ['User interface', 'Data persistence', 'Responsive design'],
|
|
391
|
+
api: ['REST endpoints', 'Input validation', 'Error handling'],
|
|
392
|
+
cli: ['Help command', 'Configuration file', 'Progress indicators'],
|
|
393
|
+
mobile: ['Navigation', 'Data storage', 'User interface'],
|
|
394
|
+
library: ['TypeScript support', 'Documentation', 'Tests'],
|
|
395
|
+
automation: ['Error handling', 'Logging', 'Configuration'],
|
|
396
|
+
};
|
|
397
|
+
return {
|
|
398
|
+
projectName: projectName || 'my-project',
|
|
399
|
+
projectDescription: idea,
|
|
400
|
+
projectType,
|
|
401
|
+
suggestedStack,
|
|
402
|
+
coreFeatures: typeFeatures[projectType] || [],
|
|
403
|
+
suggestedFeatures: ['Dark mode', 'Error notifications', 'Loading states'],
|
|
404
|
+
estimatedComplexity: 'mvp',
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Check if LLM refinement is available
|
|
409
|
+
* Priority: Claude Code agent (no API key needed) > API key configured
|
|
410
|
+
*/
|
|
411
|
+
export async function isLlmAvailable() {
|
|
412
|
+
// Check for Claude Code agent first (most frictionless)
|
|
413
|
+
const agent = await detectBestAgent();
|
|
414
|
+
if (agent)
|
|
415
|
+
return true;
|
|
416
|
+
// Check for API key
|
|
417
|
+
const llmConfig = getConfiguredLLM();
|
|
418
|
+
return llmConfig !== null;
|
|
419
|
+
}
|
|
420
|
+
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/wizard/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ProjectInfo } from '../commands/init.js';
|
|
2
|
+
import type { Complexity, ProjectType, TechStack } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Ask if user has an idea or needs help brainstorming
|
|
5
|
+
* @param isExistingProject - If true, show option to improve existing project
|
|
6
|
+
* @param isRalphProject - If true (and isExistingProject), project has Ralph files
|
|
7
|
+
*/
|
|
8
|
+
export declare function askHasIdea(options?: {
|
|
9
|
+
isExistingProject?: boolean;
|
|
10
|
+
isRalphProject?: boolean;
|
|
11
|
+
}): Promise<'has_idea' | 'need_help' | 'improve_existing'>;
|
|
12
|
+
/**
|
|
13
|
+
* Ask how user wants to improve existing project
|
|
14
|
+
*/
|
|
15
|
+
export type ImproveAction = 'prompt' | 'analyze';
|
|
16
|
+
export declare function askImproveAction(): Promise<ImproveAction>;
|
|
17
|
+
/**
|
|
18
|
+
* Ask for improvement instructions
|
|
19
|
+
*/
|
|
20
|
+
export declare function askImprovementPrompt(): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Ask for the user's idea
|
|
23
|
+
*/
|
|
24
|
+
export declare function askForIdea(): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Ask for project type if not detected
|
|
27
|
+
*/
|
|
28
|
+
export declare function askForProjectType(suggestedType?: ProjectType): Promise<ProjectType>;
|
|
29
|
+
/**
|
|
30
|
+
* Ask for tech stack preferences
|
|
31
|
+
*/
|
|
32
|
+
export declare function askForTechStack(projectType: ProjectType, suggestedStack?: TechStack): Promise<TechStack>;
|
|
33
|
+
/**
|
|
34
|
+
* Ask user to select features
|
|
35
|
+
*/
|
|
36
|
+
export declare function askForFeatures(coreFeatures: string[], suggestedFeatures: string[]): Promise<string[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Ask for project complexity
|
|
39
|
+
*/
|
|
40
|
+
export declare function askForComplexity(suggestedComplexity?: Complexity): Promise<Complexity>;
|
|
41
|
+
/**
|
|
42
|
+
* Confirm the refined plan
|
|
43
|
+
*/
|
|
44
|
+
export declare function confirmPlan(): Promise<'proceed' | 'modify' | 'restart'>;
|
|
45
|
+
/**
|
|
46
|
+
* Ask what to modify
|
|
47
|
+
*/
|
|
48
|
+
export declare function askWhatToModify(): Promise<'type' | 'stack' | 'features' | 'complexity'>;
|
|
49
|
+
/**
|
|
50
|
+
* Ask for execution options
|
|
51
|
+
*/
|
|
52
|
+
export declare function askExecutionOptions(): Promise<{
|
|
53
|
+
autoRun: boolean;
|
|
54
|
+
autoCommit: boolean;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Ask for working directory
|
|
58
|
+
*/
|
|
59
|
+
export declare function askWorkingDirectory(suggestedName: string): Promise<string>;
|
|
60
|
+
/**
|
|
61
|
+
* Ask what to do when an existing project is detected
|
|
62
|
+
*/
|
|
63
|
+
export type ExistingProjectAction = 'enhance' | 'subfolder' | 'different';
|
|
64
|
+
export declare function askExistingProjectAction(projectInfo: ProjectInfo): Promise<ExistingProjectAction>;
|
|
65
|
+
/**
|
|
66
|
+
* Ask what to do when a Ralph Playbook is detected
|
|
67
|
+
*/
|
|
68
|
+
export type RalphPlaybookAction = 'continue' | 'fresh' | 'different';
|
|
69
|
+
export declare function askRalphPlaybookAction(): Promise<RalphPlaybookAction>;
|
|
70
|
+
/**
|
|
71
|
+
* Ask what action to take when continuing on an existing Ralph project
|
|
72
|
+
*/
|
|
73
|
+
export type ContinueAction = 'run' | 'plan' | 'add_spec';
|
|
74
|
+
export declare function askContinueAction(): Promise<ContinueAction>;
|
|
75
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/wizard/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErE;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,GAAG,kBAAkB,CAAC,CA+BzD;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAwB/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAY5D;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAWlD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CA8BzF;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,WAAW,EACxB,cAAc,CAAC,EAAE,SAAS,GACzB,OAAO,CAAC,SAAS,CAAC,CAgHpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,MAAM,EAAE,EACtB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBnB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAmC5F;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC,CAe7E;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC,CAgB7F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC,CAqCD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBhF;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC;AAE1E,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,qBAAqB,CAAC,CA+BhC;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAErE,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CA4B3E;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAEzD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CA4BjE"}
|