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

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 (363) hide show
  1. package/README.md +21 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/index.d.ts +61 -67
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +179 -173
  6. package/dist/index.js.map +1 -1
  7. package/dist/platforms/browser.d.ts +19 -0
  8. package/dist/platforms/browser.d.ts.map +1 -0
  9. package/dist/platforms/browser.js +29 -0
  10. package/dist/platforms/browser.js.map +1 -0
  11. package/package.json +53 -65
  12. package/dist/lib/audio-wav.d.ts +0 -66
  13. package/dist/lib/audio-wav.d.ts.map +0 -1
  14. package/dist/lib/audio-wav.js +0 -215
  15. package/dist/lib/audio-wav.js.map +0 -1
  16. package/dist/nodes/agent-tool-hydration.d.ts +0 -10
  17. package/dist/nodes/agent-tool-hydration.d.ts.map +0 -1
  18. package/dist/nodes/agent-tool-hydration.js +0 -43
  19. package/dist/nodes/agent-tool-hydration.js.map +0 -1
  20. package/dist/nodes/agents.d.ts +0 -262
  21. package/dist/nodes/agents.d.ts.map +0 -1
  22. package/dist/nodes/agents.js +0 -2856
  23. package/dist/nodes/agents.js.map +0 -1
  24. package/dist/nodes/anthropic.d.ts +0 -26
  25. package/dist/nodes/anthropic.d.ts.map +0 -1
  26. package/dist/nodes/anthropic.js +0 -133
  27. package/dist/nodes/anthropic.js.map +0 -1
  28. package/dist/nodes/apify.d.ts +0 -120
  29. package/dist/nodes/apify.d.ts.map +0 -1
  30. package/dist/nodes/apify.js +0 -618
  31. package/dist/nodes/apify.js.map +0 -1
  32. package/dist/nodes/audio.d.ts +0 -301
  33. package/dist/nodes/audio.d.ts.map +0 -1
  34. package/dist/nodes/audio.js +0 -1274
  35. package/dist/nodes/audio.js.map +0 -1
  36. package/dist/nodes/code-node.d.ts +0 -34
  37. package/dist/nodes/code-node.d.ts.map +0 -1
  38. package/dist/nodes/code-node.js +0 -343
  39. package/dist/nodes/code-node.js.map +0 -1
  40. package/dist/nodes/code.d.ts +0 -301
  41. package/dist/nodes/code.d.ts.map +0 -1
  42. package/dist/nodes/code.js +0 -850
  43. package/dist/nodes/code.js.map +0 -1
  44. package/dist/nodes/compare.d.ts +0 -18
  45. package/dist/nodes/compare.d.ts.map +0 -1
  46. package/dist/nodes/compare.js +0 -122
  47. package/dist/nodes/compare.js.map +0 -1
  48. package/dist/nodes/constant.d.ts +0 -315
  49. package/dist/nodes/constant.d.ts.map +0 -1
  50. package/dist/nodes/constant.js +0 -715
  51. package/dist/nodes/constant.js.map +0 -1
  52. package/dist/nodes/control.d.ts +0 -83
  53. package/dist/nodes/control.d.ts.map +0 -1
  54. package/dist/nodes/control.js +0 -212
  55. package/dist/nodes/control.js.map +0 -1
  56. package/dist/nodes/data.d.ts +0 -369
  57. package/dist/nodes/data.d.ts.map +0 -1
  58. package/dist/nodes/data.js +0 -1590
  59. package/dist/nodes/data.js.map +0 -1
  60. package/dist/nodes/document.d.ts +0 -134
  61. package/dist/nodes/document.d.ts.map +0 -1
  62. package/dist/nodes/document.js +0 -984
  63. package/dist/nodes/document.js.map +0 -1
  64. package/dist/nodes/extended-placeholders.d.ts +0 -6
  65. package/dist/nodes/extended-placeholders.d.ts.map +0 -1
  66. package/dist/nodes/extended-placeholders.js +0 -19
  67. package/dist/nodes/extended-placeholders.js.map +0 -1
  68. package/dist/nodes/gemini.d.ts +0 -110
  69. package/dist/nodes/gemini.d.ts.map +0 -1
  70. package/dist/nodes/gemini.js +0 -871
  71. package/dist/nodes/gemini.js.map +0 -1
  72. package/dist/nodes/generators.d.ts +0 -84
  73. package/dist/nodes/generators.d.ts.map +0 -1
  74. package/dist/nodes/generators.js +0 -968
  75. package/dist/nodes/generators.js.map +0 -1
  76. package/dist/nodes/image.d.ts +0 -232
  77. package/dist/nodes/image.d.ts.map +0 -1
  78. package/dist/nodes/image.js +0 -1395
  79. package/dist/nodes/image.js.map +0 -1
  80. package/dist/nodes/input.d.ts +0 -445
  81. package/dist/nodes/input.d.ts.map +0 -1
  82. package/dist/nodes/input.js +0 -1459
  83. package/dist/nodes/input.js.map +0 -1
  84. package/dist/nodes/kie-dynamic.d.ts +0 -31
  85. package/dist/nodes/kie-dynamic.d.ts.map +0 -1
  86. package/dist/nodes/kie-dynamic.js +0 -270
  87. package/dist/nodes/kie-dynamic.js.map +0 -1
  88. package/dist/nodes/lib-audio-dsp.d.ts +0 -85
  89. package/dist/nodes/lib-audio-dsp.d.ts.map +0 -1
  90. package/dist/nodes/lib-audio-dsp.js +0 -450
  91. package/dist/nodes/lib-audio-dsp.js.map +0 -1
  92. package/dist/nodes/lib-audio-effects.d.ts +0 -116
  93. package/dist/nodes/lib-audio-effects.d.ts.map +0 -1
  94. package/dist/nodes/lib-audio-effects.js +0 -905
  95. package/dist/nodes/lib-audio-effects.js.map +0 -1
  96. package/dist/nodes/lib-browser.d.ts +0 -99
  97. package/dist/nodes/lib-browser.d.ts.map +0 -1
  98. package/dist/nodes/lib-browser.js +0 -692
  99. package/dist/nodes/lib-browser.js.map +0 -1
  100. package/dist/nodes/lib-charts.d.ts +0 -20
  101. package/dist/nodes/lib-charts.d.ts.map +0 -1
  102. package/dist/nodes/lib-charts.js +0 -245
  103. package/dist/nodes/lib-charts.js.map +0 -1
  104. package/dist/nodes/lib-datetime.d.ts +0 -108
  105. package/dist/nodes/lib-datetime.d.ts.map +0 -1
  106. package/dist/nodes/lib-datetime.js +0 -421
  107. package/dist/nodes/lib-datetime.js.map +0 -1
  108. package/dist/nodes/lib-doc-convert.d.ts +0 -19
  109. package/dist/nodes/lib-doc-convert.d.ts.map +0 -1
  110. package/dist/nodes/lib-doc-convert.js +0 -257
  111. package/dist/nodes/lib-doc-convert.js.map +0 -1
  112. package/dist/nodes/lib-doc-transform.d.ts +0 -39
  113. package/dist/nodes/lib-doc-transform.d.ts.map +0 -1
  114. package/dist/nodes/lib-doc-transform.js +0 -335
  115. package/dist/nodes/lib-doc-transform.js.map +0 -1
  116. package/dist/nodes/lib-docx.d.ts +0 -106
  117. package/dist/nodes/lib-docx.d.ts.map +0 -1
  118. package/dist/nodes/lib-docx.js +0 -595
  119. package/dist/nodes/lib-docx.js.map +0 -1
  120. package/dist/nodes/lib-epub.d.ts +0 -55
  121. package/dist/nodes/lib-epub.d.ts.map +0 -1
  122. package/dist/nodes/lib-epub.js +0 -220
  123. package/dist/nodes/lib-epub.js.map +0 -1
  124. package/dist/nodes/lib-excel.d.ts +0 -74
  125. package/dist/nodes/lib-excel.d.ts.map +0 -1
  126. package/dist/nodes/lib-excel.js +0 -448
  127. package/dist/nodes/lib-excel.js.map +0 -1
  128. package/dist/nodes/lib-graphql.d.ts +0 -66
  129. package/dist/nodes/lib-graphql.d.ts.map +0 -1
  130. package/dist/nodes/lib-graphql.js +0 -333
  131. package/dist/nodes/lib-graphql.js.map +0 -1
  132. package/dist/nodes/lib-grid.d.ts +0 -27
  133. package/dist/nodes/lib-grid.d.ts.map +0 -1
  134. package/dist/nodes/lib-grid.js +0 -172
  135. package/dist/nodes/lib-grid.js.map +0 -1
  136. package/dist/nodes/lib-html-parse.d.ts +0 -108
  137. package/dist/nodes/lib-html-parse.d.ts.map +0 -1
  138. package/dist/nodes/lib-html-parse.js +0 -365
  139. package/dist/nodes/lib-html-parse.js.map +0 -1
  140. package/dist/nodes/lib-http.d.ts +0 -98
  141. package/dist/nodes/lib-http.d.ts.map +0 -1
  142. package/dist/nodes/lib-http.js +0 -267
  143. package/dist/nodes/lib-http.js.map +0 -1
  144. package/dist/nodes/lib-image-color-grading.d.ts +0 -3
  145. package/dist/nodes/lib-image-color-grading.d.ts.map +0 -1
  146. package/dist/nodes/lib-image-color-grading.js +0 -1386
  147. package/dist/nodes/lib-image-color-grading.js.map +0 -1
  148. package/dist/nodes/lib-image-draw.d.ts +0 -3
  149. package/dist/nodes/lib-image-draw.d.ts.map +0 -1
  150. package/dist/nodes/lib-image-draw.js +0 -470
  151. package/dist/nodes/lib-image-draw.js.map +0 -1
  152. package/dist/nodes/lib-image-enhance.d.ts +0 -3
  153. package/dist/nodes/lib-image-enhance.d.ts.map +0 -1
  154. package/dist/nodes/lib-image-enhance.js +0 -731
  155. package/dist/nodes/lib-image-enhance.js.map +0 -1
  156. package/dist/nodes/lib-image-filter.d.ts +0 -3
  157. package/dist/nodes/lib-image-filter.d.ts.map +0 -1
  158. package/dist/nodes/lib-image-filter.js +0 -684
  159. package/dist/nodes/lib-image-filter.js.map +0 -1
  160. package/dist/nodes/lib-image-utils.d.ts +0 -24
  161. package/dist/nodes/lib-image-utils.d.ts.map +0 -1
  162. package/dist/nodes/lib-image-utils.js +0 -150
  163. package/dist/nodes/lib-image-utils.js.map +0 -1
  164. package/dist/nodes/lib-mail.d.ts +0 -74
  165. package/dist/nodes/lib-mail.d.ts.map +0 -1
  166. package/dist/nodes/lib-mail.js +0 -452
  167. package/dist/nodes/lib-mail.js.map +0 -1
  168. package/dist/nodes/lib-markdown.d.ts +0 -70
  169. package/dist/nodes/lib-markdown.d.ts.map +0 -1
  170. package/dist/nodes/lib-markdown.js +0 -236
  171. package/dist/nodes/lib-markdown.js.map +0 -1
  172. package/dist/nodes/lib-nlp.d.ts +0 -98
  173. package/dist/nodes/lib-nlp.d.ts.map +0 -1
  174. package/dist/nodes/lib-nlp.js +0 -374
  175. package/dist/nodes/lib-nlp.js.map +0 -1
  176. package/dist/nodes/lib-notion.d.ts +0 -99
  177. package/dist/nodes/lib-notion.d.ts.map +0 -1
  178. package/dist/nodes/lib-notion.js +0 -601
  179. package/dist/nodes/lib-notion.js.map +0 -1
  180. package/dist/nodes/lib-ocr.d.ts +0 -31
  181. package/dist/nodes/lib-ocr.d.ts.map +0 -1
  182. package/dist/nodes/lib-ocr.js +0 -143
  183. package/dist/nodes/lib-ocr.js.map +0 -1
  184. package/dist/nodes/lib-os.d.ts +0 -312
  185. package/dist/nodes/lib-os.d.ts.map +0 -1
  186. package/dist/nodes/lib-os.js +0 -909
  187. package/dist/nodes/lib-os.js.map +0 -1
  188. package/dist/nodes/lib-pdf.d.ts +0 -142
  189. package/dist/nodes/lib-pdf.d.ts.map +0 -1
  190. package/dist/nodes/lib-pdf.js +0 -871
  191. package/dist/nodes/lib-pdf.js.map +0 -1
  192. package/dist/nodes/lib-pptx.d.ts +0 -29
  193. package/dist/nodes/lib-pptx.d.ts.map +0 -1
  194. package/dist/nodes/lib-pptx.js +0 -122
  195. package/dist/nodes/lib-pptx.js.map +0 -1
  196. package/dist/nodes/lib-rss.d.ts +0 -31
  197. package/dist/nodes/lib-rss.d.ts.map +0 -1
  198. package/dist/nodes/lib-rss.js +0 -163
  199. package/dist/nodes/lib-rss.js.map +0 -1
  200. package/dist/nodes/lib-s3.d.ts +0 -112
  201. package/dist/nodes/lib-s3.d.ts.map +0 -1
  202. package/dist/nodes/lib-s3.js +0 -521
  203. package/dist/nodes/lib-s3.js.map +0 -1
  204. package/dist/nodes/lib-secret.d.ts +0 -15
  205. package/dist/nodes/lib-secret.d.ts.map +0 -1
  206. package/dist/nodes/lib-secret.js +0 -42
  207. package/dist/nodes/lib-secret.js.map +0 -1
  208. package/dist/nodes/lib-sqlite.d.ts +0 -102
  209. package/dist/nodes/lib-sqlite.d.ts.map +0 -1
  210. package/dist/nodes/lib-sqlite.js +0 -532
  211. package/dist/nodes/lib-sqlite.js.map +0 -1
  212. package/dist/nodes/lib-supabase.d.ts +0 -86
  213. package/dist/nodes/lib-supabase.d.ts.map +0 -1
  214. package/dist/nodes/lib-supabase.js +0 -425
  215. package/dist/nodes/lib-supabase.js.map +0 -1
  216. package/dist/nodes/lib-svg.d.ts +0 -199
  217. package/dist/nodes/lib-svg.d.ts.map +0 -1
  218. package/dist/nodes/lib-svg.js +0 -1027
  219. package/dist/nodes/lib-svg.js.map +0 -1
  220. package/dist/nodes/lib-tensorflow.d.ts +0 -71
  221. package/dist/nodes/lib-tensorflow.d.ts.map +0 -1
  222. package/dist/nodes/lib-tensorflow.js +0 -351
  223. package/dist/nodes/lib-tensorflow.js.map +0 -1
  224. package/dist/nodes/lib-twilio.d.ts +0 -71
  225. package/dist/nodes/lib-twilio.d.ts.map +0 -1
  226. package/dist/nodes/lib-twilio.js +0 -469
  227. package/dist/nodes/lib-twilio.js.map +0 -1
  228. package/dist/nodes/lib-validate.d.ts +0 -84
  229. package/dist/nodes/lib-validate.d.ts.map +0 -1
  230. package/dist/nodes/lib-validate.js +0 -215
  231. package/dist/nodes/lib-validate.js.map +0 -1
  232. package/dist/nodes/lib-video-download.d.ts +0 -26
  233. package/dist/nodes/lib-video-download.d.ts.map +0 -1
  234. package/dist/nodes/lib-video-download.js +0 -299
  235. package/dist/nodes/lib-video-download.js.map +0 -1
  236. package/dist/nodes/messaging.d.ts +0 -88
  237. package/dist/nodes/messaging.d.ts.map +0 -1
  238. package/dist/nodes/messaging.js +0 -418
  239. package/dist/nodes/messaging.js.map +0 -1
  240. package/dist/nodes/mistral.d.ts +0 -83
  241. package/dist/nodes/mistral.d.ts.map +0 -1
  242. package/dist/nodes/mistral.js +0 -450
  243. package/dist/nodes/mistral.js.map +0 -1
  244. package/dist/nodes/model3d/analysis.d.ts +0 -13
  245. package/dist/nodes/model3d/analysis.d.ts.map +0 -1
  246. package/dist/nodes/model3d/analysis.js +0 -36
  247. package/dist/nodes/model3d/analysis.js.map +0 -1
  248. package/dist/nodes/model3d/base.d.ts +0 -11
  249. package/dist/nodes/model3d/base.d.ts.map +0 -1
  250. package/dist/nodes/model3d/base.js +0 -20
  251. package/dist/nodes/model3d/base.js.map +0 -1
  252. package/dist/nodes/model3d/boolean-ops.d.ts +0 -2
  253. package/dist/nodes/model3d/boolean-ops.d.ts.map +0 -1
  254. package/dist/nodes/model3d/boolean-ops.js +0 -172
  255. package/dist/nodes/model3d/boolean-ops.js.map +0 -1
  256. package/dist/nodes/model3d/cleanup.d.ts +0 -47
  257. package/dist/nodes/model3d/cleanup.d.ts.map +0 -1
  258. package/dist/nodes/model3d/cleanup.js +0 -136
  259. package/dist/nodes/model3d/cleanup.js.map +0 -1
  260. package/dist/nodes/model3d/convert.d.ts +0 -14
  261. package/dist/nodes/model3d/convert.d.ts.map +0 -1
  262. package/dist/nodes/model3d/convert.js +0 -64
  263. package/dist/nodes/model3d/convert.js.map +0 -1
  264. package/dist/nodes/model3d/defaults.d.ts +0 -34
  265. package/dist/nodes/model3d/defaults.d.ts.map +0 -1
  266. package/dist/nodes/model3d/defaults.js +0 -28
  267. package/dist/nodes/model3d/defaults.js.map +0 -1
  268. package/dist/nodes/model3d/document-ops.d.ts +0 -4
  269. package/dist/nodes/model3d/document-ops.d.ts.map +0 -1
  270. package/dist/nodes/model3d/document-ops.js +0 -40
  271. package/dist/nodes/model3d/document-ops.js.map +0 -1
  272. package/dist/nodes/model3d/generation.d.ts +0 -39
  273. package/dist/nodes/model3d/generation.d.ts.map +0 -1
  274. package/dist/nodes/model3d/generation.js +0 -179
  275. package/dist/nodes/model3d/generation.js.map +0 -1
  276. package/dist/nodes/model3d/glb.d.ts +0 -29
  277. package/dist/nodes/model3d/glb.d.ts.map +0 -1
  278. package/dist/nodes/model3d/glb.js +0 -255
  279. package/dist/nodes/model3d/glb.js.map +0 -1
  280. package/dist/nodes/model3d/index.d.ts +0 -20
  281. package/dist/nodes/model3d/index.d.ts.map +0 -1
  282. package/dist/nodes/model3d/index.js +0 -38
  283. package/dist/nodes/model3d/index.js.map +0 -1
  284. package/dist/nodes/model3d/io.d.ts +0 -38
  285. package/dist/nodes/model3d/io.d.ts.map +0 -1
  286. package/dist/nodes/model3d/io.js +0 -162
  287. package/dist/nodes/model3d/io.js.map +0 -1
  288. package/dist/nodes/model3d/mesh-ops.d.ts +0 -40
  289. package/dist/nodes/model3d/mesh-ops.d.ts.map +0 -1
  290. package/dist/nodes/model3d/mesh-ops.js +0 -775
  291. package/dist/nodes/model3d/mesh-ops.js.map +0 -1
  292. package/dist/nodes/model3d/nodes.d.ts +0 -2
  293. package/dist/nodes/model3d/nodes.d.ts.map +0 -1
  294. package/dist/nodes/model3d/nodes.js +0 -2
  295. package/dist/nodes/model3d/nodes.js.map +0 -1
  296. package/dist/nodes/model3d/ops.d.ts +0 -37
  297. package/dist/nodes/model3d/ops.d.ts.map +0 -1
  298. package/dist/nodes/model3d/ops.js +0 -137
  299. package/dist/nodes/model3d/ops.js.map +0 -1
  300. package/dist/nodes/model3d/transforms.d.ts +0 -49
  301. package/dist/nodes/model3d/transforms.d.ts.map +0 -1
  302. package/dist/nodes/model3d/transforms.js +0 -142
  303. package/dist/nodes/model3d/transforms.js.map +0 -1
  304. package/dist/nodes/model3d/types.d.ts +0 -81
  305. package/dist/nodes/model3d/types.d.ts.map +0 -1
  306. package/dist/nodes/model3d/types.js +0 -2
  307. package/dist/nodes/model3d/types.js.map +0 -1
  308. package/dist/nodes/model3d/utils.d.ts +0 -34
  309. package/dist/nodes/model3d/utils.d.ts.map +0 -1
  310. package/dist/nodes/model3d/utils.js +0 -185
  311. package/dist/nodes/model3d/utils.js.map +0 -1
  312. package/dist/nodes/model3d.d.ts +0 -2
  313. package/dist/nodes/model3d.d.ts.map +0 -1
  314. package/dist/nodes/model3d.js +0 -2
  315. package/dist/nodes/model3d.js.map +0 -1
  316. package/dist/nodes/openai.d.ts +0 -172
  317. package/dist/nodes/openai.d.ts.map +0 -1
  318. package/dist/nodes/openai.js +0 -1294
  319. package/dist/nodes/openai.js.map +0 -1
  320. package/dist/nodes/output.d.ts +0 -29
  321. package/dist/nodes/output.d.ts.map +0 -1
  322. package/dist/nodes/output.js +0 -87
  323. package/dist/nodes/output.js.map +0 -1
  324. package/dist/nodes/sandbox.d.ts +0 -63
  325. package/dist/nodes/sandbox.d.ts.map +0 -1
  326. package/dist/nodes/sandbox.js +0 -633
  327. package/dist/nodes/sandbox.js.map +0 -1
  328. package/dist/nodes/search.d.ts +0 -117
  329. package/dist/nodes/search.d.ts.map +0 -1
  330. package/dist/nodes/search.js +0 -607
  331. package/dist/nodes/search.js.map +0 -1
  332. package/dist/nodes/team.d.ts +0 -74
  333. package/dist/nodes/team.d.ts.map +0 -1
  334. package/dist/nodes/team.js +0 -309
  335. package/dist/nodes/team.js.map +0 -1
  336. package/dist/nodes/text-extra.d.ts +0 -633
  337. package/dist/nodes/text-extra.d.ts.map +0 -1
  338. package/dist/nodes/text-extra.js +0 -2226
  339. package/dist/nodes/text-extra.js.map +0 -1
  340. package/dist/nodes/tool-agents.d.ts +0 -334
  341. package/dist/nodes/tool-agents.d.ts.map +0 -1
  342. package/dist/nodes/tool-agents.js +0 -1861
  343. package/dist/nodes/tool-agents.js.map +0 -1
  344. package/dist/nodes/triggers.d.ts +0 -107
  345. package/dist/nodes/triggers.d.ts.map +0 -1
  346. package/dist/nodes/triggers.js +0 -706
  347. package/dist/nodes/triggers.js.map +0 -1
  348. package/dist/nodes/vector.d.ts +0 -168
  349. package/dist/nodes/vector.d.ts.map +0 -1
  350. package/dist/nodes/vector.js +0 -1121
  351. package/dist/nodes/vector.js.map +0 -1
  352. package/dist/nodes/video.d.ts +0 -387
  353. package/dist/nodes/video.d.ts.map +0 -1
  354. package/dist/nodes/video.js +0 -2383
  355. package/dist/nodes/video.js.map +0 -1
  356. package/dist/nodes/workflow.d.ts +0 -24
  357. package/dist/nodes/workflow.d.ts.map +0 -1
  358. package/dist/nodes/workflow.js +0 -146
  359. package/dist/nodes/workflow.js.map +0 -1
  360. package/dist/nodes/workspace.d.ts +0 -203
  361. package/dist/nodes/workspace.d.ts.map +0 -1
  362. package/dist/nodes/workspace.js +0 -795
  363. package/dist/nodes/workspace.js.map +0 -1
