@ayga/mcp-client 2.0.1 → 3.0.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/README.md +229 -189
- package/dist/index.js +62 -47
- package/dist/index.js.map +1 -1
- package/dist/parser-registry.d.ts +99 -0
- package/dist/parser-registry.d.ts.map +1 -0
- package/dist/parser-registry.js +262 -0
- package/dist/parser-registry.js.map +1 -0
- package/dist/tests/parser-registry.test.d.ts +7 -0
- package/dist/tests/parser-registry.test.d.ts.map +1 -0
- package/dist/tests/parser-registry.test.js +152 -0
- package/dist/tests/parser-registry.test.js.map +1 -0
- package/dist/tool-definitions.d.ts +40 -0
- package/dist/tool-definitions.d.ts.map +1 -0
- package/dist/tool-definitions.js +126 -0
- package/dist/tool-definitions.js.map +1 -0
- package/package.json +4 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACH,qBAAqB,EACrB,sBAAsB,GACzB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Parser Registry
|
|
3
|
+
*
|
|
4
|
+
* Fetches parser configurations from the Python API and caches them.
|
|
5
|
+
* Falls back to static parsers on failure.
|
|
6
|
+
*/
|
|
7
|
+
import { ParserConfig } from "./parsers.js";
|
|
8
|
+
export interface ParserOptions {
|
|
9
|
+
parser_id: string;
|
|
10
|
+
timeout: number;
|
|
11
|
+
enabled: boolean;
|
|
12
|
+
proxy?: string;
|
|
13
|
+
user_agent?: string;
|
|
14
|
+
custom_params?: Record<string, any>;
|
|
15
|
+
}
|
|
16
|
+
export interface RegistryConfig {
|
|
17
|
+
apiUrl: string;
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
cacheTtlMs: number;
|
|
20
|
+
enableDynamic: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare class ParserRegistry {
|
|
23
|
+
private parsers;
|
|
24
|
+
private parserOptions;
|
|
25
|
+
private defaultOptions;
|
|
26
|
+
private lastFetch;
|
|
27
|
+
private lastOptionsFetch;
|
|
28
|
+
private fetchPromise;
|
|
29
|
+
private optionsFetchPromise;
|
|
30
|
+
private config;
|
|
31
|
+
private initialized;
|
|
32
|
+
constructor(config?: Partial<RegistryConfig>);
|
|
33
|
+
/**
|
|
34
|
+
* Get all parsers, fetching from API if cache is stale
|
|
35
|
+
*/
|
|
36
|
+
getParsers(): Promise<ParserConfig[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Get a parser by ID
|
|
39
|
+
*/
|
|
40
|
+
getParserById(id: string): Promise<ParserConfig | undefined>;
|
|
41
|
+
/**
|
|
42
|
+
* Get a parser by A-Parser name
|
|
43
|
+
*/
|
|
44
|
+
getParserByAParserName(name: string): Promise<ParserConfig | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* Get parsers by category
|
|
47
|
+
*/
|
|
48
|
+
getParsersByCategory(category: string): Promise<ParserConfig[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Get all categories
|
|
51
|
+
*/
|
|
52
|
+
getCategories(): Promise<string[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Force refresh of parser cache
|
|
55
|
+
*/
|
|
56
|
+
refresh(): Promise<ParserConfig[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Get static parsers (no API call)
|
|
59
|
+
*/
|
|
60
|
+
getStaticParsers(): ParserConfig[];
|
|
61
|
+
/**
|
|
62
|
+
* Get options for a specific parser
|
|
63
|
+
*/
|
|
64
|
+
getParserOptions(parserId: string): Promise<ParserOptions>;
|
|
65
|
+
/**
|
|
66
|
+
* Get timeout for a parser
|
|
67
|
+
*/
|
|
68
|
+
getParserTimeout(parserId: string): Promise<number>;
|
|
69
|
+
/**
|
|
70
|
+
* Check if parser is enabled
|
|
71
|
+
*/
|
|
72
|
+
isParserEnabled(parserId: string): Promise<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* Ensure options are fetched
|
|
75
|
+
*/
|
|
76
|
+
private ensureOptionsFetched;
|
|
77
|
+
/**
|
|
78
|
+
* Fetch parser options from API
|
|
79
|
+
*/
|
|
80
|
+
private fetchOptions;
|
|
81
|
+
/**
|
|
82
|
+
* Fetch parsers from API
|
|
83
|
+
*/
|
|
84
|
+
private fetchParsers;
|
|
85
|
+
/**
|
|
86
|
+
* Transform API parser response to ParserConfig
|
|
87
|
+
*/
|
|
88
|
+
private transformParser;
|
|
89
|
+
private log;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get the global parser registry instance
|
|
93
|
+
*/
|
|
94
|
+
export declare function getRegistry(config?: Partial<RegistryConfig>): ParserRegistry;
|
|
95
|
+
/**
|
|
96
|
+
* Reset the global registry (for testing)
|
|
97
|
+
*/
|
|
98
|
+
export declare function resetRegistry(): void;
|
|
99
|
+
//# sourceMappingURL=parser-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-registry.d.ts","sourceRoot":"","sources":["../src/parser-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAA6B,MAAM,cAAc,CAAC;AA2BvE,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CAC1B;AASD,qBAAa,cAAc;IACvB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,cAAc,CAIpB;IACF,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IA2B3C;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAKlE;;OAEG;IACG,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAK7E;;OAEG;IACG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAKrE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKxC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAMxC;;OAEG;IACH,gBAAgB,IAAI,YAAY,EAAE;IAIlC;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQhE;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzD;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD;;OAEG;YACW,oBAAoB;IAyBlC;;OAEG;YACW,YAAY;IA8C1B;;OAEG;YACW,YAAY;IA4C1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,GAAG;CAMd;AAKD;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAK5E;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Parser Registry
|
|
3
|
+
*
|
|
4
|
+
* Fetches parser configurations from the Python API and caches them.
|
|
5
|
+
* Falls back to static parsers on failure.
|
|
6
|
+
*/
|
|
7
|
+
import { PARSERS as STATIC_PARSERS } from "./parsers.js";
|
|
8
|
+
const DEFAULT_CONFIG = {
|
|
9
|
+
apiUrl: process.env.API_URL || "https://redis.ayga.tech",
|
|
10
|
+
apiKey: process.env.REDIS_API_KEY,
|
|
11
|
+
cacheTtlMs: 5 * 60 * 1000, // 5 minutes
|
|
12
|
+
enableDynamic: process.env.DYNAMIC_PARSERS !== "false",
|
|
13
|
+
};
|
|
14
|
+
export class ParserRegistry {
|
|
15
|
+
parsers = [];
|
|
16
|
+
parserOptions = new Map();
|
|
17
|
+
defaultOptions = {
|
|
18
|
+
parser_id: "default",
|
|
19
|
+
timeout: 60,
|
|
20
|
+
enabled: true,
|
|
21
|
+
};
|
|
22
|
+
lastFetch = 0;
|
|
23
|
+
lastOptionsFetch = 0;
|
|
24
|
+
fetchPromise = null;
|
|
25
|
+
optionsFetchPromise = null;
|
|
26
|
+
config;
|
|
27
|
+
initialized = false;
|
|
28
|
+
constructor(config = {}) {
|
|
29
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get all parsers, fetching from API if cache is stale
|
|
33
|
+
*/
|
|
34
|
+
async getParsers() {
|
|
35
|
+
if (!this.config.enableDynamic) {
|
|
36
|
+
return STATIC_PARSERS;
|
|
37
|
+
}
|
|
38
|
+
const now = Date.now();
|
|
39
|
+
const cacheValid = this.initialized && (now - this.lastFetch) < this.config.cacheTtlMs;
|
|
40
|
+
if (cacheValid) {
|
|
41
|
+
return this.parsers;
|
|
42
|
+
}
|
|
43
|
+
// Deduplicate concurrent fetch requests
|
|
44
|
+
if (this.fetchPromise) {
|
|
45
|
+
return this.fetchPromise;
|
|
46
|
+
}
|
|
47
|
+
this.fetchPromise = this.fetchParsers();
|
|
48
|
+
try {
|
|
49
|
+
const result = await this.fetchPromise;
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
this.fetchPromise = null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get a parser by ID
|
|
58
|
+
*/
|
|
59
|
+
async getParserById(id) {
|
|
60
|
+
const parsers = await this.getParsers();
|
|
61
|
+
return parsers.find(p => p.id === id);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get a parser by A-Parser name
|
|
65
|
+
*/
|
|
66
|
+
async getParserByAParserName(name) {
|
|
67
|
+
const parsers = await this.getParsers();
|
|
68
|
+
return parsers.find(p => p.aparserName === name);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get parsers by category
|
|
72
|
+
*/
|
|
73
|
+
async getParsersByCategory(category) {
|
|
74
|
+
const parsers = await this.getParsers();
|
|
75
|
+
return parsers.filter(p => p.category === category);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all categories
|
|
79
|
+
*/
|
|
80
|
+
async getCategories() {
|
|
81
|
+
const parsers = await this.getParsers();
|
|
82
|
+
return [...new Set(parsers.map(p => p.category))];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Force refresh of parser cache
|
|
86
|
+
*/
|
|
87
|
+
async refresh() {
|
|
88
|
+
this.lastFetch = 0;
|
|
89
|
+
this.fetchPromise = null;
|
|
90
|
+
return this.getParsers();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get static parsers (no API call)
|
|
94
|
+
*/
|
|
95
|
+
getStaticParsers() {
|
|
96
|
+
return STATIC_PARSERS;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get options for a specific parser
|
|
100
|
+
*/
|
|
101
|
+
async getParserOptions(parserId) {
|
|
102
|
+
await this.ensureOptionsFetched();
|
|
103
|
+
return this.parserOptions.get(parserId.toLowerCase()) || {
|
|
104
|
+
...this.defaultOptions,
|
|
105
|
+
parser_id: parserId,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get timeout for a parser
|
|
110
|
+
*/
|
|
111
|
+
async getParserTimeout(parserId) {
|
|
112
|
+
const options = await this.getParserOptions(parserId);
|
|
113
|
+
return options.timeout;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check if parser is enabled
|
|
117
|
+
*/
|
|
118
|
+
async isParserEnabled(parserId) {
|
|
119
|
+
const options = await this.getParserOptions(parserId);
|
|
120
|
+
return options.enabled;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Ensure options are fetched
|
|
124
|
+
*/
|
|
125
|
+
async ensureOptionsFetched() {
|
|
126
|
+
if (!this.config.enableDynamic) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const now = Date.now();
|
|
130
|
+
const cacheValid = (now - this.lastOptionsFetch) < this.config.cacheTtlMs;
|
|
131
|
+
if (cacheValid && this.parserOptions.size > 0) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
if (this.optionsFetchPromise) {
|
|
135
|
+
await this.optionsFetchPromise;
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.optionsFetchPromise = this.fetchOptions();
|
|
139
|
+
try {
|
|
140
|
+
await this.optionsFetchPromise;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
this.optionsFetchPromise = null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Fetch parser options from API
|
|
148
|
+
*/
|
|
149
|
+
async fetchOptions() {
|
|
150
|
+
try {
|
|
151
|
+
this.log("Fetching parser options from API...");
|
|
152
|
+
const response = await fetch(`${this.config.apiUrl}/parsers/options`, {
|
|
153
|
+
method: "GET",
|
|
154
|
+
headers: {
|
|
155
|
+
"Content-Type": "application/json",
|
|
156
|
+
...(this.config.apiKey ? { "X-API-Key": this.config.apiKey } : {}),
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
if (!response.ok) {
|
|
160
|
+
this.log(`Options API returned ${response.status}`, "debug");
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const data = await response.json();
|
|
164
|
+
// Update default options
|
|
165
|
+
if (data.defaults) {
|
|
166
|
+
this.defaultOptions = {
|
|
167
|
+
parser_id: "default",
|
|
168
|
+
timeout: data.defaults.timeout || 60,
|
|
169
|
+
enabled: true,
|
|
170
|
+
proxy: data.defaults.proxy || undefined,
|
|
171
|
+
user_agent: data.defaults.user_agent || undefined,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// Update per-parser options
|
|
175
|
+
if (data.overrides) {
|
|
176
|
+
for (const [parserId, options] of Object.entries(data.overrides)) {
|
|
177
|
+
this.parserOptions.set(parserId.toLowerCase(), options);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
this.lastOptionsFetch = Date.now();
|
|
181
|
+
this.log(`Loaded options for ${this.parserOptions.size} parsers`);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
this.log(`Failed to fetch parser options: ${error}`, "debug");
|
|
185
|
+
// Options are optional, use defaults
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Fetch parsers from API
|
|
190
|
+
*/
|
|
191
|
+
async fetchParsers() {
|
|
192
|
+
try {
|
|
193
|
+
this.log("Fetching parsers from API...");
|
|
194
|
+
const response = await fetch(`${this.config.apiUrl}/parsers`, {
|
|
195
|
+
method: "GET",
|
|
196
|
+
headers: {
|
|
197
|
+
"Content-Type": "application/json",
|
|
198
|
+
...(this.config.apiKey ? { "X-API-Key": this.config.apiKey } : {}),
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
if (!response.ok) {
|
|
202
|
+
throw new Error(`API returned ${response.status}: ${response.statusText}`);
|
|
203
|
+
}
|
|
204
|
+
const data = await response.json();
|
|
205
|
+
// Transform API response to ParserConfig format
|
|
206
|
+
const parsers = data.parsers
|
|
207
|
+
.filter(p => p.enabled !== false)
|
|
208
|
+
.map(p => this.transformParser(p));
|
|
209
|
+
this.parsers = parsers;
|
|
210
|
+
this.lastFetch = Date.now();
|
|
211
|
+
this.initialized = true;
|
|
212
|
+
this.log(`Loaded ${parsers.length} parsers from API`);
|
|
213
|
+
return parsers;
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
this.log(`Failed to fetch parsers: ${error}`, "error");
|
|
217
|
+
// Fall back to static parsers
|
|
218
|
+
if (!this.initialized) {
|
|
219
|
+
this.parsers = STATIC_PARSERS;
|
|
220
|
+
this.initialized = true;
|
|
221
|
+
this.log(`Falling back to ${STATIC_PARSERS.length} static parsers`);
|
|
222
|
+
}
|
|
223
|
+
return this.parsers;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Transform API parser response to ParserConfig
|
|
228
|
+
*/
|
|
229
|
+
transformParser(apiParser) {
|
|
230
|
+
return {
|
|
231
|
+
id: apiParser.id,
|
|
232
|
+
name: apiParser.name,
|
|
233
|
+
description: apiParser.description,
|
|
234
|
+
category: apiParser.category,
|
|
235
|
+
aparserName: apiParser.aparser_name,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
log(message, level = "info") {
|
|
239
|
+
if (process.env.DEBUG || level === "error") {
|
|
240
|
+
const timestamp = new Date().toISOString();
|
|
241
|
+
console.error(`[${timestamp}] [ParserRegistry] [${level.toUpperCase()}] ${message}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Singleton instance
|
|
246
|
+
let registryInstance = null;
|
|
247
|
+
/**
|
|
248
|
+
* Get the global parser registry instance
|
|
249
|
+
*/
|
|
250
|
+
export function getRegistry(config) {
|
|
251
|
+
if (!registryInstance || config) {
|
|
252
|
+
registryInstance = new ParserRegistry(config);
|
|
253
|
+
}
|
|
254
|
+
return registryInstance;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Reset the global registry (for testing)
|
|
258
|
+
*/
|
|
259
|
+
export function resetRegistry() {
|
|
260
|
+
registryInstance = null;
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=parser-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-registry.js","sourceRoot":"","sources":["../src/parser-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-registry.test.d.ts","sourceRoot":"","sources":["../../src/tests/parser-registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for parser-registry.ts
|
|
3
|
+
*
|
|
4
|
+
* Run with: npx tsx src/tests/parser-registry.test.ts
|
|
5
|
+
*/
|
|
6
|
+
import { ParserRegistry, getRegistry, resetRegistry } from "../parser-registry.js";
|
|
7
|
+
import { PARSERS } from "../parsers.js";
|
|
8
|
+
// Simple test framework
|
|
9
|
+
let passed = 0;
|
|
10
|
+
let failed = 0;
|
|
11
|
+
function test(name, fn) {
|
|
12
|
+
try {
|
|
13
|
+
const result = fn();
|
|
14
|
+
if (result instanceof Promise) {
|
|
15
|
+
result
|
|
16
|
+
.then(() => {
|
|
17
|
+
console.log(`✅ ${name}`);
|
|
18
|
+
passed++;
|
|
19
|
+
})
|
|
20
|
+
.catch((err) => {
|
|
21
|
+
console.log(`❌ ${name}: ${err}`);
|
|
22
|
+
failed++;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
console.log(`✅ ${name}`);
|
|
27
|
+
passed++;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.log(`❌ ${name}: ${err}`);
|
|
32
|
+
failed++;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function assert(condition, message) {
|
|
36
|
+
if (!condition) {
|
|
37
|
+
throw new Error(message || "Assertion failed");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function assertEqual(actual, expected, message) {
|
|
41
|
+
if (actual !== expected) {
|
|
42
|
+
throw new Error(message || `Expected ${expected}, got ${actual}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Tests
|
|
46
|
+
test("ParserRegistry constructor creates instance", () => {
|
|
47
|
+
const registry = new ParserRegistry();
|
|
48
|
+
assert(registry !== null);
|
|
49
|
+
});
|
|
50
|
+
test("ParserRegistry with custom config", () => {
|
|
51
|
+
const registry = new ParserRegistry({
|
|
52
|
+
apiUrl: "http://localhost:8111",
|
|
53
|
+
cacheTtlMs: 1000,
|
|
54
|
+
enableDynamic: false,
|
|
55
|
+
});
|
|
56
|
+
assert(registry !== null);
|
|
57
|
+
});
|
|
58
|
+
test("getStaticParsers returns parsers", () => {
|
|
59
|
+
const registry = new ParserRegistry();
|
|
60
|
+
const parsers = registry.getStaticParsers();
|
|
61
|
+
assert(parsers.length > 0, "Should have parsers");
|
|
62
|
+
assertEqual(parsers.length, PARSERS.length);
|
|
63
|
+
});
|
|
64
|
+
test("getParsers returns parsers (static mode)", async () => {
|
|
65
|
+
resetRegistry();
|
|
66
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
67
|
+
const parsers = await registry.getParsers();
|
|
68
|
+
assert(parsers.length > 0, "Should have parsers");
|
|
69
|
+
assertEqual(parsers.length, PARSERS.length);
|
|
70
|
+
});
|
|
71
|
+
test("getParserById finds parser", async () => {
|
|
72
|
+
resetRegistry();
|
|
73
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
74
|
+
const parser = await registry.getParserById("perplexity");
|
|
75
|
+
assert(parser !== undefined, "Should find perplexity");
|
|
76
|
+
assertEqual(parser?.id, "perplexity");
|
|
77
|
+
assertEqual(parser?.aparserName, "FreeAI::Perplexity");
|
|
78
|
+
});
|
|
79
|
+
test("getParserById returns undefined for unknown", async () => {
|
|
80
|
+
resetRegistry();
|
|
81
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
82
|
+
const parser = await registry.getParserById("unknown_parser");
|
|
83
|
+
assert(parser === undefined, "Should not find unknown parser");
|
|
84
|
+
});
|
|
85
|
+
test("getParserByAParserName finds parser", async () => {
|
|
86
|
+
resetRegistry();
|
|
87
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
88
|
+
const parser = await registry.getParserByAParserName("FreeAI::ChatGPT");
|
|
89
|
+
assert(parser !== undefined, "Should find ChatGPT");
|
|
90
|
+
assertEqual(parser?.id, "chatgpt");
|
|
91
|
+
});
|
|
92
|
+
test("getParsersByCategory filters correctly", async () => {
|
|
93
|
+
resetRegistry();
|
|
94
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
95
|
+
const aiParsers = await registry.getParsersByCategory("AI Chat");
|
|
96
|
+
assert(aiParsers.length > 0, "Should have AI Chat parsers");
|
|
97
|
+
assert(aiParsers.every(p => p.category === "AI Chat"), "All should be AI Chat");
|
|
98
|
+
});
|
|
99
|
+
test("getCategories returns unique categories", async () => {
|
|
100
|
+
resetRegistry();
|
|
101
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
102
|
+
const categories = await registry.getCategories();
|
|
103
|
+
assert(categories.length > 0, "Should have categories");
|
|
104
|
+
assert(categories.includes("AI Chat"), "Should include AI Chat");
|
|
105
|
+
assert(categories.includes("Search Engines"), "Should include Search Engines");
|
|
106
|
+
// Check uniqueness
|
|
107
|
+
const unique = new Set(categories);
|
|
108
|
+
assertEqual(categories.length, unique.size, "Categories should be unique");
|
|
109
|
+
});
|
|
110
|
+
test("getRegistry returns singleton", () => {
|
|
111
|
+
resetRegistry();
|
|
112
|
+
const r1 = getRegistry({ enableDynamic: false });
|
|
113
|
+
const r2 = getRegistry();
|
|
114
|
+
assert(r1 === r2, "Should return same instance");
|
|
115
|
+
});
|
|
116
|
+
test("resetRegistry clears singleton", () => {
|
|
117
|
+
const r1 = getRegistry({ enableDynamic: false });
|
|
118
|
+
resetRegistry();
|
|
119
|
+
const r2 = getRegistry({ enableDynamic: false });
|
|
120
|
+
assert(r1 !== r2, "Should be different instances after reset");
|
|
121
|
+
});
|
|
122
|
+
test("getParserOptions returns default options", async () => {
|
|
123
|
+
resetRegistry();
|
|
124
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
125
|
+
const options = await registry.getParserOptions("perplexity");
|
|
126
|
+
assert(options !== undefined, "Should return options");
|
|
127
|
+
assertEqual(options.parser_id, "perplexity");
|
|
128
|
+
assertEqual(options.timeout, 60);
|
|
129
|
+
assertEqual(options.enabled, true);
|
|
130
|
+
});
|
|
131
|
+
test("getParserTimeout returns timeout", async () => {
|
|
132
|
+
resetRegistry();
|
|
133
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
134
|
+
const timeout = await registry.getParserTimeout("chatgpt");
|
|
135
|
+
assertEqual(timeout, 60);
|
|
136
|
+
});
|
|
137
|
+
test("isParserEnabled returns true by default", async () => {
|
|
138
|
+
resetRegistry();
|
|
139
|
+
const registry = getRegistry({ enableDynamic: false });
|
|
140
|
+
const enabled = await registry.isParserEnabled("gemini");
|
|
141
|
+
assertEqual(enabled, true);
|
|
142
|
+
});
|
|
143
|
+
// Run summary after async tests complete
|
|
144
|
+
setTimeout(() => {
|
|
145
|
+
console.log(`\n--- Results ---`);
|
|
146
|
+
console.log(`Passed: ${passed}`);
|
|
147
|
+
console.log(`Failed: ${failed}`);
|
|
148
|
+
if (failed > 0) {
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
}, 1000);
|
|
152
|
+
//# sourceMappingURL=parser-registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser-registry.test.js","sourceRoot":"","sources":["../../src/tests/parser-registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,wBAAwB;AACxB,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,SAAS,IAAI,CAAC,IAAY,EAAE,EAA8B;IACtD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC5B,MAAM;iBACD,IAAI,CAAC,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBACzB,MAAM,EAAE,CAAC;YACb,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;gBACjC,MAAM,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,CAAC;QACb,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC;IACb,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,SAAkB,EAAE,OAAgB;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC;IACnD,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAI,MAAS,EAAE,QAAW,EAAE,OAAgB;IAC5D,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,YAAY,QAAQ,SAAS,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;AACL,CAAC;AAED,QAAQ;AAER,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACrD,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC3C,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC;QAChC,MAAM,EAAE,uBAAuB;QAC/B,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,KAAK;KACvB,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC1C,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAClD,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;IACxD,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAClD,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC1C,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,wBAAwB,CAAC,CAAC;IACvD,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IACtC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;IAC3D,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,gCAAgC,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;IACnD,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACxE,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACpD,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;IACtD,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;IAC5D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACpF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;IACvD,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;IAClD,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC;IACxD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC,CAAC;IACjE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,+BAA+B,CAAC,CAAC;IAC/E,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;IACvC,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,6BAA6B,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACxC,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC;IAChB,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,2CAA2C,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;IACxD,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACvD,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7C,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;IAChD,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC3D,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;IACvD,aAAa,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzD,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,yCAAyC;AACzC,UAAU,CAAC,GAAG,EAAE;IACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;IACjC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidated Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Instead of 40+ individual tools, we define 6 category-based tools
|
|
5
|
+
* with an optional 'engine' parameter for specific parser selection.
|
|
6
|
+
*/
|
|
7
|
+
import type { ParserConfig } from "./parsers.js";
|
|
8
|
+
/**
|
|
9
|
+
* Tool category configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface ToolCategory {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
categories: string[];
|
|
16
|
+
defaultEngine: string;
|
|
17
|
+
defaultEnvVar: string;
|
|
18
|
+
queryDescription: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Consolidated tool definitions
|
|
22
|
+
*/
|
|
23
|
+
export declare const TOOL_CATEGORIES: ToolCategory[];
|
|
24
|
+
/**
|
|
25
|
+
* Get parsers for a tool category
|
|
26
|
+
*/
|
|
27
|
+
export declare function getParsersForTool(toolId: string, allParsers: ParserConfig[]): ParserConfig[];
|
|
28
|
+
/**
|
|
29
|
+
* Get default engine for a tool, checking ENV first
|
|
30
|
+
*/
|
|
31
|
+
export declare function getDefaultEngine(toolId: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Find which tool a parser belongs to
|
|
34
|
+
*/
|
|
35
|
+
export declare function findToolForParser(parserId: string, allParsers: ParserConfig[]): ToolCategory | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Build MCP tool schema for a consolidated tool
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildToolSchema(tool: ToolCategory, availableEngines: string[]): object;
|
|
40
|
+
//# sourceMappingURL=tool-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-definitions.d.ts","sourceRoot":"","sources":["../src/tool-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,EAuDzC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EAAE,GAC3B,YAAY,EAAE,CAKhB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,YAAY,EAAE,GAC3B,YAAY,GAAG,SAAS,CAK1B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC3B,IAAI,EAAE,YAAY,EAClB,gBAAgB,EAAE,MAAM,EAAE,GAC3B,MAAM,CAwBR"}
|