ctxinit 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +484 -0
- package/bin/ctx.js +3 -0
- package/dist/analysis/index.d.ts +2 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +18 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/static-analysis.d.ts +79 -0
- package/dist/analysis/static-analysis.d.ts.map +1 -0
- package/dist/analysis/static-analysis.js +279 -0
- package/dist/analysis/static-analysis.js.map +1 -0
- package/dist/bootstrap/index.d.ts +8 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +13 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/orchestrator.d.ts +48 -0
- package/dist/bootstrap/orchestrator.d.ts.map +1 -0
- package/dist/bootstrap/orchestrator.js +363 -0
- package/dist/bootstrap/orchestrator.js.map +1 -0
- package/dist/bootstrap/validator.d.ts +25 -0
- package/dist/bootstrap/validator.d.ts.map +1 -0
- package/dist/bootstrap/validator.js +412 -0
- package/dist/bootstrap/validator.js.map +1 -0
- package/dist/build/atomic.d.ts +74 -0
- package/dist/build/atomic.d.ts.map +1 -0
- package/dist/build/atomic.js +235 -0
- package/dist/build/atomic.js.map +1 -0
- package/dist/build/index.d.ts +10 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +26 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/lock.d.ts +102 -0
- package/dist/build/lock.d.ts.map +1 -0
- package/dist/build/lock.js +297 -0
- package/dist/build/lock.js.map +1 -0
- package/dist/build/manifest.d.ts +138 -0
- package/dist/build/manifest.d.ts.map +1 -0
- package/dist/build/manifest.js +269 -0
- package/dist/build/manifest.js.map +1 -0
- package/dist/build/orchestrator.d.ts +103 -0
- package/dist/build/orchestrator.d.ts.map +1 -0
- package/dist/build/orchestrator.js +524 -0
- package/dist/build/orchestrator.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +77 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +527 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/build.d.ts +32 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +156 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/diff.d.ts +23 -0
- package/dist/cli/diff.d.ts.map +1 -0
- package/dist/cli/diff.js +226 -0
- package/dist/cli/diff.js.map +1 -0
- package/dist/cli/hooks.d.ts +29 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +176 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/init.d.ts +53 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +254 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/lint.d.ts +46 -0
- package/dist/cli/lint.d.ts.map +1 -0
- package/dist/cli/lint.js +210 -0
- package/dist/cli/lint.js.map +1 -0
- package/dist/cli/migrate.d.ts +28 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +350 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/verify.d.ts +21 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +209 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +262 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler/agents-compiler.d.ts +24 -0
- package/dist/compiler/agents-compiler.d.ts.map +1 -0
- package/dist/compiler/agents-compiler.js +192 -0
- package/dist/compiler/agents-compiler.js.map +1 -0
- package/dist/compiler/base-compiler.d.ts +152 -0
- package/dist/compiler/base-compiler.d.ts.map +1 -0
- package/dist/compiler/base-compiler.js +180 -0
- package/dist/compiler/base-compiler.js.map +1 -0
- package/dist/compiler/claude-compiler.d.ts +24 -0
- package/dist/compiler/claude-compiler.d.ts.map +1 -0
- package/dist/compiler/claude-compiler.js +182 -0
- package/dist/compiler/claude-compiler.js.map +1 -0
- package/dist/compiler/cursor-compiler.d.ts +33 -0
- package/dist/compiler/cursor-compiler.d.ts.map +1 -0
- package/dist/compiler/cursor-compiler.js +136 -0
- package/dist/compiler/cursor-compiler.js.map +1 -0
- package/dist/compiler/index.d.ts +7 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +24 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/rule-selector.d.ts +115 -0
- package/dist/compiler/rule-selector.d.ts.map +1 -0
- package/dist/compiler/rule-selector.js +273 -0
- package/dist/compiler/rule-selector.js.map +1 -0
- package/dist/compiler/token-estimator.d.ts +74 -0
- package/dist/compiler/token-estimator.d.ts.map +1 -0
- package/dist/compiler/token-estimator.js +191 -0
- package/dist/compiler/token-estimator.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +18 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +48 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +175 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/git/gitignore.d.ts +59 -0
- package/dist/git/gitignore.d.ts.map +1 -0
- package/dist/git/gitignore.js +268 -0
- package/dist/git/gitignore.js.map +1 -0
- package/dist/git/hooks.d.ts +34 -0
- package/dist/git/hooks.d.ts.map +1 -0
- package/dist/git/hooks.js +129 -0
- package/dist/git/hooks.js.map +1 -0
- package/dist/git/husky.d.ts +52 -0
- package/dist/git/husky.d.ts.map +1 -0
- package/dist/git/husky.js +219 -0
- package/dist/git/husky.js.map +1 -0
- package/dist/git/index.d.ts +9 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +15 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/base-provider.d.ts +43 -0
- package/dist/llm/base-provider.d.ts.map +1 -0
- package/dist/llm/base-provider.js +91 -0
- package/dist/llm/base-provider.js.map +1 -0
- package/dist/llm/index.d.ts +17 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +36 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/prompts/bootstrap-prompt.d.ts +27 -0
- package/dist/llm/prompts/bootstrap-prompt.d.ts.map +1 -0
- package/dist/llm/prompts/bootstrap-prompt.js +278 -0
- package/dist/llm/prompts/bootstrap-prompt.js.map +1 -0
- package/dist/llm/prompts/index.d.ts +5 -0
- package/dist/llm/prompts/index.d.ts.map +1 -0
- package/dist/llm/prompts/index.js +11 -0
- package/dist/llm/prompts/index.js.map +1 -0
- package/dist/llm/provider-factory.d.ts +27 -0
- package/dist/llm/provider-factory.d.ts.map +1 -0
- package/dist/llm/provider-factory.js +213 -0
- package/dist/llm/provider-factory.js.map +1 -0
- package/dist/llm/providers/claude-api.d.ts +21 -0
- package/dist/llm/providers/claude-api.d.ts.map +1 -0
- package/dist/llm/providers/claude-api.js +110 -0
- package/dist/llm/providers/claude-api.js.map +1 -0
- package/dist/llm/providers/claude-code.d.ts +21 -0
- package/dist/llm/providers/claude-code.d.ts.map +1 -0
- package/dist/llm/providers/claude-code.js +120 -0
- package/dist/llm/providers/claude-code.js.map +1 -0
- package/dist/llm/providers/codex-cli.d.ts +25 -0
- package/dist/llm/providers/codex-cli.d.ts.map +1 -0
- package/dist/llm/providers/codex-cli.js +129 -0
- package/dist/llm/providers/codex-cli.js.map +1 -0
- package/dist/llm/providers/cursor-cli.d.ts +24 -0
- package/dist/llm/providers/cursor-cli.d.ts.map +1 -0
- package/dist/llm/providers/cursor-cli.js +106 -0
- package/dist/llm/providers/cursor-cli.js.map +1 -0
- package/dist/llm/providers/gemini-api.d.ts +20 -0
- package/dist/llm/providers/gemini-api.d.ts.map +1 -0
- package/dist/llm/providers/gemini-api.js +121 -0
- package/dist/llm/providers/gemini-api.js.map +1 -0
- package/dist/llm/providers/gemini-cli.d.ts +20 -0
- package/dist/llm/providers/gemini-cli.d.ts.map +1 -0
- package/dist/llm/providers/gemini-cli.js +109 -0
- package/dist/llm/providers/gemini-cli.js.map +1 -0
- package/dist/llm/providers/interactive.d.ts +42 -0
- package/dist/llm/providers/interactive.d.ts.map +1 -0
- package/dist/llm/providers/interactive.js +200 -0
- package/dist/llm/providers/interactive.js.map +1 -0
- package/dist/llm/providers/openai-api.d.ts +21 -0
- package/dist/llm/providers/openai-api.d.ts.map +1 -0
- package/dist/llm/providers/openai-api.js +107 -0
- package/dist/llm/providers/openai-api.js.map +1 -0
- package/dist/llm/types.d.ts +128 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +8 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/parser/index.d.ts +3 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +19 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/path-security.d.ts +40 -0
- package/dist/parser/path-security.d.ts.map +1 -0
- package/dist/parser/path-security.js +183 -0
- package/dist/parser/path-security.js.map +1 -0
- package/dist/parser/rule-parser.d.ts +50 -0
- package/dist/parser/rule-parser.d.ts.map +1 -0
- package/dist/parser/rule-parser.js +203 -0
- package/dist/parser/rule-parser.js.map +1 -0
- package/dist/schemas/config.d.ts +202 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +96 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +19 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/rule.d.ts +67 -0
- package/dist/schemas/rule.d.ts.map +1 -0
- package/dist/schemas/rule.js +44 -0
- package/dist/schemas/rule.js.map +1 -0
- package/package.json +69 -0
- package/templates/architecture.md +35 -0
- package/templates/bootstrap-prompt.md +242 -0
- package/templates/config.yaml +25 -0
- package/templates/project.md +44 -0
- package/templates/rules/example.md +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-api.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/claude-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAA2C;IAC1E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA8B;gBAEvD,MAAM,EAAE,iBAAiB;IAIrC,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,YAAY,IAAI,uBAAuB,CAQ1C;IAEK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAsF1D"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Claude API Provider
|
|
4
|
+
*
|
|
5
|
+
* Uses Anthropic's Claude API directly via HTTP.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ClaudeAPIProvider = void 0;
|
|
9
|
+
const base_provider_1 = require("../base-provider");
|
|
10
|
+
/**
|
|
11
|
+
* Claude API provider implementation
|
|
12
|
+
*/
|
|
13
|
+
class ClaudeAPIProvider extends base_provider_1.BaseLLMProvider {
|
|
14
|
+
static API_URL = 'https://api.anthropic.com/v1/messages';
|
|
15
|
+
static DEFAULT_MODEL = 'claude-sonnet-4-20250514';
|
|
16
|
+
constructor(config) {
|
|
17
|
+
super(config);
|
|
18
|
+
}
|
|
19
|
+
get type() {
|
|
20
|
+
return 'claude-api';
|
|
21
|
+
}
|
|
22
|
+
get name() {
|
|
23
|
+
return 'Claude API (Anthropic)';
|
|
24
|
+
}
|
|
25
|
+
get capabilities() {
|
|
26
|
+
return {
|
|
27
|
+
jsonMode: false, // Claude doesn't have native JSON mode, but follows instructions well
|
|
28
|
+
systemPrompt: true,
|
|
29
|
+
streaming: true,
|
|
30
|
+
maxContextTokens: 200000,
|
|
31
|
+
maxOutputTokens: 8192,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async isAvailable() {
|
|
35
|
+
const apiKey = this.config.apiKey || process.env.ANTHROPIC_API_KEY;
|
|
36
|
+
return !!apiKey;
|
|
37
|
+
}
|
|
38
|
+
async complete(request) {
|
|
39
|
+
const apiKey = this.config.apiKey || process.env.ANTHROPIC_API_KEY;
|
|
40
|
+
if (!apiKey) {
|
|
41
|
+
throw new Error('ANTHROPIC_API_KEY not set');
|
|
42
|
+
}
|
|
43
|
+
const model = this.config.model || ClaudeAPIProvider.DEFAULT_MODEL;
|
|
44
|
+
const maxTokens = this.getMaxTokens(request);
|
|
45
|
+
const temperature = this.getTemperature(request);
|
|
46
|
+
// Build messages array
|
|
47
|
+
const messages = request.messages
|
|
48
|
+
.filter(m => m.role !== 'system')
|
|
49
|
+
.map(m => ({
|
|
50
|
+
role: m.role,
|
|
51
|
+
content: m.content,
|
|
52
|
+
}));
|
|
53
|
+
// Build system prompt
|
|
54
|
+
let systemPrompt = request.systemPrompt || '';
|
|
55
|
+
const systemMessages = request.messages.filter(m => m.role === 'system');
|
|
56
|
+
if (systemMessages.length > 0) {
|
|
57
|
+
systemPrompt = [systemPrompt, ...systemMessages.map(m => m.content)]
|
|
58
|
+
.filter(Boolean)
|
|
59
|
+
.join('\n\n');
|
|
60
|
+
}
|
|
61
|
+
// Add JSON instruction if requested
|
|
62
|
+
if (request.jsonMode) {
|
|
63
|
+
systemPrompt += '\n\nIMPORTANT: Respond with valid JSON only. No markdown, no explanation, just the JSON object.';
|
|
64
|
+
}
|
|
65
|
+
const body = {
|
|
66
|
+
model,
|
|
67
|
+
max_tokens: maxTokens,
|
|
68
|
+
temperature,
|
|
69
|
+
...(systemPrompt && { system: systemPrompt }),
|
|
70
|
+
messages,
|
|
71
|
+
};
|
|
72
|
+
const controller = new AbortController();
|
|
73
|
+
const timeoutId = setTimeout(() => controller.abort(), this.getTimeout());
|
|
74
|
+
try {
|
|
75
|
+
const response = await fetch(ClaudeAPIProvider.API_URL, {
|
|
76
|
+
method: 'POST',
|
|
77
|
+
headers: {
|
|
78
|
+
'Content-Type': 'application/json',
|
|
79
|
+
'x-api-key': apiKey,
|
|
80
|
+
'anthropic-version': '2023-06-01',
|
|
81
|
+
},
|
|
82
|
+
body: JSON.stringify(body),
|
|
83
|
+
signal: controller.signal,
|
|
84
|
+
});
|
|
85
|
+
if (!response.ok) {
|
|
86
|
+
const errorText = await response.text();
|
|
87
|
+
throw new Error(`Claude API error (${response.status}): ${errorText}`);
|
|
88
|
+
}
|
|
89
|
+
const data = await response.json();
|
|
90
|
+
const content = data.content
|
|
91
|
+
.filter(c => c.type === 'text')
|
|
92
|
+
.map(c => c.text)
|
|
93
|
+
.join('');
|
|
94
|
+
return {
|
|
95
|
+
content,
|
|
96
|
+
promptTokens: data.usage?.input_tokens,
|
|
97
|
+
completionTokens: data.usage?.output_tokens,
|
|
98
|
+
totalTokens: data.usage
|
|
99
|
+
? data.usage.input_tokens + data.usage.output_tokens
|
|
100
|
+
: undefined,
|
|
101
|
+
metadata: { model },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
clearTimeout(timeoutId);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.ClaudeAPIProvider = ClaudeAPIProvider;
|
|
110
|
+
//# sourceMappingURL=claude-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-api.js","sourceRoot":"","sources":["../../../src/llm/providers/claude-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code CLI Provider
|
|
3
|
+
*
|
|
4
|
+
* Uses the `claude` CLI tool for LLM invocation.
|
|
5
|
+
* Supports both interactive and piped modes.
|
|
6
|
+
*/
|
|
7
|
+
import { LLMProviderType, LLMProviderConfig, LLMProviderCapabilities, LLMRequest, LLMResponse } from '../types';
|
|
8
|
+
import { BaseLLMProvider } from '../base-provider';
|
|
9
|
+
/**
|
|
10
|
+
* Claude Code CLI provider implementation
|
|
11
|
+
*/
|
|
12
|
+
export declare class ClaudeCodeProvider extends BaseLLMProvider {
|
|
13
|
+
private cliCommand;
|
|
14
|
+
constructor(config: LLMProviderConfig);
|
|
15
|
+
get type(): LLMProviderType;
|
|
16
|
+
get name(): string;
|
|
17
|
+
get capabilities(): LLMProviderCapabilities;
|
|
18
|
+
isAvailable(): Promise<boolean>;
|
|
19
|
+
complete(request: LLMRequest): Promise<LLMResponse>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,iBAAiB;IAKrC,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,YAAY,IAAI,uBAAuB,CAQ1C;IAEK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAY/B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAqF1D"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Claude Code CLI Provider
|
|
4
|
+
*
|
|
5
|
+
* Uses the `claude` CLI tool for LLM invocation.
|
|
6
|
+
* Supports both interactive and piped modes.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ClaudeCodeProvider = void 0;
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const base_provider_1 = require("../base-provider");
|
|
12
|
+
/**
|
|
13
|
+
* Claude Code CLI provider implementation
|
|
14
|
+
*/
|
|
15
|
+
class ClaudeCodeProvider extends base_provider_1.BaseLLMProvider {
|
|
16
|
+
cliCommand;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
super(config);
|
|
19
|
+
this.cliCommand = config.cliPath || 'claude';
|
|
20
|
+
}
|
|
21
|
+
get type() {
|
|
22
|
+
return 'claude-code';
|
|
23
|
+
}
|
|
24
|
+
get name() {
|
|
25
|
+
return 'Claude Code CLI';
|
|
26
|
+
}
|
|
27
|
+
get capabilities() {
|
|
28
|
+
return {
|
|
29
|
+
jsonMode: false,
|
|
30
|
+
systemPrompt: true,
|
|
31
|
+
streaming: true,
|
|
32
|
+
maxContextTokens: 200000,
|
|
33
|
+
maxOutputTokens: 8192,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async isAvailable() {
|
|
37
|
+
try {
|
|
38
|
+
(0, child_process_1.execSync)(`${this.cliCommand} --version`, {
|
|
39
|
+
stdio: 'pipe',
|
|
40
|
+
timeout: 5000,
|
|
41
|
+
});
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async complete(request) {
|
|
49
|
+
const prompt = this.buildPromptFromMessages(request);
|
|
50
|
+
// Add JSON instruction if requested
|
|
51
|
+
const finalPrompt = request.jsonMode
|
|
52
|
+
? `${prompt}\n\nIMPORTANT: Respond with valid JSON only. No markdown code blocks, no explanation, just the raw JSON object.`
|
|
53
|
+
: prompt;
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
55
|
+
const args = [
|
|
56
|
+
'--print', // Print response and exit (non-interactive)
|
|
57
|
+
'--output-format', 'text', // Plain text output
|
|
58
|
+
];
|
|
59
|
+
// Add model if specified
|
|
60
|
+
if (this.config.model) {
|
|
61
|
+
args.push('--model', this.config.model);
|
|
62
|
+
}
|
|
63
|
+
// Add max tokens if specified
|
|
64
|
+
const maxTokens = this.getMaxTokens(request);
|
|
65
|
+
if (maxTokens) {
|
|
66
|
+
args.push('--max-tokens', String(maxTokens));
|
|
67
|
+
}
|
|
68
|
+
// Add the prompt
|
|
69
|
+
args.push(finalPrompt);
|
|
70
|
+
this.log('Executing command', { command: this.cliCommand, args: args.slice(0, -1), promptLength: finalPrompt.length });
|
|
71
|
+
const child = (0, child_process_1.spawn)(this.cliCommand, args, {
|
|
72
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
73
|
+
timeout: this.getTimeout(),
|
|
74
|
+
});
|
|
75
|
+
let stdout = '';
|
|
76
|
+
let stderr = '';
|
|
77
|
+
child.stdout?.on('data', (data) => {
|
|
78
|
+
stdout += data.toString();
|
|
79
|
+
});
|
|
80
|
+
child.stderr?.on('data', (data) => {
|
|
81
|
+
stderr += data.toString();
|
|
82
|
+
});
|
|
83
|
+
child.on('error', (error) => {
|
|
84
|
+
reject(new Error(`Claude Code CLI error: ${error.message}\n` +
|
|
85
|
+
`Make sure 'claude' is installed and in your PATH.\n` +
|
|
86
|
+
`Install: npm install -g @anthropic-ai/claude-code`));
|
|
87
|
+
});
|
|
88
|
+
// Set timeout
|
|
89
|
+
const timeoutId = setTimeout(() => {
|
|
90
|
+
child.kill('SIGTERM');
|
|
91
|
+
reject(new Error('Claude Code CLI timed out'));
|
|
92
|
+
}, this.getTimeout());
|
|
93
|
+
child.on('close', (code) => {
|
|
94
|
+
clearTimeout(timeoutId);
|
|
95
|
+
this.log('Process exited', { code, stdoutLength: stdout.length, stderrLength: stderr.length });
|
|
96
|
+
if (code !== 0) {
|
|
97
|
+
const errorDetails = stderr.trim() || 'No error output captured';
|
|
98
|
+
this.log('Command failed', { errorDetails });
|
|
99
|
+
const suggestion = stderr.includes('command not found') || stderr.includes('not recognized')
|
|
100
|
+
? '\nMake sure claude CLI is installed: npm install -g @anthropic-ai/claude-code'
|
|
101
|
+
: stderr.includes('auth') || stderr.includes('token')
|
|
102
|
+
? '\nAuthentication issue - try running: claude auth'
|
|
103
|
+
: '\nTry running with --verbose for more details.';
|
|
104
|
+
reject(new Error(`Claude Code CLI failed (exit code ${code}):\n${errorDetails}${suggestion}`));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this.log('Command succeeded', { responseLength: stdout.trim().length });
|
|
108
|
+
resolve({
|
|
109
|
+
content: stdout.trim(),
|
|
110
|
+
metadata: {
|
|
111
|
+
provider: 'claude-code',
|
|
112
|
+
command: this.cliCommand,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.ClaudeCodeProvider = ClaudeCodeProvider;
|
|
120
|
+
//# sourceMappingURL=claude-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/llm/providers/claude-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex CLI Provider
|
|
3
|
+
*
|
|
4
|
+
* Uses OpenAI's Codex CLI tool for LLM invocation.
|
|
5
|
+
* Also supports GitHub Copilot CLI.
|
|
6
|
+
*/
|
|
7
|
+
import { LLMProviderType, LLMProviderConfig, LLMProviderCapabilities, LLMRequest, LLMResponse } from '../types';
|
|
8
|
+
import { BaseLLMProvider } from '../base-provider';
|
|
9
|
+
/**
|
|
10
|
+
* Codex/Copilot CLI provider implementation
|
|
11
|
+
*/
|
|
12
|
+
export declare class CodexCLIProvider extends BaseLLMProvider {
|
|
13
|
+
private cliCommand;
|
|
14
|
+
constructor(config: LLMProviderConfig);
|
|
15
|
+
/**
|
|
16
|
+
* Detect available CLI tool
|
|
17
|
+
*/
|
|
18
|
+
private detectCLI;
|
|
19
|
+
get type(): LLMProviderType;
|
|
20
|
+
get name(): string;
|
|
21
|
+
get capabilities(): LLMProviderCapabilities;
|
|
22
|
+
isAvailable(): Promise<boolean>;
|
|
23
|
+
complete(request: LLMRequest): Promise<LLMResponse>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=codex-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-cli.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/codex-cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,eAAe;IACnD,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,iBAAiB;IAMrC;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,YAAY,IAAI,uBAAuB,CAQ1C;IAEK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAoE1D"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Codex CLI Provider
|
|
4
|
+
*
|
|
5
|
+
* Uses OpenAI's Codex CLI tool for LLM invocation.
|
|
6
|
+
* Also supports GitHub Copilot CLI.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.CodexCLIProvider = void 0;
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const base_provider_1 = require("../base-provider");
|
|
12
|
+
/**
|
|
13
|
+
* Codex/Copilot CLI provider implementation
|
|
14
|
+
*/
|
|
15
|
+
class CodexCLIProvider extends base_provider_1.BaseLLMProvider {
|
|
16
|
+
cliCommand;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
super(config);
|
|
19
|
+
// Support multiple CLI tools
|
|
20
|
+
this.cliCommand = config.cliPath || this.detectCLI();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Detect available CLI tool
|
|
24
|
+
*/
|
|
25
|
+
detectCLI() {
|
|
26
|
+
// Try codex first, then gh copilot
|
|
27
|
+
const candidates = ['codex', 'gh copilot'];
|
|
28
|
+
for (const cmd of candidates) {
|
|
29
|
+
try {
|
|
30
|
+
(0, child_process_1.execSync)(`${cmd.split(' ')[0]} --version`, {
|
|
31
|
+
stdio: 'pipe',
|
|
32
|
+
timeout: 5000,
|
|
33
|
+
});
|
|
34
|
+
return cmd;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Continue to next candidate
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return 'codex'; // Default, will fail on isAvailable check
|
|
41
|
+
}
|
|
42
|
+
get type() {
|
|
43
|
+
return 'codex';
|
|
44
|
+
}
|
|
45
|
+
get name() {
|
|
46
|
+
return 'Codex/Copilot CLI';
|
|
47
|
+
}
|
|
48
|
+
get capabilities() {
|
|
49
|
+
return {
|
|
50
|
+
jsonMode: false,
|
|
51
|
+
systemPrompt: true,
|
|
52
|
+
streaming: false,
|
|
53
|
+
maxContextTokens: 128000,
|
|
54
|
+
maxOutputTokens: 8192,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
async isAvailable() {
|
|
58
|
+
try {
|
|
59
|
+
const cmd = this.cliCommand.split(' ')[0];
|
|
60
|
+
(0, child_process_1.execSync)(`${cmd} --version`, {
|
|
61
|
+
stdio: 'pipe',
|
|
62
|
+
timeout: 5000,
|
|
63
|
+
});
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async complete(request) {
|
|
71
|
+
const prompt = this.buildPromptFromMessages(request);
|
|
72
|
+
// Add JSON instruction if requested
|
|
73
|
+
const finalPrompt = request.jsonMode
|
|
74
|
+
? `${prompt}\n\nIMPORTANT: Respond with valid JSON only. No markdown code blocks, no explanation, just the raw JSON object.`
|
|
75
|
+
: prompt;
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
let args;
|
|
78
|
+
if (this.cliCommand.startsWith('gh copilot')) {
|
|
79
|
+
// GitHub Copilot CLI - use 'gh' target type for general prompts
|
|
80
|
+
// Note: -t shell is for shell commands, -t gh for general GitHub CLI,
|
|
81
|
+
// -t git for git commands. For JSON generation, avoid shell type.
|
|
82
|
+
const targetType = request.jsonMode ? 'gh' : 'shell';
|
|
83
|
+
args = ['copilot', 'suggest', '-t', targetType, finalPrompt];
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// Generic codex CLI
|
|
87
|
+
args = ['--prompt', finalPrompt];
|
|
88
|
+
}
|
|
89
|
+
const [cmd, ...cmdArgs] = this.cliCommand.split(' ');
|
|
90
|
+
const fullArgs = [...cmdArgs, ...args];
|
|
91
|
+
const child = (0, child_process_1.spawn)(cmd, fullArgs, {
|
|
92
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
93
|
+
timeout: this.getTimeout(),
|
|
94
|
+
});
|
|
95
|
+
let stdout = '';
|
|
96
|
+
let stderr = '';
|
|
97
|
+
child.stdout?.on('data', (data) => {
|
|
98
|
+
stdout += data.toString();
|
|
99
|
+
});
|
|
100
|
+
child.stderr?.on('data', (data) => {
|
|
101
|
+
stderr += data.toString();
|
|
102
|
+
});
|
|
103
|
+
child.on('error', (error) => {
|
|
104
|
+
reject(new Error(`Codex CLI error: ${error.message}`));
|
|
105
|
+
});
|
|
106
|
+
// Set timeout
|
|
107
|
+
const timeoutId = setTimeout(() => {
|
|
108
|
+
child.kill('SIGTERM');
|
|
109
|
+
reject(new Error('Codex CLI timed out'));
|
|
110
|
+
}, this.getTimeout());
|
|
111
|
+
child.on('close', (code) => {
|
|
112
|
+
clearTimeout(timeoutId);
|
|
113
|
+
if (code !== 0) {
|
|
114
|
+
reject(new Error(`Codex CLI exited with code ${code}: ${stderr}`));
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
resolve({
|
|
118
|
+
content: stdout.trim(),
|
|
119
|
+
metadata: {
|
|
120
|
+
provider: 'codex',
|
|
121
|
+
command: this.cliCommand,
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.CodexCLIProvider = CodexCLIProvider;
|
|
129
|
+
//# sourceMappingURL=codex-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../../src/llm/providers/codex-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor CLI Provider
|
|
3
|
+
*
|
|
4
|
+
* Experimental provider for Cursor IDE CLI integration.
|
|
5
|
+
* Note: Cursor primarily operates through its IDE. This provider attempts
|
|
6
|
+
* to use cursor-agent if available, falling back to piping prompts to stdin.
|
|
7
|
+
*
|
|
8
|
+
* This is an experimental implementation - Cursor's CLI API may change.
|
|
9
|
+
*/
|
|
10
|
+
import { LLMProviderType, LLMProviderConfig, LLMProviderCapabilities, LLMRequest, LLMResponse } from '../types';
|
|
11
|
+
import { BaseLLMProvider } from '../base-provider';
|
|
12
|
+
/**
|
|
13
|
+
* Cursor CLI provider implementation
|
|
14
|
+
*/
|
|
15
|
+
export declare class CursorCLIProvider extends BaseLLMProvider {
|
|
16
|
+
private cliCommand;
|
|
17
|
+
constructor(config: LLMProviderConfig);
|
|
18
|
+
get type(): LLMProviderType;
|
|
19
|
+
get name(): string;
|
|
20
|
+
get capabilities(): LLMProviderCapabilities;
|
|
21
|
+
isAvailable(): Promise<boolean>;
|
|
22
|
+
complete(request: LLMRequest): Promise<LLMResponse>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=cursor-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-cli.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/cursor-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,iBAAiB;IAKrC,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,YAAY,IAAI,uBAAuB,CAQ1C;IAEK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CA+D1D"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor CLI Provider
|
|
4
|
+
*
|
|
5
|
+
* Experimental provider for Cursor IDE CLI integration.
|
|
6
|
+
* Note: Cursor primarily operates through its IDE. This provider attempts
|
|
7
|
+
* to use cursor-agent if available, falling back to piping prompts to stdin.
|
|
8
|
+
*
|
|
9
|
+
* This is an experimental implementation - Cursor's CLI API may change.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CursorCLIProvider = void 0;
|
|
13
|
+
const child_process_1 = require("child_process");
|
|
14
|
+
const base_provider_1 = require("../base-provider");
|
|
15
|
+
/**
|
|
16
|
+
* Cursor CLI provider implementation
|
|
17
|
+
*/
|
|
18
|
+
class CursorCLIProvider extends base_provider_1.BaseLLMProvider {
|
|
19
|
+
cliCommand;
|
|
20
|
+
constructor(config) {
|
|
21
|
+
super(config);
|
|
22
|
+
this.cliCommand = config.cliPath || 'cursor';
|
|
23
|
+
}
|
|
24
|
+
get type() {
|
|
25
|
+
return 'cursor';
|
|
26
|
+
}
|
|
27
|
+
get name() {
|
|
28
|
+
return 'Cursor IDE CLI';
|
|
29
|
+
}
|
|
30
|
+
get capabilities() {
|
|
31
|
+
return {
|
|
32
|
+
jsonMode: false,
|
|
33
|
+
systemPrompt: true,
|
|
34
|
+
streaming: false, // CLI mode typically doesn't stream
|
|
35
|
+
maxContextTokens: 128000,
|
|
36
|
+
maxOutputTokens: 8192,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
async isAvailable() {
|
|
40
|
+
try {
|
|
41
|
+
// Check if cursor CLI is available
|
|
42
|
+
(0, child_process_1.execSync)(`${this.cliCommand} --version`, {
|
|
43
|
+
stdio: 'pipe',
|
|
44
|
+
timeout: 5000,
|
|
45
|
+
});
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async complete(request) {
|
|
53
|
+
const prompt = this.buildPromptFromMessages(request);
|
|
54
|
+
// Add JSON instruction if requested
|
|
55
|
+
const finalPrompt = request.jsonMode
|
|
56
|
+
? `${prompt}\n\nIMPORTANT: Respond with valid JSON only. No markdown code blocks, no explanation, just the raw JSON object.`
|
|
57
|
+
: prompt;
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
// Note: Cursor's CLI interface is not publicly documented.
|
|
60
|
+
// This implementation uses stdin piping as a fallback approach.
|
|
61
|
+
// The cursor-agent command may be available in some installations.
|
|
62
|
+
const args = [];
|
|
63
|
+
const child = (0, child_process_1.spawn)(this.cliCommand, args, {
|
|
64
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
65
|
+
timeout: this.getTimeout(),
|
|
66
|
+
});
|
|
67
|
+
let stdout = '';
|
|
68
|
+
let stderr = '';
|
|
69
|
+
// Write prompt to stdin for cursor to process
|
|
70
|
+
if (child.stdin) {
|
|
71
|
+
child.stdin.write(finalPrompt);
|
|
72
|
+
child.stdin.end();
|
|
73
|
+
}
|
|
74
|
+
child.stdout?.on('data', (data) => {
|
|
75
|
+
stdout += data.toString();
|
|
76
|
+
});
|
|
77
|
+
child.stderr?.on('data', (data) => {
|
|
78
|
+
stderr += data.toString();
|
|
79
|
+
});
|
|
80
|
+
child.on('error', (error) => {
|
|
81
|
+
reject(new Error(`Cursor CLI error: ${error.message}`));
|
|
82
|
+
});
|
|
83
|
+
// Set timeout
|
|
84
|
+
const timeoutId = setTimeout(() => {
|
|
85
|
+
child.kill('SIGTERM');
|
|
86
|
+
reject(new Error('Cursor CLI timed out'));
|
|
87
|
+
}, this.getTimeout());
|
|
88
|
+
child.on('close', (code) => {
|
|
89
|
+
clearTimeout(timeoutId);
|
|
90
|
+
if (code !== 0) {
|
|
91
|
+
reject(new Error(`Cursor CLI exited with code ${code}: ${stderr}`));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
resolve({
|
|
95
|
+
content: stdout.trim(),
|
|
96
|
+
metadata: {
|
|
97
|
+
provider: 'cursor',
|
|
98
|
+
command: this.cliCommand,
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.CursorCLIProvider = CursorCLIProvider;
|
|
106
|
+
//# sourceMappingURL=cursor-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-cli.js","sourceRoot":"","sources":["../../../src/llm/providers/cursor-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Gemini API Provider
|
|
3
|
+
*
|
|
4
|
+
* Uses Google's Gemini API for LLM invocation.
|
|
5
|
+
*/
|
|
6
|
+
import { LLMProviderType, LLMProviderConfig, LLMProviderCapabilities, LLMRequest, LLMResponse } from '../types';
|
|
7
|
+
import { BaseLLMProvider } from '../base-provider';
|
|
8
|
+
/**
|
|
9
|
+
* Gemini API provider implementation
|
|
10
|
+
*/
|
|
11
|
+
export declare class GeminiAPIProvider extends BaseLLMProvider {
|
|
12
|
+
private static readonly DEFAULT_MODEL;
|
|
13
|
+
constructor(config: LLMProviderConfig);
|
|
14
|
+
get type(): LLMProviderType;
|
|
15
|
+
get name(): string;
|
|
16
|
+
get capabilities(): LLMProviderCapabilities;
|
|
17
|
+
isAvailable(): Promise<boolean>;
|
|
18
|
+
complete(request: LLMRequest): Promise<LLMResponse>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=gemini-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-api.d.ts","sourceRoot":"","sources":["../../../src/llm/providers/gemini-api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAoB;gBAE7C,MAAM,EAAE,iBAAiB;IAIrC,IAAI,IAAI,IAAI,eAAe,CAE1B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,YAAY,IAAI,uBAAuB,CAQ1C;IAEK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CA8G1D"}
|