chat-flow-ardymalihi 3.0.0 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/package.json +9 -1
  2. package/dist/adapters/db/InMemorySessionRepository.js +0 -15
  3. package/dist/adapters/db/RedisSessionRepository.js +0 -41
  4. package/dist/adapters/intent/IntentMatcher.d.ts +0 -41
  5. package/dist/adapters/intent/IntentMatcher.d.ts.map +0 -1
  6. package/dist/adapters/intent/IntentMatcher.js +0 -167
  7. package/dist/adapters/intent/IntentMatcher.js.map +0 -1
  8. package/dist/adapters/intent/IntentService.d.ts +0 -26
  9. package/dist/adapters/intent/IntentService.d.ts.map +0 -1
  10. package/dist/adapters/intent/IntentService.js +0 -65
  11. package/dist/adapters/intent/IntentService.js.map +0 -1
  12. package/dist/adapters/intent/MockIntentAdapter.js +0 -29
  13. package/dist/adapters/intent/MockIntentService.d.ts +0 -7
  14. package/dist/adapters/intent/MockIntentService.d.ts.map +0 -1
  15. package/dist/adapters/intent/MockIntentService.js +0 -36
  16. package/dist/adapters/intent/MockIntentService.js.map +0 -1
  17. package/dist/adapters/llm/GeminiLLMAdapter.d.ts +0 -10
  18. package/dist/adapters/llm/GeminiLLMAdapter.d.ts.map +0 -1
  19. package/dist/adapters/llm/GeminiLLMAdapter.js +0 -102
  20. package/dist/adapters/llm/GeminiLLMAdapter.js.map +0 -1
  21. package/dist/adapters/llm/MockLLMAdapter.d.ts +0 -5
  22. package/dist/adapters/llm/MockLLMAdapter.d.ts.map +0 -1
  23. package/dist/adapters/llm/MockLLMAdapter.js +0 -31
  24. package/dist/adapters/llm/MockLLMAdapter.js.map +0 -1
  25. package/dist/adapters/llm/OllamaLLMAdapter.d.ts +0 -9
  26. package/dist/adapters/llm/OllamaLLMAdapter.d.ts.map +0 -1
  27. package/dist/adapters/llm/OllamaLLMAdapter.js +0 -74
  28. package/dist/adapters/llm/OllamaLLMAdapter.js.map +0 -1
  29. package/dist/adapters/logger/ConsoleLogger.d.ts +0 -12
  30. package/dist/adapters/logger/ConsoleLogger.d.ts.map +0 -1
  31. package/dist/adapters/logger/ConsoleLogger.js +0 -37
  32. package/dist/adapters/logger/ConsoleLogger.js.map +0 -1
  33. package/dist/adapters/memory/InMemorySessionRepository.js +0 -15
  34. package/dist/adapters/redis/RedisSessionRepository.js +0 -41
  35. package/dist/adapters/repository/InMemoryRepository.d.ts +0 -46
  36. package/dist/adapters/repository/InMemoryRepository.d.ts.map +0 -1
  37. package/dist/adapters/repository/InMemoryRepository.js +0 -235
  38. package/dist/adapters/repository/InMemoryRepository.js.map +0 -1
  39. package/dist/adapters/repository/IntentRepository.d.ts +0 -15
  40. package/dist/adapters/repository/IntentRepository.d.ts.map +0 -1
  41. package/dist/adapters/repository/IntentRepository.js +0 -28
  42. package/dist/adapters/repository/IntentRepository.js.map +0 -1
  43. package/dist/adapters/repository/RedisRepository.d.ts +0 -63
  44. package/dist/adapters/repository/RedisRepository.d.ts.map +0 -1
  45. package/dist/adapters/repository/RedisRepository.js +0 -586
  46. package/dist/adapters/repository/RedisRepository.js.map +0 -1
  47. package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts +0 -33
  48. package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts.map +0 -1
  49. package/dist/adapters/storage/RedisAudioStorageAdapter.js +0 -121
  50. package/dist/adapters/storage/RedisAudioStorageAdapter.js.map +0 -1
  51. package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts +0 -14
  52. package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts.map +0 -1
  53. package/dist/adapters/storage/RedisBufferStorageAdapter.js +0 -94
  54. package/dist/adapters/storage/RedisBufferStorageAdapter.js.map +0 -1
  55. package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts +0 -29
  56. package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts.map +0 -1
  57. package/dist/adapters/voice/ElevenLabsVoiceAdapter.js +0 -75
  58. package/dist/adapters/voice/ElevenLabsVoiceAdapter.js.map +0 -1
  59. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts +0 -77
  60. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts.map +0 -1
  61. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js +0 -187
  62. package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js.map +0 -1
  63. package/dist/adapters/voice/GeminiVoiceAdapter.d.ts +0 -36
  64. package/dist/adapters/voice/GeminiVoiceAdapter.d.ts.map +0 -1
  65. package/dist/adapters/voice/GeminiVoiceAdapter.js +0 -134
  66. package/dist/adapters/voice/GeminiVoiceAdapter.js.map +0 -1
  67. package/dist/adapters/voice/GoogleTTSAdapter.d.ts +0 -61
  68. package/dist/adapters/voice/GoogleTTSAdapter.d.ts.map +0 -1
  69. package/dist/adapters/voice/GoogleTTSAdapter.js +0 -165
  70. package/dist/adapters/voice/GoogleTTSAdapter.js.map +0 -1
  71. package/dist/adapters/voice/GoogleVoiceAdapter.d.ts +0 -33
  72. package/dist/adapters/voice/GoogleVoiceAdapter.d.ts.map +0 -1
  73. package/dist/adapters/voice/GoogleVoiceAdapter.js +0 -155
  74. package/dist/adapters/voice/GoogleVoiceAdapter.js.map +0 -1
  75. package/dist/adapters/voice/HybridVoiceAdapter.d.ts +0 -54
  76. package/dist/adapters/voice/HybridVoiceAdapter.d.ts.map +0 -1
  77. package/dist/adapters/voice/HybridVoiceAdapter.js +0 -102
  78. package/dist/adapters/voice/HybridVoiceAdapter.js.map +0 -1
  79. package/dist/adapters/voice/LanguageVoiceMapper.d.ts +0 -60
  80. package/dist/adapters/voice/LanguageVoiceMapper.d.ts.map +0 -1
  81. package/dist/adapters/voice/LanguageVoiceMapper.js +0 -130
  82. package/dist/adapters/voice/LanguageVoiceMapper.js.map +0 -1
  83. package/dist/adapters/voice/VertexVoiceAdapter.d.ts +0 -32
  84. package/dist/adapters/voice/VertexVoiceAdapter.d.ts.map +0 -1
  85. package/dist/adapters/voice/VertexVoiceAdapter.js +0 -179
  86. package/dist/adapters/voice/VertexVoiceAdapter.js.map +0 -1
  87. package/dist/adapters/webhook/WebhookService.d.ts +0 -47
  88. package/dist/adapters/webhook/WebhookService.d.ts.map +0 -1
  89. package/dist/adapters/webhook/WebhookService.js +0 -265
  90. package/dist/adapters/webhook/WebhookService.js.map +0 -1
  91. package/dist/adapters/workflow/MockWorkflowAdapter.d.ts +0 -5
  92. package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +0 -1
  93. package/dist/adapters/workflow/MockWorkflowAdapter.js +0 -173
  94. package/dist/adapters/workflow/MockWorkflowAdapter.js.map +0 -1
  95. package/dist/adapters/workflow/WorkflowAdapter.d.ts +0 -55
  96. package/dist/adapters/workflow/WorkflowAdapter.d.ts.map +0 -1
  97. package/dist/adapters/workflow/WorkflowAdapter.js +0 -242
  98. package/dist/adapters/workflow/WorkflowAdapter.js.map +0 -1
  99. package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts +0 -10
  100. package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts.map +0 -1
  101. package/dist/adapters/workflow/actions/getSupportHoursAction.js +0 -33
  102. package/dist/adapters/workflow/actions/getSupportHoursAction.js.map +0 -1
  103. package/dist/adapters/workflow/actions/index.d.ts +0 -6
  104. package/dist/adapters/workflow/actions/index.d.ts.map +0 -1
  105. package/dist/adapters/workflow/actions/index.js +0 -22
  106. package/dist/adapters/workflow/actions/index.js.map +0 -1
  107. package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts +0 -11
  108. package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts.map +0 -1
  109. package/dist/adapters/workflow/actions/pushOutputResultAction.js +0 -31
  110. package/dist/adapters/workflow/actions/pushOutputResultAction.js.map +0 -1
  111. package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts +0 -12
  112. package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts.map +0 -1
  113. package/dist/adapters/workflow/actions/setWorkflowMessageAction.js +0 -32
  114. package/dist/adapters/workflow/actions/setWorkflowMessageAction.js.map +0 -1
  115. package/dist/adapters/workflow/engine/constants.d.ts +0 -3
  116. package/dist/adapters/workflow/engine/constants.d.ts.map +0 -1
  117. package/dist/adapters/workflow/engine/constants.js +0 -6
  118. package/dist/adapters/workflow/engine/constants.js.map +0 -1
  119. package/dist/adapters/workflow/engine/engine.d.ts +0 -32
  120. package/dist/adapters/workflow/engine/engine.d.ts.map +0 -1
  121. package/dist/adapters/workflow/engine/engine.js +0 -623
  122. package/dist/adapters/workflow/engine/engine.js.map +0 -1
  123. package/dist/adapters/workflow/engine/event-registry.d.ts +0 -12
  124. package/dist/adapters/workflow/engine/event-registry.d.ts.map +0 -1
  125. package/dist/adapters/workflow/engine/event-registry.js +0 -33
  126. package/dist/adapters/workflow/engine/event-registry.js.map +0 -1
  127. package/dist/adapters/workflow/engine/interpolator.d.ts +0 -11
  128. package/dist/adapters/workflow/engine/interpolator.d.ts.map +0 -1
  129. package/dist/adapters/workflow/engine/interpolator.js +0 -93
  130. package/dist/adapters/workflow/engine/interpolator.js.map +0 -1
  131. package/dist/adapters/workflow/engine/registry.d.ts +0 -12
  132. package/dist/adapters/workflow/engine/registry.d.ts.map +0 -1
  133. package/dist/adapters/workflow/engine/registry.js +0 -39
  134. package/dist/adapters/workflow/engine/registry.js.map +0 -1
  135. package/dist/adapters/workflow/engine/template-registry.d.ts +0 -60
  136. package/dist/adapters/workflow/engine/template-registry.d.ts.map +0 -1
  137. package/dist/adapters/workflow/engine/template-registry.js +0 -92
  138. package/dist/adapters/workflow/engine/template-registry.js.map +0 -1
  139. package/dist/adapters/workflow/engine/types.d.ts +0 -182
  140. package/dist/adapters/workflow/engine/types.d.ts.map +0 -1
  141. package/dist/adapters/workflow/engine/types.js +0 -3
  142. package/dist/adapters/workflow/engine/types.js.map +0 -1
  143. package/dist/adapters/workflow/engine/utils/format-utils.d.ts +0 -43
  144. package/dist/adapters/workflow/engine/utils/format-utils.d.ts.map +0 -1
  145. package/dist/adapters/workflow/engine/utils/format-utils.js +0 -137
  146. package/dist/adapters/workflow/engine/utils/format-utils.js.map +0 -1
  147. package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts +0 -7
  148. package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts.map +0 -1
  149. package/dist/adapters/workflow/engine/utils/layout-calculator.js +0 -87
  150. package/dist/adapters/workflow/engine/utils/layout-calculator.js.map +0 -1
  151. package/dist/adapters/workflow/engine/utils/slugify.d.ts +0 -2
  152. package/dist/adapters/workflow/engine/utils/slugify.d.ts.map +0 -1
  153. package/dist/adapters/workflow/engine/utils/slugify.js +0 -41
  154. package/dist/adapters/workflow/engine/utils/slugify.js.map +0 -1
  155. package/dist/adapters/workflow/engine/validator.d.ts +0 -9
  156. package/dist/adapters/workflow/engine/validator.d.ts.map +0 -1
  157. package/dist/adapters/workflow/engine/validator.js +0 -425
  158. package/dist/adapters/workflow/engine/validator.js.map +0 -1
  159. package/dist/application/ConversationSession.d.ts +0 -23
  160. package/dist/application/ConversationSession.d.ts.map +0 -1
  161. package/dist/application/ConversationSession.js +0 -83
  162. package/dist/application/ConversationSession.js.map +0 -1
  163. package/dist/application/Message.d.ts +0 -11
  164. package/dist/application/Message.d.ts.map +0 -1
  165. package/dist/application/Message.js +0 -30
  166. package/dist/application/Message.js.map +0 -1
  167. package/dist/application/Orchestrator.d.ts +0 -18
  168. package/dist/application/Orchestrator.d.ts.map +0 -1
  169. package/dist/application/Orchestrator.js +0 -80
  170. package/dist/application/Orchestrator.js.map +0 -1
  171. package/dist/application/SessionState.js +0 -2
  172. package/dist/application/usecases/CreateSession.js +0 -20
  173. package/dist/application/usecases/HandleUserMessage.js +0 -69
  174. package/dist/config/ChatFlowConfig.d.ts +0 -66
  175. package/dist/config/ChatFlowConfig.d.ts.map +0 -1
  176. package/dist/config/ChatFlowConfig.js +0 -54
  177. package/dist/config/ChatFlowConfig.js.map +0 -1
  178. package/dist/config/index.d.ts +0 -2
  179. package/dist/config/index.d.ts.map +0 -1
  180. package/dist/config/index.js +0 -7
  181. package/dist/config/index.js.map +0 -1
  182. package/dist/core/entities/ConversationSession.d.ts +0 -58
  183. package/dist/core/entities/ConversationSession.d.ts.map +0 -1
  184. package/dist/core/entities/ConversationSession.js +0 -160
  185. package/dist/core/entities/ConversationSession.js.map +0 -1
  186. package/dist/core/entities/Message.d.ts +0 -14
  187. package/dist/core/entities/Message.d.ts.map +0 -1
  188. package/dist/core/entities/Message.js +0 -32
  189. package/dist/core/entities/Message.js.map +0 -1
  190. package/dist/core/errors/ChatFlowError.d.ts +0 -71
  191. package/dist/core/errors/ChatFlowError.d.ts.map +0 -1
  192. package/dist/core/errors/ChatFlowError.js +0 -108
  193. package/dist/core/errors/ChatFlowError.js.map +0 -1
  194. package/dist/core/errors/index.d.ts +0 -2
  195. package/dist/core/errors/index.d.ts.map +0 -1
  196. package/dist/core/errors/index.js +0 -15
  197. package/dist/core/errors/index.js.map +0 -1
  198. package/dist/core/utils/AudioStreamBuffer.d.ts +0 -33
  199. package/dist/core/utils/AudioStreamBuffer.d.ts.map +0 -1
  200. package/dist/core/utils/AudioStreamBuffer.js +0 -55
  201. package/dist/core/utils/AudioStreamBuffer.js.map +0 -1
  202. package/dist/core/utils/AudioUtils.d.ts +0 -41
  203. package/dist/core/utils/AudioUtils.d.ts.map +0 -1
  204. package/dist/core/utils/AudioUtils.js +0 -188
  205. package/dist/core/utils/AudioUtils.js.map +0 -1
  206. package/dist/core/utils/LanguageDetector.d.ts +0 -52
  207. package/dist/core/utils/LanguageDetector.d.ts.map +0 -1
  208. package/dist/core/utils/LanguageDetector.js +0 -173
  209. package/dist/core/utils/LanguageDetector.js.map +0 -1
  210. package/dist/core/utils/WavUtils.d.ts +0 -14
  211. package/dist/core/utils/WavUtils.d.ts.map +0 -1
  212. package/dist/core/utils/WavUtils.js +0 -37
  213. package/dist/core/utils/WavUtils.js.map +0 -1
  214. package/dist/db/InMemoryRepository.d.ts +0 -15
  215. package/dist/db/InMemoryRepository.d.ts.map +0 -1
  216. package/dist/db/InMemoryRepository.js +0 -41
  217. package/dist/db/InMemoryRepository.js.map +0 -1
  218. package/dist/db/RedisRepository.d.ts +0 -16
  219. package/dist/db/RedisRepository.d.ts.map +0 -1
  220. package/dist/db/RedisRepository.js +0 -87
  221. package/dist/db/RedisRepository.js.map +0 -1
  222. package/dist/demo/cli-demo.d.ts +0 -2
  223. package/dist/demo/cli-demo.d.ts.map +0 -1
  224. package/dist/demo/cli-demo.js +0 -146
  225. package/dist/demo/cli-demo.js.map +0 -1
  226. package/dist/demo/console-chat.d.ts +0 -2
  227. package/dist/demo/console-chat.d.ts.map +0 -1
  228. package/dist/demo/console-chat.js +0 -148
  229. package/dist/demo/console-chat.js.map +0 -1
  230. package/dist/demo/interactive-voice-chat.d.ts +0 -2
  231. package/dist/demo/interactive-voice-chat.d.ts.map +0 -1
  232. package/dist/demo/interactive-voice-chat.js +0 -180
  233. package/dist/demo/interactive-voice-chat.js.map +0 -1
  234. package/dist/demo/voice-demo.d.ts +0 -2
  235. package/dist/demo/voice-demo.d.ts.map +0 -1
  236. package/dist/demo/voice-demo.js +0 -188
  237. package/dist/demo/voice-demo.js.map +0 -1
  238. package/dist/domain/conversation/ConversationSession.js +0 -82
  239. package/dist/domain/conversation/Message.js +0 -33
  240. package/dist/domain/conversation/SessionState.js +0 -10
  241. package/dist/index.d.ts +0 -26
  242. package/dist/index.d.ts.map +0 -1
  243. package/dist/index.js +0 -76
  244. package/dist/index.js.map +0 -1
  245. package/dist/intent/IntentService.d.ts +0 -17
  246. package/dist/intent/IntentService.d.ts.map +0 -1
  247. package/dist/intent/IntentService.js +0 -57
  248. package/dist/intent/IntentService.js.map +0 -1
  249. package/dist/intent/MockIntentService.d.ts +0 -7
  250. package/dist/intent/MockIntentService.d.ts.map +0 -1
  251. package/dist/intent/MockIntentService.js +0 -36
  252. package/dist/intent/MockIntentService.js.map +0 -1
  253. package/dist/interfaces.d.ts +0 -653
  254. package/dist/interfaces.d.ts.map +0 -1
  255. package/dist/interfaces.js +0 -36
  256. package/dist/interfaces.js.map +0 -1
  257. package/dist/llm/GeminiLLMAdapter.d.ts +0 -10
  258. package/dist/llm/GeminiLLMAdapter.d.ts.map +0 -1
  259. package/dist/llm/GeminiLLMAdapter.js +0 -102
  260. package/dist/llm/GeminiLLMAdapter.js.map +0 -1
  261. package/dist/llm/MockLLMAdapter.d.ts +0 -5
  262. package/dist/llm/MockLLMAdapter.d.ts.map +0 -1
  263. package/dist/llm/MockLLMAdapter.js +0 -31
  264. package/dist/llm/MockLLMAdapter.js.map +0 -1
  265. package/dist/orchestrator/Orchestrator.d.ts +0 -62
  266. package/dist/orchestrator/Orchestrator.d.ts.map +0 -1
  267. package/dist/orchestrator/Orchestrator.js +0 -697
  268. package/dist/orchestrator/Orchestrator.js.map +0 -1
  269. package/dist/ports/IIntentRepository.d.ts +0 -27
  270. package/dist/ports/IIntentRepository.d.ts.map +0 -1
  271. package/dist/ports/IIntentRepository.js +0 -3
  272. package/dist/ports/IIntentRepository.js.map +0 -1
  273. package/dist/ports/IntentPort.js +0 -2
  274. package/dist/ports/LLMPort.js +0 -2
  275. package/dist/ports/SessionRepository.js +0 -2
  276. package/dist/ports/WorkflowPort.js +0 -2
  277. package/dist/scripts/debug-redis.d.ts +0 -2
  278. package/dist/scripts/debug-redis.d.ts.map +0 -1
  279. package/dist/scripts/debug-redis.js +0 -55
  280. package/dist/scripts/debug-redis.js.map +0 -1
  281. package/dist/scripts/seed-collaborative-intents.d.ts +0 -2
  282. package/dist/scripts/seed-collaborative-intents.d.ts.map +0 -1
  283. package/dist/scripts/seed-collaborative-intents.js +0 -90
  284. package/dist/scripts/seed-collaborative-intents.js.map +0 -1
  285. package/dist/scripts/test-isolated-config.d.ts +0 -2
  286. package/dist/scripts/test-isolated-config.d.ts.map +0 -1
  287. package/dist/scripts/test-isolated-config.js +0 -80
  288. package/dist/scripts/test-isolated-config.js.map +0 -1
  289. package/dist/scripts/verify_memory_intents.d.ts +0 -2
  290. package/dist/scripts/verify_memory_intents.d.ts.map +0 -1
  291. package/dist/scripts/verify_memory_intents.js +0 -45
  292. package/dist/scripts/verify_memory_intents.js.map +0 -1
  293. package/dist/scripts/verify_redis_intents.d.ts +0 -2
  294. package/dist/scripts/verify_redis_intents.d.ts.map +0 -1
  295. package/dist/scripts/verify_redis_intents.js +0 -52
  296. package/dist/scripts/verify_redis_intents.js.map +0 -1
  297. package/dist/server/ChatFlowWebSocketServer.d.ts +0 -46
  298. package/dist/server/ChatFlowWebSocketServer.d.ts.map +0 -1
  299. package/dist/server/ChatFlowWebSocketServer.js +0 -344
  300. package/dist/server/ChatFlowWebSocketServer.js.map +0 -1
  301. package/dist/server/realtime-voice-server.d.ts +0 -2
  302. package/dist/server/realtime-voice-server.d.ts.map +0 -1
  303. package/dist/server/realtime-voice-server.js +0 -627
  304. package/dist/server/realtime-voice-server.js.map +0 -1
  305. package/dist/src/api/routes/tenants.d.ts +0 -3
  306. package/dist/src/api/routes/tenants.d.ts.map +0 -1
  307. package/dist/src/api/routes/tenants.js +0 -109
  308. package/dist/src/api/routes/tenants.js.map +0 -1
  309. package/dist/utils/crypto.d.ts +0 -7
  310. package/dist/utils/crypto.d.ts.map +0 -1
  311. package/dist/utils/crypto.js +0 -35
  312. package/dist/utils/crypto.js.map +0 -1
  313. package/dist/utils/encryption-helpers.d.ts +0 -14
  314. package/dist/utils/encryption-helpers.d.ts.map +0 -1
  315. package/dist/utils/encryption-helpers.js +0 -49
  316. package/dist/utils/encryption-helpers.js.map +0 -1
  317. package/dist/verify_memory_intents.js +0 -44
  318. package/dist/verify_redis_intents.js +0 -49
  319. package/dist/workflow/MockWorkflowAdapter.d.ts +0 -5
  320. package/dist/workflow/MockWorkflowAdapter.d.ts.map +0 -1
  321. package/dist/workflow/MockWorkflowAdapter.js +0 -162
  322. package/dist/workflow/MockWorkflowAdapter.js.map +0 -1
