ralph-starter 0.0.1 → 0.1.1-beta.1
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 +374 -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 +67 -8
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const CONFIG_DIR = join(homedir(), '.ralph-starter');
|
|
5
|
+
const SOURCES_CONFIG_FILE = join(CONFIG_DIR, 'sources.json');
|
|
6
|
+
/**
|
|
7
|
+
* Environment variable mappings for each source
|
|
8
|
+
* Format: { sourceName: { credentialKey: ENV_VAR_NAME } }
|
|
9
|
+
*/
|
|
10
|
+
const ENV_VAR_MAPPINGS = {
|
|
11
|
+
todoist: { apiKey: 'TODOIST_API_KEY' },
|
|
12
|
+
linear: { apiKey: 'LINEAR_API_KEY' },
|
|
13
|
+
notion: { apiKey: 'NOTION_API_KEY' },
|
|
14
|
+
github: { token: 'GITHUB_TOKEN' },
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Get credentials from environment variables for a source
|
|
18
|
+
*/
|
|
19
|
+
function getEnvCredentials(sourceName) {
|
|
20
|
+
const mappings = ENV_VAR_MAPPINGS[sourceName];
|
|
21
|
+
if (!mappings)
|
|
22
|
+
return null;
|
|
23
|
+
const credentials = {};
|
|
24
|
+
let hasAny = false;
|
|
25
|
+
for (const [key, envVar] of Object.entries(mappings)) {
|
|
26
|
+
const value = process.env[envVar];
|
|
27
|
+
if (value) {
|
|
28
|
+
credentials[key] = value;
|
|
29
|
+
hasAny = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return hasAny ? credentials : null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the environment variable name for a source credential
|
|
36
|
+
*/
|
|
37
|
+
export function getEnvVarName(sourceName, key) {
|
|
38
|
+
return ENV_VAR_MAPPINGS[sourceName]?.[key] || null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get all environment variable names for credentials
|
|
42
|
+
*/
|
|
43
|
+
export function getAllEnvVarMappings() {
|
|
44
|
+
return ENV_VAR_MAPPINGS;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Ensure config directory exists
|
|
48
|
+
*/
|
|
49
|
+
function ensureConfigDir() {
|
|
50
|
+
if (!existsSync(CONFIG_DIR)) {
|
|
51
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Read sources configuration
|
|
56
|
+
*/
|
|
57
|
+
export function readSourcesConfig() {
|
|
58
|
+
ensureConfigDir();
|
|
59
|
+
if (!existsSync(SOURCES_CONFIG_FILE)) {
|
|
60
|
+
return { sources: {} };
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const content = readFileSync(SOURCES_CONFIG_FILE, 'utf-8');
|
|
64
|
+
return JSON.parse(content);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return { sources: {} };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Write sources configuration
|
|
72
|
+
*/
|
|
73
|
+
export function writeSourcesConfig(config) {
|
|
74
|
+
ensureConfigDir();
|
|
75
|
+
writeFileSync(SOURCES_CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get configuration for a specific source
|
|
79
|
+
*/
|
|
80
|
+
export function getSourceConfig(sourceName) {
|
|
81
|
+
const config = readSourcesConfig();
|
|
82
|
+
return config.sources[sourceName] || null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Set configuration for a specific source
|
|
86
|
+
*/
|
|
87
|
+
export function setSourceConfig(sourceName, sourceConfig) {
|
|
88
|
+
const config = readSourcesConfig();
|
|
89
|
+
config.sources[sourceName] = {
|
|
90
|
+
...config.sources[sourceName],
|
|
91
|
+
...sourceConfig,
|
|
92
|
+
};
|
|
93
|
+
writeSourcesConfig(config);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get credentials for a specific source
|
|
97
|
+
* Priority: Environment variables > Config file
|
|
98
|
+
*/
|
|
99
|
+
export function getSourceCredentials(sourceName) {
|
|
100
|
+
// Check environment variables first
|
|
101
|
+
const envCredentials = getEnvCredentials(sourceName);
|
|
102
|
+
const configCredentials = getSourceConfig(sourceName)?.credentials || null;
|
|
103
|
+
// Merge: env vars take precedence
|
|
104
|
+
if (envCredentials && configCredentials) {
|
|
105
|
+
return { ...configCredentials, ...envCredentials };
|
|
106
|
+
}
|
|
107
|
+
return envCredentials || configCredentials;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if credentials came from environment variables
|
|
111
|
+
*/
|
|
112
|
+
export function isCredentialFromEnv(sourceName, key) {
|
|
113
|
+
const envVar = getEnvVarName(sourceName, key);
|
|
114
|
+
return envVar ? !!process.env[envVar] : false;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Set a credential for a specific source
|
|
118
|
+
*/
|
|
119
|
+
export function setSourceCredential(sourceName, key, value) {
|
|
120
|
+
const config = readSourcesConfig();
|
|
121
|
+
if (!config.sources[sourceName]) {
|
|
122
|
+
config.sources[sourceName] = {};
|
|
123
|
+
}
|
|
124
|
+
if (!config.sources[sourceName].credentials) {
|
|
125
|
+
config.sources[sourceName].credentials = {};
|
|
126
|
+
}
|
|
127
|
+
config.sources[sourceName].credentials[key] = value;
|
|
128
|
+
writeSourcesConfig(config);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Delete a credential for a specific source
|
|
132
|
+
*/
|
|
133
|
+
export function deleteSourceCredential(sourceName, key) {
|
|
134
|
+
const config = readSourcesConfig();
|
|
135
|
+
if (!config.sources[sourceName]?.credentials?.[key]) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
delete config.sources[sourceName].credentials?.[key];
|
|
139
|
+
// Clean up empty credentials object
|
|
140
|
+
if (Object.keys(config.sources[sourceName].credentials).length === 0) {
|
|
141
|
+
delete config.sources[sourceName].credentials;
|
|
142
|
+
}
|
|
143
|
+
// Clean up empty source config
|
|
144
|
+
if (Object.keys(config.sources[sourceName]).length === 0) {
|
|
145
|
+
delete config.sources[sourceName];
|
|
146
|
+
}
|
|
147
|
+
writeSourcesConfig(config);
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get default options for a specific source
|
|
152
|
+
*/
|
|
153
|
+
export function getSourceDefaults(sourceName) {
|
|
154
|
+
const sourceConfig = getSourceConfig(sourceName);
|
|
155
|
+
return sourceConfig?.defaults || null;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Set default options for a specific source
|
|
159
|
+
*/
|
|
160
|
+
export function setSourceDefaults(sourceName, defaults) {
|
|
161
|
+
const config = readSourcesConfig();
|
|
162
|
+
if (!config.sources[sourceName]) {
|
|
163
|
+
config.sources[sourceName] = {};
|
|
164
|
+
}
|
|
165
|
+
config.sources[sourceName].defaults = {
|
|
166
|
+
...config.sources[sourceName].defaults,
|
|
167
|
+
...defaults,
|
|
168
|
+
};
|
|
169
|
+
writeSourcesConfig(config);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check if a source is enabled
|
|
173
|
+
* Sources are enabled by default unless explicitly disabled
|
|
174
|
+
*/
|
|
175
|
+
export function isSourceEnabled(sourceName) {
|
|
176
|
+
const sourceConfig = getSourceConfig(sourceName);
|
|
177
|
+
return sourceConfig?.enabled !== false;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Enable or disable a source
|
|
181
|
+
*/
|
|
182
|
+
export function setSourceEnabled(sourceName, enabled) {
|
|
183
|
+
const config = readSourcesConfig();
|
|
184
|
+
if (!config.sources[sourceName]) {
|
|
185
|
+
config.sources[sourceName] = {};
|
|
186
|
+
}
|
|
187
|
+
config.sources[sourceName].enabled = enabled;
|
|
188
|
+
writeSourcesConfig(config);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* List all configured sources
|
|
192
|
+
*/
|
|
193
|
+
export function listConfiguredSources() {
|
|
194
|
+
const config = readSourcesConfig();
|
|
195
|
+
return Object.keys(config.sources);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Delete all configuration for a source
|
|
199
|
+
*/
|
|
200
|
+
export function deleteSourceConfig(sourceName) {
|
|
201
|
+
const config = readSourcesConfig();
|
|
202
|
+
if (!config.sources[sourceName]) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
delete config.sources[sourceName];
|
|
206
|
+
writeSourcesConfig(config);
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get the config file path (for display purposes)
|
|
211
|
+
*/
|
|
212
|
+
export function getSourcesConfigPath() {
|
|
213
|
+
return SOURCES_CONFIG_FILE;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/sources/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAE7D;;;GAGG;AACH,MAAM,gBAAgB,GAA2C;IAC/D,OAAO,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;IACtC,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACpC,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACpC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;CAClC,CAAC;AAEF;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,GAAW;IAC3D,OAAO,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,eAAe,EAAE,CAAC;IAElB,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAqB;IACtD,eAAe,EAAE,CAAC;IAClB,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,YAA0B;IAC5E,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;QAC3B,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QAC7B,GAAG,YAAY;KAChB,CAAC;IACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,oCAAoC;IACpC,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;IAE3E,kCAAkC;IAClC,IAAI,cAAc,IAAI,iBAAiB,EAAE,CAAC;QACxC,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,cAAc,EAAE,CAAC;IACrD,CAAC;IAED,OAAO,cAAc,IAAI,iBAAiB,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,GAAW;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,GAAW,EAAE,KAAa;IAChF,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrD,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAkB,EAAE,GAAW;IACpE,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;IAErD,oCAAoC;IACpC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC;IAChD,CAAC;IAED,+BAA+B;IAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,YAAY,EAAE,QAAQ,IAAI,IAAI,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,QAAuB;IAC3E,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,GAAG;QACpC,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ;QACtC,GAAG,QAAQ;KACZ,CAAC;IAEF,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,YAAY,EAAE,OAAO,KAAK,KAAK,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,OAAgB;IACnE,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7C,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAEnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source registry and factory
|
|
3
|
+
*
|
|
4
|
+
* Manages all available input sources and provides methods to:
|
|
5
|
+
* - List available sources
|
|
6
|
+
* - Get source by name
|
|
7
|
+
* - Auto-detect source from identifier
|
|
8
|
+
* - Fetch content from any source
|
|
9
|
+
*/
|
|
10
|
+
import type { InputSource, SourceInfo, SourceOptions, SourceResult } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Get a source by name
|
|
13
|
+
*/
|
|
14
|
+
export declare function getSource(name: string): InputSource | null;
|
|
15
|
+
/**
|
|
16
|
+
* Get all registered sources
|
|
17
|
+
*/
|
|
18
|
+
export declare function getAllSources(): InputSource[];
|
|
19
|
+
/**
|
|
20
|
+
* Get source info for all sources
|
|
21
|
+
*/
|
|
22
|
+
export declare function getSourcesInfo(): Promise<SourceInfo[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Auto-detect the appropriate source from an identifier
|
|
25
|
+
*/
|
|
26
|
+
export declare function detectSource(identifier: string): InputSource | null;
|
|
27
|
+
/**
|
|
28
|
+
* Fetch content from any source
|
|
29
|
+
*
|
|
30
|
+
* @param sourceOrIdentifier - Source name or auto-detectable identifier
|
|
31
|
+
* @param identifierOrOptions - Identifier (if source given) or options
|
|
32
|
+
* @param options - Additional options
|
|
33
|
+
*/
|
|
34
|
+
export declare function fetchFromSource(sourceOrIdentifier: string, identifierOrOptions?: string | SourceOptions, options?: SourceOptions): Promise<SourceResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Get help text for a specific source
|
|
37
|
+
*/
|
|
38
|
+
export declare function getSourceHelp(name: string): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Test if a source's credentials are valid
|
|
41
|
+
*/
|
|
42
|
+
export declare function testSource(name: string): Promise<{
|
|
43
|
+
success: boolean;
|
|
44
|
+
message: string;
|
|
45
|
+
}>;
|
|
46
|
+
export type { InputSource, SourceInfo, SourceOptions, SourceResult } from './types.js';
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiCvF;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAG1D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,WAAW,EAAE,CAG7C;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAgB5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA2DnE;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,kBAAkB,EAAE,MAAM,EAC1B,mBAAmB,CAAC,EAAE,MAAM,GAAG,aAAa,EAC5C,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CAgDvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CA2BD;AAGD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source registry and factory
|
|
3
|
+
*
|
|
4
|
+
* Manages all available input sources and provides methods to:
|
|
5
|
+
* - List available sources
|
|
6
|
+
* - Get source by name
|
|
7
|
+
* - Auto-detect source from identifier
|
|
8
|
+
* - Fetch content from any source
|
|
9
|
+
*/
|
|
10
|
+
// Built-in sources
|
|
11
|
+
import { FileSource } from './builtin/file.js';
|
|
12
|
+
import { PdfSource } from './builtin/pdf.js';
|
|
13
|
+
import { UrlSource } from './builtin/url.js';
|
|
14
|
+
// Integration sources
|
|
15
|
+
import { GitHubSource } from './integrations/github.js';
|
|
16
|
+
import { LinearSource } from './integrations/linear.js';
|
|
17
|
+
import { NotionSource } from './integrations/notion.js';
|
|
18
|
+
import { TodoistSource } from './integrations/todoist.js';
|
|
19
|
+
/**
|
|
20
|
+
* All registered sources
|
|
21
|
+
*/
|
|
22
|
+
const sources = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Initialize all sources
|
|
25
|
+
*/
|
|
26
|
+
function initializeSources() {
|
|
27
|
+
if (sources.size > 0)
|
|
28
|
+
return;
|
|
29
|
+
// Register builtin sources
|
|
30
|
+
const builtins = [new FileSource(), new UrlSource(), new PdfSource()];
|
|
31
|
+
for (const source of builtins) {
|
|
32
|
+
sources.set(source.name, source);
|
|
33
|
+
}
|
|
34
|
+
// Register integration sources
|
|
35
|
+
const integrations = [
|
|
36
|
+
new GitHubSource(),
|
|
37
|
+
new TodoistSource(),
|
|
38
|
+
new LinearSource(),
|
|
39
|
+
new NotionSource(),
|
|
40
|
+
];
|
|
41
|
+
for (const source of integrations) {
|
|
42
|
+
sources.set(source.name, source);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get a source by name
|
|
47
|
+
*/
|
|
48
|
+
export function getSource(name) {
|
|
49
|
+
initializeSources();
|
|
50
|
+
return sources.get(name) || null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get all registered sources
|
|
54
|
+
*/
|
|
55
|
+
export function getAllSources() {
|
|
56
|
+
initializeSources();
|
|
57
|
+
return Array.from(sources.values());
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get source info for all sources
|
|
61
|
+
*/
|
|
62
|
+
export async function getSourcesInfo() {
|
|
63
|
+
initializeSources();
|
|
64
|
+
const info = [];
|
|
65
|
+
for (const source of sources.values()) {
|
|
66
|
+
info.push({
|
|
67
|
+
name: source.name,
|
|
68
|
+
description: source.description,
|
|
69
|
+
type: source.type,
|
|
70
|
+
requiresAuth: source.requiresAuth(),
|
|
71
|
+
available: await source.isAvailable(),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return info;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Auto-detect the appropriate source from an identifier
|
|
78
|
+
*/
|
|
79
|
+
export function detectSource(identifier) {
|
|
80
|
+
initializeSources();
|
|
81
|
+
// Check for explicit source prefix (e.g., "github:owner/repo")
|
|
82
|
+
const prefixMatch = identifier.match(/^([a-z]+):/i);
|
|
83
|
+
if (prefixMatch) {
|
|
84
|
+
const sourceName = prefixMatch[1].toLowerCase();
|
|
85
|
+
return sources.get(sourceName) || null;
|
|
86
|
+
}
|
|
87
|
+
// Auto-detect from identifier format
|
|
88
|
+
const lowerIdentifier = identifier.toLowerCase();
|
|
89
|
+
// URL detection
|
|
90
|
+
if (identifier.startsWith('http://') || identifier.startsWith('https://')) {
|
|
91
|
+
// Check for specific service URLs
|
|
92
|
+
if (lowerIdentifier.includes('github.com')) {
|
|
93
|
+
return sources.get('github') || null;
|
|
94
|
+
}
|
|
95
|
+
if (lowerIdentifier.includes('notion.so') || lowerIdentifier.includes('notion.site')) {
|
|
96
|
+
return sources.get('notion') || null;
|
|
97
|
+
}
|
|
98
|
+
if (lowerIdentifier.includes('linear.app')) {
|
|
99
|
+
return sources.get('linear') || null;
|
|
100
|
+
}
|
|
101
|
+
if (lowerIdentifier.includes('todoist.com')) {
|
|
102
|
+
return sources.get('todoist') || null;
|
|
103
|
+
}
|
|
104
|
+
// Check for PDF URLs
|
|
105
|
+
if (lowerIdentifier.endsWith('.pdf')) {
|
|
106
|
+
return sources.get('pdf') || null;
|
|
107
|
+
}
|
|
108
|
+
// Default to URL source
|
|
109
|
+
return sources.get('url') || null;
|
|
110
|
+
}
|
|
111
|
+
// Local file detection
|
|
112
|
+
if (identifier.startsWith('./') ||
|
|
113
|
+
identifier.startsWith('/') ||
|
|
114
|
+
identifier.startsWith('../') ||
|
|
115
|
+
identifier.includes('/') ||
|
|
116
|
+
lowerIdentifier.endsWith('.md') ||
|
|
117
|
+
lowerIdentifier.endsWith('.txt') ||
|
|
118
|
+
lowerIdentifier.endsWith('.pdf')) {
|
|
119
|
+
// PDF files
|
|
120
|
+
if (lowerIdentifier.endsWith('.pdf')) {
|
|
121
|
+
return sources.get('pdf') || null;
|
|
122
|
+
}
|
|
123
|
+
// Other files
|
|
124
|
+
return sources.get('file') || null;
|
|
125
|
+
}
|
|
126
|
+
// No match - could be a project name for integrations
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Fetch content from any source
|
|
131
|
+
*
|
|
132
|
+
* @param sourceOrIdentifier - Source name or auto-detectable identifier
|
|
133
|
+
* @param identifierOrOptions - Identifier (if source given) or options
|
|
134
|
+
* @param options - Additional options
|
|
135
|
+
*/
|
|
136
|
+
export async function fetchFromSource(sourceOrIdentifier, identifierOrOptions, options) {
|
|
137
|
+
initializeSources();
|
|
138
|
+
let source;
|
|
139
|
+
let identifier;
|
|
140
|
+
let fetchOptions;
|
|
141
|
+
// Determine if first arg is source name or identifier
|
|
142
|
+
const explicitSource = sources.get(sourceOrIdentifier.toLowerCase());
|
|
143
|
+
if (explicitSource && typeof identifierOrOptions === 'string') {
|
|
144
|
+
// First arg is source name
|
|
145
|
+
source = explicitSource;
|
|
146
|
+
identifier = identifierOrOptions;
|
|
147
|
+
fetchOptions = options;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// First arg is identifier, auto-detect source
|
|
151
|
+
identifier = sourceOrIdentifier;
|
|
152
|
+
source = detectSource(identifier);
|
|
153
|
+
fetchOptions = typeof identifierOrOptions === 'object' ? identifierOrOptions : options;
|
|
154
|
+
// Strip source prefix if present
|
|
155
|
+
const prefixMatch = identifier.match(/^([a-z]+):/i);
|
|
156
|
+
if (prefixMatch) {
|
|
157
|
+
identifier = identifier.slice(prefixMatch[0].length);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (!source) {
|
|
161
|
+
throw new Error(`Could not determine source for: ${sourceOrIdentifier}. ` +
|
|
162
|
+
`Use --from <source> to specify explicitly.`);
|
|
163
|
+
}
|
|
164
|
+
// Check if source is available
|
|
165
|
+
const available = await source.isAvailable();
|
|
166
|
+
if (!available) {
|
|
167
|
+
if (source.requiresAuth()) {
|
|
168
|
+
throw new Error(`Source "${source.name}" requires authentication. ` +
|
|
169
|
+
`Run: ralph-starter config set ${source.name}.apiKey <value>`);
|
|
170
|
+
}
|
|
171
|
+
throw new Error(`Source "${source.name}" is not available.`);
|
|
172
|
+
}
|
|
173
|
+
return source.fetch(identifier, fetchOptions);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get help text for a specific source
|
|
177
|
+
*/
|
|
178
|
+
export function getSourceHelp(name) {
|
|
179
|
+
initializeSources();
|
|
180
|
+
const source = sources.get(name);
|
|
181
|
+
return source?.getHelp() || null;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Test if a source's credentials are valid
|
|
185
|
+
*/
|
|
186
|
+
export async function testSource(name) {
|
|
187
|
+
initializeSources();
|
|
188
|
+
const source = sources.get(name);
|
|
189
|
+
if (!source) {
|
|
190
|
+
return { success: false, message: `Unknown source: ${name}` };
|
|
191
|
+
}
|
|
192
|
+
const available = await source.isAvailable();
|
|
193
|
+
if (!available) {
|
|
194
|
+
if (source.requiresAuth()) {
|
|
195
|
+
return {
|
|
196
|
+
success: false,
|
|
197
|
+
message: `Not configured. Run: ralph-starter config set ${name}.apiKey <value>`,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return { success: false, message: 'Source dependencies not available' };
|
|
201
|
+
}
|
|
202
|
+
if (source.validateCredentials) {
|
|
203
|
+
const valid = await source.validateCredentials();
|
|
204
|
+
if (!valid) {
|
|
205
|
+
return { success: false, message: 'Credentials validation failed' };
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return { success: true, message: 'Source is available and configured' };
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IntegrationSource } from '../base.js';
|
|
2
|
+
import type { SourceOptions, SourceResult } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* GitHub source - fetches issues from GitHub repositories
|
|
5
|
+
*
|
|
6
|
+
* Uses the gh CLI for authentication (no API key needed if gh is configured)
|
|
7
|
+
* Falls back to GitHub API with token if gh is not available
|
|
8
|
+
*/
|
|
9
|
+
export declare class GitHubSource extends IntegrationSource {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
private ghAvailable;
|
|
13
|
+
isAvailable(): Promise<boolean>;
|
|
14
|
+
requiresAuth(): boolean;
|
|
15
|
+
private isGhCliAvailable;
|
|
16
|
+
fetch(identifier: string, options?: SourceOptions): Promise<SourceResult>;
|
|
17
|
+
private parseRepoIdentifier;
|
|
18
|
+
private fetchViaGhCli;
|
|
19
|
+
private fetchViaApi;
|
|
20
|
+
private formatIssues;
|
|
21
|
+
protected getRequiredCredentialKey(): string;
|
|
22
|
+
getHelp(): string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/sources/integrations/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,iBAAiB;IACjD,IAAI,SAAY;IAChB,WAAW,SAA2C;IAEtD,OAAO,CAAC,WAAW,CAAwB;IAErC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,YAAY,IAAI,OAAO;YAKT,gBAAgB;IAgBxB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAY/E,OAAO,CAAC,mBAAmB;YAkBb,aAAa;YAwCb,WAAW;IA2CzB,OAAO,CAAC,YAAY;IAgDpB,SAAS,CAAC,wBAAwB,IAAI,MAAM;IAI5C,OAAO,IAAI,MAAM;CAwBlB"}
|