UNPKG

n8n

Version:

n8n Workflow Automation Tool

100 lines 5.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildContextToolDescription = buildContextToolDescription; exports.buildActionToolDescription = buildActionToolDescription; const integration_tool_schema_1 = require("./integration-tool-schema"); function buildContextToolDescription(descriptor) { return [ `Read context from the ${descriptor.integration.type} integration connection.`, `Available queries: ${descriptor.contextQueries.join(', ')}.`, ...(descriptor.contextToolGuidance ?? []), 'Query inputs:', ...descriptor.contextToolDefinitions.map((definition) => `- ${definition.description}`), `Batch form: pass queries as an array of up to ${integration_tool_schema_1.MAX_BATCH_OPERATIONS} { query, input } objects to fetch multiple pieces of context in one tool call.`, 'Use this tool for read-only lookup before choosing an action target.', ].join('\n\n'); } function buildActionToolDescription(descriptor) { return [ `Take actions in the ${descriptor.integration.type} integration connection.`, `Available actions: ${descriptor.actions.join(', ')}.`, ...(descriptor.actionToolGuidance ?? []), 'Action inputs:', ...descriptor.actionToolDefinitions.map((definition) => `- ${definition.description}`), `Batch form: pass actions as an array of up to ${integration_tool_schema_1.MAX_BATCH_OPERATIONS} { action, input } objects. Batch actions run sequentially and cannot include cards that wait for a user response.`, 'respond uses the latest message context for this integration connection.', 'Use message.card for cards, images, key-value summaries, and feedback requests. Include components such as section, fields, image, divider, button, select, or radio_select.', 'For fields components, use { type: "fields", fields: [{ label: "Account", value: "Acme" }] }. The key items is also accepted as a fields alias.', 'For button components, use { type: "button", label: "Approve", value: "approve" }. If label is omitted, text is used as the button label.', 'For radio-style choices, use { type: "radio_select", label: "Next step", options: [{ label: "Approve", value: "approve" }] }.', 'Use only the generic shape: message.text plus optional message.card. Do not provide platform-native component payloads, formatted text objects, or attachments; rendering is handled internally.', ...buildGenericCardGuidance(), 'Interactive message.card components (button, select, or radio_select) send the message first, then suspend this action until the user responds.', 'Display-only message.card components without buttons/selects render the card and let the agent continue immediately.', ].join('\n\n'); } function buildGenericCardGuidance() { return [ 'Generic card examples:', [ 'Radio choice card:', '```json', JSON.stringify({ action: 'respond', input: { message: { text: 'Acme Executive Briefing — Next Steps', card: { title: 'Acme Corporation — Executive Briefing Next Steps', components: [ { type: 'section', text: '30X Expansion Briefing ($3.75M) — Internal owner: Paul G | Briefing contact: Mike D\n\nWhat should happen next?', }, { type: 'divider' }, { type: 'radio_select', id: 'next_step_selection', label: 'Next step', options: [ { label: 'Schedule exec briefing prep call with Paul G', value: 'schedule_prep_call', }, { label: 'Draft briefing agenda doc for Mike D', value: 'draft_briefing_doc', }, ], }, ], }, }, }, }, null, 2), '```', ].join('\n'), [ 'Button card:', '```json', JSON.stringify({ action: 'respond', input: { message: { text: 'Approve or revise the briefing draft', card: { components: [ { type: 'section', text: 'Review the briefing draft.' }, { type: 'button', label: 'Approve', value: 'approve', style: 'primary' }, { type: 'button', label: 'Revise', value: 'revise', style: 'default' }, ], }, }, }, }, null, 2), '```', ].join('\n'), 'Never send message.blocks, components of type actions, elements arrays, action_id, radio_buttons, or formatted text objects such as { type: "plain_text", text: "..." } or { type: "mrkdwn", text: "..." }.', ]; } //# sourceMappingURL=integration-tool-descriptions.js.map