crewx 0.3.0 → 0.4.0-dev.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 (233) hide show
  1. package/bin/crewx.js +6 -0
  2. package/package.json +9 -107
  3. package/LICENSE +0 -201
  4. package/README.md +0 -234
  5. package/crewx.yaml +0 -2069
  6. package/dist/agent.types.d.ts +0 -117
  7. package/dist/agent.types.js +0 -16
  8. package/dist/agent.types.js.map +0 -1
  9. package/dist/ai-provider.service.d.ts +0 -36
  10. package/dist/ai-provider.service.js +0 -191
  11. package/dist/ai-provider.service.js.map +0 -1
  12. package/dist/ai.service.d.ts +0 -57
  13. package/dist/ai.service.js +0 -629
  14. package/dist/ai.service.js.map +0 -1
  15. package/dist/app.module.d.ts +0 -5
  16. package/dist/app.module.js +0 -103
  17. package/dist/app.module.js.map +0 -1
  18. package/dist/cli/agent.handler.d.ts +0 -2
  19. package/dist/cli/agent.handler.js +0 -140
  20. package/dist/cli/agent.handler.js.map +0 -1
  21. package/dist/cli/chat.handler.d.ts +0 -19
  22. package/dist/cli/chat.handler.js +0 -431
  23. package/dist/cli/chat.handler.js.map +0 -1
  24. package/dist/cli/cli.handler.d.ts +0 -4
  25. package/dist/cli/cli.handler.js +0 -97
  26. package/dist/cli/cli.handler.js.map +0 -1
  27. package/dist/cli/doctor.handler.d.ts +0 -36
  28. package/dist/cli/doctor.handler.js +0 -382
  29. package/dist/cli/doctor.handler.js.map +0 -1
  30. package/dist/cli/execute.handler.d.ts +0 -2
  31. package/dist/cli/execute.handler.js +0 -319
  32. package/dist/cli/execute.handler.js.map +0 -1
  33. package/dist/cli/help.handler.d.ts +0 -2
  34. package/dist/cli/help.handler.js +0 -10
  35. package/dist/cli/help.handler.js.map +0 -1
  36. package/dist/cli/init.handler.d.ts +0 -26
  37. package/dist/cli/init.handler.js +0 -450
  38. package/dist/cli/init.handler.js.map +0 -1
  39. package/dist/cli/mcp.handler.d.ts +0 -3
  40. package/dist/cli/mcp.handler.js +0 -121
  41. package/dist/cli/mcp.handler.js.map +0 -1
  42. package/dist/cli/query.handler.d.ts +0 -2
  43. package/dist/cli/query.handler.js +0 -380
  44. package/dist/cli/query.handler.js.map +0 -1
  45. package/dist/cli/templates.handler.d.ts +0 -2
  46. package/dist/cli/templates.handler.js +0 -100
  47. package/dist/cli/templates.handler.js.map +0 -1
  48. package/dist/cli-options.d.ts +0 -29
  49. package/dist/cli-options.js +0 -234
  50. package/dist/cli-options.js.map +0 -1
  51. package/dist/config/timeout.config.d.ts +0 -14
  52. package/dist/config/timeout.config.js +0 -34
  53. package/dist/config/timeout.config.js.map +0 -1
  54. package/dist/constants.d.ts +0 -4
  55. package/dist/constants.js +0 -8
  56. package/dist/constants.js.map +0 -1
  57. package/dist/conversation/base-conversation-history.provider.d.ts +0 -12
  58. package/dist/conversation/base-conversation-history.provider.js +0 -45
  59. package/dist/conversation/base-conversation-history.provider.js.map +0 -1
  60. package/dist/conversation/cli-conversation-history.provider.d.ts +0 -16
  61. package/dist/conversation/cli-conversation-history.provider.js +0 -111
  62. package/dist/conversation/cli-conversation-history.provider.js.map +0 -1
  63. package/dist/conversation/conversation-config.d.ts +0 -9
  64. package/dist/conversation/conversation-config.js +0 -25
  65. package/dist/conversation/conversation-config.js.map +0 -1
  66. package/dist/conversation/conversation-history.interface.d.ts +0 -25
  67. package/dist/conversation/conversation-history.interface.js +0 -3
  68. package/dist/conversation/conversation-history.interface.js.map +0 -1
  69. package/dist/conversation/conversation-provider.factory.d.ts +0 -10
  70. package/dist/conversation/conversation-provider.factory.js +0 -50
  71. package/dist/conversation/conversation-provider.factory.js.map +0 -1
  72. package/dist/conversation/conversation-storage.service.d.ts +0 -16
  73. package/dist/conversation/conversation-storage.service.js +0 -220
  74. package/dist/conversation/conversation-storage.service.js.map +0 -1
  75. package/dist/conversation/index.d.ts +0 -7
  76. package/dist/conversation/index.js +0 -24
  77. package/dist/conversation/index.js.map +0 -1
  78. package/dist/conversation/slack-conversation-history.provider.d.ts +0 -28
  79. package/dist/conversation/slack-conversation-history.provider.js +0 -278
  80. package/dist/conversation/slack-conversation-history.provider.js.map +0 -1
  81. package/dist/crewx.tool.d.ts +0 -332
  82. package/dist/crewx.tool.js +0 -1463
  83. package/dist/crewx.tool.js.map +0 -1
  84. package/dist/guards/bearer-auth.guard.d.ts +0 -7
  85. package/dist/guards/bearer-auth.guard.js +0 -44
  86. package/dist/guards/bearer-auth.guard.js.map +0 -1
  87. package/dist/health.controller.d.ts +0 -6
  88. package/dist/health.controller.js +0 -32
  89. package/dist/health.controller.js.map +0 -1
  90. package/dist/knowledge/DocumentManager.d.ts +0 -4
  91. package/dist/knowledge/DocumentManager.js +0 -119
  92. package/dist/knowledge/DocumentManager.js.map +0 -1
  93. package/dist/main.d.ts +0 -1
  94. package/dist/main.js +0 -268
  95. package/dist/main.js.map +0 -1
  96. package/dist/mcp.controller.d.ts +0 -8
  97. package/dist/mcp.controller.js +0 -62
  98. package/dist/mcp.controller.js.map +0 -1
  99. package/dist/project.service.d.ts +0 -44
  100. package/dist/project.service.js +0 -299
  101. package/dist/project.service.js.map +0 -1
  102. package/dist/providers/ai-provider.interface.d.ts +0 -50
  103. package/dist/providers/ai-provider.interface.js +0 -23
  104. package/dist/providers/ai-provider.interface.js.map +0 -1
  105. package/dist/providers/base-ai.provider.d.ts +0 -50
  106. package/dist/providers/base-ai.provider.js +0 -624
  107. package/dist/providers/base-ai.provider.js.map +0 -1
  108. package/dist/providers/claude.provider.d.ts +0 -25
  109. package/dist/providers/claude.provider.js +0 -362
  110. package/dist/providers/claude.provider.js.map +0 -1
  111. package/dist/providers/codex.provider.d.ts +0 -17
  112. package/dist/providers/codex.provider.js +0 -99
  113. package/dist/providers/codex.provider.js.map +0 -1
  114. package/dist/providers/copilot.provider.d.ts +0 -25
  115. package/dist/providers/copilot.provider.js +0 -266
  116. package/dist/providers/copilot.provider.js.map +0 -1
  117. package/dist/providers/dynamic-provider.factory.d.ts +0 -55
  118. package/dist/providers/dynamic-provider.factory.js +0 -587
  119. package/dist/providers/dynamic-provider.factory.js.map +0 -1
  120. package/dist/providers/gemini.provider.d.ts +0 -22
  121. package/dist/providers/gemini.provider.js +0 -147
  122. package/dist/providers/gemini.provider.js.map +0 -1
  123. package/dist/services/agent-loader.service.d.ts +0 -29
  124. package/dist/services/agent-loader.service.js +0 -370
  125. package/dist/services/agent-loader.service.js.map +0 -1
  126. package/dist/services/auth.service.d.ts +0 -9
  127. package/dist/services/auth.service.js +0 -47
  128. package/dist/services/auth.service.js.map +0 -1
  129. package/dist/services/config-validator.service.d.ts +0 -28
  130. package/dist/services/config-validator.service.js +0 -467
  131. package/dist/services/config-validator.service.js.map +0 -1
  132. package/dist/services/config.service.d.ts +0 -45
  133. package/dist/services/config.service.js +0 -180
  134. package/dist/services/config.service.js.map +0 -1
  135. package/dist/services/context-enhancement.service.d.ts +0 -13
  136. package/dist/services/context-enhancement.service.js +0 -169
  137. package/dist/services/context-enhancement.service.js.map +0 -1
  138. package/dist/services/document-loader.service.d.ts +0 -16
  139. package/dist/services/document-loader.service.js +0 -137
  140. package/dist/services/document-loader.service.js.map +0 -1
  141. package/dist/services/help.service.d.ts +0 -5
  142. package/dist/services/help.service.js +0 -117
  143. package/dist/services/help.service.js.map +0 -1
  144. package/dist/services/intelligent-compression.service.d.ts +0 -20
  145. package/dist/services/intelligent-compression.service.js +0 -179
  146. package/dist/services/intelligent-compression.service.js.map +0 -1
  147. package/dist/services/mcp-client.service.d.ts +0 -26
  148. package/dist/services/mcp-client.service.js +0 -81
  149. package/dist/services/mcp-client.service.js.map +0 -1
  150. package/dist/services/parallel-processing.service.d.ts +0 -108
  151. package/dist/services/parallel-processing.service.js +0 -268
  152. package/dist/services/parallel-processing.service.js.map +0 -1
  153. package/dist/services/remote-agent.service.d.ts +0 -49
  154. package/dist/services/remote-agent.service.js +0 -215
  155. package/dist/services/remote-agent.service.js.map +0 -1
  156. package/dist/services/result-formatter.service.d.ts +0 -27
  157. package/dist/services/result-formatter.service.js +0 -126
  158. package/dist/services/result-formatter.service.js.map +0 -1
  159. package/dist/services/task-management.service.d.ts +0 -63
  160. package/dist/services/task-management.service.js +0 -272
  161. package/dist/services/task-management.service.js.map +0 -1
  162. package/dist/services/template.service.d.ts +0 -36
  163. package/dist/services/template.service.js +0 -195
  164. package/dist/services/template.service.js.map +0 -1
  165. package/dist/services/tool-call.service.d.ts +0 -53
  166. package/dist/services/tool-call.service.js +0 -1061
  167. package/dist/services/tool-call.service.js.map +0 -1
  168. package/dist/slack/formatters/message.formatter.d.ts +0 -25
  169. package/dist/slack/formatters/message.formatter.js +0 -246
  170. package/dist/slack/formatters/message.formatter.js.map +0 -1
  171. package/dist/slack/slack-bot.d.ts +0 -24
  172. package/dist/slack/slack-bot.js +0 -467
  173. package/dist/slack/slack-bot.js.map +0 -1
  174. package/dist/stderr.logger.d.ts +0 -8
  175. package/dist/stderr.logger.js +0 -26
  176. package/dist/stderr.logger.js.map +0 -1
  177. package/dist/tsconfig.tsbuildinfo +0 -1
  178. package/dist/utils/config-utils.d.ts +0 -15
  179. package/dist/utils/config-utils.js +0 -69
  180. package/dist/utils/config-utils.js.map +0 -1
  181. package/dist/utils/error-utils.d.ts +0 -3
  182. package/dist/utils/error-utils.js +0 -27
  183. package/dist/utils/error-utils.js.map +0 -1
  184. package/dist/utils/math-utils.d.ts +0 -3
  185. package/dist/utils/math-utils.js +0 -10
  186. package/dist/utils/math-utils.js.map +0 -1
  187. package/dist/utils/mcp-installer.d.ts +0 -20
  188. package/dist/utils/mcp-installer.js +0 -199
  189. package/dist/utils/mcp-installer.js.map +0 -1
  190. package/dist/utils/mention-parser.d.ts +0 -18
  191. package/dist/utils/mention-parser.js +0 -136
  192. package/dist/utils/mention-parser.js.map +0 -1
  193. package/dist/utils/simple-security.d.ts +0 -3
  194. package/dist/utils/simple-security.js +0 -20
  195. package/dist/utils/simple-security.js.map +0 -1
  196. package/dist/utils/stdin-utils.d.ts +0 -27
  197. package/dist/utils/stdin-utils.js +0 -130
  198. package/dist/utils/stdin-utils.js.map +0 -1
  199. package/dist/utils/string-utils.d.ts +0 -1
  200. package/dist/utils/string-utils.js +0 -10
  201. package/dist/utils/string-utils.js.map +0 -1
  202. package/dist/utils/template-processor.d.ts +0 -32
  203. package/dist/utils/template-processor.js +0 -202
  204. package/dist/utils/template-processor.js.map +0 -1
  205. package/dist/version.d.ts +0 -1
  206. package/dist/version.js +0 -17
  207. package/dist/version.js.map +0 -1
  208. package/docs/CLA.md +0 -88
  209. package/docs/agent-configuration.md +0 -364
  210. package/docs/agent-registry-strategy.md +0 -348
  211. package/docs/branding-decision-crewx.md +0 -395
  212. package/docs/claude-code-docker-guide.md +0 -264
  213. package/docs/cli-guide.md +0 -439
  214. package/docs/development.md +0 -595
  215. package/docs/diagram1.svg +0 -1
  216. package/docs/guides/agent-best-practices.md +0 -97
  217. package/docs/guides/bug-management.md +0 -600
  218. package/docs/guides/git-bug-reference.md +0 -366
  219. package/docs/mcp-integration.md +0 -187
  220. package/docs/process/development-workflow.md +0 -84
  221. package/docs/remote-agents.md +0 -555
  222. package/docs/roadmap.md +0 -528
  223. package/docs/rules/branch-protection.md +0 -40
  224. package/docs/standards/rc-versioning.md +0 -60
  225. package/docs/standards/report-structure.md +0 -67
  226. package/docs/template-variables.md +0 -382
  227. package/docs/templates.md +0 -517
  228. package/docs/tools.md +0 -583
  229. package/docs/troubleshooting.md +0 -611
  230. package/templates/agents/default.yaml +0 -938
  231. package/templates/agents/minimal.yaml +0 -25
  232. package/templates/documents/crewcode-manual.md +0 -292
  233. package/templates/versions.json +0 -19
