chat-flow-ardymalihi 1.0.2 → 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 (359) hide show
  1. package/README.md +2 -0
  2. package/dist/{adapters → src/adapters}/intent/IntentMatcher.d.ts +16 -0
  3. package/dist/src/adapters/intent/IntentMatcher.d.ts.map +1 -0
  4. package/dist/src/adapters/intent/IntentMatcher.js +167 -0
  5. package/dist/src/adapters/intent/IntentMatcher.js.map +1 -0
  6. package/dist/{adapters → src/adapters}/intent/IntentService.d.ts +4 -5
  7. package/dist/src/adapters/intent/IntentService.d.ts.map +1 -0
  8. package/dist/{adapters → src/adapters}/intent/IntentService.js +15 -9
  9. package/dist/src/adapters/intent/IntentService.js.map +1 -0
  10. package/dist/src/adapters/intent/MockIntentService.d.ts +7 -0
  11. package/dist/src/adapters/intent/MockIntentService.d.ts.map +1 -0
  12. package/dist/{intent → src/adapters/intent}/MockIntentService.js +9 -3
  13. package/dist/src/adapters/intent/MockIntentService.js.map +1 -0
  14. package/dist/src/adapters/llm/GeminiLLMAdapter.d.ts.map +1 -0
  15. package/dist/src/adapters/llm/GeminiLLMAdapter.js.map +1 -0
  16. package/dist/src/adapters/llm/MockLLMAdapter.d.ts.map +1 -0
  17. package/dist/src/adapters/llm/MockLLMAdapter.js.map +1 -0
  18. package/dist/src/adapters/llm/OllamaLLMAdapter.d.ts +9 -0
  19. package/dist/src/adapters/llm/OllamaLLMAdapter.d.ts.map +1 -0
  20. package/dist/src/adapters/llm/OllamaLLMAdapter.js +74 -0
  21. package/dist/src/adapters/llm/OllamaLLMAdapter.js.map +1 -0
  22. package/dist/src/adapters/logger/ConsoleLogger.d.ts +12 -0
  23. package/dist/src/adapters/logger/ConsoleLogger.d.ts.map +1 -0
  24. package/dist/src/adapters/logger/ConsoleLogger.js +37 -0
  25. package/dist/src/adapters/logger/ConsoleLogger.js.map +1 -0
  26. package/dist/src/adapters/repository/InMemoryRepository.d.ts +57 -0
  27. package/dist/src/adapters/repository/InMemoryRepository.d.ts.map +1 -0
  28. package/dist/src/adapters/repository/InMemoryRepository.js +269 -0
  29. package/dist/src/adapters/repository/InMemoryRepository.js.map +1 -0
  30. package/dist/src/adapters/repository/RedisRepository.d.ts +72 -0
  31. package/dist/src/adapters/repository/RedisRepository.d.ts.map +1 -0
  32. package/dist/src/adapters/repository/RedisRepository.js +700 -0
  33. package/dist/src/adapters/repository/RedisRepository.js.map +1 -0
  34. package/dist/src/adapters/repository/SupabaseRepository.d.ts +60 -0
  35. package/dist/src/adapters/repository/SupabaseRepository.d.ts.map +1 -0
  36. package/dist/src/adapters/repository/SupabaseRepository.js +774 -0
  37. package/dist/src/adapters/repository/SupabaseRepository.js.map +1 -0
  38. package/dist/src/adapters/storage/RedisAudioStorageAdapter.d.ts +33 -0
  39. package/dist/src/adapters/storage/RedisAudioStorageAdapter.d.ts.map +1 -0
  40. package/dist/src/adapters/storage/RedisAudioStorageAdapter.js +121 -0
  41. package/dist/src/adapters/storage/RedisAudioStorageAdapter.js.map +1 -0
  42. package/dist/src/adapters/voice/GoogleVoiceAdapter.d.ts +33 -0
  43. package/dist/src/adapters/voice/GoogleVoiceAdapter.d.ts.map +1 -0
  44. package/dist/src/adapters/voice/GoogleVoiceAdapter.js +155 -0
  45. package/dist/src/adapters/voice/GoogleVoiceAdapter.js.map +1 -0
  46. package/dist/src/adapters/voice/LanguageVoiceMapper.d.ts +60 -0
  47. package/dist/src/adapters/voice/LanguageVoiceMapper.d.ts.map +1 -0
  48. package/dist/src/adapters/voice/LanguageVoiceMapper.js +130 -0
  49. package/dist/src/adapters/voice/LanguageVoiceMapper.js.map +1 -0
  50. package/dist/src/adapters/voice/VertexVoiceAdapter.d.ts +32 -0
  51. package/dist/src/adapters/voice/VertexVoiceAdapter.d.ts.map +1 -0
  52. package/dist/src/adapters/voice/VertexVoiceAdapter.js +179 -0
  53. package/dist/src/adapters/voice/VertexVoiceAdapter.js.map +1 -0
  54. package/dist/src/adapters/webhook/WebhookService.d.ts +47 -0
  55. package/dist/src/adapters/webhook/WebhookService.d.ts.map +1 -0
  56. package/dist/src/adapters/webhook/WebhookService.js +265 -0
  57. package/dist/src/adapters/webhook/WebhookService.js.map +1 -0
  58. package/dist/src/adapters/workflow/MockWorkflowAdapter.d.ts.map +1 -0
  59. package/dist/{workflow → src/adapters/workflow}/MockWorkflowAdapter.js +12 -1
  60. package/dist/src/adapters/workflow/MockWorkflowAdapter.js.map +1 -0
  61. package/dist/src/adapters/workflow/WorkflowAdapter.d.ts +55 -0
  62. package/dist/src/adapters/workflow/WorkflowAdapter.d.ts.map +1 -0
  63. package/dist/src/adapters/workflow/WorkflowAdapter.js +203 -0
  64. package/dist/src/adapters/workflow/WorkflowAdapter.js.map +1 -0
  65. package/dist/src/adapters/workflow/actions/index.d.ts +6 -0
  66. package/dist/src/adapters/workflow/actions/index.d.ts.map +1 -0
  67. package/dist/src/adapters/workflow/actions/index.js +22 -0
  68. package/dist/src/adapters/workflow/actions/index.js.map +1 -0
  69. package/dist/src/adapters/workflow/actions/pushOutputResultAction.d.ts +11 -0
  70. package/dist/src/adapters/workflow/actions/pushOutputResultAction.d.ts.map +1 -0
  71. package/dist/src/adapters/workflow/actions/pushOutputResultAction.js +31 -0
  72. package/dist/src/adapters/workflow/actions/pushOutputResultAction.js.map +1 -0
  73. package/dist/src/adapters/workflow/engine/constants.d.ts +3 -0
  74. package/dist/src/adapters/workflow/engine/constants.d.ts.map +1 -0
  75. package/dist/src/adapters/workflow/engine/constants.js +6 -0
  76. package/dist/src/adapters/workflow/engine/constants.js.map +1 -0
  77. package/dist/src/adapters/workflow/engine/engine.d.ts +32 -0
  78. package/dist/src/adapters/workflow/engine/engine.d.ts.map +1 -0
  79. package/dist/src/adapters/workflow/engine/engine.js +622 -0
  80. package/dist/src/adapters/workflow/engine/engine.js.map +1 -0
  81. package/dist/src/adapters/workflow/engine/event-registry.d.ts +12 -0
  82. package/dist/src/adapters/workflow/engine/event-registry.d.ts.map +1 -0
  83. package/dist/src/adapters/workflow/engine/event-registry.js +33 -0
  84. package/dist/src/adapters/workflow/engine/event-registry.js.map +1 -0
  85. package/dist/src/adapters/workflow/engine/interpolator.d.ts +11 -0
  86. package/dist/src/adapters/workflow/engine/interpolator.d.ts.map +1 -0
  87. package/dist/src/adapters/workflow/engine/interpolator.js +93 -0
  88. package/dist/src/adapters/workflow/engine/interpolator.js.map +1 -0
  89. package/dist/src/adapters/workflow/engine/registry.d.ts +12 -0
  90. package/dist/src/adapters/workflow/engine/registry.d.ts.map +1 -0
  91. package/dist/src/adapters/workflow/engine/registry.js +39 -0
  92. package/dist/src/adapters/workflow/engine/registry.js.map +1 -0
  93. package/dist/src/adapters/workflow/engine/template-registry.d.ts +60 -0
  94. package/dist/src/adapters/workflow/engine/template-registry.d.ts.map +1 -0
  95. package/dist/src/adapters/workflow/engine/template-registry.js +92 -0
  96. package/dist/src/adapters/workflow/engine/template-registry.js.map +1 -0
  97. package/dist/src/adapters/workflow/engine/utils/format-utils.d.ts +43 -0
  98. package/dist/src/adapters/workflow/engine/utils/format-utils.d.ts.map +1 -0
  99. package/dist/src/adapters/workflow/engine/utils/format-utils.js +137 -0
  100. package/dist/src/adapters/workflow/engine/utils/format-utils.js.map +1 -0
  101. package/dist/src/adapters/workflow/engine/utils/layout-calculator.d.ts +7 -0
  102. package/dist/src/adapters/workflow/engine/utils/layout-calculator.d.ts.map +1 -0
  103. package/dist/src/adapters/workflow/engine/utils/layout-calculator.js +87 -0
  104. package/dist/src/adapters/workflow/engine/utils/layout-calculator.js.map +1 -0
  105. package/dist/src/adapters/workflow/engine/utils/slugify.d.ts +2 -0
  106. package/dist/src/adapters/workflow/engine/utils/slugify.d.ts.map +1 -0
  107. package/dist/src/adapters/workflow/engine/utils/slugify.js +41 -0
  108. package/dist/src/adapters/workflow/engine/utils/slugify.js.map +1 -0
  109. package/dist/src/adapters/workflow/engine/validator.d.ts +9 -0
  110. package/dist/src/adapters/workflow/engine/validator.d.ts.map +1 -0
  111. package/dist/src/adapters/workflow/engine/validator.js +425 -0
  112. package/dist/src/adapters/workflow/engine/validator.js.map +1 -0
  113. package/dist/src/api/router.d.ts +3 -0
  114. package/dist/src/api/router.d.ts.map +1 -0
  115. package/dist/src/api/router.js +27 -0
  116. package/dist/src/api/router.js.map +1 -0
  117. package/dist/src/api/routes/configs.d.ts +3 -0
  118. package/dist/src/api/routes/configs.d.ts.map +1 -0
  119. package/dist/src/api/routes/configs.js +110 -0
  120. package/dist/src/api/routes/configs.js.map +1 -0
  121. package/dist/src/api/routes/executions.d.ts +3 -0
  122. package/dist/src/api/routes/executions.d.ts.map +1 -0
  123. package/dist/src/api/routes/executions.js +77 -0
  124. package/dist/src/api/routes/executions.js.map +1 -0
  125. package/dist/src/api/routes/intents.d.ts +3 -0
  126. package/dist/src/api/routes/intents.d.ts.map +1 -0
  127. package/dist/src/api/routes/intents.js +128 -0
  128. package/dist/src/api/routes/intents.js.map +1 -0
  129. package/dist/src/api/routes/sessions.d.ts +3 -0
  130. package/dist/src/api/routes/sessions.d.ts.map +1 -0
  131. package/dist/src/api/routes/sessions.js +105 -0
  132. package/dist/src/api/routes/sessions.js.map +1 -0
  133. package/dist/src/api/routes/users.d.ts +3 -0
  134. package/dist/src/api/routes/users.d.ts.map +1 -0
  135. package/dist/src/api/routes/users.js +51 -0
  136. package/dist/src/api/routes/users.js.map +1 -0
  137. package/dist/src/api/routes/workflows.d.ts +3 -0
  138. package/dist/src/api/routes/workflows.d.ts.map +1 -0
  139. package/dist/src/api/routes/workflows.js +132 -0
  140. package/dist/src/api/routes/workflows.js.map +1 -0
  141. package/dist/{config → src/config}/ChatFlowConfig.d.ts +7 -0
  142. package/dist/src/config/ChatFlowConfig.d.ts.map +1 -0
  143. package/dist/{config → src/config}/ChatFlowConfig.js +5 -0
  144. package/dist/src/config/ChatFlowConfig.js.map +1 -0
  145. package/dist/src/config/index.d.ts.map +1 -0
  146. package/dist/src/config/index.js.map +1 -0
  147. package/dist/src/config/swagger.d.ts +2 -0
  148. package/dist/src/config/swagger.d.ts.map +1 -0
  149. package/dist/src/config/swagger.js +136 -0
  150. package/dist/src/config/swagger.js.map +1 -0
  151. package/dist/src/core/entities/ConversationSession.d.ts +58 -0
  152. package/dist/src/core/entities/ConversationSession.d.ts.map +1 -0
  153. package/dist/src/core/entities/ConversationSession.js +160 -0
  154. package/dist/src/core/entities/ConversationSession.js.map +1 -0
  155. package/dist/{core → src/core}/entities/Message.d.ts +5 -2
  156. package/dist/src/core/entities/Message.d.ts.map +1 -0
  157. package/dist/{core → src/core}/entities/Message.js +2 -0
  158. package/dist/src/core/entities/Message.js.map +1 -0
  159. package/dist/src/core/errors/ChatFlowError.d.ts.map +1 -0
  160. package/dist/src/core/errors/ChatFlowError.js.map +1 -0
  161. package/dist/src/core/errors/index.d.ts.map +1 -0
  162. package/dist/src/core/errors/index.js.map +1 -0
  163. package/dist/src/core/utils/AudioUtils.d.ts +41 -0
  164. package/dist/src/core/utils/AudioUtils.d.ts.map +1 -0
  165. package/dist/src/core/utils/AudioUtils.js +188 -0
  166. package/dist/src/core/utils/AudioUtils.js.map +1 -0
  167. package/dist/src/core/utils/LanguageDetector.d.ts +52 -0
  168. package/dist/src/core/utils/LanguageDetector.d.ts.map +1 -0
  169. package/dist/src/core/utils/LanguageDetector.js +173 -0
  170. package/dist/src/core/utils/LanguageDetector.js.map +1 -0
  171. package/dist/src/demo/cli-demo.d.ts.map +1 -0
  172. package/dist/{demo → src/demo}/cli-demo.js +10 -6
  173. package/dist/src/demo/cli-demo.js.map +1 -0
  174. package/dist/src/demo/console-chat.d.ts.map +1 -0
  175. package/dist/{demo → src/demo}/console-chat.js +10 -6
  176. package/dist/src/demo/console-chat.js.map +1 -0
  177. package/dist/{index.d.ts → src/index.d.ts} +10 -5
  178. package/dist/src/index.d.ts.map +1 -0
  179. package/dist/{index.js → src/index.js} +25 -8
  180. package/dist/src/index.js.map +1 -0
  181. package/dist/src/interfaces.d.ts +663 -0
  182. package/dist/src/interfaces.d.ts.map +1 -0
  183. package/dist/src/interfaces.js +36 -0
  184. package/dist/src/interfaces.js.map +1 -0
  185. package/dist/src/orchestrator/Orchestrator.d.ts +62 -0
  186. package/dist/src/orchestrator/Orchestrator.d.ts.map +1 -0
  187. package/dist/src/orchestrator/Orchestrator.js +697 -0
  188. package/dist/src/orchestrator/Orchestrator.js.map +1 -0
  189. package/dist/src/scripts/debug-redis.d.ts.map +1 -0
  190. package/dist/src/scripts/debug-redis.js.map +1 -0
  191. package/dist/src/scripts/seed-collaborative-intents.d.ts +2 -0
  192. package/dist/src/scripts/seed-collaborative-intents.d.ts.map +1 -0
  193. package/dist/src/scripts/seed-collaborative-intents.js +90 -0
  194. package/dist/src/scripts/seed-collaborative-intents.js.map +1 -0
  195. package/dist/src/scripts/test-isolated-config.d.ts +2 -0
  196. package/dist/src/scripts/test-isolated-config.d.ts.map +1 -0
  197. package/dist/src/scripts/test-isolated-config.js +80 -0
  198. package/dist/src/scripts/test-isolated-config.js.map +1 -0
  199. package/dist/src/scripts/verify_memory_intents.d.ts.map +1 -0
  200. package/dist/src/scripts/verify_memory_intents.js.map +1 -0
  201. package/dist/src/scripts/verify_redis_intents.d.ts.map +1 -0
  202. package/dist/{scripts → src/scripts}/verify_redis_intents.js +4 -2
  203. package/dist/src/scripts/verify_redis_intents.js.map +1 -0
  204. package/dist/src/server/ChatFlowWebSocketServer.d.ts +42 -0
  205. package/dist/src/server/ChatFlowWebSocketServer.d.ts.map +1 -0
  206. package/dist/src/server/ChatFlowWebSocketServer.js +355 -0
  207. package/dist/src/server/ChatFlowWebSocketServer.js.map +1 -0
  208. package/dist/src/utils/crypto.d.ts +7 -0
  209. package/dist/src/utils/crypto.d.ts.map +1 -0
  210. package/dist/src/utils/crypto.js +35 -0
  211. package/dist/src/utils/crypto.js.map +1 -0
  212. package/dist/src/utils/encryption-helpers.d.ts +14 -0
  213. package/dist/src/utils/encryption-helpers.d.ts.map +1 -0
  214. package/dist/src/utils/encryption-helpers.js +49 -0
  215. package/dist/src/utils/encryption-helpers.js.map +1 -0
  216. package/dist/web/seed-demo-data.d.ts +2 -0
  217. package/dist/web/seed-demo-data.d.ts.map +1 -0
  218. package/dist/web/seed-demo-data.js +267 -0
  219. package/dist/web/seed-demo-data.js.map +1 -0
  220. package/dist/web/web-server.d.ts +2 -0
  221. package/dist/web/web-server.d.ts.map +1 -0
  222. package/dist/web/web-server.js +165 -0
  223. package/dist/web/web-server.js.map +1 -0
  224. package/package.json +32 -3
  225. package/dist/adapters/db/InMemorySessionRepository.js +0 -15
  226. package/dist/adapters/db/RedisSessionRepository.js +0 -41
  227. package/dist/adapters/intent/IntentMatcher.d.ts.map +0 -1
  228. package/dist/adapters/intent/IntentMatcher.js +0 -89
  229. package/dist/adapters/intent/IntentMatcher.js.map +0 -1
  230. package/dist/adapters/intent/IntentService.d.ts.map +0 -1
  231. package/dist/adapters/intent/IntentService.js.map +0 -1
  232. package/dist/adapters/intent/MockIntentAdapter.js +0 -29
  233. package/dist/adapters/llm/GeminiLLMAdapter.d.ts.map +0 -1
  234. package/dist/adapters/llm/GeminiLLMAdapter.js.map +0 -1
  235. package/dist/adapters/llm/MockLLMAdapter.d.ts.map +0 -1
  236. package/dist/adapters/llm/MockLLMAdapter.js.map +0 -1
  237. package/dist/adapters/memory/InMemorySessionRepository.js +0 -15
  238. package/dist/adapters/redis/RedisSessionRepository.js +0 -41
  239. package/dist/adapters/repository/InMemoryRepository.d.ts +0 -15
  240. package/dist/adapters/repository/InMemoryRepository.d.ts.map +0 -1
  241. package/dist/adapters/repository/InMemoryRepository.js +0 -41
  242. package/dist/adapters/repository/InMemoryRepository.js.map +0 -1
  243. package/dist/adapters/repository/IntentRepository.d.ts +0 -15
  244. package/dist/adapters/repository/IntentRepository.d.ts.map +0 -1
  245. package/dist/adapters/repository/IntentRepository.js +0 -28
  246. package/dist/adapters/repository/IntentRepository.js.map +0 -1
  247. package/dist/adapters/repository/RedisRepository.d.ts +0 -16
  248. package/dist/adapters/repository/RedisRepository.d.ts.map +0 -1
  249. package/dist/adapters/repository/RedisRepository.js +0 -87
  250. package/dist/adapters/repository/RedisRepository.js.map +0 -1
  251. package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +0 -1
  252. package/dist/adapters/workflow/MockWorkflowAdapter.js +0 -162
  253. package/dist/adapters/workflow/MockWorkflowAdapter.js.map +0 -1
  254. package/dist/application/ConversationSession.d.ts +0 -23
  255. package/dist/application/ConversationSession.d.ts.map +0 -1
  256. package/dist/application/ConversationSession.js +0 -83
  257. package/dist/application/ConversationSession.js.map +0 -1
  258. package/dist/application/Message.d.ts +0 -11
  259. package/dist/application/Message.d.ts.map +0 -1
  260. package/dist/application/Message.js +0 -30
  261. package/dist/application/Message.js.map +0 -1
  262. package/dist/application/Orchestrator.d.ts +0 -18
  263. package/dist/application/Orchestrator.d.ts.map +0 -1
  264. package/dist/application/Orchestrator.js +0 -80
  265. package/dist/application/Orchestrator.js.map +0 -1
  266. package/dist/application/SessionState.js +0 -2
  267. package/dist/application/usecases/CreateSession.js +0 -20
  268. package/dist/application/usecases/HandleUserMessage.js +0 -69
  269. package/dist/config/ChatFlowConfig.d.ts.map +0 -1
  270. package/dist/config/ChatFlowConfig.js.map +0 -1
  271. package/dist/config/index.d.ts.map +0 -1
  272. package/dist/config/index.js.map +0 -1
  273. package/dist/core/entities/ConversationSession.d.ts +0 -23
  274. package/dist/core/entities/ConversationSession.d.ts.map +0 -1
  275. package/dist/core/entities/ConversationSession.js +0 -83
  276. package/dist/core/entities/ConversationSession.js.map +0 -1
  277. package/dist/core/entities/Message.d.ts.map +0 -1
  278. package/dist/core/entities/Message.js.map +0 -1
  279. package/dist/core/errors/ChatFlowError.d.ts.map +0 -1
  280. package/dist/core/errors/ChatFlowError.js.map +0 -1
  281. package/dist/core/errors/index.d.ts.map +0 -1
  282. package/dist/core/errors/index.js.map +0 -1
  283. package/dist/db/InMemoryRepository.d.ts +0 -15
  284. package/dist/db/InMemoryRepository.d.ts.map +0 -1
  285. package/dist/db/InMemoryRepository.js +0 -41
  286. package/dist/db/InMemoryRepository.js.map +0 -1
  287. package/dist/db/RedisRepository.d.ts +0 -16
  288. package/dist/db/RedisRepository.d.ts.map +0 -1
  289. package/dist/db/RedisRepository.js +0 -87
  290. package/dist/db/RedisRepository.js.map +0 -1
  291. package/dist/demo/cli-demo.d.ts.map +0 -1
  292. package/dist/demo/cli-demo.js.map +0 -1
  293. package/dist/demo/console-chat.d.ts.map +0 -1
  294. package/dist/demo/console-chat.js.map +0 -1
  295. package/dist/domain/conversation/ConversationSession.js +0 -82
  296. package/dist/domain/conversation/Message.js +0 -33
  297. package/dist/domain/conversation/SessionState.js +0 -10
  298. package/dist/index.d.ts.map +0 -1
  299. package/dist/index.js.map +0 -1
  300. package/dist/intent/IntentService.d.ts +0 -17
  301. package/dist/intent/IntentService.d.ts.map +0 -1
  302. package/dist/intent/IntentService.js +0 -51
  303. package/dist/intent/IntentService.js.map +0 -1
  304. package/dist/intent/MockIntentService.d.ts +0 -6
  305. package/dist/intent/MockIntentService.d.ts.map +0 -1
  306. package/dist/intent/MockIntentService.js.map +0 -1
  307. package/dist/interfaces.d.ts +0 -108
  308. package/dist/interfaces.d.ts.map +0 -1
  309. package/dist/interfaces.js +0 -18
  310. package/dist/interfaces.js.map +0 -1
  311. package/dist/llm/GeminiLLMAdapter.d.ts +0 -10
  312. package/dist/llm/GeminiLLMAdapter.d.ts.map +0 -1
  313. package/dist/llm/GeminiLLMAdapter.js +0 -102
  314. package/dist/llm/GeminiLLMAdapter.js.map +0 -1
  315. package/dist/llm/MockLLMAdapter.d.ts +0 -5
  316. package/dist/llm/MockLLMAdapter.d.ts.map +0 -1
  317. package/dist/llm/MockLLMAdapter.js +0 -31
  318. package/dist/llm/MockLLMAdapter.js.map +0 -1
  319. package/dist/orchestrator/Orchestrator.d.ts +0 -18
  320. package/dist/orchestrator/Orchestrator.d.ts.map +0 -1
  321. package/dist/orchestrator/Orchestrator.js +0 -80
  322. package/dist/orchestrator/Orchestrator.js.map +0 -1
  323. package/dist/ports/IIntentRepository.d.ts +0 -27
  324. package/dist/ports/IIntentRepository.d.ts.map +0 -1
  325. package/dist/ports/IIntentRepository.js +0 -3
  326. package/dist/ports/IIntentRepository.js.map +0 -1
  327. package/dist/ports/IntentPort.js +0 -2
  328. package/dist/ports/LLMPort.js +0 -2
  329. package/dist/ports/SessionRepository.js +0 -2
  330. package/dist/ports/WorkflowPort.js +0 -2
  331. package/dist/scripts/debug-redis.d.ts.map +0 -1
  332. package/dist/scripts/debug-redis.js.map +0 -1
  333. package/dist/scripts/verify_memory_intents.d.ts.map +0 -1
  334. package/dist/scripts/verify_memory_intents.js.map +0 -1
  335. package/dist/scripts/verify_redis_intents.d.ts.map +0 -1
  336. package/dist/scripts/verify_redis_intents.js.map +0 -1
  337. package/dist/verify_memory_intents.js +0 -44
  338. package/dist/verify_redis_intents.js +0 -49
  339. package/dist/workflow/MockWorkflowAdapter.d.ts +0 -5
  340. package/dist/workflow/MockWorkflowAdapter.d.ts.map +0 -1
  341. package/dist/workflow/MockWorkflowAdapter.js.map +0 -1
  342. /package/dist/{adapters → src/adapters}/llm/GeminiLLMAdapter.d.ts +0 -0
  343. /package/dist/{adapters → src/adapters}/llm/GeminiLLMAdapter.js +0 -0
  344. /package/dist/{adapters → src/adapters}/llm/MockLLMAdapter.d.ts +0 -0
  345. /package/dist/{adapters → src/adapters}/llm/MockLLMAdapter.js +0 -0
  346. /package/dist/{adapters → src/adapters}/workflow/MockWorkflowAdapter.d.ts +0 -0
  347. /package/dist/{config → src/config}/index.d.ts +0 -0
  348. /package/dist/{config → src/config}/index.js +0 -0
  349. /package/dist/{core → src/core}/errors/ChatFlowError.d.ts +0 -0
  350. /package/dist/{core → src/core}/errors/ChatFlowError.js +0 -0
  351. /package/dist/{core → src/core}/errors/index.d.ts +0 -0
  352. /package/dist/{core → src/core}/errors/index.js +0 -0
  353. /package/dist/{demo → src/demo}/cli-demo.d.ts +0 -0
  354. /package/dist/{demo → src/demo}/console-chat.d.ts +0 -0
  355. /package/dist/{scripts → src/scripts}/debug-redis.d.ts +0 -0
  356. /package/dist/{scripts → src/scripts}/debug-redis.js +0 -0
  357. /package/dist/{scripts → src/scripts}/verify_memory_intents.d.ts +0 -0
  358. /package/dist/{scripts → src/scripts}/verify_memory_intents.js +0 -0
  359. /package/dist/{scripts → src/scripts}/verify_redis_intents.d.ts +0 -0
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const dotenv = __importStar(require("dotenv"));
37
+ const supabase_js_1 = require("@supabase/supabase-js");
38
+ dotenv.config();
39
+ /**
40
+ * Demo Data Seeding Script
41
+ *
42
+ * Seeds Redis with demo user, conversation configs, and intents
43
+ * for testing the chat-flow widget.
44
+ *
45
+ * Run this before starting the server:
46
+ * npm run seed
47
+ */
48
+ // Data Persistence (Redis)
49
+ // Data Persistence (Supabase)
50
+ const SupabaseRepository_1 = require("../src/adapters/repository/SupabaseRepository");
51
+ if (!process.env.SUPABASE_URL || !process.env.SUPABASE_KEY) {
52
+ console.error('❌ Missing SUPABASE_URL or SUPABASE_KEY in .env');
53
+ process.exit(1);
54
+ }
55
+ const repository = new SupabaseRepository_1.SupabaseRepository({
56
+ supabaseUrl: process.env.SUPABASE_URL,
57
+ supabaseKey: process.env.SUPABASE_KEY
58
+ });
59
+ // --- Demo: Upsert User & Config ---
60
+ // --- Demo: Upsert User & Config ---
61
+ const DEMO_USER_ID = 'd8bb92cc-6e7b-4e7a-8eb8-495b1988bab4'; // Valid UUID for schema compatibility
62
+ const DEMO_CONFIG_ID_SUPPORT = '00000000-0000-0000-0000-000000000001';
63
+ const DEMO_CONFIG_ID_FLIGHT = '00000000-0000-0000-0000-000000000002';
64
+ async function initializeDemoUser() {
65
+ console.log('🔧 Initializing Demo User...');
66
+ // 0. Cleanup Old Data (Deep Clean)
67
+ const supabase = (0, supabase_js_1.createClient)(process.env.SUPABASE_URL, process.env.SUPABASE_KEY);
68
+ // Delete Sessions for Demo Configs
69
+ console.log(' - Cleaning up sessions for demo configs...');
70
+ const { error: sessionError } = await supabase
71
+ .from('chat_flow_sessions')
72
+ .delete()
73
+ .or(`config_id.eq.${DEMO_CONFIG_ID_SUPPORT},config_id.eq.${DEMO_CONFIG_ID_FLIGHT},user_id.eq.${DEMO_USER_ID}`);
74
+ if (sessionError)
75
+ console.error('Warning: Failed to cleanup sessions', sessionError);
76
+ // Delete Action Logs for Demo User (To prevent FK violation)
77
+ console.log(' - Cleaning up action logs...');
78
+ const { error: logsError } = await supabase
79
+ .from('chat_flow_action_logs')
80
+ .delete()
81
+ .eq('user_id', DEMO_USER_ID);
82
+ if (logsError)
83
+ console.error('Warning: Failed to cleanup action logs', logsError);
84
+ // Delete Workflow Executions for Demo User (Cascades to Logs)
85
+ console.log(' - Cleaning up workflow executions...');
86
+ const { error: execError } = await supabase
87
+ .from('chat_flow_workflow_executions')
88
+ .delete()
89
+ .eq('user_id', DEMO_USER_ID);
90
+ if (execError)
91
+ console.error('Warning: Failed to cleanup executions', execError);
92
+ // Delete Webhook Events for Demo User
93
+ const { error: hookError } = await supabase
94
+ .from('chat_flow_webhook_events')
95
+ .delete()
96
+ .eq('user_id', DEMO_USER_ID);
97
+ // 1. Upsert User
98
+ const user = {
99
+ id: DEMO_USER_ID,
100
+ name: 'Demo Voice Company',
101
+ apiKey: 'demo-key-123',
102
+ metadata: { plan: 'enterprise' }
103
+ };
104
+ // await repository.saveUser(user);
105
+ console.log(` - User '${user.name}' ready (Skipped saveUser - managed by Auth).`);
106
+ // 2. Upsert Config 1: Support
107
+ const configSupport = {
108
+ id: DEMO_CONFIG_ID_SUPPORT,
109
+ userId: DEMO_USER_ID,
110
+ systemPrompt: `You are a helpful customer support assistant.
111
+ You can check support hours and answer questions.
112
+ Keep responses concise and friendly.
113
+ When asked about working hours or support hours, use the information provided by the workflow system.`,
114
+ allowedIntents: ['CHECK_SUPPORT_HOURS', 'SMALL_TALK', 'CHECK_PRICING'], // Added CHECK_PRICING to keep existing demo capability
115
+ allowedOrigins: ['http://localhost:8080', 'http://127.0.0.1:8080', 'http://localhost:3000', 'file://'],
116
+ voiceConfig: {
117
+ silenceThresholdMs: 800,
118
+ smartMode: true,
119
+ interruptionMode: 'voice_barge_in'
120
+ },
121
+ uiConfig: {
122
+ width: '350px',
123
+ theme: 'light',
124
+ primaryColor: '#667eea',
125
+ layoutMode: 'default',
126
+ borderRadius: 'small',
127
+ boxShadow: 'soft',
128
+ sessionMode: 'text',
129
+ position: 'bottom-right',
130
+ collapsible: true, // Enable collapse/expand
131
+ autoExpanded: false, // Start collapsed by default
132
+ showStatus: false, // Default to hidden status badge
133
+ title: "Customer Support",
134
+ subtitle: "Ask about support hours & policies"
135
+ },
136
+ blacklistedWords: ['meow', 'bark', 'woof'],
137
+ exitPhrases: ['خداحافظ', 'بای', 'پایان', 'پایان جلسه', 'خدانگهدار'],
138
+ multiLingualMode: false,
139
+ defaultLanguage: 'en',
140
+ supportedLanguages: ['fa', 'ar', 'en'],
141
+ webhook: {
142
+ url: 'http://localhost:8080/webhook-test',
143
+ events: [
144
+ 'conversation.session.started',
145
+ 'conversation.session.ended',
146
+ 'conversation.message.user',
147
+ 'conversation.message.bot',
148
+ 'conversation.intent.detected',
149
+ 'conversation.intent.failed',
150
+ 'conversation.workflow.executed',
151
+ 'conversation.workflow.failed',
152
+ 'conversation.error.occurred'
153
+ ]
154
+ }
155
+ };
156
+ await repository.saveConversationConfig(configSupport);
157
+ console.log(` - Config '${configSupport.id}' ready (Support).`);
158
+ // 3. Upsert Config 2: Flight Assistant (New)
159
+ const configFlight = {
160
+ id: DEMO_CONFIG_ID_FLIGHT,
161
+ userId: DEMO_USER_ID,
162
+ systemPrompt: `You are a Flight Assistant.
163
+ You help users check flight status.
164
+ Keep responses very short and professional.`,
165
+ allowedIntents: ['CHECK_FLIGHT_STATUS'],
166
+ allowedOrigins: ['http://localhost:8080', 'http://127.0.0.1:8080', 'http://localhost:3000', 'file://'],
167
+ voiceConfig: {
168
+ silenceThresholdMs: 1000, // Faster turn-taking
169
+ smartMode: true
170
+ },
171
+ uiConfig: {
172
+ "theme": "dark",
173
+ "collapsible": true,
174
+ "autoExpanded": false,
175
+ "showStatus": false,
176
+ "title": "Flight Assistant",
177
+ "subtitle": "Check flight status (e.g. Flight 123)",
178
+ "sessionMode": "voice",
179
+ "position": "bottom-right",
180
+ "layoutMode": "default",
181
+ "borderRadius": "small",
182
+ "boxShadow": "soft",
183
+ "transparency": "low"
184
+ },
185
+ exitPhrases: ['خداحافظ', 'بای', 'پایان', 'پایان جلسه', 'خدانگهدار'], // Farsi exit phrases
186
+ multiLingualMode: false, // Enable automatic language detection
187
+ defaultLanguage: 'en' // Fallback language
188
+ };
189
+ await repository.saveConversationConfig(configFlight);
190
+ console.log(` - Config '${configFlight.id}' ready (Flight).`);
191
+ // 3. Upsert User Intent
192
+ const supportIntent = {
193
+ userId: DEMO_USER_ID,
194
+ name: 'CHECK_SUPPORT_HOURS',
195
+ description: 'User is asking about support hours, working hours, opening times, or when support is available',
196
+ required_fields: [],
197
+ processingMessages: ['Checking support hours for you...', 'One moment please...']
198
+ };
199
+ await repository.saveIntent(supportIntent);
200
+ const flightIntent = {
201
+ userId: DEMO_USER_ID,
202
+ name: 'CHECK_FLIGHT_STATUS',
203
+ description: 'Check status of a flight',
204
+ required_fields: [{ name: 'flightNumber', type: 'string' }]
205
+ };
206
+ await repository.saveIntent(flightIntent);
207
+ const pricingIntent = {
208
+ userId: DEMO_USER_ID,
209
+ name: 'CHECK_PRICING',
210
+ description: 'Check pricing for services, subscriptions, or plans',
211
+ required_fields: []
212
+ };
213
+ await repository.saveIntent(pricingIntent);
214
+ const smallTalkIntent = {
215
+ userId: DEMO_USER_ID,
216
+ name: 'SMALL_TALK',
217
+ description: 'Casual conversation, greetings, pleasantries',
218
+ required_fields: [],
219
+ skipWorkflow: true
220
+ };
221
+ await repository.saveIntent(smallTalkIntent);
222
+ console.log(` - Intents ready.`);
223
+ // 4. Cleanup existing workflows
224
+ const existingWorkflows = await repository.getAllWorkflows(DEMO_USER_ID);
225
+ console.log(` - Found ${existingWorkflows.length} existing workflows. Cleaning up...`);
226
+ for (const w of existingWorkflows) {
227
+ await repository.deleteWorkflow(w.id, DEMO_USER_ID);
228
+ }
229
+ // 5. Create Support Hours Workflow
230
+ // Use a fixed valid UUID for the demo workflow
231
+ const DEMO_WORKFLOW_ID = '00000000-0000-0000-0000-000000000123';
232
+ const supportHoursWorkflow = {
233
+ id: DEMO_WORKFLOW_ID,
234
+ userId: DEMO_USER_ID,
235
+ event_type: 'CHECK_SUPPORT_HOURS',
236
+ name: 'Support Hours Workflow',
237
+ description: 'Returns customer support hours',
238
+ definition: [
239
+ {
240
+ id: 'push_msg',
241
+ action: 'pushOutputResult',
242
+ input: {
243
+ message: "Our support team is available Monday through Friday from 9 AM to 5 PM EST. Is there anything else I can help you with?"
244
+ },
245
+ nextStepId: null
246
+ }
247
+ ],
248
+ configs: {},
249
+ is_active: true,
250
+ created_at: new Date().toISOString(),
251
+ updated_at: new Date().toISOString()
252
+ };
253
+ await repository.saveWorkflow(supportHoursWorkflow);
254
+ console.log(` - Workflow '${supportHoursWorkflow.name}' ready.`);
255
+ console.log('\n✅ Demo data seeded successfully!');
256
+ }
257
+ // Run initialization
258
+ initializeDemoUser()
259
+ .then(() => {
260
+ console.log('\n💡 You can now start the server with: npm run server');
261
+ process.exit(0);
262
+ })
263
+ .catch(err => {
264
+ console.error('❌ Failed to seed demo data:', err);
265
+ process.exit(1);
266
+ });
267
+ //# sourceMappingURL=seed-demo-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-demo-data.js","sourceRoot":"","sources":["../../web/seed-demo-data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=web-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-server.d.ts","sourceRoot":"","sources":["../../web/web-server.ts"],"names":[],"mappings":""}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const dotenv = __importStar(require("dotenv"));
40
+ const http = __importStar(require("http"));
41
+ const path = __importStar(require("path"));
42
+ const ioredis_1 = __importDefault(require("ioredis"));
43
+ const express_1 = __importDefault(require("express"));
44
+ const cors_1 = __importDefault(require("cors"));
45
+ const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
46
+ const ChatFlowWebSocketServer_1 = require("../src/server/ChatFlowWebSocketServer");
47
+ const GeminiLLMAdapter_1 = require("../src/adapters/llm/GeminiLLMAdapter");
48
+ const SupabaseRepository_1 = require("../src/adapters/repository/SupabaseRepository");
49
+ const GoogleVoiceAdapter_1 = require("../src/adapters/voice/GoogleVoiceAdapter");
50
+ const WorkflowAdapter_1 = require("../src/adapters/workflow/WorkflowAdapter");
51
+ const RedisAudioStorageAdapter_1 = require("../src/adapters/storage/RedisAudioStorageAdapter");
52
+ const router_1 = require("../src/api/router");
53
+ const swagger_1 = require("../src/config/swagger");
54
+ dotenv.config();
55
+ /**
56
+ * Production Server
57
+ *
58
+ * Serves static files and handles WebSocket connections.
59
+ *
60
+ * Configuration:
61
+ * - PORT: Server port (default 8080)
62
+ * - REDIS_URL: Redis connection string
63
+ * - GOOGLE_AI_API_KEY: Gemini API Key
64
+ */
65
+ // Check API keys
66
+ const geminiApiKey = process.env.GOOGLE_AI_API_KEY;
67
+ const supabaseUrl = process.env.SUPABASE_URL;
68
+ const supabaseKey = process.env.SUPABASE_KEY;
69
+ if (!geminiApiKey) {
70
+ console.error('❌ Missing GOOGLE_AI_API_KEY in .env file');
71
+ process.exit(1);
72
+ }
73
+ if (!supabaseUrl || !supabaseKey) {
74
+ console.error('❌ Missing SUPABASE_URL or SUPABASE_KEY in .env file');
75
+ process.exit(1);
76
+ }
77
+ // Setup Redis (still needed for AudioStorage?)
78
+ // Plan says migrate "Repository". AudioStorage uses Redis still?
79
+ // task.md only mentions migrating "Repository".
80
+ // RedisAudioStorageAdapter is separate. I should keep Redis for that if not migrated.
81
+ const redisClient = new ioredis_1.default(process.env.REDIS_URL || 'redis://localhost:6379');
82
+ // Setup Repository (Supabase)
83
+ const repository = new SupabaseRepository_1.SupabaseRepository({
84
+ supabaseUrl,
85
+ supabaseKey: supabaseKey,
86
+ cacheTtlSeconds: 120 // 2 minutes
87
+ });
88
+ const llmAdapter = new GeminiLLMAdapter_1.GeminiLLMAdapter(geminiApiKey);
89
+ const voiceAdapter = new GoogleVoiceAdapter_1.GoogleVoiceAdapter(geminiApiKey);
90
+ // Use real WorkflowAdapter (auto-registers default actions)
91
+ const workflowAdapter = new WorkflowAdapter_1.WorkflowAdapter(repository);
92
+ const audioStorage = new RedisAudioStorageAdapter_1.RedisAudioStorageAdapter(redisClient);
93
+ const PORT = process.env.PORT || 8080;
94
+ // Initialize Express App
95
+ const app = (0, express_1.default)();
96
+ app.use((0, cors_1.default)());
97
+ app.use(express_1.default.json());
98
+ // API Documentation
99
+ app.use('/api-docs', swagger_ui_express_1.default.serve, swagger_ui_express_1.default.setup(swagger_1.swaggerSpec));
100
+ // Mount API Routes
101
+ app.use('/api', (0, router_1.createApiRouter)(repository));
102
+ // Serve Static Files
103
+ app.use(express_1.default.static(path.join(__dirname, 'public')));
104
+ // Serve Widget Script (special path for compatibility)
105
+ app.get('/chat-flow-widget.js', (req, res) => {
106
+ res.sendFile(path.join(__dirname, '../src/widget/chat-flow-widget.js'));
107
+ });
108
+ // Mock Webhook Endpoint
109
+ app.post('/webhook-test', (req, res) => {
110
+ console.log("-------------- [START] --------------");
111
+ console.log(`[Webhook] Received POST /webhook-test (Event: ${req.body.eventType})`);
112
+ console.log(JSON.stringify(req.body, null, 2));
113
+ console.log("-------------- [END] ----------------");
114
+ res.status(200).send('OK');
115
+ });
116
+ // Serve Recordings
117
+ app.get('/recordings/:filename', async (req, res) => {
118
+ const filename = req.params.filename;
119
+ const sessionId = filename.replace('.wav', '');
120
+ if (filename.includes('..')) {
121
+ return res.status(403).send('Forbidden');
122
+ }
123
+ try {
124
+ const audioBuffer = await audioStorage.getSessionAudio(sessionId);
125
+ if (!audioBuffer) {
126
+ return res.status(404).send('Recording not found');
127
+ }
128
+ res.setHeader('Content-Type', 'audio/wav');
129
+ res.send(audioBuffer);
130
+ }
131
+ catch (error) {
132
+ console.error('[Server] Error serving recording:', error);
133
+ res.status(500).send('Internal Server Error');
134
+ }
135
+ });
136
+ // Create HTTP server from Express app
137
+ const httpServer = http.createServer(app);
138
+ // Create and start ChatFlow WebSocket server
139
+ const chatFlowWS = new ChatFlowWebSocketServer_1.ChatFlowWebSocketServer(httpServer, repository, llmAdapter, voiceAdapter, workflowAdapter, audioStorage, {
140
+ sessionLogInterval: 30000 // Log active sessions every 30 seconds
141
+ });
142
+ chatFlowWS.start();
143
+ // Start HTTP server
144
+ httpServer.listen(PORT, () => {
145
+ console.log('🎙️ Chat Flow Demo Server (Express)');
146
+ console.log('='.repeat(60));
147
+ console.log(`✅ HTTP server listening on http://localhost:${PORT}`);
148
+ console.log(`✅ WebSocket server listening on ws://localhost:${PORT}`);
149
+ console.log(`📖 API Documentation: http://localhost:${PORT}/api-docs`);
150
+ console.log(`💡 Health check: http://localhost:${PORT}/api/health`);
151
+ });
152
+ // Graceful shutdown
153
+ process.on('SIGINT', async () => {
154
+ console.log('\n\n🛑 Shutting down demo server...');
155
+ await chatFlowWS.stop();
156
+ httpServer.close(() => {
157
+ console.log('✅ HTTP server shut down gracefully');
158
+ process.exit(0);
159
+ });
160
+ setTimeout(() => {
161
+ console.log('⚠️ Forcing shutdown...');
162
+ process.exit(0);
163
+ }, 2000);
164
+ });
165
+ //# sourceMappingURL=web-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-server.js","sourceRoot":"","sources":["../../web/web-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chat-flow-ardymalihi",
3
- "version": "1.0.2",
3
+ "version": "3.0.2",
4
4
  "description": "Production-ready conversation orchestration library with intent detection and workflow integration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,12 +16,22 @@
