crewx 0.1.0 → 0.1.2

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 (195) hide show
  1. package/LICENSE +197 -9
  2. package/README.md +120 -28
  3. package/crewx.yaml +1273 -0
  4. package/dist/agent.types.d.ts +92 -0
  5. package/dist/agent.types.js +16 -0
  6. package/dist/agent.types.js.map +1 -0
  7. package/dist/ai-provider.service.d.ts +25 -0
  8. package/dist/ai-provider.service.js +138 -0
  9. package/dist/ai-provider.service.js.map +1 -0
  10. package/dist/ai.service.d.ts +50 -0
  11. package/dist/ai.service.js +625 -0
  12. package/dist/ai.service.js.map +1 -0
  13. package/dist/app.module.d.ts +5 -0
  14. package/dist/app.module.js +88 -0
  15. package/dist/app.module.js.map +1 -0
  16. package/dist/cli/chat.handler.d.ts +19 -0
  17. package/dist/cli/chat.handler.js +429 -0
  18. package/dist/cli/chat.handler.js.map +1 -0
  19. package/dist/cli/cli.handler.d.ts +4 -0
  20. package/dist/cli/cli.handler.js +93 -0
  21. package/dist/cli/cli.handler.js.map +1 -0
  22. package/dist/cli/doctor.handler.d.ts +36 -0
  23. package/dist/cli/doctor.handler.js +382 -0
  24. package/dist/cli/doctor.handler.js.map +1 -0
  25. package/dist/cli/execute.handler.d.ts +2 -0
  26. package/dist/cli/execute.handler.js +269 -0
  27. package/dist/cli/execute.handler.js.map +1 -0
  28. package/dist/cli/help.handler.d.ts +2 -0
  29. package/dist/cli/help.handler.js +10 -0
  30. package/dist/cli/help.handler.js.map +1 -0
  31. package/dist/cli/init.handler.d.ts +25 -0
  32. package/dist/cli/init.handler.js +355 -0
  33. package/dist/cli/init.handler.js.map +1 -0
  34. package/dist/cli/query.handler.d.ts +2 -0
  35. package/dist/cli/query.handler.js +351 -0
  36. package/dist/cli/query.handler.js.map +1 -0
  37. package/dist/cli/templates.handler.d.ts +2 -0
  38. package/dist/cli/templates.handler.js +100 -0
  39. package/dist/cli/templates.handler.js.map +1 -0
  40. package/dist/cli-options.d.ts +22 -0
  41. package/dist/cli-options.js +195 -0
  42. package/dist/cli-options.js.map +1 -0
  43. package/dist/config/timeout.config.d.ts +14 -0
  44. package/dist/config/timeout.config.js +34 -0
  45. package/dist/config/timeout.config.js.map +1 -0
  46. package/dist/constants.d.ts +4 -0
  47. package/dist/constants.js +8 -0
  48. package/dist/constants.js.map +1 -0
  49. package/dist/conversation/base-conversation-history.provider.d.ts +12 -0
  50. package/dist/conversation/base-conversation-history.provider.js +45 -0
  51. package/dist/conversation/base-conversation-history.provider.js.map +1 -0
  52. package/dist/conversation/cli-conversation-history.provider.d.ts +16 -0
  53. package/dist/conversation/cli-conversation-history.provider.js +104 -0
  54. package/dist/conversation/cli-conversation-history.provider.js.map +1 -0
  55. package/dist/conversation/conversation-config.d.ts +9 -0
  56. package/dist/conversation/conversation-config.js +25 -0
  57. package/dist/conversation/conversation-config.js.map +1 -0
  58. package/dist/conversation/conversation-history.interface.d.ts +25 -0
  59. package/dist/conversation/conversation-history.interface.js +3 -0
  60. package/dist/conversation/conversation-history.interface.js.map +1 -0
  61. package/dist/conversation/conversation-provider.factory.d.ts +10 -0
  62. package/dist/conversation/conversation-provider.factory.js +50 -0
  63. package/dist/conversation/conversation-provider.factory.js.map +1 -0
  64. package/dist/conversation/conversation-storage.service.d.ts +15 -0
  65. package/dist/conversation/conversation-storage.service.js +182 -0
  66. package/dist/conversation/conversation-storage.service.js.map +1 -0
  67. package/dist/conversation/index.d.ts +7 -0
  68. package/dist/conversation/index.js +24 -0
  69. package/dist/conversation/index.js.map +1 -0
  70. package/dist/conversation/slack-conversation-history.provider.d.ts +22 -0
  71. package/dist/conversation/slack-conversation-history.provider.js +239 -0
  72. package/dist/conversation/slack-conversation-history.provider.js.map +1 -0
  73. package/dist/crewx.tool.d.ts +421 -0
  74. package/dist/crewx.tool.js +1240 -0
  75. package/dist/crewx.tool.js.map +1 -0
  76. package/dist/knowledge/DocumentManager.d.ts +4 -0
  77. package/dist/knowledge/DocumentManager.js +119 -0
  78. package/dist/knowledge/DocumentManager.js.map +1 -0
  79. package/dist/main.d.ts +1 -0
  80. package/dist/main.js +230 -0
  81. package/dist/main.js.map +1 -0
  82. package/dist/mcp.controller.d.ts +8 -0
  83. package/dist/mcp.controller.js +60 -0
  84. package/dist/mcp.controller.js.map +1 -0
  85. package/dist/project.service.d.ts +44 -0
  86. package/dist/project.service.js +299 -0
  87. package/dist/project.service.js.map +1 -0
  88. package/dist/providers/ai-provider.interface.d.ts +30 -0
  89. package/dist/providers/ai-provider.interface.js +11 -0
  90. package/dist/providers/ai-provider.interface.js.map +1 -0
  91. package/dist/providers/base-ai.provider.d.ts +42 -0
  92. package/dist/providers/base-ai.provider.js +515 -0
  93. package/dist/providers/base-ai.provider.js.map +1 -0
  94. package/dist/providers/claude.provider.d.ts +25 -0
  95. package/dist/providers/claude.provider.js +376 -0
  96. package/dist/providers/claude.provider.js.map +1 -0
  97. package/dist/providers/copilot.provider.d.ts +25 -0
  98. package/dist/providers/copilot.provider.js +280 -0
  99. package/dist/providers/copilot.provider.js.map +1 -0
  100. package/dist/providers/gemini.provider.d.ts +22 -0
  101. package/dist/providers/gemini.provider.js +163 -0
  102. package/dist/providers/gemini.provider.js.map +1 -0
  103. package/dist/services/agent-loader.service.d.ts +23 -0
  104. package/dist/services/agent-loader.service.js +313 -0
  105. package/dist/services/agent-loader.service.js.map +1 -0
  106. package/dist/services/config-validator.service.d.ts +28 -0
  107. package/dist/services/config-validator.service.js +427 -0
  108. package/dist/services/config-validator.service.js.map +1 -0
  109. package/dist/services/config.service.d.ts +25 -0
  110. package/dist/services/config.service.js +102 -0
  111. package/dist/services/config.service.js.map +1 -0
  112. package/dist/services/context-enhancement.service.d.ts +13 -0
  113. package/dist/services/context-enhancement.service.js +169 -0
  114. package/dist/services/context-enhancement.service.js.map +1 -0
  115. package/dist/services/document-loader.service.d.ts +16 -0
  116. package/dist/services/document-loader.service.js +137 -0
  117. package/dist/services/document-loader.service.js.map +1 -0
  118. package/dist/services/help.service.d.ts +5 -0
  119. package/dist/services/help.service.js +112 -0
  120. package/dist/services/help.service.js.map +1 -0
  121. package/dist/services/intelligent-compression.service.d.ts +20 -0
  122. package/dist/services/intelligent-compression.service.js +179 -0
  123. package/dist/services/intelligent-compression.service.js.map +1 -0
  124. package/dist/services/parallel-processing.service.d.ts +108 -0
  125. package/dist/services/parallel-processing.service.js +266 -0
  126. package/dist/services/parallel-processing.service.js.map +1 -0
  127. package/dist/services/result-formatter.service.d.ts +27 -0
  128. package/dist/services/result-formatter.service.js +126 -0
  129. package/dist/services/result-formatter.service.js.map +1 -0
  130. package/dist/services/task-management.service.d.ts +63 -0
  131. package/dist/services/task-management.service.js +270 -0
  132. package/dist/services/task-management.service.js.map +1 -0
  133. package/dist/services/template.service.d.ts +36 -0
  134. package/dist/services/template.service.js +195 -0
  135. package/dist/services/template.service.js.map +1 -0
  136. package/dist/services/tool-call.service.d.ts +53 -0
  137. package/dist/services/tool-call.service.js +819 -0
  138. package/dist/services/tool-call.service.js.map +1 -0
  139. package/dist/slack/formatters/message.formatter.d.ts +25 -0
  140. package/dist/slack/formatters/message.formatter.js +246 -0
  141. package/dist/slack/formatters/message.formatter.js.map +1 -0
  142. package/dist/slack/slack-bot.d.ts +23 -0
  143. package/dist/slack/slack-bot.js +435 -0
  144. package/dist/slack/slack-bot.js.map +1 -0
  145. package/dist/stderr.logger.d.ts +8 -0
  146. package/dist/stderr.logger.js +26 -0
  147. package/dist/stderr.logger.js.map +1 -0
  148. package/dist/tsconfig.tsbuildinfo +1 -0
  149. package/dist/utils/config-utils.d.ts +15 -0
  150. package/dist/utils/config-utils.js +69 -0
  151. package/dist/utils/config-utils.js.map +1 -0
  152. package/dist/utils/error-utils.d.ts +3 -0
  153. package/dist/utils/error-utils.js +27 -0
  154. package/dist/utils/error-utils.js.map +1 -0
  155. package/dist/utils/math-utils.d.ts +3 -0
  156. package/dist/utils/math-utils.js +10 -0
  157. package/dist/utils/math-utils.js.map +1 -0
  158. package/dist/utils/mcp-installer.d.ts +20 -0
  159. package/dist/utils/mcp-installer.js +199 -0
  160. package/dist/utils/mcp-installer.js.map +1 -0
  161. package/dist/utils/mention-parser.d.ts +18 -0
  162. package/dist/utils/mention-parser.js +136 -0
  163. package/dist/utils/mention-parser.js.map +1 -0
  164. package/dist/utils/simple-security.d.ts +3 -0
  165. package/dist/utils/simple-security.js +20 -0
  166. package/dist/utils/simple-security.js.map +1 -0
  167. package/dist/utils/stdin-utils.d.ts +2 -0
  168. package/dist/utils/stdin-utils.js +87 -0
  169. package/dist/utils/stdin-utils.js.map +1 -0
  170. package/dist/utils/string-utils.d.ts +1 -0
  171. package/dist/utils/string-utils.js +10 -0
  172. package/dist/utils/string-utils.js.map +1 -0
  173. package/dist/utils/template-processor.d.ts +32 -0
  174. package/dist/utils/template-processor.js +188 -0
  175. package/dist/utils/template-processor.js.map +1 -0
  176. package/docs/agent-configuration.md +373 -0
  177. package/docs/agent-registry-strategy.md +348 -0
  178. package/docs/branding-decision-crewx.md +395 -0
  179. package/docs/claude-code-docker-guide.md +264 -0
  180. package/docs/cli-guide.md +295 -0
  181. package/docs/development.md +595 -0
  182. package/docs/guides/agent-best-practices.md +97 -0
  183. package/docs/guides/bug-management.md +600 -0
  184. package/docs/guides/git-bug-reference.md +366 -0
  185. package/docs/mcp-integration.md +187 -0
  186. package/docs/process/development-workflow.md +84 -0
  187. package/docs/roadmap.md +528 -0
  188. package/docs/rules/branch-protection.md +40 -0
  189. package/docs/standards/rc-versioning.md +60 -0
  190. package/docs/standards/report-structure.md +67 -0
  191. package/docs/templates.md +517 -0
  192. package/docs/tools.md +583 -0
  193. package/docs/troubleshooting.md +585 -0
  194. package/package.json +106 -21
  195. package/bin/crewx.js +0 -20
