cursor-recursive-rag 0.2.0-alpha.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 +354 -0
- package/bin/cursor-rag.js +18 -0
- package/dist/adapters/embeddings/index.d.ts +5 -0
- package/dist/adapters/embeddings/index.d.ts.map +1 -0
- package/dist/adapters/embeddings/index.js +16 -0
- package/dist/adapters/embeddings/index.js.map +1 -0
- package/dist/adapters/embeddings/ollama.d.ts +11 -0
- package/dist/adapters/embeddings/ollama.d.ts.map +1 -0
- package/dist/adapters/embeddings/ollama.js +30 -0
- package/dist/adapters/embeddings/ollama.js.map +1 -0
- package/dist/adapters/embeddings/openai.d.ts +11 -0
- package/dist/adapters/embeddings/openai.d.ts.map +1 -0
- package/dist/adapters/embeddings/openai.js +28 -0
- package/dist/adapters/embeddings/openai.js.map +1 -0
- package/dist/adapters/embeddings/types.d.ts +6 -0
- package/dist/adapters/embeddings/types.d.ts.map +1 -0
- package/dist/adapters/embeddings/types.js +2 -0
- package/dist/adapters/embeddings/types.js.map +1 -0
- package/dist/adapters/embeddings/xenova.d.ts +11 -0
- package/dist/adapters/embeddings/xenova.d.ts.map +1 -0
- package/dist/adapters/embeddings/xenova.js +26 -0
- package/dist/adapters/embeddings/xenova.js.map +1 -0
- package/dist/adapters/vector/chroma.d.ts +23 -0
- package/dist/adapters/vector/chroma.d.ts.map +1 -0
- package/dist/adapters/vector/chroma.js +91 -0
- package/dist/adapters/vector/chroma.js.map +1 -0
- package/dist/adapters/vector/index.d.ts +5 -0
- package/dist/adapters/vector/index.d.ts.map +1 -0
- package/dist/adapters/vector/index.js +22 -0
- package/dist/adapters/vector/index.js.map +1 -0
- package/dist/adapters/vector/memory.d.ts +22 -0
- package/dist/adapters/vector/memory.d.ts.map +1 -0
- package/dist/adapters/vector/memory.js +105 -0
- package/dist/adapters/vector/memory.js.map +1 -0
- package/dist/adapters/vector/qdrant.d.ts +14 -0
- package/dist/adapters/vector/qdrant.d.ts.map +1 -0
- package/dist/adapters/vector/qdrant.js +120 -0
- package/dist/adapters/vector/qdrant.js.map +1 -0
- package/dist/adapters/vector/redis.d.ts +31 -0
- package/dist/adapters/vector/redis.d.ts.map +1 -0
- package/dist/adapters/vector/redis.js +164 -0
- package/dist/adapters/vector/redis.js.map +1 -0
- package/dist/adapters/vector/vectorize.d.ts +10 -0
- package/dist/adapters/vector/vectorize.d.ts.map +1 -0
- package/dist/adapters/vector/vectorize.js +22 -0
- package/dist/adapters/vector/vectorize.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +3 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +23 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/ingest.d.ts +3 -0
- package/dist/cli/commands/ingest.d.ts.map +1 -0
- package/dist/cli/commands/ingest.js +133 -0
- package/dist/cli/commands/ingest.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +39 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +311 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +39 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/dashboard/public/index.html +819 -0
- package/dist/dashboard/server.d.ts +10 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +397 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/integrations/index.d.ts +3 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +3 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/mcp-gateway.d.ts +91 -0
- package/dist/integrations/mcp-gateway.d.ts.map +1 -0
- package/dist/integrations/mcp-gateway.js +128 -0
- package/dist/integrations/mcp-gateway.js.map +1 -0
- package/dist/integrations/openskills.d.ts +67 -0
- package/dist/integrations/openskills.d.ts.map +1 -0
- package/dist/integrations/openskills.js +223 -0
- package/dist/integrations/openskills.js.map +1 -0
- package/dist/proxy/index.d.ts +29 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +124 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +43 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/tools/crawl.d.ts +15 -0
- package/dist/server/tools/crawl.d.ts.map +1 -0
- package/dist/server/tools/crawl.js +97 -0
- package/dist/server/tools/crawl.js.map +1 -0
- package/dist/server/tools/gateway.d.ts +27 -0
- package/dist/server/tools/gateway.d.ts.map +1 -0
- package/dist/server/tools/gateway.js +58 -0
- package/dist/server/tools/gateway.js.map +1 -0
- package/dist/server/tools/index.d.ts +10 -0
- package/dist/server/tools/index.d.ts.map +1 -0
- package/dist/server/tools/index.js +302 -0
- package/dist/server/tools/index.js.map +1 -0
- package/dist/server/tools/ingest.d.ts +15 -0
- package/dist/server/tools/ingest.d.ts.map +1 -0
- package/dist/server/tools/ingest.js +84 -0
- package/dist/server/tools/ingest.js.map +1 -0
- package/dist/server/tools/list-sources.d.ts +9 -0
- package/dist/server/tools/list-sources.d.ts.map +1 -0
- package/dist/server/tools/list-sources.js +63 -0
- package/dist/server/tools/list-sources.js.map +1 -0
- package/dist/server/tools/recursive-query.d.ts +16 -0
- package/dist/server/tools/recursive-query.d.ts.map +1 -0
- package/dist/server/tools/recursive-query.js +65 -0
- package/dist/server/tools/recursive-query.js.map +1 -0
- package/dist/server/tools/search.d.ts +15 -0
- package/dist/server/tools/search.d.ts.map +1 -0
- package/dist/server/tools/search.js +20 -0
- package/dist/server/tools/search.js.map +1 -0
- package/dist/server/tools/skills.d.ts +30 -0
- package/dist/server/tools/skills.d.ts.map +1 -0
- package/dist/server/tools/skills.js +85 -0
- package/dist/server/tools/skills.js.map +1 -0
- package/dist/services/chunker.d.ts +3 -0
- package/dist/services/chunker.d.ts.map +1 -0
- package/dist/services/chunker.js +75 -0
- package/dist/services/chunker.js.map +1 -0
- package/dist/services/config.d.ts +8 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +66 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/query-decomposer.d.ts +44 -0
- package/dist/services/query-decomposer.d.ts.map +1 -0
- package/dist/services/query-decomposer.js +79 -0
- package/dist/services/query-decomposer.js.map +1 -0
- package/dist/types/index.d.ts +93 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export class MCPGatewayClient {
|
|
2
|
+
config;
|
|
3
|
+
constructor(ragConfig) {
|
|
4
|
+
this.config = ragConfig.mcpGateway || {
|
|
5
|
+
enabled: false,
|
|
6
|
+
url: 'http://localhost:3010'
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
isEnabled() {
|
|
10
|
+
return this.config.enabled;
|
|
11
|
+
}
|
|
12
|
+
async request(path, options = {}) {
|
|
13
|
+
const headers = {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
...options.headers
|
|
16
|
+
};
|
|
17
|
+
if (this.config.apiKey) {
|
|
18
|
+
headers['Authorization'] = `Bearer ${this.config.apiKey}`;
|
|
19
|
+
}
|
|
20
|
+
const response = await fetch(`${this.config.url}${path}`, {
|
|
21
|
+
...options,
|
|
22
|
+
headers
|
|
23
|
+
});
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
throw new Error(`MCP Gateway error: ${response.status} ${response.statusText}`);
|
|
26
|
+
}
|
|
27
|
+
return response.json();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Search available tools in the gateway
|
|
31
|
+
*/
|
|
32
|
+
async searchTools(query, options) {
|
|
33
|
+
const params = new URLSearchParams({ query });
|
|
34
|
+
if (options?.backend)
|
|
35
|
+
params.set('backend', options.backend);
|
|
36
|
+
if (options?.detailLevel)
|
|
37
|
+
params.set('detailLevel', options.detailLevel);
|
|
38
|
+
return this.request(`/api/code/tools/search?${params}`);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get tool schema (lazy loading)
|
|
42
|
+
*/
|
|
43
|
+
async getToolSchema(toolName, compact = true) {
|
|
44
|
+
const params = new URLSearchParams();
|
|
45
|
+
if (compact)
|
|
46
|
+
params.set('compact', 'true');
|
|
47
|
+
return this.request(`/api/code/tools/${toolName}/schema?${params}`);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Call a tool with optional result filtering
|
|
51
|
+
*/
|
|
52
|
+
async callTool(call) {
|
|
53
|
+
return this.request(`/api/code/tools/${call.toolName}/call`, {
|
|
54
|
+
method: 'POST',
|
|
55
|
+
body: JSON.stringify({
|
|
56
|
+
args: call.args,
|
|
57
|
+
options: call.filter
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Call tool with aggregation (for analytics)
|
|
63
|
+
*/
|
|
64
|
+
async callToolAggregate(toolName, args, aggregation) {
|
|
65
|
+
return this.request(`/api/code/tools/${toolName}/call/aggregate`, {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
body: JSON.stringify({ args, aggregation })
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Execute code in the gateway sandbox
|
|
72
|
+
*/
|
|
73
|
+
async executeCode(code, timeout = 30000) {
|
|
74
|
+
return this.request('/api/code/execute', {
|
|
75
|
+
method: 'POST',
|
|
76
|
+
body: JSON.stringify({ code, timeout })
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* List available skills from the gateway
|
|
81
|
+
*/
|
|
82
|
+
async listSkills() {
|
|
83
|
+
return this.request('/api/code/skills');
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Execute a gateway skill
|
|
87
|
+
*/
|
|
88
|
+
async executeSkill(name, inputs = {}) {
|
|
89
|
+
return this.request(`/api/code/skills/${name}/execute`, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
body: JSON.stringify(inputs)
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get gateway health status
|
|
96
|
+
*/
|
|
97
|
+
async getHealth() {
|
|
98
|
+
return this.request('/health');
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Search the RAG knowledge base through gateway (if configured)
|
|
102
|
+
* This allows using the gateway's token optimization on RAG results
|
|
103
|
+
*/
|
|
104
|
+
async searchWithOptimization(query, options) {
|
|
105
|
+
// Call through gateway's summarization endpoint if available
|
|
106
|
+
if (options?.summarize) {
|
|
107
|
+
return this.request('/api/code/tools/recursive_query/call', {
|
|
108
|
+
method: 'POST',
|
|
109
|
+
body: JSON.stringify({
|
|
110
|
+
args: { query },
|
|
111
|
+
options: {
|
|
112
|
+
maxTokens: options.maxTokens || 500,
|
|
113
|
+
format: 'summary'
|
|
114
|
+
}
|
|
115
|
+
})
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return this.callTool({
|
|
119
|
+
toolName: 'recursive_query',
|
|
120
|
+
args: { query },
|
|
121
|
+
filter: { format: 'summary' }
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export function createMCPGatewayClient(config) {
|
|
126
|
+
return new MCPGatewayClient(config);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=mcp-gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-gateway.js","sourceRoot":"","sources":["../../src/integrations/mcp-gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { RAGConfig } from '../types/index.js';
|
|
2
|
+
export interface OpenSkillsConfig {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
autoIngestSkills: boolean;
|
|
5
|
+
skillPaths?: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface Skill {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
location: 'project' | 'global' | 'universal';
|
|
11
|
+
path: string;
|
|
12
|
+
content?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SkillMetadata {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
tags?: string[];
|
|
18
|
+
}
|
|
19
|
+
export declare class OpenSkillsClient {
|
|
20
|
+
private config;
|
|
21
|
+
private skillCache;
|
|
22
|
+
constructor(ragConfig: RAGConfig);
|
|
23
|
+
isEnabled(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Check if openskills CLI is available
|
|
26
|
+
*/
|
|
27
|
+
isCliAvailable(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Discover all installed skills from configured paths
|
|
30
|
+
*/
|
|
31
|
+
discoverSkills(): Skill[];
|
|
32
|
+
private getSkillLocation;
|
|
33
|
+
private parseSkillMetadata;
|
|
34
|
+
/**
|
|
35
|
+
* Read a specific skill (using openskills CLI or direct file read)
|
|
36
|
+
*/
|
|
37
|
+
readSkill(name: string): Promise<Skill | null>;
|
|
38
|
+
/**
|
|
39
|
+
* List all available skills (using CLI or discovery)
|
|
40
|
+
*/
|
|
41
|
+
listSkills(): Promise<Skill[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Install skills from a source (GitHub repo, local path)
|
|
44
|
+
*/
|
|
45
|
+
installSkills(source: string, options?: {
|
|
46
|
+
global?: boolean;
|
|
47
|
+
universal?: boolean;
|
|
48
|
+
}): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Get skill content for RAG ingestion
|
|
51
|
+
* Returns the full SKILL.md content plus any referenced resources
|
|
52
|
+
*/
|
|
53
|
+
getSkillContent(skill: Skill): string;
|
|
54
|
+
/**
|
|
55
|
+
* Convert skills to documents for RAG ingestion
|
|
56
|
+
*/
|
|
57
|
+
skillsToDocuments(): Array<{
|
|
58
|
+
content: string;
|
|
59
|
+
metadata: {
|
|
60
|
+
source: string;
|
|
61
|
+
type: string;
|
|
62
|
+
name: string;
|
|
63
|
+
};
|
|
64
|
+
}>;
|
|
65
|
+
}
|
|
66
|
+
export declare function createOpenSkillsClient(config: RAGConfig): OpenSkillsClient;
|
|
67
|
+
//# sourceMappingURL=openskills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openskills.d.ts","sourceRoot":"","sources":["../../src/integrations/openskills.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAaD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAiC;gBAEvC,SAAS,EAAE,SAAS;IAQhC,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,cAAc,IAAI,OAAO;IASzB;;OAEG;IACH,cAAc,IAAI,KAAK,EAAE;IA4CzB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAmCpD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBpC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBpB;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM;IAuBrC;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAC1D,CAAC;CAYH;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CAE1E"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { existsSync, readFileSync, readdirSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { homedir } from 'os';
|
|
5
|
+
const DEFAULT_SKILL_PATHS = [
|
|
6
|
+
'./.agent/skills',
|
|
7
|
+
join(homedir(), '.agent/skills'),
|
|
8
|
+
'./.claude/skills',
|
|
9
|
+
join(homedir(), '.claude/skills'),
|
|
10
|
+
'./.cursor/skills',
|
|
11
|
+
join(homedir(), '.cursor/skills'),
|
|
12
|
+
join(homedir(), '.cursor/skills-cursor'),
|
|
13
|
+
join(homedir(), '.codex/skills')
|
|
14
|
+
];
|
|
15
|
+
export class OpenSkillsClient {
|
|
16
|
+
config;
|
|
17
|
+
skillCache = new Map();
|
|
18
|
+
constructor(ragConfig) {
|
|
19
|
+
this.config = ragConfig.openSkills || {
|
|
20
|
+
enabled: false,
|
|
21
|
+
autoIngestSkills: false,
|
|
22
|
+
skillPaths: DEFAULT_SKILL_PATHS
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
isEnabled() {
|
|
26
|
+
return this.config.enabled;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if openskills CLI is available
|
|
30
|
+
*/
|
|
31
|
+
isCliAvailable() {
|
|
32
|
+
try {
|
|
33
|
+
execSync('npx openskills --version', { stdio: 'ignore' });
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Discover all installed skills from configured paths
|
|
42
|
+
*/
|
|
43
|
+
discoverSkills() {
|
|
44
|
+
const skills = [];
|
|
45
|
+
const paths = this.config.skillPaths || DEFAULT_SKILL_PATHS;
|
|
46
|
+
for (const basePath of paths) {
|
|
47
|
+
const resolvedPath = basePath.startsWith('~')
|
|
48
|
+
? join(homedir(), basePath.slice(1))
|
|
49
|
+
: basePath;
|
|
50
|
+
if (!existsSync(resolvedPath))
|
|
51
|
+
continue;
|
|
52
|
+
try {
|
|
53
|
+
const entries = readdirSync(resolvedPath, { withFileTypes: true });
|
|
54
|
+
for (const entry of entries) {
|
|
55
|
+
if (!entry.isDirectory())
|
|
56
|
+
continue;
|
|
57
|
+
const skillDir = join(resolvedPath, entry.name);
|
|
58
|
+
const skillFile = join(skillDir, 'SKILL.md');
|
|
59
|
+
if (existsSync(skillFile)) {
|
|
60
|
+
const content = readFileSync(skillFile, 'utf-8');
|
|
61
|
+
const metadata = this.parseSkillMetadata(content);
|
|
62
|
+
const skill = {
|
|
63
|
+
name: metadata.name || entry.name,
|
|
64
|
+
description: metadata.description || '',
|
|
65
|
+
location: this.getSkillLocation(resolvedPath),
|
|
66
|
+
path: skillDir,
|
|
67
|
+
content
|
|
68
|
+
};
|
|
69
|
+
skills.push(skill);
|
|
70
|
+
this.skillCache.set(skill.name, skill);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.warn(`Failed to read skills from ${resolvedPath}:`, error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return skills;
|
|
79
|
+
}
|
|
80
|
+
getSkillLocation(path) {
|
|
81
|
+
if (path.includes('.agent'))
|
|
82
|
+
return 'universal';
|
|
83
|
+
if (path.startsWith(homedir()))
|
|
84
|
+
return 'global';
|
|
85
|
+
return 'project';
|
|
86
|
+
}
|
|
87
|
+
parseSkillMetadata(content) {
|
|
88
|
+
const metadata = { name: '', description: '' };
|
|
89
|
+
// Parse YAML frontmatter
|
|
90
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
91
|
+
if (frontmatterMatch) {
|
|
92
|
+
const frontmatter = frontmatterMatch[1];
|
|
93
|
+
const nameMatch = frontmatter.match(/^name:\s*(.+)$/m);
|
|
94
|
+
if (nameMatch)
|
|
95
|
+
metadata.name = nameMatch[1].trim();
|
|
96
|
+
const descMatch = frontmatter.match(/^description:\s*(.+)$/m);
|
|
97
|
+
if (descMatch)
|
|
98
|
+
metadata.description = descMatch[1].trim();
|
|
99
|
+
const tagsMatch = frontmatter.match(/^tags:\s*\[(.+)\]$/m);
|
|
100
|
+
if (tagsMatch) {
|
|
101
|
+
metadata.tags = tagsMatch[1].split(',').map(t => t.trim());
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return metadata;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Read a specific skill (using openskills CLI or direct file read)
|
|
108
|
+
*/
|
|
109
|
+
async readSkill(name) {
|
|
110
|
+
// Check cache first
|
|
111
|
+
if (this.skillCache.has(name)) {
|
|
112
|
+
return this.skillCache.get(name);
|
|
113
|
+
}
|
|
114
|
+
// Try CLI if available
|
|
115
|
+
if (this.isCliAvailable()) {
|
|
116
|
+
try {
|
|
117
|
+
const output = execSync(`npx openskills read ${name}`, {
|
|
118
|
+
encoding: 'utf-8',
|
|
119
|
+
stdio: ['pipe', 'pipe', 'ignore']
|
|
120
|
+
});
|
|
121
|
+
// Parse the skill from CLI output
|
|
122
|
+
const skill = {
|
|
123
|
+
name,
|
|
124
|
+
description: '',
|
|
125
|
+
location: 'project',
|
|
126
|
+
path: '',
|
|
127
|
+
content: output
|
|
128
|
+
};
|
|
129
|
+
this.skillCache.set(name, skill);
|
|
130
|
+
return skill;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
// Fall through to manual discovery
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Manual discovery
|
|
137
|
+
this.discoverSkills();
|
|
138
|
+
return this.skillCache.get(name) || null;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* List all available skills (using CLI or discovery)
|
|
142
|
+
*/
|
|
143
|
+
async listSkills() {
|
|
144
|
+
if (this.isCliAvailable()) {
|
|
145
|
+
try {
|
|
146
|
+
const output = execSync('npx openskills list --json', {
|
|
147
|
+
encoding: 'utf-8',
|
|
148
|
+
stdio: ['pipe', 'pipe', 'ignore']
|
|
149
|
+
});
|
|
150
|
+
const skills = JSON.parse(output);
|
|
151
|
+
return skills;
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// Fall through to manual discovery
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return this.discoverSkills();
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Install skills from a source (GitHub repo, local path)
|
|
161
|
+
*/
|
|
162
|
+
async installSkills(source, options) {
|
|
163
|
+
if (!this.isCliAvailable()) {
|
|
164
|
+
console.warn('OpenSkills CLI not available. Install with: npm i -g openskills');
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
const args = ['openskills', 'install', source];
|
|
168
|
+
if (options?.global)
|
|
169
|
+
args.push('--global');
|
|
170
|
+
if (options?.universal)
|
|
171
|
+
args.push('--universal');
|
|
172
|
+
try {
|
|
173
|
+
execSync(`npx ${args.join(' ')}`, { stdio: 'inherit' });
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get skill content for RAG ingestion
|
|
182
|
+
* Returns the full SKILL.md content plus any referenced resources
|
|
183
|
+
*/
|
|
184
|
+
getSkillContent(skill) {
|
|
185
|
+
let content = skill.content || '';
|
|
186
|
+
// Check for referenced resources
|
|
187
|
+
const resourcesDir = join(skill.path, 'references');
|
|
188
|
+
if (existsSync(resourcesDir)) {
|
|
189
|
+
try {
|
|
190
|
+
const resources = readdirSync(resourcesDir);
|
|
191
|
+
for (const resource of resources) {
|
|
192
|
+
if (resource.endsWith('.md') || resource.endsWith('.txt')) {
|
|
193
|
+
const resourcePath = join(resourcesDir, resource);
|
|
194
|
+
const resourceContent = readFileSync(resourcePath, 'utf-8');
|
|
195
|
+
content += `\n\n--- Resource: ${resource} ---\n${resourceContent}`;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Ignore resource read errors
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return content;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Convert skills to documents for RAG ingestion
|
|
207
|
+
*/
|
|
208
|
+
skillsToDocuments() {
|
|
209
|
+
const skills = this.discoverSkills();
|
|
210
|
+
return skills.map(skill => ({
|
|
211
|
+
content: this.getSkillContent(skill),
|
|
212
|
+
metadata: {
|
|
213
|
+
source: `skill:${skill.name}`,
|
|
214
|
+
type: 'skill',
|
|
215
|
+
name: skill.name
|
|
216
|
+
}
|
|
217
|
+
}));
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
export function createOpenSkillsClient(config) {
|
|
221
|
+
return new OpenSkillsClient(config);
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=openskills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openskills.js","sourceRoot":"","sources":["../../src/integrations/openskills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RAGConfig } from '../types/index.js';
|
|
2
|
+
export interface ProxyConfig {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
driver: 'packetstream' | 'smartproxy' | 'none';
|
|
5
|
+
host?: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
username?: string;
|
|
8
|
+
password?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ProxyResult {
|
|
11
|
+
proxyUrl: string | null;
|
|
12
|
+
headers: Record<string, string>;
|
|
13
|
+
userAgent: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class ProxyManager {
|
|
16
|
+
private config;
|
|
17
|
+
constructor(ragConfig: RAGConfig);
|
|
18
|
+
isEnabled(): boolean;
|
|
19
|
+
getProxyConfig(country?: string, sessionId?: string): ProxyResult;
|
|
20
|
+
private buildProxyUrl;
|
|
21
|
+
private getDefaultHost;
|
|
22
|
+
private getDefaultPort;
|
|
23
|
+
/**
|
|
24
|
+
* Create a fetch function that uses the proxy
|
|
25
|
+
*/
|
|
26
|
+
fetchWithProxy(url: string, options?: RequestInit): Promise<Response>;
|
|
27
|
+
}
|
|
28
|
+
export declare function createProxyManager(config: RAGConfig): ProxyManager;
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAcD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;gBAEhB,SAAS,EAAE,SAAS;IAOhC,SAAS,IAAI,OAAO;IAIpB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW;IA6BjE,OAAO,CAAC,aAAa;IAsCrB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAuBhF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAElE"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
const USER_AGENTS = [
|
|
2
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
3
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
4
|
+
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0',
|
|
5
|
+
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15',
|
|
6
|
+
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
7
|
+
];
|
|
8
|
+
function getRandomUserAgent() {
|
|
9
|
+
return USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)];
|
|
10
|
+
}
|
|
11
|
+
export class ProxyManager {
|
|
12
|
+
config;
|
|
13
|
+
constructor(ragConfig) {
|
|
14
|
+
this.config = ragConfig.proxy || {
|
|
15
|
+
enabled: false,
|
|
16
|
+
driver: 'none'
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
isEnabled() {
|
|
20
|
+
return this.config.enabled && this.config.driver !== 'none';
|
|
21
|
+
}
|
|
22
|
+
getProxyConfig(country, sessionId) {
|
|
23
|
+
const userAgent = getRandomUserAgent();
|
|
24
|
+
if (!this.isEnabled()) {
|
|
25
|
+
return {
|
|
26
|
+
proxyUrl: null,
|
|
27
|
+
headers: {
|
|
28
|
+
'User-Agent': userAgent,
|
|
29
|
+
},
|
|
30
|
+
userAgent,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const proxyUrl = this.buildProxyUrl(country, sessionId);
|
|
34
|
+
return {
|
|
35
|
+
proxyUrl,
|
|
36
|
+
headers: {
|
|
37
|
+
'User-Agent': userAgent,
|
|
38
|
+
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
|
|
39
|
+
'Accept-Language': 'en-US,en;q=0.5',
|
|
40
|
+
'Accept-Encoding': 'gzip, deflate, br',
|
|
41
|
+
'Connection': 'keep-alive',
|
|
42
|
+
'Upgrade-Insecure-Requests': '1',
|
|
43
|
+
},
|
|
44
|
+
userAgent,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
buildProxyUrl(country, sessionId) {
|
|
48
|
+
const { driver, host, port, username, password } = this.config;
|
|
49
|
+
if (!username || !password) {
|
|
50
|
+
throw new Error('Proxy username and password are required');
|
|
51
|
+
}
|
|
52
|
+
let finalUsername = username;
|
|
53
|
+
// PacketStream-specific formatting
|
|
54
|
+
if (driver === 'packetstream') {
|
|
55
|
+
// Country suffix: username_country-US
|
|
56
|
+
if (country) {
|
|
57
|
+
finalUsername += `_country-${country}`;
|
|
58
|
+
}
|
|
59
|
+
// Session ID for sticky sessions: username_session-abc123
|
|
60
|
+
if (sessionId) {
|
|
61
|
+
finalUsername += `_session-${sessionId}`;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// SmartProxy-specific formatting
|
|
65
|
+
if (driver === 'smartproxy') {
|
|
66
|
+
// SmartProxy uses different format: user-country-us:password
|
|
67
|
+
if (country) {
|
|
68
|
+
finalUsername = `${username}-country-${country.toLowerCase()}`;
|
|
69
|
+
}
|
|
70
|
+
if (sessionId) {
|
|
71
|
+
finalUsername += `-session-${sessionId}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const proxyHost = host || this.getDefaultHost();
|
|
75
|
+
const proxyPort = port || this.getDefaultPort();
|
|
76
|
+
return `http://${finalUsername}:${password}@${proxyHost}:${proxyPort}`;
|
|
77
|
+
}
|
|
78
|
+
getDefaultHost() {
|
|
79
|
+
switch (this.config.driver) {
|
|
80
|
+
case 'packetstream':
|
|
81
|
+
return 'proxy.packetstream.io';
|
|
82
|
+
case 'smartproxy':
|
|
83
|
+
return 'gate.smartproxy.com';
|
|
84
|
+
default:
|
|
85
|
+
return 'localhost';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
getDefaultPort() {
|
|
89
|
+
switch (this.config.driver) {
|
|
90
|
+
case 'packetstream':
|
|
91
|
+
return 31112;
|
|
92
|
+
case 'smartproxy':
|
|
93
|
+
return 7000;
|
|
94
|
+
default:
|
|
95
|
+
return 8080;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a fetch function that uses the proxy
|
|
100
|
+
*/
|
|
101
|
+
async fetchWithProxy(url, options = {}) {
|
|
102
|
+
const proxyConfig = this.getProxyConfig();
|
|
103
|
+
const fetchOptions = {
|
|
104
|
+
...options,
|
|
105
|
+
headers: {
|
|
106
|
+
...proxyConfig.headers,
|
|
107
|
+
...options.headers,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
// Note: Node.js fetch doesn't natively support proxies
|
|
111
|
+
// For proxy support, we'd need to use a library like node-fetch-native with proxy-agent
|
|
112
|
+
// or undici with ProxyAgent. For now, we'll set headers and let users
|
|
113
|
+
// configure system-level proxy if needed.
|
|
114
|
+
if (proxyConfig.proxyUrl) {
|
|
115
|
+
// In a full implementation, use undici ProxyAgent or similar
|
|
116
|
+
console.warn('Proxy URL configured but Node.js fetch requires additional setup. Using direct connection with proxy headers.');
|
|
117
|
+
}
|
|
118
|
+
return fetch(url, fetchOptions);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export function createProxyManager(config) {
|
|
122
|
+
return new ProxyManager(config);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/proxy/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { loadConfig } from '../services/config.js';
|
|
4
|
+
import { createVectorStore } from '../adapters/vector/index.js';
|
|
5
|
+
import { createEmbedder } from '../adapters/embeddings/index.js';
|
|
6
|
+
import { registerTools } from './tools/index.js';
|
|
7
|
+
async function main() {
|
|
8
|
+
// Load configuration from environment or default path
|
|
9
|
+
const configPath = process.env.CURSOR_RAG_CONFIG;
|
|
10
|
+
let config;
|
|
11
|
+
try {
|
|
12
|
+
if (configPath) {
|
|
13
|
+
// Temporarily override CONFIG_FILE if provided via env
|
|
14
|
+
const { CONFIG_FILE } = await import('../services/config.js');
|
|
15
|
+
const { readFileSync } = await import('fs');
|
|
16
|
+
const content = readFileSync(configPath, 'utf-8');
|
|
17
|
+
config = JSON.parse(content);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
config = loadConfig();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
console.error(`Failed to load config: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const vectorStore = createVectorStore(config.vectorStore, config);
|
|
28
|
+
const embedder = await createEmbedder(config.embeddings, config);
|
|
29
|
+
const server = new Server({
|
|
30
|
+
name: 'recursive-rag',
|
|
31
|
+
version: '0.1.0'
|
|
32
|
+
}, {
|
|
33
|
+
capabilities: { tools: {} }
|
|
34
|
+
});
|
|
35
|
+
registerTools(server, { vectorStore, embedder, config });
|
|
36
|
+
const transport = new StdioServerTransport();
|
|
37
|
+
await server.connect(transport);
|
|
38
|
+
}
|
|
39
|
+
main().catch((error) => {
|
|
40
|
+
console.error('Fatal error in MCP server:', error);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
});
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAKjF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,KAAK,UAAU,IAAI;IACjB,sDAAsD;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACjD,IAAI,MAAM,CAAC;IAEX,IAAI,CAAC;QACH,IAAI,UAAU,EAAE,CAAC;YACf,uDAAuD;YACvD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC9D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,UAAU,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACpG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;KAC5B,CACF,CAAC;IAEF,aAAa,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|