@dotsetlabs/dotclaw 1.8.0 → 2.0.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 (175) hide show
  1. package/.env.example +6 -0
  2. package/README.md +14 -7
  3. package/config-examples/groups/global/CLAUDE.md +6 -14
  4. package/config-examples/groups/main/CLAUDE.md +8 -39
  5. package/config-examples/runtime.json +4 -4
  6. package/container/Dockerfile +20 -2
  7. package/container/agent-runner/package-lock.json +260 -2
  8. package/container/agent-runner/package.json +2 -1
  9. package/container/agent-runner/src/agent-config.ts +57 -8
  10. package/container/agent-runner/src/browser.ts +180 -0
  11. package/container/agent-runner/src/container-protocol.ts +5 -0
  12. package/container/agent-runner/src/id.ts +3 -2
  13. package/container/agent-runner/src/index.ts +184 -390
  14. package/container/agent-runner/src/ipc.ts +33 -1
  15. package/container/agent-runner/src/mcp-client.ts +222 -0
  16. package/container/agent-runner/src/mcp-registry.ts +163 -0
  17. package/container/agent-runner/src/skill-loader.ts +375 -0
  18. package/container/agent-runner/src/tools.ts +260 -32
  19. package/container/agent-runner/src/tts.ts +61 -0
  20. package/container/agent-runner/tsconfig.json +1 -0
  21. package/dist/admin-commands.d.ts.map +1 -1
  22. package/dist/admin-commands.js +12 -0
  23. package/dist/admin-commands.js.map +1 -1
  24. package/dist/agent-execution.d.ts +3 -1
  25. package/dist/agent-execution.d.ts.map +1 -1
  26. package/dist/agent-execution.js +21 -0
  27. package/dist/agent-execution.js.map +1 -1
  28. package/dist/background-job-classifier.d.ts +1 -1
  29. package/dist/background-job-classifier.d.ts.map +1 -1
  30. package/dist/background-jobs.d.ts.map +1 -1
  31. package/dist/background-jobs.js +30 -10
  32. package/dist/background-jobs.js.map +1 -1
  33. package/dist/cli.js +61 -16
  34. package/dist/cli.js.map +1 -1
  35. package/dist/config.d.ts +0 -2
  36. package/dist/config.d.ts.map +1 -1
  37. package/dist/config.js +1 -3
  38. package/dist/config.js.map +1 -1
  39. package/dist/container-protocol.d.ts +5 -0
  40. package/dist/container-protocol.d.ts.map +1 -1
  41. package/dist/container-runner.d.ts.map +1 -1
  42. package/dist/container-runner.js +33 -14
  43. package/dist/container-runner.js.map +1 -1
  44. package/dist/dashboard.d.ts +5 -0
  45. package/dist/dashboard.d.ts.map +1 -1
  46. package/dist/dashboard.js +11 -5
  47. package/dist/dashboard.js.map +1 -1
  48. package/dist/db.d.ts +0 -13
  49. package/dist/db.d.ts.map +1 -1
  50. package/dist/db.js +41 -70
  51. package/dist/db.js.map +1 -1
  52. package/dist/error-messages.d.ts.map +1 -1
  53. package/dist/error-messages.js +13 -5
  54. package/dist/error-messages.js.map +1 -1
  55. package/dist/hooks.d.ts +7 -0
  56. package/dist/hooks.d.ts.map +1 -0
  57. package/dist/hooks.js +93 -0
  58. package/dist/hooks.js.map +1 -0
  59. package/dist/id.d.ts.map +1 -1
  60. package/dist/id.js +2 -1
  61. package/dist/id.js.map +1 -1
  62. package/dist/index.js +742 -2793
  63. package/dist/index.js.map +1 -1
  64. package/dist/ipc-dispatcher.d.ts +26 -0
  65. package/dist/ipc-dispatcher.d.ts.map +1 -0
  66. package/dist/ipc-dispatcher.js +1044 -0
  67. package/dist/ipc-dispatcher.js.map +1 -0
  68. package/dist/local-embeddings.d.ts +7 -0
  69. package/dist/local-embeddings.d.ts.map +1 -0
  70. package/dist/local-embeddings.js +60 -0
  71. package/dist/local-embeddings.js.map +1 -0
  72. package/dist/maintenance.d.ts.map +1 -1
  73. package/dist/maintenance.js +7 -1
  74. package/dist/maintenance.js.map +1 -1
  75. package/dist/memory-embeddings.d.ts +1 -1
  76. package/dist/memory-embeddings.d.ts.map +1 -1
  77. package/dist/memory-embeddings.js +59 -31
  78. package/dist/memory-embeddings.js.map +1 -1
  79. package/dist/memory-store.d.ts +0 -10
  80. package/dist/memory-store.d.ts.map +1 -1
  81. package/dist/memory-store.js +12 -28
  82. package/dist/memory-store.js.map +1 -1
  83. package/dist/message-pipeline.d.ts +47 -0
  84. package/dist/message-pipeline.d.ts.map +1 -0
  85. package/dist/message-pipeline.js +876 -0
  86. package/dist/message-pipeline.js.map +1 -0
  87. package/dist/metrics.d.ts +8 -8
  88. package/dist/metrics.d.ts.map +1 -1
  89. package/dist/metrics.js.map +1 -1
  90. package/dist/model-registry.d.ts +0 -14
  91. package/dist/model-registry.d.ts.map +1 -1
  92. package/dist/model-registry.js +0 -36
  93. package/dist/model-registry.js.map +1 -1
  94. package/dist/orchestration.d.ts +39 -0
  95. package/dist/orchestration.d.ts.map +1 -0
  96. package/dist/orchestration.js +136 -0
  97. package/dist/orchestration.js.map +1 -0
  98. package/dist/paths.d.ts.map +1 -1
  99. package/dist/paths.js +2 -0
  100. package/dist/paths.js.map +1 -1
  101. package/dist/providers/discord/discord-format.d.ts +16 -0
  102. package/dist/providers/discord/discord-format.d.ts.map +1 -0
  103. package/dist/providers/discord/discord-format.js +153 -0
  104. package/dist/providers/discord/discord-format.js.map +1 -0
  105. package/dist/providers/discord/discord-provider.d.ts +50 -0
  106. package/dist/providers/discord/discord-provider.d.ts.map +1 -0
  107. package/dist/providers/discord/discord-provider.js +604 -0
  108. package/dist/providers/discord/discord-provider.js.map +1 -0
  109. package/dist/providers/discord/index.d.ts +4 -0
  110. package/dist/providers/discord/index.d.ts.map +1 -0
  111. package/dist/providers/discord/index.js +3 -0
  112. package/dist/providers/discord/index.js.map +1 -0
  113. package/dist/providers/registry.d.ts +14 -0
  114. package/dist/providers/registry.d.ts.map +1 -0
  115. package/dist/providers/registry.js +49 -0
  116. package/dist/providers/registry.js.map +1 -0
  117. package/dist/providers/telegram/index.d.ts +4 -0
  118. package/dist/providers/telegram/index.d.ts.map +1 -0
  119. package/dist/providers/telegram/index.js +3 -0
  120. package/dist/providers/telegram/index.js.map +1 -0
  121. package/dist/providers/telegram/telegram-format.d.ts +3 -0
  122. package/dist/providers/telegram/telegram-format.d.ts.map +1 -0
  123. package/dist/providers/telegram/telegram-format.js +215 -0
  124. package/dist/providers/telegram/telegram-format.js.map +1 -0
  125. package/dist/providers/telegram/telegram-provider.d.ts +51 -0
  126. package/dist/providers/telegram/telegram-provider.d.ts.map +1 -0
  127. package/dist/providers/telegram/telegram-provider.js +824 -0
  128. package/dist/providers/telegram/telegram-provider.js.map +1 -0
  129. package/dist/providers/types.d.ts +107 -0
  130. package/dist/providers/types.d.ts.map +1 -0
  131. package/dist/providers/types.js +2 -0
  132. package/dist/providers/types.js.map +1 -0
  133. package/dist/request-router.d.ts.map +1 -1
  134. package/dist/request-router.js +12 -26
  135. package/dist/request-router.js.map +1 -1
  136. package/dist/runtime-config.d.ts +70 -6
  137. package/dist/runtime-config.d.ts.map +1 -1
  138. package/dist/runtime-config.js +119 -65
  139. package/dist/runtime-config.js.map +1 -1
  140. package/dist/skill-manager.d.ts +39 -0
  141. package/dist/skill-manager.d.ts.map +1 -0
  142. package/dist/skill-manager.js +286 -0
  143. package/dist/skill-manager.js.map +1 -0
  144. package/dist/task-scheduler.d.ts.map +1 -1
  145. package/dist/task-scheduler.js +56 -11
  146. package/dist/task-scheduler.js.map +1 -1
  147. package/dist/telegram-format.d.ts.map +1 -1
  148. package/dist/telegram-format.js +16 -1
  149. package/dist/telegram-format.js.map +1 -1
  150. package/dist/tool-intent-probe.d.ts +11 -0
  151. package/dist/tool-intent-probe.d.ts.map +1 -0
  152. package/dist/tool-intent-probe.js +63 -0
  153. package/dist/tool-intent-probe.js.map +1 -0
  154. package/dist/tool-policy.d.ts.map +1 -1
  155. package/dist/tool-policy.js +18 -0
  156. package/dist/tool-policy.js.map +1 -1
  157. package/dist/transcription.d.ts +8 -0
  158. package/dist/transcription.d.ts.map +1 -0
  159. package/dist/transcription.js +174 -0
  160. package/dist/transcription.js.map +1 -0
  161. package/dist/types.d.ts +2 -9
  162. package/dist/types.d.ts.map +1 -1
  163. package/dist/workflow-engine.d.ts +51 -0
  164. package/dist/workflow-engine.d.ts.map +1 -0
  165. package/dist/workflow-engine.js +281 -0
  166. package/dist/workflow-engine.js.map +1 -0
  167. package/dist/workflow-store.d.ts +39 -0
  168. package/dist/workflow-store.d.ts.map +1 -0
  169. package/dist/workflow-store.js +173 -0
  170. package/dist/workflow-store.js.map +1 -0
  171. package/package.json +15 -3
  172. package/scripts/bootstrap.js +40 -4
  173. package/scripts/configure.js +48 -7
  174. package/scripts/doctor.js +30 -4
  175. package/scripts/init.js +13 -6
