chat-flow-ardymalihi 1.0.2 → 3.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 (470) hide show
  1. package/README.md +2 -0
  2. package/dist/adapters/intent/IntentMatcher.d.ts +16 -0
  3. package/dist/adapters/intent/IntentMatcher.d.ts.map +1 -1
  4. package/dist/adapters/intent/IntentMatcher.js +93 -15
  5. package/dist/adapters/intent/IntentMatcher.js.map +1 -1
  6. package/dist/adapters/intent/IntentService.d.ts +4 -5
  7. package/dist/adapters/intent/IntentService.d.ts.map +1 -1
  8. package/dist/adapters/intent/IntentService.js +15 -9
  9. package/dist/adapters/intent/IntentService.js.map +1 -1
  10. package/dist/adapters/intent/MockIntentService.d.ts +7 -0
  11. package/dist/adapters/intent/MockIntentService.d.ts.map +1 -0
  12. package/dist/adapters/intent/MockIntentService.js +36 -0
  13. package/dist/adapters/intent/MockIntentService.js.map +1 -0
  14. package/dist/adapters/llm/OllamaLLMAdapter.d.ts +9 -0
  15. package/dist/adapters/llm/OllamaLLMAdapter.d.ts.map +1 -0
  16. package/dist/adapters/llm/OllamaLLMAdapter.js +74 -0
  17. package/dist/adapters/llm/OllamaLLMAdapter.js.map +1 -0
  18. package/dist/adapters/logger/ConsoleLogger.d.ts +12 -0
  19. package/dist/adapters/logger/ConsoleLogger.d.ts.map +1 -0
  20. package/dist/adapters/logger/ConsoleLogger.js +37 -0
  21. package/dist/adapters/logger/ConsoleLogger.js.map +1 -0
  22. package/dist/adapters/repository/InMemoryRepository.d.ts +35 -4
  23. package/dist/adapters/repository/InMemoryRepository.d.ts.map +1 -1
  24. package/dist/adapters/repository/InMemoryRepository.js +204 -10
  25. package/dist/adapters/repository/InMemoryRepository.js.map +1 -1
  26. package/dist/adapters/repository/RedisRepository.d.ts +52 -5
  27. package/dist/adapters/repository/RedisRepository.d.ts.map +1 -1
  28. package/dist/adapters/repository/RedisRepository.js +525 -26
  29. package/dist/adapters/repository/RedisRepository.js.map +1 -1
  30. package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts +33 -0
  31. package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts.map +1 -0
  32. package/dist/adapters/storage/RedisAudioStorageAdapter.js +121 -0
  33. package/dist/adapters/storage/RedisAudioStorageAdapter.js.map +1 -0
  34. package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts +14 -0
  35. package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts.map +1 -0
  36. package/dist/adapters/storage/RedisBufferStorageAdapter.js +94 -0
  37. package/dist/adapters/storage/RedisBufferStorageAdapter.js.map +1 -0
  38. package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts +29 -0
  39. package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts.map +1 -0
  40. package/dist/adapters/voice/ElevenLabsVoiceAdapter.js +75 -0
  41. package/dist/adapters/voice/ElevenLabsVoiceAdapter.js.map +1 -0
  42. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts +77 -0
  43. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts.map +1 -0
  44. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js +187 -0
  45. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js.map +1 -0
  46. package/dist/adapters/voice/GeminiVoiceAdapter.d.ts +36 -0
  47. package/dist/adapters/voice/GeminiVoiceAdapter.d.ts.map +1 -0
  48. package/dist/adapters/voice/GeminiVoiceAdapter.js +134 -0
  49. package/dist/adapters/voice/GeminiVoiceAdapter.js.map +1 -0
  50. package/dist/adapters/voice/GoogleTTSAdapter.d.ts +61 -0
  51. package/dist/adapters/voice/GoogleTTSAdapter.d.ts.map +1 -0
  52. package/dist/adapters/voice/GoogleTTSAdapter.js +165 -0
  53. package/dist/adapters/voice/GoogleTTSAdapter.js.map +1 -0
  54. package/dist/adapters/voice/GoogleVoiceAdapter.d.ts +33 -0
  55. package/dist/adapters/voice/GoogleVoiceAdapter.d.ts.map +1 -0
  56. package/dist/adapters/voice/GoogleVoiceAdapter.js +155 -0
  57. package/dist/adapters/voice/GoogleVoiceAdapter.js.map +1 -0
  58. package/dist/adapters/voice/HybridVoiceAdapter.d.ts +54 -0
  59. package/dist/adapters/voice/HybridVoiceAdapter.d.ts.map +1 -0
  60. package/dist/adapters/voice/HybridVoiceAdapter.js +102 -0
  61. package/dist/adapters/voice/HybridVoiceAdapter.js.map +1 -0
  62. package/dist/adapters/voice/LanguageVoiceMapper.d.ts +60 -0
  63. package/dist/adapters/voice/LanguageVoiceMapper.d.ts.map +1 -0
  64. package/dist/adapters/voice/LanguageVoiceMapper.js +130 -0
  65. package/dist/adapters/voice/LanguageVoiceMapper.js.map +1 -0
  66. package/dist/adapters/voice/VertexVoiceAdapter.d.ts +32 -0
  67. package/dist/adapters/voice/VertexVoiceAdapter.d.ts.map +1 -0
  68. package/dist/adapters/voice/VertexVoiceAdapter.js +179 -0
  69. package/dist/adapters/voice/VertexVoiceAdapter.js.map +1 -0
  70. package/dist/adapters/webhook/WebhookService.d.ts +47 -0
  71. package/dist/adapters/webhook/WebhookService.d.ts.map +1 -0
  72. package/dist/adapters/webhook/WebhookService.js +265 -0
  73. package/dist/adapters/webhook/WebhookService.js.map +1 -0
  74. package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +1 -1
  75. package/dist/adapters/workflow/MockWorkflowAdapter.js +12 -1
  76. package/dist/adapters/workflow/MockWorkflowAdapter.js.map +1 -1
  77. package/dist/adapters/workflow/WorkflowAdapter.d.ts +55 -0
  78. package/dist/adapters/workflow/WorkflowAdapter.d.ts.map +1 -0
  79. package/dist/adapters/workflow/WorkflowAdapter.js +242 -0
  80. package/dist/adapters/workflow/WorkflowAdapter.js.map +1 -0
  81. package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts +10 -0
  82. package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts.map +1 -0
  83. package/dist/adapters/workflow/actions/getSupportHoursAction.js +33 -0
  84. package/dist/adapters/workflow/actions/getSupportHoursAction.js.map +1 -0
  85. package/dist/adapters/workflow/actions/index.d.ts +6 -0
  86. package/dist/adapters/workflow/actions/index.d.ts.map +1 -0
  87. package/dist/adapters/workflow/actions/index.js +22 -0
  88. package/dist/adapters/workflow/actions/index.js.map +1 -0
  89. package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts +11 -0
  90. package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts.map +1 -0
  91. package/dist/adapters/workflow/actions/pushOutputResultAction.js +31 -0
  92. package/dist/adapters/workflow/actions/pushOutputResultAction.js.map +1 -0
  93. package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts +12 -0
  94. package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts.map +1 -0
  95. package/dist/adapters/workflow/actions/setWorkflowMessageAction.js +32 -0
  96. package/dist/adapters/workflow/actions/setWorkflowMessageAction.js.map +1 -0
  97. package/dist/adapters/workflow/engine/constants.d.ts +3 -0
  98. package/dist/adapters/workflow/engine/constants.d.ts.map +1 -0
  99. package/dist/adapters/workflow/engine/constants.js +6 -0
  100. package/dist/adapters/workflow/engine/constants.js.map +1 -0
  101. package/dist/adapters/workflow/engine/engine.d.ts +32 -0
  102. package/dist/adapters/workflow/engine/engine.d.ts.map +1 -0
  103. package/dist/adapters/workflow/engine/engine.js +623 -0
  104. package/dist/adapters/workflow/engine/engine.js.map +1 -0
  105. package/dist/adapters/workflow/engine/event-registry.d.ts +12 -0
  106. package/dist/adapters/workflow/engine/event-registry.d.ts.map +1 -0
  107. package/dist/adapters/workflow/engine/event-registry.js +33 -0
  108. package/dist/adapters/workflow/engine/event-registry.js.map +1 -0
  109. package/dist/adapters/workflow/engine/interpolator.d.ts +11 -0
  110. package/dist/adapters/workflow/engine/interpolator.d.ts.map +1 -0
  111. package/dist/adapters/workflow/engine/interpolator.js +93 -0
  112. package/dist/adapters/workflow/engine/interpolator.js.map +1 -0
  113. package/dist/adapters/workflow/engine/registry.d.ts +12 -0
  114. package/dist/adapters/workflow/engine/registry.d.ts.map +1 -0
  115. package/dist/adapters/workflow/engine/registry.js +39 -0
  116. package/dist/adapters/workflow/engine/registry.js.map +1 -0
  117. package/dist/adapters/workflow/engine/template-registry.d.ts +60 -0
  118. package/dist/adapters/workflow/engine/template-registry.d.ts.map +1 -0
  119. package/dist/adapters/workflow/engine/template-registry.js +92 -0
  120. package/dist/adapters/workflow/engine/template-registry.js.map +1 -0
  121. package/dist/adapters/workflow/engine/types.d.ts +182 -0
  122. package/dist/adapters/workflow/engine/types.d.ts.map +1 -0
  123. package/dist/adapters/workflow/engine/types.js +3 -0
  124. package/dist/adapters/workflow/engine/types.js.map +1 -0
  125. package/dist/adapters/workflow/engine/utils/format-utils.d.ts +43 -0
  126. package/dist/adapters/workflow/engine/utils/format-utils.d.ts.map +1 -0
  127. package/dist/adapters/workflow/engine/utils/format-utils.js +137 -0
  128. package/dist/adapters/workflow/engine/utils/format-utils.js.map +1 -0
  129. package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts +7 -0
  130. package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts.map +1 -0
  131. package/dist/adapters/workflow/engine/utils/layout-calculator.js +87 -0
  132. package/dist/adapters/workflow/engine/utils/layout-calculator.js.map +1 -0
  133. package/dist/adapters/workflow/engine/utils/slugify.d.ts +2 -0
  134. package/dist/adapters/workflow/engine/utils/slugify.d.ts.map +1 -0
  135. package/dist/adapters/workflow/engine/utils/slugify.js +41 -0
  136. package/dist/adapters/workflow/engine/utils/slugify.js.map +1 -0
  137. package/dist/adapters/workflow/engine/validator.d.ts +9 -0
  138. package/dist/adapters/workflow/engine/validator.d.ts.map +1 -0
  139. package/dist/adapters/workflow/engine/validator.js +425 -0
  140. package/dist/adapters/workflow/engine/validator.js.map +1 -0
  141. package/dist/config/ChatFlowConfig.d.ts +7 -0
  142. package/dist/config/ChatFlowConfig.d.ts.map +1 -1
  143. package/dist/config/ChatFlowConfig.js +5 -0
  144. package/dist/config/ChatFlowConfig.js.map +1 -1
  145. package/dist/core/entities/ConversationSession.d.ts +36 -1
  146. package/dist/core/entities/ConversationSession.d.ts.map +1 -1
  147. package/dist/core/entities/ConversationSession.js +78 -1
  148. package/dist/core/entities/ConversationSession.js.map +1 -1
  149. package/dist/core/entities/Message.d.ts +5 -2
  150. package/dist/core/entities/Message.d.ts.map +1 -1
  151. package/dist/core/entities/Message.js +2 -0
  152. package/dist/core/entities/Message.js.map +1 -1
  153. package/dist/core/utils/AudioStreamBuffer.d.ts +33 -0
  154. package/dist/core/utils/AudioStreamBuffer.d.ts.map +1 -0
  155. package/dist/core/utils/AudioStreamBuffer.js +55 -0
  156. package/dist/core/utils/AudioStreamBuffer.js.map +1 -0
  157. package/dist/core/utils/AudioUtils.d.ts +41 -0
  158. package/dist/core/utils/AudioUtils.d.ts.map +1 -0
  159. package/dist/core/utils/AudioUtils.js +188 -0
  160. package/dist/core/utils/AudioUtils.js.map +1 -0
  161. package/dist/core/utils/LanguageDetector.d.ts +52 -0
  162. package/dist/core/utils/LanguageDetector.d.ts.map +1 -0
  163. package/dist/core/utils/LanguageDetector.js +173 -0
  164. package/dist/core/utils/LanguageDetector.js.map +1 -0
  165. package/dist/core/utils/WavUtils.d.ts +14 -0
  166. package/dist/core/utils/WavUtils.d.ts.map +1 -0
  167. package/dist/core/utils/WavUtils.js +37 -0
  168. package/dist/core/utils/WavUtils.js.map +1 -0
  169. package/dist/demo/cli-demo.js +10 -6
  170. package/dist/demo/cli-demo.js.map +1 -1
  171. package/dist/demo/console-chat.js +10 -6
  172. package/dist/demo/console-chat.js.map +1 -1
  173. package/dist/demo/interactive-voice-chat.d.ts +2 -0
  174. package/dist/demo/interactive-voice-chat.d.ts.map +1 -0
  175. package/dist/demo/interactive-voice-chat.js +180 -0
  176. package/dist/demo/interactive-voice-chat.js.map +1 -0
  177. package/dist/demo/voice-demo.d.ts +2 -0
  178. package/dist/demo/voice-demo.d.ts.map +1 -0
  179. package/dist/demo/voice-demo.js +188 -0
  180. package/dist/demo/voice-demo.js.map +1 -0
  181. package/dist/index.d.ts +9 -5
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +23 -8
  184. package/dist/index.js.map +1 -1
  185. package/dist/intent/IntentService.d.ts.map +1 -1
  186. package/dist/intent/IntentService.js +13 -7
  187. package/dist/intent/IntentService.js.map +1 -1
  188. package/dist/intent/MockIntentService.d.ts +2 -1
  189. package/dist/intent/MockIntentService.d.ts.map +1 -1
  190. package/dist/intent/MockIntentService.js +9 -3
  191. package/dist/intent/MockIntentService.js.map +1 -1
  192. package/dist/interfaces.d.ts +551 -6
  193. package/dist/interfaces.d.ts.map +1 -1
  194. package/dist/interfaces.js +19 -1
  195. package/dist/interfaces.js.map +1 -1
  196. package/dist/orchestrator/Orchestrator.d.ts +48 -4
  197. package/dist/orchestrator/Orchestrator.d.ts.map +1 -1
  198. package/dist/orchestrator/Orchestrator.js +650 -33
  199. package/dist/orchestrator/Orchestrator.js.map +1 -1
  200. package/dist/scripts/seed-collaborative-intents.d.ts +2 -0
  201. package/dist/scripts/seed-collaborative-intents.d.ts.map +1 -0
  202. package/dist/scripts/seed-collaborative-intents.js +90 -0
  203. package/dist/scripts/seed-collaborative-intents.js.map +1 -0
  204. package/dist/scripts/test-isolated-config.d.ts +2 -0
  205. package/dist/scripts/test-isolated-config.d.ts.map +1 -0
  206. package/dist/scripts/test-isolated-config.js +80 -0
  207. package/dist/scripts/test-isolated-config.js.map +1 -0
  208. package/dist/scripts/verify_redis_intents.js +4 -2
  209. package/dist/scripts/verify_redis_intents.js.map +1 -1
  210. package/dist/server/ChatFlowWebSocketServer.d.ts +46 -0
  211. package/dist/server/ChatFlowWebSocketServer.d.ts.map +1 -0
  212. package/dist/server/ChatFlowWebSocketServer.js +344 -0
  213. package/dist/server/ChatFlowWebSocketServer.js.map +1 -0
  214. package/dist/server/realtime-voice-server.d.ts +2 -0
  215. package/dist/server/realtime-voice-server.d.ts.map +1 -0
  216. package/dist/server/realtime-voice-server.js +627 -0
  217. package/dist/server/realtime-voice-server.js.map +1 -0
  218. package/dist/src/adapters/intent/IntentMatcher.d.ts +41 -0
  219. package/dist/src/adapters/intent/IntentMatcher.d.ts.map +1 -0
  220. package/dist/src/adapters/intent/IntentMatcher.js +167 -0
  221. package/dist/src/adapters/intent/IntentMatcher.js.map +1 -0
  222. package/dist/src/adapters/intent/IntentService.d.ts +26 -0
  223. package/dist/src/adapters/intent/IntentService.d.ts.map +1 -0
  224. package/dist/src/adapters/intent/IntentService.js +65 -0
  225. package/dist/src/adapters/intent/IntentService.js.map +1 -0
  226. package/dist/src/adapters/intent/MockIntentService.d.ts +7 -0
  227. package/dist/src/adapters/intent/MockIntentService.d.ts.map +1 -0
  228. package/dist/src/adapters/intent/MockIntentService.js +36 -0
  229. package/dist/src/adapters/intent/MockIntentService.js.map +1 -0
  230. package/dist/src/adapters/llm/GeminiLLMAdapter.d.ts +10 -0
  231. package/dist/src/adapters/llm/GeminiLLMAdapter.d.ts.map +1 -0
  232. package/dist/src/adapters/llm/GeminiLLMAdapter.js +102 -0
  233. package/dist/src/adapters/llm/GeminiLLMAdapter.js.map +1 -0
  234. package/dist/src/adapters/llm/MockLLMAdapter.d.ts +5 -0
  235. package/dist/src/adapters/llm/MockLLMAdapter.d.ts.map +1 -0
  236. package/dist/src/adapters/llm/MockLLMAdapter.js +31 -0
  237. package/dist/src/adapters/llm/MockLLMAdapter.js.map +1 -0
  238. package/dist/src/adapters/llm/OllamaLLMAdapter.d.ts +9 -0
  239. package/dist/src/adapters/llm/OllamaLLMAdapter.d.ts.map +1 -0
  240. package/dist/src/adapters/llm/OllamaLLMAdapter.js +74 -0
  241. package/dist/src/adapters/llm/OllamaLLMAdapter.js.map +1 -0
  242. package/dist/src/adapters/logger/ConsoleLogger.d.ts +12 -0
  243. package/dist/src/adapters/logger/ConsoleLogger.d.ts.map +1 -0
  244. package/dist/src/adapters/logger/ConsoleLogger.js +37 -0
  245. package/dist/src/adapters/logger/ConsoleLogger.js.map +1 -0
  246. package/dist/src/adapters/repository/InMemoryRepository.d.ts +57 -0
  247. package/dist/src/adapters/repository/InMemoryRepository.d.ts.map +1 -0
  248. package/dist/src/adapters/repository/InMemoryRepository.js +269 -0
  249. package/dist/src/adapters/repository/InMemoryRepository.js.map +1 -0
  250. package/dist/src/adapters/repository/RedisRepository.d.ts +72 -0
  251. package/dist/src/adapters/repository/RedisRepository.d.ts.map +1 -0
  252. package/dist/src/adapters/repository/RedisRepository.js +700 -0
  253. package/dist/src/adapters/repository/RedisRepository.js.map +1 -0
  254. package/dist/src/adapters/repository/SupabaseRepository.d.ts +60 -0
  255. package/dist/src/adapters/repository/SupabaseRepository.d.ts.map +1 -0
  256. package/dist/src/adapters/repository/SupabaseRepository.js +774 -0
  257. package/dist/src/adapters/repository/SupabaseRepository.js.map +1 -0
  258. package/dist/src/adapters/storage/RedisAudioStorageAdapter.d.ts +33 -0
  259. package/dist/src/adapters/storage/RedisAudioStorageAdapter.d.ts.map +1 -0
  260. package/dist/src/adapters/storage/RedisAudioStorageAdapter.js +121 -0
  261. package/dist/src/adapters/storage/RedisAudioStorageAdapter.js.map +1 -0
  262. package/dist/src/adapters/voice/GoogleVoiceAdapter.d.ts +33 -0
  263. package/dist/src/adapters/voice/GoogleVoiceAdapter.d.ts.map +1 -0
  264. package/dist/src/adapters/voice/GoogleVoiceAdapter.js +155 -0
  265. package/dist/src/adapters/voice/GoogleVoiceAdapter.js.map +1 -0
  266. package/dist/src/adapters/voice/LanguageVoiceMapper.d.ts +60 -0
  267. package/dist/src/adapters/voice/LanguageVoiceMapper.d.ts.map +1 -0
  268. package/dist/src/adapters/voice/LanguageVoiceMapper.js +130 -0
  269. package/dist/src/adapters/voice/LanguageVoiceMapper.js.map +1 -0
  270. package/dist/src/adapters/voice/VertexVoiceAdapter.d.ts +32 -0
  271. package/dist/src/adapters/voice/VertexVoiceAdapter.d.ts.map +1 -0
  272. package/dist/src/adapters/voice/VertexVoiceAdapter.js +179 -0
  273. package/dist/src/adapters/voice/VertexVoiceAdapter.js.map +1 -0
  274. package/dist/src/adapters/webhook/WebhookService.d.ts +47 -0
  275. package/dist/src/adapters/webhook/WebhookService.d.ts.map +1 -0
  276. package/dist/src/adapters/webhook/WebhookService.js +265 -0
  277. package/dist/src/adapters/webhook/WebhookService.js.map +1 -0
  278. package/dist/src/adapters/workflow/MockWorkflowAdapter.d.ts +5 -0
  279. package/dist/src/adapters/workflow/MockWorkflowAdapter.d.ts.map +1 -0
  280. package/dist/src/adapters/workflow/MockWorkflowAdapter.js +173 -0
  281. package/dist/src/adapters/workflow/MockWorkflowAdapter.js.map +1 -0
  282. package/dist/src/adapters/workflow/WorkflowAdapter.d.ts +55 -0
  283. package/dist/src/adapters/workflow/WorkflowAdapter.d.ts.map +1 -0
  284. package/dist/src/adapters/workflow/WorkflowAdapter.js +203 -0
  285. package/dist/src/adapters/workflow/WorkflowAdapter.js.map +1 -0
  286. package/dist/src/adapters/workflow/actions/index.d.ts +6 -0
  287. package/dist/src/adapters/workflow/actions/index.d.ts.map +1 -0
  288. package/dist/src/adapters/workflow/actions/index.js +22 -0
  289. package/dist/src/adapters/workflow/actions/index.js.map +1 -0
  290. package/dist/src/adapters/workflow/actions/pushOutputResultAction.d.ts +11 -0
  291. package/dist/src/adapters/workflow/actions/pushOutputResultAction.d.ts.map +1 -0
  292. package/dist/src/adapters/workflow/actions/pushOutputResultAction.js +31 -0
  293. package/dist/src/adapters/workflow/actions/pushOutputResultAction.js.map +1 -0
  294. package/dist/src/adapters/workflow/engine/constants.d.ts +3 -0
  295. package/dist/src/adapters/workflow/engine/constants.d.ts.map +1 -0
  296. package/dist/src/adapters/workflow/engine/constants.js +6 -0
  297. package/dist/src/adapters/workflow/engine/constants.js.map +1 -0
  298. package/dist/src/adapters/workflow/engine/engine.d.ts +32 -0
  299. package/dist/src/adapters/workflow/engine/engine.d.ts.map +1 -0
  300. package/dist/src/adapters/workflow/engine/engine.js +622 -0
  301. package/dist/src/adapters/workflow/engine/engine.js.map +1 -0
  302. package/dist/src/adapters/workflow/engine/event-registry.d.ts +12 -0
  303. package/dist/src/adapters/workflow/engine/event-registry.d.ts.map +1 -0
  304. package/dist/src/adapters/workflow/engine/event-registry.js +33 -0
  305. package/dist/src/adapters/workflow/engine/event-registry.js.map +1 -0
  306. package/dist/src/adapters/workflow/engine/interpolator.d.ts +11 -0
  307. package/dist/src/adapters/workflow/engine/interpolator.d.ts.map +1 -0
  308. package/dist/src/adapters/workflow/engine/interpolator.js +93 -0
  309. package/dist/src/adapters/workflow/engine/interpolator.js.map +1 -0
  310. package/dist/src/adapters/workflow/engine/registry.d.ts +12 -0
  311. package/dist/src/adapters/workflow/engine/registry.d.ts.map +1 -0
  312. package/dist/src/adapters/workflow/engine/registry.js +39 -0
  313. package/dist/src/adapters/workflow/engine/registry.js.map +1 -0
  314. package/dist/src/adapters/workflow/engine/template-registry.d.ts +60 -0
  315. package/dist/src/adapters/workflow/engine/template-registry.d.ts.map +1 -0
  316. package/dist/src/adapters/workflow/engine/template-registry.js +92 -0
  317. package/dist/src/adapters/workflow/engine/template-registry.js.map +1 -0
  318. package/dist/src/adapters/workflow/engine/utils/format-utils.d.ts +43 -0
  319. package/dist/src/adapters/workflow/engine/utils/format-utils.d.ts.map +1 -0
  320. package/dist/src/adapters/workflow/engine/utils/format-utils.js +137 -0
  321. package/dist/src/adapters/workflow/engine/utils/format-utils.js.map +1 -0
  322. package/dist/src/adapters/workflow/engine/utils/layout-calculator.d.ts +7 -0
  323. package/dist/src/adapters/workflow/engine/utils/layout-calculator.d.ts.map +1 -0
  324. package/dist/src/adapters/workflow/engine/utils/layout-calculator.js +87 -0
  325. package/dist/src/adapters/workflow/engine/utils/layout-calculator.js.map +1 -0
  326. package/dist/src/adapters/workflow/engine/utils/slugify.d.ts +2 -0
  327. package/dist/src/adapters/workflow/engine/utils/slugify.d.ts.map +1 -0
  328. package/dist/src/adapters/workflow/engine/utils/slugify.js +41 -0
  329. package/dist/src/adapters/workflow/engine/utils/slugify.js.map +1 -0
  330. package/dist/src/adapters/workflow/engine/validator.d.ts +9 -0
  331. package/dist/src/adapters/workflow/engine/validator.d.ts.map +1 -0
  332. package/dist/src/adapters/workflow/engine/validator.js +425 -0
  333. package/dist/src/adapters/workflow/engine/validator.js.map +1 -0
  334. package/dist/src/api/router.d.ts +3 -0
  335. package/dist/src/api/router.d.ts.map +1 -0
  336. package/dist/src/api/router.js +27 -0
  337. package/dist/src/api/router.js.map +1 -0
  338. package/dist/src/api/routes/configs.d.ts +3 -0
  339. package/dist/src/api/routes/configs.d.ts.map +1 -0
  340. package/dist/src/api/routes/configs.js +110 -0
  341. package/dist/src/api/routes/configs.js.map +1 -0
  342. package/dist/src/api/routes/executions.d.ts +3 -0
  343. package/dist/src/api/routes/executions.d.ts.map +1 -0
  344. package/dist/src/api/routes/executions.js +77 -0
  345. package/dist/src/api/routes/executions.js.map +1 -0
  346. package/dist/src/api/routes/intents.d.ts +3 -0
  347. package/dist/src/api/routes/intents.d.ts.map +1 -0
  348. package/dist/src/api/routes/intents.js +128 -0
  349. package/dist/src/api/routes/intents.js.map +1 -0
  350. package/dist/src/api/routes/sessions.d.ts +3 -0
  351. package/dist/src/api/routes/sessions.d.ts.map +1 -0
  352. package/dist/src/api/routes/sessions.js +105 -0
  353. package/dist/src/api/routes/sessions.js.map +1 -0
  354. package/dist/src/api/routes/tenants.d.ts +3 -0
  355. package/dist/src/api/routes/tenants.d.ts.map +1 -0
  356. package/dist/src/api/routes/tenants.js +109 -0
  357. package/dist/src/api/routes/tenants.js.map +1 -0
  358. package/dist/src/api/routes/users.d.ts +3 -0
  359. package/dist/src/api/routes/users.d.ts.map +1 -0
  360. package/dist/src/api/routes/users.js +51 -0
  361. package/dist/src/api/routes/users.js.map +1 -0
  362. package/dist/src/api/routes/workflows.d.ts +3 -0
  363. package/dist/src/api/routes/workflows.d.ts.map +1 -0
  364. package/dist/src/api/routes/workflows.js +132 -0
  365. package/dist/src/api/routes/workflows.js.map +1 -0
  366. package/dist/src/config/ChatFlowConfig.d.ts +66 -0
  367. package/dist/src/config/ChatFlowConfig.d.ts.map +1 -0
  368. package/dist/src/config/ChatFlowConfig.js +54 -0
  369. package/dist/src/config/ChatFlowConfig.js.map +1 -0
  370. package/dist/src/config/index.d.ts +2 -0
  371. package/dist/src/config/index.d.ts.map +1 -0
  372. package/dist/src/config/index.js +7 -0
  373. package/dist/src/config/index.js.map +1 -0
  374. package/dist/src/config/swagger.d.ts +2 -0
  375. package/dist/src/config/swagger.d.ts.map +1 -0
  376. package/dist/src/config/swagger.js +136 -0
  377. package/dist/src/config/swagger.js.map +1 -0
  378. package/dist/src/core/entities/ConversationSession.d.ts +58 -0
  379. package/dist/src/core/entities/ConversationSession.d.ts.map +1 -0
  380. package/dist/src/core/entities/ConversationSession.js +160 -0
  381. package/dist/src/core/entities/ConversationSession.js.map +1 -0
  382. package/dist/src/core/entities/Message.d.ts +14 -0
  383. package/dist/src/core/entities/Message.d.ts.map +1 -0
  384. package/dist/src/core/entities/Message.js +32 -0
  385. package/dist/src/core/entities/Message.js.map +1 -0
  386. package/dist/src/core/errors/ChatFlowError.d.ts +71 -0
  387. package/dist/src/core/errors/ChatFlowError.d.ts.map +1 -0
  388. package/dist/src/core/errors/ChatFlowError.js +108 -0
  389. package/dist/src/core/errors/ChatFlowError.js.map +1 -0
  390. package/dist/src/core/errors/index.d.ts +2 -0
  391. package/dist/src/core/errors/index.d.ts.map +1 -0
  392. package/dist/src/core/errors/index.js +15 -0
  393. package/dist/src/core/errors/index.js.map +1 -0
  394. package/dist/src/core/utils/AudioUtils.d.ts +41 -0
  395. package/dist/src/core/utils/AudioUtils.d.ts.map +1 -0
  396. package/dist/src/core/utils/AudioUtils.js +188 -0
  397. package/dist/src/core/utils/AudioUtils.js.map +1 -0
  398. package/dist/src/core/utils/LanguageDetector.d.ts +52 -0
  399. package/dist/src/core/utils/LanguageDetector.d.ts.map +1 -0
  400. package/dist/src/core/utils/LanguageDetector.js +173 -0
  401. package/dist/src/core/utils/LanguageDetector.js.map +1 -0
  402. package/dist/src/demo/cli-demo.d.ts +2 -0
  403. package/dist/src/demo/cli-demo.d.ts.map +1 -0
  404. package/dist/src/demo/cli-demo.js +146 -0
  405. package/dist/src/demo/cli-demo.js.map +1 -0
  406. package/dist/src/demo/console-chat.d.ts +2 -0
  407. package/dist/src/demo/console-chat.d.ts.map +1 -0
  408. package/dist/src/demo/console-chat.js +148 -0
  409. package/dist/src/demo/console-chat.js.map +1 -0
  410. package/dist/src/index.d.ts +27 -0
  411. package/dist/src/index.d.ts.map +1 -0
  412. package/dist/src/index.js +78 -0
  413. package/dist/src/index.js.map +1 -0
  414. package/dist/src/interfaces.d.ts +663 -0
  415. package/dist/src/interfaces.d.ts.map +1 -0
  416. package/dist/src/interfaces.js +36 -0
  417. package/dist/src/interfaces.js.map +1 -0
  418. package/dist/src/orchestrator/Orchestrator.d.ts +62 -0
  419. package/dist/src/orchestrator/Orchestrator.d.ts.map +1 -0
  420. package/dist/src/orchestrator/Orchestrator.js +697 -0
  421. package/dist/src/orchestrator/Orchestrator.js.map +1 -0
  422. package/dist/src/scripts/debug-redis.d.ts +2 -0
  423. package/dist/src/scripts/debug-redis.d.ts.map +1 -0
  424. package/dist/src/scripts/debug-redis.js +55 -0
  425. package/dist/src/scripts/debug-redis.js.map +1 -0
  426. package/dist/src/scripts/seed-collaborative-intents.d.ts +2 -0
  427. package/dist/src/scripts/seed-collaborative-intents.d.ts.map +1 -0
  428. package/dist/src/scripts/seed-collaborative-intents.js +90 -0
  429. package/dist/src/scripts/seed-collaborative-intents.js.map +1 -0
  430. package/dist/src/scripts/test-isolated-config.d.ts +2 -0
  431. package/dist/src/scripts/test-isolated-config.d.ts.map +1 -0
  432. package/dist/src/scripts/test-isolated-config.js +80 -0
  433. package/dist/src/scripts/test-isolated-config.js.map +1 -0
  434. package/dist/src/scripts/verify_memory_intents.d.ts +2 -0
  435. package/dist/src/scripts/verify_memory_intents.d.ts.map +1 -0
  436. package/dist/src/scripts/verify_memory_intents.js +45 -0
  437. package/dist/src/scripts/verify_memory_intents.js.map +1 -0
  438. package/dist/src/scripts/verify_redis_intents.d.ts +2 -0
  439. package/dist/src/scripts/verify_redis_intents.d.ts.map +1 -0
  440. package/dist/src/scripts/verify_redis_intents.js +52 -0
  441. package/dist/src/scripts/verify_redis_intents.js.map +1 -0
  442. package/dist/src/server/ChatFlowWebSocketServer.d.ts +42 -0
  443. package/dist/src/server/ChatFlowWebSocketServer.d.ts.map +1 -0
  444. package/dist/src/server/ChatFlowWebSocketServer.js +355 -0
  445. package/dist/src/server/ChatFlowWebSocketServer.js.map +1 -0
  446. package/dist/src/utils/crypto.d.ts +7 -0
  447. package/dist/src/utils/crypto.d.ts.map +1 -0
  448. package/dist/src/utils/crypto.js +35 -0
  449. package/dist/src/utils/crypto.js.map +1 -0
  450. package/dist/src/utils/encryption-helpers.d.ts +14 -0
  451. package/dist/src/utils/encryption-helpers.d.ts.map +1 -0
  452. package/dist/src/utils/encryption-helpers.js +49 -0
  453. package/dist/src/utils/encryption-helpers.js.map +1 -0
  454. package/dist/utils/crypto.d.ts +7 -0
  455. package/dist/utils/crypto.d.ts.map +1 -0
  456. package/dist/utils/crypto.js +35 -0
  457. package/dist/utils/crypto.js.map +1 -0
  458. package/dist/utils/encryption-helpers.d.ts +14 -0
  459. package/dist/utils/encryption-helpers.d.ts.map +1 -0
  460. package/dist/utils/encryption-helpers.js +49 -0
  461. package/dist/utils/encryption-helpers.js.map +1 -0
  462. package/dist/web/seed-demo-data.d.ts +2 -0
  463. package/dist/web/seed-demo-data.d.ts.map +1 -0
  464. package/dist/web/seed-demo-data.js +267 -0
  465. package/dist/web/seed-demo-data.js.map +1 -0
  466. package/dist/web/web-server.d.ts +2 -0
  467. package/dist/web/web-server.d.ts.map +1 -0
  468. package/dist/web/web-server.js +165 -0
  469. package/dist/web/web-server.js.map +1 -0
  470. package/package.json +32 -3
