@crewx/cli 0.8.0-rc.66 → 0.8.0-rc.82

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 (281) hide show
  1. package/bin/crewx +2 -0
  2. package/dist/bootstrap/crewx-cli.d.ts +11 -0
  3. package/dist/bootstrap/crewx-cli.js +31 -0
  4. package/dist/builtin.d.ts +15 -0
  5. package/dist/{cli/builtin.handler.js → builtin.js} +21 -7
  6. package/dist/commands/agent.d.ts +12 -0
  7. package/dist/commands/agent.js +246 -0
  8. package/dist/commands/doctor.d.ts +12 -0
  9. package/dist/commands/doctor.js +190 -0
  10. package/dist/commands/execute.d.ts +21 -0
  11. package/dist/commands/execute.js +117 -0
  12. package/dist/commands/hook/install.d.ts +21 -0
  13. package/dist/commands/hook/install.js +175 -0
  14. package/dist/commands/hook/paths.d.ts +19 -0
  15. package/dist/commands/hook/paths.js +94 -0
  16. package/dist/commands/hook/status.d.ts +7 -0
  17. package/dist/commands/hook/status.js +86 -0
  18. package/dist/commands/hook/uninstall.d.ts +8 -0
  19. package/dist/commands/hook/uninstall.js +71 -0
  20. package/dist/commands/hook-dispatch.d.ts +15 -0
  21. package/dist/commands/hook-dispatch.js +180 -0
  22. package/dist/commands/init.d.ts +24 -0
  23. package/dist/commands/init.js +133 -0
  24. package/dist/commands/kill.d.ts +12 -0
  25. package/dist/commands/kill.js +49 -0
  26. package/dist/commands/log.d.ts +13 -0
  27. package/dist/commands/log.js +97 -0
  28. package/dist/commands/parse-agent-message.d.ts +31 -0
  29. package/dist/commands/parse-agent-message.js +52 -0
  30. package/dist/commands/parse-common-flags.d.ts +36 -0
  31. package/dist/commands/parse-common-flags.js +105 -0
  32. package/dist/commands/ps.d.ts +12 -0
  33. package/dist/commands/ps.js +71 -0
  34. package/dist/commands/query.d.ts +21 -0
  35. package/dist/commands/query.js +117 -0
  36. package/dist/commands/result.d.ts +13 -0
  37. package/dist/commands/result.js +73 -0
  38. package/dist/commands/slack.d.ts +12 -0
  39. package/dist/commands/slack.js +559 -0
  40. package/dist/commands/task-db.d.ts +33 -0
  41. package/dist/commands/task-db.js +107 -0
  42. package/dist/examples/deny-secrets-plugin.d.ts +22 -0
  43. package/dist/examples/deny-secrets-plugin.js +40 -0
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.js +5 -0
  46. package/dist/logging.d.ts +21 -0
  47. package/dist/logging.js +86 -0
  48. package/dist/main.d.ts +10 -0
  49. package/dist/main.js +246 -256
  50. package/dist/plugins/examples/echo-hook.d.ts +24 -0
  51. package/dist/plugins/examples/echo-hook.js +60 -0
  52. package/dist/plugins/examples/verify-echo-hook.d.ts +8 -0
  53. package/dist/plugins/examples/verify-echo-hook.js +47 -0
  54. package/dist/plugins/sqlite-tracing.d.ts +13 -0
  55. package/dist/plugins/sqlite-tracing.js +20 -0
  56. package/dist/register-builtin-tools.d.ts +5 -0
  57. package/dist/register-builtin-tools.js +9 -0
  58. package/dist/slack/file-download.d.ts +17 -0
  59. package/dist/slack/file-download.js +134 -0
  60. package/dist/slack/markdown.d.ts +5 -0
  61. package/dist/slack/markdown.js +33 -0
  62. package/dist/utils/env-defaults.d.ts +5 -0
  63. package/dist/utils/env-defaults.js +10 -0
  64. package/dist/utils/version.d.ts +1 -0
  65. package/dist/utils/version.js +28 -0
  66. package/package.json +32 -115
  67. package/README.md +0 -663
  68. package/dist/ai-provider.service.d.ts +0 -36
  69. package/dist/ai-provider.service.js +0 -315
  70. package/dist/ai-provider.service.js.map +0 -1
  71. package/dist/ai.service.d.ts +0 -17
  72. package/dist/ai.service.js +0 -51
  73. package/dist/ai.service.js.map +0 -1
  74. package/dist/app.module.d.ts +0 -5
  75. package/dist/app.module.js +0 -165
  76. package/dist/app.module.js.map +0 -1
  77. package/dist/cli/agent.handler.d.ts +0 -2
  78. package/dist/cli/agent.handler.js +0 -186
  79. package/dist/cli/agent.handler.js.map +0 -1
  80. package/dist/cli/builtin.handler.d.ts +0 -3
  81. package/dist/cli/builtin.handler.js.map +0 -1
  82. package/dist/cli/chat.handler.d.ts +0 -20
  83. package/dist/cli/chat.handler.js +0 -446
  84. package/dist/cli/chat.handler.js.map +0 -1
  85. package/dist/cli/cli.handler.d.ts +0 -4
  86. package/dist/cli/cli.handler.js +0 -119
  87. package/dist/cli/cli.handler.js.map +0 -1
  88. package/dist/cli/doctor.handler.d.ts +0 -38
  89. package/dist/cli/doctor.handler.js +0 -495
  90. package/dist/cli/doctor.handler.js.map +0 -1
  91. package/dist/cli/execute.handler.d.ts +0 -2
  92. package/dist/cli/execute.handler.js +0 -376
  93. package/dist/cli/execute.handler.js.map +0 -1
  94. package/dist/cli/help.handler.d.ts +0 -2
  95. package/dist/cli/help.handler.js +0 -10
  96. package/dist/cli/help.handler.js.map +0 -1
  97. package/dist/cli/init.handler.d.ts +0 -26
  98. package/dist/cli/init.handler.js +0 -450
  99. package/dist/cli/init.handler.js.map +0 -1
  100. package/dist/cli/log.handler.d.ts +0 -2
  101. package/dist/cli/log.handler.js +0 -69
  102. package/dist/cli/log.handler.js.map +0 -1
  103. package/dist/cli/mcp.handler.d.ts +0 -3
  104. package/dist/cli/mcp.handler.js +0 -121
  105. package/dist/cli/mcp.handler.js.map +0 -1
  106. package/dist/cli/query.handler.d.ts +0 -2
  107. package/dist/cli/query.handler.js +0 -392
  108. package/dist/cli/query.handler.js.map +0 -1
  109. package/dist/cli/skill.handler.d.ts +0 -2
  110. package/dist/cli/skill.handler.js +0 -252
  111. package/dist/cli/skill.handler.js.map +0 -1
  112. package/dist/cli/slack-files.handler.d.ts +0 -2
  113. package/dist/cli/slack-files.handler.js +0 -291
  114. package/dist/cli/slack-files.handler.js.map +0 -1
  115. package/dist/cli/template.handler.d.ts +0 -2
  116. package/dist/cli/template.handler.js +0 -188
  117. package/dist/cli/template.handler.js.map +0 -1
  118. package/dist/cli/templates.handler.d.ts +0 -2
  119. package/dist/cli/templates.handler.js +0 -100
  120. package/dist/cli/templates.handler.js.map +0 -1
  121. package/dist/cli-options.d.ts +0 -40
  122. package/dist/cli-options.js +0 -371
  123. package/dist/cli-options.js.map +0 -1
  124. package/dist/config/timeout.config.d.ts +0 -14
  125. package/dist/config/timeout.config.js +0 -34
  126. package/dist/config/timeout.config.js.map +0 -1
  127. package/dist/conversation/base-conversation-history.provider.d.ts +0 -12
  128. package/dist/conversation/base-conversation-history.provider.js +0 -45
  129. package/dist/conversation/base-conversation-history.provider.js.map +0 -1
  130. package/dist/conversation/cli-box-reader.adapter.d.ts +0 -6
  131. package/dist/conversation/cli-box-reader.adapter.js +0 -10
  132. package/dist/conversation/cli-box-reader.adapter.js.map +0 -1
  133. package/dist/conversation/cli-conversation-history.provider.d.ts +0 -16
  134. package/dist/conversation/cli-conversation-history.provider.js +0 -112
  135. package/dist/conversation/cli-conversation-history.provider.js.map +0 -1
  136. package/dist/conversation/cli-task-reader.adapter.d.ts +0 -6
  137. package/dist/conversation/cli-task-reader.adapter.js +0 -25
  138. package/dist/conversation/cli-task-reader.adapter.js.map +0 -1
  139. package/dist/conversation/conversation-provider.factory.d.ts +0 -10
  140. package/dist/conversation/conversation-provider.factory.js +0 -50
  141. package/dist/conversation/conversation-provider.factory.js.map +0 -1
  142. package/dist/conversation/index.d.ts +0 -8
  143. package/dist/conversation/index.js +0 -29
  144. package/dist/conversation/index.js.map +0 -1
  145. package/dist/conversation/slack-conversation-history.provider.d.ts +0 -29
  146. package/dist/conversation/slack-conversation-history.provider.js +0 -302
  147. package/dist/conversation/slack-conversation-history.provider.js.map +0 -1
  148. package/dist/crewx.tool.d.ts +0 -360
  149. package/dist/crewx.tool.js +0 -2531
  150. package/dist/crewx.tool.js.map +0 -1
  151. package/dist/crewx.tool.spec.d.ts +0 -1
  152. package/dist/crewx.tool.spec.js +0 -222
  153. package/dist/crewx.tool.spec.js.map +0 -1
  154. package/dist/guards/bearer-auth.guard.d.ts +0 -7
  155. package/dist/guards/bearer-auth.guard.js +0 -44
  156. package/dist/guards/bearer-auth.guard.js.map +0 -1
  157. package/dist/health.controller.d.ts +0 -6
  158. package/dist/health.controller.js +0 -32
  159. package/dist/health.controller.js.map +0 -1
  160. package/dist/main.js.map +0 -1
  161. package/dist/mcp.controller.d.ts +0 -8
  162. package/dist/mcp.controller.js +0 -62
  163. package/dist/mcp.controller.js.map +0 -1
  164. package/dist/package.json +0 -3
  165. package/dist/providers/dynamic-provider.factory.d.ts +0 -17
  166. package/dist/providers/dynamic-provider.factory.js +0 -138
  167. package/dist/providers/dynamic-provider.factory.js.map +0 -1
  168. package/dist/providers/logger.adapter.d.ts +0 -7
  169. package/dist/providers/logger.adapter.js +0 -107
  170. package/dist/providers/logger.adapter.js.map +0 -1
  171. package/dist/services/agent-loader.service.d.ts +0 -35
  172. package/dist/services/agent-loader.service.js +0 -623
  173. package/dist/services/agent-loader.service.js.map +0 -1
  174. package/dist/services/auth.service.d.ts +0 -9
  175. package/dist/services/auth.service.js +0 -47
  176. package/dist/services/auth.service.js.map +0 -1
  177. package/dist/services/config-validator.service.d.ts +0 -29
  178. package/dist/services/config-validator.service.js +0 -483
  179. package/dist/services/config-validator.service.js.map +0 -1
  180. package/dist/services/config.service.d.ts +0 -45
  181. package/dist/services/config.service.js +0 -352
  182. package/dist/services/config.service.js.map +0 -1
  183. package/dist/services/document-loader.service.d.ts +0 -26
  184. package/dist/services/document-loader.service.js +0 -186
  185. package/dist/services/document-loader.service.js.map +0 -1
  186. package/dist/services/help.service.d.ts +0 -5
  187. package/dist/services/help.service.js +0 -139
  188. package/dist/services/help.service.js.map +0 -1
  189. package/dist/services/intelligent-compression.service.d.ts +0 -20
  190. package/dist/services/intelligent-compression.service.js +0 -179
  191. package/dist/services/intelligent-compression.service.js.map +0 -1
  192. package/dist/services/mcp-client.service.d.ts +0 -26
  193. package/dist/services/mcp-client.service.js +0 -81
  194. package/dist/services/mcp-client.service.js.map +0 -1
  195. package/dist/services/parallel-processing.service.d.ts +0 -108
  196. package/dist/services/parallel-processing.service.js +0 -333
  197. package/dist/services/parallel-processing.service.js.map +0 -1
  198. package/dist/services/provider-bridge.service.d.ts +0 -35
  199. package/dist/services/provider-bridge.service.js +0 -224
  200. package/dist/services/provider-bridge.service.js.map +0 -1
  201. package/dist/services/remote-agent.service.d.ts +0 -50
  202. package/dist/services/remote-agent.service.js +0 -171
  203. package/dist/services/remote-agent.service.js.map +0 -1
  204. package/dist/services/result-formatter.service.d.ts +0 -27
  205. package/dist/services/result-formatter.service.js +0 -126
  206. package/dist/services/result-formatter.service.js.map +0 -1
  207. package/dist/services/skill-loader.service.d.ts +0 -15
  208. package/dist/services/skill-loader.service.js +0 -278
  209. package/dist/services/skill-loader.service.js.map +0 -1
  210. package/dist/services/skill.service.d.ts +0 -69
  211. package/dist/services/skill.service.js +0 -779
  212. package/dist/services/skill.service.js.map +0 -1
  213. package/dist/services/skill.service.spec.d.ts +0 -1
  214. package/dist/services/skill.service.spec.js +0 -168
  215. package/dist/services/skill.service.spec.js.map +0 -1
  216. package/dist/services/task-management.service.d.ts +0 -71
  217. package/dist/services/task-management.service.js +0 -324
  218. package/dist/services/task-management.service.js.map +0 -1
  219. package/dist/services/template.service.d.ts +0 -61
  220. package/dist/services/template.service.js +0 -416
  221. package/dist/services/template.service.js.map +0 -1
  222. package/dist/services/tool-call.service.d.ts +0 -16
  223. package/dist/services/tool-call.service.js +0 -302
  224. package/dist/services/tool-call.service.js.map +0 -1
  225. package/dist/services/tracing.service.d.ts +0 -197
  226. package/dist/services/tracing.service.js +0 -1267
  227. package/dist/services/tracing.service.js.map +0 -1
  228. package/dist/slack/formatters/message.formatter.d.ts +0 -43
  229. package/dist/slack/formatters/message.formatter.js +0 -505
  230. package/dist/slack/formatters/message.formatter.js.map +0 -1
  231. package/dist/slack/services/slack-file-download.service.d.ts +0 -58
  232. package/dist/slack/services/slack-file-download.service.js +0 -558
  233. package/dist/slack/services/slack-file-download.service.js.map +0 -1
  234. package/dist/slack/slack-bot.d.ts +0 -33
  235. package/dist/slack/slack-bot.js +0 -568
  236. package/dist/slack/slack-bot.js.map +0 -1
  237. package/dist/stderr.logger.d.ts +0 -8
  238. package/dist/stderr.logger.js +0 -26
  239. package/dist/stderr.logger.js.map +0 -1
  240. package/dist/types/usage.types.d.ts +0 -107
  241. package/dist/types/usage.types.js +0 -3
  242. package/dist/types/usage.types.js.map +0 -1
  243. package/dist/utils/config-utils.d.ts +0 -15
  244. package/dist/utils/config-utils.js +0 -69
  245. package/dist/utils/config-utils.js.map +0 -1
  246. package/dist/utils/extract-text.d.ts +0 -1
  247. package/dist/utils/extract-text.js +0 -15
  248. package/dist/utils/extract-text.js.map +0 -1
  249. package/dist/utils/mcp-installer.d.ts +0 -20
  250. package/dist/utils/mcp-installer.js +0 -199
  251. package/dist/utils/mcp-installer.js.map +0 -1
  252. package/dist/utils/project-hash.d.ts +0 -6
  253. package/dist/utils/project-hash.js +0 -70
  254. package/dist/utils/project-hash.js.map +0 -1
  255. package/dist/utils/simple-security.d.ts +0 -3
  256. package/dist/utils/simple-security.js +0 -20
  257. package/dist/utils/simple-security.js.map +0 -1
  258. package/dist/utils/stdin-utils.d.ts +0 -6
  259. package/dist/utils/stdin-utils.js +0 -109
  260. package/dist/utils/stdin-utils.js.map +0 -1
  261. package/dist/utils/template-processor.d.ts +0 -27
  262. package/dist/utils/template-processor.js +0 -395
  263. package/dist/utils/template-processor.js.map +0 -1
  264. package/dist/utils/terminal-message-formatter.d.ts +0 -23
  265. package/dist/utils/terminal-message-formatter.js +0 -136
  266. package/dist/utils/terminal-message-formatter.js.map +0 -1
  267. package/dist/version.d.ts +0 -1
  268. package/dist/version.js +0 -17
  269. package/dist/version.js.map +0 -1
  270. package/dist/workspace.service.d.ts +0 -44
  271. package/dist/workspace.service.js +0 -299
  272. package/dist/workspace.service.js.map +0 -1
  273. package/scripts/backfill-tokens.js +0 -218
  274. package/scripts/postbuild-cli.mjs +0 -88
  275. package/scripts/postinstall-cli.mjs +0 -30
  276. package/templates/agents/default.yaml +0 -490
  277. package/templates/agents/minimal.yaml +0 -16
  278. package/templates/documents/conversation-history-default.hbs +0 -17
  279. package/templates/documents/crewx-manual.md +0 -2278
  280. package/templates/documents/crewx-quick-guide.md +0 -147
  281. package/templates/versions.json +0 -19