16
16
  "test": "jest",
17
17
  "test:watch": "jest --watch",
18
18
  "test:coverage": "jest --coverage",
19
+ "test:unit": "jest tests/unit",
20
+ "test:integration": "jest tests/integration",
21
+ "test:integration:local": "LLM_PROVIDER=local jest tests/integration",
22
+ "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
19
23
  "lint": "eslint src/**/*.ts",
20
24
  "lint:fix": "eslint src/**/*.ts --fix",
21
25
  "format": "prettier --write \"src/**/*.ts\"",
22
26
  "format:check": "prettier --check \"src/**/*.ts\"",
23
27
  "demo": "ts-node src/demo/cli-demo.ts",
24
28
  "chat": "ts-node src/demo/console-chat.ts",
29
+ "backend": "ts-node web/web-server.ts",
30
+ "demo-website": "ts-node web-demo/demo-website-server.ts",
31
+ "seed": "ts-node web/seed-demo-data.ts",
32
+ "purge:redis": "ts-node tools/purge-redis.ts",
33
+ "dev": "npm run seed && npm run backend",
34
+ "kill": "lsof -ti:8080 | xargs kill -9",
25
35
  "prepublishOnly": "npm run build && npm test",
26
36
  "prerelease": "git pull origin main",
27
37
  "release:patch": "npm run prerelease && npm version patch && npm publish --access public && git push && git push --tags",
