UNPKG

n8n

Version:

n8n Workflow Automation Tool

147 lines (114 loc) 6.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getConfigMutationPrompt = getConfigMutationPrompt; const config_rules_prompt_1 = require("./config-rules.prompt"); function getConfigMutationPrompt() { return `\ ## Config Mutation Guidance ### Purpose Use this after deciding a config change is needed and before calling \`read_config\`, \`write_config\`, or \`patch_config\`. ### Workflow 1. Call \`read_config\` immediately before every \`write_config\` or \`patch_config\`. 2. Use only the \`config\` and \`configHash\` returned by that same \`read_config\`. 3. For \`write_config\`, send the complete config JSON string plus \`baseConfigHash\`. 4. For \`patch_config\`, send RFC 6902 operations as a JSON string plus \`baseConfigHash\`. 5. Use JSON Pointer paths like \`/field\`, \`/nested/field\`, \`/array/0\`, and \`/array/-\`. 6. On \`stage: "stale"\`, retry once from the returned \`config\` and \`configHash\`. 7. On parse, patch, or schema errors, fix the payload, call \`read_config\` again, and retry from the fresh \`configHash\`. ### Rules ${(0, config_rules_prompt_1.getConfigRulesSection)()} ${(0, config_rules_prompt_1.getSchemaReferenceSection)()} - Follow the Config schema reference exactly; do not invent top-level fields. - Keep each feature in the schema path where it belongs. - Preserve unrelated existing config unless the user asked to change it. - Never write placeholder instructions. - Never copy credential IDs from \`list_credentials\`; use \`resolve_llm\`, \`ask_llm\`, or \`ask_credential\`. - Valid provider tool keys are complete provider tool IDs documented in the Tool Guidance section. - \`providerTools\` keys must be complete provider tool IDs from the valid key list. ### Recipes #### Create Or Replace A Fresh Runnable Agent - Requires \`name\`, \`model\`, \`credential\`, and \`instructions\`. - Keep \`tools\` and \`skills\` arrays if present. Good minimal shape: \`\`\`json { "name": "Support assistant", "model": "openrouter/openai/gpt-5.5", "credential": "<main-llm-credential-id>", "instructions": "Help the user with support questions.", "tools": [], "skills": [] } \`\`\` #### Update Only Instructions Use \`patch_config\` with: \`\`\`json [{ "op": "replace", "path": "/instructions", "value": "New instructions" }] \`\`\` #### Add A Target-Agent Skill Ref - If \`skills\` exists, append to \`/skills/-\`. - If \`skills\` is missing, add \`/skills\` with an array. - Ref shape: \`{ "type": "skill", "id": "<returned-id>" }\`. #### Configure Native Provider Features - Thinking lives under \`config.thinking\`. - Web search lives under \`config.webSearch\`. - Only OpenAI and Anthropic models support native web search. For those models, set \`config.webSearch = { "enabled": true, "provider": "native" }\` unless the user asks to disable web search. Omitting \`provider\` also means native. - For every other provider, never use \`provider: "native"\` or omit \`provider\` for enabled web search. - For Brave or SearXNG search, call \`ask_credential\`, then set \`config.webSearch = { "enabled": true, "provider": "brave" | "searxng", "credential": "<credentialId>" }\`. - Brave and SearXNG remain fallback tools even when the model provider also supports native search. - When patching only \`/model\` and \`/credential\`, do not patch \`/config/webSearch\` if the existing provider is \`"brave"\` or \`"searxng"\` unless the user explicitly asked to change the web-search method. - Never write \`{ "enabled": true }\` alone for fallback search. - The write path fills native provider tool defaults only for native search. Do not invent provider tool keys. #### Configure Fallback Services - Services that require credentials must call \`ask_credential\` first and persist only its returned credential id. - If credential selection is skipped, do not enable the feature unless it supports missing credentials. - For fallback web search, use exact credential type names: \`braveSearchApi\` for \`provider: "brave"\`, and \`searXngApi\` for \`provider: "searxng"\`. #### Add Node Or Workflow Tools - Node and workflow tools live in \`tools[]\`. - Use Tool Guidance for node/workflow details. - Do not mix node tool config into \`config.*\` fields. ### Do Not Do This Bad: inventing top-level fields \`\`\`json { "webSearch": { "enabled": true } } \`\`\` Bad: provider namespace as provider tool \`\`\`json { "providerTools": { "anthropic": {} } } \`\`\` Bad: copying credential IDs from \`list_credentials\` \`\`\`json { "credential": "<id-from-list_credentials>" } \`\`\` Bad: replacing \`config\` while dropping unrelated settings \`\`\`json { "config": { "webSearch": { "enabled": true } } } \`\`\` ### Gotchas - \`write_config\` replaces the full config; include every field that should survive. - \`patch_config\` cannot create a config when none exists; use \`write_config\` first. - \`/array/-\` appends to an array; \`/array/0\` inserts before the current first item. - Model-only changes must preserve existing Brave or SearXNG \`config.webSearch\`. - Empty, placeholder, or guessed \`instructions\` are rejected; ask for details instead. ### Verify - The final payload validates against the Config schema reference. - Existing unrelated config, tools, skills, integrations, and memory remain present unless intentionally changed. - Existing Brave or SearXNG web search remains present on model-only changes. - Credential fields use ids returned by the correct interactive credential tools. - Provider tool keys are valid and match the selected model provider. ### Error Recovery - \`stage: "stale"\`: retry once from the returned \`config\` and \`configHash\`. - \`stage: "parse"\`: fix JSON syntax, then call \`read_config\` before retrying. - \`stage: "patch"\`: fix JSON Pointer paths or operation shape, then call \`read_config\` before retrying. - \`stage: "schema"\`: compare the payload against the Config schema reference, then call \`read_config\` before retrying. - \`ask_credential\` skipped: omit or disable the feature that required it.`; } //# sourceMappingURL=config-mutation.prompt.js.map