@nodetool-ai/base-nodes 0.7.0-rc.23 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/README.md +21 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/builtin-packs.d.ts +17 -0
  4. package/dist/builtin-packs.d.ts.map +1 -0
  5. package/dist/builtin-packs.js +95 -0
  6. package/dist/builtin-packs.js.map +1 -0
  7. package/dist/index.d.ts +63 -67
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +186 -173
  10. package/dist/index.js.map +1 -1
  11. package/dist/platforms/browser.d.ts +19 -0
  12. package/dist/platforms/browser.d.ts.map +1 -0
  13. package/dist/platforms/browser.js +29 -0
  14. package/dist/platforms/browser.js.map +1 -0
  15. package/package.json +72 -65
  16. package/dist/lib/audio-wav.d.ts +0 -66
  17. package/dist/lib/audio-wav.d.ts.map +0 -1
  18. package/dist/lib/audio-wav.js +0 -215
  19. package/dist/lib/audio-wav.js.map +0 -1
  20. package/dist/nodes/agent-tool-hydration.d.ts +0 -10
  21. package/dist/nodes/agent-tool-hydration.d.ts.map +0 -1
  22. package/dist/nodes/agent-tool-hydration.js +0 -43
  23. package/dist/nodes/agent-tool-hydration.js.map +0 -1
  24. package/dist/nodes/agents.d.ts +0 -262
  25. package/dist/nodes/agents.d.ts.map +0 -1
  26. package/dist/nodes/agents.js +0 -2856
  27. package/dist/nodes/agents.js.map +0 -1
  28. package/dist/nodes/anthropic.d.ts +0 -26
  29. package/dist/nodes/anthropic.d.ts.map +0 -1
  30. package/dist/nodes/anthropic.js +0 -133
  31. package/dist/nodes/anthropic.js.map +0 -1
  32. package/dist/nodes/apify.d.ts +0 -120
  33. package/dist/nodes/apify.d.ts.map +0 -1
  34. package/dist/nodes/apify.js +0 -618
  35. package/dist/nodes/apify.js.map +0 -1
  36. package/dist/nodes/audio.d.ts +0 -301
  37. package/dist/nodes/audio.d.ts.map +0 -1
  38. package/dist/nodes/audio.js +0 -1274
  39. package/dist/nodes/audio.js.map +0 -1
  40. package/dist/nodes/code-node.d.ts +0 -34
  41. package/dist/nodes/code-node.d.ts.map +0 -1
  42. package/dist/nodes/code-node.js +0 -343
  43. package/dist/nodes/code-node.js.map +0 -1
  44. package/dist/nodes/code.d.ts +0 -301
  45. package/dist/nodes/code.d.ts.map +0 -1
  46. package/dist/nodes/code.js +0 -850
  47. package/dist/nodes/code.js.map +0 -1
  48. package/dist/nodes/compare.d.ts +0 -18
  49. package/dist/nodes/compare.d.ts.map +0 -1
  50. package/dist/nodes/compare.js +0 -122
  51. package/dist/nodes/compare.js.map +0 -1
  52. package/dist/nodes/constant.d.ts +0 -315
  53. package/dist/nodes/constant.d.ts.map +0 -1
  54. package/dist/nodes/constant.js +0 -715
  55. package/dist/nodes/constant.js.map +0 -1
  56. package/dist/nodes/control.d.ts +0 -83
  57. package/dist/nodes/control.d.ts.map +0 -1
  58. package/dist/nodes/control.js +0 -212
  59. package/dist/nodes/control.js.map +0 -1
  60. package/dist/nodes/data.d.ts +0 -369
  61. package/dist/nodes/data.d.ts.map +0 -1
  62. package/dist/nodes/data.js +0 -1590
  63. package/dist/nodes/data.js.map +0 -1
  64. package/dist/nodes/document.d.ts +0 -134
  65. package/dist/nodes/document.d.ts.map +0 -1
  66. package/dist/nodes/document.js +0 -984
  67. package/dist/nodes/document.js.map +0 -1
  68. package/dist/nodes/extended-placeholders.d.ts +0 -6
  69. package/dist/nodes/extended-placeholders.d.ts.map +0 -1
  70. package/dist/nodes/extended-placeholders.js +0 -19
  71. package/dist/nodes/extended-placeholders.js.map +0 -1
  72. package/dist/nodes/gemini.d.ts +0 -110
  73. package/dist/nodes/gemini.d.ts.map +0 -1
  74. package/dist/nodes/gemini.js +0 -871
  75. package/dist/nodes/gemini.js.map +0 -1
  76. package/dist/nodes/generators.d.ts +0 -84
  77. package/dist/nodes/generators.d.ts.map +0 -1
  78. package/dist/nodes/generators.js +0 -968
  79. package/dist/nodes/generators.js.map +0 -1
  80. package/dist/nodes/image.d.ts +0 -232
  81. package/dist/nodes/image.d.ts.map +0 -1
  82. package/dist/nodes/image.js +0 -1395
  83. package/dist/nodes/image.js.map +0 -1
  84. package/dist/nodes/input.d.ts +0 -445
  85. package/dist/nodes/input.d.ts.map +0 -1
  86. package/dist/nodes/input.js +0 -1459
  87. package/dist/nodes/input.js.map +0 -1
  88. package/dist/nodes/kie-dynamic.d.ts +0 -31
  89. package/dist/nodes/kie-dynamic.d.ts.map +0 -1
  90. package/dist/nodes/kie-dynamic.js +0 -270
  91. package/dist/nodes/kie-dynamic.js.map +0 -1
  92. package/dist/nodes/lib-audio-dsp.d.ts +0 -85
  93. package/dist/nodes/lib-audio-dsp.d.ts.map +0 -1
  94. package/dist/nodes/lib-audio-dsp.js +0 -450
  95. package/dist/nodes/lib-audio-dsp.js.map +0 -1
  96. package/dist/nodes/lib-audio-effects.d.ts +0 -116
  97. package/dist/nodes/lib-audio-effects.d.ts.map +0 -1
  98. package/dist/nodes/lib-audio-effects.js +0 -905
  99. package/dist/nodes/lib-audio-effects.js.map +0 -1
  100. package/dist/nodes/lib-browser.d.ts +0 -99
  101. package/dist/nodes/lib-browser.d.ts.map +0 -1
  102. package/dist/nodes/lib-browser.js +0 -692
  103. package/dist/nodes/lib-browser.js.map +0 -1
  104. package/dist/nodes/lib-charts.d.ts +0 -20
  105. package/dist/nodes/lib-charts.d.ts.map +0 -1
  106. package/dist/nodes/lib-charts.js +0 -245
  107. package/dist/nodes/lib-charts.js.map +0 -1
  108. package/dist/nodes/lib-datetime.d.ts +0 -108
  109. package/dist/nodes/lib-datetime.d.ts.map +0 -1
  110. package/dist/nodes/lib-datetime.js +0 -421
  111. package/dist/nodes/lib-datetime.js.map +0 -1
  112. package/dist/nodes/lib-doc-convert.d.ts +0 -19
  113. package/dist/nodes/lib-doc-convert.d.ts.map +0 -1
  114. package/dist/nodes/lib-doc-convert.js +0 -257
  115. package/dist/nodes/lib-doc-convert.js.map +0 -1
  116. package/dist/nodes/lib-doc-transform.d.ts +0 -39
  117. package/dist/nodes/lib-doc-transform.d.ts.map +0 -1
  118. package/dist/nodes/lib-doc-transform.js +0 -335
  119. package/dist/nodes/lib-doc-transform.js.map +0 -1
  120. package/dist/nodes/lib-docx.d.ts +0 -106
  121. package/dist/nodes/lib-docx.d.ts.map +0 -1
  122. package/dist/nodes/lib-docx.js +0 -595
  123. package/dist/nodes/lib-docx.js.map +0 -1
  124. package/dist/nodes/lib-epub.d.ts +0 -55
  125. package/dist/nodes/lib-epub.d.ts.map +0 -1
  126. package/dist/nodes/lib-epub.js +0 -220
  127. package/dist/nodes/lib-epub.js.map +0 -1
  128. package/dist/nodes/lib-excel.d.ts +0 -74
  129. package/dist/nodes/lib-excel.d.ts.map +0 -1
  130. package/dist/nodes/lib-excel.js +0 -448
  131. package/dist/nodes/lib-excel.js.map +0 -1
  132. package/dist/nodes/lib-graphql.d.ts +0 -66
  133. package/dist/nodes/lib-graphql.d.ts.map +0 -1
  134. package/dist/nodes/lib-graphql.js +0 -333
  135. package/dist/nodes/lib-graphql.js.map +0 -1
  136. package/dist/nodes/lib-grid.d.ts +0 -27
  137. package/dist/nodes/lib-grid.d.ts.map +0 -1
  138. package/dist/nodes/lib-grid.js +0 -172
  139. package/dist/nodes/lib-grid.js.map +0 -1
  140. package/dist/nodes/lib-html-parse.d.ts +0 -108
  141. package/dist/nodes/lib-html-parse.d.ts.map +0 -1
  142. package/dist/nodes/lib-html-parse.js +0 -365
  143. package/dist/nodes/lib-html-parse.js.map +0 -1
  144. package/dist/nodes/lib-http.d.ts +0 -98
  145. package/dist/nodes/lib-http.d.ts.map +0 -1
  146. package/dist/nodes/lib-http.js +0 -267
  147. package/dist/nodes/lib-http.js.map +0 -1
  148. package/dist/nodes/lib-image-color-grading.d.ts +0 -3
  149. package/dist/nodes/lib-image-color-grading.d.ts.map +0 -1
  150. package/dist/nodes/lib-image-color-grading.js +0 -1386
  151. package/dist/nodes/lib-image-color-grading.js.map +0 -1
  152. package/dist/nodes/lib-image-draw.d.ts +0 -3
  153. package/dist/nodes/lib-image-draw.d.ts.map +0 -1
  154. package/dist/nodes/lib-image-draw.js +0 -470
  155. package/dist/nodes/lib-image-draw.js.map +0 -1
  156. package/dist/nodes/lib-image-enhance.d.ts +0 -3
  157. package/dist/nodes/lib-image-enhance.d.ts.map +0 -1
  158. package/dist/nodes/lib-image-enhance.js +0 -731
  159. package/dist/nodes/lib-image-enhance.js.map +0 -1
  160. package/dist/nodes/lib-image-filter.d.ts +0 -3
  161. package/dist/nodes/lib-image-filter.d.ts.map +0 -1
  162. package/dist/nodes/lib-image-filter.js +0 -684
  163. package/dist/nodes/lib-image-filter.js.map +0 -1
  164. package/dist/nodes/lib-image-utils.d.ts +0 -24
  165. package/dist/nodes/lib-image-utils.d.ts.map +0 -1
  166. package/dist/nodes/lib-image-utils.js +0 -150
  167. package/dist/nodes/lib-image-utils.js.map +0 -1
  168. package/dist/nodes/lib-mail.d.ts +0 -74
  169. package/dist/nodes/lib-mail.d.ts.map +0 -1
  170. package/dist/nodes/lib-mail.js +0 -452
  171. package/dist/nodes/lib-mail.js.map +0 -1
  172. package/dist/nodes/lib-markdown.d.ts +0 -70
  173. package/dist/nodes/lib-markdown.d.ts.map +0 -1
  174. package/dist/nodes/lib-markdown.js +0 -236
  175. package/dist/nodes/lib-markdown.js.map +0 -1
  176. package/dist/nodes/lib-nlp.d.ts +0 -98
  177. package/dist/nodes/lib-nlp.d.ts.map +0 -1
  178. package/dist/nodes/lib-nlp.js +0 -374
  179. package/dist/nodes/lib-nlp.js.map +0 -1
  180. package/dist/nodes/lib-notion.d.ts +0 -99
  181. package/dist/nodes/lib-notion.d.ts.map +0 -1
  182. package/dist/nodes/lib-notion.js +0 -601
  183. package/dist/nodes/lib-notion.js.map +0 -1
  184. package/dist/nodes/lib-ocr.d.ts +0 -31
  185. package/dist/nodes/lib-ocr.d.ts.map +0 -1
  186. package/dist/nodes/lib-ocr.js +0 -143
  187. package/dist/nodes/lib-ocr.js.map +0 -1
  188. package/dist/nodes/lib-os.d.ts +0 -312
  189. package/dist/nodes/lib-os.d.ts.map +0 -1
  190. package/dist/nodes/lib-os.js +0 -909
  191. package/dist/nodes/lib-os.js.map +0 -1
  192. package/dist/nodes/lib-pdf.d.ts +0 -142
  193. package/dist/nodes/lib-pdf.d.ts.map +0 -1
  194. package/dist/nodes/lib-pdf.js +0 -871
  195. package/dist/nodes/lib-pdf.js.map +0 -1
  196. package/dist/nodes/lib-pptx.d.ts +0 -29
  197. package/dist/nodes/lib-pptx.d.ts.map +0 -1
  198. package/dist/nodes/lib-pptx.js +0 -122
  199. package/dist/nodes/lib-pptx.js.map +0 -1
  200. package/dist/nodes/lib-rss.d.ts +0 -31
  201. package/dist/nodes/lib-rss.d.ts.map +0 -1
  202. package/dist/nodes/lib-rss.js +0 -163
  203. package/dist/nodes/lib-rss.js.map +0 -1
  204. package/dist/nodes/lib-s3.d.ts +0 -112
  205. package/dist/nodes/lib-s3.d.ts.map +0 -1
  206. package/dist/nodes/lib-s3.js +0 -521
  207. package/dist/nodes/lib-s3.js.map +0 -1
  208. package/dist/nodes/lib-secret.d.ts +0 -15
  209. package/dist/nodes/lib-secret.d.ts.map +0 -1
  210. package/dist/nodes/lib-secret.js +0 -42
  211. package/dist/nodes/lib-secret.js.map +0 -1
  212. package/dist/nodes/lib-sqlite.d.ts +0 -102
  213. package/dist/nodes/lib-sqlite.d.ts.map +0 -1
  214. package/dist/nodes/lib-sqlite.js +0 -532
  215. package/dist/nodes/lib-sqlite.js.map +0 -1
  216. package/dist/nodes/lib-supabase.d.ts +0 -86
  217. package/dist/nodes/lib-supabase.d.ts.map +0 -1
  218. package/dist/nodes/lib-supabase.js +0 -425
  219. package/dist/nodes/lib-supabase.js.map +0 -1
  220. package/dist/nodes/lib-svg.d.ts +0 -199
  221. package/dist/nodes/lib-svg.d.ts.map +0 -1
  222. package/dist/nodes/lib-svg.js +0 -1027
  223. package/dist/nodes/lib-svg.js.map +0 -1
  224. package/dist/nodes/lib-tensorflow.d.ts +0 -71
  225. package/dist/nodes/lib-tensorflow.d.ts.map +0 -1
  226. package/dist/nodes/lib-tensorflow.js +0 -351
  227. package/dist/nodes/lib-tensorflow.js.map +0 -1
  228. package/dist/nodes/lib-twilio.d.ts +0 -71
  229. package/dist/nodes/lib-twilio.d.ts.map +0 -1
  230. package/dist/nodes/lib-twilio.js +0 -469
  231. package/dist/nodes/lib-twilio.js.map +0 -1
  232. package/dist/nodes/lib-validate.d.ts +0 -84
  233. package/dist/nodes/lib-validate.d.ts.map +0 -1
  234. package/dist/nodes/lib-validate.js +0 -215
  235. package/dist/nodes/lib-validate.js.map +0 -1
  236. package/dist/nodes/lib-video-download.d.ts +0 -26
  237. package/dist/nodes/lib-video-download.d.ts.map +0 -1
  238. package/dist/nodes/lib-video-download.js +0 -299
  239. package/dist/nodes/lib-video-download.js.map +0 -1
  240. package/dist/nodes/messaging.d.ts +0 -88
  241. package/dist/nodes/messaging.d.ts.map +0 -1
  242. package/dist/nodes/messaging.js +0 -418
  243. package/dist/nodes/messaging.js.map +0 -1
  244. package/dist/nodes/mistral.d.ts +0 -83
  245. package/dist/nodes/mistral.d.ts.map +0 -1
  246. package/dist/nodes/mistral.js +0 -450
  247. package/dist/nodes/mistral.js.map +0 -1
  248. package/dist/nodes/model3d/analysis.d.ts +0 -13
  249. package/dist/nodes/model3d/analysis.d.ts.map +0 -1
  250. package/dist/nodes/model3d/analysis.js +0 -36
  251. package/dist/nodes/model3d/analysis.js.map +0 -1
  252. package/dist/nodes/model3d/base.d.ts +0 -11
  253. package/dist/nodes/model3d/base.d.ts.map +0 -1
  254. package/dist/nodes/model3d/base.js +0 -20
  255. package/dist/nodes/model3d/base.js.map +0 -1
  256. package/dist/nodes/model3d/boolean-ops.d.ts +0 -2
  257. package/dist/nodes/model3d/boolean-ops.d.ts.map +0 -1
  258. package/dist/nodes/model3d/boolean-ops.js +0 -172
  259. package/dist/nodes/model3d/boolean-ops.js.map +0 -1
  260. package/dist/nodes/model3d/cleanup.d.ts +0 -47
  261. package/dist/nodes/model3d/cleanup.d.ts.map +0 -1
  262. package/dist/nodes/model3d/cleanup.js +0 -136
  263. package/dist/nodes/model3d/cleanup.js.map +0 -1
  264. package/dist/nodes/model3d/convert.d.ts +0 -14
  265. package/dist/nodes/model3d/convert.d.ts.map +0 -1
  266. package/dist/nodes/model3d/convert.js +0 -64
  267. package/dist/nodes/model3d/convert.js.map +0 -1
  268. package/dist/nodes/model3d/defaults.d.ts +0 -34
  269. package/dist/nodes/model3d/defaults.d.ts.map +0 -1
  270. package/dist/nodes/model3d/defaults.js +0 -28
  271. package/dist/nodes/model3d/defaults.js.map +0 -1
  272. package/dist/nodes/model3d/document-ops.d.ts +0 -4
  273. package/dist/nodes/model3d/document-ops.d.ts.map +0 -1
  274. package/dist/nodes/model3d/document-ops.js +0 -40
  275. package/dist/nodes/model3d/document-ops.js.map +0 -1
  276. package/dist/nodes/model3d/generation.d.ts +0 -39
  277. package/dist/nodes/model3d/generation.d.ts.map +0 -1
  278. package/dist/nodes/model3d/generation.js +0 -179
  279. package/dist/nodes/model3d/generation.js.map +0 -1
  280. package/dist/nodes/model3d/glb.d.ts +0 -29
  281. package/dist/nodes/model3d/glb.d.ts.map +0 -1
  282. package/dist/nodes/model3d/glb.js +0 -255
  283. package/dist/nodes/model3d/glb.js.map +0 -1
  284. package/dist/nodes/model3d/index.d.ts +0 -20
  285. package/dist/nodes/model3d/index.d.ts.map +0 -1
  286. package/dist/nodes/model3d/index.js +0 -38
  287. package/dist/nodes/model3d/index.js.map +0 -1
  288. package/dist/nodes/model3d/io.d.ts +0 -38
  289. package/dist/nodes/model3d/io.d.ts.map +0 -1
  290. package/dist/nodes/model3d/io.js +0 -162
  291. package/dist/nodes/model3d/io.js.map +0 -1
  292. package/dist/nodes/model3d/mesh-ops.d.ts +0 -40
  293. package/dist/nodes/model3d/mesh-ops.d.ts.map +0 -1
  294. package/dist/nodes/model3d/mesh-ops.js +0 -775
  295. package/dist/nodes/model3d/mesh-ops.js.map +0 -1
  296. package/dist/nodes/model3d/nodes.d.ts +0 -2
  297. package/dist/nodes/model3d/nodes.d.ts.map +0 -1
  298. package/dist/nodes/model3d/nodes.js +0 -2
  299. package/dist/nodes/model3d/nodes.js.map +0 -1
  300. package/dist/nodes/model3d/ops.d.ts +0 -37
  301. package/dist/nodes/model3d/ops.d.ts.map +0 -1
  302. package/dist/nodes/model3d/ops.js +0 -137
  303. package/dist/nodes/model3d/ops.js.map +0 -1
  304. package/dist/nodes/model3d/transforms.d.ts +0 -49
  305. package/dist/nodes/model3d/transforms.d.ts.map +0 -1
  306. package/dist/nodes/model3d/transforms.js +0 -142
  307. package/dist/nodes/model3d/transforms.js.map +0 -1
  308. package/dist/nodes/model3d/types.d.ts +0 -81
  309. package/dist/nodes/model3d/types.d.ts.map +0 -1
  310. package/dist/nodes/model3d/types.js +0 -2
  311. package/dist/nodes/model3d/types.js.map +0 -1
  312. package/dist/nodes/model3d/utils.d.ts +0 -34
  313. package/dist/nodes/model3d/utils.d.ts.map +0 -1
  314. package/dist/nodes/model3d/utils.js +0 -185
  315. package/dist/nodes/model3d/utils.js.map +0 -1
  316. package/dist/nodes/model3d.d.ts +0 -2
  317. package/dist/nodes/model3d.d.ts.map +0 -1
  318. package/dist/nodes/model3d.js +0 -2
  319. package/dist/nodes/model3d.js.map +0 -1
  320. package/dist/nodes/openai.d.ts +0 -172
  321. package/dist/nodes/openai.d.ts.map +0 -1
  322. package/dist/nodes/openai.js +0 -1294
  323. package/dist/nodes/openai.js.map +0 -1
  324. package/dist/nodes/output.d.ts +0 -29
  325. package/dist/nodes/output.d.ts.map +0 -1
  326. package/dist/nodes/output.js +0 -87
  327. package/dist/nodes/output.js.map +0 -1
  328. package/dist/nodes/sandbox.d.ts +0 -63
  329. package/dist/nodes/sandbox.d.ts.map +0 -1
  330. package/dist/nodes/sandbox.js +0 -633
  331. package/dist/nodes/sandbox.js.map +0 -1
  332. package/dist/nodes/search.d.ts +0 -117
  333. package/dist/nodes/search.d.ts.map +0 -1
  334. package/dist/nodes/search.js +0 -607
  335. package/dist/nodes/search.js.map +0 -1
  336. package/dist/nodes/team.d.ts +0 -74
  337. package/dist/nodes/team.d.ts.map +0 -1
  338. package/dist/nodes/team.js +0 -309
  339. package/dist/nodes/team.js.map +0 -1
  340. package/dist/nodes/text-extra.d.ts +0 -633
  341. package/dist/nodes/text-extra.d.ts.map +0 -1
  342. package/dist/nodes/text-extra.js +0 -2226
  343. package/dist/nodes/text-extra.js.map +0 -1
  344. package/dist/nodes/tool-agents.d.ts +0 -334
  345. package/dist/nodes/tool-agents.d.ts.map +0 -1
  346. package/dist/nodes/tool-agents.js +0 -1861
  347. package/dist/nodes/tool-agents.js.map +0 -1
  348. package/dist/nodes/triggers.d.ts +0 -107
  349. package/dist/nodes/triggers.d.ts.map +0 -1
  350. package/dist/nodes/triggers.js +0 -706
  351. package/dist/nodes/triggers.js.map +0 -1
  352. package/dist/nodes/vector.d.ts +0 -168
  353. package/dist/nodes/vector.d.ts.map +0 -1
  354. package/dist/nodes/vector.js +0 -1121
  355. package/dist/nodes/vector.js.map +0 -1
  356. package/dist/nodes/video.d.ts +0 -387
  357. package/dist/nodes/video.d.ts.map +0 -1
  358. package/dist/nodes/video.js +0 -2383
  359. package/dist/nodes/video.js.map +0 -1
  360. package/dist/nodes/workflow.d.ts +0 -24
  361. package/dist/nodes/workflow.d.ts.map +0 -1
  362. package/dist/nodes/workflow.js +0 -146
  363. package/dist/nodes/workflow.js.map +0 -1
  364. package/dist/nodes/workspace.d.ts +0 -203
  365. package/dist/nodes/workspace.d.ts.map +0 -1
  366. package/dist/nodes/workspace.js +0 -795
  367. package/dist/nodes/workspace.js.map +0 -1
