@atom8n/ai-workflow-builder 1.2.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.
- package/dist/agents/responder.agent.d.ts +21 -0
- package/dist/agents/responder.agent.js +71 -0
- package/dist/agents/responder.agent.js.map +1 -0
- package/dist/agents/supervisor.agent.d.ts +31 -0
- package/dist/agents/supervisor.agent.js +68 -0
- package/dist/agents/supervisor.agent.js.map +1 -0
- package/dist/ai-workflow-builder-agent.service.d.ts +32 -0
- package/dist/ai-workflow-builder-agent.service.js +236 -0
- package/dist/ai-workflow-builder-agent.service.js.map +1 -0
- package/dist/build.tsbuildinfo +1 -0
- package/dist/chains/conversation-compact.d.ts +7 -0
- package/dist/chains/conversation-compact.js +56 -0
- package/dist/chains/conversation-compact.js.map +1 -0
- package/dist/chains/parameter-updater.d.ts +16 -0
- package/dist/chains/parameter-updater.js +112 -0
- package/dist/chains/parameter-updater.js.map +1 -0
- package/dist/chains/prompt-categorization.d.ts +3 -0
- package/dist/chains/prompt-categorization.js +31 -0
- package/dist/chains/prompt-categorization.js.map +1 -0
- package/dist/chains/test/integration/test-helpers.d.ts +3 -0
- package/dist/chains/test/integration/test-helpers.js +16 -0
- package/dist/chains/test/integration/test-helpers.js.map +1 -0
- package/dist/chains/workflow-name.d.ts +4 -0
- package/dist/chains/workflow-name.js +22 -0
- package/dist/chains/workflow-name.js.map +1 -0
- package/dist/constants.d.ts +14 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors/index.d.ts +52 -0
- package/dist/errors/index.js +137 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/llm-config.d.ts +11 -0
- package/dist/llm-config.js +126 -0
- package/dist/llm-config.js.map +1 -0
- package/dist/multi-agent-workflow-subgraphs.d.ts +122 -0
- package/dist/multi-agent-workflow-subgraphs.js +159 -0
- package/dist/multi-agent-workflow-subgraphs.js.map +1 -0
- package/dist/parent-graph-state.d.ts +27 -0
- package/dist/parent-graph-state.js +47 -0
- package/dist/parent-graph-state.js.map +1 -0
- package/dist/prompts/agents/builder.prompt.d.ts +1 -0
- package/dist/prompts/agents/builder.prompt.js +320 -0
- package/dist/prompts/agents/builder.prompt.js.map +1 -0
- package/dist/prompts/agents/configurator.prompt.d.ts +2 -0
- package/dist/prompts/agents/configurator.prompt.js +143 -0
- package/dist/prompts/agents/configurator.prompt.js.map +1 -0
- package/dist/prompts/agents/discovery.prompt.d.ts +11 -0
- package/dist/prompts/agents/discovery.prompt.js +260 -0
- package/dist/prompts/agents/discovery.prompt.js.map +1 -0
- package/dist/prompts/agents/responder.prompt.d.ts +1 -0
- package/dist/prompts/agents/responder.prompt.js +41 -0
- package/dist/prompts/agents/responder.prompt.js.map +1 -0
- package/dist/prompts/agents/supervisor.prompt.d.ts +1 -0
- package/dist/prompts/agents/supervisor.prompt.js +43 -0
- package/dist/prompts/agents/supervisor.prompt.js.map +1 -0
- package/dist/prompts/builder/index.d.ts +2 -0
- package/dist/prompts/builder/index.js +7 -0
- package/dist/prompts/builder/index.js.map +1 -0
- package/dist/prompts/builder/prompt-builder.d.ts +17 -0
- package/dist/prompts/builder/prompt-builder.js +147 -0
- package/dist/prompts/builder/prompt-builder.js.map +1 -0
- package/dist/prompts/builder/types.d.ts +22 -0
- package/dist/prompts/builder/types.js +3 -0
- package/dist/prompts/builder/types.js.map +1 -0
- package/dist/prompts/chains/categorization.prompt.d.ts +43 -0
- package/dist/prompts/chains/categorization.prompt.js +86 -0
- package/dist/prompts/chains/categorization.prompt.js.map +1 -0
- package/dist/prompts/chains/compact.prompt.d.ts +2 -0
- package/dist/prompts/chains/compact.prompt.js +16 -0
- package/dist/prompts/chains/compact.prompt.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/examples/if-node.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/examples/if-node.js +141 -0
- package/dist/prompts/chains/parameter-updater/examples/if-node.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/examples/index.d.ts +6 -0
- package/dist/prompts/chains/parameter-updater/examples/index.js +16 -0
- package/dist/prompts/chains/parameter-updater/examples/index.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/examples/resource-locator.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/examples/resource-locator.js +83 -0
- package/dist/prompts/chains/parameter-updater/examples/resource-locator.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/examples/set-node.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/examples/set-node.js +151 -0
- package/dist/prompts/chains/parameter-updater/examples/set-node.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/examples/simple-updates.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/examples/simple-updates.js +54 -0
- package/dist/prompts/chains/parameter-updater/examples/simple-updates.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/examples/switch-node.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/examples/switch-node.js +131 -0
- package/dist/prompts/chains/parameter-updater/examples/switch-node.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/examples/tool-nodes.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/examples/tool-nodes.js +74 -0
- package/dist/prompts/chains/parameter-updater/examples/tool-nodes.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/embedding-nodes.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/embedding-nodes.js +70 -0
- package/dist/prompts/chains/parameter-updater/guides/embedding-nodes.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/gmail.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/gmail.js +28 -0
- package/dist/prompts/chains/parameter-updater/guides/gmail.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/http-request.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/http-request.js +139 -0
- package/dist/prompts/chains/parameter-updater/guides/http-request.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/if-node.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/if-node.js +159 -0
- package/dist/prompts/chains/parameter-updater/guides/if-node.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/index.d.ts +10 -0
- package/dist/prompts/chains/parameter-updater/guides/index.js +24 -0
- package/dist/prompts/chains/parameter-updater/guides/index.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/resource-locator.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/resource-locator.js +99 -0
- package/dist/prompts/chains/parameter-updater/guides/resource-locator.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/set-node.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/set-node.js +94 -0
- package/dist/prompts/chains/parameter-updater/guides/set-node.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/switch-node.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/switch-node.js +75 -0
- package/dist/prompts/chains/parameter-updater/guides/switch-node.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/system-message.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/system-message.js +96 -0
- package/dist/prompts/chains/parameter-updater/guides/system-message.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/text-fields.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/text-fields.js +31 -0
- package/dist/prompts/chains/parameter-updater/guides/text-fields.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/guides/tool-nodes.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/guides/tool-nodes.js +76 -0
- package/dist/prompts/chains/parameter-updater/guides/tool-nodes.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/index.d.ts +8 -0
- package/dist/prompts/chains/parameter-updater/index.js +35 -0
- package/dist/prompts/chains/parameter-updater/index.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/instance-url.d.ts +1 -0
- package/dist/prompts/chains/parameter-updater/instance-url.js +15 -0
- package/dist/prompts/chains/parameter-updater/instance-url.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/parameter-updater.prompt.d.ts +4 -0
- package/dist/prompts/chains/parameter-updater/parameter-updater.prompt.js +52 -0
- package/dist/prompts/chains/parameter-updater/parameter-updater.prompt.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/registry.d.ts +4 -0
- package/dist/prompts/chains/parameter-updater/registry.js +66 -0
- package/dist/prompts/chains/parameter-updater/registry.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/types.d.ts +18 -0
- package/dist/prompts/chains/parameter-updater/types.js +3 -0
- package/dist/prompts/chains/parameter-updater/types.js.map +1 -0
- package/dist/prompts/chains/parameter-updater/utils.d.ts +2 -0
- package/dist/prompts/chains/parameter-updater/utils.js +16 -0
- package/dist/prompts/chains/parameter-updater/utils.js.map +1 -0
- package/dist/prompts/chains/workflow-name.prompt.d.ts +2 -0
- package/dist/prompts/chains/workflow-name.prompt.js +11 -0
- package/dist/prompts/chains/workflow-name.prompt.js.map +1 -0
- package/dist/prompts/index.d.ts +12 -0
- package/dist/prompts/index.js +50 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/legacy-agent.prompt.d.ts +6 -0
- package/dist/prompts/legacy-agent.prompt.js +594 -0
- package/dist/prompts/legacy-agent.prompt.js.map +1 -0
- package/dist/session-manager.service.d.ts +16 -0
- package/dist/session-manager.service.js +125 -0
- package/dist/session-manager.service.js.map +1 -0
- package/dist/subgraphs/builder.subgraph.d.ts +132 -0
- package/dist/subgraphs/builder.subgraph.js +173 -0
- package/dist/subgraphs/builder.subgraph.js.map +1 -0
- package/dist/subgraphs/configurator.subgraph.d.ts +142 -0
- package/dist/subgraphs/configurator.subgraph.js +173 -0
- package/dist/subgraphs/configurator.subgraph.js.map +1 -0
- package/dist/subgraphs/discovery.subgraph.d.ts +158 -0
- package/dist/subgraphs/discovery.subgraph.js +221 -0
- package/dist/subgraphs/discovery.subgraph.js.map +1 -0
- package/dist/subgraphs/subgraph-interface.d.ts +23 -0
- package/dist/subgraphs/subgraph-interface.js +7 -0
- package/dist/subgraphs/subgraph-interface.js.map +1 -0
- package/dist/tools/add-node.tool.d.ts +54 -0
- package/dist/tools/add-node.tool.js +176 -0
- package/dist/tools/add-node.tool.js.map +1 -0
- package/dist/tools/best-practices/chatbot.d.ts +7 -0
- package/dist/tools/best-practices/chatbot.js +118 -0
- package/dist/tools/best-practices/chatbot.js.map +1 -0
- package/dist/tools/best-practices/content-generation.d.ts +7 -0
- package/dist/tools/best-practices/content-generation.js +115 -0
- package/dist/tools/best-practices/content-generation.js.map +1 -0
- package/dist/tools/best-practices/data-analysis.d.ts +7 -0
- package/dist/tools/best-practices/data-analysis.js +367 -0
- package/dist/tools/best-practices/data-analysis.js.map +1 -0
- package/dist/tools/best-practices/data-extraction.d.ts +7 -0
- package/dist/tools/best-practices/data-extraction.js +122 -0
- package/dist/tools/best-practices/data-extraction.js.map +1 -0
- package/dist/tools/best-practices/data-transformation.d.ts +7 -0
- package/dist/tools/best-practices/data-transformation.js +162 -0
- package/dist/tools/best-practices/data-transformation.js.map +1 -0
- package/dist/tools/best-practices/document-processing.d.ts +7 -0
- package/dist/tools/best-practices/document-processing.js +335 -0
- package/dist/tools/best-practices/document-processing.js.map +1 -0
- package/dist/tools/best-practices/enrichment.d.ts +7 -0
- package/dist/tools/best-practices/enrichment.js +271 -0
- package/dist/tools/best-practices/enrichment.js.map +1 -0
- package/dist/tools/best-practices/form-input.d.ts +7 -0
- package/dist/tools/best-practices/form-input.js +173 -0
- package/dist/tools/best-practices/form-input.js.map +1 -0
- package/dist/tools/best-practices/human-in-the-loop.d.ts +7 -0
- package/dist/tools/best-practices/human-in-the-loop.js +268 -0
- package/dist/tools/best-practices/human-in-the-loop.js.map +1 -0
- package/dist/tools/best-practices/index.d.ts +3 -0
- package/dist/tools/best-practices/index.js +29 -0
- package/dist/tools/best-practices/index.js.map +1 -0
- package/dist/tools/best-practices/knowledge-base.d.ts +7 -0
- package/dist/tools/best-practices/knowledge-base.js +268 -0
- package/dist/tools/best-practices/knowledge-base.js.map +1 -0
- package/dist/tools/best-practices/monitoring.d.ts +7 -0
- package/dist/tools/best-practices/monitoring.js +178 -0
- package/dist/tools/best-practices/monitoring.js.map +1 -0
- package/dist/tools/best-practices/notification.d.ts +7 -0
- package/dist/tools/best-practices/notification.js +229 -0
- package/dist/tools/best-practices/notification.js.map +1 -0
- package/dist/tools/best-practices/scheduling.d.ts +7 -0
- package/dist/tools/best-practices/scheduling.js +281 -0
- package/dist/tools/best-practices/scheduling.js.map +1 -0
- package/dist/tools/best-practices/scraping-and-research.d.ts +7 -0
- package/dist/tools/best-practices/scraping-and-research.js +161 -0
- package/dist/tools/best-practices/scraping-and-research.js.map +1 -0
- package/dist/tools/best-practices/triage.d.ts +7 -0
- package/dist/tools/best-practices/triage.js +211 -0
- package/dist/tools/best-practices/triage.js.map +1 -0
- package/dist/tools/builder-tools.d.ts +16 -0
- package/dist/tools/builder-tools.js +36 -0
- package/dist/tools/builder-tools.js.map +1 -0
- package/dist/tools/categorize-prompt.tool.d.ts +5 -0
- package/dist/tools/categorize-prompt.tool.js +85 -0
- package/dist/tools/categorize-prompt.tool.js.map +1 -0
- package/dist/tools/connect-nodes.tool.d.ts +22 -0
- package/dist/tools/connect-nodes.tool.js +231 -0
- package/dist/tools/connect-nodes.tool.js.map +1 -0
- package/dist/tools/engines/node-search-engine.d.ts +16 -0
- package/dist/tools/engines/node-search-engine.js +123 -0
- package/dist/tools/engines/node-search-engine.js.map +1 -0
- package/dist/tools/get-best-practices.tool.d.ts +33 -0
- package/dist/tools/get-best-practices.tool.js +94 -0
- package/dist/tools/get-best-practices.tool.js.map +1 -0
- package/dist/tools/get-node-examples.tool.d.ts +119 -0
- package/dist/tools/get-node-examples.tool.js +189 -0
- package/dist/tools/get-node-examples.tool.js.map +1 -0
- package/dist/tools/get-node-parameter.tool.d.ts +4 -0
- package/dist/tools/get-node-parameter.tool.js +114 -0
- package/dist/tools/get-node-parameter.tool.js.map +1 -0
- package/dist/tools/get-workflow-examples.tool.d.ts +34 -0
- package/dist/tools/get-workflow-examples.tool.js +138 -0
- package/dist/tools/get-workflow-examples.tool.js.map +1 -0
- package/dist/tools/helpers/index.d.ts +4 -0
- package/dist/tools/helpers/index.js +21 -0
- package/dist/tools/helpers/index.js.map +1 -0
- package/dist/tools/helpers/progress.d.ts +9 -0
- package/dist/tools/helpers/progress.js +126 -0
- package/dist/tools/helpers/progress.js.map +1 -0
- package/dist/tools/helpers/response.d.ts +7 -0
- package/dist/tools/helpers/response.js +33 -0
- package/dist/tools/helpers/response.js.map +1 -0
- package/dist/tools/helpers/state.d.ts +14 -0
- package/dist/tools/helpers/state.js +85 -0
- package/dist/tools/helpers/state.js.map +1 -0
- package/dist/tools/helpers/validation.d.ts +13 -0
- package/dist/tools/helpers/validation.js +83 -0
- package/dist/tools/helpers/validation.js.map +1 -0
- package/dist/tools/node-details.tool.d.ts +31 -0
- package/dist/tools/node-details.tool.js +201 -0
- package/dist/tools/node-details.tool.js.map +1 -0
- package/dist/tools/node-search.tool.d.ts +62 -0
- package/dist/tools/node-search.tool.js +155 -0
- package/dist/tools/node-search.tool.js.map +1 -0
- package/dist/tools/remove-connection.tool.d.ts +24 -0
- package/dist/tools/remove-connection.tool.js +234 -0
- package/dist/tools/remove-connection.tool.js.map +1 -0
- package/dist/tools/remove-node.tool.d.ts +4 -0
- package/dist/tools/remove-node.tool.js +106 -0
- package/dist/tools/remove-node.tool.js.map +1 -0
- package/dist/tools/update-node-parameters.tool.d.ts +5 -0
- package/dist/tools/update-node-parameters.tool.js +156 -0
- package/dist/tools/update-node-parameters.tool.js.map +1 -0
- package/dist/tools/utils/connection-parameters.utils.d.ts +8 -0
- package/dist/tools/utils/connection-parameters.utils.js +47 -0
- package/dist/tools/utils/connection-parameters.utils.js.map +1 -0
- package/dist/tools/utils/connection.utils.d.ts +15 -0
- package/dist/tools/utils/connection.utils.js +321 -0
- package/dist/tools/utils/connection.utils.js.map +1 -0
- package/dist/tools/utils/mermaid.utils.d.ts +13 -0
- package/dist/tools/utils/mermaid.utils.js +647 -0
- package/dist/tools/utils/mermaid.utils.js.map +1 -0
- package/dist/tools/utils/node-configuration.utils.d.ts +13 -0
- package/dist/tools/utils/node-configuration.utils.js +75 -0
- package/dist/tools/utils/node-configuration.utils.js.map +1 -0
- package/dist/tools/utils/node-creation.utils.d.ts +8 -0
- package/dist/tools/utils/node-creation.utils.js +56 -0
- package/dist/tools/utils/node-creation.utils.js.map +1 -0
- package/dist/tools/utils/node-positioning.utils.d.ts +17 -0
- package/dist/tools/utils/node-positioning.utils.js +87 -0
- package/dist/tools/utils/node-positioning.utils.js.map +1 -0
- package/dist/tools/utils/parameter-update.utils.d.ts +6 -0
- package/dist/tools/utils/parameter-update.utils.js +75 -0
- package/dist/tools/utils/parameter-update.utils.js.map +1 -0
- package/dist/tools/utils/test/workflows/ai-assistant.workflow.d.ts +2 -0
- package/dist/tools/utils/test/workflows/ai-assistant.workflow.js +542 -0
- package/dist/tools/utils/test/workflows/ai-assistant.workflow.js.map +1 -0
- package/dist/tools/validate-configuration.tool.d.ts +4 -0
- package/dist/tools/validate-configuration.tool.js +70 -0
- package/dist/tools/validate-configuration.tool.js.map +1 -0
- package/dist/tools/validate-structure.tool.d.ts +4 -0
- package/dist/tools/validate-structure.tool.js +66 -0
- package/dist/tools/validate-structure.tool.js.map +1 -0
- package/dist/tools/validate-workflow.tool.d.ts +5 -0
- package/dist/tools/validate-workflow.tool.js +73 -0
- package/dist/tools/validate-workflow.tool.js.map +1 -0
- package/dist/tools/web/templates.d.ts +23 -0
- package/dist/tools/web/templates.js +106 -0
- package/dist/tools/web/templates.js.map +1 -0
- package/dist/types/best-practices.d.ts +6 -0
- package/dist/types/best-practices.js +3 -0
- package/dist/types/best-practices.js.map +1 -0
- package/dist/types/categorization.d.ts +23 -0
- package/dist/types/categorization.js +38 -0
- package/dist/types/categorization.js.map +1 -0
- package/dist/types/config.d.ts +55 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/connections.d.ts +30 -0
- package/dist/types/connections.js +3 -0
- package/dist/types/connections.js.map +1 -0
- package/dist/types/coordination.d.ts +42 -0
- package/dist/types/coordination.js +23 -0
- package/dist/types/coordination.js.map +1 -0
- package/dist/types/discovery-types.d.ts +12 -0
- package/dist/types/discovery-types.js +3 -0
- package/dist/types/discovery-types.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +18 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/langchain.d.ts +3 -0
- package/dist/types/langchain.js +15 -0
- package/dist/types/langchain.js.map +1 -0
- package/dist/types/messages.d.ts +32 -0
- package/dist/types/messages.js +3 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/nodes.d.ts +27 -0
- package/dist/types/nodes.js +3 -0
- package/dist/types/nodes.js.map +1 -0
- package/dist/types/sessions.d.ts +8 -0
- package/dist/types/sessions.js +34 -0
- package/dist/types/sessions.js.map +1 -0
- package/dist/types/streaming.d.ts +33 -0
- package/dist/types/streaming.js +3 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/tools.d.ts +120 -0
- package/dist/types/tools.js +3 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/utils.d.ts +2 -0
- package/dist/types/utils.js +3 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/types/web/templates.d.ts +45 -0
- package/dist/types/web/templates.js +37 -0
- package/dist/types/web/templates.js.map +1 -0
- package/dist/types/workflow.d.ts +31 -0
- package/dist/types/workflow.js +3 -0
- package/dist/types/workflow.js.map +1 -0
- package/dist/utils/cache-control/helpers.d.ts +5 -0
- package/dist/utils/cache-control/helpers.js +126 -0
- package/dist/utils/cache-control/helpers.js.map +1 -0
- package/dist/utils/cache-control/index.d.ts +1 -0
- package/dist/utils/cache-control/index.js +9 -0
- package/dist/utils/cache-control/index.js.map +1 -0
- package/dist/utils/cleanup-dangling-tool-call-messages.d.ts +3 -0
- package/dist/utils/cleanup-dangling-tool-call-messages.js +10 -0
- package/dist/utils/cleanup-dangling-tool-call-messages.js.map +1 -0
- package/dist/utils/context-builders.d.ts +10 -0
- package/dist/utils/context-builders.js +71 -0
- package/dist/utils/context-builders.js.map +1 -0
- package/dist/utils/coordination-log.d.ts +15 -0
- package/dist/utils/coordination-log.js +75 -0
- package/dist/utils/coordination-log.js.map +1 -0
- package/dist/utils/http-proxy-agent.d.ts +2 -0
- package/dist/utils/http-proxy-agent.js +16 -0
- package/dist/utils/http-proxy-agent.js.map +1 -0
- package/dist/utils/node-helpers.d.ts +2 -0
- package/dist/utils/node-helpers.js +54 -0
- package/dist/utils/node-helpers.js.map +1 -0
- package/dist/utils/operations-processor.d.ts +14 -0
- package/dist/utils/operations-processor.js +196 -0
- package/dist/utils/operations-processor.js.map +1 -0
- package/dist/utils/state-modifier.d.ts +32 -0
- package/dist/utils/state-modifier.js +112 -0
- package/dist/utils/state-modifier.js.map +1 -0
- package/dist/utils/state-reducers.d.ts +3 -0
- package/dist/utils/state-reducers.js +20 -0
- package/dist/utils/state-reducers.js.map +1 -0
- package/dist/utils/stream-processor.d.ts +20 -0
- package/dist/utils/stream-processor.js +277 -0
- package/dist/utils/stream-processor.js.map +1 -0
- package/dist/utils/subgraph-helpers.d.ts +16 -0
- package/dist/utils/subgraph-helpers.js +117 -0
- package/dist/utils/subgraph-helpers.js.map +1 -0
- package/dist/utils/token-usage.d.ts +21 -0
- package/dist/utils/token-usage.js +45 -0
- package/dist/utils/token-usage.js.map +1 -0
- package/dist/utils/tool-executor.d.ts +3 -0
- package/dist/utils/tool-executor.js +108 -0
- package/dist/utils/tool-executor.js.map +1 -0
- package/dist/utils/trim-workflow-context.d.ts +2 -0
- package/dist/utils/trim-workflow-context.js +53 -0
- package/dist/utils/trim-workflow-context.js.map +1 -0
- package/dist/utils/workflow-validation.d.ts +2 -0
- package/dist/utils/workflow-validation.js +37 -0
- package/dist/utils/workflow-validation.js.map +1 -0
- package/dist/validation/checks/agent-prompt.d.ts +3 -0
- package/dist/validation/checks/agent-prompt.js +47 -0
- package/dist/validation/checks/agent-prompt.js.map +1 -0
- package/dist/validation/checks/connections.d.ts +4 -0
- package/dist/validation/checks/connections.js +163 -0
- package/dist/validation/checks/connections.js.map +1 -0
- package/dist/validation/checks/credentials.d.ts +3 -0
- package/dist/validation/checks/credentials.js +125 -0
- package/dist/validation/checks/credentials.js.map +1 -0
- package/dist/validation/checks/from-ai.d.ts +4 -0
- package/dist/validation/checks/from-ai.js +62 -0
- package/dist/validation/checks/from-ai.js.map +1 -0
- package/dist/validation/checks/index.d.ts +7 -0
- package/dist/validation/checks/index.js +18 -0
- package/dist/validation/checks/index.js.map +1 -0
- package/dist/validation/checks/nodes.d.ts +4 -0
- package/dist/validation/checks/nodes.js +44 -0
- package/dist/validation/checks/nodes.js.map +1 -0
- package/dist/validation/checks/tools.d.ts +4 -0
- package/dist/validation/checks/tools.js +38 -0
- package/dist/validation/checks/tools.js.map +1 -0
- package/dist/validation/checks/trigger.d.ts +8 -0
- package/dist/validation/checks/trigger.js +33 -0
- package/dist/validation/checks/trigger.js.map +1 -0
- package/dist/validation/programmatic.d.ts +3 -0
- package/dist/validation/programmatic.js +24 -0
- package/dist/validation/programmatic.js.map +1 -0
- package/dist/validation/types.d.ts +52 -0
- package/dist/validation/types.js +31 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/utils/expressions.d.ts +3 -0
- package/dist/validation/utils/expressions.js +37 -0
- package/dist/validation/utils/expressions.js.map +1 -0
- package/dist/validation/utils/is-tool.d.ts +2 -0
- package/dist/validation/utils/is-tool.js +7 -0
- package/dist/validation/utils/is-tool.js.map +1 -0
- package/dist/validation/utils/node-type-map.d.ts +8 -0
- package/dist/validation/utils/node-type-map.js +50 -0
- package/dist/validation/utils/node-type-map.js.map +1 -0
- package/dist/validation/utils/resolve-connections.d.ts +8 -0
- package/dist/validation/utils/resolve-connections.js +64 -0
- package/dist/validation/utils/resolve-connections.js.map +1 -0
- package/dist/workflow-builder-agent.d.ts +72 -0
- package/dist/workflow-builder-agent.js +401 -0
- package/dist/workflow-builder-agent.js.map +1 -0
- package/dist/workflow-state.d.ts +26 -0
- package/dist/workflow-state.js +79 -0
- package/dist/workflow-state.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { BuilderTool, BuilderToolBase } from '../utils/stream-processor';
|
|
4
|
+
export declare const nodeCreationSchema: z.ZodObject<{
|
|
5
|
+
nodeType: z.ZodString;
|
|
6
|
+
nodeVersion: z.ZodNumber;
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
connectionParametersReasoning: z.ZodString;
|
|
9
|
+
connectionParameters: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
nodeType: string;
|
|
12
|
+
name: string;
|
|
13
|
+
nodeVersion: number;
|
|
14
|
+
connectionParametersReasoning: string;
|
|
15
|
+
connectionParameters: {} & {
|
|
16
|
+
[k: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
}, {
|
|
19
|
+
nodeType: string;
|
|
20
|
+
name: string;
|
|
21
|
+
nodeVersion: number;
|
|
22
|
+
connectionParametersReasoning: string;
|
|
23
|
+
connectionParameters: {} & {
|
|
24
|
+
[k: string]: unknown;
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
export declare const nodeCreationE2ESchema: z.ZodObject<{
|
|
28
|
+
id: z.ZodOptional<z.ZodString>;
|
|
29
|
+
nodeType: z.ZodString;
|
|
30
|
+
nodeVersion: z.ZodNumber;
|
|
31
|
+
name: z.ZodString;
|
|
32
|
+
connectionParametersReasoning: z.ZodString;
|
|
33
|
+
connectionParameters: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
nodeType: string;
|
|
36
|
+
name: string;
|
|
37
|
+
nodeVersion: number;
|
|
38
|
+
connectionParametersReasoning: string;
|
|
39
|
+
connectionParameters: {} & {
|
|
40
|
+
[k: string]: unknown;
|
|
41
|
+
};
|
|
42
|
+
id?: string | undefined;
|
|
43
|
+
}, {
|
|
44
|
+
nodeType: string;
|
|
45
|
+
name: string;
|
|
46
|
+
nodeVersion: number;
|
|
47
|
+
connectionParametersReasoning: string;
|
|
48
|
+
connectionParameters: {} & {
|
|
49
|
+
[k: string]: unknown;
|
|
50
|
+
};
|
|
51
|
+
id?: string | undefined;
|
|
52
|
+
}>;
|
|
53
|
+
export declare function getAddNodeToolBase(nodeTypes: INodeTypeDescription[]): BuilderToolBase;
|
|
54
|
+
export declare function createAddNodeTool(nodeTypes: INodeTypeDescription[]): BuilderTool;
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nodeCreationE2ESchema = exports.nodeCreationSchema = void 0;
|
|
4
|
+
exports.getAddNodeToolBase = getAddNodeToolBase;
|
|
5
|
+
exports.createAddNodeTool = createAddNodeTool;
|
|
6
|
+
const tools_1 = require("@langchain/core/tools");
|
|
7
|
+
const zod_1 = require("zod");
|
|
8
|
+
const errors_1 = require("../errors");
|
|
9
|
+
const node_creation_utils_1 = require("./utils/node-creation.utils");
|
|
10
|
+
const node_positioning_utils_1 = require("./utils/node-positioning.utils");
|
|
11
|
+
const node_helpers_1 = require("../utils/node-helpers");
|
|
12
|
+
const progress_1 = require("./helpers/progress");
|
|
13
|
+
const response_1 = require("./helpers/response");
|
|
14
|
+
const state_1 = require("./helpers/state");
|
|
15
|
+
const validation_1 = require("./helpers/validation");
|
|
16
|
+
const baseSchema = {
|
|
17
|
+
nodeType: zod_1.z.string().describe('The type of node to add (e.g., n8n-nodes-base.httpRequest)'),
|
|
18
|
+
nodeVersion: zod_1.z.number().describe('The exact node version'),
|
|
19
|
+
name: zod_1.z
|
|
20
|
+
.string()
|
|
21
|
+
.describe('A descriptive name for the node that clearly indicates its purpose in the workflow'),
|
|
22
|
+
connectionParametersReasoning: zod_1.z
|
|
23
|
+
.string()
|
|
24
|
+
.describe('REQUIRED: Explain your reasoning about connection parameters. Consider: Does this node have dynamic inputs/outputs? Does it need mode/operation parameters? For example: "Vector Store has dynamic inputs based on mode, so I need to set mode:insert for document input" or "HTTP Request has static inputs, so no special parameters needed"'),
|
|
25
|
+
connectionParameters: zod_1.z
|
|
26
|
+
.object({})
|
|
27
|
+
.passthrough()
|
|
28
|
+
.describe('Parameters that affect node connections (e.g., mode: "insert" for Vector Store). Pass an empty object {} if no connection parameters are needed. Only connection-affecting parameters like mode, operation, resource, action, etc. are allowed.'),
|
|
29
|
+
};
|
|
30
|
+
exports.nodeCreationSchema = zod_1.z.object(baseSchema);
|
|
31
|
+
exports.nodeCreationE2ESchema = zod_1.z.object({
|
|
32
|
+
...baseSchema,
|
|
33
|
+
id: zod_1.z
|
|
34
|
+
.string()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe('Optional: A specific ID to use for this node. If not provided, a unique ID will be generated automatically. This is primarily used for testing purposes to ensure deterministic node IDs.'),
|
|
37
|
+
});
|
|
38
|
+
function createNode(nodeType, typeVersion, customName, existingNodes, nodeTypes, connectionParameters, id) {
|
|
39
|
+
const baseName = customName ?? nodeType.defaults?.name ?? nodeType.displayName;
|
|
40
|
+
const uniqueName = (0, node_creation_utils_1.generateUniqueName)(baseName, existingNodes);
|
|
41
|
+
const position = (0, node_positioning_utils_1.calculateNodePosition)(existingNodes, (0, node_helpers_1.isSubNode)(nodeType), nodeTypes);
|
|
42
|
+
return (0, node_creation_utils_1.createNodeInstance)(nodeType, typeVersion, uniqueName, position, connectionParameters, id);
|
|
43
|
+
}
|
|
44
|
+
function buildResponseMessage(addedNode, nodeTypes) {
|
|
45
|
+
const nodeType = nodeTypes.find((nt) => nt.name === addedNode.type);
|
|
46
|
+
const nodeTypeInfo = nodeType && (0, node_helpers_1.isSubNode)(nodeType) ? ' (sub-node)' : '';
|
|
47
|
+
return `Successfully added "${addedNode.name}" (${addedNode.displayName ?? addedNode.type})${nodeTypeInfo} with ID ${addedNode.id}`;
|
|
48
|
+
}
|
|
49
|
+
function getCustomNodeTitle(input, nodeTypes) {
|
|
50
|
+
if ('nodeType' in input && typeof input['nodeType'] === 'string') {
|
|
51
|
+
const nodeType = nodeTypes.find((type) => type.name === input.nodeType);
|
|
52
|
+
if (nodeType) {
|
|
53
|
+
return `Adding ${nodeType.displayName} node`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return 'Adding node';
|
|
57
|
+
}
|
|
58
|
+
function getAddNodeToolBase(nodeTypes) {
|
|
59
|
+
return {
|
|
60
|
+
toolName: 'add_nodes',
|
|
61
|
+
displayTitle: 'Adding nodes',
|
|
62
|
+
getCustomDisplayTitle: (input) => getCustomNodeTitle(input, nodeTypes),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function createAddNodeTool(nodeTypes) {
|
|
66
|
+
const builderToolBase = getAddNodeToolBase(nodeTypes);
|
|
67
|
+
const dynamicTool = (0, tools_1.tool)(async (input, config) => {
|
|
68
|
+
const reporter = (0, progress_1.createProgressReporter)(config, builderToolBase.toolName, builderToolBase.displayTitle, getCustomNodeTitle(input, nodeTypes));
|
|
69
|
+
try {
|
|
70
|
+
let id;
|
|
71
|
+
let validatedInput;
|
|
72
|
+
if (process.env.E2E_TESTS) {
|
|
73
|
+
const e2eInput = exports.nodeCreationE2ESchema.parse(input);
|
|
74
|
+
id = e2eInput.id;
|
|
75
|
+
validatedInput = e2eInput;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
validatedInput = exports.nodeCreationSchema.parse(input);
|
|
79
|
+
}
|
|
80
|
+
const { nodeType, nodeVersion, name, connectionParametersReasoning, connectionParameters } = validatedInput;
|
|
81
|
+
reporter.start(validatedInput);
|
|
82
|
+
const state = (0, state_1.getWorkflowState)();
|
|
83
|
+
const workflow = (0, state_1.getCurrentWorkflow)(state);
|
|
84
|
+
reporter.progress(`Adding ${name} (${connectionParametersReasoning})`);
|
|
85
|
+
const nodeTypeDesc = (0, validation_1.findNodeType)(nodeType, nodeVersion, nodeTypes);
|
|
86
|
+
if (!nodeTypeDesc) {
|
|
87
|
+
const nodeError = new errors_1.NodeTypeNotFoundError(nodeType);
|
|
88
|
+
const error = {
|
|
89
|
+
message: nodeError.message,
|
|
90
|
+
code: 'NODE_TYPE_NOT_FOUND',
|
|
91
|
+
details: { nodeType },
|
|
92
|
+
};
|
|
93
|
+
reporter.error(error);
|
|
94
|
+
return (0, response_1.createErrorResponse)(config, error);
|
|
95
|
+
}
|
|
96
|
+
const newNode = createNode(nodeTypeDesc, nodeVersion, name, workflow.nodes, nodeTypes, connectionParameters, id);
|
|
97
|
+
const addedNodeInfo = {
|
|
98
|
+
id: newNode.id,
|
|
99
|
+
name: newNode.name,
|
|
100
|
+
type: newNode.type,
|
|
101
|
+
displayName: nodeTypeDesc.displayName,
|
|
102
|
+
position: newNode.position,
|
|
103
|
+
parameters: newNode.parameters,
|
|
104
|
+
};
|
|
105
|
+
const message = buildResponseMessage(addedNodeInfo, nodeTypes);
|
|
106
|
+
const output = {
|
|
107
|
+
addedNode: addedNodeInfo,
|
|
108
|
+
message,
|
|
109
|
+
};
|
|
110
|
+
reporter.complete(output);
|
|
111
|
+
const stateUpdates = (0, state_1.addNodeToWorkflow)(newNode);
|
|
112
|
+
return (0, response_1.createSuccessResponse)(config, message, stateUpdates);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
let toolError;
|
|
116
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
117
|
+
const validationError = new errors_1.ValidationError('Invalid input parameters', {
|
|
118
|
+
field: error.errors[0]?.path.join('.'),
|
|
119
|
+
value: error.errors[0]?.message,
|
|
120
|
+
});
|
|
121
|
+
toolError = {
|
|
122
|
+
message: validationError.message,
|
|
123
|
+
code: 'VALIDATION_ERROR',
|
|
124
|
+
details: error.errors,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
toolError = {
|
|
129
|
+
message: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
130
|
+
code: 'EXECUTION_ERROR',
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
reporter.error(toolError);
|
|
134
|
+
return (0, response_1.createErrorResponse)(config, toolError);
|
|
135
|
+
}
|
|
136
|
+
}, {
|
|
137
|
+
name: builderToolBase.toolName,
|
|
138
|
+
description: `Add a node to the workflow canvas. Each node represents a specific action or operation (e.g., HTTP request, data transformation, database query). Always provide descriptive names that explain what the node does (e.g., "Get Customer Data", "Filter Active Users", "Send Email Notification"). The tool handles automatic positioning. Use this tool after searching for available node types to ensure they exist.
|
|
139
|
+
|
|
140
|
+
To add multiple nodes, call this tool multiple times in parallel.
|
|
141
|
+
|
|
142
|
+
CRITICAL: You MUST provide:
|
|
143
|
+
1. connectionParametersReasoning - Explain why you're choosing specific connection parameters or using {}
|
|
144
|
+
2. connectionParameters - The actual parameters (use {} for nodes without special needs)
|
|
145
|
+
|
|
146
|
+
IMPORTANT: DO NOT rely on default values! Always explicitly set connection-affecting parameters when they exist.
|
|
147
|
+
|
|
148
|
+
REASONING EXAMPLES:
|
|
149
|
+
- "Vector Store has dynamic inputs that change based on mode parameter, setting mode:insert to accept document inputs"
|
|
150
|
+
- "HTTP Request has static inputs/outputs, no connection parameters needed"
|
|
151
|
+
- "Document Loader needs textSplittingMode:custom to accept text splitter connections"
|
|
152
|
+
- "AI Agent has dynamic inputs, setting hasOutputParser:true to enable output parser connections"
|
|
153
|
+
- "Set node has standard main connections only, using empty parameters"
|
|
154
|
+
|
|
155
|
+
CONNECTION PARAMETERS (NEVER rely on defaults - always set explicitly):
|
|
156
|
+
- AI Agent (@n8n/n8n-nodes-langchain.agent):
|
|
157
|
+
- For output parser support: { hasOutputParser: true }
|
|
158
|
+
- Without output parser: { hasOutputParser: false }
|
|
159
|
+
- Vector Store (@n8n/n8n-nodes-langchain.vectorStoreInMemory):
|
|
160
|
+
- For document input: { mode: "insert" }
|
|
161
|
+
- For querying: { mode: "retrieve" }
|
|
162
|
+
- For AI Agent and tool use: { mode: "retrieve-as-tool" }
|
|
163
|
+
- Document Loader (@n8n/n8n-nodes-langchain.documentDefaultDataLoader):
|
|
164
|
+
- For text splitter input: { textSplittingMode: "custom" }
|
|
165
|
+
- For built-in splitting: { textSplittingMode: "simple" }
|
|
166
|
+
- Regular nodes (HTTP Request, Set, Code, etc.): {}
|
|
167
|
+
|
|
168
|
+
Think through the connectionParametersReasoning FIRST, then set connectionParameters based on your reasoning. If a parameter affects connections, SET IT EXPLICITLY.`,
|
|
169
|
+
schema: exports.nodeCreationSchema,
|
|
170
|
+
});
|
|
171
|
+
return {
|
|
172
|
+
tool: dynamicTool,
|
|
173
|
+
...builderToolBase,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=add-node.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-node.tool.js","sourceRoot":"","sources":["../../src/tools/add-node.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BestPracticesDocument } from '../../types/best-practices';
|
|
2
|
+
export declare class ChatbotBestPractices implements BestPracticesDocument {
|
|
3
|
+
readonly technique: "chatbot";
|
|
4
|
+
readonly version = "1.0.0";
|
|
5
|
+
private readonly documentation;
|
|
6
|
+
getDocumentation(): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatbotBestPractices = void 0;
|
|
4
|
+
const categorization_1 = require("../../types/categorization");
|
|
5
|
+
class ChatbotBestPractices {
|
|
6
|
+
technique = categorization_1.WorkflowTechnique.CHATBOT;
|
|
7
|
+
version = '1.0.0';
|
|
8
|
+
documentation = `# Best Practices: Chatbot Workflows
|
|
9
|
+
|
|
10
|
+
## Workflow Design
|
|
11
|
+
|
|
12
|
+
Break chatbot logic into manageable steps and use error handling nodes (IF, Switch) with fallback mechanisms to manage unexpected inputs.
|
|
13
|
+
|
|
14
|
+
Most chatbots run through external platforms like Slack, Telegram, or WhatsApp rather than through the n8n chat interface - if the user requests a service like this don't use the built in chat interface nodes. But, the n8n chat node is easier to get started with tests. If the user mentions chatting but does not mention a service then use the built in n8n chat node.
|
|
15
|
+
|
|
16
|
+
CRITICAL: The user may ask to be able to chat to a workflow as well as trigger it via some other method, for example scheduling information gathering but also being able to chat with the agent - in scenarios like this the two separate workflows MUST be connected through shared memory, vector stores, data storage, or direct connections.
|
|
17
|
+
|
|
18
|
+
Example pattern:
|
|
19
|
+
- Schedule Trigger → News Gathering Agent → [memory node via ai_memory]
|
|
20
|
+
- Chat Trigger → Chatbot Agent → [SAME memory node via ai_memory]
|
|
21
|
+
- Result: Both agents share conversation/context history, enabling the chatbot to discuss gathered news
|
|
22
|
+
|
|
23
|
+
For the chatbot always use the same chat node type as used for response. If Telegram has been requested trigger the chatbot via telegram AND
|
|
24
|
+
respond via telegram - do not mix chatbot interfaces.
|
|
25
|
+
|
|
26
|
+
## Context & Memory Management
|
|
27
|
+
|
|
28
|
+
Always utilise memory in chatbot agent nodes - providing context gives you full conversation history and more control over context.
|
|
29
|
+
Memory nodes enable the bot to handle follow-up questions by maintaining short-term conversation history.
|
|
30
|
+
|
|
31
|
+
Include information with the user prompt such as timestamp, user ID, or session metadata. This enriches context without relying solely on memory and user prompt.
|
|
32
|
+
|
|
33
|
+
If there are other agents involved in the workflow you should share memory between the chatbot and those other agents where it makes sense.
|
|
34
|
+
Connect the same memory node to multiple agents to enable data sharing and context continuity.
|
|
35
|
+
|
|
36
|
+
## Context Engineering & AI Agent Output
|
|
37
|
+
|
|
38
|
+
It can be beneficial to respond to the user as a tool of the chatbot agent rather than using the agent output - this allows the agent to loop/carry out multiple responses if necessary.
|
|
39
|
+
This will require adding a note to the system prompt for the agent to tell it to use the tool to respond to the user.
|
|
40
|
+
|
|
41
|
+
## Message Attribution
|
|
42
|
+
|
|
43
|
+
n8n chatbots often attach the attribution "n8n workflow" to messages by default - you must disable this setting which will
|
|
44
|
+
often be called "Append n8n Attribution" for nodes that support it, add this setting and set it to false.
|
|
45
|
+
|
|
46
|
+
## Recommended Nodes
|
|
47
|
+
|
|
48
|
+
### Chat Trigger (@n8n/n8n-nodes-langchain.chatTrigger)
|
|
49
|
+
|
|
50
|
+
Purpose: Entry point for user messages in n8n-hosted chat interfaces
|
|
51
|
+
|
|
52
|
+
Pitfalls:
|
|
53
|
+
|
|
54
|
+
- Most production chatbots use external platforms (Slack, Telegram) rather than n8n's chat interface
|
|
55
|
+
|
|
56
|
+
### AI Agent (@n8n/n8n-nodes-langchain.agent)
|
|
57
|
+
|
|
58
|
+
Purpose: Orchestrates logic, tool use, and LLM calls for intelligent responses.
|
|
59
|
+
|
|
60
|
+
Unless user asks for a node by name, always use the AI Agent node over provider-specific nodes (like OpenAI, Google Gemini) or use-case-specific AI nodes (like Message a model) for chatbot workflows. The AI Agent node provides better orchestration, tool integration, and memory management capabilities essential for conversational interfaces.
|
|
61
|
+
For example, for "create a chatbot using OpenAI", implement: AI Agent -- OpenAI Chat Model.
|
|
62
|
+
|
|
63
|
+
### Chat Model Nodes
|
|
64
|
+
|
|
65
|
+
- OpenAI Chat Model (@n8n/n8n-nodes-langchain.lmChatOpenAi)
|
|
66
|
+
- Google Gemini Chat Model (@n8n/n8n-nodes-langchain.lmChatGoogleGemini)
|
|
67
|
+
- xAI Grok Chat Model (@n8n/n8n-nodes-langchain.lmChatXAiGrok)
|
|
68
|
+
- DeepSeek Chat Model (@n8n/n8n-nodes-langchain.lmChatDeepSeek)
|
|
69
|
+
|
|
70
|
+
Purpose: Connect to LLMs for natural, context-aware responses
|
|
71
|
+
|
|
72
|
+
### Simple Memory (@n8n/n8n-nodes-langchain.memoryBufferWindow)
|
|
73
|
+
|
|
74
|
+
Purpose: Maintains short-term conversation history for context continuity
|
|
75
|
+
|
|
76
|
+
### HTTP Request (n8n-nodes-base.httpRequest)
|
|
77
|
+
|
|
78
|
+
Purpose: Fetches external data to enrich chatbot responses with real-time or organizational information
|
|
79
|
+
|
|
80
|
+
### Database Nodes & Google Sheets
|
|
81
|
+
|
|
82
|
+
- Data Table (n8n-nodes-base.dataTable)
|
|
83
|
+
- Postgres (n8n-nodes-base.postgres)
|
|
84
|
+
- MySQL (n8n-nodes-base.mySql)
|
|
85
|
+
- MongoDB (n8n-nodes-base.mongoDb)
|
|
86
|
+
- Google Sheets (n8n-nodes-base.googleSheets)
|
|
87
|
+
|
|
88
|
+
Purpose: Store conversation logs, retrieve structured data, or maintain user preferences
|
|
89
|
+
|
|
90
|
+
### IF / Switch
|
|
91
|
+
|
|
92
|
+
- If (n8n-nodes-base.if)
|
|
93
|
+
- Switch (n8n-nodes-base.switch)
|
|
94
|
+
|
|
95
|
+
Purpose: Conditional logic and error handling for routing messages or managing conversation state
|
|
96
|
+
|
|
97
|
+
### Integration Nodes
|
|
98
|
+
|
|
99
|
+
- Slack (n8n-nodes-base.slack)
|
|
100
|
+
- Telegram (n8n-nodes-base.telegram)
|
|
101
|
+
- WhatsApp Business Cloud (n8n-nodes-base.whatsApp)
|
|
102
|
+
- Discord (n8n-nodes-base.discord)
|
|
103
|
+
|
|
104
|
+
Purpose: Multi-channel support for deploying chatbots on popular messaging platforms
|
|
105
|
+
|
|
106
|
+
## Common Pitfalls to Avoid
|
|
107
|
+
|
|
108
|
+
### Leaving Chatbot Disconnected
|
|
109
|
+
|
|
110
|
+
When a workflow has multiple triggers (e.g., scheduled data collection + chatbot interaction), the chatbot MUST have access to the data
|
|
111
|
+
generated by the workflow. Connect the chatbot through shared memory, vector stores, data storage, or direct data flow connections.
|
|
112
|
+
`;
|
|
113
|
+
getDocumentation() {
|
|
114
|
+
return this.documentation;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.ChatbotBestPractices = ChatbotBestPractices;
|
|
118
|
+
//# sourceMappingURL=chatbot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chatbot.js","sourceRoot":"","sources":["../../../src/tools/best-practices/chatbot.ts"],"names":[],"mappings":";;;AACA,2DAA2D;AAE3D,MAAa,oBAAoB;IACvB,SAAS,GAAG,kCAAiB,CAAC,OAAO,CAAC;IACtC,OAAO,GAAG,OAAO,CAAC;IAEV,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGjC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;CACD;AAjHD,oDAiHC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BestPracticesDocument } from '../../types/best-practices';
|
|
2
|
+
export declare class ContentGenerationBestPractices implements BestPracticesDocument {
|
|
3
|
+
readonly technique: "content_generation";
|
|
4
|
+
readonly version = "1.0.0";
|
|
5
|
+
private readonly documentation;
|
|
6
|
+
getDocumentation(): string;
|
|
7
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContentGenerationBestPractices = void 0;
|
|
4
|
+
const categorization_1 = require("../../types/categorization");
|
|
5
|
+
class ContentGenerationBestPractices {
|
|
6
|
+
technique = categorization_1.WorkflowTechnique.CONTENT_GENERATION;
|
|
7
|
+
version = '1.0.0';
|
|
8
|
+
documentation = `# Best Practices: Content Generation Workflows
|
|
9
|
+
|
|
10
|
+
## Workflow Design
|
|
11
|
+
|
|
12
|
+
Break complex tasks into sequential steps (e.g., generate text, create image, compose video) for modularity and easier troubleshooting.
|
|
13
|
+
|
|
14
|
+
## Node Selection Guidelines
|
|
15
|
+
|
|
16
|
+
Always prefer built-in n8n nodes over HTTP Request nodes when a dedicated node exists for the service or API you need to integrate with. Built-in nodes provide:
|
|
17
|
+
- Pre-configured authentication handling
|
|
18
|
+
- Optimized data structures and field mappings
|
|
19
|
+
- Better error handling and user experience
|
|
20
|
+
- Simplified setup without manual API configuration
|
|
21
|
+
|
|
22
|
+
Only use HTTP Request nodes when no built-in node exists for the service, or when you need to access an API endpoint not covered by the built-in node's operations.
|
|
23
|
+
|
|
24
|
+
## Multi-Modal Content Generation - MANDATORY
|
|
25
|
+
|
|
26
|
+
When the user's request involves specific generative AI models or media-focused platforms, the workflow MUST include the appropriate media generation node from a
|
|
27
|
+
provider-specific node. The finished workflow MUST contain the relevant video, audio, or image generation capability.
|
|
28
|
+
|
|
29
|
+
Prompts that require multi-modal generation nodes:
|
|
30
|
+
|
|
31
|
+
Video Generation:
|
|
32
|
+
- Model mentions: Sora, Nano Banana, Veo, Runway, Pika
|
|
33
|
+
- Platform mentions: YouTube content, TikTok videos, Instagram Reels, video ads, short-form video
|
|
34
|
+
- Task mentions: generate video, create video, video from text, animate
|
|
35
|
+
|
|
36
|
+
Image Generation:
|
|
37
|
+
- Model mentions: DALL-E, Midjourney, Stable Diffusion, Imagen
|
|
38
|
+
- Platform mentions: thumbnails, social media graphics, product images, marketing visuals
|
|
39
|
+
- Task mentions: generate image, create artwork, design graphic, visualize
|
|
40
|
+
|
|
41
|
+
Audio Generation:
|
|
42
|
+
- Model mentions: ElevenLabs, text-to-speech, TTS
|
|
43
|
+
- Platform mentions: podcast audio, voiceovers, narration, audio content
|
|
44
|
+
- Task mentions: generate voice, create audio, synthesize speech, clone voice
|
|
45
|
+
|
|
46
|
+
If anything like the examples above are mentioned in the prompt, include the appropriate
|
|
47
|
+
provider node (OpenAI for DALL-E/Sora, Google Gemini for Nano Banana/Imagen, etc.)
|
|
48
|
+
with the media generation operation configured.
|
|
49
|
+
|
|
50
|
+
## Content-Specific Guidance
|
|
51
|
+
|
|
52
|
+
For text generation, validate and sanitize input/output to avoid malformed data. When generating images, prefer binary data over URLs for uploads to avoid media type errors.
|
|
53
|
+
|
|
54
|
+
## Recommended Nodes
|
|
55
|
+
|
|
56
|
+
### OpenAI (@n8n/n8n-nodes-langchain.openAi)
|
|
57
|
+
|
|
58
|
+
Purpose: GPT-based text generation, DALL-E image generation, text-to-speech (TTS), and audio transcription, SORA for video generation
|
|
59
|
+
|
|
60
|
+
### xAI Grok Chat Model (@n8n/n8n-nodes-langchain.lmChatXAiGrok)
|
|
61
|
+
|
|
62
|
+
Purpose: Conversational AI and text generation
|
|
63
|
+
|
|
64
|
+
### Google Gemini Chat Model (@n8n/n8n-nodes-langchain.lmChatGoogleGemini)
|
|
65
|
+
|
|
66
|
+
Purpose: Image analysis and generation, video generation from text prompts using nano banana, multimodal content creation
|
|
67
|
+
|
|
68
|
+
### ElevenLabs
|
|
69
|
+
|
|
70
|
+
Purpose: Natural-sounding AI voice generation
|
|
71
|
+
|
|
72
|
+
Note: Use HTTP Request node or a community node to integrate with ElevenLabs API
|
|
73
|
+
|
|
74
|
+
### HTTP Request (n8n-nodes-base.httpRequest)
|
|
75
|
+
|
|
76
|
+
Purpose: Integrating with other LLM and content generation APIs (e.g., Jasper, Writesonic, Anthropic, HuggingFace)
|
|
77
|
+
|
|
78
|
+
### Edit Image (n8n-nodes-base.editImage)
|
|
79
|
+
|
|
80
|
+
Purpose: Manipulating images - resize, crop, rotate, and format conversion
|
|
81
|
+
|
|
82
|
+
Pitfalls:
|
|
83
|
+
|
|
84
|
+
- Ensure input is valid binary image data
|
|
85
|
+
- Check output format compatibility with downstream nodes
|
|
86
|
+
|
|
87
|
+
### Markdown (n8n-nodes-base.markdown)
|
|
88
|
+
|
|
89
|
+
Purpose: Formatting and converting text to HTML or Markdown reports
|
|
90
|
+
|
|
91
|
+
### Facebook Graph API (n8n-nodes-base.facebookGraphApi)
|
|
92
|
+
|
|
93
|
+
Purpose: Uploading videos and images to Instagram and Facebook
|
|
94
|
+
|
|
95
|
+
Pitfalls:
|
|
96
|
+
|
|
97
|
+
- Use binary data fields rather than URLs for media uploads to prevent "media type" errors
|
|
98
|
+
- Verify page IDs and access tokens have correct permissions
|
|
99
|
+
|
|
100
|
+
### Wait (n8n-nodes-base.wait)
|
|
101
|
+
|
|
102
|
+
Purpose: Handling delays in video processing/uploading and respecting API rate limits
|
|
103
|
+
|
|
104
|
+
## Common Pitfalls to Avoid
|
|
105
|
+
|
|
106
|
+
Binary Data Handling: For media uploads, use binary fields rather than URLs to prevent "media type" errors, especially with Facebook and Instagram APIs. Download media to binary data first, then upload from binary rather than passing URLs.
|
|
107
|
+
|
|
108
|
+
Async Processing: For long-running content generation tasks (especially video), implement proper wait/polling mechanisms. Don't assume instant completion - many AI services process requests asynchronously.
|
|
109
|
+
`;
|
|
110
|
+
getDocumentation() {
|
|
111
|
+
return this.documentation;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.ContentGenerationBestPractices = ContentGenerationBestPractices;
|
|
115
|
+
//# sourceMappingURL=content-generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-generation.js","sourceRoot":"","sources":["../../../src/tools/best-practices/content-generation.ts"],"names":[],"mappings":";;;AACA,2DAA2D;AAE3D,MAAa,8BAA8B;IACjC,SAAS,GAAG,kCAAiB,CAAC,kBAAkB,CAAC;IACjD,OAAO,GAAG,OAAO,CAAC;IAEV,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGjC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;CACD;AA9GD,wEA8GC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BestPracticesDocument } from '../../types/best-practices';
|
|
2
|
+
export declare class DataAnalysisBestPractices implements BestPracticesDocument {
|
|
3
|
+
readonly technique: "data_analysis";
|
|
4
|
+
readonly version = "1.0.0";
|
|
5
|
+
private readonly documentation;
|
|
6
|
+
getDocumentation(): string;
|
|
7
|
+
}
|