@nodetool-ai/base-nodes 0.7.0-rc.11

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 (353) hide show
  1. package/dist/index.d.ts +72 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +270 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/lib/audio-wav.d.ts +66 -0
  6. package/dist/lib/audio-wav.d.ts.map +1 -0
  7. package/dist/lib/audio-wav.js +215 -0
  8. package/dist/lib/audio-wav.js.map +1 -0
  9. package/dist/nodes/agents.d.ts +253 -0
  10. package/dist/nodes/agents.d.ts.map +1 -0
  11. package/dist/nodes/agents.js +2784 -0
  12. package/dist/nodes/agents.js.map +1 -0
  13. package/dist/nodes/anthropic.d.ts +26 -0
  14. package/dist/nodes/anthropic.d.ts.map +1 -0
  15. package/dist/nodes/anthropic.js +133 -0
  16. package/dist/nodes/anthropic.js.map +1 -0
  17. package/dist/nodes/apify.d.ts +120 -0
  18. package/dist/nodes/apify.d.ts.map +1 -0
  19. package/dist/nodes/apify.js +618 -0
  20. package/dist/nodes/apify.js.map +1 -0
  21. package/dist/nodes/audio.d.ts +301 -0
  22. package/dist/nodes/audio.d.ts.map +1 -0
  23. package/dist/nodes/audio.js +1274 -0
  24. package/dist/nodes/audio.js.map +1 -0
  25. package/dist/nodes/code-node.d.ts +34 -0
  26. package/dist/nodes/code-node.d.ts.map +1 -0
  27. package/dist/nodes/code-node.js +343 -0
  28. package/dist/nodes/code-node.js.map +1 -0
  29. package/dist/nodes/code.d.ts +301 -0
  30. package/dist/nodes/code.d.ts.map +1 -0
  31. package/dist/nodes/code.js +850 -0
  32. package/dist/nodes/code.js.map +1 -0
  33. package/dist/nodes/compare.d.ts +18 -0
  34. package/dist/nodes/compare.d.ts.map +1 -0
  35. package/dist/nodes/compare.js +122 -0
  36. package/dist/nodes/compare.js.map +1 -0
  37. package/dist/nodes/constant.d.ts +315 -0
  38. package/dist/nodes/constant.d.ts.map +1 -0
  39. package/dist/nodes/constant.js +715 -0
  40. package/dist/nodes/constant.js.map +1 -0
  41. package/dist/nodes/control.d.ts +83 -0
  42. package/dist/nodes/control.d.ts.map +1 -0
  43. package/dist/nodes/control.js +212 -0
  44. package/dist/nodes/control.js.map +1 -0
  45. package/dist/nodes/data.d.ts +369 -0
  46. package/dist/nodes/data.d.ts.map +1 -0
  47. package/dist/nodes/data.js +1590 -0
  48. package/dist/nodes/data.js.map +1 -0
  49. package/dist/nodes/document.d.ts +134 -0
  50. package/dist/nodes/document.d.ts.map +1 -0
  51. package/dist/nodes/document.js +984 -0
  52. package/dist/nodes/document.js.map +1 -0
  53. package/dist/nodes/extended-placeholders.d.ts +6 -0
  54. package/dist/nodes/extended-placeholders.d.ts.map +1 -0
  55. package/dist/nodes/extended-placeholders.js +19 -0
  56. package/dist/nodes/extended-placeholders.js.map +1 -0
  57. package/dist/nodes/gemini.d.ts +109 -0
  58. package/dist/nodes/gemini.d.ts.map +1 -0
  59. package/dist/nodes/gemini.js +861 -0
  60. package/dist/nodes/gemini.js.map +1 -0
  61. package/dist/nodes/generators.d.ts +84 -0
  62. package/dist/nodes/generators.d.ts.map +1 -0
  63. package/dist/nodes/generators.js +937 -0
  64. package/dist/nodes/generators.js.map +1 -0
  65. package/dist/nodes/image.d.ts +232 -0
  66. package/dist/nodes/image.d.ts.map +1 -0
  67. package/dist/nodes/image.js +1395 -0
  68. package/dist/nodes/image.js.map +1 -0
  69. package/dist/nodes/input.d.ts +445 -0
  70. package/dist/nodes/input.d.ts.map +1 -0
  71. package/dist/nodes/input.js +1459 -0
  72. package/dist/nodes/input.js.map +1 -0
  73. package/dist/nodes/kie-dynamic.d.ts +31 -0
  74. package/dist/nodes/kie-dynamic.d.ts.map +1 -0
  75. package/dist/nodes/kie-dynamic.js +270 -0
  76. package/dist/nodes/kie-dynamic.js.map +1 -0
  77. package/dist/nodes/lib-audio-dsp.d.ts +85 -0
  78. package/dist/nodes/lib-audio-dsp.d.ts.map +1 -0
  79. package/dist/nodes/lib-audio-dsp.js +450 -0
  80. package/dist/nodes/lib-audio-dsp.js.map +1 -0
  81. package/dist/nodes/lib-audio-effects.d.ts +116 -0
  82. package/dist/nodes/lib-audio-effects.d.ts.map +1 -0
  83. package/dist/nodes/lib-audio-effects.js +905 -0
  84. package/dist/nodes/lib-audio-effects.js.map +1 -0
  85. package/dist/nodes/lib-browser.d.ts +99 -0
  86. package/dist/nodes/lib-browser.d.ts.map +1 -0
  87. package/dist/nodes/lib-browser.js +692 -0
  88. package/dist/nodes/lib-browser.js.map +1 -0
  89. package/dist/nodes/lib-charts.d.ts +20 -0
  90. package/dist/nodes/lib-charts.d.ts.map +1 -0
  91. package/dist/nodes/lib-charts.js +245 -0
  92. package/dist/nodes/lib-charts.js.map +1 -0
  93. package/dist/nodes/lib-datetime.d.ts +108 -0
  94. package/dist/nodes/lib-datetime.d.ts.map +1 -0
  95. package/dist/nodes/lib-datetime.js +421 -0
  96. package/dist/nodes/lib-datetime.js.map +1 -0
  97. package/dist/nodes/lib-doc-convert.d.ts +19 -0
  98. package/dist/nodes/lib-doc-convert.d.ts.map +1 -0
  99. package/dist/nodes/lib-doc-convert.js +257 -0
  100. package/dist/nodes/lib-doc-convert.js.map +1 -0
  101. package/dist/nodes/lib-doc-transform.d.ts +39 -0
  102. package/dist/nodes/lib-doc-transform.d.ts.map +1 -0
  103. package/dist/nodes/lib-doc-transform.js +335 -0
  104. package/dist/nodes/lib-doc-transform.js.map +1 -0
  105. package/dist/nodes/lib-docx.d.ts +106 -0
  106. package/dist/nodes/lib-docx.d.ts.map +1 -0
  107. package/dist/nodes/lib-docx.js +595 -0
  108. package/dist/nodes/lib-docx.js.map +1 -0
  109. package/dist/nodes/lib-epub.d.ts +55 -0
  110. package/dist/nodes/lib-epub.d.ts.map +1 -0
  111. package/dist/nodes/lib-epub.js +220 -0
  112. package/dist/nodes/lib-epub.js.map +1 -0
  113. package/dist/nodes/lib-excel.d.ts +74 -0
  114. package/dist/nodes/lib-excel.d.ts.map +1 -0
  115. package/dist/nodes/lib-excel.js +448 -0
  116. package/dist/nodes/lib-excel.js.map +1 -0
  117. package/dist/nodes/lib-graphql.d.ts +66 -0
  118. package/dist/nodes/lib-graphql.d.ts.map +1 -0
  119. package/dist/nodes/lib-graphql.js +333 -0
  120. package/dist/nodes/lib-graphql.js.map +1 -0
  121. package/dist/nodes/lib-grid.d.ts +27 -0
  122. package/dist/nodes/lib-grid.d.ts.map +1 -0
  123. package/dist/nodes/lib-grid.js +172 -0
  124. package/dist/nodes/lib-grid.js.map +1 -0
  125. package/dist/nodes/lib-html-parse.d.ts +108 -0
  126. package/dist/nodes/lib-html-parse.d.ts.map +1 -0
  127. package/dist/nodes/lib-html-parse.js +365 -0
  128. package/dist/nodes/lib-html-parse.js.map +1 -0
  129. package/dist/nodes/lib-http.d.ts +98 -0
  130. package/dist/nodes/lib-http.d.ts.map +1 -0
  131. package/dist/nodes/lib-http.js +267 -0
  132. package/dist/nodes/lib-http.js.map +1 -0
  133. package/dist/nodes/lib-image-color-grading.d.ts +3 -0
  134. package/dist/nodes/lib-image-color-grading.d.ts.map +1 -0
  135. package/dist/nodes/lib-image-color-grading.js +1386 -0
  136. package/dist/nodes/lib-image-color-grading.js.map +1 -0
  137. package/dist/nodes/lib-image-draw.d.ts +3 -0
  138. package/dist/nodes/lib-image-draw.d.ts.map +1 -0
  139. package/dist/nodes/lib-image-draw.js +470 -0
  140. package/dist/nodes/lib-image-draw.js.map +1 -0
  141. package/dist/nodes/lib-image-enhance.d.ts +3 -0
  142. package/dist/nodes/lib-image-enhance.d.ts.map +1 -0
  143. package/dist/nodes/lib-image-enhance.js +731 -0
  144. package/dist/nodes/lib-image-enhance.js.map +1 -0
  145. package/dist/nodes/lib-image-filter.d.ts +3 -0
  146. package/dist/nodes/lib-image-filter.d.ts.map +1 -0
  147. package/dist/nodes/lib-image-filter.js +684 -0
  148. package/dist/nodes/lib-image-filter.js.map +1 -0
  149. package/dist/nodes/lib-image-utils.d.ts +24 -0
  150. package/dist/nodes/lib-image-utils.d.ts.map +1 -0
  151. package/dist/nodes/lib-image-utils.js +150 -0
  152. package/dist/nodes/lib-image-utils.js.map +1 -0
  153. package/dist/nodes/lib-mail.d.ts +74 -0
  154. package/dist/nodes/lib-mail.d.ts.map +1 -0
  155. package/dist/nodes/lib-mail.js +452 -0
  156. package/dist/nodes/lib-mail.js.map +1 -0
  157. package/dist/nodes/lib-markdown.d.ts +70 -0
  158. package/dist/nodes/lib-markdown.d.ts.map +1 -0
  159. package/dist/nodes/lib-markdown.js +236 -0
  160. package/dist/nodes/lib-markdown.js.map +1 -0
  161. package/dist/nodes/lib-nlp.d.ts +98 -0
  162. package/dist/nodes/lib-nlp.d.ts.map +1 -0
  163. package/dist/nodes/lib-nlp.js +374 -0
  164. package/dist/nodes/lib-nlp.js.map +1 -0
  165. package/dist/nodes/lib-notion.d.ts +99 -0
  166. package/dist/nodes/lib-notion.d.ts.map +1 -0
  167. package/dist/nodes/lib-notion.js +601 -0
  168. package/dist/nodes/lib-notion.js.map +1 -0
  169. package/dist/nodes/lib-ocr.d.ts +31 -0
  170. package/dist/nodes/lib-ocr.d.ts.map +1 -0
  171. package/dist/nodes/lib-ocr.js +143 -0
  172. package/dist/nodes/lib-ocr.js.map +1 -0
  173. package/dist/nodes/lib-os.d.ts +312 -0
  174. package/dist/nodes/lib-os.d.ts.map +1 -0
  175. package/dist/nodes/lib-os.js +909 -0
  176. package/dist/nodes/lib-os.js.map +1 -0
  177. package/dist/nodes/lib-pdf.d.ts +142 -0
  178. package/dist/nodes/lib-pdf.d.ts.map +1 -0
  179. package/dist/nodes/lib-pdf.js +871 -0
  180. package/dist/nodes/lib-pdf.js.map +1 -0
  181. package/dist/nodes/lib-pptx.d.ts +29 -0
  182. package/dist/nodes/lib-pptx.d.ts.map +1 -0
  183. package/dist/nodes/lib-pptx.js +122 -0
  184. package/dist/nodes/lib-pptx.js.map +1 -0
  185. package/dist/nodes/lib-rss.d.ts +31 -0
  186. package/dist/nodes/lib-rss.d.ts.map +1 -0
  187. package/dist/nodes/lib-rss.js +163 -0
  188. package/dist/nodes/lib-rss.js.map +1 -0
  189. package/dist/nodes/lib-s3.d.ts +112 -0
  190. package/dist/nodes/lib-s3.d.ts.map +1 -0
  191. package/dist/nodes/lib-s3.js +521 -0
  192. package/dist/nodes/lib-s3.js.map +1 -0
  193. package/dist/nodes/lib-secret.d.ts +15 -0
  194. package/dist/nodes/lib-secret.d.ts.map +1 -0
  195. package/dist/nodes/lib-secret.js +42 -0
  196. package/dist/nodes/lib-secret.js.map +1 -0
  197. package/dist/nodes/lib-sqlite.d.ts +102 -0
  198. package/dist/nodes/lib-sqlite.d.ts.map +1 -0
  199. package/dist/nodes/lib-sqlite.js +532 -0
  200. package/dist/nodes/lib-sqlite.js.map +1 -0
  201. package/dist/nodes/lib-supabase.d.ts +86 -0
  202. package/dist/nodes/lib-supabase.d.ts.map +1 -0
  203. package/dist/nodes/lib-supabase.js +425 -0
  204. package/dist/nodes/lib-supabase.js.map +1 -0
  205. package/dist/nodes/lib-svg.d.ts +199 -0
  206. package/dist/nodes/lib-svg.d.ts.map +1 -0
  207. package/dist/nodes/lib-svg.js +1027 -0
  208. package/dist/nodes/lib-svg.js.map +1 -0
  209. package/dist/nodes/lib-tensorflow.d.ts +71 -0
  210. package/dist/nodes/lib-tensorflow.d.ts.map +1 -0
  211. package/dist/nodes/lib-tensorflow.js +351 -0
  212. package/dist/nodes/lib-tensorflow.js.map +1 -0
  213. package/dist/nodes/lib-twilio.d.ts +71 -0
  214. package/dist/nodes/lib-twilio.d.ts.map +1 -0
  215. package/dist/nodes/lib-twilio.js +469 -0
  216. package/dist/nodes/lib-twilio.js.map +1 -0
  217. package/dist/nodes/lib-validate.d.ts +84 -0
  218. package/dist/nodes/lib-validate.d.ts.map +1 -0
  219. package/dist/nodes/lib-validate.js +215 -0
  220. package/dist/nodes/lib-validate.js.map +1 -0
  221. package/dist/nodes/lib-video-download.d.ts +26 -0
  222. package/dist/nodes/lib-video-download.d.ts.map +1 -0
  223. package/dist/nodes/lib-video-download.js +299 -0
  224. package/dist/nodes/lib-video-download.js.map +1 -0
  225. package/dist/nodes/messaging.d.ts +88 -0
  226. package/dist/nodes/messaging.d.ts.map +1 -0
  227. package/dist/nodes/messaging.js +418 -0
  228. package/dist/nodes/messaging.js.map +1 -0
  229. package/dist/nodes/mistral.d.ts +83 -0
  230. package/dist/nodes/mistral.d.ts.map +1 -0
  231. package/dist/nodes/mistral.js +450 -0
  232. package/dist/nodes/mistral.js.map +1 -0
  233. package/dist/nodes/model3d/analysis.d.ts +13 -0
  234. package/dist/nodes/model3d/analysis.d.ts.map +1 -0
  235. package/dist/nodes/model3d/analysis.js +36 -0
  236. package/dist/nodes/model3d/analysis.js.map +1 -0
  237. package/dist/nodes/model3d/base.d.ts +11 -0
  238. package/dist/nodes/model3d/base.d.ts.map +1 -0
  239. package/dist/nodes/model3d/base.js +20 -0
  240. package/dist/nodes/model3d/base.js.map +1 -0
  241. package/dist/nodes/model3d/boolean-ops.d.ts +2 -0
  242. package/dist/nodes/model3d/boolean-ops.d.ts.map +1 -0
  243. package/dist/nodes/model3d/boolean-ops.js +172 -0
  244. package/dist/nodes/model3d/boolean-ops.js.map +1 -0
  245. package/dist/nodes/model3d/cleanup.d.ts +47 -0
  246. package/dist/nodes/model3d/cleanup.d.ts.map +1 -0
  247. package/dist/nodes/model3d/cleanup.js +136 -0
  248. package/dist/nodes/model3d/cleanup.js.map +1 -0
  249. package/dist/nodes/model3d/convert.d.ts +14 -0
  250. package/dist/nodes/model3d/convert.d.ts.map +1 -0
  251. package/dist/nodes/model3d/convert.js +64 -0
  252. package/dist/nodes/model3d/convert.js.map +1 -0
  253. package/dist/nodes/model3d/defaults.d.ts +34 -0
  254. package/dist/nodes/model3d/defaults.d.ts.map +1 -0
  255. package/dist/nodes/model3d/defaults.js +28 -0
  256. package/dist/nodes/model3d/defaults.js.map +1 -0
  257. package/dist/nodes/model3d/document-ops.d.ts +4 -0
  258. package/dist/nodes/model3d/document-ops.d.ts.map +1 -0
  259. package/dist/nodes/model3d/document-ops.js +40 -0
  260. package/dist/nodes/model3d/document-ops.js.map +1 -0
  261. package/dist/nodes/model3d/generation.d.ts +39 -0
  262. package/dist/nodes/model3d/generation.d.ts.map +1 -0
  263. package/dist/nodes/model3d/generation.js +179 -0
  264. package/dist/nodes/model3d/generation.js.map +1 -0
  265. package/dist/nodes/model3d/glb.d.ts +29 -0
  266. package/dist/nodes/model3d/glb.d.ts.map +1 -0
  267. package/dist/nodes/model3d/glb.js +255 -0
  268. package/dist/nodes/model3d/glb.js.map +1 -0
  269. package/dist/nodes/model3d/index.d.ts +20 -0
  270. package/dist/nodes/model3d/index.d.ts.map +1 -0
  271. package/dist/nodes/model3d/index.js +38 -0
  272. package/dist/nodes/model3d/index.js.map +1 -0
  273. package/dist/nodes/model3d/io.d.ts +38 -0
  274. package/dist/nodes/model3d/io.d.ts.map +1 -0
  275. package/dist/nodes/model3d/io.js +162 -0
  276. package/dist/nodes/model3d/io.js.map +1 -0
  277. package/dist/nodes/model3d/mesh-ops.d.ts +40 -0
  278. package/dist/nodes/model3d/mesh-ops.d.ts.map +1 -0
  279. package/dist/nodes/model3d/mesh-ops.js +775 -0
  280. package/dist/nodes/model3d/mesh-ops.js.map +1 -0
  281. package/dist/nodes/model3d/nodes.d.ts +2 -0
  282. package/dist/nodes/model3d/nodes.d.ts.map +1 -0
  283. package/dist/nodes/model3d/nodes.js +2 -0
  284. package/dist/nodes/model3d/nodes.js.map +1 -0
  285. package/dist/nodes/model3d/ops.d.ts +37 -0
  286. package/dist/nodes/model3d/ops.d.ts.map +1 -0
  287. package/dist/nodes/model3d/ops.js +137 -0
  288. package/dist/nodes/model3d/ops.js.map +1 -0
  289. package/dist/nodes/model3d/transforms.d.ts +49 -0
  290. package/dist/nodes/model3d/transforms.d.ts.map +1 -0
  291. package/dist/nodes/model3d/transforms.js +142 -0
  292. package/dist/nodes/model3d/transforms.js.map +1 -0
  293. package/dist/nodes/model3d/types.d.ts +81 -0
  294. package/dist/nodes/model3d/types.d.ts.map +1 -0
  295. package/dist/nodes/model3d/types.js +2 -0
  296. package/dist/nodes/model3d/types.js.map +1 -0
  297. package/dist/nodes/model3d/utils.d.ts +34 -0
  298. package/dist/nodes/model3d/utils.d.ts.map +1 -0
  299. package/dist/nodes/model3d/utils.js +185 -0
  300. package/dist/nodes/model3d/utils.js.map +1 -0
  301. package/dist/nodes/model3d.d.ts +2 -0
  302. package/dist/nodes/model3d.d.ts.map +1 -0
  303. package/dist/nodes/model3d.js +2 -0
  304. package/dist/nodes/model3d.js.map +1 -0
  305. package/dist/nodes/openai.d.ts +172 -0
  306. package/dist/nodes/openai.d.ts.map +1 -0
  307. package/dist/nodes/openai.js +1294 -0
  308. package/dist/nodes/openai.js.map +1 -0
  309. package/dist/nodes/output.d.ts +29 -0
  310. package/dist/nodes/output.d.ts.map +1 -0
  311. package/dist/nodes/output.js +87 -0
  312. package/dist/nodes/output.js.map +1 -0
  313. package/dist/nodes/sandbox.d.ts +67 -0
  314. package/dist/nodes/sandbox.d.ts.map +1 -0
  315. package/dist/nodes/sandbox.js +681 -0
  316. package/dist/nodes/sandbox.js.map +1 -0
  317. package/dist/nodes/search.d.ts +117 -0
  318. package/dist/nodes/search.d.ts.map +1 -0
  319. package/dist/nodes/search.js +607 -0
  320. package/dist/nodes/search.js.map +1 -0
  321. package/dist/nodes/team.d.ts +74 -0
  322. package/dist/nodes/team.d.ts.map +1 -0
  323. package/dist/nodes/team.js +304 -0
  324. package/dist/nodes/team.js.map +1 -0
  325. package/dist/nodes/text-extra.d.ts +633 -0
  326. package/dist/nodes/text-extra.d.ts.map +1 -0
  327. package/dist/nodes/text-extra.js +2226 -0
  328. package/dist/nodes/text-extra.js.map +1 -0
  329. package/dist/nodes/tool-agents.d.ts +334 -0
  330. package/dist/nodes/tool-agents.d.ts.map +1 -0
  331. package/dist/nodes/tool-agents.js +1861 -0
  332. package/dist/nodes/tool-agents.js.map +1 -0
  333. package/dist/nodes/triggers.d.ts +107 -0
  334. package/dist/nodes/triggers.d.ts.map +1 -0
  335. package/dist/nodes/triggers.js +706 -0
  336. package/dist/nodes/triggers.js.map +1 -0
  337. package/dist/nodes/vector.d.ts +168 -0
  338. package/dist/nodes/vector.d.ts.map +1 -0
  339. package/dist/nodes/vector.js +1121 -0
  340. package/dist/nodes/vector.js.map +1 -0
  341. package/dist/nodes/video.d.ts +387 -0
  342. package/dist/nodes/video.d.ts.map +1 -0
  343. package/dist/nodes/video.js +2361 -0
  344. package/dist/nodes/video.js.map +1 -0
  345. package/dist/nodes/workflow.d.ts +24 -0
  346. package/dist/nodes/workflow.d.ts.map +1 -0
  347. package/dist/nodes/workflow.js +146 -0
  348. package/dist/nodes/workflow.js.map +1 -0
  349. package/dist/nodes/workspace.d.ts +203 -0
  350. package/dist/nodes/workspace.d.ts.map +1 -0
  351. package/dist/nodes/workspace.js +795 -0
  352. package/dist/nodes/workspace.js.map +1 -0
  353. package/package.json +103 -0
