@crewx/cli 0.8.4-rc.0 → 0.8.4-rc.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 (220) hide show
  1. package/README.md +33 -33
  2. package/bin/crewx +2 -2
  3. package/dist/commands/agent.js +23 -23
  4. package/dist/commands/init.js +20 -20
  5. package/dist/commands/task-db.d.ts +33 -0
  6. package/dist/commands/task-db.js +107 -0
  7. package/dist/examples/deny-secrets-plugin.d.ts +22 -0
  8. package/dist/examples/deny-secrets-plugin.js +40 -0
  9. package/dist/main.js +72 -72
  10. package/dist/plugins/examples/echo-hook.d.ts +24 -0
  11. package/dist/plugins/examples/echo-hook.js +60 -0
  12. package/dist/plugins/examples/verify-echo-hook.d.ts +8 -0
  13. package/dist/plugins/examples/verify-echo-hook.js +47 -0
  14. package/dist/plugins/sqlite-tracing.d.ts +11 -0
  15. package/dist/plugins/sqlite-tracing.js +19 -0
  16. package/dist/repository/workspace.repository.d.ts +26 -0
  17. package/dist/repository/workspace.repository.js +111 -0
  18. package/dist/schema/tasks.d.ts +7 -0
  19. package/dist/schema/tasks.js +48 -0
  20. package/package.json +18 -18
  21. package/dist/ai-provider.service.d.ts +0 -34
  22. package/dist/ai-provider.service.js +0 -311
  23. package/dist/ai-provider.service.js.map +0 -1
  24. package/dist/ai.service.d.ts +0 -17
  25. package/dist/ai.service.js +0 -51
  26. package/dist/ai.service.js.map +0 -1
  27. package/dist/app.module.d.ts +0 -5
  28. package/dist/app.module.js +0 -165
  29. package/dist/app.module.js.map +0 -1
  30. package/dist/cli/agent.handler.d.ts +0 -2
  31. package/dist/cli/agent.handler.js +0 -186
  32. package/dist/cli/agent.handler.js.map +0 -1
  33. package/dist/cli/builtin.handler.d.ts +0 -3
  34. package/dist/cli/builtin.handler.js +0 -110
  35. package/dist/cli/builtin.handler.js.map +0 -1
  36. package/dist/cli/chat.handler.d.ts +0 -20
  37. package/dist/cli/chat.handler.js +0 -446
  38. package/dist/cli/chat.handler.js.map +0 -1
  39. package/dist/cli/cli.handler.d.ts +0 -4
  40. package/dist/cli/cli.handler.js +0 -119
  41. package/dist/cli/cli.handler.js.map +0 -1
  42. package/dist/cli/doctor.handler.d.ts +0 -38
  43. package/dist/cli/doctor.handler.js +0 -495
  44. package/dist/cli/doctor.handler.js.map +0 -1
  45. package/dist/cli/execute.handler.d.ts +0 -2
  46. package/dist/cli/execute.handler.js +0 -321
  47. package/dist/cli/execute.handler.js.map +0 -1
  48. package/dist/cli/help.handler.d.ts +0 -2
  49. package/dist/cli/help.handler.js +0 -10
  50. package/dist/cli/help.handler.js.map +0 -1
  51. package/dist/cli/init.handler.d.ts +0 -26
  52. package/dist/cli/init.handler.js +0 -450
  53. package/dist/cli/init.handler.js.map +0 -1
  54. package/dist/cli/log.handler.d.ts +0 -2
  55. package/dist/cli/log.handler.js +0 -69
  56. package/dist/cli/log.handler.js.map +0 -1
  57. package/dist/cli/mcp.handler.d.ts +0 -3
  58. package/dist/cli/mcp.handler.js +0 -121
  59. package/dist/cli/mcp.handler.js.map +0 -1
  60. package/dist/cli/query.handler.d.ts +0 -2
  61. package/dist/cli/query.handler.js +0 -379
  62. package/dist/cli/query.handler.js.map +0 -1
  63. package/dist/cli/skill.handler.d.ts +0 -2
  64. package/dist/cli/skill.handler.js +0 -252
  65. package/dist/cli/skill.handler.js.map +0 -1
  66. package/dist/cli/slack-files.handler.d.ts +0 -2
  67. package/dist/cli/slack-files.handler.js +0 -291
  68. package/dist/cli/slack-files.handler.js.map +0 -1
  69. package/dist/cli/template.handler.d.ts +0 -2
  70. package/dist/cli/template.handler.js +0 -188
  71. package/dist/cli/template.handler.js.map +0 -1
  72. package/dist/cli/templates.handler.d.ts +0 -2
  73. package/dist/cli/templates.handler.js +0 -100
  74. package/dist/cli/templates.handler.js.map +0 -1
  75. package/dist/cli-options.d.ts +0 -39
  76. package/dist/cli-options.js +0 -355
  77. package/dist/cli-options.js.map +0 -1
  78. package/dist/config/timeout.config.d.ts +0 -14
  79. package/dist/config/timeout.config.js +0 -34
  80. package/dist/config/timeout.config.js.map +0 -1
  81. package/dist/conversation/base-conversation-history.provider.d.ts +0 -12
  82. package/dist/conversation/base-conversation-history.provider.js +0 -45
  83. package/dist/conversation/base-conversation-history.provider.js.map +0 -1
  84. package/dist/conversation/cli-conversation-history.provider.d.ts +0 -16
  85. package/dist/conversation/cli-conversation-history.provider.js +0 -111
  86. package/dist/conversation/cli-conversation-history.provider.js.map +0 -1
  87. package/dist/conversation/conversation-provider.factory.d.ts +0 -10
  88. package/dist/conversation/conversation-provider.factory.js +0 -50
  89. package/dist/conversation/conversation-provider.factory.js.map +0 -1
  90. package/dist/conversation/index.d.ts +0 -6
  91. package/dist/conversation/index.js +0 -27
  92. package/dist/conversation/index.js.map +0 -1
  93. package/dist/conversation/slack-conversation-history.provider.d.ts +0 -29
  94. package/dist/conversation/slack-conversation-history.provider.js +0 -302
  95. package/dist/conversation/slack-conversation-history.provider.js.map +0 -1
  96. package/dist/crewx.tool.d.ts +0 -359
  97. package/dist/crewx.tool.js +0 -2501
  98. package/dist/crewx.tool.js.map +0 -1
  99. package/dist/crewx.tool.spec.d.ts +0 -1
  100. package/dist/crewx.tool.spec.js +0 -158
  101. package/dist/crewx.tool.spec.js.map +0 -1
  102. package/dist/guards/bearer-auth.guard.d.ts +0 -7
  103. package/dist/guards/bearer-auth.guard.js +0 -44
  104. package/dist/guards/bearer-auth.guard.js.map +0 -1
  105. package/dist/health.controller.d.ts +0 -6
  106. package/dist/health.controller.js +0 -32
  107. package/dist/health.controller.js.map +0 -1
  108. package/dist/main.js.map +0 -1
  109. package/dist/mcp.controller.d.ts +0 -8
  110. package/dist/mcp.controller.js +0 -62
  111. package/dist/mcp.controller.js.map +0 -1
  112. package/dist/package.json +0 -3
  113. package/dist/providers/dynamic-provider.factory.d.ts +0 -15
  114. package/dist/providers/dynamic-provider.factory.js +0 -133
  115. package/dist/providers/dynamic-provider.factory.js.map +0 -1
  116. package/dist/providers/logger.adapter.d.ts +0 -6
  117. package/dist/providers/logger.adapter.js +0 -102
  118. package/dist/providers/logger.adapter.js.map +0 -1
  119. package/dist/services/agent-loader.service.d.ts +0 -35
  120. package/dist/services/agent-loader.service.js +0 -622
  121. package/dist/services/agent-loader.service.js.map +0 -1
  122. package/dist/services/auth.service.d.ts +0 -9
  123. package/dist/services/auth.service.js +0 -47
  124. package/dist/services/auth.service.js.map +0 -1
  125. package/dist/services/config-validator.service.d.ts +0 -29
  126. package/dist/services/config-validator.service.js +0 -483
  127. package/dist/services/config-validator.service.js.map +0 -1
  128. package/dist/services/config.service.d.ts +0 -45
  129. package/dist/services/config.service.js +0 -352
  130. package/dist/services/config.service.js.map +0 -1
  131. package/dist/services/document-loader.service.d.ts +0 -21
  132. package/dist/services/document-loader.service.js +0 -156
  133. package/dist/services/document-loader.service.js.map +0 -1
  134. package/dist/services/help.service.d.ts +0 -5
  135. package/dist/services/help.service.js +0 -139
  136. package/dist/services/help.service.js.map +0 -1
  137. package/dist/services/intelligent-compression.service.d.ts +0 -20
  138. package/dist/services/intelligent-compression.service.js +0 -179
  139. package/dist/services/intelligent-compression.service.js.map +0 -1
  140. package/dist/services/mcp-client.service.d.ts +0 -26
  141. package/dist/services/mcp-client.service.js +0 -81
  142. package/dist/services/mcp-client.service.js.map +0 -1
  143. package/dist/services/parallel-processing.service.d.ts +0 -108
  144. package/dist/services/parallel-processing.service.js +0 -333
  145. package/dist/services/parallel-processing.service.js.map +0 -1
  146. package/dist/services/provider-bridge.service.d.ts +0 -35
  147. package/dist/services/provider-bridge.service.js +0 -224
  148. package/dist/services/provider-bridge.service.js.map +0 -1
  149. package/dist/services/remote-agent.service.d.ts +0 -50
  150. package/dist/services/remote-agent.service.js +0 -171
  151. package/dist/services/remote-agent.service.js.map +0 -1
  152. package/dist/services/result-formatter.service.d.ts +0 -27
  153. package/dist/services/result-formatter.service.js +0 -126
  154. package/dist/services/result-formatter.service.js.map +0 -1
  155. package/dist/services/skill-loader.service.d.ts +0 -15
  156. package/dist/services/skill-loader.service.js +0 -278
  157. package/dist/services/skill-loader.service.js.map +0 -1
  158. package/dist/services/skill.service.d.ts +0 -67
  159. package/dist/services/skill.service.js +0 -670
  160. package/dist/services/skill.service.js.map +0 -1
  161. package/dist/services/skill.service.spec.d.ts +0 -1
  162. package/dist/services/skill.service.spec.js +0 -35
  163. package/dist/services/skill.service.spec.js.map +0 -1
  164. package/dist/services/task-management.service.d.ts +0 -65
  165. package/dist/services/task-management.service.js +0 -288
  166. package/dist/services/task-management.service.js.map +0 -1
  167. package/dist/services/template.service.d.ts +0 -61
  168. package/dist/services/template.service.js +0 -416
  169. package/dist/services/template.service.js.map +0 -1
  170. package/dist/services/tool-call.service.d.ts +0 -19
  171. package/dist/services/tool-call.service.js +0 -1061
  172. package/dist/services/tool-call.service.js.map +0 -1
  173. package/dist/services/tracing.service.d.ts +0 -200
  174. package/dist/services/tracing.service.js +0 -1290
  175. package/dist/services/tracing.service.js.map +0 -1
  176. package/dist/slack/formatters/message.formatter.d.ts +0 -32
  177. package/dist/slack/formatters/message.formatter.js +0 -352
  178. package/dist/slack/formatters/message.formatter.js.map +0 -1
  179. package/dist/slack/services/slack-file-download.service.d.ts +0 -58
  180. package/dist/slack/services/slack-file-download.service.js +0 -558
  181. package/dist/slack/services/slack-file-download.service.js.map +0 -1
  182. package/dist/slack/slack-bot.d.ts +0 -33
  183. package/dist/slack/slack-bot.js +0 -567
  184. package/dist/slack/slack-bot.js.map +0 -1
  185. package/dist/stderr.logger.d.ts +0 -8
  186. package/dist/stderr.logger.js +0 -26
  187. package/dist/stderr.logger.js.map +0 -1
  188. package/dist/types/usage.types.d.ts +0 -107
  189. package/dist/types/usage.types.js +0 -3
  190. package/dist/types/usage.types.js.map +0 -1
  191. package/dist/utils/config-utils.d.ts +0 -15
  192. package/dist/utils/config-utils.js +0 -69
  193. package/dist/utils/config-utils.js.map +0 -1
  194. package/dist/utils/extract-text.d.ts +0 -1
  195. package/dist/utils/extract-text.js +0 -15
  196. package/dist/utils/extract-text.js.map +0 -1
  197. package/dist/utils/mcp-installer.d.ts +0 -20
  198. package/dist/utils/mcp-installer.js +0 -199
  199. package/dist/utils/mcp-installer.js.map +0 -1
  200. package/dist/utils/project-hash.d.ts +0 -6
  201. package/dist/utils/project-hash.js +0 -70
  202. package/dist/utils/project-hash.js.map +0 -1
  203. package/dist/utils/simple-security.d.ts +0 -3
  204. package/dist/utils/simple-security.js +0 -20
  205. package/dist/utils/simple-security.js.map +0 -1
  206. package/dist/utils/stdin-utils.d.ts +0 -6
  207. package/dist/utils/stdin-utils.js +0 -109
  208. package/dist/utils/stdin-utils.js.map +0 -1
  209. package/dist/utils/template-processor.d.ts +0 -4
  210. package/dist/utils/template-processor.js +0 -266
  211. package/dist/utils/template-processor.js.map +0 -1
  212. package/dist/utils/terminal-message-formatter.d.ts +0 -23
  213. package/dist/utils/terminal-message-formatter.js +0 -136
  214. package/dist/utils/terminal-message-formatter.js.map +0 -1
  215. package/dist/version.d.ts +0 -1
  216. package/dist/version.js +0 -17
  217. package/dist/version.js.map +0 -1
  218. package/dist/workspace.service.d.ts +0 -44
  219. package/dist/workspace.service.js +0 -299
  220. package/dist/workspace.service.js.map +0 -1
