@zerowidth/workbench-sdk 2.3.0 → 2.4.0

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 (749) hide show
  1. package/README.md +2 -0
  2. package/nodes/anthropic-claude-3-5-haiku/anthropic-claude-3-5-haiku.config.json +8 -0
  3. package/nodes/anthropic-claude-3-haiku/anthropic-claude-3-haiku.config.json +8 -0
  4. package/nodes/anthropic-claude-fable-5/anthropic-claude-fable-5.config.json +172 -0
  5. package/nodes/anthropic-claude-fable-5/anthropic-claude-fable-5.process.js +138 -0
  6. package/nodes/anthropic-claude-fable-5-1/anthropic-claude-fable-5-1.config.json +172 -0
  7. package/nodes/anthropic-claude-fable-5-1/anthropic-claude-fable-5-1.process.js +138 -0
  8. package/nodes/anthropic-claude-haiku-4-5/anthropic-claude-haiku-4-5.config.json +1 -0
  9. package/nodes/anthropic-claude-opus-4/anthropic-claude-opus-4.config.json +8 -0
  10. package/nodes/anthropic-claude-opus-4-1/anthropic-claude-opus-4-1.config.json +0 -9
  11. package/nodes/anthropic-claude-opus-4-1/anthropic-claude-opus-4-1.process.js +1 -1
  12. package/nodes/anthropic-claude-opus-4-5/anthropic-claude-opus-4-5.config.json +1 -0
  13. package/nodes/anthropic-claude-opus-4-6/anthropic-claude-opus-4-6.config.json +1 -0
  14. package/nodes/anthropic-claude-opus-4-6-fast/anthropic-claude-opus-4-6-fast.config.json +8 -0
  15. package/nodes/anthropic-claude-opus-4-7/anthropic-claude-opus-4-7.config.json +2 -0
  16. package/nodes/anthropic-claude-opus-4-7-fast/anthropic-claude-opus-4-7-fast.config.json +8 -0
  17. package/nodes/anthropic-claude-opus-4-8/anthropic-claude-opus-4-8.config.json +10 -0
  18. package/nodes/anthropic-claude-opus-4-8/anthropic-claude-opus-4-8.process.js +1 -1
  19. package/nodes/anthropic-claude-opus-4-8-fast/anthropic-claude-opus-4-8-fast.config.json +8 -0
  20. package/nodes/anthropic-claude-opus-5/anthropic-claude-opus-5.config.json +180 -0
  21. package/nodes/anthropic-claude-opus-5/anthropic-claude-opus-5.process.js +138 -0
  22. package/nodes/anthropic-claude-opus-5-5/anthropic-claude-opus-5-5.config.json +180 -0
  23. package/nodes/anthropic-claude-opus-5-5/anthropic-claude-opus-5-5.process.js +138 -0
  24. package/nodes/anthropic-claude-sonnet-4/anthropic-claude-sonnet-4.config.json +1 -1
  25. package/nodes/anthropic-claude-sonnet-4-5/anthropic-claude-sonnet-4-5.config.json +1 -0
  26. package/nodes/anthropic-claude-sonnet-4-6/anthropic-claude-sonnet-4-6.config.json +1 -0
  27. package/nodes/anthropic-claude-sonnet-5/anthropic-claude-sonnet-5.config.json +172 -0
  28. package/nodes/anthropic-claude-sonnet-5/anthropic-claude-sonnet-5.process.js +138 -0
  29. package/nodes/anthropic-claude-sonnet-5-5/anthropic-claude-sonnet-5-5.config.json +180 -0
  30. package/nodes/anthropic-claude-sonnet-5-5/anthropic-claude-sonnet-5-5.process.js +138 -0
  31. package/nodes/baai-bge-base-en-v1-5/baai-bge-base-en-v1-5.config.json +1 -1
  32. package/nodes/baai-bge-large-en-v1-5/baai-bge-large-en-v1-5.config.json +1 -1
  33. package/nodes/baai-bge-m3/baai-bge-m3.config.json +1 -1
  34. package/nodes/deepseek-deepseek-chat/deepseek-deepseek-chat.config.json +3 -3
  35. package/nodes/deepseek-deepseek-chat-v3-0324/deepseek-deepseek-chat-v3-0324.config.json +24 -2
  36. package/nodes/deepseek-deepseek-chat-v3-0324/deepseek-deepseek-chat-v3-0324.process.js +2 -1
  37. package/nodes/deepseek-deepseek-chat-v3-1/deepseek-deepseek-chat-v3-1.config.json +24 -2
  38. package/nodes/deepseek-deepseek-chat-v3-1/deepseek-deepseek-chat-v3-1.process.js +2 -1
  39. package/nodes/deepseek-deepseek-r1/deepseek-deepseek-r1.config.json +1 -3
  40. package/nodes/deepseek-deepseek-r1-0528/deepseek-deepseek-r1-0528.config.json +22 -0
  41. package/nodes/deepseek-deepseek-r1-0528/deepseek-deepseek-r1-0528.process.js +2 -1
  42. package/nodes/deepseek-deepseek-r1-distill-llama-70b/deepseek-deepseek-r1-distill-llama-70b.config.json +8 -0
  43. package/nodes/deepseek-deepseek-r1-distill-qwen-32b/deepseek-deepseek-r1-distill-qwen-32b.config.json +8 -0
  44. package/nodes/deepseek-deepseek-v3-1-terminus/deepseek-deepseek-v3-1-terminus.config.json +1 -1
  45. package/nodes/deepseek-deepseek-v3-2/deepseek-deepseek-v3-2.config.json +25 -3
  46. package/nodes/deepseek-deepseek-v3-2/deepseek-deepseek-v3-2.process.js +2 -1
  47. package/nodes/deepseek-deepseek-v3-2-exp/deepseek-deepseek-v3-2-exp.config.json +24 -2
  48. package/nodes/deepseek-deepseek-v3-2-exp/deepseek-deepseek-v3-2-exp.process.js +2 -1
  49. package/nodes/deepseek-deepseek-v4-1-flash/deepseek-deepseek-v4-1-flash.config.json +236 -0
  50. package/nodes/deepseek-deepseek-v4-1-flash/deepseek-deepseek-v4-1-flash.process.js +139 -0
  51. package/nodes/deepseek-deepseek-v4-flash/deepseek-deepseek-v4-flash.config.json +6 -3
  52. package/nodes/deepseek-deepseek-v4-flash/deepseek-deepseek-v4-flash.process.js +1 -1
  53. package/nodes/deepseek-deepseek-v4-flash-0731/deepseek-deepseek-v4-flash-0731.config.json +238 -0
  54. package/nodes/deepseek-deepseek-v4-flash-0731/deepseek-deepseek-v4-flash-0731.process.js +139 -0
  55. package/nodes/deepseek-deepseek-v4-flash-vision-exp/deepseek-deepseek-v4-flash-vision-exp.config.json +236 -0
  56. package/nodes/deepseek-deepseek-v4-flash-vision-exp/deepseek-deepseek-v4-flash-vision-exp.process.js +139 -0
  57. package/nodes/deepseek-deepseek-v4-pro/deepseek-deepseek-v4-pro.config.json +5 -3
  58. package/nodes/deepseek-deepseek-v4-pro/deepseek-deepseek-v4-pro.process.js +1 -1
  59. package/nodes/deepseek-deepseek-v4-pro-0813/deepseek-deepseek-v4-pro-0813.config.json +236 -0
  60. package/nodes/deepseek-deepseek-v4-pro-0813/deepseek-deepseek-v4-pro-0813.process.js +139 -0
  61. package/nodes/google-gemini-2-5-flash/google-gemini-2-5-flash.config.json +8 -0
  62. package/nodes/google-gemini-2-5-flash-lite/google-gemini-2-5-flash-lite.config.json +8 -0
  63. package/nodes/google-gemini-2-5-flash-lite-preview-09-2025/google-gemini-2-5-flash-lite-preview-09-2025.config.json +8 -0
  64. package/nodes/google-gemini-2-5-pro/google-gemini-2-5-pro.config.json +8 -0
  65. package/nodes/google-gemini-2-5-pro-preview-05-06/google-gemini-2-5-pro-preview-05-06.config.json +8 -0
  66. package/nodes/google-gemini-3-1-flash-image/google-gemini-3-1-flash-image.config.json +151 -0
  67. package/nodes/google-gemini-3-1-flash-image/google-gemini-3-1-flash-image.process.js +57 -0
  68. package/nodes/google-gemini-3-1-flash-image-preview/google-gemini-3-1-flash-image-preview.config.json +2 -2
  69. package/nodes/google-gemini-3-1-flash-lite/google-gemini-3-1-flash-lite.config.json +1 -0
  70. package/nodes/google-gemini-3-1-flash-lite-image/google-gemini-3-1-flash-lite-image.config.json +150 -0
  71. package/nodes/google-gemini-3-1-flash-lite-image/google-gemini-3-1-flash-lite-image.process.js +57 -0
  72. package/nodes/google-gemini-3-1-flash-lite-preview/google-gemini-3-1-flash-lite-preview.config.json +1 -8
  73. package/nodes/google-gemini-3-1-flash-lite-preview/google-gemini-3-1-flash-lite-preview.process.js +1 -1
  74. package/nodes/google-gemini-3-1-pro-preview/google-gemini-3-1-pro-preview.config.json +1 -0
  75. package/nodes/google-gemini-3-1-pro-preview-customtools/google-gemini-3-1-pro-preview-customtools.config.json +2 -9
  76. package/nodes/google-gemini-3-1-pro-preview-customtools/google-gemini-3-1-pro-preview-customtools.process.js +1 -1
  77. package/nodes/google-gemini-3-5-flash/google-gemini-3-5-flash.config.json +1 -0
  78. package/nodes/google-gemini-3-5-flash-lite/google-gemini-3-5-flash-lite.config.json +194 -0
  79. package/nodes/google-gemini-3-5-flash-lite/google-gemini-3-5-flash-lite.process.js +138 -0
  80. package/nodes/google-gemini-3-6-flash/google-gemini-3-6-flash.config.json +194 -0
  81. package/nodes/google-gemini-3-6-flash/google-gemini-3-6-flash.process.js +138 -0
  82. package/nodes/google-gemini-3-7-flash/google-gemini-3-7-flash.config.json +194 -0
  83. package/nodes/google-gemini-3-7-flash/google-gemini-3-7-flash.process.js +138 -0
  84. package/nodes/google-gemini-3-8-flash/google-gemini-3-8-flash.config.json +194 -0
  85. package/nodes/google-gemini-3-8-flash/google-gemini-3-8-flash.process.js +138 -0
  86. package/nodes/google-gemini-3-flash-preview/google-gemini-3-flash-preview.config.json +1 -0
  87. package/nodes/google-gemini-3-pro-image/google-gemini-3-pro-image.config.json +202 -0
  88. package/nodes/google-gemini-3-pro-image/google-gemini-3-pro-image.process.js +142 -0
  89. package/nodes/google-gemma-3-12b-it/google-gemma-3-12b-it.config.json +2 -2
  90. package/nodes/google-gemma-3-27b-it/google-gemma-3-27b-it.config.json +23 -1
  91. package/nodes/google-gemma-3-27b-it/google-gemma-3-27b-it.process.js +2 -1
  92. package/nodes/google-gemma-3-4b-it/google-gemma-3-4b-it.config.json +2 -2
  93. package/nodes/google-gemma-3n-e4b-it/google-gemma-3n-e4b-it.config.json +8 -0
  94. package/nodes/google-gemma-4-26b-a4b-it/google-gemma-4-26b-a4b-it.config.json +2 -2
  95. package/nodes/google-gemma-4-31b-it/google-gemma-4-31b-it.config.json +2 -2
  96. package/nodes/google-gemma-4-31b-it-free/google-gemma-4-31b-it-free.config.json +0 -8
  97. package/nodes/google-gemma-4-31b-it-free/google-gemma-4-31b-it-free.process.js +1 -1
  98. package/nodes/intfloat-e5-base-v2/intfloat-e5-base-v2.config.json +1 -1
  99. package/nodes/intfloat-e5-large-v2/intfloat-e5-large-v2.config.json +1 -1
  100. package/nodes/intfloat-multilingual-e5-large/intfloat-multilingual-e5-large.config.json +1 -1
  101. package/nodes/jaredpalmer-kev-4b/jaredpalmer-kev-4b.config.json +85 -0
  102. package/nodes/jaredpalmer-kev-4b/jaredpalmer-kev-4b.process.js +33 -0
  103. package/nodes/liquid-lfm-2-24b-a2b/liquid-lfm-2-24b-a2b.config.json +8 -0
  104. package/nodes/liquid-lfm-2-5-1-2b-instruct-free/liquid-lfm-2-5-1-2b-instruct-free.config.json +8 -0
  105. package/nodes/liquid-lfm-2-5-1-2b-thinking-free/liquid-lfm-2-5-1-2b-thinking-free.config.json +8 -0
  106. package/nodes/liquid-lfm-2-5-2-6b-free/liquid-lfm-2-5-2-6b-free.config.json +235 -0
  107. package/nodes/liquid-lfm-2-5-2-6b-free/liquid-lfm-2-5-2-6b-free.process.js +139 -0
  108. package/nodes/liquid-lfm-2-5-embedding-350m-free/liquid-lfm-2-5-embedding-350m-free.config.json +90 -0
  109. package/nodes/liquid-lfm-2-5-embedding-350m-free/liquid-lfm-2-5-embedding-350m-free.process.js +36 -0
  110. package/nodes/mistralai-codestral-2508/mistralai-codestral-2508.config.json +1 -0
  111. package/nodes/mistralai-ministral-14b-2512/mistralai-ministral-14b-2512.config.json +0 -23
  112. package/nodes/mistralai-ministral-14b-2512/mistralai-ministral-14b-2512.process.js +1 -2
  113. package/nodes/mistralai-ministral-3b-2512/mistralai-ministral-3b-2512.config.json +0 -23
  114. package/nodes/mistralai-ministral-3b-2512/mistralai-ministral-3b-2512.process.js +1 -2
  115. package/nodes/mistralai-ministral-8b-2512/mistralai-ministral-8b-2512.config.json +0 -23
  116. package/nodes/mistralai-ministral-8b-2512/mistralai-ministral-8b-2512.process.js +1 -2
  117. package/nodes/mistralai-mistral-medium-3-5/mistralai-mistral-medium-3-5.config.json +1 -0
  118. package/nodes/mistralai-mistral-nemo/mistralai-mistral-nemo.config.json +23 -1
  119. package/nodes/mistralai-mistral-nemo/mistralai-mistral-nemo.process.js +2 -1
  120. package/nodes/mistralai-mistral-small-2603/mistralai-mistral-small-2603.config.json +1 -1
  121. package/nodes/mistralai-mistral-small-3-1-24b-instruct/mistralai-mistral-small-3-1-24b-instruct.config.json +79 -6
  122. package/nodes/mistralai-mistral-small-3-1-24b-instruct/mistralai-mistral-small-3-1-24b-instruct.process.js +90 -4
  123. package/nodes/mistralai-mistral-small-3-2-24b-instruct/mistralai-mistral-small-3-2-24b-instruct.config.json +25 -3
  124. package/nodes/mistralai-mistral-small-3-2-24b-instruct/mistralai-mistral-small-3-2-24b-instruct.process.js +2 -1
  125. package/nodes/mistralai-voxtral-small-24b-2507/mistralai-voxtral-small-24b-2507.config.json +1 -1
  126. package/nodes/nvidia-nemotron-3-embed-1b-free/nvidia-nemotron-3-embed-1b-free.config.json +90 -0
  127. package/nodes/nvidia-nemotron-3-embed-1b-free/nvidia-nemotron-3-embed-1b-free.process.js +36 -0
  128. package/nodes/openai-gpt-4-1106-preview/openai-gpt-4-1106-preview.config.json +8 -0
  129. package/nodes/openai-gpt-4-turbo-preview/openai-gpt-4-turbo-preview.config.json +8 -0
  130. package/nodes/openai-gpt-4o/openai-gpt-4o.config.json +1 -0
  131. package/nodes/openai-gpt-4o-2024-05-13/openai-gpt-4o-2024-05-13.config.json +1 -0
  132. package/nodes/openai-gpt-4o-2024-08-06/openai-gpt-4o-2024-08-06.config.json +1 -0
  133. package/nodes/openai-gpt-4o-2024-11-20/openai-gpt-4o-2024-11-20.config.json +1 -0
  134. package/nodes/openai-gpt-4o-mini/openai-gpt-4o-mini.config.json +1 -0
  135. package/nodes/openai-gpt-4o-mini-2024-07-18/openai-gpt-4o-mini-2024-07-18.config.json +1 -0
  136. package/nodes/openai-gpt-4o-mini-search-preview/openai-gpt-4o-mini-search-preview.config.json +8 -0
  137. package/nodes/openai-gpt-4o-search-preview/openai-gpt-4o-search-preview.config.json +8 -0
  138. package/nodes/openai-gpt-5/openai-gpt-5.config.json +1 -0
  139. package/nodes/openai-gpt-5-1/openai-gpt-5-1.config.json +1 -0
  140. package/nodes/openai-gpt-5-1-chat/openai-gpt-5-1-chat.config.json +8 -0
  141. package/nodes/openai-gpt-5-1-codex/openai-gpt-5-1-codex.config.json +1 -8
  142. package/nodes/openai-gpt-5-1-codex/openai-gpt-5-1-codex.process.js +1 -1
  143. package/nodes/openai-gpt-5-1-codex-max/openai-gpt-5-1-codex-max.config.json +1 -8
  144. package/nodes/openai-gpt-5-1-codex-max/openai-gpt-5-1-codex-max.process.js +1 -1
  145. package/nodes/openai-gpt-5-1-codex-mini/openai-gpt-5-1-codex-mini.config.json +1 -8
  146. package/nodes/openai-gpt-5-1-codex-mini/openai-gpt-5-1-codex-mini.process.js +1 -1
  147. package/nodes/openai-gpt-5-2/openai-gpt-5-2.config.json +1 -0
  148. package/nodes/openai-gpt-5-2-chat/openai-gpt-5-2-chat.config.json +0 -8
  149. package/nodes/openai-gpt-5-2-chat/openai-gpt-5-2-chat.process.js +1 -1
  150. package/nodes/openai-gpt-5-2-codex/openai-gpt-5-2-codex.config.json +1 -8
  151. package/nodes/openai-gpt-5-2-codex/openai-gpt-5-2-codex.process.js +1 -1
  152. package/nodes/openai-gpt-5-2-pro/openai-gpt-5-2-pro.config.json +1 -0
  153. package/nodes/openai-gpt-5-3-chat/openai-gpt-5-3-chat.config.json +8 -0
  154. package/nodes/openai-gpt-5-3-codex/openai-gpt-5-3-codex.config.json +1 -0
  155. package/nodes/openai-gpt-5-4/openai-gpt-5-4.config.json +1 -0
  156. package/nodes/openai-gpt-5-4-image-2/openai-gpt-5-4-image-2.config.json +1 -0
  157. package/nodes/openai-gpt-5-4-mini/openai-gpt-5-4-mini.config.json +1 -0
  158. package/nodes/openai-gpt-5-4-nano/openai-gpt-5-4-nano.config.json +1 -0
  159. package/nodes/openai-gpt-5-4-pro/openai-gpt-5-4-pro.config.json +1 -0
  160. package/nodes/openai-gpt-5-5/openai-gpt-5-5.config.json +1 -0
  161. package/nodes/openai-gpt-5-5-pro/openai-gpt-5-5-pro.config.json +1 -0
  162. package/nodes/openai-gpt-5-6-luna/openai-gpt-5-6-luna.config.json +171 -0
  163. package/nodes/openai-gpt-5-6-luna/openai-gpt-5-6-luna.process.js +138 -0
  164. package/nodes/openai-gpt-5-6-luna-pro/openai-gpt-5-6-luna-pro.config.json +171 -0
  165. package/nodes/openai-gpt-5-6-luna-pro/openai-gpt-5-6-luna-pro.process.js +138 -0
  166. package/nodes/openai-gpt-5-6-sol/openai-gpt-5-6-sol.config.json +171 -0
  167. package/nodes/openai-gpt-5-6-sol/openai-gpt-5-6-sol.process.js +138 -0
  168. package/nodes/openai-gpt-5-6-sol-pro/openai-gpt-5-6-sol-pro.config.json +171 -0
  169. package/nodes/openai-gpt-5-6-sol-pro/openai-gpt-5-6-sol-pro.process.js +138 -0
  170. package/nodes/openai-gpt-5-6-terra/openai-gpt-5-6-terra.config.json +171 -0
  171. package/nodes/openai-gpt-5-6-terra/openai-gpt-5-6-terra.process.js +138 -0
  172. package/nodes/openai-gpt-5-6-terra-pro/openai-gpt-5-6-terra-pro.config.json +171 -0
  173. package/nodes/openai-gpt-5-6-terra-pro/openai-gpt-5-6-terra-pro.process.js +138 -0
  174. package/nodes/openai-gpt-5-chat/openai-gpt-5-chat.config.json +8 -0
  175. package/nodes/openai-gpt-5-codex/openai-gpt-5-codex.config.json +8 -0
  176. package/nodes/openai-gpt-5-mini/openai-gpt-5-mini.config.json +1 -0
  177. package/nodes/openai-gpt-5-nano/openai-gpt-5-nano.config.json +1 -0
  178. package/nodes/openai-gpt-5-pro/openai-gpt-5-pro.config.json +1 -0
  179. package/nodes/openai-gpt-6-astra/openai-gpt-6-astra.config.json +171 -0
  180. package/nodes/openai-gpt-6-astra/openai-gpt-6-astra.process.js +138 -0
  181. package/nodes/openai-gpt-6-astra-pro/openai-gpt-6-astra-pro.config.json +171 -0
  182. package/nodes/openai-gpt-6-astra-pro/openai-gpt-6-astra-pro.process.js +138 -0
  183. package/nodes/openai-gpt-6-luna/openai-gpt-6-luna.config.json +171 -0
  184. package/nodes/openai-gpt-6-luna/openai-gpt-6-luna.process.js +138 -0
  185. package/nodes/openai-gpt-6-luna-pro/openai-gpt-6-luna-pro.config.json +171 -0
  186. package/nodes/openai-gpt-6-luna-pro/openai-gpt-6-luna-pro.process.js +138 -0
  187. package/nodes/openai-gpt-6-sol/openai-gpt-6-sol.config.json +171 -0
  188. package/nodes/openai-gpt-6-sol/openai-gpt-6-sol.process.js +138 -0
  189. package/nodes/openai-gpt-6-sol-pro/openai-gpt-6-sol-pro.config.json +171 -0
  190. package/nodes/openai-gpt-6-sol-pro/openai-gpt-6-sol-pro.process.js +138 -0
  191. package/nodes/openai-gpt-chat-latest/openai-gpt-chat-latest.config.json +1 -48
  192. package/nodes/openai-gpt-chat-latest/openai-gpt-chat-latest.process.js +1 -2
  193. package/nodes/openai-gpt-oss-120b/openai-gpt-oss-120b.config.json +4 -2
  194. package/nodes/openai-gpt-oss-120b-free/openai-gpt-oss-120b-free.config.json +8 -0
  195. package/nodes/openai-gpt-oss-20b/openai-gpt-oss-20b.config.json +3 -2
  196. package/nodes/openai-gpt-oss-20b-free/openai-gpt-oss-20b-free.config.json +8 -0
  197. package/nodes/openai-gpt-oss-safeguard-20b/openai-gpt-oss-safeguard-20b.config.json +1 -0
  198. package/nodes/openai-o3-deep-research/openai-o3-deep-research.config.json +8 -0
  199. package/nodes/openai-o3-mini-high/openai-o3-mini-high.config.json +1 -0
  200. package/nodes/openai-o4-mini-deep-research/openai-o4-mini-deep-research.config.json +8 -0
  201. package/nodes/openai-o4-mini-high/openai-o4-mini-high.config.json +1 -0
  202. package/nodes/qwen-qwen-2-5-72b-instruct/qwen-qwen-2-5-72b-instruct.config.json +1 -1
  203. package/nodes/qwen-qwen-2-5-7b-instruct/qwen-qwen-2-5-7b-instruct.config.json +36 -5
  204. package/nodes/qwen-qwen-2-5-7b-instruct/qwen-qwen-2-5-7b-instruct.process.js +1 -1
  205. package/nodes/qwen-qwen-2-5-coder-32b-instruct/qwen-qwen-2-5-coder-32b-instruct.config.json +9 -1
  206. package/nodes/qwen-qwen-2-5-coder-32b-instruct/qwen-qwen-2-5-coder-32b-instruct.process.js +1 -1
  207. package/nodes/qwen-qwen-plus/qwen-qwen-plus.config.json +40 -0
  208. package/nodes/qwen-qwen-plus/qwen-qwen-plus.process.js +2 -1
  209. package/nodes/qwen-qwen-plus-2025-07-28/qwen-qwen-plus-2025-07-28.config.json +47 -0
  210. package/nodes/qwen-qwen-plus-2025-07-28/qwen-qwen-plus-2025-07-28.process.js +2 -1
  211. package/nodes/qwen-qwen-plus-2025-07-28-thinking/qwen-qwen-plus-2025-07-28-thinking.config.json +8 -0
  212. package/nodes/qwen-qwen2-5-vl-72b-instruct/qwen-qwen2-5-vl-72b-instruct.config.json +25 -3
  213. package/nodes/qwen-qwen2-5-vl-72b-instruct/qwen-qwen2-5-vl-72b-instruct.process.js +2 -1
  214. package/nodes/qwen-qwen3-14b/qwen-qwen3-14b.config.json +2 -2
  215. package/nodes/qwen-qwen3-235b-a22b/qwen-qwen3-235b-a22b.config.json +25 -0
  216. package/nodes/qwen-qwen3-235b-a22b/qwen-qwen3-235b-a22b.process.js +1 -1
  217. package/nodes/qwen-qwen3-235b-a22b-2507/qwen-qwen3-235b-a22b-2507.config.json +24 -2
  218. package/nodes/qwen-qwen3-235b-a22b-2507/qwen-qwen3-235b-a22b-2507.process.js +2 -1
  219. package/nodes/qwen-qwen3-235b-a22b-thinking-2507/qwen-qwen3-235b-a22b-thinking-2507.config.json +33 -6
  220. package/nodes/qwen-qwen3-235b-a22b-thinking-2507/qwen-qwen3-235b-a22b-thinking-2507.process.js +2 -1
  221. package/nodes/qwen-qwen3-30b-a3b/qwen-qwen3-30b-a3b.config.json +2 -24
  222. package/nodes/qwen-qwen3-30b-a3b/qwen-qwen3-30b-a3b.process.js +1 -2
  223. package/nodes/qwen-qwen3-30b-a3b-instruct-2507/qwen-qwen3-30b-a3b-instruct-2507.config.json +25 -4
  224. package/nodes/qwen-qwen3-30b-a3b-instruct-2507/qwen-qwen3-30b-a3b-instruct-2507.process.js +2 -1
  225. package/nodes/qwen-qwen3-30b-a3b-thinking-2507/qwen-qwen3-30b-a3b-thinking-2507.config.json +11 -7
  226. package/nodes/qwen-qwen3-5-35b-a3b/qwen-qwen3-5-35b-a3b.config.json +2 -2
  227. package/nodes/qwen-qwen3-5-397b-a17b/qwen-qwen3-5-397b-a17b.config.json +2 -2
  228. package/nodes/qwen-qwen3-5-9b/qwen-qwen3-5-9b.config.json +1 -1
  229. package/nodes/qwen-qwen3-5-flash-02-23/qwen-qwen3-5-flash-02-23.config.json +17 -0
  230. package/nodes/qwen-qwen3-5-flash-02-23/qwen-qwen3-5-flash-02-23.process.js +1 -1
  231. package/nodes/qwen-qwen3-5-plus-02-15/qwen-qwen3-5-plus-02-15.config.json +39 -0
  232. package/nodes/qwen-qwen3-5-plus-02-15/qwen-qwen3-5-plus-02-15.process.js +2 -1
  233. package/nodes/qwen-qwen3-5-plus-20260420/qwen-qwen3-5-plus-20260420.config.json +39 -0
  234. package/nodes/qwen-qwen3-5-plus-20260420/qwen-qwen3-5-plus-20260420.process.js +2 -1
  235. package/nodes/qwen-qwen3-6-27b/qwen-qwen3-6-27b.config.json +1 -1
  236. package/nodes/qwen-qwen3-6-35b-a3b/qwen-qwen3-6-35b-a3b.config.json +1 -1
  237. package/nodes/qwen-qwen3-6-flash/qwen-qwen3-6-flash.config.json +39 -0
  238. package/nodes/qwen-qwen3-6-flash/qwen-qwen3-6-flash.process.js +2 -1
  239. package/nodes/qwen-qwen3-6-max-preview/qwen-qwen3-6-max-preview.config.json +27 -2
  240. package/nodes/qwen-qwen3-6-max-preview/qwen-qwen3-6-max-preview.process.js +1 -1
  241. package/nodes/qwen-qwen3-6-plus/qwen-qwen3-6-plus.config.json +39 -0
  242. package/nodes/qwen-qwen3-6-plus/qwen-qwen3-6-plus.process.js +2 -1
  243. package/nodes/qwen-qwen3-7-flash/qwen-qwen3-7-flash.config.json +214 -0
  244. package/nodes/qwen-qwen3-7-flash/qwen-qwen3-7-flash.process.js +139 -0
  245. package/nodes/qwen-qwen3-7-max/qwen-qwen3-7-max.config.json +19 -2
  246. package/nodes/qwen-qwen3-7-max/qwen-qwen3-7-max.process.js +1 -1
  247. package/nodes/qwen-qwen3-7-plus/qwen-qwen3-7-plus.config.json +19 -2
  248. package/nodes/qwen-qwen3-7-plus/qwen-qwen3-7-plus.process.js +1 -1
  249. package/nodes/qwen-qwen3-8-2-4t-a95b/qwen-qwen3-8-2-4t-a95b.config.json +236 -0
  250. package/nodes/qwen-qwen3-8-2-4t-a95b/qwen-qwen3-8-2-4t-a95b.process.js +139 -0
  251. package/nodes/qwen-qwen3-8-27b/qwen-qwen3-8-27b.config.json +237 -0
  252. package/nodes/qwen-qwen3-8-27b/qwen-qwen3-8-27b.process.js +139 -0
  253. package/nodes/qwen-qwen3-8-27b-free/qwen-qwen3-8-27b-free.config.json +195 -0
  254. package/nodes/qwen-qwen3-8-27b-free/qwen-qwen3-8-27b-free.process.js +138 -0
  255. package/nodes/qwen-qwen3-8-flash/qwen-qwen3-8-flash.config.json +232 -0
  256. package/nodes/qwen-qwen3-8-flash/qwen-qwen3-8-flash.process.js +139 -0
  257. package/nodes/qwen-qwen3-8-max-0902/qwen-qwen3-8-max-0902.config.json +233 -0
  258. package/nodes/qwen-qwen3-8-max-0902/qwen-qwen3-8-max-0902.process.js +139 -0
  259. package/nodes/qwen-qwen3-8-max-prime/qwen-qwen3-8-max-prime.config.json +233 -0
  260. package/nodes/qwen-qwen3-8-max-prime/qwen-qwen3-8-max-prime.process.js +139 -0
  261. package/nodes/qwen-qwen3-8-omni-flash/qwen-qwen3-8-omni-flash.config.json +232 -0
  262. package/nodes/qwen-qwen3-8-omni-flash/qwen-qwen3-8-omni-flash.process.js +139 -0
  263. package/nodes/qwen-qwen3-8b/qwen-qwen3-8b.config.json +10 -6
  264. package/nodes/qwen-qwen3-coder/qwen-qwen3-coder.config.json +25 -3
  265. package/nodes/qwen-qwen3-coder/qwen-qwen3-coder.process.js +2 -1
  266. package/nodes/qwen-qwen3-coder-30b-a3b-instruct/qwen-qwen3-coder-30b-a3b-instruct.config.json +24 -2
  267. package/nodes/qwen-qwen3-coder-30b-a3b-instruct/qwen-qwen3-coder-30b-a3b-instruct.process.js +2 -1
  268. package/nodes/qwen-qwen3-coder-flash/qwen-qwen3-coder-flash.config.json +39 -0
  269. package/nodes/qwen-qwen3-coder-flash/qwen-qwen3-coder-flash.process.js +2 -1
  270. package/nodes/qwen-qwen3-coder-free/qwen-qwen3-coder-free.config.json +8 -0
  271. package/nodes/qwen-qwen3-coder-next/qwen-qwen3-coder-next.config.json +23 -2
  272. package/nodes/qwen-qwen3-coder-next/qwen-qwen3-coder-next.process.js +2 -1
  273. package/nodes/qwen-qwen3-coder-plus/qwen-qwen3-coder-plus.config.json +47 -0
  274. package/nodes/qwen-qwen3-coder-plus/qwen-qwen3-coder-plus.process.js +2 -1
  275. package/nodes/qwen-qwen3-embedding-8b/qwen-qwen3-embedding-8b.config.json +1 -1
  276. package/nodes/qwen-qwen3-max/qwen-qwen3-max.config.json +48 -0
  277. package/nodes/qwen-qwen3-max/qwen-qwen3-max.process.js +2 -1
  278. package/nodes/qwen-qwen3-max-thinking/qwen-qwen3-max-thinking.config.json +47 -0
  279. package/nodes/qwen-qwen3-max-thinking/qwen-qwen3-max-thinking.process.js +2 -1
  280. package/nodes/qwen-qwen3-next-80b-a3b-instruct/qwen-qwen3-next-80b-a3b-instruct.config.json +23 -1
  281. package/nodes/qwen-qwen3-next-80b-a3b-instruct/qwen-qwen3-next-80b-a3b-instruct.process.js +2 -1
  282. package/nodes/qwen-qwen3-next-80b-a3b-instruct-free/qwen-qwen3-next-80b-a3b-instruct-free.config.json +8 -0
  283. package/nodes/qwen-qwen3-next-80b-a3b-thinking/qwen-qwen3-next-80b-a3b-thinking.config.json +24 -4
  284. package/nodes/qwen-qwen3-next-80b-a3b-thinking/qwen-qwen3-next-80b-a3b-thinking.process.js +2 -1
  285. package/nodes/qwen-qwen3-reranker-8b/qwen-qwen3-reranker-8b.config.json +95 -0
  286. package/nodes/qwen-qwen3-reranker-8b/qwen-qwen3-reranker-8b.process.js +60 -0
  287. package/nodes/qwen-qwen3-vl-235b-a22b-instruct/qwen-qwen3-vl-235b-a22b-instruct.config.json +24 -2
  288. package/nodes/qwen-qwen3-vl-235b-a22b-instruct/qwen-qwen3-vl-235b-a22b-instruct.process.js +2 -1
  289. package/nodes/qwen-qwen3-vl-235b-a22b-thinking/qwen-qwen3-vl-235b-a22b-thinking.config.json +33 -2
  290. package/nodes/qwen-qwen3-vl-235b-a22b-thinking/qwen-qwen3-vl-235b-a22b-thinking.process.js +2 -1
  291. package/nodes/qwen-qwen3-vl-30b-a3b-instruct/qwen-qwen3-vl-30b-a3b-instruct.config.json +24 -2
  292. package/nodes/qwen-qwen3-vl-30b-a3b-instruct/qwen-qwen3-vl-30b-a3b-instruct.process.js +2 -1
  293. package/nodes/qwen-qwen3-vl-30b-a3b-thinking/qwen-qwen3-vl-30b-a3b-thinking.config.json +33 -4
  294. package/nodes/qwen-qwen3-vl-30b-a3b-thinking/qwen-qwen3-vl-30b-a3b-thinking.process.js +2 -1
  295. package/nodes/qwen-qwen3-vl-32b-instruct/qwen-qwen3-vl-32b-instruct.config.json +49 -1
  296. package/nodes/qwen-qwen3-vl-32b-instruct/qwen-qwen3-vl-32b-instruct.process.js +2 -1
  297. package/nodes/qwen-qwen3-vl-8b-instruct/qwen-qwen3-vl-8b-instruct.config.json +33 -4
  298. package/nodes/qwen-qwen3-vl-8b-instruct/qwen-qwen3-vl-8b-instruct.process.js +2 -1
  299. package/nodes/qwen-qwen3-vl-8b-thinking/qwen-qwen3-vl-8b-thinking.config.json +50 -3
  300. package/nodes/qwen-qwen3-vl-8b-thinking/qwen-qwen3-vl-8b-thinking.process.js +2 -1
  301. package/nodes/respan-span-01/respan-span-01.config.json +83 -0
  302. package/nodes/respan-span-01/respan-span-01.process.js +71 -0
  303. package/nodes/respan-span-01-lite/respan-span-01-lite.config.json +83 -0
  304. package/nodes/respan-span-01-lite/respan-span-01-lite.process.js +71 -0
  305. package/nodes/respan-span-01-lite-free/respan-span-01-lite-free.config.json +83 -0
  306. package/nodes/respan-span-01-lite-free/respan-span-01-lite-free.process.js +71 -0
  307. package/nodes/sentence-transformers-all-minilm-l12-v2/sentence-transformers-all-minilm-l12-v2.config.json +1 -1
  308. package/nodes/sentence-transformers-all-minilm-l6-v2/sentence-transformers-all-minilm-l6-v2.config.json +1 -1
  309. package/nodes/sentence-transformers-all-mpnet-base-v2/sentence-transformers-all-mpnet-base-v2.config.json +1 -1
  310. package/nodes/sentence-transformers-multi-qa-mpnet-base-dot-v1/sentence-transformers-multi-qa-mpnet-base-dot-v1.config.json +1 -1
  311. package/nodes/sentence-transformers-paraphrase-minilm-l6-v2/sentence-transformers-paraphrase-minilm-l6-v2.config.json +1 -1
  312. package/nodes/thenlper-gte-base/thenlper-gte-base.config.json +1 -1
  313. package/nodes/thenlper-gte-large/thenlper-gte-large.config.json +1 -1
  314. package/nodes/typesafe-jev-1-13/typesafe-jev-1-13.config.json +85 -0
  315. package/nodes/typesafe-jev-1-13/typesafe-jev-1-13.process.js +33 -0
  316. package/nodes/typesafe-jev-latest/typesafe-jev-latest.config.json +86 -0
  317. package/nodes/typesafe-jev-latest/typesafe-jev-latest.process.js +33 -0
  318. package/nodes/typesafe-jev-router/typesafe-jev-router.config.json +154 -0
  319. package/nodes/typesafe-jev-router/typesafe-jev-router.process.js +138 -0
  320. package/nodes/upstage-solar-decide/upstage-solar-decide.config.json +85 -0
  321. package/nodes/upstage-solar-decide/upstage-solar-decide.process.js +33 -0
  322. package/nodes/voyageai-rerank-2-5/voyageai-rerank-2-5.config.json +95 -0
  323. package/nodes/voyageai-rerank-2-5/voyageai-rerank-2-5.process.js +60 -0
  324. package/nodes/voyageai-rerank-2-5-lite/voyageai-rerank-2-5-lite.config.json +95 -0
  325. package/nodes/voyageai-rerank-2-5-lite/voyageai-rerank-2-5-lite.process.js +60 -0
  326. package/nodes/voyageai-voyage-4/voyageai-voyage-4.config.json +90 -0
  327. package/nodes/voyageai-voyage-4/voyageai-voyage-4.process.js +36 -0
  328. package/nodes/voyageai-voyage-4-large/voyageai-voyage-4-large.config.json +90 -0
  329. package/nodes/voyageai-voyage-4-large/voyageai-voyage-4-large.process.js +36 -0
  330. package/nodes/voyageai-voyage-4-lite/voyageai-voyage-4-lite.config.json +90 -0
  331. package/nodes/voyageai-voyage-4-lite/voyageai-voyage-4-lite.process.js +36 -0
  332. package/nodes/voyageai-voyage-code-4/voyageai-voyage-code-4.config.json +90 -0
  333. package/nodes/voyageai-voyage-code-4/voyageai-voyage-code-4.process.js +36 -0
  334. package/nodes/voyageai-voyage-multimodal-3-5/voyageai-voyage-multimodal-3-5.config.json +91 -0
  335. package/nodes/voyageai-voyage-multimodal-3-5/voyageai-voyage-multimodal-3-5.process.js +36 -0
  336. package/nodes/x-ai-grok-4-20/x-ai-grok-4-20.config.json +2 -2
  337. package/nodes/x-ai-grok-4-20/x-ai-grok-4-20.process.js +1 -1
  338. package/nodes/x-ai-grok-4-20-multi-agent/x-ai-grok-4-20-multi-agent.config.json +5 -4
  339. package/nodes/x-ai-grok-4-20-multi-agent/x-ai-grok-4-20-multi-agent.process.js +1 -1
  340. package/nodes/x-ai-grok-4-3/x-ai-grok-4-3.config.json +3 -26
  341. package/nodes/x-ai-grok-4-3/x-ai-grok-4-3.process.js +2 -2
  342. package/nodes/x-ai-grok-4-5/x-ai-grok-4-5.config.json +208 -0
  343. package/nodes/x-ai-grok-4-5/x-ai-grok-4-5.process.js +139 -0
  344. package/nodes/x-ai-grok-4-6/x-ai-grok-4-6.config.json +217 -0
  345. package/nodes/x-ai-grok-4-6/x-ai-grok-4-6.process.js +139 -0
  346. package/nodes/x-ai-grok-4-7/x-ai-grok-4-7.config.json +208 -0
  347. package/nodes/x-ai-grok-4-7/x-ai-grok-4-7.process.js +139 -0
  348. package/nodes/x-ai-grok-build-0-1/x-ai-grok-build-0-1.config.json +2 -26
  349. package/nodes/x-ai-grok-build-0-1/x-ai-grok-build-0-1.process.js +2 -2
  350. package/package.json +9 -2
  351. package/src/integrations/openrouter.js +114 -1
  352. package/nodes/absolute/absolute.tests.json +0 -38
  353. package/nodes/absolute-value/absolute-value.tests.json +0 -17
  354. package/nodes/add/add.tests.json +0 -41
  355. package/nodes/airtable-create-record/airtable-create-record.tests.json +0 -50
  356. package/nodes/airtable-delete-record/airtable-delete-record.tests.json +0 -23
  357. package/nodes/airtable-get-record/airtable-get-record.tests.json +0 -25
  358. package/nodes/airtable-list-records/airtable-list-records.tests.json +0 -46
  359. package/nodes/airtable-update-record/airtable-update-record.tests.json +0 -44
  360. package/nodes/and-gate/and-gate.tests.json +0 -22
  361. package/nodes/anthropic-claude-3-5-haiku/anthropic-claude-3-5-haiku.tests.json +0 -80
  362. package/nodes/anthropic-claude-3-haiku/anthropic-claude-3-haiku.tests.json +0 -80
  363. package/nodes/anthropic-claude-haiku-4-5/anthropic-claude-haiku-4-5.tests.json +0 -80
  364. package/nodes/anthropic-claude-opus-4/anthropic-claude-opus-4.tests.json +0 -80
  365. package/nodes/anthropic-claude-opus-4-1/anthropic-claude-opus-4-1.tests.json +0 -80
  366. package/nodes/anthropic-claude-opus-4-5/anthropic-claude-opus-4-5.tests.json +0 -80
  367. package/nodes/anthropic-claude-opus-4-6/anthropic-claude-opus-4-6.tests.json +0 -80
  368. package/nodes/anthropic-claude-opus-4-6-fast/anthropic-claude-opus-4-6-fast.tests.json +0 -80
  369. package/nodes/anthropic-claude-opus-4-7/anthropic-claude-opus-4-7.tests.json +0 -57
  370. package/nodes/anthropic-claude-opus-4-7-fast/anthropic-claude-opus-4-7-fast.tests.json +0 -57
  371. package/nodes/anthropic-claude-opus-4-8/anthropic-claude-opus-4-8.tests.json +0 -57
  372. package/nodes/anthropic-claude-opus-4-8-fast/anthropic-claude-opus-4-8-fast.tests.json +0 -57
  373. package/nodes/anthropic-claude-sonnet-4/anthropic-claude-sonnet-4.tests.json +0 -80
  374. package/nodes/anthropic-claude-sonnet-4-5/anthropic-claude-sonnet-4-5.tests.json +0 -80
  375. package/nodes/anthropic-claude-sonnet-4-6/anthropic-claude-sonnet-4-6.tests.json +0 -80
  376. package/nodes/array-builder/array-builder.tests.json +0 -20
  377. package/nodes/array-filter/array-filter.tests.json +0 -67
  378. package/nodes/array-find/array-find.tests.json +0 -83
  379. package/nodes/array-flatten/array-flatten.tests.json +0 -79
  380. package/nodes/array-index-selector/array-index-selector.tests.json +0 -37
  381. package/nodes/array-join/array-join.tests.json +0 -41
  382. package/nodes/array-length/array-length.tests.json +0 -32
  383. package/nodes/array-map/array-map.tests.json +0 -44
  384. package/nodes/array-reverse/array-reverse.tests.json +0 -60
  385. package/nodes/array-shuffle/array-shuffle.tests.json +0 -82
  386. package/nodes/array-slice/array-slice.tests.json +0 -43
  387. package/nodes/array-sort/array-sort.tests.json +0 -95
  388. package/nodes/array-split/array-split.tests.json +0 -77
  389. package/nodes/array-unique/array-unique.tests.json +0 -96
  390. package/nodes/baai-bge-base-en-v1-5/baai-bge-base-en-v1-5.tests.json +0 -48
  391. package/nodes/baai-bge-large-en-v1-5/baai-bge-large-en-v1-5.tests.json +0 -48
  392. package/nodes/baai-bge-m3/baai-bge-m3.tests.json +0 -48
  393. package/nodes/base64-decode/base64-decode.tests.json +0 -46
  394. package/nodes/base64-encode/base64-encode.tests.json +0 -38
  395. package/nodes/boolean/boolean.tests.json +0 -47
  396. package/nodes/boolean-inverter/boolean-inverter.tests.json +0 -22
  397. package/nodes/ceil/ceil.tests.json +0 -38
  398. package/nodes/cohere-rerank-4-fast/cohere-rerank-4-fast.tests.json +0 -47
  399. package/nodes/cohere-rerank-4-pro/cohere-rerank-4-pro.tests.json +0 -47
  400. package/nodes/cohere-rerank-v3-5/cohere-rerank-v3-5.tests.json +0 -47
  401. package/nodes/combine-document-chunks/combine-document-chunks.tests.json +0 -51
  402. package/nodes/condition-check/condition-check.tests.json +0 -112
  403. package/nodes/confluence-get-page/confluence-get-page.tests.json +0 -12
  404. package/nodes/confluence-search/confluence-search.tests.json +0 -14
  405. package/nodes/conversation-to-text/conversation-to-text.tests.json +0 -134
  406. package/nodes/csv-parser/csv-parser.tests.json +0 -93
  407. package/nodes/csv-stringifier/csv-stringifier.tests.json +0 -63
  408. package/nodes/date-formatter/date-formatter.tests.json +0 -50
  409. package/nodes/dedupe-messages/dedupe-messages.tests.json +0 -149
  410. package/nodes/deepseek-deepseek-chat/deepseek-deepseek-chat.tests.json +0 -80
  411. package/nodes/deepseek-deepseek-chat-v3-0324/deepseek-deepseek-chat-v3-0324.tests.json +0 -80
  412. package/nodes/deepseek-deepseek-chat-v3-1/deepseek-deepseek-chat-v3-1.tests.json +0 -80
  413. package/nodes/deepseek-deepseek-r1/deepseek-deepseek-r1.tests.json +0 -80
  414. package/nodes/deepseek-deepseek-r1-0528/deepseek-deepseek-r1-0528.tests.json +0 -80
  415. package/nodes/deepseek-deepseek-r1-distill-llama-70b/deepseek-deepseek-r1-distill-llama-70b.tests.json +0 -80
  416. package/nodes/deepseek-deepseek-r1-distill-qwen-32b/deepseek-deepseek-r1-distill-qwen-32b.tests.json +0 -80
  417. package/nodes/deepseek-deepseek-v3-1-terminus/deepseek-deepseek-v3-1-terminus.tests.json +0 -80
  418. package/nodes/deepseek-deepseek-v3-2/deepseek-deepseek-v3-2.tests.json +0 -80
  419. package/nodes/deepseek-deepseek-v3-2-exp/deepseek-deepseek-v3-2-exp.tests.json +0 -80
  420. package/nodes/deepseek-deepseek-v4-flash/deepseek-deepseek-v4-flash.tests.json +0 -80
  421. package/nodes/deepseek-deepseek-v4-pro/deepseek-deepseek-v4-pro.tests.json +0 -80
  422. package/nodes/delay/delay.tests.json +0 -59
  423. package/nodes/delete-object-property/delete-object-property.tests.json +0 -173
  424. package/nodes/divide/divide.tests.json +0 -42
  425. package/nodes/duration-calculator/duration-calculator.tests.json +0 -124
  426. package/nodes/embedding/embedding.tests.json +0 -26
  427. package/nodes/equals/equals.tests.json +0 -111
  428. package/nodes/extract-code/extract-code.tests.json +0 -162
  429. package/nodes/extract-json/extract-json.tests.json +0 -146
  430. package/nodes/extract-text-content/extract-text-content.tests.json +0 -144
  431. package/nodes/filter-messages/filter-messages.tests.json +0 -125
  432. package/nodes/filter-tools/filter-tools.tests.json +0 -89
  433. package/nodes/firecrawl-scrape/firecrawl-scrape.tests.json +0 -57
  434. package/nodes/firecrawl-search/firecrawl-search.tests.json +0 -9
  435. package/nodes/floor/floor.tests.json +0 -38
  436. package/nodes/generate-uuid/generate-uuid.tests.json +0 -7
  437. package/nodes/get-chunk-by-index/get-chunk-by-index.tests.json +0 -51
  438. package/nodes/get-first-n-messages/get-first-n-messages.tests.json +0 -66
  439. package/nodes/get-last-n-messages/get-last-n-messages.tests.json +0 -66
  440. package/nodes/get-messages-by-role/get-messages-by-role.tests.json +0 -87
  441. package/nodes/get-messages-range/get-messages-range.tests.json +0 -104
  442. package/nodes/get-object-property/get-object-property.tests.json +0 -101
  443. package/nodes/github-create-issue/github-create-issue.tests.json +0 -15
  444. package/nodes/google-custom-search/google-custom-search.tests.json +0 -69
  445. package/nodes/google-gemini-2-5-flash/google-gemini-2-5-flash.tests.json +0 -80
  446. package/nodes/google-gemini-2-5-flash-image/google-gemini-2-5-flash-image.tests.json +0 -44
  447. package/nodes/google-gemini-2-5-flash-lite/google-gemini-2-5-flash-lite.tests.json +0 -80
  448. package/nodes/google-gemini-2-5-flash-lite-preview-09-2025/google-gemini-2-5-flash-lite-preview-09-2025.tests.json +0 -80
  449. package/nodes/google-gemini-2-5-pro/google-gemini-2-5-pro.tests.json +0 -80
  450. package/nodes/google-gemini-2-5-pro-preview/google-gemini-2-5-pro-preview.tests.json +0 -80
  451. package/nodes/google-gemini-2-5-pro-preview-05-06/google-gemini-2-5-pro-preview-05-06.tests.json +0 -80
  452. package/nodes/google-gemini-3-1-flash-image-preview/google-gemini-3-1-flash-image-preview.tests.json +0 -44
  453. package/nodes/google-gemini-3-1-flash-lite/google-gemini-3-1-flash-lite.tests.json +0 -80
  454. package/nodes/google-gemini-3-1-flash-lite-preview/google-gemini-3-1-flash-lite-preview.tests.json +0 -80
  455. package/nodes/google-gemini-3-1-pro-preview/google-gemini-3-1-pro-preview.tests.json +0 -80
  456. package/nodes/google-gemini-3-1-pro-preview-customtools/google-gemini-3-1-pro-preview-customtools.tests.json +0 -80
  457. package/nodes/google-gemini-3-5-flash/google-gemini-3-5-flash.tests.json +0 -80
  458. package/nodes/google-gemini-3-flash-preview/google-gemini-3-flash-preview.tests.json +0 -80
  459. package/nodes/google-gemini-3-pro-image-preview/google-gemini-3-pro-image-preview.tests.json +0 -44
  460. package/nodes/google-gemini-embedding-001/google-gemini-embedding-001.tests.json +0 -48
  461. package/nodes/google-gemini-embedding-2/google-gemini-embedding-2.tests.json +0 -48
  462. package/nodes/google-gemini-embedding-2-preview/google-gemini-embedding-2-preview.tests.json +0 -48
  463. package/nodes/google-gemma-2-27b-it/google-gemma-2-27b-it.tests.json +0 -80
  464. package/nodes/google-gemma-3-12b-it/google-gemma-3-12b-it.tests.json +0 -80
  465. package/nodes/google-gemma-3-27b-it/google-gemma-3-27b-it.tests.json +0 -80
  466. package/nodes/google-gemma-3-4b-it/google-gemma-3-4b-it.tests.json +0 -80
  467. package/nodes/google-gemma-3n-e4b-it/google-gemma-3n-e4b-it.tests.json +0 -44
  468. package/nodes/google-gemma-4-26b-a4b-it/google-gemma-4-26b-a4b-it.tests.json +0 -80
  469. package/nodes/google-gemma-4-26b-a4b-it-free/google-gemma-4-26b-a4b-it-free.tests.json +0 -80
  470. package/nodes/google-gemma-4-31b-it/google-gemma-4-31b-it.tests.json +0 -80
  471. package/nodes/google-gemma-4-31b-it-free/google-gemma-4-31b-it-free.tests.json +0 -80
  472. package/nodes/google-lyria-3-clip-preview/google-lyria-3-clip-preview.tests.json +0 -44
  473. package/nodes/google-lyria-3-pro-preview/google-lyria-3-pro-preview.tests.json +0 -44
  474. package/nodes/greater-than/greater-than.tests.json +0 -47
  475. package/nodes/greater-than-equal/greater-than-equal.tests.json +0 -52
  476. package/nodes/has-object-property/has-object-property.tests.json +0 -148
  477. package/nodes/hash-content/hash-content.tests.json +0 -51
  478. package/nodes/histogram/histogram.tests.json +0 -57
  479. package/nodes/histogram-fixed/histogram-fixed.tests.json +0 -62
  480. package/nodes/http-request/http-request.tests.json +0 -115
  481. package/nodes/if-else/if-else.tests.json +0 -94
  482. package/nodes/input-data/input-data.tests.json +0 -53
  483. package/nodes/intfloat-e5-base-v2/intfloat-e5-base-v2.tests.json +0 -48
  484. package/nodes/intfloat-e5-large-v2/intfloat-e5-large-v2.tests.json +0 -48
  485. package/nodes/intfloat-multilingual-e5-large/intfloat-multilingual-e5-large.tests.json +0 -48
  486. package/nodes/jira-create-issue/jira-create-issue.tests.json +0 -14
  487. package/nodes/jira-list-issues/jira-list-issues.tests.json +0 -14
  488. package/nodes/jira-update-issue/jira-update-issue.tests.json +0 -12
  489. package/nodes/json-parser/json-parser.tests.json +0 -57
  490. package/nodes/json-stringifier/json-stringifier.tests.json +0 -58
  491. package/nodes/json-to-xml/json-to-xml.tests.json +0 -103
  492. package/nodes/json-to-yaml/json-to-yaml.tests.json +0 -110
  493. package/nodes/keep-bookends/keep-bookends.tests.json +0 -185
  494. package/nodes/less-than/less-than.tests.json +0 -47
  495. package/nodes/less-than-equal/less-than-equal.tests.json +0 -52
  496. package/nodes/linear-create-issue/linear-create-issue.tests.json +0 -14
  497. package/nodes/linear-list-issues/linear-list-issues.tests.json +0 -13
  498. package/nodes/linear-update-issue/linear-update-issue.tests.json +0 -13
  499. package/nodes/liquid-lfm-2-24b-a2b/liquid-lfm-2-24b-a2b.tests.json +0 -44
  500. package/nodes/liquid-lfm-2-5-1-2b-instruct-free/liquid-lfm-2-5-1-2b-instruct-free.tests.json +0 -44
  501. package/nodes/liquid-lfm-2-5-1-2b-thinking-free/liquid-lfm-2-5-1-2b-thinking-free.tests.json +0 -44
  502. package/nodes/loop-end/loop-end.tests.json +0 -139
  503. package/nodes/loop-start/loop-start.tests.json +0 -65
  504. package/nodes/mean/mean.tests.json +0 -45
  505. package/nodes/median/median.tests.json +0 -54
  506. package/nodes/merge-consecutive-roles/merge-consecutive-roles.tests.json +0 -199
  507. package/nodes/merge-messages/merge-messages.tests.json +0 -174
  508. package/nodes/message/message.tests.json +0 -85
  509. package/nodes/message-bus/message-bus.tests.json +0 -150
  510. package/nodes/message-role-swap/message-role-swap.tests.json +0 -197
  511. package/nodes/mistralai-codestral-2508/mistralai-codestral-2508.tests.json +0 -80
  512. package/nodes/mistralai-codestral-embed-2505/mistralai-codestral-embed-2505.tests.json +0 -48
  513. package/nodes/mistralai-devstral-2512/mistralai-devstral-2512.tests.json +0 -80
  514. package/nodes/mistralai-ministral-14b-2512/mistralai-ministral-14b-2512.tests.json +0 -80
  515. package/nodes/mistralai-ministral-3b-2512/mistralai-ministral-3b-2512.tests.json +0 -80
  516. package/nodes/mistralai-ministral-8b-2512/mistralai-ministral-8b-2512.tests.json +0 -80
  517. package/nodes/mistralai-mistral-embed-2312/mistralai-mistral-embed-2312.tests.json +0 -48
  518. package/nodes/mistralai-mistral-large/mistralai-mistral-large.tests.json +0 -80
  519. package/nodes/mistralai-mistral-large-2407/mistralai-mistral-large-2407.tests.json +0 -80
  520. package/nodes/mistralai-mistral-large-2512/mistralai-mistral-large-2512.tests.json +0 -80
  521. package/nodes/mistralai-mistral-medium-3/mistralai-mistral-medium-3.tests.json +0 -80
  522. package/nodes/mistralai-mistral-medium-3-1/mistralai-mistral-medium-3-1.tests.json +0 -80
  523. package/nodes/mistralai-mistral-medium-3-5/mistralai-mistral-medium-3-5.tests.json +0 -80
  524. package/nodes/mistralai-mistral-nemo/mistralai-mistral-nemo.tests.json +0 -80
  525. package/nodes/mistralai-mistral-saba/mistralai-mistral-saba.tests.json +0 -80
  526. package/nodes/mistralai-mistral-small-24b-instruct-2501/mistralai-mistral-small-24b-instruct-2501.tests.json +0 -44
  527. package/nodes/mistralai-mistral-small-2603/mistralai-mistral-small-2603.tests.json +0 -80
  528. package/nodes/mistralai-mistral-small-3-1-24b-instruct/mistralai-mistral-small-3-1-24b-instruct.tests.json +0 -44
  529. package/nodes/mistralai-mistral-small-3-2-24b-instruct/mistralai-mistral-small-3-2-24b-instruct.tests.json +0 -80
  530. package/nodes/mistralai-mixtral-8x22b-instruct/mistralai-mixtral-8x22b-instruct.tests.json +0 -80
  531. package/nodes/mistralai-voxtral-small-24b-2507/mistralai-voxtral-small-24b-2507.tests.json +0 -80
  532. package/nodes/mode/mode.tests.json +0 -53
  533. package/nodes/modulo/modulo.tests.json +0 -66
  534. package/nodes/multiply/multiply.tests.json +0 -42
  535. package/nodes/nand-gate/nand-gate.tests.json +0 -22
  536. package/nodes/newsdata-io-archive/newsdata-io-archive.tests.json +0 -68
  537. package/nodes/newsdata-io-latest/newsdata-io-latest.tests.json +0 -74
  538. package/nodes/newsdata-io-sources/newsdata-io-sources.tests.json +0 -53
  539. package/nodes/nor-gate/nor-gate.tests.json +0 -22
  540. package/nodes/normalize-whitespace/normalize-whitespace.tests.json +0 -76
  541. package/nodes/not-equals/not-equals.tests.json +0 -77
  542. package/nodes/notion-append-blocks/notion-append-blocks.tests.json +0 -80
  543. package/nodes/notion-archive-page/notion-archive-page.tests.json +0 -26
  544. package/nodes/notion-create-page/notion-create-page.tests.json +0 -92
  545. package/nodes/notion-get-blocks/notion-get-blocks.tests.json +0 -22
  546. package/nodes/notion-get-page/notion-get-page.tests.json +0 -14
  547. package/nodes/notion-query-database/notion-query-database.tests.json +0 -52
  548. package/nodes/notion-search/notion-search.tests.json +0 -46
  549. package/nodes/notion-update-page/notion-update-page.tests.json +0 -44
  550. package/nodes/null-bomb/null-bomb.tests.json +0 -83
  551. package/nodes/number/number.tests.json +0 -46
  552. package/nodes/nvidia-llama-nemotron-embed-vl-1b-v2-free/nvidia-llama-nemotron-embed-vl-1b-v2-free.tests.json +0 -48
  553. package/nodes/nvidia-llama-nemotron-rerank-vl-1b-v2-free/nvidia-llama-nemotron-rerank-vl-1b-v2-free.tests.json +0 -47
  554. package/nodes/object-merge/object-merge.tests.json +0 -158
  555. package/nodes/openai-gpt-3-5-turbo/openai-gpt-3-5-turbo.tests.json +0 -80
  556. package/nodes/openai-gpt-3-5-turbo-0613/openai-gpt-3-5-turbo-0613.tests.json +0 -80
  557. package/nodes/openai-gpt-3-5-turbo-16k/openai-gpt-3-5-turbo-16k.tests.json +0 -80
  558. package/nodes/openai-gpt-3-5-turbo-instruct/openai-gpt-3-5-turbo-instruct.tests.json +0 -80
  559. package/nodes/openai-gpt-4/openai-gpt-4.tests.json +0 -80
  560. package/nodes/openai-gpt-4-1/openai-gpt-4-1.tests.json +0 -80
  561. package/nodes/openai-gpt-4-1-mini/openai-gpt-4-1-mini.tests.json +0 -80
  562. package/nodes/openai-gpt-4-1-nano/openai-gpt-4-1-nano.tests.json +0 -80
  563. package/nodes/openai-gpt-4-1106-preview/openai-gpt-4-1106-preview.tests.json +0 -80
  564. package/nodes/openai-gpt-4-turbo/openai-gpt-4-turbo.tests.json +0 -80
  565. package/nodes/openai-gpt-4-turbo-preview/openai-gpt-4-turbo-preview.tests.json +0 -80
  566. package/nodes/openai-gpt-4o/openai-gpt-4o.tests.json +0 -80
  567. package/nodes/openai-gpt-4o-2024-05-13/openai-gpt-4o-2024-05-13.tests.json +0 -80
  568. package/nodes/openai-gpt-4o-2024-08-06/openai-gpt-4o-2024-08-06.tests.json +0 -80
  569. package/nodes/openai-gpt-4o-2024-11-20/openai-gpt-4o-2024-11-20.tests.json +0 -80
  570. package/nodes/openai-gpt-4o-mini/openai-gpt-4o-mini.tests.json +0 -80
  571. package/nodes/openai-gpt-4o-mini-2024-07-18/openai-gpt-4o-mini-2024-07-18.tests.json +0 -80
  572. package/nodes/openai-gpt-4o-mini-search-preview/openai-gpt-4o-mini-search-preview.tests.json +0 -26
  573. package/nodes/openai-gpt-4o-search-preview/openai-gpt-4o-search-preview.tests.json +0 -26
  574. package/nodes/openai-gpt-5/openai-gpt-5.tests.json +0 -57
  575. package/nodes/openai-gpt-5-1/openai-gpt-5-1.tests.json +0 -57
  576. package/nodes/openai-gpt-5-1-chat/openai-gpt-5-1-chat.tests.json +0 -57
  577. package/nodes/openai-gpt-5-1-codex/openai-gpt-5-1-codex.tests.json +0 -57
  578. package/nodes/openai-gpt-5-1-codex-max/openai-gpt-5-1-codex-max.tests.json +0 -57
  579. package/nodes/openai-gpt-5-1-codex-mini/openai-gpt-5-1-codex-mini.tests.json +0 -57
  580. package/nodes/openai-gpt-5-2/openai-gpt-5-2.tests.json +0 -57
  581. package/nodes/openai-gpt-5-2-chat/openai-gpt-5-2-chat.tests.json +0 -57
  582. package/nodes/openai-gpt-5-2-codex/openai-gpt-5-2-codex.tests.json +0 -57
  583. package/nodes/openai-gpt-5-2-pro/openai-gpt-5-2-pro.tests.json +0 -57
  584. package/nodes/openai-gpt-5-3-chat/openai-gpt-5-3-chat.tests.json +0 -57
  585. package/nodes/openai-gpt-5-3-codex/openai-gpt-5-3-codex.tests.json +0 -57
  586. package/nodes/openai-gpt-5-4/openai-gpt-5-4.tests.json +0 -57
  587. package/nodes/openai-gpt-5-4-image-2/openai-gpt-5-4-image-2.tests.json +0 -26
  588. package/nodes/openai-gpt-5-4-mini/openai-gpt-5-4-mini.tests.json +0 -57
  589. package/nodes/openai-gpt-5-4-nano/openai-gpt-5-4-nano.tests.json +0 -57
  590. package/nodes/openai-gpt-5-4-pro/openai-gpt-5-4-pro.tests.json +0 -57
  591. package/nodes/openai-gpt-5-5/openai-gpt-5-5.tests.json +0 -57
  592. package/nodes/openai-gpt-5-5-pro/openai-gpt-5-5-pro.tests.json +0 -57
  593. package/nodes/openai-gpt-5-chat/openai-gpt-5-chat.tests.json +0 -26
  594. package/nodes/openai-gpt-5-codex/openai-gpt-5-codex.tests.json +0 -57
  595. package/nodes/openai-gpt-5-image/openai-gpt-5-image.tests.json +0 -44
  596. package/nodes/openai-gpt-5-image-mini/openai-gpt-5-image-mini.tests.json +0 -44
  597. package/nodes/openai-gpt-5-mini/openai-gpt-5-mini.tests.json +0 -57
  598. package/nodes/openai-gpt-5-nano/openai-gpt-5-nano.tests.json +0 -57
  599. package/nodes/openai-gpt-5-pro/openai-gpt-5-pro.tests.json +0 -57
  600. package/nodes/openai-gpt-audio/openai-gpt-audio.tests.json +0 -80
  601. package/nodes/openai-gpt-audio-mini/openai-gpt-audio-mini.tests.json +0 -80
  602. package/nodes/openai-gpt-chat-latest/openai-gpt-chat-latest.tests.json +0 -57
  603. package/nodes/openai-gpt-oss-120b/openai-gpt-oss-120b.tests.json +0 -80
  604. package/nodes/openai-gpt-oss-120b-free/openai-gpt-oss-120b-free.tests.json +0 -80
  605. package/nodes/openai-gpt-oss-20b/openai-gpt-oss-20b.tests.json +0 -80
  606. package/nodes/openai-gpt-oss-20b-free/openai-gpt-oss-20b-free.tests.json +0 -80
  607. package/nodes/openai-gpt-oss-safeguard-20b/openai-gpt-oss-safeguard-20b.tests.json +0 -80
  608. package/nodes/openai-o1/openai-o1.tests.json +0 -57
  609. package/nodes/openai-o1-pro/openai-o1-pro.tests.json +0 -26
  610. package/nodes/openai-o3/openai-o3.tests.json +0 -57
  611. package/nodes/openai-o3-deep-research/openai-o3-deep-research.tests.json +0 -80
  612. package/nodes/openai-o3-mini/openai-o3-mini.tests.json +0 -57
  613. package/nodes/openai-o3-mini-high/openai-o3-mini-high.tests.json +0 -57
  614. package/nodes/openai-o3-pro/openai-o3-pro.tests.json +0 -57
  615. package/nodes/openai-o4-mini/openai-o4-mini.tests.json +0 -57
  616. package/nodes/openai-o4-mini-deep-research/openai-o4-mini-deep-research.tests.json +0 -80
  617. package/nodes/openai-o4-mini-high/openai-o4-mini-high.tests.json +0 -57
  618. package/nodes/openai-omni-moderation-latest/openai-omni-moderation-latest.tests.json +0 -103
  619. package/nodes/openai-text-embedding-3-large/openai-text-embedding-3-large.tests.json +0 -48
  620. package/nodes/openai-text-embedding-3-small/openai-text-embedding-3-small.tests.json +0 -48
  621. package/nodes/openai-text-embedding-ada-002/openai-text-embedding-ada-002.tests.json +0 -48
  622. package/nodes/or-gate/or-gate.tests.json +0 -22
  623. package/nodes/parse-url/parse-url.tests.json +0 -121
  624. package/nodes/perplexity-pplx-embed-v1-0-6b/perplexity-pplx-embed-v1-0-6b.tests.json +0 -48
  625. package/nodes/perplexity-pplx-embed-v1-4b/perplexity-pplx-embed-v1-4b.tests.json +0 -48
  626. package/nodes/perplexity-sonar/perplexity-sonar.tests.json +0 -44
  627. package/nodes/perplexity-sonar-deep-research/perplexity-sonar-deep-research.tests.json +0 -80
  628. package/nodes/perplexity-sonar-pro/perplexity-sonar-pro.tests.json +0 -44
  629. package/nodes/perplexity-sonar-pro-search/perplexity-sonar-pro-search.tests.json +0 -44
  630. package/nodes/perplexity-sonar-reasoning-pro/perplexity-sonar-reasoning-pro.tests.json +0 -80
  631. package/nodes/pinecone-query/pinecone-query.tests.json +0 -12
  632. package/nodes/pinecone-upsert/pinecone-upsert.tests.json +0 -13
  633. package/nodes/power/power.tests.json +0 -42
  634. package/nodes/prompt-injection-guard/prompt-injection-guard.tests.json +0 -205
  635. package/nodes/quartiles/quartiles.tests.json +0 -69
  636. package/nodes/qwen-qwen-2-5-72b-instruct/qwen-qwen-2-5-72b-instruct.tests.json +0 -80
  637. package/nodes/qwen-qwen-2-5-7b-instruct/qwen-qwen-2-5-7b-instruct.tests.json +0 -80
  638. package/nodes/qwen-qwen-2-5-coder-32b-instruct/qwen-qwen-2-5-coder-32b-instruct.tests.json +0 -80
  639. package/nodes/qwen-qwen-plus/qwen-qwen-plus.tests.json +0 -80
  640. package/nodes/qwen-qwen-plus-2025-07-28/qwen-qwen-plus-2025-07-28.tests.json +0 -80
  641. package/nodes/qwen-qwen-plus-2025-07-28-thinking/qwen-qwen-plus-2025-07-28-thinking.tests.json +0 -80
  642. package/nodes/qwen-qwen2-5-vl-72b-instruct/qwen-qwen2-5-vl-72b-instruct.tests.json +0 -44
  643. package/nodes/qwen-qwen3-14b/qwen-qwen3-14b.tests.json +0 -80
  644. package/nodes/qwen-qwen3-235b-a22b/qwen-qwen3-235b-a22b.tests.json +0 -80
  645. package/nodes/qwen-qwen3-235b-a22b-2507/qwen-qwen3-235b-a22b-2507.tests.json +0 -80
  646. package/nodes/qwen-qwen3-235b-a22b-thinking-2507/qwen-qwen3-235b-a22b-thinking-2507.tests.json +0 -80
  647. package/nodes/qwen-qwen3-30b-a3b/qwen-qwen3-30b-a3b.tests.json +0 -80
  648. package/nodes/qwen-qwen3-30b-a3b-instruct-2507/qwen-qwen3-30b-a3b-instruct-2507.tests.json +0 -80
  649. package/nodes/qwen-qwen3-30b-a3b-thinking-2507/qwen-qwen3-30b-a3b-thinking-2507.tests.json +0 -80
  650. package/nodes/qwen-qwen3-32b/qwen-qwen3-32b.tests.json +0 -80
  651. package/nodes/qwen-qwen3-5-122b-a10b/qwen-qwen3-5-122b-a10b.tests.json +0 -80
  652. package/nodes/qwen-qwen3-5-27b/qwen-qwen3-5-27b.tests.json +0 -80
  653. package/nodes/qwen-qwen3-5-35b-a3b/qwen-qwen3-5-35b-a3b.tests.json +0 -80
  654. package/nodes/qwen-qwen3-5-397b-a17b/qwen-qwen3-5-397b-a17b.tests.json +0 -80
  655. package/nodes/qwen-qwen3-5-9b/qwen-qwen3-5-9b.tests.json +0 -80
  656. package/nodes/qwen-qwen3-5-flash-02-23/qwen-qwen3-5-flash-02-23.tests.json +0 -80
  657. package/nodes/qwen-qwen3-5-plus-02-15/qwen-qwen3-5-plus-02-15.tests.json +0 -80
  658. package/nodes/qwen-qwen3-5-plus-20260420/qwen-qwen3-5-plus-20260420.tests.json +0 -80
  659. package/nodes/qwen-qwen3-6-27b/qwen-qwen3-6-27b.tests.json +0 -80
  660. package/nodes/qwen-qwen3-6-35b-a3b/qwen-qwen3-6-35b-a3b.tests.json +0 -80
  661. package/nodes/qwen-qwen3-6-flash/qwen-qwen3-6-flash.tests.json +0 -80
  662. package/nodes/qwen-qwen3-6-max-preview/qwen-qwen3-6-max-preview.tests.json +0 -80
  663. package/nodes/qwen-qwen3-6-plus/qwen-qwen3-6-plus.tests.json +0 -80
  664. package/nodes/qwen-qwen3-7-max/qwen-qwen3-7-max.tests.json +0 -80
  665. package/nodes/qwen-qwen3-7-plus/qwen-qwen3-7-plus.tests.json +0 -80
  666. package/nodes/qwen-qwen3-8b/qwen-qwen3-8b.tests.json +0 -80
  667. package/nodes/qwen-qwen3-coder/qwen-qwen3-coder.tests.json +0 -80
  668. package/nodes/qwen-qwen3-coder-30b-a3b-instruct/qwen-qwen3-coder-30b-a3b-instruct.tests.json +0 -80
  669. package/nodes/qwen-qwen3-coder-flash/qwen-qwen3-coder-flash.tests.json +0 -80
  670. package/nodes/qwen-qwen3-coder-free/qwen-qwen3-coder-free.tests.json +0 -80
  671. package/nodes/qwen-qwen3-coder-next/qwen-qwen3-coder-next.tests.json +0 -80
  672. package/nodes/qwen-qwen3-coder-plus/qwen-qwen3-coder-plus.tests.json +0 -80
  673. package/nodes/qwen-qwen3-embedding-4b/qwen-qwen3-embedding-4b.tests.json +0 -48
  674. package/nodes/qwen-qwen3-embedding-8b/qwen-qwen3-embedding-8b.tests.json +0 -48
  675. package/nodes/qwen-qwen3-max/qwen-qwen3-max.tests.json +0 -80
  676. package/nodes/qwen-qwen3-max-thinking/qwen-qwen3-max-thinking.tests.json +0 -80
  677. package/nodes/qwen-qwen3-next-80b-a3b-instruct/qwen-qwen3-next-80b-a3b-instruct.tests.json +0 -80
  678. package/nodes/qwen-qwen3-next-80b-a3b-instruct-free/qwen-qwen3-next-80b-a3b-instruct-free.tests.json +0 -80
  679. package/nodes/qwen-qwen3-next-80b-a3b-thinking/qwen-qwen3-next-80b-a3b-thinking.tests.json +0 -80
  680. package/nodes/qwen-qwen3-vl-235b-a22b-instruct/qwen-qwen3-vl-235b-a22b-instruct.tests.json +0 -80
  681. package/nodes/qwen-qwen3-vl-235b-a22b-thinking/qwen-qwen3-vl-235b-a22b-thinking.tests.json +0 -80
  682. package/nodes/qwen-qwen3-vl-30b-a3b-instruct/qwen-qwen3-vl-30b-a3b-instruct.tests.json +0 -80
  683. package/nodes/qwen-qwen3-vl-30b-a3b-thinking/qwen-qwen3-vl-30b-a3b-thinking.tests.json +0 -80
  684. package/nodes/qwen-qwen3-vl-32b-instruct/qwen-qwen3-vl-32b-instruct.tests.json +0 -80
  685. package/nodes/qwen-qwen3-vl-8b-instruct/qwen-qwen3-vl-8b-instruct.tests.json +0 -80
  686. package/nodes/qwen-qwen3-vl-8b-thinking/qwen-qwen3-vl-8b-thinking.tests.json +0 -80
  687. package/nodes/random-error/random-error.tests.json +0 -38
  688. package/nodes/random-number/random-number.tests.json +0 -59
  689. package/nodes/range/range.tests.json +0 -68
  690. package/nodes/resend-send-email/resend-send-email.tests.json +0 -14
  691. package/nodes/response-format/response-format.tests.json +0 -233
  692. package/nodes/round/round.tests.json +0 -38
  693. package/nodes/route/route.tests.json +0 -90
  694. package/nodes/self-healing-error/self-healing-error.tests.json +0 -34
  695. package/nodes/sendgrid-send-email/sendgrid-send-email.tests.json +0 -41
  696. package/nodes/sentence-transformers-all-minilm-l12-v2/sentence-transformers-all-minilm-l12-v2.tests.json +0 -48
  697. package/nodes/sentence-transformers-all-minilm-l6-v2/sentence-transformers-all-minilm-l6-v2.tests.json +0 -48
  698. package/nodes/sentence-transformers-all-mpnet-base-v2/sentence-transformers-all-mpnet-base-v2.tests.json +0 -48
  699. package/nodes/sentence-transformers-multi-qa-mpnet-base-dot-v1/sentence-transformers-multi-qa-mpnet-base-dot-v1.tests.json +0 -48
  700. package/nodes/sentence-transformers-paraphrase-minilm-l6-v2/sentence-transformers-paraphrase-minilm-l6-v2.tests.json +0 -48
  701. package/nodes/set-object-property/set-object-property.tests.json +0 -173
  702. package/nodes/simple-agent/simple-agent.tests.json +0 -28
  703. package/nodes/slack-send-message/slack-send-message.tests.json +0 -13
  704. package/nodes/split-into-chunks/split-into-chunks.tests.json +0 -74
  705. package/nodes/standard-deviation/standard-deviation.tests.json +0 -49
  706. package/nodes/string/string.tests.json +0 -56
  707. package/nodes/string-case/string-case.tests.json +0 -44
  708. package/nodes/string-concat/string-concat.tests.json +0 -12
  709. package/nodes/string-contains/string-contains.tests.json +0 -58
  710. package/nodes/string-length/string-length.tests.json +0 -22
  711. package/nodes/string-match/string-match.tests.json +0 -82
  712. package/nodes/string-replace/string-replace.tests.json +0 -62
  713. package/nodes/string-split/string-split.tests.json +0 -26
  714. package/nodes/string-substring/string-substring.tests.json +0 -44
  715. package/nodes/string-template/string-template.tests.json +0 -115
  716. package/nodes/string-trim/string-trim.tests.json +0 -38
  717. package/nodes/strip-html/strip-html.tests.json +0 -94
  718. package/nodes/stripe-list-customers/stripe-list-customers.tests.json +0 -24
  719. package/nodes/subtract/subtract.tests.json +0 -41
  720. package/nodes/supabase-query/supabase-query.tests.json +0 -14
  721. package/nodes/switch/switch.tests.json +0 -85
  722. package/nodes/system-prompt/system-prompt.tests.json +0 -113
  723. package/nodes/temperature/temperature.tests.json +0 -47
  724. package/nodes/text-scratch-pad/text-scratch-pad.tests.json +0 -131
  725. package/nodes/text-to-conversation/text-to-conversation.tests.json +0 -132
  726. package/nodes/thenlper-gte-base/thenlper-gte-base.tests.json +0 -48
  727. package/nodes/thenlper-gte-large/thenlper-gte-large.tests.json +0 -48
  728. package/nodes/throw-error/throw-error.tests.json +0 -44
  729. package/nodes/time-adder/time-adder.tests.json +0 -158
  730. package/nodes/timestamp/timestamp.tests.json +0 -90
  731. package/nodes/token-count/token-count.tests.json +0 -163
  732. package/nodes/tokenizer/tokenizer.tests.json +0 -129
  733. package/nodes/tool-cleanup/tool-cleanup.tests.json +0 -160
  734. package/nodes/truncate-by-tokens/truncate-by-tokens.tests.json +0 -84
  735. package/nodes/truncate-by-tokens-from-start/truncate-by-tokens-from-start.tests.json +0 -84
  736. package/nodes/truncate-by-tokens-preserve-system/truncate-by-tokens-preserve-system.tests.json +0 -144
  737. package/nodes/truncate-old-tool-responses/truncate-old-tool-responses.tests.json +0 -207
  738. package/nodes/truncate-text/truncate-text.tests.json +0 -115
  739. package/nodes/twilio-send-sms/twilio-send-sms.tests.json +0 -14
  740. package/nodes/untokenizer/untokenizer.tests.json +0 -83
  741. package/nodes/word-count/word-count.tests.json +0 -100
  742. package/nodes/x-ai-grok-4-20/x-ai-grok-4-20.tests.json +0 -80
  743. package/nodes/x-ai-grok-4-20-multi-agent/x-ai-grok-4-20-multi-agent.tests.json +0 -44
  744. package/nodes/x-ai-grok-4-3/x-ai-grok-4-3.tests.json +0 -80
  745. package/nodes/x-ai-grok-build-0-1/x-ai-grok-build-0-1.tests.json +0 -80
  746. package/nodes/xml-to-json/xml-to-json.tests.json +0 -113
  747. package/nodes/xnor-gate/xnor-gate.tests.json +0 -22
  748. package/nodes/xor-gate/xor-gate.tests.json +0 -22
  749. package/nodes/yaml-to-json/yaml-to-json.tests.json +0 -112
