chat-flow-ardymalihi 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/package.json +1 -1
  2. package/dist/adapters/db/InMemorySessionRepository.js +0 -15
  3. package/dist/adapters/db/RedisSessionRepository.js +0 -41
  4. package/dist/adapters/intent/IntentMatcher.d.ts +0 -41
  5. package/dist/adapters/intent/IntentMatcher.d.ts.map +0 -1
  6. package/dist/adapters/intent/IntentMatcher.js +0 -167
  7. package/dist/adapters/intent/IntentMatcher.js.map +0 -1
  8. package/dist/adapters/intent/IntentService.d.ts +0 -26
  9. package/dist/adapters/intent/IntentService.d.ts.map +0 -1
  10. package/dist/adapters/intent/IntentService.js +0 -65
  11. package/dist/adapters/intent/IntentService.js.map +0 -1
  12. package/dist/adapters/intent/MockIntentAdapter.js +0 -29
  13. package/dist/adapters/intent/MockIntentService.d.ts +0 -7
  14. package/dist/adapters/intent/MockIntentService.d.ts.map +0 -1
  15. package/dist/adapters/intent/MockIntentService.js +0 -36
  16. package/dist/adapters/intent/MockIntentService.js.map +0 -1
  17. package/dist/adapters/llm/GeminiLLMAdapter.d.ts +0 -10
  18. package/dist/adapters/llm/GeminiLLMAdapter.d.ts.map +0 -1
  19. package/dist/adapters/llm/GeminiLLMAdapter.js +0 -102
  20. package/dist/adapters/llm/GeminiLLMAdapter.js.map +0 -1
  21. package/dist/adapters/llm/MockLLMAdapter.d.ts +0 -5
  22. package/dist/adapters/llm/MockLLMAdapter.d.ts.map +0 -1
  23. package/dist/adapters/llm/MockLLMAdapter.js +0 -31
  24. package/dist/adapters/llm/MockLLMAdapter.js.map +0 -1
  25. package/dist/adapters/llm/OllamaLLMAdapter.d.ts +0 -9
  26. package/dist/adapters/llm/OllamaLLMAdapter.d.ts.map +0 -1
  27. package/dist/adapters/llm/OllamaLLMAdapter.js +0 -74
  28. package/dist/adapters/llm/OllamaLLMAdapter.js.map +0 -1
  29. package/dist/adapters/logger/ConsoleLogger.d.ts +0 -12
  30. package/dist/adapters/logger/ConsoleLogger.d.ts.map +0 -1
  31. package/dist/adapters/logger/ConsoleLogger.js +0 -37
  32. package/dist/adapters/logger/ConsoleLogger.js.map +0 -1
  33. package/dist/adapters/memory/InMemorySessionRepository.js +0 -15
  34. package/dist/adapters/redis/RedisSessionRepository.js +0 -41
  35. package/dist/adapters/repository/InMemoryRepository.d.ts +0 -46
  36. package/dist/adapters/repository/InMemoryRepository.d.ts.map +0 -1
  37. package/dist/adapters/repository/InMemoryRepository.js +0 -235
  38. package/dist/adapters/repository/InMemoryRepository.js.map +0 -1
  39. package/dist/adapters/repository/IntentRepository.d.ts +0 -15
  40. package/dist/adapters/repository/IntentRepository.d.ts.map +0 -1
  41. package/dist/adapters/repository/IntentRepository.js +0 -28
  42. package/dist/adapters/repository/IntentRepository.js.map +0 -1
  43. package/dist/adapters/repository/RedisRepository.d.ts +0 -63
  44. package/dist/adapters/repository/RedisRepository.d.ts.map +0 -1
  45. package/dist/adapters/repository/RedisRepository.js +0 -586
  46. package/dist/adapters/repository/RedisRepository.js.map +0 -1
  47. package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts +0 -33
  48. package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts.map +0 -1
  49. package/dist/adapters/storage/RedisAudioStorageAdapter.js +0 -121
  50. package/dist/adapters/storage/RedisAudioStorageAdapter.js.map +0 -1
  51. package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts +0 -14
  52. package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts.map +0 -1
  53. package/dist/adapters/storage/RedisBufferStorageAdapter.js +0 -94
  54. package/dist/adapters/storage/RedisBufferStorageAdapter.js.map +0 -1
  55. package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts +0 -29
  56. package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts.map +0 -1
  57. package/dist/adapters/voice/ElevenLabsVoiceAdapter.js +0 -75
  58. package/dist/adapters/voice/ElevenLabsVoiceAdapter.js.map +0 -1
  59. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts +0 -77
  60. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts.map +0 -1
  61. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js +0 -187
  62. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js.map +0 -1
  63. package/dist/adapters/voice/GeminiVoiceAdapter.d.ts +0 -36
  64. package/dist/adapters/voice/GeminiVoiceAdapter.d.ts.map +0 -1
  65. package/dist/adapters/voice/GeminiVoiceAdapter.js +0 -134
  66. package/dist/adapters/voice/GeminiVoiceAdapter.js.map +0 -1
  67. package/dist/adapters/voice/GoogleTTSAdapter.d.ts +0 -61
  68. package/dist/adapters/voice/GoogleTTSAdapter.d.ts.map +0 -1
  69. package/dist/adapters/voice/GoogleTTSAdapter.js +0 -165
  70. package/dist/adapters/voice/GoogleTTSAdapter.js.map +0 -1
  71. package/dist/adapters/voice/GoogleVoiceAdapter.d.ts +0 -33
  72. package/dist/adapters/voice/GoogleVoiceAdapter.d.ts.map +0 -1
  73. package/dist/adapters/voice/GoogleVoiceAdapter.js +0 -155
  74. package/dist/adapters/voice/GoogleVoiceAdapter.js.map +0 -1
  75. package/dist/adapters/voice/HybridVoiceAdapter.d.ts +0 -54
  76. package/dist/adapters/voice/HybridVoiceAdapter.d.ts.map +0 -1
  77. package/dist/adapters/voice/HybridVoiceAdapter.js +0 -102
  78. package/dist/adapters/voice/HybridVoiceAdapter.js.map +0 -1
  79. package/dist/adapters/voice/LanguageVoiceMapper.d.ts +0 -60
  80. package/dist/adapters/voice/LanguageVoiceMapper.d.ts.map +0 -1
  81. package/dist/adapters/voice/LanguageVoiceMapper.js +0 -130
  82. package/dist/adapters/voice/LanguageVoiceMapper.js.map +0 -1
  83. package/dist/adapters/voice/VertexVoiceAdapter.d.ts +0 -32
  84. package/dist/adapters/voice/VertexVoiceAdapter.d.ts.map +0 -1
  85. package/dist/adapters/voice/VertexVoiceAdapter.js +0 -179
  86. package/dist/adapters/voice/VertexVoiceAdapter.js.map +0 -1
  87. package/dist/adapters/webhook/WebhookService.d.ts +0 -47
  88. package/dist/adapters/webhook/WebhookService.d.ts.map +0 -1
  89. package/dist/adapters/webhook/WebhookService.js +0 -265
  90. package/dist/adapters/webhook/WebhookService.js.map +0 -1
  91. package/dist/adapters/workflow/MockWorkflowAdapter.d.ts +0 -5
  92. package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +0 -1
  93. package/dist/adapters/workflow/MockWorkflowAdapter.js +0 -173
  94. package/dist/adapters/workflow/MockWorkflowAdapter.js.map +0 -1
  95. package/dist/adapters/workflow/WorkflowAdapter.d.ts +0 -55
  96. package/dist/adapters/workflow/WorkflowAdapter.d.ts.map +0 -1
  97. package/dist/adapters/workflow/WorkflowAdapter.js +0 -242
  98. package/dist/adapters/workflow/WorkflowAdapter.js.map +0 -1
  99. package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts +0 -10
  100. package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts.map +0 -1
  101. package/dist/adapters/workflow/actions/getSupportHoursAction.js +0 -33
  102. package/dist/adapters/workflow/actions/getSupportHoursAction.js.map +0 -1
  103. package/dist/adapters/workflow/actions/index.d.ts +0 -6
  104. package/dist/adapters/workflow/actions/index.d.ts.map +0 -1
  105. package/dist/adapters/workflow/actions/index.js +0 -22
  106. package/dist/adapters/workflow/actions/index.js.map +0 -1
  107. package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts +0 -11
  108. package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts.map +0 -1
  109. package/dist/adapters/workflow/actions/pushOutputResultAction.js +0 -31
  110. package/dist/adapters/workflow/actions/pushOutputResultAction.js.map +0 -1
  111. package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts +0 -12
  112. package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts.map +0 -1
  113. package/dist/adapters/workflow/actions/setWorkflowMessageAction.js +0 -32
  114. package/dist/adapters/workflow/actions/setWorkflowMessageAction.js.map +0 -1
  115. package/dist/adapters/workflow/engine/constants.d.ts +0 -3
  116. package/dist/adapters/workflow/engine/constants.d.ts.map +0 -1
  117. package/dist/adapters/workflow/engine/constants.js +0 -6
  118. package/dist/adapters/workflow/engine/constants.js.map +0 -1
  119. package/dist/adapters/workflow/engine/engine.d.ts +0 -32
  120. package/dist/adapters/workflow/engine/engine.d.ts.map +0 -1
  121. package/dist/adapters/workflow/engine/engine.js +0 -623
  122. package/dist/adapters/workflow/engine/engine.js.map +0 -1
  123. package/dist/adapters/workflow/engine/event-registry.d.ts +0 -12
  124. package/dist/adapters/workflow/engine/event-registry.d.ts.map +0 -1
  125. package/dist/adapters/workflow/engine/event-registry.js +0 -33
  126. package/dist/adapters/workflow/engine/event-registry.js.map +0 -1
  127. package/dist/adapters/workflow/engine/interpolator.d.ts +0 -11
  128. package/dist/adapters/workflow/engine/interpolator.d.ts.map +0 -1
  129. package/dist/adapters/workflow/engine/interpolator.js +0 -93
  130. package/dist/adapters/workflow/engine/interpolator.js.map +0 -1
  131. package/dist/adapters/workflow/engine/registry.d.ts +0 -12
  132. package/dist/adapters/workflow/engine/registry.d.ts.map +0 -1
  133. package/dist/adapters/workflow/engine/registry.js +0 -39
  134. package/dist/adapters/workflow/engine/registry.js.map +0 -1
  135. package/dist/adapters/workflow/engine/template-registry.d.ts +0 -60
  136. package/dist/adapters/workflow/engine/template-registry.d.ts.map +0 -1
  137. package/dist/adapters/workflow/engine/template-registry.js +0 -92
  138. package/dist/adapters/workflow/engine/template-registry.js.map +0 -1
  139. package/dist/adapters/workflow/engine/types.d.ts +0 -182
  140. package/dist/adapters/workflow/engine/types.d.ts.map +0 -1
  141. package/dist/adapters/workflow/engine/types.js +0 -3
  142. package/dist/adapters/workflow/engine/types.js.map +0 -1
  143. package/dist/adapters/workflow/engine/utils/format-utils.d.ts +0 -43
  144. package/dist/adapters/workflow/engine/utils/format-utils.d.ts.map +0 -1
  145. package/dist/adapters/workflow/engine/utils/format-utils.js +0 -137
  146. package/dist/adapters/workflow/engine/utils/format-utils.js.map +0 -1
  147. package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts +0 -7
  148. package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts.map +0 -1
  149. package/dist/adapters/workflow/engine/utils/layout-calculator.js +0 -87
  150. package/dist/adapters/workflow/engine/utils/layout-calculator.js.map +0 -1
  151. package/dist/adapters/workflow/engine/utils/slugify.d.ts +0 -2
  152. package/dist/adapters/workflow/engine/utils/slugify.d.ts.map +0 -1
  153. package/dist/adapters/workflow/engine/utils/slugify.js +0 -41
  154. package/dist/adapters/workflow/engine/utils/slugify.js.map +0 -1
  155. package/dist/adapters/workflow/engine/validator.d.ts +0 -9
  156. package/dist/adapters/workflow/engine/validator.d.ts.map +0 -1
  157. package/dist/adapters/workflow/engine/validator.js +0 -425
  158. package/dist/adapters/workflow/engine/validator.js.map +0 -1
  159. package/dist/application/ConversationSession.d.ts +0 -23
  160. package/dist/application/ConversationSession.d.ts.map +0 -1
  161. package/dist/application/ConversationSession.js +0 -83
  162. package/dist/application/ConversationSession.js.map +0 -1
  163. package/dist/application/Message.d.ts +0 -11
  164. package/dist/application/Message.d.ts.map +0 -1
  165. package/dist/application/Message.js +0 -30
  166. package/dist/application/Message.js.map +0 -1
  167. package/dist/application/Orchestrator.d.ts +0 -18
  168. package/dist/application/Orchestrator.d.ts.map +0 -1
  169. package/dist/application/Orchestrator.js +0 -80
  170. package/dist/application/Orchestrator.js.map +0 -1
  171. package/dist/application/SessionState.js +0 -2
  172. package/dist/application/usecases/CreateSession.js +0 -20
  173. package/dist/application/usecases/HandleUserMessage.js +0 -69
  174. package/dist/config/ChatFlowConfig.d.ts +0 -66
  175. package/dist/config/ChatFlowConfig.d.ts.map +0 -1
  176. package/dist/config/ChatFlowConfig.js +0 -54
  177. package/dist/config/ChatFlowConfig.js.map +0 -1
  178. package/dist/config/index.d.ts +0 -2
  179. package/dist/config/index.d.ts.map +0 -1
  180. package/dist/config/index.js +0 -7
  181. package/dist/config/index.js.map +0 -1
  182. package/dist/core/entities/ConversationSession.d.ts +0 -58
  183. package/dist/core/entities/ConversationSession.d.ts.map +0 -1
  184. package/dist/core/entities/ConversationSession.js +0 -160
  185. package/dist/core/entities/ConversationSession.js.map +0 -1
  186. package/dist/core/entities/Message.d.ts +0 -14
  187. package/dist/core/entities/Message.d.ts.map +0 -1
  188. package/dist/core/entities/Message.js +0 -32
  189. package/dist/core/entities/Message.js.map +0 -1
  190. package/dist/core/errors/ChatFlowError.d.ts +0 -71
  191. package/dist/core/errors/ChatFlowError.d.ts.map +0 -1
  192. package/dist/core/errors/ChatFlowError.js +0 -108
  193. package/dist/core/errors/ChatFlowError.js.map +0 -1
  194. package/dist/core/errors/index.d.ts +0 -2
  195. package/dist/core/errors/index.d.ts.map +0 -1
  196. package/dist/core/errors/index.js +0 -15
  197. package/dist/core/errors/index.js.map +0 -1
  198. package/dist/core/utils/AudioStreamBuffer.d.ts +0 -33
  199. package/dist/core/utils/AudioStreamBuffer.d.ts.map +0 -1
  200. package/dist/core/utils/AudioStreamBuffer.js +0 -55
  201. package/dist/core/utils/AudioStreamBuffer.js.map +0 -1
  202. package/dist/core/utils/AudioUtils.d.ts +0 -41
  203. package/dist/core/utils/AudioUtils.d.ts.map +0 -1
  204. package/dist/core/utils/AudioUtils.js +0 -188
  205. package/dist/core/utils/AudioUtils.js.map +0 -1
  206. package/dist/core/utils/LanguageDetector.d.ts +0 -52
  207. package/dist/core/utils/LanguageDetector.d.ts.map +0 -1
  208. package/dist/core/utils/LanguageDetector.js +0 -173
  209. package/dist/core/utils/LanguageDetector.js.map +0 -1
  210. package/dist/core/utils/WavUtils.d.ts +0 -14
  211. package/dist/core/utils/WavUtils.d.ts.map +0 -1
  212. package/dist/core/utils/WavUtils.js +0 -37
  213. package/dist/core/utils/WavUtils.js.map +0 -1
  214. package/dist/db/InMemoryRepository.d.ts +0 -15
  215. package/dist/db/InMemoryRepository.d.ts.map +0 -1
  216. package/dist/db/InMemoryRepository.js +0 -41
  217. package/dist/db/InMemoryRepository.js.map +0 -1
  218. package/dist/db/RedisRepository.d.ts +0 -16
  219. package/dist/db/RedisRepository.d.ts.map +0 -1
  220. package/dist/db/RedisRepository.js +0 -87
  221. package/dist/db/RedisRepository.js.map +0 -1
  222. package/dist/demo/cli-demo.d.ts +0 -2
  223. package/dist/demo/cli-demo.d.ts.map +0 -1
  224. package/dist/demo/cli-demo.js +0 -146
  225. package/dist/demo/cli-demo.js.map +0 -1
  226. package/dist/demo/console-chat.d.ts +0 -2
  227. package/dist/demo/console-chat.d.ts.map +0 -1
  228. package/dist/demo/console-chat.js +0 -148
  229. package/dist/demo/console-chat.js.map +0 -1
  230. package/dist/demo/interactive-voice-chat.d.ts +0 -2
  231. package/dist/demo/interactive-voice-chat.d.ts.map +0 -1
  232. package/dist/demo/interactive-voice-chat.js +0 -180
  233. package/dist/demo/interactive-voice-chat.js.map +0 -1
  234. package/dist/demo/voice-demo.d.ts +0 -2
  235. package/dist/demo/voice-demo.d.ts.map +0 -1
  236. package/dist/demo/voice-demo.js +0 -188
  237. package/dist/demo/voice-demo.js.map +0 -1
  238. package/dist/domain/conversation/ConversationSession.js +0 -82
  239. package/dist/domain/conversation/Message.js +0 -33
  240. package/dist/domain/conversation/SessionState.js +0 -10
  241. package/dist/index.d.ts +0 -26
  242. package/dist/index.d.ts.map +0 -1
  243. package/dist/index.js +0 -76
  244. package/dist/index.js.map +0 -1
  245. package/dist/intent/IntentService.d.ts +0 -17
  246. package/dist/intent/IntentService.d.ts.map +0 -1
  247. package/dist/intent/IntentService.js +0 -57
  248. package/dist/intent/IntentService.js.map +0 -1
  249. package/dist/intent/MockIntentService.d.ts +0 -7
  250. package/dist/intent/MockIntentService.d.ts.map +0 -1
  251. package/dist/intent/MockIntentService.js +0 -36
  252. package/dist/intent/MockIntentService.js.map +0 -1
  253. package/dist/interfaces.d.ts +0 -653
  254. package/dist/interfaces.d.ts.map +0 -1
  255. package/dist/interfaces.js +0 -36
  256. package/dist/interfaces.js.map +0 -1
  257. package/dist/llm/GeminiLLMAdapter.d.ts +0 -10
  258. package/dist/llm/GeminiLLMAdapter.d.ts.map +0 -1
  259. package/dist/llm/GeminiLLMAdapter.js +0 -102
  260. package/dist/llm/GeminiLLMAdapter.js.map +0 -1
  261. package/dist/llm/MockLLMAdapter.d.ts +0 -5
  262. package/dist/llm/MockLLMAdapter.d.ts.map +0 -1
  263. package/dist/llm/MockLLMAdapter.js +0 -31
  264. package/dist/llm/MockLLMAdapter.js.map +0 -1
  265. package/dist/orchestrator/Orchestrator.d.ts +0 -62
  266. package/dist/orchestrator/Orchestrator.d.ts.map +0 -1
  267. package/dist/orchestrator/Orchestrator.js +0 -697
  268. package/dist/orchestrator/Orchestrator.js.map +0 -1
  269. package/dist/ports/IIntentRepository.d.ts +0 -27
  270. package/dist/ports/IIntentRepository.d.ts.map +0 -1
  271. package/dist/ports/IIntentRepository.js +0 -3
  272. package/dist/ports/IIntentRepository.js.map +0 -1
  273. package/dist/ports/IntentPort.js +0 -2
  274. package/dist/ports/LLMPort.js +0 -2
  275. package/dist/ports/SessionRepository.js +0 -2
  276. package/dist/ports/WorkflowPort.js +0 -2
  277. package/dist/scripts/debug-redis.d.ts +0 -2
  278. package/dist/scripts/debug-redis.d.ts.map +0 -1
  279. package/dist/scripts/debug-redis.js +0 -55
  280. package/dist/scripts/debug-redis.js.map +0 -1
  281. package/dist/scripts/seed-collaborative-intents.d.ts +0 -2
  282. package/dist/scripts/seed-collaborative-intents.d.ts.map +0 -1
  283. package/dist/scripts/seed-collaborative-intents.js +0 -90
  284. package/dist/scripts/seed-collaborative-intents.js.map +0 -1
  285. package/dist/scripts/test-isolated-config.d.ts +0 -2
  286. package/dist/scripts/test-isolated-config.d.ts.map +0 -1
  287. package/dist/scripts/test-isolated-config.js +0 -80
  288. package/dist/scripts/test-isolated-config.js.map +0 -1
  289. package/dist/scripts/verify_memory_intents.d.ts +0 -2
  290. package/dist/scripts/verify_memory_intents.d.ts.map +0 -1
  291. package/dist/scripts/verify_memory_intents.js +0 -45
  292. package/dist/scripts/verify_memory_intents.js.map +0 -1
  293. package/dist/scripts/verify_redis_intents.d.ts +0 -2
  294. package/dist/scripts/verify_redis_intents.d.ts.map +0 -1
  295. package/dist/scripts/verify_redis_intents.js +0 -52
  296. package/dist/scripts/verify_redis_intents.js.map +0 -1
  297. package/dist/server/ChatFlowWebSocketServer.d.ts +0 -46
  298. package/dist/server/ChatFlowWebSocketServer.d.ts.map +0 -1
  299. package/dist/server/ChatFlowWebSocketServer.js +0 -344
  300. package/dist/server/ChatFlowWebSocketServer.js.map +0 -1
  301. package/dist/server/realtime-voice-server.d.ts +0 -2
  302. package/dist/server/realtime-voice-server.d.ts.map +0 -1
  303. package/dist/server/realtime-voice-server.js +0 -627
  304. package/dist/server/realtime-voice-server.js.map +0 -1
  305. package/dist/src/api/routes/tenants.d.ts +0 -3
  306. package/dist/src/api/routes/tenants.d.ts.map +0 -1
  307. package/dist/src/api/routes/tenants.js +0 -109
  308. package/dist/src/api/routes/tenants.js.map +0 -1
  309. package/dist/utils/crypto.d.ts +0 -7
  310. package/dist/utils/crypto.d.ts.map +0 -1
  311. package/dist/utils/crypto.js +0 -35
  312. package/dist/utils/crypto.js.map +0 -1
  313. package/dist/utils/encryption-helpers.d.ts +0 -14
  314. package/dist/utils/encryption-helpers.d.ts.map +0 -1
  315. package/dist/utils/encryption-helpers.js +0 -49
  316. package/dist/utils/encryption-helpers.js.map +0 -1
  317. package/dist/verify_memory_intents.js +0 -44
  318. package/dist/verify_redis_intents.js +0 -49
  319. package/dist/workflow/MockWorkflowAdapter.d.ts +0 -5
  320. package/dist/workflow/MockWorkflowAdapter.d.ts.map +0 -1
  321. package/dist/workflow/MockWorkflowAdapter.js +0 -162
  322. package/dist/workflow/MockWorkflowAdapter.js.map +0 -1