@@ -52,12 +62,19 @@
52
62
  },
53
63
  "homepage": "https://github.com/ardymalihi/chat-flow#readme",
54
64
  "devDependencies": {
65
+ "@types/cors": "^2.8.19",
66
+ "@types/dagre": "^0.7.53",
67
+ "@types/express": "^5.0.6",
55
68
  "@types/ioredis": "^5.0.0",
56
69
  "@types/jest": "^29.5.0",
57
70
  "@types/node": "^20.0.0",
71
+ "@types/swagger-jsdoc": "^6.0.4",
72
+ "@types/swagger-ui-express": "^4.1.8",
58
73
  "@types/uuid": "^9.0.8",
74
+ "@types/ws": "^8.18.1",
59
75
  "@typescript-eslint/eslint-plugin": "^6.0.0",
60
76
  "@typescript-eslint/parser": "^6.0.0",
77
+ "dotenv": "^17.2.3",
61
78
  "eslint": "^8.0.0",
62
79
  "jest": "^29.5.0",
63
80
  "prettier": "^3.0.0",
@@ -66,10 +83,22 @@
66
83
  "typescript": "^5.0.0"
67
84
  },
68
85
  "dependencies": {
86
+ "@google-cloud/text-to-speech": "^6.4.0",
69
87
  "@google/generative-ai": "^0.24.1",
70
- "dotenv": "^16.0.0",
88
+ "@supabase/supabase-js": "^2.89.0",
89
+ "body-parser": "^2.2.1",
90
+ "cors": "^2.8.5",
91
+ "cron-parser": "^5.4.0",
92
+ "dagre": "^0.8.5",
93
+ "express": "^5.2.1",
71
94
  "ioredis": "^5.8.2",
72
- "uuid": "^9.0.1"
95
+ "lru-cache": "^11.2.4",
96
+ "ollama": "^0.6.3",
97
+ "swagger-jsdoc": "^6.2.8",
98
+ "swagger-ui-express": "^5.0.1",
99
+ "uuid": "^9.0.1",
100
+ "ws": "^8.18.3",
101
+ "zod": "^4.3.5"
73
102
  },