@@ -1,33 +0,0 @@
1
- import { CrewXTool } from '../crewx.tool';
2
- import { ConfigService } from '../services/config.service';
3
- import { AIProviderService } from '../ai-provider.service';
4
- export declare class SlackBot {
5
- private readonly crewXTool;
6
- private readonly configService;
7
- private readonly aiProviderService;
8
- private readonly logger;
9
- private app;
10
- private formatter;
11
- private conversationHistory;
12
- private fileDownloadService;
13
- private defaultAgent;
14
- private botUserId;
15
- private botId;
16
- private readonly mode;
17
- private readonly mentionOnly;
18
- private readonly threadGuards;
19
- constructor(crewXTool: CrewXTool, configService: ConfigService, aiProviderService: AIProviderService, defaultAgent?: string, mode?: 'query' | 'execute', mentionOnly?: boolean);
20
- private getBotUserId;
21
- private shouldRespondToMessage;
22
- private findActiveSpeaker;
23
- private registerHandlers;
24
- private handleCommand;
25
- private handleFileShared;
26
- private handleMessageWithFiles;
27
- private downloadHistoricalFiles;
28
- private formatFileSize;
29
- private handleViewDetails;
30
- private handleRerun;
31
- start(): Promise<void>;
32
- stop(): Promise<void>;
33
- }
@@ -1,568 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SlackBot = void 0;
4
- const bolt_1 = require("@slack/bolt");
5
- const common_1 = require("@nestjs/common");
6
- const message_formatter_1 = require("./formatters/message.formatter");
7
- const slack_conversation_history_provider_1 = require("../conversation/slack-conversation-history.provider");
8
- const slack_file_download_service_1 = require("./services/slack-file-download.service");
9
- class SlackBot {
10
- constructor(crewXTool, configService, aiProviderService, defaultAgent = 'claude', mode = 'query', mentionOnly = false) {
11
- this.crewXTool = crewXTool;
12
- this.configService = configService;
13
- this.aiProviderService = aiProviderService;
14
- this.logger = new common_1.Logger(SlackBot.name);
15
- this.botUserId = null;
16
- this.botId = null;
17
- this.threadGuards = new Map();
18
- if (mode !== 'query' && mode !== 'execute') {
19
- throw new Error(`Invalid Slack mode '${mode}'. Supported modes: query, execute.`);
20
- }
21
- const builtinProviders = this.aiProviderService.getAvailableProviders();
22
- const customAgents = this.configService.getAllAgentIds();
23
- const allAvailableAgents = [...builtinProviders, ...customAgents];
24
- if (!allAvailableAgents.includes(defaultAgent)) {
25
- const errorMsg = `❌ Agent '${defaultAgent}' not found. Available agents: ${allAvailableAgents.join(', ')}`;
26
- this.logger.error(errorMsg);
27
- throw new Error(errorMsg);
28
- }
29
- this.defaultAgent = defaultAgent;
30
- this.mode = mode;
31
- this.mentionOnly = mentionOnly;
32
- this.formatter = new message_formatter_1.SlackMessageFormatter();
33
- this.conversationHistory = new slack_conversation_history_provider_1.SlackConversationHistoryProvider();
34
- this.fileDownloadService = new slack_file_download_service_1.SlackFileDownloadService(this.configService);
35
- if (this.configService.shouldLogSlackConversations()) {
36
- this.logger.log('📝 Slack conversation logging enabled (local storage).');
37
- this.conversationHistory.enableLocalLogging().catch(error => {
38
- this.logger.warn(`Failed to enable Slack conversation logging: ${error.message}`);
39
- });
40
- }
41
- this.logger.log(`🤖 Slack bot initialized with default agent: ${this.defaultAgent}`);
42
- this.logger.log(`⚙️ Slack bot mode: ${this.mode}`);
43
- this.logger.log(`🎯 Mention-only mode: ${this.mentionOnly ? 'enabled (requires @mention)' : 'disabled (auto-respond in threads)'}`);
44
- this.logger.log(`📋 Built-in providers: ${builtinProviders.join(', ')}`);
45
- this.logger.log(`📋 Custom agents: ${customAgents.join(', ')}`);
46
- this.app = new bolt_1.App({
47
- token: process.env.SLACK_BOT_TOKEN,
48
- signingSecret: process.env.SLACK_SIGNING_SECRET,
49
- socketMode: true,
50
- appToken: process.env.SLACK_APP_TOKEN,
51
- logLevel: bolt_1.LogLevel.INFO,
52
- });
53
- this.registerHandlers();
54
- }
55
- async getBotUserId(client) {
56
- if (this.botUserId) {
57
- return this.botUserId;
58
- }
59
- try {
60
- const authResponse = await client.auth.test();
61
- this.botUserId = authResponse.user_id;
62
- this.botId = authResponse.bot_id;
63
- this.logger.log(`🤖 Bot User ID: ${this.botUserId}, Bot ID: ${this.botId}`);
64
- return this.botUserId;
65
- }
66
- catch (error) {
67
- this.logger.error(`Failed to get bot user ID: ${error.message}`);
68
- throw error;
69
- }
70
- }
71
- async shouldRespondToMessage(message, client) {
72
- const botUserId = await this.getBotUserId(client);
73
- const text = message.text || '';
74
- if (text.includes(`<@${botUserId}>`)) {
75
- this.logger.log(`✅ DECISION: Bot mentioned in message → RESPOND`);
76
- return true;
77
- }
78
- const otherBotMentioned = /<@[A-Z0-9]+>/.test(text) && !text.includes(`<@${botUserId}>`);
79
- if (otherBotMentioned) {
80
- this.logger.log(`⏭️ DECISION: Another bot mentioned → SKIP`);
81
- return false;
82
- }
83
- if (message.channel_type === 'im') {
84
- this.logger.log(`✅ DECISION: Direct message → RESPOND`);
85
- return true;
86
- }
87
- if (this.mentionOnly && message.thread_ts) {
88
- this.logger.log(`⏭️ DECISION: Mention-only mode enabled, no mention in thread → SKIP`);
89
- return false;
90
- }
91
- if (message.thread_ts) {
92
- this.logger.log(`🧵 Thread detected, checking active speaker...`);
93
- try {
94
- const threadHistory = await client.conversations.replies({
95
- channel: message.channel,
96
- ts: message.thread_ts,
97
- limit: 100,
98
- include_all_metadata: true,
99
- });
100
- const previousMessages = [...threadHistory.messages]
101
- .filter((msg) => msg.ts !== message.ts);
102
- const validMessages = previousMessages.filter((msg) => {
103
- if (msg.bot_id || msg.metadata?.event_type === 'crewx_response')
104
- return true;
105
- return msg.text && msg.text.trim();
106
- });
107
- if (validMessages.length === 0) {
108
- this.logger.log(`⏭️ DECISION: No valid previous messages, no mention → SKIP (require mention to become active speaker)`);
109
- return false;
110
- }
111
- this.logger.debug(`🔍 Checking active speaker among ${validMessages.length} valid messages...`);
112
- this.logger.debug(`🔍 Bot messages in thread: ${JSON.stringify(validMessages.filter((m) => m.bot_id).map((m) => ({
113
- ts: m.ts,
114
- bot_id: m.bot_id,
115
- text: m.text?.substring(0, 50),
116
- metadata: m.metadata
117
- })))}`);
118
- const activeSpeaker = this.findActiveSpeaker(validMessages);
119
- if (activeSpeaker) {
120
- this.logger.log(`🎤 Active speaker detected: ${activeSpeaker} (this.defaultAgent: ${this.defaultAgent})`);
121
- if (activeSpeaker === this.defaultAgent) {
122
- this.logger.log(`✅ DECISION: This bot is the active speaker → RESPOND`);
123
- return true;
124
- }
125
- else {
126
- this.logger.log(`⏭️ DECISION: Another bot (${activeSpeaker}) is the active speaker → SKIP`);
127
- return false;
128
- }
129
- }
130
- this.logger.log(`⏭️ DECISION: No active speaker in thread, no mention → SKIP (require explicit mention)`);
131
- this.logger.debug(`🔍 Debug: validMessages=${JSON.stringify(validMessages.map((m) => ({ ts: m.ts, bot_id: m.bot_id, text: m.text?.substring(0, 30) })))}`);
132
- return false;
133
- }
134
- catch (error) {
135
- this.logger.warn(`Failed to check thread participation: ${error.message}`);
136
- return false;
137
- }
138
- }
139
- this.logger.log(`⏭️ DECISION: No mention, no thread → SKIP (channel requires explicit mention)`);
140
- return false;
141
- }
142
- findActiveSpeaker(messages) {
143
- const sortedMessages = [...messages].sort((a, b) => parseFloat(b.ts) - parseFloat(a.ts));
144
- for (const msg of sortedMessages) {
145
- const isBot = !!msg.bot_id || msg.metadata?.event_type === 'crewx_response';
146
- if (isBot) {
147
- let agentId = msg.metadata?.event_payload?.agent_id;
148
- if (!agentId && msg.text) {
149
- const agentMatch = msg.text.match(/@([a-zA-Z0-9_]+)\)/);
150
- if (agentMatch) {
151
- agentId = agentMatch[1];
152
- this.logger.debug(`🔧 Extracted active speaker from text: ${agentId}`);
153
- }
154
- }
155
- if (!agentId && msg.bot_id === this.botId) {
156
- agentId = this.defaultAgent;
157
- this.logger.debug(`🔧 Active speaker assumed as defaultAgent (bot_id match): ${agentId}`);
158
- }
159
- if (agentId) {
160
- this.logger.debug(`🔍 Found active speaker: ${agentId} (last bot response)`);
161
- return agentId;
162
- }
163
- }
164
- }
165
- return null;
166
- }
167
- registerHandlers() {
168
- this.app.event('message', async ({ event, logger }) => {
169
- this.logger.debug(`📨 Received message event: ${JSON.stringify(event).substring(0, 200)}`);
170
- });
171
- this.app.event('file_shared', async ({ event, client }) => {
172
- await this.handleFileShared(event, client);
173
- });
174
- this.app.event('app_mention', async ({ event, say, client }) => {
175
- const botUserId = await this.getBotUserId(client);
176
- const text = event.text || '';
177
- if (!text.includes(`<@${botUserId}>`)) {
178
- this.logger.debug(`⏭️ Skipping app_mention (different bot mentioned)`);
179
- return;
180
- }
181
- this.logger.log(`📢 Bot mentioned by user ${event.user}`);
182
- await this.handleCommand({ message: event, say, client });
183
- });
184
- this.app.message(async ({ message, say, client }) => {
185
- const msg = message;
186
- this.logger.debug(`📬 Message handler: subtype=${msg.subtype}, bot_id=${msg.bot_id}, has_files=${!!msg.files}, files_count=${msg.files?.length || 0}`);
187
- if ('files' in message && msg.files && msg.files.length > 0) {
188
- this.logger.log(`📎 Message with ${msg.files.length} file(s) detected`);
189
- await this.handleMessageWithFiles(message, client);
190
- }
191
- if (msg.subtype || msg.bot_id) {
192
- this.logger.debug(`⏭️ Skipping message (subtype: ${msg.subtype}, bot_id: ${msg.bot_id})`);
193
- return;
194
- }
195
- const text = msg.text || '';
196
- this.logger.debug(`💬 Message received: "${text.substring(0, 50)}..."`);
197
- const botUserId = await this.getBotUserId(client);
198
- if (text.includes(`<@${botUserId}>`)) {
199
- this.logger.debug(`⏭️ Skipping app_mention (handled by app_mention handler)`);
200
- return;
201
- }
202
- const shouldRespond = await this.shouldRespondToMessage(message, client);
203
- if (!shouldRespond) {
204
- this.logger.debug(`⏭️ Ignoring message (bot not mentioned and not participated in thread)`);
205
- return;
206
- }
207
- this.logger.log(`🎯 Processing message from ${message.user}`);
208
- await this.handleCommand({ message, say, client });
209
- });
210
- this.app.action('view_details', async ({ ack, body, client }) => {
211
- await this.handleViewDetails({ ack, body, client });
212
- });
213
- this.app.action('rerun', async ({ ack, body, client }) => {
214
- await this.handleRerun({ ack, body, client });
215
- });
216
- }
217
- async handleCommand({ message, say, client }) {
218
- try {
219
- const messageText = message.text || '';
220
- let userRequest = messageText
221
- .replace(/<@[A-Z0-9]+>/gi, '')
222
- .trim();
223
- this.logger.log(`📝 Parsed request: "${userRequest.substring(0, 100)}..."`);
224
- if (!userRequest) {
225
- await say({
226
- text: '❌ Please provide a request. Example: `@crewx analyze this code`',
227
- thread_ts: message.thread_ts || message.ts,
228
- metadata: {
229
- event_type: 'crewx_response',
230
- event_payload: {
231
- agent_id: this.defaultAgent,
232
- provider: this.defaultAgent,
233
- task_id: 'validation_error',
234
- },
235
- },
236
- });
237
- return;
238
- }
239
- const threadTs = message.thread_ts || message.ts;
240
- const threadId = `${message.channel}:${threadTs}`;
241
- const existingGuard = this.threadGuards.get(threadId);
242
- if (existingGuard) {
243
- this.logger.warn(`⚠️ Thread ${threadId} is already being processed, skipping duplicate request`);
244
- try {
245
- await client.reactions.add({
246
- channel: message.channel,
247
- timestamp: message.ts,
248
- name: 'hourglass_flowing_sand',
249
- });
250
- }
251
- catch (reactionError) {
252
- this.logger.warn(`Could not add hourglass reaction: ${reactionError}`);
253
- }
254
- return;
255
- }
256
- this.logger.log(`🚀 Processing Slack request from user ${message.user}`);
257
- try {
258
- await client.reactions.add({
259
- channel: message.channel,
260
- timestamp: message.ts,
261
- name: 'eyes',
262
- });
263
- }
264
- catch (reactionError) {
265
- this.logger.warn(`Could not add reaction: ${reactionError}`);
266
- }
267
- const guardPromise = (async () => {
268
- try {
269
- this.conversationHistory.initialize(client);
270
- let contextText = '';
271
- try {
272
- this.conversationHistory.invalidateCache(threadId);
273
- this.logger.debug(`🗑️ Invalidated cache after user message`);
274
- }
275
- catch (cacheError) {
276
- this.logger.warn(`Failed to invalidate cache: ${cacheError.message}`);
277
- }
278
- let conversationMessages = [];
279
- if (message.thread_ts) {
280
- try {
281
- const thread = await this.conversationHistory.fetchHistory(threadId, {
282
- limit: 100,
283
- maxContextLength: 4000,
284
- excludeCurrent: true,
285
- });
286
- if (thread.messages.length > 0) {
287
- conversationMessages = thread.messages.map(msg => ({
288
- text: msg.text,
289
- isAssistant: msg.isAssistant,
290
- metadata: msg.metadata,
291
- files: msg.files,
292
- }));
293
- const historyContext = await this.conversationHistory.formatForAI(thread, {
294
- excludeCurrent: true,
295
- });
296
- if (historyContext) {
297
- contextText = historyContext;
298
- this.logger.log(`📚 Including ${thread.messages.length} previous messages in context`);
299
- }
300
- await this.downloadHistoricalFiles(thread.messages, threadTs, message.channel, client);
301
- }
302
- }
303
- catch (error) {
304
- this.logger.warn(`Failed to fetch thread history: ${error.message}`);
305
- }
306
- }
307
- const basePayload = {
308
- agentId: this.defaultAgent,
309
- context: contextText || undefined,
310
- messages: conversationMessages.length > 0 ? conversationMessages : undefined,
311
- platform: 'slack',
312
- metadata: {
313
- channel_id: message.channel,
314
- thread_ts: threadTs,
315
- },
316
- };
317
- const result = this.mode === 'execute'
318
- ? await this.crewXTool.executeAgent({
319
- ...basePayload,
320
- task: userRequest,
321
- })
322
- : await this.crewXTool.queryAgent({
323
- ...basePayload,
324
- query: userRequest,
325
- });
326
- this.logger.log(`📦 Received result from CrewX MCP`);
327
- const responseText = result.implementation ||
328
- (result.content && result.content[0] ? result.content[0].text : 'No response');
329
- const blocks = this.formatter.formatExecutionResult({
330
- agent: result.agent || this.defaultAgent,
331
- provider: result.provider || this.defaultAgent,
332
- taskId: result.taskId || 'unknown',
333
- response: responseText,
334
- success: result.success === true,
335
- error: result.error,
336
- logs: result.logs,
337
- });
338
- const isSuccess = result.success === true;
339
- const successLabel = this.mode === 'execute' ? 'Completed!' : 'Responded!';
340
- const messageText = isSuccess
341
- ? `✅ ${successLabel} (@${result.agent || this.defaultAgent})`
342
- : `❌ Error (@${result.agent || this.defaultAgent})`;
343
- const agentId = result.agent || this.defaultAgent;
344
- this.logger.log(`📝 Setting metadata - agent_id: ${agentId}, defaultAgent: ${this.defaultAgent}`);
345
- const sentMessage = await say({
346
- text: messageText,
347
- blocks: blocks,
348
- thread_ts: message.thread_ts || message.ts,
349
- metadata: {
350
- event_type: 'crewx_response',
351
- event_payload: {
352
- agent_id: agentId,
353
- provider: result.provider || this.defaultAgent,
354
- task_id: result.taskId || 'unknown',
355
- },
356
- },
357
- });
358
- try {
359
- this.conversationHistory.invalidateCache(threadId);
360
- this.logger.debug(`🗑️ Invalidated cache after assistant response`);
361
- }
362
- catch (cacheError) {
363
- this.logger.warn(`Failed to invalidate cache: ${cacheError.message}`);
364
- }
365
- try {
366
- await client.reactions.remove({
367
- channel: message.channel,
368
- timestamp: message.ts,
369
- name: 'eyes',
370
- });
371
- await client.reactions.add({
372
- channel: message.channel,
373
- timestamp: message.ts,
374
- name: 'white_check_mark',
375
- });
376
- }
377
- catch (reactionError) {
378
- this.logger.warn(`Could not update reaction: ${reactionError}`);
379
- }
380
- }
381
- catch (error) {
382
- this.logger.error(`Error executing request:`, error);
383
- await say({
384
- text: `❌ Error: ${error.message}`,
385
- thread_ts: message.thread_ts || message.ts,
386
- metadata: {
387
- event_type: 'crewx_response',
388
- event_payload: {
389
- agent_id: this.defaultAgent,
390
- provider: this.defaultAgent,
391
- task_id: 'execution_error',
392
- },
393
- },
394
- });
395
- try {
396
- await client.reactions.remove({
397
- channel: message.channel,
398
- timestamp: message.ts,
399
- name: 'eyes',
400
- });
401
- await client.reactions.add({
402
- channel: message.channel,
403
- timestamp: message.ts,
404
- name: 'x',
405
- });
406
- }
407
- catch (reactionError) {
408
- this.logger.warn(`Could not update reaction: ${reactionError}`);
409
- }
410
- }
411
- finally {
412
- if (this.conversationHistory.isLocalLoggingEnabled()) {
413
- try {
414
- await this.conversationHistory.fetchHistory(threadId, {
415
- limit: 100,
416
- maxContextLength: 4000,
417
- });
418
- }
419
- catch (logError) {
420
- this.logger.warn(`Failed to refresh Slack conversation log: ${logError.message}`);
421
- }
422
- }
423
- }
424
- })();
425
- this.threadGuards.set(threadId, guardPromise);
426
- try {
427
- await guardPromise;
428
- }
429
- finally {
430
- this.threadGuards.delete(threadId);
431
- this.logger.debug(`🧹 Cleaned up guard for thread ${threadId}`);
432
- }
433
- }
434
- catch (error) {
435
- this.logger.error(`Error in handleCommand wrapper:`, error);
436
- }
437
- }
438
- async handleFileShared(event, client) {
439
- try {
440
- const fileId = event.file_id;
441
- const channelId = event.channel_id;
442
- const userId = event.user_id;
443
- this.logger.log(`📎 File shared event: ${fileId} in ${channelId}`);
444
- this.logger.warn(`⚠️ file_shared event doesn't provide reliable thread context. Skipping. File will be handled via message event.`);
445
- return;
446
- }
447
- catch (error) {
448
- this.logger.error(`Failed to handle file_shared: ${error.message}`);
449
- }
450
- }
451
- async handleMessageWithFiles(message, client) {
452
- const threadTs = message.thread_ts || message.ts;
453
- const channelId = message.channel;
454
- const userId = message.user;
455
- const threadId = `${channelId}:${threadTs}`;
456
- this.logger.log(`📁 Processing ${message.files.length} file(s) for thread ${threadId}`);
457
- for (const file of message.files) {
458
- try {
459
- this.logger.debug(`⬇️ Downloading: ${file.name} (${file.id})`);
460
- const metadata = await this.fileDownloadService.downloadFile(client, file.id, file.name, threadId, channelId, userId);
461
- this.logger.log(`✅ File downloaded from message: ${metadata.fileName} (${this.formatFileSize(metadata.fileSize)})`);
462
- }
463
- catch (error) {
464
- this.logger.error(`Failed to download file ${file.name}: ${error.message}`);
465
- }
466
- }
467
- }
468
- async downloadHistoricalFiles(messages, threadTs, channelId, client) {
469
- let downloadedCount = 0;
470
- for (const msg of messages) {
471
- if (msg.metadata?.slack?.files) {
472
- for (const file of msg.metadata.slack.files) {
473
- try {
474
- await this.fileDownloadService.ensureFileDownloaded(client, file.id, file.name, threadTs, channelId, msg.metadata.slack.user || 'unknown');
475
- downloadedCount++;
476
- }
477
- catch (error) {
478
- this.logger.warn(`Failed to download historical file ${file.name}: ${error.message}`);
479
- }
480
- }
481
- }
482
- }
483
- if (downloadedCount > 0) {
484
- this.logger.log(`📎 Downloaded ${downloadedCount} historical file(s)`);
485
- }
486
- }
487
- formatFileSize(bytes) {
488
- if (bytes < 1024)
489
- return `${bytes}B`;
490
- if (bytes < 1024 * 1024)
491
- return `${(bytes / 1024).toFixed(1)}KB`;
492
- return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
493
- }
494
- async handleViewDetails({ ack, body, client }) {
495
- await ack();
496
- const taskId = body.actions[0].value;
497
- try {
498
- const logsResult = await this.crewXTool.getTaskLogs({ taskId });
499
- const logText = logsResult.content && logsResult.content[0] ? logsResult.content[0].text : 'No logs available';
500
- await client.chat.postMessage({
501
- channel: body.channel.id,
502
- thread_ts: body.message.thread_ts || body.message.ts,
503
- text: `📋 Task Logs for ${taskId}`,
504
- blocks: [
505
- {
506
- type: 'section',
507
- text: {
508
- type: 'mrkdwn',
509
- text: `*Task Logs: ${taskId}*`,
510
- },
511
- },
512
- {
513
- type: 'section',
514
- text: {
515
- type: 'mrkdwn',
516
- text: `\`\`\`${logText.substring(0, 2000)}\`\`\``,
517
- },
518
- },
519
- ],
520
- });
521
- }
522
- catch (error) {
523
- this.logger.error(`Error fetching task logs:`, error);
524
- await client.chat.postMessage({
525
- channel: body.channel.id,
526
- thread_ts: body.message.thread_ts || body.message.ts,
527
- text: `❌ Error fetching logs: ${error.message}`,
528
- });
529
- }
530
- }
531
- async handleRerun({ ack, body, client }) {
532
- await ack();
533
- await client.chat.postMessage({
534
- channel: body.channel.id,
535
- thread_ts: body.message.thread_ts || body.message.ts,
536
- text: '🔄 To rerun, please send a new @crewx message with your request.',
537
- });
538
- }
539
- async start() {
540
- const MAX_RETRIES = 5;
541
- const RETRY_DELAY_MS = 3000;
542
- for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
543
- try {
544
- await this.app.start();
545
- this.logger.log('⚡️ CrewX Slack Bot is running!');
546
- this.logger.log(`📱 Socket Mode: Enabled`);
547
- this.logger.log(`👂 Listening for: app mentions`);
548
- this.logger.log(`💡 Test with: @crewx analyze this code`);
549
- return;
550
- }
551
- catch (error) {
552
- this.logger.error(`Failed to start Slack Bot (attempt ${attempt}/${MAX_RETRIES}): ${error.message}`);
553
- if (attempt >= MAX_RETRIES) {
554
- this.logger.error('Max retries reached. Exiting...');
555
- throw error;
556
- }
557
- this.logger.log(`Retrying in ${RETRY_DELAY_MS / 1000} seconds...`);
558
- await new Promise(resolve => setTimeout(resolve, RETRY_DELAY_MS));
559
- }
560
- }
561
- }
562
- async stop() {
563
- await this.app.stop();
564
- this.logger.log('Slack Bot stopped');
565
- }
566
- }
567
- exports.SlackBot = SlackBot;
568
- //# sourceMappingURL=slack-bot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slack-bot.js","sourceRoot":"","sources":["../../src/slack/slack-bot.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { ConsoleLogger, LogLevel } from '@nestjs/common';
2
- export declare class StderrLogger extends ConsoleLogger {
3
- constructor(context?: string, options?: {
4
- logLevels?: LogLevel[];
5
- timestamp?: boolean;
6
- });
7
- protected printMessage(message: any, color: (message: string) => string, context?: string, isTimeDiffEnabled?: boolean, includeContext?: boolean): void;
8
- }