@@ -6,11 +6,17 @@ const interfaces_1 = require("../../interfaces");
6
6
  class ConversationSession {
7
7
  constructor(props) {
8
8
  this.sessionId = props.sessionId;
9
+ this.tenantId = props.tenantId;
10
+ this.configId = props.configId;
9
11
  this.mode = props.mode;
10
12
  this.agentPrompt = props.agentPrompt;
13
+ this.conversationMode = props.conversationMode ?? 'collaborative';
11
14
  this._messages = [];
12
15
  this._status = interfaces_1.SessionStatus.ACTIVE;
13
16
  this._metadata = {};
17
+ this._parameterCollectionState = null;
18
+ this._currentLanguage = null; // Will be auto-detected on first message
19
+ this.summary = null;
14
20
  this.createdAt = new Date();
15
21
  this.updatedAt = new Date();
16
22
  }
@@ -20,8 +26,11 @@ class ConversationSession {
20
26
  // For simplicity in this demo, we'll instantiate normally and override.
21
27
  const session = new ConversationSession({
22
28
  sessionId: data.sessionId,
29
+ tenantId: data.tenantId,
30
+ configId: data.configId,
23
31
  mode: data.mode,
24
- agentPrompt: data.agentPrompt
32
+ agentPrompt: data.agentPrompt,
33
+ conversationMode: data.conversationMode ?? 'collaborative'
25
34
  });
26
35
  // Restore state
27
36
  // Assuming messages are stored as plain objects, we need to map them back to Message instances
@@ -33,6 +42,9 @@ class ConversationSession {
33
42
  }));