@@ -0,0 +1,194 @@
1
+ {
2
+ "display_name": "Google: Gemini 3.5 Flash Lite",
3
+ "tagline": "Generate text",
4
+ "description": "Gemini 3.5 Flash Lite is a high-efficiency model from Google with upgraded agentic capabilities. It is suited for subagents that execute focused tasks within complex, multi-agent workflows.",
5
+ "category": "llm",
6
+ "provider": "google",
7
+ "accepts_plugins": true,
8
+ "model_id": "google/gemini-3.5-flash-lite",
9
+ "context_length": 1048576,
10
+ "supported_parameters": [
11
+ "include_reasoning",
12
+ "max_tokens",
13
+ "reasoning",
14
+ "reasoning_effort",
15
+ "response_format",
16
+ "seed",
17
+ "stop",
18
+ "structured_outputs",
19
+ "temperature",
20
+ "tool_choice",
21
+ "tools",
22
+ "top_p"
23
+ ],
24
+ "inputs": [
25
+ {
26
+ "name": "messages",
27
+ "display_name": "Conversation",
28
+ "type": "conversation or message or string",
29
+ "description": "Array of chat messages that make up the conversation",
30
+ "required": true
31
+ },
32
+ {
33
+ "name": "system_prompt",
34
+ "display_name": "System Message",
35
+ "type": "message or string",
36
+ "description": "System prompt to instruct the model",
37
+ "default": null
38
+ },
39
+ {
40
+ "name": "tools",
41
+ "display_name": "Tools",
42
+ "type": "tool or array of tools",
43
+ "description": "Array of tools to use",
44
+ "default": null,
45
+ "allow_multiple": true
46
+ },
47
+ {
48
+ "name": "tool_choice",
49
+ "display_name": "Tool Choice",
50
+ "type": "string",
51
+ "description": "Tool selection control",
52
+ "default": null
53
+ },
54
+ {
55
+ "name": "reasoning",
56
+ "display_name": "Reasoning",
57
+ "type": "boolean",
58
+ "description": "Enable reasoning mode",
59
+ "default": null
60
+ },
61
+ {
62
+ "name": "response_format",
63
+ "display_name": "Response Format",
64
+ "type": "object",
65
+ "description": "Output format specification",
66
+ "default": null
67
+ },
68
+ {
69
+ "name": "stop",
70
+ "display_name": "Stop",
71
+ "type": "string or array",
72
+ "description": "Custom stop sequences",
73
+ "default": null
74
+ },
75
+ {
76
+ "name": "temperature",
77
+ "display_name": "Temperature",
78
+ "type": "number",
79
+ "description": "Controls randomness (0-2)",
80
+ "default": null
81
+ },
82
+ {
83
+ "name": "top_p",
84
+ "display_name": "Top P",
85
+ "type": "number",
86
+ "description": "Controls diversity via nucleus sampling",
87
+ "default": null
88
+ },
89
+ {
90
+ "name": "max_tokens",
91
+ "display_name": "Max Tokens",
92
+ "type": "number",
93
+ "description": "Maximum tokens to generate",
94
+ "default": null
95
+ },
96
+ {
97
+ "name": "seed",
98
+ "display_name": "Seed",
99
+ "type": "number",
100
+ "description": "Deterministic outputs",
101
+ "default": null
102
+ }
103
+ ],
104
+ "outputs": [
105
+ {
106
+ "name": "conversation",
107
+ "display_name": "Conversation",
108
+ "type": "conversation",
109
+ "can_stream": true,
110
+ "description": "An array of messages including any tool call & response messages as well as the final generated output."
111
+ },
112
+ {
113
+ "name": "content",
114
+ "display_name": "Content",
115
+ "can_stream": true,
116
+ "type": "string",
117
+ "description": "The content portion of the final generated response message."
118
+ },
119
+ {
120
+ "name": "message",
121
+ "display_name": "Final Message",
122
+ "type": "message",
123
+ "can_stream": true,
124
+ "description": "The final generated response message."
125
+ },
126
+ {
127
+ "name": "role",
128
+ "display_name": "Role",
129
+ "can_stream": true,
130
+ "type": "string",
131
+ "description": "Role of the response (usually 'assistant')"
132
+ },
133
+ {
134
+ "name": "tool_calls",
135
+ "display_name": "Tool Calls",
136
+ "type": "array of tools",
137
+ "description": "Tool calls made by the model"
138
+ },
139
+ {
140
+ "name": "usage",
141
+ "display_name": "Token Usage",
142
+ "type": "object",
143
+ "description": "Token usage statistics"
144
+ },
145
+ {
146
+ "name": "cost_total",
147
+ "display_name": "Total Cost",
148
+ "type": "number",
149
+ "description": "Total cost for processing this request (USD)"
150
+ },
151
+ {
152
+ "name": "cost_itemized",
153
+ "display_name": "Itemized Cost",
154
+ "type": "array",
155
+ "description": "Detailed breakdown of costs"
156
+ },
157
+ {
158
+ "name": "finish_reason",
159
+ "display_name": "Finish Reason",
160
+ "type": "string",
161
+ "description": "Why the completion finished"
162
+ },
163
+ {
164
+ "name": "reasoning",
165
+ "display_name": "Reasoning",
166
+ "type": "string",
167
+ "can_stream": true,
168
+ "description": "The detailed reasoning chain from the model"
169
+ },
170
+ {
171
+ "name": "refusal",
172
+ "display_name": "Refusal",
173
+ "type": "string",
174
+ "description": "Model refusal response (if any)"
175
+ }
176
+ ],
177
+ "pricing": {
178
+ "reference": "https://openrouter.ai/models",
179
+ "items": [
180
+ {
181
+ "key": "input_cost_per_million",
182
+ "label": "Input Tokens (per 1M)",
183
+ "cost": 0.3,
184
+ "currency": "USD"
185
+ },
186
+ {
187
+ "key": "output_cost_per_million",
188
+ "label": "Output Tokens (per 1M)",
189
+ "cost": 2.5,
190
+ "currency": "USD"
191
+ }
192
+ ]
193
+ }
194
+ }
@@ -0,0 +1,138 @@
1
+ export default async ({inputs, settings, config, nodeConfig}) => {
2
+ try {
3
+ // Get OpenRouter integration from engine
4
+ const openrouter = config.integrations?.openrouter;
5
+ if (!openrouter) {
6
+ throw new Error("OpenRouter integration not found");
7
+ }
8
+
9
+ let messages = inputs.messages;
10
+
11
+ if(typeof messages === 'string') {
12
+ messages = [{ role: 'user', content: messages }];
13
+ }
14
+
15
+ if(typeof messages === 'object' && !Array.isArray(messages)) {
16
+ messages = [messages];
17
+ }
18
+
19
+ if(inputs.system_prompt) {
20
+ let systemPrompt = inputs.system_prompt;
21
+ if(typeof systemPrompt === 'string') {
22
+ systemPrompt = { role: 'system', content: systemPrompt };
23
+ }
24
+ messages = [systemPrompt, ...messages];
25
+ }
26
+
27
+ // Build parameters object from config inputs
28
+ const params = {};
29
+ const configInputs = [{"name":"messages","display_name":"Conversation","type":"conversation or message or string","description":"Array of chat messages that make up the conversation","required":true},{"name":"system_prompt","display_name":"System Message","type":"message or string","description":"System prompt to instruct the model","default":null},{"name":"tools","display_name":"Tools","type":"tool or array of tools","description":"Array of tools to use","default":null,"allow_multiple":true},{"name":"tool_choice","display_name":"Tool Choice","type":"string","description":"Tool selection control","default":null},{"name":"reasoning","display_name":"Reasoning","type":"boolean","description":"Enable reasoning mode","default":null},{"name":"response_format","display_name":"Response Format","type":"object","description":"Output format specification","default":null},{"name":"stop","display_name":"Stop","type":"string or array","description":"Custom stop sequences","default":null},{"name":"temperature","display_name":"Temperature","type":"number","description":"Controls randomness (0-2)","default":null},{"name":"top_p","display_name":"Top P","type":"number","description":"Controls diversity via nucleus sampling","default":null},{"name":"max_tokens","display_name":"Max Tokens","type":"number","description":"Maximum tokens to generate","default":null},{"name":"seed","display_name":"Seed","type":"number","description":"Deterministic outputs","default":null}];
30
+
31
+ for (const input of configInputs) {
32
+
33
+ if(input.name === 'messages') continue;
34
+
35
+ const value = inputs[input.name];
36
+ if (value !== null && value !== undefined) {
37
+ // Flatten tools array to handle both individual tools and arrays of tools
38
+ if (input.name === 'tools' && Array.isArray(value)) {
39
+ params.tools = value.flat();
40
+ } else {
41
+ params[input.name] = value;
42
+ }
43
+ }
44
+ }
45
+
46
+
47
+
48
+ const response = await openrouter.chatCompletion({
49
+ model: "google/gemini-3.5-flash-lite",
50
+ messages: messages,
51
+ ...params
52
+ }, nodeConfig, config);
53
+
54
+ // Get the set of internal tool names (tools handled by engine plugins)
55
+ // If internal_tool_names is undefined, we're in backward-compatible mode (include all)
56
+ // If it's an empty array, there are no internal tools (include none from history)
57
+ const hasInternalToolTracking = config.internal_tool_names !== undefined;
58
+ const internalToolNames = new Set(config.internal_tool_names || []);
59
+
60
+ // Build conversation output: only include messages related to internal tools
61
+ let conversationMessages = [];
62
+
63
+ if (Array.isArray(messages) && messages.length > 0) {
64
+ // Work backwards from the end
65
+ for (let i = messages.length - 1; i >= 0; i--) {
66
+ const msg = messages[i];
67
+ if (!msg || typeof msg !== 'object') continue;
68
+
69
+ const isTool = msg.role === 'tool';
70
+ const hasToolCalls = msg.tool_calls && Array.isArray(msg.tool_calls) && msg.tool_calls.length > 0;
71
+
72
+ if (isTool) {
73
+ // Only include tool result if it's for an internal tool
74
+ const toolName = msg.name;
75
+ if (!hasInternalToolTracking || internalToolNames.has(toolName)) {
76
+ conversationMessages.unshift(msg);
77
+ }
78
+ // Skip external tool results
79
+ } else if (hasToolCalls) {
80
+ // Filter to only internal tool calls
81
+ const internalCalls = !hasInternalToolTracking
82
+ ? msg.tool_calls
83
+ : msg.tool_calls.filter(tc => internalToolNames.has(tc.function?.name));
84
+
85
+ if (internalCalls.length > 0) {
86
+ conversationMessages.unshift({
87
+ ...msg,
88
+ tool_calls: internalCalls
89
+ });
90
+ }
91
+ // External tool calls from history are dropped
92
+ } else {
93
+ // Stop when we hit a message that is not tool and has no tool_calls
94
+ break;
95
+ }
96
+ }
97
+ }
98
+
99
+ // Append the final output message — always include all tool_calls on the response
100
+ // The internal/external split only applies to historical messages above, not the fresh response
101
+ const finalMessage = {
102
+ content: response.content,
103
+ role: response.role
104
+ };
105
+
106
+ if (response.tool_calls && Array.isArray(response.tool_calls) && response.tool_calls.length > 0) {
107
+ finalMessage.tool_calls = response.tool_calls;
108
+ }
109
+
110
+ if (response.images) {
111
+ finalMessage.images = response.images;
112
+ }
113
+ conversationMessages.push(finalMessage);
114
+
115
+ const conversation = conversationMessages;
116
+
117
+ return {
118
+ conversation: conversation,
119
+ message: {
120
+ content: response.content,
121
+ role: response.role,
122
+ tool_calls: response.tool_calls
123
+ },
124
+ content: response.content,
125
+ role: response.role,
126
+ tool_calls: response.tool_calls,
127
+ reasoning: response.reasoning,
128
+ refusal: response.refusal,
129
+ finish_reason: response.finish_reason,
130
+ usage: response.usage,
131
+ cost_total: response.cost_total,
132
+ cost_itemized: response.cost_itemized
133
+ };
134
+ } catch (error) {
135
+ console.log('error', error);
136
+ throw new Error(`Google: Gemini 3.5 Flash Lite node error: ${error.message}`);
137
+ }
138
+ };
@@ -0,0 +1,194 @@
1
+ {
2
+ "display_name": "Google: Gemini 3.6 Flash",
3
+ "tagline": "Generate text",
4
+ "description": "Gemini 3.6 Flash is a high-efficiency model from Google for coding, agentic workflows, and web and app development. It is designed to produce polished outputs with fewer unnecessary edits and...",
5
+ "category": "llm",
6
+ "provider": "google",
7
+ "accepts_plugins": true,
8
+ "model_id": "google/gemini-3.6-flash",
9
+ "context_length": 1048576,
10
+ "supported_parameters": [
11
+ "include_reasoning",
12
+ "max_tokens",
13
+ "reasoning",
14
+ "reasoning_effort",
15
+ "response_format",
16
+ "seed",
17
+ "stop",
18
+ "structured_outputs",
19
+ "temperature",
20
+ "tool_choice",
21
+ "tools",
22
+ "top_p"
23
+ ],
24
+ "inputs": [
25
+ {
26
+ "name": "messages",
27
+ "display_name": "Conversation",
28
+ "type": "conversation or message or string",
29
+ "description": "Array of chat messages that make up the conversation",
30
+ "required": true
31
+ },
32
+ {
33
+ "name": "system_prompt",
34
+ "display_name": "System Message",
35
+ "type": "message or string",
36
+ "description": "System prompt to instruct the model",
37
+ "default": null
38
+ },
39
+ {
40
+ "name": "tools",
41
+ "display_name": "Tools",
42
+ "type": "tool or array of tools",
43
+ "description": "Array of tools to use",
44
+ "default": null,
45
+ "allow_multiple": true
46
+ },
47
+ {
48
+ "name": "tool_choice",
49
+ "display_name": "Tool Choice",
50
+ "type": "string",
51
+ "description": "Tool selection control",
52
+ "default": null
53
+ },
54
+ {
55
+ "name": "reasoning",
56
+ "display_name": "Reasoning",
57
+ "type": "boolean",
58
+ "description": "Enable reasoning mode",
59
+ "default": null
60
+ },
61
+ {
62
+ "name": "response_format",
63
+ "display_name": "Response Format",
64
+ "type": "object",
65
+ "description": "Output format specification",
66
+ "default": null
67
+ },
68
+ {
69
+ "name": "stop",
70
+ "display_name": "Stop",
71
+ "type": "string or array",
72
+ "description": "Custom stop sequences",
73
+ "default": null
74
+ },
75
+ {
76
+ "name": "temperature",
77
+ "display_name": "Temperature",
78
+ "type": "number",
79
+ "description": "Controls randomness (0-2)",
80
+ "default": null
81
+ },
82
+ {
83
+ "name": "top_p",
84
+ "display_name": "Top P",
85
+ "type": "number",
86
+ "description": "Controls diversity via nucleus sampling",
87
+ "default": null
88
+ },
89
+ {
90
+ "name": "max_tokens",
91
+ "display_name": "Max Tokens",
92
+ "type": "number",
93
+ "description": "Maximum tokens to generate",
94
+ "default": null
95
+ },
96
+ {
97
+ "name": "seed",
98
+ "display_name": "Seed",
99
+ "type": "number",
100
+ "description": "Deterministic outputs",
101
+ "default": null
102
+ }
103
+ ],
104
+ "outputs": [
105
+ {
106
+ "name": "conversation",
107
+ "display_name": "Conversation",
108
+ "type": "conversation",
109
+ "can_stream": true,
110
+ "description": "An array of messages including any tool call & response messages as well as the final generated output."
111
+ },
112
+ {
113
+ "name": "content",
114
+ "display_name": "Content",
115
+ "can_stream": true,
116
+ "type": "string",
117
+ "description": "The content portion of the final generated response message."
118
+ },
119
+ {
120
+ "name": "message",
121
+ "display_name": "Final Message",
122
+ "type": "message",
123
+ "can_stream": true,
124
+ "description": "The final generated response message."
125
+ },
126
+ {
127
+ "name": "role",
128
+ "display_name": "Role",
129
+ "can_stream": true,
130
+ "type": "string",
131
+ "description": "Role of the response (usually 'assistant')"
132
+ },
133
+ {
134
+ "name": "tool_calls",
135
+ "display_name": "Tool Calls",
136
+ "type": "array of tools",
137
+ "description": "Tool calls made by the model"
138
+ },
139
+ {
140
+ "name": "usage",
141
+ "display_name": "Token Usage",
142
+ "type": "object",
143
+ "description": "Token usage statistics"
144
+ },
145
+ {
146
+ "name": "cost_total",
147
+ "display_name": "Total Cost",
148
+ "type": "number",
149
+ "description": "Total cost for processing this request (USD)"
150
+ },
151
+ {
152
+ "name": "cost_itemized",
153
+ "display_name": "Itemized Cost",
154
+ "type": "array",
155
+ "description": "Detailed breakdown of costs"
156
+ },
157
+ {
158
+ "name": "finish_reason",
159
+ "display_name": "Finish Reason",
160
+ "type": "string",
161
+ "description": "Why the completion finished"
162
+ },
163
+ {
164
+ "name": "reasoning",
165
+ "display_name": "Reasoning",
166
+ "type": "string",
167
+ "can_stream": true,
168
+ "description": "The detailed reasoning chain from the model"
169
+ },
170
+ {
171
+ "name": "refusal",
172
+ "display_name": "Refusal",
173
+ "type": "string",
174
+ "description": "Model refusal response (if any)"
175
+ }
176
+ ],
177
+ "pricing": {
178
+ "reference": "https://openrouter.ai/models",
179
+ "items": [
180
+ {
181
+ "key": "input_cost_per_million",
182
+ "label": "Input Tokens (per 1M)",
183
+ "cost": 0.75,
184
+ "currency": "USD"
185
+ },
186
+ {
187
+ "key": "output_cost_per_million",
188
+ "label": "Output Tokens (per 1M)",
189
+ "cost": 3.75,
190
+ "currency": "USD"
191
+ }
192
+ ]
193
+ }
194
+ }
@@ -0,0 +1,138 @@
1
+ export default async ({inputs, settings, config, nodeConfig}) => {
2
+ try {
3
+ // Get OpenRouter integration from engine
4
+ const openrouter = config.integrations?.openrouter;
5
+ if (!openrouter) {
6
+ throw new Error("OpenRouter integration not found");
7
+ }
8
+
9
+ let messages = inputs.messages;
10
+
11
+ if(typeof messages === 'string') {
12
+ messages = [{ role: 'user', content: messages }];
13
+ }
14
+
15
+ if(typeof messages === 'object' && !Array.isArray(messages)) {
16
+ messages = [messages];
17
+ }
18
+
19
+ if(inputs.system_prompt) {
20
+ let systemPrompt = inputs.system_prompt;
21
+ if(typeof systemPrompt === 'string') {
22
+ systemPrompt = { role: 'system', content: systemPrompt };
23
+ }
24
+ messages = [systemPrompt, ...messages];
25
+ }
26
+
27
+ // Build parameters object from config inputs
28
+ const params = {};
29
+ const configInputs = [{"name":"messages","display_name":"Conversation","type":"conversation or message or string","description":"Array of chat messages that make up the conversation","required":true},{"name":"system_prompt","display_name":"System Message","type":"message or string","description":"System prompt to instruct the model","default":null},{"name":"tools","display_name":"Tools","type":"tool or array of tools","description":"Array of tools to use","default":null,"allow_multiple":true},{"name":"tool_choice","display_name":"Tool Choice","type":"string","description":"Tool selection control","default":null},{"name":"reasoning","display_name":"Reasoning","type":"boolean","description":"Enable reasoning mode","default":null},{"name":"response_format","display_name":"Response Format","type":"object","description":"Output format specification","default":null},{"name":"stop","display_name":"Stop","type":"string or array","description":"Custom stop sequences","default":null},{"name":"temperature","display_name":"Temperature","type":"number","description":"Controls randomness (0-2)","default":null},{"name":"top_p","display_name":"Top P","type":"number","description":"Controls diversity via nucleus sampling","default":null},{"name":"max_tokens","display_name":"Max Tokens","type":"number","description":"Maximum tokens to generate","default":null},{"name":"seed","display_name":"Seed","type":"number","description":"Deterministic outputs","default":null}];
30
+
31
+ for (const input of configInputs) {
32
+
33
+ if(input.name === 'messages') continue;
34
+
35
+ const value = inputs[input.name];
36
+ if (value !== null && value !== undefined) {
37
+ // Flatten tools array to handle both individual tools and arrays of tools
38
+ if (input.name === 'tools' && Array.isArray(value)) {
39
+ params.tools = value.flat();
40
+ } else {
41
+ params[input.name] = value;
42
+ }
43
+ }
44
+ }
45
+
46
+
47
+
48
+ const response = await openrouter.chatCompletion({
49
+ model: "google/gemini-3.6-flash",
50
+ messages: messages,
51
+ ...params
52
+ }, nodeConfig, config);
53
+
54
+ // Get the set of internal tool names (tools handled by engine plugins)
55
+ // If internal_tool_names is undefined, we're in backward-compatible mode (include all)
56
+ // If it's an empty array, there are no internal tools (include none from history)
57
+ const hasInternalToolTracking = config.internal_tool_names !== undefined;
58
+ const internalToolNames = new Set(config.internal_tool_names || []);
59
+
60
+ // Build conversation output: only include messages related to internal tools
61
+ let conversationMessages = [];
62
+
63
+ if (Array.isArray(messages) && messages.length > 0) {
64
+ // Work backwards from the end
65
+ for (let i = messages.length - 1; i >= 0; i--) {
66
+ const msg = messages[i];
67
+ if (!msg || typeof msg !== 'object') continue;
68
+
69
+ const isTool = msg.role === 'tool';
70
+ const hasToolCalls = msg.tool_calls && Array.isArray(msg.tool_calls) && msg.tool_calls.length > 0;
71
+
72
+ if (isTool) {
73
+ // Only include tool result if it's for an internal tool
74
+ const toolName = msg.name;
75
+ if (!hasInternalToolTracking || internalToolNames.has(toolName)) {
76
+ conversationMessages.unshift(msg);
77
+ }
78
+ // Skip external tool results
79
+ } else if (hasToolCalls) {
80
+ // Filter to only internal tool calls
81
+ const internalCalls = !hasInternalToolTracking
82
+ ? msg.tool_calls
83
+ : msg.tool_calls.filter(tc => internalToolNames.has(tc.function?.name));
84
+
85
+ if (internalCalls.length > 0) {
86
+ conversationMessages.unshift({
87
+ ...msg,
88
+ tool_calls: internalCalls
89
+ });
90
+ }
91
+ // External tool calls from history are dropped
92
+ } else {
93
+ // Stop when we hit a message that is not tool and has no tool_calls
94
+ break;
95
+ }
96
+ }
97
+ }
98
+
99
+ // Append the final output message — always include all tool_calls on the response
100
+ // The internal/external split only applies to historical messages above, not the fresh response
101
+ const finalMessage = {
102
+ content: response.content,
103
+ role: response.role
104
+ };
105
+
106
+ if (response.tool_calls && Array.isArray(response.tool_calls) && response.tool_calls.length > 0) {
107
+ finalMessage.tool_calls = response.tool_calls;
108
+ }
109
+
110
+ if (response.images) {
111
+ finalMessage.images = response.images;
112
+ }
113
+ conversationMessages.push(finalMessage);
114
+
115
+ const conversation = conversationMessages;
116
+
117
+ return {
118
+ conversation: conversation,
119
+ message: {
120
+ content: response.content,
121
+ role: response.role,
122
+ tool_calls: response.tool_calls
123
+ },
124
+ content: response.content,
125
+ role: response.role,
126
+ tool_calls: response.tool_calls,
127
+ reasoning: response.reasoning,
128
+ refusal: response.refusal,
129
+ finish_reason: response.finish_reason,
130
+ usage: response.usage,
131
+ cost_total: response.cost_total,
132
+ cost_itemized: response.cost_itemized
133
+ };
134
+ } catch (error) {
135
+ console.log('error', error);
136
+ throw new Error(`Google: Gemini 3.6 Flash node error: ${error.message}`);
137
+ }
138
+ };