linguclaw 0.4.0

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 (168) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/dist/agent-system.d.ts +196 -0
  4. package/dist/agent-system.d.ts.map +1 -0
  5. package/dist/agent-system.js +738 -0
  6. package/dist/agent-system.js.map +1 -0
  7. package/dist/alphabeta.d.ts +54 -0
  8. package/dist/alphabeta.d.ts.map +1 -0
  9. package/dist/alphabeta.js +193 -0
  10. package/dist/alphabeta.js.map +1 -0
  11. package/dist/browser.d.ts +62 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +224 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +7 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +565 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/code-parser.d.ts +39 -0
  20. package/dist/code-parser.d.ts.map +1 -0
  21. package/dist/code-parser.js +385 -0
  22. package/dist/code-parser.js.map +1 -0
  23. package/dist/config.d.ts +66 -0
  24. package/dist/config.d.ts.map +1 -0
  25. package/dist/config.js +232 -0
  26. package/dist/config.js.map +1 -0
  27. package/dist/core/engine.d.ts +359 -0
  28. package/dist/core/engine.d.ts.map +1 -0
  29. package/dist/core/engine.js +127 -0
  30. package/dist/core/engine.js.map +1 -0
  31. package/dist/daemon.d.ts +29 -0
  32. package/dist/daemon.d.ts.map +1 -0
  33. package/dist/daemon.js +212 -0
  34. package/dist/daemon.js.map +1 -0
  35. package/dist/email-receiver.d.ts +63 -0
  36. package/dist/email-receiver.d.ts.map +1 -0
  37. package/dist/email-receiver.js +553 -0
  38. package/dist/email-receiver.js.map +1 -0
  39. package/dist/git-integration.d.ts +180 -0
  40. package/dist/git-integration.d.ts.map +1 -0
  41. package/dist/git-integration.js +850 -0
  42. package/dist/git-integration.js.map +1 -0
  43. package/dist/inbox.d.ts +84 -0
  44. package/dist/inbox.d.ts.map +1 -0
  45. package/dist/inbox.js +198 -0
  46. package/dist/inbox.js.map +1 -0
  47. package/dist/index.d.ts +6 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +41 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/languages/cpp.d.ts +51 -0
  52. package/dist/languages/cpp.d.ts.map +1 -0
  53. package/dist/languages/cpp.js +930 -0
  54. package/dist/languages/cpp.js.map +1 -0
  55. package/dist/languages/csharp.d.ts +79 -0
  56. package/dist/languages/csharp.d.ts.map +1 -0
  57. package/dist/languages/csharp.js +1776 -0
  58. package/dist/languages/csharp.js.map +1 -0
  59. package/dist/languages/go.d.ts +50 -0
  60. package/dist/languages/go.d.ts.map +1 -0
  61. package/dist/languages/go.js +882 -0
  62. package/dist/languages/go.js.map +1 -0
  63. package/dist/languages/java.d.ts +47 -0
  64. package/dist/languages/java.d.ts.map +1 -0
  65. package/dist/languages/java.js +649 -0
  66. package/dist/languages/java.js.map +1 -0
  67. package/dist/languages/python.d.ts +47 -0
  68. package/dist/languages/python.d.ts.map +1 -0
  69. package/dist/languages/python.js +655 -0
  70. package/dist/languages/python.js.map +1 -0
  71. package/dist/languages/rust.d.ts +61 -0
  72. package/dist/languages/rust.d.ts.map +1 -0
  73. package/dist/languages/rust.js +1064 -0
  74. package/dist/languages/rust.js.map +1 -0
  75. package/dist/logger.d.ts +20 -0
  76. package/dist/logger.d.ts.map +1 -0
  77. package/dist/logger.js +133 -0
  78. package/dist/logger.js.map +1 -0
  79. package/dist/longterm-memory.d.ts +47 -0
  80. package/dist/longterm-memory.d.ts.map +1 -0
  81. package/dist/longterm-memory.js +300 -0
  82. package/dist/longterm-memory.js.map +1 -0
  83. package/dist/memory.d.ts +42 -0
  84. package/dist/memory.d.ts.map +1 -0
  85. package/dist/memory.js +274 -0
  86. package/dist/memory.js.map +1 -0
  87. package/dist/messaging.d.ts +103 -0
  88. package/dist/messaging.d.ts.map +1 -0
  89. package/dist/messaging.js +645 -0
  90. package/dist/messaging.js.map +1 -0
  91. package/dist/multi-provider.d.ts +69 -0
  92. package/dist/multi-provider.d.ts.map +1 -0
  93. package/dist/multi-provider.js +484 -0
  94. package/dist/multi-provider.js.map +1 -0
  95. package/dist/orchestrator.d.ts +65 -0
  96. package/dist/orchestrator.d.ts.map +1 -0
  97. package/dist/orchestrator.js +441 -0
  98. package/dist/orchestrator.js.map +1 -0
  99. package/dist/plugins.d.ts +52 -0
  100. package/dist/plugins.d.ts.map +1 -0
  101. package/dist/plugins.js +215 -0
  102. package/dist/plugins.js.map +1 -0
  103. package/dist/prism-orchestrator.d.ts +26 -0
  104. package/dist/prism-orchestrator.d.ts.map +1 -0
  105. package/dist/prism-orchestrator.js +191 -0
  106. package/dist/prism-orchestrator.js.map +1 -0
  107. package/dist/prism.d.ts +46 -0
  108. package/dist/prism.d.ts.map +1 -0
  109. package/dist/prism.js +188 -0
  110. package/dist/prism.js.map +1 -0
  111. package/dist/privacy.d.ts +23 -0
  112. package/dist/privacy.d.ts.map +1 -0
  113. package/dist/privacy.js +220 -0
  114. package/dist/privacy.js.map +1 -0
  115. package/dist/proactive.d.ts +30 -0
  116. package/dist/proactive.d.ts.map +1 -0
  117. package/dist/proactive.js +260 -0
  118. package/dist/proactive.js.map +1 -0
  119. package/dist/refactoring-engine.d.ts +100 -0
  120. package/dist/refactoring-engine.d.ts.map +1 -0
  121. package/dist/refactoring-engine.js +717 -0
  122. package/dist/refactoring-engine.js.map +1 -0
  123. package/dist/resilience.d.ts +43 -0
  124. package/dist/resilience.d.ts.map +1 -0
  125. package/dist/resilience.js +200 -0
  126. package/dist/resilience.js.map +1 -0
  127. package/dist/safety.d.ts +40 -0
  128. package/dist/safety.d.ts.map +1 -0
  129. package/dist/safety.js +133 -0
  130. package/dist/safety.js.map +1 -0
  131. package/dist/sandbox.d.ts +33 -0
  132. package/dist/sandbox.d.ts.map +1 -0
  133. package/dist/sandbox.js +173 -0
  134. package/dist/sandbox.js.map +1 -0
  135. package/dist/scheduler.d.ts +72 -0
  136. package/dist/scheduler.d.ts.map +1 -0
  137. package/dist/scheduler.js +374 -0
  138. package/dist/scheduler.js.map +1 -0
  139. package/dist/semantic-memory.d.ts +70 -0
  140. package/dist/semantic-memory.d.ts.map +1 -0
  141. package/dist/semantic-memory.js +430 -0
  142. package/dist/semantic-memory.js.map +1 -0
  143. package/dist/skills.d.ts +97 -0
  144. package/dist/skills.d.ts.map +1 -0
  145. package/dist/skills.js +575 -0
  146. package/dist/skills.js.map +1 -0
  147. package/dist/static/dashboard.html +853 -0
  148. package/dist/static/hub.html +772 -0
  149. package/dist/static/index.html +818 -0
  150. package/dist/static/logo.svg +24 -0
  151. package/dist/static/workflow-editor.html +913 -0
  152. package/dist/tools.d.ts +67 -0
  153. package/dist/tools.d.ts.map +1 -0
  154. package/dist/tools.js +303 -0
  155. package/dist/tools.js.map +1 -0
  156. package/dist/types.d.ts +295 -0
  157. package/dist/types.d.ts.map +1 -0
  158. package/dist/types.js +90 -0
  159. package/dist/types.js.map +1 -0
  160. package/dist/web.d.ts +76 -0
  161. package/dist/web.d.ts.map +1 -0
  162. package/dist/web.js +2139 -0
  163. package/dist/web.js.map +1 -0
  164. package/dist/workflow-engine.d.ts +114 -0
  165. package/dist/workflow-engine.d.ts.map +1 -0
  166. package/dist/workflow-engine.js +855 -0
  167. package/dist/workflow-engine.js.map +1 -0
  168. package/package.json +77 -0