@@ -1,586 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.RedisRepository = void 0;
7
- const ioredis_1 = __importDefault(require("ioredis"));
8
- const ConversationSession_1 = require("../../core/entities/ConversationSession");
9
- class RedisRepository {
10
- constructor(configOrUrl = {}) {
11
- this.SESSION_TTL = 3600; // 1 Hour for active sessions
12
- let config;
13
- if (typeof configOrUrl === 'string') {
14
- config = { connection: configOrUrl };
15
- }
16
- else {
17
- config = configOrUrl;
18
- }
19
- this.GLOBAL_PREFIX = config.keyPrefix || 'chatflow';
20
- this.EXECUTION_TTL_SECONDS = config.defaultTtl || 604800; // 7 days (7 * 24 * 3600)
21
- if (config.connection instanceof ioredis_1.default || config.connection?.constructor?.name === 'Cluster') {
22
- this.client = config.connection;
23
- }
24
- else if (config.clusterNodes && config.clusterNodes.length > 0) {
25
- // Cluster mode
26
- this.client = new ioredis_1.default.Cluster(config.clusterNodes, {
27
- ...config.clusterOptions,
28
- redisOptions: config.redisOptions
29
- });
30
- }
31
- else {
32
- // Standalone mode
33
- const connectionString = typeof config.connection === 'string'
34
- ? config.connection
35
- : process.env.REDIS_URL || 'redis://localhost:6379';
36
- // Fix: Ensure explicitly strict argument types for ioredis constructor to avoid overload confusion
37
- if (config.redisOptions) {
38
- this.client = new ioredis_1.default(connectionString, config.redisOptions);
39
- }
40
- else {
41
- this.client = new ioredis_1.default(connectionString);
42
- }
43
- }
44
- this.client.on('error', (err) => {
45
- console.error('[Redis Error]', err);
46
- });
47
- this.client.on('connect', () => {
48
- console.log('[Redis] Connected');
49
- });
50
- }
51
- /**
52
- * Generates a tenant-scoped key with Hash Tags for Cluster support.
53
- * Pattern: {prefix}:{tenantId}:{entityType}:{id}
54
- * Hash Tag: {tenantId} -> Ensures all keys for a tenant map to the same slot.
55
- */
56
- getKey(tenantId, entityType, id) {
57
- // Handle global keys (no tenantId) -> Use a fixed hash tag or global namespace
58
- if (!tenantId || tenantId === 'global') {
59
- // Global data (e.g. platform metadata)
60
- return id ? `${this.GLOBAL_PREFIX}:{global}:${entityType}:${id}` : `${this.GLOBAL_PREFIX}:{global}:${entityType}`;
61
- }
62
- return id
63
- ? `${this.GLOBAL_PREFIX}:{${tenantId}}:${entityType}:${id}`
64
- : `${this.GLOBAL_PREFIX}:{${tenantId}}:${entityType}`;
65
- }
66
- /**
67
- * Helper to add item to set with expiry (refreshes whole set expiry)
68
- */
69
- async addToSetWithTtl(key, member, ttl) {
70
- const pipeline = this.client.pipeline();
71
- pipeline.sadd(key, member);
72
- pipeline.expire(key, ttl);
73
- await pipeline.exec();
74
- }
75
- // ============================================================================
76
- // Session Management
77
- // ============================================================================
78
- async saveSession(session) {
79
- const tenantId = session.tenantId || 'global';
80
- const key = this.getKey(tenantId, 'session', session.sessionId);
81
- const data = JSON.stringify(session.toSnapshot());
82
- const lookupKey = `${this.GLOBAL_PREFIX}:lookup:session:${session.sessionId}`;
83
- if (session.status === 'COMPLETED' || session.status === 'FAILED') {
84
- // Completed sessions: use configured retention TTL (e.g. 7 days)
85
- await this.client.set(key, data, 'EX', this.EXECUTION_TTL_SECONDS);
86
- // Verify if we need persistent lookup for completed sessions. Yes, for history.
87
- await this.client.set(lookupKey, tenantId, 'EX', this.EXECUTION_TTL_SECONDS);
88
- }
89
- else {
90
- // Active sessions: short TTL (1 hour) to auto-clean abandoned sessions
91
- await this.client.set(key, data, 'EX', this.SESSION_TTL);
92
- await this.client.set(lookupKey, tenantId, 'EX', this.SESSION_TTL);
93
- }
94
- }
95
- async findSessionById(sessionId) {
96
- // 1. Try Lookup to find Tenant ID
97
- const lookupKey = `${this.GLOBAL_PREFIX}:lookup:session:${sessionId}`;
98
- const tenantId = await this.client.get(lookupKey);
99
- let key;
100
- if (tenantId) {
101
- key = this.getKey(tenantId, 'session', sessionId);
102
- }
103
- else {
104
- // Fallback for legacy keys (before this migration)
105
- const legacyKey = `session:${sessionId}`;
106
- const legacyData = await this.client.get(legacyKey);
107
- if (legacyData)
108
- return this.parseSession(legacyData, sessionId);
109
- return null;
110
- }
111
- const data = await this.client.get(key);
112
- if (!data)
113
- return null;
114
- return this.parseSession(data, sessionId);
115
- }
116
- parseSession(data, sessionId) {
117
- try {
118
- const parsed = JSON.parse(data);
119
- return ConversationSession_1.ConversationSession.reconstitute(parsed);
120
- }
121
- catch (err) {
122
- console.error(`Failed to reconstitute session ${sessionId}`, err);
123
- return null;
124
- }
125
- }
126
- // ============================================================================
127
- // Tenant & Config Management
128
- // ============================================================================
129
- async saveTenant(tenant) {
130
- const key = this.getKey('admin', 'tenant', tenant.id);
131
- await this.client.call('JSON.SET', key, '$', JSON.stringify(tenant));
132
- }
133
- async findTenantById(id) {
134
- const key = this.getKey('admin', 'tenant', id);
135
- const data = await this.client.call('JSON.GET', key);
136
- if (!data)
137
- return null;
138
- return typeof data === 'string' ? JSON.parse(data) : data;
139
- }
140
- async saveConversationConfig(config) {
141
- const key = this.getKey(config.tenantId, 'config', config.id);
142
- await this.client.call('JSON.SET', key, '$', JSON.stringify(config));
143
- // Add to tenant's config list
144
- const indexKey = this.getKey(config.tenantId, 'configs');
145
- await this.client.sadd(indexKey, config.id);
146
- }
147
- async findConversationConfig(tenantId, configId) {
148
- let key;
149
- if (configId) {
150
- key = this.getKey(tenantId, 'config', configId);
151
- }
152
- else {
153
- // Find first available config via index
154
- const indexKey = this.getKey(tenantId, 'configs');
155
- const ids = await this.client.smembers(indexKey);
156
- if (ids.length === 0)
157
- return null;
158
- key = this.getKey(tenantId, 'config', ids[0]);
159
- }
160
- const data = await this.client.call('JSON.GET', key);
161
- if (!data)
162
- return null;
163
- return typeof data === 'string' ? JSON.parse(data) : data;
164
- }
165
- // ============================================================================
166
- // Intent Management
167
- // ============================================================================
168
- async saveIntent(intent) {
169
- const tenantId = intent.tenantId || 'global';
170
- const key = this.getKey(tenantId, 'intent', intent.name);
171
- await this.client.call('JSON.SET', key, '$', JSON.stringify(intent));
172
- const indexKey = this.getKey(tenantId, 'intents');
173
- await this.client.sadd(indexKey, intent.name);
174
- }
175
- async upsertIntents(intents) {
176
- const pipeline = this.client.pipeline();
177
- for (const intent of intents) {
178
- const tenantId = intent.tenantId || 'global';
179
- const key = this.getKey(tenantId, 'intent', intent.name);
180
- const indexKey = this.getKey(tenantId, 'intents');
181
- pipeline.call('JSON.SET', key, '$', JSON.stringify(intent));
182
- pipeline.sadd(indexKey, intent.name);
183
- }
184
- await pipeline.exec();
185
- }
186
- async findIntentByName(name, tenantId) {
187
- // 1. Try Tenant Specific
188
- if (tenantId) {
189
- const tenantKey = this.getKey(tenantId, 'intent', name);
190
- const tenantData = await this.client.call('JSON.GET', tenantKey);
191
- if (tenantData) {
192
- return typeof tenantData === 'string' ? JSON.parse(tenantData) : tenantData;
193
- }
194
- }
195
- // 2. Fallback to Global
196
- const globalKey = this.getKey('global', 'intent', name);
197
- const globalData = await this.client.call('JSON.GET', globalKey);
198
- if (!globalData) {
199
- // Legacy global fallback
200
- const legacyKey = `intent:${name}`;
201
- const legacyData = await this.client.call('JSON.GET', legacyKey);
202
- if (legacyData)
203
- return typeof legacyData === 'string' ? JSON.parse(legacyData) : legacyData;
204
- return null;
205
- }
206
- return typeof globalData === 'string' ? JSON.parse(globalData) : globalData;
207
- }
208
- async deleteIntent(name, tenantId) {
209
- const tid = tenantId || 'global';
210
- const key = this.getKey(tid, 'intent', name);
211
- const indexKey = this.getKey(tid, 'intents');
212
- await this.client.del(key);
213
- await this.client.srem(indexKey, name);
214
- }
215
- async getAllIntents(tenantId) {
216
- const pipeline = this.client.pipeline();
217
- // 1. Get Tenant Intents
218
- if (tenantId) {
219
- const indexKey = this.getKey(tenantId, 'intents');
220
- const names = await this.client.smembers(indexKey);
221
- names.forEach(name => {
222
- pipeline.call('JSON.GET', this.getKey(tenantId, 'intent', name));
223
- });
224
- }
225
- // 2. Get Global Intents
226
- const globalIndexKey = this.getKey('global', 'intents');
227
- const globalNames = await this.client.smembers(globalIndexKey);
228
- globalNames.forEach(name => {
229
- pipeline.call('JSON.GET', this.getKey('global', 'intent', name));
230
- });
231
- const results = await pipeline.exec();
232
- if (!results)
233
- return [];
234
- return results
235
- .map(([err, res]) => {
236
- if (err || !res)
237
- return null;
238
- return typeof res === 'string' ? JSON.parse(res) : res;
239
- })
240
- .filter((i) => i !== null);
241
- }
242
- // ============================================================================
243
- // Workflow Persistence Methods
244
- // ============================================================================
245
- async saveWorkflow(workflow) {
246
- const tenantId = workflow.tenantId || 'global';
247
- const key = this.getKey(tenantId, 'workflow', workflow.id);
248
- await this.client.call('JSON.SET', key, '$', JSON.stringify(workflow));
249
- // Index by event type
250
- const eventKey = this.getKey(tenantId, 'workflow:events', workflow.event_type);
251
- await this.client.sadd(eventKey, workflow.id);
252
- // Index active status
253
- const activeKey = this.getKey(tenantId, 'workflow:active');
254
- if (workflow.is_active) {
255
- await this.client.sadd(activeKey, workflow.id);
256
- // Scheduling Index (Global ZSET for Cron)
257
- if (workflow.workflow_cron_configs) {
258
- const cronConfig = Array.isArray(workflow.workflow_cron_configs)
259
- ? workflow.workflow_cron_configs[0]
260
- : workflow.workflow_cron_configs;
261
- if (cronConfig && cronConfig.next_run_at) {
262
- const nextRun = new Date(cronConfig.next_run_at).getTime();
263
- // Store as tenantId:workflowId
264
- await this.client.zadd(`${this.GLOBAL_PREFIX}:{scheduler}:workflows`, nextRun, `${tenantId}:${workflow.id}`);
265
- }
266
- }
267
- }
268
- else {
269
- await this.client.srem(activeKey, workflow.id);
270
- await this.client.zrem(`${this.GLOBAL_PREFIX}:{scheduler}:workflows`, `${tenantId}:${workflow.id}`);
271
- }
272
- }
273
- async findWorkflowById(id, tenantId) {
274
- const key = this.getKey(tenantId || 'global', 'workflow', id);
275
- const data = await this.client.call('JSON.GET', key);
276
- if (!data)
277
- return null;
278
- return typeof data === 'string' ? JSON.parse(data) : data;
279
- }
280
- async getActiveWorkflowsForEvent(tenantId, eventType) {
281
- const eventKey = this.getKey(tenantId, 'workflow:events', eventType);
282
- const workflowIds = await this.client.smembers(eventKey);
283
- if (workflowIds.length === 0)
284
- return [];
285
- const pipeline = this.client.pipeline();
286
- for (const id of workflowIds) {
287
- const key = this.getKey(tenantId, 'workflow', id);
288
- pipeline.call('JSON.GET', key);
289
- }
290
- const results = await pipeline.exec();
291
- if (!results)
292
- return [];
293
- return results
294
- .map(([err, res]) => {
295
- if (err || !res)
296
- return null;
297
- const workflow = typeof res === 'string' ? JSON.parse(res) : res;
298
- return workflow.is_active ? workflow : null;
299
- })
300
- .filter((w) => w !== null);
301
- }
302
- async deleteWorkflow(id, tenantId) {
303
- const tid = tenantId || 'global';
304
- const key = this.getKey(tid, 'workflow', id);
305
- const data = await this.client.call('JSON.GET', key);
306
- if (data) {
307
- const workflow = typeof data === 'string' ? JSON.parse(data) : data;
308
- const eventKey = this.getKey(tid, 'workflow:events', workflow.event_type);
309
- await this.client.srem(eventKey, id);
310
- await this.client.srem(this.getKey(tid, 'workflow:active'), id);
311
- await this.client.zrem(`${this.GLOBAL_PREFIX}:{scheduler}:workflows`, `${tid}:${id}`);
312
- }
313
- await this.client.del(key);
314
- }
315
- // ============================================================================
316
- // Workflow Execution Management
317
- // ============================================================================
318
- async createWorkflowExecution(execution) {
319
- const id = execution.id || `exec_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
320
- const tenantId = execution.tenantId || 'global';
321
- const newExecution = {
322
- id,
323
- tenantId,
324
- workflow_id: execution.workflow_id || '',
325
- event_type: execution.event_type || '',
326
- event_payload: execution.event_payload || {},
327
- status: execution.status || 'pending',
328
- started_at: execution.started_at || new Date().toISOString(),
329
- completed_at: execution.completed_at || null,
330
- error_message: execution.error_message || null,
331
- last_failed_step_id: execution.last_failed_step_id || null,
332
- step_logs: execution.step_logs || [],
333
- priority: execution.priority || 0
334
- };
335
- const key = this.getKey(tenantId, 'execution', id);
336
- // SET with TTL
337
- await this.client.call('JSON.SET', key, '$', JSON.stringify(newExecution));
338
- await this.client.expire(key, this.EXECUTION_TTL_SECONDS);
339
- // Save Lookup
340
- const lookupKey = `${this.GLOBAL_PREFIX}:lookup:execution:${id}`;
341
- await this.client.set(lookupKey, tenantId, 'EX', this.EXECUTION_TTL_SECONDS);
342
- // Add to status index
343
- if (newExecution.status === 'pending') {
344
- await this.client.zadd(this.getKey(tenantId, 'execution:pending'), newExecution.priority || 0, id);
345
- }
346
- // Add to workflow index
347
- const workflowIndexKey = this.getKey(tenantId, 'execution:workflow', newExecution.workflow_id);
348
- const startedTime = new Date(newExecution.started_at).getTime();
349
- await this.client.zadd(workflowIndexKey, startedTime, id);
350
- return newExecution;
351
- }
352
- async updateWorkflowExecution(executionId, updates) {
353
- const existing = await this.getWorkflowExecutionById(executionId);
354
- if (!existing)
355
- return;
356
- const tenantId = existing.tenantId || 'global';
357
- const key = this.getKey(tenantId, 'execution', executionId);
358
- const oldStatus = existing.status;
359
- Object.assign(existing, updates);
360
- await this.client.call('JSON.SET', key, '$', JSON.stringify(existing));
361
- await this.client.expire(key, this.EXECUTION_TTL_SECONDS);
362
- // Update status indexes
363
- if (updates.status && updates.status !== oldStatus) {
364
- const pendingKey = this.getKey(tenantId, 'execution:pending');
365
- if (oldStatus === 'pending') {
366
- await this.client.zrem(pendingKey, executionId);
367
- }
368
- if (updates.status === 'pending') {
369
- await this.client.zadd(pendingKey, existing.priority || 0, executionId);
370
- }
371
- }
372
- }
373
- async getWorkflowExecutionById(executionId) {
374
- // 1. Try Lookup
375
- const lookupKey = `${this.GLOBAL_PREFIX}:lookup:execution:${executionId}`;
376
- const tenantId = await this.client.get(lookupKey);
377
- let key;
378
- if (tenantId) {
379
- key = this.getKey(tenantId, 'execution', executionId);
380
- }
381
- else {
382
- // Try legacy
383
- const legacyKey = `execution:${executionId}`;
384
- const data = await this.client.call('JSON.GET', legacyKey);
385
- if (data)
386
- return typeof data === 'string' ? JSON.parse(data) : data;
387
- // Try assuming global (pre-migration with global prefix?)
388
- key = this.getKey('global', 'execution', executionId);
389
- }
390
- // 2. Fetch
391
- const data = await this.client.call('JSON.GET', key);
392
- if (!data)
393
- return null;
394
- return typeof data === 'string' ? JSON.parse(data) : data;
395
- }
396
- async getWorkflowExecutionWithLogs(executionId) {
397
- const execution = await this.getWorkflowExecutionById(executionId);
398
- if (!execution) {
399
- throw new Error(`Execution ${executionId} not found`);
400
- }
401
- const tenantId = execution.tenantId || 'global';
402
- const logs = await this.getWorkflowExecutionLogs(executionId);
403
- const workflow = await this.findWorkflowById(execution.workflow_id, tenantId);
404
- return {
405
- ...execution,
406
- workflow_action_logs: logs,
407
- workflow: workflow
408
- };
409
- }
410
- async getPendingWorkflowExecutions(limit) {
411
- // GLOBAL POLLING MOCK - ideally we poll specific queues or a global one.
412
- // For now, let's scan a global 'pending' ZSET if we implemented one?
413
- // We only implemented per-tenant 'execution:pending'.
414
- // We should PROBABLY have a global 'system:pending' for the dispatcher.
415
- // But for this refactor, let's just assume we check the 'global' tenant or this method is deprecated for multi-tenant.
416
- // Or we iterate all tenants? (Impossible efficiently).
417
- // Fix: We should also add to a global pending queue in createWorkflowExecution if we want a global dispatcher.
418
- // But that breaks strict data residency if required.
419
- // Let's assume 'global' tenant for now or verify if we can add a global 'queue'.
420
- // HACK: Just check 'global' tenant for now since existing tests/usage likely use it.
421
- const key = this.getKey('global', 'execution:pending');
422
- const ids = await this.client.zrange(key, 0, limit - 1);
423
- const results = [];
424
- for (const id of ids) {
425
- const exec = await this.getWorkflowExecutionById(id);
426
- if (exec)
427
- results.push(exec);
428
- }
429
- return results;
430
- }
431
- async getActiveWorkflowExecutionCount(workflowId) {
432
- // Limited implementation without tenant context
433
- return 0;
434
- }
435
- async markWorkflowExecutionFailed(executionId, error) {
436
- await this.updateWorkflowExecution(executionId, {
437
- status: 'failed',
438
- error_message: error,
439
- completed_at: new Date().toISOString()
440
- });
441
- }
442
- // ============================================================================
443
- // Workflow Action Logging
444
- // ============================================================================
445
- async logWorkflowAction(logEntry) {
446
- const id = logEntry.id || `log_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
447
- const tenantId = logEntry.tenantId || 'global';
448
- const newLog = {
449
- id,
450
- workflow_id: logEntry.workflow_id || null,
451
- tenantId,
452
- execution_id: logEntry.execution_id || '',
453
- step_id: logEntry.step_id || null,
454
- action_type: logEntry.action_type || '',
455
- input: logEntry.input || null,
456
- output: logEntry.output || null,
457
- status: logEntry.status || 'pending',
458
- error_message: logEntry.error_message || null,
459
- started_at: logEntry.started_at || new Date().toISOString(),
460
- completed_at: logEntry.completed_at || null
461
- };
462
- const key = this.getKey(tenantId, 'log', id);
463
- await this.client.call('JSON.SET', key, '$', JSON.stringify(newLog));
464
- await this.client.expire(key, this.EXECUTION_TTL_SECONDS);
465
- // Index by execution
466
- const indexKey = this.getKey(tenantId, 'logs:execution', newLog.execution_id);
467
- await this.client.rpush(indexKey, id);
468
- await this.client.expire(indexKey, this.EXECUTION_TTL_SECONDS);
469
- return newLog;
470
- }
471
- async getWorkflowExecutionLogs(executionId) {
472
- const execution = await this.getWorkflowExecutionById(executionId);
473
- if (!execution)
474
- return [];
475
- const tenantId = execution.tenantId || 'global';
476
- const indexKey = this.getKey(tenantId, 'logs:execution', executionId);
477
- const logIds = await this.client.lrange(indexKey, 0, -1);
478
- if (logIds.length === 0)
479
- return [];
480
- const pipeline = this.client.pipeline();
481
- for (const logId of logIds) {
482
- pipeline.call('JSON.GET', this.getKey(tenantId, 'log', logId));
483
- }
484
- const results = await pipeline.exec();
485
- if (!results)
486
- return [];
487
- return results
488
- .map(([err, res]) => {
489
- if (err || !res)
490
- return null;
491
- return typeof res === 'string' ? JSON.parse(res) : res;
492
- })
493
- .filter((log) => log !== null);
494
- }
495
- // ============================================================================
496
- // Webhook Event Storage
497
- // ============================================================================
498
- async storeWebhookEvent(event) {
499
- const id = await this.client.incr(`${this.GLOBAL_PREFIX}:counter:webhook`);
500
- const tenantId = event.tenantId || 'global';
501
- const newEvent = {
502
- id,
503
- created_at: event.created_at || new Date().toISOString(),
504
- type: event.type || '',
505
- payload: event.payload || {},
506
- source: event.source || '',
507
- tenantId,
508
- status: event.status || 'pending',
509
- error_message: event.error_message || null
510
- };
511
- const key = this.getKey(tenantId, 'webhook:event', id.toString());
512
- await this.client.call('JSON.SET', key, '$', JSON.stringify(newEvent));
513
- await this.client.expire(key, this.EXECUTION_TTL_SECONDS);
514
- // Save Lookup
515
- const lookupKey = `${this.GLOBAL_PREFIX}:lookup:webhook:${id}`;
516
- await this.client.set(lookupKey, tenantId, 'EX', this.EXECUTION_TTL_SECONDS);
517
- return id;
518
- }
519
- async getWebhookEvent(id) {
520
- // 1. Try Lookup
521
- const lookupKey = `${this.GLOBAL_PREFIX}:lookup:webhook:${id}`;
522
- const tenantId = await this.client.get(lookupKey);
523
- let key;
524
- if (tenantId) {
525
- key = this.getKey(tenantId, 'webhook:event', id.toString());
526
- }
527
- else {
528
- // Fallback to legacy or global check?
529
- // Assuming existing ones might be under intent-less keys.
530
- // We can't recover easily without lookup for new segmented model.
531
- return null;
532
- }
533
- const data = await this.client.call('JSON.GET', key);
534
- if (!data)
535
- return null;
536
- return typeof data === 'string' ? JSON.parse(data) : data;
537
- }
538
- async updateWebhookEventStatus(id, updates) {
539
- const event = await this.getWebhookEvent(id);
540
- if (!event)
541
- return;
542
- const tenantId = event.tenantId || 'global'; // Should be there if we found it
543
- const key = this.getKey(tenantId, 'webhook:event', id.toString());
544
- Object.assign(event, updates);
545
- await this.client.call('JSON.SET', key, '$', JSON.stringify(event));
546
- await this.client.expire(key, this.EXECUTION_TTL_SECONDS);
547
- }
548
- // ============================================================================
549
- // Workflow Scheduling (Cron)
550
- // ============================================================================
551
- async getDueScheduledWorkflows(now) {
552
- const schedulerKey = `${this.GLOBAL_PREFIX}:{scheduler}:workflows`;
553
- const nowScore = now.getTime();
554
- const members = await this.client.zrangebyscore(schedulerKey, 0, nowScore);
555
- if (members.length === 0)
556
- return [];
557
- const workflows = [];
558
- const pipeline = this.client.pipeline();
559
- for (const member of members) {
560
- const [tenantId, workflowId] = member.split(':');
561
- const key = this.getKey(tenantId, 'workflow', workflowId);
562
- pipeline.call('JSON.GET', key);
563
- }
564
- const results = await pipeline.exec();
565
- if (!results)
566
- return [];
567
- results.forEach(([err, res]) => {
568
- if (!err && res) {
569
- workflows.push(typeof res === 'string' ? JSON.parse(res) : res);
570
- }
571
- });
572
- return workflows;
573
- }
574
- async updateWorkflowSchedule(workflowId, nextRun) {
575
- // Without tenantId, this is hard.
576
- // We will assume this method is deprecated or called ONLY after a verification logic that should pass tenantId
577
- // but interface limits us.
578
- // We can't implement this efficiently without tenantId in args.
579
- return;
580
- }
581
- async disconnect() {
582
- await this.client.quit();
583
- }
584
- }
585
- exports.RedisRepository = RedisRepository;
586
- //# sourceMappingURL=RedisRepository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RedisRepository.js","sourceRoot":"","sources":["../../../src/adapters/repository/RedisRepository.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import Redis from 'ioredis';
2
- import { IAudioStorage, AudioFormatMetadata } from '../../interfaces';
3
- /**
4
- * Redis Audio Storage Adapter
5
- * Stores audio recordings in Redis with automatic format conversion
6
- * All audio is normalized to LINEAR16 PCM (16kHz, mono, 16-bit) during storage
7
- * Final playback generates a proper WAV file with headers
8
- */
9
- export declare class RedisAudioStorageAdapter implements IAudioStorage {
10
- private redis;
11
- private storageRoot;
12
- private baseUrl;
13
- constructor(redisClient: Redis, storageRoot?: string, baseUrl?: string);
14
- private getRedisKey;
15
- initializeSession(sessionId: string, metadata: any): Promise<void>;
16
- /**
17
- * Append audio chunk with automatic format conversion to PCM
18
- */
19
- appendAudio(sessionId: string, audioData: Buffer, formatMetadata?: AudioFormatMetadata): Promise<void>;
20
- /**
21
- * Finalize session and return audio URL
22
- */
23
- finalizeSession(sessionId: string): Promise<string>;
24
- /**
25
- * Get audio URL for a session
26
- */
27
- getAudioUrl(sessionId: string): Promise<string | null>;
28
- /**
29
- * Get session audio as a complete WAV file
30
- */
31
- getSessionAudio(sessionId: string): Promise<Buffer | null>;
32
- }
33
- //# sourceMappingURL=RedisAudioStorageAdapter.d.ts.map