@crewx/cli 0.8.3-rc.9 → 0.8.4-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +33 -33
  2. package/bin/crewx +2 -2
  3. package/dist/ai-provider.service.d.ts +34 -0
  4. package/dist/ai-provider.service.js +311 -0
  5. package/dist/ai-provider.service.js.map +1 -0
  6. package/dist/ai.service.d.ts +17 -0
  7. package/dist/ai.service.js +51 -0
  8. package/dist/ai.service.js.map +1 -0
  9. package/dist/app.module.d.ts +5 -0
  10. package/dist/app.module.js +165 -0
  11. package/dist/app.module.js.map +1 -0
  12. package/dist/cli/agent.handler.d.ts +2 -0
  13. package/dist/cli/agent.handler.js +186 -0
  14. package/dist/cli/agent.handler.js.map +1 -0
  15. package/dist/cli/builtin.handler.d.ts +3 -0
  16. package/dist/cli/builtin.handler.js +110 -0
  17. package/dist/cli/builtin.handler.js.map +1 -0
  18. package/dist/cli/chat.handler.d.ts +20 -0
  19. package/dist/cli/chat.handler.js +446 -0
  20. package/dist/cli/chat.handler.js.map +1 -0
  21. package/dist/cli/cli.handler.d.ts +4 -0
  22. package/dist/cli/cli.handler.js +119 -0
  23. package/dist/cli/cli.handler.js.map +1 -0
  24. package/dist/cli/doctor.handler.d.ts +38 -0
  25. package/dist/cli/doctor.handler.js +495 -0
  26. package/dist/cli/doctor.handler.js.map +1 -0
  27. package/dist/cli/execute.handler.d.ts +2 -0
  28. package/dist/cli/execute.handler.js +321 -0
  29. package/dist/cli/execute.handler.js.map +1 -0
  30. package/dist/cli/help.handler.d.ts +2 -0
  31. package/dist/cli/help.handler.js +10 -0
  32. package/dist/cli/help.handler.js.map +1 -0
  33. package/dist/cli/init.handler.d.ts +26 -0
  34. package/dist/cli/init.handler.js +450 -0
  35. package/dist/cli/init.handler.js.map +1 -0
  36. package/dist/cli/log.handler.d.ts +2 -0
  37. package/dist/cli/log.handler.js +69 -0
  38. package/dist/cli/log.handler.js.map +1 -0
  39. package/dist/cli/mcp.handler.d.ts +3 -0
  40. package/dist/cli/mcp.handler.js +121 -0
  41. package/dist/cli/mcp.handler.js.map +1 -0
  42. package/dist/cli/query.handler.d.ts +2 -0
  43. package/dist/cli/query.handler.js +379 -0
  44. package/dist/cli/query.handler.js.map +1 -0
  45. package/dist/cli/skill.handler.d.ts +2 -0
  46. package/dist/cli/skill.handler.js +252 -0
  47. package/dist/cli/skill.handler.js.map +1 -0
  48. package/dist/cli/slack-files.handler.d.ts +2 -0
  49. package/dist/cli/slack-files.handler.js +291 -0
  50. package/dist/cli/slack-files.handler.js.map +1 -0
  51. package/dist/cli/template.handler.d.ts +2 -0
  52. package/dist/cli/template.handler.js +188 -0
  53. package/dist/cli/template.handler.js.map +1 -0
  54. package/dist/cli/templates.handler.d.ts +2 -0
  55. package/dist/cli/templates.handler.js +100 -0
  56. package/dist/cli/templates.handler.js.map +1 -0
  57. package/dist/cli-options.d.ts +39 -0
  58. package/dist/cli-options.js +355 -0
  59. package/dist/cli-options.js.map +1 -0
  60. package/dist/commands/agent.js +23 -23
  61. package/dist/commands/init.js +36 -28
  62. package/dist/commands/resolve-prompt.d.ts +4 -4
  63. package/dist/commands/resolve-prompt.js +5 -5
  64. package/dist/config/timeout.config.d.ts +14 -0
  65. package/dist/config/timeout.config.js +34 -0
  66. package/dist/config/timeout.config.js.map +1 -0
  67. package/dist/conversation/base-conversation-history.provider.d.ts +12 -0
  68. package/dist/conversation/base-conversation-history.provider.js +45 -0
  69. package/dist/conversation/base-conversation-history.provider.js.map +1 -0
  70. package/dist/conversation/cli-conversation-history.provider.d.ts +16 -0
  71. package/dist/conversation/cli-conversation-history.provider.js +111 -0
  72. package/dist/conversation/cli-conversation-history.provider.js.map +1 -0
  73. package/dist/conversation/conversation-provider.factory.d.ts +10 -0
  74. package/dist/conversation/conversation-provider.factory.js +50 -0
  75. package/dist/conversation/conversation-provider.factory.js.map +1 -0
  76. package/dist/conversation/index.d.ts +6 -0
  77. package/dist/conversation/index.js +27 -0
  78. package/dist/conversation/index.js.map +1 -0
  79. package/dist/conversation/slack-conversation-history.provider.d.ts +29 -0
  80. package/dist/conversation/slack-conversation-history.provider.js +302 -0
  81. package/dist/conversation/slack-conversation-history.provider.js.map +1 -0
  82. package/dist/crewx.tool.d.ts +359 -0
  83. package/dist/crewx.tool.js +2501 -0
  84. package/dist/crewx.tool.js.map +1 -0
  85. package/dist/crewx.tool.spec.d.ts +1 -0
  86. package/dist/crewx.tool.spec.js +158 -0
  87. package/dist/crewx.tool.spec.js.map +1 -0
  88. package/dist/guards/bearer-auth.guard.d.ts +7 -0
  89. package/dist/guards/bearer-auth.guard.js +44 -0
  90. package/dist/guards/bearer-auth.guard.js.map +1 -0
  91. package/dist/health.controller.d.ts +6 -0
  92. package/dist/health.controller.js +32 -0
  93. package/dist/health.controller.js.map +1 -0
  94. package/dist/main.js +72 -71
  95. package/dist/main.js.map +1 -0
  96. package/dist/mcp.controller.d.ts +8 -0
  97. package/dist/mcp.controller.js +62 -0
  98. package/dist/mcp.controller.js.map +1 -0
  99. package/dist/package.json +3 -0
  100. package/dist/providers/dynamic-provider.factory.d.ts +15 -0
  101. package/dist/providers/dynamic-provider.factory.js +133 -0
  102. package/dist/providers/dynamic-provider.factory.js.map +1 -0
  103. package/dist/providers/logger.adapter.d.ts +6 -0
  104. package/dist/providers/logger.adapter.js +102 -0
  105. package/dist/providers/logger.adapter.js.map +1 -0
  106. package/dist/services/agent-loader.service.d.ts +35 -0
  107. package/dist/services/agent-loader.service.js +622 -0
  108. package/dist/services/agent-loader.service.js.map +1 -0
  109. package/dist/services/auth.service.d.ts +9 -0
  110. package/dist/services/auth.service.js +47 -0
  111. package/dist/services/auth.service.js.map +1 -0
  112. package/dist/services/config-validator.service.d.ts +29 -0
  113. package/dist/services/config-validator.service.js +483 -0
  114. package/dist/services/config-validator.service.js.map +1 -0
  115. package/dist/services/config.service.d.ts +45 -0
  116. package/dist/services/config.service.js +352 -0
  117. package/dist/services/config.service.js.map +1 -0
  118. package/dist/services/document-loader.service.d.ts +21 -0
  119. package/dist/services/document-loader.service.js +156 -0
  120. package/dist/services/document-loader.service.js.map +1 -0
  121. package/dist/services/help.service.d.ts +5 -0
  122. package/dist/services/help.service.js +139 -0
  123. package/dist/services/help.service.js.map +1 -0
  124. package/dist/services/intelligent-compression.service.d.ts +20 -0
  125. package/dist/services/intelligent-compression.service.js +179 -0
  126. package/dist/services/intelligent-compression.service.js.map +1 -0
  127. package/dist/services/mcp-client.service.d.ts +26 -0
  128. package/dist/services/mcp-client.service.js +81 -0
  129. package/dist/services/mcp-client.service.js.map +1 -0
  130. package/dist/services/parallel-processing.service.d.ts +108 -0
  131. package/dist/services/parallel-processing.service.js +333 -0
  132. package/dist/services/parallel-processing.service.js.map +1 -0
  133. package/dist/services/provider-bridge.service.d.ts +35 -0
  134. package/dist/services/provider-bridge.service.js +224 -0
  135. package/dist/services/provider-bridge.service.js.map +1 -0
  136. package/dist/services/remote-agent.service.d.ts +50 -0
  137. package/dist/services/remote-agent.service.js +171 -0
  138. package/dist/services/remote-agent.service.js.map +1 -0
  139. package/dist/services/result-formatter.service.d.ts +27 -0
  140. package/dist/services/result-formatter.service.js +126 -0
  141. package/dist/services/result-formatter.service.js.map +1 -0
  142. package/dist/services/skill-loader.service.d.ts +15 -0
  143. package/dist/services/skill-loader.service.js +278 -0
  144. package/dist/services/skill-loader.service.js.map +1 -0
  145. package/dist/services/skill.service.d.ts +67 -0
  146. package/dist/services/skill.service.js +670 -0
  147. package/dist/services/skill.service.js.map +1 -0
  148. package/dist/services/skill.service.spec.d.ts +1 -0
  149. package/dist/services/skill.service.spec.js +35 -0
  150. package/dist/services/skill.service.spec.js.map +1 -0
  151. package/dist/services/task-management.service.d.ts +65 -0
  152. package/dist/services/task-management.service.js +288 -0
  153. package/dist/services/task-management.service.js.map +1 -0
  154. package/dist/services/template.service.d.ts +61 -0
  155. package/dist/services/template.service.js +416 -0
  156. package/dist/services/template.service.js.map +1 -0
  157. package/dist/services/tool-call.service.d.ts +19 -0
  158. package/dist/services/tool-call.service.js +1061 -0
  159. package/dist/services/tool-call.service.js.map +1 -0
  160. package/dist/services/tracing.service.d.ts +200 -0
  161. package/dist/services/tracing.service.js +1290 -0
  162. package/dist/services/tracing.service.js.map +1 -0
  163. package/dist/slack/formatters/message.formatter.d.ts +32 -0
  164. package/dist/slack/formatters/message.formatter.js +352 -0
  165. package/dist/slack/formatters/message.formatter.js.map +1 -0
  166. package/dist/slack/services/slack-file-download.service.d.ts +58 -0
  167. package/dist/slack/services/slack-file-download.service.js +558 -0
  168. package/dist/slack/services/slack-file-download.service.js.map +1 -0
  169. package/dist/slack/slack-bot.d.ts +33 -0
  170. package/dist/slack/slack-bot.js +567 -0
  171. package/dist/slack/slack-bot.js.map +1 -0
  172. package/dist/stderr.logger.d.ts +8 -0
  173. package/dist/stderr.logger.js +26 -0
  174. package/dist/stderr.logger.js.map +1 -0
  175. package/dist/types/usage.types.d.ts +107 -0
  176. package/dist/types/usage.types.js +3 -0
  177. package/dist/types/usage.types.js.map +1 -0
  178. package/dist/utils/config-utils.d.ts +15 -0
  179. package/dist/utils/config-utils.js +69 -0
  180. package/dist/utils/config-utils.js.map +1 -0
  181. package/dist/utils/extract-text.d.ts +1 -0
  182. package/dist/utils/extract-text.js +15 -0
  183. package/dist/utils/extract-text.js.map +1 -0
  184. package/dist/utils/mcp-installer.d.ts +20 -0
  185. package/dist/utils/mcp-installer.js +199 -0
  186. package/dist/utils/mcp-installer.js.map +1 -0
  187. package/dist/utils/project-hash.d.ts +6 -0
  188. package/dist/utils/project-hash.js +70 -0
  189. package/dist/utils/project-hash.js.map +1 -0
  190. package/dist/utils/simple-security.d.ts +3 -0
  191. package/dist/utils/simple-security.js +20 -0
  192. package/dist/utils/simple-security.js.map +1 -0
  193. package/dist/utils/stdin-utils.d.ts +6 -0
  194. package/dist/utils/stdin-utils.js +109 -0
  195. package/dist/utils/stdin-utils.js.map +1 -0
  196. package/dist/utils/template-processor.d.ts +4 -0
  197. package/dist/utils/template-processor.js +266 -0
  198. package/dist/utils/template-processor.js.map +1 -0
  199. package/dist/utils/terminal-message-formatter.d.ts +23 -0
  200. package/dist/utils/terminal-message-formatter.js +136 -0
  201. package/dist/utils/terminal-message-formatter.js.map +1 -0
  202. package/dist/version.d.ts +1 -0
  203. package/dist/version.js +17 -0
  204. package/dist/version.js.map +1 -0
  205. package/dist/workspace.service.d.ts +44 -0
  206. package/dist/workspace.service.js +299 -0
  207. package/dist/workspace.service.js.map +1 -0
  208. package/package.json +18 -18
  209. package/dist/commands/task-db.d.ts +0 -33
  210. package/dist/commands/task-db.js +0 -107
  211. package/dist/examples/deny-secrets-plugin.d.ts +0 -22
  212. package/dist/examples/deny-secrets-plugin.js +0 -40
  213. package/dist/plugins/examples/echo-hook.d.ts +0 -24
  214. package/dist/plugins/examples/echo-hook.js +0 -60
  215. package/dist/plugins/examples/verify-echo-hook.d.ts +0 -8
  216. package/dist/plugins/examples/verify-echo-hook.js +0 -47
  217. package/dist/plugins/sqlite-tracing.d.ts +0 -11
  218. package/dist/plugins/sqlite-tracing.js +0 -19
  219. package/dist/repository/workspace.repository.d.ts +0 -26
  220. package/dist/repository/workspace.repository.js +0 -111
  221. package/dist/schema/tasks.d.ts +0 -7
  222. package/dist/schema/tasks.js +0 -48
