@xiuper/cli 0.0.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 (218) hide show
  1. package/README.md +180 -0
  2. package/dist/jsMain/typescript/agents/LLMService.d.ts +40 -0
  3. package/dist/jsMain/typescript/agents/LLMService.d.ts.map +1 -0
  4. package/dist/jsMain/typescript/agents/LLMService.js +156 -0
  5. package/dist/jsMain/typescript/agents/LLMService.js.map +1 -0
  6. package/dist/jsMain/typescript/agents/ServerAgentClient.d.ts +103 -0
  7. package/dist/jsMain/typescript/agents/ServerAgentClient.d.ts.map +1 -0
  8. package/dist/jsMain/typescript/agents/ServerAgentClient.js +142 -0
  9. package/dist/jsMain/typescript/agents/ServerAgentClient.js.map +1 -0
  10. package/dist/jsMain/typescript/agents/render/BaseRenderer.d.ts +87 -0
  11. package/dist/jsMain/typescript/agents/render/BaseRenderer.d.ts.map +1 -0
  12. package/dist/jsMain/typescript/agents/render/BaseRenderer.js +128 -0
  13. package/dist/jsMain/typescript/agents/render/BaseRenderer.js.map +1 -0
  14. package/dist/jsMain/typescript/agents/render/CliRenderer.d.ts +51 -0
  15. package/dist/jsMain/typescript/agents/render/CliRenderer.d.ts.map +1 -0
  16. package/dist/jsMain/typescript/agents/render/CliRenderer.js +564 -0
  17. package/dist/jsMain/typescript/agents/render/CliRenderer.js.map +1 -0
  18. package/dist/jsMain/typescript/agents/render/ServerRenderer.d.ts +55 -0
  19. package/dist/jsMain/typescript/agents/render/ServerRenderer.d.ts.map +1 -0
  20. package/dist/jsMain/typescript/agents/render/ServerRenderer.js +503 -0
  21. package/dist/jsMain/typescript/agents/render/ServerRenderer.js.map +1 -0
  22. package/dist/jsMain/typescript/agents/render/TuiRenderer.d.ts +104 -0
  23. package/dist/jsMain/typescript/agents/render/TuiRenderer.d.ts.map +1 -0
  24. package/dist/jsMain/typescript/agents/render/TuiRenderer.js +279 -0
  25. package/dist/jsMain/typescript/agents/render/TuiRenderer.js.map +1 -0
  26. package/dist/jsMain/typescript/config/ConfigManager.d.ts +146 -0
  27. package/dist/jsMain/typescript/config/ConfigManager.d.ts.map +1 -0
  28. package/dist/jsMain/typescript/config/ConfigManager.js +257 -0
  29. package/dist/jsMain/typescript/config/ConfigManager.js.map +1 -0
  30. package/dist/jsMain/typescript/constants/asciiArt.d.ts +9 -0
  31. package/dist/jsMain/typescript/constants/asciiArt.d.ts.map +1 -0
  32. package/dist/jsMain/typescript/constants/asciiArt.js +47 -0
  33. package/dist/jsMain/typescript/constants/asciiArt.js.map +1 -0
  34. package/dist/jsMain/typescript/design-system/colors.d.ts +492 -0
  35. package/dist/jsMain/typescript/design-system/colors.d.ts.map +1 -0
  36. package/dist/jsMain/typescript/design-system/colors.js +333 -0
  37. package/dist/jsMain/typescript/design-system/colors.js.map +1 -0
  38. package/dist/jsMain/typescript/design-system/index.d.ts +31 -0
  39. package/dist/jsMain/typescript/design-system/index.d.ts.map +1 -0
  40. package/dist/jsMain/typescript/design-system/index.js +195 -0
  41. package/dist/jsMain/typescript/design-system/index.js.map +1 -0
  42. package/dist/jsMain/typescript/design-system/theme-helpers.d.ts +161 -0
  43. package/dist/jsMain/typescript/design-system/theme-helpers.d.ts.map +1 -0
  44. package/dist/jsMain/typescript/design-system/theme-helpers.js +153 -0
  45. package/dist/jsMain/typescript/design-system/theme-helpers.js.map +1 -0
  46. package/dist/jsMain/typescript/i18n/index.d.ts +37 -0
  47. package/dist/jsMain/typescript/i18n/index.d.ts.map +1 -0
  48. package/dist/jsMain/typescript/i18n/index.js +139 -0
  49. package/dist/jsMain/typescript/i18n/index.js.map +1 -0
  50. package/dist/jsMain/typescript/i18n/locales/en.d.ts +6 -0
  51. package/dist/jsMain/typescript/i18n/locales/en.d.ts.map +1 -0
  52. package/dist/jsMain/typescript/i18n/locales/en.js +120 -0
  53. package/dist/jsMain/typescript/i18n/locales/en.js.map +1 -0
  54. package/dist/jsMain/typescript/i18n/locales/zh.d.ts +6 -0
  55. package/dist/jsMain/typescript/i18n/locales/zh.d.ts.map +1 -0
  56. package/dist/jsMain/typescript/i18n/locales/zh.js +120 -0
  57. package/dist/jsMain/typescript/i18n/locales/zh.js.map +1 -0
  58. package/dist/jsMain/typescript/i18n/types.d.ts +124 -0
  59. package/dist/jsMain/typescript/i18n/types.d.ts.map +1 -0
  60. package/dist/jsMain/typescript/i18n/types.js +7 -0
  61. package/dist/jsMain/typescript/i18n/types.js.map +1 -0
  62. package/dist/jsMain/typescript/index.d.ts +9 -0
  63. package/dist/jsMain/typescript/index.d.ts.map +1 -0
  64. package/dist/jsMain/typescript/index.js +380 -0
  65. package/dist/jsMain/typescript/index.js.map +1 -0
  66. package/dist/jsMain/typescript/modes/AgentMode.d.ts +33 -0
  67. package/dist/jsMain/typescript/modes/AgentMode.d.ts.map +1 -0
  68. package/dist/jsMain/typescript/modes/AgentMode.js +243 -0
  69. package/dist/jsMain/typescript/modes/AgentMode.js.map +1 -0
  70. package/dist/jsMain/typescript/modes/ChatMode.d.ts +30 -0
  71. package/dist/jsMain/typescript/modes/ChatMode.d.ts.map +1 -0
  72. package/dist/jsMain/typescript/modes/ChatMode.js +260 -0
  73. package/dist/jsMain/typescript/modes/ChatMode.js.map +1 -0
  74. package/dist/jsMain/typescript/modes/DocumentMode.d.ts +26 -0
  75. package/dist/jsMain/typescript/modes/DocumentMode.d.ts.map +1 -0
  76. package/dist/jsMain/typescript/modes/DocumentMode.js +217 -0
  77. package/dist/jsMain/typescript/modes/DocumentMode.js.map +1 -0
  78. package/dist/jsMain/typescript/modes/Mode.d.ts +72 -0
  79. package/dist/jsMain/typescript/modes/Mode.d.ts.map +1 -0
  80. package/dist/jsMain/typescript/modes/Mode.js +7 -0
  81. package/dist/jsMain/typescript/modes/Mode.js.map +1 -0
  82. package/dist/jsMain/typescript/modes/ModeManager.d.ts +76 -0
  83. package/dist/jsMain/typescript/modes/ModeManager.d.ts.map +1 -0
  84. package/dist/jsMain/typescript/modes/ModeManager.js +156 -0
  85. package/dist/jsMain/typescript/modes/ModeManager.js.map +1 -0
  86. package/dist/jsMain/typescript/modes/ReviewMode.d.ts +52 -0
  87. package/dist/jsMain/typescript/modes/ReviewMode.d.ts.map +1 -0
  88. package/dist/jsMain/typescript/modes/ReviewMode.js +435 -0
  89. package/dist/jsMain/typescript/modes/ReviewMode.js.map +1 -0
  90. package/dist/jsMain/typescript/modes/index.d.ts +9 -0
  91. package/dist/jsMain/typescript/modes/index.d.ts.map +1 -0
  92. package/dist/jsMain/typescript/modes/index.js +7 -0
  93. package/dist/jsMain/typescript/modes/index.js.map +1 -0
  94. package/dist/jsMain/typescript/processors/AtCommandProcessor.d.ts +34 -0
  95. package/dist/jsMain/typescript/processors/AtCommandProcessor.d.ts.map +1 -0
  96. package/dist/jsMain/typescript/processors/AtCommandProcessor.js +118 -0
  97. package/dist/jsMain/typescript/processors/AtCommandProcessor.js.map +1 -0
  98. package/dist/jsMain/typescript/processors/InputRouter.d.ts +84 -0
  99. package/dist/jsMain/typescript/processors/InputRouter.d.ts.map +1 -0
  100. package/dist/jsMain/typescript/processors/InputRouter.js +78 -0
  101. package/dist/jsMain/typescript/processors/InputRouter.js.map +1 -0
  102. package/dist/jsMain/typescript/processors/ModeCommandProcessor.d.ts +25 -0
  103. package/dist/jsMain/typescript/processors/ModeCommandProcessor.d.ts.map +1 -0
  104. package/dist/jsMain/typescript/processors/ModeCommandProcessor.js +127 -0
  105. package/dist/jsMain/typescript/processors/ModeCommandProcessor.js.map +1 -0
  106. package/dist/jsMain/typescript/processors/SlashCommandProcessor.d.ts +68 -0
  107. package/dist/jsMain/typescript/processors/SlashCommandProcessor.d.ts.map +1 -0
  108. package/dist/jsMain/typescript/processors/SlashCommandProcessor.js +391 -0
  109. package/dist/jsMain/typescript/processors/SlashCommandProcessor.js.map +1 -0
  110. package/dist/jsMain/typescript/processors/VariableProcessor.d.ts +44 -0
  111. package/dist/jsMain/typescript/processors/VariableProcessor.d.ts.map +1 -0
  112. package/dist/jsMain/typescript/processors/VariableProcessor.js +105 -0
  113. package/dist/jsMain/typescript/processors/VariableProcessor.js.map +1 -0
  114. package/dist/jsMain/typescript/ui/App.d.ts +16 -0
  115. package/dist/jsMain/typescript/ui/App.d.ts.map +1 -0
  116. package/dist/jsMain/typescript/ui/App.js +208 -0
  117. package/dist/jsMain/typescript/ui/App.js.map +1 -0
  118. package/dist/jsMain/typescript/ui/Banner.d.ts +6 -0
  119. package/dist/jsMain/typescript/ui/Banner.d.ts.map +1 -0
  120. package/dist/jsMain/typescript/ui/Banner.js +13 -0
  121. package/dist/jsMain/typescript/ui/Banner.js.map +1 -0
  122. package/dist/jsMain/typescript/ui/ChatInterface.d.ts +19 -0
  123. package/dist/jsMain/typescript/ui/ChatInterface.d.ts.map +1 -0
  124. package/dist/jsMain/typescript/ui/ChatInterface.js +223 -0
  125. package/dist/jsMain/typescript/ui/ChatInterface.js.map +1 -0
  126. package/dist/jsMain/typescript/ui/CommandSuggestions.d.ts +21 -0
  127. package/dist/jsMain/typescript/ui/CommandSuggestions.d.ts.map +1 -0
  128. package/dist/jsMain/typescript/ui/CommandSuggestions.js +43 -0
  129. package/dist/jsMain/typescript/ui/CommandSuggestions.js.map +1 -0
  130. package/dist/jsMain/typescript/ui/LanguageSwitcher.d.ts +11 -0
  131. package/dist/jsMain/typescript/ui/LanguageSwitcher.d.ts.map +1 -0
  132. package/dist/jsMain/typescript/ui/LanguageSwitcher.js +37 -0
  133. package/dist/jsMain/typescript/ui/LanguageSwitcher.js.map +1 -0
  134. package/dist/jsMain/typescript/ui/MessageRenderer.d.ts +70 -0
  135. package/dist/jsMain/typescript/ui/MessageRenderer.d.ts.map +1 -0
  136. package/dist/jsMain/typescript/ui/MessageRenderer.js +255 -0
  137. package/dist/jsMain/typescript/ui/MessageRenderer.js.map +1 -0
  138. package/dist/jsMain/typescript/ui/ModelConfigForm.d.ts +19 -0
  139. package/dist/jsMain/typescript/ui/ModelConfigForm.d.ts.map +1 -0
  140. package/dist/jsMain/typescript/ui/ModelConfigForm.js +257 -0
  141. package/dist/jsMain/typescript/ui/ModelConfigForm.js.map +1 -0
  142. package/dist/jsMain/typescript/ui/WelcomeScreen.d.ts +12 -0
  143. package/dist/jsMain/typescript/ui/WelcomeScreen.d.ts.map +1 -0
  144. package/dist/jsMain/typescript/ui/WelcomeScreen.js +93 -0
  145. package/dist/jsMain/typescript/ui/WelcomeScreen.js.map +1 -0
  146. package/dist/jsMain/typescript/utils/commandUtils.d.ts +64 -0
  147. package/dist/jsMain/typescript/utils/commandUtils.d.ts.map +1 -0
  148. package/dist/jsMain/typescript/utils/commandUtils.js +195 -0
  149. package/dist/jsMain/typescript/utils/commandUtils.js.map +1 -0
  150. package/dist/jsMain/typescript/utils/domainDictUtils.d.ts +53 -0
  151. package/dist/jsMain/typescript/utils/domainDictUtils.d.ts.map +1 -0
  152. package/dist/jsMain/typescript/utils/domainDictUtils.js +130 -0
  153. package/dist/jsMain/typescript/utils/domainDictUtils.js.map +1 -0
  154. package/dist/jsMain/typescript/utils/markdownSplitter.d.ts +23 -0
  155. package/dist/jsMain/typescript/utils/markdownSplitter.d.ts.map +1 -0
  156. package/dist/jsMain/typescript/utils/markdownSplitter.js +90 -0
  157. package/dist/jsMain/typescript/utils/markdownSplitter.js.map +1 -0
  158. package/dist/jsMain/typescript/utils/outputFormatter.d.ts +70 -0
  159. package/dist/jsMain/typescript/utils/outputFormatter.d.ts.map +1 -0
  160. package/dist/jsMain/typescript/utils/outputFormatter.js +140 -0
  161. package/dist/jsMain/typescript/utils/outputFormatter.js.map +1 -0
  162. package/dist/jsMain/typescript/utils/renderUtils.d.ts +17 -0
  163. package/dist/jsMain/typescript/utils/renderUtils.d.ts.map +1 -0
  164. package/dist/jsMain/typescript/utils/renderUtils.js +128 -0
  165. package/dist/jsMain/typescript/utils/renderUtils.js.map +1 -0
  166. package/dist/test/framework/analyzers/CodeChangeAnalyzer.d.ts +87 -0
  167. package/dist/test/framework/analyzers/CodeChangeAnalyzer.d.ts.map +1 -0
  168. package/dist/test/framework/analyzers/CodeChangeAnalyzer.js +412 -0
  169. package/dist/test/framework/analyzers/CodeChangeAnalyzer.js.map +1 -0
  170. package/dist/test/framework/analyzers/PromptAnalyzer.d.ts +46 -0
  171. package/dist/test/framework/analyzers/PromptAnalyzer.d.ts.map +1 -0
  172. package/dist/test/framework/analyzers/PromptAnalyzer.js +185 -0
  173. package/dist/test/framework/analyzers/PromptAnalyzer.js.map +1 -0
  174. package/dist/test/framework/analyzers/ToolCallAnalyzer.d.ts +45 -0
  175. package/dist/test/framework/analyzers/ToolCallAnalyzer.d.ts.map +1 -0
  176. package/dist/test/framework/analyzers/ToolCallAnalyzer.js +215 -0
  177. package/dist/test/framework/analyzers/ToolCallAnalyzer.js.map +1 -0
  178. package/dist/test/framework/cli.d.ts +8 -0
  179. package/dist/test/framework/cli.d.ts.map +1 -0
  180. package/dist/test/framework/cli.js +175 -0
  181. package/dist/test/framework/cli.js.map +1 -0
  182. package/dist/test/framework/core/TestCase.d.ts +100 -0
  183. package/dist/test/framework/core/TestCase.d.ts.map +1 -0
  184. package/dist/test/framework/core/TestCase.js +101 -0
  185. package/dist/test/framework/core/TestCase.js.map +1 -0
  186. package/dist/test/framework/core/TestEngine.d.ts +89 -0
  187. package/dist/test/framework/core/TestEngine.d.ts.map +1 -0
  188. package/dist/test/framework/core/TestEngine.js +552 -0
  189. package/dist/test/framework/core/TestEngine.js.map +1 -0
  190. package/dist/test/framework/core/TestResult.d.ts +143 -0
  191. package/dist/test/framework/core/TestResult.d.ts.map +1 -0
  192. package/dist/test/framework/core/TestResult.js +76 -0
  193. package/dist/test/framework/core/TestResult.js.map +1 -0
  194. package/dist/test/framework/examples/BasicRobustnessTest.d.ts +19 -0
  195. package/dist/test/framework/examples/BasicRobustnessTest.d.ts.map +1 -0
  196. package/dist/test/framework/examples/BasicRobustnessTest.js +116 -0
  197. package/dist/test/framework/examples/BasicRobustnessTest.js.map +1 -0
  198. package/dist/test/framework/index.d.ts +30 -0
  199. package/dist/test/framework/index.d.ts.map +1 -0
  200. package/dist/test/framework/index.js +38 -0
  201. package/dist/test/framework/index.js.map +1 -0
  202. package/dist/test/framework/loaders/JsonScenarioLoader.d.ts +99 -0
  203. package/dist/test/framework/loaders/JsonScenarioLoader.d.ts.map +1 -0
  204. package/dist/test/framework/loaders/JsonScenarioLoader.js +197 -0
  205. package/dist/test/framework/loaders/JsonScenarioLoader.js.map +1 -0
  206. package/dist/test/framework/reporters/ConsoleReporter.d.ts +25 -0
  207. package/dist/test/framework/reporters/ConsoleReporter.d.ts.map +1 -0
  208. package/dist/test/framework/reporters/ConsoleReporter.js +196 -0
  209. package/dist/test/framework/reporters/ConsoleReporter.js.map +1 -0
  210. package/dist/test/framework/scenarios/ScenarioBuilder.d.ts +62 -0
  211. package/dist/test/framework/scenarios/ScenarioBuilder.d.ts.map +1 -0
  212. package/dist/test/framework/scenarios/ScenarioBuilder.js +285 -0
  213. package/dist/test/framework/scenarios/ScenarioBuilder.js.map +1 -0
  214. package/dist/test/framework/validate-framework.d.ts +9 -0
  215. package/dist/test/framework/validate-framework.d.ts.map +1 -0
  216. package/dist/test/framework/validate-framework.js +187 -0
  217. package/dist/test/framework/validate-framework.js.map +1 -0
  218. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentMode.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/modes/DocumentMode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAChC,CAAC;CACL;AAyED;;GAEG;AACH,wBAAsB,WAAW,CAC7B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,GAAG,GACf,OAAO,CAAC,cAAc,CAAC,CA2KzB"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Document Mode - Automated document query with DocQL