@@ -1,629 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- 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;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- var __metadata = (this && this.__metadata) || function (k, v) {
42
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
- };
44
- var AIService_1;
45
- Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.AIService = void 0;
47
- const common_1 = require("@nestjs/common");
48
- const child_process_1 = require("child_process");
49
- const util_1 = require("util");
50
- const fs_1 = require("fs");
51
- const path_1 = require("path");
52
- const ai_provider_service_1 = require("./ai-provider.service");
53
- const error_utils_1 = require("./utils/error-utils");
54
- const timeout_config_1 = require("./config/timeout.config");
55
- const version_1 = require("./version");
56
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
57
- let AIService = AIService_1 = class AIService {
58
- constructor(aiProviderService) {
59
- this.aiProviderService = aiProviderService;
60
- this.logger = new common_1.Logger(AIService_1.name);
61
- this.logsDir = (0, path_1.join)(process.cwd(), '.crewx', 'logs');
62
- this.timeoutConfig = (0, timeout_config_1.getTimeoutConfig)();
63
- try {
64
- (0, fs_1.mkdirSync)(this.logsDir, { recursive: true });
65
- }
66
- catch (error) {
67
- }
68
- }
69
- createTaskLogFile(taskId, provider, command, agentId, model) {
70
- const logFile = (0, path_1.join)(this.logsDir, `${taskId}.log`);
71
- const timestamp = new Date().toLocaleString();
72
- const header = `=== TASK LOG: ${taskId} ===
73
- CrewX Version: ${version_1.CREWX_VERSION}
74
- Provider: ${provider}
75
- Agent: ${agentId || 'N/A'}
76
- ${model ? `Model: ${model}
77
- ` : ''}Command: ${command}
78
- Started: ${timestamp}
79
-
80
- `;
81
- (0, fs_1.writeFileSync)(logFile, header, 'utf8');
82
- return logFile;
83
- }
84
- appendTaskLog(taskId, level, message) {
85
- try {
86
- const logFile = (0, path_1.join)(this.logsDir, `${taskId}.log`);
87
- const timestamp = new Date().toLocaleString();
88
- const logEntry = `[${timestamp}] ${level}: ${message}\n`;
89
- (0, fs_1.appendFileSync)(logFile, logEntry, 'utf8');
90
- }
91
- catch (error) {
92
- this.logger.error(`Failed to append to task log ${taskId}:`, (0, error_utils_1.getErrorMessage)(error));
93
- }
94
- }
95
- async findClaudePath() {
96
- try {
97
- this.logger.log('🔍 Attempting to find Claude CLI path...');
98
- this.logger.log(`📁 Current working directory: ${process.cwd()}`);
99
- this.logger.log(`🔧 PATH length: ${process.env.PATH?.length || 0}`);
100
- const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
101
- this.logger.log('📦 execSync imported successfully');
102
- const path = execSync('which claude', { encoding: 'utf-8' }).trim();
103
- this.logger.log(`✅ Found Claude CLI at: ${path}`);
104
- return path;
105
- }
106
- catch (error) {
107
- this.logger.error(`❌ Claude not found in PATH: ${error.message}`);
108
- this.logger.error(`🔢 Error code: ${error.code}`);
109
- this.logger.error(`📍 Current PATH: ${process.env.PATH?.substring(0, 200)}...`);
110
- return null;
111
- }
112
- }
113
- async queryClaudeCLI(prompt, options = {}) {
114
- try {
115
- this.logger.log('🚀 Starting queryClaudeCLI...');
116
- const claudePath = await this.findClaudePath();
117
- this.logger.log(`🔍 findClaudePath result: ${claudePath}`);
118
- if (!claudePath) {
119
- this.logger.error('❌ Claude CLI not found in PATH - returning error');
120
- return {
121
- content: '',
122
- provider: 'claude',
123
- command: 'claude -p (stdin)',
124
- success: false,
125
- error: 'Claude CLI is not installed. Please install it from https://claude.ai/download.',
126
- };
127
- }
128
- const { spawn } = await Promise.resolve().then(() => __importStar(require('child_process')));
129
- const { promisify } = await Promise.resolve().then(() => __importStar(require('util')));
130
- this.logger.log(`Executing Claude with stdin prompt (length: ${prompt.length})`);
131
- this.logger.log(`Using Claude path: ${claudePath}`);
132
- this.logger.log(`Current working directory: ${process.cwd()}`);
133
- this.logger.log(`Options working directory: ${options.workingDirectory || 'not set'}`);
134
- this.logger.log(`Process PATH length: ${process.env.PATH?.length || 0}`);
135
- return new Promise((resolve, reject) => {
136
- const child = spawn(claudePath, ['-p'], {
137
- stdio: ['pipe', 'pipe', 'pipe'],
138
- cwd: options.workingDirectory || process.cwd(),
139
- env: process.env,
140
- });
141
- let stdout = '';
142
- let stderr = '';
143
- child.stdout.on('data', (data) => {
144
- stdout += data.toString();
145
- });
146
- child.stderr.on('data', (data) => {
147
- stderr += data.toString();
148
- });
149
- child.on('close', (code) => {
150
- if (code !== 0) {
151
- this.logger.error(`Claude CLI failed with code ${code}. stderr: ${stderr}`);
152
- resolve({
153
- content: '',
154
- provider: 'claude',
155
- command: 'claude -p (stdin)',
156
- success: false,
157
- error: `Claude CLI failed: ${stderr || `Exit code ${code}`}`
158
- });
159
- return;
160
- }
161
- if (stderr && stderr.trim()) {
162
- this.logger.warn(`Claude stderr: ${stderr}`);
163
- if (stderr.includes('authentication') || stderr.includes('login') || stderr.includes('token')) {
164
- resolve({
165
- content: '',
166
- provider: 'claude',
167
- command: 'claude -p (stdin)',
168
- success: false,
169
- error: 'Claude CLI authentication is required. Set up token with "claude setup-token" command.',
170
- });
171
- return;
172
- }
173
- }
174
- if (!stdout || stdout.trim() === '') {
175
- resolve({
176
- content: '',
177
- provider: 'claude',
178
- command: 'claude -p (stdin)',
179
- success: false,
180
- error: 'No response received from Claude CLI. Check authentication status or run "claude setup-token".',
181
- });
182
- return;
183
- }
184
- resolve({
185
- content: stdout.trim(),
186
- provider: 'claude',
187
- command: 'claude -p (stdin)',
188
- success: true,
189
- });
190
- });
191
- child.on('error', (error) => {
192
- this.logger.error(`Claude spawn error: ${error.message}, code: ${error.code}`);
193
- this.logger.error(`Current working directory: ${process.cwd()}`);
194
- this.logger.error(`Environment PATH: ${process.env.PATH}`);
195
- resolve({
196
- content: '',
197
- provider: 'claude',
198
- command: 'claude -p (stdin)',
199
- success: false,
200
- error: error.code === 'ENOENT' ?
201
- 'Claude CLI is not installed. Please install it from https://claude.ai/download.' :
202
- error.message,
203
- });
204
- });
205
- const timeout = setTimeout(() => {
206
- child.kill();
207
- resolve({
208
- content: '',
209
- provider: 'claude',
210
- command: 'claude -p (stdin)',
211
- success: false,
212
- error: 'Claude CLI response timeout. Check network connection or Claude server status.',
213
- });
214
- }, options.timeout || this.timeoutConfig.claudeQuery);
215
- child.on('close', () => {
216
- clearTimeout(timeout);
217
- });
218
- child.stdin.write(prompt);
219
- child.stdin.end();
220
- });
221
- }
222
- catch (error) {
223
- this.logger.error(`Claude execution failed: ${error.message}`, error.stack);
224
- return {
225
- content: '',
226
- provider: 'claude',
227
- command: 'claude -p (stdin)',
228
- success: false,
229
- error: error.message || 'Unknown error occurred',
230
- };
231
- }
232
- }
233
- async queryClaudeWithPermissions(prompt, options = {}) {
234
- try {
235
- const claudePath = await this.findClaudePath();
236
- if (!claudePath) {
237
- this.logger.error('Claude CLI not found in PATH');
238
- return {
239
- content: '',
240
- provider: 'claude',
241
- command: 'claude -p --dangerously-skip-permissions (stdin)',
242
- success: false,
243
- error: 'Claude CLI is not installed. Please install it from https://claude.ai/download.',
244
- };
245
- }
246
- const { spawn } = await Promise.resolve().then(() => __importStar(require('child_process')));
247
- this.logger.log(`Executing Claude with file permissions (length: ${prompt.length})`);
248
- this.logger.log(`Using Claude path: ${claudePath}`);
249
- return new Promise((resolve, reject) => {
250
- const child = spawn(claudePath, ['-p', '--dangerously-skip-permissions'], {
251
- stdio: ['pipe', 'pipe', 'pipe'],
252
- cwd: options.workingDirectory || process.cwd(),
253
- env: process.env,
254
- });
255
- let stdout = '';
256
- let stderr = '';
257
- child.stdout.on('data', (data) => {
258
- stdout += data.toString();
259
- });
260
- child.stderr.on('data', (data) => {
261
- stderr += data.toString();
262
- });
263
- child.on('close', (code) => {
264
- if (code !== 0) {
265
- this.logger.error(`Claude CLI with permissions failed with code ${code}. stderr: ${stderr}`);
266
- resolve({
267
- content: '',
268
- provider: 'claude',
269
- command: 'claude -p --dangerously-skip-permissions (stdin)',
270
- success: false,
271
- error: `Claude CLI failed: ${stderr || `Exit code ${code}`}`
272
- });
273
- return;
274
- }
275
- if (stderr && stderr.trim()) {
276
- this.logger.warn(`Claude stderr: ${stderr}`);
277
- if (stderr.includes('authentication') || stderr.includes('login') || stderr.includes('token')) {
278
- resolve({
279
- content: '',
280
- provider: 'claude',
281
- command: 'claude -p --dangerously-skip-permissions (stdin)',
282
- success: false,
283
- error: 'Claude CLI authentication is required. Set up token with "claude setup-token" command.',
284
- });
285
- return;
286
- }
287
- }
288
- if (!stdout || stdout.trim() === '') {
289
- resolve({
290
- content: '',
291
- provider: 'claude',
292
- command: 'claude -p --dangerously-skip-permissions (stdin)',
293
- success: false,
294
- error: 'No response received from Claude CLI. Check authentication status or run "claude setup-token".',
295
- });
296
- return;
297
- }
298
- resolve({
299
- content: stdout.trim(),
300
- provider: 'claude',
301
- command: 'claude -p --dangerously-skip-permissions (stdin)',
302
- success: true,
303
- });
304
- });
305
- child.on('error', (error) => {
306
- this.logger.error(`Claude with permissions spawn error: ${error.message}`);
307
- resolve({
308
- content: '',
309
- provider: 'claude',
310
- command: 'claude -p --dangerously-skip-permissions (stdin)',
311
- success: false,
312
- error: error.code === 'ENOENT' ?
313
- 'Claude CLI is not installed. Please install it from https://claude.ai/download.' :
314
- error.message,
315
- });
316
- });
317
- const timeout = setTimeout(() => {
318
- child.kill();
319
- resolve({
320
- content: '',
321
- provider: 'claude',
322
- command: 'claude -p --dangerously-skip-permissions (stdin)',
323
- success: false,
324
- error: 'Claude CLI response timeout. Check network connection or Claude server status.',
325
- });
326
- }, options.timeout || this.timeoutConfig.claudeExecute);
327
- child.on('close', () => {
328
- clearTimeout(timeout);
329
- });
330
- child.stdin.write(prompt);
331
- child.stdin.end();
332
- });
333
- }
334
- catch (error) {
335
- this.logger.error(`Claude with permissions execution failed: ${error.message}`, error.stack);
336
- return {
337
- content: '',
338
- provider: 'claude',
339
- command: 'claude -p --dangerously-skip-permissions (stdin)',
340
- success: false,
341
- error: error.message || 'Unknown error occurred',
342
- };
343
- }
344
- }
345
- async queryGeminiCLI(prompt, options = {}) {
346
- const taskId = options.taskId || `gemini_query_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
347
- try {
348
- const { spawn } = await Promise.resolve().then(() => __importStar(require('child_process')));
349
- this.logger.log(`Executing Gemini in query mode (length: ${prompt.length})`);
350
- this.createTaskLogFile(taskId, 'gemini', 'gemini -p');
351
- this.appendTaskLog(taskId, 'INFO', `Starting Gemini query mode`);
352
- this.appendTaskLog(taskId, 'INFO', `Prompt length: ${prompt.length} characters`);
353
- this.appendTaskLog(taskId, 'INFO', `Prompt content:\n${prompt}`);
354
- return new Promise((resolve, reject) => {
355
- const child = spawn('gemini', ['-p'], {
356
- stdio: ['pipe', 'pipe', 'pipe'],
357
- cwd: options.workingDirectory || process.cwd(),
358
- env: process.env,
359
- });
360
- let stdout = '';
361
- let stderr = '';
362
- child.stdout.on('data', (data) => {
363
- const output = data.toString();
364
- stdout += output;
365
- this.appendTaskLog(taskId, 'STDOUT', output);
366
- });
367
- child.stderr.on('data', (data) => {
368
- const output = data.toString();
369
- stderr += output;
370
- this.appendTaskLog(taskId, 'STDERR', output);
371
- });
372
- child.on('close', (code) => {
373
- this.appendTaskLog(taskId, 'INFO', `Process closed with exit code: ${code}`);
374
- if (stderr) {
375
- this.logger.warn(`[${taskId}] Gemini stderr: ${stderr}`);
376
- }
377
- if (code !== 0) {
378
- this.appendTaskLog(taskId, 'ERROR', `Gemini CLI failed with exit code ${code}`);
379
- resolve({
380
- content: '',
381
- provider: 'gemini',
382
- command: 'gemini (stdin)',
383
- success: false,
384
- error: `Gemini CLI failed: ${stderr || `Exit code ${code}`}`,
385
- taskId
386
- });
387
- return;
388
- }
389
- this.appendTaskLog(taskId, 'INFO', `Gemini query completed successfully`);
390
- resolve({
391
- content: stdout.trim(),
392
- provider: 'gemini',
393
- command: 'gemini (stdin)',
394
- success: true,
395
- taskId
396
- });
397
- });
398
- child.on('error', (error) => {
399
- this.appendTaskLog(taskId, 'ERROR', `Process error: ${error.message}`);
400
- resolve({
401
- content: '',
402
- provider: 'gemini',
403
- command: 'gemini (stdin)',
404
- success: false,
405
- error: error.code === 'ENOENT' ?
406
- 'Gemini CLI is not installed.' :
407
- error.message,
408
- taskId
409
- });
410
- });
411
- const timeout = setTimeout(() => {
412
- this.appendTaskLog(taskId, 'ERROR', `Process timeout after ${options.timeout || this.timeoutConfig.geminiQuery}ms`);
413
- child.kill();
414
- resolve({
415
- content: '',
416
- provider: 'gemini',
417
- command: 'gemini (stdin)',
418
- success: false,
419
- error: 'Gemini CLI response timeout.',
420
- taskId
421
- });
422
- }, options.timeout || this.timeoutConfig.geminiQuery);
423
- child.on('close', () => {
424
- clearTimeout(timeout);
425
- });
426
- this.appendTaskLog(taskId, 'INFO', 'Sending prompt via stdin');
427
- child.stdin.write(prompt);
428
- child.stdin.end();
429
- });
430
- }
431
- catch (error) {
432
- this.logger.error(`Gemini execution failed: ${error.message}`, error.stack);
433
- return {
434
- content: '',
435
- provider: 'gemini',
436
- command: 'gemini (stdin)',
437
- success: false,
438
- error: error.message || 'Unknown error occurred',
439
- };
440
- }
441
- }
442
- async executeGeminiCLI(prompt, options = {}) {
443
- const taskId = options.taskId || `gemini_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
444
- try {
445
- const { spawn } = await Promise.resolve().then(() => __importStar(require('child_process')));
446
- this.logger.log(`Executing Gemini in autonomous mode with --yolo (length: ${prompt.length})`);
447
- this.createTaskLogFile(taskId, 'gemini', 'gemini --yolo');
448
- this.appendTaskLog(taskId, 'INFO', `Starting Gemini execution in autonomous mode`);
449
- this.appendTaskLog(taskId, 'INFO', `Prompt length: ${prompt.length} characters`);
450
- this.appendTaskLog(taskId, 'INFO', `Working directory: ${options.workingDirectory || process.cwd()}`);
451
- this.appendTaskLog(taskId, 'INFO', `Prompt content:\n${prompt}`);
452
- return new Promise((resolve, reject) => {
453
- const child = spawn('gemini', ['--yolo', prompt], {
454
- stdio: ['pipe', 'pipe', 'pipe'],
455
- cwd: options.workingDirectory || process.cwd(),
456
- env: process.env,
457
- });
458
- let stdout = '';
459
- let stderr = '';
460
- child.stdout.on('data', (data) => {
461
- const output = data.toString();
462
- stdout += output;
463
- this.appendTaskLog(taskId, 'STDOUT', output);
464
- this.logger.log(`[${taskId}] GEMINI EXECUTE STDOUT: ${output.slice(0, 100)}...`);
465
- });
466
- child.stderr.on('data', (data) => {
467
- const output = data.toString();
468
- stderr += output;
469
- this.appendTaskLog(taskId, 'STDERR', output);
470
- this.logger.warn(`[${taskId}] GEMINI EXECUTE STDERR: ${output}`);
471
- });
472
- child.on('close', (code) => {
473
- this.appendTaskLog(taskId, 'INFO', `Process closed with exit code: ${code}`);
474
- if (stderr) {
475
- this.logger.warn(`[${taskId}] Gemini execute stderr: ${stderr}`);
476
- }
477
- if (code !== 0) {
478
- this.appendTaskLog(taskId, 'ERROR', `Gemini CLI execution failed with exit code ${code}`);
479
- resolve({
480
- content: '',
481
- provider: 'gemini',
482
- command: 'gemini --yolo (execute)',
483
- success: false,
484
- error: `Gemini CLI execution failed: ${stderr || `Exit code ${code}`}`,
485
- taskId
486
- });
487
- return;
488
- }
489
- this.appendTaskLog(taskId, 'INFO', `Gemini execution completed successfully`);
490
- this.appendTaskLog(taskId, 'INFO', `Output length: ${stdout.trim().length} characters`);
491
- resolve({
492
- content: stdout.trim(),
493
- provider: 'gemini',
494
- command: 'gemini --yolo (execute)',
495
- success: true,
496
- taskId
497
- });
498
- });
499
- child.on('error', (error) => {
500
- this.appendTaskLog(taskId, 'ERROR', `Process error: ${error.message}`);
501
- resolve({
502
- content: '',
503
- provider: 'gemini',
504
- command: 'gemini --yolo (execute)',
505
- success: false,
506
- error: error.code === 'ENOENT' ?
507
- 'Gemini CLI is not installed.' :
508
- error.message,
509
- taskId
510
- });
511
- });
512
- const timeout = setTimeout(() => {
513
- this.appendTaskLog(taskId, 'ERROR', `Process timeout after ${options.timeout || this.timeoutConfig.geminiExecute}ms`);
514
- child.kill();
515
- resolve({
516
- content: '',
517
- provider: 'gemini',
518
- command: 'gemini --yolo (execute)',
519
- success: false,
520
- error: 'Gemini CLI execution timeout.',
521
- taskId
522
- });
523
- }, options.timeout || this.timeoutConfig.geminiExecute);
524
- child.on('close', () => {
525
- clearTimeout(timeout);
526
- });
527
- });
528
- }
529
- catch (error) {
530
- this.logger.error(`Gemini execution failed: ${error.message}`, error.stack);
531
- return {
532
- content: '',
533
- provider: 'gemini',
534
- command: 'gemini --yolo (execute)',
535
- success: false,
536
- error: error.message || 'Unknown error occurred',
537
- };
538
- }
539
- }
540
- async queryCopilotCLI(prompt, options = {}) {
541
- const { spawn } = await Promise.resolve().then(() => __importStar(require('child_process')));
542
- const baseArgs = ['-p', prompt, '--allow-all-tools'];
543
- if (options.additionalArgs) {
544
- baseArgs.push(...options.additionalArgs);
545
- }
546
- const command = `copilot ${baseArgs.map(arg => arg.includes(' ') ? `"${arg}"` : arg).join(' ')}`;
547
- try {
548
- this.logger.log(`Executing GitHub Copilot with spawn for security`);
549
- return new Promise((resolve, reject) => {
550
- const child = spawn('copilot', baseArgs, {
551
- stdio: ['pipe', 'pipe', 'pipe'],
552
- cwd: options.workingDirectory || process.cwd(),
553
- });
554
- let stdout = '';
555
- let stderr = '';
556
- child.stdout.on('data', (data) => {
557
- stdout += data.toString();
558
- });
559
- child.stderr.on('data', (data) => {
560
- stderr += data.toString();
561
- });
562
- const timeout = setTimeout(() => {
563
- child.kill('SIGTERM');
564
- reject(new Error('Process timeout'));
565
- }, options.timeout || this.timeoutConfig.copilotQuery);
566
- child.on('close', (code) => {
567
- clearTimeout(timeout);
568
- if (stderr) {
569
- this.logger.warn(`GitHub Copilot stderr: ${stderr}`);
570
- }
571
- if (code === 0) {
572
- resolve({
573
- content: stdout.trim(),
574
- provider: 'copilot',
575
- command,
576
- success: true,
577
- });
578
- }
579
- else {
580
- reject(new Error(`Process exited with code ${code}: ${stderr}`));
581
- }
582
- });
583
- child.on('error', (error) => {
584
- clearTimeout(timeout);
585
- reject(error);
586
- });
587
- });
588
- }
589
- catch (error) {
590
- const errorMessage = (0, error_utils_1.getErrorMessage)(error);
591
- const errorStack = (0, error_utils_1.getErrorStack)(error);
592
- this.logger.error(`GitHub Copilot execution failed: ${errorMessage}`, errorStack);
593
- return {
594
- content: '',
595
- provider: 'copilot',
596
- command,
597
- success: false,
598
- error: errorMessage,
599
- };
600
- }
601
- }
602
- async queryAI(prompt, provider = 'claude', options = {}) {
603
- return this.aiProviderService.queryAI(prompt, provider, options);
604
- }
605
- async executeAI(prompt, provider = 'claude', options = {}) {
606
- return this.aiProviderService.executeAI(prompt, provider, options);
607
- }
608
- async executeGemini(prompt, options = {}) {
609
- return this.executeAI(prompt, 'gemini', options);
610
- }
611
- async checkAvailableProviders() {
612
- return this.aiProviderService.checkAvailableProviders();
613
- }
614
- async validateCLIInstallation() {
615
- await this.aiProviderService.initializeProviders();
616
- const availableProviders = await this.aiProviderService.getAvailableProviders();
617
- return {
618
- claude: availableProviders.includes('claude'),
619
- gemini: availableProviders.includes('gemini'),
620
- copilot: availableProviders.includes('copilot'),
621
- };
622
- }
623
- };
624
- exports.AIService = AIService;
625
- exports.AIService = AIService = AIService_1 = __decorate([
626
- (0, common_1.Injectable)(),
627
- __metadata("design:paramtypes", [ai_provider_service_1.AIProviderService])
628
- ], AIService);
629
- //# sourceMappingURL=ai.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai.service.js","sourceRoot":"","sources":["../src/ai.service.ts"],"names":[],"mappings":"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"}