@chozzz/vargos 2.0.3 → 2.0.5

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 (296) hide show
  1. package/package.json +8 -3
  2. package/.templates/vargos/agent/extensions/anthropic-custom-payload.patch.json +0 -34
  3. package/.templates/vargos/agent/extensions/anthropic-custom-payload.ts +0 -74
  4. package/.templates/vargos/agent/mcp.json +0 -9
  5. package/.templates/vargos/agent/skills/skill-creator/SKILL.md +0 -77
  6. package/.templates/vargos/agent/skills/token-capture/SKILL.md +0 -33
  7. package/.templates/vargos/agent/skills/token-capture/scripts/capture-bearer-token.sh +0 -139
  8. package/.templates/vargos/agents/README +0 -5
  9. package/.templates/vargos/agents/default.md +0 -7
  10. package/.templates/vargos/config.json +0 -1
  11. package/.templates/vargos/cron/heartbeat.md +0 -11
  12. package/.templates/vargos/workspace/AGENTS.md +0 -70
  13. package/.templates/vargos/workspace/HEARTBEAT.md +0 -26
  14. package/.templates/vargos/workspace/MEMORY.md +0 -15
  15. package/.templates/vargos/workspace/SOUL.md +0 -51
  16. package/.templates/vargos/workspace/TOOLS.md +0 -36
  17. package/dist/edge/mcp/index.d.ts +0 -33
  18. package/dist/edge/mcp/index.d.ts.map +0 -1
  19. package/dist/edge/mcp/index.js +0 -217
  20. package/dist/edge/mcp/index.js.map +0 -1
  21. package/dist/edge/webhooks/index.d.ts +0 -33
  22. package/dist/edge/webhooks/index.d.ts.map +0 -1
  23. package/dist/edge/webhooks/index.js +0 -231
  24. package/dist/edge/webhooks/index.js.map +0 -1
  25. package/dist/edge/webhooks/transform.d.ts +0 -8
  26. package/dist/edge/webhooks/transform.d.ts.map +0 -1
  27. package/dist/edge/webhooks/transform.js +0 -29
  28. package/dist/edge/webhooks/transform.js.map +0 -1
  29. package/dist/gateway/bus.d.ts +0 -48
  30. package/dist/gateway/bus.d.ts.map +0 -1
  31. package/dist/gateway/bus.js +0 -2
  32. package/dist/gateway/bus.js.map +0 -1
  33. package/dist/gateway/decorators.d.ts +0 -40
  34. package/dist/gateway/decorators.d.ts.map +0 -1
  35. package/dist/gateway/decorators.js +0 -43
  36. package/dist/gateway/decorators.js.map +0 -1
  37. package/dist/gateway/emitter.d.ts +0 -42
  38. package/dist/gateway/emitter.d.ts.map +0 -1
  39. package/dist/gateway/emitter.js +0 -259
  40. package/dist/gateway/emitter.js.map +0 -1
  41. package/dist/gateway/events.d.ts +0 -343
  42. package/dist/gateway/events.d.ts.map +0 -1
  43. package/dist/gateway/events.js +0 -7
  44. package/dist/gateway/events.js.map +0 -1
  45. package/dist/gateway/tcp-server.d.ts +0 -7
  46. package/dist/gateway/tcp-server.d.ts.map +0 -1
  47. package/dist/gateway/tcp-server.js +0 -115
  48. package/dist/gateway/tcp-server.js.map +0 -1
  49. package/dist/index.d.ts +0 -2
  50. package/dist/index.d.ts.map +0 -1
  51. package/dist/index.js +0 -74
  52. package/dist/index.js.map +0 -1
  53. package/dist/scripts/migrate-cron-sessions.d.ts +0 -10
  54. package/dist/scripts/migrate-cron-sessions.d.ts.map +0 -1
  55. package/dist/scripts/migrate-cron-sessions.js +0 -139
  56. package/dist/scripts/migrate-cron-sessions.js.map +0 -1
  57. package/dist/scripts/seed.d.ts +0 -2
  58. package/dist/scripts/seed.d.ts.map +0 -1
  59. package/dist/scripts/seed.js +0 -4
  60. package/dist/scripts/seed.js.map +0 -1
  61. package/dist/services/agent/directives.d.ts +0 -14
  62. package/dist/services/agent/directives.d.ts.map +0 -1
  63. package/dist/services/agent/directives.js +0 -32
  64. package/dist/services/agent/directives.js.map +0 -1
  65. package/dist/services/agent/index.d.ts +0 -104
  66. package/dist/services/agent/index.d.ts.map +0 -1
  67. package/dist/services/agent/index.js +0 -534
  68. package/dist/services/agent/index.js.map +0 -1
  69. package/dist/services/agent/persona.d.ts +0 -15
  70. package/dist/services/agent/persona.d.ts.map +0 -1
  71. package/dist/services/agent/persona.js +0 -63
  72. package/dist/services/agent/persona.js.map +0 -1
  73. package/dist/services/agent/prompt-interpolate.d.ts +0 -41
  74. package/dist/services/agent/prompt-interpolate.d.ts.map +0 -1
  75. package/dist/services/agent/prompt-interpolate.js +0 -102
  76. package/dist/services/agent/prompt-interpolate.js.map +0 -1
  77. package/dist/services/agent/schema.d.ts +0 -10
  78. package/dist/services/agent/schema.d.ts.map +0 -1
  79. package/dist/services/agent/schema.js +0 -5
  80. package/dist/services/agent/schema.js.map +0 -1
  81. package/dist/services/agent/tools.d.ts +0 -26
  82. package/dist/services/agent/tools.d.ts.map +0 -1
  83. package/dist/services/agent/tools.js +0 -85
  84. package/dist/services/agent/tools.js.map +0 -1
  85. package/dist/services/channels/base-adapter.d.ts +0 -61
  86. package/dist/services/channels/base-adapter.d.ts.map +0 -1
  87. package/dist/services/channels/base-adapter.js +0 -181
  88. package/dist/services/channels/base-adapter.js.map +0 -1
  89. package/dist/services/channels/contracts.d.ts +0 -75
  90. package/dist/services/channels/contracts.d.ts.map +0 -1
  91. package/dist/services/channels/contracts.js +0 -6
  92. package/dist/services/channels/contracts.js.map +0 -1
  93. package/dist/services/channels/debounce.d.ts +0 -22
  94. package/dist/services/channels/debounce.d.ts.map +0 -1
  95. package/dist/services/channels/debounce.js +0 -53
  96. package/dist/services/channels/debounce.js.map +0 -1
  97. package/dist/services/channels/dedupe.d.ts +0 -19
  98. package/dist/services/channels/dedupe.d.ts.map +0 -1
  99. package/dist/services/channels/dedupe.js +0 -52
  100. package/dist/services/channels/dedupe.js.map +0 -1
  101. package/dist/services/channels/delivery.d.ts +0 -12
  102. package/dist/services/channels/delivery.d.ts.map +0 -1
  103. package/dist/services/channels/delivery.js +0 -53
  104. package/dist/services/channels/delivery.js.map +0 -1
  105. package/dist/services/channels/index.d.ts +0 -53
  106. package/dist/services/channels/index.d.ts.map +0 -1
  107. package/dist/services/channels/index.js +0 -405
  108. package/dist/services/channels/index.js.map +0 -1
  109. package/dist/services/channels/link-expand.d.ts +0 -8
  110. package/dist/services/channels/link-expand.d.ts.map +0 -1
  111. package/dist/services/channels/link-expand.js +0 -28
  112. package/dist/services/channels/link-expand.js.map +0 -1
  113. package/dist/services/channels/media-extract.d.ts +0 -7
  114. package/dist/services/channels/media-extract.d.ts.map +0 -1
  115. package/dist/services/channels/media-extract.js +0 -31
  116. package/dist/services/channels/media-extract.js.map +0 -1
  117. package/dist/services/channels/pipeline.d.ts +0 -29
  118. package/dist/services/channels/pipeline.d.ts.map +0 -1
  119. package/dist/services/channels/pipeline.js +0 -120
  120. package/dist/services/channels/pipeline.js.map +0 -1
  121. package/dist/services/channels/provider-loader.d.ts +0 -7
  122. package/dist/services/channels/provider-loader.d.ts.map +0 -1
  123. package/dist/services/channels/provider-loader.js +0 -13
  124. package/dist/services/channels/provider-loader.js.map +0 -1
  125. package/dist/services/channels/providers/telegram/adapter.d.ts +0 -34
  126. package/dist/services/channels/providers/telegram/adapter.d.ts.map +0 -1
  127. package/dist/services/channels/providers/telegram/adapter.js +0 -278
  128. package/dist/services/channels/providers/telegram/adapter.js.map +0 -1
  129. package/dist/services/channels/providers/telegram/index.d.ts +0 -11
  130. package/dist/services/channels/providers/telegram/index.d.ts.map +0 -1
  131. package/dist/services/channels/providers/telegram/index.js +0 -11
  132. package/dist/services/channels/providers/telegram/index.js.map +0 -1
  133. package/dist/services/channels/providers/telegram/normalizer.d.ts +0 -12
  134. package/dist/services/channels/providers/telegram/normalizer.d.ts.map +0 -1
  135. package/dist/services/channels/providers/telegram/normalizer.js +0 -50
  136. package/dist/services/channels/providers/telegram/normalizer.js.map +0 -1
  137. package/dist/services/channels/providers/telegram/types.d.ts +0 -72
  138. package/dist/services/channels/providers/telegram/types.d.ts.map +0 -1
  139. package/dist/services/channels/providers/telegram/types.js +0 -3
  140. package/dist/services/channels/providers/telegram/types.js.map +0 -1
  141. package/dist/services/channels/providers/whatsapp/adapter.d.ts +0 -36
  142. package/dist/services/channels/providers/whatsapp/adapter.d.ts.map +0 -1
  143. package/dist/services/channels/providers/whatsapp/adapter.js +0 -261
  144. package/dist/services/channels/providers/whatsapp/adapter.js.map +0 -1
  145. package/dist/services/channels/providers/whatsapp/index.d.ts +0 -11
  146. package/dist/services/channels/providers/whatsapp/index.d.ts.map +0 -1
  147. package/dist/services/channels/providers/whatsapp/index.js +0 -11
  148. package/dist/services/channels/providers/whatsapp/index.js.map +0 -1
  149. package/dist/services/channels/providers/whatsapp/normalizer.d.ts +0 -11
  150. package/dist/services/channels/providers/whatsapp/normalizer.d.ts.map +0 -1
  151. package/dist/services/channels/providers/whatsapp/normalizer.js +0 -47
  152. package/dist/services/channels/providers/whatsapp/normalizer.js.map +0 -1
  153. package/dist/services/channels/providers/whatsapp/session.d.ts +0 -9
  154. package/dist/services/channels/providers/whatsapp/session.d.ts.map +0 -1
  155. package/dist/services/channels/providers/whatsapp/session.js +0 -118
  156. package/dist/services/channels/providers/whatsapp/session.js.map +0 -1
  157. package/dist/services/channels/providers/whatsapp/types.d.ts +0 -23
  158. package/dist/services/channels/providers/whatsapp/types.d.ts.map +0 -1
  159. package/dist/services/channels/providers/whatsapp/types.js +0 -3
  160. package/dist/services/channels/providers/whatsapp/types.js.map +0 -1
  161. package/dist/services/channels/reconnect.d.ts +0 -23
  162. package/dist/services/channels/reconnect.d.ts.map +0 -1
  163. package/dist/services/channels/reconnect.js +0 -32
  164. package/dist/services/channels/reconnect.js.map +0 -1
  165. package/dist/services/channels/status-reactions.d.ts +0 -27
  166. package/dist/services/channels/status-reactions.d.ts.map +0 -1
  167. package/dist/services/channels/status-reactions.js +0 -63
  168. package/dist/services/channels/status-reactions.js.map +0 -1
  169. package/dist/services/channels/types.d.ts +0 -16
  170. package/dist/services/channels/types.d.ts.map +0 -1
  171. package/dist/services/channels/types.js +0 -2
  172. package/dist/services/channels/types.js.map +0 -1
  173. package/dist/services/channels/typing-state.d.ts +0 -22
  174. package/dist/services/channels/typing-state.d.ts.map +0 -1
  175. package/dist/services/channels/typing-state.js +0 -88
  176. package/dist/services/channels/typing-state.js.map +0 -1
  177. package/dist/services/config/index.d.ts +0 -2426
  178. package/dist/services/config/index.d.ts.map +0 -1
  179. package/dist/services/config/index.js +0 -232
  180. package/dist/services/config/index.js.map +0 -1
  181. package/dist/services/config/schemas/agent.d.ts +0 -720
  182. package/dist/services/config/schemas/agent.d.ts.map +0 -1
  183. package/dist/services/config/schemas/agent.js +0 -86
  184. package/dist/services/config/schemas/agent.js.map +0 -1
  185. package/dist/services/config/schemas/auth.d.ts +0 -60
  186. package/dist/services/config/schemas/auth.d.ts.map +0 -1
  187. package/dist/services/config/schemas/auth.js +0 -18
  188. package/dist/services/config/schemas/auth.js.map +0 -1
  189. package/dist/services/config/schemas/channels.d.ts +0 -117
  190. package/dist/services/config/schemas/channels.d.ts.map +0 -1
  191. package/dist/services/config/schemas/channels.js +0 -22
  192. package/dist/services/config/schemas/channels.js.map +0 -1
  193. package/dist/services/config/schemas/cron.d.ts +0 -97
  194. package/dist/services/config/schemas/cron.d.ts.map +0 -1
  195. package/dist/services/config/schemas/cron.js +0 -18
  196. package/dist/services/config/schemas/cron.js.map +0 -1
  197. package/dist/services/config/schemas/features.d.ts +0 -43
  198. package/dist/services/config/schemas/features.d.ts.map +0 -1
  199. package/dist/services/config/schemas/features.js +0 -20
  200. package/dist/services/config/schemas/features.js.map +0 -1
  201. package/dist/services/config/schemas/index.d.ts +0 -24
  202. package/dist/services/config/schemas/index.d.ts.map +0 -1
  203. package/dist/services/config/schemas/index.js +0 -24
  204. package/dist/services/config/schemas/index.js.map +0 -1
  205. package/dist/services/config/schemas/mcp.d.ts +0 -31
  206. package/dist/services/config/schemas/mcp.d.ts.map +0 -1
  207. package/dist/services/config/schemas/mcp.js +0 -39
  208. package/dist/services/config/schemas/mcp.js.map +0 -1
  209. package/dist/services/config/schemas/primitives.d.ts +0 -13
  210. package/dist/services/config/schemas/primitives.d.ts.map +0 -1
  211. package/dist/services/config/schemas/primitives.js +0 -17
  212. package/dist/services/config/schemas/primitives.js.map +0 -1
  213. package/dist/services/config/schemas/providers.d.ts +0 -335
  214. package/dist/services/config/schemas/providers.d.ts.map +0 -1
  215. package/dist/services/config/schemas/providers.js +0 -27
  216. package/dist/services/config/schemas/providers.js.map +0 -1
  217. package/dist/services/config/schemas/storage.d.ts +0 -16
  218. package/dist/services/config/schemas/storage.d.ts.map +0 -1
  219. package/dist/services/config/schemas/storage.js +0 -9
  220. package/dist/services/config/schemas/storage.js.map +0 -1
  221. package/dist/services/config/schemas/webhooks.d.ts +0 -25
  222. package/dist/services/config/schemas/webhooks.d.ts.map +0 -1
  223. package/dist/services/config/schemas/webhooks.js +0 -12
  224. package/dist/services/config/schemas/webhooks.js.map +0 -1
  225. package/dist/services/cron/index.d.ts +0 -50
  226. package/dist/services/cron/index.d.ts.map +0 -1
  227. package/dist/services/cron/index.js +0 -460
  228. package/dist/services/cron/index.js.map +0 -1
  229. package/dist/services/log/index.d.ts +0 -14
  230. package/dist/services/log/index.d.ts.map +0 -1
  231. package/dist/services/log/index.js +0 -137
  232. package/dist/services/log/index.js.map +0 -1
  233. package/dist/services/mcp-client/index.d.ts +0 -37
  234. package/dist/services/mcp-client/index.d.ts.map +0 -1
  235. package/dist/services/mcp-client/index.js +0 -258
  236. package/dist/services/mcp-client/index.js.map +0 -1
  237. package/dist/services/media/extract-document.d.ts +0 -8
  238. package/dist/services/media/extract-document.d.ts.map +0 -1
  239. package/dist/services/media/extract-document.js +0 -85
  240. package/dist/services/media/extract-document.js.map +0 -1
  241. package/dist/services/media/index.d.ts +0 -21
  242. package/dist/services/media/index.d.ts.map +0 -1
  243. package/dist/services/media/index.js +0 -116
  244. package/dist/services/media/index.js.map +0 -1
  245. package/dist/services/media/providers/anthropic.d.ts +0 -6
  246. package/dist/services/media/providers/anthropic.d.ts.map +0 -1
  247. package/dist/services/media/providers/anthropic.js +0 -38
  248. package/dist/services/media/providers/anthropic.js.map +0 -1
  249. package/dist/services/media/providers/index.d.ts +0 -6
  250. package/dist/services/media/providers/index.d.ts.map +0 -1
  251. package/dist/services/media/providers/index.js +0 -15
  252. package/dist/services/media/providers/index.js.map +0 -1
  253. package/dist/services/media/providers/openai.d.ts +0 -6
  254. package/dist/services/media/providers/openai.d.ts.map +0 -1
  255. package/dist/services/media/providers/openai.js +0 -48
  256. package/dist/services/media/providers/openai.js.map +0 -1
  257. package/dist/services/media/providers/provider.d.ts +0 -5
  258. package/dist/services/media/providers/provider.d.ts.map +0 -1
  259. package/dist/services/media/providers/provider.js +0 -2
  260. package/dist/services/media/providers/provider.js.map +0 -1
  261. package/dist/services/memory/chunker.d.ts +0 -7
  262. package/dist/services/memory/chunker.d.ts.map +0 -1
  263. package/dist/services/memory/chunker.js +0 -46
  264. package/dist/services/memory/chunker.js.map +0 -1
  265. package/dist/services/memory/context.d.ts +0 -68
  266. package/dist/services/memory/context.d.ts.map +0 -1
  267. package/dist/services/memory/context.js +0 -223
  268. package/dist/services/memory/context.js.map +0 -1
  269. package/dist/services/memory/embedding.d.ts +0 -9
  270. package/dist/services/memory/embedding.d.ts.map +0 -1
  271. package/dist/services/memory/embedding.js +0 -49
  272. package/dist/services/memory/embedding.js.map +0 -1
  273. package/dist/services/memory/index.d.ts +0 -24
  274. package/dist/services/memory/index.d.ts.map +0 -1
  275. package/dist/services/memory/index.js +0 -140
  276. package/dist/services/memory/index.js.map +0 -1
  277. package/dist/services/memory/session-indexer.d.ts +0 -5
  278. package/dist/services/memory/session-indexer.d.ts.map +0 -1
  279. package/dist/services/memory/session-indexer.js +0 -62
  280. package/dist/services/memory/session-indexer.js.map +0 -1
  281. package/dist/services/memory/sqlite-storage.d.ts +0 -23
  282. package/dist/services/memory/sqlite-storage.d.ts.map +0 -1
  283. package/dist/services/memory/sqlite-storage.js +0 -75
  284. package/dist/services/memory/sqlite-storage.js.map +0 -1
  285. package/dist/services/memory/types.d.ts +0 -31
  286. package/dist/services/memory/types.d.ts.map +0 -1
  287. package/dist/services/memory/types.js +0 -2
  288. package/dist/services/memory/types.js.map +0 -1
  289. package/dist/services/web/index.d.ts +0 -9
  290. package/dist/services/web/index.d.ts.map +0 -1
  291. package/dist/services/web/index.js +0 -101
  292. package/dist/services/web/index.js.map +0 -1
  293. package/dist/vitest.config.d.ts +0 -3
  294. package/dist/vitest.config.d.ts.map +0 -1
  295. package/dist/vitest.config.js +0 -9
  296. package/dist/vitest.config.js.map +0 -1