34
43
  session._status = data.status;
35
44
  session._metadata = data.metadata || {};
45
+ session._parameterCollectionState = data.parameterCollectionState || null;
46
+ session._currentLanguage = data.currentLanguage || null;
47
+ session.summary = data.summary || null;
36
48
  // @ts-ignore - writing to readonly for hydration
37
49
  session.createdAt = new Date(data.createdAt);
38
50
  session.updatedAt = new Date(data.updatedAt);
@@ -42,11 +54,17 @@ class ConversationSession {
42
54
  toSnapshot() {
43
55
  return {
44
56
  sessionId: this.sessionId,
57
+ tenantId: this.tenantId,
58
+ configId: this.configId,
45
59
  mode: this.mode,
46
60
  agentPrompt: this.agentPrompt,
61
+ conversationMode: this.conversationMode,
47
62
  messages: this._messages,
48
63
  status: this._status,
49
64
  metadata: this._metadata,
65
+ parameterCollectionState: this._parameterCollectionState,
66
+ currentLanguage: this._currentLanguage,
67
+ summary: this.summary,
50
68
  createdAt: this.createdAt,
51
69
  updatedAt: this.updatedAt
52
70
  };
@@ -78,6 +96,65 @@ class ConversationSession {
78
96
  getHistory() {
79
97
  return this._messages;
80
98
  }
99
+ // --- Parameter Collection Methods ---
100
+ /**
101
+ * Start collecting parameters for a detected intent
102
+ */
103
+ startParameterCollection(state) {
104
+ this._parameterCollectionState = state;
105
+ this.updatedAt = new Date();
106
+ }
107
+ /**
108
+ * Update parameter collection state with newly extracted parameters
109
+ */
110
+ updateParameterCollection(newParameters, stillMissing) {
111
+ if (!this._parameterCollectionState)
112
+ return;
113
+ this._parameterCollectionState.detectedParameters = {
114
+ ...this._parameterCollectionState.detectedParameters,
115
+ ...newParameters
116
+ };
117
+ this._parameterCollectionState.missingParameters = stillMissing;
118
+ this._parameterCollectionState.attemptCount++;
119
+ this.updatedAt = new Date();
120
+ }
121
+ /**
122
+ * Clear parameter collection state
123
+ */
124
+ clearParameterCollection() {
125
+ this._parameterCollectionState = null;
126
+ this.updatedAt = new Date();
127
+ }
128
+ /**
129
+ * Get current parameter collection state
130
+ */
131
+ getParameterCollectionState() {
132
+ return this._parameterCollectionState;
133
+ }
134
+ /**
135
+ * Check if currently collecting parameters
136
+ */
137
+ isCollectingParameters() {
138
+ return this._parameterCollectionState !== null;
139
+ }
140
+ // --- Language Management Methods ---
141
+ /**
142
+ * Get current conversation language
143
+ */
144
+ get currentLanguage() {
145
+ return this._currentLanguage;
146
+ }
147
+ /**
148
+ * Set conversation language
149
+ * @param languageCode ISO 639-1 language code (e.g., 'en', 'ar', 'fa')
150
+ */
151
+ setLanguage(languageCode) {
152
+ if (this._currentLanguage !== languageCode) {
153
+ console.log(`[ConversationSession] Language switched from '${this._currentLanguage || 'unknown'}' to '${languageCode}'`);
154
+ }
155
+ this._currentLanguage = languageCode;
156
+ this.updatedAt = new Date();
157
+ }
81
158
  }
82
159
  exports.ConversationSession = ConversationSession;
83
160
  //# sourceMappingURL=ConversationSession.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationSession.js","sourceRoot":"","sources":["../../../src/core/entities/ConversationSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationSession.js","sourceRoot":"","sources":["../../../src/core/entities/ConversationSession.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { Role, Message as IMessage, MessageProps } from '../../interfaces';
2
2
  export declare class Message implements IMessage {
3
+ readonly id: string;
3
4
  readonly role: Role;
4
5
  readonly content: string;
5
6
  readonly timestamp: Date;
6
- readonly metadata: Record<string, any>;
7
- constructor(props: MessageProps);
7
+ metadata: Record<string, any>;
8
+ constructor(props: MessageProps & {
9
+ id?: string;
10
+ });
8
11
  static user(content: string, metadata?: Record<string, any>): Message;
9
12
  static assistant(content: string, metadata?: Record<string, any>): Message;
10
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAI3E,qBAAa,OAAQ,YAAW,QAAQ;IACpC,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAElC,KAAK,EAAE,YAAY;IAO/B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IASrE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;CAQ7E"}
1
+ {"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3E,qBAAa,OAAQ,YAAW,QAAQ;IACpC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAEzB,KAAK,EAAE,YAAY,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;IAQjD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;IASrE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO;CAQ7E"}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Message = void 0;
4
+ const uuid_1 = require("uuid");
4
5
  const interfaces_1 = require("../../interfaces");
5
6
  class Message {
6
7
  constructor(props) {
8
+ this.id = props.id || (0, uuid_1.v4)();
7
9
  this.role = props.role;
8
10
  this.content = props.content;
9
11
  this.timestamp = props.timestamp;
@@ -1 +1 @@
1
- {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":";;;AAAA,iDAA2E;AAI3E,MAAa,OAAO;IAMhB,YAAY,KAAmB;QAC3B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAA8B;QACvD,OAAO,IAAI,OAAO,CAAC;YACf,IAAI,EAAE,iBAAI,CAAC,IAAI;YACf,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAe,EAAE,QAA8B;QAC5D,OAAO,IAAI,OAAO,CAAC;YACf,IAAI,EAAE,iBAAI,CAAC,SAAS;YACpB,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;CACJ;AA9BD,0BA8BC"}
1
+ {"version":3,"file":"Message.js","sourceRoot":"","sources":["../../../src/core/entities/Message.ts"],"names":[],"mappings":";;;AAAA,+BAAoC;AACpC,iDAA2E;AAE3E,MAAa,OAAO;IAOhB,YAAY,KAAqC;QAC7C,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,IAAA,SAAM,GAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,QAA8B;QACvD,OAAO,IAAI,OAAO,CAAC;YACf,IAAI,EAAE,iBAAI,CAAC,IAAI;YACf,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAe,EAAE,QAA8B;QAC5D,OAAO,IAAI,OAAO,CAAC;YACf,IAAI,EAAE,iBAAI,CAAC,SAAS;YACpB,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;CACJ;AAhCD,0BAgCC"}
@@ -0,0 +1,33 @@
1
+ import { Buffer } from 'buffer';
2
+ /**
3
+ * Audio Stream Buffer
4
+ *
5
+ * Efficiently accumulates binary audio chunks from a WebSocket stream.
6
+ * Provides methods to append data and flush the buffer for processing (STT).
7
+ */
8
+ export declare class AudioStreamBuffer {
9
+ private chunks;
10
+ private totalLength;
11
+ /**
12
+ * Append a binary chunk to the stream
13
+ */
14
+ append(chunk: Buffer): void;
15
+ /**
16
+ * Get current size of buffer in bytes
17
+ */
18
+ get size(): number;
19
+ /**
20
+ * Clear buffer
21
+ */
22
+ clear(): void;
23
+ /**
24
+ * Flush the buffer and return the concatenated audio data.
25
+ * Optionally clears the buffer after flushing.
26
+ */
27
+ flush(clear?: boolean): Buffer;
28
+ /**
29
+ * Output Base64 string (for legacy STT APIs that expect Base64)
30
+ */
31
+ toBase64(clear?: boolean): string;
32
+ }
33
+ //# sourceMappingURL=AudioStreamBuffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioStreamBuffer.d.ts","sourceRoot":"","sources":["../../../src/core/utils/AudioStreamBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAa;IAEhC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,KAAK,CAAC,KAAK,GAAE,OAAc,GAAG,MAAM;IAUpC;;OAEG;IACH,QAAQ,CAAC,KAAK,GAAE,OAAc,GAAG,MAAM;CAG1C"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AudioStreamBuffer = void 0;
4
+ const buffer_1 = require("buffer");
5
+ /**
6
+ * Audio Stream Buffer
7
+ *
8
+ * Efficiently accumulates binary audio chunks from a WebSocket stream.
9
+ * Provides methods to append data and flush the buffer for processing (STT).
10
+ */
11
+ class AudioStreamBuffer {
12
+ constructor() {
13
+ this.chunks = [];
14
+ this.totalLength = 0;
15
+ }
16
+ /**
17
+ * Append a binary chunk to the stream
18
+ */
19
+ append(chunk) {
20
+ this.chunks.push(chunk);
21
+ this.totalLength += chunk.length;
22
+ }
23
+ /**
24
+ * Get current size of buffer in bytes
25
+ */
26
+ get size() {
27
+ return this.totalLength;
28
+ }
29
+ /**
30
+ * Clear buffer
31
+ */
32
+ clear() {
33
+ this.chunks = [];
34
+ this.totalLength = 0;
35
+ }
36
+ /**
37
+ * Flush the buffer and return the concatenated audio data.
38
+ * Optionally clears the buffer after flushing.
39
+ */
40
+ flush(clear = true) {
41
+ const result = buffer_1.Buffer.concat(this.chunks, this.totalLength);
42
+ if (clear) {
43
+ this.clear();
44
+ }
45
+ return result;
46
+ }
47
+ /**
48
+ * Output Base64 string (for legacy STT APIs that expect Base64)
49
+ */
50
+ toBase64(clear = true) {
51
+ return this.flush(clear).toString('base64');
52
+ }
53
+ }
54
+ exports.AudioStreamBuffer = AudioStreamBuffer;
55
+ //# sourceMappingURL=AudioStreamBuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioStreamBuffer.js","sourceRoot":"","sources":["../../../src/core/utils/AudioStreamBuffer.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC;;;;;GAKG;AACH,MAAa,iBAAiB;IAA9B;QACY,WAAM,GAAa,EAAE,CAAC;QACtB,gBAAW,GAAW,CAAC,CAAC;IA6CpC,CAAC;IA3CG;;OAEG;IACH,MAAM,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAiB,IAAI;QACvB,MAAM,MAAM,GAAG,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,QAAiB,IAAI;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;CACJ;AA/CD,8CA+CC"}
@@ -0,0 +1,41 @@
1
+ import { AudioFormatMetadata } from '../../interfaces';
2
+ /**
3
+ * Audio Conversion Utilities
4
+ *
5
+ * Provides utilities for converting between different audio formats
6
+ * All conversions target LINEAR16 PCM at 16kHz mono for consistency
7
+ */
8
+ export declare const TARGET_SAMPLE_RATE = 16000;
9
+ export declare const TARGET_CHANNELS = 1;
10
+ export declare const TARGET_BIT_DEPTH = 16;
11
+ /**
12
+ * Convert incoming audio to target PCM format (16kHz, mono, 16-bit)
13
+ */
14
+ export declare function convertToTargetFormat(audioData: Buffer, formatMetadata?: AudioFormatMetadata): Promise<Buffer>;
15
+ /**
16
+ * Extract PCM from WAV file and resample if needed
17
+ */
18
+ export declare function extractAndResampleWAV(wavData: Buffer, metadata: AudioFormatMetadata): Buffer;
19
+ /**
20
+ * Convert MP3 to PCM
21
+ * For now, we'll use a simple approach - MP3 decoding without external deps
22
+ * In production, consider using a library like 'lamejs' or 'mp3-parser'
23
+ */
24
+ export declare function convertMP3ToPCM(mp3Data: Buffer, metadata: AudioFormatMetadata): Buffer;
25
+ /**
26
+ * Resample PCM audio to target sample rate
27
+ */
28
+ export declare function resamplePCM(pcmData: Buffer, metadata: AudioFormatMetadata): Buffer;
29
+ /**
30
+ * Read a sample from PCM data
31
+ */
32
+ export declare function readSample(buffer: Buffer, sampleIndex: number, channels: number, bitDepth: number): number;
33
+ /**
34
+ * Write a sample to PCM data
35
+ */
36
+ export declare function writeSample(buffer: Buffer, sampleIndex: number, value: number, bitDepth: number): void;
37
+ /**
38
+ * Create WAV file from raw PCM data
39
+ */
40
+ export declare function wrapPCMInWAV(pcmData: Buffer): Buffer;
41
+ //# sourceMappingURL=AudioUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioUtils.d.ts","sourceRoot":"","sources":["../../../src/core/utils/AudioUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;GAKG;AAGH,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AACxC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBpH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CA6B5F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAQtF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CA4ClF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqB1G;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQtG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiCpD"}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TARGET_BIT_DEPTH = exports.TARGET_CHANNELS = exports.TARGET_SAMPLE_RATE = void 0;
4
+ exports.convertToTargetFormat = convertToTargetFormat;
5
+ exports.extractAndResampleWAV = extractAndResampleWAV;
6
+ exports.convertMP3ToPCM = convertMP3ToPCM;
7
+ exports.resamplePCM = resamplePCM;
8
+ exports.readSample = readSample;
9
+ exports.writeSample = writeSample;
10
+ exports.wrapPCMInWAV = wrapPCMInWAV;
11
+ /**
12
+ * Audio Conversion Utilities
13
+ *
14
+ * Provides utilities for converting between different audio formats
15
+ * All conversions target LINEAR16 PCM at 16kHz mono for consistency
16
+ */
17
+ // Target audio format for storage
18
+ exports.TARGET_SAMPLE_RATE = 16000;
19
+ exports.TARGET_CHANNELS = 1;
20
+ exports.TARGET_BIT_DEPTH = 16;
21
+ /**
22
+ * Convert incoming audio to target PCM format (16kHz, mono, 16-bit)
23
+ */
24
+ async function convertToTargetFormat(audioData, formatMetadata) {
25
+ if (!formatMetadata) {
26
+ // Assume WAV format if no metadata provided (backward compatibility)
27
+ formatMetadata = { format: 'wav', sampleRate: 48000, channels: 1, bitDepth: 16 };
28
+ }
29
+ switch (formatMetadata.format) {
30
+ case 'wav':
31
+ return extractAndResampleWAV(audioData, formatMetadata);
32
+ case 'mp3':
33
+ return convertMP3ToPCM(audioData, formatMetadata);
34
+ case 'pcm':
35
+ return resamplePCM(audioData, formatMetadata);
36
+ default:
37
+ console.warn(`[AudioUtils] Unsupported format: ${formatMetadata.format}, storing as-is`);
38
+ return audioData;
39
+ }
40
+ }
41
+ /**
42
+ * Extract PCM from WAV file and resample if needed
43
+ */
44
+ function extractAndResampleWAV(wavData, metadata) {
45
+ // WAV file structure:
46
+ // - RIFF header (12 bytes)
47
+ // - fmt chunk (24 bytes typically)
48
+ // - data chunk header (8 bytes)
49
+ // - PCM data
50
+ // Find 'data' chunk
51
+ const dataMarker = Buffer.from('data');
52
+ let dataStart = -1;
53
+ for (let i = 0; i < wavData.length - 4; i++) {
54
+ if (wavData.slice(i, i + 4).equals(dataMarker)) {
55
+ // Found 'data' marker, PCM starts 8 bytes after (4 for 'data', 4 for size)
56
+ dataStart = i + 8;
57
+ break;
58
+ }
59
+ }
60
+ if (dataStart === -1) {
61
+ console.warn('[AudioUtils] Could not find data chunk in WAV, using entire buffer');
62
+ dataStart = 44; // Standard WAV header size
63
+ }
64
+ // Extract raw PCM data
65
+ const pcmData = wavData.slice(dataStart);
66
+ // Resample if needed
67
+ return resamplePCM(pcmData, metadata);
68
+ }
69
+ /**
70
+ * Convert MP3 to PCM
71
+ * For now, we'll use a simple approach - MP3 decoding without external deps
72
+ * In production, consider using a library like 'lamejs' or 'mp3-parser'
73
+ */
74
+ function convertMP3ToPCM(mp3Data, metadata) {
75
+ // MP3 decoding is complex. For now, we'll log a warning and pass through
76
+ // The user should ideally change the provider output to WAV format
77
+ console.warn('[AudioUtils] MP3 decoding not yet implemented. Audio may not concatenate properly.');
78
+ console.warn('[AudioUtils] Consider changing provider output format to WAV.');
79
+ // Return as-is for now - this will need proper MP3 decoder
80
+ return mp3Data;
81
+ }
82
+ /**
83
+ * Resample PCM audio to target sample rate
84
+ */
85
+ function resamplePCM(pcmData, metadata) {
86
+ const sourceSampleRate = metadata.sampleRate || exports.TARGET_SAMPLE_RATE;
87
+ const sourceChannels = metadata.channels || exports.TARGET_CHANNELS;
88
+ const sourceBitDepth = metadata.bitDepth || exports.TARGET_BIT_DEPTH;
89
+ // If already in target format, return as-is
90
+ if (sourceSampleRate === exports.TARGET_SAMPLE_RATE &&
91
+ sourceChannels === exports.TARGET_CHANNELS &&
92
+ sourceBitDepth === exports.TARGET_BIT_DEPTH) {
93
+ return pcmData;
94
+ }
95
+ // Calculate bytes per sample
96
+ const sourceBytesPerSample = (sourceBitDepth / 8) * sourceChannels;
97
+ const targetBytesPerSample = (exports.TARGET_BIT_DEPTH / 8) * exports.TARGET_CHANNELS;
98
+ // Calculate number of samples
99
+ const sourceSampleCount = Math.floor(pcmData.length / sourceBytesPerSample);
100
+ const targetSampleCount = Math.floor((sourceSampleCount * exports.TARGET_SAMPLE_RATE) / sourceSampleRate);
101
+ // Create output buffer
102
+ const output = Buffer.alloc(targetSampleCount * targetBytesPerSample);
103
+ // Simple linear interpolation resampling
104
+ for (let i = 0; i < targetSampleCount; i++) {
105
+ const sourceIndex = (i * sourceSampleRate) / exports.TARGET_SAMPLE_RATE;
106
+ const sourceIndexFloor = Math.floor(sourceIndex);
107
+ const sourceIndexCeil = Math.ceil(sourceIndex);
108
+ const fraction = sourceIndex - sourceIndexFloor;
109
+ // Get samples (handle stereo to mono conversion if needed)
110
+ let sample1 = readSample(pcmData, sourceIndexFloor, sourceChannels, sourceBitDepth);
111
+ let sample2 = readSample(pcmData, sourceIndexCeil < sourceSampleCount ? sourceIndexCeil : sourceIndexFloor, sourceChannels, sourceBitDepth);
112
+ // Interpolate
113
+ const interpolated = Math.round(sample1 * (1 - fraction) + sample2 * fraction);
114
+ // Write sample
115
+ writeSample(output, i, interpolated, exports.TARGET_BIT_DEPTH);
116
+ }
117
+ return output;
118
+ }
119
+ /**
120
+ * Read a sample from PCM data
121
+ */
122
+ function readSample(buffer, sampleIndex, channels, bitDepth) {
123
+ const bytesPerSample = (bitDepth / 8) * channels;
124
+ const offset = sampleIndex * bytesPerSample;
125
+ if (offset >= buffer.length) {
126
+ return 0;
127
+ }
128
+ // Read first channel (mono or left channel for stereo)
129
+ if (bitDepth === 16) {
130
+ return buffer.readInt16LE(offset);
131
+ }
132
+ else if (bitDepth === 8) {
133
+ return buffer.readInt8(offset) * 256; // Scale to 16-bit range
134
+ }
135
+ else if (bitDepth === 24) {
136
+ const byte1 = buffer.readUInt8(offset);
137
+ const byte2 = buffer.readUInt8(offset + 1);
138
+ const byte3 = buffer.readInt8(offset + 2);
139
+ return ((byte3 << 16) | (byte2 << 8) | byte1) >> 8; // Scale down to 16-bit
140
+ }
141
+ else {
142
+ return buffer.readInt16LE(offset);
143
+ }
144
+ }
145
+ /**
146
+ * Write a sample to PCM data
147
+ */
148
+ function writeSample(buffer, sampleIndex, value, bitDepth) {
149
+ const offset = sampleIndex * (bitDepth / 8);
150
+ if (bitDepth === 16) {
151
+ // Clamp to 16-bit range
152
+ const clamped = Math.max(-32768, Math.min(32767, value));
153
+ buffer.writeInt16LE(clamped, offset);
154
+ }
155
+ }
156
+ /**
157
+ * Create WAV file from raw PCM data
158
+ */
159
+ function wrapPCMInWAV(pcmData) {
160
+ const sampleRate = exports.TARGET_SAMPLE_RATE;
161
+ const channels = exports.TARGET_CHANNELS;
162
+ const bitDepth = exports.TARGET_BIT_DEPTH;
163
+ const byteRate = sampleRate * channels * (bitDepth / 8);
164
+ const blockAlign = channels * (bitDepth / 8);
165
+ const dataSize = pcmData.length;
166
+ const fileSize = 36 + dataSize;
167
+ // Create WAV header
168
+ const header = Buffer.alloc(44);
169
+ // RIFF chunk descriptor
170
+ header.write('RIFF', 0);
171
+ header.writeUInt32LE(fileSize, 4);
172
+ header.write('WAVE', 8);
173
+ // fmt sub-chunk
174
+ header.write('fmt ', 12);
175
+ header.writeUInt32LE(16, 16); // Subchunk1Size (16 for PCM)
176
+ header.writeUInt16LE(1, 20); // AudioFormat (1 for PCM)
177
+ header.writeUInt16LE(channels, 22);
178
+ header.writeUInt32LE(sampleRate, 24);
179
+ header.writeUInt32LE(byteRate, 28);
180
+ header.writeUInt16LE(blockAlign, 32);
181
+ header.writeUInt16LE(bitDepth, 34);
182
+ // data sub-chunk
183
+ header.write('data', 36);
184
+ header.writeUInt32LE(dataSize, 40);
185
+ // Concatenate header and PCM data
186
+ return Buffer.concat([header, pcmData]);
187
+ }
188
+ //# sourceMappingURL=AudioUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AudioUtils.js","sourceRoot":"","sources":["../../../src/core/utils/AudioUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { ILLMAdapter } from '../../interfaces';
2
+ /**
3
+ * Language Detection Utility
4
+ *
5
+ * Detects the language of user messages using LLM analysis.
6
+ * Returns ISO 639-1 language codes (e.g., 'en', 'ar', 'fa', 'es').
7
+ */
8
+ export declare class LanguageDetector {
9
+ private llm;
10
+ private cache;
11
+ constructor(llm: ILLMAdapter);
12
+ /**
13
+ * Detect language from text
14
+ * @param text Text to analyze
15
+ * @param languageHints Optional array of preferred languages (e.g., from supportedLanguages config)
16
+ * @returns ISO 639-1 language code (e.g., 'en', 'ar', 'fa')
17
+ */
18
+ detectLanguage(text: string, languageHints?: string[]): Promise<string>;
19
+ /**
20
+ * Detect if text uses a specific character set (fast heuristic)
21
+ * This avoids expensive LLM calls when character set hasn't changed
22
+ * @param text Text to analyze
23
+ * @returns Character set type
24
+ */
25
+ detectCharacterSet(text: string): 'arabic' | 'persian' | 'cjk' | 'cyrillic' | 'latin';
26
+ /**
27
+ * Check if character set changed from previous language
28
+ * @param text Current text
29
+ * @param previousLanguage Previously detected language code
30
+ * @returns True if character set changed, suggesting language might have changed
31
+ */
32
+ hasCharacterSetChanged(text: string, previousLanguage: string | null): boolean;
33
+ /**
34
+ * Get expected character set for a language code
35
+ */
36
+ private getCharacterSetForLanguage;
37
+ /**
38
+ * Get language name from code
39
+ * @param code ISO 639-1 language code
40
+ * @returns Human-readable language name
41
+ */
42
+ getLanguageName(code: string): string;
43
+ /**
44
+ * Clear the cache
45
+ */
46
+ clearCache(): void;
47
+ /**
48
+ * Generate cache key from text
49
+ */
50
+ private getCacheKey;
51
+ }
52
+ //# sourceMappingURL=LanguageDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageDetector.d.ts","sourceRoot":"","sources":["../../../src/core/utils/LanguageDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,gBAAgB;IAGb,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,KAAK,CAAkC;gBAE3B,GAAG,EAAE,WAAW;IAEpC;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA2D7E;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO;IAwBrF;;;;;OAKG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAS9E;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAclC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IA2BrC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,OAAO,CAAC,WAAW;CAItB"}