@n8n/n8n-nodes-langchain 1.115.0 → 1.116.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 (194) hide show
  1. package/dist/credentials/AnthropicApi.credentials.js +39 -8
  2. package/dist/credentials/AnthropicApi.credentials.js.map +1 -1
  3. package/dist/credentials/LemonadeApi.credentials.js +70 -0
  4. package/dist/credentials/LemonadeApi.credentials.js.map +1 -0
  5. package/dist/known/credentials.json +9 -0
  6. package/dist/known/nodes.json +12 -0
  7. package/dist/nodes/agents/Agent/Agent.node.js +1 -2
  8. package/dist/nodes/agents/Agent/Agent.node.js.map +1 -1
  9. package/dist/nodes/agents/Agent/V1/AgentV1.node.js +2 -0
  10. package/dist/nodes/agents/Agent/V1/AgentV1.node.js.map +1 -1
  11. package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/description.js +13 -1
  12. package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/description.js.map +1 -1
  13. package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/execute.js +49 -30
  14. package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/execute.js.map +1 -1
  15. package/dist/nodes/chains/ChainLLM/methods/chainExecutor.js +3 -0
  16. package/dist/nodes/chains/ChainLLM/methods/chainExecutor.js.map +1 -1
  17. package/dist/nodes/embeddings/EmbeddingsLemonade/EmbeddingsLemonade.node.js +87 -0
  18. package/dist/nodes/embeddings/EmbeddingsLemonade/EmbeddingsLemonade.node.js.map +1 -0
  19. package/dist/nodes/embeddings/EmbeddingsLemonade/lemonade.svg +53 -0
  20. package/dist/nodes/embeddings/EmbeddingsOpenAI/EmbeddingsOpenAi.node.js +17 -0
  21. package/dist/nodes/embeddings/EmbeddingsOpenAI/EmbeddingsOpenAi.node.js.map +1 -1
  22. package/dist/nodes/llms/LMChatAnthropic/LmChatAnthropic.node.js +12 -8
  23. package/dist/nodes/llms/LMChatAnthropic/LmChatAnthropic.node.js.map +1 -1
  24. package/dist/nodes/llms/LMChatLemonade/LmChatLemonade.node.js +106 -0
  25. package/dist/nodes/llms/LMChatLemonade/LmChatLemonade.node.js.map +1 -0
  26. package/dist/nodes/llms/LMChatLemonade/lemonade.svg +53 -0
  27. package/dist/nodes/llms/LMChatOpenAi/methods/loadModels.js +6 -5
  28. package/dist/nodes/llms/LMChatOpenAi/methods/loadModels.js.map +1 -1
  29. package/dist/nodes/llms/LMLemonade/LmLemonade.node.js +107 -0
  30. package/dist/nodes/llms/LMLemonade/LmLemonade.node.js.map +1 -0
  31. package/dist/nodes/llms/LMLemonade/description.js +147 -0
  32. package/dist/nodes/llms/LMLemonade/description.js.map +1 -0
  33. package/dist/nodes/llms/LMLemonade/lemonade.svg +53 -0
  34. package/dist/nodes/llms/LmChatAzureOpenAi/LmChatAzureOpenAi.node.js +3 -0
  35. package/dist/nodes/llms/LmChatAzureOpenAi/LmChatAzureOpenAi.node.js.map +1 -1
  36. package/dist/nodes/llms/LmChatMistralCloud/LmChatMistralCloud.node.js +14 -1
  37. package/dist/nodes/llms/LmChatMistralCloud/LmChatMistralCloud.node.js.map +1 -1
  38. package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js +107 -47
  39. package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js.map +1 -1
  40. package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js +2 -1
  41. package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js.map +1 -1
  42. package/dist/nodes/vector_store/VectorStoreQdrant/VectorStoreQdrant.node.js +43 -4
  43. package/dist/nodes/vector_store/VectorStoreQdrant/VectorStoreQdrant.node.js.map +1 -1
  44. package/dist/nodes/vendors/Anthropic/transport/index.js +9 -5
  45. package/dist/nodes/vendors/Anthropic/transport/index.js.map +1 -1
  46. package/dist/nodes/vendors/OpenAi/OpenAi.node.js +50 -11
  47. package/dist/nodes/vendors/OpenAi/OpenAi.node.js.map +1 -1
  48. package/dist/nodes/vendors/OpenAi/helpers/binary-data.js +3 -3
  49. package/dist/nodes/vendors/OpenAi/helpers/binary-data.js.map +1 -1
  50. package/dist/nodes/vendors/OpenAi/helpers/description.js +75 -0
  51. package/dist/nodes/vendors/OpenAi/helpers/description.js.map +1 -0
  52. package/dist/nodes/vendors/OpenAi/helpers/interfaces.js.map +1 -1
  53. package/dist/nodes/vendors/OpenAi/helpers/modelFiltering.js +34 -0
  54. package/dist/nodes/vendors/OpenAi/helpers/modelFiltering.js.map +1 -0
  55. package/dist/nodes/vendors/OpenAi/helpers/polling.js +52 -0
  56. package/dist/nodes/vendors/OpenAi/helpers/polling.js.map +1 -0
  57. package/dist/nodes/vendors/OpenAi/helpers/utils.js +27 -0
  58. package/dist/nodes/vendors/OpenAi/helpers/utils.js.map +1 -1
  59. package/dist/nodes/vendors/OpenAi/methods/listSearch.js +10 -6
  60. package/dist/nodes/vendors/OpenAi/methods/listSearch.js.map +1 -1
  61. package/dist/nodes/vendors/OpenAi/v1/OpenAiV1.node.js +110 -0
  62. package/dist/nodes/vendors/OpenAi/v1/OpenAiV1.node.js.map +1 -0
  63. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/assistant/create.operation.js +1 -1
  64. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/create.operation.js.map +1 -0
  65. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/assistant/deleteAssistant.operation.js +1 -1
  66. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/deleteAssistant.operation.js.map +1 -0
  67. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/index.js.map +1 -0
  68. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/assistant/list.operation.js +1 -1
  69. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/list.operation.js.map +1 -0
  70. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/assistant/message.operation.js +5 -5
  71. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/message.operation.js.map +1 -0
  72. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/assistant/update.operation.js +1 -1
  73. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/update.operation.js.map +1 -0
  74. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/audio/generate.operation.js +1 -1
  75. package/dist/nodes/vendors/OpenAi/v1/actions/audio/generate.operation.js.map +1 -0
  76. package/dist/nodes/vendors/OpenAi/v1/actions/audio/index.js.map +1 -0
  77. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/audio/transcribe.operation.js +2 -2
  78. package/dist/nodes/vendors/OpenAi/v1/actions/audio/transcribe.operation.js.map +1 -0
  79. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/audio/translate.operation.js +2 -2
  80. package/dist/nodes/vendors/OpenAi/v1/actions/audio/translate.operation.js.map +1 -0
  81. package/dist/nodes/vendors/OpenAi/v1/actions/descriptions.js.map +1 -0
  82. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/file/deleteFile.operation.js +1 -1
  83. package/dist/nodes/vendors/OpenAi/v1/actions/file/deleteFile.operation.js.map +1 -0
  84. package/dist/nodes/vendors/OpenAi/v1/actions/file/index.js.map +1 -0
  85. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/file/list.operation.js +1 -1
  86. package/dist/nodes/vendors/OpenAi/v1/actions/file/list.operation.js.map +1 -0
  87. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/file/upload.operation.js +2 -2
  88. package/dist/nodes/vendors/OpenAi/v1/actions/file/upload.operation.js.map +1 -0
  89. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/image/analyze.operation.js +1 -1
  90. package/dist/nodes/vendors/OpenAi/v1/actions/image/analyze.operation.js.map +1 -0
  91. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/image/generate.operation.js +1 -1
  92. package/dist/nodes/vendors/OpenAi/v1/actions/image/generate.operation.js.map +1 -0
  93. package/dist/nodes/vendors/OpenAi/v1/actions/image/index.js.map +1 -0
  94. package/dist/nodes/vendors/OpenAi/v1/actions/node.type.js.map +1 -0
  95. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/router.js +1 -1
  96. package/dist/nodes/vendors/OpenAi/v1/actions/router.js.map +1 -0
  97. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/text/classify.operation.js +1 -1
  98. package/dist/nodes/vendors/OpenAi/v1/actions/text/classify.operation.js.map +1 -0
  99. package/dist/nodes/vendors/OpenAi/v1/actions/text/index.js.map +1 -0
  100. package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/text/message.operation.js +4 -4
  101. package/dist/nodes/vendors/OpenAi/v1/actions/text/message.operation.js.map +1 -0
  102. package/dist/nodes/vendors/OpenAi/v2/OpenAiV2.node.js +116 -0
  103. package/dist/nodes/vendors/OpenAi/v2/OpenAiV2.node.js.map +1 -0
  104. package/dist/nodes/vendors/OpenAi/v2/actions/audio/generate.operation.js +197 -0
  105. package/dist/nodes/vendors/OpenAi/v2/actions/audio/generate.operation.js.map +1 -0
  106. package/dist/nodes/vendors/OpenAi/v2/actions/audio/index.js +96 -0
  107. package/dist/nodes/vendors/OpenAi/v2/actions/audio/index.js.map +1 -0
  108. package/dist/nodes/vendors/OpenAi/v2/actions/audio/transcribe.operation.js +121 -0
  109. package/dist/nodes/vendors/OpenAi/v2/actions/audio/transcribe.operation.js.map +1 -0
  110. package/dist/nodes/vendors/OpenAi/v2/actions/audio/translate.operation.js +111 -0
  111. package/dist/nodes/vendors/OpenAi/v2/actions/audio/translate.operation.js.map +1 -0
  112. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/create.operation.js +120 -0
  113. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/create.operation.js.map +1 -0
  114. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/get.operation.js +60 -0
  115. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/get.operation.js.map +1 -0
  116. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/index.js +94 -0
  117. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/index.js.map +1 -0
  118. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/remove.operation.js +60 -0
  119. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/remove.operation.js.map +1 -0
  120. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/update.operation.js +75 -0
  121. package/dist/nodes/vendors/OpenAi/v2/actions/conversation/update.operation.js.map +1 -0
  122. package/dist/nodes/vendors/OpenAi/v2/actions/descriptions.js +279 -0
  123. package/dist/nodes/vendors/OpenAi/v2/actions/descriptions.js.map +1 -0
  124. package/dist/nodes/vendors/OpenAi/v2/actions/file/deleteFile.operation.js +84 -0
  125. package/dist/nodes/vendors/OpenAi/v2/actions/file/deleteFile.operation.js.map +1 -0
  126. package/dist/nodes/vendors/OpenAi/v2/actions/file/index.js +84 -0
  127. package/dist/nodes/vendors/OpenAi/v2/actions/file/index.js.map +1 -0
  128. package/dist/nodes/vendors/OpenAi/v2/actions/file/list.operation.js +92 -0
  129. package/dist/nodes/vendors/OpenAi/v2/actions/file/list.operation.js.map +1 -0
  130. package/dist/nodes/vendors/OpenAi/v2/actions/file/upload.operation.js +130 -0
  131. package/dist/nodes/vendors/OpenAi/v2/actions/file/upload.operation.js.map +1 -0
  132. package/dist/nodes/vendors/OpenAi/v2/actions/image/analyze.operation.js +211 -0
  133. package/dist/nodes/vendors/OpenAi/v2/actions/image/analyze.operation.js.map +1 -0
  134. package/dist/nodes/vendors/OpenAi/v2/actions/image/edit.operation.js +464 -0
  135. package/dist/nodes/vendors/OpenAi/v2/actions/image/edit.operation.js.map +1 -0
  136. package/dist/nodes/vendors/OpenAi/v2/actions/image/generate.operation.js +319 -0
  137. package/dist/nodes/vendors/OpenAi/v2/actions/image/generate.operation.js.map +1 -0
  138. package/dist/nodes/vendors/OpenAi/v2/actions/image/index.js +84 -0
  139. package/dist/nodes/vendors/OpenAi/v2/actions/image/index.js.map +1 -0
  140. package/dist/nodes/vendors/OpenAi/v2/actions/node.type.js +17 -0
  141. package/dist/nodes/vendors/OpenAi/v2/actions/node.type.js.map +1 -0
  142. package/dist/nodes/vendors/OpenAi/v2/actions/router.js +111 -0
  143. package/dist/nodes/vendors/OpenAi/v2/actions/router.js.map +1 -0
  144. package/dist/nodes/vendors/OpenAi/v2/actions/text/classify.operation.js +102 -0
  145. package/dist/nodes/vendors/OpenAi/v2/actions/text/classify.operation.js.map +1 -0
  146. package/dist/nodes/vendors/OpenAi/v2/actions/text/helpers/responses.js +277 -0
  147. package/dist/nodes/vendors/OpenAi/v2/actions/text/helpers/responses.js.map +1 -0
  148. package/dist/nodes/vendors/OpenAi/v2/actions/text/index.js +86 -0
  149. package/dist/nodes/vendors/OpenAi/v2/actions/text/index.js.map +1 -0
  150. package/dist/nodes/vendors/OpenAi/v2/actions/text/message.operation.js +345 -0
  151. package/dist/nodes/vendors/OpenAi/v2/actions/text/message.operation.js.map +1 -0
  152. package/dist/nodes/vendors/OpenAi/v2/actions/text/response.operation.js +777 -0
  153. package/dist/nodes/vendors/OpenAi/v2/actions/text/response.operation.js.map +1 -0
  154. package/dist/nodes/vendors/OpenAi/v2/actions/video/generate.operation.js +199 -0
  155. package/dist/nodes/vendors/OpenAi/v2/actions/video/generate.operation.js.map +1 -0
  156. package/dist/nodes/vendors/OpenAi/v2/actions/video/index.js +64 -0
  157. package/dist/nodes/vendors/OpenAi/v2/actions/video/index.js.map +1 -0
  158. package/dist/types/credentials.json +2 -1
  159. package/dist/types/nodes.json +10 -6
  160. package/dist/utils/helpers.js +22 -2
  161. package/dist/utils/helpers.js.map +1 -1
  162. package/package.json +17 -13
  163. package/dist/nodes/vendors/OpenAi/actions/assistant/create.operation.js.map +0 -1
  164. package/dist/nodes/vendors/OpenAi/actions/assistant/deleteAssistant.operation.js.map +0 -1
  165. package/dist/nodes/vendors/OpenAi/actions/assistant/index.js.map +0 -1
  166. package/dist/nodes/vendors/OpenAi/actions/assistant/list.operation.js.map +0 -1
  167. package/dist/nodes/vendors/OpenAi/actions/assistant/message.operation.js.map +0 -1
  168. package/dist/nodes/vendors/OpenAi/actions/assistant/update.operation.js.map +0 -1
  169. package/dist/nodes/vendors/OpenAi/actions/audio/generate.operation.js.map +0 -1
  170. package/dist/nodes/vendors/OpenAi/actions/audio/index.js.map +0 -1
  171. package/dist/nodes/vendors/OpenAi/actions/audio/transcribe.operation.js.map +0 -1
  172. package/dist/nodes/vendors/OpenAi/actions/audio/translate.operation.js.map +0 -1
  173. package/dist/nodes/vendors/OpenAi/actions/descriptions.js.map +0 -1
  174. package/dist/nodes/vendors/OpenAi/actions/file/deleteFile.operation.js.map +0 -1
  175. package/dist/nodes/vendors/OpenAi/actions/file/index.js.map +0 -1
  176. package/dist/nodes/vendors/OpenAi/actions/file/list.operation.js.map +0 -1
  177. package/dist/nodes/vendors/OpenAi/actions/file/upload.operation.js.map +0 -1
  178. package/dist/nodes/vendors/OpenAi/actions/image/analyze.operation.js.map +0 -1
  179. package/dist/nodes/vendors/OpenAi/actions/image/generate.operation.js.map +0 -1
  180. package/dist/nodes/vendors/OpenAi/actions/image/index.js.map +0 -1
  181. package/dist/nodes/vendors/OpenAi/actions/node.type.js.map +0 -1
  182. package/dist/nodes/vendors/OpenAi/actions/router.js.map +0 -1
  183. package/dist/nodes/vendors/OpenAi/actions/text/classify.operation.js.map +0 -1
  184. package/dist/nodes/vendors/OpenAi/actions/text/index.js.map +0 -1
  185. package/dist/nodes/vendors/OpenAi/actions/text/message.operation.js.map +0 -1
  186. package/dist/nodes/vendors/OpenAi/actions/versionDescription.js +0 -160
  187. package/dist/nodes/vendors/OpenAi/actions/versionDescription.js.map +0 -1
  188. /package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/assistant/index.js +0 -0
  189. /package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/audio/index.js +0 -0
  190. /package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/descriptions.js +0 -0
  191. /package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/file/index.js +0 -0
  192. /package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/image/index.js +0 -0
  193. /package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/node.type.js +0 -0
  194. /package/dist/nodes/vendors/OpenAi/{actions → v1/actions}/text/index.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../nodes/vendors/OpenAi/v2/actions/text/response.operation.ts"],"sourcesContent":["import type { Tool } from '@langchain/core/tools';\nimport { getConnectedTools } from '@utils/helpers';\nimport get from 'lodash/get';\nimport type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tINodeExecutionData,\n\tINodeProperties,\n} from 'n8n-workflow';\nimport { jsonParse, NodeOperationError, updateDisplayOptions } from 'n8n-workflow';\nimport { MODELS_NOT_SUPPORT_FUNCTION_CALLS } from '../../../helpers/constants';\nimport type { ChatResponse } from '../../../helpers/interfaces';\nimport { formatToOpenAIResponsesTool } from '../../../helpers/utils';\nimport { pollUntilAvailable } from '../../../helpers/polling';\nimport { apiRequest } from '../../../transport';\nimport { messageOptions, metadataProperty, modelRLC } from '../descriptions';\nimport { createRequest } from './helpers/responses';\n\nconst properties: INodeProperties[] = [\n\tmodelRLC('modelSearch'),\n\t{\n\t\tdisplayName: 'Messages',\n\t\tname: 'responses',\n\t\ttype: 'fixedCollection',\n\t\ttypeOptions: {\n\t\t\tsortable: true,\n\t\t\tmultipleValues: true,\n\t\t},\n\t\tplaceholder: 'Add Message',\n\t\tdefault: { values: [{ type: 'text' }] },\n\t\toptions: messageOptions,\n\t},\n\t{\n\t\tdisplayName: 'Simplify Output',\n\t\tname: 'simplify',\n\t\ttype: 'boolean',\n\t\tdefault: true,\n\t\tdescription: 'Whether to return a simplified version of the response instead of the raw data',\n\t},\n\t{\n\t\tdisplayName: 'Hide Tools',\n\t\tname: 'hideTools',\n\t\ttype: 'hidden',\n\t\tdefault: 'hide',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tmodelId: MODELS_NOT_SUPPORT_FUNCTION_CALLS,\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Connect your own custom n8n tools to this node on the canvas',\n\t\tname: 'noticeTools',\n\t\ttype: 'notice',\n\t\tdefault: '',\n\t\tdisplayOptions: {\n\t\t\thide: {\n\t\t\t\thideTools: ['hide'],\n\t\t\t},\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Built-in Tools',\n\t\tname: 'builtInTools',\n\t\tplaceholder: 'Add Built-in Tool',\n\t\ttype: 'collection',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Web Search',\n\t\t\t\tname: 'webSearch',\n\t\t\t\ttype: 'collection',\n\t\t\t\tdefault: { searchContextSize: 'medium' },\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Search Context Size',\n\t\t\t\t\t\tname: 'searchContextSize',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\tdefault: 'medium',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{ name: 'Low', value: 'low' },\n\t\t\t\t\t\t\t{ name: 'Medium', value: 'medium' },\n\t\t\t\t\t\t\t{ name: 'High', value: 'high' },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Web Search Allowed Domains',\n\t\t\t\t\t\tname: 'allowedDomains',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Comma-separated list of domains to search. Only domains in this list will be searched.',\n\t\t\t\t\t\tplaceholder: 'e.g. google.com, wikipedia.org',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Country',\n\t\t\t\t\t\tname: 'country',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tplaceholder: 'e.g. US, GB',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'City',\n\t\t\t\t\t\tname: 'city',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tplaceholder: 'e.g. New York, London',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Region',\n\t\t\t\t\t\tname: 'region',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\tplaceholder: 'e.g. New York, London',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'MCP Servers',\n\t\t\t\tname: 'mcpServers',\n\t\t\t\ttype: 'fixedCollection',\n\t\t\t\tplaceholder: 'Add MCP Server',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tmultipleValues: true,\n\t\t\t\t\tsortable: true,\n\t\t\t\t},\n\t\t\t\tdefault: { mcpServerOptions: [{ serverLabel: '' }] },\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'MCP Server',\n\t\t\t\t\t\tname: 'mcpServerOptions',\n\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Server Label',\n\t\t\t\t\t\t\t\tname: 'serverLabel',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'A label to identify this MCP server',\n\t\t\t\t\t\t\t\tplaceholder: 'e.g. My Database Server',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Connection Type',\n\t\t\t\t\t\t\t\tname: 'connectionType',\n\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\tdefault: 'url',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{ name: 'URL', value: 'url' },\n\t\t\t\t\t\t\t\t\t{ name: 'Connector ID', value: 'connector_id' },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdescription: 'Choose how to connect to the MCP server',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Server URL',\n\t\t\t\t\t\t\t\tname: 'serverUrl',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'The URL of the MCP server',\n\t\t\t\t\t\t\t\tplaceholder: 'e.g. https://api.example.com/mcp',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\tconnectionType: ['url'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Connector ID',\n\t\t\t\t\t\t\t\tname: 'connectorId',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'The connector ID for the MCP server',\n\t\t\t\t\t\t\t\tplaceholder: 'e.g. connector_gmail',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\tconnectionType: ['connector_id'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Authorization',\n\t\t\t\t\t\t\t\tname: 'authorization',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'Authorization token or credentials for the MCP server',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Headers',\n\t\t\t\t\t\t\t\tname: 'headers',\n\t\t\t\t\t\t\t\ttype: 'json',\n\t\t\t\t\t\t\t\tdefault: '{}',\n\t\t\t\t\t\t\t\tdescription: 'Additional headers to send with requests to the MCP server',\n\t\t\t\t\t\t\t\tplaceholder: '{\"X-Custom-Header\": \"value\"}',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Server Description',\n\t\t\t\t\t\t\t\tname: 'serverDescription',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'A description of what this MCP server provides',\n\t\t\t\t\t\t\t\tplaceholder: 'e.g. Database access for user management',\n\t\t\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\t\t\trows: 2,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Allowed Tools',\n\t\t\t\t\t\t\t\tname: 'allowedTools',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'Comma-separated list of tools to allow. If not provided, all tools will be allowed.',\n\t\t\t\t\t\t\t\tplaceholder: 'e.g. tool1,tool2',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'File Search',\n\t\t\t\tname: 'fileSearch',\n\t\t\t\ttype: 'collection',\n\t\t\t\tdefault: { vectorStoreIds: '[]' },\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Vector Store IDs',\n\t\t\t\t\t\tname: 'vectorStoreIds',\n\t\t\t\t\t\ttype: 'json',\n\t\t\t\t\t\tdefault: '[]',\n\t\t\t\t\t\trequired: true,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Filters',\n\t\t\t\t\t\tname: 'filters',\n\t\t\t\t\t\ttype: 'json',\n\t\t\t\t\t\tdefault: '{}',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Max Results',\n\t\t\t\t\t\tname: 'maxResults',\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tdefault: 1,\n\t\t\t\t\t\ttypeOptions: { minValue: 1, maxValue: 50 },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Code Interpreter',\n\t\t\t\tname: 'codeInterpreter',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t\tdescription: 'Whether to allow the model to execute code in a local environment',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\tplaceholder: 'Add Option',\n\t\ttype: 'collection',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Conversation ID',\n\t\t\t\tname: 'conversationId',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription:\n\t\t\t\t\t'The conversation that this response belongs to. Input items and output items from this response are automatically added to this conversation after this response completes.',\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Include Additional Data',\n\t\t\t\tname: 'include',\n\t\t\t\tdefault: [],\n\t\t\t\ttype: 'multiOptions',\n\t\t\t\tdescription: 'Specify additional output data to include in the model response',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Code Interpreter Call Outputs',\n\t\t\t\t\t\tvalue: 'code_interpreter_call.outputs',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Computer Call Output Image URL',\n\t\t\t\t\t\tvalue: 'computer_call_output.output.image_url',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'File Search Call Results',\n\t\t\t\t\t\tvalue: 'file_search_call.results',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Message Input Image URL',\n\t\t\t\t\t\tvalue: 'message.input_image.image_url',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Message Output Text Logprobs',\n\t\t\t\t\t\tvalue: 'message.output_text.logprobs',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Reasoning Encrypted Content',\n\t\t\t\t\t\tvalue: 'reasoning.encrypted_content',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Web Search Tool Call Sources',\n\t\t\t\t\t\tvalue: 'web_search_call.action.sources',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Instructions',\n\t\t\t\tname: 'instructions',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription: 'Instructions for the model to follow',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\trows: 2,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Maximum Number of Tokens',\n\t\t\t\tname: 'maxTokens',\n\t\t\t\tdefault: 16,\n\t\t\t\tdescription:\n\t\t\t\t\t'The maximum number of tokens to generate in the completion. Most models have a context length of 2048 tokens (except for the newest models, which support 32,768).',\n\t\t\t\ttype: 'number',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tmaxValue: 32768,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Max Tool Calls Iterations',\n\t\t\t\tname: 'maxToolsIterations',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 15,\n\t\t\t\tdescription:\n\t\t\t\t\t'The maximum number of tool iteration cycles the LLM will run before stopping. A single iteration can contain multiple tool calls. Set to 0 for no limit.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Max Built-in Tool Calls',\n\t\t\t\tname: 'maxToolCalls',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 15,\n\t\t\t\tdescription:\n\t\t\t\t\t'The maximum number of total calls to built-in tools that can be processed in a response. This maximum number applies across all built-in tool calls, not per individual tool. Any further attempts to call a tool by the model will be ignored.',\n\t\t\t},\n\t\t\tmetadataProperty,\n\t\t\t{\n\t\t\t\tdisplayName: 'Parallel Tool Calls',\n\t\t\t\tname: 'parallelToolCalls',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tdescription:\n\t\t\t\t\t'Whether to allow parallel tool calls. If true, the model can call multiple tools at once.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Previous Response ID',\n\t\t\t\tname: 'previousResponseId',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\t// TODO: add display options?\n\t\t\t\tdescription:\n\t\t\t\t\t'The ID of the previous response to continue from. Cannot be used in conjunction with Conversation ID.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Prompt',\n\t\t\t\tname: 'promptConfig',\n\t\t\t\ttype: 'fixedCollection',\n\t\t\t\tdefault: { promptOptions: [{ promptId: '' }] },\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Prompt',\n\t\t\t\t\t\tname: 'promptOptions',\n\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Prompt ID',\n\t\t\t\t\t\t\t\tname: 'promptId',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'The unique identifier of the prompt template to use',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Version',\n\t\t\t\t\t\t\t\tname: 'version',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'Optional version of the prompt template',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Variables',\n\t\t\t\t\t\t\t\tname: 'variables',\n\t\t\t\t\t\t\t\ttype: 'json',\n\t\t\t\t\t\t\t\tdefault: '{}',\n\t\t\t\t\t\t\t\tdescription: 'Variables to be substituted into the prompt template',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Prompt Cache Key',\n\t\t\t\tname: 'promptCacheKey',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription:\n\t\t\t\t\t'Used by OpenAI to cache responses for similar requests to optimize your cache hit rates',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Reasoning',\n\t\t\t\tname: 'reasoning',\n\t\t\t\ttype: 'fixedCollection',\n\t\t\t\tdefault: { reasoningOptions: [{ effort: 'medium', summary: 'none' }] },\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Reasoning',\n\t\t\t\t\t\tname: 'reasoningOptions',\n\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Effort',\n\t\t\t\t\t\t\t\tname: 'effort',\n\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\tdefault: 'medium',\n\t\t\t\t\t\t\t\t// TODO: allow only high for gpt-5-pro\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{ name: 'Low', value: 'low' },\n\t\t\t\t\t\t\t\t\t{ name: 'Medium', value: 'medium' },\n\t\t\t\t\t\t\t\t\t{ name: 'High', value: 'high' },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Summary',\n\t\t\t\t\t\t\t\tname: 'summary',\n\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\tdefault: 'auto',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t\"A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process.\",\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{ name: 'None', value: 'none' },\n\t\t\t\t\t\t\t\t\t{ name: 'Auto', value: 'auto' },\n\t\t\t\t\t\t\t\t\t{ name: 'Concise', value: 'concise' },\n\t\t\t\t\t\t\t\t\t{ name: 'Detailed', value: 'detailed' },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Safety Identifier',\n\t\t\t\tname: 'safetyIdentifier',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription:\n\t\t\t\t\t\"A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies. The IDs should be a string that uniquely identifies each user.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Service Tier',\n\t\t\t\tname: 'serviceTier',\n\t\t\t\ttype: 'options',\n\t\t\t\tdefault: 'auto',\n\t\t\t\tdescription: 'The service tier to use for the request',\n\t\t\t\toptions: [\n\t\t\t\t\t{ name: 'Auto', value: 'auto' },\n\t\t\t\t\t{ name: 'Flex', value: 'flex' },\n\t\t\t\t\t{ name: 'Default', value: 'default' },\n\t\t\t\t\t{ name: 'Priority', value: 'priority' },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Store',\n\t\t\t\tname: 'store',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: true,\n\t\t\t\tdescription: 'Whether to store the generated model response for later retrieval via API',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Output Format',\n\t\t\t\tname: 'textFormat',\n\t\t\t\ttype: 'fixedCollection',\n\t\t\t\tdefault: { textOptions: [{ type: 'text' }] },\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Text',\n\t\t\t\t\t\tname: 'textOptions',\n\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Type',\n\t\t\t\t\t\t\t\tname: 'type',\n\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\tdefault: 'text',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{ name: 'Text', value: 'text' },\n\t\t\t\t\t\t\t\t\t{ name: 'JSON Schema(recommended)', value: 'json_schema' },\n\t\t\t\t\t\t\t\t\t{ name: 'JSON Object', value: 'json_object' },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Verbosity',\n\t\t\t\t\t\t\t\tname: 'verbosity',\n\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\tdefault: 'medium',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{ name: 'Low', value: 'low' },\n\t\t\t\t\t\t\t\t\t{ name: 'Medium', value: 'medium' },\n\t\t\t\t\t\t\t\t\t{ name: 'High', value: 'high' },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Name',\n\t\t\t\t\t\t\t\tname: 'name',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['json_schema'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Schema',\n\t\t\t\t\t\t\t\tname: 'schema',\n\t\t\t\t\t\t\t\ttype: 'json',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'The schema of the response format',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['json_schema'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Description',\n\t\t\t\t\t\t\t\tname: 'description',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdescription: 'The description of the response format',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['json_schema'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Strict',\n\t\t\t\t\t\t\t\tname: 'strict',\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\tdescription: 'Whether to enforce the response format strictly',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['json_schema'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Top Logprobs',\n\t\t\t\tname: 'topLogprobs',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 0,\n\t\t\t\tdescription:\n\t\t\t\t\t'An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tminValue: 0,\n\t\t\t\t\tmaxValue: 20,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Output Randomness (Temperature)',\n\t\t\t\tname: 'temperature',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 1,\n\t\t\t\tdescription:\n\t\t\t\t\t'What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. We generally recommend altering this or top_p but not both',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tminValue: 0,\n\t\t\t\t\tmaxValue: 2,\n\t\t\t\t\tnumberPrecision: 1,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Output Randomness (Top P)',\n\t\t\t\tname: 'topP',\n\t\t\t\tdefault: 1,\n\t\t\t\ttypeOptions: { maxValue: 1, minValue: 0, numberPrecision: 1 },\n\t\t\t\tdescription:\n\t\t\t\t\t'An alternative to sampling with temperature, controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.',\n\t\t\t\ttype: 'number',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Truncation',\n\t\t\t\tname: 'truncation',\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdefault: false,\n\t\t\t\tdescription:\n\t\t\t\t\t\"Whether to truncate the input to the model's context window size. When disabled will throw a 400 error instead.\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Background Mode',\n\t\t\t\tname: 'backgroundMode',\n\t\t\t\ttype: 'fixedCollection',\n\t\t\t\tdefault: { values: [{ backgroundMode: true }] },\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Bakground',\n\t\t\t\t\t\tname: 'values',\n\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Background Mode',\n\t\t\t\t\t\t\t\tname: 'enabled',\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'Whether to run the model in background mode. If true, the model will run in background mode.',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Timeout',\n\t\t\t\t\t\t\t\tname: 'timeout',\n\t\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\t\tdefault: 300,\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'The timeout for the background mode in seconds. If 0, the timeout is infinite.',\n\t\t\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\t\t\tminValue: 0,\n\t\t\t\t\t\t\t\t\tmaxValue: 3600,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\toperation: ['response'],\n\t\tresource: ['text'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n\nexport async function execute(this: IExecuteFunctions, i: number): Promise<INodeExecutionData[]> {\n\tconst model = this.getNodeParameter('modelId', i, '', { extractValue: true }) as string;\n\tconst messages = this.getNodeParameter('responses.values', i, []) as IDataObject[];\n\tconst options = this.getNodeParameter('options', i, {});\n\tconst maxToolsIterations = this.getNodeParameter('options.maxToolsIterations', i, 15) as number;\n\tconst builtInTools = this.getNodeParameter('builtInTools', i, {}) as IDataObject;\n\tconst abortSignal = this.getExecutionCancelSignal();\n\n\tconst hideTools = this.getNodeParameter('hideTools', i, '') as string;\n\n\tlet tools;\n\tlet externalTools: Tool[] = [];\n\n\tif (hideTools !== 'hide') {\n\t\tconst enforceUniqueNames = true;\n\t\texternalTools = await getConnectedTools(this, enforceUniqueNames, false);\n\t}\n\n\tif (externalTools.length) {\n\t\ttools = externalTools.length ? externalTools?.map(formatToOpenAIResponsesTool) : undefined;\n\t}\n\n\tconst body = await createRequest.call(this, i, {\n\t\tmodel,\n\t\tmessages,\n\t\toptions,\n\t\ttools,\n\t\tbuiltInTools,\n\t});\n\tlet response = (await apiRequest.call(this, 'POST', '/responses', {\n\t\tbody,\n\t})) as ChatResponse;\n\n\tif (body.background) {\n\t\tconst timeoutSeconds = get(options, 'backgroundMode.values.timeout', 300) as number;\n\t\tresponse = await pollUntilAvailable(\n\t\t\tthis,\n\t\t\tasync () => {\n\t\t\t\treturn (await apiRequest.call(this, 'GET', `/responses/${response.id}`)) as ChatResponse;\n\t\t\t},\n\t\t\t(response) => {\n\t\t\t\tif (response.error) {\n\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Background mode error', {\n\t\t\t\t\t\tdescription: response.error.message,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn response.status === 'completed';\n\t\t\t},\n\t\t\ttimeoutSeconds,\n\t\t\t10,\n\t\t);\n\t}\n\n\tif (!response) return [];\n\n\t// reasoning models such as gpt5 include reasoning items that must be included in the request\n\tconst isToolRelatedCall: (item: { type: string }) => boolean = (item) =>\n\t\titem.type === 'function_call' || item.type === 'reasoning';\n\n\tlet toolCalls = response.output.filter(isToolRelatedCall);\n\n\tconst hasFunctionCall = () => toolCalls.some((item) => item.type === 'function_call');\n\n\tconst answeredToolCalls = new Set<string>();\n\tlet currentIteration = 1;\n\t// make sure there's actually a function call to answer\n\twhile (toolCalls.length && hasFunctionCall()) {\n\t\tif (abortSignal?.aborted || (maxToolsIterations > 0 && currentIteration > maxToolsIterations)) {\n\t\t\tbreak;\n\t\t}\n\n\t\tfor (const item of toolCalls) {\n\t\t\tif (item.type === 'function_call' && answeredToolCalls.has(item.call_id)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// include function_call or reasoning items in the request\n\t\t\tbody.input.push(item);\n\n\t\t\tif (item.type === 'function_call') {\n\t\t\t\tconst functionName = item.name;\n\t\t\t\tconst functionArgs = item.arguments;\n\t\t\t\tconst callId = item.call_id;\n\n\t\t\t\tlet functionResponse;\n\t\t\t\tfor (const tool of externalTools ?? []) {\n\t\t\t\t\tif (tool.name === functionName) {\n\t\t\t\t\t\tconst parsedArgs: { input: string } = jsonParse(functionArgs);\n\t\t\t\t\t\tconst functionInput = parsedArgs.input ?? parsedArgs ?? functionArgs;\n\t\t\t\t\t\tfunctionResponse = await tool.invoke(functionInput);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof functionResponse === 'object') {\n\t\t\t\t\t\tfunctionResponse = JSON.stringify(functionResponse);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbody.input.push({\n\t\t\t\t\ttype: 'function_call_output',\n\t\t\t\t\tcall_id: callId,\n\t\t\t\t\toutput: functionResponse,\n\t\t\t\t});\n\n\t\t\t\tansweredToolCalls.add(callId);\n\t\t\t}\n\t\t}\n\n\t\tresponse = (await apiRequest.call(this, 'POST', '/responses', {\n\t\t\tbody,\n\t\t})) as ChatResponse;\n\t\ttoolCalls = response.output.filter(isToolRelatedCall);\n\n\t\tcurrentIteration++;\n\t}\n\n\tconst formatType = get(body, 'text.format.type');\n\tif (formatType === 'json_object' || formatType === 'json_schema') {\n\t\ttry {\n\t\t\tresponse.output = response.output.map((item) => {\n\t\t\t\tif (item.type === 'message') {\n\t\t\t\t\titem.content = item.content.map((content) => {\n\t\t\t\t\t\tif (content.type === 'output_text') {\n\t\t\t\t\t\t\tcontent.text = JSON.parse(content.text);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn content;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn item;\n\t\t\t});\n\t\t} catch (error) {}\n\t}\n\n\tconst simplify = this.getNodeParameter('simplify', i) as boolean;\n\n\tconst returnData: INodeExecutionData[] = [];\n\n\tif (simplify) {\n\t\tconst messages = response.output.filter((item) => item.type === 'message');\n\t\treturnData.push({\n\t\t\tjson: {\n\t\t\t\toutput: messages as unknown as IDataObject,\n\t\t\t},\n\t\t\tpairedItem: { item: i },\n\t\t});\n\t} else {\n\t\treturnData.push({ json: response as unknown as IDataObject, pairedItem: { item: i } });\n\t}\n\n\treturn returnData;\n}\n"],"mappings":"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","names":["get","response","messages"]}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var generate_operation_exports = {};
30
+ __export(generate_operation_exports, {
31
+ description: () => description,
32
+ execute: () => execute
33
+ });
34
+ module.exports = __toCommonJS(generate_operation_exports);
35
+ var import_form_data = __toESM(require("form-data"));
36
+ var import_n8n_workflow = require("n8n-workflow");
37
+ var import_binary_data = require("../../../helpers/binary-data");
38
+ var import_polling = require("../../../helpers/polling");
39
+ var import_transport = require("../../../transport");
40
+ var import_descriptions = require("../descriptions");
41
+ const properties = [
42
+ (0, import_descriptions.modelRLC)("videoModelSearch"),
43
+ {
44
+ displayName: "Prompt",
45
+ name: "prompt",
46
+ type: "string",
47
+ default: "A video of a cat playing with a ball",
48
+ description: "The prompt to generate a video from",
49
+ required: true,
50
+ typeOptions: {
51
+ rows: 2
52
+ }
53
+ },
54
+ {
55
+ displayName: "Seconds",
56
+ name: "seconds",
57
+ type: "number",
58
+ default: 4,
59
+ description: "Clip duration in seconds",
60
+ required: true
61
+ },
62
+ {
63
+ displayName: "Size",
64
+ name: "size",
65
+ type: "options",
66
+ default: "1280x720",
67
+ description: "Output resolution formatted as width x height. 1024x1792 and 1792x1024 are only supported by Sora 2 Pro.",
68
+ options: [
69
+ { name: "720x1280", value: "720x1280" },
70
+ { name: "1280x720", value: "1280x720" },
71
+ { name: "1024x1792", value: "1024x1792" },
72
+ { name: "1792x1024", value: "1792x1024" }
73
+ ]
74
+ },
75
+ {
76
+ displayName: "Options",
77
+ name: "options",
78
+ placeholder: "Add Option",
79
+ type: "collection",
80
+ default: {},
81
+ options: [
82
+ {
83
+ displayName: "Reference",
84
+ description: "Optional image reference that guides generation",
85
+ name: "binaryPropertyNameReference",
86
+ type: "string",
87
+ default: "data",
88
+ placeholder: "e.g. data"
89
+ },
90
+ {
91
+ displayName: "Wait Timeout",
92
+ name: "waitTime",
93
+ type: "number",
94
+ default: 300,
95
+ description: "Time to wait for the video to be generated in seconds",
96
+ typeOptions: {
97
+ minValue: 5,
98
+ maxValue: 7200
99
+ }
100
+ },
101
+ {
102
+ displayName: "Output Field Name",
103
+ name: "fileName",
104
+ type: "string",
105
+ default: "data",
106
+ hint: "The name of the output field to put the binary file data in"
107
+ }
108
+ ]
109
+ }
110
+ ];
111
+ const displayOptions = {
112
+ show: {
113
+ operation: ["generate"],
114
+ resource: ["video"]
115
+ }
116
+ };
117
+ const description = (0, import_n8n_workflow.updateDisplayOptions)(displayOptions, properties);
118
+ async function execute(i) {
119
+ const model = this.getNodeParameter("modelId", i, "", { extractValue: true });
120
+ const prompt = this.getNodeParameter("prompt", i);
121
+ const seconds = this.getNodeParameter("seconds", i);
122
+ const size = this.getNodeParameter("size", i);
123
+ const options = this.getNodeParameter("options", i, {});
124
+ const waitSeconds = options.waitTime || 300;
125
+ const formData = new import_form_data.default();
126
+ formData.append("model", model);
127
+ formData.append("prompt", prompt);
128
+ formData.append("seconds", seconds.toString());
129
+ formData.append("size", size);
130
+ if (options.binaryPropertyNameReference) {
131
+ const { fileContent, contentType, filename } = await (0, import_binary_data.getBinaryDataFile)(
132
+ this,
133
+ i,
134
+ options.binaryPropertyNameReference
135
+ );
136
+ const buffer = await this.helpers.binaryToBuffer(fileContent);
137
+ formData.append("input_reference", buffer, {
138
+ filename,
139
+ contentType
140
+ });
141
+ }
142
+ const response = await import_transport.apiRequest.call(this, "POST", "/videos", {
143
+ option: { formData },
144
+ headers: formData.getHeaders()
145
+ });
146
+ const finalResponse = await (0, import_polling.pollUntilAvailable)(
147
+ this,
148
+ async () => {
149
+ return await import_transport.apiRequest.call(this, "GET", `/videos/${response.id}`);
150
+ },
151
+ (response2) => {
152
+ if (response2.error) {
153
+ throw new import_n8n_workflow.NodeOperationError(this.getNode(), "Error generating video", {
154
+ description: response2.error.message,
155
+ itemIndex: i
156
+ });
157
+ }
158
+ return response2.status === "completed";
159
+ },
160
+ waitSeconds,
161
+ 10
162
+ );
163
+ const contentResponse = await import_transport.apiRequest.call(
164
+ this,
165
+ "GET",
166
+ `/videos/${finalResponse.id}/content`,
167
+ {
168
+ option: {
169
+ useStream: true,
170
+ resolveWithFullResponse: true,
171
+ json: false,
172
+ encoding: null
173
+ }
174
+ }
175
+ );
176
+ const mimeType = contentResponse.headers["content-type"];
177
+ const binaryData = await this.helpers.prepareBinaryData(
178
+ contentResponse.body,
179
+ options.fileName || "data",
180
+ mimeType
181
+ );
182
+ return [
183
+ {
184
+ json: Object.assign({}, binaryData, {
185
+ data: void 0
186
+ }),
187
+ binary: {
188
+ data: binaryData
189
+ },
190
+ pairedItem: { item: i }
191
+ }
192
+ ];
193
+ }
194
+ // Annotate the CommonJS export names for ESM import in node:
195
+ 0 && (module.exports = {
196
+ description,
197
+ execute
198
+ });
199
+ //# sourceMappingURL=generate.operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../nodes/vendors/OpenAi/v2/actions/video/generate.operation.ts"],"sourcesContent":["import FormData from 'form-data';\nimport type { IExecuteFunctions, INodeExecutionData, INodeProperties } from 'n8n-workflow';\nimport { NodeOperationError, updateDisplayOptions } from 'n8n-workflow';\n\nimport { getBinaryDataFile } from '../../../helpers/binary-data';\nimport type { VideoJob } from '../../../helpers/interfaces';\nimport { pollUntilAvailable } from '../../../helpers/polling';\nimport { apiRequest } from '../../../transport';\nimport { modelRLC } from '../descriptions';\n\nconst properties: INodeProperties[] = [\n\tmodelRLC('videoModelSearch'),\n\t{\n\t\tdisplayName: 'Prompt',\n\t\tname: 'prompt',\n\t\ttype: 'string',\n\t\tdefault: 'A video of a cat playing with a ball',\n\t\tdescription: 'The prompt to generate a video from',\n\t\trequired: true,\n\t\ttypeOptions: {\n\t\t\trows: 2,\n\t\t},\n\t},\n\t{\n\t\tdisplayName: 'Seconds',\n\t\tname: 'seconds',\n\t\ttype: 'number',\n\t\tdefault: 4,\n\t\tdescription: 'Clip duration in seconds',\n\t\trequired: true,\n\t},\n\t{\n\t\tdisplayName: 'Size',\n\t\tname: 'size',\n\t\ttype: 'options',\n\t\tdefault: '1280x720',\n\t\tdescription:\n\t\t\t'Output resolution formatted as width x height. 1024x1792 and 1792x1024 are only supported by Sora 2 Pro.',\n\t\toptions: [\n\t\t\t{ name: '720x1280', value: '720x1280' },\n\t\t\t{ name: '1280x720', value: '1280x720' },\n\t\t\t{ name: '1024x1792', value: '1024x1792' },\n\t\t\t{ name: '1792x1024', value: '1792x1024' },\n\t\t],\n\t},\n\t{\n\t\tdisplayName: 'Options',\n\t\tname: 'options',\n\t\tplaceholder: 'Add Option',\n\t\ttype: 'collection',\n\t\tdefault: {},\n\t\toptions: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Reference',\n\t\t\t\tdescription: 'Optional image reference that guides generation',\n\t\t\t\tname: 'binaryPropertyNameReference',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'data',\n\t\t\t\tplaceholder: 'e.g. data',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Wait Timeout',\n\t\t\t\tname: 'waitTime',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 300,\n\t\t\t\tdescription: 'Time to wait for the video to be generated in seconds',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tminValue: 5,\n\t\t\t\t\tmaxValue: 7200,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Output Field Name',\n\t\t\t\tname: 'fileName',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'data',\n\t\t\t\thint: 'The name of the output field to put the binary file data in',\n\t\t\t},\n\t\t],\n\t},\n];\n\nconst displayOptions = {\n\tshow: {\n\t\toperation: ['generate'],\n\t\tresource: ['video'],\n\t},\n};\n\nexport const description = updateDisplayOptions(displayOptions, properties);\n\nexport async function execute(this: IExecuteFunctions, i: number): Promise<INodeExecutionData[]> {\n\tconst model = this.getNodeParameter('modelId', i, '', { extractValue: true }) as string;\n\tconst prompt = this.getNodeParameter('prompt', i) as string;\n\tconst seconds = this.getNodeParameter('seconds', i) as number;\n\tconst size = this.getNodeParameter('size', i) as string;\n\tconst options = this.getNodeParameter('options', i, {});\n\tconst waitSeconds = (options.waitTime as number) || 300;\n\n\tconst formData = new FormData();\n\n\tformData.append('model', model);\n\tformData.append('prompt', prompt);\n\tformData.append('seconds', seconds.toString());\n\tformData.append('size', size);\n\n\tif (options.binaryPropertyNameReference) {\n\t\tconst { fileContent, contentType, filename } = await getBinaryDataFile(\n\t\t\tthis,\n\t\t\ti,\n\t\t\toptions.binaryPropertyNameReference as string,\n\t\t);\n\t\tconst buffer = await this.helpers.binaryToBuffer(fileContent);\n\t\tformData.append('input_reference', buffer, {\n\t\t\tfilename,\n\t\t\tcontentType,\n\t\t});\n\t}\n\n\tconst response = (await apiRequest.call(this, 'POST', '/videos', {\n\t\toption: { formData },\n\t\theaders: formData.getHeaders(),\n\t})) as VideoJob;\n\n\tconst finalResponse = await pollUntilAvailable(\n\t\tthis,\n\t\tasync () => {\n\t\t\treturn (await apiRequest.call(this, 'GET', `/videos/${response.id}`)) as VideoJob;\n\t\t},\n\t\t(response) => {\n\t\t\tif (response.error) {\n\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Error generating video', {\n\t\t\t\t\tdescription: response.error.message,\n\t\t\t\t\titemIndex: i,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn response.status === 'completed';\n\t\t},\n\t\twaitSeconds,\n\t\t10,\n\t);\n\n\tconst contentResponse = await apiRequest.call(\n\t\tthis,\n\t\t'GET',\n\t\t`/videos/${finalResponse.id}/content`,\n\t\t{\n\t\t\toption: {\n\t\t\t\tuseStream: true,\n\t\t\t\tresolveWithFullResponse: true,\n\t\t\t\tjson: false,\n\t\t\t\tencoding: null,\n\t\t\t},\n\t\t},\n\t);\n\n\tconst mimeType = contentResponse.headers['content-type'];\n\n\tconst binaryData = await this.helpers.prepareBinaryData(\n\t\tcontentResponse.body,\n\t\t(options.fileName as string) || 'data',\n\t\tmimeType,\n\t);\n\n\treturn [\n\t\t{\n\t\t\tjson: Object.assign({}, binaryData, {\n\t\t\t\tdata: undefined,\n\t\t\t}),\n\t\t\tbinary: {\n\t\t\t\tdata: binaryData,\n\t\t\t},\n\t\t\tpairedItem: { item: i },\n\t\t},\n\t];\n}\n"],"mappings":"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","names":["FormData","response"]}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var video_exports = {};
30
+ __export(video_exports, {
31
+ description: () => description,
32
+ generate: () => generate
33
+ });
34
+ module.exports = __toCommonJS(video_exports);
35
+ var generate = __toESM(require("./generate.operation"));
36
+ const description = [
37
+ {
38
+ displayName: "Operation",
39
+ name: "operation",
40
+ type: "options",
41
+ noDataExpression: true,
42
+ options: [
43
+ {
44
+ name: "Generate",
45
+ value: "generate",
46
+ action: "Generate a video",
47
+ description: "Creates a video from a text prompt"
48
+ }
49
+ ],
50
+ default: "generate",
51
+ displayOptions: {
52
+ show: {
53
+ resource: ["video"]
54
+ }
55
+ }
56
+ },
57
+ ...generate.description
58
+ ];
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ description,
62
+ generate
63
+ });
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../nodes/vendors/OpenAi/v2/actions/video/index.ts"],"sourcesContent":["import type { INodeProperties } from 'n8n-workflow';\n\nimport * as generate from './generate.operation';\n\nexport { generate };\n\nexport const description: INodeProperties[] = [\n\t{\n\t\tdisplayName: 'Operation',\n\t\tname: 'operation',\n\t\ttype: 'options',\n\t\tnoDataExpression: true,\n\t\toptions: [\n\t\t\t{\n\t\t\t\tname: 'Generate',\n\t\t\t\tvalue: 'generate',\n\t\t\t\taction: 'Generate a video',\n\t\t\t\tdescription: 'Creates a video from a text prompt',\n\t\t\t},\n\t\t],\n\t\tdefault: 'generate',\n\t\tdisplayOptions: {\n\t\t\tshow: {\n\t\t\t\tresource: ['video'],\n\t\t\t},\n\t\t},\n\t},\n\t...generate.description,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,eAA0B;AAInB,MAAM,cAAiC;AAAA,EAC7C;AAAA,IACC,aAAa;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,SAAS;AAAA,MACR;AAAA,QACC,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,aAAa;AAAA,MACd;AAAA,IACD;AAAA,IACA,SAAS;AAAA,IACT,gBAAgB;AAAA,MACf,MAAM;AAAA,QACL,UAAU,CAAC,OAAO;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAAA,EACA,GAAG,SAAS;AACb;","names":[]}
@@ -1,5 +1,5 @@
1
1
  [
2
- {"name":"anthropicApi","displayName":"Anthropic","documentationUrl":"anthropic","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""},{"displayName":"Base URL","name":"url","type":"string","default":"https://api.anthropic.com","description":"Override the default base URL for the API"}],"authenticate":{"type":"generic","properties":{"headers":{"x-api-key":"={{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"={{$credentials?.url}}","url":"/v1/messages","method":"POST","headers":{"anthropic-version":"2023-06-01"},"body":{"model":"claude-3-haiku-20240307","messages":[{"role":"user","content":"Hey"}],"max_tokens":1}}},"supportedNodes":["anthropic","lmChatAnthropic"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vendors/Anthropic/anthropic.svg"},
2
+ {"name":"anthropicApi","displayName":"Anthropic","documentationUrl":"anthropic","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""},{"displayName":"Base URL","name":"url","type":"string","default":"https://api.anthropic.com","description":"Override the default base URL for the API"},{"displayName":"Add Custom Header","name":"header","type":"boolean","default":false},{"displayName":"Header Name","name":"headerName","type":"string","displayOptions":{"show":{"header":[true]}},"default":""},{"displayName":"Header Value","name":"headerValue","type":"string","typeOptions":{"password":true},"displayOptions":{"show":{"header":[true]}},"default":""}],"test":{"request":{"baseURL":"={{$credentials?.url}}","url":"/v1/messages","method":"POST","headers":{"anthropic-version":"2023-06-01"},"body":{"model":"claude-3-haiku-20240307","messages":[{"role":"user","content":"Hey"}],"max_tokens":1}}},"supportedNodes":["anthropic","lmChatAnthropic"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vendors/Anthropic/anthropic.svg","authenticate":{}},
3
3
  {"name":"azureOpenAiApi","displayName":"Azure Open AI","documentationUrl":"azureopenai","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""},{"displayName":"Resource Name","name":"resourceName","type":"string","required":true,"default":""},{"displayName":"API Version","name":"apiVersion","type":"string","required":true,"default":"2025-03-01-preview"},{"displayName":"Endpoint","name":"endpoint","type":"string","placeholder":"https://westeurope.api.cognitive.microsoft.com"}],"authenticate":{"type":"generic","properties":{"headers":{"api-key":"={{$credentials.apiKey}}"}}},"supportedNodes":["embeddingsAzureOpenAi","lmChatAzureOpenAi"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsAzureOpenAi/azure.svg"},
4
4
  {"name":"azureEntraCognitiveServicesOAuth2Api","displayName":"Azure Entra ID (Azure Active Directory) API","extends":["oAuth2Api"],"documentationUrl":"azureentracognitiveservicesoauth2api","properties":[{"displayName":"Grant Type","name":"grantType","type":"hidden","default":"authorizationCode"},{"displayName":"Resource Name","name":"resourceName","type":"string","required":true,"default":""},{"displayName":"API Version","name":"apiVersion","type":"string","required":true,"default":"2025-03-01-preview"},{"displayName":"Endpoint","name":"endpoint","type":"string","placeholder":"https://westeurope.api.cognitive.microsoft.com"},{"displayName":"Tenant ID","name":"tenantId","type":"string","default":"common","description":"Enter your Azure Tenant ID (Directory ID) or keep \"common\" for multi-tenant apps. Using a specific Tenant ID is generally recommended and required for certain authentication flows.","placeholder":"e.g., xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx or common"},{"displayName":"Authorization URL","name":"authUrl","type":"hidden","default":"=https://login.microsoftonline.com/{{$self[\"tenantId\"]}}/oauth2/authorize"},{"displayName":"Access Token URL","name":"accessTokenUrl","type":"hidden","default":"=https://login.microsoftonline.com/{{$self[\"tenantId\"]}}/oauth2/token"},{"displayName":"Additional Body Properties","name":"additionalBodyProperties","type":"hidden","default":"{\"grant_type\": \"client_credentials\", \"resource\": \"https://cognitiveservices.azure.com/\"}"},{"displayName":"Authentication","name":"authentication","type":"hidden","default":"body"},{"displayName":"Custom Scopes","name":"customScopes","type":"boolean","default":false,"description":"Define custom scopes. You might need this if the default scopes are not sufficient or if you want to minimize permissions. Ensure you include \"openid\" and \"offline_access\"."},{"displayName":"Auth URI Query Parameters","name":"authQueryParameters","type":"hidden","default":"","description":"For some services additional query parameters have to be set which can be defined here","placeholder":""},{"displayName":"Enabled Scopes","name":"enabledScopes","type":"string","displayOptions":{"show":{"customScopes":[true]}},"default":"openid offline_access","placeholder":"openid offline_access","description":"Space-separated list of scopes to request."},{"displayName":"Scope","name":"scope","type":"hidden","default":"={{ $self.customScopes ? $self.enabledScopes : \"openid offline_access\"}}"}],"supportedNodes":["lmChatAzureOpenAi"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LmChatAzureOpenAi/azure.svg"},
5
5
  {"name":"cohereApi","displayName":"CohereApi","documentationUrl":"cohere","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""},{"displayName":"Base URL","name":"url","type":"hidden","default":"https://api.cohere.ai"}],"authenticate":{"type":"generic","properties":{"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"={{ $credentials.url }}","url":"/v1/models?page_size=1"}},"supportedNodes":["embeddingsCohere","lmChatCohere","lmCohere","rerankerCohere"],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsCohere/cohere.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsCohere/cohere.dark.svg"}},
@@ -10,6 +10,7 @@
10
10
  {"name":"motorheadApi","displayName":"MotorheadApi","documentationUrl":"motorhead","properties":[{"displayName":"Host","name":"host","required":true,"type":"string","default":"https://api.getmetal.io/v1"},{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""},{"displayName":"Client ID","name":"clientId","type":"string","default":""}],"authenticate":{"type":"generic","properties":{"headers":{"x-metal-client-id":"={{$credentials.clientId}}","x-metal-api-key":"={{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"={{$credentials.host}}/keys/current"}},"supportedNodes":["memoryMotorhead"],"icon":"fa:file-export","iconColor":"black"},
11
11
  {"name":"milvusApi","displayName":"Milvus","documentationUrl":"milvus","properties":[{"displayName":"Base URL","name":"baseUrl","required":true,"type":"string","default":"http://localhost:19530"},{"displayName":"Username","name":"username","type":"string","default":""},{"displayName":"Password","name":"password","type":"string","typeOptions":{"password":true},"default":""}],"authenticate":{"type":"generic","properties":{"headers":{"Authorization":"=Bearer {{$credentials.username}}:{{$credentials.password}}"}}},"test":{"request":{"baseURL":"={{ $credentials.baseUrl }}","url":"/v1/vector/collections","method":"GET"}},"supportedNodes":["vectorStoreMilvus"],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreMilvus/milvus-icon-black.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStoreMilvus/milvus-icon-white.svg"}},
12
12
  {"name":"mistralCloudApi","displayName":"Mistral Cloud API","documentationUrl":"mistral","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""}],"authenticate":{"type":"generic","properties":{"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"https://api.mistral.ai/v1","url":"/models","method":"GET"}},"supportedNodes":["embeddingsMistralCloud","lmChatMistralCloud"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsMistralCloud/mistral.svg"},
13
+ {"name":"lemonadeApi","displayName":"Lemonade","documentationUrl":"lemonade","properties":[{"displayName":"Base URL","name":"baseUrl","required":true,"type":"string","default":"http://localhost:8000/api/v1"},{"displayName":"API Key","hint":"Optional API key for Lemonade server authentication. Not required for default Lemonade installation","name":"apiKey","type":"string","typeOptions":{"password":true},"default":"","required":false}],"test":{"request":{"baseURL":"={{ $credentials.baseUrl }}","url":"/models","method":"GET"}},"supportedNodes":["embeddingsLemonade","lmChatLemonade","lmLemonade"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsLemonade/lemonade.svg","authenticate":{}},
13
14
  {"name":"ollamaApi","displayName":"Ollama","documentationUrl":"ollama","properties":[{"displayName":"Base URL","name":"baseUrl","required":true,"type":"string","default":"http://localhost:11434"},{"displayName":"API Key","hint":"When using Ollama behind a proxy with authentication (such as Open WebUI), provide the Bearer token/API key here. This is not required for the default Ollama installation","name":"apiKey","type":"string","typeOptions":{"password":true},"default":"","required":false}],"authenticate":{"type":"generic","properties":{"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"={{ $credentials.baseUrl }}","url":"/api/tags","method":"GET"}},"supportedNodes":["ollama","embeddingsOllama","lmChatOllama","lmOllama"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vendors/Ollama/ollama.svg"},
14
15
  {"name":"openRouterApi","displayName":"OpenRouter","documentationUrl":"openrouter","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""},{"displayName":"Base URL","name":"url","type":"hidden","default":"https://openrouter.ai/api/v1"}],"authenticate":{"type":"generic","properties":{"headers":{"Authorization":"=Bearer {{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"={{ $credentials.url }}","url":"/key"}},"supportedNodes":["lmChatOpenRouter"],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LmChatOpenRouter/openrouter.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LmChatOpenRouter/openrouter.dark.svg"}},
15
16
  {"name":"pineconeApi","displayName":"PineconeApi","documentationUrl":"pinecone","properties":[{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""}],"authenticate":{"type":"generic","properties":{"headers":{"Api-Key":"={{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"https://api.pinecone.io/indexes","headers":{"accept":"application/json; charset=utf-8"}}},"supportedNodes":["vectorStorePinecone","vectorStorePineconeInsert","vectorStorePineconeLoad"],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStorePinecone/pinecone.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vector_store/VectorStorePinecone/pinecone.dark.svg"}},