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,355 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import yaml from 'js-yaml';
4
+ import sharp from 'sharp';
5
+ /**
6
+ * Process hierarchical annotations and generate YOLO training data
7
+ * @param {string} imagePath - Path to the source image
8
+ * @param {Object} annotationData - Annotation data structure
9
+ * @param {string} outputDir - Target output directory
10
+ * @param {Object} options - Processing options
11
+ */
12
+ export async function processAnnotations(imagePath, annotationData, outputDir, options = {}) {
13
+ try {
14
+ // Load and get image dimensions
15
+ const imageBuffer = await fs.readFile(imagePath);
16
+ console.log('Loaded image:', imagePath);
17
+ const image = sharp(imageBuffer);
18
+ const { width: imgWidth, height: imgHeight } = await image.metadata();
19
+ console.log(`Image dimensions: ${imgWidth}x${imgHeight}`);
20
+ const defaults = {
21
+ prefix: `sample_${Date.now()}`,
22
+ valSplit: 0.2,
23
+ augCount: 100, // For now, just process once without jittering
24
+ jitterPos: Math.min(imgWidth * 0.025, 13),
25
+ jitterSize: Math.min(imgWidth * 0.05, 25),
26
+ rootParentPercentageX: 0.1,
27
+ rootParentPercentageY: 0.1,
28
+ minAreaRatio: 0.05,
29
+ onProgress: null // Callback for progress updates
30
+ };
31
+ const config = { ...defaults, ...options };
32
+ // Parse annotation data structure
33
+ const { classes, parents, boxes } = annotationData;
34
+ // Build class hierarchy helpers
35
+ const classToIndex = {};
36
+ classes.forEach((name, idx) => classToIndex[name] = idx);
37
+ const getDepth = (className) => {
38
+ let depth = 0;
39
+ let current = className;
40
+ while (parents[current]) {
41
+ depth++;
42
+ current = parents[current];
43
+ if (depth > 10)
44
+ break; // Prevent infinite loops
45
+ }
46
+ return depth;
47
+ };
48
+ // Group classes by depth
49
+ const depthToClasses = {};
50
+ classes.forEach(className => {
51
+ const depth = getDepth(className);
52
+ if (!depthToClasses[depth])
53
+ depthToClasses[depth] = [];
54
+ depthToClasses[depth].push(className);
55
+ });
56
+ // Create directory structure for each depth
57
+ for (const depth of Object.keys(depthToClasses)) {
58
+ const levelDir = path.join(outputDir, `level_${depth}`);
59
+ await fs.mkdir(path.join(levelDir, 'images', 'train'), { recursive: true });
60
+ console.log(`Created directory: ${path.join(levelDir, 'images', 'train')}`);
61
+ await fs.mkdir(path.join(levelDir, 'images', 'val'), { recursive: true });
62
+ console.log(`Created directory: ${path.join(levelDir, 'images', 'val')}`);
63
+ await fs.mkdir(path.join(levelDir, 'labels', 'train'), { recursive: true });
64
+ console.log(`Created directory: ${path.join(levelDir, 'labels', 'train')}`);
65
+ await fs.mkdir(path.join(levelDir, 'labels', 'val'), { recursive: true });
66
+ console.log(`Created directory: ${path.join(levelDir, 'labels', 'val')}`);
67
+ }
68
+ // Convert boxes to processing format
69
+ const processBoxes = boxes.map(box => ({
70
+ x1: box.x,
71
+ y1: box.y,
72
+ x2: box.x + box.w,
73
+ y2: box.y + box.h,
74
+ classIdx: classToIndex[box.class],
75
+ className: box.class,
76
+ depth: getDepth(box.class)
77
+ }));
78
+ // Process each augmentation iteration
79
+ for (let i = 0; i < config.augCount; i++) {
80
+ const isVal = Math.random() < config.valSplit;
81
+ const split = isVal ? 'val' : 'train';
82
+ const iterPrefix = `${config.prefix}_${i.toString().padStart(4, '0')}`;
83
+ console.log(`Processing iteration ${i + 1}/${config.augCount} (${split})`);
84
+ // Apply jittering to boxes (for now, minimal jittering)
85
+ const jitteredBoxes = processBoxes.map(box => {
86
+ const dx = Math.floor(Math.random() * (config.jitterPos * 2 + 1)) - config.jitterPos;
87
+ const dy = Math.floor(Math.random() * (config.jitterPos * 2 + 1)) - config.jitterPos;
88
+ const dw = Math.floor(Math.random() * (config.jitterSize * 2 + 1)) - config.jitterSize;
89
+ const dh = Math.floor(Math.random() * (config.jitterSize * 2 + 1)) - config.jitterSize;
90
+ return {
91
+ ...box,
92
+ x1: Math.max(0, Math.min(box.x1 + dx, imgWidth - 1)),
93
+ y1: Math.max(0, Math.min(box.y1 + dy, imgHeight - 1)),
94
+ x2: Math.max(box.x1 + dx + 1, Math.min(box.x2 + dx + dw, imgWidth)),
95
+ y2: Math.max(box.y1 + dy + 1, Math.min(box.y2 + dy + dh, imgHeight))
96
+ };
97
+ });
98
+ // Process regions recursively
99
+ await processRegion(image, { x1: 0, y1: 0, x2: imgWidth, y2: imgHeight }, -1, null, iterPrefix, jitteredBoxes, {
100
+ classes,
101
+ parents,
102
+ classToIndex,
103
+ getDepth,
104
+ depthToClasses,
105
+ outputDir,
106
+ split,
107
+ config,
108
+ imgWidth,
109
+ imgHeight
110
+ });
111
+ await config.onProgress?.({
112
+ step: i + 1,
113
+ totalSteps: config.augCount,
114
+ percentage: Math.round(((i + 1) / config.augCount) * 100),
115
+ message: `Processed augmentation ${i + 1}`
116
+ });
117
+ }
118
+ // Generate data.yaml for each level
119
+ for (const depth of Object.keys(depthToClasses)) {
120
+ await generateDataYaml(path.join(outputDir, `level_${depth}`), classes, config);
121
+ }
122
+ console.log(`Successfully processed ${config.augCount} iterations with ${classes.length} classes`);
123
+ }
124
+ catch (error) {
125
+ console.error('Error processing annotations:', error);
126
+ throw error;
127
+ }
128
+ }
129
+ /**
130
+ * Recursive function to process regions at each depth level
131
+ */
132
+ async function processRegion(sourceImage, regionBox, regionDepth, parentClassIdx, namePrefix, jitteredBoxes, context) {
133
+ const { classes, parents, classToIndex, getDepth, depthToClasses, outputDir, split, config, imgWidth, imgHeight } = context;
134
+ const childDepth = regionDepth + 1;
135
+ // Check if there are classes at this child depth
136
+ if (!depthToClasses[childDepth]) {
137
+ return;
138
+ }
139
+ const { x1: rx1, y1: ry1, x2: rx2, y2: ry2 } = regionBox;
140
+ // Find candidate boxes at this depth level
141
+ const candidateBoxes = jitteredBoxes.filter(box => {
142
+ // Check depth
143
+ if (box.depth !== childDepth)
144
+ return false;
145
+ // Check parent relationship (if not root)
146
+ if (parentClassIdx !== null) {
147
+ const parentClassName = classes[parentClassIdx];
148
+ if (parents[box.className] !== parentClassName)
149
+ return false;
150
+ }
151
+ // Check containment within region
152
+ return box.x1 >= rx1 && box.y1 >= ry1 && box.x2 <= rx2 && box.y2 <= ry2;
153
+ });
154
+ if (candidateBoxes.length === 0) {
155
+ return;
156
+ }
157
+ const levelFolder = path.join(outputDir, `level_${childDepth}`);
158
+ // Create ONE image and label file for this parent region containing ALL child boxes
159
+ const parentClassName = parentClassIdx !== null ? classes[parentClassIdx] : 'root';
160
+ const thisPrefix = `${namePrefix}_${parentClassName}_${guid()}`;
161
+ if (childDepth === 0) {
162
+ // Depth 0: Save full image with all root boxes
163
+ const imgPath = path.join(levelFolder, 'images', split, `${thisPrefix}.png`);
164
+ console.log(`Creating full image for root boxes: ${imgPath}`);
165
+ const labelPath = path.join(levelFolder, 'labels', split, `${thisPrefix}.txt`);
166
+ console.log(`Creating label file for root boxes: ${labelPath}`);
167
+ console.log(`Checking for existing image: ${imgPath}`);
168
+ try {
169
+ await fs.access(imgPath);
170
+ console.log(`Image already exists: ${imgPath}`);
171
+ }
172
+ catch {
173
+ // File doesn't exist, save it
174
+ // await sourceImage.png().toFile(imgPath);
175
+ await sourceImage.clone().png().toFile(imgPath);
176
+ console.log(`Saved full image: ${imgPath}`);
177
+ }
178
+ // Create labels with ALL boxes at this depth level
179
+ const labelLines = [];
180
+ for (const box of candidateBoxes) {
181
+ // Main box
182
+ const xc = ((box.x1 + box.x2) / 2) / imgWidth;
183
+ const yc = ((box.y1 + box.y2) / 2) / imgHeight;
184
+ const wn = (box.x2 - box.x1) / imgWidth;
185
+ const hn = (box.y2 - box.y1) / imgHeight;
186
+ labelLines.push(`${box.classIdx} ${xc.toFixed(6)} ${yc.toFixed(6)} ${wn.toFixed(6)} ${hn.toFixed(6)}`);
187
+ // Corner boxes for this box
188
+ const cornerLines = generateCornerBoxes(box, box.classIdx, classes.length, config, imgWidth, imgHeight);
189
+ labelLines.push(...cornerLines);
190
+ }
191
+ await fs.writeFile(labelPath, labelLines.join('\n') + '\n');
192
+ console.log(`Created label file with ${candidateBoxes.length} boxes: ${labelPath}`);
193
+ }
194
+ else {
195
+ // Child depth >= 1: Crop parent region and label ALL child boxes within it
196
+ const parentAbsX1 = Math.floor(regionBox.x1);
197
+ const parentAbsY1 = Math.floor(regionBox.y1);
198
+ const parentAbsX2 = Math.floor(regionBox.x2);
199
+ const parentAbsY2 = Math.floor(regionBox.y2);
200
+ const regionW = parentAbsX2 - parentAbsX1;
201
+ const regionH = parentAbsY2 - parentAbsY1;
202
+ // Crop the image ONCE for this parent region
203
+ const imgPath = path.join(levelFolder, 'images', split, `${thisPrefix}.png`);
204
+ const labelPath = path.join(levelFolder, 'labels', split, `${thisPrefix}.txt`);
205
+ try {
206
+ await fs.access(imgPath);
207
+ console.log(`Image already exists: ${imgPath}`);
208
+ }
209
+ catch {
210
+ // File doesn't exist, crop and save it
211
+ const croppedImage = sourceImage.clone().extract({
212
+ left: parentAbsX1,
213
+ top: parentAbsY1,
214
+ width: regionW,
215
+ height: regionH
216
+ });
217
+ await croppedImage.png().toFile(imgPath);
218
+ console.log(`Saved cropped image: ${imgPath} (${regionW}x${regionH})`);
219
+ }
220
+ // Create labels for ALL child boxes in this cropped region
221
+ const labelLines = [];
222
+ for (const box of candidateBoxes) {
223
+ const mx1 = box.x1 - rx1;
224
+ const my1 = box.y1 - ry1;
225
+ const mx2 = box.x2 - rx1;
226
+ const my2 = box.y2 - ry1;
227
+ const xc = ((mx1 + mx2) / 2) / regionW;
228
+ const yc = ((my1 + my2) / 2) / regionH;
229
+ const wn = (mx2 - mx1) / regionW;
230
+ const hn = (my2 - my1) / regionH;
231
+ labelLines.push(`${box.classIdx} ${xc.toFixed(6)} ${yc.toFixed(6)} ${wn.toFixed(6)} ${hn.toFixed(6)}`);
232
+ }
233
+ await fs.writeFile(labelPath, labelLines.join('\n') + '\n');
234
+ console.log(`Saved label with ${candidateBoxes.length} child boxes for parent "${parentClassName}"`);
235
+ }
236
+ // Now recurse into EACH child box's region for the next depth level
237
+ for (let idx = 0; idx < candidateBoxes.length; idx++) {
238
+ const box = candidateBoxes[idx];
239
+ // Calculate absolute coordinates for recursion
240
+ let absRx1, absRy1, absRx2, absRy2;
241
+ if (childDepth === 0) {
242
+ absRx1 = box.x1;
243
+ absRy1 = box.y1;
244
+ absRx2 = box.x2;
245
+ absRy2 = box.y2;
246
+ }
247
+ else {
248
+ const parentAbsX1 = Math.floor(regionBox.x1);
249
+ const parentAbsY1 = Math.floor(regionBox.y1);
250
+ const mx1 = box.x1 - rx1;
251
+ const my1 = box.y1 - ry1;
252
+ const mx2 = box.x2 - rx1;
253
+ const my2 = box.y2 - ry1;
254
+ absRx1 = parentAbsX1 + Math.floor(mx1);
255
+ absRy1 = parentAbsY1 + Math.floor(my1);
256
+ absRx2 = parentAbsX1 + Math.floor(mx2);
257
+ absRy2 = parentAbsY1 + Math.floor(my2);
258
+ }
259
+ // Recurse into this box's region for the next depth level
260
+ await processRegion(sourceImage, { x1: absRx1, y1: absRy1, x2: absRx2, y2: absRy2 }, childDepth, box.classIdx, `${box.className}_c_${childDepth}_${idx}`, // Unique prefix for this child's descendants
261
+ jitteredBoxes, context);
262
+ }
263
+ }
264
+ const SKIP_CORNER_BOXES = true; // Set to true to skip corner boxes
265
+ /**
266
+ * Generate corner box labels for depth 0 boxes
267
+ */
268
+ function generateCornerBoxes(box, classIdx, numClasses, config, imgWidth, imgHeight) {
269
+ const cornerBase = numClasses + (classIdx * 4);
270
+ const pw = box.x2 - box.x1;
271
+ const ph = box.y2 - box.y1;
272
+ const cw = config.rootParentPercentageX * pw;
273
+ const ch = config.rootParentPercentageY * ph;
274
+ if (SKIP_CORNER_BOXES) {
275
+ return [];
276
+ }
277
+ const corners = [
278
+ // Top-left
279
+ { x1: box.x1, y1: box.y1, x2: box.x1 + cw, y2: box.y1 + ch },
280
+ // Top-right
281
+ { x1: box.x2 - cw, y1: box.y1, x2: box.x2, y2: box.y1 + ch },
282
+ // Bottom-left
283
+ { x1: box.x1, y1: box.y2 - ch, x2: box.x1 + cw, y2: box.y2 },
284
+ // Bottom-right
285
+ { x1: box.x2 - cw, y1: box.y2 - ch, x2: box.x2, y2: box.y2 }
286
+ ];
287
+ return corners.map((corner, i) => {
288
+ const cx = (corner.x1 + corner.x2) / 2;
289
+ const cy = (corner.y1 + corner.y2) / 2;
290
+ const xc = cx / imgWidth;
291
+ const yc = cy / imgHeight;
292
+ const wn = cw / imgWidth;
293
+ const hn = ch / imgHeight;
294
+ return `${cornerBase + i} ${xc.toFixed(6)} ${yc.toFixed(6)} ${wn.toFixed(6)} ${hn.toFixed(6)}`;
295
+ });
296
+ }
297
+ function guid() {
298
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
299
+ var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
300
+ return v.toString(16);
301
+ });
302
+ }
303
+ /**
304
+ * Generate data.yaml file for YOLO training
305
+ */
306
+ async function generateDataYaml(levelDir, classes, config) {
307
+ // Build expanded names list (original classes + corner classes)
308
+ const expandedNames = [...classes];
309
+ if (!SKIP_CORNER_BOXES) {
310
+ classes.forEach(className => {
311
+ expandedNames.push(`${className}#tl`, `${className}#tr`, `${className}#bl`, `${className}#br`);
312
+ });
313
+ }
314
+ const yamlData = {
315
+ train: 'images/train',
316
+ val: 'images/val',
317
+ nc: expandedNames.length,
318
+ names: expandedNames
319
+ };
320
+ const yamlContent = yaml.dump(yamlData);
321
+ const yamlPath = path.join(levelDir, 'data.yaml');
322
+ await fs.writeFile(yamlPath, yamlContent);
323
+ console.log(`Generated data.yaml in ${levelDir} (nc=${expandedNames.length})`);
324
+ }
325
+ /**
326
+ * Example usage function
327
+ */
328
+ export async function processImageAnnotations(imagePath, annotationJsonPath, outputDir, options = {}) {
329
+ try {
330
+ const annotationData = JSON.parse(await fs.readFile(annotationJsonPath, 'utf8'));
331
+ await processAnnotations(imagePath, annotationData, outputDir, options);
332
+ console.log('Processing completed successfully');
333
+ }
334
+ catch (error) {
335
+ console.error('Error processing image annotations:', error);
336
+ throw error;
337
+ }
338
+ }
339
+ ///Users/andrewporter/Documents/ai/yolo_training_data
340
+ // Example usage:
341
+ /*
342
+ await processImageAnnotations(
343
+ '/path/to/image.png',
344
+ '/path/to/annotations.json',
345
+ '/path/to/output',
346
+ {
347
+ prefix: 'my_sample',
348
+ valSplit: 0.2,
349
+ augCount: 100,
350
+ rootParentPercentageX: 0.1,
351
+ rootParentPercentageY: 0.1
352
+ }
353
+ );
354
+ */
355
+ //# sourceMappingURL=capture-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-overlay.js","sourceRoot":"","sources":["../../src/inference/capture-overlay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Take a full‑screen shot via robotjs, re‑pack its BGRA buffer
3
+ * into a tightly‑packed RGBA buffer, write out a GUID.png, and return
4
+ * just the filename.
5
+ *
6
+ * @param {string} targetFolder – Where to save the PNG.
7
+ * @returns {Promise<string>} – The generated <guid>.png filename.
8
+ */
9
+ export declare function captureFullScreenshot(targetFolder: any): Promise<string>;
10
+ export declare function captureScreenshotBase64(region: any): Promise<string>;
11
+ export declare function captureScreenshot(targetFolder: any, filename: any, region: any): Promise<any>;
12
+ //# sourceMappingURL=capturescreenshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capturescreenshot.d.ts","sourceRoot":"","sources":["../../src/inference/capturescreenshot.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,KAAA,mBA4CvD;AAGD,wBAAsB,uBAAuB,CAAC,MAAM,KAAA,mBAgEnD;AAED,wBAAsB,iBAAiB,CAAC,YAAY,KAAA,EAAE,QAAQ,KAAA,EAAE,MAAM,KAAA,gBAkErE"}
@@ -0,0 +1,157 @@
1
+ // screenshot.mjs
2
+ import robot from 'robotjs';
3
+ import { promises as fs } from 'fs';
4
+ import path from 'path';
5
+ import sharp from 'sharp';
6
+ import { v4 as uuidv4 } from 'uuid';
7
+ /**
8
+ * Take a full‑screen shot via robotjs, re‑pack its BGRA buffer
9
+ * into a tightly‑packed RGBA buffer, write out a GUID.png, and return
10
+ * just the filename.
11
+ *
12
+ * @param {string} targetFolder – Where to save the PNG.
13
+ * @returns {Promise<string>} – The generated <guid>.png filename.
14
+ */
15
+ export async function captureFullScreenshot(targetFolder) {
16
+ // ensure output dir
17
+ await fs.mkdir(targetFolder, { recursive: true });
18
+ // grab the raw robotjs bitmap
19
+ const screenSize = robot.getScreenSize();
20
+ const bmp = robot.screen.capture(0, 0, screenSize.width, screenSize.height);
21
+ const { width, height, byteWidth, bytesPerPixel, image: bgra } = bmp;
22
+ // allocate a tight RGBA buffer
23
+ const rgba = Buffer.alloc(width * height * 4);
24
+ // unpack row by row accounting for stride
25
+ for (let row = 0; row < height; row++) {
26
+ const rowStartSrc = row * byteWidth;
27
+ const rowStartDst = row * width * 4;
28
+ for (let col = 0; col < width; col++) {
29
+ const srcIdx = rowStartSrc + col * bytesPerPixel;
30
+ const dstIdx = rowStartDst + col * 4;
31
+ // BGRA → RGBA
32
+ rgba[dstIdx] = bgra[srcIdx + 2]; // R
33
+ rgba[dstIdx + 1] = bgra[srcIdx + 1]; // G
34
+ rgba[dstIdx + 2] = bgra[srcIdx]; // B
35
+ rgba[dstIdx + 3] = bgra[srcIdx + 3]; // A
36
+ }
37
+ }
38
+ // encode & save
39
+ const filename = `${uuidv4()}.png`;
40
+ const outPath = path.join(targetFolder, filename);
41
+ await sharp(rgba, {
42
+ raw: { width, height, channels: 4 }
43
+ })
44
+ .png()
45
+ .toFile(outPath);
46
+ return filename;
47
+ }
48
+ export async function captureScreenshotBase64(region) {
49
+ // Get screen size for bounds checking
50
+ const screenSize = robot.getScreenSize();
51
+ // Use region if provided, otherwise capture full screen
52
+ let captureX = 0;
53
+ let captureY = 0;
54
+ let captureWidth;
55
+ let captureHeight;
56
+ if (region && region.x !== undefined && region.y !== undefined && region.width && region.height) {
57
+ // Validate and clamp region to screen bounds, rounding to integers
58
+ captureX = Math.max(0, Math.min(Math.round(region.x), screenSize.width - 1));
59
+ captureY = Math.max(0, Math.min(Math.round(region.y), screenSize.height - 1));
60
+ captureWidth = Math.max(1, Math.min(Math.round(region.width), screenSize.width - captureX));
61
+ captureHeight = Math.max(1, Math.min(Math.round(region.height), screenSize.height - captureY));
62
+ // If the region is completely outside screen bounds, return early with error
63
+ if (captureWidth < 1 || captureHeight < 1) {
64
+ throw new Error(`Region is outside screen bounds: ${JSON.stringify(region)} (screen: ${screenSize.width}x${screenSize.height})`);
65
+ }
66
+ }
67
+ else {
68
+ // Fallback to full screen if no region specified
69
+ captureWidth = screenSize.width;
70
+ captureHeight = screenSize.height;
71
+ }
72
+ console.log(`Capturing screenshot for base64 at (${captureX},${captureY}) ${captureWidth}x${captureHeight}`);
73
+ // grab the raw robotjs bitmap for the specified region
74
+ const bmp = robot.screen.capture(captureX, captureY, captureWidth, captureHeight);
75
+ const { width, height, byteWidth, bytesPerPixel, image: bgra } = bmp;
76
+ // allocate a tight RGBA buffer
77
+ const rgba = Buffer.alloc(width * height * 4);
78
+ // unpack row by row accounting for stride
79
+ for (let row = 0; row < height; row++) {
80
+ const rowStartSrc = row * byteWidth;
81
+ const rowStartDst = row * width * 4;
82
+ for (let col = 0; col < width; col++) {
83
+ const srcIdx = rowStartSrc + col * bytesPerPixel;
84
+ const dstIdx = rowStartDst + col * 4;
85
+ // BGRA → RGBA
86
+ rgba[dstIdx] = bgra[srcIdx + 2]; // R
87
+ rgba[dstIdx + 1] = bgra[srcIdx + 1]; // G
88
+ rgba[dstIdx + 2] = bgra[srcIdx]; // B
89
+ rgba[dstIdx + 3] = bgra[srcIdx + 3]; // A
90
+ }
91
+ }
92
+ // encode to PNG buffer and convert to base64
93
+ const pngBuffer = await sharp(rgba, {
94
+ raw: { width, height, channels: 4 }
95
+ })
96
+ .png()
97
+ .toBuffer();
98
+ const base64 = pngBuffer.toString('base64');
99
+ const dataUrl = `data:image/png;base64,${base64}`;
100
+ return dataUrl;
101
+ }
102
+ export async function captureScreenshot(targetFolder, filename, region) {
103
+ // ensure output dir
104
+ await fs.mkdir(targetFolder, { recursive: true });
105
+ // Get screen size for bounds checking
106
+ const screenSize = robot.getScreenSize();
107
+ // Use region if provided, otherwise capture full screen
108
+ let captureX = 0;
109
+ let captureY = 0;
110
+ let captureWidth;
111
+ let captureHeight;
112
+ if (region && region.x !== undefined && region.y !== undefined && region.width && region.height) {
113
+ // Validate and clamp region to screen bounds, rounding to integers
114
+ captureX = Math.max(0, Math.min(Math.round(region.x), screenSize.width - 1));
115
+ captureY = Math.max(0, Math.min(Math.round(region.y), screenSize.height - 1));
116
+ captureWidth = Math.max(1, Math.min(Math.round(region.width), screenSize.width - captureX));
117
+ captureHeight = Math.max(1, Math.min(Math.round(region.height), screenSize.height - captureY));
118
+ // If the region is completely outside screen bounds, return early with error
119
+ if (captureWidth < 1 || captureHeight < 1) {
120
+ throw new Error(`Region is outside screen bounds: ${JSON.stringify(region)} (screen: ${screenSize.width}x${screenSize.height})`);
121
+ }
122
+ }
123
+ else {
124
+ // Fallback to full screen if no region specified
125
+ captureWidth = screenSize.width;
126
+ captureHeight = screenSize.height;
127
+ }
128
+ console.log(`Capturing screenshot at (${captureX},${captureY}) ${captureWidth}x${captureHeight}`);
129
+ // grab the raw robotjs bitmap for the specified region
130
+ const bmp = robot.screen.capture(captureX, captureY, captureWidth, captureHeight);
131
+ const { width, height, byteWidth, bytesPerPixel, image: bgra } = bmp;
132
+ // allocate a tight RGBA buffer
133
+ const rgba = Buffer.alloc(width * height * 4);
134
+ // unpack row by row accounting for stride
135
+ for (let row = 0; row < height; row++) {
136
+ const rowStartSrc = row * byteWidth;
137
+ const rowStartDst = row * width * 4;
138
+ for (let col = 0; col < width; col++) {
139
+ const srcIdx = rowStartSrc + col * bytesPerPixel;
140
+ const dstIdx = rowStartDst + col * 4;
141
+ // BGRA → RGBA
142
+ rgba[dstIdx] = bgra[srcIdx + 2]; // R
143
+ rgba[dstIdx + 1] = bgra[srcIdx + 1]; // G
144
+ rgba[dstIdx + 2] = bgra[srcIdx]; // B
145
+ rgba[dstIdx + 3] = bgra[srcIdx + 3]; // A
146
+ }
147
+ }
148
+ // encode & save
149
+ const outPath = path.join(targetFolder, filename);
150
+ await sharp(rgba, {
151
+ raw: { width, height, channels: 4 }
152
+ })
153
+ .png()
154
+ .toFile(outPath);
155
+ return filename;
156
+ }
157
+ //# sourceMappingURL=capturescreenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capturescreenshot.js","sourceRoot":"","sources":["../../src/inference/capturescreenshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Extracts JSON from a string or returns the object as-is
3
+ * @param {string|object} input - The input to process
4
+ * @returns {object|null} - The parsed JSON object or null if parsing fails
5
+ */
6
+ declare function extractJSON(input: any): any;
7
+ /**
8
+ * Cleans a string to extract pure JSON
9
+ * @param {string} str - The string to clean
10
+ * @returns {string} - The cleaned JSON string
11
+ */
12
+ declare function cleanJSONString(str: any): any;
13
+ /**
14
+ * Safe JSON extraction with fallback options
15
+ * @param {string|object} input - The input to process
16
+ * @param {object} options - Options for extraction
17
+ * @returns {object} - The result object
18
+ */
19
+ declare function safeExtractJSON(input: any, options?: {
20
+ returnOriginalOnFail?: boolean;
21
+ defaultValue?: any;
22
+ throwOnError?: boolean;
23
+ }): any;
24
+ /**
25
+ * Validates if a string contains valid JSON
26
+ * @param {string} str - The string to validate
27
+ * @returns {boolean} - True if contains valid JSON
28
+ */
29
+ declare function containsJSON(str: any): boolean;
30
+ /**
31
+ * Extracts multiple JSON objects from a string
32
+ * @param {string} str - The string to process
33
+ * @returns {array} - Array of JSON objects found
34
+ */
35
+ declare function extractMultipleJSON(str: any): any[];
36
+ export { extractJSON, cleanJSONString, safeExtractJSON, containsJSON, extractMultipleJSON };
37
+ //# sourceMappingURL=jsonHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonHandler.d.ts","sourceRoot":"","sources":["../src/jsonHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,iBAAS,WAAW,CAAC,KAAK,KAAA,OAwBzB;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,GAAG,KAAA,OAsD3B;AAED;;;;;GAKG;AACH,iBAAS,eAAe,CACpB,KAAK,KAAA,EACL,OAAO,GAAE;IACL,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACrB,OAuCT;AAED;;;;GAIG;AACH,iBAAS,YAAY,CAAC,GAAG,KAAA,WAYxB;AAED;;;;GAIG;AACH,iBAAS,mBAAmB,CAAC,GAAG,KAAA,SAyD/B;AAED,OAAO,EACH,WAAW,EACX,eAAe,EACf,eAAe,EACf,YAAY,EACZ,mBAAmB,EACtB,CAAA"}