@miller-tech/uap 1.10.1 → 1.12.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/dist/.tsbuildinfo +1 -1
- package/dist/benchmarks/benchmark.d.ts +14 -14
- package/dist/bin/cli.js +5 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/llama-server-optimize.js +0 -0
- package/dist/bin/policy.js +0 -0
- package/dist/cli/task.d.ts +1 -1
- package/dist/cli/task.d.ts.map +1 -1
- package/dist/cli/task.js +65 -0
- package/dist/cli/task.js.map +1 -1
- package/dist/coordination/service.d.ts +11 -0
- package/dist/coordination/service.d.ts.map +1 -1
- package/dist/coordination/service.js +34 -3
- package/dist/coordination/service.js.map +1 -1
- package/dist/dashboard/data-seeder.d.ts +33 -0
- package/dist/dashboard/data-seeder.d.ts.map +1 -0
- package/dist/dashboard/data-seeder.js +247 -0
- package/dist/dashboard/data-seeder.js.map +1 -0
- package/dist/dashboard/data-service.d.ts +109 -0
- package/dist/dashboard/data-service.d.ts.map +1 -1
- package/dist/dashboard/data-service.js +566 -27
- package/dist/dashboard/data-service.js.map +1 -1
- package/dist/dashboard/index.d.ts +4 -2
- package/dist/dashboard/index.d.ts.map +1 -1
- package/dist/dashboard/index.js +2 -1
- package/dist/dashboard/index.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +17 -0
- package/dist/dashboard/server.js.map +1 -1
- package/dist/models/profile-loader.d.ts +1 -1
- package/dist/models/types.d.ts +45 -45
- package/dist/policies/schemas/policy.d.ts +5 -5
- package/dist/tasks/types.d.ts +22 -22
- package/dist/types/config.d.ts +170 -170
- package/dist/types/coordination.d.ts +22 -22
- package/dist/uap-droids-strict.d.ts +4 -4
- package/package.json +1 -1
- package/scripts/maintenance/verify-compliance.sh +12 -12
- package/templates/hooks/pre-compact.sh +14 -0
- package/templates/hooks/session-start.sh +1 -1
- package/dist/bin/tool-calls.d.ts +0 -3
- package/dist/bin/tool-calls.d.ts.map +0 -1
- package/dist/bin/tool-calls.js +0 -4
- package/dist/bin/tool-calls.js.map +0 -1
- package/dist/cli/completion-gates.d.ts +0 -51
- package/dist/cli/completion-gates.d.ts.map +0 -1
- package/dist/cli/completion-gates.js +0 -201
- package/dist/cli/completion-gates.js.map +0 -1
- package/dist/cli/rtk-validation.d.ts +0 -24
- package/dist/cli/rtk-validation.d.ts.map +0 -1
- package/dist/cli/rtk-validation.js +0 -138
- package/dist/cli/rtk-validation.js.map +0 -1
- package/dist/cli/uap.d.ts +0 -10
- package/dist/cli/uap.d.ts.map +0 -1
- package/dist/cli/uap.js +0 -457
- package/dist/cli/uap.js.map +0 -1
- package/dist/coordination/droid-validator.d.ts +0 -59
- package/dist/coordination/droid-validator.d.ts.map +0 -1
- package/dist/coordination/droid-validator.js +0 -142
- package/dist/coordination/droid-validator.js.map +0 -1
- package/dist/coordination/worktree-enforcer.d.ts +0 -22
- package/dist/coordination/worktree-enforcer.d.ts.map +0 -1
- package/dist/coordination/worktree-enforcer.js +0 -71
- package/dist/coordination/worktree-enforcer.js.map +0 -1
- package/dist/generators/template-loader.d.ts +0 -105
- package/dist/generators/template-loader.d.ts.map +0 -1
- package/dist/generators/template-loader.js +0 -291
- package/dist/generators/template-loader.js.map +0 -1
- package/dist/memory/active-context.d.ts +0 -65
- package/dist/memory/active-context.d.ts.map +0 -1
- package/dist/memory/active-context.js +0 -126
- package/dist/memory/active-context.js.map +0 -1
- package/dist/memory/agent-scoped-memory.d.ts +0 -67
- package/dist/memory/agent-scoped-memory.d.ts.map +0 -1
- package/dist/memory/agent-scoped-memory.js +0 -126
- package/dist/memory/agent-scoped-memory.js.map +0 -1
- package/dist/memory/dedup-detector.d.ts +0 -57
- package/dist/memory/dedup-detector.d.ts.map +0 -1
- package/dist/memory/dedup-detector.js +0 -107
- package/dist/memory/dedup-detector.js.map +0 -1
- package/dist/memory/dedup-memory.d.ts +0 -89
- package/dist/memory/dedup-memory.d.ts.map +0 -1
- package/dist/memory/dedup-memory.js +0 -173
- package/dist/memory/dedup-memory.js.map +0 -1
- package/dist/memory/generic-uap-patterns.d.ts +0 -7
- package/dist/memory/generic-uap-patterns.d.ts.map +0 -1
- package/dist/memory/generic-uap-patterns.js +0 -43
- package/dist/memory/generic-uap-patterns.js.map +0 -1
- package/dist/memory/merge-claude-md.d.ts +0 -45
- package/dist/memory/merge-claude-md.d.ts.map +0 -1
- package/dist/memory/merge-claude-md.js +0 -118
- package/dist/memory/merge-claude-md.js.map +0 -1
- package/dist/memory/multi-view-memory.d.ts +0 -134
- package/dist/memory/multi-view-memory.d.ts.map +0 -1
- package/dist/memory/multi-view-memory.js +0 -430
- package/dist/memory/multi-view-memory.js.map +0 -1
- package/dist/memory/patterns.d.ts +0 -37
- package/dist/memory/patterns.d.ts.map +0 -1
- package/dist/memory/patterns.js +0 -81
- package/dist/memory/patterns.js.map +0 -1
- package/dist/memory/semantic-edge-graph.d.ts +0 -86
- package/dist/memory/semantic-edge-graph.d.ts.map +0 -1
- package/dist/memory/semantic-edge-graph.js +0 -168
- package/dist/memory/semantic-edge-graph.js.map +0 -1
- package/dist/memory/semantic-retrieval.d.ts +0 -70
- package/dist/memory/semantic-retrieval.d.ts.map +0 -1
- package/dist/memory/semantic-retrieval.js +0 -112
- package/dist/memory/semantic-retrieval.js.map +0 -1
- package/dist/memory/short-term/factory.d.ts +0 -26
- package/dist/memory/short-term/factory.d.ts.map +0 -1
- package/dist/memory/short-term/factory.js +0 -28
- package/dist/memory/short-term/factory.js.map +0 -1
- package/dist/memory/short-term/indexeddb.d.ts +0 -25
- package/dist/memory/short-term/indexeddb.d.ts.map +0 -1
- package/dist/memory/short-term/indexeddb.js +0 -64
- package/dist/memory/short-term/indexeddb.js.map +0 -1
- package/dist/memory/smart-consolidator.d.ts +0 -53
- package/dist/memory/smart-consolidator.d.ts.map +0 -1
- package/dist/memory/smart-consolidator.js +0 -144
- package/dist/memory/smart-consolidator.js.map +0 -1
- package/dist/memory/view-memory.d.ts +0 -80
- package/dist/memory/view-memory.d.ts.map +0 -1
- package/dist/memory/view-memory.js +0 -130
- package/dist/memory/view-memory.js.map +0 -1
- package/dist/memory/wrapped-memory.d.ts +0 -77
- package/dist/memory/wrapped-memory.d.ts.map +0 -1
- package/dist/memory/wrapped-memory.js +0 -127
- package/dist/memory/wrapped-memory.js.map +0 -1
- package/dist/models/api-client.d.ts +0 -46
- package/dist/models/api-client.d.ts.map +0 -1
- package/dist/models/api-client.js +0 -182
- package/dist/models/api-client.js.map +0 -1
- package/dist/utils/config-manager.d.ts +0 -30
- package/dist/utils/config-manager.d.ts.map +0 -1
- package/dist/utils/config-manager.js +0 -41
- package/dist/utils/config-manager.js.map +0 -1
- package/dist/utils/fetch-with-retry.d.ts +0 -5
- package/dist/utils/fetch-with-retry.d.ts.map +0 -1
- package/dist/utils/fetch-with-retry.js +0 -61
- package/dist/utils/fetch-with-retry.js.map +0 -1
- package/dist/utils/file-discovery.d.ts +0 -38
- package/dist/utils/file-discovery.d.ts.map +0 -1
- package/dist/utils/file-discovery.js +0 -100
- package/dist/utils/file-discovery.js.map +0 -1
- package/dist/utils/validate-json.d.ts +0 -51
- package/dist/utils/validate-json.d.ts.map +0 -1
- package/dist/utils/validate-json.js +0 -94
- package/dist/utils/validate-json.js.map +0 -1
- package/tools/agents/scripts/__pycache__/tool_call_wrapper.cpython-313.pyc +0 -0
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Real Model Client - API-based implementation of ModelClient interface
|
|
3
|
-
*
|
|
4
|
-
* Supports multiple providers: Anthropic, OpenAI, DeepSeek, Zhipu, Ollama, and custom endpoints.
|
|
5
|
-
* Replaces MockModelClient for production use.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* API-based model client that calls real LLM endpoints.
|
|
9
|
-
*
|
|
10
|
-
* Supports:
|
|
11
|
-
* - Anthropic Messages API
|
|
12
|
-
* - OpenAI Chat Completions API (also used by DeepSeek, Zhipu, Ollama, custom)
|
|
13
|
-
*/
|
|
14
|
-
export class APIModelClient {
|
|
15
|
-
apiKeys;
|
|
16
|
-
constructor(apiKeys) {
|
|
17
|
-
this.apiKeys = new Map();
|
|
18
|
-
// Load API keys from env vars or explicit config
|
|
19
|
-
const keyMap = {
|
|
20
|
-
ANTHROPIC_API_KEY: 'anthropic',
|
|
21
|
-
OPENAI_API_KEY: 'openai',
|
|
22
|
-
DEEPSEEK_API_KEY: 'deepseek',
|
|
23
|
-
ZHIPU_API_KEY: 'zhipu',
|
|
24
|
-
};
|
|
25
|
-
for (const [envVar, provider] of Object.entries(keyMap)) {
|
|
26
|
-
const key = apiKeys?.[provider] || process.env[envVar];
|
|
27
|
-
if (key) {
|
|
28
|
-
this.apiKeys.set(provider, key);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
async complete(model, prompt, options) {
|
|
33
|
-
const startTime = Date.now();
|
|
34
|
-
const apiKey = this.getApiKey(model);
|
|
35
|
-
if (!apiKey && model.provider !== 'ollama' && model.provider !== 'custom') {
|
|
36
|
-
throw new Error(`No API key found for provider "${model.provider}". ` +
|
|
37
|
-
`Set ${model.apiKeyEnvVar || model.provider.toUpperCase() + '_API_KEY'} environment variable.`);
|
|
38
|
-
}
|
|
39
|
-
let response;
|
|
40
|
-
if (model.provider === 'anthropic') {
|
|
41
|
-
response = await this.callAnthropic(model, prompt, apiKey, options);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
// OpenAI-compatible API (OpenAI, DeepSeek, Zhipu, Ollama, custom)
|
|
45
|
-
response = await this.callOpenAICompatible(model, prompt, apiKey, options);
|
|
46
|
-
}
|
|
47
|
-
response.latencyMs = Date.now() - startTime;
|
|
48
|
-
return response;
|
|
49
|
-
}
|
|
50
|
-
async callAnthropic(model, prompt, apiKey, options) {
|
|
51
|
-
const endpoint = model.endpoint || 'https://api.anthropic.com/v1/messages';
|
|
52
|
-
const maxTokens = options?.maxTokens || 4096;
|
|
53
|
-
const timeout = options?.timeout || 120000;
|
|
54
|
-
const controller = new AbortController();
|
|
55
|
-
const timer = setTimeout(() => controller.abort(), timeout);
|
|
56
|
-
try {
|
|
57
|
-
const response = await fetch(endpoint, {
|
|
58
|
-
method: 'POST',
|
|
59
|
-
headers: {
|
|
60
|
-
'Content-Type': 'application/json',
|
|
61
|
-
'x-api-key': apiKey,
|
|
62
|
-
'anthropic-version': '2023-06-01',
|
|
63
|
-
},
|
|
64
|
-
body: JSON.stringify({
|
|
65
|
-
model: model.apiModel,
|
|
66
|
-
max_tokens: maxTokens,
|
|
67
|
-
temperature: options?.temperature,
|
|
68
|
-
messages: [{ role: 'user', content: prompt }],
|
|
69
|
-
}),
|
|
70
|
-
signal: controller.signal,
|
|
71
|
-
});
|
|
72
|
-
if (!response.ok) {
|
|
73
|
-
const errorBody = await response.text();
|
|
74
|
-
throw new Error(`Anthropic API error ${response.status}: ${errorBody}`);
|
|
75
|
-
}
|
|
76
|
-
const data = (await response.json());
|
|
77
|
-
const content = data.content
|
|
78
|
-
.filter((c) => c.type === 'text')
|
|
79
|
-
.map((c) => c.text)
|
|
80
|
-
.join('');
|
|
81
|
-
return {
|
|
82
|
-
content,
|
|
83
|
-
tokensUsed: {
|
|
84
|
-
input: data.usage.input_tokens,
|
|
85
|
-
output: data.usage.output_tokens,
|
|
86
|
-
},
|
|
87
|
-
latencyMs: 0,
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
finally {
|
|
91
|
-
clearTimeout(timer);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
async callOpenAICompatible(model, prompt, apiKey, options) {
|
|
95
|
-
const endpoint = this.getOpenAIEndpoint(model);
|
|
96
|
-
const maxTokens = options?.maxTokens || 4096;
|
|
97
|
-
const timeout = options?.timeout || 120000;
|
|
98
|
-
const controller = new AbortController();
|
|
99
|
-
const timer = setTimeout(() => controller.abort(), timeout);
|
|
100
|
-
const headers = {
|
|
101
|
-
'Content-Type': 'application/json',
|
|
102
|
-
};
|
|
103
|
-
if (apiKey) {
|
|
104
|
-
headers['Authorization'] = `Bearer ${apiKey}`;
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
const response = await fetch(endpoint, {
|
|
108
|
-
method: 'POST',
|
|
109
|
-
headers,
|
|
110
|
-
body: JSON.stringify({
|
|
111
|
-
model: model.apiModel,
|
|
112
|
-
max_tokens: maxTokens,
|
|
113
|
-
temperature: options?.temperature,
|
|
114
|
-
messages: [{ role: 'user', content: prompt }],
|
|
115
|
-
}),
|
|
116
|
-
signal: controller.signal,
|
|
117
|
-
});
|
|
118
|
-
if (!response.ok) {
|
|
119
|
-
const errorBody = await response.text();
|
|
120
|
-
throw new Error(`API error ${response.status} from ${endpoint}: ${errorBody}`);
|
|
121
|
-
}
|
|
122
|
-
const data = (await response.json());
|
|
123
|
-
return {
|
|
124
|
-
content: data.choices[0]?.message?.content || '',
|
|
125
|
-
tokensUsed: {
|
|
126
|
-
input: data.usage?.prompt_tokens || Math.ceil(prompt.length / 4),
|
|
127
|
-
output: data.usage?.completion_tokens ||
|
|
128
|
-
Math.ceil((data.choices[0]?.message?.content || '').length / 4),
|
|
129
|
-
},
|
|
130
|
-
latencyMs: 0,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
finally {
|
|
134
|
-
clearTimeout(timer);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
getOpenAIEndpoint(model) {
|
|
138
|
-
if (model.endpoint) {
|
|
139
|
-
// Ensure endpoint ends with /chat/completions
|
|
140
|
-
const base = model.endpoint.replace(/\/+$/, '');
|
|
141
|
-
if (base.endsWith('/chat/completions'))
|
|
142
|
-
return base;
|
|
143
|
-
if (base.endsWith('/v1'))
|
|
144
|
-
return `${base}/chat/completions`;
|
|
145
|
-
return `${base}/v1/chat/completions`;
|
|
146
|
-
}
|
|
147
|
-
const providerEndpoints = {
|
|
148
|
-
openai: 'https://api.openai.com/v1/chat/completions',
|
|
149
|
-
deepseek: 'https://api.deepseek.com/v1/chat/completions',
|
|
150
|
-
zhipu: 'https://open.bigmodel.cn/api/paas/v4/chat/completions',
|
|
151
|
-
ollama: 'http://localhost:11434/v1/chat/completions',
|
|
152
|
-
};
|
|
153
|
-
return providerEndpoints[model.provider] || 'http://localhost:8080/v1/chat/completions';
|
|
154
|
-
}
|
|
155
|
-
getApiKey(model) {
|
|
156
|
-
// Check explicit env var first
|
|
157
|
-
if (model.apiKeyEnvVar && process.env[model.apiKeyEnvVar]) {
|
|
158
|
-
return process.env[model.apiKeyEnvVar];
|
|
159
|
-
}
|
|
160
|
-
// Check provider-level key
|
|
161
|
-
return this.apiKeys.get(model.provider);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Check which providers have API keys configured
|
|
165
|
-
*/
|
|
166
|
-
getAvailableProviders() {
|
|
167
|
-
const available = [];
|
|
168
|
-
for (const [provider] of this.apiKeys) {
|
|
169
|
-
available.push(provider);
|
|
170
|
-
}
|
|
171
|
-
// Ollama and custom don't need API keys
|
|
172
|
-
available.push('ollama', 'custom');
|
|
173
|
-
return available;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Create an API model client with auto-detected API keys
|
|
178
|
-
*/
|
|
179
|
-
export function createAPIModelClient(apiKeys) {
|
|
180
|
-
return new APIModelClient(apiKeys);
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=api-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/models/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Singleton configuration manager backed by an in-memory Map.
|
|
3
|
-
*/
|
|
4
|
-
export declare class ConfigManager {
|
|
5
|
-
private static instance;
|
|
6
|
-
private config;
|
|
7
|
-
/**
|
|
8
|
-
* Creates a new ConfigManager instance.
|
|
9
|
-
*/
|
|
10
|
-
private constructor();
|
|
11
|
-
/**
|
|
12
|
-
* Returns the singleton instance of the ConfigManager.
|
|
13
|
-
* @returns The singleton ConfigManager instance.
|
|
14
|
-
*/
|
|
15
|
-
static getInstance(): ConfigManager;
|
|
16
|
-
/**
|
|
17
|
-
* Gets a configuration value by key.
|
|
18
|
-
* @param key - Configuration key to retrieve.
|
|
19
|
-
* @returns The stored configuration value, or undefined if missing.
|
|
20
|
-
*/
|
|
21
|
-
get(key: string): any;
|
|
22
|
-
/**
|
|
23
|
-
* Sets a configuration value by key.
|
|
24
|
-
* @param key - Configuration key to set.
|
|
25
|
-
* @param value - Configuration value to store.
|
|
26
|
-
* @returns No return value.
|
|
27
|
-
*/
|
|
28
|
-
set(key: string, value: any): void;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAmB;IAEjC;;OAEG;IACH,OAAO;IAIP;;;OAGG;WACW,WAAW,IAAI,aAAa;IAO1C;;;;OAIG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAI5B;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;CAG1C"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Singleton configuration manager backed by an in-memory Map.
|
|
3
|
-
*/
|
|
4
|
-
export class ConfigManager {
|
|
5
|
-
static instance;
|
|
6
|
-
config;
|
|
7
|
-
/**
|
|
8
|
-
* Creates a new ConfigManager instance.
|
|
9
|
-
*/
|
|
10
|
-
constructor() {
|
|
11
|
-
this.config = new Map();
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Returns the singleton instance of the ConfigManager.
|
|
15
|
-
* @returns The singleton ConfigManager instance.
|
|
16
|
-
*/
|
|
17
|
-
static getInstance() {
|
|
18
|
-
if (!ConfigManager.instance) {
|
|
19
|
-
ConfigManager.instance = new ConfigManager();
|
|
20
|
-
}
|
|
21
|
-
return ConfigManager.instance;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Gets a configuration value by key.
|
|
25
|
-
* @param key - Configuration key to retrieve.
|
|
26
|
-
* @returns The stored configuration value, or undefined if missing.
|
|
27
|
-
*/
|
|
28
|
-
get(key) {
|
|
29
|
-
return this.config.get(key);
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Sets a configuration value by key.
|
|
33
|
-
* @param key - Configuration key to set.
|
|
34
|
-
* @param value - Configuration value to store.
|
|
35
|
-
* @returns No return value.
|
|
36
|
-
*/
|
|
37
|
-
set(key, value) {
|
|
38
|
-
this.config.set(key, value);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=config-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/utils/config-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,CAAC,QAAQ,CAAgB;IAC/B,MAAM,CAAmB;IAEjC;;OAEG;IACH;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,GAAG,CAAC,GAAW,EAAE,KAAU;QAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-with-retry.d.ts","sourceRoot":"","sources":["../../src/utils/fetch-with-retry.ts"],"names":[],"mappings":"AAAA,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,QAAQ,CAAC,CA0FnB"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export async function fetchWithRetry(url, retryConfig) {
|
|
2
|
-
const config = {
|
|
3
|
-
maxRetries: retryConfig?.maxRetries ?? 3,
|
|
4
|
-
backoffMs: retryConfig?.backoffMs ?? 1000,
|
|
5
|
-
};
|
|
6
|
-
let lastError = null;
|
|
7
|
-
let lastStatusCode;
|
|
8
|
-
for (let attempt = 0; attempt <= config.maxRetries; attempt++) {
|
|
9
|
-
try {
|
|
10
|
-
if (attempt > 0) {
|
|
11
|
-
const delay = config.backoffMs * Math.pow(2, attempt - 1);
|
|
12
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
13
|
-
}
|
|
14
|
-
const response = await fetch(url);
|
|
15
|
-
if (!response.ok) {
|
|
16
|
-
lastStatusCode = response.status;
|
|
17
|
-
const isRetryable = response.status >= 500 ||
|
|
18
|
-
response.status === 408 ||
|
|
19
|
-
response.status === 429;
|
|
20
|
-
if (isRetryable && attempt < config.maxRetries) {
|
|
21
|
-
lastError = new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
const httpError = new Error(`HTTP error ${response.status}: ${response.statusText}`);
|
|
25
|
-
httpError.name = 'FetchRetryError';
|
|
26
|
-
httpError.url = url;
|
|
27
|
-
httpError.attempts = attempt + 1;
|
|
28
|
-
httpError.statusCode = response.status;
|
|
29
|
-
httpError.lastError = null;
|
|
30
|
-
throw httpError;
|
|
31
|
-
}
|
|
32
|
-
return response;
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
if (error instanceof Error && error.name === 'FetchRetryError') {
|
|
36
|
-
throw error;
|
|
37
|
-
}
|
|
38
|
-
if (error instanceof Error) {
|
|
39
|
-
lastError = error;
|
|
40
|
-
if (attempt < config.maxRetries) {
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const finalError = new Error(`Fetch failed after ${attempt + 1} attempts: ${error instanceof Error ? error.message : String(error)}`);
|
|
45
|
-
finalError.name = 'FetchRetryError';
|
|
46
|
-
finalError.url = url;
|
|
47
|
-
finalError.attempts = attempt + 1;
|
|
48
|
-
finalError.statusCode = lastStatusCode;
|
|
49
|
-
finalError.lastError = lastError;
|
|
50
|
-
throw finalError;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
const exhaustedError = new Error(`All ${config.maxRetries + 1} attempts failed for ${url}`);
|
|
54
|
-
exhaustedError.name = 'FetchRetryError';
|
|
55
|
-
exhaustedError.url = url;
|
|
56
|
-
exhaustedError.attempts = config.maxRetries + 1;
|
|
57
|
-
exhaustedError.statusCode = lastStatusCode;
|
|
58
|
-
exhaustedError.lastError = lastError;
|
|
59
|
-
throw exhaustedError;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=fetch-with-retry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-with-retry.js","sourceRoot":"","sources":["../../src/utils/fetch-with-retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export interface FileEntry<T> {
|
|
2
|
-
name: string;
|
|
3
|
-
path: string;
|
|
4
|
-
metadata: T;
|
|
5
|
-
source: string;
|
|
6
|
-
}
|
|
7
|
-
export interface DiscoveryOptions {
|
|
8
|
-
/** TTL for file cache in milliseconds (default: 60s) */
|
|
9
|
-
cacheTTL?: number;
|
|
10
|
-
/** Custom error handler */
|
|
11
|
-
onError?: (error: Error, path: string) => void;
|
|
12
|
-
}
|
|
13
|
-
export interface CacheEntry<T> {
|
|
14
|
-
data: FileEntry<T>[];
|
|
15
|
-
timestamp: number;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Discover and parse files from a directory with caching
|
|
19
|
-
* @param baseDir - Base directory to search
|
|
20
|
-
* @param filePattern - Function to filter files by name
|
|
21
|
-
* @param parser - Function to parse file content and extract metadata
|
|
22
|
-
* @param options - Configuration options
|
|
23
|
-
* @returns Array of file entries with parsed metadata
|
|
24
|
-
*/
|
|
25
|
-
export declare function discoverFiles<T>(baseDir: string, filePattern: (name: string) => boolean, parser: (content: string) => T | null, options?: DiscoveryOptions): Promise<FileEntry<T>[]>;
|
|
26
|
-
/**
|
|
27
|
-
* Discover files from subdirectories (e.g., skills in folders)
|
|
28
|
-
*/
|
|
29
|
-
export declare function discoverFilesFromSubdirs<T>(baseDir: string, subdirPattern: (name: string) => boolean, filePattern: (name: string) => boolean, parser: (content: string) => T | null, options?: DiscoveryOptions): Promise<FileEntry<T>[]>;
|
|
30
|
-
/**
|
|
31
|
-
* Clear cache for a specific discovery operation
|
|
32
|
-
*/
|
|
33
|
-
export declare function clearFileCache(baseDir: string): void;
|
|
34
|
-
/**
|
|
35
|
-
* Clear all file discovery caches
|
|
36
|
-
*/
|
|
37
|
-
export declare function clearAllFileCaches(): void;
|
|
38
|
-
//# sourceMappingURL=file-discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-discovery.d.ts","sourceRoot":"","sources":["../../src/utils/file-discovery.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACtC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,EACrC,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAoDzB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACxC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EACtC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,EACrC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAyBzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAOpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { readdir, readFile } from 'fs/promises';
|
|
2
|
-
import { join } from 'path';
|
|
3
|
-
// Simple in-memory cache for file discovery
|
|
4
|
-
const fileCache = new Map();
|
|
5
|
-
/**
|
|
6
|
-
* Discover and parse files from a directory with caching
|
|
7
|
-
* @param baseDir - Base directory to search
|
|
8
|
-
* @param filePattern - Function to filter files by name
|
|
9
|
-
* @param parser - Function to parse file content and extract metadata
|
|
10
|
-
* @param options - Configuration options
|
|
11
|
-
* @returns Array of file entries with parsed metadata
|
|
12
|
-
*/
|
|
13
|
-
export async function discoverFiles(baseDir, filePattern, parser, options = {}) {
|
|
14
|
-
const { cacheTTL = 60000, // 1 minute default
|
|
15
|
-
onError = () => { }, } = options;
|
|
16
|
-
const cacheKey = `${baseDir}:${filePattern.toString()}`;
|
|
17
|
-
const cached = fileCache.get(cacheKey);
|
|
18
|
-
// Return cached data if still valid
|
|
19
|
-
if (cached && Date.now() - cached.timestamp < cacheTTL) {
|
|
20
|
-
return cached.data;
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
const entries = await readdir(baseDir, { withFileTypes: true });
|
|
24
|
-
const results = [];
|
|
25
|
-
for (const entry of entries) {
|
|
26
|
-
if (!entry.isFile() || !filePattern(entry.name))
|
|
27
|
-
continue;
|
|
28
|
-
const filePath = join(baseDir, entry.name);
|
|
29
|
-
try {
|
|
30
|
-
const content = await readFile(filePath, 'utf-8');
|
|
31
|
-
const metadata = parser(content);
|
|
32
|
-
if (metadata) {
|
|
33
|
-
results.push({
|
|
34
|
-
name: entry.name,
|
|
35
|
-
path: filePath,
|
|
36
|
-
metadata,
|
|
37
|
-
source: baseDir,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
43
|
-
onError(err, filePath);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Update cache
|
|
47
|
-
fileCache.set(cacheKey, {
|
|
48
|
-
data: results,
|
|
49
|
-
timestamp: Date.now(),
|
|
50
|
-
});
|
|
51
|
-
return results;
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
55
|
-
onError(err, baseDir);
|
|
56
|
-
return [];
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Discover files from subdirectories (e.g., skills in folders)
|
|
61
|
-
*/
|
|
62
|
-
export async function discoverFilesFromSubdirs(baseDir, subdirPattern, filePattern, parser, options) {
|
|
63
|
-
const results = [];
|
|
64
|
-
try {
|
|
65
|
-
const entries = await readdir(baseDir, { withFileTypes: true });
|
|
66
|
-
for (const entry of entries) {
|
|
67
|
-
if (!entry.isDirectory() || !subdirPattern(entry.name))
|
|
68
|
-
continue;
|
|
69
|
-
const dirPath = join(baseDir, entry.name);
|
|
70
|
-
const subdirResults = await discoverFiles(dirPath, filePattern, parser, options);
|
|
71
|
-
results.push(...subdirResults.map((r) => ({
|
|
72
|
-
...r,
|
|
73
|
-
source: join(baseDir, entry.name),
|
|
74
|
-
})));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
79
|
-
options?.onError?.(err, baseDir);
|
|
80
|
-
}
|
|
81
|
-
return results;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Clear cache for a specific discovery operation
|
|
85
|
-
*/
|
|
86
|
-
export function clearFileCache(baseDir) {
|
|
87
|
-
const patterns = [...fileCache.keys()];
|
|
88
|
-
patterns.forEach((key) => {
|
|
89
|
-
if (key.startsWith(`${baseDir}:`)) {
|
|
90
|
-
fileCache.delete(key);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Clear all file discovery caches
|
|
96
|
-
*/
|
|
97
|
-
export function clearAllFileCaches() {
|
|
98
|
-
fileCache.clear();
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=file-discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-discovery.js","sourceRoot":"","sources":["../../src/utils/file-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom error class for application-level errors with detailed context.
|
|
3
|
-
* Extends the built-in Error class to provide additional metadata.
|
|
4
|
-
*/
|
|
5
|
-
export declare class AppError extends Error {
|
|
6
|
-
/** Error code for programmatic handling */
|
|
7
|
-
readonly code: string;
|
|
8
|
-
/** Additional context about the error */
|
|
9
|
-
readonly context?: Record<string, unknown>;
|
|
10
|
-
/**
|
|
11
|
-
* Creates a new AppError instance.
|
|
12
|
-
*
|
|
13
|
-
* @param message - Human-readable error message
|
|
14
|
-
* @param code - Error code for programmatic handling
|
|
15
|
-
* @param context - Optional additional context
|
|
16
|
-
*/
|
|
17
|
-
constructor(message: string, code: string, context?: Record<string, unknown>);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Validates that a string is valid JSON and parses it.
|
|
21
|
-
*
|
|
22
|
-
* Uses zod for runtime validation to ensure the input is a valid string
|
|
23
|
-
* before attempting to parse. The parsed result is then validated
|
|
24
|
-
* against a permissive schema that accepts any valid JSON value.
|
|
25
|
-
*
|
|
26
|
-
* @param input - The string to validate and parse as JSON
|
|
27
|
-
* @returns The parsed JSON value (object, array, string, number, boolean, or null)
|
|
28
|
-
* @throws AppError with code 'INVALID_JSON' if the string is not valid JSON
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```typescript
|
|
32
|
-
* // Parse a valid JSON object
|
|
33
|
-
* const obj = validateAndParseJSON('{"name": "test", "value": 42}');
|
|
34
|
-
* // Returns: { name: "test", value: 42 }
|
|
35
|
-
*
|
|
36
|
-
* // Parse a valid JSON array
|
|
37
|
-
* const arr = validateAndParseJSON('[1, 2, 3]');
|
|
38
|
-
* // Returns: [1, 2, 3]
|
|
39
|
-
*
|
|
40
|
-
* // Invalid JSON throws AppError
|
|
41
|
-
* try {
|
|
42
|
-
* validateAndParseJSON('{invalid}');
|
|
43
|
-
* } catch (error) {
|
|
44
|
-
* if (error instanceof AppError) {
|
|
45
|
-
* console.log(error.code); // 'INVALID_JSON'
|
|
46
|
-
* }
|
|
47
|
-
* }
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
export declare function validateAndParseJSON(input: string): unknown;
|
|
51
|
-
//# sourceMappingURL=validate-json.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-json.d.ts","sourceRoot":"","sources":["../../src/utils/validate-json.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C;;;;;;OAMG;gBACS,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAW7E;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA6B3D"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
/**
|
|
3
|
-
* Custom error class for application-level errors with detailed context.
|
|
4
|
-
* Extends the built-in Error class to provide additional metadata.
|
|
5
|
-
*/
|
|
6
|
-
export class AppError extends Error {
|
|
7
|
-
/** Error code for programmatic handling */
|
|
8
|
-
code;
|
|
9
|
-
/** Additional context about the error */
|
|
10
|
-
context;
|
|
11
|
-
/**
|
|
12
|
-
* Creates a new AppError instance.
|
|
13
|
-
*
|
|
14
|
-
* @param message - Human-readable error message
|
|
15
|
-
* @param code - Error code for programmatic handling
|
|
16
|
-
* @param context - Optional additional context
|
|
17
|
-
*/
|
|
18
|
-
constructor(message, code, context) {
|
|
19
|
-
super(message);
|
|
20
|
-
this.name = 'AppError';
|
|
21
|
-
this.code = code;
|
|
22
|
-
this.context = context;
|
|
23
|
-
// Maintains proper stack trace for where error was thrown (V8 engines)
|
|
24
|
-
if (Error.captureStackTrace) {
|
|
25
|
-
Error.captureStackTrace(this, AppError);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Zod schema for validating that a value is valid JSON.
|
|
31
|
-
* Accepts any valid JSON value (object, array, string, number, boolean, null).
|
|
32
|
-
*/
|
|
33
|
-
const jsonSchema = z.unknown();
|
|
34
|
-
/** Maximum number of characters of the original input to include in error context. */
|
|
35
|
-
const MAX_ERROR_CONTEXT_CHARS = 100;
|
|
36
|
-
/**
|
|
37
|
-
* Validates that a string is valid JSON and parses it.
|
|
38
|
-
*
|
|
39
|
-
* Uses zod for runtime validation to ensure the input is a valid string
|
|
40
|
-
* before attempting to parse. The parsed result is then validated
|
|
41
|
-
* against a permissive schema that accepts any valid JSON value.
|
|
42
|
-
*
|
|
43
|
-
* @param input - The string to validate and parse as JSON
|
|
44
|
-
* @returns The parsed JSON value (object, array, string, number, boolean, or null)
|
|
45
|
-
* @throws AppError with code 'INVALID_JSON' if the string is not valid JSON
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```typescript
|
|
49
|
-
* // Parse a valid JSON object
|
|
50
|
-
* const obj = validateAndParseJSON('{"name": "test", "value": 42}');
|
|
51
|
-
* // Returns: { name: "test", value: 42 }
|
|
52
|
-
*
|
|
53
|
-
* // Parse a valid JSON array
|
|
54
|
-
* const arr = validateAndParseJSON('[1, 2, 3]');
|
|
55
|
-
* // Returns: [1, 2, 3]
|
|
56
|
-
*
|
|
57
|
-
* // Invalid JSON throws AppError
|
|
58
|
-
* try {
|
|
59
|
-
* validateAndParseJSON('{invalid}');
|
|
60
|
-
* } catch (error) {
|
|
61
|
-
* if (error instanceof AppError) {
|
|
62
|
-
* console.log(error.code); // 'INVALID_JSON'
|
|
63
|
-
* }
|
|
64
|
-
* }
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
export function validateAndParseJSON(input) {
|
|
68
|
-
const jsonStringSchema = z
|
|
69
|
-
.string()
|
|
70
|
-
.transform((value, ctx) => {
|
|
71
|
-
try {
|
|
72
|
-
return JSON.parse(value);
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
ctx.addIssue({
|
|
76
|
-
code: z.ZodIssueCode.custom,
|
|
77
|
-
message: error instanceof Error ? `Invalid JSON: ${error.message}` : 'Invalid JSON',
|
|
78
|
-
});
|
|
79
|
-
return z.NEVER;
|
|
80
|
-
}
|
|
81
|
-
})
|
|
82
|
-
.pipe(jsonSchema);
|
|
83
|
-
const result = jsonStringSchema.safeParse(input);
|
|
84
|
-
if (!result.success) {
|
|
85
|
-
throw new AppError('Input must be valid JSON', 'INVALID_JSON', {
|
|
86
|
-
errors: Array.from(result.error.issues).map((e) => e.message),
|
|
87
|
-
input: input.length > MAX_ERROR_CONTEXT_CHARS
|
|
88
|
-
? `${input.substring(0, MAX_ERROR_CONTEXT_CHARS)}...`
|
|
89
|
-
: input,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
return result.data;
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=validate-json.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-json.js","sourceRoot":"","sources":["../../src/utils/validate-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,2CAA2C;IAClC,IAAI,CAAS;IACtB,yCAAyC;IAChC,OAAO,CAA2B;IAE3C;;;;;;OAMG;IACH,YAAY,OAAe,EAAE,IAAY,EAAE,OAAiC;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,uEAAuE;QACvE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAE/B,sFAAsF;AACtF,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,gBAAgB,GAAG,CAAC;SACvB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;gBAC3B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,cAAc;aACpF,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;SACD,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,0BAA0B,EAAE,cAAc,EAAE;YAC7D,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC7D,KAAK,EACH,KAAK,CAAC,MAAM,GAAG,uBAAuB;gBACpC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,uBAAuB,CAAC,KAAK;gBACrD,CAAC,CAAC,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
Binary file
|