@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,139 @@
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":"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},{"name":"logprobs","display_name":"Logprobs","type":"boolean","description":"Return log probabilities of the output tokens","default":null},{"name":"top_logprobs","display_name":"Top Logprobs","type":"number","description":"Number of most likely tokens to return at each position (0-20). Requires logprobs to be enabled.","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: "x-ai/grok-4.7",
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
+ logprobs: response.logprobs,
130
+ finish_reason: response.finish_reason,
131
+ usage: response.usage,
132
+ cost_total: response.cost_total,
133
+ cost_itemized: response.cost_itemized
134
+ };
135
+ } catch (error) {
136
+ console.log('error', error);
137
+ throw new Error(`SpaceXAI: Grok 4.7 node error: ${error.message}`);
138
+ }
139
+ };
@@ -1,22 +1,19 @@
1
1
  {
2
- "display_name": "xAI: Grok Build 0.1",
2
+ "display_name": "SpaceXAI: Grok Build 0.1",
3
3
  "tagline": "Generate text",
4
- "description": "Grok Build 0.1 is xAI’s fast coding model trained specifically for agentic software engineering workflows. It supports text and image inputs with text output, and is optimized for interactive coding...",
4
+ "description": "Grok Build 0.1 is SpaceXAI’s fast coding model trained specifically for agentic software engineering workflows. It supports text and image inputs with text output, and is optimized for interactive coding...",
5
5
  "category": "llm",
6
6
  "provider": "x-ai",
7
7
  "accepts_plugins": true,
8
8
  "model_id": "x-ai/grok-build-0.1",
9
9
  "context_length": 256000,
10
10
  "supported_parameters": [
11
- "frequency_penalty",
12
11
  "include_reasoning",
13
12
  "logprobs",
14
13
  "max_tokens",
15
- "presence_penalty",
16
14
  "reasoning",
17
15
  "response_format",
18
16
  "seed",
19
- "stop",
20
17
  "structured_outputs",
21
18
  "temperature",
22
19
  "tool_choice",
@@ -68,13 +65,6 @@
68
65
  "description": "Output format specification",
69
66
  "default": null
70
67
  },
71
- {
72
- "name": "stop",
73
- "display_name": "Stop",
74
- "type": "string or array",
75
- "description": "Custom stop sequences",
76
- "default": null
77
- },
78
68
  {
79
69
  "name": "temperature",
80
70
  "display_name": "Temperature",
@@ -96,20 +86,6 @@
96
86
  "description": "Maximum tokens to generate",
97
87
  "default": null
98
88
  },
99
- {
100
- "name": "frequency_penalty",
101
- "display_name": "Frequency Penalty",
102
- "type": "number",
103
- "description": "Reduces repetition (-2 to 2)",
104
- "default": null
105
- },
106
- {
107
- "name": "presence_penalty",
108
- "display_name": "Presence Penalty",
109
- "type": "number",
110
- "description": "Encourages new topics (-2 to 2)",
111
- "default": null
112
- },
113
89
  {
114
90
  "name": "seed",
115
91
  "display_name": "Seed",
@@ -26,7 +26,7 @@ export default async ({inputs, settings, config, nodeConfig}) => {
26
26
 
27
27
  // Build parameters object from config inputs
28
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":"frequency_penalty","display_name":"Frequency Penalty","type":"number","description":"Reduces repetition (-2 to 2)","default":null},{"name":"presence_penalty","display_name":"Presence Penalty","type":"number","description":"Encourages new topics (-2 to 2)","default":null},{"name":"seed","display_name":"Seed","type":"number","description":"Deterministic outputs","default":null},{"name":"logprobs","display_name":"Logprobs","type":"boolean","description":"Return log probabilities of the output tokens","default":null},{"name":"top_logprobs","display_name":"Top Logprobs","type":"number","description":"Number of most likely tokens to return at each position (0-20). Requires logprobs to be enabled.","default":null}];
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":"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},{"name":"logprobs","display_name":"Logprobs","type":"boolean","description":"Return log probabilities of the output tokens","default":null},{"name":"top_logprobs","display_name":"Top Logprobs","type":"number","description":"Number of most likely tokens to return at each position (0-20). Requires logprobs to be enabled.","default":null}];
30
30
 
31
31
  for (const input of configInputs) {
32
32
 
@@ -134,6 +134,6 @@ export default async ({inputs, settings, config, nodeConfig}) => {
134
134
  };
135
135
  } catch (error) {
136
136
  console.log('error', error);
137
- throw new Error(`xAI: Grok Build 0.1 node error: ${error.message}`);
137
+ throw new Error(`SpaceXAI: Grok Build 0.1 node error: ${error.message}`);
138
138
  }
139
139
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerowidth/workbench-sdk",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "dependencies": {
5
5
  "adm-zip": "^0.5.16",
6
6
  "ajv": "^8.17.1",
@@ -16,11 +16,17 @@
16
16
  "url": "https://github.com/zerowidth-ai/workbench-sdk.git",
17
17
  "directory": "sdks/nodejs"
18
18
  },