@@ -1,187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GeminiMultimodalLiveAdapter = void 0;
4
- /**
5
- * Gemini Multimodal Live Adapter
6
- *
7
- * Real-time voice adapter using Gemini's Multimodal Live API.
8
- * Provides bidirectional streaming for STT + LLM + TTS in a single connection.
9
- *
10
- * Features:
11
- * - Real-time speech-to-text
12
- * - Streaming LLM responses
13
- * - Real-time text-to-speech
14
- * - Low latency (<500ms)
15
- * - Interruption handling
16
- *
17
- * Cost: ~$0.006/minute (all-inclusive)
18
- *
19
- * Note: This adapter is designed for WebSocket-based real-time streaming.
20
- * For batch/turn-based conversations, use GeminiVoiceAdapter instead.
21
- */
22
- class GeminiMultimodalLiveAdapter {
23
- constructor(apiKey, voiceConfig) {
24
- this.isConnected = false;
25
- this.apiKey = apiKey;
26
- this.voiceConfig = voiceConfig;
27
- }
28
- /**
29
- * Connect to Gemini Multimodal Live API
30
- * Returns a WebSocket connection for bidirectional streaming
31
- */
32
- async connect() {
33
- if (this.ws && this.isConnected) {
34
- return this.ws;
35
- }
36
- // Gemini Multimodal Live WebSocket endpoint
37
- const wsUrl = `wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContent?key=${this.apiKey}`;
38
- return new Promise((resolve, reject) => {
39
- this.ws = new WebSocket(wsUrl);
40
- this.ws.onopen = () => {
41
- console.log('[GeminiMultimodalLive] Connected to Gemini');
42
- this.isConnected = true;
43
- // Send initial configuration
44
- this.sendConfig();
45
- resolve(this.ws);
46
- };
47
- this.ws.onerror = (error) => {
48
- console.error('[GeminiMultimodalLive] Connection error:', error);
49
- this.isConnected = false;
50
- reject(error);
51
- };
52
- this.ws.onclose = () => {
53
- console.log('[GeminiMultimodalLive] Connection closed');
54
- this.isConnected = false;
55
- };
56
- });
57
- }
58
- /**
59
- * Send configuration to Gemini
60
- */
61
- sendConfig() {
62
- if (!this.ws || !this.isConnected) {
63
- throw new Error('Not connected to Gemini');
64
- }
65
- const config = {
66
- setup: {
67
- model: 'models/gemini-2.0-flash-exp',
68
- generationConfig: {
69
- responseModalities: ['AUDIO'],
70
- speechConfig: {
71
- voiceConfig: {
72
- prebuiltVoiceConfig: {
73
- voiceName: this.voiceConfig?.tts?.voice || 'Puck'
74
- }
75
- }
76
- }
77
- }
78
- }
79
- };
80
- this.ws.send(JSON.stringify(config));
81
- }
82
- /**
83
- * Send audio chunk to Gemini for processing
84
- * @param audioBase64 Base64-encoded audio data
85
- */
86
- async sendAudio(audioBase64) {
87
- if (!this.ws || !this.isConnected) {
88
- throw new Error('Not connected to Gemini');
89
- }
90
- const message = {
91
- realtimeInput: {
92
- mediaChunks: [{
93
- data: audioBase64,
94
- mimeType: 'audio/pcm'
95
- }]
96
- }
97
- };
98
- this.ws.send(JSON.stringify(message));
99
- }
100
- /**
101
- * Register callback for receiving responses from Gemini
102
- * @param callback Function to handle responses (text + audio)
103
- */
104
- onResponse(callback) {
105
- if (!this.ws) {
106
- throw new Error('Not connected to Gemini');
107
- }
108
- this.ws.onmessage = (event) => {
109
- try {
110
- const data = JSON.parse(event.data);
111
- if (data.serverContent?.modelTurn?.parts) {
112
- const parts = data.serverContent.modelTurn.parts;
113
- for (const part of parts) {
114
- const response = {
115
- isFinal: data.serverContent.turnComplete || false
116
- };
117
- // Extract text
118
- if (part.text) {
119
- response.text = part.text;
120
- }
121
- // Extract audio
122
- if (part.inlineData?.data) {
123
- const audioBase64 = part.inlineData.data;
124
- response.audio = Uint8Array.from(Buffer.from(audioBase64, 'base64'));
125
- }
126
- callback(response);
127
- }
128
- }
129
- }
130
- catch (error) {
131
- console.error('[GeminiMultimodalLive] Error parsing response:', error);
132
- }
133
- };
134
- }
135
- /**
136
- * Disconnect from Gemini
137
- */
138
- disconnect() {
139
- if (this.ws) {
140
- this.ws.close();
141
- this.ws = undefined;
142
- this.isConnected = false;
143
- }
144
- }
145
- /**
146
- * Speech-to-text (not used in real-time mode)
147
- * Use sendAudio() and onResponse() instead for real-time streaming
148
- */
149
- async speechToText(audioBase64, config) {
150
- throw new Error('speechToText() is not supported in real-time mode. ' +
151
- 'Use connect() + sendAudio() + onResponse() for streaming.');
152
- }
153
- /**
154
- * Text-to-speech (not used in real-time mode)
155
- * Use sendAudio() and onResponse() instead for real-time streaming
156
- */
157
- async textToSpeech(text, config) {
158
- throw new Error('textToSpeech() is not supported in real-time mode. ' +
159
- 'Use connect() + sendAudio() + onResponse() for streaming.');
160
- }
161
- /**
162
- * Get TTS output format metadata
163
- * This adapter outputs PCM audio at 24kHz mono
164
- */
165
- getTTSOutputFormat() {
166
- return {
167
- format: 'pcm',
168
- sampleRate: 24000,
169
- channels: 1,
170
- bitDepth: 16
171
- };
172
- }
173
- /**
174
- * Check if connected to Gemini
175
- */
176
- isConnectedToGemini() {
177
- return this.isConnected;
178
- }
179
- /**
180
- * Get the underlying WebSocket connection
181
- */
182
- getWebSocket() {
183
- return this.ws;
184
- }
185
- }
186
- exports.GeminiMultimodalLiveAdapter = GeminiMultimodalLiveAdapter;
187
- //# sourceMappingURL=GeminiMultimodalLiveAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeminiMultimodalLiveAdapter.js","sourceRoot":"","sources":["../../../src/adapters/voice/GeminiMultimodalLiveAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { IVoiceAdapter, VoiceConfig, AudioFormatMetadata } from '../../interfaces';
2
- /**
3
- * Gemini Voice Adapter
4
- * Implements voice capabilities using Google's Gemini API
5
- * Can be used independently of GeminiLLMAdapter
6
- */
7
- export declare class GeminiVoiceAdapter implements IVoiceAdapter {
8
- private apiKey;
9
- private voiceConfig?;
10
- constructor(apiKey: string, voiceConfig?: VoiceConfig);
11
- /**
12
- * Convert speech (audio) to text using Gemini's audio input capability
13
- * @param audioBase64 Base64-encoded audio data (WAV format recommended)
14
- * @param config Optional STT configuration (overrides constructor config)
15
- * @returns Transcribed text
16
- */
17
- speechToText(audioBase64: string, config?: VoiceConfig['stt']): Promise<string>;
18
- /**
19
- * Convert text to speech (audio) using Gemini's native audio output
20
- * @param text Text to convert to speech
21
- * @param config Optional TTS configuration (overrides constructor config)
22
- * @returns Audio data as Uint8Array (PCM format)
23
- */
24
- textToSpeech(text: string, config?: VoiceConfig['tts']): Promise<Uint8Array>;
25
- /**
26
- * Declare the audio format produced by Gemini TTS
27
- * Used by IAudioStorage for format conversion
28
- */
29
- getTTSOutputFormat(): AudioFormatMetadata;
30
- /**
31
- * Declare the expected audio format for Gemini STT
32
- * Used by IAudioStorage for format conversion
33
- */
34
- getSTTInputFormat(): AudioFormatMetadata;
35
- }
36
- //# sourceMappingURL=GeminiVoiceAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeminiVoiceAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/GeminiVoiceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACpD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAc;gBAEtB,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;;;OAKG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDrF;;;;;OAKG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAiDlF;;;OAGG;IACH,kBAAkB,IAAI,mBAAmB;IASzC;;;OAGG;IACH,iBAAiB,IAAI,mBAAmB;CAQ3C"}
@@ -1,134 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GeminiVoiceAdapter = void 0;
4
- /**
5
- * Gemini Voice Adapter
6
- * Implements voice capabilities using Google's Gemini API
7
- * Can be used independently of GeminiLLMAdapter
8
- */
9
- class GeminiVoiceAdapter {
10
- constructor(apiKey, voiceConfig) {
11
- this.apiKey = apiKey;
12
- this.voiceConfig = voiceConfig;
13
- }
14
- /**
15
- * Convert speech (audio) to text using Gemini's audio input capability
16
- * @param audioBase64 Base64-encoded audio data (WAV format recommended)
17
- * @param config Optional STT configuration (overrides constructor config)
18
- * @returns Transcribed text
19
- */
20
- async speechToText(audioBase64, config) {
21
- const sttConfig = config || this.voiceConfig?.stt;
22
- const language = sttConfig?.language || 'en-US';
23
- try {
24
- const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-lite:generateContent?key=${this.apiKey}`, {
25
- method: 'POST',
26
- headers: { 'Content-Type': 'application/json' },
27
- body: JSON.stringify({
28
- contents: [{
29
- role: 'user',
30
- parts: [
31
- { text: "Transcribe the following audio exactly. Do not respond to the audio, just output the transcription." },
32
- {
33
- inlineData: {
34
- mimeType: 'audio/wav',
35
- data: audioBase64
36
- }
37
- }
38
- ]
39
- }],
40
- generationConfig: {
41
- temperature: 0.1, // Lower temperature for transcription accuracy
42
- }
43
- })
44
- });
45
- if (!response.ok) {
46
- const errorText = await response.text();
47
- throw new Error(`Gemini STT API Error: ${response.status} - ${errorText}`);
48
- }
49
- const json = await response.json();
50
- const transcript = json.candidates?.[0]?.content?.parts?.[0]?.text || '';
51
- if (!transcript) {
52
- throw new Error('No transcript returned from Gemini STT');
53
- }
54
- return transcript;
55
- }
56
- catch (error) {
57
- console.error('Speech-to-Text Error:', error);
58
- throw new Error(`STT failed: ${error.message}`);
59
- }
60
- }
61
- /**
62
- * Convert text to speech (audio) using Gemini's native audio output
63
- * @param text Text to convert to speech
64
- * @param config Optional TTS configuration (overrides constructor config)
65
- * @returns Audio data as Uint8Array (PCM format)
66
- */
67
- async textToSpeech(text, config) {
68
- const ttsConfig = config || this.voiceConfig?.tts;
69
- const voice = ttsConfig?.voice || 'Puck'; // Gemini's default voice
70
- try {
71
- // Use v1alpha API which supports audio modalities
72
- const response = await fetch(`https://generativelanguage.googleapis.com/v1alpha/models/gemini-2.0-flash-exp:generateContent?key=${this.apiKey}`, {
73
- method: 'POST',
74
- headers: { 'Content-Type': 'application/json' },
75
- body: JSON.stringify({
76
- contents: [{
77
- role: 'user',
78
- parts: [{ text }]
79
- }],
80
- generationConfig: {
81
- responseModalities: ['AUDIO'],
82
- speechConfig: {
83
- voiceConfig: {
84
- prebuiltVoiceConfig: {
85
- voiceName: voice
86
- }
87
- }
88
- }
89
- }
90
- })
91
- });
92
- if (!response.ok) {
93
- const errorText = await response.text();
94
- throw new Error(`Gemini TTS API Error: ${response.status} - ${errorText}`);
95
- }
96
- const json = await response.json();
97
- const audioBase64 = json.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
98
- if (!audioBase64) {
99
- throw new Error('No audio data received from Gemini TTS');
100
- }
101
- return Uint8Array.from(Buffer.from(audioBase64, 'base64'));
102
- }
103
- catch (error) {
104
- console.error('Text-to-Speech Error:', error);
105
- throw new Error(`TTS failed: ${error.message}`);
106
- }
107
- }
108
- /**
109
- * Declare the audio format produced by Gemini TTS
110
- * Used by IAudioStorage for format conversion
111
- */
112
- getTTSOutputFormat() {
113
- return {
114
- format: 'pcm',
115
- sampleRate: 24000,
116
- channels: 1,
117
- bitDepth: 16
118
- };
119
- }
120
- /**
121
- * Declare the expected audio format for Gemini STT
122
- * Used by IAudioStorage for format conversion
123
- */
124
- getSTTInputFormat() {
125
- return {
126
- format: 'wav',
127
- sampleRate: 16000,
128
- channels: 1,
129
- bitDepth: 16
130
- };
131
- }
132
- }
133
- exports.GeminiVoiceAdapter = GeminiVoiceAdapter;
134
- //# sourceMappingURL=GeminiVoiceAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeminiVoiceAdapter.js","sourceRoot":"","sources":["../../../src/adapters/voice/GeminiVoiceAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- import { IVoiceAdapter, VoiceConfig } from '../../interfaces';
2
- /**
3
- * Google Cloud Text-to-Speech Adapter
4
- *
5
- * Production-ready TTS using Google Cloud Text-to-Speech API
6
- * - Supports 70+ languages with 400+ voices
7
- * - Male/female voice options
8
- * - WaveNet & Neural2 premium voices
9
- * - SSML support for advanced control
10
- * - Perfect for Persian, Arabic, Asian languages
11
- *
12
- * Pricing:
13
- * - Standard voices: $4 per 1M characters
14
- * - WaveNet/Neural2: $16 per 1M characters
15
- */
16
- export declare class GoogleTTSAdapter implements IVoiceAdapter {
17
- private apiKey;
18
- private voiceConfig?;
19
- constructor(apiKey: string, voiceConfig?: VoiceConfig);
20
- /**
21
- * Speech-to-text (not implemented - use GeminiVoiceAdapter)
22
- */
23
- speechToText(audioBase64: string, config?: VoiceConfig['stt']): Promise<string>;
24
- /**
25
- * Text-to-speech using Google Cloud TTS
26
- *
27
- * Features:
28
- * - Multiple audio formats (LINEAR16, MP3, OGG)
29
- * - Pitch and speaking rate control
30
- * - SSML support
31
- * - Volume gain control
32
- *
33
- * @param text Text to convert to speech (or SSML)
34
- * @param config Optional TTS configuration
35
- * @returns Audio data as Uint8Array
36
- */
37
- textToSpeech(text: string, config?: VoiceConfig['tts']): Promise<Uint8Array>;
38
- /**
39
- * Extract language code from voice ID
40
- * Examples: 'fa-IR-Standard-A' → 'fa-IR', 'ar-XA-Wavenet-B' → 'ar-XA'
41
- */
42
- private extractLanguageCode;
43
- /**
44
- * Validate voice ID format (basic check)
45
- */
46
- private isValidVoiceId;
47
- /**
48
- * Check if text is SSML (Speech Synthesis Markup Language)
49
- */
50
- private isSSML;
51
- /**
52
- * Extract gender hint from voice variant (A-D typically female, E+ typically male)
53
- * This is a heuristic and may not always be accurate
54
- */
55
- private extractGender;
56
- /**
57
- * Clamp value between min and max
58
- */
59
- private clamp;
60
- }
61
- //# sourceMappingURL=GoogleTTSAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GoogleTTSAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/GoogleTTSAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAc;gBAEtB,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrF;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAiFlF;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,MAAM;IAId;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGhB"}
@@ -1,165 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GoogleTTSAdapter = void 0;
4
- /**
5
- * Google Cloud Text-to-Speech Adapter
6
- *
7
- * Production-ready TTS using Google Cloud Text-to-Speech API
8
- * - Supports 70+ languages with 400+ voices
9
- * - Male/female voice options
10
- * - WaveNet & Neural2 premium voices
11
- * - SSML support for advanced control
12
- * - Perfect for Persian, Arabic, Asian languages
13
- *
14
- * Pricing:
15
- * - Standard voices: $4 per 1M characters
16
- * - WaveNet/Neural2: $16 per 1M characters
17
- */
18
- class GoogleTTSAdapter {
19
- constructor(apiKey, voiceConfig) {
20
- this.apiKey = apiKey;
21
- this.voiceConfig = voiceConfig;
22
- }
23
- /**
24
- * Speech-to-text (not implemented - use GeminiVoiceAdapter)
25
- */
26
- async speechToText(audioBase64, config) {
27
- throw new Error('GoogleTTSAdapter does not support STT. Use GeminiVoiceAdapter for STT.');
28
- }
29
- /**
30
- * Text-to-speech using Google Cloud TTS
31
- *
32
- * Features:
33
- * - Multiple audio formats (LINEAR16, MP3, OGG)
34
- * - Pitch and speaking rate control
35
- * - SSML support
36
- * - Volume gain control
37
- *
38
- * @param text Text to convert to speech (or SSML)
39
- * @param config Optional TTS configuration
40
- * @returns Audio data as Uint8Array
41
- */
42
- async textToSpeech(text, config) {
43
- const ttsConfig = config || this.voiceConfig?.tts;
44
- const voiceId = ttsConfig?.voice || 'en-US-Standard-A';
45
- const languageCode = this.extractLanguageCode(voiceId);
46
- const startTime = Date.now();
47
- try {
48
- // Validate text
49
- if (!text || text.trim().length === 0) {
50
- throw new Error('Text input is empty');
51
- }
52
- // Validate voice ID format
53
- if (!this.isValidVoiceId(voiceId)) {
54
- console.warn(`[GoogleTTSAdapter] Invalid voice ID format: ${voiceId}. Using default.`);
55
- }
56
- // Build request payload
57
- const payload = {
58
- input: this.isSSML(text) ? { ssml: text } : { text },
59
- voice: {
60
- languageCode: languageCode,
61
- name: voiceId,
62
- // Optional: Add SSML gender hint for better selection
63
- ...(this.extractGender(voiceId) && { ssmlGender: this.extractGender(voiceId) })
64
- },
65
- audioConfig: {
66
- audioEncoding: 'LINEAR16', // PCM 16-bit (compatible with most systems)
67
- speakingRate: this.clamp(ttsConfig?.speakingRate || 1.0, 0.25, 4.0),
68
- pitch: this.clamp(ttsConfig?.pitch || 0.0, -20.0, 20.0),
69
- volumeGainDb: 0.0, // Default volume
70
- sampleRateHertz: 24000 // High quality
71
- }
72
- };
73
- const response = await fetch(`https://texttospeech.googleapis.com/v1/text:synthesize?key=${this.apiKey}`, {
74
- method: 'POST',
75
- headers: { 'Content-Type': 'application/json' },
76
- body: JSON.stringify(payload)
77
- });
78
- if (!response.ok) {
79
- const errorData = await response.json().catch(() => ({ error: { message: 'Unknown error' } }));
80
- const errorMessage = errorData.error?.message || `HTTP ${response.status}`;
81
- // Provide helpful error messages
82
- if (response.status === 400) {
83
- throw new Error(`Invalid request: ${errorMessage}. Check voice ID and language code.`);
84
- }
85
- else if (response.status === 403) {
86
- throw new Error(`API not enabled or invalid key: ${errorMessage}. Enable Cloud Text-to-Speech API.`);
87
- }
88
- else if (response.status === 429) {
89
- throw new Error(`Quota exceeded: ${errorMessage}. Check your Google Cloud quota.`);
90
- }
91
- else {
92
- throw new Error(`Google TTS API Error (${response.status}): ${errorMessage}`);
93
- }
94
- }
95
- const json = await response.json();
96
- const audioBase64 = json.audioContent;
97
- if (!audioBase64) {
98
- throw new Error('No audio data received from Google TTS');
99
- }
100
- const audioData = Uint8Array.from(Buffer.from(audioBase64, 'base64'));
101
- const duration = Date.now() - startTime;
102
- console.log(`[GoogleTTSAdapter] TTS successful: ${audioData.length} bytes, ${text.length} chars, ${duration}ms (voice: ${voiceId})`);
103
- return audioData;
104
- }
105
- catch (error) {
106
- const duration = Date.now() - startTime;
107
- console.error(`[GoogleTTSAdapter] TTS Error after ${duration}ms:`, error.message);
108
- throw new Error(`Google TTS failed: ${error.message}`);
109
- }
110
- }
111
- /**
112
- * Extract language code from voice ID
113
- * Examples: 'fa-IR-Standard-A' → 'fa-IR', 'ar-XA-Wavenet-B' → 'ar-XA'
114
- */
115
- extractLanguageCode(voiceId) {
116
- const parts = voiceId.split('-');
117
- if (parts.length >= 2) {
118
- return `${parts[0]}-${parts[1]}`;
119
- }
120
- console.warn(`[GoogleTTSAdapter] Could not extract language code from: ${voiceId}`);
121
- return 'en-US'; // Fallback
122
- }
123
- /**
124
- * Validate voice ID format (basic check)
125
- */
126
- isValidVoiceId(voiceId) {
127
- // Google voice IDs format: {lang}-{region}-{type}-{variant}
128
- // e.g., 'en-US-Standard-A', 'fa-IR-Wavenet-B'
129
- const pattern = /^[a-z]{2,3}-[A-Z]{2}-(Standard|Wavenet|Neural2|Studio|Journey|News|Polyglot)-[A-Za-z]$/;
130
- return pattern.test(voiceId);
131
- }
132
- /**
133
- * Check if text is SSML (Speech Synthesis Markup Language)
134
- */
135
- isSSML(text) {
136
- return text.trim().startsWith('<speak>') && text.trim().endsWith('</speak>');
137
- }
138
- /**
139
- * Extract gender hint from voice variant (A-D typically female, E+ typically male)
140
- * This is a heuristic and may not always be accurate
141
- */
142
- extractGender(voiceId) {
143
- const variant = voiceId.split('-').pop();
144
- if (!variant)
145
- return null;
146
- // Google's general pattern (not guaranteed):
147
- // A, B, C, D = Female
148
- // E, F, G, H = Male
149
- const femaleVariants = ['A', 'B', 'C', 'D'];
150
- const maleVariants = ['E', 'F', 'G', 'H'];
151
- if (femaleVariants.includes(variant))
152
- return 'FEMALE';
153
- if (maleVariants.includes(variant))
154
- return 'MALE';
155
- return null;
156
- }
157
- /**
158
- * Clamp value between min and max
159
- */
160
- clamp(value, min, max) {
161
- return Math.max(min, Math.min(max, value));
162
- }
163
- }
164
- exports.GoogleTTSAdapter = GoogleTTSAdapter;
165
- //# sourceMappingURL=GoogleTTSAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GoogleTTSAdapter.js","sourceRoot":"","sources":["../../../src/adapters/voice/GoogleTTSAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { IVoiceAdapter, VoiceConfig, AudioFormatMetadata } from '../../interfaces';
2
- /**
3
- * Google Voice Adapter
4
- * Uses Google services exclusively:
5
- * - Gemini API for STT (Speech-to-Text)
6
- * - Google Cloud Text-to-Speech API for TTS
7
- *
8
- * Outputs standard LINEAR16 PCM audio for perfect concatenation
9
- */
10
- export declare class GoogleVoiceAdapter implements IVoiceAdapter {
11
- private apiKey;
12
- private voiceConfig?;
13
- private ttsClient;
14
- constructor(apiKey: string, voiceConfig?: VoiceConfig);
15
- /**
16
- * Convert speech (audio) to text using Gemini's audio input capability
17
- */
18
- speechToText(audioBase64: string, config?: VoiceConfig['stt']): Promise<string>;
19
- /**
20
- * Convert text to speech using Google Cloud Text-to-Speech API
21
- * Supports both API key and service account authentication
22
- */
23
- textToSpeech(text: string, config?: VoiceConfig['tts']): Promise<Uint8Array>;
24
- /**
25
- * Declare the audio format produced by Google TTS
26
- */
27
- getTTSOutputFormat(): AudioFormatMetadata;
28
- /**
29
- * Declare the expected audio format for Gemini STT
30
- */
31
- getSTTInputFormat(): AudioFormatMetadata;
32
- }
33
- //# sourceMappingURL=GoogleVoiceAdapter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GoogleVoiceAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/GoogleVoiceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGnF;;;;;;;GAOG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACpD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,SAAS,CAAqB;gBAE1B,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAMrD;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDrF;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA0ElF;;OAEG;IACH,kBAAkB,IAAI,mBAAmB;IASzC;;OAEG;IACH,iBAAiB,IAAI,mBAAmB;CAQ3C"}