@@ -0,0 +1,495 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DoctorHandler = void 0;
13
+ exports.handleDoctor = handleDoctor;
14
+ const common_1 = require("@nestjs/common");
15
+ const fs_1 = require("fs");
16
+ const path_1 = require("path");
17
+ const crewx_sdk_1 = require("@sowonai/crewx-sdk");
18
+ const task_management_service_1 = require("../services/task-management.service");
19
+ const result_formatter_service_1 = require("../services/result-formatter.service");
20
+ const parallel_processing_service_1 = require("../services/parallel-processing.service");
21
+ const ai_provider_service_1 = require("../ai-provider.service");
22
+ let DoctorHandler = class DoctorHandler {
23
+ constructor(taskManagementService, resultFormatterService, parallelProcessingService, aiProviderService) {
24
+ this.taskManagementService = taskManagementService;
25
+ this.resultFormatterService = resultFormatterService;
26
+ this.parallelProcessingService = parallelProcessingService;
27
+ this.aiProviderService = aiProviderService;
28
+ }
29
+ async handle(options = {}) {
30
+ const taskId = this.taskManagementService.createTask({
31
+ type: 'doctor',
32
+ command: 'crewx doctor',
33
+ options: options
34
+ });
35
+ try {
36
+ this.taskManagementService.addTaskLog(taskId, {
37
+ level: 'info',
38
+ message: 'Starting CrewX system diagnosis'
39
+ });
40
+ const workingDir = options.workingDirectory || process.cwd();
41
+ let configPath = options.config;
42
+ if (!configPath) {
43
+ const crewConfigPath = (0, path_1.join)(workingDir, 'crewx.yaml');
44
+ const agentsYamlPath = (0, path_1.join)(workingDir, 'agents.yaml');
45
+ if ((0, fs_1.existsSync)(crewConfigPath)) {
46
+ configPath = 'crewx.yaml';
47
+ }
48
+ else if ((0, fs_1.existsSync)(agentsYamlPath)) {
49
+ configPath = 'agents.yaml';
50
+ }
51
+ else {
52
+ configPath = 'crewx.yaml';
53
+ }
54
+ }
55
+ const fullConfigPath = (0, path_1.join)(workingDir, configPath);
56
+ const diagnostics = [];
57
+ const configDiagnostic = await this.checkConfigurationFile(fullConfigPath);
58
+ diagnostics.push(configDiagnostic);
59
+ const logsDiagnostic = await this.checkLogsDirectory(workingDir);
60
+ diagnostics.push(logsDiagnostic);
61
+ const aiProviderDiagnostics = await this.checkAIProviders();
62
+ diagnostics.push(...aiProviderDiagnostics);
63
+ if (configDiagnostic.status === 'success') {
64
+ const testDiagnostics = await this.testAIProviders(fullConfigPath, taskId);
65
+ diagnostics.push(...testDiagnostics);
66
+ }
67
+ const overallHealth = this.assessOverallHealth(diagnostics);
68
+ const successMessage = this.formatDiagnosticReport(diagnostics, overallHealth);
69
+ const isHealthy = overallHealth.status !== 'error';
70
+ this.taskManagementService.completeTask(taskId, {
71
+ message: successMessage,
72
+ diagnostics,
73
+ health: overallHealth
74
+ }, isHealthy);
75
+ return {
76
+ success: isHealthy,
77
+ message: successMessage,
78
+ taskId,
79
+ diagnostics
80
+ };
81
+ }
82
+ catch (error) {
83
+ const errorMessage = `Failed to complete system diagnosis: ${error instanceof Error ? error.message : String(error)}`;
84
+ this.taskManagementService.addTaskLog(taskId, {
85
+ level: 'error',
86
+ message: errorMessage
87
+ });
88
+ this.taskManagementService.completeTask(taskId, { error: errorMessage }, false);
89
+ return {
90
+ success: false,
91
+ message: errorMessage,
92
+ taskId,
93
+ diagnostics: [{
94
+ name: 'System Error',
95
+ status: 'error',
96
+ message: errorMessage
97
+ }]
98
+ };
99
+ }
100
+ }
101
+ async checkConfigurationFile(configPath) {
102
+ try {
103
+ if (!(0, fs_1.existsSync)(configPath)) {
104
+ return {
105
+ name: 'Configuration File',
106
+ status: 'error',
107
+ message: 'Configuration file not found',
108
+ details: `Run 'crewx init' to create configuration file at ${configPath}`
109
+ };
110
+ }
111
+ const config = (0, crewx_sdk_1.parseCrewxConfigFromFile)(configPath, { validationMode: 'lenient' });
112
+ if (!config || !config.agents || !Array.isArray(config.agents)) {
113
+ return {
114
+ name: 'Configuration File',
115
+ status: 'error',
116
+ message: 'Invalid configuration format',
117
+ details: 'Configuration file exists but has invalid structure'
118
+ };
119
+ }
120
+ if (config.agents.length === 0) {
121
+ return {
122
+ name: 'Configuration File',
123
+ status: 'warning',
124
+ message: 'No agents configured',
125
+ details: 'Configuration file exists but contains no agent definitions'
126
+ };
127
+ }
128
+ return {
129
+ name: 'Configuration File',
130
+ status: 'success',
131
+ message: `Found ${config.agents.length} agent(s) configured`,
132
+ details: `Configuration loaded from ${configPath}`
133
+ };
134
+ }
135
+ catch (error) {
136
+ return {
137
+ name: 'Configuration File',
138
+ status: 'error',
139
+ message: 'Failed to parse configuration',
140
+ details: `Error: ${error instanceof Error ? error.message : String(error)}`
141
+ };
142
+ }
143
+ }
144
+ async checkLogsDirectory(workingDir) {
145
+ const logsDir = (0, path_1.join)(workingDir, '.crewx', 'logs');
146
+ if (!(0, fs_1.existsSync)(logsDir)) {
147
+ return {
148
+ name: 'Logs Directory',
149
+ status: 'warning',
150
+ message: 'Logs directory not found',
151
+ details: `Directory will be created automatically: ${logsDir}`
152
+ };
153
+ }
154
+ return {
155
+ name: 'Logs Directory',
156
+ status: 'success',
157
+ message: 'Logs directory exists',
158
+ details: `Logs available at ${logsDir}`
159
+ };
160
+ }
161
+ generateInstallScript(providerMetadata) {
162
+ const platform = process.platform;
163
+ const { name, npm, brew, curl, windows, docs } = providerMetadata;
164
+ let script = `Installation instructions for ${name.toUpperCase()} CLI:\n\n`;
165
+ if (platform === 'darwin') {
166
+ if (brew) {
167
+ script += `# macOS (Homebrew - Recommended)\n`;
168
+ script += `brew tap ${brew.split('/').slice(0, 2).join('/')}\n`;
169
+ script += `brew install ${brew.split('/').pop()}\n\n`;
170
+ }
171
+ if (npm) {
172
+ script += `# macOS (npm)\n`;
173
+ script += `npm install -g ${npm}\n\n`;
174
+ }
175
+ if (curl) {
176
+ script += `# macOS (curl)\n`;
177
+ script += `curl -fsSL ${curl} | sh\n\n`;
178
+ }
179
+ }
180
+ else if (platform === 'win32') {
181
+ if (windows) {
182
+ script += `# Windows\n`;
183
+ script += `${windows}\n\n`;
184
+ }
185
+ if (npm) {
186
+ script += `# Windows (npm - alternative)\n`;
187
+ script += `npm install -g ${npm}\n\n`;
188
+ }
189
+ }
190
+ else {
191
+ if (npm) {
192
+ script += `# Linux (npm - Recommended)\n`;
193
+ script += `npm install -g ${npm}\n\n`;
194
+ }
195
+ if (curl) {
196
+ script += `# Linux (curl)\n`;
197
+ script += `curl -fsSL ${curl} | sh\n\n`;
198
+ }
199
+ }
200
+ script += `# Authentication Setup\n`;
201
+ if (name === 'claude') {
202
+ script += `export ANTHROPIC_API_KEY=your_api_key_here\n`;
203
+ script += `# Get API key from: https://console.anthropic.com/\n\n`;
204
+ }
205
+ else if (name === 'gemini') {
206
+ script += `export GOOGLE_API_KEY=your_api_key_here\n`;
207
+ script += `# Get API key from: https://makersuite.google.com/\n\n`;
208
+ }
209
+ else if (name === 'copilot') {
210
+ script += `# GitHub Copilot requires GitHub account authentication\n`;
211
+ script += `# Sign in through GitHub CLI or VS Code extension\n\n`;
212
+ }
213
+ else if (name === 'codex') {
214
+ script += `# CrewX Codex uses local configuration\n`;
215
+ script += `# No API key required for basic usage\n\n`;
216
+ }
217
+ script += `# Documentation: ${docs}`;
218
+ return script;
219
+ }
220
+ async checkAIProviders() {
221
+ const cliProviders = [
222
+ {
223
+ name: 'claude',
224
+ npm: '@anthropic-ai/sdk',
225
+ brew: 'anthropic/tap/claude',
226
+ curl: 'https://api.anthropic.com/v1/install.sh',
227
+ windows: 'npm install -g @anthropic-ai/claude-cli',
228
+ docs: 'https://docs.anthropic.com/claude/docs/cli'
229
+ },
230
+ {
231
+ name: 'gemini',
232
+ npm: '@google/generative-ai',
233
+ brew: null,
234
+ curl: null,
235
+ windows: 'npm install -g @google/gemini-cli',
236
+ docs: 'https://ai.google.dev/docs/cli'
237
+ },
238
+ {
239
+ name: 'copilot',
240
+ npm: null,
241
+ brew: null,
242
+ curl: null,
243
+ windows: 'Install GitHub Copilot extension',
244
+ docs: 'https://github.com/features/copilot'
245
+ },
246
+ {
247
+ name: 'codex',
248
+ npm: '@sowonai/crewx-codex',
249
+ brew: null,
250
+ curl: null,
251
+ windows: 'npm install -g @sowonai/crewx-codex',
252
+ docs: 'https://github.com/sowonai/crewx-codex'
253
+ }
254
+ ];
255
+ const diagnostics = [];
256
+ for (const providerMetadata of cliProviders) {
257
+ try {
258
+ const providerInstance = this.aiProviderService.getProvider(`cli/${providerMetadata.name}`);
259
+ const isAvailable = providerInstance ? await providerInstance.isAvailable() : false;
260
+ if (isAvailable) {
261
+ diagnostics.push({
262
+ name: `${providerMetadata.name.toUpperCase()} CLI`,
263
+ status: 'success',
264
+ message: 'Installed and available',
265
+ details: `${providerMetadata.name} CLI is ready for use`
266
+ });
267
+ }
268
+ else {
269
+ const installScript = this.generateInstallScript(providerMetadata);
270
+ diagnostics.push({
271
+ name: `${providerMetadata.name.toUpperCase()} CLI`,
272
+ status: 'warning',
273
+ message: 'Not installed or not available',
274
+ details: installScript
275
+ });
276
+ }
277
+ }
278
+ catch (error) {
279
+ diagnostics.push({
280
+ name: `${providerMetadata.name.toUpperCase()} CLI`,
281
+ status: 'error',
282
+ message: 'Check failed',
283
+ details: `Error checking ${providerMetadata.name}: ${error instanceof Error ? error.message : String(error)}`
284
+ });
285
+ }
286
+ }
287
+ try {
288
+ const config = (0, crewx_sdk_1.parseCrewxConfigFromFile)((0, path_1.join)(process.cwd(), 'crewx.yaml'), { validationMode: 'lenient' });
289
+ if (config?.agents) {
290
+ const apiAgents = config.agents.filter((agent) => {
291
+ const provider = agent.inline?.provider;
292
+ return typeof provider === 'string' && provider.startsWith('api/');
293
+ });
294
+ if (apiAgents.length > 0) {
295
+ diagnostics.push({
296
+ name: 'API Providers Configuration',
297
+ status: 'success',
298
+ message: `Found ${apiAgents.length} API provider agent(s) configured`,
299
+ details: `API agents: ${apiAgents.map((a) => a.id).join(', ')}`
300
+ });
301
+ const apiProviderTypes = new Set(apiAgents.map((agent) => agent.inline?.provider).filter(Boolean));
302
+ for (const providerType of apiProviderTypes) {
303
+ const envVarName = this.getAPIKeyEnvVarName(providerType);
304
+ const isConfigured = process.env[envVarName] ? true : false;
305
+ diagnostics.push({
306
+ name: `${providerType} API Key`,
307
+ status: isConfigured ? 'success' : 'warning',
308
+ message: isConfigured ? 'API key configured' : 'API key not configured',
309
+ details: isConfigured
310
+ ? `Environment variable ${envVarName} is set`
311
+ : `Set ${envVarName} environment variable for ${providerType}`
312
+ });
313
+ }
314
+ }
315
+ }
316
+ }
317
+ catch (error) {
318
+ }
319
+ return diagnostics;
320
+ }
321
+ getAPIKeyEnvVarName(provider) {
322
+ const mapping = {
323
+ 'api/openai': 'OPENAI_API_KEY',
324
+ 'api/anthropic': 'ANTHROPIC_API_KEY',
325
+ 'api/google': 'GOOGLE_API_KEY',
326
+ 'api/bedrock': 'AWS_ACCESS_KEY_ID',
327
+ 'api/litellm': 'LITELLM_API_KEY',
328
+ 'api/ollama': 'OLLAMA_BASE_URL',
329
+ 'api/sowonai': 'SOWONAI_API_KEY',
330
+ };
331
+ return mapping[provider] || 'API_KEY';
332
+ }
333
+ async testAIProviders(configPath, taskId) {
334
+ try {
335
+ this.taskManagementService.addTaskLog(taskId, {
336
+ level: 'info',
337
+ message: 'Testing AI providers with simple queries'
338
+ });
339
+ const config = (0, crewx_sdk_1.parseCrewxConfigFromFile)(configPath, { validationMode: 'lenient' });
340
+ const testQueries = (config.agents || [])
341
+ .filter((agent) => agent.inline?.provider)
342
+ .map((agent) => ({
343
+ agentId: agent.id,
344
+ query: 'Hello, please respond with "OK" to confirm you are working.',
345
+ context: 'System diagnostic test'
346
+ }));
347
+ if (testQueries.length === 0) {
348
+ return [{
349
+ name: 'AI Provider Testing',
350
+ status: 'warning',
351
+ message: 'No testable agents found',
352
+ details: 'No agents with provider configuration available for testing'
353
+ }];
354
+ }
355
+ const results = await this.parallelProcessingService.queryAgentsParallel(testQueries, {
356
+ timeout: 30000
357
+ });
358
+ const diagnostics = [];
359
+ results.results.forEach((result, index) => {
360
+ const query = testQueries[index];
361
+ if (!query)
362
+ return;
363
+ const agentId = query.agentId;
364
+ if (result.success) {
365
+ diagnostics.push({
366
+ name: `Agent Test: ${agentId}`,
367
+ status: 'success',
368
+ message: 'Responding correctly',
369
+ details: `Agent ${agentId} successfully responded to test query`
370
+ });
371
+ }
372
+ else {
373
+ const isSessionLimit = result.error?.includes('session limit') || result.error?.includes('Session limit');
374
+ diagnostics.push({
375
+ name: `Agent Test: ${agentId}`,
376
+ status: isSessionLimit ? 'warning' : 'error',
377
+ message: isSessionLimit ? 'Session limit reached' : 'Failed to respond',
378
+ details: result.error || 'Unknown error during test'
379
+ });
380
+ }
381
+ });
382
+ return diagnostics;
383
+ }
384
+ catch (error) {
385
+ return [{
386
+ name: 'AI Provider Testing',
387
+ status: 'error',
388
+ message: 'Test execution failed',
389
+ details: `Error during AI provider testing: ${error instanceof Error ? error.message : String(error)}`
390
+ }];
391
+ }
392
+ }
393
+ assessOverallHealth(diagnostics) {
394
+ const errorCount = diagnostics.filter(d => d.status === 'error').length;
395
+ const warningCount = diagnostics.filter(d => d.status === 'warning').length;
396
+ const successCount = diagnostics.filter(d => d.status === 'success').length;
397
+ if (errorCount > 0) {
398
+ return {
399
+ status: 'error',
400
+ message: `System has ${errorCount} error(s) that need attention`
401
+ };
402
+ }
403
+ if (warningCount > 0) {
404
+ return {
405
+ status: 'warning',
406
+ message: `System is functional with ${warningCount} warning(s)`
407
+ };
408
+ }
409
+ return {
410
+ status: 'success',
411
+ message: `System is healthy - all ${successCount} checks passed`
412
+ };
413
+ }
414
+ formatDiagnosticReport(diagnostics, overallHealth) {
415
+ const statusIcon = (status) => {
416
+ switch (status) {
417
+ case 'success': return '✅';
418
+ case 'warning': return '⚠️';
419
+ case 'error': return '❌';
420
+ default: return '🔍';
421
+ }
422
+ };
423
+ const healthIcon = statusIcon(overallHealth.status);
424
+ let report = `${healthIcon} **CrewX System Diagnosis**\n\n`;
425
+ report += `**Overall Health:** ${overallHealth.message}\n\n`;
426
+ report += `**Diagnostic Results:**\n`;
427
+ diagnostics.forEach(diagnostic => {
428
+ const icon = statusIcon(diagnostic.status);
429
+ report += `${icon} **${diagnostic.name}:** ${diagnostic.message}\n`;
430
+ if (diagnostic.details) {
431
+ report += ` ${diagnostic.details}\n`;
432
+ }
433
+ report += '\n';
434
+ });
435
+ const errors = diagnostics.filter(d => d.status === 'error');
436
+ const warnings = diagnostics.filter(d => d.status === 'warning');
437
+ if (errors.length > 0 || warnings.length > 0) {
438
+ report += `**Recommendations:**\n`;
439
+ if (errors.some(e => e.name === 'Configuration File')) {
440
+ report += `• Run \`crewx init\` to create or fix configuration\n`;
441
+ }
442
+ if (errors.some(e => e.name.includes('CLI'))) {
443
+ report += `• Install missing AI CLI tools\n`;
444
+ }
445
+ if (warnings.some(w => w.name.includes('session limit'))) {
446
+ report += `• Some AI providers have reached their session limits - try again later\n`;
447
+ }
448
+ report += '\n';
449
+ }
450
+ report += `**Next Steps:**\n`;
451
+ if (overallHealth.status === 'success') {
452
+ report += `• Your CrewX setup is ready to use!\n`;
453
+ report += `• Try: \`crewx query "@claude hello world"\`\n`;
454
+ }
455
+ else {
456
+ report += `• Address the issues above to improve system health\n`;
457
+ report += `• Run \`crewx doctor\` again after making changes\n`;
458
+ }
459
+ return report;
460
+ }
461
+ };
462
+ exports.DoctorHandler = DoctorHandler;
463
+ exports.DoctorHandler = DoctorHandler = __decorate([
464
+ (0, common_1.Injectable)(),
465
+ __metadata("design:paramtypes", [task_management_service_1.TaskManagementService,
466
+ result_formatter_service_1.ResultFormatterService,
467
+ parallel_processing_service_1.ParallelProcessingService,
468
+ ai_provider_service_1.AIProviderService])
469
+ ], DoctorHandler);
470
+ const common_2 = require("@nestjs/common");
471
+ const logger = new common_2.Logger('DoctorHandler');
472
+ async function handleDoctor(app, args) {
473
+ if (args.log)
474
+ logger.log('Doctor command received');
475
+ try {
476
+ console.log('🩺 Starting comprehensive system diagnosis...\n');
477
+ const doctorHandler = app.get(DoctorHandler);
478
+ const result = await doctorHandler.handle({
479
+ config: args.config,
480
+ verbose: args.log
481
+ });
482
+ console.log(result.message);
483
+ if (!result.success) {
484
+ process.exit(1);
485
+ }
486
+ }
487
+ catch (error) {
488
+ if (args.log)
489
+ logger.error(`Doctor check failed: ${error instanceof Error ? error.message : error}`);
490
+ console.log('❌ System diagnosis failed');
491
+ console.log(` Error: ${error instanceof Error ? error.message : error}`);
492
+ process.exit(1);
493
+ }
494
+ }
495
+ //# sourceMappingURL=doctor.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.handler.js","sourceRoot":"","sources":["../../src/cli/doctor.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CliOptions } from '../cli-options';
2
+ export declare function handleExecute(app: any, args: CliOptions): Promise<void>;