@@ -0,0 +1,14 @@
1
+ import type { ProviderName, MessagingProvider } from './types.js';
2
+ export declare class ProviderRegistry {
3
+ private providers;
4
+ register(provider: MessagingProvider): void;
5
+ get(name: ProviderName): MessagingProvider | undefined;
6
+ getProviderForChat(chatId: string): MessagingProvider;
7
+ getAllProviders(): MessagingProvider[];
8
+ has(name: ProviderName): boolean;
9
+ static stripPrefix(chatId: string): string;
10
+ static addPrefix(provider: ProviderName, rawId: string): string;
11
+ static getPrefix(chatId: string): ProviderName;
12
+ static hasPrefix(chatId: string): boolean;
13
+ }
14
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIlE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAA8C;IAE/D,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI3C,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG,SAAS;IAItD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IASrD,eAAe,IAAI,iBAAiB,EAAE;IAItC,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAIhC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAK1C,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAI/D,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAY9C,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAK1C"}
@@ -0,0 +1,49 @@
1
+ const VALID_PREFIXES = new Set(['telegram', 'discord']);
2
+ export class ProviderRegistry {
3
+ providers = new Map();
4
+ register(provider) {
5
+ this.providers.set(provider.name, provider);
6
+ }
7
+ get(name) {
8
+ return this.providers.get(name);
9
+ }
10
+ getProviderForChat(chatId) {
11
+ const prefix = ProviderRegistry.getPrefix(chatId);
12
+ const provider = this.providers.get(prefix);
13
+ if (!provider) {
14
+ throw new Error(`No provider registered for prefix "${prefix}" (chatId: ${chatId})`);
15
+ }
16
+ return provider;
17
+ }
18
+ getAllProviders() {
19
+ return Array.from(this.providers.values());
20
+ }
21
+ has(name) {
22
+ return this.providers.has(name);
23
+ }
24
+ static stripPrefix(chatId) {
25
+ const idx = chatId.indexOf(':');
26
+ return idx >= 0 ? chatId.slice(idx + 1) : chatId;
27
+ }
28
+ static addPrefix(provider, rawId) {
29
+ return `${provider}:${rawId}`;
30
+ }
31
+ static getPrefix(chatId) {
32
+ const idx = chatId.indexOf(':');
33
+ if (idx < 0) {
34
+ throw new Error(`Chat ID "${chatId}" has no provider prefix`);
35
+ }
36
+ const prefix = chatId.slice(0, idx);
37
+ if (!VALID_PREFIXES.has(prefix)) {
38
+ throw new Error(`Unknown provider prefix "${prefix}" in chatId "${chatId}"`);
39
+ }
40
+ return prefix;
41
+ }
42
+ static hasPrefix(chatId) {
43
+ const idx = chatId.indexOf(':');
44
+ if (idx < 0)
45
+ return false;
46
+ return VALID_PREFIXES.has(chatId.slice(0, idx));
47
+ }
48
+ }
49
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAEhE,MAAM,OAAO,gBAAgB;IACnB,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAE/D,QAAQ,CAAC,QAA2B;QAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,IAAkB;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,cAAc,MAAM,GAAG,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,eAAe;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,GAAG,CAAC,IAAkB;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,QAAsB,EAAE,KAAa;QACpD,OAAO,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAAc;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,YAAY,MAAM,0BAA0B,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,gBAAgB,MAAM,GAAG,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,MAAsB,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAAc;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export { TelegramProvider, createTelegramProvider } from './telegram-provider.js';
2
+ export type { TelegramProviderConfig } from './telegram-provider.js';
3
+ export { formatTelegramMessage, TELEGRAM_PARSE_MODE } from './telegram-format.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/telegram/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { TelegramProvider, createTelegramProvider } from './telegram-provider.js';
2
+ export { formatTelegramMessage, TELEGRAM_PARSE_MODE } from './telegram-format.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/telegram/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const TELEGRAM_PARSE_MODE: "HTML";
2
+ export declare function formatTelegramMessage(text: string, maxLength: number): string[];
3
+ //# sourceMappingURL=telegram-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-format.d.ts","sourceRoot":"","sources":["../../../src/providers/telegram/telegram-format.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,EAAG,MAAe,CAAC;AA0MnD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CA2C/E"}
@@ -0,0 +1,215 @@
1
+ const TEXT_LENGTH_MARGIN = 200;
2
+ export const TELEGRAM_PARSE_MODE = 'HTML';
3
+ function escapeHtml(text) {
4
+ return text
5
+ .replace(/&/g, '&amp;')
6
+ .replace(/</g, '&lt;')
7
+ .replace(/>/g, '&gt;');
8
+ }
9
+ function escapeHtmlAttribute(text) {
10
+ return escapeHtml(text).replace(/"/g, '&quot;');
11
+ }
12
+ function splitByCodeFences(text) {
13
+ const segments = [];
14
+ const fenceRegex = /```([a-zA-Z0-9_-]+)?\n?([\s\S]*?)```/g;
15
+ let lastIndex = 0;
16
+ let match;
17
+ while ((match = fenceRegex.exec(text)) !== null) {
18
+ if (match.index > lastIndex) {
19
+ segments.push({ type: 'text', content: text.slice(lastIndex, match.index) });
20
+ }
21
+ segments.push({ type: 'code', content: match[2] ?? '' });
22
+ lastIndex = match.index + match[0].length;
23
+ }
24
+ if (lastIndex < text.length) {
25
+ segments.push({ type: 'text', content: text.slice(lastIndex) });
26
+ }
27
+ return segments;
28
+ }
29
+ function splitTextPreservingNewlines(text, maxLength) {
30
+ if (text.length <= maxLength)
31
+ return [text];
32
+ const tokens = text.split(/(\n)/);
33
+ const chunks = [];
34
+ let current = '';
35
+ const pushCurrent = () => {
36
+ if (!current)
37
+ return;
38
+ chunks.push(current);
39
+ current = '';
40
+ };
41
+ for (const token of tokens) {
42
+ if (!token)
43
+ continue;
44
+ if (current.length + token.length <= maxLength) {
45
+ current += token;
46
+ continue;
47
+ }
48
+ pushCurrent();
49
+ if (token.length > maxLength) {
50
+ const parts = splitLongString(token, maxLength);
51
+ chunks.push(...parts.slice(0, -1));
52
+ current = parts[parts.length - 1] ?? '';
53
+ }
54
+ else {
55
+ current = token;
56
+ }
57
+ }
58
+ pushCurrent();
59
+ return chunks;
60
+ }
61
+ function splitLongString(text, maxLength) {
62
+ const chunks = [];
63
+ for (let i = 0; i < text.length; i += maxLength) {
64
+ chunks.push(text.slice(i, i + maxLength));
65
+ }
66
+ return chunks;
67
+ }
68
+ function normalizeHeadings(text) {
69
+ return text
70
+ .split('\n')
71
+ .map(line => {
72
+ const match = line.match(/^#{1,6}\s+(.*)$/);
73
+ if (!match)
74
+ return line;
75
+ return `**${match[1]}**`;
76
+ })
77
+ .join('\n');
78
+ }
79
+ function formatInlineMarkdownToHtml(text) {
80
+ const placeholders = [];
81
+ const insertToken = (html) => {
82
+ const token = `\u0000${placeholders.length}\u0000`;
83
+ placeholders.push({ token, html });
84
+ return token;
85
+ };
86
+ let working = text;
87
+ // Inline code
88
+ working = working.replace(/`([^`\n]+)`/g, (_match, code) => {
89
+ return insertToken(`<code>${escapeHtml(code)}</code>`);
90
+ });
91
+ // Links
92
+ working = working.replace(/\[([^\]\n]+)\]\(([^)\s]+)\)/g, (_match, label, url) => {
93
+ return insertToken(`<a href="${escapeHtmlAttribute(url)}">${escapeHtml(label)}</a>`);
94
+ });
95
+ // Bold
96
+ working = working.replace(/\*\*([^\n]+?)\*\*/g, (_match, bold) => {
97
+ return insertToken(`<b>${escapeHtml(bold)}</b>`);
98
+ });
99
+ // Strikethrough
100
+ working = working.replace(/~~([^\n]+?)~~/g, (_match, strike) => {
101
+ return insertToken(`<s>${escapeHtml(strike)}</s>`);
102
+ });
103
+ // Italic (asterisks only, avoids underscore collisions with identifiers)
104
+ working = working.replace(/(?<!\*)\*([^*\n]+)\*(?!\*)/g, (_match, italic) => {
105
+ return insertToken(`<i>${escapeHtml(italic)}</i>`);
106
+ });
107
+ working = escapeHtml(working);
108
+ for (const { token, html } of placeholders) {
109
+ working = working.split(token).join(html);
110
+ }
111
+ return working;
112
+ }
113
+ function formatTextChunk(text) {
114
+ const normalized = normalizeHeadings(text);
115
+ return formatInlineMarkdownToHtml(normalized);
116
+ }
117
+ function splitCodeBlock(code, maxLength) {
118
+ const openTag = '<pre><code>';
119
+ const closeTag = '</code></pre>';
120
+ const overhead = openTag.length + closeTag.length;
121
+ const escaped = escapeHtml(code);
122
+ if (escaped.length + overhead <= maxLength) {
123
+ return [`${openTag}${escaped}${closeTag}`];
124
+ }
125
+ const tokens = escaped.split(/(\n)/);
126
+ const chunks = [];
127
+ let current = '';
128
+ const pushCurrent = () => {
129
+ if (!current)
130
+ return;
131
+ chunks.push(`${openTag}${current}${closeTag}`);
132
+ current = '';
133
+ };
134
+ for (const token of tokens) {
135
+ if (!token)
136
+ continue;
137
+ if (current.length + token.length + overhead <= maxLength) {
138
+ current += token;
139
+ continue;
140
+ }
141
+ pushCurrent();
142
+ if (token.length + overhead > maxLength) {
143
+ const parts = splitLongString(token, maxLength - overhead);
144
+ for (const part of parts) {
145
+ chunks.push(`${openTag}${part}${closeTag}`);
146
+ }
147
+ }
148
+ else {
149
+ current = token;
150
+ }
151
+ }
152
+ pushCurrent();
153
+ return chunks;
154
+ }
155
+ function packPieces(pieces, maxLength) {
156
+ const chunks = [];
157
+ let current = '';
158
+ for (const piece of pieces) {
159
+ if (!piece)
160
+ continue;
161
+ if (!current) {
162
+ current = piece;
163
+ continue;
164
+ }
165
+ if (current.length + piece.length <= maxLength) {
166
+ current += piece;
167
+ continue;
168
+ }
169
+ chunks.push(current);
170
+ current = piece;
171
+ }
172
+ if (current)
173
+ chunks.push(current);
174
+ return chunks;
175
+ }
176
+ export function formatTelegramMessage(text, maxLength) {
177
+ const normalized = text.replace(/\r\n/g, '\n');
178
+ const segments = splitByCodeFences(normalized);
179
+ const pieces = [];
180
+ const textMaxLength = Math.max(1000, maxLength - TEXT_LENGTH_MARGIN);
181
+ for (const segment of segments) {
182
+ if (segment.type === 'code') {
183
+ pieces.push(...splitCodeBlock(segment.content, maxLength));
184
+ continue;
185
+ }
186
+ const rawChunks = splitTextPreservingNewlines(segment.content, textMaxLength);
187
+ for (const chunk of rawChunks) {
188
+ const formatted = formatTextChunk(chunk);
189
+ if (formatted.length <= maxLength) {
190
+ pieces.push(formatted);
191
+ continue;
192
+ }
193
+ // Fallback: send escaped plain text to avoid breaking HTML tags
194
+ const plain = escapeHtml(chunk);
195
+ pieces.push(...splitTextPreservingNewlines(plain, maxLength));
196
+ }
197
+ }
198
+ const packed = packPieces(pieces, maxLength);
199
+ // Add chunk markers for multi-part responses so users know more is coming
200
+ if (packed.length > 1) {
201
+ for (let i = 0; i < packed.length; i++) {
202
+ const marker = `[${i + 1}/${packed.length}]`;
203
+ // Prepend marker to first line, or add as suffix for very short chunks
204
+ if (i > 0) {
205
+ packed[i] = `${marker}\n${packed[i]}`;
206
+ }
207
+ // Append continuation hint to all but the last chunk
208
+ if (i < packed.length - 1) {
209
+ packed[i] = `${packed[i]}\n<i>${marker} continued…</i>`;
210
+ }
211
+ }
212
+ }
213
+ return packed;
214
+ }
215
+ //# sourceMappingURL=telegram-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-format.js","sourceRoot":"","sources":["../../../src/providers/telegram/telegram-format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { Telegraf } from 'telegraf';
2
+ import type { MessagingProvider, ProviderEventHandlers, ProviderCapabilities, IncomingMessage, SendResult, SendOptions, MediaOptions, VoiceOptions, AudioOptions, BaseOptions, ContactOptions, PollOptions, ButtonRow } from '../types.js';
3
+ import type { RuntimeConfig } from '../../runtime-config.js';
4
+ export interface TelegramProviderConfig {
5
+ token: string;
6
+ handlerTimeoutMs: number;
7
+ sendRetries: number;
8
+ sendRetryDelayMs: number;
9
+ groupsDir: string;
10
+ }
11
+ export declare class TelegramProvider implements MessagingProvider {
12
+ readonly name: "telegram";
13
+ readonly capabilities: ProviderCapabilities;
14
+ private readonly bot;
15
+ private readonly config;
16
+ private connected;
17
+ private botUsername;
18
+ private botId;
19
+ private readonly callbackDataStore;
20
+ private callbackCleanupInterval;
21
+ constructor(config: TelegramProviderConfig);
22
+ get telegrafBot(): Telegraf;
23
+ start(handlers: ProviderEventHandlers): Promise<void>;
24
+ stop(): Promise<void>;
25
+ isConnected(): boolean;
26
+ sendMessage(chatId: string, text: string, opts?: SendOptions): Promise<SendResult>;
27
+ private sendChunk;
28
+ sendPhoto(chatId: string, filePath: string, opts?: MediaOptions): Promise<SendResult>;
29
+ sendDocument(chatId: string, filePath: string, opts?: MediaOptions): Promise<SendResult>;
30
+ sendVoice(chatId: string, filePath: string, opts?: VoiceOptions): Promise<SendResult>;
31
+ sendAudio(chatId: string, filePath: string, opts?: AudioOptions): Promise<SendResult>;
32
+ sendLocation(chatId: string, lat: number, lng: number, opts?: BaseOptions): Promise<SendResult>;
33
+ sendContact(chatId: string, phone: string, name: string, opts?: ContactOptions): Promise<SendResult>;
34
+ sendPoll(chatId: string, question: string, options: string[], opts?: PollOptions): Promise<SendResult>;
35
+ sendButtons(chatId: string, text: string, buttons: ButtonRow[], opts?: BaseOptions): Promise<SendResult>;
36
+ editMessage(chatId: string, messageId: string, text: string): Promise<SendResult>;
37
+ deleteMessage(chatId: string, messageId: string): Promise<SendResult>;
38
+ downloadFile(ref: string, groupFolder: string, filename: string): Promise<{
39
+ path: string | null;
40
+ error?: string;
41
+ }>;
42
+ formatMessage(text: string, maxLength: number): string[];
43
+ setTyping(chatId: string): Promise<void>;
44
+ isBotMentioned(message: IncomingMessage): boolean;
45
+ isBotReplied(message: IncomingMessage): boolean;
46
+ getBotUsername(): string;
47
+ registerCallbackData(chatJid: string, data: string, label: string): string;
48
+ private setupHandlers;
49
+ }
50
+ export declare function createTelegramProvider(runtime: RuntimeConfig, groupsDir: string): TelegramProvider;
51
+ //# sourceMappingURL=telegram-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/telegram/telegram-provider.ts"],"names":[],"mappings":"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"}