@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,257 @@
1
+ /**
2
+ * ConfigManager - Manages CLI configuration
3
+ *
4
+ * Handles loading, saving, and validating configuration for the AutoDev CLI.
5
+ * Supports multiple named configurations with active selection.
6
+ */
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import * as os from 'os';
10
+ import YAML from 'yaml';
11
+ export class ConfigManager {
12
+ static CONFIG_DIR = path.join(os.homedir(), '.autodev');
13
+ static CONFIG_FILE = path.join(ConfigManager.CONFIG_DIR, 'config.yaml');
14
+ /**
15
+ * Override config directory (for testing)
16
+ */
17
+ static setConfigDir(dir) {
18
+ this.CONFIG_DIR = dir;
19
+ this.CONFIG_FILE = path.join(dir, 'config.yaml');
20
+ }
21
+ /**
22
+ * Reset to default config directory
23
+ */
24
+ static resetConfigDir() {
25
+ this.CONFIG_DIR = path.join(os.homedir(), '.autodev');
26
+ this.CONFIG_FILE = path.join(this.CONFIG_DIR, 'config.yaml');
27
+ }
28
+ /**
29
+ * Load configuration from file
30
+ */
31
+ static async load() {
32
+ try {
33
+ await fs.mkdir(this.CONFIG_DIR, { recursive: true });
34
+ const content = await fs.readFile(this.CONFIG_FILE, 'utf-8');
35
+ const parsed = YAML.parse(content);
36
+ // Check if it's the new format (has 'configs' array)
37
+ if (parsed && Array.isArray(parsed.configs)) {
38
+ const configFile = parsed;
39
+ return new AutoDevConfigWrapper(configFile);
40
+ }
41
+ // Legacy format - convert to new format
42
+ if (parsed && parsed.provider) {
43
+ const legacy = parsed;
44
+ const migrated = {
45
+ active: 'default',
46
+ configs: [{
47
+ name: 'default',
48
+ provider: legacy.provider,
49
+ apiKey: legacy.apiKey,
50
+ model: legacy.model,
51
+ baseUrl: legacy.baseUrl,
52
+ temperature: legacy.temperature,
53
+ maxTokens: legacy.maxTokens,
54
+ }]
55
+ };
56
+ return new AutoDevConfigWrapper(migrated);
57
+ }
58
+ // Empty config
59
+ return this.createEmpty();
60
+ }
61
+ catch (error) {
62
+ // Return empty config if file doesn't exist
63
+ if (error.code === 'ENOENT') {
64
+ return this.createEmpty();
65
+ }
66
+ throw error;
67
+ }
68
+ }
69
+ /**
70
+ * Save configuration to file
71
+ */
72
+ static async save(configFile) {
73
+ await fs.mkdir(this.CONFIG_DIR, { recursive: true });
74
+ const content = YAML.stringify(configFile);
75
+ await fs.writeFile(this.CONFIG_FILE, content, 'utf-8');
76
+ }
77
+ /**
78
+ * Add or update a single configuration
79
+ */
80
+ static async saveConfig(config, setActive = true) {
81
+ const wrapper = await this.load();
82
+ const configFile = wrapper.getConfigFile();
83
+ // Check if config with this name exists
84
+ const existingIndex = configFile.configs.findIndex(c => c.name === config.name);
85
+ if (existingIndex >= 0) {
86
+ // Update existing
87
+ configFile.configs[existingIndex] = config;
88
+ }
89
+ else {
90
+ // Add new
91
+ configFile.configs.push(config);
92
+ }
93
+ // Set as active if requested
94
+ if (setActive) {
95
+ configFile.active = config.name;
96
+ }
97
+ await this.save(configFile);
98
+ }
99
+ /**
100
+ * Delete a configuration by name
101
+ */
102
+ static async deleteConfig(name) {
103
+ const wrapper = await this.load();
104
+ const configFile = wrapper.getConfigFile();
105
+ configFile.configs = configFile.configs.filter(c => c.name !== name);
106
+ // If we deleted the active config, switch to first available
107
+ if (configFile.active === name && configFile.configs.length > 0) {
108
+ configFile.active = configFile.configs[0].name;
109
+ }
110
+ await this.save(configFile);
111
+ }
112
+ /**
113
+ * Switch active configuration
114
+ */
115
+ static async setActive(name) {
116
+ const wrapper = await this.load();
117
+ const configFile = wrapper.getConfigFile();
118
+ // Verify the config exists
119
+ if (!configFile.configs.find(c => c.name === name)) {
120
+ throw new Error(`Configuration '${name}' not found`);
121
+ }
122
+ configFile.active = name;
123
+ await this.save(configFile);
124
+ }
125
+ /**
126
+ * Get configuration file path
127
+ */
128
+ static getConfigPath() {
129
+ return this.CONFIG_FILE;
130
+ }
131
+ /**
132
+ * Create empty configuration
133
+ */
134
+ static createEmpty() {
135
+ return new AutoDevConfigWrapper({
136
+ active: '',
137
+ configs: []
138
+ });
139
+ }
140
+ }
141
+ /**
142
+ * Wrapper class for configuration with validation
143
+ */
144
+ export class AutoDevConfigWrapper {
145
+ configFile;
146
+ constructor(configFile) {
147
+ this.configFile = configFile;
148
+ }
149
+ /**
150
+ * Get the entire config file structure
151
+ */
152
+ getConfigFile() {
153
+ return this.configFile;
154
+ }
155
+ /**
156
+ * Get the active configuration
157
+ */
158
+ getActiveConfig() {
159
+ if (!this.configFile.active || this.configFile.configs.length === 0) {
160
+ return null;
161
+ }
162
+ const config = this.configFile.configs.find(c => c.name === this.configFile.active);
163
+ return config || this.configFile.configs[0];
164
+ }
165
+ /**
166
+ * Get all configurations
167
+ */
168
+ getAllConfigs() {
169
+ return this.configFile.configs;
170
+ }
171
+ /**
172
+ * Get active config name
173
+ */
174
+ getActiveName() {
175
+ return this.configFile.active;
176
+ }
177
+ /**
178
+ * Get MCP servers configuration
179
+ */
180
+ getMcpServers() {
181
+ return this.configFile.mcpServers || {};
182
+ }
183
+ /**
184
+ * Get enabled MCP servers
185
+ */
186
+ getEnabledMcpServers() {
187
+ const mcpServers = this.getMcpServers();
188
+ return Object.fromEntries(Object.entries(mcpServers).filter(([_, server]) => !server.disabled));
189
+ }
190
+ /**
191
+ * Check if any valid configuration exists
192
+ */
193
+ isValid() {
194
+ const active = this.getActiveConfig();
195
+ if (!active)
196
+ return false;
197
+ // Ollama doesn't require API key
198
+ if (active.provider === 'ollama') {
199
+ return !!active.model;
200
+ }
201
+ // Custom OpenAI-compatible providers require baseUrl, apiKey, and model
202
+ if (active.provider === 'custom-openai-base') {
203
+ return !!active.baseUrl && !!active.apiKey && !!active.model;
204
+ }
205
+ return !!active.provider && !!active.apiKey && !!active.model;
206
+ }
207
+ // Convenience methods for active config
208
+ getProvider() {
209
+ return this.getActiveConfig()?.provider || 'openai';
210
+ }
211
+ getApiKey() {
212
+ return this.getActiveConfig()?.apiKey || '';
213
+ }
214
+ getModel() {
215
+ return this.getActiveConfig()?.model || '';
216
+ }
217
+ getBaseUrl() {
218
+ return this.getActiveConfig()?.baseUrl;
219
+ }
220
+ getTemperature() {
221
+ return this.getActiveConfig()?.temperature ?? 0.0;
222
+ }
223
+ getMaxTokens() {
224
+ return this.getActiveConfig()?.maxTokens ?? 128000;
225
+ }
226
+ /**
227
+ * Get log level from active config or global setting
228
+ */
229
+ getLogLevel() {
230
+ // 优先使用活动配置的日志级别,然后是全局设置,最后是默认值
231
+ return this.getActiveConfig()?.logLevel ??
232
+ this.configFile.globalLogLevel ??
233
+ 'INFO';
234
+ }
235
+ /**
236
+ * Convert active config to legacy format (for backward compatibility)
237
+ */
238
+ toJSON() {
239
+ const active = this.getActiveConfig();
240
+ if (!active) {
241
+ return {
242
+ provider: 'openai',
243
+ apiKey: '',
244
+ model: 'gpt-4',
245
+ };
246
+ }
247
+ return {
248
+ provider: active.provider,
249
+ apiKey: active.apiKey,
250
+ model: active.model,
251
+ baseUrl: active.baseUrl,
252
+ temperature: active.temperature,
253
+ maxTokens: active.maxTokens,
254
+ };
255
+ }
256
+ }
257
+ //# sourceMappingURL=ConfigManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/config/ConfigManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * ASCII Art and branding constants for Xiuper CLI
3
+ */
4
+ export declare const AUTODEV_LOGO = "\n \u2566 \u2566\u2566\u2566 \u2566\u2554\u2550\u2557\u2554\u2550\u2557\u2566\u2550\u2557\n \u2560\u2566\u255D\u2551\u2551 \u2551\u2560\u2550\u255D\u2551\u2563 \u2560\u2566\u255D\n \u2569\u255A\u2550\u2569\u255A\u2550\u255D\u2569 \u255A\u2550\u255D\u2569\u255A\u2550\n";
5
+ export declare const AUTODEV_TAGLINE = "One Platform. All Phases. Every Device.";
6
+ export declare const WELCOME_MESSAGE = "\n\n \u2566 \u2566\u2566\u2566 \u2566\u2554\u2550\u2557\u2554\u2550\u2557\u2566\u2550\u2557\n \u2560\u2566\u255D\u2551\u2551 \u2551\u2560\u2550\u255D\u2551\u2563 \u2560\u2566\u255D\n \u2569\u255A\u2550\u2569\u255A\u2550\u255D\u2569 \u255A\u2550\u255D\u2569\u255A\u2550\n\nOne Platform. All Phases. Every Device.\n\n\uD83D\uDE80 Type your message to start coding\n\uD83D\uDCA1 Use / for commands or @ for agents\n\u2328\uFE0F Press Tab for auto-completion\n\uD83D\uDCD6 Type /help for more information\n";
7
+ export declare const HELP_TEXT = "\n\uD83D\uDCDA Xiuper CLI Help\n\nCommands:\n /help - Show this help message\n /clear - Clear chat history\n /exit - Exit the application\n /config - Show current configuration\n /model - Change AI model\n /enhance - Enhance a prompt using AI\n\nAgents (use @ to invoke):\n @code - Code generation and refactoring\n @test - Test generation\n @doc - Documentation generation\n @review - Code review\n @debug - Debugging assistance\n\nShortcuts:\n Ctrl+C - Exit\n Ctrl+L - Clear screen\n Tab - Auto-complete\n \u2191/\u2193 - Navigate history\n";
8
+ export declare const GOODBYE_MESSAGE = "\n\uD83D\uDC4B Thanks for using Xiuper!\n\uD83D\uDCBE Your session has been saved.\n";
9
+ //# sourceMappingURL=asciiArt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asciiArt.d.ts","sourceRoot":"","sources":["../../../../src/jsMain/typescript/constants/asciiArt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,YAAY,wRAIxB,CAAC;AAEF,eAAO,MAAM,eAAe,4CAA4C,CAAC;AAEzE,eAAO,MAAM,eAAe,mgBAQ3B,CAAC;AAEF,eAAO,MAAM,SAAS,qoBAuBrB,CAAC;AAEF,eAAO,MAAM,eAAe,yFAG3B,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * ASCII Art and branding constants for Xiuper CLI
3
+ */
4
+ export const AUTODEV_LOGO = `
5
+ ╦ ╦╦╦ ╦╔═╗╔═╗╦═╗
6
+ ╠╦╝║║ ║╠═╝║╣ ╠╦╝
7
+ ╩╚═╩╚═╝╩ ╚═╝╩╚═
8
+ `;
9
+ export const AUTODEV_TAGLINE = 'One Platform. All Phases. Every Device.';
10
+ export const WELCOME_MESSAGE = `
11
+ ${AUTODEV_LOGO}
12
+ ${AUTODEV_TAGLINE}
13
+
14
+ 🚀 Type your message to start coding
15
+ 💡 Use / for commands or @ for agents
16
+ ⌨️ Press Tab for auto-completion
17
+ 📖 Type /help for more information
18
+ `;
19
+ export const HELP_TEXT = `
20
+ 📚 Xiuper CLI Help
21
+
22
+ Commands:
23
+ /help - Show this help message
24
+ /clear - Clear chat history
25
+ /exit - Exit the application
26
+ /config - Show current configuration
27
+ /model - Change AI model
28
+ /enhance - Enhance a prompt using AI
29
+
30
+ Agents (use @ to invoke):
31
+ @code - Code generation and refactoring
32
+ @test - Test generation
33
+ @doc - Documentation generation
34
+ @review - Code review
35
+ @debug - Debugging assistance
36
+
37
+ Shortcuts:
38
+ Ctrl+C - Exit
39
+ Ctrl+L - Clear screen
40
+ Tab - Auto-complete
41
+ ↑/↓ - Navigate history
42
+ `;
43
+ export const GOODBYE_MESSAGE = `
44
+ 👋 Thanks for using Xiuper!
45
+ 💾 Your session has been saved.
46
+ `;
47
+ //# sourceMappingURL=asciiArt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asciiArt.js","sourceRoot":"","sources":["../../../../src/jsMain/typescript/constants/asciiArt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;CAI3B,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,yCAAyC,CAAC;AAEzE,MAAM,CAAC,MAAM,eAAe,GAAG;EAC7B,YAAY;EACZ,eAAe;;;;;;CAMhB,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBxB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;;;CAG9B,CAAC"}