flow-frame-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/README.md +64 -0
  2. package/dist/Dockerfile +86 -0
  3. package/dist/GPU_DEPLOYMENT_README.md +324 -0
  4. package/dist/OPS_AGENT_README.md +174 -0
  5. package/dist/README-H100-VM.md +192 -0
  6. package/dist/README-worker-pools.md +231 -0
  7. package/dist/README.md +8 -0
  8. package/dist/WEB-ELEMENT-REQUESTS-README.md +302 -0
  9. package/dist/append.d.ts +3 -0
  10. package/dist/append.d.ts.map +1 -0
  11. package/dist/append.js +42 -0
  12. package/dist/append.js.map +1 -0
  13. package/dist/audioRoutes.d.ts +2 -0
  14. package/dist/audioRoutes.d.ts.map +1 -0
  15. package/dist/audioRoutes.js +97 -0
  16. package/dist/audioRoutes.js.map +1 -0
  17. package/dist/augment-parallel.d.ts +6 -0
  18. package/dist/augment-parallel.d.ts.map +1 -0
  19. package/dist/augment-parallel.js +128 -0
  20. package/dist/augment-parallel.js.map +1 -0
  21. package/dist/augment-worker.d.ts +2 -0
  22. package/dist/augment-worker.d.ts.map +1 -0
  23. package/dist/augment-worker.js +100 -0
  24. package/dist/augment-worker.js.map +1 -0
  25. package/dist/browerRoutes.d.ts +2 -0
  26. package/dist/browerRoutes.d.ts.map +1 -0
  27. package/dist/browerRoutes.js +323 -0
  28. package/dist/browerRoutes.js.map +1 -0
  29. package/dist/browser-utils/utils.d.ts +6 -0
  30. package/dist/browser-utils/utils.d.ts.map +1 -0
  31. package/dist/browser-utils/utils.js +133 -0
  32. package/dist/browser-utils/utils.js.map +1 -0
  33. package/dist/capture_training_data_endpoints.d.ts +158 -0
  34. package/dist/capture_training_data_endpoints.d.ts.map +1 -0
  35. package/dist/capture_training_data_endpoints.js +1812 -0
  36. package/dist/capture_training_data_endpoints.js.map +1 -0
  37. package/dist/config.json +28 -0
  38. package/dist/configEndpoints.d.ts +2 -0
  39. package/dist/configEndpoints.d.ts.map +1 -0
  40. package/dist/configEndpoints.js +459 -0
  41. package/dist/configEndpoints.js.map +1 -0
  42. package/dist/constants.d.ts +109 -0
  43. package/dist/constants.d.ts.map +1 -0
  44. package/dist/constants.js +110 -0
  45. package/dist/constants.js.map +1 -0
  46. package/dist/docs/workflow_nodes.md +257 -0
  47. package/dist/download.d.ts +11 -0
  48. package/dist/download.d.ts.map +1 -0
  49. package/dist/download.js +31 -0
  50. package/dist/download.js.map +1 -0
  51. package/dist/download.py +61 -0
  52. package/dist/ecosystem.config.json +63 -0
  53. package/dist/email-body-extractor.d.ts +20 -0
  54. package/dist/email-body-extractor.d.ts.map +1 -0
  55. package/dist/email-body-extractor.js +103 -0
  56. package/dist/email-body-extractor.js.map +1 -0
  57. package/dist/express_util.d.ts +2 -0
  58. package/dist/express_util.d.ts.map +1 -0
  59. package/dist/express_util.js +30 -0
  60. package/dist/express_util.js.map +1 -0
  61. package/dist/extension/background.d.ts +2 -0
  62. package/dist/extension/background.d.ts.map +1 -0
  63. package/dist/extension/background.js +268 -0
  64. package/dist/extension/background.js.map +1 -0
  65. package/dist/extension/manifest.json +19 -0
  66. package/dist/extensionUtils.d.ts +2 -0
  67. package/dist/extensionUtils.d.ts.map +1 -0
  68. package/dist/extensionUtils.js +48 -0
  69. package/dist/extensionUtils.js.map +1 -0
  70. package/dist/filter-gmail-poller/README.md +320 -0
  71. package/dist/filter-gmail-poller/demo.d.ts +2 -0
  72. package/dist/filter-gmail-poller/demo.d.ts.map +1 -0
  73. package/dist/filter-gmail-poller/demo.js +79 -0
  74. package/dist/filter-gmail-poller/demo.js.map +1 -0
  75. package/dist/filter-gmail-poller/example-existing-app.d.ts +2 -0
  76. package/dist/filter-gmail-poller/example-existing-app.d.ts.map +1 -0
  77. package/dist/filter-gmail-poller/example-existing-app.js +72 -0
  78. package/dist/filter-gmail-poller/example-existing-app.js.map +1 -0
  79. package/dist/filter-gmail-poller/filter-gmail-poller.d.ts +160 -0
  80. package/dist/filter-gmail-poller/filter-gmail-poller.d.ts.map +1 -0
  81. package/dist/filter-gmail-poller/filter-gmail-poller.js +1048 -0
  82. package/dist/filter-gmail-poller/filter-gmail-poller.js.map +1 -0
  83. package/dist/filter-gmail-poller/index.d.ts +3 -0
  84. package/dist/filter-gmail-poller/index.d.ts.map +1 -0
  85. package/dist/filter-gmail-poller/index.js +18 -0
  86. package/dist/filter-gmail-poller/index.js.map +1 -0
  87. package/dist/filter-gmail-poller/manual-test.d.ts +2 -0
  88. package/dist/filter-gmail-poller/manual-test.d.ts.map +1 -0
  89. package/dist/filter-gmail-poller/manual-test.js +70 -0
  90. package/dist/filter-gmail-poller/manual-test.js.map +1 -0
  91. package/dist/filter-gmail-poller/poller-prompts.d.ts +12 -0
  92. package/dist/filter-gmail-poller/poller-prompts.d.ts.map +1 -0
  93. package/dist/filter-gmail-poller/poller-prompts.js +330 -0
  94. package/dist/filter-gmail-poller/poller-prompts.js.map +1 -0
  95. package/dist/filter-gmail-poller/test.js +69 -0
  96. package/dist/flowframe-auto-firebase-adminsdk.json +13 -0
  97. package/dist/gmail-poller/README-microsoft-email-poller.md +203 -0
  98. package/dist/gmail-poller/README.md +129 -0
  99. package/dist/gmail-poller/example.d.ts +5 -0
  100. package/dist/gmail-poller/example.d.ts.map +1 -0
  101. package/dist/gmail-poller/example.js +83 -0
  102. package/dist/gmail-poller/example.js.map +1 -0
  103. package/dist/gmail-poller/gmail-poller.d.ts +82 -0
  104. package/dist/gmail-poller/gmail-poller.d.ts.map +1 -0
  105. package/dist/gmail-poller/gmail-poller.js +455 -0
  106. package/dist/gmail-poller/gmail-poller.js.map +1 -0
  107. package/dist/gmail-poller/manual-test.d.ts +2 -0
  108. package/dist/gmail-poller/manual-test.d.ts.map +1 -0
  109. package/dist/gmail-poller/manual-test.js +37 -0
  110. package/dist/gmail-poller/manual-test.js.map +1 -0
  111. package/dist/gmail-poller/microsoft-email-example.d.ts +8 -0
  112. package/dist/gmail-poller/microsoft-email-example.d.ts.map +1 -0
  113. package/dist/gmail-poller/microsoft-email-example.js +58 -0
  114. package/dist/gmail-poller/microsoft-email-example.js.map +1 -0
  115. package/dist/gmail-poller/microsoft-email-poller.d.ts +73 -0
  116. package/dist/gmail-poller/microsoft-email-poller.d.ts.map +1 -0
  117. package/dist/gmail-poller/microsoft-email-poller.js +346 -0
  118. package/dist/gmail-poller/microsoft-email-poller.js.map +1 -0
  119. package/dist/gmail-poller/setup-auth.d.ts +3 -0
  120. package/dist/gmail-poller/setup-auth.d.ts.map +1 -0
  121. package/dist/gmail-poller/setup-auth.js +36 -0
  122. package/dist/gmail-poller/setup-auth.js.map +1 -0
  123. package/dist/gmail-poller/test.js +36 -0
  124. package/dist/index.d.ts +10 -0
  125. package/dist/index.d.ts.map +1 -0
  126. package/dist/index.js +28 -0
  127. package/dist/index.js.map +1 -0
  128. package/dist/inference/augment_levels.d.ts +2 -0
  129. package/dist/inference/augment_levels.d.ts.map +1 -0
  130. package/dist/inference/augment_levels.js +1 -0
  131. package/dist/inference/augment_levels.js.map +1 -0
  132. package/dist/inference/capture-overlay.d.ts +13 -0
  133. package/dist/inference/capture-overlay.d.ts.map +1 -0
  134. package/dist/inference/capture-overlay.js +355 -0
  135. package/dist/inference/capture-overlay.js.map +1 -0
  136. package/dist/inference/capturescreenshot.d.ts +12 -0
  137. package/dist/inference/capturescreenshot.d.ts.map +1 -0
  138. package/dist/inference/capturescreenshot.js +157 -0
  139. package/dist/inference/capturescreenshot.js.map +1 -0
  140. package/dist/jsonHandler.d.ts +37 -0
  141. package/dist/jsonHandler.d.ts.map +1 -0
  142. package/dist/jsonHandler.js +191 -0
  143. package/dist/jsonHandler.js.map +1 -0
  144. package/dist/localStorage.json +11 -0
  145. package/dist/media_data_endpoints.d.ts +2 -0
  146. package/dist/media_data_endpoints.d.ts.map +1 -0
  147. package/dist/media_data_endpoints.js +102 -0
  148. package/dist/media_data_endpoints.js.map +1 -0
  149. package/dist/operations/blender-ops.d.ts +4 -0
  150. package/dist/operations/blender-ops.d.ts.map +1 -0
  151. package/dist/operations/blender-ops.js +55 -0
  152. package/dist/operations/blender-ops.js.map +1 -0
  153. package/dist/operations.d.ts +34 -0
  154. package/dist/operations.d.ts.map +1 -0
  155. package/dist/operations.js +1514 -0
  156. package/dist/operations.js.map +1 -0
  157. package/dist/pdfRoutes.d.ts +2 -0
  158. package/dist/pdfRoutes.d.ts.map +1 -0
  159. package/dist/pdfRoutes.js +56 -0
  160. package/dist/pdfRoutes.js.map +1 -0
  161. package/dist/peers.d.ts +9 -0
  162. package/dist/peers.d.ts.map +1 -0
  163. package/dist/peers.js +70 -0
  164. package/dist/peers.js.map +1 -0
  165. package/dist/playparser.d.ts +2 -0
  166. package/dist/playparser.d.ts.map +1 -0
  167. package/dist/playparser.js +281 -0
  168. package/dist/playparser.js.map +1 -0
  169. package/dist/process.d.ts +4 -0
  170. package/dist/process.d.ts.map +1 -0
  171. package/dist/process.js +375 -0
  172. package/dist/process.js.map +1 -0
  173. package/dist/promptRoutes.d.ts +7 -0
  174. package/dist/promptRoutes.d.ts.map +1 -0
  175. package/dist/promptRoutes.js +68 -0
  176. package/dist/promptRoutes.js.map +1 -0
  177. package/dist/queueManager.d.ts +23 -0
  178. package/dist/queueManager.d.ts.map +1 -0
  179. package/dist/queueManager.js +96 -0
  180. package/dist/queueManager.js.map +1 -0
  181. package/dist/run-flow.d.ts +8 -0
  182. package/dist/run-flow.d.ts.map +1 -0
  183. package/dist/run-flow.js +220 -0
  184. package/dist/run-flow.js.map +1 -0
  185. package/dist/scraper.d.ts +2 -0
  186. package/dist/scraper.d.ts.map +1 -0
  187. package/dist/scraper.js +75 -0
  188. package/dist/scraper.js.map +1 -0
  189. package/dist/scraper_endpoints.d.ts +2 -0
  190. package/dist/scraper_endpoints.d.ts.map +1 -0
  191. package/dist/scraper_endpoints.js +40 -0
  192. package/dist/scraper_endpoints.js.map +1 -0
  193. package/dist/server.d.ts +2 -0
  194. package/dist/server.d.ts.map +1 -0
  195. package/dist/server.js +528 -0
  196. package/dist/server.js.map +1 -0
  197. package/dist/services/ModelContext.d.ts +7 -0
  198. package/dist/services/ModelContext.d.ts.map +1 -0
  199. package/dist/services/ModelContext.js +7 -0
  200. package/dist/services/ModelContext.js.map +1 -0
  201. package/dist/services/agenticUiPlanner.d.ts +27 -0
  202. package/dist/services/agenticUiPlanner.d.ts.map +1 -0
  203. package/dist/services/agenticUiPlanner.js +161 -0
  204. package/dist/services/agenticUiPlanner.js.map +1 -0
  205. package/dist/services/apiKeyService.d.ts +3 -0
  206. package/dist/services/apiKeyService.d.ts.map +1 -0
  207. package/dist/services/apiKeyService.js +7 -0
  208. package/dist/services/apiKeyService.js.map +1 -0
  209. package/dist/services/audioService.d.ts +10 -0
  210. package/dist/services/audioService.d.ts.map +1 -0
  211. package/dist/services/audioService.js +140 -0
  212. package/dist/services/audioService.js.map +1 -0
  213. package/dist/services/autoPromptOptimizer.d.ts +44 -0
  214. package/dist/services/autoPromptOptimizer.d.ts.map +1 -0
  215. package/dist/services/autoPromptOptimizer.js +344 -0
  216. package/dist/services/autoPromptOptimizer.js.map +1 -0
  217. package/dist/services/autoPromptOptimizer.manual-test.d.ts +2 -0
  218. package/dist/services/autoPromptOptimizer.manual-test.d.ts.map +1 -0
  219. package/dist/services/autoPromptOptimizer.manual-test.js +27 -0
  220. package/dist/services/autoPromptOptimizer.manual-test.js.map +1 -0
  221. package/dist/services/chainExecutor.d.ts +26 -0
  222. package/dist/services/chainExecutor.d.ts.map +1 -0
  223. package/dist/services/chainExecutor.js +399 -0
  224. package/dist/services/chainExecutor.js.map +1 -0
  225. package/dist/services/classifyImageQuestion.d.ts +55 -0
  226. package/dist/services/classifyImageQuestion.d.ts.map +1 -0
  227. package/dist/services/classifyImageQuestion.js +428 -0
  228. package/dist/services/classifyImageQuestion.js.map +1 -0
  229. package/dist/services/configuration/executor.d.ts +3 -0
  230. package/dist/services/configuration/executor.d.ts.map +1 -0
  231. package/dist/services/configuration/executor.js +795 -0
  232. package/dist/services/configuration/executor.js.map +1 -0
  233. package/dist/services/error.d.ts +13 -0
  234. package/dist/services/error.d.ts.map +1 -0
  235. package/dist/services/error.js +34 -0
  236. package/dist/services/error.js.map +1 -0
  237. package/dist/services/executor.d.ts +11 -0
  238. package/dist/services/executor.d.ts.map +1 -0
  239. package/dist/services/executor.js +1587 -0
  240. package/dist/services/executor.js.map +1 -0
  241. package/dist/services/extractPdf.d.ts +26 -0
  242. package/dist/services/extractPdf.d.ts.map +1 -0
  243. package/dist/services/extractPdf.js +256 -0
  244. package/dist/services/extractPdf.js.map +1 -0
  245. package/dist/services/generateJsTransformFromPrompt.d.ts +11 -0
  246. package/dist/services/generateJsTransformFromPrompt.d.ts.map +1 -0
  247. package/dist/services/generateJsTransformFromPrompt.js +328 -0
  248. package/dist/services/generateJsTransformFromPrompt.js.map +1 -0
  249. package/dist/services/localizeFirebaseMedia.d.ts +20 -0
  250. package/dist/services/localizeFirebaseMedia.d.ts.map +1 -0
  251. package/dist/services/localizeFirebaseMedia.js +135 -0
  252. package/dist/services/localizeFirebaseMedia.js.map +1 -0
  253. package/dist/services/polyfill_canvas.d.ts +2 -0
  254. package/dist/services/polyfill_canvas.d.ts.map +1 -0
  255. package/dist/services/polyfill_canvas.js +19 -0
  256. package/dist/services/polyfill_canvas.js.map +1 -0
  257. package/dist/services/promptRoutes.d.ts +7 -0
  258. package/dist/services/promptRoutes.d.ts.map +1 -0
  259. package/dist/services/promptRoutes.js +70 -0
  260. package/dist/services/promptRoutes.js.map +1 -0
  261. package/dist/services/runPrompt.d.ts +29 -0
  262. package/dist/services/runPrompt.d.ts.map +1 -0
  263. package/dist/services/runPrompt.js +232 -0
  264. package/dist/services/runPrompt.js.map +1 -0
  265. package/dist/services/schemaInference.d.ts +2 -0
  266. package/dist/services/schemaInference.d.ts.map +1 -0
  267. package/dist/services/schemaInference.js +17 -0
  268. package/dist/services/schemaInference.js.map +1 -0
  269. package/dist/services/self-learning/api.d.ts +2 -0
  270. package/dist/services/self-learning/api.d.ts.map +1 -0
  271. package/dist/services/self-learning/api.js +84 -0
  272. package/dist/services/self-learning/api.js.map +1 -0
  273. package/dist/services/self-learning/autolearn.d.ts +23 -0
  274. package/dist/services/self-learning/autolearn.d.ts.map +1 -0
  275. package/dist/services/self-learning/autolearn.js +308 -0
  276. package/dist/services/self-learning/autolearn.js.map +1 -0
  277. package/dist/services/self-learning/discover.d.ts +11 -0
  278. package/dist/services/self-learning/discover.d.ts.map +1 -0
  279. package/dist/services/self-learning/discover.js +446 -0
  280. package/dist/services/self-learning/discover.js.map +1 -0
  281. package/dist/services/self-learning/image.d.ts +10 -0
  282. package/dist/services/self-learning/image.d.ts.map +1 -0
  283. package/dist/services/self-learning/image.js +38 -0
  284. package/dist/services/self-learning/image.js.map +1 -0
  285. package/dist/services/self-learning/injest.d.ts +25 -0
  286. package/dist/services/self-learning/injest.d.ts.map +1 -0
  287. package/dist/services/self-learning/injest.js +110 -0
  288. package/dist/services/self-learning/injest.js.map +1 -0
  289. package/dist/services/self-learning/learn.d.ts +2 -0
  290. package/dist/services/self-learning/learn.d.ts.map +1 -0
  291. package/dist/services/self-learning/learn.js +145 -0
  292. package/dist/services/self-learning/learn.js.map +1 -0
  293. package/dist/services/self-learning/matcher.d.ts +2 -0
  294. package/dist/services/self-learning/matcher.d.ts.map +1 -0
  295. package/dist/services/self-learning/matcher.js +38 -0
  296. package/dist/services/self-learning/matcher.js.map +1 -0
  297. package/dist/services/self-learning/openai.d.ts +8 -0
  298. package/dist/services/self-learning/openai.d.ts.map +1 -0
  299. package/dist/services/self-learning/openai.js +97 -0
  300. package/dist/services/self-learning/openai.js.map +1 -0
  301. package/dist/services/self-learning/phash.d.ts +5 -0
  302. package/dist/services/self-learning/phash.d.ts.map +1 -0
  303. package/dist/services/self-learning/phash.js +68 -0
  304. package/dist/services/self-learning/phash.js.map +1 -0
  305. package/dist/services/self-learning/recognize.d.ts +17 -0
  306. package/dist/services/self-learning/recognize.d.ts.map +1 -0
  307. package/dist/services/self-learning/recognize.js +116 -0
  308. package/dist/services/self-learning/recognize.js.map +1 -0
  309. package/dist/services/self-learning/record_transition.d.ts +8 -0
  310. package/dist/services/self-learning/record_transition.d.ts.map +1 -0
  311. package/dist/services/self-learning/record_transition.js +20 -0
  312. package/dist/services/self-learning/record_transition.js.map +1 -0
  313. package/dist/services/self-learning/registry.d.ts +4 -0
  314. package/dist/services/self-learning/registry.d.ts.map +1 -0
  315. package/dist/services/self-learning/registry.js +19 -0
  316. package/dist/services/self-learning/registry.js.map +1 -0
  317. package/dist/services/self-learning/schema.d.ts +114 -0
  318. package/dist/services/self-learning/schema.d.ts.map +1 -0
  319. package/dist/services/self-learning/schema.js +70 -0
  320. package/dist/services/self-learning/schema.js.map +1 -0
  321. package/dist/services/self-learning/schemaStrictify.d.ts +2 -0
  322. package/dist/services/self-learning/schemaStrictify.d.ts.map +1 -0
  323. package/dist/services/self-learning/schemaStrictify.js +34 -0
  324. package/dist/services/self-learning/schemaStrictify.js.map +1 -0
  325. package/dist/services/self-learning/transition_graph.d.ts +6 -0
  326. package/dist/services/self-learning/transition_graph.d.ts.map +1 -0
  327. package/dist/services/self-learning/transition_graph.js +83 -0
  328. package/dist/services/self-learning/transition_graph.js.map +1 -0
  329. package/dist/services/self-learning/transition_log.d.ts +3 -0
  330. package/dist/services/self-learning/transition_log.d.ts.map +1 -0
  331. package/dist/services/self-learning/transition_log.js +42 -0
  332. package/dist/services/self-learning/transition_log.js.map +1 -0
  333. package/dist/services/self-learning/util.d.ts +3 -0
  334. package/dist/services/self-learning/util.d.ts.map +1 -0
  335. package/dist/services/self-learning/util.js +11 -0
  336. package/dist/services/self-learning/util.js.map +1 -0
  337. package/dist/services/stepByStepAiPlanner.d.ts +39 -0
  338. package/dist/services/stepByStepAiPlanner.d.ts.map +1 -0
  339. package/dist/services/stepByStepAiPlanner.js +379 -0
  340. package/dist/services/stepByStepAiPlanner.js.map +1 -0
  341. package/dist/services/test-genjs.js +39 -0
  342. package/dist/services/test-genjs.manual-test.d.ts +2 -0
  343. package/dist/services/test-genjs.manual-test.d.ts.map +1 -0
  344. package/dist/services/test-genjs.manual-test.js +40 -0
  345. package/dist/services/test-genjs.manual-test.js.map +1 -0
  346. package/dist/services/uiMapPathFinder.d.ts +13 -0
  347. package/dist/services/uiMapPathFinder.d.ts.map +1 -0
  348. package/dist/services/uiMapPathFinder.js +79 -0
  349. package/dist/services/uiMapPathFinder.js.map +1 -0
  350. package/dist/services/uiMapService.d.ts +26 -0
  351. package/dist/services/uiMapService.d.ts.map +1 -0
  352. package/dist/services/uiMapService.js +275 -0
  353. package/dist/services/uiMapService.js.map +1 -0
  354. package/dist/services/uiPlanner.d.ts +54 -0
  355. package/dist/services/uiPlanner.d.ts.map +1 -0
  356. package/dist/services/uiPlanner.js +558 -0
  357. package/dist/services/uiPlanner.js.map +1 -0
  358. package/dist/services/utilityFunctions.d.ts +80 -0
  359. package/dist/services/utilityFunctions.d.ts.map +1 -0
  360. package/dist/services/utilityFunctions.js +352 -0
  361. package/dist/services/utilityFunctions.js.map +1 -0
  362. package/dist/services/variableGenerator.d.ts +39 -0
  363. package/dist/services/variableGenerator.d.ts.map +1 -0
  364. package/dist/services/variableGenerator.js +157 -0
  365. package/dist/services/variableGenerator.js.map +1 -0
  366. package/dist/services/workflow/build-workflow.d.ts +49 -0
  367. package/dist/services/workflow/build-workflow.d.ts.map +1 -0
  368. package/dist/services/workflow/build-workflow.js +119 -0
  369. package/dist/services/workflow/build-workflow.js.map +1 -0
  370. package/dist/standardRoutes.d.ts +2 -0
  371. package/dist/standardRoutes.d.ts.map +1 -0
  372. package/dist/standardRoutes.js +1495 -0
  373. package/dist/standardRoutes.js.map +1 -0
  374. package/dist/stepWorkflowRoutes.d.ts +2 -0
  375. package/dist/stepWorkflowRoutes.d.ts.map +1 -0
  376. package/dist/stepWorkflowRoutes.js +1007 -0
  377. package/dist/stepWorkflowRoutes.js.map +1 -0
  378. package/dist/storage.d.ts +19 -0
  379. package/dist/storage.d.ts.map +1 -0
  380. package/dist/storage.docker.json +61 -0
  381. package/dist/storage.js +131 -0
  382. package/dist/storage.js.map +1 -0
  383. package/dist/storage.json +78 -0
  384. package/dist/storage_cache/boxes.json +48 -0
  385. package/dist/storage_cache/suno_state.json +3 -0
  386. package/dist/suno_download.d.ts +11 -0
  387. package/dist/suno_download.d.ts.map +1 -0
  388. package/dist/suno_download.js +33 -0
  389. package/dist/suno_download.js.map +1 -0
  390. package/dist/suno_download.py +119 -0
  391. package/dist/test-web-element-requests.d.ts +6 -0
  392. package/dist/test-web-element-requests.d.ts.map +1 -0
  393. package/dist/test-web-element-requests.js +114 -0
  394. package/dist/test-web-element-requests.js.map +1 -0
  395. package/dist/test_pdf_render.d.ts +2 -0
  396. package/dist/test_pdf_render.d.ts.map +1 -0
  397. package/dist/test_pdf_render.js +50 -0
  398. package/dist/test_pdf_render.js.map +1 -0
  399. package/dist/training_data_viewer_endpoints.d.ts +2 -0
  400. package/dist/training_data_viewer_endpoints.d.ts.map +1 -0
  401. package/dist/training_data_viewer_endpoints.js +141 -0
  402. package/dist/training_data_viewer_endpoints.js.map +1 -0
  403. package/dist/utils.d.ts +353 -0
  404. package/dist/utils.d.ts.map +1 -0
  405. package/dist/utils.js +1517 -0
  406. package/dist/utils.js.map +1 -0
  407. package/dist/vm-h100.env.template +55 -0
  408. package/dist/web-element-requests.d.ts +102 -0
  409. package/dist/web-element-requests.d.ts.map +1 -0
  410. package/dist/web-element-requests.js +278 -0
  411. package/dist/web-element-requests.js.map +1 -0
  412. package/dist/workflowRoutes.d.ts +2 -0
  413. package/dist/workflowRoutes.d.ts.map +1 -0
  414. package/dist/workflowRoutes.js +441 -0
  415. package/dist/workflowRoutes.js.map +1 -0
  416. package/package.json +109 -0