3
+ *
4
+ * Similar to ReviewMode, this mode:
5
+ * 1. Scans for documents in the project
6
+ * 2. Registers documents with the DocumentRegistry
7
+ * 3. Uses DocumentAgent with DocQLTool for intelligent querying
8
+ */
9
+ import mppCore from '@xiuper/mpp-core';
10
+ import { semanticChalk } from '../design-system/theme-helpers.js';
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ const { cc: KotlinCC } = mppCore;
14
+ /**
15
+ * Scan for documents in a directory
16
+ */
17
+ function scanDocuments(dirPath, extensions = [
18
+ '.md', '.pdf', '.docx', '.pptx', '.txt', // Documents
19
+ '.java', '.kt', '.kts', // JVM source code
20
+ '.js', '.ts', '.tsx', // JavaScript/TypeScript
21
+ '.py', '.go', '.rs', '.cs' // Other languages
22
+ ]) {
23
+ const documents = [];
24
+ function scanDir(currentPath) {
25
+ try {
26
+ const entries = fs.readdirSync(currentPath, { withFileTypes: true });
27
+ for (const entry of entries) {
28
+ const fullPath = path.join(currentPath, entry.name);
29
+ // Skip common non-document directories
30
+ if (entry.isDirectory()) {
31
+ const skipDirs = ['node_modules', '.git', 'build', 'dist', 'target', '.gradle', 'bin'];
32
+ if (!skipDirs.includes(entry.name) && !entry.name.startsWith('.')) {
33
+ scanDir(fullPath);
34
+ }
35
+ }
36
+ else if (entry.isFile()) {
37
+ const ext = path.extname(entry.name).toLowerCase();
38
+ if (extensions.includes(ext)) {
39
+ documents.push(fullPath);
40
+ }
41
+ }
42
+ }
43
+ }
44
+ catch (error) {
45
+ // Silently skip inaccessible directories
46
+ console.log(semanticChalk.muted(`⚠️ Skipping ${currentPath}: ${error.message}`));
47
+ }
48
+ }
49
+ scanDir(dirPath);
50
+ return documents;
51
+ }
52
+ /**
53
+ * Register a document with the DocumentRegistry
54
+ */
55
+ async function registerDocument(filePath, projectPath, agent) {
56
+ try {
57
+ const relativePath = path.relative(projectPath, filePath);
58
+ const content = fs.readFileSync(filePath, 'utf-8');
59
+ const registered = await agent.registerDocument(relativePath, content);
60
+ return { success: registered, filePath };
61
+ }
62
+ catch (error) {
63
+ // Extract error type for summary (e.g., "Cannot find module 'web-tree-sitter'")
64
+ const errorType = error.message?.split(':')[0] || 'Unknown error';
65
+ return { success: false, filePath, errorType };
66
+ }
67
+ }
68
+ /**
69
+ * Run document query
70
+ */
71
+ export async function runDocument(options, llmService, renderer) {
72
+ const { projectPath, query, documentPath } = options;
73
+ const startTime = Date.now();
74
+ // ===== INPUT VALIDATION =====
75
+ // Validate query parameter
76
+ if (!query || query.trim().length === 0) {
77
+ console.error(semanticChalk.error('❌ Error: Query parameter is required and cannot be empty'));
78
+ return {
79
+ success: false,
80
+ message: 'Error: Query parameter is required and cannot be empty.\n\nUsage: document -p <path> -q "<your question>"'
81
+ };
82
+ }
83
+ // Validate project path exists
84
+ if (!fs.existsSync(projectPath)) {
85
+ console.error(semanticChalk.error(`❌ Error: Project path does not exist: ${projectPath}`));
86
+ return {
87
+ success: false,
88
+ message: `Error: Project path does not exist: ${projectPath}\n\nPlease provide a valid directory path.`
89
+ };
90
+ }
91
+ console.log(semanticChalk.info(`\n📄 AutoDev Document Query`));
92
+ console.log(semanticChalk.muted(`Project: ${projectPath}`));
93
+ console.log(semanticChalk.muted(`Query: ${query}`));
94
+ if (documentPath) {
95
+ console.log(semanticChalk.muted(`Document: ${documentPath}`));
96
+ }
97
+ console.log();
98
+ try {
99
+ // ===== STEP 1: Initialize Platform Parsers =====
100
+ console.log(semanticChalk.info('🔧 Initializing document parsers...'));
101
+ KotlinCC.unitmesh.llm.JsDocumentRegistry.initializePlatformParsers();
102
+ console.log(semanticChalk.success('✅ Parsers initialized'));
103
+ console.log();
104
+ // ===== STEP 2: Create Document Agent =====
105
+ const dummyParser = KotlinCC.unitmesh.llm.JsDocumentParserFactory.createParserForFile("dummy.md");
106
+ const agent = new KotlinCC.unitmesh.agent.JsDocumentAgent(llmService, dummyParser, renderer || null, null);
107
+ // ===== STEP 3: Scan and Register Documents =====
108
+ let documentsScanned = 0;
109
+ let documentsRegistered = 0;
110
+ // Track failed registrations by error type for summary
111
+ const failedByErrorType = new Map();
112
+ if (documentPath) {
113
+ // Register specific document
114
+ const fullPath = path.resolve(projectPath, documentPath);
115
+ if (fs.existsSync(fullPath)) {
116
+ console.log(semanticChalk.info(`📖 Reading document: ${documentPath}...`));
117
+ // Calculate relative path for registration
118
+ const relativePath = path.relative(projectPath, fullPath);
119
+ console.log(semanticChalk.muted(` Registering as: ${relativePath}`));
120
+ const result = await registerDocument(fullPath, projectPath, agent);
121
+ if (result.success) {
122
+ console.log(semanticChalk.success(`✅ Document registered successfully`));
123
+ documentsRegistered = 1;
124
+ documentsScanned = 1;
125
+ }
126
+ else {
127
+ console.log(semanticChalk.warning(`⚠️ Failed to register document: ${result.errorType || 'Unknown error'}`));
128
+ }
129
+ console.log();
130
+ }
131
+ else {
132
+ console.log(semanticChalk.warning(`⚠️ Document file not found: ${fullPath}`));
133
+ console.log();
134
+ }
135
+ }
136
+ else {
137
+ // Scan entire project for documents (default behavior)
138
+ console.log(semanticChalk.info('📖 Scanning project for documents...'));
139
+ const foundDocs = scanDocuments(projectPath);
140
+ documentsScanned = foundDocs.length;
141
+ console.log(semanticChalk.muted(` Found ${foundDocs.length} documents`));
142
+ if (foundDocs.length > 0) {
143
+ // Register documents silently - only show progress for large sets
144
+ const showProgress = foundDocs.length > 50;
145
+ let lastProgress = 0;
146
+ for (let i = 0; i < foundDocs.length; i++) {
147
+ const docPath = foundDocs[i];
148
+ const result = await registerDocument(docPath, projectPath, agent);
149
+ if (result.success) {
150
+ documentsRegistered++;
151
+ }
152
+ else if (result.errorType) {
153
+ // Track errors by type for summary
154
+ const count = failedByErrorType.get(result.errorType) || 0;
155
+ failedByErrorType.set(result.errorType, count + 1);
156
+ }
157
+ // Show progress every 25% for large document sets
158
+ if (showProgress) {
159
+ const progress = Math.floor((i + 1) / foundDocs.length * 100);
160
+ if (progress >= lastProgress + 25) {
161
+ process.stdout.write(`\r Registering... ${progress}%`);
162
+ lastProgress = progress;
163
+ }
164
+ }
165
+ }
166
+ if (showProgress) {
167
+ process.stdout.write('\r \r'); // Clear progress line
168
+ }
169
+ console.log(semanticChalk.success(`✅ Registered ${documentsRegistered}/${documentsScanned} documents`));
170
+ // Show summary of failures if any
171
+ if (failedByErrorType.size > 0) {
172
+ const totalFailed = documentsScanned - documentsRegistered;
173
+ console.log(semanticChalk.muted(` ${totalFailed} documents skipped (code parsing requires tree-sitter)`));
174
+ }
175
+ console.log();
176
+ }
177
+ }
178
+ // ===== STEP 4: Execute Document Query =====
179
+ console.log(semanticChalk.info('🧠 Starting document query with AI agent...'));
180
+ console.log();
181
+ const queryStartTime = Date.now();
182
+ const result = await agent.executeTask(query, documentPath || null);
183
+ const queryDuration = Date.now() - queryStartTime;
184
+ console.log();
185
+ // Note: The LLM response is already streamed during execution,
186
+ // so we don't need to print result.message again to avoid duplication.
187
+ // Only show the final status.
188
+ if (result.success) {
189
+ console.log(semanticChalk.success('✅ Query complete!'));
190
+ console.log(semanticChalk.muted(`⏱️ Total time: ${queryDuration}ms`));
191
+ }
192
+ else {
193
+ console.log(semanticChalk.error(`❌ Query failed: ${result.message}`));
194
+ console.log(semanticChalk.muted(`⏱️ Time: ${queryDuration}ms`));
195
+ }
196
+ console.log();
197
+ return {
198
+ success: result.success,
199
+ message: result.message,
200
+ metadata: {
201
+ documentsScanned,
202
+ documentsRegistered
203
+ }
204
+ };
205
+ }
206
+ catch (error) {
207
+ console.error(semanticChalk.error(`❌ Document query failed: ${error.message}`));
208
+ if (error.stack) {
209
+ console.error(semanticChalk.muted(error.stack));
210
+ }
211
+ return {
212
+ success: false,
213
+ message: `Document query failed: ${error.message}`
214
+ };
215
+ }
216
+ }
217
+ //# sourceMappingURL=DocumentMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentMode.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/modes/DocumentMode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Mode Interface - 交互模式接口
3
+ *
4
+ * 定义了不同交互模式(Agent、Chat等)的统一接口
5
+ */
6
+ import type { Message } from '../ui/App.js';
7
+ /**
8
+ * 模式处理结果
9
+ */
10
+ export interface ModeResult {
11
+ /** 是否成功处理 */
12
+ success: boolean;
13
+ /** 错误信息(如果有) */
14
+ error?: string;
15
+ /** 输出消息(如果有) */
16
+ message?: string;
17
+ }
18
+ /**
19
+ * 模式上下文
20
+ * 包含模式执行所需的依赖和回调
21
+ */
22
+ export interface ModeContext {
23
+ /** 添加消息到历史 */
24
+ addMessage: (message: Message) => void;
25
+ /** 设置待处理消息(用于流式输出) */
26
+ setPendingMessage: (message: Message | null) => void;
27
+ /** 设置编译状态 */
28
+ setIsCompiling: (compiling: boolean) => void;
29
+ /** 清空消息历史 */
30
+ clearMessages: () => void;
31
+ /** 日志记录器 */
32
+ logger: {
33
+ info: (message: string) => void;
34
+ warn: (message: string) => void;
35
+ error: (message: string, error?: any) => void;
36
+ };
37
+ /** 项目路径 */
38
+ projectPath?: string;
39
+ /** LLM 服务配置 */
40
+ llmConfig?: any;
41
+ }
42
+ /**
43
+ * 交互模式接口
44
+ */
45
+ export interface Mode {
46
+ /** 模式名称 */
47
+ readonly name: string;
48
+ /** 模式显示名称 */
49
+ readonly displayName: string;
50
+ /** 模式描述 */
51
+ readonly description: string;
52
+ /** 模式图标/emoji */
53
+ readonly icon: string;
54
+ /** 初始化模式 */
55
+ initialize(context: ModeContext): Promise<void>;
56
+ /** 处理用户输入 */
57
+ handleInput(input: string, context: ModeContext): Promise<ModeResult>;
58
+ /** 清理模式资源 */
59
+ cleanup(): Promise<void>;
60
+ /** 获取模式状态信息 */
61
+ getStatus(): string;
62
+ }
63
+ /**
64
+ * 模式工厂接口
65
+ */
66
+ export interface ModeFactory {
67
+ /** 创建模式实例 */
68
+ createMode(): Mode;
69
+ /** 模式类型标识 */
70
+ readonly type: string;
71
+ }
72
+ //# sourceMappingURL=Mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mode.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/modes/Mode.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc;IACd,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvC,sBAAsB;IACtB,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;IAErD,aAAa;IACb,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7C,aAAa;IACb,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,YAAY;IACZ,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KAC/C,CAAC;IAEF,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,eAAe;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,WAAW;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,aAAa;IACb,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,WAAW;IACX,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,iBAAiB;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY;IACZ,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD,aAAa;IACb,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtE,aAAa;IACb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,eAAe;IACf,SAAS,IAAI,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa;IACb,UAAU,IAAI,IAAI,CAAC;IAEnB,aAAa;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Mode Interface - 交互模式接口
3
+ *
4
+ * 定义了不同交互模式(Agent、Chat等)的统一接口
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=Mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mode.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/modes/Mode.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Mode Manager - 模式管理器
3
+ *
4
+ * 负责管理不同的交互模式,包括注册、切换、状态管理等
5
+ */
6
+ import type { Mode, ModeFactory, ModeContext } from './Mode.js';
7
+ /**
8
+ * 模式切换事件
9
+ */
10
+ export interface ModeChangeEvent {
11
+ /** 之前的模式 */
12
+ previousMode: string | null;
13
+ /** 当前模式 */
14
+ currentMode: string;
15
+ /** 切换时间戳 */
16
+ timestamp: number;
17
+ }
18
+ /**
19
+ * 模式管理器
20
+ */
21
+ export declare class ModeManager {
22
+ private factories;
23
+ private currentMode;
24
+ private currentModeType;
25
+ private context;
26
+ private changeListeners;
27
+ /**
28
+ * 注册模式工厂
29
+ */
30
+ registerMode(factory: ModeFactory): void;
31
+ /**
32
+ * 获取所有已注册的模式类型
33
+ */
34
+ getAvailableModes(): string[];
35
+ /**
36
+ * 获取模式信息
37
+ */
38
+ getModeInfo(type: string): {
39
+ name: string;
40
+ displayName: string;
41
+ description: string;
42
+ icon: string;
43
+ } | null;
44
+ /**
45
+ * 切换到指定模式
46
+ */
47
+ switchToMode(type: string, context: ModeContext): Promise<boolean>;
48
+ /**
49
+ * 处理用户输入
50
+ */
51
+ handleInput(input: string): Promise<boolean>;
52
+ /**
53
+ * 获取当前模式
54
+ */
55
+ getCurrentMode(): {
56
+ type: string;
57
+ mode: Mode;
58
+ } | null;
59
+ /**
60
+ * 获取当前模式状态
61
+ */
62
+ getCurrentModeStatus(): string;
63
+ /**
64
+ * 添加模式切换监听器
65
+ */
66
+ onModeChange(listener: (event: ModeChangeEvent) => void): void;
67
+ /**
68
+ * 移除模式切换监听器
69
+ */
70
+ removeModeChangeListener(listener: (event: ModeChangeEvent) => void): void;
71
+ /**
72
+ * 清理所有资源
73
+ */
74
+ cleanup(): Promise<void>;
75
+ }
76
+ //# sourceMappingURL=ModeManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModeManager.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/modes/ModeManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,eAAe,CAA+C;IAEtE;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAIxC;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAc1G;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAoDxE;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAelD;;OAEG;IACH,cAAc,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI;IAUrD;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAO9B;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,wBAAwB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAO1E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Mode Manager - 模式管理器
3
+ *
4
+ * 负责管理不同的交互模式,包括注册、切换、状态管理等
5
+ */
6
+ /**
7
+ * 模式管理器
8
+ */
9
+ export class ModeManager {
10
+ factories = new Map();
11
+ currentMode = null;
12
+ currentModeType = null;
13
+ context = null;
14
+ changeListeners = [];
15
+ /**
16
+ * 注册模式工厂
17
+ */
18
+ registerMode(factory) {
19
+ this.factories.set(factory.type, factory);
20
+ }
21
+ /**
22
+ * 获取所有已注册的模式类型
23
+ */
24
+ getAvailableModes() {
25
+ return Array.from(this.factories.keys());
26
+ }
27
+ /**
28
+ * 获取模式信息
29
+ */
30
+ getModeInfo(type) {
31
+ const factory = this.factories.get(type);
32
+ if (!factory)
33
+ return null;
34
+ // 创建临时实例获取信息
35
+ const tempMode = factory.createMode();
36
+ return {
37
+ name: tempMode.name,
38
+ displayName: tempMode.displayName,
39
+ description: tempMode.description,
40
+ icon: tempMode.icon
41
+ };
42
+ }
43
+ /**
44
+ * 切换到指定模式
45
+ */
46
+ async switchToMode(type, context) {
47
+ const factory = this.factories.get(type);
48
+ if (!factory) {
49
+ context.logger.error(`[ModeManager] Unknown mode type: ${type}`);
50
+ return false;
51
+ }
52
+ const previousModeType = this.currentModeType;
53
+ try {
54
+ // 清理当前模式
55
+ if (this.currentMode) {
56
+ context.logger.info(`[ModeManager] Cleaning up mode: ${this.currentModeType}`);
57
+ await this.currentMode.cleanup();
58
+ }
59
+ // 创建新模式
60
+ context.logger.info(`[ModeManager] Switching to mode: ${type}`);
61
+ const newMode = factory.createMode();
62
+ // 初始化新模式
63
+ await newMode.initialize(context);
64
+ // 更新状态
65
+ this.currentMode = newMode;
66
+ this.currentModeType = type;
67
+ this.context = context;
68
+ // 触发切换事件
69
+ const event = {
70
+ previousMode: previousModeType,
71
+ currentMode: type,
72
+ timestamp: Date.now()
73
+ };
74
+ this.changeListeners.forEach(listener => {
75
+ try {
76
+ listener(event);
77
+ }
78
+ catch (error) {
79
+ context.logger.error('[ModeManager] Error in mode change listener:', error);
80
+ }
81
+ });
82
+ context.logger.info(`[ModeManager] Successfully switched to mode: ${type}`);
83
+ return true;
84
+ }
85
+ catch (error) {
86
+ context.logger.error(`[ModeManager] Failed to switch to mode ${type}:`, error);
87
+ return false;
88
+ }
89
+ }
90
+ /**
91
+ * 处理用户输入
92
+ */
93
+ async handleInput(input) {
94
+ if (!this.currentMode || !this.context) {
95
+ this.context?.logger.error('[ModeManager] No active mode to handle input');
96
+ return false;
97
+ }
98
+ try {
99
+ const result = await this.currentMode.handleInput(input, this.context);
100
+ return result.success;
101
+ }
102
+ catch (error) {
103
+ this.context.logger.error('[ModeManager] Error handling input:', error);
104
+ return false;
105
+ }
106
+ }
107
+ /**
108
+ * 获取当前模式
109
+ */
110
+ getCurrentMode() {
111
+ if (!this.currentMode || !this.currentModeType) {
112
+ return null;
113
+ }
114
+ return {
115
+ type: this.currentModeType,
116
+ mode: this.currentMode
117
+ };
118
+ }
119
+ /**
120
+ * 获取当前模式状态
121
+ */
122
+ getCurrentModeStatus() {
123
+ if (!this.currentMode) {
124
+ return 'No active mode';
125
+ }
126
+ return this.currentMode.getStatus();
127
+ }
128
+ /**
129
+ * 添加模式切换监听器
130
+ */
131
+ onModeChange(listener) {
132
+ this.changeListeners.push(listener);
133
+ }
134
+ /**
135
+ * 移除模式切换监听器
136
+ */
137
+ removeModeChangeListener(listener) {
138
+ const index = this.changeListeners.indexOf(listener);
139
+ if (index >= 0) {
140
+ this.changeListeners.splice(index, 1);
141
+ }
142
+ }
143
+ /**
144
+ * 清理所有资源
145
+ */
146
+ async cleanup() {
147
+ if (this.currentMode) {
148
+ await this.currentMode.cleanup();
149
+ this.currentMode = null;
150
+ this.currentModeType = null;
151
+ }
152
+ this.context = null;
153
+ this.changeListeners = [];
154
+ }
155
+ }
156
+ //# sourceMappingURL=ModeManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModeManager.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/modes/ModeManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Review Mode - Automated code review with linting and AI analysis
3
+ *
4
+ * Optimized Version: Uses Data-Driven approach instead of Tool-Driven
5
+ * - Pre-collects all data (code content, lint results, diff context)
6
+ * - Single LLM call with structured prompt
7
+ * - ~87% token savings compared to tool-driven approach
8
+ */
9
+ export interface ReviewOptions {
10
+ projectPath: string;
11
+ diff?: string;
12
+ commitHash?: string;
13
+ baseBranch?: string;
14
+ compareWith?: string;
15
+ reviewType?: 'COMPREHENSIVE' | 'SECURITY' | 'PERFORMANCE' | 'STYLE';
16
+ skipLint?: boolean;
17
+ autoFix?: boolean;
18
+ }
19
+ export interface ReviewFinding {
20
+ severity: string;
21
+ category: string;
22
+ description: string;
23
+ filePath?: string;
24
+ lineNumber?: number;
25
+ suggestion?: string;
26
+ }
27
+ export interface ReviewResult {
28
+ success: boolean;
29
+ message: string;
30
+ findings: ReviewFinding[];
31
+ lintResults?: Array<{
32
+ filePath: string;
33
+ issues: Array<{
34
+ line: number;
35
+ column: number;
36
+ severity: string;
37
+ message: string;
38
+ rule?: string;
39
+ }>;
40
+ }>;
41
+ analysisOutput?: string;
42
+ }
43
+ /**
44
+ * Run code review on a project or specific changes
45
+ *
46
+ * Uses Kotlin's CodeReviewAgent with optimizations:
47
+ * 1. Fetch git diff and extract file paths
48
+ * 2. Detect linters (for display)
49
+ * 3. Use CodeReviewAgent with proper prompt rendering
50
+ */
51
+ export declare function runReview(options: ReviewOptions, llmService: any, renderer?: any): Promise<ReviewResult>;
52
+ //# sourceMappingURL=ReviewMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewMode.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/modes/ReviewMode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC,YAAY,CAAC,CAsJvB"}