@sowonai/crewx-cli 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 (173) hide show
  1. package/README.md +529 -0
  2. package/dist/ai-provider.service.d.ts +36 -0
  3. package/dist/ai-provider.service.js +191 -0
  4. package/dist/ai-provider.service.js.map +1 -0
  5. package/dist/ai.service.d.ts +57 -0
  6. package/dist/ai.service.js +628 -0
  7. package/dist/ai.service.js.map +1 -0
  8. package/dist/app.module.d.ts +5 -0
  9. package/dist/app.module.js +103 -0
  10. package/dist/app.module.js.map +1 -0
  11. package/dist/cli/agent.handler.d.ts +2 -0
  12. package/dist/cli/agent.handler.js +140 -0
  13. package/dist/cli/agent.handler.js.map +1 -0
  14. package/dist/cli/chat.handler.d.ts +19 -0
  15. package/dist/cli/chat.handler.js +431 -0
  16. package/dist/cli/chat.handler.js.map +1 -0
  17. package/dist/cli/cli.handler.d.ts +4 -0
  18. package/dist/cli/cli.handler.js +97 -0
  19. package/dist/cli/cli.handler.js.map +1 -0
  20. package/dist/cli/doctor.handler.d.ts +36 -0
  21. package/dist/cli/doctor.handler.js +382 -0
  22. package/dist/cli/doctor.handler.js.map +1 -0
  23. package/dist/cli/execute.handler.d.ts +2 -0
  24. package/dist/cli/execute.handler.js +319 -0
  25. package/dist/cli/execute.handler.js.map +1 -0
  26. package/dist/cli/help.handler.d.ts +2 -0
  27. package/dist/cli/help.handler.js +10 -0
  28. package/dist/cli/help.handler.js.map +1 -0
  29. package/dist/cli/init.handler.d.ts +26 -0
  30. package/dist/cli/init.handler.js +450 -0
  31. package/dist/cli/init.handler.js.map +1 -0
  32. package/dist/cli/mcp.handler.d.ts +3 -0
  33. package/dist/cli/mcp.handler.js +121 -0
  34. package/dist/cli/mcp.handler.js.map +1 -0
  35. package/dist/cli/query.handler.d.ts +2 -0
  36. package/dist/cli/query.handler.js +380 -0
  37. package/dist/cli/query.handler.js.map +1 -0
  38. package/dist/cli/templates.handler.d.ts +2 -0
  39. package/dist/cli/templates.handler.js +100 -0
  40. package/dist/cli/templates.handler.js.map +1 -0
  41. package/dist/cli-options.d.ts +29 -0
  42. package/dist/cli-options.js +234 -0
  43. package/dist/cli-options.js.map +1 -0
  44. package/dist/config/timeout.config.d.ts +14 -0
  45. package/dist/config/timeout.config.js +34 -0
  46. package/dist/config/timeout.config.js.map +1 -0
  47. package/dist/conversation/base-conversation-history.provider.d.ts +12 -0
  48. package/dist/conversation/base-conversation-history.provider.js +45 -0
  49. package/dist/conversation/base-conversation-history.provider.js.map +1 -0
  50. package/dist/conversation/cli-conversation-history.provider.d.ts +16 -0
  51. package/dist/conversation/cli-conversation-history.provider.js +111 -0
  52. package/dist/conversation/cli-conversation-history.provider.js.map +1 -0
  53. package/dist/conversation/conversation-provider.factory.d.ts +10 -0
  54. package/dist/conversation/conversation-provider.factory.js +50 -0
  55. package/dist/conversation/conversation-provider.factory.js.map +1 -0
  56. package/dist/conversation/index.d.ts +6 -0
  57. package/dist/conversation/index.js +27 -0
  58. package/dist/conversation/index.js.map +1 -0
  59. package/dist/conversation/slack-conversation-history.provider.d.ts +28 -0
  60. package/dist/conversation/slack-conversation-history.provider.js +278 -0
  61. package/dist/conversation/slack-conversation-history.provider.js.map +1 -0
  62. package/dist/crewx.tool.d.ts +332 -0
  63. package/dist/crewx.tool.js +1461 -0
  64. package/dist/crewx.tool.js.map +1 -0
  65. package/dist/guards/bearer-auth.guard.d.ts +7 -0
  66. package/dist/guards/bearer-auth.guard.js +44 -0
  67. package/dist/guards/bearer-auth.guard.js.map +1 -0
  68. package/dist/health.controller.d.ts +6 -0
  69. package/dist/health.controller.js +32 -0
  70. package/dist/health.controller.js.map +1 -0
  71. package/dist/main.d.ts +1 -0
  72. package/dist/main.js +267 -0
  73. package/dist/main.js.map +1 -0
  74. package/dist/mcp.controller.d.ts +8 -0
  75. package/dist/mcp.controller.js +62 -0
  76. package/dist/mcp.controller.js.map +1 -0
  77. package/dist/project.service.d.ts +44 -0
  78. package/dist/project.service.js +299 -0
  79. package/dist/project.service.js.map +1 -0
  80. package/dist/providers/base-ai.provider.d.ts +50 -0
  81. package/dist/providers/base-ai.provider.js +624 -0
  82. package/dist/providers/base-ai.provider.js.map +1 -0
  83. package/dist/providers/claude.provider.d.ts +25 -0
  84. package/dist/providers/claude.provider.js +362 -0
  85. package/dist/providers/claude.provider.js.map +1 -0
  86. package/dist/providers/codex.provider.d.ts +17 -0
  87. package/dist/providers/codex.provider.js +99 -0
  88. package/dist/providers/codex.provider.js.map +1 -0
  89. package/dist/providers/copilot.provider.d.ts +25 -0
  90. package/dist/providers/copilot.provider.js +266 -0
  91. package/dist/providers/copilot.provider.js.map +1 -0
  92. package/dist/providers/dynamic-provider.factory.d.ts +55 -0
  93. package/dist/providers/dynamic-provider.factory.js +586 -0
  94. package/dist/providers/dynamic-provider.factory.js.map +1 -0
  95. package/dist/providers/gemini.provider.d.ts +22 -0
  96. package/dist/providers/gemini.provider.js +147 -0
  97. package/dist/providers/gemini.provider.js.map +1 -0
  98. package/dist/services/agent-loader.service.d.ts +29 -0
  99. package/dist/services/agent-loader.service.js +370 -0
  100. package/dist/services/agent-loader.service.js.map +1 -0
  101. package/dist/services/auth.service.d.ts +9 -0
  102. package/dist/services/auth.service.js +47 -0
  103. package/dist/services/auth.service.js.map +1 -0
  104. package/dist/services/config-validator.service.d.ts +28 -0
  105. package/dist/services/config-validator.service.js +467 -0
  106. package/dist/services/config-validator.service.js.map +1 -0
  107. package/dist/services/config.service.d.ts +45 -0
  108. package/dist/services/config.service.js +180 -0
  109. package/dist/services/config.service.js.map +1 -0
  110. package/dist/services/context-enhancement.service.d.ts +13 -0
  111. package/dist/services/context-enhancement.service.js +169 -0
  112. package/dist/services/context-enhancement.service.js.map +1 -0
  113. package/dist/services/document-loader.service.d.ts +16 -0
  114. package/dist/services/document-loader.service.js +137 -0
  115. package/dist/services/document-loader.service.js.map +1 -0
  116. package/dist/services/help.service.d.ts +5 -0
  117. package/dist/services/help.service.js +117 -0
  118. package/dist/services/help.service.js.map +1 -0
  119. package/dist/services/intelligent-compression.service.d.ts +20 -0
  120. package/dist/services/intelligent-compression.service.js +179 -0
  121. package/dist/services/intelligent-compression.service.js.map +1 -0
  122. package/dist/services/mcp-client.service.d.ts +26 -0
  123. package/dist/services/mcp-client.service.js +81 -0
  124. package/dist/services/mcp-client.service.js.map +1 -0
  125. package/dist/services/parallel-processing.service.d.ts +108 -0
  126. package/dist/services/parallel-processing.service.js +268 -0
  127. package/dist/services/parallel-processing.service.js.map +1 -0
  128. package/dist/services/remote-agent.service.d.ts +49 -0
  129. package/dist/services/remote-agent.service.js +215 -0
  130. package/dist/services/remote-agent.service.js.map +1 -0
  131. package/dist/services/result-formatter.service.d.ts +27 -0
  132. package/dist/services/result-formatter.service.js +126 -0
  133. package/dist/services/result-formatter.service.js.map +1 -0
  134. package/dist/services/task-management.service.d.ts +63 -0
  135. package/dist/services/task-management.service.js +272 -0
  136. package/dist/services/task-management.service.js.map +1 -0
  137. package/dist/services/template.service.d.ts +36 -0
  138. package/dist/services/template.service.js +195 -0
  139. package/dist/services/template.service.js.map +1 -0
  140. package/dist/services/tool-call.service.d.ts +53 -0
  141. package/dist/services/tool-call.service.js +1061 -0
  142. package/dist/services/tool-call.service.js.map +1 -0
  143. package/dist/slack/formatters/message.formatter.d.ts +25 -0
  144. package/dist/slack/formatters/message.formatter.js +246 -0
  145. package/dist/slack/formatters/message.formatter.js.map +1 -0
  146. package/dist/slack/slack-bot.d.ts +24 -0
  147. package/dist/slack/slack-bot.js +467 -0
  148. package/dist/slack/slack-bot.js.map +1 -0
  149. package/dist/stderr.logger.d.ts +8 -0
  150. package/dist/stderr.logger.js +26 -0
  151. package/dist/stderr.logger.js.map +1 -0
  152. package/dist/utils/config-utils.d.ts +15 -0
  153. package/dist/utils/config-utils.js +69 -0
  154. package/dist/utils/config-utils.js.map +1 -0
  155. package/dist/utils/mcp-installer.d.ts +20 -0
  156. package/dist/utils/mcp-installer.js +199 -0
  157. package/dist/utils/mcp-installer.js.map +1 -0
  158. package/dist/utils/mention-parser.d.ts +18 -0
  159. package/dist/utils/mention-parser.js +136 -0
  160. package/dist/utils/mention-parser.js.map +1 -0
  161. package/dist/utils/simple-security.d.ts +3 -0
  162. package/dist/utils/simple-security.js +20 -0
  163. package/dist/utils/simple-security.js.map +1 -0
  164. package/dist/utils/stdin-utils.d.ts +27 -0
  165. package/dist/utils/stdin-utils.js +130 -0
  166. package/dist/utils/stdin-utils.js.map +1 -0
  167. package/dist/utils/template-processor.d.ts +32 -0
  168. package/dist/utils/template-processor.js +202 -0
  169. package/dist/utils/template-processor.js.map +1 -0
  170. package/dist/version.d.ts +1 -0
  171. package/dist/version.js +17 -0
  172. package/dist/version.js.map +1 -0
  173. package/package.json +122 -0
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.parseCliOptions = parseCliOptions;
40
+ const yargs_1 = __importDefault(require("yargs"));
41
+ const helpers_1 = require("yargs/helpers");
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ function parseCliOptions() {
45
+ const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../package.json'), 'utf-8'));
46
+ const parsed = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
47
+ .version(packageJson.version)
48
+ .command('query [message...]', 'Query agents with a message', (yargs) => {
49
+ yargs.positional('message', {
50
+ description: 'Message to send to agents (supports @agent mentions). Multiple arguments will be joined.',
51
+ type: 'string',
52
+ array: true
53
+ });
54
+ })
55
+ .command('q [message...]', 'Shorthand for query', (yargs) => {
56
+ yargs.positional('message', {
57
+ description: 'Message to send to agents (supports @agent mentions). Multiple arguments will be joined.',
58
+ type: 'string',
59
+ array: true
60
+ });
61
+ })
62
+ .command('execute [task...]', 'Execute a task with agents', (yargs) => {
63
+ yargs.positional('task', {
64
+ description: 'Task to execute with agents (supports @agent mentions). Multiple arguments will be joined.',
65
+ type: 'string',
66
+ array: true
67
+ });
68
+ })
69
+ .command('x [task...]', 'Shorthand for execute', (yargs) => {
70
+ yargs.positional('task', {
71
+ description: 'Task to execute with agents (supports @agent mentions). Multiple arguments will be joined.',
72
+ type: 'string',
73
+ array: true
74
+ });
75
+ })
76
+ .command('doctor', 'Check AI provider status', () => { })
77
+ .command('init', 'Initialize CrewX project', (yargs) => {
78
+ yargs.option('template', {
79
+ alias: 't',
80
+ type: 'string',
81
+ default: 'default',
82
+ description: 'Template to use (default, minimal, development, production)'
83
+ });
84
+ yargs.option('template-version', {
85
+ type: 'string',
86
+ default: 'main',
87
+ description: 'Template version to download (main, v0.1.8, etc.)'
88
+ });
89
+ yargs.option('force', {
90
+ alias: 'f',
91
+ type: 'boolean',
92
+ default: false,
93
+ description: 'Overwrite existing configuration file'
94
+ });
95
+ })
96
+ .command('templates', 'Manage agent templates', (yargs) => {
97
+ yargs.command('list', 'List available templates');
98
+ yargs.command('update', 'Clear cache and re-download templates');
99
+ })
100
+ .command('agent [action]', 'Manage configured agents', (yargs) => {
101
+ yargs.command(['ls', 'list'], 'List available agents');
102
+ })
103
+ .command('mcp', 'Start MCP server for IDE integration', () => { })
104
+ .command('slack', 'Start Slack Bot server', (yargs) => {
105
+ yargs.option('agent', {
106
+ alias: 'a',
107
+ type: 'string',
108
+ default: 'claude',
109
+ description: 'Default agent to use for Slack conversations (claude, copilot, gemini, or custom agent ID)'
110
+ });
111
+ yargs.option('mode', {
112
+ choices: ['query', 'execute'],
113
+ default: 'query',
114
+ description: 'Slack bot mode: query (read-only) or execute (allow file changes)',
115
+ });
116
+ })
117
+ .command('help', 'Show help', () => { })
118
+ .option('install', {
119
+ type: 'boolean',
120
+ default: false,
121
+ description: 'Run installation and setup process'
122
+ })
123
+ .option('log', {
124
+ type: 'boolean',
125
+ default: false,
126
+ description: 'Enable detailed logging'
127
+ })
128
+ .option('protocol', {
129
+ choices: ['STDIO', 'HTTP'],
130
+ default: 'STDIO',
131
+ description: 'MCP protocol to use'
132
+ })
133
+ .option('http', {
134
+ type: 'boolean',
135
+ default: false,
136
+ description: 'Shortcut to run MCP server over HTTP (equivalent to --protocol=HTTP)'
137
+ })
138
+ .option('host', {
139
+ type: 'string',
140
+ default: '127.0.0.1',
141
+ description: 'Host/IP address to bind the MCP HTTP server'
142
+ })
143
+ .option('port', {
144
+ type: 'number',
145
+ default: 3000,
146
+ description: 'Port for HTTP protocol (if used)'
147
+ })
148
+ .option('key', {
149
+ type: 'string',
150
+ description: 'Security key for MCP HTTP server authentication (defaults to CREWX_MCP_KEY env if available)'
151
+ })
152
+ .option('params', {
153
+ type: 'string',
154
+ description: 'JSON string with parameters for MCP tool invocation'
155
+ })
156
+ .option('config', {
157
+ alias: 'c',
158
+ type: 'string',
159
+ description: 'Path to agents configuration file (default: crewx.yaml or agents.yaml)'
160
+ })
161
+ .option('allow-tool', {
162
+ type: 'array',
163
+ default: [],
164
+ description: 'Allowed tools for Copilot agent (e.g., terminal,files,web)',
165
+ coerce: (value) => {
166
+ if (typeof value === 'string') {
167
+ return value.split(',').map(tool => tool.trim());
168
+ }
169
+ return value || [];
170
+ }
171
+ })
172
+ .option('raw', {
173
+ type: 'boolean',
174
+ default: false,
175
+ description: 'Output only AI response without formatting (useful for piping)'
176
+ })
177
+ .option('load-project-context', {
178
+ type: 'boolean',
179
+ default: true,
180
+ description: 'Load project context from CLAUDE.md files'
181
+ })
182
+ .option('project-context-max-length', {
183
+ type: 'number',
184
+ default: 2000,
185
+ description: 'Maximum length for project context'
186
+ })
187
+ .option('enable-intelligent-compression', {
188
+ type: 'boolean',
189
+ default: true,
190
+ description: 'Use intelligent conversation compression'
191
+ })
192
+ .option('thread', {
193
+ alias: 't',
194
+ type: 'string',
195
+ description: 'Thread ID for conversation continuity'
196
+ })
197
+ .help(false)
198
+ .parseSync();
199
+ const positionalArgs = (parsed._ || []);
200
+ const primaryCommand = positionalArgs.length > 0 ? String(positionalArgs[0]) : undefined;
201
+ const secondaryCommand = positionalArgs.length > 1 ? String(positionalArgs[1]) : undefined;
202
+ const tertiaryValue = positionalArgs.length > 2 ? String(positionalArgs[2]) : undefined;
203
+ const resolvedProtocol = parsed.http === true ? 'HTTP' : parsed.protocol;
204
+ const resolvedKey = parsed.key ?? process.env.CREWX_MCP_KEY ?? undefined;
205
+ return {
206
+ install: parsed.install,
207
+ log: parsed.log,
208
+ protocol: resolvedProtocol,
209
+ host: parsed.host,
210
+ port: parsed.port,
211
+ allowTool: parsed['allow-tool'] || [],
212
+ raw: parsed.raw,
213
+ loadProjectContext: parsed['load-project-context'],
214
+ projectContextMaxLength: parsed['project-context-max-length'],
215
+ enableIntelligentCompression: parsed['enable-intelligent-compression'],
216
+ thread: parsed.thread,
217
+ command: primaryCommand,
218
+ subcommand: secondaryCommand,
219
+ query: Array.isArray(parsed.message) ? parsed.message : (parsed.message ? [parsed.message] : undefined),
220
+ execute: Array.isArray(parsed.task) ? parsed.task : (parsed.task ? [parsed.task] : undefined),
221
+ doctor: primaryCommand === 'doctor',
222
+ config: parsed.config,
223
+ template: parsed.template,
224
+ templateVersion: parsed['template-version'],
225
+ force: parsed.force,
226
+ slackAgent: parsed.agent,
227
+ slackMode: parsed.mode || 'query',
228
+ http: parsed.http,
229
+ key: resolvedKey,
230
+ mcpToolName: secondaryCommand === 'call_tool' ? tertiaryValue : undefined,
231
+ mcpParams: typeof parsed.params === 'string' ? parsed.params : undefined,
232
+ };
233
+ }
234
+ //# sourceMappingURL=cli-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface TimeoutConfig {
2
+ claudeQuery: number;
3
+ claudeExecute: number;
4
+ geminiQuery: number;
5
+ geminiExecute: number;
6
+ copilotQuery: number;
7
+ copilotExecute: number;
8
+ parallel: number;
9
+ stdinInitial: number;
10
+ stdinChunk: number;
11
+ stdinComplete: number;
12
+ }
13
+ export declare function getTimeoutConfig(): TimeoutConfig;
14
+ export declare function getDefaultTimeoutConfig(): TimeoutConfig;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTimeoutConfig = getTimeoutConfig;
4
+ exports.getDefaultTimeoutConfig = getDefaultTimeoutConfig;
5
+ const DEFAULT_TIMEOUTS = {
6
+ claudeQuery: 1800000,
7
+ claudeExecute: 1800000,
8
+ geminiQuery: 1800000,
9
+ geminiExecute: 1800000,
10
+ copilotQuery: 1800000,
11
+ copilotExecute: 1800000,
12
+ parallel: 1800000,
13
+ stdinInitial: 30000,
14
+ stdinChunk: 1800000,
15
+ stdinComplete: 100,
16
+ };
17
+ function getTimeoutConfig() {
18
+ return {
19
+ claudeQuery: parseInt(process.env.CREWCODE_TIMEOUT_CLAUDE_QUERY || '') || DEFAULT_TIMEOUTS.claudeQuery,
20
+ claudeExecute: parseInt(process.env.CREWCODE_TIMEOUT_CLAUDE_EXECUTE || '') || DEFAULT_TIMEOUTS.claudeExecute,
21
+ geminiQuery: parseInt(process.env.CREWCODE_TIMEOUT_GEMINI_QUERY || '') || DEFAULT_TIMEOUTS.geminiQuery,
22
+ geminiExecute: parseInt(process.env.CREWCODE_TIMEOUT_GEMINI_EXECUTE || '') || DEFAULT_TIMEOUTS.geminiExecute,
23
+ copilotQuery: parseInt(process.env.CREWCODE_TIMEOUT_COPILOT_QUERY || '') || DEFAULT_TIMEOUTS.copilotQuery,
24
+ copilotExecute: parseInt(process.env.CREWCODE_TIMEOUT_COPILOT_EXECUTE || '') || DEFAULT_TIMEOUTS.copilotExecute,
25
+ parallel: parseInt(process.env.CREWCODE_TIMEOUT_PARALLEL || '') || DEFAULT_TIMEOUTS.parallel,
26
+ stdinInitial: parseInt(process.env.CREWCODE_TIMEOUT_STDIN_INITIAL || '') || DEFAULT_TIMEOUTS.stdinInitial,
27
+ stdinChunk: parseInt(process.env.CREWCODE_TIMEOUT_STDIN_CHUNK || '') || DEFAULT_TIMEOUTS.stdinChunk,
28
+ stdinComplete: parseInt(process.env.CREWCODE_TIMEOUT_STDIN_COMPLETE || '') || DEFAULT_TIMEOUTS.stdinComplete,
29
+ };
30
+ }
31
+ function getDefaultTimeoutConfig() {
32
+ return { ...DEFAULT_TIMEOUTS };
33
+ }
34
+ //# sourceMappingURL=timeout.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.config.js","sourceRoot":"","sources":["../../src/config/timeout.config.ts"],"names":[],"mappings":";;AAyDA,4CAaC;AAKD,0DAEC;AArCD,MAAM,gBAAgB,GAAkB;IACtC,WAAW,EAAE,OAAO;IACpB,aAAa,EAAE,OAAO;IACtB,WAAW,EAAE,OAAO;IACpB,aAAa,EAAE,OAAO;IACtB,YAAY,EAAE,OAAO;IACrB,cAAc,EAAE,OAAO;IACvB,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE,KAAK;IACnB,UAAU,EAAE,OAAO;IACnB,aAAa,EAAE,GAAG;CACnB,CAAC;AAMF,SAAgB,gBAAgB;IAC9B,OAAO;QACL,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,WAAW;QACtG,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,aAAa;QAC5G,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,WAAW;QACtG,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,aAAa;QAC5G,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,YAAY;QACzG,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,cAAc;QAC/G,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,QAAQ;QAC5F,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,YAAY;QACzG,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,UAAU;QACnG,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,IAAI,gBAAgB,CAAC,aAAa;KAC7G,CAAC;AACJ,CAAC;AAKD,SAAgB,uBAAuB;IACrC,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { ConversationThread, FetchHistoryOptions, IConversationHistoryProvider } from '@sowonai/crewx-sdk';
3
+ import { IntelligentCompressionService } from '../services/intelligent-compression.service';
4
+ export declare abstract class BaseConversationHistoryProvider implements IConversationHistoryProvider {
5
+ protected readonly logger: Logger;
6
+ protected compressionService?: IntelligentCompressionService;
7
+ constructor(loggerContext: string, compressionService?: IntelligentCompressionService);
8
+ abstract fetchHistory(threadId: string, options?: FetchHistoryOptions): Promise<ConversationThread>;
9
+ abstract hasHistory(threadId: string): Promise<boolean>;
10
+ formatForAI(thread: ConversationThread, options?: FetchHistoryOptions): Promise<string>;
11
+ protected sanitizeMessage(text: string): string;
12
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseConversationHistoryProvider = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ class BaseConversationHistoryProvider {
6
+ constructor(loggerContext, compressionService) {
7
+ this.logger = new common_1.Logger(loggerContext);
8
+ this.compressionService = compressionService;
9
+ }
10
+ async formatForAI(thread, options) {
11
+ const maxLength = options?.maxContextLength || 4000;
12
+ const limit = options?.limit || 20;
13
+ const excludeCurrent = options?.excludeCurrent ?? true;
14
+ let messages = [...thread.messages];
15
+ if (excludeCurrent && messages.length > 0) {
16
+ messages = messages.slice(0, -1);
17
+ }
18
+ if (messages.length === 0) {
19
+ return '';
20
+ }
21
+ if (this.compressionService && messages.length > limit) {
22
+ this.logger.debug(`Using intelligent compression for ${messages.length} messages`);
23
+ const threadForCompression = {
24
+ ...thread,
25
+ messages: messages
26
+ };
27
+ return await this.compressionService.compressConversationHistory(threadForCompression, {
28
+ maxTokens: Math.floor(maxLength / 4),
29
+ maxMessages: limit,
30
+ preserveRecentCount: Math.min(5, Math.floor(limit / 4)),
31
+ preserveImportant: true
32
+ });
33
+ }
34
+ return '';
35
+ }
36
+ sanitizeMessage(text) {
37
+ return text
38
+ .replace(/password[:\s]*\S+/gi, 'password: ***')
39
+ .replace(/token[:\s]*\S+/gi, 'token: ***')
40
+ .replace(/api[_-]?key[:\s]*\S+/gi, 'api_key: ***')
41
+ .replace(/secret[:\s]*\S+/gi, 'secret: ***');
42
+ }
43
+ }
44
+ exports.BaseConversationHistoryProvider = BaseConversationHistoryProvider;
45
+ //# sourceMappingURL=base-conversation-history.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-conversation-history.provider.js","sourceRoot":"","sources":["../../src/conversation/base-conversation-history.provider.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAYxC,MAAsB,+BAA+B;IAMnD,YACE,aAAqB,EACrB,kBAAkD;QAElD,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAcD,KAAK,CAAC,WAAW,CACf,MAA0B,EAC1B,OAA6B;QAE7B,MAAM,SAAS,GAAG,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC;QAEvD,IAAI,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAGpC,IAAI,cAAc,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAGD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAGD,IAAI,IAAI,CAAC,kBAAkB,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;YAEnF,MAAM,oBAAoB,GAAuB;gBAC/C,GAAG,MAAM;gBACT,QAAQ,EAAE,QAAQ;aACnB,CAAC;YAEF,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAC9D,oBAAoB,EACpB;gBACE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;gBACpC,WAAW,EAAE,KAAK;gBAClB,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACvD,iBAAiB,EAAE,IAAI;aACxB,CACF,CAAC;QACJ,CAAC;QAMD,OAAO,EAAE,CAAC;IACZ,CAAC;IAKS,eAAe,CAAC,IAAY;QACpC,OAAO,IAAI;aACR,OAAO,CAAC,qBAAqB,EAAE,eAAe,CAAC;aAC/C,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC;aACzC,OAAO,CAAC,wBAAwB,EAAE,cAAc,CAAC;aACjD,OAAO,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IACjD,CAAC;CACF;AAnFD,0EAmFC"}
@@ -0,0 +1,16 @@
1
+ import { BaseConversationHistoryProvider } from './base-conversation-history.provider';
2
+ import { ConversationMessage, ConversationThread, FetchHistoryOptions } from '@sowonai/crewx-sdk';
3
+ export declare class CliConversationHistoryProvider extends BaseConversationHistoryProvider {
4
+ private storage;
5
+ constructor();
6
+ initialize(): Promise<void>;
7
+ fetchHistory(threadId: string, options?: FetchHistoryOptions): Promise<ConversationThread>;
8
+ addMessage(threadId: string, userId: string, text: string, isAssistant?: boolean, agentId?: string): Promise<ConversationMessage>;
9
+ hasHistory(threadId: string): Promise<boolean>;
10
+ formatForAI(thread: ConversationThread, options?: FetchHistoryOptions): Promise<string>;
11
+ listThreads(): Promise<string[]>;
12
+ deleteThread(threadId: string): Promise<void>;
13
+ createThread(threadId?: string): Promise<string>;
14
+ private createEmptyThread;
15
+ cleanupOldThreads(daysToKeep?: number): Promise<number>;
16
+ }
@@ -0,0 +1,111 @@
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 CliConversationHistoryProvider_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CliConversationHistoryProvider = 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 CliConversationHistoryProvider = CliConversationHistoryProvider_1 = class CliConversationHistoryProvider extends base_conversation_history_provider_1.BaseConversationHistoryProvider {
18
+ constructor() {
19
+ super(CliConversationHistoryProvider_1.name);
20
+ this.storage = new internal_1.ConversationStorageService();
21
+ }
22
+ async initialize() {
23
+ await this.storage.initialize();
24
+ }
25
+ async fetchHistory(threadId, options) {
26
+ try {
27
+ this.logger.log(`Fetching CLI thread history: ${threadId}`);
28
+ const thread = await this.storage.loadThread(threadId);
29
+ if (!thread) {
30
+ return this.createEmptyThread(threadId);
31
+ }
32
+ if (options?.limit && thread.messages.length > options.limit) {
33
+ thread.messages = thread.messages.slice(-options.limit);
34
+ }
35
+ this.logger.log(`Retrieved ${thread.messages.length} messages from CLI thread`);
36
+ return thread;
37
+ }
38
+ catch (error) {
39
+ this.logger.error(`Error fetching CLI thread history: ${error.message}`);
40
+ return this.createEmptyThread(threadId);
41
+ }
42
+ }
43
+ async addMessage(threadId, userId, text, isAssistant = false, agentId) {
44
+ const message = {
45
+ id: `${Date.now()}-${Math.random().toString(36).substring(7)}`,
46
+ userId,
47
+ text: this.sanitizeMessage(text),
48
+ timestamp: new Date(),
49
+ isAssistant,
50
+ };
51
+ const normalizedAgentId = agentId?.trim();
52
+ if (normalizedAgentId) {
53
+ message.metadata = {
54
+ ...(message.metadata ?? {}),
55
+ agent_id: normalizedAgentId,
56
+ };
57
+ }
58
+ try {
59
+ await this.storage.addMessage(threadId, message, 'cli');
60
+ this.logger.debug(`Message added to thread ${threadId}${agentId ? ` (agent: ${agentId})` : ''}`);
61
+ return message;
62
+ }
63
+ catch (error) {
64
+ this.logger.error(`Failed to add message: ${error.message}`);
65
+ throw error;
66
+ }
67
+ }
68
+ async hasHistory(threadId) {
69
+ return await this.storage.hasThread(threadId);
70
+ }
71
+ formatForAI(thread, options) {
72
+ return super.formatForAI(thread, options);
73
+ }
74
+ async listThreads() {
75
+ return await this.storage.listThreads();
76
+ }
77
+ async deleteThread(threadId) {
78
+ await this.storage.deleteThread(threadId);
79
+ this.logger.log(`Thread deleted: ${threadId}`);
80
+ }
81
+ async createThread(threadId) {
82
+ const id = threadId || `cli-${Date.now()}`;
83
+ const thread = {
84
+ threadId: id,
85
+ platform: 'cli',
86
+ messages: [],
87
+ metadata: {
88
+ createdAt: new Date().toISOString(),
89
+ },
90
+ };
91
+ await this.storage.saveThread(thread);
92
+ this.logger.log(`New thread created: ${id}`);
93
+ return id;
94
+ }
95
+ createEmptyThread(threadId) {
96
+ return {
97
+ threadId,
98
+ platform: 'cli',
99
+ messages: [],
100
+ };
101
+ }
102
+ async cleanupOldThreads(daysToKeep = 30) {
103
+ return await this.storage.cleanupOldThreads(daysToKeep);
104
+ }
105
+ };
106
+ exports.CliConversationHistoryProvider = CliConversationHistoryProvider;
107
+ exports.CliConversationHistoryProvider = CliConversationHistoryProvider = CliConversationHistoryProvider_1 = __decorate([
108
+ (0, common_1.Injectable)(),
109
+ __metadata("design:paramtypes", [])
110
+ ], CliConversationHistoryProvider);
111
+ //# sourceMappingURL=cli-conversation-history.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-conversation-history.provider.js","sourceRoot":"","sources":["../../src/conversation/cli-conversation-history.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { IConversationHistoryProvider } from '@sowonai/crewx-sdk';
2
+ export type Platform = 'slack' | 'cli';
3
+ export declare class ConversationProviderFactory {
4
+ private readonly logger;
5
+ private providers;
6
+ getProvider(platform: Platform): IConversationHistoryProvider;
7
+ private createProvider;
8
+ hasProvider(platform: Platform): boolean;
9
+ clearProviders(): void;
10
+ }
@@ -0,0 +1,50 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,6 @@
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';
@@ -0,0 +1,27 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,28 @@
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 getCachedThread;
23
+ private cacheThread;
24
+ private createEmptyThread;
25
+ clearCache(): void;
26
+ invalidateCache(threadId: string): void;
27
+ private persistThread;
28
+ }