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,243 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { getRandomPort, openBrowser } from '../auth/browser.js';
|
|
5
|
+
import { getCallbackUrl, startOAuthServer } from '../auth/oauth-server.js';
|
|
6
|
+
import { generatePKCE } from '../auth/pkce.js';
|
|
7
|
+
import { getProvider, getProviderNames } from '../auth/providers/index.js';
|
|
8
|
+
import { deleteSourceCredential, getSourceCredentials, getSourcesConfigPath, setSourceCredential, } from '../sources/config.js';
|
|
9
|
+
/**
|
|
10
|
+
* Auth command - Browser-based OAuth authentication for integrations
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ralph-starter auth <service> Start OAuth flow for a service
|
|
14
|
+
* ralph-starter auth --list Show auth status for all services
|
|
15
|
+
* ralph-starter auth --logout <service> Remove credentials for a service
|
|
16
|
+
*/
|
|
17
|
+
export async function authCommand(service, options) {
|
|
18
|
+
// Handle --list
|
|
19
|
+
if (options.list) {
|
|
20
|
+
await showAuthStatus();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// Handle --logout
|
|
24
|
+
if (options.logout) {
|
|
25
|
+
await logoutService(options.logout);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// No service specified - show help
|
|
29
|
+
if (!service) {
|
|
30
|
+
showAuthHelp();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Start OAuth flow for the service
|
|
34
|
+
await startOAuthFlow(service);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Show authentication status for all services
|
|
38
|
+
*/
|
|
39
|
+
async function showAuthStatus() {
|
|
40
|
+
console.log(chalk.bold('\nAuthentication Status'));
|
|
41
|
+
console.log(chalk.dim(`Credentials stored in: ${getSourcesConfigPath()}\n`));
|
|
42
|
+
const providers = getProviderNames();
|
|
43
|
+
for (const name of providers) {
|
|
44
|
+
const provider = getProvider(name);
|
|
45
|
+
if (!provider)
|
|
46
|
+
continue;
|
|
47
|
+
const credentials = getSourceCredentials(name);
|
|
48
|
+
const hasToken = credentials?.token || credentials?.apiKey;
|
|
49
|
+
const isConfigured = checkProviderConfigured(provider);
|
|
50
|
+
const authMethod = provider.supportsPKCE ? 'Browser OAuth (PKCE)' : 'Manual API key';
|
|
51
|
+
if (hasToken) {
|
|
52
|
+
console.log(` ${chalk.green('✓')} ${chalk.bold(provider.displayName)} - Authenticated`);
|
|
53
|
+
}
|
|
54
|
+
else if (isConfigured && provider.supportsPKCE) {
|
|
55
|
+
// PKCE provider with client_id configured - ready for browser auth
|
|
56
|
+
console.log(` ${chalk.yellow('○')} ${chalk.bold(provider.displayName)} - ${authMethod}`);
|
|
57
|
+
console.log(chalk.dim(` Run: ralph-starter auth ${name}`));
|
|
58
|
+
}
|
|
59
|
+
else if (provider.supportsPKCE && !isConfigured) {
|
|
60
|
+
// PKCE provider but no client_id - needs env var
|
|
61
|
+
console.log(` ${chalk.dim('○')} ${chalk.bold(provider.displayName)} - ${authMethod} (not configured)`);
|
|
62
|
+
console.log(chalk.dim(` Set RALPH_${name.toUpperCase()}_CLIENT_ID env var`));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// Non-PKCE provider - manual API key only
|
|
66
|
+
console.log(` ${chalk.dim('○')} ${chalk.bold(provider.displayName)} - ${authMethod}`);
|
|
67
|
+
console.log(chalk.dim(` Run: ralph-starter config set ${name}.apiKey <your-key>`));
|
|
68
|
+
console.log(chalk.dim(` Get key: ${getApiKeyUrl(name)}`));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
console.log();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Logout from a service (remove credentials)
|
|
75
|
+
*/
|
|
76
|
+
async function logoutService(service) {
|
|
77
|
+
const provider = getProvider(service);
|
|
78
|
+
if (!provider) {
|
|
79
|
+
console.error(chalk.red(`Unknown service: ${service}`));
|
|
80
|
+
console.error(chalk.dim(`\nAvailable services: ${getProviderNames().join(', ')}`));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
// Delete token and apiKey
|
|
84
|
+
const deletedToken = deleteSourceCredential(service, 'token');
|
|
85
|
+
const deletedApiKey = deleteSourceCredential(service, 'apiKey');
|
|
86
|
+
if (deletedToken || deletedApiKey) {
|
|
87
|
+
console.log(chalk.green(`✓ Logged out from ${provider.displayName}`));
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
console.log(chalk.yellow(`No credentials found for ${provider.displayName}`));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Start the OAuth flow for a service
|
|
95
|
+
*/
|
|
96
|
+
async function startOAuthFlow(service) {
|
|
97
|
+
const provider = getProvider(service);
|
|
98
|
+
if (!provider) {
|
|
99
|
+
console.error(chalk.red(`Unknown service: ${service}`));
|
|
100
|
+
console.error(chalk.dim(`\nAvailable services: ${getProviderNames().join(', ')}`));
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
// Check if this provider supports browser OAuth
|
|
104
|
+
if (!provider.supportsPKCE) {
|
|
105
|
+
console.log(chalk.yellow(`\n${provider.displayName} doesn't support browser OAuth.`));
|
|
106
|
+
console.log(chalk.dim('\nUse manual API key configuration instead:'));
|
|
107
|
+
console.log(chalk.cyan(` ralph-starter config set ${service}.apiKey <your-api-key>`));
|
|
108
|
+
console.log(chalk.dim(`\nGet your API key from: ${getApiKeyUrl(service)}`));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
// Check if OAuth is configured for this provider
|
|
112
|
+
if (!checkProviderConfigured(provider)) {
|
|
113
|
+
console.error(chalk.red(`OAuth not configured for ${provider.displayName}`));
|
|
114
|
+
console.error(chalk.dim('\nTo enable browser OAuth, set this environment variable:'));
|
|
115
|
+
console.error(chalk.cyan(` RALPH_${service.toUpperCase()}_CLIENT_ID=<your-client-id>`));
|
|
116
|
+
console.error(chalk.dim('\nOr use manual API key configuration:'));
|
|
117
|
+
console.error(chalk.cyan(` ralph-starter config set ${service}.apiKey <your-api-key>`));
|
|
118
|
+
console.error(chalk.dim(`\nGet API keys from: ${getApiKeyUrl(service)}`));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
console.log();
|
|
122
|
+
console.log(chalk.bold(`Authenticating with ${provider.displayName}...`));
|
|
123
|
+
// Get a random port for the callback server
|
|
124
|
+
const port = getRandomPort();
|
|
125
|
+
const redirectUri = getCallbackUrl(port);
|
|
126
|
+
// Generate state for CSRF protection
|
|
127
|
+
const state = crypto.randomBytes(16).toString('hex');
|
|
128
|
+
// Generate PKCE challenge
|
|
129
|
+
const pkce = generatePKCE();
|
|
130
|
+
// Build authorization URL with PKCE
|
|
131
|
+
const authUrl = provider.buildAuthUrl(redirectUri, state, pkce.challenge);
|
|
132
|
+
console.log(chalk.dim(`Opening browser for authorization...`));
|
|
133
|
+
console.log(chalk.dim(`Using PKCE for secure authentication`));
|
|
134
|
+
console.log();
|
|
135
|
+
// Start the callback server
|
|
136
|
+
const serverPromise = startOAuthServer({
|
|
137
|
+
port,
|
|
138
|
+
timeoutMs: 5 * 60 * 1000, // 5 minutes
|
|
139
|
+
});
|
|
140
|
+
// Open browser to authorization URL
|
|
141
|
+
try {
|
|
142
|
+
await openBrowser(authUrl);
|
|
143
|
+
}
|
|
144
|
+
catch (_error) {
|
|
145
|
+
console.log(chalk.yellow('Could not open browser automatically.'));
|
|
146
|
+
console.log(chalk.dim('Please open this URL manually:'));
|
|
147
|
+
console.log();
|
|
148
|
+
console.log(chalk.cyan(authUrl));
|
|
149
|
+
console.log();
|
|
150
|
+
}
|
|
151
|
+
// Wait for callback
|
|
152
|
+
const spinner = ora('Waiting for authorization...').start();
|
|
153
|
+
try {
|
|
154
|
+
const result = await serverPromise;
|
|
155
|
+
// Verify state
|
|
156
|
+
if (result.state !== state) {
|
|
157
|
+
spinner.fail('State mismatch - possible CSRF attack');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
spinner.text = 'Exchanging code for token...';
|
|
161
|
+
// Exchange code for token with PKCE verifier
|
|
162
|
+
const tokens = await provider.exchangeCode(result.code, redirectUri, pkce.verifier);
|
|
163
|
+
// Save the token
|
|
164
|
+
setSourceCredential(service, 'token', tokens.accessToken);
|
|
165
|
+
if (tokens.refreshToken) {
|
|
166
|
+
setSourceCredential(service, 'refreshToken', tokens.refreshToken);
|
|
167
|
+
}
|
|
168
|
+
spinner.succeed(chalk.green(`Successfully authenticated with ${provider.displayName}!`));
|
|
169
|
+
console.log();
|
|
170
|
+
console.log(chalk.dim('You can now use this integration:'));
|
|
171
|
+
console.log(chalk.cyan(` ralph-starter run --from ${service} --project <id>`));
|
|
172
|
+
console.log();
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
spinner.fail(chalk.red('Authentication failed'));
|
|
176
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
177
|
+
console.error(chalk.dim(errorMessage));
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Check if a provider has OAuth configured
|
|
183
|
+
*/
|
|
184
|
+
function checkProviderConfigured(provider) {
|
|
185
|
+
const p = provider;
|
|
186
|
+
return p.isConfigured?.() ?? !!(provider.clientId && provider.clientSecret);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get the URL where users can get API keys for a service
|
|
190
|
+
*/
|
|
191
|
+
function getApiKeyUrl(service) {
|
|
192
|
+
const urls = {
|
|
193
|
+
notion: 'https://www.notion.so/my-integrations',
|
|
194
|
+
linear: 'https://linear.app/settings/api',
|
|
195
|
+
todoist: 'https://todoist.com/prefs/integrations',
|
|
196
|
+
github: 'https://github.com/settings/tokens',
|
|
197
|
+
};
|
|
198
|
+
return urls[service] || "the service's developer settings";
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Show auth command help
|
|
202
|
+
*/
|
|
203
|
+
function showAuthHelp() {
|
|
204
|
+
console.log(`
|
|
205
|
+
${chalk.bold('ralph-starter auth')} - Authentication for integrations
|
|
206
|
+
|
|
207
|
+
${chalk.bold('Usage:')}
|
|
208
|
+
ralph-starter auth <service> Start OAuth flow (for supported services)
|
|
209
|
+
ralph-starter auth --list Show authentication status
|
|
210
|
+
ralph-starter auth --logout <service> Remove credentials for a service
|
|
211
|
+
|
|
212
|
+
${chalk.bold('Services:')}
|
|
213
|
+
${chalk.green('linear')} - Browser OAuth (PKCE) - just run: ralph-starter auth linear
|
|
214
|
+
${chalk.yellow('notion')} - Manual API key required
|
|
215
|
+
${chalk.yellow('todoist')} - Manual API key required
|
|
216
|
+
|
|
217
|
+
${chalk.bold('Examples:')}
|
|
218
|
+
${chalk.dim('# Linear - browser OAuth (seamless!)')}
|
|
219
|
+
ralph-starter auth linear
|
|
220
|
+
|
|
221
|
+
${chalk.dim('# Notion/Todoist - manual API key')}
|
|
222
|
+
ralph-starter config set notion.apiKey <your-key>
|
|
223
|
+
ralph-starter config set todoist.apiKey <your-key>
|
|
224
|
+
|
|
225
|
+
${chalk.dim('# Check status')}
|
|
226
|
+
ralph-starter auth --list
|
|
227
|
+
|
|
228
|
+
${chalk.bold('Browser OAuth Setup (Linear):')}
|
|
229
|
+
Linear supports PKCE, so you just need a client ID:
|
|
230
|
+
RALPH_LINEAR_CLIENT_ID=<client-id>
|
|
231
|
+
|
|
232
|
+
Get it from: https://linear.app/settings/api/applications
|
|
233
|
+
|
|
234
|
+
${chalk.bold('Manual API Keys (Notion, Todoist):')}
|
|
235
|
+
These services require manual API key configuration:
|
|
236
|
+
|
|
237
|
+
${chalk.dim('Notion:')} https://www.notion.so/my-integrations
|
|
238
|
+
${chalk.dim('Todoist:')} https://todoist.com/prefs/integrations
|
|
239
|
+
|
|
240
|
+
Then run: ralph-starter config set <service>.apiKey <key>
|
|
241
|
+
`);
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check command for ralph-starter
|
|
3
|
+
* Verifies configuration and tests LLM connection
|
|
4
|
+
*/
|
|
5
|
+
export interface CheckCommandOptions {
|
|
6
|
+
verbose?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Run the check command
|
|
10
|
+
*/
|
|
11
|
+
export declare function checkCommand(options: CheckCommandOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAYD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+G9E"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check command for ralph-starter
|
|
3
|
+
* Verifies configuration and tests LLM connection
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { getConfiguredLLM, readConfig } from '../config/manager.js';
|
|
8
|
+
import { PROVIDERS } from '../llm/index.js';
|
|
9
|
+
import { isClaudeCodeAvailable, testClaudeCodeConnection } from '../setup/agent-detector.js';
|
|
10
|
+
import { testApiConnection } from '../setup/llm-tester.js';
|
|
11
|
+
/**
|
|
12
|
+
* Mask an API key for display
|
|
13
|
+
*/
|
|
14
|
+
function maskKey(key) {
|
|
15
|
+
if (key.length <= 8) {
|
|
16
|
+
return '*'.repeat(key.length);
|
|
17
|
+
}
|
|
18
|
+
return key.slice(0, 4) + '*'.repeat(key.length - 8) + key.slice(-4);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Run the check command
|
|
22
|
+
*/
|
|
23
|
+
export async function checkCommand(options) {
|
|
24
|
+
console.log();
|
|
25
|
+
console.log(chalk.bold('Checking ralph-starter configuration...'));
|
|
26
|
+
console.log();
|
|
27
|
+
const _config = readConfig();
|
|
28
|
+
let hasLLM = false;
|
|
29
|
+
let usesClaudeCode = false;
|
|
30
|
+
// Step 1: Check for Claude Code CLI (highest priority)
|
|
31
|
+
console.log(chalk.dim(' Detecting LLM...'));
|
|
32
|
+
const claudeCheck = await isClaudeCodeAvailable();
|
|
33
|
+
if (claudeCheck.available) {
|
|
34
|
+
const version = claudeCheck.version ? `v${claudeCheck.version}` : '';
|
|
35
|
+
console.log(chalk.green(` ✓ Claude Code CLI found ${version}`));
|
|
36
|
+
if (options.verbose && claudeCheck.executablePath) {
|
|
37
|
+
console.log(chalk.dim(` Path: ${claudeCheck.executablePath}`));
|
|
38
|
+
}
|
|
39
|
+
hasLLM = true;
|
|
40
|
+
usesClaudeCode = true;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log(chalk.dim(' ✗ Claude Code CLI not found'));
|
|
44
|
+
}
|
|
45
|
+
// Step 2: Check for API key configuration
|
|
46
|
+
const llmConfig = getConfiguredLLM();
|
|
47
|
+
if (llmConfig) {
|
|
48
|
+
const providerName = PROVIDERS[llmConfig.provider].displayName;
|
|
49
|
+
// Determine source of key
|
|
50
|
+
const envVar = PROVIDERS[llmConfig.provider].envVar;
|
|
51
|
+
const fromEnv = process.env[envVar] === llmConfig.apiKey;
|
|
52
|
+
const source = fromEnv ? 'environment' : 'config file';
|
|
53
|
+
console.log(chalk.green(` ✓ API Key configured (${providerName})`));
|
|
54
|
+
console.log(chalk.dim(` Key: ${maskKey(llmConfig.apiKey)} (from ${source})`));
|
|
55
|
+
hasLLM = true;
|
|
56
|
+
}
|
|
57
|
+
else if (!usesClaudeCode) {
|
|
58
|
+
console.log(chalk.yellow(' ✗ No API key configured'));
|
|
59
|
+
}
|
|
60
|
+
// Step 3: Test connection
|
|
61
|
+
if (!hasLLM) {
|
|
62
|
+
console.log();
|
|
63
|
+
console.log(chalk.red(' No LLM available!'));
|
|
64
|
+
console.log();
|
|
65
|
+
console.log(chalk.bold(' To get started, either:'));
|
|
66
|
+
console.log(chalk.dim(' 1. Install Claude Code: https://claude.ai/code'));
|
|
67
|
+
console.log(chalk.dim(' 2. Run setup wizard: ralph-starter setup'));
|
|
68
|
+
console.log(chalk.dim(' 3. Set API key: export ANTHROPIC_API_KEY=your-key'));
|
|
69
|
+
console.log();
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
console.log();
|
|
73
|
+
const spinner = ora('Testing connection...').start();
|
|
74
|
+
let testResult;
|
|
75
|
+
if (usesClaudeCode) {
|
|
76
|
+
// Test Claude Code connection
|
|
77
|
+
const result = await testClaudeCodeConnection();
|
|
78
|
+
testResult = {
|
|
79
|
+
success: result.success,
|
|
80
|
+
responseTime: result.responseTime,
|
|
81
|
+
error: result.error,
|
|
82
|
+
provider: 'Claude Code CLI',
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
else if (llmConfig) {
|
|
86
|
+
// Test API connection
|
|
87
|
+
const result = await testApiConnection(llmConfig.provider, llmConfig.apiKey);
|
|
88
|
+
testResult = {
|
|
89
|
+
success: result.success,
|
|
90
|
+
responseTime: result.responseTime,
|
|
91
|
+
error: result.error,
|
|
92
|
+
provider: PROVIDERS[llmConfig.provider].displayName,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (testResult?.success) {
|
|
96
|
+
const time = testResult.responseTime ? ` (${testResult.responseTime}ms)` : '';
|
|
97
|
+
spinner.succeed(`Response received${time}`);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
spinner.fail(`Connection failed: ${testResult?.error || 'Unknown error'}`);
|
|
101
|
+
console.log();
|
|
102
|
+
console.log(chalk.yellow(' The connection test failed. This could mean:'));
|
|
103
|
+
console.log(chalk.dim(' • API key is invalid or expired'));
|
|
104
|
+
console.log(chalk.dim(' • Network connectivity issues'));
|
|
105
|
+
console.log(chalk.dim(' • Claude Code is not authenticated'));
|
|
106
|
+
console.log();
|
|
107
|
+
console.log(chalk.dim(' Try running: ralph-starter setup'));
|
|
108
|
+
console.log();
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
// Summary
|
|
112
|
+
console.log();
|
|
113
|
+
console.log(`${chalk.green.bold(' All checks passed!')} You're ready to go.`);
|
|
114
|
+
console.log();
|
|
115
|
+
const usingProvider = usesClaudeCode
|
|
116
|
+
? 'Claude Code CLI (no API key needed)'
|
|
117
|
+
: llmConfig?.provider
|
|
118
|
+
? `${PROVIDERS[llmConfig.provider].displayName} API`
|
|
119
|
+
: 'Unknown provider';
|
|
120
|
+
console.log(chalk.dim(` Using: ${usingProvider}`));
|
|
121
|
+
console.log(chalk.dim(" Run 'ralph-starter' to launch the wizard."));
|
|
122
|
+
console.log();
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;GAEG;AACH,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,uDAAuD;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE7C,MAAM,WAAW,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAElD,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,GAAG,IAAI,CAAC;QACd,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,0CAA0C;IAC1C,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IAErC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;QAE/D,0BAA0B;QAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;QAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,YAAY,GAAG,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,MAAM,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;SAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAErD,IAAI,UAAU,CAAC;IACf,IAAI,cAAc,EAAE,CAAC;QACnB,8BAA8B;QAC9B,MAAM,MAAM,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAChD,UAAU,GAAG;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,iBAA0B;SACrC,CAAC;IACJ,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,sBAAsB;QACtB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7E,UAAU,GAAG;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW;SACpD,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,EAAE,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,OAAO,CAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,sBAAsB,UAAU,EAAE,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,aAAa,GAAG,cAAc;QAClC,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,SAAS,EAAE,QAAQ;YACnB,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW,MAAM;YACpD,CAAC,CAAC,kBAAkB,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,aAAa,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type ConfigCommandOptions = {};
|
|
2
|
+
/**
|
|
3
|
+
* Config command - manage source credentials and settings
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* ralph-starter config list - List all configured sources
|
|
7
|
+
* ralph-starter config get <source> - Show config for a source
|
|
8
|
+
* ralph-starter config set <source>.<key> <value> - Set a config value
|
|
9
|
+
* ralph-starter config delete <source>.<key> - Delete a config value
|
|
10
|
+
* ralph-starter config delete <source> - Delete all config for a source
|
|
11
|
+
*/
|
|
12
|
+
export declare function configCommand(action: string, args: string[], _options?: ConfigCommandOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEtC;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAmEf"}
|