@gravity-platform/ingest 1.1.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 (326) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/Abyssale/node/executor.d.ts +12 -0
  3. package/dist/Abyssale/node/executor.d.ts.map +1 -0
  4. package/dist/Abyssale/node/executor.js +72 -0
  5. package/dist/Abyssale/node/executor.js.map +1 -0
  6. package/dist/Abyssale/node/index.d.ts +10 -0
  7. package/dist/Abyssale/node/index.d.ts.map +1 -0
  8. package/dist/Abyssale/node/index.js +90 -0
  9. package/dist/Abyssale/node/index.js.map +1 -0
  10. package/dist/Abyssale/service/abyssaleService.d.ts +45 -0
  11. package/dist/Abyssale/service/abyssaleService.d.ts.map +1 -0
  12. package/dist/Abyssale/service/abyssaleService.js +360 -0
  13. package/dist/Abyssale/service/abyssaleService.js.map +1 -0
  14. package/dist/Abyssale/util/types.d.ts +62 -0
  15. package/dist/Abyssale/util/types.d.ts.map +1 -0
  16. package/dist/Abyssale/util/types.js +6 -0
  17. package/dist/Abyssale/util/types.js.map +1 -0
  18. package/dist/AirtableInsert/node/executor.d.ts +7 -0
  19. package/dist/AirtableInsert/node/executor.d.ts.map +1 -0
  20. package/dist/AirtableInsert/node/executor.js +32 -0
  21. package/dist/AirtableInsert/node/executor.js.map +1 -0
  22. package/dist/AirtableInsert/node/index.d.ts +10 -0
  23. package/dist/AirtableInsert/node/index.d.ts.map +1 -0
  24. package/dist/AirtableInsert/node/index.js +98 -0
  25. package/dist/AirtableInsert/node/index.js.map +1 -0
  26. package/dist/AirtableInsert/service/airtableInsertService.d.ts +8 -0
  27. package/dist/AirtableInsert/service/airtableInsertService.d.ts.map +1 -0
  28. package/dist/AirtableInsert/service/airtableInsertService.js +99 -0
  29. package/dist/AirtableInsert/service/airtableInsertService.js.map +1 -0
  30. package/dist/AirtableInsert/util/types.d.ts +15 -0
  31. package/dist/AirtableInsert/util/types.d.ts.map +1 -0
  32. package/dist/AirtableInsert/util/types.js +3 -0
  33. package/dist/AirtableInsert/util/types.js.map +1 -0
  34. package/dist/ApifyResults/node/executor.d.ts +32 -0
  35. package/dist/ApifyResults/node/executor.d.ts.map +1 -0
  36. package/dist/ApifyResults/node/executor.js +204 -0
  37. package/dist/ApifyResults/node/executor.js.map +1 -0
  38. package/dist/ApifyResults/node/index.d.ts +10 -0
  39. package/dist/ApifyResults/node/index.d.ts.map +1 -0
  40. package/dist/ApifyResults/node/index.js +79 -0
  41. package/dist/ApifyResults/node/index.js.map +1 -0
  42. package/dist/ApifyResults/service/apifyService.d.ts +10 -0
  43. package/dist/ApifyResults/service/apifyService.d.ts.map +1 -0
  44. package/dist/ApifyResults/service/apifyService.js +85 -0
  45. package/dist/ApifyResults/service/apifyService.js.map +1 -0
  46. package/dist/ApifyResults/util/types.d.ts +93 -0
  47. package/dist/ApifyResults/util/types.d.ts.map +1 -0
  48. package/dist/ApifyResults/util/types.js +6 -0
  49. package/dist/ApifyResults/util/types.js.map +1 -0
  50. package/dist/ApifyStarter/node/executor.d.ts +12 -0
  51. package/dist/ApifyStarter/node/executor.d.ts.map +1 -0
  52. package/dist/ApifyStarter/node/executor.js +97 -0
  53. package/dist/ApifyStarter/node/executor.js.map +1 -0
  54. package/dist/ApifyStarter/node/index.d.ts +10 -0
  55. package/dist/ApifyStarter/node/index.d.ts.map +1 -0
  56. package/dist/ApifyStarter/node/index.js +87 -0
  57. package/dist/ApifyStarter/node/index.js.map +1 -0
  58. package/dist/ApifyStarter/service/apifyActorService.d.ts +11 -0
  59. package/dist/ApifyStarter/service/apifyActorService.d.ts.map +1 -0
  60. package/dist/ApifyStarter/service/apifyActorService.js +104 -0
  61. package/dist/ApifyStarter/service/apifyActorService.js.map +1 -0
  62. package/dist/ApifyStarter/util/types.d.ts +23 -0
  63. package/dist/ApifyStarter/util/types.d.ts.map +1 -0
  64. package/dist/ApifyStarter/util/types.js +6 -0
  65. package/dist/ApifyStarter/util/types.js.map +1 -0
  66. package/dist/ApifyStarter/util/validation.d.ts +9 -0
  67. package/dist/ApifyStarter/util/validation.d.ts.map +1 -0
  68. package/dist/ApifyStarter/util/validation.js +59 -0
  69. package/dist/ApifyStarter/util/validation.js.map +1 -0
  70. package/dist/ApolloCompany/node/executor.d.ts +8 -0
  71. package/dist/ApolloCompany/node/executor.d.ts.map +1 -0
  72. package/dist/ApolloCompany/node/executor.js +38 -0
  73. package/dist/ApolloCompany/node/executor.js.map +1 -0
  74. package/dist/ApolloCompany/node/index.d.ts +10 -0
  75. package/dist/ApolloCompany/node/index.d.ts.map +1 -0
  76. package/dist/ApolloCompany/node/index.js +120 -0
  77. package/dist/ApolloCompany/node/index.js.map +1 -0
  78. package/dist/ApolloCompany/service/apolloSearchCompanyService.d.ts +7 -0
  79. package/dist/ApolloCompany/service/apolloSearchCompanyService.d.ts.map +1 -0
  80. package/dist/ApolloCompany/service/apolloSearchCompanyService.js +124 -0
  81. package/dist/ApolloCompany/service/apolloSearchCompanyService.js.map +1 -0
  82. package/dist/ApolloCompany/util/types.d.ts +46 -0
  83. package/dist/ApolloCompany/util/types.d.ts.map +1 -0
  84. package/dist/ApolloCompany/util/types.js +6 -0
  85. package/dist/ApolloCompany/util/types.js.map +1 -0
  86. package/dist/ApolloCompanyEnrich/node/executor.d.ts +8 -0
  87. package/dist/ApolloCompanyEnrich/node/executor.d.ts.map +1 -0
  88. package/dist/ApolloCompanyEnrich/node/executor.js +25 -0
  89. package/dist/ApolloCompanyEnrich/node/executor.js.map +1 -0
  90. package/dist/ApolloCompanyEnrich/node/index.d.ts +10 -0
  91. package/dist/ApolloCompanyEnrich/node/index.d.ts.map +1 -0
  92. package/dist/ApolloCompanyEnrich/node/index.js +67 -0
  93. package/dist/ApolloCompanyEnrich/node/index.js.map +1 -0
  94. package/dist/ApolloCompanyEnrich/service/apolloCompanyEnrichService.d.ts +9 -0
  95. package/dist/ApolloCompanyEnrich/service/apolloCompanyEnrichService.d.ts.map +1 -0
  96. package/dist/ApolloCompanyEnrich/service/apolloCompanyEnrichService.js +40 -0
  97. package/dist/ApolloCompanyEnrich/service/apolloCompanyEnrichService.js.map +1 -0
  98. package/dist/ApolloCompanyEnrich/util/types.d.ts +13 -0
  99. package/dist/ApolloCompanyEnrich/util/types.d.ts.map +1 -0
  100. package/dist/ApolloCompanyEnrich/util/types.js +6 -0
  101. package/dist/ApolloCompanyEnrich/util/types.js.map +1 -0
  102. package/dist/ApolloPeople/node/executor.d.ts +8 -0
  103. package/dist/ApolloPeople/node/executor.d.ts.map +1 -0
  104. package/dist/ApolloPeople/node/executor.js +41 -0
  105. package/dist/ApolloPeople/node/executor.js.map +1 -0
  106. package/dist/ApolloPeople/node/index.d.ts +10 -0
  107. package/dist/ApolloPeople/node/index.d.ts.map +1 -0
  108. package/dist/ApolloPeople/node/index.js +128 -0
  109. package/dist/ApolloPeople/node/index.js.map +1 -0
  110. package/dist/ApolloPeople/service/apolloSearchService.d.ts +6 -0
  111. package/dist/ApolloPeople/service/apolloSearchService.d.ts.map +1 -0
  112. package/dist/ApolloPeople/service/apolloSearchService.js +127 -0
  113. package/dist/ApolloPeople/service/apolloSearchService.js.map +1 -0
  114. package/dist/ApolloPeople/util/types.d.ts +70 -0
  115. package/dist/ApolloPeople/util/types.d.ts.map +1 -0
  116. package/dist/ApolloPeople/util/types.js +6 -0
  117. package/dist/ApolloPeople/util/types.js.map +1 -0
  118. package/dist/ApolloPeopleEnrich/node/executor.d.ts +8 -0
  119. package/dist/ApolloPeopleEnrich/node/executor.d.ts.map +1 -0
  120. package/dist/ApolloPeopleEnrich/node/executor.js +25 -0
  121. package/dist/ApolloPeopleEnrich/node/executor.js.map +1 -0
  122. package/dist/ApolloPeopleEnrich/node/index.d.ts +10 -0
  123. package/dist/ApolloPeopleEnrich/node/index.d.ts.map +1 -0
  124. package/dist/ApolloPeopleEnrich/node/index.js +116 -0
  125. package/dist/ApolloPeopleEnrich/node/index.js.map +1 -0
  126. package/dist/ApolloPeopleEnrich/service/apolloPeopleEnrichService.d.ts +10 -0
  127. package/dist/ApolloPeopleEnrich/service/apolloPeopleEnrichService.d.ts.map +1 -0
  128. package/dist/ApolloPeopleEnrich/service/apolloPeopleEnrichService.js +54 -0
  129. package/dist/ApolloPeopleEnrich/service/apolloPeopleEnrichService.js.map +1 -0
  130. package/dist/ApolloPeopleEnrich/util/types.d.ts +20 -0
  131. package/dist/ApolloPeopleEnrich/util/types.d.ts.map +1 -0
  132. package/dist/ApolloPeopleEnrich/util/types.js +6 -0
  133. package/dist/ApolloPeopleEnrich/util/types.js.map +1 -0
  134. package/dist/ApolloSearch/node/executor.d.ts +9 -0
  135. package/dist/ApolloSearch/node/executor.d.ts.map +1 -0
  136. package/dist/ApolloSearch/node/executor.js +51 -0
  137. package/dist/ApolloSearch/node/executor.js.map +1 -0
  138. package/dist/ApolloSearch/node/index.d.ts +10 -0
  139. package/dist/ApolloSearch/node/index.d.ts.map +1 -0
  140. package/dist/ApolloSearch/node/index.js +128 -0
  141. package/dist/ApolloSearch/node/index.js.map +1 -0
  142. package/dist/ApolloSearch/service/apolloSearchService.d.ts +6 -0
  143. package/dist/ApolloSearch/service/apolloSearchService.d.ts.map +1 -0
  144. package/dist/ApolloSearch/service/apolloSearchService.js +127 -0
  145. package/dist/ApolloSearch/service/apolloSearchService.js.map +1 -0
  146. package/dist/ApolloSearch/util/types.d.ts +70 -0
  147. package/dist/ApolloSearch/util/types.d.ts.map +1 -0
  148. package/dist/ApolloSearch/util/types.js +6 -0
  149. package/dist/ApolloSearch/util/types.js.map +1 -0
  150. package/dist/ApolloSearchCompany/node/executor.d.ts +9 -0
  151. package/dist/ApolloSearchCompany/node/executor.d.ts.map +1 -0
  152. package/dist/ApolloSearchCompany/node/executor.js +49 -0
  153. package/dist/ApolloSearchCompany/node/executor.js.map +1 -0
  154. package/dist/ApolloSearchCompany/node/index.d.ts +10 -0
  155. package/dist/ApolloSearchCompany/node/index.d.ts.map +1 -0
  156. package/dist/ApolloSearchCompany/node/index.js +128 -0
  157. package/dist/ApolloSearchCompany/node/index.js.map +1 -0
  158. package/dist/ApolloSearchCompany/service/apolloSearchCompanyService.d.ts +7 -0
  159. package/dist/ApolloSearchCompany/service/apolloSearchCompanyService.d.ts.map +1 -0
  160. package/dist/ApolloSearchCompany/service/apolloSearchCompanyService.js +98 -0
  161. package/dist/ApolloSearchCompany/service/apolloSearchCompanyService.js.map +1 -0
  162. package/dist/ApolloSearchCompany/util/types.d.ts +48 -0
  163. package/dist/ApolloSearchCompany/util/types.d.ts.map +1 -0
  164. package/dist/ApolloSearchCompany/util/types.js +6 -0
  165. package/dist/ApolloSearchCompany/util/types.js.map +1 -0
  166. package/dist/Document/node/executor.d.ts +22 -0
  167. package/dist/Document/node/executor.d.ts.map +1 -0
  168. package/dist/Document/node/executor.js +85 -0
  169. package/dist/Document/node/executor.js.map +1 -0
  170. package/dist/Document/node/index.d.ts +10 -0
  171. package/dist/Document/node/index.d.ts.map +1 -0
  172. package/dist/Document/node/index.js +58 -0
  173. package/dist/Document/node/index.js.map +1 -0
  174. package/dist/Document/service/documentCache.d.ts +11 -0
  175. package/dist/Document/service/documentCache.d.ts.map +1 -0
  176. package/dist/Document/service/documentCache.js +166 -0
  177. package/dist/Document/service/documentCache.js.map +1 -0
  178. package/dist/Document/util/types.d.ts +70 -0
  179. package/dist/Document/util/types.d.ts.map +1 -0
  180. package/dist/Document/util/types.js +6 -0
  181. package/dist/Document/util/types.js.map +1 -0
  182. package/dist/DocumentParser/node/executor.d.ts +12 -0
  183. package/dist/DocumentParser/node/executor.d.ts.map +1 -0
  184. package/dist/DocumentParser/node/executor.js +200 -0
  185. package/dist/DocumentParser/node/executor.js.map +1 -0
  186. package/dist/DocumentParser/node/index.d.ts +10 -0
  187. package/dist/DocumentParser/node/index.d.ts.map +1 -0
  188. package/dist/DocumentParser/node/index.js +66 -0
  189. package/dist/DocumentParser/node/index.js.map +1 -0
  190. package/dist/DocumentParser/service/docxParser.d.ts +12 -0
  191. package/dist/DocumentParser/service/docxParser.d.ts.map +1 -0
  192. package/dist/DocumentParser/service/docxParser.js +27 -0
  193. package/dist/DocumentParser/service/docxParser.js.map +1 -0
  194. package/dist/DocumentParser/service/fileTypeDetector.d.ts +19 -0
  195. package/dist/DocumentParser/service/fileTypeDetector.d.ts.map +1 -0
  196. package/dist/DocumentParser/service/fileTypeDetector.js +75 -0
  197. package/dist/DocumentParser/service/fileTypeDetector.js.map +1 -0
  198. package/dist/DocumentParser/service/index.d.ts +5 -0
  199. package/dist/DocumentParser/service/index.d.ts.map +1 -0
  200. package/dist/DocumentParser/service/index.js +14 -0
  201. package/dist/DocumentParser/service/index.js.map +1 -0
  202. package/dist/DocumentParser/service/pdfParser.d.ts +16 -0
  203. package/dist/DocumentParser/service/pdfParser.d.ts.map +1 -0
  204. package/dist/DocumentParser/service/pdfParser.js +30 -0
  205. package/dist/DocumentParser/service/pdfParser.js.map +1 -0
  206. package/dist/DocumentParser/service/txtParser.d.ts +11 -0
  207. package/dist/DocumentParser/service/txtParser.d.ts.map +1 -0
  208. package/dist/DocumentParser/service/txtParser.js +35 -0
  209. package/dist/DocumentParser/service/txtParser.js.map +1 -0
  210. package/dist/DocumentParser/util/hashUtils.d.ts +17 -0
  211. package/dist/DocumentParser/util/hashUtils.d.ts.map +1 -0
  212. package/dist/DocumentParser/util/hashUtils.js +34 -0
  213. package/dist/DocumentParser/util/hashUtils.js.map +1 -0
  214. package/dist/DocumentParser/util/types.d.ts +43 -0
  215. package/dist/DocumentParser/util/types.d.ts.map +1 -0
  216. package/dist/DocumentParser/util/types.js +6 -0
  217. package/dist/DocumentParser/util/types.js.map +1 -0
  218. package/dist/ElevenLabs/node/executor.d.ts +12 -0
  219. package/dist/ElevenLabs/node/executor.d.ts.map +1 -0
  220. package/dist/ElevenLabs/node/executor.js +65 -0
  221. package/dist/ElevenLabs/node/executor.js.map +1 -0
  222. package/dist/ElevenLabs/node/index.d.ts +10 -0
  223. package/dist/ElevenLabs/node/index.d.ts.map +1 -0
  224. package/dist/ElevenLabs/node/index.js +92 -0
  225. package/dist/ElevenLabs/node/index.js.map +1 -0
  226. package/dist/ElevenLabs/service/elevenlabsService.d.ts +27 -0
  227. package/dist/ElevenLabs/service/elevenlabsService.d.ts.map +1 -0
  228. package/dist/ElevenLabs/service/elevenlabsService.js +278 -0
  229. package/dist/ElevenLabs/service/elevenlabsService.js.map +1 -0
  230. package/dist/ElevenLabs/util/types.d.ts +43 -0
  231. package/dist/ElevenLabs/util/types.d.ts.map +1 -0
  232. package/dist/ElevenLabs/util/types.js +7 -0
  233. package/dist/ElevenLabs/util/types.js.map +1 -0
  234. package/dist/GoogleSheet/node/executor.d.ts +21 -0
  235. package/dist/GoogleSheet/node/executor.d.ts.map +1 -0
  236. package/dist/GoogleSheet/node/executor.js +156 -0
  237. package/dist/GoogleSheet/node/executor.js.map +1 -0
  238. package/dist/GoogleSheet/node/index.d.ts +10 -0
  239. package/dist/GoogleSheet/node/index.d.ts.map +1 -0
  240. package/dist/GoogleSheet/node/index.js +90 -0
  241. package/dist/GoogleSheet/node/index.js.map +1 -0
  242. package/dist/GoogleSheet/service/googleSheetsService.d.ts +10 -0
  243. package/dist/GoogleSheet/service/googleSheetsService.d.ts.map +1 -0
  244. package/dist/GoogleSheet/service/googleSheetsService.js +44 -0
  245. package/dist/GoogleSheet/service/googleSheetsService.js.map +1 -0
  246. package/dist/GoogleSheet/util/types.d.ts +39 -0
  247. package/dist/GoogleSheet/util/types.d.ts.map +1 -0
  248. package/dist/GoogleSheet/util/types.js +6 -0
  249. package/dist/GoogleSheet/util/types.js.map +1 -0
  250. package/dist/Hyperbrowser/node/executor.d.ts +12 -0
  251. package/dist/Hyperbrowser/node/executor.d.ts.map +1 -0
  252. package/dist/Hyperbrowser/node/executor.js +67 -0
  253. package/dist/Hyperbrowser/node/executor.js.map +1 -0
  254. package/dist/Hyperbrowser/node/index.d.ts +10 -0
  255. package/dist/Hyperbrowser/node/index.d.ts.map +1 -0
  256. package/dist/Hyperbrowser/node/index.js +93 -0
  257. package/dist/Hyperbrowser/node/index.js.map +1 -0
  258. package/dist/Hyperbrowser/service/hyperbrowserService.d.ts +38 -0
  259. package/dist/Hyperbrowser/service/hyperbrowserService.d.ts.map +1 -0
  260. package/dist/Hyperbrowser/service/hyperbrowserService.js +108 -0
  261. package/dist/Hyperbrowser/service/hyperbrowserService.js.map +1 -0
  262. package/dist/Hyperbrowser/util/types.d.ts +44 -0
  263. package/dist/Hyperbrowser/util/types.d.ts.map +1 -0
  264. package/dist/Hyperbrowser/util/types.js +6 -0
  265. package/dist/Hyperbrowser/util/types.js.map +1 -0
  266. package/dist/PlaidTransactions/node/executor.d.ts +10 -0
  267. package/dist/PlaidTransactions/node/executor.d.ts.map +1 -0
  268. package/dist/PlaidTransactions/node/executor.js +142 -0
  269. package/dist/PlaidTransactions/node/executor.js.map +1 -0
  270. package/dist/PlaidTransactions/node/index.d.ts +10 -0
  271. package/dist/PlaidTransactions/node/index.d.ts.map +1 -0
  272. package/dist/PlaidTransactions/node/index.js +120 -0
  273. package/dist/PlaidTransactions/node/index.js.map +1 -0
  274. package/dist/PlaidTransactions/service/plaidService.d.ts +12 -0
  275. package/dist/PlaidTransactions/service/plaidService.d.ts.map +1 -0
  276. package/dist/PlaidTransactions/service/plaidService.js +179 -0
  277. package/dist/PlaidTransactions/service/plaidService.js.map +1 -0
  278. package/dist/PlaidTransactions/util/types.d.ts +90 -0
  279. package/dist/PlaidTransactions/util/types.d.ts.map +1 -0
  280. package/dist/PlaidTransactions/util/types.js +6 -0
  281. package/dist/PlaidTransactions/util/types.js.map +1 -0
  282. package/dist/SearchWeb/node/executor.d.ts +12 -0
  283. package/dist/SearchWeb/node/executor.d.ts.map +1 -0
  284. package/dist/SearchWeb/node/executor.js +56 -0
  285. package/dist/SearchWeb/node/executor.js.map +1 -0
  286. package/dist/SearchWeb/node/index.d.ts +10 -0
  287. package/dist/SearchWeb/node/index.d.ts.map +1 -0
  288. package/dist/SearchWeb/node/index.js +114 -0
  289. package/dist/SearchWeb/node/index.js.map +1 -0
  290. package/dist/SearchWeb/service/searchWebService.d.ts +23 -0
  291. package/dist/SearchWeb/service/searchWebService.d.ts.map +1 -0
  292. package/dist/SearchWeb/service/searchWebService.js +146 -0
  293. package/dist/SearchWeb/service/searchWebService.js.map +1 -0
  294. package/dist/SearchWeb/util/types.d.ts +50 -0
  295. package/dist/SearchWeb/util/types.d.ts.map +1 -0
  296. package/dist/SearchWeb/util/types.js +6 -0
  297. package/dist/SearchWeb/util/types.js.map +1 -0
  298. package/dist/SpatialIngest/node/executor.d.ts +8 -0
  299. package/dist/SpatialIngest/node/executor.d.ts.map +1 -0
  300. package/dist/SpatialIngest/node/executor.js +58 -0
  301. package/dist/SpatialIngest/node/executor.js.map +1 -0
  302. package/dist/SpatialIngest/node/index.d.ts +10 -0
  303. package/dist/SpatialIngest/node/index.d.ts.map +1 -0
  304. package/dist/SpatialIngest/node/index.js +99 -0
  305. package/dist/SpatialIngest/node/index.js.map +1 -0
  306. package/dist/SpatialIngest/service/spatialIngestService.d.ts +29 -0
  307. package/dist/SpatialIngest/service/spatialIngestService.d.ts.map +1 -0
  308. package/dist/SpatialIngest/service/spatialIngestService.js +306 -0
  309. package/dist/SpatialIngest/service/spatialIngestService.js.map +1 -0
  310. package/dist/SpatialIngest/util/types.d.ts +26 -0
  311. package/dist/SpatialIngest/util/types.d.ts.map +1 -0
  312. package/dist/SpatialIngest/util/types.js +3 -0
  313. package/dist/SpatialIngest/util/types.js.map +1 -0
  314. package/dist/credentials/index.d.ts +141 -0
  315. package/dist/credentials/index.d.ts.map +1 -0
  316. package/dist/credentials/index.js +180 -0
  317. package/dist/credentials/index.js.map +1 -0
  318. package/dist/index.d.ts +3 -0
  319. package/dist/index.d.ts.map +1 -0
  320. package/dist/index.js +104 -0
  321. package/dist/index.js.map +1 -0
  322. package/dist/shared/platform.d.ts +11 -0
  323. package/dist/shared/platform.d.ts.map +1 -0
  324. package/dist/shared/platform.js +21 -0
  325. package/dist/shared/platform.js.map +1 -0
  326. package/package.json +53 -0
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createContentHash = createContentHash;
4
+ exports.createContentHashFromFields = createContentHashFromFields;
5
+ const crypto_1 = require("crypto");
6
+ /**
7
+ * Creates a content hash for a parsed document result object
8
+ * Excludes fields that can change independently of content (universalId, downloadUrl)
9
+ * @param result - The parsed document result object
10
+ * @returns Short hash (12 characters) representing the content
11
+ */
12
+ function createContentHash(result) {
13
+ // Exclude fields that can change independently of actual content
14
+ const { universalId, downloadUrl, ...contentFields } = result;
15
+ // Sort keys for consistent hashing
16
+ const resultString = JSON.stringify(contentFields, Object.keys(contentFields).sort());
17
+ // Create hash and return short version (similar to git short hash)
18
+ const fullHash = (0, crypto_1.createHash)('sha256').update(resultString).digest('hex');
19
+ return fullHash.substring(0, 12);
20
+ }
21
+ /**
22
+ * Creates a content hash from specific content fields
23
+ * More targeted approach if you want to hash only core content
24
+ * @param text - Document text content
25
+ * @param metadata - Document metadata
26
+ * @param pageCount - Number of pages (optional)
27
+ * @returns Short hash (12 characters) representing the content
28
+ */
29
+ function createContentHashFromFields(text, metadata, pageCount) {
30
+ const contentIdentifier = `${text}|${pageCount || 0}|${JSON.stringify(metadata, Object.keys(metadata).sort())}`;
31
+ const fullHash = (0, crypto_1.createHash)('sha256').update(contentIdentifier).digest('hex');
32
+ return fullHash.substring(0, 12);
33
+ }
34
+ //# sourceMappingURL=hashUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hashUtils.js","sourceRoot":"","sources":["../../../src/DocumentParser/util/hashUtils.ts"],"names":[],"mappings":";;AAQA,8CAUC;AAUD,kEAQC;AApCD,mCAAoC;AAEpC;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAW;IAC3C,iEAAiE;IACjE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,CAAC;IAE9D,mCAAmC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtF,mEAAmE;IACnE,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,2BAA2B,CACzC,IAAY,EACZ,QAAa,EACb,SAAkB;IAElB,MAAM,iBAAiB,GAAG,GAAG,IAAI,IAAI,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;IAChH,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9E,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Type definitions for DocumentParser node
3
+ */
4
+ export interface DocumentParserConfig {
5
+ parserType?: 'auto' | 'pdf' | 'docx' | 'txt';
6
+ maxFileSizeMB?: number;
7
+ file: {
8
+ key: string;
9
+ content: Buffer | string;
10
+ size?: number;
11
+ bucket?: string;
12
+ universalId?: string;
13
+ downloadUrl?: string;
14
+ };
15
+ }
16
+ export interface DocumentParserInput {
17
+ }
18
+ export interface DocumentParserOutput {
19
+ fileKey: string;
20
+ text: string;
21
+ pageCount?: number;
22
+ metadata?: {
23
+ title?: string;
24
+ author?: string;
25
+ subject?: string;
26
+ keywords?: string;
27
+ creationDate?: string;
28
+ modificationDate?: string;
29
+ [key: string]: any;
30
+ };
31
+ fileType: 'pdf' | 'docx' | 'txt';
32
+ fileSize?: number;
33
+ bucket?: string;
34
+ universalId?: string;
35
+ downloadUrl?: string;
36
+ contentId?: string;
37
+ }
38
+ export interface DocumentParserExecutorOutput {
39
+ __outputs: {
40
+ output: DocumentParserOutput;
41
+ };
42
+ }
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/DocumentParser/util/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE;QACT,MAAM,EAAE,oBAAoB,CAAC;KAC9B,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for DocumentParser node
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/DocumentParser/util/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,12 @@
1
+ import { type NodeExecutionContext } from "@gravity-platform/plugin-base";
2
+ import { ElevenLabsConfig, ElevenLabsOutput } from "../util/types";
3
+ import { PromiseNode } from "../../shared/platform";
4
+ export default class ElevenLabsExecutor extends PromiseNode<ElevenLabsConfig> {
5
+ constructor();
6
+ protected executeNode(inputs: Record<string, any>, config: ElevenLabsConfig, context: NodeExecutionContext): Promise<ElevenLabsOutput>;
7
+ /**
8
+ * Build credential context from execution context
9
+ */
10
+ private buildCredentialContext;
11
+ }
12
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/ElevenLabs/node/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,WAAW,CAAC,gBAAgB,CAAC;;cAK3D,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;IA8C5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAS/B"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const platform_1 = require("../../shared/platform");
4
+ const elevenlabsService_1 = require("../service/elevenlabsService");
5
+ const NODE_TYPE = "ElevenLabs";
6
+ class ElevenLabsExecutor extends platform_1.PromiseNode {
7
+ constructor() {
8
+ super(NODE_TYPE);
9
+ }
10
+ async executeNode(inputs, config, context) {
11
+ const logger = (0, platform_1.createLogger)("ElevenLabs");
12
+ logger.info("Starting ElevenLabs TTS generation", {
13
+ nodeId: context.nodeId,
14
+ textLength: config.text?.length || 0,
15
+ });
16
+ // Build credential context for service
17
+ const credentialContext = this.buildCredentialContext(context);
18
+ try {
19
+ // Call ElevenLabs API via service
20
+ const result = await (0, elevenlabsService_1.generateTTS)(config, credentialContext);
21
+ logger.info("ElevenLabs TTS completed", {
22
+ format: result.format,
23
+ durationSeconds: result.durationSeconds,
24
+ characterCount: result.characterCount,
25
+ isDialogue: result.isDialogue,
26
+ });
27
+ // Return with __outputs wrapper
28
+ return {
29
+ __outputs: {
30
+ audio: {
31
+ data: result.audioBase64,
32
+ mimeType: result.contentType,
33
+ fileName: `audio_${Date.now()}.mp3`,
34
+ },
35
+ metadata: {
36
+ format: result.format,
37
+ durationSeconds: result.durationSeconds,
38
+ characterCount: result.characterCount,
39
+ isDialogue: result.isDialogue,
40
+ },
41
+ },
42
+ };
43
+ }
44
+ catch (error) {
45
+ logger.error("ElevenLabs TTS failed", {
46
+ error: error instanceof Error ? error.message : "Unknown error",
47
+ });
48
+ throw error;
49
+ }
50
+ }
51
+ /**
52
+ * Build credential context from execution context
53
+ */
54
+ buildCredentialContext(context) {
55
+ return {
56
+ credentials: context.credentials || {},
57
+ nodeType: NODE_TYPE,
58
+ workflowId: context.workflow?.id || "",
59
+ executionId: context.executionId || "",
60
+ nodeId: context.nodeId || "",
61
+ };
62
+ }
63
+ }
64
+ exports.default = ElevenLabsExecutor;
65
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/ElevenLabs/node/executor.ts"],"names":[],"mappings":";;AAEA,oDAAkE;AAClE,oEAA2D;AAE3D,MAAM,SAAS,GAAG,YAAY,CAAC;AAE/B,MAAqB,kBAAmB,SAAQ,sBAA6B;IAC3E;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,MAA2B,EAC3B,MAAwB,EACxB,OAA6B;QAE7B,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,YAAY,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;YAChD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;SACrC,CAAC,CAAC;QAEH,uCAAuC;QACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE/D,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,MAAM,GAAG,MAAM,IAAA,+BAAW,EAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAE5D,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACtC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;YAEH,gCAAgC;YAChC,OAAO;gBACL,SAAS,EAAE;oBACT,KAAK,EAAE;wBACL,IAAI,EAAE,MAAM,CAAC,WAAW;wBACxB,QAAQ,EAAE,MAAM,CAAC,WAAW;wBAC5B,QAAQ,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,MAAM;qBACpC;oBACD,QAAQ,EAAE;wBACR,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,eAAe,EAAE,MAAM,CAAC,eAAe;wBACvC,cAAc,EAAE,MAAM,CAAC,cAAc;wBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;qBAC9B;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACpC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,OAA6B;QAC1D,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;YACtC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;CACF;AAnED,qCAmEC"}
@@ -0,0 +1,10 @@
1
+ import { type EnhancedNodeDefinition } from "@gravity-platform/plugin-base";
2
+ import ElevenLabsExecutor from "./executor";
3
+ export declare const NODE_TYPE = "ElevenLabs";
4
+ declare function createNodeDefinition(): EnhancedNodeDefinition;
5
+ export declare const ElevenLabsNode: {
6
+ definition: any;
7
+ executor: typeof ElevenLabsExecutor;
8
+ };
9
+ export { createNodeDefinition };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ElevenLabs/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,kBAAkB,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,SAAS,eAAe,CAAC;AAEtC,iBAAS,oBAAoB,IAAI,sBAAsB,CA6EtD;AAID,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,92 @@
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.ElevenLabsNode = exports.NODE_TYPE = void 0;
7
+ exports.createNodeDefinition = createNodeDefinition;
8
+ const plugin_base_1 = require("@gravity-platform/plugin-base");
9
+ const executor_1 = __importDefault(require("./executor"));
10
+ exports.NODE_TYPE = "ElevenLabs";
11
+ function createNodeDefinition() {
12
+ return {
13
+ type: exports.NODE_TYPE,
14
+ name: "ElevenLabs TTS",
15
+ description: "Convert text to speech using ElevenLabs v3.",
16
+ category: "Ingest",
17
+ logoUrl: "https://res.cloudinary.com/sonik/image/upload/v1768540562/gravity/icons/elevanlabs.jpg",
18
+ color: "#FF69B4",
19
+ inputs: [
20
+ {
21
+ name: "input",
22
+ type: plugin_base_1.NodeInputType.STRING,
23
+ required: true,
24
+ description: "Text or dialogue script with [DETECTIVE]: and [SUSPECT]: labels",
25
+ },
26
+ ],
27
+ outputs: [
28
+ {
29
+ name: "audio",
30
+ type: plugin_base_1.NodeInputType.OBJECT,
31
+ description: "Generated audio with data (base64), mimeType, and fileName",
32
+ },
33
+ {
34
+ name: "metadata",
35
+ type: plugin_base_1.NodeInputType.OBJECT,
36
+ description: "Audio metadata including format, durationSeconds, characterCount, isDialogue",
37
+ },
38
+ ],
39
+ configSchema: {
40
+ type: "object",
41
+ properties: {
42
+ text: {
43
+ type: "string",
44
+ title: "Text / Script",
45
+ description: "Text to convert. For dialogue use [DETECTIVE]: and [SUSPECT]: labels. Use [laughs], [sighs] for v3 audio tags.",
46
+ default: "{{{input}}}",
47
+ "ui:field": "template",
48
+ },
49
+ characterId: {
50
+ type: "string",
51
+ title: "Character ID",
52
+ description: "Unique ID for the suspect (e.g., 'sus_claire'). Combined with Character Gender to deterministically pick a voice.",
53
+ default: "",
54
+ "ui:field": "template",
55
+ },
56
+ characterGender: {
57
+ type: "string",
58
+ title: "Character Gender",
59
+ description: "Gender of the suspect/character. Routes to correct voice pool.",
60
+ enum: ["male", "female"],
61
+ enumNames: ["Male", "Female"],
62
+ default: "male",
63
+ "ui:field": "template",
64
+ },
65
+ stability: {
66
+ type: "number",
67
+ title: "Stability",
68
+ description: "0.0=Creative, 0.5=Natural, 1.0=Robust (only these 3 values allowed)",
69
+ default: 0.0,
70
+ enum: [0.0, 0.5, 1.0],
71
+ },
72
+ },
73
+ required: ["text"],
74
+ },
75
+ credentials: [
76
+ {
77
+ name: "elevenlabsCredential",
78
+ type: "elevenlabsCredential",
79
+ required: true,
80
+ },
81
+ ],
82
+ capabilities: {
83
+ isTrigger: false,
84
+ },
85
+ };
86
+ }
87
+ const definition = createNodeDefinition();
88
+ exports.ElevenLabsNode = {
89
+ definition,
90
+ executor: executor_1.default,
91
+ };
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ElevenLabs/node/index.ts"],"names":[],"mappings":";;;;;;AA2FS,oDAAoB;AA3F7B,+DAA2F;AAC3F,0DAA4C;AAE/B,QAAA,SAAS,GAAG,YAAY,CAAC;AAEtC,SAAS,oBAAoB;IAC3B,OAAO;QACL,IAAI,EAAE,iBAAS;QACf,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,6CAA6C;QAC1D,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,wFAAwF;QACjG,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iEAAiE;aAC/E;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,4DAA4D;aAC1E;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,8EAA8E;aAC5F;SACF;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,eAAe;oBACtB,WAAW,EACT,gHAAgH;oBAClH,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE,UAAU;iBACvB;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,cAAc;oBACrB,WAAW,EACT,mHAAmH;oBACrH,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,kBAAkB;oBACzB,WAAW,EAAE,gEAAgE;oBAC7E,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;oBACxB,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;oBAC7B,OAAO,EAAE,MAAM;oBACf,UAAU,EAAE,UAAU;iBACvB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,WAAW;oBAClB,WAAW,EAAE,qEAAqE;oBAClF,OAAO,EAAE,GAAG;oBACZ,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;iBACtB;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,IAAI;aACf;SACF;QACD,YAAY,EAAE;YACZ,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;AAE7B,QAAA,cAAc,GAAG;IAC5B,UAAU;IACV,QAAQ,EAAE,kBAAkB;CAC7B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ElevenLabs TTS Service
3
+ * Handles text-to-speech conversion with support for multi-speaker dialogue
4
+ * Uses Eleven v3 model with Text to Dialogue API for expressive audio
5
+ */
6
+ import { ElevenLabsConfig, DialogueSegment } from "../util/types";
7
+ /**
8
+ * Parse dialogue script into segments by speaker
9
+ * Expects format: [DETECTIVE]: text or [SUSPECT]: text
10
+ */
11
+ export declare function parseDialogueScript(script: string): DialogueSegment[];
12
+ /**
13
+ * Check if text is a dialogue script (has speaker labels)
14
+ */
15
+ export declare function isDialogueScript(text: string): boolean;
16
+ /**
17
+ * Generate TTS audio from text or dialogue script using Eleven v3
18
+ */
19
+ export declare function generateTTS(config: ElevenLabsConfig, context: any): Promise<{
20
+ audioBase64: string;
21
+ format: string;
22
+ durationSeconds: number;
23
+ contentType: string;
24
+ characterCount: number;
25
+ isDialogue: boolean;
26
+ }>;
27
+ //# sourceMappingURL=elevenlabsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabsService.d.ts","sourceRoot":"","sources":["../../../src/ElevenLabs/service/elevenlabsService.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA6ElE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CA+CrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AA0HD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC,CA0DD"}
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ /**
3
+ * ElevenLabs TTS Service
4
+ * Handles text-to-speech conversion with support for multi-speaker dialogue
5
+ * Uses Eleven v3 model with Text to Dialogue API for expressive audio
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.parseDialogueScript = parseDialogueScript;
9
+ exports.isDialogueScript = isDialogueScript;
10
+ exports.generateTTS = generateTTS;
11
+ const platform_1 = require("../../shared/platform");
12
+ const ELEVENLABS_API_BASE = "https://api.elevenlabs.io/v1";
13
+ const logger = (0, platform_1.createLogger)("ElevenLabs");
14
+ /**
15
+ * Get ElevenLabs API key from credentials
16
+ */
17
+ async function getApiKey(context) {
18
+ const credentials = await (0, platform_1.getNodeCredentials)(context, "elevenlabsCredential");
19
+ const apiKey = credentials?.apiKey;
20
+ if (!apiKey) {
21
+ throw new Error("ElevenLabs API key not found in credentials");
22
+ }
23
+ return apiKey;
24
+ }
25
+ // Premade voices - built into every ElevenLabs account, no creation needed, no limits
26
+ const DETECTIVE_VOICE_ID = "pFZP5JQG7iQjIQuC4Bku"; // Female detective - always the interviewer, never used for suspects
27
+ const PREMADE_MALE_VOICES = [
28
+ "onwK4e9ZLuTAKqWW03F9", // Daniel - deep, authoritative
29
+ "N2lVS1w4EtoT3dr4eOWO", // Liam
30
+ "IKne3meq5aSn9XLyUdCD", // Charlie
31
+ "TX3LPaxmHKxFdv7VOQHJ", // Liam (alt)
32
+ "JBFqnCBsd6RMkjVDRZzb", // George
33
+ "TxGEqnHWrfWFTfGW9XjX", // Josh
34
+ "29vD33N1CtxCmqQRPOHJ", // Drew
35
+ ];
36
+ // Charlotte excluded — she is reserved exclusively for DETECTIVE
37
+ const PREMADE_FEMALE_VOICES = [
38
+ "pNInz6obpgDQGcFmaJgB", // Nicole
39
+ "Xb7hH8MSUJpSbSDYk0k2", // Alice
40
+ "jBpfuIE2acCO8z3wKNLl", // Freya
41
+ "jsCqWAovK2LkecY7zXl4", // Dorothy
42
+ "z9fAnlkpzviPz146aGWa", // Glinda
43
+ ];
44
+ const DEFAULT_VOICES = {
45
+ DETECTIVE: DETECTIVE_VOICE_ID,
46
+ SUSPECT: PREMADE_FEMALE_VOICES[0],
47
+ NARRATOR: PREMADE_MALE_VOICES[0],
48
+ };
49
+ /**
50
+ * Hash a string to a stable integer (djb2)
51
+ */
52
+ function hashString(str) {
53
+ let hash = 5381;
54
+ for (let i = 0; i < str.length; i++) {
55
+ hash = (hash * 33) ^ str.charCodeAt(i);
56
+ }
57
+ return Math.abs(hash);
58
+ }
59
+ /**
60
+ * Pick a suspect voice deterministically based on characterId and gender.
61
+ * Female suspects draw from PREMADE_FEMALE_VOICES (5 voices, never Charlotte).
62
+ * Male suspects draw from PREMADE_MALE_VOICES (7 voices).
63
+ * Same characterId + gender always returns the same voice. No API calls, no limits.
64
+ */
65
+ function pickVoice(characterId, gender) {
66
+ const g = gender.toLowerCase().trim();
67
+ const isFemale = g === "female" || g === "f" || g === "woman";
68
+ const pool = isFemale ? PREMADE_FEMALE_VOICES : PREMADE_MALE_VOICES;
69
+ const index = hashString(characterId) % pool.length;
70
+ const voiceId = pool[index];
71
+ console.log(`[ElevenLabs] Picked ${isFemale ? "female" : "male"} suspect voice for "${characterId}": ${voiceId} (index ${index}/${pool.length})`);
72
+ return voiceId;
73
+ }
74
+ /**
75
+ * Parse dialogue script into segments by speaker
76
+ * Expects format: [DETECTIVE]: text or [SUSPECT]: text
77
+ */
78
+ function parseDialogueScript(script) {
79
+ const segments = [];
80
+ const lines = script.split("\n");
81
+ let currentSpeaker = "NARRATOR";
82
+ let currentText = "";
83
+ for (const line of lines) {
84
+ const trimmedLine = line.trim();
85
+ if (!trimmedLine)
86
+ continue;
87
+ // Check for speaker labels
88
+ const detectiveMatch = trimmedLine.match(/^\[DETECTIVE\]:\s*(.*)$/i);
89
+ const suspectMatch = trimmedLine.match(/^\[SUSPECT\]:\s*(.*)$/i);
90
+ const narratorMatch = trimmedLine.match(/^\[NARRATOR\]:\s*(.*)$/i);
91
+ if (detectiveMatch) {
92
+ // Save previous segment if exists
93
+ if (currentText.trim()) {
94
+ segments.push({ speaker: currentSpeaker, text: currentText.trim() });
95
+ }
96
+ currentSpeaker = "DETECTIVE";
97
+ currentText = detectiveMatch[1];
98
+ }
99
+ else if (suspectMatch) {
100
+ if (currentText.trim()) {
101
+ segments.push({ speaker: currentSpeaker, text: currentText.trim() });
102
+ }
103
+ currentSpeaker = "SUSPECT";
104
+ currentText = suspectMatch[1];
105
+ }
106
+ else if (narratorMatch) {
107
+ if (currentText.trim()) {
108
+ segments.push({ speaker: currentSpeaker, text: currentText.trim() });
109
+ }
110
+ currentSpeaker = "NARRATOR";
111
+ currentText = narratorMatch[1];
112
+ }
113
+ else {
114
+ // Continue current speaker's text
115
+ currentText += " " + trimmedLine;
116
+ }
117
+ }
118
+ // Don't forget the last segment
119
+ if (currentText.trim()) {
120
+ segments.push({ speaker: currentSpeaker, text: currentText.trim() });
121
+ }
122
+ return segments;
123
+ }
124
+ /**
125
+ * Check if text is a dialogue script (has speaker labels)
126
+ */
127
+ function isDialogueScript(text) {
128
+ return /\[(DETECTIVE|SUSPECT|NARRATOR)\]:/i.test(text);
129
+ }
130
+ /**
131
+ * Get voice ID - pick a premade voice deterministically from characterId.
132
+ * No API calls, no voice creation, no limits.
133
+ */
134
+ function getVoiceId(speaker, config) {
135
+ if (speaker === "DETECTIVE") {
136
+ return DETECTIVE_VOICE_ID;
137
+ }
138
+ if (speaker === "SUSPECT") {
139
+ const id = config.characterId || "suspect_default";
140
+ const gender = config.characterGender || "male";
141
+ console.log(`[ElevenLabs] getVoiceId SUSPECT — characterId="${config.characterId}", characterGender="${config.characterGender}", resolved gender="${gender}"`);
142
+ return pickVoice(id, gender);
143
+ }
144
+ return DEFAULT_VOICES.NARRATOR;
145
+ }
146
+ /**
147
+ * Generate dialogue using Text to Dialogue API
148
+ * POST /v1/text-to-dialogue with inputs array
149
+ */
150
+ async function generateDialogueV3(segments, apiKey, config) {
151
+ // Get voice IDs (may generate from prompts)
152
+ const detectiveVoiceId = getVoiceId("DETECTIVE", config);
153
+ const suspectVoiceId = getVoiceId("SUSPECT", config);
154
+ const narratorVoiceId = DEFAULT_VOICES.NARRATOR;
155
+ // Build inputs array for Text to Dialogue API
156
+ const inputs = segments.map((seg) => ({
157
+ text: seg.text,
158
+ voice_id: seg.speaker === "DETECTIVE" ? detectiveVoiceId : seg.speaker === "SUSPECT" ? suspectVoiceId : narratorVoiceId,
159
+ }));
160
+ console.log(`[ElevenLabs] Text to Dialogue API: ${inputs.length} segments`);
161
+ const response = await fetch(`${ELEVENLABS_API_BASE}/text-to-dialogue`, {
162
+ method: "POST",
163
+ headers: {
164
+ "Content-Type": "application/json",
165
+ "xi-api-key": apiKey,
166
+ },
167
+ body: JSON.stringify({
168
+ inputs,
169
+ model_id: "eleven_v3",
170
+ settings: {
171
+ stability: [0.0, 0.5, 1.0].includes(config.stability ?? 0) ? (config.stability ?? 0) : 0.0,
172
+ },
173
+ }),
174
+ });
175
+ if (!response.ok) {
176
+ const errorText = await response.text();
177
+ console.log(`[ElevenLabs] Dialogue API error: ${errorText}`);
178
+ throw new Error("FALLBACK_TO_SEQUENTIAL");
179
+ }
180
+ return response.arrayBuffer();
181
+ }
182
+ /**
183
+ * Generate speech for a single segment using standard TTS API
184
+ */
185
+ async function generateSpeechV3(text, voiceId, apiKey, config) {
186
+ if (!text.trim()) {
187
+ return new ArrayBuffer(0);
188
+ }
189
+ const response = await fetch(`${ELEVENLABS_API_BASE}/text-to-speech/${voiceId}`, {
190
+ method: "POST",
191
+ headers: {
192
+ "Content-Type": "application/json",
193
+ "xi-api-key": apiKey,
194
+ },
195
+ body: JSON.stringify({
196
+ text: text.trim(),
197
+ model_id: "eleven_v3",
198
+ voice_settings: {
199
+ stability: [0.0, 0.5, 1.0].includes(config.stability ?? 0) ? (config.stability ?? 0) : 0.0,
200
+ },
201
+ }),
202
+ });
203
+ if (!response.ok) {
204
+ const errorText = await response.text();
205
+ throw new Error(`ElevenLabs API error (${response.status}): ${errorText}`);
206
+ }
207
+ return response.arrayBuffer();
208
+ }
209
+ /**
210
+ * Concatenate multiple audio buffers (MP3)
211
+ */
212
+ function concatenateAudioBuffers(buffers) {
213
+ const nonEmptyBuffers = buffers.filter((b) => b.byteLength > 0);
214
+ const totalLength = nonEmptyBuffers.reduce((sum, buf) => sum + buf.byteLength, 0);
215
+ const result = new Uint8Array(totalLength);
216
+ let offset = 0;
217
+ for (const buffer of nonEmptyBuffers) {
218
+ result.set(new Uint8Array(buffer), offset);
219
+ offset += buffer.byteLength;
220
+ }
221
+ return result.buffer;
222
+ }
223
+ /**
224
+ * Generate TTS audio from text or dialogue script using Eleven v3
225
+ */
226
+ async function generateTTS(config, context) {
227
+ const apiKey = await getApiKey(context);
228
+ const { text } = config;
229
+ const isDialogue = isDialogueScript(text);
230
+ let audioBuffer;
231
+ let characterCount = text.length;
232
+ if (isDialogue) {
233
+ const segments = parseDialogueScript(text);
234
+ console.log(`[ElevenLabs] Generating v3 dialogue with ${segments.length} segments`);
235
+ // Try Text to Dialogue API first (best for multi-speaker)
236
+ try {
237
+ audioBuffer = await generateDialogueV3(segments, apiKey, config);
238
+ }
239
+ catch (error) {
240
+ // Fall back to sequential TTS if dialogue API fails
241
+ if (error.message === "FALLBACK_TO_SEQUENTIAL" || error.message.includes("FALLBACK")) {
242
+ console.log(`[ElevenLabs] Using sequential v3 TTS fallback`);
243
+ const audioBuffers = [];
244
+ for (const segment of segments) {
245
+ const voiceId = getVoiceId(segment.speaker, config);
246
+ console.log(`[ElevenLabs] Generating v3 segment: ${segment.speaker}`);
247
+ const segmentAudio = await generateSpeechV3(segment.text, voiceId, apiKey, config);
248
+ audioBuffers.push(segmentAudio);
249
+ // Small delay between API calls
250
+ await new Promise((resolve) => setTimeout(resolve, 100));
251
+ }
252
+ audioBuffer = concatenateAudioBuffers(audioBuffers);
253
+ }
254
+ else {
255
+ throw error;
256
+ }
257
+ }
258
+ }
259
+ else {
260
+ // Single speaker mode with v3
261
+ const voiceId = DEFAULT_VOICES.NARRATOR;
262
+ console.log(`[ElevenLabs] Generating single-speaker v3 audio`);
263
+ audioBuffer = await generateSpeechV3(text, voiceId, apiKey, config);
264
+ }
265
+ // Convert to base64
266
+ const audioBase64 = Buffer.from(audioBuffer).toString("base64");
267
+ // Estimate duration (~150 words per minute, ~5 chars per word)
268
+ const estimatedDuration = (characterCount / 5 / 150) * 60;
269
+ return {
270
+ audioBase64,
271
+ format: "mp3",
272
+ durationSeconds: Math.round(estimatedDuration),
273
+ contentType: "audio/mpeg",
274
+ characterCount,
275
+ isDialogue,
276
+ };
277
+ }
278
+ //# sourceMappingURL=elevenlabsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabsService.js","sourceRoot":"","sources":["../../../src/ElevenLabs/service/elevenlabsService.ts"],"names":[],"mappings":"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"}