@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,215 @@
1
+ /**
2
+ * Canonical audio encoding/decoding helpers shared across the base-nodes
3
+ * audio node implementations.
4
+ *
5
+ * - `encodeWav` / `decodeWav` operate in Float32 sample space ([-1, 1]) and
6
+ * handle 16-bit PCM WAV with proper chunk traversal.
7
+ * - `audioBytes` / `audioBytesAsync` / `audioRefFromBytes` deal with the raw
8
+ * byte stream inside an `AudioRef`, independent of format. These are the
9
+ * single source of truth for every nodetool audio node — do not duplicate
10
+ * them at call sites.
11
+ */
12
+ import { promises as fs } from "node:fs";
13
+ import { fileURLToPath } from "node:url";
14
+ /** Decode a base64 string to bytes, or pass through an existing Uint8Array. */
15
+ export function toBytes(value) {
16
+ if (!value)
17
+ return new Uint8Array();
18
+ if (value instanceof Uint8Array)
19
+ return value;
20
+ if (typeof value !== "string")
21
+ throw new Error("Invalid audio data");
22
+ return Uint8Array.from(Buffer.from(value, "base64"));
23
+ }
24
+ /** Synchronously extract raw bytes from an AudioRef's inline `data` field. */
25
+ export function audioBytes(audio) {
26
+ if (!audio || typeof audio !== "object")
27
+ return new Uint8Array();
28
+ return toBytes(audio.data);
29
+ }
30
+ /**
31
+ * Extract raw bytes from an AudioRef, falling back to URI-based retrieval
32
+ * (storage, `file://`, `http(s)://`) when no inline data is present.
33
+ */
34
+ export async function audioBytesAsync(audio, context) {
35
+ if (!audio || typeof audio !== "object")
36
+ return new Uint8Array();
37
+ const ref = audio;
38
+ if (ref.data)
39
+ return toBytes(ref.data);
40
+ if (typeof ref.uri === "string" && ref.uri) {
41
+ try {
42
+ if (context?.storage) {
43
+ const stored = await context.storage.retrieve(ref.uri);
44
+ if (stored !== null)
45
+ return new Uint8Array(stored);
46
+ }
47
+ if (ref.uri.startsWith("file://")) {
48
+ return new Uint8Array(await fs.readFile(uriToPath(ref.uri)));
49
+ }
50
+ if (ref.uri.startsWith("http://") || ref.uri.startsWith("https://")) {
51
+ const response = await fetch(ref.uri);
52
+ return new Uint8Array(await response.arrayBuffer());
53
+ }
54
+ }
55
+ catch {
56
+ return new Uint8Array();
57
+ }
58
+ }
59
+ return new Uint8Array();
60
+ }
61
+ /** Strip a `file://` scheme from a URI, returning a plain filesystem path. */
62
+ export function uriToPath(uriOrPath) {
63
+ if (uriOrPath.startsWith("file://")) {
64
+ try {
65
+ return fileURLToPath(new URL(uriOrPath));
66
+ }
67
+ catch {
68
+ // Fallback for non-standard URIs like file://C:\path
69
+ return uriOrPath.slice("file://".length);
70
+ }
71
+ }
72
+ return uriOrPath;
73
+ }
74
+ /** Wrap raw bytes into an AudioRef (base64-encoding the data). */
75
+ export function audioRefFromBytes(data, uri) {
76
+ return {
77
+ type: "audio",
78
+ uri: uri ?? "",
79
+ data: Buffer.from(data).toString("base64")
80
+ };
81
+ }
82
+ /** Semantic alias for `audioRefFromBytes` at sites that specifically emit WAV. */
83
+ export function audioRefFromWav(wav, uri) {
84
+ return audioRefFromBytes(wav, uri);
85
+ }
86
+ /** Concatenate Uint8Arrays into a single buffer. */
87
+ export function concatBytes(chunks) {
88
+ const total = chunks.reduce((sum, c) => sum + c.length, 0);
89
+ const out = new Uint8Array(total);
90
+ let offset = 0;
91
+ for (const c of chunks) {
92
+ out.set(c, offset);
93
+ offset += c.length;
94
+ }
95
+ return out;
96
+ }
97
+ /**
98
+ * Wrap a buffer of already-encoded little-endian 16-bit PCM samples in a
99
+ * RIFF/WAVE container. Use when the caller already has Int16 samples (e.g.
100
+ * from a TTS provider streaming `response_format: "pcm"`) — avoids the
101
+ * Int16 → Float32 → Int16 round-trip that `encodeWav` would impose.
102
+ */
103
+ export function encodePcm16Wav(pcmBytes, sampleRate, numChannels = 1) {
104
+ const bitsPerSample = 16;
105
+ const blockAlign = (numChannels * bitsPerSample) / 8;
106
+ const byteRate = sampleRate * blockAlign;
107
+ const dataSize = pcmBytes.length;
108
+ const buffer = Buffer.alloc(44 + dataSize);
109
+ buffer.write("RIFF", 0);
110
+ buffer.writeUInt32LE(36 + dataSize, 4);
111
+ buffer.write("WAVE", 8);
112
+ buffer.write("fmt ", 12);
113
+ buffer.writeUInt32LE(16, 16);
114
+ buffer.writeUInt16LE(1, 20); // PCM
115
+ buffer.writeUInt16LE(numChannels, 22);
116
+ buffer.writeUInt32LE(sampleRate, 24);
117
+ buffer.writeUInt32LE(byteRate, 28);
118
+ buffer.writeUInt16LE(blockAlign, 32);
119
+ buffer.writeUInt16LE(bitsPerSample, 34);
120
+ buffer.write("data", 36);
121
+ buffer.writeUInt32LE(dataSize, 40);
122
+ Buffer.from(pcmBytes.buffer, pcmBytes.byteOffset, pcmBytes.byteLength).copy(buffer, 44);
123
+ return new Uint8Array(buffer);
124
+ }
125
+ /**
126
+ * Encode Float32 samples (expected range [-1, 1]) as a 16-bit PCM WAV file.
127
+ * Samples outside the range are clipped. Channels are interleaved.
128
+ */
129
+ export function encodeWav(samples, sampleRate, numChannels = 1) {
130
+ const bitsPerSample = 16;
131
+ const blockAlign = (numChannels * bitsPerSample) / 8;
132
+ const byteRate = sampleRate * blockAlign;
133
+ const dataSize = samples.length * 2;
134
+ const buffer = Buffer.alloc(44 + dataSize);
135
+ buffer.write("RIFF", 0);
136
+ buffer.writeUInt32LE(36 + dataSize, 4);
137
+ buffer.write("WAVE", 8);
138
+ buffer.write("fmt ", 12);
139
+ buffer.writeUInt32LE(16, 16);
140
+ buffer.writeUInt16LE(1, 20); // PCM
141
+ buffer.writeUInt16LE(numChannels, 22);
142
+ buffer.writeUInt32LE(sampleRate, 24);
143
+ buffer.writeUInt32LE(byteRate, 28);
144
+ buffer.writeUInt16LE(blockAlign, 32);
145
+ buffer.writeUInt16LE(bitsPerSample, 34);
146
+ buffer.write("data", 36);
147
+ buffer.writeUInt32LE(dataSize, 40);
148
+ for (let i = 0; i < samples.length; i++) {
149
+ const s = Math.max(-1, Math.min(1, samples[i]));
150
+ buffer.writeInt16LE(Math.round(s * 0x7fff), 44 + i * 2);
151
+ }
152
+ return new Uint8Array(buffer);
153
+ }
154
+ /**
155
+ * Parse already-loaded WAV bytes into Float32 samples.
156
+ * Returns null when the input is not a valid RIFF/WAVE file.
157
+ * Supports 16-bit and 8-bit PCM. Subchunks are traversed, so non-standard
158
+ * layouts with `LIST`/`JUNK`/etc. before the `data` chunk work correctly.
159
+ */
160
+ export function parseWavBytes(bytes) {
161
+ if (bytes.length < 44)
162
+ return null;
163
+ const buf = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
164
+ if (buf.toString("ascii", 0, 4) !== "RIFF" ||
165
+ buf.toString("ascii", 8, 12) !== "WAVE") {
166
+ return null;
167
+ }
168
+ const sampleRate = buf.readUInt32LE(24);
169
+ const bitsPerSample = buf.readUInt16LE(34);
170
+ const numChannels = buf.readUInt16LE(22);
171
+ let dataOffset = 36;
172
+ while (dataOffset < buf.length - 8) {
173
+ const chunkId = buf.toString("ascii", dataOffset, dataOffset + 4);
174
+ const chunkSize = buf.readUInt32LE(dataOffset + 4);
175
+ if (chunkId === "data") {
176
+ dataOffset += 8;
177
+ break;
178
+ }
179
+ dataOffset += 8 + chunkSize;
180
+ }
181
+ const bytesPerSample = bitsPerSample / 8;
182
+ if (bytesPerSample !== 1 && bytesPerSample !== 2)
183
+ return null;
184
+ const totalSamples = Math.floor((buf.length - dataOffset) / bytesPerSample);
185
+ const samples = new Float32Array(totalSamples);
186
+ for (let i = 0; i < totalSamples; i++) {
187
+ const pos = dataOffset + i * bytesPerSample;
188
+ if (bitsPerSample === 16) {
189
+ samples[i] = buf.readInt16LE(pos) / 0x7fff;
190
+ }
191
+ else if (bitsPerSample === 8) {
192
+ samples[i] = (buf.readUInt8(pos) - 128) / 128;
193
+ }
194
+ }
195
+ return { samples, sampleRate, numChannels };
196
+ }
197
+ /**
198
+ * Decode an AudioRef as WAV. Throws when the ref does not contain a valid
199
+ * WAV file.
200
+ */
201
+ export function decodeWav(audio) {
202
+ const wav = parseWavBytes(audioBytes(audio));
203
+ if (!wav)
204
+ throw new Error("Invalid WAV file");
205
+ return wav;
206
+ }
207
+ /**
208
+ * Decode an AudioRef as WAV, returning null for non-WAV / malformed input
209
+ * instead of throwing. Use this when a caller wants to fall back to raw
210
+ * byte handling when the input is not WAV.
211
+ */
212
+ export function tryDecodeWav(audio) {
213
+ return parseWavBytes(audioBytes(audio));
214
+ }
215
+ //# sourceMappingURL=audio-wav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-wav.js","sourceRoot":"","sources":["../../src/lib/audio-wav.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,253 @@
1
+ import { BaseNode } from "@nodetool-ai/node-sdk";
2
+ import type { BaseProvider, Message, MessageContent, ProcessingContext, ProviderStreamItem, ToolCall } from "@nodetool-ai/runtime";
3
+ import type { Chunk } from "@nodetool-ai/protocol";
4
+ export type ToolLike = {
5
+ name: string;
6
+ description?: string;
7
+ inputSchema?: Record<string, unknown>;
8
+ process?: (context: ProcessingContext, params: Record<string, unknown>) => Promise<unknown>;
9
+ toProviderTool?: () => {
10
+ name: string;
11
+ description?: string;
12
+ inputSchema?: Record<string, unknown>;
13
+ };
14
+ };
15
+ export declare function streamProviderMessages(provider: BaseProvider, args: Parameters<BaseProvider["generateMessages"]>[0]): AsyncGenerator<ProviderStreamItem>;
16
+ export declare function isChunkItem(item: ProviderStreamItem): item is Chunk;
17
+ export declare function isToolCallItem(item: ProviderStreamItem): item is ToolCall;
18
+ export declare function toProviderTools(tools: ToolLike[]): Array<{
19
+ name: string;
20
+ description?: string;
21
+ inputSchema?: Record<string, unknown>;
22
+ }>;
23
+ export declare function serializeToolResult(value: unknown): unknown;
24
+ export interface AgentLoopOptions {
25
+ context: ProcessingContext;
26
+ providerId: string;
27
+ modelId: string;
28
+ systemPrompt: string;
29
+ prompt: string;
30
+ tools: ToolLike[];
31
+ contentParts?: MessageContent[];
32
+ maxTokens?: number;
33
+ maxIterations?: number;
34
+ threadId?: string;
35
+ }
36
+ export interface AgentLoopResult {
37
+ text: string;
38
+ messages: Message[];
39
+ }
40
+ export declare function runAgentLoop(options: AgentLoopOptions): Promise<AgentLoopResult>;
41
+ export declare class SummarizerNode extends BaseNode {
42
+ static readonly nodeType = "nodetool.agents.Summarizer";
43
+ static readonly title = "Summarizer";
44
+ static readonly description = "Generate concise summaries of text content using LLM providers with streaming output.\n text, summarization, nlp, content, streaming\n\n Specialized for creating high-quality summaries with real-time streaming:\n - Condensing long documents into key points\n - Creating executive summaries with live output\n - Extracting main ideas from text as they're generated\n - Maintaining factual accuracy while reducing length";
45
+ static readonly metadataOutputTypes: {
46
+ text: string;
47
+ chunk: string;
48
+ };
49
+ static readonly basicFields: string[];
50
+ static readonly recommendedModels: ({
51
+ id: string;
52
+ type: string;
53
+ name: string;
54
+ repo_id: string;
55
+ description: string;
56
+ size_on_disk: number;
57
+ path?: undefined;
58
+ pipeline_tag?: undefined;
59
+ tags?: undefined;
60
+ has_model_index?: undefined;
61
+ downloads?: undefined;
62
+ likes?: undefined;
63
+ } | {
64
+ id: string;
65
+ type: string;
66
+ name: string;
67
+ repo_id: string;
68
+ path: string;
69
+ description: string;
70
+ size_on_disk: number;
71
+ pipeline_tag: string;
72
+ tags: string[];
73
+ has_model_index: boolean;
74
+ downloads: number;
75
+ likes: number;
76
+ })[];
77
+ static readonly isStreamingOutput = true;
78
+ system_prompt: any;
79
+ model: any;
80
+ text: any;
81
+ image: any;
82
+ audio: any;
83
+ process(context?: ProcessingContext): Promise<Record<string, unknown>>;
84
+ }
85
+ export declare class CreateThreadNode extends BaseNode {
86
+ static readonly nodeType = "nodetool.agents.CreateThread";
87
+ static readonly title = "Create Thread";
88
+ static readonly description = "Create a new conversation thread and return its ID.\n threads, chat, conversation, context\n\n Use this to seed a thread_id that downstream Agent nodes can reuse for\n persistent history across the graph or multiple runs.";
89
+ static readonly metadataOutputTypes: {
90
+ thread_id: string;
91
+ };
92
+ title: any;
93
+ thread_id: any;
94
+ process(): Promise<Record<string, unknown>>;
95
+ }
96
+ export declare class ExtractorNode extends BaseNode {
97
+ static readonly nodeType = "nodetool.agents.Extractor";
98
+ static readonly title = "Extractor";
99
+ static readonly description = "Extract structured data from text content using LLM providers.\n data-extraction, structured-data, nlp, parsing\n\n Specialized for extracting structured information:\n - Converting unstructured text into structured data\n - Identifying and extracting specific fields from documents\n - Parsing text according to predefined schemas\n - Creating structured records from natural language content";
100
+ static readonly basicFields: string[];
101
+ static readonly supportsDynamicOutputs = true;
102
+ static readonly recommendedModels: ({
103
+ id: string;
104
+ type: string;
105
+ name: string;
106
+ repo_id: string;
107
+ description: string;
108
+ size_on_disk: number;
109
+ path?: undefined;
110
+ pipeline_tag?: undefined;
111
+ tags?: undefined;
112
+ has_model_index?: undefined;
113
+ downloads?: undefined;
114
+ likes?: undefined;
115
+ } | {
116
+ id: string;
117
+ type: string;
118
+ name: string;
119
+ repo_id: string;
120
+ path: string;
121
+ description: string;
122
+ size_on_disk: number;
123
+ pipeline_tag: string;
124
+ tags: string[];
125
+ has_model_index: boolean;
126
+ downloads: number;
127
+ likes: number;
128
+ })[];
129
+ system_prompt: any;
130
+ model: any;
131
+ text: any;
132
+ image: any;
133
+ audio: any;
134
+ process(context?: ProcessingContext): Promise<Record<string, unknown>>;
135
+ }
136
+ export declare class ClassifierNode extends BaseNode {
137
+ static readonly nodeType = "nodetool.agents.Classifier";
138
+ static readonly title = "Classifier";
139
+ static readonly description = "Classify text into predefined or dynamic categories using LLM.\n classification, nlp, categorization\n\n Use cases:\n - Sentiment analysis\n - Topic classification\n - Intent detection\n - Content categorization";
140
+ static readonly metadataOutputTypes: {
141
+ output: string;
142
+ };
143
+ static readonly basicFields: string[];
144
+ static readonly recommendedModels: ({
145
+ id: string;
146
+ type: string;
147
+ name: string;
148
+ repo_id: string;
149
+ description: string;
150
+ size_on_disk: number;
151
+ path?: undefined;
152
+ pipeline_tag?: undefined;
153
+ tags?: undefined;
154
+ has_model_index?: undefined;
155
+ downloads?: undefined;
156
+ likes?: undefined;
157
+ } | {
158
+ id: string;
159
+ type: string;
160
+ name: string;
161
+ repo_id: string;
162
+ path: string;
163
+ description: string;
164
+ size_on_disk: number;
165
+ pipeline_tag: string;
166
+ tags: string[];
167
+ has_model_index: boolean;
168
+ downloads: number;
169
+ likes: number;
170
+ })[];
171
+ system_prompt: any;
172
+ model: any;
173
+ text: any;
174
+ image: any;
175
+ audio: any;
176
+ categories: any;
177
+ process(context?: ProcessingContext): Promise<Record<string, unknown>>;
178
+ }
179
+ export declare class AgentNode extends BaseNode {
180
+ static readonly nodeType = "nodetool.agents.Agent";
181
+ static readonly title = "Agent";
182
+ static readonly description = "Generate natural language responses using LLM providers and streams output.\n llm, text-generation, chatbot, question-answering, streaming";
183
+ static readonly metadataOutputTypes: {
184
+ text: string;
185
+ chunk: string;
186
+ thinking: string;
187
+ audio: string;
188
+ };
189
+ static readonly basicFields: string[];
190
+ static readonly supportsDynamicOutputs = true;
191
+ static readonly recommendedModels: ({
192
+ id: string;
193
+ type: string;
194
+ name: string;
195
+ repo_id: string;
196
+ description: string;
197
+ size_on_disk: number;
198
+ path?: undefined;
199
+ tags?: undefined;
200
+ has_model_index?: undefined;
201
+ downloads?: undefined;
202
+ likes?: undefined;
203
+ pipeline_tag?: undefined;
204
+ } | {
205
+ id: string;
206
+ type: string;
207
+ name: string;
208
+ repo_id: string;
209
+ path: string;
210
+ description: string;
211
+ size_on_disk: number;
212
+ tags: string[];
213
+ has_model_index: boolean;
214
+ downloads: number;
215
+ likes: number;
216
+ pipeline_tag?: undefined;
217
+ } | {
218
+ id: string;
219
+ type: string;
220
+ name: string;
221
+ repo_id: string;
222
+ path: string;
223
+ description: string;
224
+ size_on_disk: number;
225
+ pipeline_tag: string;
226
+ tags: string[];
227
+ has_model_index: boolean;
228
+ downloads: number;
229
+ likes: number;
230
+ })[];
231
+ static readonly isStreamingOutput = true;
232
+ model: any;
233
+ mode: any;
234
+ system: any;
235
+ prompt: any;
236
+ tools: any;
237
+ image: any;
238
+ audio: any;
239
+ history: any;
240
+ thread_id: any;
241
+ max_tokens: any;
242
+ num_agents: any;
243
+ team_strategy: any;
244
+ genProcess(context?: ProcessingContext): AsyncGenerator<Record<string, unknown>>;
245
+ process(context?: ProcessingContext): Promise<Record<string, unknown>>;
246
+ /**
247
+ * Dispatch to MultiModeAgent for "plan" and "multi-agent" modes.
248
+ * Converts ToolLike[] to AgentTool[] and bridges ProcessingMessage to node outputs.
249
+ */
250
+ private genProcessMultiMode;
251
+ }
252
+ export declare const AGENT_NODES: readonly [typeof SummarizerNode, typeof CreateThreadNode, typeof ExtractorNode, typeof ClassifierNode, typeof AgentNode];
253
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/nodes/agents.ts"],"names":[],"mappings":"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"}