skannr 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.eslintrc.js +22 -0
  2. package/README.md +109 -0
  3. package/dist/agent-cli.d.ts +7 -0
  4. package/dist/agent-cli.d.ts.map +1 -0
  5. package/dist/agent-cli.js +364 -0
  6. package/dist/agent-cli.js.map +1 -0
  7. package/dist/agent.d.ts +115 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +340 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/benchmark.d.ts +53 -0
  12. package/dist/benchmark.d.ts.map +1 -0
  13. package/dist/benchmark.js +307 -0
  14. package/dist/benchmark.js.map +1 -0
  15. package/dist/cache.d.ts +97 -0
  16. package/dist/cache.d.ts.map +1 -0
  17. package/dist/cache.js +284 -0
  18. package/dist/cache.js.map +1 -0
  19. package/dist/cli.d.ts +6 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +238 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/config.d.ts +8 -0
  24. package/dist/config.d.ts.map +1 -0
  25. package/dist/config.js +52 -0
  26. package/dist/config.js.map +1 -0
  27. package/dist/index.d.ts +18 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +176 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/languages/GenericAdapter.d.ts +10 -0
  32. package/dist/languages/GenericAdapter.d.ts.map +1 -0
  33. package/dist/languages/GenericAdapter.js +41 -0
  34. package/dist/languages/GenericAdapter.js.map +1 -0
  35. package/dist/languages/LanguageAdapter.d.ts +14 -0
  36. package/dist/languages/LanguageAdapter.d.ts.map +1 -0
  37. package/dist/languages/LanguageAdapter.js +3 -0
  38. package/dist/languages/LanguageAdapter.js.map +1 -0
  39. package/dist/languages/PythonAdapter.d.ts +10 -0
  40. package/dist/languages/PythonAdapter.d.ts.map +1 -0
  41. package/dist/languages/PythonAdapter.js +98 -0
  42. package/dist/languages/PythonAdapter.js.map +1 -0
  43. package/dist/languages/TypeScriptAdapter.d.ts +17 -0
  44. package/dist/languages/TypeScriptAdapter.d.ts.map +1 -0
  45. package/dist/languages/TypeScriptAdapter.js +321 -0
  46. package/dist/languages/TypeScriptAdapter.js.map +1 -0
  47. package/dist/languages/registry.d.ts +4 -0
  48. package/dist/languages/registry.d.ts.map +1 -0
  49. package/dist/languages/registry.js +86 -0
  50. package/dist/languages/registry.js.map +1 -0
  51. package/dist/mapper.d.ts +49 -0
  52. package/dist/mapper.d.ts.map +1 -0
  53. package/dist/mapper.js +386 -0
  54. package/dist/mapper.js.map +1 -0
  55. package/dist/ranker-enhanced.d.ts +37 -0
  56. package/dist/ranker-enhanced.d.ts.map +1 -0
  57. package/dist/ranker-enhanced.js +395 -0
  58. package/dist/ranker-enhanced.js.map +1 -0
  59. package/dist/ranker.d.ts +14 -0
  60. package/dist/ranker.d.ts.map +1 -0
  61. package/dist/ranker.js +105 -0
  62. package/dist/ranker.js.map +1 -0
  63. package/dist/rocket-chat-scope.d.ts +7 -0
  64. package/dist/rocket-chat-scope.d.ts.map +1 -0
  65. package/dist/rocket-chat-scope.js +95 -0
  66. package/dist/rocket-chat-scope.js.map +1 -0
  67. package/dist/scanner.d.ts +16 -0
  68. package/dist/scanner.d.ts.map +1 -0
  69. package/dist/scanner.js +228 -0
  70. package/dist/scanner.js.map +1 -0
  71. package/dist/skeletonizer.d.ts +5 -0
  72. package/dist/skeletonizer.d.ts.map +1 -0
  73. package/dist/skeletonizer.js +52 -0
  74. package/dist/skeletonizer.js.map +1 -0
  75. package/dist/tokenizer.d.ts +9 -0
  76. package/dist/tokenizer.d.ts.map +1 -0
  77. package/dist/tokenizer.js +21 -0
  78. package/dist/tokenizer.js.map +1 -0
  79. package/dist/types.d.ts +68 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +6 -0
  82. package/dist/types.js.map +1 -0
  83. package/gemini-extension/GEMINI.md +26 -0
  84. package/gemini-extension/gemini-extension.json +12 -0
  85. package/gemini-extension/package.json +14 -0
  86. package/gemini-extension/src/server.ts +63 -0
  87. package/gemini-extension/tsconfig.json +14 -0
  88. package/jest.config.js +5 -0
  89. package/package.json +46 -0
  90. package/src/agent-cli.ts +383 -0
  91. package/src/agent.ts +344 -0
  92. package/src/benchmark.ts +389 -0
  93. package/src/cache.ts +317 -0
  94. package/src/cli.ts +223 -0
  95. package/src/config.ts +22 -0
  96. package/src/index.ts +215 -0
  97. package/src/languages/GenericAdapter.ts +44 -0
  98. package/src/languages/LanguageAdapter.ts +14 -0
  99. package/src/languages/PythonAdapter.ts +74 -0
  100. package/src/languages/TypeScriptAdapter.ts +338 -0
  101. package/src/languages/registry.ts +49 -0
  102. package/src/mapper.ts +448 -0
  103. package/src/ranker-enhanced.ts +460 -0
  104. package/src/ranker.ts +92 -0
  105. package/src/scanner.ts +201 -0
  106. package/src/skeletonizer.ts +16 -0
  107. package/src/tokenizer.ts +20 -0
  108. package/src/types.ts +71 -0
  109. package/tests/agent.tools.test.ts +81 -0
  110. package/tests/benchmark.test.ts +31 -0
  111. package/tests/fixtures/sample.py +17 -0
  112. package/tests/fixtures/sample.ts +13 -0
  113. package/tests/fixtures/src/api/routes.ts +1 -0
  114. package/tests/fixtures/src/auth/permission.ts +3 -0
  115. package/tests/ranker-enhanced.test.ts +68 -0
  116. package/tests/ranker.test.ts +75 -0
  117. package/tests/scanner.scope.test.ts +41 -0
  118. package/tests/setup-fixtures.js +29 -0
  119. package/tests/skeletonizer.test.ts +142 -0
  120. package/tsconfig.json +21 -0
  121. package/uca-landing/index.html +17 -0
  122. package/uca-landing/package.json +23 -0
  123. package/uca-landing/postcss.config.js +6 -0
  124. package/uca-landing/src/App.jsx +43 -0
  125. package/uca-landing/src/components/AgentMode.jsx +45 -0
  126. package/uca-landing/src/components/CliReference.jsx +49 -0
  127. package/uca-landing/src/components/Features.jsx +63 -0
  128. package/uca-landing/src/components/Footer.jsx +35 -0
  129. package/uca-landing/src/components/Hero.jsx +124 -0
  130. package/uca-landing/src/components/HowItWorks.jsx +60 -0
  131. package/uca-landing/src/components/Install.jsx +90 -0
  132. package/uca-landing/src/components/LanguageSupport.jsx +63 -0
  133. package/uca-landing/src/components/Navbar.jsx +86 -0
  134. package/uca-landing/src/components/Problem.jsx +51 -0
  135. package/uca-landing/src/components/Reveal.jsx +40 -0
  136. package/uca-landing/src/components/WorksWith.jsx +59 -0
  137. package/uca-landing/src/hooks/useScrollNav.js +13 -0
  138. package/uca-landing/src/hooks/useTypewriter.js +41 -0
  139. package/uca-landing/src/index.css +13 -0
  140. package/uca-landing/src/main.jsx +10 -0
  141. package/uca-landing/tailwind.config.js +68 -0
  142. package/uca-landing/vite.config.js +6 -0
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TypeScriptAdapter = void 0;
37
+ const ts_morph_1 = require("ts-morph");
38
+ const path = __importStar(require("path"));
39
+ class TypeScriptAdapter {
40
+ name = 'typescript';
41
+ extensions = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
42
+ canHandle(filePath) {
43
+ const ext = path.extname(filePath).toLowerCase();
44
+ return this.extensions.includes(ext);
45
+ }
46
+ generateSkeleton(content, filePath) {
47
+ try {
48
+ const sourceFile = this.createSourceFile(content, filePath);
49
+ return this.generateSkeletonFromSourceFile(sourceFile);
50
+ }
51
+ catch (error) {
52
+ return `/* Failed to parse file: ${error instanceof Error ? error.message : 'Unknown error'} */`;
53
+ }
54
+ }
55
+ extractSymbols(content) {
56
+ try {
57
+ const sourceFile = this.createSourceFile(content, 'memory.ts');
58
+ const symbols = [];
59
+ for (const cls of sourceFile.getClasses()) {
60
+ symbols.push({
61
+ name: cls.getName() || 'Anonymous',
62
+ kind: 'class',
63
+ line: cls.getStartLineNumber(),
64
+ });
65
+ }
66
+ for (const func of sourceFile.getFunctions()) {
67
+ symbols.push({
68
+ name: func.getName() || 'anonymous',
69
+ kind: 'function',
70
+ line: func.getStartLineNumber(),
71
+ });
72
+ }
73
+ for (const iface of sourceFile.getInterfaces()) {
74
+ symbols.push({
75
+ name: iface.getName(),
76
+ kind: 'interface',
77
+ line: iface.getStartLineNumber(),
78
+ });
79
+ }
80
+ for (const typeAlias of sourceFile.getTypeAliases()) {
81
+ symbols.push({
82
+ name: typeAlias.getName(),
83
+ kind: 'type',
84
+ line: typeAlias.getStartLineNumber(),
85
+ });
86
+ }
87
+ for (const varStmt of sourceFile.getVariableStatements()) {
88
+ for (const decl of varStmt.getDeclarations()) {
89
+ symbols.push({
90
+ name: decl.getName(),
91
+ kind: 'variable',
92
+ line: decl.getStartLineNumber(),
93
+ });
94
+ }
95
+ }
96
+ const exported = new Set();
97
+ sourceFile.getExportedDeclarations().forEach((_, name) => exported.add(name));
98
+ for (const name of exported) {
99
+ symbols.push({ name, kind: 'export', line: 1 });
100
+ }
101
+ return symbols;
102
+ }
103
+ catch {
104
+ return [];
105
+ }
106
+ }
107
+ extractImports(content) {
108
+ try {
109
+ const sourceFile = this.createSourceFile(content, 'memory.ts');
110
+ return sourceFile.getImportDeclarations().map((imp) => imp.getModuleSpecifierValue());
111
+ }
112
+ catch {
113
+ return [];
114
+ }
115
+ }
116
+ createSourceFile(content, filePath) {
117
+ const project = new ts_morph_1.Project({
118
+ useInMemoryFileSystem: true,
119
+ skipAddingFilesFromTsConfig: true,
120
+ compilerOptions: {
121
+ allowJs: true,
122
+ checkJs: false,
123
+ },
124
+ });
125
+ return project.createSourceFile(filePath, content, { overwrite: true });
126
+ }
127
+ generateSkeletonFromSourceFile(sourceFile) {
128
+ const lines = [];
129
+ lines.push(`/* Skeleton of ${path.basename(sourceFile.getFilePath())} */\n`);
130
+ const imports = sourceFile.getImportDeclarations();
131
+ for (const imp of imports) {
132
+ lines.push(imp.getText());
133
+ }
134
+ if (imports.length > 0) {
135
+ lines.push('');
136
+ }
137
+ const exportDeclarations = sourceFile.getExportDeclarations();
138
+ const exportAssignments = sourceFile.getExportAssignments();
139
+ const classes = sourceFile.getClasses();
140
+ for (const cls of classes) {
141
+ lines.push(this.processClass(cls));
142
+ lines.push('');
143
+ }
144
+ const interfaces = sourceFile.getInterfaces();
145
+ for (const iface of interfaces) {
146
+ lines.push(iface.getText());
147
+ lines.push('');
148
+ }
149
+ const typeAliases = sourceFile.getTypeAliases();
150
+ for (const typeAlias of typeAliases) {
151
+ lines.push(typeAlias.getText());
152
+ lines.push('');
153
+ }
154
+ const enums = sourceFile.getEnums();
155
+ for (const enumDecl of enums) {
156
+ lines.push(enumDecl.getText());
157
+ lines.push('');
158
+ }
159
+ const functions = sourceFile.getFunctions();
160
+ for (const func of functions) {
161
+ lines.push(this.processFunction(func));
162
+ lines.push('');
163
+ }
164
+ const variables = sourceFile.getVariableStatements();
165
+ for (const varStatement of variables) {
166
+ lines.push(this.processVariableStatement(varStatement));
167
+ lines.push('');
168
+ }
169
+ for (const exportDecl of exportDeclarations) {
170
+ lines.push(exportDecl.getText());
171
+ }
172
+ for (const exportAssign of exportAssignments) {
173
+ lines.push(exportAssign.getText());
174
+ }
175
+ return lines.join('\n').trim();
176
+ }
177
+ processClass(cls) {
178
+ const lines = [];
179
+ const modifiers = cls.getModifiers().map((m) => m.getText()).join(' ');
180
+ let classDecl = modifiers ? `${modifiers} class` : 'class';
181
+ classDecl += ` ${cls.getName() || 'Anonymous'}`;
182
+ const typeParams = cls.getTypeParameters();
183
+ if (typeParams.length > 0) {
184
+ classDecl += `<${typeParams.map((tp) => tp.getText()).join(', ')}>`;
185
+ }
186
+ const extendsClause = cls.getExtends();
187
+ if (extendsClause) {
188
+ classDecl += ` extends ${extendsClause.getText()}`;
189
+ }
190
+ const implementsClauses = cls.getImplements();
191
+ if (implementsClauses.length > 0) {
192
+ classDecl += ` implements ${implementsClauses.map((ic) => ic.getText()).join(', ')}`;
193
+ }
194
+ classDecl += ' {';
195
+ lines.push(classDecl);
196
+ const jsDoc = cls.getJsDocs();
197
+ if (jsDoc.length > 0) {
198
+ lines.splice(0, 0, jsDoc[0].getText());
199
+ }
200
+ const properties = cls.getProperties();
201
+ for (const prop of properties) {
202
+ const propModifiers = prop.getModifiers().map((m) => m.getText()).join(' ');
203
+ const propName = prop.getName();
204
+ const propType = prop.getType().getText();
205
+ const propLine = propModifiers
206
+ ? ` ${propModifiers} ${propName}: ${propType};`
207
+ : ` ${propName}: ${propType};`;
208
+ lines.push(propLine);
209
+ }
210
+ if (properties.length > 0) {
211
+ lines.push('');
212
+ }
213
+ const methods = cls.getMethods();
214
+ for (const method of methods) {
215
+ lines.push(this.processMethod(method));
216
+ }
217
+ const constructors = cls.getConstructors();
218
+ for (const ctor of constructors) {
219
+ lines.push(this.processConstructor(ctor));
220
+ }
221
+ lines.push('}');
222
+ return lines.join('\n');
223
+ }
224
+ processMethod(method) {
225
+ const lines = [];
226
+ const jsDoc = method.getJsDocs();
227
+ if (jsDoc.length > 0) {
228
+ lines.push(' ' + jsDoc[0].getText().split('\n').join('\n '));
229
+ }
230
+ const modifiers = method.getModifiers().map((m) => m.getText()).join(' ');
231
+ const name = method.getName();
232
+ const params = method.getParameters().map((p) => {
233
+ const pName = p.getName();
234
+ const pType = p.getType().getText();
235
+ const optional = p.isOptional() ? '?' : '';
236
+ return `${pName}${optional}: ${pType}`;
237
+ }).join(', ');
238
+ const returnType = method.getReturnType().getText();
239
+ let signature = modifiers ? ` ${modifiers} ${name}` : ` ${name}`;
240
+ signature += `(${params}): ${returnType} {`;
241
+ lines.push(signature);
242
+ lines.push(' /* trimmed */');
243
+ lines.push(' }');
244
+ lines.push('');
245
+ return lines.join('\n');
246
+ }
247
+ processConstructor(ctor) {
248
+ const lines = [];
249
+ const jsDoc = ctor.getJsDocs();
250
+ if (jsDoc.length > 0) {
251
+ lines.push(' ' + jsDoc[0].getText().split('\n').join('\n '));
252
+ }
253
+ const params = ctor.getParameters().map((p) => {
254
+ const modifiers = p.getModifiers().map((m) => m.getText()).join(' ');
255
+ const pName = p.getName();
256
+ const pType = p.getType().getText();
257
+ const optional = p.isOptional() ? '?' : '';
258
+ const paramStr = `${pName}${optional}: ${pType}`;
259
+ return modifiers ? `${modifiers} ${paramStr}` : paramStr;
260
+ }).join(', ');
261
+ lines.push(` constructor(${params}) {`);
262
+ lines.push(' /* trimmed */');
263
+ lines.push(' }');
264
+ lines.push('');
265
+ return lines.join('\n');
266
+ }
267
+ processFunction(func) {
268
+ const lines = [];
269
+ const jsDoc = func.getJsDocs();
270
+ if (jsDoc.length > 0) {
271
+ lines.push(jsDoc[0].getText());
272
+ }
273
+ const modifiers = func.getModifiers().map((m) => m.getText()).join(' ');
274
+ const name = func.getName();
275
+ const params = func.getParameters().map((p) => {
276
+ const pName = p.getName();
277
+ const pType = p.getType().getText();
278
+ const optional = p.isOptional() ? '?' : '';
279
+ return `${pName}${optional}: ${pType}`;
280
+ }).join(', ');
281
+ const returnType = func.getReturnType().getText();
282
+ let signature = modifiers ? `${modifiers} function` : 'function';
283
+ signature += ` ${name}(${params}): ${returnType} {`;
284
+ lines.push(signature);
285
+ lines.push(' /* trimmed */');
286
+ lines.push('}');
287
+ return lines.join('\n');
288
+ }
289
+ processVariableStatement(varStatement) {
290
+ const lines = [];
291
+ const jsDoc = varStatement.getJsDocs();
292
+ if (jsDoc.length > 0) {
293
+ lines.push(jsDoc[0].getText());
294
+ }
295
+ const modifiers = varStatement.getModifiers().map((m) => m.getText()).join(' ');
296
+ const declarations = varStatement.getDeclarations();
297
+ const declarationKind = varStatement.getDeclarationKind();
298
+ for (const decl of declarations) {
299
+ const name = decl.getName();
300
+ const type = decl.getType().getText();
301
+ const initializer = decl.getInitializer();
302
+ let value = '';
303
+ if (initializer) {
304
+ const initText = initializer.getText();
305
+ if (initText.length < 50 && !initText.includes('{') && !initText.includes('=>')) {
306
+ value = ` = ${initText}`;
307
+ }
308
+ else {
309
+ value = ' = /* trimmed */';
310
+ }
311
+ }
312
+ const line = modifiers
313
+ ? `${modifiers} ${declarationKind} ${name}: ${type}${value};`
314
+ : `${declarationKind} ${name}: ${type}${value};`;
315
+ lines.push(line);
316
+ }
317
+ return lines.join('\n');
318
+ }
319
+ }
320
+ exports.TypeScriptAdapter = TypeScriptAdapter;
321
+ //# sourceMappingURL=TypeScriptAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeScriptAdapter.js","sourceRoot":"","sources":["../../src/languages/TypeScriptAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA+C;AAC/C,2CAA6B;AAG7B,MAAa,iBAAiB;IAC5B,IAAI,GAAG,YAAY,CAAC;IACpB,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5D,SAAS,CAAC,QAAgB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,gBAAgB,CAAC,OAAe,EAAE,QAAgB;QAChD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC;QACnG,CAAC;IACH,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,WAAW;oBAClC,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,GAAG,CAAC,kBAAkB,EAAE;iBAC/B,CAAC,CAAC;YACL,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,WAAW;oBACnC,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;iBAChC,CAAC,CAAC;YACL,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;oBACrB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,KAAK,CAAC,kBAAkB,EAAE;iBACjC,CAAC,CAAC;YACL,CAAC;YAED,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE;oBACzB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,CAAC,kBAAkB,EAAE;iBACrC,CAAC,CAAC;YACL,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBACzD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;wBACpB,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;qBAChC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YACnC,UAAU,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC/D,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,OAAe,EAAE,QAAgB;QACxD,MAAM,OAAO,GAAG,IAAI,kBAAO,CAAC;YAC1B,qBAAqB,EAAE,IAAI;YAC3B,2BAA2B,EAAE,IAAI;YACjC,eAAe,EAAE;gBACf,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEO,8BAA8B,CAAC,UAAsB;QAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;QAE7E,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;QACnD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;QAC9D,MAAM,iBAAiB,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAC;QAE5D,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;QAChD,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;QACrD,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,YAAY,IAAI,iBAAiB,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAEO,YAAY,CAAC,GAAQ;QAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5E,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3D,SAAS,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,SAAS,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3E,CAAC;QAED,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,aAAa,EAAE,CAAC;YAClB,SAAS,IAAI,YAAY,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,iBAAiB,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9C,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,SAAS,IAAI,eAAe,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,CAAC;QAED,SAAS,IAAI,IAAI,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtB,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,aAAa;gBAC5B,CAAC,CAAC,KAAK,aAAa,IAAI,QAAQ,KAAK,QAAQ,GAAG;gBAChD,CAAC,CAAC,KAAK,QAAQ,KAAK,QAAQ,GAAG,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,MAAW;QAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YACnD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,GAAG,KAAK,GAAG,QAAQ,KAAK,KAAK,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC;QAEpD,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnE,SAAS,IAAI,IAAI,MAAM,MAAM,UAAU,IAAI,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,kBAAkB,CAAC,IAAS;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YACjD,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,QAAQ,KAAK,KAAK,EAAE,CAAC;YACjD,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3D,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,KAAK,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,eAAe,CAAC,IAAS;QAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YACjD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,GAAG,KAAK,GAAG,QAAQ,KAAK,KAAK,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC;QAElD,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACjE,SAAS,IAAI,IAAI,IAAI,IAAI,MAAM,MAAM,UAAU,IAAI,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,wBAAwB,CAAC,YAAiB;QAChD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrF,MAAM,YAAY,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;QACpD,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAE1D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAE1C,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;gBACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChF,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,kBAAkB,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,SAAS;gBACpB,CAAC,CAAC,GAAG,SAAS,IAAI,eAAe,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG;gBAC7D,CAAC,CAAC,GAAG,eAAe,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AA7UD,8CA6UC"}
@@ -0,0 +1,4 @@
1
+ import { LanguageAdapter } from './LanguageAdapter';
2
+ export declare function getAdapter(filePath: string): LanguageAdapter;
3
+ export declare function detectRepoLanguages(root: string): string[];
4
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/languages/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAapD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAG5D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1D"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getAdapter = getAdapter;
37
+ exports.detectRepoLanguages = detectRepoLanguages;
38
+ const TypeScriptAdapter_1 = require("./TypeScriptAdapter");
39
+ const PythonAdapter_1 = require("./PythonAdapter");
40
+ const GenericAdapter_1 = require("./GenericAdapter");
41
+ const path = __importStar(require("path"));
42
+ const adapters = [
43
+ new TypeScriptAdapter_1.TypeScriptAdapter(),
44
+ new PythonAdapter_1.PythonAdapter(),
45
+ ];
46
+ const generic = new GenericAdapter_1.GenericAdapter();
47
+ function getAdapter(filePath) {
48
+ const ext = path.extname(filePath).toLowerCase();
49
+ return adapters.find((a) => a.extensions.includes(ext)) ?? generic;
50
+ }
51
+ function detectRepoLanguages(root) {
52
+ const fs = require('fs');
53
+ const extCount = {};
54
+ walkAndCount(root, extCount, 0, 3);
55
+ return Object.entries(extCount)
56
+ .sort((a, b) => b[1] - a[1])
57
+ .slice(0, 3)
58
+ .map(([ext]) => ext);
59
+ }
60
+ function walkAndCount(dir, counts, depth, maxDepth) {
61
+ if (depth > maxDepth)
62
+ return;
63
+ const fs = require('fs');
64
+ const path = require('path');
65
+ const ignored = new Set(['node_modules', '.git', 'dist', 'build', 'vendor', '__pycache__']);
66
+ try {
67
+ for (const entry of fs.readdirSync(dir)) {
68
+ if (ignored.has(entry))
69
+ continue;
70
+ const full = path.join(dir, entry);
71
+ const stat = fs.statSync(full);
72
+ if (stat.isDirectory()) {
73
+ walkAndCount(full, counts, depth + 1, maxDepth);
74
+ }
75
+ else {
76
+ const ext = path.extname(entry).toLowerCase();
77
+ if (ext)
78
+ counts[ext] = (counts[ext] ?? 0) + 1;
79
+ }
80
+ }
81
+ }
82
+ catch {
83
+ // Ignore unreadable directories.
84
+ }
85
+ }
86
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/languages/registry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,gCAGC;AAED,kDAQC;AAzBD,2DAAwD;AACxD,mDAAgD;AAChD,qDAAkD;AAClD,2CAA6B;AAE7B,MAAM,QAAQ,GAAsB;IAClC,IAAI,qCAAiB,EAAE;IACvB,IAAI,6BAAa,EAAE;CACpB,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,+BAAc,EAAE,CAAC;AAErC,SAAgB,UAAU,CAAC,QAAgB;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC;AACrE,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,MAA8B,EAAE,KAAa,EAAE,QAAgB;IAChG,IAAI,KAAK,GAAG,QAAQ;QAAE,OAAO;IAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5F,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,GAAG;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Symbol mapping system for on-demand code retrieval
3
+ * Tracks locations of all code blocks that were trimmed in skeletons
4
+ */
5
+ export interface SymbolLocation {
6
+ symbolId: string;
7
+ symbolName: string;
8
+ symbolType: 'function' | 'method' | 'constructor' | 'arrow-function' | 'variable';
9
+ filePath: string;
10
+ startLine: number;
11
+ endLine: number;
12
+ startPos: number;
13
+ endPos: number;
14
+ parentClass?: string;
15
+ signature?: string;
16
+ }
17
+ export interface SymbolMapping {
18
+ generatedAt: string;
19
+ rootPath: string;
20
+ files: {
21
+ [filePath: string]: {
22
+ originalPath: string;
23
+ symbols: SymbolLocation[];
24
+ };
25
+ };
26
+ }
27
+ /**
28
+ * Build skeleton with symbol mapping for on-demand retrieval
29
+ */
30
+ export declare function buildSkeletonWithMapping(filePath: string, rootPath: string): {
31
+ skeleton: string;
32
+ symbols: SymbolLocation[];
33
+ };
34
+ /**
35
+ * Get symbol details by ID from mapping
36
+ */
37
+ export declare function getSymbolDetails(symbolId: string, mapping: SymbolMapping): {
38
+ content: string;
39
+ location: SymbolLocation;
40
+ } | null;
41
+ /**
42
+ * Save mapping to JSON file
43
+ */
44
+ export declare function saveMappingToFile(mapping: SymbolMapping, outputPath: string): void;
45
+ /**
46
+ * Load mapping from JSON file
47
+ */
48
+ export declare function loadMappingFromFile(mappingPath: string): SymbolMapping;
49
+ //# sourceMappingURL=mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,YAAY,EAAE,MAAM,CAAC;YACrB,OAAO,EAAE,cAAc,EAAE,CAAC;SAC3B,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,EAAE,CAAA;CAAE,CAsBjD;AA2VD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,aAAa,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAkBtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAElF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAGtE"}