@@ -0,0 +1,42 @@
1
+ /**
2
+ * RAG Memory system backed by SemanticMemory (TF-IDF + SQLite)
3
+ * No external dependencies like lancedb required.
4
+ */
5
+ export declare class RAGMemory {
6
+ projectRoot: string;
7
+ available: boolean;
8
+ private semanticMemory;
9
+ private indexedCount;
10
+ constructor(projectRoot: string);
11
+ /**
12
+ * Initialize memory
13
+ */
14
+ init(): Promise<boolean>;
15
+ /**
16
+ * Index project codebase
17
+ */
18
+ indexProject(force?: boolean): Promise<number>;
19
+ /**
20
+ * Parse file into chunks
21
+ */
22
+ private parseFile;
23
+ /**
24
+ * Extract name from definition line
25
+ */
26
+ private extractName;
27
+ /**
28
+ * Search codebase with smart context
29
+ */
30
+ search(query: string, k?: number): Promise<string>;
31
+ /**
32
+ * Get memory stats
33
+ */
34
+ getStats(): {
35
+ count: number;
36
+ };
37
+ /**
38
+ * Get related code for a symbol
39
+ */
40
+ getRelated(symbol: string, k?: number): string;
41
+ }
42
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,qBAAa,SAAS;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAa;gBAErB,WAAW,EAAE,MAAM;IAO/B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB9B;;OAEG;IACG,YAAY,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAuF3D;;OAEG;IACH,OAAO,CAAC,SAAS;IA+DjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B3D;;OAEG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAc7B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,MAAM;CAwBlD"}
package/dist/memory.js ADDED
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ /**
3
+ * RAG Memory system backed by SemanticMemory (TF-IDF + SQLite)
4
+ * No external dependencies like lancedb required.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.RAGMemory = void 0;
11
+ const path_1 = __importDefault(require("path"));
12
+ const fs_1 = __importDefault(require("fs"));
13
+ const logger_1 = require("./logger");
14
+ const semantic_memory_1 = require("./semantic-memory");
15
+ const code_parser_1 = require("./code-parser");
16
+ const logger = (0, logger_1.getLogger)();
17
+ class RAGMemory {
18
+ projectRoot;
19
+ available;
20
+ semanticMemory;
21
+ indexedCount = 0;
22
+ constructor(projectRoot) {
23
+ this.projectRoot = path_1.default.resolve(projectRoot);
24
+ const dbPath = path_1.default.join(this.projectRoot, '.linguclaw', 'rag-memory.db');
25
+ this.semanticMemory = new semantic_memory_1.SemanticMemory(dbPath);
26
+ this.available = false;
27
+ }
28
+ /**
29
+ * Initialize memory
30
+ */
31
+ async init() {
32
+ try {
33
+ const ok = this.semanticMemory.init();
34
+ if (ok) {
35
+ this.available = true;
36
+ const stats = this.semanticMemory.getStats();
37
+ this.indexedCount = stats.totalDocuments;
38
+ logger.info(`RAG memory initialized (${this.indexedCount} chunks indexed)`);
39
+ }
40
+ return ok;
41
+ }
42
+ catch (error) {
43
+ logger.warn(`RAG memory init failed: ${error.message}`);
44
+ this.available = false;
45
+ return false;
46
+ }
47
+ }
48
+ /**
49
+ * Index project codebase
50
+ */
51
+ async indexProject(force = false) {
52
+ if (!this.available) {
53
+ logger.warn('RAG memory not available');
54
+ return 0;
55
+ }
56
+ const stats = this.getStats();
57
+ if (stats.count > 0 && !force) {
58
+ logger.info(`Memory already has ${stats.count} chunks, use force=true to reindex`);
59
+ return 0;
60
+ }
61
+ // Find all code files
62
+ const extensions = ['.ts', '.tsx', '.js', '.jsx', '.py', '.java', '.go', '.rs', '.cpp', '.c', '.h'];
63
+ const files = [];
64
+ const findFiles = (dir, depth = 0) => {
65
+ if (depth > 15)
66
+ return; // Prevent excessive recursion
67
+ try {
68
+ const entries = fs_1.default.readdirSync(dir);
69
+ for (const entry of entries) {
70
+ const fullPath = path_1.default.join(dir, entry);
71
+ const stat = fs_1.default.statSync(fullPath);
72
+ if (stat.isDirectory() && !entry.startsWith('.') && entry !== 'node_modules' && entry !== 'dist' && entry !== 'tests' && entry !== '__pycache__') {
73
+ findFiles(fullPath, depth + 1);
74
+ }
75
+ else if (stat.isFile() && extensions.some(ext => entry.endsWith(ext))) {
76
+ files.push(fullPath);
77
+ }
78
+ }
79
+ }
80
+ catch (err) {
81
+ logger.debug(`Skipping unreadable directory ${dir}: ${err.message}`);
82
+ }
83
+ };
84
+ findFiles(this.projectRoot);
85
+ // Parse and index files with AST for TypeScript
86
+ let indexed = 0;
87
+ const parsedChunks = [];
88
+ for (const file of files) {
89
+ try {
90
+ const ext = path_1.default.extname(file);
91
+ if (ext === '.ts' || ext === '.tsx' || ext === '.js' || ext === '.jsx') {
92
+ // Use AST-based parsing for TypeScript/JavaScript
93
+ const chunks = (0, code_parser_1.parseTypeScriptFile)(file);
94
+ parsedChunks.push(...chunks);
95
+ indexed += chunks.length;
96
+ }
97
+ else {
98
+ // Use regex-based parsing for other languages
99
+ const content = fs_1.default.readFileSync(file, 'utf-8');
100
+ const chunks = (0, code_parser_1.parseGenericFile)(file, content);
101
+ parsedChunks.push(...chunks);
102
+ indexed += chunks.length;
103
+ }
104
+ }
105
+ catch (error) {
106
+ logger.warn(`Failed to index ${file}: ${error}`);
107
+ }
108
+ }
109
+ // Store chunks in semantic memory with rich metadata
110
+ for (const chunk of parsedChunks) {
111
+ this.semanticMemory.store(chunk.id, chunk.content, 'code', {
112
+ file_path: chunk.filePath,
113
+ chunk_type: chunk.chunkType,
114
+ name: chunk.name,
115
+ line_start: chunk.lineStart,
116
+ line_end: chunk.lineEnd,
117
+ signature: chunk.signature,
118
+ documentation: chunk.documentation,
119
+ is_exported: chunk.isExported,
120
+ dependencies: chunk.dependencies,
121
+ dependents: chunk.dependents,
122
+ });
123
+ }
124
+ // Rebuild TF-IDF index after batch insert
125
+ if (parsedChunks.length > 0) {
126
+ this.semanticMemory.rebuildIndex();
127
+ }
128
+ this.indexedCount = parsedChunks.length;
129
+ logger.info(`Indexed ${indexed} AST chunks from ${files.length} files`);
130
+ return indexed;
131
+ }
132
+ /**
133
+ * Parse file into chunks
134
+ */
135
+ parseFile(filePath, content) {
136
+ const chunks = [];
137
+ const lines = content.split('\n');
138
+ const ext = path_1.default.extname(filePath);
139
+ const baseName = path_1.default.basename(filePath);
140
+ // Simple parsing: Split into logical sections
141
+ // In production, you'd use AST parsing
142
+ let currentChunk = {
143
+ id: `${filePath}-chunk-0`,
144
+ file_path: filePath,
145
+ content: '',
146
+ chunk_type: 'other',
147
+ name: baseName,
148
+ line_start: 1,
149
+ line_end: 1,
150
+ };
151
+ let chunkIndex = 0;
152
+ for (let i = 0; i < lines.length; i++) {
153
+ const line = lines[i];
154
+ // Detect function/class definitions (simplified)
155
+ const isFunction = /^(export\s+)?(async\s+)?function\s+\w+/.test(line) ||
156
+ /^(export\s+)?(async\s+)?\w+\s*\([^)]*\)\s*\{?\s*$/.test(line);
157
+ const isClass = /^(export\s+)?class\s+\w+/.test(line);
158
+ if ((isFunction || isClass) && currentChunk.content) {
159
+ // Save previous chunk
160
+ chunks.push({
161
+ ...currentChunk,
162
+ id: `${filePath}-chunk-${chunkIndex++}`,
163
+ line_end: i,
164
+ });
165
+ // Start new chunk
166
+ currentChunk = {
167
+ id: '',
168
+ file_path: filePath,
169
+ content: line,
170
+ chunk_type: isFunction ? 'function' : 'class',
171
+ name: this.extractName(line) || baseName,
172
+ line_start: i + 1,
173
+ line_end: i + 1,
174
+ };
175
+ }
176
+ else {
177
+ currentChunk.content += '\n' + line;
178
+ currentChunk.line_end = i + 1;
179
+ }
180
+ }
181
+ // Add final chunk
182
+ if (currentChunk.content) {
183
+ chunks.push({
184
+ ...currentChunk,
185
+ id: `${filePath}-chunk-${chunkIndex}`,
186
+ });
187
+ }
188
+ return chunks;
189
+ }
190
+ /**
191
+ * Extract name from definition line
192
+ */
193
+ extractName(line) {
194
+ const match = line.match(/(?:function|class)\s+(\w+)/);
195
+ return match ? match[1] : null;
196
+ }
197
+ /**
198
+ * Search codebase with smart context
199
+ */
200
+ async search(query, k = 5) {
201
+ if (!this.available) {
202
+ return '[Memory unavailable]';
203
+ }
204
+ try {
205
+ const results = this.semanticMemory.search(query, k, 'code');
206
+ if (!results || results.length === 0) {
207
+ return '[No relevant code found]';
208
+ }
209
+ const formatted = results.map((r, i) => {
210
+ const meta = r.metadata || {};
211
+ let context = `[${i + 1}] ${meta.chunk_type || 'code'}: ${meta.name || 'unknown'} (${meta.file_path || '?'}:${meta.line_start || '?'})`;
212
+ if (meta.signature)
213
+ context += `\n Signature: ${meta.signature}`;
214
+ if (meta.documentation)
215
+ context += `\n Docs: ${meta.documentation.substring(0, 100)}...`;
216
+ if (meta.dependencies?.length > 0)
217
+ context += `\n Uses: ${meta.dependencies.slice(0, 5).join(', ')}`;
218
+ context += `\n${r.content.slice(0, 200)}...`;
219
+ return context;
220
+ });
221
+ return formatted.join('\n\n');
222
+ }
223
+ catch (error) {
224
+ logger.error(`Search error: ${error.message}`);
225
+ return `[Search error: ${error.message}]`;
226
+ }
227
+ }
228
+ /**
229
+ * Get memory stats
230
+ */
231
+ getStats() {
232
+ if (!this.available) {
233
+ return { count: 0 };
234
+ }
235
+ try {
236
+ const stats = this.semanticMemory.getStats();
237
+ return { count: stats.totalDocuments };
238
+ }
239
+ catch (err) {
240
+ logger.debug(`getStats error: ${err.message}`);
241
+ return { count: 0 };
242
+ }
243
+ }
244
+ /**
245
+ * Get related code for a symbol
246
+ */
247
+ getRelated(symbol, k = 3) {
248
+ if (!this.available)
249
+ return '[Memory unavailable]';
250
+ try {
251
+ // Find the symbol
252
+ const all = this.semanticMemory.search(symbol, 50, 'code');
253
+ const target = all.find(r => r.metadata?.name === symbol);
254
+ if (!target)
255
+ return `[Symbol '${symbol}' not found]`;
256
+ // Get dependencies and dependents
257
+ const meta = target.metadata || {};
258
+ const deps = meta.dependencies || [];
259
+ const dps = meta.dependents || [];
260
+ let result = `Related to ${symbol}:\n\n`;
261
+ if (deps.length > 0)
262
+ result += `Dependencies: ${deps.slice(0, k).join(', ')}\n`;
263
+ if (dps.length > 0)
264
+ result += `Used by: ${dps.slice(0, k).join(', ')}\n`;
265
+ return result;
266
+ }
267
+ catch (err) {
268
+ logger.error(`getRelated error: ${err.message}`);
269
+ return `[Error: ${err.message}]`;
270
+ }
271
+ }
272
+ }
273
+ exports.RAGMemory = RAGMemory;
274
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Messaging platform integrations - Telegram, Discord, Slack, WhatsApp
3
+ * Real implementations using HTTP APIs via axios
4
+ */
5
+ import { MessagingPlatform, ChatMessage, ChatResponse } from './types';
6
+ type MessageHandler = (msg: ChatMessage) => ChatResponse | null | Promise<ChatResponse | null>;
7
+ export declare abstract class BaseMessagingPlatform {
8
+ platform: MessagingPlatform;
9
+ messageHandlers: MessageHandler[];
10
+ running: boolean;
11
+ constructor(platform: MessagingPlatform);
12
+ onMessage(handler: MessageHandler): void;
13
+ protected handleMessage(msg: ChatMessage): Promise<ChatResponse | null>;
14
+ abstract start(): Promise<void>;
15
+ abstract stop(): Promise<void>;
16
+ abstract send(response: ChatResponse): Promise<void>;
17
+ }
18
+ /**
19
+ * Telegram Bot - Uses Telegram Bot API via HTTP long polling
20
+ * Requires: TELEGRAM_BOT_TOKEN from @BotFather
21
+ */
22
+ export declare class TelegramBot extends BaseMessagingPlatform {
23
+ private token;
24
+ private allowedChats?;
25
+ private api;
26
+ private pollTimer;
27
+ private lastUpdateId;
28
+ constructor(token: string);
29
+ allowChats(chatIds: number[]): void;
30
+ start(): Promise<void>;
31
+ private poll;
32
+ stop(): Promise<void>;
33
+ send(response: ChatResponse): Promise<void>;
34
+ }
35
+ /**
36
+ * Discord Bot - Uses Discord Gateway API for receiving, REST for sending
37
+ * Requires: DISCORD_BOT_TOKEN from Discord Developer Portal
38
+ */
39
+ export declare class DiscordBot extends BaseMessagingPlatform {
40
+ private token;
41
+ private api;
42
+ private ws;
43
+ private heartbeatInterval;
44
+ private lastSequence;
45
+ private reconnectAttempts;
46
+ constructor(token: string);
47
+ start(): Promise<void>;
48
+ private connectGateway;
49
+ private handleGatewayEvent;
50
+ stop(): Promise<void>;
51
+ send(response: ChatResponse): Promise<void>;
52
+ }
53
+ /**
54
+ * Slack Bot - Uses Slack Web API + Socket Mode for real-time events
55
+ * Requires: SLACK_BOT_TOKEN (xoxb-...) and SLACK_APP_TOKEN (xapp-...)
56
+ */
57
+ export declare class SlackBot extends BaseMessagingPlatform {
58
+ private botToken;
59
+ private appToken?;
60
+ private api;
61
+ private ws;
62
+ constructor(botToken: string, appToken?: string);
63
+ start(): Promise<void>;
64
+ private connectSocketMode;
65
+ stop(): Promise<void>;
66
+ send(response: ChatResponse): Promise<void>;
67
+ }
68
+ /**
69
+ * WhatsApp Bot - Uses Twilio API for sending/receiving messages
70
+ * Requires: TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_WHATSAPP_FROM
71
+ */
72
+ export declare class WhatsAppBot extends BaseMessagingPlatform {
73
+ private accountSid;
74
+ private authToken;
75
+ private fromNumber;
76
+ private api;
77
+ constructor(accountSid?: string, authToken?: string, fromNumber?: string);
78
+ start(): Promise<void>;
79
+ stop(): Promise<void>;
80
+ send(response: ChatResponse): Promise<void>;
81
+ handleWebhook(body: Record<string, string>): ChatMessage | null;
82
+ }
83
+ /**
84
+ * MessagingHub - Central manager for all messaging platforms
85
+ */
86
+ export declare class MessagingHub {
87
+ platforms: Map<MessagingPlatform, BaseMessagingPlatform>;
88
+ private agentCallback?;
89
+ constructor();
90
+ registerAgent(callback: MessageHandler): void;
91
+ addPlatform(platform: BaseMessagingPlatform): void;
92
+ startAll(): Promise<void>;
93
+ stopAll(): Promise<void>;
94
+ sendToPlatform(platform: MessagingPlatform, response: ChatResponse): Promise<void>;
95
+ getStatus(): Record<string, boolean>;
96
+ createPlatformsFromEnv(): BaseMessagingPlatform[];
97
+ }
98
+ export declare function createTelegramBot(token: string, allowedChats?: number[]): TelegramBot;
99
+ export declare function createDiscordBot(token: string): DiscordBot;
100
+ export declare function createSlackBot(botToken: string, appToken?: string): SlackBot;
101
+ export declare function createWhatsAppTwilio(): WhatsAppBot;
102
+ export {};
103
+ //# sourceMappingURL=messaging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}