@@ -1,607 +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 { BaseNode, prop } from "@nodetool-ai/node-sdk";
8
- // ---------------------------------------------------------------------------
9
- // Helpers
10
- // ---------------------------------------------------------------------------
11
- const SERPAPI_BASE = "https://serpapi.com/search.json";
12
- function getSerpApiKey(secrets) {
13
- const key = secrets.SERPAPI_API_KEY || process.env.SERPAPI_API_KEY || "";
14
- if (!key)
15
- throw new Error("SERPAPI_API_KEY is required");
16
- return key;
17
- }
18
- async function serpRequest(apiKey, params) {
19
- const url = new URL(SERPAPI_BASE);
20
- url.searchParams.set("api_key", apiKey);
21
- for (const [k, v] of Object.entries(params)) {
22
- if (v !== undefined && v !== null && v !== "") {
23
- url.searchParams.set(k, String(v));
24
- }
25
- }
26
- const res = await fetch(url.toString());
27
- if (!res.ok) {
28
- throw new Error(`SerpAPI HTTP error: ${res.status} ${res.statusText}`);
29
- }
30
- const data = (await res.json());
31
- const meta = data.search_metadata;
32
- if (meta?.status === "Error" || typeof data.error === "string") {
33
- throw new Error(data.error ??
34
- `SerpAPI returned an error: ${JSON.stringify(data)}`);
35
- }
36
- return data;
37
- }
38
- /**
39
- * Format search results into human-readable text, matching the Python
40
- * `format_results` helper in `_base.py`.
41
- *
42
- * @param results - Array of result dicts from SerpAPI
43
- * @param fields - Array of [key, label] tuples. If label is null the value
44
- * is printed raw; otherwise it is prefixed with "Label: ".
45
- */
46
- function formatResults(results, fields) {
47
- const lines = [];
48
- for (let i = 0; i < results.length; i++) {
49
- const r = results[i];
50
- const pos = r.position ?? i + 1;
51
- const title = String(r.title ?? "Untitled");
52
- lines.push(`[${pos}] ${title}`);
53
- for (const [key, label] of fields) {
54
- const val = r[key];
55
- if (val) {
56
- if (label) {
57
- lines.push(` ${label}: ${val}`);
58
- }
59
- else {
60
- lines.push(` ${val}`);
61
- }
62
- }
63
- }
64
- lines.push("");
65
- }
66
- return lines.join("\n");
67
- }
68
- // ---------------------------------------------------------------------------
69
- // 1. GoogleSearch
70
- // ---------------------------------------------------------------------------
71
- export class GoogleSearchNode extends BaseNode {
72
- static nodeType = "search.google.GoogleSearch";
73
- static title = "Google Search";
74
- static description = "Search Google to retrieve organic search results from the web.\n google, search, serp, web, query";
75
- static metadataOutputTypes = {
76
- results: "list[organic_result]",
77
- text: "str"
78
- };
79
- static requiredSettings = ["SERPAPI_API_KEY"];
80
- static exposeAsTool = true;
81
- async process() {
82
- const keyword = String(this.keyword ?? "");
83
- if (!keyword)
84
- throw new Error("Keyword is required");
85
- const numResults = Number(this.num_results ?? 10);
86
- const apiKey = getSerpApiKey(this._secrets);
87
- const data = await serpRequest(apiKey, {
88
- engine: "google_light",
89
- q: keyword,
90
- num: numResults,
91
- gl: "us",
92
- hl: "en"
93
- });
94
- const results = data.organic_results ?? [];
95
- const text = formatResults(results, [
96
- ["link", null],
97
- ["date", "Date"],
98
- ["snippet", null]
99
- ]);
100
- return { results, text };
101
- }
102
- }
103
- __decorate([
104
- prop({
105
- type: "str",
106
- default: "",
107
- title: "Keyword",
108
- description: "Search query or keyword to search for"
109
- })
110
- ], GoogleSearchNode.prototype, "keyword", void 0);
111
- __decorate([
112
- prop({
113
- type: "int",
114
- default: 10,
115
- title: "Num Results",
116
- description: "Maximum number of results to return"
117
- })
118
- ], GoogleSearchNode.prototype, "num_results", void 0);
119
- // ---------------------------------------------------------------------------
120
- // 2. GoogleNews
121
- // ---------------------------------------------------------------------------
122
- export class GoogleNewsNode extends BaseNode {
123
- static nodeType = "search.google.GoogleNews";
124
- static title = "Google News";
125
- static description = "Search Google News to retrieve current news articles and headlines.\n google, news, serp, articles, journalism";
126
- static metadataOutputTypes = {
127
- results: "list[news_result]",
128
- text: "str"
129
- };
130
- static requiredSettings = ["SERPAPI_API_KEY"];
131
- static exposeAsTool = true;
132
- async process() {
133
- const keyword = String(this.keyword ?? "");
134
- if (!keyword)
135
- throw new Error("Keyword is required");
136
- const numResults = Number(this.num_results ?? 10);
137
- const apiKey = getSerpApiKey(this._secrets);
138
- const data = await serpRequest(apiKey, {
139
- engine: "google_news",
140
- q: keyword,
141
- num: numResults,
142
- gl: "us",
143
- hl: "en"
144
- });
145
- const results = data.news_results ?? [];
146
- const text = formatResults(results, [
147
- ["link", null],
148
- ["date", "Date"]
149
- ]);
150
- return { results, text };
151
- }
152
- }
153
- __decorate([
154
- prop({
155
- type: "str",
156
- default: "",
157
- title: "Keyword",
158
- description: "Search query or keyword for news articles"
159
- })
160
- ], GoogleNewsNode.prototype, "keyword", void 0);
161
- __decorate([
162
- prop({
163
- type: "int",
164
- default: 10,
165
- title: "Num Results",
166
- description: "Maximum number of news results to return"
167
- })
168
- ], GoogleNewsNode.prototype, "num_results", void 0);
169
- // ---------------------------------------------------------------------------
170
- // 3. GoogleImages
171
- // ---------------------------------------------------------------------------
172
- export class GoogleImagesNode extends BaseNode {
173
- static nodeType = "search.google.GoogleImages";
174
- static title = "Google Images";
175
- static description = "Search Google Images to find visual content or perform reverse image search.\n google, images, serp, visual, reverse, search";
176
- static metadataOutputTypes = {
177
- results: "list[image]"
178
- };
179
- static requiredSettings = ["SERPAPI_API_KEY"];
180
- static exposeAsTool = true;
181
- async process() {
182
- const keyword = String(this.keyword ?? "");
183
- const imageUrl = String(this.image_url ?? "");
184
- if (!keyword && !imageUrl)
185
- throw new Error("One of 'keyword' or 'image_url' is required.");
186
- const numResults = Number(this.num_results ?? 20);
187
- const apiKey = getSerpApiKey(this._secrets);
188
- const params = {
189
- num: numResults,
190
- gl: "us",
191
- hl: "en"
192
- };
193
- if (imageUrl) {
194
- params.engine = "google_reverse_image";
195
- params.image_url = imageUrl;
196
- }
197
- else {
198
- params.engine = "google_images";
199
- params.q = keyword;
200
- }
201
- const data = await serpRequest(apiKey, params);
202
- const images = data.images_results ?? [];
203
- const results = images.map((img) => ({
204
- uri: String(img.original ?? "")
205
- }));
206
- return { results };
207
- }
208
- }
209
- __decorate([
210
- prop({
211
- type: "str",
212
- default: "",
213
- title: "Keyword",
214
- description: "Search query or keyword for images"
215
- })
216
- ], GoogleImagesNode.prototype, "keyword", void 0);
217
- __decorate([
218
- prop({
219
- type: "str",
220
- default: "",
221
- title: "Image Url",
222
- description: "URL of image for reverse image search"
223
- })
224
- ], GoogleImagesNode.prototype, "image_url", void 0);
225
- __decorate([
226
- prop({
227
- type: "int",
228
- default: 20,
229
- title: "Num Results",
230
- description: "Maximum number of image results to return"
231
- })
232
- ], GoogleImagesNode.prototype, "num_results", void 0);
233
- // ---------------------------------------------------------------------------
234
- // 4. GoogleFinance
235
- // ---------------------------------------------------------------------------
236
- export class GoogleFinanceNode extends BaseNode {
237
- static nodeType = "search.google.GoogleFinance";
238
- static title = "Google Finance";
239
- static description = "Retrieve financial market data and stock information from Google Finance.\n google, finance, stocks, market, serp, trading";
240
- static metadataOutputTypes = {
241
- results: "dict[str, any]"
242
- };
243
- static requiredSettings = ["SERPAPI_API_KEY"];
244
- static exposeAsTool = true;
245
- async process() {
246
- const query = String(this.query ?? "");
247
- if (!query)
248
- throw new Error("Query is required for Google Finance search.");
249
- const window = String(this.window ?? "");
250
- const apiKey = getSerpApiKey(this._secrets);
251
- const params = {
252
- engine: "google_finance",
253
- q: query,
254
- gl: "us",
255
- hl: "en"
256
- };
257
- if (window)
258
- params.window = window;
259
- const data = await serpRequest(apiKey, params);
260
- return { results: data };
261
- }
262
- }
263
- __decorate([
264
- prop({
265
- type: "str",
266
- default: "",
267
- title: "Query",
268
- description: "Stock symbol or company name to search for"
269
- })
270
- ], GoogleFinanceNode.prototype, "query", void 0);
271
- __decorate([
272
- prop({
273
- type: "str",
274
- default: "",
275
- title: "Window",
276
- description: "Time window for financial data (e.g., '1d', '5d', '1m', '3m', '6m', '1y', '5y')"
277
- })
278
- ], GoogleFinanceNode.prototype, "window", void 0);
279
- // ---------------------------------------------------------------------------
280
- // 5. GoogleJobs
281
- // ---------------------------------------------------------------------------
282
- export class GoogleJobsNode extends BaseNode {
283
- static nodeType = "search.google.GoogleJobs";
284
- static title = "Google Jobs";
285
- static description = "Search Google Jobs for employment opportunities and job listings.\n google, jobs, employment, careers, serp, hiring";
286
- static metadataOutputTypes = {
287
- results: "list[job_result]",
288
- text: "str"
289
- };
290
- static requiredSettings = ["SERPAPI_API_KEY"];
291
- static exposeAsTool = true;
292
- async process() {
293
- const query = String(this.query ?? "");
294
- if (!query)
295
- throw new Error("Query is required for Google Jobs search.");
296
- const location = String(this.location ?? "");
297
- const apiKey = getSerpApiKey(this._secrets);
298
- const params = {
299
- engine: "google_jobs",
300
- q: query,
301
- gl: "us",
302
- hl: "en"
303
- };
304
- if (location)
305
- params.location = location;
306
- const data = await serpRequest(apiKey, params);
307
- const results = data.jobs_results ?? [];
308
- const text = formatResults(results, [
309
- ["company_name", "Company"],
310
- ["location", "Location"],
311
- ["via", "Via"],
312
- ["extensions", "Details"]
313
- ]);
314
- return { results, text };
315
- }
316
- }
317
- __decorate([
318
- prop({
319
- type: "str",
320
- default: "",
321
- title: "Query",
322
- description: "Job title, skills, or company name to search for"
323
- })
324
- ], GoogleJobsNode.prototype, "query", void 0);
325
- __decorate([
326
- prop({
327
- type: "str",
328
- default: "",
329
- title: "Location",
330
- description: "Geographic location for job search"
331
- })
332
- ], GoogleJobsNode.prototype, "location", void 0);
333
- __decorate([
334
- prop({
335
- type: "int",
336
- default: 10,
337
- title: "Num Results",
338
- description: "Maximum number of job results to return"
339
- })
340
- ], GoogleJobsNode.prototype, "num_results", void 0);
341
- // ---------------------------------------------------------------------------
342
- // 6. GoogleLens
343
- // ---------------------------------------------------------------------------
344
- export class GoogleLensNode extends BaseNode {
345
- static nodeType = "search.google.GoogleLens";
346
- static title = "Google Lens";
347
- static description = "Analyze images using Google Lens to find visual matches and related content.\n google, lens, visual, image, search, serp, identify";
348
- static requiredSettings = ["SERPAPI_API_KEY"];
349
- static exposeAsTool = true;
350
- async process() {
351
- const imageUrl = String(this.image_url ?? "");
352
- if (!imageUrl)
353
- throw new Error("Image URL is required for Google Lens search.");
354
- const apiKey = getSerpApiKey(this._secrets);
355
- const data = await serpRequest(apiKey, {
356
- engine: "google_lens",
357
- url: imageUrl,
358
- hl: "en"
359
- });
360
- const matches = data.visual_matches ?? [];
361
- const images = matches.map((m) => ({
362
- uri: String(m.image ?? m.thumbnail ?? "")
363
- }));
364
- return { results: matches, images };
365
- }
366
- }
367
- __decorate([
368
- prop({
369
- type: "str",
370
- default: "",
371
- title: "Image Url",
372
- description: "URL of the image to analyze with Google Lens"
373
- })
374
- ], GoogleLensNode.prototype, "image_url", void 0);
375
- __decorate([
376
- prop({
377
- type: "int",
378
- default: 10,
379
- title: "Num Results",
380
- description: "Maximum number of visual search results to return"
381
- })
382
- ], GoogleLensNode.prototype, "num_results", void 0);
383
- // ---------------------------------------------------------------------------
384
- // 7. GoogleMaps
385
- // ---------------------------------------------------------------------------
386
- export class GoogleMapsNode extends BaseNode {
387
- static nodeType = "search.google.GoogleMaps";
388
- static title = "Google Maps";
389
- static description = "Search Google Maps for places, businesses, and get location details.\n google, maps, places, locations, serp, geography";
390
- static metadataOutputTypes = {
391
- results: "list[local_result]",
392
- text: "str"
393
- };
394
- static requiredSettings = ["SERPAPI_API_KEY"];
395
- static exposeAsTool = true;
396
- async process() {
397
- const query = String(this.query ?? "");
398
- if (!query)
399
- throw new Error("Query is required for map search.");
400
- const apiKey = getSerpApiKey(this._secrets);
401
- const data = await serpRequest(apiKey, {
402
- engine: "google_maps",
403
- q: query,
404
- type: "search",
405
- gl: "us",
406
- hl: "en"
407
- });
408
- const localResults = data.local_results ?? [];
409
- // Rename "type" -> "place_type" to match Python model
410
- const results = localResults.map((r) => {
411
- const { type: placeType, ...rest } = r;
412
- return { ...rest, place_type: placeType ?? "" };
413
- });
414
- // Custom text format matching Python implementation
415
- const lines = [];
416
- for (let i = 0; i < localResults.length; i++) {
417
- const r = localResults[i];
418
- const pos = r.position ?? i + 1;
419
- lines.push(`[${pos}] ${String(r.title ?? "Untitled")}`);
420
- if (r.address)
421
- lines.push(` ${r.address}`);
422
- if (r.rating != null) {
423
- let ratingStr = ` Rating: ${r.rating}`;
424
- if (r.reviews != null)
425
- ratingStr += ` (${r.reviews} reviews)`;
426
- lines.push(ratingStr);
427
- }
428
- if (r.price)
429
- lines.push(` Price: ${r.price}`);
430
- if (r.open_state)
431
- lines.push(` ${r.open_state}`);
432
- lines.push("");
433
- }
434
- const text = lines.join("\n");
435
- return { results, text };
436
- }
437
- }
438
- __decorate([
439
- prop({
440
- type: "str",
441
- default: "",
442
- title: "Query",
443
- description: "Place name, address, or location query"
444
- })
445
- ], GoogleMapsNode.prototype, "query", void 0);
446
- __decorate([
447
- prop({
448
- type: "int",
449
- default: 10,
450
- title: "Num Results",
451
- description: "Maximum number of map results to return"
452
- })
453
- ], GoogleMapsNode.prototype, "num_results", void 0);
454
- // ---------------------------------------------------------------------------
455
- // 8. GoogleShopping
456
- // ---------------------------------------------------------------------------
457
- export class GoogleShoppingNode extends BaseNode {
458
- static nodeType = "search.google.GoogleShopping";
459
- static title = "Google Shopping";
460
- static description = "Search Google Shopping for products with filters and pricing information.\n google, shopping, products, ecommerce, serp, prices";
461
- static metadataOutputTypes = {
462
- results: "list[shopping_result]",
463
- text: "str"
464
- };
465
- static requiredSettings = ["SERPAPI_API_KEY"];
466
- static exposeAsTool = true;
467
- async process() {
468
- const query = String(this.query ?? "");
469
- if (!query)
470
- throw new Error("Query is required for Google Shopping search.");
471
- const country = String(this.country ?? "us") || "us";
472
- const minPrice = Number(this.min_price ?? 0);
473
- const maxPrice = Number(this.max_price ?? 0);
474
- const condition = String(this.condition ?? "");
475
- const sortBy = String(this.sort_by ?? "");
476
- const apiKey = getSerpApiKey(this._secrets);
477
- const params = {
478
- engine: "google_shopping",
479
- q: query,
480
- gl: country,
481
- hl: "en"
482
- };
483
- // Build tbs filter string
484
- const tbsParts = [];
485
- if (minPrice > 0) {
486
- if (!tbsParts.includes("mr:1"))
487
- tbsParts.push("mr:1");
488
- if (!tbsParts.includes("price:1"))
489
- tbsParts.push("price:1");
490
- tbsParts.push(`ppr_min:${minPrice}`);
491
- }
492
- if (maxPrice > 0) {
493
- if (!tbsParts.includes("mr:1"))
494
- tbsParts.push("mr:1");
495
- if (!tbsParts.includes("price:1"))
496
- tbsParts.push("price:1");
497
- tbsParts.push(`ppr_max:${maxPrice}`);
498
- }
499
- if (condition) {
500
- const c = condition.toLowerCase();
501
- if (c === "new")
502
- tbsParts.push("p_cond:new");
503
- else if (c === "used" || c === "refurbished")
504
- tbsParts.push("p_cond:used");
505
- }
506
- if (sortBy) {
507
- tbsParts.push(`sort:${sortBy}`);
508
- }
509
- if (tbsParts.length > 0) {
510
- params.tbs = tbsParts.join(",");
511
- }
512
- const data = await serpRequest(apiKey, params);
513
- const results = data.shopping_results ?? [];
514
- // Custom text format matching Python implementation
515
- const lines = [];
516
- for (let i = 0; i < results.length; i++) {
517
- const r = results[i];
518
- const pos = r.position ?? i + 1;
519
- lines.push(`[${pos}] ${String(r.title ?? "Untitled")}`);
520
- if (r.price) {
521
- let priceStr = ` Price: ${r.price}`;
522
- if (r.old_price)
523
- priceStr += ` (was ${r.old_price})`;
524
- lines.push(priceStr);
525
- }
526
- if (r.source)
527
- lines.push(` Source: ${r.source}`);
528
- if (r.link)
529
- lines.push(` ${r.link}`);
530
- if (r.rating != null)
531
- lines.push(` Rating: ${r.rating}`);
532
- lines.push("");
533
- }
534
- const text = lines.join("\n");
535
- return { results, text };
536
- }
537
- }
538
- __decorate([
539
- prop({
540
- type: "str",
541
- default: "",
542
- title: "Query",
543
- description: "Product name or description to search for"
544
- })
545
- ], GoogleShoppingNode.prototype, "query", void 0);
546
- __decorate([
547
- prop({
548
- type: "str",
549
- default: "us",
550
- title: "Country",
551
- description: "Country code for shopping search (e.g., 'us', 'uk', 'ca')"
552
- })
553
- ], GoogleShoppingNode.prototype, "country", void 0);
554
- __decorate([
555
- prop({
556
- type: "int",
557
- default: 0,
558
- title: "Min Price",
559
- description: "Minimum price filter for products"
560
- })
561
- ], GoogleShoppingNode.prototype, "min_price", void 0);
562
- __decorate([
563
- prop({
564
- type: "int",
565
- default: 0,
566
- title: "Max Price",
567
- description: "Maximum price filter for products"
568
- })
569
- ], GoogleShoppingNode.prototype, "max_price", void 0);
570
- __decorate([
571
- prop({
572
- type: "str",
573
- default: "",
574
- title: "Condition",
575
- description: "Product condition filter (e.g., 'new', 'used', 'refurbished')"
576
- })
577
- ], GoogleShoppingNode.prototype, "condition", void 0);
578
- __decorate([
579
- prop({
580
- type: "str",
581
- default: "",
582
- title: "Sort By",
583
- description: "Sort order for results (e.g., 'price_low_to_high', 'price_high_to_low', 'review_score')"
584
- })
585
- ], GoogleShoppingNode.prototype, "sort_by", void 0);
586
- __decorate([
587
- prop({
588
- type: "int",
589
- default: 10,
590
- title: "Num Results",
591
- description: "Maximum number of shopping results to return"
592
- })
593
- ], GoogleShoppingNode.prototype, "num_results", void 0);
594
- // ---------------------------------------------------------------------------
595
- // Export
596
- // ---------------------------------------------------------------------------
597
- export const SEARCH_NODES = [
598
- GoogleSearchNode,
599
- GoogleNewsNode,
600
- GoogleImagesNode,
601
- GoogleFinanceNode,
602
- GoogleJobsNode,
603
- GoogleLensNode,
604
- GoogleMapsNode,
605
- GoogleShoppingNode
606
- ];
607
- //# sourceMappingURL=search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/nodes/search.ts"],"names":[],"mappings":"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"}