@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,607 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/nodes/search.ts"],"names":[],"mappings":"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"}