74
103
  "engines": {
75
104
  "node": ">=16.0.0",
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InMemorySessionRepository = void 0;
4
- class InMemorySessionRepository {
5
- constructor() {
6
- this.sessions = new Map();
7
- }
8
- async save(session) {
9
- this.sessions.set(session.sessionId, session);
10
- }
11
- async findById(sessionId) {
12
- return this.sessions.get(sessionId) || null;
13
- }
14
- }
15
- exports.InMemorySessionRepository = InMemorySessionRepository;
@@ -1,41 +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.RedisSessionRepository = void 0;
7
- const ioredis_1 = __importDefault(require("ioredis"));
8
- const ConversationSession_1 = require("../../domain/conversation/ConversationSession");
9
- class RedisSessionRepository {
10
- constructor(connectionString = 'redis://localhost:6379') {
11
- this.TTL_SECONDS = 3600; // 1 Hour Expiry
12
- this.client = new ioredis_1.default(connectionString);
13
- this.client.on('error', (err) => {
14
- console.error('[Redis Error]', err);
15
- });
16
- }
17
- async save(session) {
18
- const key = `session:${session.sessionId}`;
19
- const data = JSON.stringify(session.toSnapshot());
20
- await this.client.set(key, data, 'EX', this.TTL_SECONDS);
21
- }
22
- async findById(sessionId) {
23
- const key = `session:${sessionId}`;
24
- const data = await this.client.get(key);
25
- if (!data)
26
- return null;
27
- try {
28
- const parsed = JSON.parse(data);
29
- return ConversationSession_1.ConversationSession.reconstitute(parsed);
30
- }
31
- catch (err) {
32
- console.error(`Failed to reconstitute session ${sessionId}`, err);
33
- return null;
34
- }
35
- }
36
- // Helper to close connection
37
- async disconnect() {
38
- await this.client.quit();
39
- }
40
- }
41
- exports.RedisSessionRepository = RedisSessionRepository;
@@ -1 +0,0 @@
1
- {"version":3,"file":"IntentMatcher.d.ts","sourceRoot":"","sources":["../../../src/adapters/intent/IntentMatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG/E;;GAEG;AACH,qBAAa,aAAa;IACV,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,WAAW;IAEpC;;;;;;OAMG;IACG,YAAY,CACd,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,GAAE,MAAW,GACjC,OAAO,CAAC,aAAa,EAAE,CAAC;IA2D3B;;;;;;OAMG;IACG,iBAAiB,CACnB,OAAO,EAAE,OAAO,EAAE,EAClB,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,GAAE,MAAW,GACjC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CASnC"}