@@ -1,50 +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 ConversationProviderFactory_1;
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ConversationProviderFactory = void 0;
11
- const common_1 = require("@nestjs/common");
12
- const slack_conversation_history_provider_1 = require("./slack-conversation-history.provider");
13
- const cli_conversation_history_provider_1 = require("./cli-conversation-history.provider");
14
- let ConversationProviderFactory = ConversationProviderFactory_1 = class ConversationProviderFactory {
15
- constructor() {
16
- this.logger = new common_1.Logger(ConversationProviderFactory_1.name);
17
- this.providers = new Map();
18
- }
19
- getProvider(platform) {
20
- let provider = this.providers.get(platform);
21
- if (!provider) {
22
- provider = this.createProvider(platform);
23
- this.providers.set(platform, provider);
24
- this.logger.log(`Created ${platform} conversation history provider`);
25
- }
26
- return provider;
27
- }
28
- createProvider(platform) {
29
- switch (platform) {
30
- case 'slack':
31
- return new slack_conversation_history_provider_1.SlackConversationHistoryProvider();
32
- case 'cli':
33
- return new cli_conversation_history_provider_1.CliConversationHistoryProvider();
34
- default:
35
- throw new Error(`Unsupported platform: ${platform}`);
36
- }
37
- }
38
- hasProvider(platform) {
39
- return this.providers.has(platform);
40
- }
41
- clearProviders() {
42
- this.providers.clear();
43
- this.logger.log('All conversation providers cleared');
44
- }
45
- };
46
- exports.ConversationProviderFactory = ConversationProviderFactory;
47
- exports.ConversationProviderFactory = ConversationProviderFactory = ConversationProviderFactory_1 = __decorate([
48
- (0, common_1.Injectable)()
49
- ], ConversationProviderFactory);
50
- //# sourceMappingURL=conversation-provider.factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conversation-provider.factory.js","sourceRoot":"","sources":["../../src/conversation/conversation-provider.factory.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAEpD,+FAAyF;AACzF,2FAAqF;AAQ9E,IAAM,2BAA2B,mCAAjC,MAAM,2BAA2B;IAAjC;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,6BAA2B,CAAC,IAAI,CAAC,CAAC;QAC/D,cAAS,GAAgD,IAAI,GAAG,EAAE,CAAC;IA6C7E,CAAC;IAxCC,WAAW,CAAC,QAAkB;QAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,gCAAgC,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAKO,cAAc,CAAC,QAAkB;QACvC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,OAAO,IAAI,sEAAgC,EAAE,CAAC;YAChD,KAAK,KAAK;gBACR,OAAO,IAAI,kEAA8B,EAAE,CAAC;YAC9C;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAKD,WAAW,CAAC,QAAkB;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAKD,cAAc;QACZ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;CACF,CAAA;AA/CY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;GACA,2BAA2B,CA+CvC"}
@@ -1,6 +0,0 @@
1
- export { ConversationMessage, ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, ConversationConfig, DEFAULT_CONVERSATION_CONFIG, getConversationConfig, } from '@sowonai/crewx-sdk';
2
- export { ConversationStorageService } from '@sowonai/crewx-sdk/internal';
3
- export * from './base-conversation-history.provider';
4
- export * from './slack-conversation-history.provider';
5
- export * from './cli-conversation-history.provider';
6
- export * from './conversation-provider.factory';
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ConversationStorageService = exports.getConversationConfig = exports.DEFAULT_CONVERSATION_CONFIG = void 0;
18
- var crewx_sdk_1 = require("@sowonai/crewx-sdk");
19
- Object.defineProperty(exports, "DEFAULT_CONVERSATION_CONFIG", { enumerable: true, get: function () { return crewx_sdk_1.DEFAULT_CONVERSATION_CONFIG; } });
20
- Object.defineProperty(exports, "getConversationConfig", { enumerable: true, get: function () { return crewx_sdk_1.getConversationConfig; } });
21
- var internal_1 = require("@sowonai/crewx-sdk/internal");
22
- Object.defineProperty(exports, "ConversationStorageService", { enumerable: true, get: function () { return internal_1.ConversationStorageService; } });
23
- __exportStar(require("./base-conversation-history.provider"), exports);
24
- __exportStar(require("./slack-conversation-history.provider"), exports);
25
- __exportStar(require("./cli-conversation-history.provider"), exports);
26
- __exportStar(require("./conversation-provider.factory"), exports);
27
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAQ4B;AAF1B,wHAAA,2BAA2B,OAAA;AAC3B,kHAAA,qBAAqB,OAAA;AAEvB,wDAAyE;AAAhE,sHAAA,0BAA0B,OAAA;AACnC,uEAAqD;AACrD,wEAAsD;AACtD,sEAAoD;AACpD,kEAAgD"}
@@ -1,29 +0,0 @@
1
- import { WebClient } from '@slack/web-api';
2
- import { BaseConversationHistoryProvider } from './base-conversation-history.provider';
3
- import { ConversationThread, FetchHistoryOptions } from '@sowonai/crewx-sdk';
4
- export declare class SlackConversationHistoryProvider extends BaseConversationHistoryProvider {
5
- private client?;
6
- private cache;
7
- private readonly CACHE_TTL;
8
- private botInfo?;
9
- private storage?;
10
- private storageInitPromise?;
11
- private loggingEnabled;
12
- constructor();
13
- initialize(client: WebClient): void;
14
- enableLocalLogging(): Promise<void>;
15
- isLocalLoggingEnabled(): boolean;
16
- private getBotInfo;
17
- fetchHistory(threadId: string, options?: FetchHistoryOptions): Promise<ConversationThread>;
18
- hasHistory(threadId: string): Promise<boolean>;
19
- formatForAI(thread: ConversationThread, options?: FetchHistoryOptions): Promise<string>;
20
- private extractMessageContent;
21
- private cleanSlackText;
22
- private sanitizeFileName;
23
- private getCachedThread;
24
- private cacheThread;
25
- private createEmptyThread;
26
- clearCache(): void;
27
- invalidateCache(threadId: string): void;
28
- private persistThread;
29
- }
@@ -1,302 +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
- var SlackConversationHistoryProvider_1;
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.SlackConversationHistoryProvider = void 0;
14
- const common_1 = require("@nestjs/common");
15
- const base_conversation_history_provider_1 = require("./base-conversation-history.provider");
16
- const internal_1 = require("@sowonai/crewx-sdk/internal");
17
- let SlackConversationHistoryProvider = SlackConversationHistoryProvider_1 = class SlackConversationHistoryProvider extends base_conversation_history_provider_1.BaseConversationHistoryProvider {
18
- constructor() {
19
- super(SlackConversationHistoryProvider_1.name);
20
- this.cache = new Map();
21
- this.CACHE_TTL = 0;
22
- this.loggingEnabled = false;
23
- }
24
- initialize(client) {
25
- this.client = client;
26
- }
27
- async enableLocalLogging() {
28
- if (this.loggingEnabled && this.storageInitPromise) {
29
- return this.storageInitPromise;
30
- }
31
- this.storage = new internal_1.ConversationStorageService();
32
- this.loggingEnabled = true;
33
- this.storageInitPromise = this.storage.initialize().catch((error) => {
34
- this.logger.warn(`Failed to initialize Slack conversation logging: ${error.message}`);
35
- this.loggingEnabled = false;
36
- });
37
- return this.storageInitPromise;
38
- }
39
- isLocalLoggingEnabled() {
40
- return this.loggingEnabled;
41
- }
42
- async getBotInfo() {
43
- if (this.botInfo) {
44
- return this.botInfo;
45
- }
46
- if (!this.client) {
47
- return undefined;
48
- }
49
- try {
50
- const authResult = await this.client.auth.test();
51
- if (authResult.ok && authResult.user_id && authResult.user) {
52
- this.botInfo = {
53
- userId: authResult.user_id,
54
- username: authResult.user,
55
- };
56
- return this.botInfo;
57
- }
58
- }
59
- catch (error) {
60
- this.logger.error(`Failed to fetch bot info: ${error.message}`);
61
- }
62
- return undefined;
63
- }
64
- async fetchHistory(threadId, options) {
65
- const [channel, threadTs] = threadId.split(':');
66
- if (!channel || !threadTs) {
67
- throw new Error(`Invalid thread ID format. Expected "channel:thread_ts", got: ${threadId}`);
68
- }
69
- const cached = this.getCachedThread(threadId);
70
- if (cached) {
71
- await this.persistThread(cached);
72
- return cached;
73
- }
74
- if (!this.client) {
75
- throw new Error('Slack client not initialized');
76
- }
77
- try {
78
- this.logger.log(`📡 Fetching from Slack API: channel=${channel}, ts=${threadTs}`);
79
- const botInfo = await this.getBotInfo();
80
- const result = await this.client.conversations.replies({
81
- channel,
82
- ts: threadTs,
83
- limit: options?.limit || 100,
84
- include_all_metadata: true,
85
- });
86
- if (!result.ok || !result.messages) {
87
- this.logger.warn('Failed to fetch thread history');
88
- return this.createEmptyThread(threadId);
89
- }
90
- const hasMore = result.has_more || false;
91
- const userIds = [...new Set(result.messages.filter((msg) => msg.user && !msg.bot_id).map((msg) => msg.user))];
92
- const userInfoMap = new Map();
93
- for (const userId of userIds) {
94
- try {
95
- const userInfo = await this.client.users.info({ user: userId });
96
- if (userInfo.ok && userInfo.user) {
97
- userInfoMap.set(userId, userInfo.user);
98
- }
99
- }
100
- catch (error) {
101
- this.logger.warn(`Failed to fetch user info for ${userId}: ${error}`);
102
- }
103
- }
104
- const messages = result.messages.map((msg) => {
105
- const userInfo = msg.user ? userInfoMap.get(msg.user) : undefined;
106
- const agentId = msg.metadata?.event_payload?.agent_id ||
107
- msg.bot_profile?.name ||
108
- msg.username ||
109
- (msg.bot_id ? 'unknown_bot' : undefined);
110
- const files = msg.files?.map((file) => {
111
- const sanitizedFileName = this.sanitizeFileName(file.name);
112
- const lastDotIndex = sanitizedFileName.lastIndexOf('.');
113
- const ext = lastDotIndex === -1 ? '' : sanitizedFileName.substring(lastDotIndex);
114
- const savedFileName = `${file.id}${ext}`;
115
- const safeThreadDir = threadId.replace(/:/g, '_');
116
- const fileAttachment = {
117
- id: file.id,
118
- name: file.name,
119
- mimetype: file.mimetype,
120
- size: file.size,
121
- localPath: `.crewx/slack-files/${safeThreadDir}/${savedFileName}`,
122
- url: file.url_private,
123
- };
124
- return fileAttachment;
125
- });
126
- if (files && files.length > 0) {
127
- this.logger.log(`📁 Message ${msg.ts} has ${files.length} file(s)`);
128
- }
129
- return {
130
- id: msg.ts,
131
- userId: msg.bot_id ? 'assistant' : msg.user,
132
- text: this.sanitizeMessage(this.extractMessageContent(msg)),
133
- timestamp: new Date(parseFloat(msg.ts) * 1000),
134
- isAssistant: !!msg.bot_id,
135
- files,
136
- metadata: {
137
- ts: msg.ts,
138
- thread_ts: msg.thread_ts,
139
- agent_id: agentId,
140
- provider: msg.metadata?.event_payload?.provider || agentId,
141
- slack: {
142
- user_id: msg.user,
143
- username: userInfo?.name || msg.username,
144
- user_profile: userInfo?.profile ? {
145
- real_name: userInfo.profile.real_name,
146
- display_name: userInfo.profile.display_name,
147
- display_name_normalized: userInfo.profile.display_name_normalized,
148
- image_72: userInfo.profile.image_72,
149
- team: userInfo.profile.team
150
- } : (msg.user_profile ? {
151
- real_name: msg.user_profile.real_name,
152
- display_name: msg.user_profile.display_name,
153
- display_name_normalized: msg.user_profile.display_name_normalized,
154
- image_72: msg.user_profile.image_72,
155
- team: msg.user_profile.team
156
- } : undefined),
157
- bot_id: msg.bot_id,
158
- bot_profile: msg.bot_profile ? {
159
- name: msg.bot_profile.name,
160
- app_id: msg.bot_profile.app_id
161
- } : undefined,
162
- bot_user_id: botInfo?.userId,
163
- bot_username: botInfo?.username,
164
- }
165
- },
166
- };
167
- });
168
- const thread = {
169
- threadId,
170
- platform: 'slack',
171
- messages,
172
- hasMore,
173
- metadata: {
174
- channel,
175
- threadTs,
176
- },
177
- };
178
- this.cacheThread(threadId, thread);
179
- await this.persistThread(thread);
180
- this.logger.log(`Retrieved ${messages.length} messages from thread (Slack API)`);
181
- return thread;
182
- }
183
- catch (error) {
184
- this.logger.error(`Error fetching thread history: ${error.message}`);
185
- if (error.data?.error === 'missing_scope') {
186
- this.logger.error('Missing required Slack scope for reading thread history');
187
- }
188
- return this.createEmptyThread(threadId);
189
- }
190
- }
191
- async hasHistory(threadId) {
192
- try {
193
- const thread = await this.fetchHistory(threadId, { limit: 1 });
194
- return thread.messages.length > 0;
195
- }
196
- catch {
197
- return false;
198
- }
199
- }
200
- async formatForAI(thread, options) {
201
- return await super.formatForAI(thread, options);
202
- }
203
- extractMessageContent(msg) {
204
- if (msg.bot_id && msg.blocks && Array.isArray(msg.blocks)) {
205
- const sections = msg.blocks
206
- .filter((b) => {
207
- if (b.type !== 'section' || !b.text?.text) {
208
- return false;
209
- }
210
- if (b.type === 'context' && b.elements) {
211
- const text = b.elements[0]?.text || '';
212
- if (text.includes('$ crewx') || text.includes('github.com/sowonlabs/crewx')) {
213
- return false;
214
- }
215
- }
216
- return true;
217
- })
218
- .map((b) => b.text.text);
219
- if (sections.length > 0) {
220
- return this.cleanSlackText(sections.join('\n\n'));
221
- }
222
- }
223
- return this.cleanSlackText(msg.text || '');
224
- }
225
- cleanSlackText(text) {
226
- return (text
227
- .replace(/<@([A-Z0-9]+)>/g, '@user')
228
- .replace(/<#([A-Z0-9]+)\|([^>]+)>/g, '#$2')
229
- .replace(/<(https?:\/\/[^|>]+)\|([^>]+)>/g, '$2')
230
- .replace(/<(https?:\/\/[^>]+)>/g, '$1')
231
- .trim());
232
- }
233
- sanitizeFileName(fileName) {
234
- let safeName = fileName.replace(/[\/\\]/g, '_');
235
- safeName = safeName.replace(/\.\./g, '_');
236
- safeName = safeName.replace(/[\x00-\x1f\x80-\x9f<>:"|?*]/g, '_');
237
- safeName = safeName.replace(/^\.+|\.+$/g, '');
238
- safeName = safeName.trim();
239
- if (!safeName || safeName === '') {
240
- safeName = 'unnamed_file';
241
- }
242
- return safeName;
243
- }
244
- getCachedThread(threadId) {
245
- const cached = this.cache.get(threadId);
246
- if (cached && Date.now() - cached.timestamp < this.CACHE_TTL) {
247
- return cached.thread;
248
- }
249
- return null;
250
- }
251
- cacheThread(threadId, thread) {
252
- this.cache.set(threadId, {
253
- thread,
254
- timestamp: Date.now(),
255
- });
256
- if (this.cache.size > 100) {
257
- const firstKey = this.cache.keys().next().value;
258
- if (firstKey) {
259
- this.cache.delete(firstKey);
260
- }
261
- }
262
- }
263
- createEmptyThread(threadId) {
264
- return {
265
- threadId,
266
- platform: 'slack',
267
- messages: [],
268
- };
269
- }
270
- clearCache() {
271
- this.cache.clear();
272
- }
273
- invalidateCache(threadId) {
274
- this.cache.delete(threadId);
275
- }
276
- async persistThread(thread) {
277
- if (!this.loggingEnabled || !this.storage) {
278
- return;
279
- }
280
- try {
281
- const threadCopy = {
282
- ...thread,
283
- messages: thread.messages.map(message => ({
284
- ...message,
285
- timestamp: message.timestamp instanceof Date
286
- ? message.timestamp
287
- : new Date(message.timestamp),
288
- })),
289
- };
290
- await this.storage.saveThread(threadCopy);
291
- }
292
- catch (error) {
293
- this.logger.warn(`Failed to persist Slack conversation log: ${error.message}`);
294
- }
295
- }
296
- };
297
- exports.SlackConversationHistoryProvider = SlackConversationHistoryProvider;
298
- exports.SlackConversationHistoryProvider = SlackConversationHistoryProvider = SlackConversationHistoryProvider_1 = __decorate([
299
- (0, common_1.Injectable)(),
300
- __metadata("design:paramtypes", [])
301
- ], SlackConversationHistoryProvider);
302
- //# sourceMappingURL=slack-conversation-history.provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slack-conversation-history.provider.js","sourceRoot":"","sources":["../../src/conversation/slack-conversation-history.provider.ts"],"names":[],"mappings":"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"}