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,72 @@
|
|
|
1
|
+
import type { InputSource, SourceCredentials, SourceOptions, SourceResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for input sources
|
|
4
|
+
* Provides common functionality for all source implementations
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class BaseSource implements InputSource {
|
|
7
|
+
abstract name: string;
|
|
8
|
+
abstract description: string;
|
|
9
|
+
abstract type: 'builtin' | 'integration';
|
|
10
|
+
/**
|
|
11
|
+
* Check if this source is available
|
|
12
|
+
* Override in subclasses for custom availability checks
|
|
13
|
+
*/
|
|
14
|
+
isAvailable(): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Whether this source requires authentication
|
|
17
|
+
* Override in subclasses that need auth
|
|
18
|
+
*/
|
|
19
|
+
requiresAuth(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Fetch content from this source
|
|
22
|
+
* Must be implemented by subclasses
|
|
23
|
+
*/
|
|
24
|
+
abstract fetch(identifier: string, options?: SourceOptions): Promise<SourceResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Get help text for using this source
|
|
27
|
+
* Override in subclasses for custom help
|
|
28
|
+
*/
|
|
29
|
+
getHelp(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Get credentials for this source from config
|
|
32
|
+
*/
|
|
33
|
+
protected getCredentials(): Promise<SourceCredentials | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Validate that credentials work
|
|
36
|
+
* Override in subclasses that need auth
|
|
37
|
+
*/
|
|
38
|
+
validateCredentials(): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Convert content to markdown if needed
|
|
41
|
+
* Helper for sources that fetch non-markdown content
|
|
42
|
+
*/
|
|
43
|
+
protected toMarkdown(content: string, format?: 'text' | 'html' | 'json'): string;
|
|
44
|
+
/**
|
|
45
|
+
* Create a standardized error message
|
|
46
|
+
*/
|
|
47
|
+
protected error(message: string): never;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Base class for builtin sources (file, url, pdf)
|
|
51
|
+
*/
|
|
52
|
+
export declare abstract class BuiltinSource extends BaseSource {
|
|
53
|
+
type: 'builtin';
|
|
54
|
+
requiresAuth(): boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Base class for integration sources (todoist, linear, notion, github)
|
|
58
|
+
*/
|
|
59
|
+
export declare abstract class IntegrationSource extends BaseSource {
|
|
60
|
+
type: 'integration';
|
|
61
|
+
requiresAuth(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get the required credential key name
|
|
64
|
+
* Override in subclasses
|
|
65
|
+
*/
|
|
66
|
+
protected getRequiredCredentialKey(): string;
|
|
67
|
+
/**
|
|
68
|
+
* Get the API key for this integration
|
|
69
|
+
*/
|
|
70
|
+
protected getApiKey(): Promise<string>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/sources/base.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9F;;;GAGG;AACH,8BAAsB,UAAW,YAAW,WAAW;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;IAEzC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC;;;OAGG;IACH,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAElF;;;OAGG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;cACa,cAAc,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAInE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7C;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAkChF;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;CAGxC;AAED;;GAEG;AACH,8BAAsB,aAAc,SAAQ,UAAU;IACpD,IAAI,EAAE,SAAS,CAAa;IAE5B,YAAY,IAAI,OAAO;CAGxB;AAED;;GAEG;AACH,8BAAsB,iBAAkB,SAAQ,UAAU;IACxD,IAAI,EAAE,aAAa,CAAiB;IAEpC,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACH,SAAS,CAAC,wBAAwB,IAAI,MAAM;IAI5C;;OAEG;cACa,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAU7C"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { getSourceCredentials } from './config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for input sources
|
|
4
|
+
* Provides common functionality for all source implementations
|
|
5
|
+
*/
|
|
6
|
+
export class BaseSource {
|
|
7
|
+
/**
|
|
8
|
+
* Check if this source is available
|
|
9
|
+
* Override in subclasses for custom availability checks
|
|
10
|
+
*/
|
|
11
|
+
async isAvailable() {
|
|
12
|
+
if (this.requiresAuth()) {
|
|
13
|
+
const creds = await this.getCredentials();
|
|
14
|
+
return creds !== null && Object.keys(creds).length > 0;
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Whether this source requires authentication
|
|
20
|
+
* Override in subclasses that need auth
|
|
21
|
+
*/
|
|
22
|
+
requiresAuth() {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get help text for using this source
|
|
27
|
+
* Override in subclasses for custom help
|
|
28
|
+
*/
|
|
29
|
+
getHelp() {
|
|
30
|
+
return `${this.name}: ${this.description}`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get credentials for this source from config
|
|
34
|
+
*/
|
|
35
|
+
async getCredentials() {
|
|
36
|
+
return getSourceCredentials(this.name);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validate that credentials work
|
|
40
|
+
* Override in subclasses that need auth
|
|
41
|
+
*/
|
|
42
|
+
async validateCredentials() {
|
|
43
|
+
if (!this.requiresAuth()) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
const creds = await this.getCredentials();
|
|
47
|
+
return creds !== null && (creds.apiKey !== undefined || creds.token !== undefined);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Convert content to markdown if needed
|
|
51
|
+
* Helper for sources that fetch non-markdown content
|
|
52
|
+
*/
|
|
53
|
+
toMarkdown(content, format) {
|
|
54
|
+
if (!format || format === 'text') {
|
|
55
|
+
return content;
|
|
56
|
+
}
|
|
57
|
+
if (format === 'html') {
|
|
58
|
+
// Basic HTML to markdown conversion
|
|
59
|
+
return content
|
|
60
|
+
.replace(/<h1[^>]*>(.*?)<\/h1>/gi, '# $1\n')
|
|
61
|
+
.replace(/<h2[^>]*>(.*?)<\/h2>/gi, '## $1\n')
|
|
62
|
+
.replace(/<h3[^>]*>(.*?)<\/h3>/gi, '### $1\n')
|
|
63
|
+
.replace(/<p[^>]*>(.*?)<\/p>/gi, '$1\n\n')
|
|
64
|
+
.replace(/<li[^>]*>(.*?)<\/li>/gi, '- $1\n')
|
|
65
|
+
.replace(/<br\s*\/?>/gi, '\n')
|
|
66
|
+
.replace(/<[^>]+>/g, '')
|
|
67
|
+
.replace(/ /g, ' ')
|
|
68
|
+
.replace(/&/g, '&')
|
|
69
|
+
.replace(/</g, '<')
|
|
70
|
+
.replace(/>/g, '>')
|
|
71
|
+
.trim();
|
|
72
|
+
}
|
|
73
|
+
if (format === 'json') {
|
|
74
|
+
try {
|
|
75
|
+
const obj = JSON.parse(content);
|
|
76
|
+
return `\`\`\`json\n${JSON.stringify(obj, null, 2)}\n\`\`\``;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return content;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return content;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a standardized error message
|
|
86
|
+
*/
|
|
87
|
+
error(message) {
|
|
88
|
+
throw new Error(`[${this.name}] ${message}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Base class for builtin sources (file, url, pdf)
|
|
93
|
+
*/
|
|
94
|
+
export class BuiltinSource extends BaseSource {
|
|
95
|
+
type = 'builtin';
|
|
96
|
+
requiresAuth() {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Base class for integration sources (todoist, linear, notion, github)
|
|
102
|
+
*/
|
|
103
|
+
export class IntegrationSource extends BaseSource {
|
|
104
|
+
type = 'integration';
|
|
105
|
+
requiresAuth() {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get the required credential key name
|
|
110
|
+
* Override in subclasses
|
|
111
|
+
*/
|
|
112
|
+
getRequiredCredentialKey() {
|
|
113
|
+
return 'apiKey';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the API key for this integration
|
|
117
|
+
*/
|
|
118
|
+
async getApiKey() {
|
|
119
|
+
const creds = await this.getCredentials();
|
|
120
|
+
const key = this.getRequiredCredentialKey();
|
|
121
|
+
if (!creds || !creds[key]) {
|
|
122
|
+
this.error(`No ${key} configured. Run: ralph-starter config set ${this.name}.${key} <value>`);
|
|
123
|
+
}
|
|
124
|
+
return creds[key];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/sources/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BuiltinSource } from '../base.js';
|
|
2
|
+
import type { SourceOptions, SourceResult } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* File source - reads specs from local files and directories
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Single markdown files
|
|
8
|
+
* - Directories (reads all .md files)
|
|
9
|
+
* - Glob patterns (basic support)
|
|
10
|
+
*/
|
|
11
|
+
export declare class FileSource extends BuiltinSource {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
isAvailable(): Promise<boolean>;
|
|
15
|
+
fetch(identifier: string, options?: SourceOptions): Promise<SourceResult>;
|
|
16
|
+
private fetchFile;
|
|
17
|
+
private fetchDirectory;
|
|
18
|
+
private getLangFromExt;
|
|
19
|
+
getHelp(): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/sources/builtin/file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,aAAa;IAC3C,IAAI,SAAU;IACd,WAAW,SAAgD;IAErD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAoB/E,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,cAAc;IAyBtB,OAAO,IAAI,MAAM;CAmBlB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { basename, extname, join, resolve } from 'node:path';
|
|
3
|
+
import { BuiltinSource } from '../base.js';
|
|
4
|
+
/**
|
|
5
|
+
* File source - reads specs from local files and directories
|
|
6
|
+
*
|
|
7
|
+
* Supports:
|
|
8
|
+
* - Single markdown files
|
|
9
|
+
* - Directories (reads all .md files)
|
|
10
|
+
* - Glob patterns (basic support)
|
|
11
|
+
*/
|
|
12
|
+
export class FileSource extends BuiltinSource {
|
|
13
|
+
name = 'file';
|
|
14
|
+
description = 'Read specs from local files or directories';
|
|
15
|
+
async isAvailable() {
|
|
16
|
+
return true; // Always available
|
|
17
|
+
}
|
|
18
|
+
async fetch(identifier, options) {
|
|
19
|
+
const path = resolve(process.cwd(), identifier);
|
|
20
|
+
if (!existsSync(path)) {
|
|
21
|
+
this.error(`File or directory not found: ${identifier}`);
|
|
22
|
+
}
|
|
23
|
+
const stat = statSync(path);
|
|
24
|
+
if (stat.isFile()) {
|
|
25
|
+
return this.fetchFile(path);
|
|
26
|
+
}
|
|
27
|
+
if (stat.isDirectory()) {
|
|
28
|
+
return this.fetchDirectory(path, options);
|
|
29
|
+
}
|
|
30
|
+
this.error(`Unsupported file type: ${identifier}`);
|
|
31
|
+
}
|
|
32
|
+
fetchFile(filePath) {
|
|
33
|
+
const ext = extname(filePath).toLowerCase();
|
|
34
|
+
const name = basename(filePath, ext);
|
|
35
|
+
// Read file content
|
|
36
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
37
|
+
// For non-markdown files, wrap in code block
|
|
38
|
+
let markdown = content;
|
|
39
|
+
if (ext !== '.md' && ext !== '.markdown') {
|
|
40
|
+
const lang = this.getLangFromExt(ext);
|
|
41
|
+
markdown = `# ${name}\n\n\`\`\`${lang}\n${content}\n\`\`\``;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
content: markdown,
|
|
45
|
+
source: filePath,
|
|
46
|
+
title: name,
|
|
47
|
+
metadata: {
|
|
48
|
+
type: 'file',
|
|
49
|
+
extension: ext,
|
|
50
|
+
size: content.length,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
fetchDirectory(dirPath, options) {
|
|
55
|
+
const limit = options?.limit || 50;
|
|
56
|
+
const files = readdirSync(dirPath)
|
|
57
|
+
.filter((f) => {
|
|
58
|
+
const ext = extname(f).toLowerCase();
|
|
59
|
+
return ext === '.md' || ext === '.markdown' || ext === '.txt';
|
|
60
|
+
})
|
|
61
|
+
.slice(0, limit);
|
|
62
|
+
if (files.length === 0) {
|
|
63
|
+
this.error(`No markdown files found in directory: ${dirPath}`);
|
|
64
|
+
}
|
|
65
|
+
// Combine all files into one document
|
|
66
|
+
const sections = [];
|
|
67
|
+
const metadata = {
|
|
68
|
+
type: 'directory',
|
|
69
|
+
files: [],
|
|
70
|
+
};
|
|
71
|
+
for (const file of files) {
|
|
72
|
+
const filePath = join(dirPath, file);
|
|
73
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
74
|
+
const name = basename(file, extname(file));
|
|
75
|
+
sections.push(`# ${name}\n\n${content}`);
|
|
76
|
+
metadata.files.push(file);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
content: sections.join('\n\n---\n\n'),
|
|
80
|
+
source: dirPath,
|
|
81
|
+
title: basename(dirPath),
|
|
82
|
+
metadata,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
getLangFromExt(ext) {
|
|
86
|
+
const langMap = {
|
|
87
|
+
'.ts': 'typescript',
|
|
88
|
+
'.tsx': 'typescript',
|
|
89
|
+
'.js': 'javascript',
|
|
90
|
+
'.jsx': 'javascript',
|
|
91
|
+
'.py': 'python',
|
|
92
|
+
'.rb': 'ruby',
|
|
93
|
+
'.go': 'go',
|
|
94
|
+
'.rs': 'rust',
|
|
95
|
+
'.java': 'java',
|
|
96
|
+
'.json': 'json',
|
|
97
|
+
'.yaml': 'yaml',
|
|
98
|
+
'.yml': 'yaml',
|
|
99
|
+
'.xml': 'xml',
|
|
100
|
+
'.html': 'html',
|
|
101
|
+
'.css': 'css',
|
|
102
|
+
'.sql': 'sql',
|
|
103
|
+
'.sh': 'bash',
|
|
104
|
+
'.bash': 'bash',
|
|
105
|
+
'.txt': 'text',
|
|
106
|
+
};
|
|
107
|
+
return langMap[ext] || 'text';
|
|
108
|
+
}
|
|
109
|
+
getHelp() {
|
|
110
|
+
return `
|
|
111
|
+
file: Read specs from local files or directories
|
|
112
|
+
|
|
113
|
+
Usage:
|
|
114
|
+
ralph-starter run --from ./path/to/spec.md
|
|
115
|
+
ralph-starter run --from ./specs/
|
|
116
|
+
|
|
117
|
+
Examples:
|
|
118
|
+
ralph-starter run --from requirements.md
|
|
119
|
+
ralph-starter run --from ./docs/spec.md
|
|
120
|
+
ralph-starter run --from specs/ # Reads all .md files
|
|
121
|
+
|
|
122
|
+
Supported formats:
|
|
123
|
+
- Markdown files (.md, .markdown)
|
|
124
|
+
- Text files (.txt)
|
|
125
|
+
- Any text file (wrapped in code block)
|
|
126
|
+
`.trim();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/sources/builtin/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub HTML Scraper
|
|
3
|
+
*
|
|
4
|
+
* Parses GitHub pages to extract content without requiring authentication.
|
|
5
|
+
* Handles:
|
|
6
|
+
* - Single issues: /owner/repo/issues/123
|
|
7
|
+
* - Issue lists: /owner/repo/issues
|
|
8
|
+
* - File blobs: /owner/repo/blob/branch/path
|
|
9
|
+
* - README pages: /owner/repo (extracts readme)
|
|
10
|
+
*/
|
|
11
|
+
export interface GitHubIssue {
|
|
12
|
+
number: number;
|
|
13
|
+
title: string;
|
|
14
|
+
body: string;
|
|
15
|
+
state: 'open' | 'closed';
|
|
16
|
+
labels: string[];
|
|
17
|
+
author: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
comments: GitHubComment[];
|
|
20
|
+
}
|
|
21
|
+
export interface GitHubComment {
|
|
22
|
+
author: string;
|
|
23
|
+
body: string;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
}
|
|
26
|
+
export interface GitHubFile {
|
|
27
|
+
path: string;
|
|
28
|
+
content: string;
|
|
29
|
+
language?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Detect if a URL is a GitHub URL and what type
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectGitHubUrl(url: URL): {
|
|
35
|
+
type: 'issue' | 'issues' | 'blob' | 'repo' | 'raw' | null;
|
|
36
|
+
match: RegExpMatchArray | null;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Parse a single GitHub issue page
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseGitHubIssue(html: string, issueNumber: number): GitHubIssue;
|
|
42
|
+
/**
|
|
43
|
+
* Parse GitHub issue list page
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseGitHubIssueList(html: string, _owner: string, _repo: string): {
|
|
46
|
+
issues: Partial<GitHubIssue>[];
|
|
47
|
+
hasMore: boolean;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Parse GitHub file blob page
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseGitHubBlob(html: string, filepath: string): GitHubFile;
|
|
53
|
+
/**
|
|
54
|
+
* Convert a GitHub issue to markdown
|
|
55
|
+
*/
|
|
56
|
+
export declare function issueToMarkdown(issue: GitHubIssue): string;
|
|
57
|
+
/**
|
|
58
|
+
* Convert a GitHub file to markdown
|
|
59
|
+
*/
|
|
60
|
+
export declare function fileToMarkdown(file: GitHubFile): string;
|
|
61
|
+
/**
|
|
62
|
+
* Convert issue list to markdown
|
|
63
|
+
*/
|
|
64
|
+
export declare function issueListToMarkdown(issues: Partial<GitHubIssue>[], owner: string, repo: string): string;
|
|
65
|
+
//# sourceMappingURL=github-scraper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-scraper.d.ts","sourceRoot":"","sources":["../../../src/sources/builtin/github-scraper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG;IACzC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1D,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAChC,CAqCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CA+C/E;AA+BD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAkBtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAuD1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA8C1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAYR"}
|