@@ -0,0 +1,328 @@
1
+ // generateJsTransformFromPrompt.js
2
+ import Groq from "groq-sdk";
3
+ import vm from "node:vm";
4
+ import Ajv from "ajv";
5
+ import * as nodeAssert from "node:assert";
6
+ import dotenv from "dotenv";
7
+ // Load environment variables from .env file
8
+ dotenv.config();
9
+ /** ---------- JSON schema for LLM response (all objects closed) ---------- */
10
+ const CodePlanSchemaForGroq = {
11
+ type: "object",
12
+ additionalProperties: false,
13
+ required: ["file"],
14
+ properties: {
15
+ file: {
16
+ type: "object",
17
+ additionalProperties: false,
18
+ required: ["path", "content"],
19
+ properties: {
20
+ path: { type: "string" },
21
+ content: { type: "string" }
22
+ }
23
+ },
24
+ tests: {
25
+ type: "object",
26
+ additionalProperties: false,
27
+ required: ["path", "content"],
28
+ properties: {
29
+ path: { type: "string" },
30
+ content: { type: "string" }
31
+ }
32
+ },
33
+ notes: { type: "string" }
34
+ }
35
+ };
36
+ /** ---------- Public API types (JSDoc only) ----------
37
+ * @typedef {{ input: any, output?: any }} ExamplePair
38
+ * @typedef {{
39
+ * prompt: string,
40
+ * inputSchema?: object|string,
41
+ * outputSchema?: object|string,
42
+ * examples?: ExamplePair[],
43
+ * allowNet?: boolean,
44
+ * maxExecMs?: number,
45
+ * model?: string,
46
+ * retries?: number,
47
+ * verbose?: boolean
48
+ * }} GenOptions
49
+ */
50
+ /** ---------- Groq call (structured outputs with fallback) ---------- */
51
+ async function groqStructuredCall(basePrompt, schema, model = "meta-llama/llama-4-maverick-17b-128e-instruct") {
52
+ const client = new Groq({ apiKey: process.env.GROK_API_KEY });
53
+ try {
54
+ const res = await client.chat.completions.create({
55
+ model,
56
+ temperature: 0.1,
57
+ response_format: { type: "json_schema", json_schema: { name: "JsCodePlan", schema, strict: true } },
58
+ messages: [
59
+ { role: "system", content: "Return ONLY a JSON object that satisfies the provided schema." },
60
+ { role: "user", content: basePrompt }
61
+ ]
62
+ });
63
+ return res.choices?.[0]?.message?.content ?? "";
64
+ }
65
+ catch {
66
+ // Fallback: plain JSON mode
67
+ const res = await client.chat.completions.create({
68
+ model,
69
+ temperature: 0.1,
70
+ response_format: { type: "json_object" },
71
+ messages: [
72
+ { role: "system", content: "Return ONLY valid JSON. No code fences, no prose." },
73
+ { role: "user", content: basePrompt }
74
+ ]
75
+ });
76
+ return res.choices?.[0]?.message?.content ?? "";
77
+ }
78
+ }
79
+ /** ---------- Prompt builder ---------- */
80
+ function buildCodeGenPrompt(opts, repairContext) {
81
+ const inputSchema = typeof opts.inputSchema === "string"
82
+ ? opts.inputSchema
83
+ : (opts.inputSchema ? JSON.stringify(opts.inputSchema) : "null");
84
+ const outputSchema = typeof opts.outputSchema === "string"
85
+ ? opts.outputSchema
86
+ : (opts.outputSchema ? JSON.stringify(opts.outputSchema) : "null");
87
+ const examples = JSON.stringify(opts.examples ?? []);
88
+ return `
89
+ You are a senior JavaScript engineer.
90
+
91
+ GOAL
92
+ Write a single-file JS module that exports a CommonJS transform function to satisfy the user request,
93
+ constrained by the input/output schemas when provided.
94
+
95
+ CONTRACT
96
+ - Export exactly: module.exports = async function transform(input, ctx) { /* ... */ }
97
+ - No external imports. Only JS built-ins and ctx.* helpers.
98
+ - Must be deterministic and fast (<50ms typical). Avoid randomness and heavy loops.
99
+ - If outputSchema is provided, the returned value must conform to it.
100
+ - Use only data from "input" and "ctx"; no process/env/fs.
101
+
102
+ ENV
103
+ - ctx: { log: (...args) => void, now: () => string, helpers?: Record<string, any> }
104
+ - ${opts.allowNet ? "ctx.fetch is available for limited network calls." : "No network available (ctx.fetch not provided)."}
105
+
106
+ SCHEMAS
107
+ inputSchema:
108
+ \`\`\`json
109
+ ${inputSchema}
110
+ \`\`\`
111
+
112
+ outputSchema:
113
+ \`\`\`json
114
+ ${outputSchema}
115
+ \`\`\`
116
+
117
+ EXAMPLES (may be empty):
118
+ \`\`\`json
119
+ ${examples}
120
+ \`\`\`
121
+
122
+ USER PROMPT
123
+ """
124
+ ${opts.prompt}
125
+ """
126
+
127
+ RETURN FORMAT (STRICT JSON):
128
+ {
129
+ "file": { "path": "transform.js", "content": "<JS code string>" },
130
+ "tests": { "path": "selftest.js", "content": "<optional test code using ONLY the 'transform' function and built-in assert>" },
131
+ "notes": "<brief rationale/assumptions>"
132
+ }
133
+
134
+ IMPORTANT
135
+ - Do NOT return TypeScript. Only plain JavaScript.
136
+ - Do NOT use ESM exports. Use: module.exports = async function transform(input, ctx) { ... }.
137
+ - Test code MUST use the 'transform' function that is available in global scope - do NOT try to require() or import any files.
138
+ - Test code can use assert.deepEqual() or similar built-in assertion methods.
139
+ - Example test: (async () => { const result = await transform(input, {}); assert.deepEqual(result, expected); console.log('Tests passed'); })();
140
+ ${repairContext ? `
141
+
142
+ REPAIR CONTEXT
143
+ The last attempt failed. Fix the problems listed below and return a corrected JSON object:
144
+ ${repairContext}
145
+ ` : ""}
146
+ `;
147
+ }
148
+ /** ---------- Sandbox compiler ---------- */
149
+ function compileTransform(code, timeoutMs) {
150
+ // guardrails
151
+ if (/require\s*\(/.test(code) || /import\s*\(/.test(code)) {
152
+ throw new Error("Imports are not allowed in generated code.");
153
+ }
154
+ if (/\bprocess\./.test(code) || /\bfs\./.test(code)) {
155
+ throw new Error("Access to process/fs is not allowed.");
156
+ }
157
+ const sandbox = {
158
+ module: { exports: {} },
159
+ exports: {},
160
+ console,
161
+ setTimeout,
162
+ clearTimeout
163
+ };
164
+ const context = vm.createContext(sandbox, { codeGeneration: { strings: true, wasm: false } });
165
+ const script = new vm.Script(code, { filename: "transform.js" });
166
+ script.runInContext(context, { timeout: Math.max(50, timeoutMs) });
167
+ const fn = sandbox.module?.exports;
168
+ if (typeof fn !== "function") {
169
+ throw new Error("Module must export a function via module.exports = async function transform(input, ctx) { ... }");
170
+ }
171
+ return fn;
172
+ }
173
+ /** ---------- Self-tests runner ---------- */
174
+ async function runSelfTests(testsCode, transformFn, timeoutMs) {
175
+ const sandbox = {
176
+ console,
177
+ assert: nodeAssert,
178
+ // Provide a minimal require that supports 'assert'
179
+ require: (m) => {
180
+ if (m === "assert" || m === "node:assert")
181
+ return nodeAssert;
182
+ throw new Error(`Disallowed require: ${m}`);
183
+ },
184
+ module: { exports: transformFn },
185
+ exports: {},
186
+ transform: transformFn
187
+ };
188
+ const context = vm.createContext(sandbox);
189
+ const script = new vm.Script(testsCode, { filename: "selftest.js" });
190
+ script.runInContext(context, { timeout: Math.max(200, timeoutMs * 5) });
191
+ }
192
+ /** ---------- Helpers ---------- */
193
+ const ajvLoose = new Ajv({ strict: false, allErrors: true });
194
+ const validatePlan = ajvLoose.compile(CodePlanSchemaForGroq);
195
+ function extractJson(s) {
196
+ const m = s.match(/```json([\s\S]*?)```/i);
197
+ if (m)
198
+ return m[1].trim();
199
+ const i = s.indexOf("{");
200
+ const j = s.lastIndexOf("}");
201
+ return i >= 0 && j > i ? s.slice(i, j + 1) : s;
202
+ }
203
+ function truncate(s, n) { return s && s.length > n ? s.slice(0, n) + " …(truncated)" : s; }
204
+ function trimForPrompt(s) { return truncate(s, 4000); }
205
+ function safeStr(v) { try {
206
+ return JSON.stringify(v);
207
+ }
208
+ catch {
209
+ return String(v);
210
+ } }
211
+ function jsonDeepEqual(a, b) { return safeStr(a) === safeStr(b); }
212
+ function logVerbose(opts, msg) { if (opts && opts.verbose)
213
+ console.log(msg); }
214
+ function makeCtx(opts, extra = {}) {
215
+ return {
216
+ log: (...a) => console.log("[autogen]", ...a),
217
+ now: () => new Date().toISOString(),
218
+ ...(opts.allowNet ? { fetch } : {}),
219
+ ...extra
220
+ };
221
+ }
222
+ function callWithTimeout(fn, ms) {
223
+ return new Promise((resolve, reject) => {
224
+ let done = false;
225
+ const t = setTimeout(() => { if (!done)
226
+ reject(new Error("Transform timeout")); }, ms);
227
+ Promise.resolve()
228
+ .then(fn)
229
+ .then(v => { done = true; clearTimeout(t); resolve(v); })
230
+ .catch(e => { done = true; clearTimeout(t); reject(e); });
231
+ });
232
+ }
233
+ /** ---------- Main: generate + compile with repair loop ---------- */
234
+ /** @param {GenOptions} opts */
235
+ export async function generateJsTransformFromPrompt(opts) {
236
+ const model = opts.model ?? "meta-llama/llama-4-maverick-17b-128e-instruct";
237
+ const maxExecMs = opts.maxExecMs ?? 200;
238
+ const retries = Math.max(0, opts.retries ?? 2);
239
+ let repairNotes = [];
240
+ let attempt = 0;
241
+ let lastCode = "";
242
+ let lastTests = "";
243
+ for (attempt = 0; attempt <= retries; attempt++) {
244
+ const repairContext = repairNotes.length ? trimForPrompt(repairNotes.join("\n")) : undefined;
245
+ const prompt = buildCodeGenPrompt(opts, repairContext);
246
+ let raw = await groqStructuredCall(prompt, CodePlanSchemaForGroq, model);
247
+ // Parse + validate plan JSON
248
+ let plan;
249
+ try {
250
+ raw = extractJson(raw);
251
+ plan = JSON.parse(raw);
252
+ if (!validatePlan(plan)) {
253
+ throw new Error("Plan JSON failed schema validation: " + ajvLoose.errorsText(validatePlan.errors));
254
+ }
255
+ }
256
+ catch (e) {
257
+ repairNotes.push(`PLAN_VALIDATION_ERROR: ${truncate(String(e.message || e), 800)}`);
258
+ logVerbose(opts, `⛑️ Repairing (plan invalid): ${String(e.message || e)}`);
259
+ continue;
260
+ }
261
+ lastPlan = plan;
262
+ const code = String(plan.file?.content || "");
263
+ const tests = plan.tests?.content ? String(plan.tests.content) : "";
264
+ // Try to compile
265
+ let transformFn;
266
+ try {
267
+ transformFn = compileTransform(code, maxExecMs);
268
+ }
269
+ catch (e) {
270
+ repairNotes.push(`COMPILE_ERROR: ${truncate(String(e.message || e), 800)}\n--- CODE START ---\n${truncate(code, 1200)}\n--- CODE END ---`);
271
+ logVerbose(opts, `⛑️ Repairing (compile): ${String(e.message || e)}`);
272
+ continue;
273
+ }
274
+ // Run self-tests if present
275
+ if (tests) {
276
+ try {
277
+ await runSelfTests(tests, transformFn, maxExecMs);
278
+ }
279
+ catch (e) {
280
+ repairNotes.push(`TEST_ERROR: ${truncate(String(e), 800)}\n--- TESTS START ---\n${truncate(tests, 800)}\n--- TESTS END ---`);
281
+ logVerbose(opts, `⛑️ Repairing (tests): ${String(e)}`);
282
+ continue;
283
+ }
284
+ }
285
+ // Validate examples if provided
286
+ if (opts.examples?.length) {
287
+ const mismatches = [];
288
+ for (let i = 0; i < opts.examples.length; i++) {
289
+ const ex = opts.examples[i];
290
+ if (typeof ex.output === "undefined")
291
+ continue;
292
+ try {
293
+ const got = await callWithTimeout(() => transformFn(ex.input, makeCtx(opts)), maxExecMs);
294
+ if (!jsonDeepEqual(ex.output, got)) {
295
+ mismatches.push(`Example #${i}: expected ${safeStr(ex.output)} but got ${safeStr(got)}`);
296
+ }
297
+ }
298
+ catch (e) {
299
+ mismatches.push(`Example #${i}: execution error: ${truncate(String(e.message || e), 400)}`);
300
+ }
301
+ }
302
+ if (mismatches.length) {
303
+ repairNotes.push(`EXAMPLE_MISMATCH:\n${mismatches.map(m => "- " + m).join("\n")}`);
304
+ logVerbose(opts, `⛑️ Repairing (examples):\n${mismatches.join("\n")}`);
305
+ continue;
306
+ }
307
+ }
308
+ // SUCCESS
309
+ lastCode = code;
310
+ lastTests = tests || undefined;
311
+ return {
312
+ code: lastCode,
313
+ tests: lastTests,
314
+ notes: plan.notes,
315
+ plan,
316
+ attempts: attempt + 1,
317
+ transform: async (input, ctx = {}) => {
318
+ const tf = compileTransform(lastCode, maxExecMs); // recompile fresh
319
+ const out = await callWithTimeout(() => tf(input, makeCtx(opts, ctx)), maxExecMs);
320
+ return out;
321
+ }
322
+ };
323
+ }
324
+ // All attempts failed
325
+ const errMsg = `Failed after ${attempt} attempt(s).\nReasons:\n${repairNotes.join("\n")}`;
326
+ throw new Error(errMsg);
327
+ }
328
+ //# sourceMappingURL=generateJsTransformFromPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateJsTransformFromPrompt.js","sourceRoot":"","sources":["../../src/services/generateJsTransformFromPrompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Reads JSON from inputJsonPath, downloads Firebase Storage URLs, rewrites values, and writes JSON.
3
+ *
4
+ * @param {object} opts
5
+ * @param {string} [opts.inputJsonPath] - Path to the input JSON file
6
+ * @param {object} [opts.inputJson] - Input JSON object (alternative to inputJsonPath)
7
+ * @param {string} [opts.outputJsonPath] - Path to write updated JSON (defaults to inputJsonPath)
8
+ * @param {string} opts.baseFolder - Base folder to store downloads
9
+ * @param {string} opts.targetFolder - Folder under baseFolder, also used as the relative path in JSON
10
+ * @param {string} [opts.urlPrefix] - URL prefix to match
11
+ * @param {string} [opts.extension] - File extension to use (default "png")
12
+ * @param {number} [opts.concurrency] - Parallel downloads (default 6)
13
+ * @returns {Promise<{updated: any, replacedCount: number, downloads: Array<{url: string, relativePath: string}>}>}
14
+ */
15
+ export declare function localizeFirebaseStorageUrls(opts: any): Promise<{
16
+ updated: any;
17
+ replacedCount: number;
18
+ downloads: any[];
19
+ }>;
20
+ //# sourceMappingURL=localizeFirebaseMedia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizeFirebaseMedia.d.ts","sourceRoot":"","sources":["../../src/services/localizeFirebaseMedia.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,KAAA;;;;GAkGrD"}
@@ -0,0 +1,135 @@
1
+ // localizeFirebaseMedia.js
2
+ // Node 18+ (global fetch). If you're on older Node, install undici and set globalThis.fetch.
3
+ import { promises as fs } from "node:fs";
4
+ import path from "node:path";
5
+ import crypto from "node:crypto";
6
+ function toPosixPath(p) {
7
+ return p.split(path.sep).join("/");
8
+ }
9
+ async function ensureDir(dirPath) {
10
+ await fs.mkdir(dirPath, { recursive: true });
11
+ }
12
+ async function downloadToFile(url, destPath) {
13
+ const res = await fetch(url);
14
+ if (!res.ok) {
15
+ throw new Error(`Download failed(${res.status}) for URL: ${url} `);
16
+ }
17
+ const buf = Buffer.from(await res.arrayBuffer());
18
+ await fs.writeFile(destPath, buf);
19
+ }
20
+ async function runWithConcurrency(items, limit, worker) {
21
+ const executing = new Set();
22
+ for (const item of items) {
23
+ const p = Promise.resolve().then(() => worker(item));
24
+ executing.add(p);
25
+ p.finally(() => executing.delete(p));
26
+ if (executing.size >= limit) {
27
+ await Promise.race(executing);
28
+ }
29
+ }
30
+ await Promise.all(executing);
31
+ }
32
+ /**
33
+ * Reads JSON from inputJsonPath, downloads Firebase Storage URLs, rewrites values, and writes JSON.
34
+ *
35
+ * @param {object} opts
36
+ * @param {string} [opts.inputJsonPath] - Path to the input JSON file
37
+ * @param {object} [opts.inputJson] - Input JSON object (alternative to inputJsonPath)
38
+ * @param {string} [opts.outputJsonPath] - Path to write updated JSON (defaults to inputJsonPath)
39
+ * @param {string} opts.baseFolder - Base folder to store downloads
40
+ * @param {string} opts.targetFolder - Folder under baseFolder, also used as the relative path in JSON
41
+ * @param {string} [opts.urlPrefix] - URL prefix to match
42
+ * @param {string} [opts.extension] - File extension to use (default "png")
43
+ * @param {number} [opts.concurrency] - Parallel downloads (default 6)
44
+ * @returns {Promise<{updated: any, replacedCount: number, downloads: Array<{url: string, relativePath: string}>}>}
45
+ */
46
+ export async function localizeFirebaseStorageUrls(opts) {
47
+ const { inputJsonPath, inputJson, outputJsonPath = inputJsonPath, baseFolder, targetFolder, urlPrefix = "https://firebasestorage.googleapis.com/v0", extension = "png", concurrency = 6, apiPrefix = null } = opts ?? {};
48
+ if ((!inputJsonPath && !inputJson) || !baseFolder || !targetFolder) {
49
+ throw new Error("Missing required args: inputJsonPath or inputJson, baseFolder, targetFolder");
50
+ }
51
+ let json;
52
+ if (inputJson) {
53
+ json = JSON.parse(JSON.stringify(inputJson));
54
+ }
55
+ else {
56
+ const raw = await fs.readFile(inputJsonPath, "utf8");
57
+ json = JSON.parse(raw);
58
+ }
59
+ const absBase = path.resolve(baseFolder);
60
+ const absTargetDir = path.join(absBase, targetFolder);
61
+ await ensureDir(absTargetDir);
62
+ /** @type {Array<{url: string, set: (v: string) => void}>} */
63
+ const tasks = [];
64
+ // Collect tasks by walking the object tree
65
+ (function walk(node) {
66
+ if (!node)
67
+ return;
68
+ if (Array.isArray(node)) {
69
+ for (let i = 0; i < node.length; i++) {
70
+ const v = node[i];
71
+ if (typeof v === "string" && v.startsWith(urlPrefix)) {
72
+ tasks.push({ url: v, set: (newVal) => (node[i] = newVal) });
73
+ }
74
+ else if (typeof v === "object" && v !== null) {
75
+ walk(v);
76
+ }
77
+ }
78
+ return;
79
+ }
80
+ if (typeof node === "object") {
81
+ for (const k of Object.keys(node)) {
82
+ const v = node[k];
83
+ if (typeof v === "string" && v.startsWith(urlPrefix)) {
84
+ tasks.push({ url: v, set: (newVal) => (node[k] = newVal) });
85
+ }
86
+ else if (typeof v === "object" && v !== null) {
87
+ walk(v);
88
+ }
89
+ }
90
+ }
91
+ })(json);
92
+ // Deduplicate downloads for repeated URLs
93
+ const urlToRelative = new Map();
94
+ const downloads = [];
95
+ await runWithConcurrency(tasks, concurrency, async ({ url, set }) => {
96
+ if (urlToRelative.has(url)) {
97
+ set(urlToRelative.get(url));
98
+ return;
99
+ }
100
+ const guid = crypto.randomUUID();
101
+ const filename = `${guid}.${extension}`;
102
+ // relative path stored in JSON (posix style)
103
+ const relativePath = toPosixPath(path.join(targetFolder, filename));
104
+ // actual file path on disk
105
+ const absPath = path.join(absBase, targetFolder, filename);
106
+ await downloadToFile(url, absPath);
107
+ let finalPath = relativePath;
108
+ if (apiPrefix) {
109
+ finalPath = apiPrefix.endsWith('/')
110
+ ? `${apiPrefix}${relativePath}`
111
+ : `${apiPrefix}/${relativePath}`;
112
+ }
113
+ urlToRelative.set(url, finalPath);
114
+ downloads.push({ url, relativePath });
115
+ set(finalPath);
116
+ });
117
+ if (outputJsonPath) {
118
+ await fs.writeFile(outputJsonPath, JSON.stringify(json, null, 2), "utf8");
119
+ }
120
+ return { updated: json, replacedCount: tasks.length, downloads };
121
+ }
122
+ /* Example usage:
123
+ import { localizeFirebaseStorageUrls } from "./localizeFirebaseMedia.js";
124
+
125
+ const result = await localizeFirebaseStorageUrls({
126
+ inputJsonPath: "./workflow.json",
127
+ outputJsonPath: "./workflow.local.json",
128
+ baseFolder: "./base_folder",
129
+ targetFolder: "target_folder",
130
+ });
131
+
132
+ console.log("Replaced:", result.replacedCount);
133
+ console.log("Downloaded:", result.downloads.length);
134
+ */
135
+ //# sourceMappingURL=localizeFirebaseMedia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizeFirebaseMedia.js","sourceRoot":"","sources":["../../src/services/localizeFirebaseMedia.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=polyfill_canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfill_canvas.d.ts","sourceRoot":"","sources":["../../src/services/polyfill_canvas.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { createCanvas, Image } from "canvas";
2
+ if (!global.Canvas) {
3
+ global.Canvas = createCanvas(1, 1).constructor;
4
+ }
5
+ if (!global.Image) {
6
+ global.Image = Image;
7
+ }
8
+ // Force pdfjs to use Image, not createImageBitmap (which might be incompatible with node-canvas)
9
+ // Node 21+ has createImageBitmap but it produces objects that node-canvas doesn't accept in drawImage
10
+ if (global.createImageBitmap) {
11
+ global.createImageBitmap = undefined;
12
+ }
13
+ if (global.OffscreenCanvas) {
14
+ global.OffscreenCanvas = undefined;
15
+ }
16
+ if (global.URL && global.URL.createObjectURL) {
17
+ global.URL.createObjectURL = undefined;
18
+ }
19
+ //# sourceMappingURL=polyfill_canvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfill_canvas.js","sourceRoot":"","sources":["../../src/services/polyfill_canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAA4B,MAAM,QAAQ,CAAC;AAEvE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;AACnD,CAAC;AACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAChB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,CAAC;AAED,iGAAiG;AACjG,sGAAsG;AACtG,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC3B,MAAM,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACzC,CAAC;AACD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;IACzB,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;AACvC,CAAC;AACD,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;IAC3C,MAAM,CAAC,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,7 @@
1
+ export function promptRoutes(app: any): Promise<void>;
2
+ export function analyzeImageForTextAndIcons(base64Image: any, model: any): Promise<{
3
+ rawResponse: any;
4
+ parsed: any;
5
+ }>;
6
+ export const IMAGE_TEXT_ICON_DETECTOR_PROMPT: "Prompt: Image Text & Icon Detector\n\nYou are a precise visual-analysis model.\n\nYou are given one image.\nYour task is to inspect the image and determine:\n\nWhether any text is present.\n\nIf so, extract the exact text (OCR-style, as accurately as possible).\n\nWhether the image contains any icon-like graphics (symbols, UI icons, logos, small vector shapes, emojis, etc.).\n\nOutput Format\n\nRespond only with valid JSON using this schema:\n\n{\n \"hasText\": boolean,\n \"text\": \"string of detected text, or empty string if none\",\n \"hasIcon\": boolean\n}\n\nRules\n\nhasText is true if any legible text appears in the image.\n\ntext must contain the text exactly as visible.\n\nhasIcon is true if the image contains any graphic element that is not a photo of a real object (e.g., UI icons, logos, stylized symbols, arrows, emoji-style graphics).\n\nIf values are unknown or not visible, treat them as false or empty string.\n\nNo explanations. No commentary. JSON only.";
7
+ //# sourceMappingURL=promptRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptRoutes.d.ts","sourceRoot":"","sources":["../../src/services/promptRoutes.js"],"names":[],"mappings":"AAEA,sDA0BC;AAED;;;GAIC;AAED,ygCAiC4C"}
@@ -0,0 +1,70 @@
1
+ import { processLLMResponse, runImagePromptGrok, runPromptGrok, runPrompt } from "./services/runPrompt.js";
2
+
3
+ export async function promptRoutes(app) {
4
+
5
+ app.post('/api/prompts/chat', async (req, res) => {
6
+ try {
7
+ const { messages, model, max_tokens, jsonMode, timeout } = req.body;
8
+ const response = await runPrompt(messages, model, [], jsonMode, timeout);
9
+ res.json({ success: true, result: response });
10
+ } catch (error) {
11
+ console.error('Error in /api/prompts/chat:', error);
12
+ res.status(500).json({ success: false, error: error.message });
13
+ }
14
+ });
15
+
16
+ app.post('/api/prompts/image-check', async (req, res) => {
17
+ let result = null;
18
+ try {
19
+ const { base64_image, model } = req.body;
20
+ const analysis = await analyzeImageForTextAndIcons(base64_image, model);
21
+ result = analysis.rawResponse;
22
+ let parsed = analysis.parsed;
23
+ res.json({ success: true, result: parsed });
24
+ } catch (error) {
25
+ console.error('Error in /api/midjourney/run-image-prompt-grok:', error);
26
+ res.status(500).json({ success: false, error: error.message, result });
27
+ }
28
+ });
29
+ }
30
+
31
+ export async function analyzeImageForTextAndIcons(base64Image, model) {
32
+ const rawResponse = await runImagePromptGrok(IMAGE_TEXT_ICON_DETECTOR_PROMPT, base64Image, model);
33
+ const parsed = await processLLMResponse(rawResponse, model);
34
+ return { rawResponse, parsed };
35
+ }
36
+
37
+ export const IMAGE_TEXT_ICON_DETECTOR_PROMPT = `Prompt: Image Text & Icon Detector
38
+
39
+ You are a precise visual-analysis model.
40
+
41
+ You are given one image.
42
+ Your task is to inspect the image and determine:
43
+
44
+ Whether any text is present.
45
+
46
+ If so, extract the exact text (OCR-style, as accurately as possible).
47
+
48
+ Whether the image contains any icon-like graphics (symbols, UI icons, logos, small vector shapes, emojis, etc.).
49
+
50
+ Output Format
51
+
52
+ Respond only with valid JSON using this schema:
53
+
54
+ {
55
+ "hasText": boolean,
56
+ "text": "string of detected text, or empty string if none",
57
+ "hasIcon": boolean
58
+ }
59
+
60
+ Rules
61
+
62
+ hasText is true if any legible text appears in the image.
63
+
64
+ text must contain the text exactly as visible.
65
+
66
+ hasIcon is true if the image contains any graphic element that is not a photo of a real object (e.g., UI icons, logos, stylized symbols, arrows, emoji-style graphics).
67
+
68
+ If values are unknown or not visible, treat them as false or empty string.
69
+
70
+ No explanations. No commentary. JSON only.`;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptRoutes.js","sourceRoot":"","sources":["../../src/services/promptRoutes.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE3G,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAG;IAEpC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACxE,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC;YAC9B,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;YACxE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,WAAW,EAAE,KAAK;IAClE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,+BAA+B,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAiCJ,CAAC"}