crewx 0.3.0 → 0.4.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,25 +0,0 @@
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: "cli/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
- }
@@ -1,362 +0,0 @@
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.ClaudeProvider = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const base_ai_provider_1 = require("./base-ai.provider");
15
- const ai_provider_interface_1 = require("./ai-provider.interface");
16
- const tool_call_service_1 = require("../services/tool-call.service");
17
- let ClaudeProvider = class ClaudeProvider extends base_ai_provider_1.BaseAIProvider {
18
- constructor(toolCallService) {
19
- super('ClaudeProvider');
20
- this.name = ai_provider_interface_1.BuiltInProviders.CLAUDE;
21
- if (toolCallService) {
22
- this.setToolCallService(toolCallService);
23
- }
24
- }
25
- getCliCommand() {
26
- return 'claude';
27
- }
28
- getDefaultArgs() {
29
- return ['--verbose', '-p'];
30
- }
31
- getExecuteArgs() {
32
- return ['--verbose', '-p'];
33
- }
34
- getNotInstalledMessage() {
35
- return 'Claude CLI is not installed. Please install it from https://claude.ai/download.';
36
- }
37
- async execute(prompt, options = {}) {
38
- if (this.toolCallService) {
39
- this.logger.log('🔧 ClaudeProvider: Using queryWithTools in execute mode');
40
- return this.queryWithTools(prompt, options);
41
- }
42
- this.logger.warn('⚠️ ClaudeProvider: ToolCallService not available, falling back to base execute');
43
- return super.execute(prompt, options);
44
- }
45
- parseProviderError(stderr, stdout) {
46
- const combinedOutput = stderr || stdout;
47
- if (combinedOutput.includes('Session limit reached')) {
48
- const resetMatch = combinedOutput.match(/resets (\d+(?::\d+)?(?:am|pm))/i);
49
- const resetTime = resetMatch ? resetMatch[1] : 'later today';
50
- return {
51
- error: true,
52
- message: `Claude Pro session limit reached. Your limit will reset at ${resetTime}. Please try again after the reset or use another AI agent (Gemini or Copilot) in the meantime.`,
53
- };
54
- }
55
- if (stderr && (stderr.includes('authentication required') || stderr.includes('Please run `claude login`'))) {
56
- return {
57
- error: true,
58
- message: 'Claude CLI authentication required. Please run `claude login` to authenticate.',
59
- };
60
- }
61
- if (stdout && stdout.trim().length > 0) {
62
- return { error: false, message: '' };
63
- }
64
- if (stderr && stderr.trim().length > 0) {
65
- const errorIndicators = [
66
- /^Error:/im,
67
- /^error:/im,
68
- /^Failed:/im,
69
- /^Unable to/im,
70
- /unknown option/i,
71
- /invalid option/i,
72
- /command not found/i,
73
- /no such file/i,
74
- /permission denied/i,
75
- /ECONNREFUSED/,
76
- /ETIMEDOUT/,
77
- /ENOTFOUND/,
78
- /EHOSTUNREACH/,
79
- /\bconnection refused\b/i,
80
- /\bnetwork error\b/i,
81
- /\brequest failed\b/i,
82
- ];
83
- const debugLogPatterns = [
84
- /follow-redirects options/,
85
- /spawn-rx/,
86
- /\[Function:/,
87
- /connectionListener/,
88
- /maxRedirects:/,
89
- /\{[\s\S]*protocol:.*\}/,
90
- ];
91
- const isDebugLog = debugLogPatterns.some(pattern => pattern.test(stderr));
92
- if (isDebugLog) {
93
- return { error: false, message: '' };
94
- }
95
- const hasError = errorIndicators.some(pattern => pattern.test(stderr));
96
- if (hasError) {
97
- const lines = stderr.split('\n');
98
- const firstLine = lines[0]?.trim() || stderr.trim();
99
- return { error: true, message: firstLine };
100
- }
101
- }
102
- return { error: false, message: '' };
103
- }
104
- buildPromptWithTools(prompt, tools) {
105
- if (!tools || tools.length === 0) {
106
- return prompt;
107
- }
108
- return prompt;
109
- }
110
- buildFollowUpPrompt(toolName, toolInput, toolResult) {
111
- const resultData = toolResult.success && toolResult.data ? toolResult.data : toolResult;
112
- return `The ${toolName} tool has been executed successfully.
113
-
114
- <tool_result>
115
- ${JSON.stringify(resultData, null, 2)}
116
- </tool_result>
117
-
118
- Based on the tool execution result above, please provide a clear, detailed, and user-friendly response to the user's original request. Present the information in an organized and easy-to-read format.`;
119
- }
120
- parseJsonlResponse(content) {
121
- const lines = content.split('\n').filter(line => line.trim());
122
- for (let i = lines.length - 1; i >= 0; i--) {
123
- try {
124
- const line = lines[i];
125
- if (!line)
126
- continue;
127
- const parsed = JSON.parse(line);
128
- if (parsed.type === 'result' && parsed.result) {
129
- this.logger.log('✅ Extracted final result from JSONL');
130
- return parsed.result;
131
- }
132
- }
133
- catch (e) {
134
- }
135
- }
136
- this.logger.warn('⚠️ Could not parse JSONL, returning original content');
137
- return content;
138
- }
139
- parseToolUse(content) {
140
- const xmlMatch = content.match(/<crew(?:code|x)_tool_call>\s*([\s\S]*?)\s*<\/crew(?:code|x)_tool_call>/);
141
- if (xmlMatch && xmlMatch[1]) {
142
- try {
143
- const jsonContent = xmlMatch[1].trim();
144
- const parsed = JSON.parse(jsonContent);
145
- if (parsed.type === 'tool_use' && parsed.name && parsed.input) {
146
- this.logger.log(`Tool use detected from XML: ${parsed.name} with input ${JSON.stringify(parsed.input)}`);
147
- return {
148
- isToolUse: true,
149
- toolName: parsed.name,
150
- toolInput: parsed.input,
151
- };
152
- }
153
- }
154
- catch (e) {
155
- }
156
- }
157
- const lines = content.split('\n').filter(line => line.trim());
158
- for (const line of lines) {
159
- try {
160
- const parsed = JSON.parse(line);
161
- if (parsed.type === 'result' && parsed.result) {
162
- const xmlMatch = parsed.result.match(/<crew(?:code|x)_tool_call>\s*([\s\S]*?)\s*<\/crew(?:code|x)_tool_call>/);
163
- if (xmlMatch && xmlMatch[1]) {
164
- const toolCallJson = JSON.parse(xmlMatch[1].trim());
165
- if (toolCallJson.type === 'tool_use' && toolCallJson.name && toolCallJson.input) {
166
- this.logger.log(`Tool use detected from result XML: ${toolCallJson.name}`);
167
- return {
168
- isToolUse: true,
169
- toolName: toolCallJson.name,
170
- toolInput: toolCallJson.input,
171
- };
172
- }
173
- }
174
- }
175
- if (parsed.type === 'assistant' && parsed.message?.content) {
176
- const content = parsed.message.content;
177
- if (Array.isArray(content)) {
178
- for (const item of content) {
179
- if (item.type === 'text' && item.text) {
180
- const xmlMatch = item.text.match(/<crew(?:code|x)_tool_call>\s*([\s\S]*?)\s*<\/crew(?:code|x)_tool_call>/);
181
- if (xmlMatch && xmlMatch[1]) {
182
- const toolCallJson = JSON.parse(xmlMatch[1].trim());
183
- if (toolCallJson.type === 'tool_use' && toolCallJson.name && toolCallJson.input) {
184
- this.logger.log(`Tool use detected from assistant message: ${toolCallJson.name}`);
185
- return {
186
- isToolUse: true,
187
- toolName: toolCallJson.name,
188
- toolInput: toolCallJson.input,
189
- };
190
- }
191
- }
192
- const jsonBlockMatch = item.text.match(/```json\s*([\s\S]*?)\s*```/);
193
- if (jsonBlockMatch && jsonBlockMatch[1]) {
194
- try {
195
- const toolCallJson = JSON.parse(jsonBlockMatch[1].trim());
196
- if (toolCallJson.type === 'tool_use' && toolCallJson.name && toolCallJson.input) {
197
- this.logger.log(`Tool use detected from JSON code block: ${toolCallJson.name}`);
198
- return {
199
- isToolUse: true,
200
- toolName: toolCallJson.name,
201
- toolInput: toolCallJson.input,
202
- };
203
- }
204
- }
205
- catch (e) {
206
- }
207
- }
208
- }
209
- }
210
- }
211
- }
212
- if (parsed.type === 'result' && parsed.result) {
213
- const jsonBlockMatch = parsed.result.match(/```json\s*([\s\S]*?)\s*```/);
214
- if (jsonBlockMatch && jsonBlockMatch[1]) {
215
- try {
216
- const toolCallJson = JSON.parse(jsonBlockMatch[1].trim());
217
- if (toolCallJson.type === 'tool_use' && toolCallJson.name && toolCallJson.input) {
218
- this.logger.log(`Tool use detected from result JSON block: ${toolCallJson.name}`);
219
- return {
220
- isToolUse: true,
221
- toolName: toolCallJson.name,
222
- toolInput: toolCallJson.input,
223
- };
224
- }
225
- }
226
- catch (e) {
227
- }
228
- }
229
- }
230
- }
231
- catch (e) {
232
- }
233
- }
234
- const jsonObjectPattern = /\{[\s\S]*?"type"\s*:\s*"tool_use"[\s\S]*?\}/g;
235
- const jsonMatches = content.match(jsonObjectPattern);
236
- if (jsonMatches) {
237
- for (const jsonMatch of jsonMatches) {
238
- try {
239
- const parsed = JSON.parse(jsonMatch);
240
- if (parsed.type === 'tool_use' && parsed.name && parsed.input !== undefined) {
241
- this.logger.log(`Tool use detected from plain text JSON: ${parsed.name}`);
242
- return {
243
- isToolUse: true,
244
- toolName: parsed.name,
245
- toolInput: parsed.input,
246
- };
247
- }
248
- }
249
- catch (e) {
250
- }
251
- }
252
- }
253
- try {
254
- const parsed = JSON.parse(content);
255
- if (parsed.type === 'tool_use' && parsed.name && parsed.input) {
256
- return {
257
- isToolUse: true,
258
- toolName: parsed.name,
259
- toolInput: parsed.input,
260
- };
261
- }
262
- if (parsed.content && Array.isArray(parsed.content)) {
263
- const toolUse = parsed.content.find((c) => c.type === 'tool_use');
264
- if (toolUse) {
265
- return {
266
- isToolUse: true,
267
- toolName: toolUse.name,
268
- toolInput: toolUse.input,
269
- };
270
- }
271
- }
272
- if (parsed.stop_reason === 'tool_use' && parsed.content) {
273
- const content = Array.isArray(parsed.content) ? parsed.content : [parsed.content];
274
- const toolUse = content.find((c) => c.type === 'tool_use');
275
- if (toolUse) {
276
- return {
277
- isToolUse: true,
278
- toolName: toolUse.name,
279
- toolInput: toolUse.input,
280
- };
281
- }
282
- }
283
- }
284
- catch (error) {
285
- }
286
- return { isToolUse: false };
287
- }
288
- async queryWithTools(prompt, options = {}, maxTurns = 5) {
289
- if (!this.toolCallService) {
290
- this.logger.warn('ToolCallService not available, falling back to regular query');
291
- return this.query(prompt, options);
292
- }
293
- let turn = 0;
294
- let currentPrompt = prompt;
295
- const tools = this.toolCallService.list();
296
- currentPrompt = this.buildPromptWithTools(currentPrompt, tools);
297
- while (turn < maxTurns) {
298
- this.logger.log(`Tool call turn ${turn + 1}/${maxTurns}`);
299
- if (options.taskId) {
300
- this['appendTaskLog'](options.taskId, 'INFO', `--- Tool Call Turn ${turn + 1}/${maxTurns} ---`);
301
- }
302
- const response = await this.query(currentPrompt, options);
303
- if (!response.success) {
304
- return response;
305
- }
306
- const toolUse = this.parseToolUse(response.content);
307
- this.logger.log(`Tool use check result: ${JSON.stringify(toolUse)}`);
308
- if (!toolUse.isToolUse) {
309
- this.logger.log('No tool use detected, returning response');
310
- if (options.taskId) {
311
- this['appendTaskLog'](options.taskId, 'INFO', `No tool use detected, returning final response`);
312
- }
313
- const parsedContent = this.parseJsonlResponse(response.content);
314
- return {
315
- ...response,
316
- content: parsedContent,
317
- };
318
- }
319
- this.logger.log(`Executing tool: ${toolUse.toolName}`);
320
- if (options.taskId) {
321
- this['appendTaskLog'](options.taskId, 'INFO', `🔧 Claude requested tool: ${toolUse.toolName}`);
322
- this['appendTaskLog'](options.taskId, 'INFO', `Tool input: ${JSON.stringify(toolUse.toolInput, null, 2)}`);
323
- }
324
- try {
325
- const toolResult = await this.toolCallService.execute(toolUse.toolName, toolUse.toolInput);
326
- this.logger.log(`Tool executed successfully: ${toolUse.toolName}`);
327
- if (options.taskId) {
328
- this['appendTaskLog'](options.taskId, 'INFO', `✅ Tool executed successfully`);
329
- this['appendTaskLog'](options.taskId, 'INFO', `Tool result preview: ${JSON.stringify(toolResult).substring(0, 500)}...`);
330
- }
331
- currentPrompt = this.buildFollowUpPrompt(toolUse.toolName, toolUse.toolInput, toolResult);
332
- turn++;
333
- }
334
- catch (error) {
335
- this.logger.error(`Tool execution failed: ${error.message}`);
336
- return {
337
- content: '',
338
- provider: this.name,
339
- command: response.command,
340
- success: false,
341
- error: `Tool execution failed: ${error.message}`,
342
- taskId: response.taskId,
343
- };
344
- }
345
- }
346
- this.logger.error(`Max tool call turns (${maxTurns}) exceeded`);
347
- return {
348
- content: '',
349
- provider: this.name,
350
- command: `${this.getCliCommand()} (max turns exceeded)`,
351
- success: false,
352
- error: `Maximum tool call iterations (${maxTurns}) exceeded`,
353
- taskId: options.taskId,
354
- };
355
- }
356
- };
357
- exports.ClaudeProvider = ClaudeProvider;
358
- exports.ClaudeProvider = ClaudeProvider = __decorate([
359
- (0, common_1.Injectable)(),
360
- __metadata("design:paramtypes", [tool_call_service_1.ToolCallService])
361
- ], ClaudeProvider);
362
- //# sourceMappingURL=claude.provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.provider.js","sourceRoot":"","sources":["../../src/providers/claude.provider.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { BaseAIProvider } from './base-ai.provider';
2
- export declare class CodexProvider extends BaseAIProvider {
3
- readonly name = "cli/codex";
4
- constructor();
5
- protected getCliCommand(): string;
6
- protected getDefaultArgs(): string[];
7
- protected getExecuteArgs(): string[];
8
- protected getNotInstalledMessage(): string;
9
- protected getPromptInArgs(): boolean;
10
- protected shouldPipeContext(): boolean;
11
- parseProviderError(stderr: string, stdout: string): {
12
- error: boolean;
13
- message: string;
14
- };
15
- private extractAssistantMessage;
16
- protected filterToolUseFromResponse(content: string): string;
17
- }
@@ -1,99 +0,0 @@
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.CodexProvider = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const base_ai_provider_1 = require("./base-ai.provider");
15
- let CodexProvider = class CodexProvider extends base_ai_provider_1.BaseAIProvider {
16
- constructor() {
17
- super('CodexProvider');
18
- this.name = 'cli/codex';
19
- }
20
- getCliCommand() {
21
- return 'codex';
22
- }
23
- getDefaultArgs() {
24
- return ['exec', '--experimental-json'];
25
- }
26
- getExecuteArgs() {
27
- return ['exec', '-s', 'workspace-write', '--experimental-json'];
28
- }
29
- getNotInstalledMessage() {
30
- return 'Codex CLI is not installed. Please install it first.';
31
- }
32
- getPromptInArgs() {
33
- return true;
34
- }
35
- shouldPipeContext() {
36
- return false;
37
- }
38
- parseProviderError(stderr, stdout) {
39
- if (stderr && (stderr.includes('not logged in') || stderr.includes('authentication required'))) {
40
- return {
41
- error: true,
42
- message: 'Codex CLI authentication required. Please run `codex login` to authenticate.',
43
- };
44
- }
45
- if (stderr && stderr.includes('rate limit')) {
46
- return {
47
- error: true,
48
- message: 'Codex API rate limit reached. Please try again later.',
49
- };
50
- }
51
- if (stdout && stdout.trim().length > 0) {
52
- return { error: false, message: '' };
53
- }
54
- if (stderr && stderr.trim().length > 0) {
55
- return { error: true, message: stderr.split('\n')[0]?.trim() || 'Unknown error' };
56
- }
57
- return super.parseProviderError(stderr, stdout);
58
- }
59
- extractAssistantMessage(content) {
60
- const lines = content.split('\n').map(line => line.trim()).filter(Boolean);
61
- let assistantMessage = null;
62
- for (const line of lines) {
63
- try {
64
- const parsed = JSON.parse(line);
65
- if (parsed?.item?.item_type === 'assistant_message' &&
66
- typeof parsed.item.text === 'string') {
67
- assistantMessage = parsed.item.text.trim();
68
- }
69
- else if (parsed?.response?.output &&
70
- Array.isArray(parsed.response.output)) {
71
- const assistantEntries = parsed.response.output.filter((entry) => entry?.item_type === 'assistant_message');
72
- if (assistantEntries.length > 0) {
73
- const lastMessage = assistantEntries[assistantEntries.length - 1];
74
- if (lastMessage?.text) {
75
- assistantMessage = String(lastMessage.text).trim();
76
- }
77
- }
78
- }
79
- }
80
- catch {
81
- continue;
82
- }
83
- }
84
- return assistantMessage;
85
- }
86
- filterToolUseFromResponse(content) {
87
- const assistantMessage = this.extractAssistantMessage(content);
88
- if (assistantMessage) {
89
- return assistantMessage;
90
- }
91
- return super.filterToolUseFromResponse(content);
92
- }
93
- };
94
- exports.CodexProvider = CodexProvider;
95
- exports.CodexProvider = CodexProvider = __decorate([
96
- (0, common_1.Injectable)(),
97
- __metadata("design:paramtypes", [])
98
- ], CodexProvider);
99
- //# sourceMappingURL=codex.provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.provider.js","sourceRoot":"","sources":["../../src/providers/codex.provider.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
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 CopilotProvider extends BaseAIProvider {
5
- readonly name: "cli/copilot";
6
- constructor(toolCallService?: ToolCallService);
7
- protected getCliCommand(): string;
8
- protected getDefaultArgs(): string[];
9
- protected getExecuteArgs(): string[];
10
- protected getPromptInArgs(): boolean;
11
- protected getNotInstalledMessage(): string;
12
- execute(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
13
- parseProviderError(stderr: string, stdout: string): {
14
- error: boolean;
15
- message: string;
16
- };
17
- private buildPromptWithTools;
18
- private buildFollowUpPrompt;
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
- }