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,375 @@
1
+ import fs from 'fs';
2
+ import { readProjectFile, saveProjectFile } from './utils.js';
3
+ /**
4
+ * Naïvely replaces the last “.xxx” extension with “.md”,
5
+ * or appends “.md” if none found.
6
+ *
7
+ * @param {string} filePath
8
+ * @returns {string}
9
+ */
10
+ function changeExtensionToMdSimple(filePath) {
11
+ // Look for the last dot after a slash; if none, just append .md
12
+ const idx = filePath.lastIndexOf('.');
13
+ const slash = Math.max(filePath.lastIndexOf('/'), filePath.lastIndexOf('\\'));
14
+ if (idx > slash) {
15
+ // has an extension -> replace it
16
+ return filePath.slice(0, idx) + '.md';
17
+ }
18
+ else {
19
+ // no extension -> append
20
+ return filePath + '.md';
21
+ }
22
+ }
23
+ /**
24
+ * Generates a Markdown section given a title and an array of dialog lines.
25
+ *
26
+ * @param {string} name - The title of the section.
27
+ * @param {string[]} dialogs - An array of dialog strings.
28
+ * @returns {string} - The assembled Markdown.
29
+ */
30
+ function writeMarkdownSection(name, dialogs) {
31
+ // Start with a level-2 heading
32
+ let md = `## ${name}\n\n`;
33
+ // Render each dialog line as a bullet
34
+ for (const line of dialogs) {
35
+ md += `- ${line}\n`;
36
+ }
37
+ return md;
38
+ }
39
+ function expandOnce(input) {
40
+ return input.reduce((out, el) => {
41
+ if (Array.isArray(el)) {
42
+ out.push(...el);
43
+ }
44
+ else {
45
+ out.push(el);
46
+ }
47
+ return out;
48
+ }, []);
49
+ }
50
+ export const toggleEndCuts = (targetFile, channel = '') => {
51
+ console.log('toggleEndCuts', targetFile);
52
+ let data = readProjectFile(targetFile);
53
+ data.map((temp, index) => {
54
+ if (temp?.prompts) {
55
+ let found = temp.prompts.find(prompt => {
56
+ return LIKE_AND_SUBSCRIBE_PROMPT.map(t => t.prompt).includes(prompt);
57
+ });
58
+ if (found) {
59
+ console.log('found prompt ' + temp.prompts.length);
60
+ temp.prompts = temp.prompts.filter(prompt => {
61
+ return !LIKE_AND_SUBSCRIBE_PROMPT.map(t => t.prompt).includes(prompt);
62
+ });
63
+ console.log('after prompt ' + temp.prompts.length);
64
+ temp.dialog = temp.dialog.filter(dialog => {
65
+ return !LIKE_AND_SUBSCRIBE.includes(dialog);
66
+ });
67
+ }
68
+ else {
69
+ temp.dialog.push(getLikeAndSubscribe());
70
+ temp.prompts.push(getLikeAndSubscribePrompt());
71
+ }
72
+ }
73
+ });
74
+ saveProjectFile(targetFile, data);
75
+ };
76
+ export const processFile = (targetFile, sourceFile = 'F:\\dev\\midjourney-source\\source.jsonl', channel = '') => {
77
+ let data = readProjectFile(targetFile);
78
+ data = expandOnce(data);
79
+ let source = (fs.readFileSync(sourceFile, 'utf-8')).split('\n').map(t => {
80
+ let v = JSON.parse(t);
81
+ if (!v.fixed) {
82
+ v.name = v.title;
83
+ v.fixed = true;
84
+ }
85
+ v.full_command = fix(v.full_command);
86
+ return JSON.stringify(v);
87
+ }).join('\n');
88
+ fs.writeFileSync(sourceFile, source, 'utf-8');
89
+ console.log(targetFile);
90
+ const character = '';
91
+ let all_description = '';
92
+ let markDown = '';
93
+ data = data.filter(x => x);
94
+ data.map(d => {
95
+ if (d?.title && !d?.name) {
96
+ d.name = d.title;
97
+ }
98
+ if (!d?.portrait_prompt && d.name) {
99
+ d.portrait_prompt = d.name;
100
+ }
101
+ return d;
102
+ })
103
+ .filter(x => (!character || x.character === character) && x.name && ((x.prompts && x.dialog && Array.isArray(x.dialog) && Array.isArray(x.prompts)) || x.lines?.length))
104
+ .map((temp, index) => {
105
+ temp.index = index;
106
+ if (!temp.lsAdded) {
107
+ temp.lsAdded = true;
108
+ // if (temp.dialog)
109
+ // temp.dialog.push(getLikeAndSubscribe())
110
+ // if (temp.prompts)
111
+ // temp.prompts.push(getLikeAndSubscribePrompt())
112
+ }
113
+ if (temp.lyrics) {
114
+ temp.lyrics.map(lyric => {
115
+ console.log(lyric);
116
+ if (!lyric.prompts) {
117
+ lyric.prompts = [];
118
+ }
119
+ lyric.prompts = lyric.prompts.map(fix);
120
+ if (!lyric.original_name) {
121
+ lyric.original_name = lyric.name;
122
+ }
123
+ lyric.name = fix(lyric.name);
124
+ });
125
+ }
126
+ if (temp.prompts)
127
+ temp.prompts = temp.prompts.map(fix);
128
+ if (temp?.dialog?.length) {
129
+ if (temp.dialog && temp.dialog.length > 0) {
130
+ temp.description = temp.dialog.join(' ');
131
+ all_description += temp.description + ' ';
132
+ }
133
+ }
134
+ if (temp.portrait_prompt && !temp.original_portrait_prompt) {
135
+ temp.original_portrait_prompt = temp.portrait_prompt;
136
+ temp.portrait_prompt = fix(temp.portrait_prompt);
137
+ }
138
+ if (!temp.original_name) {
139
+ temp.original_name = temp.name;
140
+ temp.name = fix(temp.name);
141
+ temp.use_original_name = true;
142
+ temp.channel = channel;
143
+ }
144
+ });
145
+ data = data.filter(x => x.name && ((x.prompts?.length && x.prompts?.length === x.dialog?.length) || x.lines?.length));
146
+ let dataNames = {};
147
+ data.map(f => {
148
+ if (!dataNames[f.name]) {
149
+ dataNames[f.name] = [f.name];
150
+ }
151
+ else {
152
+ let newname = `${f.name} ${generateRandomStringSet(1, 4)[0]}`;
153
+ dataNames[newname] = [newname];
154
+ f.name = newname;
155
+ }
156
+ });
157
+ if (character)
158
+ data = data.filter(x => x.character === character);
159
+ const MAX_CHARACTERS = 5000;
160
+ data = data.map((d, index) => {
161
+ let total = 0;
162
+ if (d.lines) {
163
+ d.lines = d.lines.filter(t => {
164
+ if (typeof t === 'string') {
165
+ t = t.trim();
166
+ }
167
+ if (t && t.length > 0) {
168
+ return true;
169
+ }
170
+ return false;
171
+ });
172
+ d.lines.map(t => {
173
+ total += t.length;
174
+ });
175
+ let splitcount = Math.ceil(total / MAX_CHARACTERS);
176
+ if (splitcount > 1) {
177
+ let newset = [];
178
+ console.log(`Splitting ${d.name} into ${splitcount} parts of ${Math.ceil(total / splitcount)} lines each`);
179
+ for (let i = 0; i < splitcount; i++) {
180
+ let duplicate = JSON.parse(JSON.stringify(d));
181
+ duplicate.name = `${d.name} ${i + 1} of ${splitcount}`;
182
+ const count = Math.ceil(duplicate.lines.length / splitcount);
183
+ duplicate.dialog = d.dialog ? d.dialog.slice(i * count, (i + 1) * count) : d.dialog;
184
+ duplicate.prompts = d.prompts ? d.prompts.slice(i * count, (i + 1) * count) : d.prompts;
185
+ duplicate.lines = d.lines.slice(i * count, (i + 1) * count);
186
+ newset.push(duplicate);
187
+ }
188
+ return newset;
189
+ }
190
+ }
191
+ return d;
192
+ });
193
+ data = data.flat();
194
+ data = data.filter(x => ((x.dialog && x.dialog.length > 0 && x.prompts && x.prompts.length > 0) || x.lines?.length));
195
+ saveProjectFile(targetFile, data);
196
+ fs.writeFileSync(changeExtensionToMdSimple(targetFile), markDown);
197
+ };
198
+ /**
199
+ * Generate a single random string of given length.
200
+ *
201
+ * @param {number} length – length of the string to generate
202
+ * @param {string} [charset] – string of characters to choose from
203
+ * @returns {string}
204
+ */
205
+ function generateRandomString(length, charset) {
206
+ const chars = charset || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
207
+ let result = '';
208
+ for (let i = 0; i < length; i++) {
209
+ // pick a random index into `chars`
210
+ const idx = Math.floor(Math.random() * chars.length);
211
+ result += chars[idx];
212
+ }
213
+ return result;
214
+ }
215
+ /**
216
+ * Generate a set (unique array) of random strings.
217
+ *
218
+ * @param {number} count – how many strings you need
219
+ * @param {number} length – length of each string
220
+ * @param {string} [charset] – optional custom character set
221
+ * @returns {string[]} – array of unique random strings
222
+ */
223
+ function generateRandomStringSet(count, length, charset) {
224
+ const set = new Set();
225
+ while (set.size < count) {
226
+ set.add(generateRandomString(length, charset));
227
+ }
228
+ return Array.from(set);
229
+ }
230
+ export function fix(t) {
231
+ if (t) {
232
+ if (typeof t !== 'string') {
233
+ t = `${t}`;
234
+ }
235
+ t = t.replaceAll('-', ' ');
236
+ t = t.replaceAll('—', ' ');
237
+ t = t.replaceAll('"', ' ');
238
+ t = t.replaceAll("'", ' ');
239
+ t = t.replaceAll('’', '');
240
+ t = t.replaceAll(',', '');
241
+ t = t.replaceAll('.', '');
242
+ t = t.replaceAll(')', '');
243
+ t = t.replaceAll('(', '');
244
+ t = t.replaceAll(' ', ' ');
245
+ t = t.replaceAll('…', '');
246
+ t = sanitizeWindowsFilenameStrict(t);
247
+ t = removeExtraSpaces(t);
248
+ t = sanitizeWindowsFilenameSafe(t);
249
+ }
250
+ else if (t) {
251
+ console.log(t);
252
+ }
253
+ return t;
254
+ }
255
+ function removeExtraSpaces(str) {
256
+ return str.replace(/\s{2,}/g, ' ');
257
+ }
258
+ function sanitizeWindowsFilenameSafe(filename) {
259
+ const invalidCharsRegex = /[\\\/:*?"<>|]/g;
260
+ let clean = filename.replace(invalidCharsRegex, '').trim();
261
+ // Prevent special reserved names like ".", ".."
262
+ if (clean === '.' || clean === '..' || clean.length === 0) {
263
+ clean = 'untitled';
264
+ }
265
+ return clean;
266
+ }
267
+ function sanitizeWindowsFilenameStrict(filename) {
268
+ // Disallowed Windows filename characters
269
+ const invalidCharsRegex = /[\\\/:*?"<>|]/g;
270
+ // Emoji and other non-BMP characters (surrogate pairs)
271
+ const emojiRegex = /([\uD800-\uDBFF][\uDC00-\uDFFF])/g;
272
+ // Keep only ASCII printable characters (you can customize this)
273
+ const allowedCharsRegex = /[^a-zA-Z0-9 _.-]/g;
274
+ return filename
275
+ .replace(invalidCharsRegex, '')
276
+ .replace(emojiRegex, '')
277
+ .replace(allowedCharsRegex, '')
278
+ .trim() || 'untitled';
279
+ }
280
+ function getLikeAndSubscribe() {
281
+ let temp = LIKE_AND_SUBSCRIBE;
282
+ return temp[Math.floor(Math.random() * temp.length)];
283
+ }
284
+ function getLikeAndSubscribePrompt() {
285
+ let temp = LIKE_AND_SUBSCRIBE_PROMPT;
286
+ return temp[Math.floor(Math.random() * temp.length)].prompt;
287
+ }
288
+ const LIKE_AND_SUBSCRIBE_PROMPT = [
289
+ {
290
+ "prompt": "A comic style explosion with the words LIKE and Sub bursting out in a colorful digital landscape setting depicted with bold and playful detail. Rendered in a pop art cartoon style with vibrant lighting conditions featuring a neon color scheme that evokes a sense of excitement. The composition highlights stylized buttons and dynamic motion lines all captured in high energy animated quality with cinematic flair and 8K resolution."
291
+ },
292
+ {
293
+ "prompt": "A sleek futuristic interface with holographic thumbs up and Sub icons floating above a digital landscape depicted with clean and modern detail. Rendered in a cyberpunk tech art style with glowing ambient lighting featuring a blue and silver color scheme that evokes a sense of cool professionalism. The composition highlights interactive UI elements and subtle animations like pulsing effects captured in hyper realistic 8K resolution."
294
+ },
295
+ {
296
+ "prompt": "A cozy animated scene of a content creator waving at the camera with Like and Sub icons floating beside them in a homey streaming setup depicted with warm and friendly detail. Rendered in a stylized 2D animation style with soft lighting featuring a pastel color scheme that evokes a sense of comfort and community. The composition highlights decorative objects and gentle animations captured in HD with a wholesome vibe."
297
+ },
298
+ {
299
+ "prompt": "A dynamic retro arcade setting with flashing Like and Sub text on pixelated screens depicted with nostalgic and playful detail. Rendered in a pixel art style with neon lighting and a purple orange color scheme evoking a fun upbeat mood. The scene features glowing arcade cabinets animated pixels and a character pressing giant buttons all captured in vibrant game inspired quality with 8K resolution."
300
+ },
301
+ {
302
+ "prompt": "A bright and whimsical scene of cartoon characters high-fiving next to giant 'Like' and 'Sub' signs in a fantasy meadow, depicted with cheerful and imaginative detail. Rendered in a children’s book illustration style with daylight lighting, featuring a rainbow-toned color scheme that evokes a sense of joy. The composition includes animated sparkles and happy expressions, captured in vibrant, high-detail resolution."
303
+ },
304
+ {
305
+ "prompt": "A cinematic YouTube studio set with spotlighted 'Like' and 'Sub' buttons on glowing pedestals, depicted with dramatic and sleek detail. Rendered in a cinematic realism style with high-contrast lighting, featuring a red-black color scheme that evokes a sense of intensity and importance. The scene highlights polished chrome effects and smoke in the background, captured in ultra-HD with 8K resolution."
306
+ },
307
+ {
308
+ "prompt": "A playful mobile interface zoom-in where a hand taps 'like' and 'Sub' buttons with fun bouncy animations, depicted with sleek and tech-savvy detail. Rendered in a modern UI/UX illustration style with gradient lighting, featuring a colorful and energetic palette that evokes a sense of interactivity. Elements like swipes, taps, and spark effects are emphasized, in high-resolution animated style."
309
+ },
310
+ {
311
+ "prompt": "An energetic sports-themed scene with a mascot character holding up 'LIKE' and 'Sub' signs in a packed stadium, depicted with epic and enthusiastic detail. Rendered in a vibrant comic style with stadium lighting, featuring a bold red and gold color scheme that evokes excitement and hype. The composition highlights crowd energy and motion blur effects, captured in crisp 4K detail with dramatic angles."
312
+ },
313
+ {
314
+ "prompt": "A dreamy clouds-and-stars backdrop with floating 'Like' and 'Sub' icons drifting peacefully, depicted with soft and ethereal detail. Rendered in a fantasy illustration style with moonlight-inspired lighting, featuring a pastel blue-purple color scheme that evokes calm and serenity. The composition includes twinkling stars, soft glows, and gentle motion trails, captured in painterly 8K resolution."
315
+ },
316
+ {
317
+ "prompt": "A superhero-style figure flying through the sky with a 'LIKE' shield and a 'Sub' cape, depicted with heroic and bold detail. Rendered in a comic book realism style with dramatic lighting, featuring a vivid red-blue color scheme that evokes bravery and excitement. The composition highlights action poses, motion blur trails, and cityscape backgrounds, captured in dynamic, cinematic 8K resolution."
318
+ },
319
+ {
320
+ "prompt": "A visual explosion of data and particles forming the words 'Like and Sub', depicted in a digital matrix-like setting with high-tech and abstract detail. Rendered in a generative art style with dark ambient lighting, featuring green and black color tones that evoke mystery and complexity. The composition includes animated glitches and floating code, captured in futuristic 8K resolution."
321
+ },
322
+ {
323
+ "prompt": "A fantasy tavern where adventurers raise their mugs beneath a glowing 'Like and Sub' sign carved in stone, depicted with epic and whimsical detail. Rendered in a high-fantasy digital painting style with torch-lit lighting, featuring earthy tones and golden highlights that evoke adventure and warmth. The scene includes mythical creatures and rustic decor, captured in storybook-quality 8K detail."
324
+ },
325
+ {
326
+ "prompt": "A bustling cityscape billboard glowing with 'LIKE' and 'Sub' in giant neon letters, depicted with urban and energetic detail. Rendered in a night city photography style with high saturation lighting, featuring a vibrant blue and pink color scheme that evokes nightlife energy. The composition includes reflections in puddles, passing traffic, and cinematic framing in 8K resolution."
327
+ },
328
+ {
329
+ "prompt": "An underwater coral reef scene where fish swim past signs reading 'LIKE' and 'Sub', depicted with colorful and magical detail. Rendered in an aquatic fantasy illustration style with glowing ocean light beams, featuring a teal-orange color scheme that evokes wonder and curiosity. The composition highlights sea life, bubbles, and animated light rays, in vibrant 8K detail."
330
+ },
331
+ {
332
+ "prompt": "A surreal desert scene with two giant stone tablets labeled 'LIKE' and 'Sub' rising from the sand, depicted with mystical and ancient detail. Rendered in a Dali-inspired dreamscape style with golden hour lighting, featuring warm desert tones and surreal shadows that evoke awe. The scene includes shifting sands and floating dust particles, captured in hyper-detailed 8K resolution."
333
+ },
334
+ {
335
+ "prompt": "A game show style spotlight on giant LIKE and Sub buzzers with a crowd cheering in the background depicted with high energy and colorful detail. Rendered in a TV studio illustration style with saturated lighting featuring a confetti filled rainbow palette that evokes celebration. The composition includes flashing lights animated reactions and a presenter character captured in lively 4K resolution."
336
+ },
337
+ {
338
+ "prompt": "A relaxing nature setting with a bird tapping a glowing 'Like' button on a tree branch and a squirrel holding a 'Sub' sign, depicted with whimsical and charming detail. Rendered in a storybook watercolor style with natural daylight, featuring green and brown earthy tones that evoke calm and friendliness. The composition includes soft textures and light animations, captured in painterly 4K resolution."
339
+ },
340
+ {
341
+ "prompt": "A punk rock concert stage with the words LIKE and Sub projected in graffiti style visuals behind a performer depicted with raw and energetic detail. Rendered in a grunge illustration style with strobe lighting featuring red black neon tones that evoke rebellious spirit. The scene includes jumping crowd silhouettes animated flames and flying confetti captured in intense 8K resolution."
342
+ },
343
+ {
344
+ "prompt": "A classroom chalkboard with cute doodles of 'Like' and 'Sub', depicted in a charming schoolroom setting with playful and nostalgic detail. Rendered in a hand-drawn cartoon style with soft morning lighting, featuring warm neutral tones that evoke innocence and fun. The composition includes animated chalk particles, desk items, and a smiling teacher character, captured in HD illustration style."
345
+ },
346
+ {
347
+ "prompt": "A high-speed sci-fi spaceship cockpit where a pilot taps holographic 'LIKE' and 'Sub' controls, depicted with detailed and thrilling sci-fi realism. Rendered in a cinematic space-opera style with ambient blue lighting, featuring a metallic tech color scheme that evokes intensity and future adventure. The composition highlights glowing panels, starfields, and motion effects, in immersive 8K quality."
348
+ }
349
+ ].map(t => {
350
+ t.prompt = fix(t.prompt);
351
+ return t;
352
+ });
353
+ const LIKE_AND_SUBSCRIBE = [
354
+ "Smash that like button and hit subscribe for more!",
355
+ "Give this video a thumbs up and don’t forget to subscribe!",
356
+ "Tap like, ring the bell, and join the fam by subscribing!",
357
+ "Enjoyed the content? Like it and stick around with a sub!",
358
+ "If this made you smile, drop a like and sub for more!",
359
+ "Hit that like button and make sure you’re subscribed!",
360
+ "Don’t just watch—like, comment, and subscribe!",
361
+ "Click like and subscribe for your daily dose of awesome!",
362
+ "Like what you see? Subscribe and keep it coming!",
363
+ "Show some love with a like, and join us by subscribing!",
364
+ "Boost the algorithm—like, sub, and share!",
365
+ "Love this? Give it a like and sub so you never miss out!",
366
+ "If you’re vibing with this, hit like and tap that sub button!",
367
+ "Like, subscribe, and let the good times roll!",
368
+ "Help this channel grow—like and subscribe today!",
369
+ "Before you go, smash that like and hit subscribe!",
370
+ "Support the channel—drop a like and subscribe!",
371
+ "Give us a boost with a like, and ride along by subscribing!",
372
+ "Tap that like, hit that sub, and be part of the crew!",
373
+ "Liked it? Subscribed yet? Go on, do both!"
374
+ ];
375
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../src/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC9D;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAC,QAAQ;IACvC,gEAAgE;IAChE,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QACd,iCAAiC;QACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IAC1C,CAAC;SAAM,CAAC;QACJ,yBAAyB;QACzB,OAAO,QAAQ,GAAG,KAAK,CAAC;IAC5B,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,IAAI,EAAE,OAAO;IACvC,+BAA+B;IAC/B,IAAI,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC;IAE1B,sCAAsC;IACtC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAK;IACrB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;QAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAGD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;IACtD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACzC,IAAI,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAEvC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrB,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;YAChB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACnC,OAAO,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YACxE,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oBACxC,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;oBACtC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;YACP,CAAC;iBACI,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;gBACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAA;YAClD,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAC;IACH,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,0CAA0C,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;IAC7G,IAAI,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IACvB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACpE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACX,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAExB,MAAM,SAAS,GAAG,EAAE,CAAC;IACrB,IAAI,eAAe,GAAG,EAAE,CAAA;IACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,CAAC,EAAE,eAAe,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAChC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;SACG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACvK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,mBAAmB;YACnB,8CAA8C;YAC9C,oBAAoB;YACpB,qDAAqD;QACzD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACjB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;gBACvB,CAAC;gBAED,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;oBACvB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC;gBACrC,CAAC;gBACD,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC,CAAC,CAAA;QACN,CAAC;QACD,IAAI,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACzC,eAAe,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YAC9C,CAAC;QACL,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,eAAe,CAAC;YACrD,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;IACL,CAAC,CAAC,CAAA;IACN,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACtH,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACT,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;aACI,CAAC;YACF,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAC7D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC9B,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC;QACrB,CAAC;IACL,CAAC,CAAC,CAAA;IACF,IAAI,SAAS;QACT,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;IACtD,MAAM,cAAc,GAAG,IAAI,CAAC;IAC5B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;YAGH,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACZ,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;YACrB,CAAC,CAAC,CAAC;YACH,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;YACnD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,SAAS,UAAU,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC3G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9C,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,UAAU,EAAE,CAAC;oBACvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;oBAC7D,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBACpF,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBACxF,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,CAAC;gBACD,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAErH,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC,CAAA;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,MAAM,EAAE,OAAO;IACzC,MAAM,KAAK,GAAG,OAAO,IAAI,gEAAgE,CAAC;IAC1F,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,mCAAmC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,OAAO,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAGD,MAAM,UAAU,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC;QACJ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACf,CAAC;QACD,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,CAAC,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,GAAG,2BAA2B,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;SACI,IAAI,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,CAAC;AAEb,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAG;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,2BAA2B,CAAC,QAAQ;IACzC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;IAC3C,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3D,gDAAgD;IAChD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,KAAK,GAAG,UAAU,CAAC;IACvB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,6BAA6B,CAAC,QAAQ;IAC3C,yCAAyC;IACzC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;IAE3C,uDAAuD;IACvD,MAAM,UAAU,GAAG,mCAAmC,CAAC;IAEvD,gEAAgE;IAChE,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;IAE9C,OAAO,QAAQ;SACV,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,IAAI,EAAE,IAAI,UAAU,CAAC;AAC9B,CAAC;AACD,SAAS,mBAAmB;IACxB,IAAI,IAAI,GAAG,kBAAkB,CAAC;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,yBAAyB;IAC9B,IAAI,IAAI,GAAG,yBAAyB,CAAC;IAErC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAChE,CAAC;AACD,MAAM,yBAAyB,GAAG;IAC9B;QACI,QAAQ,EAAE,ibAAib;KAC9b;IACD;QACI,QAAQ,EAAE,qbAAqb;KAClc;IACD;QACI,QAAQ,EAAE,saAAsa;KACnb;IACD;QACI,QAAQ,EAAE,kZAAkZ;KAC/Z;IACD;QACI,QAAQ,EAAE,oaAAoa;KACjb;IACD;QACI,QAAQ,EAAE,mZAAmZ;KACha;IACD;QACI,QAAQ,EAAE,8YAA8Y;KAC3Z;IACD;QACI,QAAQ,EAAE,qZAAqZ;KACla;IACD;QACI,QAAQ,EAAE,iZAAiZ;KAC9Z;IACD;QACI,QAAQ,EAAE,+YAA+Y;KAC5Z;IACD;QACI,QAAQ,EAAE,sYAAsY;KACnZ;IACD;QACI,QAAQ,EAAE,+YAA+Y;KAC5Z;IACD;QACI,QAAQ,EAAE,gYAAgY;KAC7Y;IACD;QACI,QAAQ,EAAE,sXAAsX;KACnY;IACD;QACI,QAAQ,EAAE,gYAAgY;KAC7Y;IACD;QACI,QAAQ,EAAE,kZAAkZ;KAC/Z;IACD;QACI,QAAQ,EAAE,qZAAqZ;KACla;IACD;QACI,QAAQ,EAAE,oYAAoY;KACjZ;IACD;QACI,QAAQ,EAAE,6YAA6Y;KAC1Z;IACD;QACI,QAAQ,EAAE,mZAAmZ;KACha;CACJ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;IACN,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,CAAC,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG;IACvB,oDAAoD;IACpD,4DAA4D;IAC5D,2DAA2D;IAC3D,2DAA2D;IAC3D,uDAAuD;IACvD,uDAAuD;IACvD,gDAAgD;IAChD,0DAA0D;IAC1D,kDAAkD;IAClD,yDAAyD;IACzD,2CAA2C;IAC3C,0DAA0D;IAC1D,+DAA+D;IAC/D,+CAA+C;IAC/C,kDAAkD;IAClD,mDAAmD;IACnD,gDAAgD;IAChD,6DAA6D;IAC7D,uDAAuD;IACvD,2CAA2C;CAC9C,CAAA"}
@@ -0,0 +1,7 @@
1
+ export declare function promptRoutes(app: any): Promise<void>;
2
+ export declare function analyzeImageForTextAndIcons(base64Image: any, model: any): Promise<{
3
+ rawResponse: string;
4
+ parsed: any;
5
+ }>;
6
+ export declare 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/promptRoutes.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,GAAG,KAAA,iBA0BrC;AAED,wBAAsB,2BAA2B,CAAC,WAAW,KAAA,EAAE,KAAK,KAAA;;;GAInE;AAED,eAAO,MAAM,+BAA+B,69BAiCD,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { processLLMResponse, runImagePromptGrok, runPrompt } from "./services/runPrompt.js";
2
+ export async function promptRoutes(app) {
3
+ app.post('/api/prompts/chat', async (req, res) => {
4
+ try {
5
+ const { messages, model, max_tokens, jsonMode, timeout } = req.body;
6
+ const response = await runPrompt(messages, model, [], jsonMode, timeout);
7
+ res.json({ success: true, result: response });
8
+ }
9
+ catch (error) {
10
+ console.error('Error in /api/prompts/chat:', error);
11
+ res.status(500).json({ success: false, error: error.message });
12
+ }
13
+ });
14
+ app.post('/api/prompts/image-check', async (req, res) => {
15
+ let result = null;
16
+ try {
17
+ const { base64_image, model } = req.body;
18
+ const analysis = await analyzeImageForTextAndIcons(base64_image, model);
19
+ result = analysis.rawResponse;
20
+ let parsed = analysis.parsed;
21
+ res.json({ success: true, result: parsed });
22
+ }
23
+ catch (error) {
24
+ console.error('Error in /api/midjourney/run-image-prompt-grok:', error);
25
+ res.status(500).json({ success: false, error: error.message, result });
26
+ }
27
+ });
28
+ }
29
+ export async function analyzeImageForTextAndIcons(base64Image, model) {
30
+ const rawResponse = await runImagePromptGrok(IMAGE_TEXT_ICON_DETECTOR_PROMPT, base64Image, model);
31
+ const parsed = await processLLMResponse(rawResponse, model);
32
+ return { rawResponse, parsed };
33
+ }
34
+ export const IMAGE_TEXT_ICON_DETECTOR_PROMPT = `Prompt: Image Text & Icon Detector
35
+
36
+ You are a precise visual-analysis model.
37
+
38
+ You are given one image.
39
+ Your task is to inspect the image and determine:
40
+
41
+ Whether any text is present.
42
+
43
+ If so, extract the exact text (OCR-style, as accurately as possible).
44
+
45
+ Whether the image contains any icon-like graphics (symbols, UI icons, logos, small vector shapes, emojis, etc.).
46
+
47
+ Output Format
48
+
49
+ Respond only with valid JSON using this schema:
50
+
51
+ {
52
+ "hasText": boolean,
53
+ "text": "string of detected text, or empty string if none",
54
+ "hasIcon": boolean
55
+ }
56
+
57
+ Rules
58
+
59
+ hasText is true if any legible text appears in the image.
60
+
61
+ text must contain the text exactly as visible.
62
+
63
+ 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).
64
+
65
+ If values are unknown or not visible, treat them as false or empty string.
66
+
67
+ No explanations. No commentary. JSON only.`;
68
+ //# sourceMappingURL=promptRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptRoutes.js","sourceRoot":"","sources":["../src/promptRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAiB,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"}
@@ -0,0 +1,23 @@
1
+ import { EventEmitter } from 'events';
2
+ declare class QueueManager extends EventEmitter {
3
+ private _queue;
4
+ private _nextId;
5
+ private _jobs;
6
+ constructor();
7
+ enqueue(fn: (signal: AbortSignal, progress: (p: number) => void) => Promise<void> | void): number;
8
+ status(id: any): {
9
+ id: any;
10
+ status: string;
11
+ progress: number;
12
+ };
13
+ cancel(id: any): boolean;
14
+ list(): {
15
+ id: number;
16
+ status: string;
17
+ progress: number;
18
+ }[];
19
+ waitForJobId(id: any, callback: any): Promise<unknown>;
20
+ }
21
+ declare const _default: QueueManager;
22
+ export default _default;
23
+ //# sourceMappingURL=queueManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queueManager.d.ts","sourceRoot":"","sources":["../src/queueManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,cAAM,YAAa,SAAQ,YAAY;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAA6F;;IAS1G,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAqCxF,MAAM,CAAC,EAAE,KAAA;;;;;IAOT,MAAM,CAAC,EAAE,KAAA;IAOT,IAAI;;;;;IAOE,YAAY,CAAC,EAAE,KAAA,EAAE,QAAQ,KAAA;CAsBhC;;AAED,wBAAkC"}
@@ -0,0 +1,96 @@
1
+ // queueManager.js
2
+ import PQueue from 'p-queue';
3
+ import { EventEmitter } from 'events';
4
+ class QueueManager extends EventEmitter {
5
+ _queue;
6
+ _nextId;
7
+ _jobs;
8
+ constructor() {
9
+ super();
10
+ this._queue = new PQueue({ concurrency: 1 });
11
+ this._nextId = 1;
12
+ this._jobs = new Map(); // jobId → { status, progress, abort }
13
+ }
14
+ enqueue(fn) {
15
+ const id = this._nextId++;
16
+ const abort = new AbortController();
17
+ this._jobs.set(id, {
18
+ status: 'queued',
19
+ progress: 0,
20
+ abort
21
+ });
22
+ this._queue.add(async () => {
23
+ const job = this._jobs.get(id);
24
+ job.status = 'running';
25
+ this.emit('start', { id });
26
+ try {
27
+ await fn(abort.signal, p => {
28
+ job.progress = p;
29
+ this.emit('progress', { id, progress: p });
30
+ });
31
+ job.status = 'done';
32
+ job.progress = 100;
33
+ this.emit('done', { id });
34
+ }
35
+ catch (err) {
36
+ if (err.name === 'AbortError') {
37
+ job.status = 'aborted';
38
+ this.emit('aborted', { id });
39
+ }
40
+ else {
41
+ job.status = 'error';
42
+ job.error = err;
43
+ this.emit('error', { id, error: err });
44
+ }
45
+ }
46
+ }).catch(() => { });
47
+ return id;
48
+ }
49
+ status(id) {
50
+ const job = this._jobs.get(id);
51
+ return job
52
+ ? { id, status: job.status, progress: job.progress }
53
+ : null;
54
+ }
55
+ cancel(id) {
56
+ const job = this._jobs.get(id);
57
+ if (!job)
58
+ return false;
59
+ job.abort.abort();
60
+ return true;
61
+ }
62
+ list() {
63
+ return Array.from(this._jobs.entries()).map(([id, j]) => ({
64
+ id,
65
+ status: j.status,
66
+ progress: j.progress
67
+ }));
68
+ }
69
+ async waitForJobId(id, callback) {
70
+ return new Promise((resolve) => {
71
+ const checkStatus = () => {
72
+ const job = this._jobs.get(id);
73
+ if (job) {
74
+ if (job.status === 'done') {
75
+ callback(job);
76
+ resolve(job);
77
+ }
78
+ else if (job.status === 'error') {
79
+ callback(job);
80
+ resolve(null);
81
+ }
82
+ else {
83
+ callback(job);
84
+ setTimeout(checkStatus, 1000);
85
+ }
86
+ }
87
+ else {
88
+ resolve(null);
89
+ }
90
+ };
91
+ checkStatus();
92
+ });
93
+ }
94
+ }
95
+ export default new QueueManager();
96
+ //# sourceMappingURL=queueManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queueManager.js","sourceRoot":"","sources":["../src/queueManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function runflow(row_flow_directory_func: any, workflow_trained_model_folder: any, workflow_folder_func: any): {
2
+ handleRunFlowMessage: (data: any) => Promise<void>;
3
+ handleRunStatus: () => void;
4
+ startFlow: () => void;
5
+ stopFlow: () => void;
6
+ clearFlow: () => void;
7
+ };
8
+ //# sourceMappingURL=run-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-flow.d.ts","sourceRoot":"","sources":["../src/run-flow.ts"],"names":[],"mappings":"AAIA,wBAAgB,OAAO,CAAC,uBAAuB,KAAA,EAAE,6BAA6B,KAAA,EAAE,oBAAoB,KAAA;;;;;;EA0LnG"}