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,46 @@
|
|
|
1
|
+
import { BaseOAuthProvider } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Linear OAuth Provider with PKCE Support
|
|
4
|
+
*
|
|
5
|
+
* Linear supports PKCE (Proof Key for Code Exchange) which allows
|
|
6
|
+
* public clients (like CLI apps) to authenticate without a client secret.
|
|
7
|
+
*
|
|
8
|
+
* Linear's OAuth flow:
|
|
9
|
+
* https://developers.linear.app/docs/oauth/authentication
|
|
10
|
+
*
|
|
11
|
+
* To configure ralph-starter's Linear OAuth app:
|
|
12
|
+
* 1. Go to https://linear.app/settings/api/applications
|
|
13
|
+
* 2. Create a new OAuth application
|
|
14
|
+
* 3. Set redirect URI to http://127.0.0.1:52847/callback
|
|
15
|
+
* 4. Copy the Client ID and set RALPH_LINEAR_CLIENT_ID env var
|
|
16
|
+
*/
|
|
17
|
+
export class LinearOAuthProvider extends BaseOAuthProvider {
|
|
18
|
+
name = 'linear';
|
|
19
|
+
displayName = 'Linear';
|
|
20
|
+
authorizationUrl = 'https://linear.app/oauth/authorize';
|
|
21
|
+
tokenUrl = 'https://api.linear.app/oauth/token';
|
|
22
|
+
// Linear supports PKCE - no client secret needed!
|
|
23
|
+
supportsPKCE = true;
|
|
24
|
+
// Linear scopes
|
|
25
|
+
scopes = [
|
|
26
|
+
'read', // Read access to all resources
|
|
27
|
+
];
|
|
28
|
+
// Client ID - can be set via env var or use placeholder
|
|
29
|
+
// TODO: Replace with ralph-starter's registered app client ID after registration
|
|
30
|
+
clientId = process.env.RALPH_LINEAR_CLIENT_ID || '';
|
|
31
|
+
// Client secret is optional with PKCE
|
|
32
|
+
clientSecret = process.env.RALPH_LINEAR_CLIENT_SECRET;
|
|
33
|
+
authParams = {
|
|
34
|
+
prompt: 'consent', // Always show consent screen
|
|
35
|
+
actor: 'user', // Act as the authorizing user
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Check if Linear OAuth is configured
|
|
39
|
+
* With PKCE, we only need the client_id (no secret required)
|
|
40
|
+
*/
|
|
41
|
+
isConfigured() {
|
|
42
|
+
return !!this.clientId;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export const linearProvider = new LinearOAuthProvider();
|
|
46
|
+
//# sourceMappingURL=linear.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../src/auth/providers/linear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IACxD,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,QAAQ,CAAC;IACvB,gBAAgB,GAAG,oCAAoC,CAAC;IACxD,QAAQ,GAAG,oCAAoC,CAAC;IAEhD,kDAAkD;IAClD,YAAY,GAAG,IAAI,CAAC;IAEpB,gBAAgB;IAChB,MAAM,GAAG;QACP,MAAM,EAAE,+BAA+B;KACxC,CAAC;IAEF,wDAAwD;IACxD,iFAAiF;IACjF,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAEpD,sCAAsC;IACtC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAEtD,UAAU,GAAG;QACX,MAAM,EAAE,SAAS,EAAE,6BAA6B;QAChD,KAAK,EAAE,MAAM,EAAE,8BAA8B;KAC9C,CAAC;IAEF;;;OAGG;IACH,YAAY;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { BaseOAuthProvider, type OAuthTokens } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Notion OAuth Provider
|
|
4
|
+
*
|
|
5
|
+
* Notion's OAuth flow requires a client secret (no PKCE support).
|
|
6
|
+
* For CLI apps, we recommend using manual API key configuration instead.
|
|
7
|
+
*
|
|
8
|
+
* https://developers.notion.com/docs/authorization
|
|
9
|
+
*
|
|
10
|
+
* Manual setup:
|
|
11
|
+
* 1. Go to https://www.notion.so/my-integrations
|
|
12
|
+
* 2. Create a new integration
|
|
13
|
+
* 3. Copy the Internal Integration Secret
|
|
14
|
+
* 4. Run: ralph-starter config set notion.apiKey <secret>
|
|
15
|
+
*/
|
|
16
|
+
export declare class NotionOAuthProvider extends BaseOAuthProvider {
|
|
17
|
+
name: string;
|
|
18
|
+
displayName: string;
|
|
19
|
+
authorizationUrl: string;
|
|
20
|
+
tokenUrl: string;
|
|
21
|
+
supportsPKCE: boolean;
|
|
22
|
+
scopes: string[];
|
|
23
|
+
clientId: string;
|
|
24
|
+
clientSecret: string | undefined;
|
|
25
|
+
authParams: {
|
|
26
|
+
owner: string;
|
|
27
|
+
};
|
|
28
|
+
constructor();
|
|
29
|
+
/**
|
|
30
|
+
* Notion uses Basic auth for token exchange
|
|
31
|
+
*/
|
|
32
|
+
exchangeCode(code: string, redirectUri: string): Promise<OAuthTokens>;
|
|
33
|
+
isConfigured(): boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare const notionProvider: NotionOAuthProvider;
|
|
36
|
+
//# sourceMappingURL=notion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/notion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,IAAI,SAAY;IAChB,WAAW,SAAY;IACvB,gBAAgB,SAA+C;IAC/D,QAAQ,SAA2C;IAGnD,YAAY,UAAS;IAGrB,MAAM,EAAE,MAAM,EAAE,CAAM;IAItB,QAAQ,SAA4C;IACpD,YAAY,qBAA0C;IAEtD,UAAU;;MAER;;IAQF;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsC3E,YAAY,IAAI,OAAO;CAGxB;AAED,eAAO,MAAM,cAAc,qBAA4B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { BaseOAuthProvider } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Notion OAuth Provider
|
|
4
|
+
*
|
|
5
|
+
* Notion's OAuth flow requires a client secret (no PKCE support).
|
|
6
|
+
* For CLI apps, we recommend using manual API key configuration instead.
|
|
7
|
+
*
|
|
8
|
+
* https://developers.notion.com/docs/authorization
|
|
9
|
+
*
|
|
10
|
+
* Manual setup:
|
|
11
|
+
* 1. Go to https://www.notion.so/my-integrations
|
|
12
|
+
* 2. Create a new integration
|
|
13
|
+
* 3. Copy the Internal Integration Secret
|
|
14
|
+
* 4. Run: ralph-starter config set notion.apiKey <secret>
|
|
15
|
+
*/
|
|
16
|
+
export class NotionOAuthProvider extends BaseOAuthProvider {
|
|
17
|
+
name = 'notion';
|
|
18
|
+
displayName = 'Notion';
|
|
19
|
+
authorizationUrl = 'https://api.notion.com/v1/oauth/authorize';
|
|
20
|
+
tokenUrl = 'https://api.notion.com/v1/oauth/token';
|
|
21
|
+
// Notion doesn't support PKCE - requires client secret
|
|
22
|
+
supportsPKCE = false;
|
|
23
|
+
// Notion doesn't use traditional scopes, but the owner field determines access
|
|
24
|
+
scopes = [];
|
|
25
|
+
// Placeholder - users need to configure their own Notion integration
|
|
26
|
+
// or use ralph-starter's registered app
|
|
27
|
+
clientId = process.env.RALPH_NOTION_CLIENT_ID || '';
|
|
28
|
+
clientSecret = process.env.RALPH_NOTION_CLIENT_SECRET;
|
|
29
|
+
authParams = {
|
|
30
|
+
owner: 'user', // Request access to user's workspaces
|
|
31
|
+
};
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
// Override clientSecret from env
|
|
35
|
+
this.clientSecret = process.env.RALPH_NOTION_CLIENT_SECRET;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Notion uses Basic auth for token exchange
|
|
39
|
+
*/
|
|
40
|
+
async exchangeCode(code, redirectUri) {
|
|
41
|
+
if (!this.clientId || !this.clientSecret) {
|
|
42
|
+
throw new Error('Notion OAuth not configured. Set RALPH_NOTION_CLIENT_ID and RALPH_NOTION_CLIENT_SECRET environment variables.');
|
|
43
|
+
}
|
|
44
|
+
// Notion requires Basic auth with client_id:client_secret
|
|
45
|
+
const basicAuth = Buffer.from(`${this.clientId}:${this.clientSecret}`).toString('base64');
|
|
46
|
+
const response = await fetch(this.tokenUrl, {
|
|
47
|
+
method: 'POST',
|
|
48
|
+
headers: {
|
|
49
|
+
'Content-Type': 'application/json',
|
|
50
|
+
Authorization: `Basic ${basicAuth}`,
|
|
51
|
+
'Notion-Version': '2022-06-28',
|
|
52
|
+
},
|
|
53
|
+
body: JSON.stringify({
|
|
54
|
+
grant_type: 'authorization_code',
|
|
55
|
+
code,
|
|
56
|
+
redirect_uri: redirectUri,
|
|
57
|
+
}),
|
|
58
|
+
});
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
const error = await response.text();
|
|
61
|
+
throw new Error(`Failed to exchange Notion code: ${error}`);
|
|
62
|
+
}
|
|
63
|
+
const data = (await response.json());
|
|
64
|
+
return {
|
|
65
|
+
accessToken: data.access_token,
|
|
66
|
+
tokenType: 'Bearer',
|
|
67
|
+
// Notion tokens don't expire
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
isConfigured() {
|
|
71
|
+
return !!this.clientId && !!this.clientSecret;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export const notionProvider = new NotionOAuthProvider();
|
|
75
|
+
//# sourceMappingURL=notion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion.js","sourceRoot":"","sources":["../../../src/auth/providers/notion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,WAAW,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,mBAAoB,SAAQ,iBAAiB;IACxD,IAAI,GAAG,QAAQ,CAAC;IAChB,WAAW,GAAG,QAAQ,CAAC;IACvB,gBAAgB,GAAG,2CAA2C,CAAC;IAC/D,QAAQ,GAAG,uCAAuC,CAAC;IAEnD,uDAAuD;IACvD,YAAY,GAAG,KAAK,CAAC;IAErB,+EAA+E;IAC/E,MAAM,GAAa,EAAE,CAAC;IAEtB,qEAAqE;IACrE,wCAAwC;IACxC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC;IACpD,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAEtD,UAAU,GAAG;QACX,KAAK,EAAE,MAAM,EAAE,sCAAsC;KACtD,CAAC;IAEF;QACE,KAAK,EAAE,CAAC;QACR,iCAAiC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,WAAmB;QAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAC;QACJ,CAAC;QAED,0DAA0D;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE1F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,SAAS,SAAS,EAAE;gBACnC,gBAAgB,EAAE,YAAY;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,oBAAoB;gBAChC,IAAI;gBACJ,YAAY,EAAE,WAAW;aAC1B,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;QAEhE,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,YAAsB;YACxC,SAAS,EAAE,QAAQ;YACnB,6BAA6B;SAC9B,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAChD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseOAuthProvider } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Todoist OAuth Provider
|
|
4
|
+
*
|
|
5
|
+
* Todoist's OAuth flow requires a client secret (no PKCE support).
|
|
6
|
+
* For CLI apps, we recommend using manual API key configuration instead.
|
|
7
|
+
*
|
|
8
|
+
* https://developer.todoist.com/guides/#oauth
|
|
9
|
+
*
|
|
10
|
+
* Manual setup:
|
|
11
|
+
* 1. Go to https://todoist.com/prefs/integrations
|
|
12
|
+
* 2. Scroll to "API token" section
|
|
13
|
+
* 3. Copy your API token
|
|
14
|
+
* 4. Run: ralph-starter config set todoist.apiKey <token>
|
|
15
|
+
*/
|
|
16
|
+
export declare class TodoistOAuthProvider extends BaseOAuthProvider {
|
|
17
|
+
name: string;
|
|
18
|
+
displayName: string;
|
|
19
|
+
authorizationUrl: string;
|
|
20
|
+
tokenUrl: string;
|
|
21
|
+
supportsPKCE: boolean;
|
|
22
|
+
scopes: string[];
|
|
23
|
+
clientId: string;
|
|
24
|
+
clientSecret: string | undefined;
|
|
25
|
+
constructor();
|
|
26
|
+
isConfigured(): boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare const todoistProvider: TodoistOAuthProvider;
|
|
29
|
+
//# sourceMappingURL=todoist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todoist.d.ts","sourceRoot":"","sources":["../../../src/auth/providers/todoist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,IAAI,SAAa;IACjB,WAAW,SAAa;IACxB,gBAAgB,SAAyC;IACzD,QAAQ,SAA4C;IAGpD,YAAY,UAAS;IAGrB,MAAM,WAEJ;IAIF,QAAQ,SAA6C;IACrD,YAAY,qBAA2C;;IAOvD,YAAY,IAAI,OAAO;CAGxB;AAED,eAAO,MAAM,eAAe,sBAA6B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BaseOAuthProvider } from './base.js';
|
|
2
|
+
/**
|
|
3
|
+
* Todoist OAuth Provider
|
|
4
|
+
*
|
|
5
|
+
* Todoist's OAuth flow requires a client secret (no PKCE support).
|
|
6
|
+
* For CLI apps, we recommend using manual API key configuration instead.
|
|
7
|
+
*
|
|
8
|
+
* https://developer.todoist.com/guides/#oauth
|
|
9
|
+
*
|
|
10
|
+
* Manual setup:
|
|
11
|
+
* 1. Go to https://todoist.com/prefs/integrations
|
|
12
|
+
* 2. Scroll to "API token" section
|
|
13
|
+
* 3. Copy your API token
|
|
14
|
+
* 4. Run: ralph-starter config set todoist.apiKey <token>
|
|
15
|
+
*/
|
|
16
|
+
export class TodoistOAuthProvider extends BaseOAuthProvider {
|
|
17
|
+
name = 'todoist';
|
|
18
|
+
displayName = 'Todoist';
|
|
19
|
+
authorizationUrl = 'https://todoist.com/oauth/authorize';
|
|
20
|
+
tokenUrl = 'https://todoist.com/oauth/access_token';
|
|
21
|
+
// Todoist doesn't support PKCE - requires client secret
|
|
22
|
+
supportsPKCE = false;
|
|
23
|
+
// Todoist scopes
|
|
24
|
+
scopes = [
|
|
25
|
+
'data:read', // Read tasks, projects, labels, etc.
|
|
26
|
+
];
|
|
27
|
+
// Placeholder - users need to configure their own Todoist app
|
|
28
|
+
// or use ralph-starter's registered app
|
|
29
|
+
clientId = process.env.RALPH_TODOIST_CLIENT_ID || '';
|
|
30
|
+
clientSecret = process.env.RALPH_TODOIST_CLIENT_SECRET;
|
|
31
|
+
constructor() {
|
|
32
|
+
super();
|
|
33
|
+
this.clientSecret = process.env.RALPH_TODOIST_CLIENT_SECRET;
|
|
34
|
+
}
|
|
35
|
+
isConfigured() {
|
|
36
|
+
return !!this.clientId && !!this.clientSecret;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export const todoistProvider = new TodoistOAuthProvider();
|
|
40
|
+
//# sourceMappingURL=todoist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todoist.js","sourceRoot":"","sources":["../../../src/auth/providers/todoist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;IACzD,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,SAAS,CAAC;IACxB,gBAAgB,GAAG,qCAAqC,CAAC;IACzD,QAAQ,GAAG,wCAAwC,CAAC;IAEpD,wDAAwD;IACxD,YAAY,GAAG,KAAK,CAAC;IAErB,iBAAiB;IACjB,MAAM,GAAG;QACP,WAAW,EAAE,qCAAqC;KACnD,CAAC;IAEF,8DAA8D;IAC9D,wCAAwC;IACxC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC;IACrD,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAEvD;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAC9D,CAAC;IAED,YAAY;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;IAChD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function hasUncommittedChanges(cwd: string): Promise<boolean>;
|
|
2
|
+
export declare function gitCommit(cwd: string, message: string): Promise<void>;
|
|
3
|
+
export declare function gitPush(cwd: string, branch?: string): Promise<void>;
|
|
4
|
+
export declare function getCurrentBranch(cwd: string): Promise<string>;
|
|
5
|
+
export declare function createBranch(cwd: string, branchName: string): Promise<void>;
|
|
6
|
+
export interface PROptions {
|
|
7
|
+
title: string;
|
|
8
|
+
body: string;
|
|
9
|
+
base?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function createPullRequest(cwd: string, options: PROptions): Promise<string>;
|
|
12
|
+
export declare function isGitRepo(cwd: string): Promise<boolean>;
|
|
13
|
+
export declare function initGitRepo(cwd: string): Promise<void>;
|
|
14
|
+
export declare function getRecentCommits(cwd: string, count?: number): Promise<string[]>;
|
|
15
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/automation/git.ts"],"names":[],"mappings":"AAGA,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASzE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAInE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjF;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAaxF;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS7D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASxF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import { simpleGit } from 'simple-git';
|
|
3
|
+
export async function hasUncommittedChanges(cwd) {
|
|
4
|
+
const git = simpleGit({ baseDir: cwd });
|
|
5
|
+
try {
|
|
6
|
+
const status = await git.status();
|
|
7
|
+
return !status.isClean();
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export async function gitCommit(cwd, message) {
|
|
14
|
+
const git = simpleGit({ baseDir: cwd });
|
|
15
|
+
// Stage all changes
|
|
16
|
+
await git.add('.');
|
|
17
|
+
// Commit with message
|
|
18
|
+
await git.commit(message);
|
|
19
|
+
}
|
|
20
|
+
export async function gitPush(cwd, branch) {
|
|
21
|
+
const git = simpleGit({ baseDir: cwd });
|
|
22
|
+
if (branch) {
|
|
23
|
+
await git.push('origin', branch);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
await git.push();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function getCurrentBranch(cwd) {
|
|
30
|
+
const git = simpleGit({ baseDir: cwd });
|
|
31
|
+
const branch = await git.revparse(['--abbrev-ref', 'HEAD']);
|
|
32
|
+
return branch.trim();
|
|
33
|
+
}
|
|
34
|
+
export async function createBranch(cwd, branchName) {
|
|
35
|
+
const git = simpleGit({ baseDir: cwd });
|
|
36
|
+
await git.checkoutLocalBranch(branchName);
|
|
37
|
+
}
|
|
38
|
+
export async function createPullRequest(cwd, options) {
|
|
39
|
+
// Use GitHub CLI (gh) to create PR
|
|
40
|
+
const args = ['pr', 'create', '--title', options.title, '--body', options.body];
|
|
41
|
+
if (options.base) {
|
|
42
|
+
args.push('--base', options.base);
|
|
43
|
+
}
|
|
44
|
+
const result = await execa('gh', args, { cwd });
|
|
45
|
+
// Extract PR URL from output
|
|
46
|
+
const urlMatch = result.stdout.match(/https:\/\/github\.com\/[^\s]+/);
|
|
47
|
+
return urlMatch ? urlMatch[0] : result.stdout;
|
|
48
|
+
}
|
|
49
|
+
export async function isGitRepo(cwd) {
|
|
50
|
+
const git = simpleGit({ baseDir: cwd });
|
|
51
|
+
try {
|
|
52
|
+
await git.revparse(['--git-dir']);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export async function initGitRepo(cwd) {
|
|
60
|
+
const git = simpleGit({ baseDir: cwd });
|
|
61
|
+
await git.init();
|
|
62
|
+
}
|
|
63
|
+
export async function getRecentCommits(cwd, count = 5) {
|
|
64
|
+
const git = simpleGit({ baseDir: cwd });
|
|
65
|
+
try {
|
|
66
|
+
const log = await git.log({ maxCount: count });
|
|
67
|
+
return log.all.map((commit) => commit.message);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/automation/git.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
CHANGED
|
@@ -1,20 +1,193 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { authCommand } from './commands/auth.js';
|
|
5
|
+
import { checkCommand } from './commands/check.js';
|
|
6
|
+
import { configCommand } from './commands/config.js';
|
|
7
|
+
import { initCommand } from './commands/init.js';
|
|
8
|
+
import { integrationsCommand } from './commands/integrations.js';
|
|
9
|
+
import { planCommand } from './commands/plan.js';
|
|
10
|
+
import { runCommand } from './commands/run.js';
|
|
11
|
+
import { setupCommand } from './commands/setup.js';
|
|
12
|
+
import { skillCommand } from './commands/skill.js';
|
|
13
|
+
import { sourceCommand } from './commands/source.js';
|
|
14
|
+
import { startMcpServer } from './mcp/server.js';
|
|
15
|
+
import { formatPresetsHelp, getPresetNames } from './presets/index.js';
|
|
16
|
+
import { runIdeaMode, runWizard } from './wizard/index.js';
|
|
17
|
+
const VERSION = '0.1.0';
|
|
18
|
+
const program = new Command();
|
|
19
|
+
const banner = `
|
|
20
|
+
${chalk.cyan('╭─────────────────────────────────────────────────────────────╮')}
|
|
21
|
+
${chalk.cyan('│')} ${chalk.cyan('│')}
|
|
22
|
+
${chalk.cyan('│')} ${chalk.bold.white('ralph-starter')} ${chalk.gray(`v${VERSION}`)} ${chalk.cyan('│')}
|
|
23
|
+
${chalk.cyan('│')} ${chalk.cyan('│')}
|
|
24
|
+
${chalk.cyan('│')} ${chalk.dim('Ralph Wiggum made easy.')} ${chalk.cyan('│')}
|
|
25
|
+
${chalk.cyan('│')} ${chalk.dim('One command to run autonomous AI coding loops.')} ${chalk.cyan('│')}
|
|
26
|
+
${chalk.cyan('│')} ${chalk.cyan('│')}
|
|
27
|
+
${chalk.cyan('╰─────────────────────────────────────────────────────────────╯')}
|
|
28
|
+
`;
|
|
29
|
+
program
|
|
30
|
+
.name('ralph-starter')
|
|
31
|
+
.description('Ralph Wiggum made easy. Run autonomous AI coding loops with one command.')
|
|
32
|
+
.version(VERSION)
|
|
33
|
+
.addHelpText('beforeAll', banner);
|
|
34
|
+
// ralph-starter run [task] - Main command to run a loop
|
|
35
|
+
program
|
|
36
|
+
.command('run [task]')
|
|
37
|
+
.description('Run an autonomous AI coding loop')
|
|
38
|
+
.option('--auto', 'Run in fully automated mode (skip permissions)')
|
|
39
|
+
.option('--commit', 'Auto-commit after each successful task')
|
|
40
|
+
.option('--push', 'Push commits to remote')
|
|
41
|
+
.option('--pr', 'Create a pull request when done')
|
|
42
|
+
.option('--validate', 'Run tests/lint/build after each iteration (backpressure)')
|
|
43
|
+
.option('--docker', 'Run in Docker sandbox (coming soon)')
|
|
44
|
+
.option('--prd <file>', 'Read tasks from a PRD markdown file')
|
|
45
|
+
.option('--max-iterations <n>', 'Maximum loop iterations', '50')
|
|
46
|
+
.option('--agent <name>', 'Specify agent (claude-code, cursor, codex, opencode)')
|
|
47
|
+
.option('--from <source>', 'Fetch spec from source (file, url, github, todoist, linear, notion)')
|
|
48
|
+
.option('--project <name>', 'Project/repo name for --from integrations')
|
|
49
|
+
.option('--label <name>', 'Label filter for --from integrations')
|
|
50
|
+
.option('--status <status>', 'Status filter for --from integrations')
|
|
51
|
+
.option('--limit <n>', 'Max items to fetch for --from integrations', '20')
|
|
52
|
+
// New options
|
|
53
|
+
.option('--preset <name>', `Use a workflow preset (${getPresetNames().slice(0, 5).join(', ')}...)`)
|
|
54
|
+
.option('--completion-promise <string>', 'Custom completion promise string to detect task done')
|
|
55
|
+
.option('--require-exit-signal', 'Require explicit EXIT_SIGNAL: true for completion')
|
|
56
|
+
.option('--rate-limit <n>', 'Max API calls per hour (default: unlimited)')
|
|
57
|
+
.option('--track-progress', 'Write progress to activity.md (default: true)')
|
|
58
|
+
.option('--no-track-progress', 'Disable progress tracking')
|
|
59
|
+
.option('--track-cost', 'Track token usage and estimated cost (default: true)')
|
|
60
|
+
.option('--no-track-cost', 'Disable cost tracking')
|
|
61
|
+
.option('--circuit-breaker-failures <n>', 'Max consecutive failures before stopping (default: 3)')
|
|
62
|
+
.option('--circuit-breaker-errors <n>', 'Max same error occurrences before stopping (default: 5)')
|
|
63
|
+
.action(runCommand);
|
|
64
|
+
// ralph-starter init - Initialize Ralph in a project
|
|
65
|
+
program
|
|
66
|
+
.command('init')
|
|
67
|
+
.description('Initialize Ralph Wiggum in an existing project')
|
|
68
|
+
.option('-n, --name <name>', 'Project name')
|
|
69
|
+
.action(initCommand);
|
|
70
|
+
// ralph-starter skill - Manage agent skills
|
|
71
|
+
program
|
|
72
|
+
.command('skill <action> [name]')
|
|
73
|
+
.description('Manage agent skills (add, list, search, browse)')
|
|
74
|
+
.option('-g, --global', 'Install skill globally')
|
|
75
|
+
.action(skillCommand);
|
|
76
|
+
// ralph-starter plan - Create implementation plan from specs
|
|
77
|
+
program
|
|
78
|
+
.command('plan')
|
|
79
|
+
.description('Analyze specs and create implementation plan (Ralph Playbook planning mode)')
|
|
80
|
+
.option('--auto', 'Run in automated mode (skip permissions)')
|
|
81
|
+
.action(planCommand);
|
|
82
|
+
// ralph-starter setup - Interactive setup wizard
|
|
83
|
+
program
|
|
84
|
+
.command('setup')
|
|
85
|
+
.description('Interactive setup wizard to configure LLM and agents')
|
|
86
|
+
.option('--force', 'Force re-run setup even if already configured')
|
|
87
|
+
.action(setupCommand);
|
|
88
|
+
// ralph-starter check - Check configuration and test connection
|
|
89
|
+
program
|
|
90
|
+
.command('check')
|
|
91
|
+
.description('Check configuration and test LLM connection')
|
|
92
|
+
.option('--verbose', 'Show detailed output')
|
|
93
|
+
.action(checkCommand);
|
|
94
|
+
// ralph-starter wizard - Interactive wizard (explicit command)
|
|
95
|
+
program
|
|
96
|
+
.command('wizard')
|
|
97
|
+
.description('Launch the interactive wizard to build a new project')
|
|
98
|
+
.action(async () => {
|
|
99
|
+
await runWizard();
|
|
100
|
+
});
|
|
101
|
+
// ralph-starter ideas - Brainstorm project ideas
|
|
102
|
+
program
|
|
103
|
+
.command('ideas')
|
|
104
|
+
.description("Brainstorm project ideas when you don't know what to build")
|
|
105
|
+
.action(async () => {
|
|
106
|
+
const idea = await runIdeaMode();
|
|
107
|
+
if (idea) {
|
|
108
|
+
console.log();
|
|
109
|
+
console.log(' Selected idea:', idea);
|
|
110
|
+
console.log();
|
|
111
|
+
console.log(' To build this project, run:');
|
|
112
|
+
console.log(' ralph-starter wizard');
|
|
113
|
+
console.log();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// ralph-starter config - Manage source configuration
|
|
117
|
+
program
|
|
118
|
+
.command('config [action] [args...]')
|
|
119
|
+
.description('Manage source configuration (list, get, set, delete)')
|
|
120
|
+
.action(async (action, args) => {
|
|
121
|
+
if (!action) {
|
|
122
|
+
// Show help when no action provided
|
|
123
|
+
await configCommand('help', []);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
await configCommand(action, args);
|
|
127
|
+
});
|
|
128
|
+
// ralph-starter auth - Browser-based OAuth authentication
|
|
129
|
+
program
|
|
130
|
+
.command('auth [service]')
|
|
131
|
+
.description('Browser-based OAuth authentication for integrations')
|
|
132
|
+
.option('--list', 'Show authentication status for all services')
|
|
133
|
+
.option('--logout <service>', 'Remove credentials for a service')
|
|
134
|
+
.action(async (service, options) => {
|
|
135
|
+
await authCommand(service, options);
|
|
136
|
+
});
|
|
137
|
+
// ralph-starter source - Manage input sources
|
|
138
|
+
program
|
|
139
|
+
.command('source [action] [args...]')
|
|
140
|
+
.description('Manage input sources (list, help, test, preview)')
|
|
141
|
+
.option('--project <name>', 'Project/repo name for integrations')
|
|
142
|
+
.option('--label <name>', 'Label filter')
|
|
143
|
+
.option('--status <status>', 'Status filter')
|
|
144
|
+
.option('--limit <n>', 'Max items to fetch', '10')
|
|
145
|
+
.action(async (action, args, options) => {
|
|
146
|
+
if (!action) {
|
|
147
|
+
// Show help when no action provided
|
|
148
|
+
await sourceCommand('help', []);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
await sourceCommand(action, args, options);
|
|
152
|
+
});
|
|
153
|
+
// ralph-starter integrations - Manage integrations (unified architecture)
|
|
154
|
+
program
|
|
155
|
+
.command('integrations [action] [args...]')
|
|
156
|
+
.description('Manage integrations (list, help, test, fetch)')
|
|
157
|
+
.option('--project <name>', 'Project/repo name')
|
|
158
|
+
.option('--label <name>', 'Label filter')
|
|
159
|
+
.option('--status <status>', 'Status filter')
|
|
160
|
+
.option('--limit <n>', 'Max items to fetch', '10')
|
|
161
|
+
.action(async (action, args, options) => {
|
|
162
|
+
if (!action) {
|
|
163
|
+
// Default to list when no action provided
|
|
164
|
+
await integrationsCommand('list', [], options);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
await integrationsCommand(action, args, options);
|
|
168
|
+
});
|
|
169
|
+
// ralph-starter mcp - Start as MCP server
|
|
170
|
+
program
|
|
171
|
+
.command('mcp')
|
|
172
|
+
.description('Start as an MCP (Model Context Protocol) server for Claude Desktop/Code')
|
|
173
|
+
.action(async () => {
|
|
174
|
+
await startMcpServer();
|
|
175
|
+
});
|
|
176
|
+
// ralph-starter presets - List available workflow presets
|
|
177
|
+
program
|
|
178
|
+
.command('presets')
|
|
179
|
+
.description('List available workflow presets')
|
|
180
|
+
.action(() => {
|
|
181
|
+
console.log();
|
|
182
|
+
console.log(formatPresetsHelp());
|
|
183
|
+
console.log('Use with: ralph-starter run --preset <name> [task]');
|
|
184
|
+
console.log();
|
|
185
|
+
});
|
|
186
|
+
// Default action - launch interactive wizard
|
|
187
|
+
program.action(async () => {
|
|
188
|
+
// If user passes --help, commander handles it
|
|
189
|
+
// Otherwise, launch the wizard
|
|
190
|
+
await runWizard();
|
|
191
|
+
});
|
|
192
|
+
program.parse();
|
|
193
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type AuthCommandOptions = {};
|
|
2
|
+
/**
|
|
3
|
+
* Auth command - Browser-based OAuth authentication for integrations
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* ralph-starter auth <service> Start OAuth flow for a service
|
|
7
|
+
* ralph-starter auth --list Show auth status for all services
|
|
8
|
+
* ralph-starter auth --logout <service> Remove credentials for a service
|
|
9
|
+
*/
|
|
10
|
+
export declare function authCommand(service: string | undefined, options: {
|
|
11
|
+
list?: boolean;
|
|
12
|
+
logout?: string;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAEpC;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|