@@ -0,0 +1,418 @@
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 { BaseNode, prop } from "@nodetool-ai/node-sdk";
8
+ // ── Discord Nodes ───────────────────────────────────────────────────────────
9
+ export class DiscordBotTrigger extends BaseNode {
10
+ static nodeType = "messaging.discord.DiscordBotTrigger";
11
+ static title = "Discord Bot Trigger";
12
+ static description = "Trigger node that listens for Discord messages from a bot account.\n\n This trigger connects to Discord using a bot token and emits events\n for incoming messages.";
13
+ static metadataOutputTypes = {
14
+ message_id: "int",
15
+ content: "str",
16
+ author: "dict[str, any]",
17
+ channel: "dict[str, any]",
18
+ guild: "dict[str, any]",
19
+ attachments: "list[dict[str, any]]",
20
+ timestamp: "str",
21
+ source: "str",
22
+ event_type: "str"
23
+ };
24
+ static requiredSettings = ["DISCORD_BOT_TOKEN"];
25
+ static isStreamingOutput = true;
26
+ async process() {
27
+ const secrets = this._secrets;
28
+ const token = String(this.token ?? "") || secrets.DISCORD_BOT_TOKEN || "";
29
+ const channelId = String(this.channel_id ?? "");
30
+ const allowBotMessages = Boolean(this.allow_bot_messages ?? false);
31
+ if (!token) {
32
+ throw new Error("Discord bot token is required");
33
+ }
34
+ // Validate the bot token by fetching the bot user info
35
+ const resp = await fetch("https://discord.com/api/v10/users/@me", {
36
+ headers: { Authorization: `Bot ${token}` }
37
+ });
38
+ if (!resp.ok) {
39
+ const body = await resp.text();
40
+ throw new Error(`Discord token validation failed (${resp.status}): ${body}`);
41
+ }
42
+ const botUser = (await resp.json());
43
+ // NOTE: Real-time message listening requires a Discord Gateway WebSocket
44
+ // connection (wss://gateway.discord.gg), which is not implemented here.
45
+ // A full implementation would need:
46
+ // 1. WebSocket connection to the Gateway with heartbeat
47
+ // 2. Identify/resume handshake with intents (MESSAGE_CONTENT)
48
+ // 3. Long-lived connection for dispatched MESSAGE_CREATE events
49
+ // As a simpler alternative, the Discord REST API supports fetching
50
+ // channel message history via GET /channels/{id}/messages, which could
51
+ // be used for polling-based triggers.
52
+ // For now, this node only validates the token and returns bot info.
53
+ return {
54
+ status: "configured",
55
+ bot_id: botUser.id,
56
+ bot_username: botUser.username,
57
+ channel_id: channelId,
58
+ allow_bot_messages: allowBotMessages
59
+ };
60
+ }
61
+ }
62
+ __decorate([
63
+ prop({
64
+ type: "int",
65
+ default: 0,
66
+ title: "Max Events",
67
+ description: "Maximum number of events to process (0 = unlimited)",
68
+ min: 0
69
+ })
70
+ ], DiscordBotTrigger.prototype, "max_events", void 0);
71
+ __decorate([
72
+ prop({
73
+ type: "str",
74
+ default: "",
75
+ title: "Token",
76
+ description: "Discord bot token"
77
+ })
78
+ ], DiscordBotTrigger.prototype, "token", void 0);
79
+ __decorate([
80
+ prop({
81
+ type: "str",
82
+ default: null,
83
+ title: "Channel Id",
84
+ description: "Optional channel ID to filter messages"
85
+ })
86
+ ], DiscordBotTrigger.prototype, "channel_id", void 0);
87
+ __decorate([
88
+ prop({
89
+ type: "bool",
90
+ default: false,
91
+ title: "Allow Bot Messages",
92
+ description: "Include messages authored by bots"
93
+ })
94
+ ], DiscordBotTrigger.prototype, "allow_bot_messages", void 0);
95
+ export class DiscordSendMessage extends BaseNode {
96
+ static nodeType = "messaging.discord.DiscordSendMessage";
97
+ static title = "Discord Send Message";
98
+ static description = "Node that sends a message to a Discord channel using a bot token.";
99
+ static metadataOutputTypes = {
100
+ output: "dict[str, any]"
101
+ };
102
+ static requiredSettings = ["DISCORD_BOT_TOKEN"];
103
+ async process() {
104
+ const secrets = this._secrets;
105
+ const token = String(this.token ?? "") || secrets.DISCORD_BOT_TOKEN || "";
106
+ const channelId = String(this.channel_id ?? "");
107
+ const content = String(this.content ?? "");
108
+ const tts = Boolean(this.tts ?? false);
109
+ const embeds = (this.embeds ?? []);
110
+ if (!token) {
111
+ throw new Error("Discord bot token is required");
112
+ }
113
+ if (!channelId) {
114
+ throw new Error("Discord channel ID is required");
115
+ }
116
+ const payload = {
117
+ content,
118
+ tts
119
+ };
120
+ if (Array.isArray(embeds) && embeds.length > 0) {
121
+ payload.embeds = embeds;
122
+ }
123
+ const resp = await fetch(`https://discord.com/api/v10/channels/${channelId}/messages`, {
124
+ method: "POST",
125
+ headers: {
126
+ Authorization: `Bot ${token}`,
127
+ "Content-Type": "application/json"
128
+ },
129
+ body: JSON.stringify(payload)
130
+ });
131
+ if (!resp.ok) {
132
+ const body = await resp.text();
133
+ throw new Error(`Discord sendMessage failed (${resp.status}): ${body}`);
134
+ }
135
+ const msg = (await resp.json());
136
+ return {
137
+ message_id: msg.id
138
+ };
139
+ }
140
+ }
141
+ __decorate([
142
+ prop({
143
+ type: "str",
144
+ default: "",
145
+ title: "Token",
146
+ description: "Discord bot token"
147
+ })
148
+ ], DiscordSendMessage.prototype, "token", void 0);
149
+ __decorate([
150
+ prop({
151
+ type: "str",
152
+ default: "",
153
+ title: "Channel Id",
154
+ description: "Target channel ID"
155
+ })
156
+ ], DiscordSendMessage.prototype, "channel_id", void 0);
157
+ __decorate([
158
+ prop({
159
+ type: "str",
160
+ default: "",
161
+ title: "Content",
162
+ description: "Message content"
163
+ })
164
+ ], DiscordSendMessage.prototype, "content", void 0);
165
+ __decorate([
166
+ prop({
167
+ type: "bool",
168
+ default: false,
169
+ title: "Tts",
170
+ description: "Send as text-to-speech"
171
+ })
172
+ ], DiscordSendMessage.prototype, "tts", void 0);
173
+ __decorate([
174
+ prop({
175
+ type: "list[dict[str, any]]",
176
+ default: null,
177
+ title: "Embeds",
178
+ description: "Embeds as Discord embed dictionaries",
179
+ required: true
180
+ })
181
+ ], DiscordSendMessage.prototype, "embeds", void 0);
182
+ // ── Telegram Nodes ──────────────────────────────────────────────────────────
183
+ export class TelegramBotTrigger extends BaseNode {
184
+ static nodeType = "messaging.telegram.TelegramBotTrigger";
185
+ static title = "Telegram Bot Trigger";
186
+ static description = "Trigger node that listens for Telegram messages using long polling.\n\n This trigger connects to Telegram using a bot token and emits events\n for incoming messages.";
187
+ static metadataOutputTypes = {
188
+ update_id: "int",
189
+ update_type: "str",
190
+ message_id: "int",
191
+ text: "str",
192
+ caption: "str",
193
+ entities: "list[dict[str, any]]",
194
+ chat: "dict[str, any]",
195
+ from_user: "dict[str, any]",
196
+ attachments: "list[dict[str, any]]",
197
+ timestamp: "str",
198
+ source: "str",
199
+ event_type: "str"
200
+ };
201
+ static requiredSettings = ["TELEGRAM_BOT_TOKEN"];
202
+ static isStreamingOutput = true;
203
+ async process() {
204
+ const secrets = this._secrets;
205
+ const token = String(this.token ?? "") || secrets.TELEGRAM_BOT_TOKEN || "";
206
+ const chatId = Number(this.chat_id ?? 0);
207
+ const allowBotMessages = Boolean(this.allow_bot_messages ?? false);
208
+ const includeEditedMessages = Boolean(this.include_edited_messages ?? false);
209
+ if (!token) {
210
+ throw new Error("Telegram bot token is required");
211
+ }
212
+ // Validate the bot token by calling getMe
213
+ const resp = await fetch(`https://api.telegram.org/bot${token}/getMe`);
214
+ if (!resp.ok) {
215
+ const body = await resp.text();
216
+ throw new Error(`Telegram token validation failed (${resp.status}): ${body}`);
217
+ }
218
+ const data = (await resp.json());
219
+ if (!data.ok) {
220
+ throw new Error(`Telegram getMe failed: ${JSON.stringify(data)}`);
221
+ }
222
+ const result = data.result;
223
+ // NOTE: Real-time message listening requires Telegram long polling via
224
+ // the getUpdates API (https://api.telegram.org/bot<token>/getUpdates)
225
+ // or a webhook. A full implementation would:
226
+ // 1. Call getUpdates with offset tracking to receive new messages
227
+ // 2. Loop with configurable poll_timeout_seconds for long polling
228
+ // 3. Filter by chat_id, bot messages, edited messages as configured
229
+ // For now, this node only validates the token and returns bot info.
230
+ return {
231
+ status: "configured",
232
+ bot_id: result.id,
233
+ bot_username: result.username,
234
+ chat_id: chatId || null,
235
+ allow_bot_messages: allowBotMessages,
236
+ include_edited_messages: includeEditedMessages
237
+ };
238
+ }
239
+ }
240
+ __decorate([
241
+ prop({
242
+ type: "int",
243
+ default: 0,
244
+ title: "Max Events",
245
+ description: "Maximum number of events to process (0 = unlimited)",
246
+ min: 0
247
+ })
248
+ ], TelegramBotTrigger.prototype, "max_events", void 0);
249
+ __decorate([
250
+ prop({
251
+ type: "str",
252
+ default: "",
253
+ title: "Token",
254
+ description: "Telegram bot token"
255
+ })
256
+ ], TelegramBotTrigger.prototype, "token", void 0);
257
+ __decorate([
258
+ prop({
259
+ type: "int",
260
+ default: null,
261
+ title: "Chat Id",
262
+ description: "Optional chat ID to filter messages"
263
+ })
264
+ ], TelegramBotTrigger.prototype, "chat_id", void 0);
265
+ __decorate([
266
+ prop({
267
+ type: "bool",
268
+ default: false,
269
+ title: "Allow Bot Messages",
270
+ description: "Include messages authored by bots"
271
+ })
272
+ ], TelegramBotTrigger.prototype, "allow_bot_messages", void 0);
273
+ __decorate([
274
+ prop({
275
+ type: "bool",
276
+ default: false,
277
+ title: "Include Edited Messages",
278
+ description: "Include edited messages"
279
+ })
280
+ ], TelegramBotTrigger.prototype, "include_edited_messages", void 0);
281
+ __decorate([
282
+ prop({
283
+ type: "int",
284
+ default: 30,
285
+ title: "Poll Timeout Seconds",
286
+ description: "Long polling timeout in seconds",
287
+ min: 1,
288
+ max: 60
289
+ })
290
+ ], TelegramBotTrigger.prototype, "poll_timeout_seconds", void 0);
291
+ __decorate([
292
+ prop({
293
+ type: "float",
294
+ default: 0.2,
295
+ title: "Poll Interval Seconds",
296
+ description: "Delay between polling requests",
297
+ min: 0
298
+ })
299
+ ], TelegramBotTrigger.prototype, "poll_interval_seconds", void 0);
300
+ export class TelegramSendMessage extends BaseNode {
301
+ static nodeType = "messaging.telegram.TelegramSendMessage";
302
+ static title = "Telegram Send Message";
303
+ static description = "Node that sends a message to a Telegram chat using a bot token.";
304
+ static metadataOutputTypes = {
305
+ output: "dict[str, any]"
306
+ };
307
+ static requiredSettings = ["TELEGRAM_BOT_TOKEN"];
308
+ async process() {
309
+ const secrets = this._secrets;
310
+ const token = String(this.token ?? "") || secrets.TELEGRAM_BOT_TOKEN || "";
311
+ const chatId = Number(this.chat_id ?? 0);
312
+ const text = String(this.text ?? "");
313
+ const parseMode = String(this.parse_mode ?? "");
314
+ const disableWebPagePreview = Boolean(this.disable_web_page_preview ?? false);
315
+ const disableNotification = Boolean(this.disable_notification ?? false);
316
+ const replyToMessageId = Number(this.reply_to_message_id ?? 0);
317
+ if (!token) {
318
+ throw new Error("Telegram bot token is required");
319
+ }
320
+ if (!chatId) {
321
+ throw new Error("Telegram chat ID is required");
322
+ }
323
+ const payload = {
324
+ chat_id: chatId,
325
+ text,
326
+ disable_web_page_preview: disableWebPagePreview,
327
+ disable_notification: disableNotification
328
+ };
329
+ if (parseMode) {
330
+ payload.parse_mode = parseMode;
331
+ }
332
+ if (replyToMessageId) {
333
+ payload.reply_to_message_id = replyToMessageId;
334
+ }
335
+ const resp = await fetch(`https://api.telegram.org/bot${token}/sendMessage`, {
336
+ method: "POST",
337
+ headers: { "Content-Type": "application/json" },
338
+ body: JSON.stringify(payload)
339
+ });
340
+ const data = (await resp.json());
341
+ if (!data.ok) {
342
+ throw new Error(`Telegram sendMessage failed: ${JSON.stringify(data)}`);
343
+ }
344
+ const result = data.result;
345
+ const chat = result.chat ?? {};
346
+ return {
347
+ message_id: result.message_id,
348
+ date: result.date,
349
+ chat_id: chat.id
350
+ };
351
+ }
352
+ }
353
+ __decorate([
354
+ prop({
355
+ type: "str",
356
+ default: "",
357
+ title: "Token",
358
+ description: "Telegram bot token"
359
+ })
360
+ ], TelegramSendMessage.prototype, "token", void 0);
361
+ __decorate([
362
+ prop({
363
+ type: "int",
364
+ default: 0,
365
+ title: "Chat Id",
366
+ description: "Target chat ID",
367
+ min: 1
368
+ })
369
+ ], TelegramSendMessage.prototype, "chat_id", void 0);
370
+ __decorate([
371
+ prop({
372
+ type: "str",
373
+ default: "",
374
+ title: "Text",
375
+ description: "Message text"
376
+ })
377
+ ], TelegramSendMessage.prototype, "text", void 0);
378
+ __decorate([
379
+ prop({
380
+ type: "str",
381
+ default: "",
382
+ title: "Parse Mode",
383
+ description: "Optional parse mode (MarkdownV2 or HTML)"
384
+ })
385
+ ], TelegramSendMessage.prototype, "parse_mode", void 0);
386
+ __decorate([
387
+ prop({
388
+ type: "bool",
389
+ default: false,
390
+ title: "Disable Web Page Preview",
391
+ description: "Disable link previews"
392
+ })
393
+ ], TelegramSendMessage.prototype, "disable_web_page_preview", void 0);
394
+ __decorate([
395
+ prop({
396
+ type: "bool",
397
+ default: false,
398
+ title: "Disable Notification",
399
+ description: "Send silently"
400
+ })
401
+ ], TelegramSendMessage.prototype, "disable_notification", void 0);
402
+ __decorate([
403
+ prop({
404
+ type: "int",
405
+ default: null,
406
+ title: "Reply To Message Id",
407
+ description: "Reply to a specific message ID",
408
+ min: 1
409
+ })
410
+ ], TelegramSendMessage.prototype, "reply_to_message_id", void 0);
411
+ // ── Export ───────────────────────────────────────────────────────────────────
412
+ export const MESSAGING_NODES = [
413
+ DiscordBotTrigger,
414
+ DiscordSendMessage,
415
+ TelegramBotTrigger,
416
+ TelegramSendMessage
417
+ ];
418
+ //# sourceMappingURL=messaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/nodes/messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { BaseNode } from "@nodetool-ai/node-sdk";
2
+ import type { NodeClass } from "@nodetool-ai/node-sdk";
3
+ export declare class ChatComplete extends BaseNode {
4
+ static readonly nodeType = "mistral.text.ChatComplete";
5
+ static readonly title = "Chat Complete";
6
+ static readonly description = "Generate text using Mistral AI's chat completion models.\n mistral, chat, ai, text generation, llm, completion\n\n Uses Mistral AI's chat models to generate responses from prompts.\n Requires a Mistral API key.\n\n Use cases:\n - Generate text responses to prompts\n - Build conversational AI applications\n - Code generation with Codestral\n - Multi-modal understanding with Pixtral";
7
+ static readonly metadataOutputTypes: {
8
+ output: string;
9
+ };
10
+ static readonly basicFields: string[];
11
+ static readonly requiredSettings: string[];
12
+ static readonly exposeAsTool = true;
13
+ model: any;
14
+ prompt: any;
15
+ system_prompt: any;
16
+ temperature: any;
17
+ max_tokens: any;
18
+ process(): Promise<Record<string, unknown>>;
19
+ }
20
+ export declare class CodeComplete extends BaseNode {
21
+ static readonly nodeType = "mistral.text.CodeComplete";
22
+ static readonly title = "Code Complete";
23
+ static readonly description = "Generate code using Mistral AI's Codestral model.\n mistral, code, codestral, ai, programming, completion\n\n Uses Mistral AI's Codestral model specifically designed for code generation.\n Supports fill-in-the-middle (FIM) for code completion tasks.\n Requires a Mistral API key.\n\n Use cases:\n - Generate code from natural language descriptions\n - Complete partial code snippets\n - Fill in code between prefix and suffix\n - Automated code generation for various programming languages";
24
+ static readonly metadataOutputTypes: {
25
+ output: string;
26
+ };
27
+ static readonly basicFields: string[];
28
+ static readonly requiredSettings: string[];
29
+ static readonly exposeAsTool = true;
30
+ prompt: any;
31
+ suffix: any;
32
+ temperature: any;
33
+ max_tokens: any;
34
+ process(): Promise<Record<string, unknown>>;
35
+ }
36
+ export declare class Embedding extends BaseNode {
37
+ static readonly nodeType = "mistral.embeddings.Embedding";
38
+ static readonly title = "Embedding";
39
+ static readonly description = "Generate vector embeddings using Mistral AI.\n mistral, embeddings, vectors, semantic, similarity, search\n\n Uses Mistral AI's embedding model to create dense vector representations of text.\n These vectors capture semantic meaning, enabling:\n - Semantic search\n - Text clustering\n - Document classification\n - Recommendation systems\n - Measuring text similarity\n\n Requires a Mistral API key.";
40
+ static readonly metadataOutputTypes: {
41
+ output: string;
42
+ };
43
+ static readonly basicFields: string[];
44
+ static readonly requiredSettings: string[];
45
+ static readonly exposeAsTool = true;
46
+ input: any;
47
+ model: any;
48
+ chunk_size: any;
49
+ process(): Promise<Record<string, unknown>>;
50
+ }
51
+ export declare class ImageToText extends BaseNode {
52
+ static readonly nodeType = "mistral.vision.ImageToText";
53
+ static readonly title = "Image To Text";
54
+ static readonly description = "Analyze images and generate text descriptions using Mistral AI's Pixtral models.\n mistral, pixtral, vision, image, ocr, analysis, multimodal\n\n Uses Mistral AI's Pixtral vision models to understand and describe images.\n Can perform OCR, image analysis, and answer questions about images.\n Requires a Mistral API key.\n\n Use cases:\n - Extract text from images (OCR)\n - Describe image contents\n - Answer questions about images\n - Analyze charts and diagrams\n - Document understanding";
55
+ static readonly metadataOutputTypes: {
56
+ output: string;
57
+ };
58
+ static readonly basicFields: string[];
59
+ static readonly requiredSettings: string[];
60
+ static readonly exposeAsTool = true;
61
+ image: any;
62
+ prompt: any;
63
+ model: any;
64
+ temperature: any;
65
+ max_tokens: any;
66
+ process(): Promise<Record<string, unknown>>;
67
+ }
68
+ export declare class OCR extends BaseNode {
69
+ static readonly nodeType = "mistral.vision.OCR";
70
+ static readonly title = "OCR";
71
+ static readonly description = "Extract text from images using Mistral AI's Pixtral models.\n mistral, pixtral, ocr, text extraction, document, image\n\n Specialized node for optical character recognition (OCR) using Pixtral.\n Optimized for extracting text content from documents, screenshots, and images.\n Requires a Mistral API key.\n\n Use cases:\n - Extract text from scanned documents\n - Read text from screenshots\n - Digitize printed materials\n - Extract data from forms and receipts";
72
+ static readonly metadataOutputTypes: {
73
+ output: string;
74
+ };
75
+ static readonly basicFields: string[];
76
+ static readonly requiredSettings: string[];
77
+ static readonly exposeAsTool = true;
78
+ image: any;
79
+ model: any;
80
+ process(): Promise<Record<string, unknown>>;
81
+ }
82
+ export declare const MISTRAL_NODES: readonly NodeClass[];
83
+ //# sourceMappingURL=mistral.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mistral.d.ts","sourceRoot":"","sources":["../../src/nodes/mistral.ts"],"names":[],"mappings":"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"}