diff --git a/packages/@n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts b/packages/@n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts index 029bce48f6..cf412ea5d3 100644 --- a/packages/@n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts +++ b/packages/@n8n/nodes-langchain/nodes/tools/ToolCode/ToolCode.node.ts @@ -15,7 +15,11 @@ import type { } from 'n8n-workflow'; import { jsonParse, NodeConnectionType, NodeOperationError } from 'n8n-workflow'; -import { inputSchemaField, jsonSchemaExampleField, schemaTypeField } from '@utils/descriptions'; +import { + buildInputSchemaField, + buildJsonSchemaExampleField, + schemaTypeField, +} from '@utils/descriptions'; import { convertJsonSchemaToZod, generateSchema } from '@utils/schemaParsing'; import { getConnectionHintNoticeField } from '@utils/sharedFields'; @@ -168,8 +172,8 @@ export class ToolCode implements INodeType { default: false, }, { ...schemaTypeField, displayOptions: { show: { specifyInputSchema: [true] } } }, - jsonSchemaExampleField, - inputSchemaField, + buildJsonSchemaExampleField({ showExtraProps: { specifyInputSchema: [true] } }), + buildInputSchemaField({ showExtraProps: { specifyInputSchema: [true] } }), ], }; diff --git a/packages/@n8n/nodes-langchain/utils/descriptions.ts b/packages/@n8n/nodes-langchain/utils/descriptions.ts index a90b27bb6c..ed878bb114 100644 --- a/packages/@n8n/nodes-langchain/utils/descriptions.ts +++ b/packages/@n8n/nodes-langchain/utils/descriptions.ts @@ -1,4 +1,4 @@ -import type { INodeProperties } from 'n8n-workflow'; +import type { DisplayCondition, INodeProperties, NodeParameterValue } from 'n8n-workflow'; export const schemaTypeField: INodeProperties = { displayName: 'Schema Type', @@ -21,7 +21,9 @@ export const schemaTypeField: INodeProperties = { description: 'How to specify the schema for the function', }; -export const jsonSchemaExampleField: INodeProperties = { +export const buildJsonSchemaExampleField = (props?: { + showExtraProps?: Record | undefined>; +}): INodeProperties => ({ displayName: 'JSON Example', name: 'jsonSchemaExample', type: 'json', @@ -34,13 +36,18 @@ export const jsonSchemaExampleField: INodeProperties = { }, displayOptions: { show: { + ...props?.showExtraProps, schemaType: ['fromJson'], }, }, description: 'Example JSON object to use to generate the schema', -}; +}); -export const inputSchemaField: INodeProperties = { +export const jsonSchemaExampleField = buildJsonSchemaExampleField(); + +export const buildInputSchemaField = (props?: { + showExtraProps?: Record | undefined>; +}): INodeProperties => ({ displayName: 'Input Schema', name: 'inputSchema', type: 'json', @@ -59,11 +66,14 @@ export const inputSchemaField: INodeProperties = { }, displayOptions: { show: { + ...props?.showExtraProps, schemaType: ['manual'], }, }, description: 'Schema to use for the function', -}; +}); + +export const inputSchemaField = buildInputSchemaField(); export const promptTypeOptions: INodeProperties = { displayName: 'Source for Prompt (User Message)',