@@ -1,172 +0,0 @@
1
- import ManifoldModule from "manifold-3d";
2
- import { buildGlb, COMP_FLOAT, COMP_UNSIGNED_INT, glbGetIndexAccessor, glbGetVec3Accessor, glbReadIndices, glbReadVec3, parseGlb } from "./glb.js";
3
- import { pad4 } from "./utils.js";
4
- let manifoldPromise = null;
5
- async function getManifoldApi() {
6
- if (!manifoldPromise) {
7
- manifoldPromise = ManifoldModule().then((wasm) => {
8
- wasm.setup();
9
- return wasm;
10
- });
11
- }
12
- return manifoldPromise;
13
- }
14
- function extractTriangleMeshForBoolean(bytes) {
15
- const glb = parseGlb(bytes);
16
- if (!glb) {
17
- throw new Error("Unsupported model boolean: expected valid GLB bytes.");
18
- }
19
- const posChunks = [];
20
- const idxChunks = [];
21
- let vertexOffset = 0;
22
- for (const mesh of glb.json.meshes ?? []) {
23
- for (const primitive of mesh.primitives) {
24
- const mode = primitive.mode ?? 4;
25
- if (mode !== 4) {
26
- throw new Error("Unsupported model boolean: only triangle primitives are supported.");
27
- }
28
- const positionIndex = primitive.attributes["POSITION"];
29
- if (positionIndex === undefined) {
30
- throw new Error("Unsupported model boolean: POSITION accessor is required.");
31
- }
32
- const positionAccessor = glbGetVec3Accessor(glb.json, positionIndex);
33
- if (!positionAccessor) {
34
- throw new Error("Unsupported model boolean: only float VEC3 positions are supported.");
35
- }
36
- const primitivePositions = glbReadVec3(glb.bin, positionAccessor.acc, positionAccessor.bv);
37
- posChunks.push(primitivePositions);
38
- let primitiveIndices;
39
- if (primitive.indices !== undefined) {
40
- const indexAccessor = glbGetIndexAccessor(glb.json, primitive.indices);
41
- if (!indexAccessor) {
42
- throw new Error("Unsupported model boolean: indexed triangle accessors are required.");
43
- }
44
- const read = glbReadIndices(glb.bin, indexAccessor.acc, indexAccessor.bv);
45
- if (!read) {
46
- throw new Error("Unsupported model boolean: only unsigned integer indices are supported.");
47
- }
48
- primitiveIndices = read;
49
- }
50
- else {
51
- primitiveIndices = new Uint32Array(positionAccessor.acc.count);
52
- for (let i = 0; i < positionAccessor.acc.count; i++) {
53
- primitiveIndices[i] = i;
54
- }
55
- }
56
- const offsetted = new Uint32Array(primitiveIndices.length);
57
- for (let i = 0; i < primitiveIndices.length; i++) {
58
- offsetted[i] = primitiveIndices[i] + vertexOffset;
59
- }
60
- idxChunks.push(offsetted);
61
- vertexOffset += positionAccessor.acc.count;
62
- }
63
- }
64
- const totalPos = posChunks.reduce((s, c) => s + c.length, 0);
65
- const totalIdx = idxChunks.reduce((s, c) => s + c.length, 0);
66
- const vertProperties = new Float32Array(totalPos);
67
- const triVerts = new Uint32Array(totalIdx);
68
- let off = 0;
69
- for (const chunk of posChunks) {
70
- vertProperties.set(chunk, off);
71
- off += chunk.length;
72
- }
73
- off = 0;
74
- for (const chunk of idxChunks) {
75
- triVerts.set(chunk, off);
76
- off += chunk.length;
77
- }
78
- return { numProp: 3, triVerts, vertProperties };
79
- }
80
- function buildGlbFromTriangleMesh(mesh) {
81
- const vertexCount = Math.floor(mesh.vertProperties.length / mesh.numProp);
82
- if (vertexCount === 0 || mesh.triVerts.length === 0) {
83
- throw new Error("Boolean operation produced an empty mesh.");
84
- }
85
- const positions = new Float32Array(vertexCount * 3);
86
- const min = [Infinity, Infinity, Infinity];
87
- const max = [-Infinity, -Infinity, -Infinity];
88
- for (let i = 0; i < vertexCount; i++) {
89
- const base = i * mesh.numProp;
90
- for (let axis = 0; axis < 3; axis++) {
91
- const value = mesh.vertProperties[base + axis];
92
- positions[i * 3 + axis] = value;
93
- if (value < min[axis])
94
- min[axis] = value;
95
- if (value > max[axis])
96
- max[axis] = value;
97
- }
98
- }
99
- const positionBytes = new Uint8Array(positions.buffer);
100
- const indexBytes = new Uint8Array(mesh.triVerts.buffer);
101
- const totalBinaryLength = positionBytes.byteLength + indexBytes.byteLength + pad4(indexBytes.byteLength);
102
- const json = {
103
- asset: { version: "2.0" },
104
- scenes: [{ nodes: [0] }],
105
- scene: 0,
106
- nodes: [{ mesh: 0 }],
107
- meshes: [
108
- {
109
- primitives: [
110
- {
111
- attributes: { POSITION: 0 },
112
- indices: 1
113
- }
114
- ]
115
- }
116
- ],
117
- buffers: [{ byteLength: totalBinaryLength }],
118
- bufferViews: [
119
- { buffer: 0, byteOffset: 0, byteLength: positionBytes.byteLength },
120
- {
121
- buffer: 0,
122
- byteOffset: positionBytes.byteLength,
123
- byteLength: indexBytes.byteLength
124
- }
125
- ],
126
- accessors: [
127
- {
128
- bufferView: 0,
129
- componentType: COMP_FLOAT,
130
- count: vertexCount,
131
- type: "VEC3",
132
- min,
133
- max
134
- },
135
- {
136
- bufferView: 1,
137
- componentType: COMP_UNSIGNED_INT,
138
- count: mesh.triVerts.length,
139
- type: "SCALAR"
140
- }
141
- ]
142
- };
143
- const binary = new Uint8Array(totalBinaryLength);
144
- binary.set(positionBytes, 0);
145
- binary.set(indexBytes, positionBytes.byteLength);
146
- return buildGlb(json, binary);
147
- }
148
- export async function booleanGlb(bytesA, bytesB, operation) {
149
- const wasm = await getManifoldApi();
150
- const manifoldA = wasm.Manifold.ofMesh(extractTriangleMeshForBoolean(bytesA));
151
- const manifoldB = wasm.Manifold.ofMesh(extractTriangleMeshForBoolean(bytesB));
152
- let result = null;
153
- try {
154
- if (operation === "difference") {
155
- result = manifoldA.subtract(manifoldB);
156
- }
157
- else if (operation === "intersection") {
158
- result = manifoldA.intersect(manifoldB);
159
- }
160
- else {
161
- result = manifoldA.add(manifoldB);
162
- }
163
- const mesh = result.getMesh();
164
- return buildGlbFromTriangleMesh(mesh);
165
- }
166
- finally {
167
- manifoldA.delete();
168
- manifoldB.delete();
169
- result?.delete();
170
- }
171
- }
172
- //# sourceMappingURL=boolean-ops.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boolean-ops.js","sourceRoot":"","sources":["../../../src/nodes/model3d/boolean-ops.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- import { GlbTransformNode } from "./base.js";
2
- export declare class RecalculateNormalsNode extends GlbTransformNode {
3
- static readonly nodeType = "nodetool.model3d.RecalculateNormals";
4
- static readonly title = "Recalculate Normals";
5
- static readonly description = "Recalculate mesh normals for proper shading.\n 3d, mesh, model, normals, fix, shading, smooth, flat, faces\n\n Use cases:\n - Fix inverted or broken normals\n - Switch between smooth and flat shading\n - Repair imported meshes with bad normals\n - Prepare models for rendering";
6
- static readonly metadataOutputTypes: {
7
- output: string;
8
- };
9
- model: any;
10
- mode: any;
11
- fix_winding: any;
12
- protected transform(bytes: Uint8Array): Uint8Array | null;
13
- }
14
- export declare class FlipNormalsNode extends GlbTransformNode {
15
- static readonly nodeType = "nodetool.model3d.FlipNormals";
16
- static readonly title = "Flip Normals";
17
- static readonly description = "Flip all face normals of a mesh.\n 3d, mesh, model, normals, flip, invert, inside_out\n\n Use cases:\n - Fix inside-out meshes\n - Invert normals for specific rendering effects\n - Repair meshes from incompatible software";
18
- static readonly metadataOutputTypes: {
19
- output: string;
20
- };
21
- model: any;
22
- protected transform(bytes: Uint8Array): Uint8Array | null;
23
- }
24
- export declare class ExtractLargestComponentNode extends GlbTransformNode {
25
- static readonly nodeType = "nodetool.model3d.ExtractLargestComponent";
26
- static readonly title = "Extract Largest Component";
27
- static readonly description = "Keep only the largest disconnected triangle component of a 3D mesh.\n 3d, mesh, model, cleanup, component, connected, floater, islands\n\n Current limits:\n - First honest pass supports GLB triangle geometry only\n - Output rebuilds triangle geometry and does not preserve all original attributes/material setup\n\n Use cases:\n - Remove disconnected floaters from AI-generated meshes\n - Keep the primary object from noisy geometry\n - Clean up multi-island outputs before downstream processing";
28
- static readonly metadataOutputTypes: {
29
- output: string;
30
- };
31
- model: any;
32
- protected transform(bytes: Uint8Array): Uint8Array | null;
33
- }
34
- export declare class RepairMeshNode extends GlbTransformNode {
35
- static readonly nodeType = "nodetool.model3d.RepairMesh";
36
- static readonly title = "Repair Mesh";
37
- static readonly description = "Apply conservative mesh cleanup passes to remove obviously broken GLB triangle geometry.\n 3d, mesh, model, repair, cleanup, weld, degenerate, duplicate\n\n Current limits:\n - First honest pass supports GLB triangle geometry only\n - Repair is intentionally conservative: near-duplicate vertex merge plus degenerate-face removal\n - Output rebuilds triangle geometry and does not preserve all original attributes/material setup\n\n Use cases:\n - Clean up noisy AI-generated meshes before export\n - Weld tiny duplicate seams in simple geometry\n - Remove zero-area or collapsed triangles";
38
- static readonly metadataOutputTypes: {
39
- output: string;
40
- };
41
- model: any;
42
- merge_duplicate_vertices: any;
43
- remove_degenerate_faces: any;
44
- position_tolerance: any;
45
- protected transform(bytes: Uint8Array): Uint8Array | null;
46
- }
47
- //# sourceMappingURL=cleanup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/cleanup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAS7C,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,MAAM,CAAC,QAAQ,CAAC,QAAQ,yCAAyC;IACjE,MAAM,CAAC,QAAQ,CAAC,KAAK,yBAAyB;IAC9C,MAAM,CAAC,QAAQ,CAAC,WAAW,4SACgR;IAC3S,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IASX,IAAI,EAAE,GAAG,CAAC;IAQV,WAAW,EAAE,GAAG,CAAC;IAEzB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;CAM1D;AAED,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,MAAM,CAAC,QAAQ,CAAC,QAAQ,kCAAkC;IAC1D,MAAM,CAAC,QAAQ,CAAC,KAAK,kBAAkB;IACvC,MAAM,CAAC,QAAQ,CAAC,WAAW,kPACsN;IACjP,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;CAG1D;AAED,qBAAa,2BAA4B,SAAQ,gBAAgB;IAC/D,MAAM,CAAC,QAAQ,CAAC,QAAQ,8CAA8C;IACtE,MAAM,CAAC,QAAQ,CAAC,KAAK,+BAA+B;IACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,6gBACif;IAC5gB,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;CAG1D;AAED,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,MAAM,CAAC,QAAQ,CAAC,QAAQ,iCAAiC;IACzD,MAAM,CAAC,QAAQ,CAAC,KAAK,iBAAiB;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,8mBACklB;IAC7mB,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IAQX,wBAAwB,EAAE,GAAG,CAAC;IAQ9B,uBAAuB,EAAE,GAAG,CAAC;IAS7B,kBAAkB,EAAE,GAAG,CAAC;IAEhC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;CAO1D"}
@@ -1,136 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { prop } from "@nodetool-ai/node-sdk";
8
- import { GlbTransformNode } from "./base.js";
9
- import { DEFAULT_MODEL_3D } from "./defaults.js";
10
- import { extractLargestComponentGlb, flipNormalsGlb, recalculateNormalsGlb, repairGlb } from "./mesh-ops.js";
11
- export class RecalculateNormalsNode extends GlbTransformNode {
12
- static nodeType = "nodetool.model3d.RecalculateNormals";
13
- static title = "Recalculate Normals";
14
- static description = "Recalculate mesh normals for proper shading.\n 3d, mesh, model, normals, fix, shading, smooth, flat, faces\n\n Use cases:\n - Fix inverted or broken normals\n - Switch between smooth and flat shading\n - Repair imported meshes with bad normals\n - Prepare models for rendering";
15
- static metadataOutputTypes = {
16
- output: "model_3d"
17
- };
18
- transform(bytes) {
19
- return recalculateNormalsGlb(bytes, {
20
- mode: String(this.mode ?? "auto"),
21
- fixWinding: Boolean(this.fix_winding)
22
- });
23
- }
24
- }
25
- __decorate([
26
- prop({
27
- type: "model_3d",
28
- default: DEFAULT_MODEL_3D,
29
- title: "Model",
30
- description: "The 3D model to process"
31
- })
32
- ], RecalculateNormalsNode.prototype, "model", void 0);
33
- __decorate([
34
- prop({
35
- type: "enum",
36
- default: "auto",
37
- title: "Mode",
38
- description: "Shading mode: smooth, flat, or auto (uses mesh default)",
39
- values: ["smooth", "flat", "auto"]
40
- })
41
- ], RecalculateNormalsNode.prototype, "mode", void 0);
42
- __decorate([
43
- prop({
44
- type: "bool",
45
- default: true,
46
- title: "Fix Winding",
47
- description: "Fix inconsistent face winding (inverted faces)"
48
- })
49
- ], RecalculateNormalsNode.prototype, "fix_winding", void 0);
50
- export class FlipNormalsNode extends GlbTransformNode {
51
- static nodeType = "nodetool.model3d.FlipNormals";
52
- static title = "Flip Normals";
53
- static description = "Flip all face normals of a mesh.\n 3d, mesh, model, normals, flip, invert, inside_out\n\n Use cases:\n - Fix inside-out meshes\n - Invert normals for specific rendering effects\n - Repair meshes from incompatible software";
54
- static metadataOutputTypes = {
55
- output: "model_3d"
56
- };
57
- transform(bytes) {
58
- return flipNormalsGlb(bytes);
59
- }
60
- }
61
- __decorate([
62
- prop({
63
- type: "model_3d",
64
- default: DEFAULT_MODEL_3D,
65
- title: "Model",
66
- description: "The 3D model to process"
67
- })
68
- ], FlipNormalsNode.prototype, "model", void 0);
69
- export class ExtractLargestComponentNode extends GlbTransformNode {
70
- static nodeType = "nodetool.model3d.ExtractLargestComponent";
71
- static title = "Extract Largest Component";
72
- static description = "Keep only the largest disconnected triangle component of a 3D mesh.\n 3d, mesh, model, cleanup, component, connected, floater, islands\n\n Current limits:\n - First honest pass supports GLB triangle geometry only\n - Output rebuilds triangle geometry and does not preserve all original attributes/material setup\n\n Use cases:\n - Remove disconnected floaters from AI-generated meshes\n - Keep the primary object from noisy geometry\n - Clean up multi-island outputs before downstream processing";
73
- static metadataOutputTypes = {
74
- output: "model_3d"
75
- };
76
- transform(bytes) {
77
- return extractLargestComponentGlb(bytes);
78
- }
79
- }
80
- __decorate([
81
- prop({
82
- type: "model_3d",
83
- default: DEFAULT_MODEL_3D,
84
- title: "Model",
85
- description: "The 3D model to clean up"
86
- })
87
- ], ExtractLargestComponentNode.prototype, "model", void 0);
88
- export class RepairMeshNode extends GlbTransformNode {
89
- static nodeType = "nodetool.model3d.RepairMesh";
90
- static title = "Repair Mesh";
91
- static description = "Apply conservative mesh cleanup passes to remove obviously broken GLB triangle geometry.\n 3d, mesh, model, repair, cleanup, weld, degenerate, duplicate\n\n Current limits:\n - First honest pass supports GLB triangle geometry only\n - Repair is intentionally conservative: near-duplicate vertex merge plus degenerate-face removal\n - Output rebuilds triangle geometry and does not preserve all original attributes/material setup\n\n Use cases:\n - Clean up noisy AI-generated meshes before export\n - Weld tiny duplicate seams in simple geometry\n - Remove zero-area or collapsed triangles";
92
- static metadataOutputTypes = {
93
- output: "model_3d"
94
- };
95
- transform(bytes) {
96
- return repairGlb(bytes, {
97
- mergeDuplicateVertices: Boolean(this.merge_duplicate_vertices ?? true),
98
- removeDegenerateFaces: Boolean(this.remove_degenerate_faces ?? true),
99
- positionTolerance: Number(this.position_tolerance ?? 0.0001)
100
- });
101
- }
102
- }
103
- __decorate([
104
- prop({
105
- type: "model_3d",
106
- default: DEFAULT_MODEL_3D,
107
- title: "Model",
108
- description: "The 3D model to repair"
109
- })
110
- ], RepairMeshNode.prototype, "model", void 0);
111
- __decorate([
112
- prop({
113
- type: "bool",
114
- default: true,
115
- title: "Merge Duplicate Vertices",
116
- description: "Merge exact or near-duplicate vertices before other cleanup"
117
- })
118
- ], RepairMeshNode.prototype, "merge_duplicate_vertices", void 0);
119
- __decorate([
120
- prop({
121
- type: "bool",
122
- default: true,
123
- title: "Remove Degenerate Faces",
124
- description: "Drop triangles with repeated vertices or near-zero area"
125
- })
126
- ], RepairMeshNode.prototype, "remove_degenerate_faces", void 0);
127
- __decorate([
128
- prop({
129
- type: "float",
130
- default: 0.0001,
131
- title: "Position Tolerance",
132
- description: "Tolerance used for near-duplicate vertex welding and degenerate checks",
133
- min: 0
134
- })
135
- ], RepairMeshNode.prototype, "position_tolerance", void 0);
136
- //# sourceMappingURL=cleanup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/nodes/model3d/cleanup.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,qBAAqB,EACrB,SAAS,EACV,MAAM,eAAe,CAAC;AAEvB,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAC1D,MAAM,CAAU,QAAQ,GAAG,qCAAqC,CAAC;IACjE,MAAM,CAAU,KAAK,GAAG,qBAAqB,CAAC;IAC9C,MAAM,CAAU,WAAW,GACzB,wSAAwS,CAAC;IAC3S,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,UAAU;KACnB,CAAC;IA2BQ,SAAS,CAAC,KAAiB;QACnC,OAAO,qBAAqB,CAAC,KAAK,EAAE;YAClC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;YACjC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;;AAxBO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yBAAyB;KACvC,CAAC;qDACiB;AASX;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,yDAAyD;QACtE,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KACnC,CAAC;oDACgB;AAQV;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,gDAAgD;KAC9D,CAAC;2DACuB;AAU3B,MAAM,OAAO,eAAgB,SAAQ,gBAAgB;IACnD,MAAM,CAAU,QAAQ,GAAG,8BAA8B,CAAC;IAC1D,MAAM,CAAU,KAAK,GAAG,cAAc,CAAC;IACvC,MAAM,CAAU,WAAW,GACzB,8OAA8O,CAAC;IACjP,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,UAAU;KACnB,CAAC;IAUQ,SAAS,CAAC,KAAiB;QACnC,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;;AAJO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yBAAyB;KACvC,CAAC;8CACiB;AAOrB,MAAM,OAAO,2BAA4B,SAAQ,gBAAgB;IAC/D,MAAM,CAAU,QAAQ,GAAG,0CAA0C,CAAC;IACtE,MAAM,CAAU,KAAK,GAAG,2BAA2B,CAAC;IACpD,MAAM,CAAU,WAAW,GACzB,ygBAAygB,CAAC;IAC5gB,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,UAAU;KACnB,CAAC;IAUQ,SAAS,CAAC,KAAiB;QACnC,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;;AAJO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,0BAA0B;KACxC,CAAC;0DACiB;AAOrB,MAAM,OAAO,cAAe,SAAQ,gBAAgB;IAClD,MAAM,CAAU,QAAQ,GAAG,6BAA6B,CAAC;IACzD,MAAM,CAAU,KAAK,GAAG,aAAa,CAAC;IACtC,MAAM,CAAU,WAAW,GACzB,0mBAA0mB,CAAC;IAC7mB,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,UAAU;KACnB,CAAC;IAmCQ,SAAS,CAAC,KAAiB;QACnC,OAAO,SAAS,CAAC,KAAK,EAAE;YACtB,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC;YACtE,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC;YACpE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;;AAjCO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,wBAAwB;KACtC,CAAC;6CACiB;AAQX;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,6DAA6D;KAC3E,CAAC;gEACoC;AAQ9B;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,yDAAyD;KACvE,CAAC;+DACmC;AAS7B;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,wEAAwE;QACrF,GAAG,EAAE,CAAC;KACP,CAAC;0DAC8B"}
@@ -1,14 +0,0 @@
1
- import { GlbTransformNode } from "./base.js";
2
- export declare class FormatConverterNode extends GlbTransformNode {
3
- static readonly nodeType = "nodetool.model3d.FormatConverter";
4
- static readonly title = "Format Converter";
5
- static readonly description = "Convert a 3D model between supported formats.\n 3d, mesh, model, convert, format, glb, gltf, export\n\n Currently supported conversions: glb \u2192 gltf. Other targets are not yet implemented.\n\n Use cases:\n - Convert GLB to textual glTF for inspection\n - Export models as glTF for tool compatibility";
6
- static readonly metadataOutputTypes: {
7
- output: string;
8
- };
9
- model: any;
10
- output_format: any;
11
- protected transform(_bytes: Uint8Array): Uint8Array | null;
12
- process(): Promise<Record<string, unknown>>;
13
- }
14
- //# sourceMappingURL=convert.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/convert.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAK7C,qBAAa,mBAAoB,SAAQ,gBAAgB;IACvD,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAsC;IAC9D,MAAM,CAAC,QAAQ,CAAC,KAAK,sBAAsB;IAC3C,MAAM,CAAC,QAAQ,CAAC,WAAW,oUACmS;IAC9T,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IAQM,KAAK,EAAE,GAAG,CAAC;IASX,aAAa,EAAE,GAAG,CAAC;IAE3B,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAIpD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA6BlD"}
@@ -1,64 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { prop } from "@nodetool-ai/node-sdk";
8
- import { GlbTransformNode } from "./base.js";
9
- import { DEFAULT_MODEL_3D } from "./defaults.js";
10
- import { convertGlbToGltf } from "./document-ops.js";
11
- import { modelBytes, modelFormat, modelRef, replaceExtension } from "./utils.js";
12
- export class FormatConverterNode extends GlbTransformNode {
13
- static nodeType = "nodetool.model3d.FormatConverter";
14
- static title = "Format Converter";
15
- static description = "Convert a 3D model between supported formats.\n 3d, mesh, model, convert, format, glb, gltf, export\n\n Currently supported conversions: glb → gltf. Other targets are not yet implemented.\n\n Use cases:\n - Convert GLB to textual glTF for inspection\n - Export models as glTF for tool compatibility";
16
- static metadataOutputTypes = {
17
- output: "model_3d"
18
- };
19
- transform(_bytes) {
20
- return null;
21
- }
22
- async process() {
23
- const model = this.getModel();
24
- const bytes = modelBytes(model);
25
- const inputFormat = modelFormat(model);
26
- const outputFormat = String(this.output_format ?? "glb").toLowerCase();
27
- if (outputFormat === inputFormat) {
28
- return {
29
- output: modelRef(bytes, {
30
- uri: replaceExtension(model.uri ?? "", outputFormat),
31
- format: outputFormat
32
- })
33
- };
34
- }
35
- if (inputFormat !== "glb" || outputFormat !== "gltf") {
36
- throw new Error(`Unsupported model conversion: ${inputFormat} → ${outputFormat}. Only glb → gltf is currently supported.`);
37
- }
38
- const convertedBytes = await convertGlbToGltf(bytes);
39
- return {
40
- output: modelRef(convertedBytes, {
41
- uri: replaceExtension(model.uri ?? "", outputFormat),
42
- format: outputFormat
43
- })
44
- };
45
- }
46
- }
47
- __decorate([
48
- prop({
49
- type: "model_3d",
50
- default: DEFAULT_MODEL_3D,
51
- title: "Model",
52
- description: "The 3D model to convert"
53
- })
54
- ], FormatConverterNode.prototype, "model", void 0);
55
- __decorate([
56
- prop({
57
- type: "enum",
58
- default: "glb",
59
- title: "Output Format",
60
- description: "Target format for conversion. Currently only glb → gltf is supported.",
61
- values: ["glb", "gltf"]
62
- })
63
- ], FormatConverterNode.prototype, "output_format", void 0);
64
- //# sourceMappingURL=convert.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../src/nodes/model3d/convert.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;IACvD,MAAM,CAAU,QAAQ,GAAG,kCAAkC,CAAC;IAC9D,MAAM,CAAU,KAAK,GAAG,kBAAkB,CAAC;IAC3C,MAAM,CAAU,WAAW,GACzB,2TAA2T,CAAC;IAC9T,MAAM,CAAU,mBAAmB,GAAG;QACpC,MAAM,EAAE,UAAU;KACnB,CAAC;IAmBQ,SAAS,CAAC,MAAkB;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvE,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE;oBACtB,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,YAAY,CAAC;oBACpD,MAAM,EAAE,YAAY;iBACrB,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,KAAK,KAAK,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,MAAM,YAAY,2CAA2C,CAC1G,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE;gBAC/B,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,YAAY,CAAC;gBACpD,MAAM,EAAE,YAAY;aACrB,CAAC;SACH,CAAC;IACJ,CAAC;;AA3CO;IANP,IAAI,CAAC;QACJ,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,yBAAyB;KACvC,CAAC;kDACiB;AASX;IAPP,IAAI,CAAC;QACJ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,uEAAuE;QACpF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;0DACyB"}
@@ -1,34 +0,0 @@
1
- export declare const DEFAULT_MODEL_3D: {
2
- type: "model_3d";
3
- uri: string;
4
- asset_id: null;
5
- data: null;
6
- metadata: null;
7
- };
8
- export declare const DEFAULT_FOLDER: {
9
- type: "folder";
10
- uri: string;
11
- asset_id: null;
12
- data: null;
13
- metadata: null;
14
- };
15
- export declare const DEFAULT_IMAGE: {
16
- type: "image";
17
- uri: string;
18
- asset_id: null;
19
- data: null;
20
- metadata: null;
21
- };
22
- export declare const DEFAULT_TEXT_TO_3D_MODEL: {
23
- type: string;
24
- provider: string;
25
- id: string;
26
- name: string;
27
- };
28
- export declare const DEFAULT_IMAGE_TO_3D_MODEL: {
29
- type: string;
30
- provider: string;
31
- id: string;
32
- name: string;
33
- };
34
- //# sourceMappingURL=defaults.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/defaults.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gBAAgB;;;;;;CAI3B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;CAAwB,CAAC;AAEpD,eAAO,MAAM,aAAa;;;;;;CAAuB,CAAC;AAElD,eAAO,MAAM,wBAAwB;;;;;CAKpC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;CAKrC,CAAC"}
@@ -1,28 +0,0 @@
1
- const makeDefault = (type, extra = {}) => ({
2
- type,
3
- uri: "",
4
- asset_id: null,
5
- data: null,
6
- metadata: null,
7
- ...extra
8
- });
9
- export const DEFAULT_MODEL_3D = makeDefault("model_3d", {
10
- format: null,
11
- material_file: null,
12
- texture_files: []
13
- });
14
- export const DEFAULT_FOLDER = makeDefault("folder");
15
- export const DEFAULT_IMAGE = makeDefault("image");
16
- export const DEFAULT_TEXT_TO_3D_MODEL = {
17
- type: "model_3d_model",
18
- provider: "meshy",
19
- id: "meshy-4",
20
- name: "Meshy-4 Text-to-3D"
21
- };
22
- export const DEFAULT_IMAGE_TO_3D_MODEL = {
23
- type: "model_3d_model",
24
- provider: "meshy",
25
- id: "meshy-4-image",
26
- name: "Meshy-4 Image-to-3D"
27
- };
28
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/nodes/model3d/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,CAClB,IAAO,EACP,QAAiC,EAAE,EACnC,EAAE,CAAC,CAAC;IACJ,IAAI;IACJ,GAAG,EAAE,EAAE;IACP,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;IACd,GAAG,KAAK;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,EAAE;IACtD,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;AAElD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,OAAO;IACjB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,oBAAoB;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,OAAO;IACjB,EAAE,EAAE,eAAe;IACnB,IAAI,EAAE,qBAAqB;CAC5B,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare function convertGlbToGltf(bytes: Uint8Array): Promise<Uint8Array>;
2
- export declare function decimateGlb(bytes: Uint8Array, targetRatio: number): Promise<Uint8Array>;
3
- export declare function mergeGlbModels(modelsBytesList: Uint8Array[]): Promise<Uint8Array>;
4
- //# sourceMappingURL=document-ops.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-ops.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/document-ops.ts"],"names":[],"mappings":"AAgBA,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAU7E;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED,wBAAsB,cAAc,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAYvF"}
@@ -1,40 +0,0 @@
1
- import { NodeIO } from "@gltf-transform/core";
2
- import { mergeDocuments, simplify, unpartition, weld } from "@gltf-transform/functions";
3
- import { MeshoptSimplifier } from "meshoptimizer";
4
- import { embedJsonResourceUris } from "./utils.js";
5
- const gltfIo = new NodeIO();
6
- export async function convertGlbToGltf(bytes) {
7
- const document = await gltfIo.readBinary(bytes);
8
- const jsonDocument = await gltfIo.writeJSON(document);
9
- const json = JSON.parse(JSON.stringify(jsonDocument.json));
10
- embedJsonResourceUris(json.buffers, jsonDocument.resources);
11
- embedJsonResourceUris(json.images, jsonDocument.resources);
12
- return new TextEncoder().encode(JSON.stringify(json));
13
- }
14
- export async function decimateGlb(bytes, targetRatio) {
15
- const document = await gltfIo.readBinary(bytes);
16
- const ratio = Math.max(0.01, Math.min(1, targetRatio));
17
- if (ratio >= 1) {
18
- return bytes;
19
- }
20
- await MeshoptSimplifier.ready;
21
- await document.transform(weld({}), simplify({
22
- simplifier: MeshoptSimplifier,
23
- ratio,
24
- error: 0.01
25
- }));
26
- return gltfIo.writeBinary(document);
27
- }
28
- export async function mergeGlbModels(modelsBytesList) {
29
- const [first, ...rest] = modelsBytesList;
30
- if (!first)
31
- return new Uint8Array(0);
32
- const target = await gltfIo.readBinary(first);
33
- for (const bytes of rest) {
34
- const source = await gltfIo.readBinary(bytes);
35
- mergeDocuments(target, source);
36
- }
37
- await target.transform(unpartition());
38
- return gltfIo.writeBinary(target);
39
- }
40
- //# sourceMappingURL=document-ops.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-ops.js","sourceRoot":"","sources":["../../../src/nodes/model3d/document-ops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,QAAQ,EACR,WAAW,EACX,IAAI,EACL,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EACL,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAiB;IACtD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAGxD,CAAC;IACF,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5D,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3D,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAiB,EACjB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IAEvD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,iBAAiB,CAAC,KAAK,CAAC;IAC9B,MAAM,QAAQ,CAAC,SAAS,CACtB,IAAI,CAAC,EAAE,CAAC,EACR,QAAQ,CAAC;QACP,UAAU,EAAE,iBAAiB;QAC7B,KAAK;QACL,KAAK,EAAE,IAAI;KACZ,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,eAA6B;IAChE,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9C,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
@@ -1,39 +0,0 @@
1
- import { BaseNode } from "@nodetool-ai/node-sdk";
2
- import type { ProcessingContext } from "@nodetool-ai/runtime";
3
- export declare class TextTo3DNode extends BaseNode {
4
- static readonly nodeType = "nodetool.model3d.TextTo3D";
5
- static readonly title = "Text To 3D";
6
- static readonly description = "Generate 3D models from text prompts using AI providers (Meshy, Rodin).\n 3d, generation, AI, text-to-3d, t3d, mesh, create\n\n Use cases:\n - Create 3D models from text descriptions\n - Generate game assets from prompts\n - Prototype 3D concepts quickly\n - Create 3D content for AR/VR";
7
- static readonly metadataOutputTypes: {
8
- output: string;
9
- };
10
- static readonly basicFields: string[];
11
- static readonly exposeAsTool = true;
12
- model: any;
13
- prompt: any;
14
- negative_prompt: any;
15
- art_style: any;
16
- output_format: any;
17
- enable_textures: any;
18
- seed: any;
19
- timeout_seconds: any;
20
- process(context?: ProcessingContext): Promise<Record<string, unknown>>;
21
- }
22
- export declare class ImageTo3DNode extends BaseNode {
23
- static readonly nodeType = "nodetool.model3d.ImageTo3D";
24
- static readonly title = "Image To 3D";
25
- static readonly description = "Generate 3D models from images using AI providers (Meshy, Rodin).\n 3d, generation, AI, image-to-3d, i3d, mesh, reconstruction\n\n Use cases:\n - Convert product photos to 3D models\n - Create 3D assets from concept art\n - Generate 3D characters from drawings\n - Reconstruct objects from images";
26
- static readonly metadataOutputTypes: {
27
- output: string;
28
- };
29
- static readonly basicFields: string[];
30
- static readonly exposeAsTool = true;
31
- model: any;
32
- image: any;
33
- prompt: any;
34
- output_format: any;
35
- seed: any;
36
- timeout_seconds: any;
37
- process(context?: ProcessingContext): Promise<Record<string, unknown>>;
38
- }
39
- //# sourceMappingURL=generation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA8E9D,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,+BAA+B;IACvD,MAAM,CAAC,QAAQ,CAAC,KAAK,gBAAgB;IACrC,MAAM,CAAC,QAAQ,CAAC,WAAW,sTAC0R;IACrT,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IACF,MAAM,CAAC,QAAQ,CAAC,WAAW,WAAmE;IAC9F,MAAM,CAAC,QAAQ,CAAC,YAAY,QAAQ;IAQ5B,KAAK,EAAE,GAAG,CAAC;IAGX,MAAM,EAAE,GAAG,CAAC;IAGZ,eAAe,EAAE,GAAG,CAAC;IAGrB,SAAS,EAAE,GAAG,CAAC;IAGf,aAAa,EAAE,GAAG,CAAC;IAGnB,eAAe,EAAE,GAAG,CAAC;IAGrB,IAAI,EAAE,GAAG,CAAC;IAGV,eAAe,EAAE,GAAG,CAAC;IAEvB,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA0B7E;AAED,qBAAa,aAAc,SAAQ,QAAQ;IACzC,MAAM,CAAC,QAAQ,CAAC,QAAQ,gCAAgC;IACxD,MAAM,CAAC,QAAQ,CAAC,KAAK,iBAAiB;IACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,gUACoS;IAC/T,MAAM,CAAC,QAAQ,CAAC,mBAAmB;;MAEjC;IACF,MAAM,CAAC,QAAQ,CAAC,WAAW,WAA+C;IAC1E,MAAM,CAAC,QAAQ,CAAC,YAAY,QAAQ;IAQ5B,KAAK,EAAE,GAAG,CAAC;IAGX,KAAK,EAAE,GAAG,CAAC;IAGX,MAAM,EAAE,GAAG,CAAC;IAGZ,aAAa,EAAE,GAAG,CAAC;IAGnB,IAAI,EAAE,GAAG,CAAC;IAGV,eAAe,EAAE,GAAG,CAAC;IAEvB,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAwB7E"}