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,511 @@
|
|
|
1
|
+
// Idea Mode - Brainstorming for users who don't know what to build
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { getConfiguredLLM, getLLMModel } from '../config/manager.js';
|
|
5
|
+
import { callLLM, PROVIDERS } from '../llm/index.js';
|
|
6
|
+
import { detectBestAgent, runAgent } from '../loop/agents.js';
|
|
7
|
+
import { getBrainstormPrompt, PROBLEM_PROMPT, SKILL_PROMPT, TREND_PROMPT } from './idea-prompts.js';
|
|
8
|
+
import { buildIdeaContext, selectIdea, showBrainstormResults, showIdeaLoading, showIdeaWelcome, } from './idea-ui.js';
|
|
9
|
+
// Timeout for agent calls (60 seconds - simplified prompt should be faster)
|
|
10
|
+
const AGENT_TIMEOUT_MS = 60000;
|
|
11
|
+
// Global spinner reference for cleanup on exit
|
|
12
|
+
let activeSpinner = null;
|
|
13
|
+
/**
|
|
14
|
+
* Check if error is an exit/interrupt error from inquirer
|
|
15
|
+
*/
|
|
16
|
+
function isExitError(error) {
|
|
17
|
+
if (error instanceof Error) {
|
|
18
|
+
return (error.name === 'ExitPromptError' ||
|
|
19
|
+
error.message.includes('User force closed') ||
|
|
20
|
+
error.message.includes('SIGINT'));
|
|
21
|
+
}
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Run idea mode - brainstorming session for users without a project idea
|
|
26
|
+
* Returns the selected idea's title/description for use in the wizard
|
|
27
|
+
*/
|
|
28
|
+
export async function runIdeaMode() {
|
|
29
|
+
const spinner = ora();
|
|
30
|
+
activeSpinner = spinner;
|
|
31
|
+
// Setup graceful exit for this mode
|
|
32
|
+
const cleanup = () => {
|
|
33
|
+
if (activeSpinner) {
|
|
34
|
+
activeSpinner.stop();
|
|
35
|
+
}
|
|
36
|
+
console.log(chalk.dim('\n\nExiting...'));
|
|
37
|
+
process.exit(0);
|
|
38
|
+
};
|
|
39
|
+
process.on('SIGINT', cleanup);
|
|
40
|
+
try {
|
|
41
|
+
return await runIdeaModeFlow(spinner);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (isExitError(error)) {
|
|
45
|
+
spinner.stop();
|
|
46
|
+
console.log(chalk.dim('\n\nExiting...'));
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
activeSpinner = null;
|
|
53
|
+
process.removeListener('SIGINT', cleanup);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Main idea mode flow (extracted for cleaner error handling)
|
|
58
|
+
*/
|
|
59
|
+
async function runIdeaModeFlow(spinner) {
|
|
60
|
+
// Show welcome
|
|
61
|
+
showIdeaWelcome();
|
|
62
|
+
// Get user preferences
|
|
63
|
+
const context = await buildIdeaContext();
|
|
64
|
+
let selectedIdea = null;
|
|
65
|
+
while (!selectedIdea) {
|
|
66
|
+
// Generate ideas
|
|
67
|
+
spinner.start(showIdeaLoading(context.method));
|
|
68
|
+
let ideas;
|
|
69
|
+
try {
|
|
70
|
+
ideas = await generateIdeas(context, spinner);
|
|
71
|
+
// Only show success if spinner is still active (API method)
|
|
72
|
+
if (spinner.isSpinning) {
|
|
73
|
+
spinner.succeed('Got some ideas!');
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log(chalk.green(' ✓ Got some ideas!'));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (_error) {
|
|
80
|
+
if (spinner.isSpinning) {
|
|
81
|
+
spinner.fail('Could not generate ideas');
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.log(chalk.red(' ✗ Could not generate ideas'));
|
|
85
|
+
}
|
|
86
|
+
ideas = getTemplateIdeas(context.method);
|
|
87
|
+
}
|
|
88
|
+
// Show results
|
|
89
|
+
showBrainstormResults(ideas);
|
|
90
|
+
// Let user select
|
|
91
|
+
selectedIdea = await selectIdea(ideas);
|
|
92
|
+
// Check for regenerate signal
|
|
93
|
+
if (selectedIdea && selectedIdea.title === '__REGENERATE__') {
|
|
94
|
+
selectedIdea = null;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
// User wants to describe their own
|
|
98
|
+
if (selectedIdea === null) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Return the idea as a string for the wizard
|
|
103
|
+
return `${selectedIdea.title}: ${selectedIdea.description}`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Generate ideas based on context using hybrid LLM approach
|
|
107
|
+
* Returns both the ideas and which method was used (for user feedback)
|
|
108
|
+
* @param spinner - Optional spinner to stop before streaming output
|
|
109
|
+
*/
|
|
110
|
+
export async function generateIdeas(context, spinner) {
|
|
111
|
+
const result = await generateIdeasWithMethod(context, spinner);
|
|
112
|
+
return result.ideas;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Wrap a promise with a timeout
|
|
116
|
+
*/
|
|
117
|
+
function withTimeout(promise, timeoutMs, message) {
|
|
118
|
+
return Promise.race([
|
|
119
|
+
promise,
|
|
120
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(message)), timeoutMs)),
|
|
121
|
+
]);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Generate ideas and return which method was used
|
|
125
|
+
* Priority: Claude Code CLI (no API key needed) > Direct API > Template fallback
|
|
126
|
+
* @param spinner - Optional spinner to stop before streaming output
|
|
127
|
+
*/
|
|
128
|
+
export async function generateIdeasWithMethod(context, spinner) {
|
|
129
|
+
// 1. Try Claude Code agent FIRST (most frictionless - no API key needed!)
|
|
130
|
+
try {
|
|
131
|
+
const agent = await withTimeout(detectBestAgent(), 5000, 'Agent detection timeout');
|
|
132
|
+
if (agent) {
|
|
133
|
+
console.log(chalk.dim(' Using Claude Code...'));
|
|
134
|
+
// Stop spinner before animation (they would conflict)
|
|
135
|
+
if (spinner) {
|
|
136
|
+
spinner.stop();
|
|
137
|
+
console.log();
|
|
138
|
+
}
|
|
139
|
+
// generateViaAgent shows loading animation internally
|
|
140
|
+
const ideas = await generateViaAgent(context, agent);
|
|
141
|
+
return { ideas, method: 'agent' };
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (_error) {
|
|
145
|
+
// Silent fallback to API
|
|
146
|
+
}
|
|
147
|
+
// 2. Try direct API if key available - supports Anthropic, OpenAI, OpenRouter
|
|
148
|
+
const llmConfig = getConfiguredLLM();
|
|
149
|
+
if (llmConfig) {
|
|
150
|
+
try {
|
|
151
|
+
const providerName = PROVIDERS[llmConfig.provider].displayName;
|
|
152
|
+
console.log(chalk.dim(` Using ${providerName} API...`));
|
|
153
|
+
const ideas = await generateViaApi(context, llmConfig.provider, llmConfig.apiKey);
|
|
154
|
+
return { ideas, method: 'api' };
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
const msg = error instanceof Error ? error.message : 'unknown error';
|
|
158
|
+
console.log(chalk.dim(` API error (${msg}), using templates...`));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// 3. Fallback: curated template suggestions (instant, always works)
|
|
162
|
+
console.log(chalk.dim(' Loading curated ideas...'));
|
|
163
|
+
return { ideas: getTemplateIdeas(context.method), method: 'templates' };
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get the appropriate prompt for the context
|
|
167
|
+
*/
|
|
168
|
+
function getPromptForContext(context) {
|
|
169
|
+
switch (context.method) {
|
|
170
|
+
case 'brainstorm':
|
|
171
|
+
return getBrainstormPrompt(); // Dynamic prompt with randomness
|
|
172
|
+
case 'trending':
|
|
173
|
+
return TREND_PROMPT;
|
|
174
|
+
case 'skills':
|
|
175
|
+
return SKILL_PROMPT.replace('{SKILLS}', context.skills?.join(', ') || 'general programming');
|
|
176
|
+
case 'problem':
|
|
177
|
+
return PROBLEM_PROMPT.replace('{PROBLEM}', context.problem || 'general productivity');
|
|
178
|
+
default:
|
|
179
|
+
return getBrainstormPrompt();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Generate ideas via LLM API (supports multiple providers)
|
|
184
|
+
*/
|
|
185
|
+
async function generateViaApi(context, provider, apiKey) {
|
|
186
|
+
const prompt = getPromptForContext(context);
|
|
187
|
+
const model = getLLMModel() || PROVIDERS[provider].defaultModel;
|
|
188
|
+
const response = await callLLM(provider, apiKey, {
|
|
189
|
+
prompt,
|
|
190
|
+
maxTokens: 2048,
|
|
191
|
+
model,
|
|
192
|
+
});
|
|
193
|
+
// Parse JSON from response
|
|
194
|
+
const jsonMatch = response.content.match(/\{[\s\S]*\}/);
|
|
195
|
+
if (!jsonMatch) {
|
|
196
|
+
throw new Error('No JSON in response');
|
|
197
|
+
}
|
|
198
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
199
|
+
return parsed.ideas;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Generate ideas via Claude Code agent (uses existing CLI auth)
|
|
203
|
+
* Uses a simplified prompt to avoid timeouts
|
|
204
|
+
*/
|
|
205
|
+
async function generateViaAgent(context, agent) {
|
|
206
|
+
// Use a MUCH simpler prompt for the agent to avoid timeouts
|
|
207
|
+
// The full prompts are too complex and cause Claude Code to do extra work
|
|
208
|
+
const simplePrompt = getSimpleAgentPrompt(context);
|
|
209
|
+
console.log(chalk.dim(' Running Claude Code...'));
|
|
210
|
+
console.log();
|
|
211
|
+
try {
|
|
212
|
+
const result = await withTimeout(runAgent(agent, {
|
|
213
|
+
task: simplePrompt,
|
|
214
|
+
cwd: process.cwd(),
|
|
215
|
+
auto: true,
|
|
216
|
+
maxTurns: 2, // Limit to 2 turns - just get the response
|
|
217
|
+
streamOutput: true,
|
|
218
|
+
}), AGENT_TIMEOUT_MS, `Agent timed out after ${AGENT_TIMEOUT_MS / 1000}s`);
|
|
219
|
+
console.log(); // Newline after streaming
|
|
220
|
+
if (result.exitCode !== 0) {
|
|
221
|
+
throw new Error(`Agent exited with code ${result.exitCode}`);
|
|
222
|
+
}
|
|
223
|
+
// Parse JSON from output
|
|
224
|
+
const jsonMatch = result.output.match(/\{[\s\S]*\}/);
|
|
225
|
+
if (!jsonMatch) {
|
|
226
|
+
console.log(chalk.yellow(' Could not find JSON in output, using templates...'));
|
|
227
|
+
throw new Error('No JSON in agent output');
|
|
228
|
+
}
|
|
229
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
230
|
+
console.log(chalk.green(' ✓ Ideas generated!'));
|
|
231
|
+
return parsed.ideas;
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
235
|
+
console.log(chalk.red(` ✗ Agent error: ${msg}`));
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Get a simplified prompt for Claude Code agent
|
|
241
|
+
* Shorter prompt = faster response, less chance of timeout
|
|
242
|
+
*/
|
|
243
|
+
function getSimpleAgentPrompt(context) {
|
|
244
|
+
const base = `Generate 5 project ideas as JSON. Return ONLY this JSON format:
|
|
245
|
+
{"ideas":[{"title":"Name","description":"One sentence","projectType":"web|api|cli","difficulty":"easy|moderate|challenging","reasons":["reason1","reason2"]}]}`;
|
|
246
|
+
switch (context.method) {
|
|
247
|
+
case 'trending':
|
|
248
|
+
return `${base}\n\nFocus on 2025 trends: AI tools, local-first apps, developer productivity.`;
|
|
249
|
+
case 'skills':
|
|
250
|
+
return `${base}\n\nFor someone who knows: ${context.skills?.join(', ') || 'programming'}`;
|
|
251
|
+
case 'problem':
|
|
252
|
+
return `${base}\n\nTo solve: ${context.problem || 'general productivity'}`;
|
|
253
|
+
default:
|
|
254
|
+
return `${base}\n\nMix of web apps, CLI tools, and APIs. Be creative!`;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Shuffle array randomly (Fisher-Yates)
|
|
259
|
+
*/
|
|
260
|
+
function shuffleArray(array) {
|
|
261
|
+
const shuffled = [...array];
|
|
262
|
+
for (let i = shuffled.length - 1; i > 0; i--) {
|
|
263
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
264
|
+
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
|
|
265
|
+
}
|
|
266
|
+
return shuffled;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Template-based fallback when no LLM available - now with more variety and randomness!
|
|
270
|
+
*/
|
|
271
|
+
function getTemplateIdeas(method) {
|
|
272
|
+
// Large pool of ideas to pick from
|
|
273
|
+
const allIdeas = [
|
|
274
|
+
// Productivity & Tools
|
|
275
|
+
{
|
|
276
|
+
title: 'Personal Finance Tracker',
|
|
277
|
+
description: 'Track expenses, set budgets, and visualize spending patterns',
|
|
278
|
+
projectType: 'web',
|
|
279
|
+
difficulty: 'moderate',
|
|
280
|
+
reasons: ['Practical everyday use', 'Great for learning data visualization'],
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
title: 'Habit Tracker',
|
|
284
|
+
description: 'Build streaks, track daily habits, and see your progress over time',
|
|
285
|
+
projectType: 'web',
|
|
286
|
+
difficulty: 'easy',
|
|
287
|
+
reasons: ['Personal growth tool', 'Great for beginners'],
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
title: 'Pomodoro Timer',
|
|
291
|
+
description: 'Focus timer with stats, break reminders, and daily productivity reports',
|
|
292
|
+
projectType: 'web',
|
|
293
|
+
difficulty: 'easy',
|
|
294
|
+
reasons: ['Simple but useful', 'Good first project'],
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
title: 'Reading List Manager',
|
|
298
|
+
description: 'Track books to read, currently reading, and finished with notes',
|
|
299
|
+
projectType: 'web',
|
|
300
|
+
difficulty: 'easy',
|
|
301
|
+
reasons: ['Personal utility', 'Classic CRUD app'],
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
title: 'Meal Planner',
|
|
305
|
+
description: 'Plan weekly meals, generate shopping lists, and track nutrition',
|
|
306
|
+
projectType: 'web',
|
|
307
|
+
difficulty: 'moderate',
|
|
308
|
+
reasons: ['Practical tool', 'Good data modeling exercise'],
|
|
309
|
+
},
|
|
310
|
+
// Developer Tools
|
|
311
|
+
{
|
|
312
|
+
title: 'Markdown Note Organizer',
|
|
313
|
+
description: 'CLI tool to organize, search, and link markdown notes',
|
|
314
|
+
projectType: 'cli',
|
|
315
|
+
difficulty: 'easy',
|
|
316
|
+
reasons: ['Simple to start', 'Can grow in complexity'],
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
title: 'API Status Dashboard',
|
|
320
|
+
description: 'Monitor multiple API endpoints and get alerts when they go down',
|
|
321
|
+
projectType: 'web',
|
|
322
|
+
difficulty: 'moderate',
|
|
323
|
+
reasons: ['Useful for developers', 'Good full-stack project'],
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
title: 'Git Commit Analyzer',
|
|
327
|
+
description: 'Analyze git history to show contribution patterns and stats',
|
|
328
|
+
projectType: 'cli',
|
|
329
|
+
difficulty: 'easy',
|
|
330
|
+
reasons: ['Work with familiar tools', 'Interesting data to explore'],
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
title: 'Code Snippet Manager',
|
|
334
|
+
description: 'Save, organize, and search your code snippets with syntax highlighting',
|
|
335
|
+
projectType: 'web',
|
|
336
|
+
difficulty: 'moderate',
|
|
337
|
+
reasons: ['Developer utility', 'Good for learning'],
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
title: 'Regex Tester',
|
|
341
|
+
description: 'Interactive regex builder with real-time matching and explanations',
|
|
342
|
+
projectType: 'web',
|
|
343
|
+
difficulty: 'easy',
|
|
344
|
+
reasons: ['Everyone needs this', 'Great learning tool'],
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
title: 'JSON/YAML Converter',
|
|
348
|
+
description: 'Convert between JSON, YAML, and TOML with formatting options',
|
|
349
|
+
projectType: 'web',
|
|
350
|
+
difficulty: 'easy',
|
|
351
|
+
reasons: ['Practical utility', 'Quick to build'],
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
title: 'Environment Variable Manager',
|
|
355
|
+
description: 'Manage and sync .env files across projects securely',
|
|
356
|
+
projectType: 'cli',
|
|
357
|
+
difficulty: 'moderate',
|
|
358
|
+
reasons: ['Solves real problem', 'Security focused'],
|
|
359
|
+
},
|
|
360
|
+
// APIs
|
|
361
|
+
{
|
|
362
|
+
title: 'Recipe API',
|
|
363
|
+
description: 'RESTful API for storing and retrieving recipes with ingredients',
|
|
364
|
+
projectType: 'api',
|
|
365
|
+
difficulty: 'easy',
|
|
366
|
+
reasons: ['Classic CRUD project', 'Easy to extend'],
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
title: 'Quote of the Day API',
|
|
370
|
+
description: 'API serving random quotes with categories and authors',
|
|
371
|
+
projectType: 'api',
|
|
372
|
+
difficulty: 'easy',
|
|
373
|
+
reasons: ['Simple and fun', 'Good API basics'],
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
title: 'URL Shortener',
|
|
377
|
+
description: 'Create short links with click tracking and analytics',
|
|
378
|
+
projectType: 'api',
|
|
379
|
+
difficulty: 'easy',
|
|
380
|
+
reasons: ['Classic project', 'Real-world useful'],
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
title: 'Currency Converter API',
|
|
384
|
+
description: 'Convert between currencies with historical rates',
|
|
385
|
+
projectType: 'api',
|
|
386
|
+
difficulty: 'easy',
|
|
387
|
+
reasons: ['Practical utility', 'Good for caching'],
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
title: 'Weather Aggregator API',
|
|
391
|
+
description: 'Aggregate weather data from multiple sources',
|
|
392
|
+
projectType: 'api',
|
|
393
|
+
difficulty: 'moderate',
|
|
394
|
+
reasons: ['Learn API integration', 'Data normalization'],
|
|
395
|
+
},
|
|
396
|
+
// Creative & Fun
|
|
397
|
+
{
|
|
398
|
+
title: 'Random Color Palette Generator',
|
|
399
|
+
description: 'Generate harmonious color palettes for design projects',
|
|
400
|
+
projectType: 'web',
|
|
401
|
+
difficulty: 'easy',
|
|
402
|
+
reasons: ['Fun to build', 'Visual feedback'],
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
title: 'ASCII Art Generator',
|
|
406
|
+
description: 'Convert images to ASCII art with customizable characters',
|
|
407
|
+
projectType: 'cli',
|
|
408
|
+
difficulty: 'moderate',
|
|
409
|
+
reasons: ['Fun project', 'Image processing basics'],
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
title: 'Playlist Shuffler',
|
|
413
|
+
description: 'Create smart shuffled playlists based on mood or genre',
|
|
414
|
+
projectType: 'web',
|
|
415
|
+
difficulty: 'moderate',
|
|
416
|
+
reasons: ['Music is fun', 'Algorithm practice'],
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
title: 'Daily Journal',
|
|
420
|
+
description: 'Private daily journaling app with mood tracking and search',
|
|
421
|
+
projectType: 'web',
|
|
422
|
+
difficulty: 'easy',
|
|
423
|
+
reasons: ['Personal tool', 'Privacy focused'],
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
title: 'Meme Generator',
|
|
427
|
+
description: 'Create memes with templates and custom text',
|
|
428
|
+
projectType: 'web',
|
|
429
|
+
difficulty: 'easy',
|
|
430
|
+
reasons: ['Fun project', 'Image manipulation'],
|
|
431
|
+
},
|
|
432
|
+
// Automation
|
|
433
|
+
{
|
|
434
|
+
title: 'File Organizer',
|
|
435
|
+
description: 'Automatically organize files by type, date, or custom rules',
|
|
436
|
+
projectType: 'automation',
|
|
437
|
+
difficulty: 'moderate',
|
|
438
|
+
reasons: ['Practical utility', 'File system practice'],
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
title: 'Screenshot Organizer',
|
|
442
|
+
description: 'Watch folder and organize screenshots by date and content',
|
|
443
|
+
projectType: 'automation',
|
|
444
|
+
difficulty: 'easy',
|
|
445
|
+
reasons: ['Solves real problem', 'File watching'],
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
title: 'Email Digest Generator',
|
|
449
|
+
description: 'Summarize and categorize emails into daily digests',
|
|
450
|
+
projectType: 'automation',
|
|
451
|
+
difficulty: 'challenging',
|
|
452
|
+
reasons: ['Time saver', 'API integration'],
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
title: 'Social Media Scheduler',
|
|
456
|
+
description: 'Schedule and auto-post content across platforms',
|
|
457
|
+
projectType: 'automation',
|
|
458
|
+
difficulty: 'challenging',
|
|
459
|
+
reasons: ['Marketing utility', 'OAuth practice'],
|
|
460
|
+
},
|
|
461
|
+
// AI/Trending
|
|
462
|
+
{
|
|
463
|
+
title: 'AI Prompt Library',
|
|
464
|
+
description: 'Store, organize, and version prompts for LLM applications',
|
|
465
|
+
projectType: 'web',
|
|
466
|
+
difficulty: 'moderate',
|
|
467
|
+
reasons: ['AI tooling', 'Version control'],
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
title: 'Local-First Notes',
|
|
471
|
+
description: 'Offline-first note app with optional cloud sync',
|
|
472
|
+
projectType: 'web',
|
|
473
|
+
difficulty: 'moderate',
|
|
474
|
+
reasons: ['Privacy focused', 'Modern patterns'],
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
title: 'Voice Memo Transcriber',
|
|
478
|
+
description: 'Record voice memos and auto-transcribe with AI',
|
|
479
|
+
projectType: 'web',
|
|
480
|
+
difficulty: 'moderate',
|
|
481
|
+
reasons: ['AI integration', 'Audio processing'],
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
title: 'Smart Bookmark Tagger',
|
|
485
|
+
description: 'Auto-tag and categorize bookmarks using AI',
|
|
486
|
+
projectType: 'automation',
|
|
487
|
+
difficulty: 'moderate',
|
|
488
|
+
reasons: ['AI utility', 'Browser extension'],
|
|
489
|
+
},
|
|
490
|
+
];
|
|
491
|
+
// Get method-specific ideas or use all
|
|
492
|
+
const methodSpecific = {
|
|
493
|
+
brainstorm: [], // Use all
|
|
494
|
+
trending: ['AI', 'Local-First', 'Smart', 'Voice'],
|
|
495
|
+
skills: ['CLI', 'API', 'Generator', 'Manager'],
|
|
496
|
+
problem: ['Organizer', 'Tracker', 'Manager', 'Scheduler'],
|
|
497
|
+
};
|
|
498
|
+
let pool = allIdeas;
|
|
499
|
+
const keywords = methodSpecific[method];
|
|
500
|
+
if (keywords && keywords.length > 0) {
|
|
501
|
+
// Filter to method-relevant ideas
|
|
502
|
+
const filtered = allIdeas.filter((idea) => keywords.some((kw) => idea.title.includes(kw) || idea.description.includes(kw)));
|
|
503
|
+
// If we have enough filtered, use them; otherwise use all
|
|
504
|
+
if (filtered.length >= 5) {
|
|
505
|
+
pool = filtered;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
// Shuffle and return 5 random ideas
|
|
509
|
+
return shuffleArray(pool).slice(0, 5);
|
|
510
|
+
}
|
|
511
|
+
//# sourceMappingURL=ideas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ideas.js","sourceRoot":"","sources":["../../src/wizard/ideas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { runIdeaMode } from './ideas.js';
|
|
2
|
+
import { isLlmAvailable } from './llm.js';
|
|
3
|
+
/**
|
|
4
|
+
* Run the interactive wizard
|
|
5
|
+
*/
|
|
6
|
+
export declare function runWizard(): Promise<void>;
|
|
7
|
+
export { isLlmAvailable };
|
|
8
|
+
export { runIdeaMode };
|
|
9
|
+
export * from './ascii-art.js';
|
|
10
|
+
export { showError, showSuccess, showWorking } from './ui.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAc,MAAM,UAAU,CAAC;AAqEtD;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB/C;AAocD,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
|