@@ -0,0 +1,515 @@
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.BaseAIProvider = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const child_process_1 = require("child_process");
15
+ const fs_1 = require("fs");
16
+ const path_1 = require("path");
17
+ const timeout_config_1 = require("../config/timeout.config");
18
+ let BaseAIProvider = class BaseAIProvider {
19
+ constructor(loggerContext) {
20
+ this.logsDir = (0, path_1.join)(process.cwd(), '.crewx', 'logs');
21
+ this.cachedPath = null;
22
+ this.timeoutConfig = (0, timeout_config_1.getTimeoutConfig)();
23
+ this.logger = new common_1.Logger(loggerContext);
24
+ try {
25
+ (0, fs_1.mkdirSync)(this.logsDir, { recursive: true });
26
+ }
27
+ catch (error) {
28
+ }
29
+ }
30
+ getPromptInArgs() {
31
+ return false;
32
+ }
33
+ getDefaultQueryTimeout() {
34
+ if (this.name === 'claude')
35
+ return this.timeoutConfig.claudeQuery;
36
+ if (this.name === 'gemini')
37
+ return this.timeoutConfig.geminiQuery;
38
+ if (this.name === 'copilot')
39
+ return this.timeoutConfig.copilotQuery;
40
+ return 600000;
41
+ }
42
+ getDefaultExecuteTimeout() {
43
+ if (this.name === 'claude')
44
+ return this.timeoutConfig.claudeExecute;
45
+ if (this.name === 'gemini')
46
+ return this.timeoutConfig.geminiExecute;
47
+ if (this.name === 'copilot')
48
+ return this.timeoutConfig.copilotExecute;
49
+ return 1200000;
50
+ }
51
+ setToolCallService(toolCallService) {
52
+ this.toolCallService = toolCallService;
53
+ }
54
+ parseToolUse(content) {
55
+ const xmlMatch = content.match(/<crewcode_tool_call>\s*([\s\S]*?)\s*<\/crewcode_tool_call>/);
56
+ if (xmlMatch && xmlMatch[1]) {
57
+ try {
58
+ const jsonContent = xmlMatch[1].trim();
59
+ const parsed = JSON.parse(jsonContent);
60
+ if (parsed.type === 'tool_use' && parsed.name && parsed.input !== undefined) {
61
+ this.logger.log(`Tool use detected from XML: ${parsed.name}`);
62
+ return {
63
+ isToolUse: true,
64
+ toolName: parsed.name,
65
+ toolInput: parsed.input,
66
+ };
67
+ }
68
+ }
69
+ catch (e) {
70
+ }
71
+ }
72
+ try {
73
+ const parsed = JSON.parse(content);
74
+ if (parsed.type === 'tool_use' && parsed.name && parsed.input !== undefined) {
75
+ this.logger.log(`Tool use detected from direct JSON: ${parsed.name}`);
76
+ return {
77
+ isToolUse: true,
78
+ toolName: parsed.name,
79
+ toolInput: parsed.input,
80
+ };
81
+ }
82
+ if (parsed.content && Array.isArray(parsed.content)) {
83
+ const toolUse = parsed.content.find((c) => c.type === 'tool_use');
84
+ if (toolUse && toolUse.name && toolUse.input !== undefined) {
85
+ this.logger.log(`Tool use detected from content array: ${toolUse.name}`);
86
+ return {
87
+ isToolUse: true,
88
+ toolName: toolUse.name,
89
+ toolInput: toolUse.input,
90
+ };
91
+ }
92
+ }
93
+ const providerSpecific = this.parseToolUseProviderSpecific(parsed);
94
+ if (providerSpecific.isToolUse) {
95
+ return providerSpecific;
96
+ }
97
+ }
98
+ catch (e) {
99
+ }
100
+ const codeBlockMatch = content.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
101
+ if (codeBlockMatch && codeBlockMatch[1]) {
102
+ try {
103
+ const jsonContent = codeBlockMatch[1].trim();
104
+ const parsed = JSON.parse(jsonContent);
105
+ if (parsed.type === 'tool_use' && parsed.name && parsed.input !== undefined) {
106
+ this.logger.log(`Tool use detected from code block: ${parsed.name}`);
107
+ return {
108
+ isToolUse: true,
109
+ toolName: parsed.name,
110
+ toolInput: parsed.input,
111
+ };
112
+ }
113
+ }
114
+ catch (e) {
115
+ }
116
+ }
117
+ const jsonObjectPattern = /\{[\s\S]*?"type"\s*:\s*"tool_use"[\s\S]*?\}/;
118
+ const jsonMatch = content.match(jsonObjectPattern);
119
+ if (jsonMatch) {
120
+ try {
121
+ const parsed = JSON.parse(jsonMatch[0]);
122
+ if (parsed.type === 'tool_use' && parsed.name && parsed.input !== undefined) {
123
+ this.logger.log(`Tool use detected from plain text JSON: ${parsed.name}`);
124
+ return {
125
+ isToolUse: true,
126
+ toolName: parsed.name,
127
+ toolInput: parsed.input,
128
+ };
129
+ }
130
+ }
131
+ catch (e) {
132
+ }
133
+ }
134
+ return { isToolUse: false };
135
+ }
136
+ parseToolUseProviderSpecific(parsed) {
137
+ return { isToolUse: false };
138
+ }
139
+ parseProviderError(stderr, stdout) {
140
+ if (stderr && (stderr.toLowerCase().includes('unknown option') ||
141
+ stderr.toLowerCase().includes('invalid option'))) {
142
+ return {
143
+ error: true,
144
+ message: stderr.split('\n')[0]?.trim() || 'Invalid CLI option',
145
+ };
146
+ }
147
+ if (stderr && !stdout) {
148
+ return { error: true, message: stderr };
149
+ }
150
+ return { error: false, message: '' };
151
+ }
152
+ async getToolPath() {
153
+ if (this.cachedPath !== null) {
154
+ return this.cachedPath;
155
+ }
156
+ try {
157
+ const cliCommand = this.getCliCommand();
158
+ const isWindows = process.platform === 'win32';
159
+ const command = isWindows ? `where ${cliCommand}` : `which ${cliCommand}`;
160
+ const path = (0, child_process_1.execSync)(command, { encoding: 'utf-8' }).trim();
161
+ let finalPath;
162
+ if (isWindows) {
163
+ const paths = path.split('\n').map(p => p.trim()).filter(p => p);
164
+ const pathWithExt = paths.find(p => /\.(cmd|exe|bat|ps1)$/i.test(p));
165
+ finalPath = pathWithExt || paths[0] || '';
166
+ }
167
+ else {
168
+ finalPath = path;
169
+ }
170
+ this.logger.log(`✅ Found ${this.name} CLI at: ${finalPath}`);
171
+ this.cachedPath = finalPath;
172
+ return finalPath;
173
+ }
174
+ catch (error) {
175
+ this.logger.error(`❌ ${this.name} not found in PATH: ${error.message}`);
176
+ this.cachedPath = '';
177
+ return null;
178
+ }
179
+ }
180
+ wrapUserQueryWithSecurity(userQuery, securityKey) {
181
+ return `
182
+ <user_query key="${securityKey}">
183
+ ${userQuery}
184
+ </user_query>`;
185
+ }
186
+ extractUserQuery(wrappedQuery, securityKey) {
187
+ const regex = new RegExp(`<user_query key="${securityKey}">\\s*([\\s\\S]*?)\\s*</user_query>`, 'm');
188
+ const match = wrappedQuery.match(regex);
189
+ return match && match[1] ? match[1].trim() : wrappedQuery;
190
+ }
191
+ async isAvailable() {
192
+ const path = await this.getToolPath();
193
+ return path !== null && path !== '';
194
+ }
195
+ createTaskLogFile(taskId, provider, command) {
196
+ const logFile = (0, path_1.join)(this.logsDir, `${taskId}.log`);
197
+ const timestamp = new Date().toLocaleString();
198
+ const header = `=== TASK LOG: ${taskId} ===
199
+ Provider: ${provider}
200
+ Command: ${command}
201
+ Started: ${timestamp}
202
+
203
+ `;
204
+ (0, fs_1.writeFileSync)(logFile, header, 'utf8');
205
+ return logFile;
206
+ }
207
+ appendTaskLog(taskId, level, message) {
208
+ try {
209
+ const logFile = (0, path_1.join)(this.logsDir, `${taskId}.log`);
210
+ const timestamp = new Date().toLocaleString();
211
+ const logEntry = `[${timestamp}] ${level}: ${message}\n`;
212
+ (0, fs_1.appendFileSync)(logFile, logEntry, 'utf8');
213
+ }
214
+ catch (error) {
215
+ this.logger.error(`Failed to append to task log ${taskId}:`, error);
216
+ }
217
+ }
218
+ async query(prompt, options = {}) {
219
+ const taskId = options.taskId || `${this.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
220
+ const executablePath = this.getCliCommand();
221
+ try {
222
+ let args = [
223
+ ...(options.additionalArgs || []),
224
+ ...this.getDefaultArgs(),
225
+ ];
226
+ if (options.model) {
227
+ args.unshift(`--model=${options.model}`);
228
+ }
229
+ const promptInArgs = this.getPromptInArgs();
230
+ if (promptInArgs) {
231
+ args.push(prompt);
232
+ }
233
+ const command = promptInArgs
234
+ ? `${this.getCliCommand()} ${args.slice(0, -1).join(' ')} -p "<prompt>"`
235
+ : `${this.getCliCommand()} ${args.join(' ')}`;
236
+ this.createTaskLogFile(taskId, this.name, command);
237
+ this.appendTaskLog(taskId, 'INFO', `Starting ${this.name} query mode`);
238
+ this.appendTaskLog(taskId, 'INFO', `Prompt length: ${prompt.length} characters`);
239
+ this.appendTaskLog(taskId, 'INFO', `Prompt content:\n${prompt}`);
240
+ this.logger.log(`Executing ${this.name} with prompt (length: ${prompt.length})`);
241
+ return new Promise((resolve) => {
242
+ const env = { ...process.env };
243
+ if (process.platform === 'win32') {
244
+ env.PYTHONIOENCODING = 'utf-8';
245
+ env.LANG = 'en_US.UTF-8';
246
+ }
247
+ let executable = executablePath;
248
+ let spawnArgs = args;
249
+ let useShell = false;
250
+ if (process.platform === 'win32' && !executablePath.match(/\.(cmd|bat|ps1)$/i)) {
251
+ useShell = true;
252
+ }
253
+ const child = (0, child_process_1.spawn)(executable, spawnArgs, {
254
+ stdio: ['pipe', 'pipe', 'pipe'],
255
+ cwd: options.workingDirectory || process.cwd(),
256
+ env,
257
+ shell: useShell,
258
+ });
259
+ let stdout = '';
260
+ let stderr = '';
261
+ let exitCode = null;
262
+ child.stdout.on('data', (data) => {
263
+ const output = data.toString();
264
+ stdout += output;
265
+ this.appendTaskLog(taskId, 'STDOUT', output);
266
+ });
267
+ child.stderr.on('data', (data) => {
268
+ const output = data.toString();
269
+ stderr += output;
270
+ this.appendTaskLog(taskId, 'STDERR', output);
271
+ });
272
+ child.on('close', (code) => {
273
+ exitCode = code;
274
+ this.appendTaskLog(taskId, 'INFO', `Process closed with exit code: ${exitCode}`);
275
+ if (stderr) {
276
+ this.logger.warn(`[${taskId}] ${this.name} stderr: ${stderr}`);
277
+ }
278
+ if (exitCode === 0 && stdout && stdout.trim().length > 0) {
279
+ this.appendTaskLog(taskId, 'INFO', `${this.name} query completed successfully`);
280
+ resolve({
281
+ content: stdout.trim(),
282
+ provider: this.name,
283
+ command,
284
+ success: true,
285
+ taskId,
286
+ });
287
+ return;
288
+ }
289
+ const providerError = this.parseProviderError(stderr, stdout);
290
+ if (exitCode !== 0 || providerError.error) {
291
+ const errorMessage = providerError.message || stderr || `Exit code ${exitCode}`;
292
+ this.appendTaskLog(taskId, 'ERROR', `${this.name} CLI failed: ${errorMessage}`);
293
+ resolve({
294
+ content: '',
295
+ provider: this.name,
296
+ command,
297
+ success: false,
298
+ error: `${this.name} CLI failed: ${errorMessage}`,
299
+ taskId,
300
+ });
301
+ return;
302
+ }
303
+ this.appendTaskLog(taskId, 'INFO', `${this.name} query completed successfully`);
304
+ let parsedContent = stdout.trim();
305
+ try {
306
+ const jsonOutput = JSON.parse(stdout);
307
+ parsedContent = stdout.trim();
308
+ this.appendTaskLog(taskId, 'INFO', 'JSON output detected and validated');
309
+ }
310
+ catch (jsonError) {
311
+ this.appendTaskLog(taskId, 'INFO', 'Plain text output (not JSON)');
312
+ }
313
+ resolve({
314
+ content: parsedContent,
315
+ provider: this.name,
316
+ command,
317
+ success: true,
318
+ taskId,
319
+ });
320
+ });
321
+ child.on('error', (error) => {
322
+ this.appendTaskLog(taskId, 'ERROR', `Process error: ${error.message}`);
323
+ resolve({
324
+ content: '',
325
+ provider: this.name,
326
+ command,
327
+ success: false,
328
+ error: error.code === 'ENOENT' ? this.getNotInstalledMessage() : error.message,
329
+ taskId,
330
+ });
331
+ });
332
+ if (!this.getPromptInArgs()) {
333
+ child.stdin.write(prompt);
334
+ child.stdin.end();
335
+ }
336
+ else {
337
+ child.stdin.end();
338
+ }
339
+ const timeout = setTimeout(() => {
340
+ child.kill();
341
+ resolve({
342
+ content: '',
343
+ provider: this.name,
344
+ command,
345
+ success: false,
346
+ error: `${this.name} CLI timeout`,
347
+ taskId,
348
+ });
349
+ }, options.timeout || this.getDefaultQueryTimeout());
350
+ child.on('close', () => clearTimeout(timeout));
351
+ });
352
+ }
353
+ catch (error) {
354
+ this.logger.error(`${this.name} execution failed: ${error.message}`, error.stack);
355
+ return {
356
+ content: '',
357
+ provider: this.name,
358
+ command: `${this.getCliCommand()} (error)`,
359
+ success: false,
360
+ error: error.message || 'Unknown error occurred',
361
+ taskId,
362
+ };
363
+ }
364
+ }
365
+ async execute(prompt, options = {}) {
366
+ const taskId = options.taskId || `${this.name}_execute_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
367
+ const executablePath = this.getCliCommand();
368
+ try {
369
+ let args = [
370
+ ...(options.additionalArgs || []),
371
+ ...this.getExecuteArgs(),
372
+ ];
373
+ if (options.model) {
374
+ args.unshift(`--model=${options.model}`);
375
+ }
376
+ if (this.getPromptInArgs()) {
377
+ args.push(prompt);
378
+ }
379
+ const command = `${this.getCliCommand()} ${args.join(' ')}`;
380
+ this.createTaskLogFile(taskId, this.name, command);
381
+ this.appendTaskLog(taskId, 'INFO', `Additional Args: ${JSON.stringify(options.additionalArgs || [])}`);
382
+ this.appendTaskLog(taskId, 'INFO', `Execute Args: ${JSON.stringify(this.getExecuteArgs())}`);
383
+ this.appendTaskLog(taskId, 'INFO', `Final Args: ${JSON.stringify(args)}`);
384
+ this.appendTaskLog(taskId, 'INFO', `Starting ${this.name} execute mode`);
385
+ this.appendTaskLog(taskId, 'INFO', `Prompt length: ${prompt.length} characters`);
386
+ const promptPreview = prompt.length > 500 ?
387
+ prompt.substring(0, 500) + '...[truncated]' :
388
+ prompt;
389
+ this.appendTaskLog(taskId, 'INFO', `Prompt content:\n${promptPreview}`);
390
+ this.logger.log(`Executing ${this.name} in execute mode (length: ${prompt.length})`);
391
+ return new Promise((resolve) => {
392
+ const env = { ...process.env };
393
+ if (process.platform === 'win32') {
394
+ env.PYTHONIOENCODING = 'utf-8';
395
+ env.LANG = 'en_US.UTF-8';
396
+ }
397
+ const child = (0, child_process_1.spawn)(executablePath, args, {
398
+ stdio: ['pipe', 'pipe', 'pipe'],
399
+ cwd: options.workingDirectory || process.cwd(),
400
+ env,
401
+ shell: true,
402
+ });
403
+ let stdout = '';
404
+ let stderr = '';
405
+ let exitCode = null;
406
+ child.stdout.on('data', (data) => {
407
+ const output = data.toString();
408
+ stdout += output;
409
+ this.appendTaskLog(taskId, 'STDOUT', output);
410
+ });
411
+ child.stderr.on('data', (data) => {
412
+ const output = data.toString();
413
+ stderr += output;
414
+ this.appendTaskLog(taskId, 'STDERR', output);
415
+ });
416
+ child.on('close', (code) => {
417
+ exitCode = code;
418
+ this.appendTaskLog(taskId, 'INFO', `Process closed with exit code: ${exitCode}`);
419
+ if (stderr) {
420
+ this.logger.warn(`[${taskId}] ${this.name} stderr: ${stderr}`);
421
+ }
422
+ if (exitCode === 0 && stdout && stdout.trim().length > 0) {
423
+ this.appendTaskLog(taskId, 'INFO', `${this.name} execution completed successfully`);
424
+ resolve({
425
+ content: stdout.trim(),
426
+ provider: this.name,
427
+ command,
428
+ success: true,
429
+ taskId,
430
+ });
431
+ return;
432
+ }
433
+ const providerError = this.parseProviderError(stderr, stdout);
434
+ if (exitCode !== 0 || providerError.error) {
435
+ const errorMessage = providerError.message || stderr || `Exit code ${exitCode}`;
436
+ this.appendTaskLog(taskId, 'ERROR', `${this.name} CLI failed: ${errorMessage}`);
437
+ resolve({
438
+ content: '',
439
+ provider: this.name,
440
+ command,
441
+ success: false,
442
+ error: `${this.name} CLI execute failed: ${errorMessage}`,
443
+ taskId,
444
+ });
445
+ return;
446
+ }
447
+ this.appendTaskLog(taskId, 'INFO', `${this.name} execute completed successfully`);
448
+ let parsedContent = stdout.trim();
449
+ try {
450
+ const jsonOutput = JSON.parse(stdout);
451
+ parsedContent = stdout.trim();
452
+ this.appendTaskLog(taskId, 'INFO', 'JSON output detected and validated');
453
+ }
454
+ catch (jsonError) {
455
+ this.appendTaskLog(taskId, 'INFO', 'Plain text output (not JSON)');
456
+ }
457
+ resolve({
458
+ content: parsedContent,
459
+ provider: this.name,
460
+ command,
461
+ success: true,
462
+ taskId,
463
+ });
464
+ });
465
+ child.on('error', (error) => {
466
+ this.appendTaskLog(taskId, 'ERROR', `Process error: ${error.message}`);
467
+ resolve({
468
+ content: '',
469
+ provider: this.name,
470
+ command,
471
+ success: false,
472
+ error: error.code === 'ENOENT' ? this.getNotInstalledMessage() : error.message,
473
+ taskId,
474
+ });
475
+ });
476
+ if (!this.getPromptInArgs()) {
477
+ child.stdin.write(prompt);
478
+ child.stdin.end();
479
+ }
480
+ else {
481
+ child.stdin.end();
482
+ }
483
+ const timeout = setTimeout(() => {
484
+ child.kill();
485
+ resolve({
486
+ content: '',
487
+ provider: this.name,
488
+ command,
489
+ success: false,
490
+ error: `${this.name} CLI execute timeout`,
491
+ taskId,
492
+ });
493
+ }, options.timeout || this.getDefaultExecuteTimeout());
494
+ child.on('close', () => clearTimeout(timeout));
495
+ });
496
+ }
497
+ catch (error) {
498
+ this.logger.error(`${this.name} execute failed: ${error.message}`, error.stack);
499
+ return {
500
+ content: '',
501
+ provider: this.name,
502
+ command: `${this.getCliCommand()} execute (error)`,
503
+ success: false,
504
+ error: error.message || 'Unknown error occurred',
505
+ taskId,
506
+ };
507
+ }
508
+ }
509
+ };
510
+ exports.BaseAIProvider = BaseAIProvider;
511
+ exports.BaseAIProvider = BaseAIProvider = __decorate([
512
+ (0, common_1.Injectable)(),
513
+ __metadata("design:paramtypes", [String])
514
+ ], BaseAIProvider);
515
+ //# sourceMappingURL=base-ai.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ai.provider.js","sourceRoot":"","sources":["../../src/providers/base-ai.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { BaseAIProvider } from './base-ai.provider';
2
+ import { AIQueryOptions, AIResponse } from './ai-provider.interface';
3
+ import { ToolCallService } from '../services/tool-call.service';
4
+ export declare class ClaudeProvider extends BaseAIProvider {
5
+ readonly name: "claude";
6
+ constructor(toolCallService?: ToolCallService);
7
+ protected getCliCommand(): string;
8
+ protected getDefaultArgs(): string[];
9
+ protected getExecuteArgs(): string[];
10
+ protected getNotInstalledMessage(): string;
11
+ execute(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
12
+ parseProviderError(stderr: string, stdout: string): {
13
+ error: boolean;
14
+ message: string;
15
+ };
16
+ private buildPromptWithTools;
17
+ private buildFollowUpPrompt;
18
+ private parseJsonlResponse;
19
+ protected parseToolUse(content: string): {
20
+ isToolUse: boolean;
21
+ toolName?: string;
22
+ toolInput?: any;
23
+ };
24
+ queryWithTools(prompt: string, options?: AIQueryOptions, maxTurns?: number): Promise<AIResponse>;
25
+ }