@n8n/n8n-nodes-langchain 1.117.0 → 1.118.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 (83) hide show
  1. package/dist/credentials/McpOAuth2Api.credentials.js +45 -0
  2. package/dist/credentials/McpOAuth2Api.credentials.js.map +1 -0
  3. package/dist/known/credentials.json +10 -0
  4. package/dist/known/nodes.json +4 -0
  5. package/dist/nodes/Guardrails/Guardrails.node.js +73 -0
  6. package/dist/nodes/Guardrails/Guardrails.node.js.map +1 -0
  7. package/dist/nodes/Guardrails/actions/checks/jailbreak.js +50 -0
  8. package/dist/nodes/Guardrails/actions/checks/jailbreak.js.map +1 -0
  9. package/dist/nodes/Guardrails/actions/checks/keywords.js +66 -0
  10. package/dist/nodes/Guardrails/actions/checks/keywords.js.map +1 -0
  11. package/dist/nodes/Guardrails/actions/checks/nsfw.js +53 -0
  12. package/dist/nodes/Guardrails/actions/checks/nsfw.js.map +1 -0
  13. package/dist/nodes/Guardrails/actions/checks/pii.js +232 -0
  14. package/dist/nodes/Guardrails/actions/checks/pii.js.map +1 -0
  15. package/dist/nodes/Guardrails/actions/checks/secretKeys.js +201 -0
  16. package/dist/nodes/Guardrails/actions/checks/secretKeys.js.map +1 -0
  17. package/dist/nodes/Guardrails/actions/checks/topicalAlignment.js +38 -0
  18. package/dist/nodes/Guardrails/actions/checks/topicalAlignment.js.map +1 -0
  19. package/dist/nodes/Guardrails/actions/checks/urls.js +245 -0
  20. package/dist/nodes/Guardrails/actions/checks/urls.js.map +1 -0
  21. package/dist/nodes/Guardrails/actions/process.js +220 -0
  22. package/dist/nodes/Guardrails/actions/process.js.map +1 -0
  23. package/dist/nodes/Guardrails/actions/types.js +35 -0
  24. package/dist/nodes/Guardrails/actions/types.js.map +1 -0
  25. package/dist/nodes/Guardrails/description.js +454 -0
  26. package/dist/nodes/Guardrails/description.js.map +1 -0
  27. package/dist/nodes/Guardrails/guardrails.svg +11 -0
  28. package/dist/nodes/Guardrails/helpers/base.js +67 -0
  29. package/dist/nodes/Guardrails/helpers/base.js.map +1 -0
  30. package/dist/nodes/Guardrails/helpers/common.js +45 -0
  31. package/dist/nodes/Guardrails/helpers/common.js.map +1 -0
  32. package/dist/nodes/Guardrails/helpers/configureNodeInputs.js +50 -0
  33. package/dist/nodes/Guardrails/helpers/configureNodeInputs.js.map +1 -0
  34. package/dist/nodes/Guardrails/helpers/mappers.js +100 -0
  35. package/dist/nodes/Guardrails/helpers/mappers.js.map +1 -0
  36. package/dist/nodes/Guardrails/helpers/model.js +144 -0
  37. package/dist/nodes/Guardrails/helpers/model.js.map +1 -0
  38. package/dist/nodes/Guardrails/helpers/preflight.js +61 -0
  39. package/dist/nodes/Guardrails/helpers/preflight.js.map +1 -0
  40. package/dist/nodes/agents/Agent/V1/AgentV1.node.js +6 -0
  41. package/dist/nodes/agents/Agent/V1/AgentV1.node.js.map +1 -1
  42. package/dist/nodes/agents/Agent/V2/AgentV2.node.js +8 -0
  43. package/dist/nodes/agents/Agent/V2/AgentV2.node.js.map +1 -1
  44. package/dist/nodes/agents/Agent/V3/AgentV3.node.js +8 -0
  45. package/dist/nodes/agents/Agent/V3/AgentV3.node.js.map +1 -1
  46. package/dist/nodes/agents/Agent/agents/SqlAgent/description.js +10 -0
  47. package/dist/nodes/agents/Agent/agents/SqlAgent/description.js.map +1 -1
  48. package/dist/nodes/agents/Agent/agents/ToolsAgent/V2/execute.js +22 -0
  49. package/dist/nodes/agents/Agent/agents/ToolsAgent/V2/execute.js.map +1 -1
  50. package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/execute.js +8 -3
  51. package/dist/nodes/agents/Agent/agents/ToolsAgent/V3/execute.js.map +1 -1
  52. package/dist/nodes/chains/ChainLLM/methods/config.js +4 -0
  53. package/dist/nodes/chains/ChainLLM/methods/config.js.map +1 -1
  54. package/dist/nodes/chains/ChainRetrievalQA/ChainRetrievalQa.node.js +6 -0
  55. package/dist/nodes/chains/ChainRetrievalQA/ChainRetrievalQa.node.js.map +1 -1
  56. package/dist/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.js +448 -24
  57. package/dist/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.js.map +1 -1
  58. package/dist/nodes/llms/LMChatOpenAi/common.js +155 -0
  59. package/dist/nodes/llms/LMChatOpenAi/common.js.map +1 -0
  60. package/dist/nodes/llms/LMChatOpenAi/types.js +17 -0
  61. package/dist/nodes/llms/LMChatOpenAi/types.js.map +1 -0
  62. package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js +48 -3
  63. package/dist/nodes/mcp/McpClientTool/McpClientTool.node.js.map +1 -1
  64. package/dist/nodes/mcp/McpClientTool/loadOptions.js +2 -1
  65. package/dist/nodes/mcp/McpClientTool/loadOptions.js.map +1 -1
  66. package/dist/nodes/mcp/McpClientTool/types.js.map +1 -1
  67. package/dist/nodes/mcp/McpClientTool/utils.js +66 -4
  68. package/dist/nodes/mcp/McpClientTool/utils.js.map +1 -1
  69. package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js +45 -2
  70. package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js.map +1 -1
  71. package/dist/nodes/vendors/OpenAi/helpers/utils.js +5 -0
  72. package/dist/nodes/vendors/OpenAi/helpers/utils.js.map +1 -1
  73. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/message.operation.js +6 -12
  74. package/dist/nodes/vendors/OpenAi/v1/actions/assistant/message.operation.js.map +1 -1
  75. package/dist/nodes/vendors/OpenAi/v2/actions/text/response.operation.js +31 -6
  76. package/dist/nodes/vendors/OpenAi/v2/actions/text/response.operation.js.map +1 -1
  77. package/dist/types/credentials.json +1 -0
  78. package/dist/types/nodes.json +12 -11
  79. package/dist/utils/descriptions.js +18 -0
  80. package/dist/utils/descriptions.js.map +1 -1
  81. package/dist/utils/helpers.js +4 -1
  82. package/dist/utils/helpers.js.map +1 -1
  83. package/package.json +10 -8