19
- "description": "Workbench SDK \u2014 execute Workbench-authored flows in production. Successor to the zv1 package; see https://zerowidth.ai for the design surface.",
19
+ "homepage": "https://github.com/zerowidth-ai/workbench-sdk#readme",
20
+ "bugs": "https://github.com/zerowidth-ai/workbench-sdk/issues",
21
+ "description": "Workbench SDK — execute Workbench-authored flows in production. Successor to the zv1 package; see https://zerowidth.ai for the design surface.",
20
22
  "main": "./src/index.js",
23
+ "exports": {
24
+ ".": "./src/index.js"
25
+ },
21
26
  "files": [
22
27
  "src/",
23
28
  "nodes/",
29
+ "!nodes/**/*.tests.json",
24
30
  "types/",
25
31
  "LICENSE",
26
32
  "README.md"
@@ -35,6 +41,7 @@
35
41
  "dotenv": "^17.2.2"
36
42
  },
37
43
  "scripts": {
44
+ "test": "node tests/test.all-nodes.js",
38
45
  "test-nodes": "node tests/test.all-nodes.js",
39
46
  "test-flows": "node tests/test.flows.js",
40
47
  "test-flow": "node tests/test.flows.js",
@@ -536,6 +536,11 @@ export default class OpenRouterIntegration {
536
536
  if (totalWeight > 0) {
537
537
  inputCost = totalCost * (inputWeight / totalWeight);
538
538
  outputCost = totalCost * (outputWeight / totalWeight);
539
+ } else if (promptTokens + completionTokens > 0) {
540
+ // Baked pricing has no usable rates (e.g. router models, whose price
541
+ // depends on the model they pick): apportion by token count instead
542
+ inputCost = totalCost * (promptTokens / (promptTokens + completionTokens));
543
+ outputCost = totalCost - inputCost;
539
544
  } else {
540
545
  // No token-weighted basis (e.g. rerank): attribute everything to one line
541
546
  inputCost = totalCost;
@@ -772,4 +777,112 @@ export default class OpenRouterIntegration {
772
777
  throw new Error(error.message);
773
778
  }
774
779
  }
775
- }
780
+
781
+ /**
782
+ * Ask typed questions about a state via OpenRouter's System One endpoint
783
+ * (/systemone) — the "decisions" output modality used by TypeSafe's Jev and
784
+ * other System One-compatible models (Upstage Solar Decide, Respan Span-01,
785
+ * Kev, ...). Not a chat endpoint: the request is { model, state, questions }
786
+ * and the response is { model, answers, usage }, one typed answer per
787
+ * question id (noul / choice / score).
788
+ *
789
+ * @param {Object} params - { model, state, questions }
790
+ * `state` may be a string, object, or array. `questions` is a map of
791
+ * question id -> { type: 'noul'|'choice'|'score', instructions, criteria? }.
792
+ * @param {Object} nodeConfig - node config (provides `pricing` for cost calc)
793
+ * @param {Object} engineConfig - engine config (for API call events)
794
+ * @returns {Promise<Object>} { answers, model, usage, cost_total, cost_itemized }
795
+ */
796
+ async systemOne(params, nodeConfig = null, engineConfig = null) {
797
+ const { model, state, questions } = params;
798
+
799
+ if (state === null || state === undefined) {
800
+ throw new Error('state is required for System One requests');
801
+ }
802
+ if (!questions || typeof questions !== 'object' || Array.isArray(questions) || Object.keys(questions).length === 0) {
803
+ throw new Error('questions must be a non-empty object mapping question ids to { type, instructions, criteria }');
804
+ }
805
+
806
+ const payload = { model, state, questions };
807
+
808
+ const url = `${this.client.baseURL}/systemone`;
809
+ const headers = {
810
+ 'Content-Type': 'application/json',
811
+ 'HTTP-Referer': this.client._options?.defaultHeaders?.['HTTP-Referer'] || 'https://workbench.zerowidth.ai',
812
+ 'X-Title': this.client._options?.defaultHeaders?.['X-Title'] || 'Workbench by ZeroWidth',
813
+ 'Authorization': `Bearer ${this.client._options?.apiKey || ''}`
814
+ };
815
+
816
+ const apiCallStartTime = Date.now();
817
+
818
+ try {
819
+ const res = await fetch(url, {
820
+ method: 'POST',
821
+ headers,
822
+ body: JSON.stringify(payload),
823
+ signal: engineConfig?.signal || this._engineConfig?.signal,
824
+ });
825
+
826
+ if (!res.ok) {
827
+ const errorBody = await res.json().catch(() => null);
828
+ const detail = errorBody?.error?.message || errorBody?.detail;
829
+ const errorMessage = typeof detail === 'string' ? detail : (detail ? JSON.stringify(detail) : `HTTP ${res.status}`);
830
+ throw new Error(`OpenRouter API Error (${res.status}): ${errorMessage}`);
831
+ }
832
+
833
+ const data = await res.json();
834
+
835
+ // System One usage is { input_tokens, output_tokens, cost }; normalize
836
+ // to the chat-style token names used across workbench.
837
+ const promptTokens = data.usage?.input_tokens || 0;
838
+ const completionTokens = data.usage?.output_tokens || 0;
839
+ const usage = {
840
+ prompt_tokens: promptTokens,
841
+ completion_tokens: completionTokens,
842
+ total_tokens: promptTokens + completionTokens
843
+ };
844
+
845
+ let costData = null;
846
+ if (nodeConfig) {
847
+ costData = this.buildCostData({ ...usage, cost: data.usage?.cost }, nodeConfig.pricing);
848
+ }
849
+
850
+ const result = {
851
+ answers: data.answers || {},
852
+ model: data.model || model,
853
+ usage,
854
+ ...(costData && {
855
+ cost_total: costData.totalCost,
856
+ cost_itemized: costData.itemizedCosts
857
+ }),
858
+ };
859
+
860
+ await emitAPICallEvent(engineConfig || this._engineConfig, {
861
+ timestamp: apiCallStartTime,
862
+ integration: 'openrouter',
863
+ nodeId: nodeConfig?.id || null,
864
+ nodeType: nodeConfig?.type || null,
865
+ request: { method: 'POST', url, headers, body: payload },
866
+ response: { status: res.status, statusText: res.statusText, body: result },
867
+ duration: Date.now() - apiCallStartTime,
868
+ error: null
869
+ });
870
+
871
+ return result;
872
+ } catch (error) {
873
+ await emitAPICallEvent(engineConfig || this._engineConfig, {
874
+ timestamp: apiCallStartTime,
875
+ integration: 'openrouter',
876
+ nodeId: nodeConfig?.id || null,
877
+ nodeType: nodeConfig?.type || null,
878
+ request: { method: 'POST', url, headers, body: payload },
879
+ response: { status: error.status || 0, statusText: 'Error', body: null },
880
+ duration: Date.now() - apiCallStartTime,
881
+ error: { message: error.message }
882
+ });
883
+
884
+ console.error('OpenRouter System One Error:', error.message);
885
+ throw new Error(error.message);
886
+ }
887
+ }
888
+ }
@@ -1,38 +0,0 @@
1
- [
2
- {
3
- "description": "Positive number",
4
- "inputs": {
5
- "number": 5.7
6
- },
7
- "expected": {
8
- "result": 5.7
9
- }
10
- },
11
- {
12
- "description": "Negative number",
13
- "inputs": {
14
- "number": -3.2
15
- },
16
- "expected": {
17
- "result": 3.2
18
- }
19
- },
20
- {
21
- "description": "Zero",
22
- "inputs": {
23
- "number": 0
24
- },
25
- "expected": {
26
- "result": 0
27
- }
28
- },
29
- {
30
- "description": "Large negative",
31
- "inputs": {
32
- "number": -999999
33
- },
34
- "expected": {
35
- "result": 999999
36
- }
37
- }
38
- ]
@@ -1,17 +0,0 @@
1
- [
2
- {
3
- "description": "Absolute-value of a positive number",
4
- "inputs": { "input": 5 },
5
- "expected": { "output": 5 }
6
- },
7
- {
8
- "description": "Absolute-value of a negative number",
9
- "inputs": { "input": -5 },
10
- "expected": { "output": 5 }
11
- },
12
- {
13
- "description": "Absolute-value of zero",
14
- "inputs": { "input": 0 },
15
- "expected": { "output": 0 }
16
- }
17
- ]
@@ -1,41 +0,0 @@
1
- [
2
- {
3
- "description": "Add positive numbers",
4
- "inputs": {
5
- "a": 5,
6
- "b": 3
7
- },
8
- "expected": {
9
- "result": 8
10
- }
11
- },
12
- {
13
- "description": "Add negative numbers",
14
- "inputs": {
15
- "a": -2,
16
- "b": -4
17
- },
18
- "expected": {
19
- "result": -6
20
- }
21
- },
22
- {
23
- "description": "Add decimals",
24
- "inputs": {
25
- "a": 1.5,
26
- "b": 2.7
27
- },
28
- "expected": {
29
- "result": 4.2
30
- }
31
- },
32
- {
33
- "description": "Handle missing inputs",
34
- "inputs": {
35
- "a": 5
36
- },
37
- "expected": {
38
- "result": 5
39
- }
40
- }
41
- ]
@@ -1,50 +0,0 @@
1
- [
2
- {
3
- "description": "Create record with Name field",
4
- "inputs": {
5
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
6
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
7
- "fields": {
8
- "Name": "Test Record from CI"
9
- }
10
- },
11
- "expected": {
12
- "record": "object",
13
- "id": "string",
14
- "fields": "object",
15
- "created_time": "string"
16
- }
17
- },
18
- {
19
- "description": "Create record with all fields",
20
- "inputs": {
21
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
22
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
23
- "fields": {
24
- "Name": "Full Test Record",
25
- "Status": "Active",
26
- "Count": 42
27
- }
28
- },
29
- "expected": {
30
- "record": "object",
31
- "id": "string",
32
- "fields": "object"
33
- }
34
- },
35
- {
36
- "description": "Create with typecast enabled",
37
- "inputs": {
38
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
39
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
40
- "fields": {
41
- "Name": "Typecast Test",
42
- "Count": "99"
43
- },
44
- "typecast": true
45
- },
46
- "expected": {
47
- "id": "string"
48
- }
49
- }
50
- ]
@@ -1,23 +0,0 @@
1
- [
2
- {
3
- "description": "Delete existing record",
4
- "inputs": {
5
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
6
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
7
- "record_id": "${AIRTABLE_TEST_RECORD_TO_DELETE}"
8
- },
9
- "expected": {
10
- "deleted": true,
11
- "record_id": "string"
12
- }
13
- },
14
- {
15
- "description": "Error on invalid record ID",
16
- "inputs": {
17
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
18
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
19
- "record_id": "recINVALIDXXXXXX"
20
- },
21
- "expectedError": "Airtable API error"
22
- }
23
- ]
@@ -1,25 +0,0 @@
1
- [
2
- {
3
- "description": "Get record by ID",
4
- "inputs": {
5
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
6
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
7
- "record_id": "${AIRTABLE_TEST_RECORD_ID}"
8
- },
9
- "expected": {
10
- "record": "object",
11
- "id": "string",
12
- "fields": "object",
13
- "created_time": "string"
14
- }
15
- },
16
- {
17
- "description": "Error on invalid record ID",
18
- "inputs": {
19
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
20
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
21
- "record_id": "recINVALIDXXXXXX"
22
- },
23
- "expectedError": "Airtable API error"
24
- }
25
- ]
@@ -1,46 +0,0 @@
1
- [
2
- {
3
- "description": "List all records from test table",
4
- "inputs": {
5
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
6
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}"
7
- },
8
- "expected": {
9
- "records": "array"
10
- }
11
- },
12
- {
13
- "description": "Filter records by Status field",
14
- "inputs": {
15
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
16
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
17
- "filter_formula": "{Status} = 'Active'"
18
- },
19
- "expected": {
20
- "records": "array"
21
- }
22
- },
23
- {
24
- "description": "Sort records by Name ascending",
25
- "inputs": {
26
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
27
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
28
- "sort_field": "Name",
29
- "sort_direction": "asc"
30
- },
31
- "expected": {
32
- "records": "array"
33
- }
34
- },
35
- {
36
- "description": "Limit results with max_records",
37
- "inputs": {
38
- "base_id": "${AIRTABLE_TEST_BASE_ID}",
39
- "table_name": "${AIRTABLE_TEST_TABLE_NAME}",
40
- "max_records": 1
41
- },
42
- "expected": {
43
- "records": "array"
44
- }
45
- }
46
- ]