@@ -1,6 +0,0 @@
1
- /**
2
- * Channel adapter contracts — defines what every channel provider must implement.
3
- * These interfaces form the boundary between core policy and adapter implementations.
4
- */
5
- export {};
6
- //# sourceMappingURL=contracts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../services/channels/contracts.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Per-key message debouncer
3
- * Accumulates rapid messages from the same sender, flushes after a delay
4
- * Prevents partial messages from triggering separate agent runs
5
- */
6
- import type { NormalizedInboundMessage } from './contracts.js';
7
- export interface DebounceConfig {
8
- /** Delay in ms before flushing accumulated messages (default: 1500) */
9
- delayMs?: number;
10
- /** Maximum messages to batch before force-flushing (default: 20) */
11
- maxBatch?: number;
12
- }
13
- export interface MessageDebouncer {
14
- /** Add a message for a given key. Resets the flush timer. */
15
- push(key: string, message: string, metadata?: NormalizedInboundMessage): void;
16
- /** Immediately flush pending messages for a key */
17
- flush(key: string): void;
18
- /** Immediately flush all pending keys */
19
- flushAll(): void;
20
- }
21
- export declare function createMessageDebouncer(onFlush: (key: string, messages: string[], metadata?: NormalizedInboundMessage) => void, opts?: DebounceConfig): MessageDebouncer;
22
- //# sourceMappingURL=debounce.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../../services/channels/debounce.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC9E,mDAAmD;IACnD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yCAAyC;IACzC,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,wBAAwB,KAAK,IAAI,EACvF,IAAI,GAAE,cAAmB,GACxB,gBAAgB,CAkDlB"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Per-key message debouncer
3
- * Accumulates rapid messages from the same sender, flushes after a delay
4
- * Prevents partial messages from triggering separate agent runs
5
- */
6
- export function createMessageDebouncer(onFlush, opts = {}) {
7
- const delayMs = opts.delayMs ?? 1500;
8
- const maxBatch = opts.maxBatch ?? 20;
9
- const pending = new Map();
10
- function flush(key) {
11
- const entry = pending.get(key);
12
- if (!entry)
13
- return;
14
- pending.delete(key);
15
- clearTimeout(entry.timer);
16
- if (entry.messages.length > 0) {
17
- onFlush(key, entry.messages, entry.metadata);
18
- }
19
- }
20
- return {
21
- flush,
22
- flushAll() {
23
- const keys = [...pending.keys()];
24
- for (const key of keys)
25
- flush(key);
26
- },
27
- push(key, message, metadata) {
28
- let entry = pending.get(key);
29
- if (!entry) {
30
- entry = {
31
- messages: [],
32
- metadata,
33
- timer: setTimeout(() => flush(key), delayMs),
34
- };
35
- pending.set(key, entry);
36
- }
37
- else {
38
- // Reset timer on each new message
39
- clearTimeout(entry.timer);
40
- entry.timer = setTimeout(() => flush(key), delayMs);
41
- // Update metadata if provided (latest metadata wins)
42
- if (metadata)
43
- entry.metadata = metadata;
44
- }
45
- entry.messages.push(message);
46
- // Force flush if batch is full
47
- if (entry.messages.length >= maxBatch) {
48
- flush(key);
49
- }
50
- },
51
- };
52
- }
53
- //# sourceMappingURL=debounce.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../../services/channels/debounce.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,MAAM,UAAU,sBAAsB,CACpC,OAAuF,EACvF,OAAuB,EAAE;IAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6G,CAAC;IAErI,SAAS,KAAK,CAAC,GAAW;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK;QAEL,QAAQ;YACN,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,GAAW,EAAE,OAAe,EAAE,QAAmC;YACpE,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG;oBACN,QAAQ,EAAE,EAAE;oBACZ,QAAQ;oBACR,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;iBAC7C,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,kCAAkC;gBAClC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;gBACpD,qDAAqD;gBACrD,IAAI,QAAQ;oBAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1C,CAAC;YAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE7B,+BAA+B;YAC/B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;gBACtC,KAAK,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Message deduplication cache
3
- * Prevents processing the same message twice within a TTL window
4
- */
5
- export interface DedupeConfig {
6
- /** Time-to-live in milliseconds (default: 60_000) */
7
- ttlMs?: number;
8
- /** Max entries before oldest are evicted (default: 10_000) */
9
- maxSize?: number;
10
- }
11
- export interface DedupeCache {
12
- /** Returns true if the key was already seen (still within TTL) */
13
- has(key: string): boolean;
14
- /** Mark key as seen; returns true if it was new */
15
- add(key: string): boolean;
16
- size: number;
17
- }
18
- export declare function createDedupeCache(opts?: DedupeConfig): DedupeCache;
19
- //# sourceMappingURL=dedupe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dedupe.d.ts","sourceRoot":"","sources":["../../../services/channels/dedupe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,mDAAmD;IACnD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,YAAiB,GAAG,WAAW,CA8CtE"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Message deduplication cache
3
- * Prevents processing the same message twice within a TTL window
4
- */
5
- export function createDedupeCache(opts = {}) {
6
- const ttlMs = opts.ttlMs ?? 60_000;
7
- const maxSize = opts.maxSize ?? 10_000;
8
- const entries = new Map();
9
- function evictExpired() {
10
- const now = Date.now();
11
- for (const [key, ts] of entries) {
12
- if (now - ts > ttlMs)
13
- entries.delete(key);
14
- }
15
- }
16
- function evictOldest() {
17
- if (entries.size <= maxSize)
18
- return;
19
- const toRemove = entries.size - maxSize;
20
- let removed = 0;
21
- for (const key of entries.keys()) {
22
- if (removed >= toRemove)
23
- break;
24
- entries.delete(key);
25
- removed++;
26
- }
27
- }
28
- return {
29
- has(key) {
30
- const ts = entries.get(key);
31
- if (ts === undefined)
32
- return false;
33
- if (Date.now() - ts > ttlMs) {
34
- entries.delete(key);
35
- return false;
36
- }
37
- return true;
38
- },
39
- add(key) {
40
- if (this.has(key))
41
- return false;
42
- entries.set(key, Date.now());
43
- evictOldest();
44
- return true;
45
- },
46
- get size() {
47
- evictExpired();
48
- return entries.size;
49
- },
50
- };
51
- }
52
- //# sourceMappingURL=dedupe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dedupe.js","sourceRoot":"","sources":["../../../services/channels/dedupe.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,MAAM,UAAU,iBAAiB,CAAC,OAAqB,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,SAAS,YAAY;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,EAAE,GAAG,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,SAAS,WAAW;QAClB,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO;YAAE,OAAO;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;QACxC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACjC,IAAI,OAAO,IAAI,QAAQ;gBAAE,MAAM;YAC/B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG,CAAC,GAAW;YACb,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACnC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;gBAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,GAAG,CAAC,GAAW;YACb,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7B,WAAW,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI;YACN,YAAY,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Reply delivery with chunking and retry
3
- * Splits long responses on paragraph/sentence boundaries
4
- */
5
- export type SendFn = (text: string) => Promise<void>;
6
- export declare function deliverReply(send: SendFn, text: string, opts?: {
7
- maxChunkSize?: number;
8
- chunkDelayMs?: number;
9
- maxRetries?: number;
10
- retryBaseMs?: number;
11
- }): Promise<void>;
12
- //# sourceMappingURL=delivery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../services/channels/delivery.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AA6BrD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrG,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Reply delivery with chunking and retry
3
- * Splits long responses on paragraph/sentence boundaries
4
- */
5
- import { createLogger } from '../../lib/logger.js';
6
- import { sleep } from '../../lib/sleep.js';
7
- import { withRetry } from '../../lib/retry.js';
8
- const log = createLogger('delivery');
9
- function chunkText(text, maxSize) {
10
- if (text.length <= maxSize)
11
- return [text];
12
- const chunks = [];
13
- let remaining = text;
14
- while (remaining.length > 0) {
15
- if (remaining.length <= maxSize) {
16
- chunks.push(remaining);
17
- break;
18
- }
19
- let splitAt = remaining.lastIndexOf('\n\n', maxSize);
20
- if (splitAt <= 0)
21
- splitAt = remaining.lastIndexOf('\n', maxSize);
22
- if (splitAt <= 0) {
23
- splitAt = remaining.lastIndexOf('. ', maxSize);
24
- if (splitAt > 0)
25
- splitAt += 1;
26
- }
27
- if (splitAt <= 0)
28
- splitAt = maxSize;
29
- chunks.push(remaining.slice(0, splitAt).trimEnd());
30
- remaining = remaining.slice(splitAt).trimStart();
31
- }
32
- return chunks.filter((c) => c.length > 0);
33
- }
34
- export async function deliverReply(send, text, opts = {}) {
35
- const maxChunkSize = opts.maxChunkSize ?? 4000;
36
- const chunkDelayMs = opts.chunkDelayMs ?? 500;
37
- const maxRetries = opts.maxRetries ?? 3;
38
- const retryBaseMs = opts.retryBaseMs ?? 1000;
39
- log.debug(`deliverReply: received text of ${text.length} chars`);
40
- if (text.length === 0) {
41
- log.warn(`deliverReply: empty text, skipping delivery`);
42
- return;
43
- }
44
- const chunks = chunkText(text, maxChunkSize);
45
- log.debug(`delivering ${text.length} chars in ${chunks.length} chunk(s)`);
46
- for (let i = 0; i < chunks.length; i++) {
47
- log.debug(` chunk[${i}]: ${chunks[i].length} chars`);
48
- await withRetry(() => send(chunks[i]), { maxRetries, baseMs: retryBaseMs, jitter: false });
49
- if (i < chunks.length - 1)
50
- await sleep(chunkDelayMs);
51
- }
52
- }
53
- //# sourceMappingURL=delivery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../services/channels/delivery.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Channel service — manages external messaging adapters.
3
- *
4
- * Callable: channel.send, channel.sendMedia, channel.search, channel.get, channel.register
5
- * Pure events emitted: channel.onConnected, channel.onDisconnected
6
- * Pure events subscribed: agent.onDelta, agent.onTool, agent.onCompleted
7
- *
8
- * Inbound flow:
9
- * adapter → normalizer → pipeline → expand links → whitelist check → agent.execute
10
- * agent.onTool updates reaction phase
11
- * agent.onCompleted stops typing + seals reaction + delivers reply
12
- *
13
- * Reply routing:
14
- * - Channel-triggered: agent.onCompleted looks up activeSessions, delivers to source
15
- * - Non-channel (cron, etc): agent.onCompleted ignored — caller is responsible for reply delivery
16
- *
17
- * Outbound flow: channel.send → strip markdown → chunk → adapter.send
18
- */
19
- import type { Bus } from '../../gateway/bus.js';
20
- import type { EventMap } from '../../gateway/events.js';
21
- import type { AppConfig } from '../../services/config/index.js';
22
- import type { NormalizedInboundMessage } from './contracts.js';
23
- export declare class ChannelService {
24
- private readonly bus;
25
- private readonly config;
26
- private adapters;
27
- private activeSessions;
28
- private registry;
29
- private pipeline;
30
- constructor(bus: Bus, config: AppConfig);
31
- start(): Promise<void>;
32
- private registerProviders;
33
- stop(): Promise<void>;
34
- send(params: EventMap['channel.send']['params']): Promise<EventMap['channel.send']['result']>;
35
- sendMedia(params: EventMap['channel.sendMedia']['params']): Promise<EventMap['channel.sendMedia']['result']>;
36
- search(params: EventMap['channel.search']['params']): Promise<EventMap['channel.search']['result']>;
37
- get(params: EventMap['channel.get']['params']): Promise<EventMap['channel.get']['result']>;
38
- register(params: EventMap['channel.register']['params']): Promise<void>;
39
- private onAgentTool;
40
- private onAgentCompleted;
41
- /**
42
- * Process a normalized inbound message from an adapter.
43
- * Called by adapters after normalizing their raw message format.
44
- */
45
- onInboundMessage(sessionKey: string, message: NormalizedInboundMessage): Promise<void>;
46
- private startChannel;
47
- private createAdapter;
48
- private startAllConfigured;
49
- }
50
- export declare function boot(bus: Bus): Promise<{
51
- stop(): Promise<void>;
52
- }>;
53
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../services/channels/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,gCAAgC,CAAC;AAM9E,OAAO,KAAK,EAAmC,wBAAwB,EAAe,MAAM,gBAAgB,CAAC;AA6B7G,qBAAa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAyB;gBAGtB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,SAAS;IAK9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAKd,iBAAiB;IAOzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrB,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC;IA6C7F,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC;IAqB5G,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC;IAkBnG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC;IAqB1F,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB7E,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,gBAAgB;IAuDxB;;;OAGG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC;YAoBF,YAAY;YAmBZ,aAAa;YAcb,kBAAkB;CAiBjC;AAID,wBAAsB,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAMvE"}