@@ -41,6 +41,16 @@ var import_polling = require("../../../helpers/polling");
41
41
  var import_transport = require("../../../transport");
42
42
  var import_descriptions = require("../descriptions");
43
43
  var import_responses = require("./helpers/responses");
44
+ const jsonSchemaExample = `{
45
+ "type": "object",
46
+ "properties": {
47
+ "message": {
48
+ "type": "string"
49
+ }
50
+ },
51
+ "additionalProperties": false,
52
+ "required": ["message"]
53
+ }`;
44
54
  const properties = [
45
55
  (0, import_descriptions.modelRLC)("modelSearch"),
46
56
  {
@@ -99,6 +109,7 @@ const properties = [
99
109
  options: [
100
110
  {
101
111
  displayName: "Search Context Size",
112
+ description: "High level guidance for the amount of context window space to use for the search",
102
113
  name: "searchContextSize",
103
114
  type: "options",
104
115
  default: "medium",
@@ -148,6 +159,7 @@ const properties = [
148
159
  {
149
160
  displayName: "Vector Store IDs",
150
161
  name: "vectorStoreIds",
162
+ description: "The vector store IDs to use for the file search. Vector stores are managed via OpenAI Dashboard.",
151
163
  type: "json",
152
164
  default: "[]",
153
165
  required: true
@@ -172,7 +184,7 @@ const properties = [
172
184
  name: "codeInterpreter",
173
185
  type: "boolean",
174
186
  default: true,
175
- description: "Whether to allow the model to execute code in a local environment"
187
+ description: "Whether to allow the model to execute code in a sandboxed environment"
176
188
  }
177
189
  ]
178
190
  },
@@ -281,6 +293,7 @@ const properties = [
281
293
  displayName: "Prompt",
282
294
  name: "promptConfig",
283
295
  type: "fixedCollection",
296
+ description: 'Configure the reusable prompt template configured via OpenAI Dashboard. <a href="https://platform.openai.com/docs/guides/prompt-engineering#reusable-prompts">Learn more</a>.',
284
297
  default: { promptOptions: [{ promptId: "" }] },
285
298
  options: [
286
299
  {
@@ -399,10 +412,11 @@ const properties = [
399
412
  displayName: "Type",
400
413
  name: "type",
401
414
  type: "options",
402
- default: "text",
415
+ default: "",
403
416
  options: [
404
417
  { name: "Text", value: "text" },
405
- { name: "JSON Schema(recommended)", value: "json_schema" },
418
+ // eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
419
+ { name: "JSON Schema (recommended)", value: "json_schema" },
406
420
  { name: "JSON Object", value: "json_object" }
407
421
  ]
408
422
  },
@@ -421,7 +435,7 @@ const properties = [
421
435
  displayName: "Name",
422
436
  name: "name",
423
437
  type: "string",
424
- default: "",
438
+ default: "my_schema",
425
439
  description: "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.",
426
440
  displayOptions: {
427
441
  show: {
@@ -429,11 +443,22 @@ const properties = [
429
443
  }
430
444
  }
431
445
  },
446
+ {
447
+ displayName: 'All properties in the schema must be set to "required", when using "strict" mode.',
448
+ name: "requiredNotice",
449
+ type: "notice",
450
+ default: "",
451
+ displayOptions: {
452
+ show: {
453
+ strict: [true]
454
+ }
455
+ }
456
+ },
432
457
  {
433
458
  displayName: "Schema",
434
459
  name: "schema",
435
460
  type: "json",
436
- default: "",
461
+ default: jsonSchemaExample,
437
462
  description: "The schema of the response format",
438
463
  displayOptions: {
439
464
  show: {
@@ -458,7 +483,7 @@ const properties = [
458
483
  name: "strict",
459
484
  type: "boolean",
460
485
  default: false,
461
- description: "Whether to enforce the response format strictly",
486
+ description: "Whether to require that the AI will always generate responses that match the provided JSON Schema",
462
487
  displayOptions: {
463
488
  show: {
464
489
  type: ["json_schema"]
@@ -1 +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: '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\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\t// if there's conversation, we don't need to include function_call or reasoning items in the request\n\t\t// if we include them, OpenAI will throw \"Duplicate item with id\" error\n\t\tif (!body.conversation) {\n\t\t\tbody.input.push.apply(body.input, toolCalls);\n\t\t}\n\n\t\tfor (const item of toolCalls) {\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\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"]}
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 jsonSchemaExample = `{\n \"type\": \"object\",\n \"properties\": {\n \"message\": {\n \"type\": \"string\"\n }\n },\n \"additionalProperties\": false,\n \"required\": [\"message\"]\n}`;\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\tdescription:\n\t\t\t\t\t\t\t'High level guidance for the amount of context window space to use for the search',\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: '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\tdescription:\n\t\t\t\t\t\t\t'The vector store IDs to use for the file search. Vector stores are managed via OpenAI Dashboard.',\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 sandboxed 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\tdescription:\n\t\t\t\t\t'Configure the reusable prompt template configured via OpenAI Dashboard. <a href=\"https://platform.openai.com/docs/guides/prompt-engineering#reusable-prompts\">Learn more</a>.',\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: '',\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// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased\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: 'my_schema',\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:\n\t\t\t\t\t\t\t\t\t'All properties in the schema must be set to \"required\", when using \"strict\" mode.',\n\t\t\t\t\t\t\t\tname: 'requiredNotice',\n\t\t\t\t\t\t\t\ttype: 'notice',\n\t\t\t\t\t\t\t\tdefault: '',\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\tstrict: [true],\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: jsonSchemaExample,\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:\n\t\t\t\t\t\t\t\t\t'Whether to require that the AI will always generate responses that match the provided JSON Schema',\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\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\t// if there's conversation, we don't need to include function_call or reasoning items in the request\n\t\t// if we include them, OpenAI will throw \"Duplicate item with id\" error\n\t\tif (!body.conversation) {\n\t\t\tbody.input.push.apply(body.input, toolCalls);\n\t\t}\n\n\t\tfor (const item of toolCalls) {\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\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"]}
@@ -7,6 +7,7 @@
7
7
  {"name":"googlePalmApi","displayName":"Google Gemini(PaLM) Api","documentationUrl":"google","properties":[{"displayName":"Host","name":"host","required":true,"type":"string","default":"https://generativelanguage.googleapis.com"},{"displayName":"API Key","name":"apiKey","type":"string","typeOptions":{"password":true},"required":true,"default":""}],"authenticate":{"type":"generic","properties":{"qs":{"key":"={{$credentials.apiKey}}"}}},"test":{"request":{"baseURL":"={{$credentials.host}}/v1beta/models"}},"supportedNodes":["googleGemini","embeddingsGoogleGemini","lmChatGoogleGemini"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/vendors/GoogleGemini/gemini.svg"},
8
8
  {"name":"groqApi","displayName":"Groq","documentationUrl":"groq","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.groq.com/openai/v1","url":"/models"}},"supportedNodes":["lmChatGroq"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/llms/LmChatGroq/groq.svg"},
9
9
  {"name":"huggingFaceApi","displayName":"HuggingFaceApi","documentationUrl":"huggingface","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://huggingface.co","url":"/api/whoami-v2"}},"supportedNodes":["embeddingsHuggingFaceInference","lmOpenHuggingFaceInference"],"iconUrl":"icons/@n8n/n8n-nodes-langchain/dist/nodes/embeddings/EmbeddingsHuggingFaceInference/huggingface.svg"},
10
+ {"name":"mcpOAuth2Api","extends":["oAuth2Api"],"displayName":"MCP OAuth2 API","documentationUrl":"mcp","properties":[{"displayName":"Use Dynamic Client Registration","name":"useDynamicClientRegistration","type":"boolean","default":true,"required":true}],"supportedNodes":["mcpClientTool"],"iconUrl":{"light":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.svg","dark":"icons/@n8n/n8n-nodes-langchain/dist/nodes/mcp/mcp.dark.svg"}},
10
11
  {"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
12
  {"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
13
  {"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"},